diff --git a/DeepCopy/DeepCopy.php b/DeepCopy/DeepCopy.php new file mode 100644 index 0000000..15e5c68 --- /dev/null +++ b/DeepCopy/DeepCopy.php @@ -0,0 +1,298 @@ + Filter, 'matcher' => Matcher] pairs. + */ + private $filters = []; + + /** + * Type Filters to apply. + * + * @var array Array of ['filter' => Filter, 'matcher' => Matcher] pairs. + */ + private $typeFilters = []; + + /** + * @var bool + */ + private $skipUncloneable = false; + + /** + * @var bool + */ + private $useCloneMethod; + + /** + * @param bool $useCloneMethod If set to true, when an object implements the __clone() function, it will be used + * instead of the regular deep cloning. + */ + public function __construct($useCloneMethod = false) + { + $this->useCloneMethod = $useCloneMethod; + + $this->addTypeFilter(new ArrayObjectFilter($this), new TypeMatcher(ArrayObject::class)); + $this->addTypeFilter(new DateIntervalFilter(), new TypeMatcher(DateInterval::class)); + $this->addTypeFilter(new SplDoublyLinkedListFilter($this), new TypeMatcher(SplDoublyLinkedList::class)); + } + + /** + * If enabled, will not throw an exception when coming across an uncloneable property. + * + * @param $skipUncloneable + * + * @return $this + */ + public function skipUncloneable($skipUncloneable = true) + { + $this->skipUncloneable = $skipUncloneable; + + return $this; + } + + /** + * Deep copies the given object. + * + * @param mixed $object + * + * @return mixed + */ + public function copy($object) + { + $this->hashMap = []; + + return $this->recursiveCopy($object); + } + + public function addFilter(Filter $filter, Matcher $matcher) + { + $this->filters[] = [ + 'matcher' => $matcher, + 'filter' => $filter, + ]; + } + + public function prependFilter(Filter $filter, Matcher $matcher) + { + array_unshift($this->filters, [ + 'matcher' => $matcher, + 'filter' => $filter, + ]); + } + + public function addTypeFilter(TypeFilter $filter, TypeMatcher $matcher) + { + $this->typeFilters[] = [ + 'matcher' => $matcher, + 'filter' => $filter, + ]; + } + + private function recursiveCopy($var) + { + // Matches Type Filter + if ($filter = $this->getFirstMatchedTypeFilter($this->typeFilters, $var)) { + return $filter->apply($var); + } + + // Resource + if (is_resource($var)) { + return $var; + } + + // Array + if (is_array($var)) { + return $this->copyArray($var); + } + + // Scalar + if (! is_object($var)) { + return $var; + } + + // Object + return $this->copyObject($var); + } + + /** + * Copy an array + * @param array $array + * @return array + */ + private function copyArray(array $array) + { + foreach ($array as $key => $value) { + $array[$key] = $this->recursiveCopy($value); + } + + return $array; + } + + /** + * Copies an object. + * + * @param object $object + * + * @throws CloneException + * + * @return object + */ + private function copyObject($object) + { + $objectHash = spl_object_hash($object); + + if (isset($this->hashMap[$objectHash])) { + return $this->hashMap[$objectHash]; + } + + $reflectedObject = new ReflectionObject($object); + $isCloneable = $reflectedObject->isCloneable(); + + if (false === $isCloneable) { + if ($this->skipUncloneable) { + $this->hashMap[$objectHash] = $object; + + return $object; + } + + throw new CloneException( + sprintf( + 'The class "%s" is not cloneable.', + $reflectedObject->getName() + ) + ); + } + + $newObject = clone $object; + $this->hashMap[$objectHash] = $newObject; + + if ($this->useCloneMethod && $reflectedObject->hasMethod('__clone')) { + return $newObject; + } + + if ($newObject instanceof DateTimeInterface || $newObject instanceof DateTimeZone) { + return $newObject; + } + + foreach (ReflectionHelper::getProperties($reflectedObject) as $property) { + $this->copyObjectProperty($newObject, $property); + } + + return $newObject; + } + + private function copyObjectProperty($object, ReflectionProperty $property) + { + // Ignore static properties + if ($property->isStatic()) { + return; + } + + // Apply the filters + foreach ($this->filters as $item) { + /** @var Matcher $matcher */ + $matcher = $item['matcher']; + /** @var Filter $filter */ + $filter = $item['filter']; + + if ($matcher->matches($object, $property->getName())) { + $filter->apply( + $object, + $property->getName(), + function ($object) { + return $this->recursiveCopy($object); + } + ); + + // If a filter matches, we stop processing this property + return; + } + } + + $property->setAccessible(true); + + // Ignore uninitialized properties (for PHP >7.4) + if (method_exists($property, 'isInitialized') && !$property->isInitialized($object)) { + return; + } + + $propertyValue = $property->getValue($object); + + // Copy the property + $property->setValue($object, $this->recursiveCopy($propertyValue)); + } + + /** + * Returns first filter that matches variable, `null` if no such filter found. + * + * @param array $filterRecords Associative array with 2 members: 'filter' with value of type {@see TypeFilter} and + * 'matcher' with value of type {@see TypeMatcher} + * @param mixed $var + * + * @return TypeFilter|null + */ + private function getFirstMatchedTypeFilter(array $filterRecords, $var) + { + $matched = $this->first( + $filterRecords, + function (array $record) use ($var) { + /* @var TypeMatcher $matcher */ + $matcher = $record['matcher']; + + return $matcher->matches($var); + } + ); + + return isset($matched) ? $matched['filter'] : null; + } + + /** + * Returns first element that matches predicate, `null` if no such element found. + * + * @param array $elements Array of ['filter' => Filter, 'matcher' => Matcher] pairs. + * @param callable $predicate Predicate arguments are: element. + * + * @return array|null Associative array with 2 members: 'filter' with value of type {@see TypeFilter} and 'matcher' + * with value of type {@see TypeMatcher} or `null`. + */ + private function first(array $elements, callable $predicate) + { + foreach ($elements as $element) { + if (call_user_func($predicate, $element)) { + return $element; + } + } + + return null; + } +} diff --git a/DeepCopy/Exception/CloneException.php b/DeepCopy/Exception/CloneException.php new file mode 100644 index 0000000..c046706 --- /dev/null +++ b/DeepCopy/Exception/CloneException.php @@ -0,0 +1,9 @@ +setAccessible(true); + $oldCollection = $reflectionProperty->getValue($object); + + $newCollection = $oldCollection->map( + function ($item) use ($objectCopier) { + return $objectCopier($item); + } + ); + + $reflectionProperty->setValue($object, $newCollection); + } +} diff --git a/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.php b/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.php new file mode 100644 index 0000000..7b33fd5 --- /dev/null +++ b/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.php @@ -0,0 +1,28 @@ +setAccessible(true); + + $reflectionProperty->setValue($object, new ArrayCollection()); + } +} \ No newline at end of file diff --git a/DeepCopy/Filter/Doctrine/DoctrineProxyFilter.php b/DeepCopy/Filter/Doctrine/DoctrineProxyFilter.php new file mode 100644 index 0000000..8bee8f7 --- /dev/null +++ b/DeepCopy/Filter/Doctrine/DoctrineProxyFilter.php @@ -0,0 +1,22 @@ +__load(); + } +} diff --git a/DeepCopy/Filter/Filter.php b/DeepCopy/Filter/Filter.php new file mode 100644 index 0000000..85ba18c --- /dev/null +++ b/DeepCopy/Filter/Filter.php @@ -0,0 +1,18 @@ +callback = $callable; + } + + /** + * Replaces the object property by the result of the callback called with the object property. + * + * {@inheritdoc} + */ + public function apply($object, $property, $objectCopier) + { + $reflectionProperty = ReflectionHelper::getProperty($object, $property); + $reflectionProperty->setAccessible(true); + + $value = call_user_func($this->callback, $reflectionProperty->getValue($object)); + + $reflectionProperty->setValue($object, $value); + } +} diff --git a/DeepCopy/Filter/SetNullFilter.php b/DeepCopy/Filter/SetNullFilter.php new file mode 100644 index 0000000..bea86b8 --- /dev/null +++ b/DeepCopy/Filter/SetNullFilter.php @@ -0,0 +1,24 @@ +setAccessible(true); + $reflectionProperty->setValue($object, null); + } +} diff --git a/DeepCopy/LICENSE b/DeepCopy/LICENSE new file mode 100644 index 0000000..c3e8350 --- /dev/null +++ b/DeepCopy/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2013 My C-Sense + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/DeepCopy/Matcher/Doctrine/DoctrineProxyMatcher.php b/DeepCopy/Matcher/Doctrine/DoctrineProxyMatcher.php new file mode 100644 index 0000000..ec8856f --- /dev/null +++ b/DeepCopy/Matcher/Doctrine/DoctrineProxyMatcher.php @@ -0,0 +1,22 @@ +class = $class; + $this->property = $property; + } + + /** + * Matches a specific property of a specific class. + * + * {@inheritdoc} + */ + public function matches($object, $property) + { + return ($object instanceof $this->class) && $property == $this->property; + } +} diff --git a/DeepCopy/Matcher/PropertyNameMatcher.php b/DeepCopy/Matcher/PropertyNameMatcher.php new file mode 100644 index 0000000..c8ec0d2 --- /dev/null +++ b/DeepCopy/Matcher/PropertyNameMatcher.php @@ -0,0 +1,32 @@ +property = $property; + } + + /** + * Matches a property by its name. + * + * {@inheritdoc} + */ + public function matches($object, $property) + { + return $property == $this->property; + } +} diff --git a/DeepCopy/Matcher/PropertyTypeMatcher.php b/DeepCopy/Matcher/PropertyTypeMatcher.php new file mode 100644 index 0000000..a6b0c0b --- /dev/null +++ b/DeepCopy/Matcher/PropertyTypeMatcher.php @@ -0,0 +1,46 @@ +propertyType = $propertyType; + } + + /** + * {@inheritdoc} + */ + public function matches($object, $property) + { + try { + $reflectionProperty = ReflectionHelper::getProperty($object, $property); + } catch (ReflectionException $exception) { + return false; + } + + $reflectionProperty->setAccessible(true); + + return $reflectionProperty->getValue($object) instanceof $this->propertyType; + } +} diff --git a/DeepCopy/Reflection/ReflectionHelper.php b/DeepCopy/Reflection/ReflectionHelper.php new file mode 100644 index 0000000..742410c --- /dev/null +++ b/DeepCopy/Reflection/ReflectionHelper.php @@ -0,0 +1,78 @@ +getProperties() does not return private properties from ancestor classes. + * + * @author muratyaman@gmail.com + * @see http://php.net/manual/en/reflectionclass.getproperties.php + * + * @param ReflectionClass $ref + * + * @return ReflectionProperty[] + */ + public static function getProperties(ReflectionClass $ref) + { + $props = $ref->getProperties(); + $propsArr = array(); + + foreach ($props as $prop) { + $propertyName = $prop->getName(); + $propsArr[$propertyName] = $prop; + } + + if ($parentClass = $ref->getParentClass()) { + $parentPropsArr = self::getProperties($parentClass); + foreach ($propsArr as $key => $property) { + $parentPropsArr[$key] = $property; + } + + return $parentPropsArr; + } + + return $propsArr; + } + + /** + * Retrieves property by name from object and all its ancestors. + * + * @param object|string $object + * @param string $name + * + * @throws PropertyException + * @throws ReflectionException + * + * @return ReflectionProperty + */ + public static function getProperty($object, $name) + { + $reflection = is_object($object) ? new ReflectionObject($object) : new ReflectionClass($object); + + if ($reflection->hasProperty($name)) { + return $reflection->getProperty($name); + } + + if ($parentClass = $reflection->getParentClass()) { + return self::getProperty($parentClass->getName(), $name); + } + + throw new PropertyException( + sprintf( + 'The class "%s" doesn\'t have a property with the given name: "%s".', + is_object($object) ? get_class($object) : $object, + $name + ) + ); + } +} diff --git a/DeepCopy/TypeFilter/Date/DateIntervalFilter.php b/DeepCopy/TypeFilter/Date/DateIntervalFilter.php new file mode 100644 index 0000000..becd1cf --- /dev/null +++ b/DeepCopy/TypeFilter/Date/DateIntervalFilter.php @@ -0,0 +1,33 @@ + $propertyValue) { + $copy->{$propertyName} = $propertyValue; + } + + return $copy; + } +} diff --git a/DeepCopy/TypeFilter/ReplaceFilter.php b/DeepCopy/TypeFilter/ReplaceFilter.php new file mode 100644 index 0000000..164f8b8 --- /dev/null +++ b/DeepCopy/TypeFilter/ReplaceFilter.php @@ -0,0 +1,30 @@ +callback = $callable; + } + + /** + * {@inheritdoc} + */ + public function apply($element) + { + return call_user_func($this->callback, $element); + } +} diff --git a/DeepCopy/TypeFilter/ShallowCopyFilter.php b/DeepCopy/TypeFilter/ShallowCopyFilter.php new file mode 100644 index 0000000..a5fbd7a --- /dev/null +++ b/DeepCopy/TypeFilter/ShallowCopyFilter.php @@ -0,0 +1,17 @@ +copier = $copier; + } + + /** + * {@inheritdoc} + */ + public function apply($arrayObject) + { + $clone = clone $arrayObject; + foreach ($arrayObject->getArrayCopy() as $k => $v) { + $clone->offsetSet($k, $this->copier->copy($v)); + } + + return $clone; + } +} + diff --git a/DeepCopy/TypeFilter/Spl/SplDoublyLinkedList.php b/DeepCopy/TypeFilter/Spl/SplDoublyLinkedList.php new file mode 100644 index 0000000..c5644cf --- /dev/null +++ b/DeepCopy/TypeFilter/Spl/SplDoublyLinkedList.php @@ -0,0 +1,10 @@ +copier = $copier; + } + + /** + * {@inheritdoc} + */ + public function apply($element) + { + $newElement = clone $element; + + $copy = $this->createCopyClosure(); + + return $copy($newElement); + } + + private function createCopyClosure() + { + $copier = $this->copier; + + $copy = function (SplDoublyLinkedList $list) use ($copier) { + // Replace each element in the list with a deep copy of itself + for ($i = 1; $i <= $list->count(); $i++) { + $copy = $copier->recursiveCopy($list->shift()); + + $list->push($copy); + } + + return $list; + }; + + return Closure::bind($copy, null, DeepCopy::class); + } +} diff --git a/DeepCopy/TypeFilter/TypeFilter.php b/DeepCopy/TypeFilter/TypeFilter.php new file mode 100644 index 0000000..5785a7d --- /dev/null +++ b/DeepCopy/TypeFilter/TypeFilter.php @@ -0,0 +1,13 @@ +type = $type; + } + + /** + * @param mixed $element + * + * @return boolean + */ + public function matches($element) + { + return is_object($element) ? is_a($element, $this->type) : gettype($element) === $this->type; + } +} diff --git a/DeepCopy/deep_copy.php b/DeepCopy/deep_copy.php new file mode 100644 index 0000000..55dcc92 --- /dev/null +++ b/DeepCopy/deep_copy.php @@ -0,0 +1,20 @@ +copy($value); + } +} diff --git a/Mpdf/Barcode.php b/Mpdf/Barcode.php new file mode 100644 index 0000000..97054b4 --- /dev/null +++ b/Mpdf/Barcode.php @@ -0,0 +1,153 @@ +getBarcode($code, $type, $pr); + return $barcode ? $barcode->getData() : false; + } + + public function getChecksum($code, $type) + { + $barcode = $this->getBarcode($code, $type); + return $barcode ? $barcode->getChecksum() : false; + } + + /** + * @param string $code + * @param string $type + * @param float $pr + * + * @return \Mpdf\Barcode\BarcodeInterface + */ + public function getBarcode($code, $type, $pr = 0.0) + { + switch (strtoupper($type)) { + case 'ISBN': + case 'ISSN': + case 'EAN13': // EAN 13 + return new Barcode\EanUpc($code, 13, 11, 7, 0.33, 25.93); + + case 'UPCA': // UPC-A + return new Barcode\EanUpc($code, 12, 9, 9, 0.33, 25.91); + + case 'UPCE': // UPC-E + return new Barcode\EanUpc($code, 6, 9, 7, 0.33, 25.93); + + case 'EAN8': // EAN 8 + return new Barcode\EanUpc($code, 8, 7, 7, 0.33, 21.64); + + case 'EAN2': // 2-Digits UPC-Based Extention + return new Barcode\EanExt($code, 2, 7, 7, 0.33, 20, 9); + + case 'EAN5': // 5-Digits UPC-Based Extention + return new Barcode\EanExt($code, 5, 7, 7, 0.33, 20, 9); + + case 'IMB': // IMB - Intelligent Mail Barcode - Onecode - USPS-B-3200 + $xdim = 0.508; // Nominal value for X-dim (bar width) in mm (spec.) + $bpi = 22; // Bars per inch + return new Barcode\Imb($code, $xdim, ((25.4 / $bpi) - $xdim) / $xdim, ['D' => 2, 'A' => 2, 'F' => 3, 'T' => 1]); + + case 'RM4SCC': // RM4SCC (Royal Mail 4-state Customer Code) - CBC (Customer Bar Code) + $xdim = 0.508; // Nominal value for X-dim (bar width) in mm (spec.) + $bpi = 22; // Bars per inch + return new Barcode\Rm4Scc($code, $xdim, ((25.4 / $bpi) - $xdim) / $xdim, ['D' => 5, 'A' => 5, 'F' => 8, 'T' => 2]); + + case 'KIX': // KIX (Klant index - Customer index) + $xdim = 0.508; // Nominal value for X-dim (bar width) in mm (spec.) + $bpi = 22; // Bars per inch + return new Barcode\Rm4Scc($code, $xdim, ((25.4 / $bpi) - $xdim) / $xdim, ['D' => 5, 'A' => 5, 'F' => 8, 'T' => 2], true); + + case 'POSTNET': // POSTNET + $xdim = 0.508; // Nominal value for X-dim (bar width) in mm (spec.) + $bpi = 22; // Bars per inch + return new Barcode\Postnet($code, $xdim, ((25.4 / $bpi) - $xdim) / $xdim, false); + + case 'PLANET': // PLANET + $xdim = 0.508; // Nominal value for X-dim (bar width) in mm (spec.) + $bpi = 22; // Bars per inch + return new Barcode\Postnet($code, $xdim, ((25.4 / $bpi) - $xdim) / $xdim, true); + + case 'C93': // CODE 93 - USS-93 + return new Barcode\Code93($code); + + case 'CODE11': // CODE 11 + return new Barcode\Code11($code, ($pr > 0) ? $pr : 3); + + case 'MSI': // MSI (Variation of Plessey code) + return new Barcode\Msi($code, false); + + case 'MSI+': // MSI + CHECKSUM (modulo 11) + return new Barcode\Msi($code, true); + + case 'CODABAR': // CODABAR + return new Barcode\Codabar($code, ($pr > 0) ? $pr : 2.5); + + case 'C128A': // CODE 128 A + return new Barcode\Code128($code, 'A'); + + case 'C128B': // CODE 128 B + return new Barcode\Code128($code, 'B'); + + case 'C128C': // CODE 128 C + return new Barcode\Code128($code, 'C'); + + case 'C128RAW': // CODE 128 RAW -- code is a space separated list of codes with startcode but without checkdigit,stop,end ex: "105 12 34" + return new Barcode\Code128($code, 'RAW'); + + case 'EAN128A': // EAN 128 A + return new Barcode\Code128($code, 'A', true); + + case 'EAN128B': // EAN 128 B + return new Barcode\Code128($code, 'B', true); + + case 'EAN128C': // EAN 128 C + return new Barcode\Code128($code, 'C', true); + + case 'C39': // CODE 39 - ANSI MH10.8M-1983 - USD-3 - 3 of 9. + return new Barcode\Code39($this->sanitizeCode($code), ($pr > 0) ? $pr : 2.5, false, false); + + case 'C39+': // CODE 39 with checksum + return new Barcode\Code39($this->sanitizeCode($code), ($pr > 0) ? $pr : 2.5, false, true); + + case 'C39E': // CODE 39 EXTENDED + return new Barcode\Code39($this->sanitizeCode($code), ($pr > 0) ? $pr : 2.5, true, false); + + case 'C39E+': // CODE 39 EXTENDED + CHECKSUM + return new Barcode\Code39($this->sanitizeCode($code), ($pr > 0) ? $pr : 2.5, true, true); + + case 'S25': // Standard 2 of 5 + return new Barcode\S25($code, false); + + case 'S25+': // Standard 2 of 5 + CHECKSUM + return new Barcode\S25($code, true); + + case 'I25': // Interleaved 2 of 5 + return new Barcode\I25($code, 0, ($pr > 0) ? $pr : 2.5, false); + + case 'I25+': // Interleaved 2 of 5 + CHECKSUM + return new Barcode\I25($code, 0, ($pr > 0) ? $pr : 2.5, true); + + case 'I25B': // Interleaved 2 of 5 + Bearer bars + return new Barcode\I25($code, 2, ($pr > 0) ? $pr : 2.5, false); + + case 'I25B+': // Interleaved 2 of 5 + CHECKSUM + Bearer bars + return new Barcode\I25($code, 2, ($pr > 0) ? $pr : 2.5, true); + } + + return false; + } + + private function sanitizeCode($code) + { + $code = str_replace(chr(194) . chr(160), ' ', $code); // mPDF 5.3.95 (for utf-8 encoded) + $code = str_replace(chr(160), ' ', $code); // mPDF 5.3.95 (for win-1252) + + return $code; + } + +} diff --git a/Mpdf/Barcode/AbstractBarcode.php b/Mpdf/Barcode/AbstractBarcode.php new file mode 100644 index 0000000..dd540dc --- /dev/null +++ b/Mpdf/Barcode/AbstractBarcode.php @@ -0,0 +1,69 @@ +data; + } + + /** + * @param string $key + * + * @return mixed + */ + public function getKey($key) + { + return isset($this->data[$key]) ? $this->data[$key] : null; + } + + /** + * @return string + */ + public function getChecksum() + { + return $this->getKey('checkdigit'); + } + + /** + * Convert binary barcode sequence to barcode array + * + * @param string $seq + * @param mixed[] $barcodeData + * + * @return mixed[] + */ + protected function binseqToArray($seq, array $barcodeData) + { + $len = strlen($seq); + $w = 0; + $k = 0; + for ($i = 0; $i < $len; ++$i) { + $w += 1; + if (($i == ($len - 1)) or (($i < ($len - 1)) and ($seq[$i] != $seq[($i + 1)]))) { + if ($seq[$i] == '1') { + $t = true; // bar + } else { + $t = false; // space + } + $barcodeData['bcode'][$k] = ['t' => $t, 'w' => $w, 'h' => 1, 'p' => 0]; + $barcodeData['maxw'] += $w; + ++$k; + $w = 0; + } + } + return $barcodeData; + } + +} diff --git a/Mpdf/Barcode/BarcodeException.php b/Mpdf/Barcode/BarcodeException.php new file mode 100644 index 0000000..513fa61 --- /dev/null +++ b/Mpdf/Barcode/BarcodeException.php @@ -0,0 +1,8 @@ +init($code, $printRatio); + + $this->data['nom-X'] = 0.381; // Nominal value for X-dim (bar width) in mm (2 X min. spec.) + $this->data['nom-H'] = 10; // Nominal value for Height of Full bar in mm (non-spec.) + $this->data['lightmL'] = 10; // LEFT light margin = x X-dim (spec.) + $this->data['lightmR'] = 10; // RIGHT light margin = x X-dim (spec.) + $this->data['lightTB'] = 0; // TOP/BOTTOM light margin = x X-dim (non-spec.) + } + + /** + * @param string $code + * @param float $printRatio + */ + private function init($code, $printRatio) + { + $chr = [ + '0' => '11111221', + '1' => '11112211', + '2' => '11121121', + '3' => '22111111', + '4' => '11211211', + '5' => '21111211', + '6' => '12111121', + '7' => '12112111', + '8' => '12211111', + '9' => '21121111', + '-' => '11122111', + '$' => '11221111', + ':' => '21112121', + '/' => '21211121', + '.' => '21212111', + '+' => '11222221', + 'A' => '11221211', + 'B' => '12121121', + 'C' => '11121221', + 'D' => '11122211' + ]; + + $bararray = ['code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => []]; + $k = 0; + + $code = strtoupper($code); + $len = strlen($code); + + for ($i = 0; $i < $len; ++$i) { + if (!isset($chr[$code[$i]])) { + throw new \Mpdf\Barcode\BarcodeException(sprintf('Invalid character "%s" CODABAR barcode value', $code[$i])); + } + $seq = $chr[$code[$i]]; + for ($j = 0; $j < 8; ++$j) { + if (($j % 2) == 0) { + $t = true; // bar + } else { + $t = false; // space + } + $x = $seq[$j]; + if ($x == 2) { + $w = $printRatio; + } else { + $w = 1; + } + $bararray['bcode'][$k] = ['t' => $t, 'w' => $w, 'h' => 1, 'p' => 0]; + $bararray['maxw'] += $w; + ++$k; + } + } + + $this->data = $bararray; + } + + public function getType() + { + return 'CODABAR'; + } + +} diff --git a/Mpdf/Barcode/Code11.php b/Mpdf/Barcode/Code11.php new file mode 100644 index 0000000..f95245f --- /dev/null +++ b/Mpdf/Barcode/Code11.php @@ -0,0 +1,143 @@ +init($code, $printRatio); + + $this->data['nom-X'] = 0.381; // Nominal value for X-dim (bar width) in mm (2 X min. spec.) + $this->data['nom-H'] = 10; // Nominal value for Height of Full bar in mm (non-spec.) + $this->data['lightmL'] = 10; // LEFT light margin = x X-dim (spec.) + $this->data['lightmR'] = 10; // RIGHT light margin = x X-dim (spec.) + $this->data['lightTB'] = 0; // TOP/BOTTOM light margin = x X-dim (non-spec.) + } + + /** + * @param string $code + * @param float $printRatio + */ + private function init($code, $printRatio) + { + $chr = [ + '0' => '111121', + '1' => '211121', + '2' => '121121', + '3' => '221111', + '4' => '112121', + '5' => '212111', + '6' => '122111', + '7' => '111221', + '8' => '211211', + '9' => '211111', + '-' => '112111', + 'S' => '112211' + ]; + + $bararray = ['code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => []]; + + $k = 0; + + $len = strlen($code); + // calculate check digit C + + $p = 1; + $check = 0; + + for ($i = ($len - 1); $i >= 0; --$i) { + $digit = $code[$i]; + if ($digit == '-') { + $dval = 10; + } else { + $dval = (int) $digit; + } + $check += ($dval * $p); + ++$p; + if ($p > 10) { + $p = 1; + } + } + + $check %= 11; + + if ($check == 10) { + $check = '-'; + } + + $code .= $check; + $checkdigit = $check; + + if ($len > 10) { + // calculate check digit K + $p = 1; + $check = 0; + for ($i = $len; $i >= 0; --$i) { + $digit = $code[$i]; + if ($digit == '-') { + $dval = 10; + } else { + $dval = (int) $digit; + } + $check += ($dval * $p); + ++$p; + if ($p > 9) { + $p = 1; + } + } + $check %= 11; + $code .= $check; + $checkdigit .= $check; + ++$len; + } + + $code = 'S' . $code . 'S'; + $len += 3; + + for ($i = 0; $i < $len; ++$i) { + if (!isset($chr[$code[$i]])) { + throw new \Mpdf\Barcode\BarcodeException(sprintf('Invalid character "%s" in CODE11 barcode value', $code[$i])); + } + $seq = $chr[$code[$i]]; + for ($j = 0; $j < 6; ++$j) { + if (($j % 2) == 0) { + $t = true; // bar + } else { + $t = false; // space + } + $x = $seq[$j]; + if ($x == 2) { + $w = $printRatio; + } else { + $w = 1; + } + $bararray['bcode'][$k] = ['t' => $t, 'w' => $w, 'h' => 1, 'p' => 0]; + $bararray['maxw'] += $w; + ++$k; + } + } + + $bararray['checkdigit'] = $checkdigit; + + $this->data = $bararray; + } + + /** + * @inheritdoc + */ + public function getType() + { + return 'CODE11'; + } + +} diff --git a/Mpdf/Barcode/Code128.php b/Mpdf/Barcode/Code128.php new file mode 100644 index 0000000..e12f4d8 --- /dev/null +++ b/Mpdf/Barcode/Code128.php @@ -0,0 +1,277 @@ +init($code, $type, $ean); + + $this->data['nom-X'] = 0.381; // Nominal value for X-dim (bar width) in mm (2 X min. spec.) + $this->data['nom-H'] = 10; // Nominal value for Height of Full bar in mm (non-spec.) + $this->data['lightmL'] = 10; // LEFT light margin = x X-dim (spec.) + $this->data['lightmR'] = 10; // RIGHT light margin = x X-dim (spec.) + $this->data['lightTB'] = 0; // TOP/BOTTOM light margin = x X-dim (non-spec.) + } + + /** + * @param string $code + * @param string $type + * @param bool $ean + */ + protected function init($code, $type, $ean) + { + $code = UtfString::strcode2utf($code); // mPDF 5.7.1 Allows e.g. + + $chr = [ + '212222', /* 00 */ + '222122', /* 01 */ + '222221', /* 02 */ + '121223', /* 03 */ + '121322', /* 04 */ + '131222', /* 05 */ + '122213', /* 06 */ + '122312', /* 07 */ + '132212', /* 08 */ + '221213', /* 09 */ + '221312', /* 10 */ + '231212', /* 11 */ + '112232', /* 12 */ + '122132', /* 13 */ + '122231', /* 14 */ + '113222', /* 15 */ + '123122', /* 16 */ + '123221', /* 17 */ + '223211', /* 18 */ + '221132', /* 19 */ + '221231', /* 20 */ + '213212', /* 21 */ + '223112', /* 22 */ + '312131', /* 23 */ + '311222', /* 24 */ + '321122', /* 25 */ + '321221', /* 26 */ + '312212', /* 27 */ + '322112', /* 28 */ + '322211', /* 29 */ + '212123', /* 30 */ + '212321', /* 31 */ + '232121', /* 32 */ + '111323', /* 33 */ + '131123', /* 34 */ + '131321', /* 35 */ + '112313', /* 36 */ + '132113', /* 37 */ + '132311', /* 38 */ + '211313', /* 39 */ + '231113', /* 40 */ + '231311', /* 41 */ + '112133', /* 42 */ + '112331', /* 43 */ + '132131', /* 44 */ + '113123', /* 45 */ + '113321', /* 46 */ + '133121', /* 47 */ + '313121', /* 48 */ + '211331', /* 49 */ + '231131', /* 50 */ + '213113', /* 51 */ + '213311', /* 52 */ + '213131', /* 53 */ + '311123', /* 54 */ + '311321', /* 55 */ + '331121', /* 56 */ + '312113', /* 57 */ + '312311', /* 58 */ + '332111', /* 59 */ + '314111', /* 60 */ + '221411', /* 61 */ + '431111', /* 62 */ + '111224', /* 63 */ + '111422', /* 64 */ + '121124', /* 65 */ + '121421', /* 66 */ + '141122', /* 67 */ + '141221', /* 68 */ + '112214', /* 69 */ + '112412', /* 70 */ + '122114', /* 71 */ + '122411', /* 72 */ + '142112', /* 73 */ + '142211', /* 74 */ + '241211', /* 75 */ + '221114', /* 76 */ + '413111', /* 77 */ + '241112', /* 78 */ + '134111', /* 79 */ + '111242', /* 80 */ + '121142', /* 81 */ + '121241', /* 82 */ + '114212', /* 83 */ + '124112', /* 84 */ + '124211', /* 85 */ + '411212', /* 86 */ + '421112', /* 87 */ + '421211', /* 88 */ + '212141', /* 89 */ + '214121', /* 90 */ + '412121', /* 91 */ + '111143', /* 92 */ + '111341', /* 93 */ + '131141', /* 94 */ + '114113', /* 95 */ + '114311', /* 96 */ + '411113', /* 97 */ + '411311', /* 98 */ + '113141', /* 99 */ + '114131', /* 100 */ + '311141', /* 101 */ + '411131', /* 102 */ + '211412', /* 103 START A */ + '211214', /* 104 START B */ + '211232', /* 105 START C */ + '233111', /* STOP */ + '200000' /* END */ + ]; + + switch (strtoupper($type)) { + case 'RAW': + $newCode=''; + $startid = false; + foreach (explode(" ", $code) as $v) { + if (is_numeric($v) && round($v, 0) == $v) { + if ($v>=0 && $v<=105) { + if ($startid===false) { + $startid=$v; + } else { + $newCode.=chr($v); + } + } else { + throw new \Mpdf\Barcode\BarcodeException('Invalid CODE128RAW barcode value. 0-105 needed'); + } + } else { + //double spaces generates empty $v any other is not allowed + if ($v!='') { + throw new \Mpdf\Barcode\BarcodeException('Invalid CODE128RAW barcode value. 0-105 needed'); + } + } + } + if ($startid<103 || $startid>105) { + throw new \Mpdf\Barcode\BarcodeException('Invalid CODE128RAW startid value. Must 103,104 or 105 (for A,B or C)'); + } + $keys=''; + for ($i = 0; $i <= 105; ++$i) { + $keys .= chr($i); + } + $code=$newCode; + break; + case 'A': + $startid = 103; + $keys = ' !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_'; + for ($i = 0; $i < 32; ++$i) { + $keys .= chr($i); + } + break; + case 'B': + $startid = 104; + $keys = ' !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~' . chr(127); + break; + case 'C': + $startid = 105; + $keys = ''; + if ((strlen($code) % 2) != 0) { + // The length of barcode value must be even ($code). You must pad the number with zeros + throw new \Mpdf\Barcode\BarcodeException('Invalid CODE128C barcode value'); + } + for ($i = 0; $i <= 99; ++$i) { + $keys .= chr($i); + } + $newCode = ''; + $hclen = (strlen($code) / 2); + for ($i = 0; $i < $hclen; ++$i) { + if ($code[2 * $i]<"0" || $code[2 * $i]>"9" || $code[2 * $i + 1]<"0" || $code[2 * $i + 1]>"9") { + throw new \Mpdf\Barcode\BarcodeException(sprintf('Invalid character "%s" in CODE128C barcode value', $code[$i])); + } + $newCode .= chr((int) ($code[2 * $i] . $code[2 * $i + 1])); + } + $code = $newCode; + break; + default: + throw new \Mpdf\Barcode\BarcodeException('Invalid CODE128 barcode type'); + } + + // calculate check character + $sum = $startid; + + // Add FNC 1 - which identifies it as EAN-128 + if ($ean) { + $code = chr(102) . $code; + } + $clen = strlen($code); + for ($i = 0; $i < $clen; ++$i) { + if ($ean && $i == 0) { + $sum += 102; + } else { + if (strpos($keys, $code[$i]) === false) { + throw new \Mpdf\Barcode\BarcodeException(sprintf('Invalid character "%s" in CODE128'.$type.' barcode value', $code[$i])); + } + $sum += (strpos($keys, $code[$i]) * ($i + 1)); + } + } + $check = ($sum % 103); + $checkdigit = $check; + + // add start, check and stop codes + $code = chr($startid) . $code . chr($check) . chr(106) . chr(107); + $bararray = ['code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => []]; + $k = 0; + $len = strlen($code); + + for ($i = 0; $i < $len; ++$i) { + + $ck = strpos($keys, $code[$i]); + if (($i == 0) || ($ean && $i == 1) | ($i > ($len - 4))) { + $char_num = ord($code[$i]); + $seq = $chr[$char_num]; + } elseif (($ck >= 0) && isset($chr[$ck])) { + $seq = $chr[$ck]; + } else { + // invalid character + throw new \Mpdf\Barcode\BarcodeException(sprintf('Invalid character "%s" in CODE128C barcode value', $code[$i])); + } + for ($j = 0; $j < 6; ++$j) { + if (($j % 2) == 0) { + $t = true; // bar + } else { + $t = false; // space + } + $w = $seq[$j]; + $bararray['bcode'][$k] = ['t' => $t, 'w' => $w, 'h' => 1, 'p' => 0]; + $bararray['maxw'] += $w; + ++$k; + } + } + + $bararray['checkdigit'] = $checkdigit; + $this->data = $bararray; + } + + public function getType() + { + return 'CODE128'; + } + +} diff --git a/Mpdf/Barcode/Code39.php b/Mpdf/Barcode/Code39.php new file mode 100644 index 0000000..6d13082 --- /dev/null +++ b/Mpdf/Barcode/Code39.php @@ -0,0 +1,235 @@ +init($code, $printRatio, $extended, $checksum); + + $this->data['nom-X'] = 0.381; // Nominal value for X-dim (bar width) in mm (2 X min. spec.) + $this->data['nom-H'] = 10; // Nominal value for Height of Full bar in mm (non-spec.) + $this->data['lightmL'] = 10; // LEFT light margin = x X-dim (spec.) + $this->data['lightmR'] = 10; // RIGHT light margin = x X-dim (spec.) + $this->data['lightTB'] = 0; // TOP/BOTTOM light margin = x X-dim (non-spec.) + } + + /** + * @param string $code + * @param float $printRatio + * @param bool $extended + * @param bool $checksum + * + * @return mixed[] + */ + private function init($code, $printRatio, $extended, $checksum) + { + $chr = [ + '0' => '111221211', + '1' => '211211112', + '2' => '112211112', + '3' => '212211111', + '4' => '111221112', + '5' => '211221111', + '6' => '112221111', + '7' => '111211212', + '8' => '211211211', + '9' => '112211211', + 'A' => '211112112', + 'B' => '112112112', + 'C' => '212112111', + 'D' => '111122112', + 'E' => '211122111', + 'F' => '112122111', + 'G' => '111112212', + 'H' => '211112211', + 'I' => '112112211', + 'J' => '111122211', + 'K' => '211111122', + 'L' => '112111122', + 'M' => '212111121', + 'N' => '111121122', + 'O' => '211121121', + 'P' => '112121121', + 'Q' => '111111222', + 'R' => '211111221', + 'S' => '112111221', + 'T' => '111121221', + 'U' => '221111112', + 'V' => '122111112', + 'W' => '222111111', + 'X' => '121121112', + 'Y' => '221121111', + 'Z' => '122121111', + '-' => '121111212', + '.' => '221111211', + ' ' => '122111211', + '$' => '121212111', + '/' => '121211121', + '+' => '121112121', + '%' => '111212121', + '*' => '121121211', + ]; + + $code = strtoupper($code); + $checkdigit = ''; + + if ($extended) { + // extended mode + $code = $this->encodeExt($code); + } + + if ($code === false) { + throw new \Mpdf\Barcode\BarcodeException('Invalid CODE39 barcode value'); + } + + if ($checksum) { + // checksum + $checkdigit = $this->checksum($code); + $code .= $checkdigit; + } + // add star$this->>datat and stop codes + $code = '*' . $code . '*'; + + $bararray = ['code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => []]; + $k = 0; + $clen = strlen($code); + for ($i = 0; $i < $clen; ++$i) { + $char = $code[$i]; + if (!isset($chr[$char])) { + // invalid character + throw new \Mpdf\Barcode\BarcodeException('Invalid CODE39 barcode value'); + } + for ($j = 0; $j < 9; ++$j) { + if (($j % 2) == 0) { + $t = true; // bar + } else { + $t = false; // space + } + $x = $chr[$char][$j]; + if ($x == 2) { + $w = $printRatio; + } else { + $w = 1; + } + + $bararray['bcode'][$k] = ['t' => $t, 'w' => $w, 'h' => 1, 'p' => 0]; + $bararray['maxw'] += $w; + ++$k; + } + $bararray['bcode'][$k] = ['t' => false, 'w' => 1, 'h' => 1, 'p' => 0]; + $bararray['maxw'] += 1; + ++$k; + } + + $bararray['checkdigit'] = $checkdigit; + + $this->data = $bararray; + } + + /** + * Encode a string to be used for CODE 39 Extended mode. + * + * @param string $code + * @return string + */ + protected function encodeExt($code) + { + $encode = [ + chr(0) => '%U', chr(1) => '$A', chr(2) => '$B', chr(3) => '$C', + chr(4) => '$D', chr(5) => '$E', chr(6) => '$F', chr(7) => '$G', + chr(8) => '$H', chr(9) => '$I', chr(10) => '$J', chr(11) => '£K', + chr(12) => '$L', chr(13) => '$M', chr(14) => '$N', chr(15) => '$O', + chr(16) => '$P', chr(17) => '$Q', chr(18) => '$R', chr(19) => '$S', + chr(20) => '$T', chr(21) => '$U', chr(22) => '$V', chr(23) => '$W', + chr(24) => '$X', chr(25) => '$Y', chr(26) => '$Z', chr(27) => '%A', + chr(28) => '%B', chr(29) => '%C', chr(30) => '%D', chr(31) => '%E', + chr(32) => ' ', chr(33) => '/A', chr(34) => '/B', chr(35) => '/C', + chr(36) => '/D', chr(37) => '/E', chr(38) => '/F', chr(39) => '/G', + chr(40) => '/H', chr(41) => '/I', chr(42) => '/J', chr(43) => '/K', + chr(44) => '/L', chr(45) => '-', chr(46) => '.', chr(47) => '/O', + chr(48) => '0', chr(49) => '1', chr(50) => '2', chr(51) => '3', + chr(52) => '4', chr(53) => '5', chr(54) => '6', chr(55) => '7', + chr(56) => '8', chr(57) => '9', chr(58) => '/Z', chr(59) => '%F', + chr(60) => '%G', chr(61) => '%H', chr(62) => '%I', chr(63) => '%J', + chr(64) => '%V', chr(65) => 'A', chr(66) => 'B', chr(67) => 'C', + chr(68) => 'D', chr(69) => 'E', chr(70) => 'F', chr(71) => 'G', + chr(72) => 'H', chr(73) => 'I', chr(74) => 'J', chr(75) => 'K', + chr(76) => 'L', chr(77) => 'M', chr(78) => 'N', chr(79) => 'O', + chr(80) => 'P', chr(81) => 'Q', chr(82) => 'R', chr(83) => 'S', + chr(84) => 'T', chr(85) => 'U', chr(86) => 'V', chr(87) => 'W', + chr(88) => 'X', chr(89) => 'Y', chr(90) => 'Z', chr(91) => '%K', + chr(92) => '%L', chr(93) => '%M', chr(94) => '%N', chr(95) => '%O', + chr(96) => '%W', chr(97) => '+A', chr(98) => '+B', chr(99) => '+C', + chr(100) => '+D', chr(101) => '+E', chr(102) => '+F', chr(103) => '+G', + chr(104) => '+H', chr(105) => '+I', chr(106) => '+J', chr(107) => '+K', + chr(108) => '+L', chr(109) => '+M', chr(110) => '+N', chr(111) => '+O', + chr(112) => '+P', chr(113) => '+Q', chr(114) => '+R', chr(115) => '+S', + chr(116) => '+T', chr(117) => '+U', chr(118) => '+V', chr(119) => '+W', + chr(120) => '+X', chr(121) => '+Y', chr(122) => '+Z', chr(123) => '%P', + chr(124) => '%Q', chr(125) => '%R', chr(126) => '%S', chr(127) => '%T' + ]; + + $code_ext = ''; + $clen = strlen($code); + + for ($i = 0; $i < $clen; ++$i) { + + if (ord($code[$i]) > 127) { + throw new \Mpdf\Barcode\BarcodeException('Invalid CODE39 barcode value'); + } + + $code_ext .= $encode[$code[$i]]; + } + + return $code_ext; + } + + /** + * Calculate CODE 39 checksum (modulo 43). + * + * @param string $code + * @return string mixed + */ + protected function checksum($code) + { + $chars = [ + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', + 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', + 'W', 'X', 'Y', 'Z', '-', '.', ' ', '$', '/', '+', '%' + ]; + + $sum = 0; + $clen = strlen($code); + + for ($i = 0; $i < $clen; ++$i) { + $k = array_keys($chars, $code[$i]); + $sum += $k[0]; + } + + $j = ($sum % 43); + + return $chars[$j]; + } + + /** + * @inheritdoc + */ + public function getType() + { + return 'CODE39'; + } + +} diff --git a/Mpdf/Barcode/Code93.php b/Mpdf/Barcode/Code93.php new file mode 100644 index 0000000..a3f7b25 --- /dev/null +++ b/Mpdf/Barcode/Code93.php @@ -0,0 +1,226 @@ +init($code); + + $this->data['nom-X'] = 0.381; // Nominal value for X-dim (bar width) in mm (2 X min. spec.) + $this->data['nom-H'] = 10; // Nominal value for Height of Full bar in mm (non-spec.) + $this->data['lightmL'] = 10; // LEFT light margin = x X-dim (spec.) + $this->data['lightmR'] = 10; // RIGHT light margin = x X-dim (spec.) + $this->data['lightTB'] = 0; // TOP/BOTTOM light margin = x X-dim (non-spec.) + } + + /** + * @param string $code + */ + private function init($code) + { + $chr = [ + 48 => '131112', // 0 + 49 => '111213', // 1 + 50 => '111312', // 2 + 51 => '111411', // 3 + 52 => '121113', // 4 + 53 => '121212', // 5 + 54 => '121311', // 6 + 55 => '111114', // 7 + 56 => '131211', // 8 + 57 => '141111', // 9 + 65 => '211113', // A + 66 => '211212', // B + 67 => '211311', // C + 68 => '221112', // D + 69 => '221211', // E + 70 => '231111', // F + 71 => '112113', // G + 72 => '112212', // H + 73 => '112311', // I + 74 => '122112', // J + 75 => '132111', // K + 76 => '111123', // L + 77 => '111222', // M + 78 => '111321', // N + 79 => '121122', // O + 80 => '131121', // P + 81 => '212112', // Q + 82 => '212211', // R + 83 => '211122', // S + 84 => '211221', // T + 85 => '221121', // U + 86 => '222111', // V + 87 => '112122', // W + 88 => '112221', // X + 89 => '122121', // Y + 90 => '123111', // Z + 45 => '121131', // - + 46 => '311112', // . + 32 => '311211', // + 36 => '321111', // $ + 47 => '112131', // / + 43 => '113121', // + + 37 => '211131', // % + 128 => '121221', // ($) + 129 => '311121', // (/) + 130 => '122211', // (+) + 131 => '312111', // (%) + 42 => '111141', // start-stop + ]; + + $code = strtoupper($code); + $encode = [ + chr(0) => chr(131) . 'U', chr(1) => chr(128) . 'A', chr(2) => chr(128) . 'B', chr(3) => chr(128) . 'C', + chr(4) => chr(128) . 'D', chr(5) => chr(128) . 'E', chr(6) => chr(128) . 'F', chr(7) => chr(128) . 'G', + chr(8) => chr(128) . 'H', chr(9) => chr(128) . 'I', chr(10) => chr(128) . 'J', chr(11) => '£K', + chr(12) => chr(128) . 'L', chr(13) => chr(128) . 'M', chr(14) => chr(128) . 'N', chr(15) => chr(128) . 'O', + chr(16) => chr(128) . 'P', chr(17) => chr(128) . 'Q', chr(18) => chr(128) . 'R', chr(19) => chr(128) . 'S', + chr(20) => chr(128) . 'T', chr(21) => chr(128) . 'U', chr(22) => chr(128) . 'V', chr(23) => chr(128) . 'W', + chr(24) => chr(128) . 'X', chr(25) => chr(128) . 'Y', chr(26) => chr(128) . 'Z', chr(27) => chr(131) . 'A', + chr(28) => chr(131) . 'B', chr(29) => chr(131) . 'C', chr(30) => chr(131) . 'D', chr(31) => chr(131) . 'E', + chr(32) => ' ', chr(33) => chr(129) . 'A', chr(34) => chr(129) . 'B', chr(35) => chr(129) . 'C', + chr(36) => chr(129) . 'D', chr(37) => chr(129) . 'E', chr(38) => chr(129) . 'F', chr(39) => chr(129) . 'G', + chr(40) => chr(129) . 'H', chr(41) => chr(129) . 'I', chr(42) => chr(129) . 'J', chr(43) => chr(129) . 'K', + chr(44) => chr(129) . 'L', chr(45) => '-', chr(46) => '.', chr(47) => chr(129) . 'O', + chr(48) => '0', chr(49) => '1', chr(50) => '2', chr(51) => '3', + chr(52) => '4', chr(53) => '5', chr(54) => '6', chr(55) => '7', + chr(56) => '8', chr(57) => '9', chr(58) => chr(129) . 'Z', chr(59) => chr(131) . 'F', + chr(60) => chr(131) . 'G', chr(61) => chr(131) . 'H', chr(62) => chr(131) . 'I', chr(63) => chr(131) . 'J', + chr(64) => chr(131) . 'V', chr(65) => 'A', chr(66) => 'B', chr(67) => 'C', + chr(68) => 'D', chr(69) => 'E', chr(70) => 'F', chr(71) => 'G', + chr(72) => 'H', chr(73) => 'I', chr(74) => 'J', chr(75) => 'K', + chr(76) => 'L', chr(77) => 'M', chr(78) => 'N', chr(79) => 'O', + chr(80) => 'P', chr(81) => 'Q', chr(82) => 'R', chr(83) => 'S', + chr(84) => 'T', chr(85) => 'U', chr(86) => 'V', chr(87) => 'W', + chr(88) => 'X', chr(89) => 'Y', chr(90) => 'Z', chr(91) => chr(131) . 'K', + chr(92) => chr(131) . 'L', chr(93) => chr(131) . 'M', chr(94) => chr(131) . 'N', chr(95) => chr(131) . 'O', + chr(96) => chr(131) . 'W', chr(97) => chr(130) . 'A', chr(98) => chr(130) . 'B', chr(99) => chr(130) . 'C', + chr(100) => chr(130) . 'D', chr(101) => chr(130) . 'E', chr(102) => chr(130) . 'F', chr(103) => chr(130) . 'G', + chr(104) => chr(130) . 'H', chr(105) => chr(130) . 'I', chr(106) => chr(130) . 'J', chr(107) => chr(130) . 'K', + chr(108) => chr(130) . 'L', chr(109) => chr(130) . 'M', chr(110) => chr(130) . 'N', chr(111) => chr(130) . 'O', + chr(112) => chr(130) . 'P', chr(113) => chr(130) . 'Q', chr(114) => chr(130) . 'R', chr(115) => chr(130) . 'S', + chr(116) => chr(130) . 'T', chr(117) => chr(130) . 'U', chr(118) => chr(130) . 'V', chr(119) => chr(130) . 'W', + chr(120) => chr(130) . 'X', chr(121) => chr(130) . 'Y', chr(122) => chr(130) . 'Z', chr(123) => chr(131) . 'P', + chr(124) => chr(131) . 'Q', chr(125) => chr(131) . 'R', chr(126) => chr(131) . 'S', chr(127) => chr(131) . 'T' + ]; + + $code_ext = ''; + $clen = strlen($code); + + for ($i = 0; $i < $clen; ++$i) { + if (ord($code[$i]) > 127) { + throw new \Mpdf\Barcode\BarcodeException(sprintf('Invalid character "%s" in Code93 barcode value', $code[$i])); + } + $code_ext .= $encode[$code[$i]]; + } + + // checksum + $code_ext .= $this->checksum($code_ext); + + // add start and stop codes + $code = '*' . $code_ext . '*'; + $bararray = ['code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => []]; + $k = 0; + $clen = strlen($code); + + for ($i = 0; $i < $clen; ++$i) { + $char = ord($code[$i]); + if (!isset($chr[$char])) { + // invalid character + throw new \Mpdf\Barcode\BarcodeException('Invalid CODE93 barcode value'); + } + for ($j = 0; $j < 6; ++$j) { + if (($j % 2) == 0) { + $t = true; // bar + } else { + $t = false; // space + } + $w = $chr[$char][$j]; + $bararray['bcode'][$k] = ['t' => $t, 'w' => $w, 'h' => 1, 'p' => 0]; + $bararray['maxw'] += $w; + ++$k; + } + } + + $bararray['bcode'][$k] = ['t' => true, 'w' => 1, 'h' => 1, 'p' => 0]; + $bararray['maxw'] += 1; + + $this->data = $bararray; + } + + /** + * Calculate CODE 93 checksum (modulo 47). + * + * @param string $code + * @return string + */ + protected function checksum($code) + { + $chars = [ + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', + 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', + 'W', 'X', 'Y', 'Z', '-', '.', ' ', '$', '/', '+', '%', + '<', '=', '>', '?' + ]; + + // translate special characters + $code = strtr($code, chr(128) . chr(131) . chr(129) . chr(130), '<=>?'); + $len = strlen($code); + + // calculate check digit C + $p = 1; + $check = 0; + for ($i = ($len - 1); $i >= 0; --$i) { + $k = array_keys($chars, $code[$i]); + $check += ($k[0] * $p); + ++$p; + if ($p > 20) { + $p = 1; + } + } + $check %= 47; + $c = $chars[$check]; + $code .= $c; + + // calculate check digit K + $p = 1; + $check = 0; + for ($i = $len; $i >= 0; --$i) { + $k = array_keys($chars, $code[$i]); + $check += ($k[0] * $p); + ++$p; + if ($p > 15) { + $p = 1; + } + } + $check %= 47; + $k = $chars[$check]; + $checksum = $c . $k; + + // resto respecial characters + $checksum = strtr($checksum, '<=>?', chr(128) . chr(131) . chr(129) . chr(130)); + + return $checksum; + } + + /** + * @inheritdoc + */ + public function getType() + { + return 'CODE93'; + } + +} diff --git a/Mpdf/Barcode/EanExt.php b/Mpdf/Barcode/EanExt.php new file mode 100644 index 0000000..21044a7 --- /dev/null +++ b/Mpdf/Barcode/EanExt.php @@ -0,0 +1,114 @@ +init($code, $length); + + $this->data['lightmL'] = $leftMargin; // LEFT light margin = x X-dim (http://www.gs1uk.org) + $this->data['lightmR'] = $rightMargin; // RIGHT light margin = x X-dim (http://www.gs1uk.org) + $this->data['nom-X'] = $xDim; // Nominal value for X-dim in mm (http://www.gs1uk.org) + $this->data['nom-H'] = $barHeight; // Nominal bar height in mm incl. numerals (http://www.gs1uk.org) + $this->data['sepM'] = $separatorMargin; // SEPARATION margin = x X-dim (http://web.archive.org/web/19990501035133/http://www.uc-council.org/d36-d.htm) + } + + /** + * @param string $code + * @param int $length + */ + private function init($code, $length = 5) + { + // Padding + $code = str_pad($code, $length, '0', STR_PAD_LEFT); + + // Calculate check digit + if ($length == 2) { + $r = $code % 4; + } elseif ($length == 5) { + $r = (3 * ($code[0] + $code[2] + $code[4])) + (9 * ($code[1] + $code[3])); + $r %= 10; + } else { + throw new \Mpdf\Barcode\BarcodeException('Invalid EAN barcode value'); + } + + // Convert digits to bars + $codes = [ + 'A' => [ // left odd parity + '0' => '0001101', + '1' => '0011001', + '2' => '0010011', + '3' => '0111101', + '4' => '0100011', + '5' => '0110001', + '6' => '0101111', + '7' => '0111011', + '8' => '0110111', + '9' => '0001011'], + 'B' => [ // left even parity + '0' => '0100111', + '1' => '0110011', + '2' => '0011011', + '3' => '0100001', + '4' => '0011101', + '5' => '0111001', + '6' => '0000101', + '7' => '0010001', + '8' => '0001001', + '9' => '0010111'] + ]; + $parities = []; + $parities[2] = [ + '0' => ['A', 'A'], + '1' => ['A', 'B'], + '2' => ['B', 'A'], + '3' => ['B', 'B'] + ]; + $parities[5] = [ + '0' => ['B', 'B', 'A', 'A', 'A'], + '1' => ['B', 'A', 'B', 'A', 'A'], + '2' => ['B', 'A', 'A', 'B', 'A'], + '3' => ['B', 'A', 'A', 'A', 'B'], + '4' => ['A', 'B', 'B', 'A', 'A'], + '5' => ['A', 'A', 'B', 'B', 'A'], + '6' => ['A', 'A', 'A', 'B', 'B'], + '7' => ['A', 'B', 'A', 'B', 'A'], + '8' => ['A', 'B', 'A', 'A', 'B'], + '9' => ['A', 'A', 'B', 'A', 'B'] + ]; + $p = $parities[$length][$r]; + $seq = '1011'; // left guard bar + $seq .= $codes[$p[0]][$code[0]]; + for ($i = 1; $i < $length; ++$i) { + $seq .= '01'; // separator + $seq .= $codes[$p[$i]][$code[$i]]; + } + + $bararray = ['code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => []]; + + $this->data = $this->binseqToArray($seq, $bararray); + } + + public function getType() + { + return 'EAN EXT'; + } + +} diff --git a/Mpdf/Barcode/EanUpc.php b/Mpdf/Barcode/EanUpc.php new file mode 100644 index 0000000..d4eab70 --- /dev/null +++ b/Mpdf/Barcode/EanUpc.php @@ -0,0 +1,270 @@ +init($code, $length); + + $this->data['lightmL'] = $leftMargin; // LEFT light margin = x X-dim (http://www.gs1uk.org) + $this->data['lightmR'] = $rightMargin; // RIGHT light margin = x X-dim (http://www.gs1uk.org) + $this->data['nom-X'] = $xDim; // Nominal value for X-dim in mm (http://www.gs1uk.org) + $this->data['nom-H'] = $barHeight; // Nominal bar height in mm incl. numerals (http://www.gs1uk.org) + } + + /** + * @param string $code + * @param int $length + */ + private function init($code, $length) + { + if (preg_match('/[\D]+/', $code)) { + throw new \Mpdf\Barcode\BarcodeException('Invalid EAN UPC barcode value'); + } + + $upce = false; + $checkdigit = false; + + if ($length == 6) { + $length = 12; // UPC-A + $upce = true; // UPC-E mode + } + $dataLength = $length - 1; + + // Padding + $code = str_pad($code, $dataLength, '0', STR_PAD_LEFT); + $codeLength = strlen($code); + + // Calculate check digit + $sum_a = 0; + for ($i = 1; $i < $dataLength; $i += 2) { + $sum_a += $code[$i]; + } + + if ($length > 12) { + $sum_a *= 3; + } + $sum_b = 0; + for ($i = 0; $i < $dataLength; $i += 2) { + $sum_b += ($code[$i]); + } + + if ($length < 13) { + $sum_b *= 3; + } + + $r = ($sum_a + $sum_b) % 10; + if ($r > 0) { + $r = (10 - $r); + } + + if ($codeLength == $dataLength) { + // Add check digit + $code .= $r; + $checkdigit = $r; + } elseif ($r !== (int) $code[$dataLength]) { + // Wrong checkdigit + throw new \Mpdf\Barcode\BarcodeException('Invalid EAN UPC barcode value'); + } + + if ($length == 12) { + // UPC-A + $code = '0' . $code; + ++$length; + } + + if ($upce) { + // Convert UPC-A to UPC-E + $tmp = substr($code, 4, 3); + $prodCode = (int) substr($code, 7, 5); // product code + $invalidUpce = false; + if (($tmp == '000') or ($tmp == '100') or ($tmp == '200')) { + // Manufacturer code ends in 000, 100, or 200 + $upceCode = substr($code, 2, 2) . substr($code, 9, 3) . substr($code, 4, 1); + if ($prodCode > 999) { + $invalidUpce = true; + } + } else { + $tmp = substr($code, 5, 2); + if ($tmp == '00') { + // Manufacturer code ends in 00 + $upceCode = substr($code, 2, 3) . substr($code, 10, 2) . '3'; + if ($prodCode > 99) { + $invalidUpce = true; + } + } else { + $tmp = substr($code, 6, 1); + if ($tmp == '0') { + // Manufacturer code ends in 0 + $upceCode = substr($code, 2, 4) . substr($code, 11, 1) . '4'; + if ($prodCode > 9) { + $invalidUpce = true; + } + } else { + // Manufacturer code does not end in zero + $upceCode = substr($code, 2, 5) . substr($code, 11, 1); + if ($prodCode > 9) { + $invalidUpce = true; + } + } + } + } + if ($invalidUpce) { + throw new \Mpdf\Barcode\BarcodeException('UPC-A cannot produce a valid UPC-E barcode'); + } + } + + // Convert digits to bars + $codes = [ + 'A' => [// left odd parity + '0' => '0001101', + '1' => '0011001', + '2' => '0010011', + '3' => '0111101', + '4' => '0100011', + '5' => '0110001', + '6' => '0101111', + '7' => '0111011', + '8' => '0110111', + '9' => '0001011'], + 'B' => [// left even parity + '0' => '0100111', + '1' => '0110011', + '2' => '0011011', + '3' => '0100001', + '4' => '0011101', + '5' => '0111001', + '6' => '0000101', + '7' => '0010001', + '8' => '0001001', + '9' => '0010111'], + 'C' => [// right + '0' => '1110010', + '1' => '1100110', + '2' => '1101100', + '3' => '1000010', + '4' => '1011100', + '5' => '1001110', + '6' => '1010000', + '7' => '1000100', + '8' => '1001000', + '9' => '1110100'] + ]; + + $parities = [ + '0' => ['A', 'A', 'A', 'A', 'A', 'A'], + '1' => ['A', 'A', 'B', 'A', 'B', 'B'], + '2' => ['A', 'A', 'B', 'B', 'A', 'B'], + '3' => ['A', 'A', 'B', 'B', 'B', 'A'], + '4' => ['A', 'B', 'A', 'A', 'B', 'B'], + '5' => ['A', 'B', 'B', 'A', 'A', 'B'], + '6' => ['A', 'B', 'B', 'B', 'A', 'A'], + '7' => ['A', 'B', 'A', 'B', 'A', 'B'], + '8' => ['A', 'B', 'A', 'B', 'B', 'A'], + '9' => ['A', 'B', 'B', 'A', 'B', 'A'] + ]; + + $upceParities = []; + $upceParities[0] = [ + '0' => ['B', 'B', 'B', 'A', 'A', 'A'], + '1' => ['B', 'B', 'A', 'B', 'A', 'A'], + '2' => ['B', 'B', 'A', 'A', 'B', 'A'], + '3' => ['B', 'B', 'A', 'A', 'A', 'B'], + '4' => ['B', 'A', 'B', 'B', 'A', 'A'], + '5' => ['B', 'A', 'A', 'B', 'B', 'A'], + '6' => ['B', 'A', 'A', 'A', 'B', 'B'], + '7' => ['B', 'A', 'B', 'A', 'B', 'A'], + '8' => ['B', 'A', 'B', 'A', 'A', 'B'], + '9' => ['B', 'A', 'A', 'B', 'A', 'B'] + ]; + + $upceParities[1] = [ + '0' => ['A', 'A', 'A', 'B', 'B', 'B'], + '1' => ['A', 'A', 'B', 'A', 'B', 'B'], + '2' => ['A', 'A', 'B', 'B', 'A', 'B'], + '3' => ['A', 'A', 'B', 'B', 'B', 'A'], + '4' => ['A', 'B', 'A', 'A', 'B', 'B'], + '5' => ['A', 'B', 'B', 'A', 'A', 'B'], + '6' => ['A', 'B', 'B', 'B', 'A', 'A'], + '7' => ['A', 'B', 'A', 'B', 'A', 'B'], + '8' => ['A', 'B', 'A', 'B', 'B', 'A'], + '9' => ['A', 'B', 'B', 'A', 'B', 'A'] + ]; + + $k = 0; + $seq = '101'; // left guard bar + + if ($upce && isset($upceCode)) { + $bararray = ['code' => $upceCode, 'maxw' => 0, 'maxh' => 1, 'bcode' => []]; + $p = $upceParities[$code[1]][$r]; + for ($i = 0; $i < 6; ++$i) { + $seq .= $codes[$p[$i]][$upceCode[$i]]; + } + $seq .= '010101'; // right guard bar + } else { + $bararray = ['code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => []]; + $halfLen = ceil($length / 2); + if ($length == 8) { + for ($i = 0; $i < $halfLen; ++$i) { + $seq .= $codes['A'][$code[$i]]; + } + } else { + $p = $parities[$code[0]]; + for ($i = 1; $i < $halfLen; ++$i) { + $seq .= $codes[$p[$i - 1]][$code[$i]]; + } + } + $seq .= '01010'; // center guard bar + for ($i = $halfLen; $i < $length; ++$i) { + $seq .= $codes['C'][$code[(int) $i]]; + } + $seq .= '101'; // right guard bar + } + + $clen = strlen($seq); + $w = 0; + for ($i = 0; $i < $clen; ++$i) { + $w += 1; + if (($i == ($clen - 1)) or (($i < ($clen - 1)) and ($seq[$i] != $seq[($i + 1)]))) { + if ($seq[$i] == '1') { + $t = true; // bar + } else { + $t = false; // space + } + $bararray['bcode'][$k] = ['t' => $t, 'w' => $w, 'h' => 1, 'p' => 0]; + $bararray['maxw'] += $w; + ++$k; + $w = 0; + } + } + $bararray['checkdigit'] = $checkdigit; + + $this->data = $bararray; + } + + /** + * @inheritdoc + */ + public function getType() + { + return 'EANUPC'; + } + +} diff --git a/Mpdf/Barcode/I25.php b/Mpdf/Barcode/I25.php new file mode 100644 index 0000000..d18db74 --- /dev/null +++ b/Mpdf/Barcode/I25.php @@ -0,0 +1,137 @@ +init($code, $printRatio, $checksum); + + $this->data['nom-X'] = 0.381; // Nominal value for X-dim (bar width) in mm (2 X min. spec.) + $this->data['nom-H'] = 10; // Nominal value for Height of Full bar in mm (non-spec.) + $this->data['lightmL'] = 10; // LEFT light margin = x X-dim (spec.) + $this->data['lightmR'] = 10; // RIGHT light margin = x X-dim (spec.) + $this->data['lightTB'] = $topBottomMargin; // TOP/BOTTOM light margin = x X-dim (non-spec.) + } + + /** + * @param string $code + * @param float $printRatio + * @param bool $checksum + */ + private function init($code, $printRatio, $checksum) + { + $chr = [ + '0' => '11221', + '1' => '21112', + '2' => '12112', + '3' => '22111', + '4' => '11212', + '5' => '21211', + '6' => '12211', + '7' => '11122', + '8' => '21121', + '9' => '12121', + 'A' => '11', + 'Z' => '21', + ]; + + $checkdigit = ''; + if ($checksum) { + // add checksum + $checkdigit = $this->checksum($code); + $code .= $checkdigit; + } + if ((strlen($code) % 2) != 0) { + // add leading zero if code-length is odd + $code = '0' . $code; + } + // add start and stop codes + $code = 'AA' . strtolower($code) . 'ZA'; + + $bararray = ['code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => []]; + $k = 0; + $clen = strlen($code); + for ($i = 0; $i < $clen; $i = ($i + 2)) { + $charBar = $code[$i]; + $charSpace = $code[$i + 1]; + if ((!isset($chr[$charBar])) or (!isset($chr[$charSpace]))) { + // invalid character + throw new \Mpdf\Barcode\BarcodeException('Invalid I25 barcode value'); + } + // create a bar-space sequence + $seq = ''; + $chrlen = strlen($chr[$charBar]); + for ($s = 0; $s < $chrlen; $s++) { + $seq .= $chr[$charBar][$s] . $chr[$charSpace][$s]; + } + $seqlen = strlen($seq); + for ($j = 0; $j < $seqlen; ++$j) { + if (($j % 2) == 0) { + $t = true; // bar + } else { + $t = false; // space + } + $x = $seq[$j]; + if ($x == 2) { + $w = $printRatio; + } else { + $w = 1; + } + + $bararray['bcode'][$k] = ['t' => $t, 'w' => $w, 'h' => 1, 'p' => 0]; + $bararray['maxw'] += $w; + ++$k; + } + } + $bararray['checkdigit'] = $checkdigit; + + $this->data = $bararray; + } + + /** + * Checksum for standard 2 of 5 barcodes. + * + * @param string $code + * @return int + */ + private function checksum($code) + { + $len = strlen($code); + $sum = 0; + for ($i = 0; $i < $len; $i += 2) { + $sum += $code[$i]; + } + $sum *= 3; + for ($i = 1; $i < $len; $i += 2) { + $sum += ($code[$i]); + } + $r = $sum % 10; + if ($r > 0) { + $r = (10 - $r); + } + return $r; + } + + /** + * @inheritdoc + */ + public function getType() + { + return 'I25'; + } + +} diff --git a/Mpdf/Barcode/Imb.php b/Mpdf/Barcode/Imb.php new file mode 100644 index 0000000..0743595 --- /dev/null +++ b/Mpdf/Barcode/Imb.php @@ -0,0 +1,366 @@ +init($code, $gapWidth, $daft); + + $this->data['nom-X'] = $xDim; + $this->data['nom-H'] = 3.68; // Nominal value for Height of Full bar in mm (spec.) + + // USPS-B-3200 Revision C = 4.623 + // USPS-B-3200 Revision E = 3.68 + $this->data['quietL'] = 3.175; // LEFT Quiet margin = mm (spec.) + $this->data['quietR'] = 3.175; // RIGHT Quiet margin = mm (spec.) + $this->data['quietTB'] = 0.711; // TOP/BOTTOM Quiet margin = mm (spec.) + } + + /** + * @param string $code + * @param float $gapWidth + * @param int[] $daft + */ + private function init($code, $gapWidth, $daft) + { + $asc_chr = [ + 4, 0, 2, 6, 3, 5, 1, 9, 8, 7, 1, 2, 0, 6, 4, 8, 2, 9, 5, 3, 0, 1, 3, 7, 4, 6, 8, 9, 2, 0, 5, 1, 9, 4, + 3, 8, 6, 7, 1, 2, 4, 3, 9, 5, 7, 8, 3, 0, 2, 1, 4, 0, 9, 1, 7, 0, 2, 4, 6, 3, 7, 1, 9, 5, 8 + ]; + + $dsc_chr = [ + 7, 1, 9, 5, 8, 0, 2, 4, 6, 3, 5, 8, 9, 7, 3, 0, 6, 1, 7, 4, 6, 8, 9, 2, 5, 1, 7, 5, 4, 3, 8, 7, 6, 0, 2, + 5, 4, 9, 3, 0, 1, 6, 8, 2, 0, 4, 5, 9, 6, 7, 5, 2, 6, 3, 8, 5, 1, 9, 8, 7, 4, 0, 2, 6, 3 + ]; + + $asc_pos = [ + 3, 0, 8, 11, 1, 12, 8, 11, 10, 6, 4, 12, 2, 7, 9, 6, 7, 9, 2, 8, 4, 0, 12, 7, 10, 9, 0, 7, 10, 5, 7, 9, 6, + 8, 2, 12, 1, 4, 2, 0, 1, 5, 4, 6, 12, 1, 0, 9, 4, 7, 5, 10, 2, 6, 9, 11, 2, 12, 6, 7, 5, 11, 0, 3, 2 + ]; + + $dsc_pos = [ + 2, 10, 12, 5, 9, 1, 5, 4, 3, 9, 11, 5, 10, 1, 6, 3, 4, 1, 10, 0, 2, 11, 8, 6, 1, 12, 3, 8, 6, 4, 4, 11, 0, + 6, 1, 9, 11, 5, 3, 7, 3, 10, 7, 11, 8, 2, 10, 3, 5, 8, 0, 3, 12, 11, 8, 4, 5, 1, 3, 0, 7, 12, 9, 8, 10 + ]; + + $codeArray = explode('-', $code); + $trackingNumber = $codeArray[0]; + + $routingCode = ''; + if (isset($codeArray[1])) { + $routingCode = $codeArray[1]; + } + + // Conversion of Routing Code + switch (strlen($routingCode)) { + case 0: + $binaryCode = 0; + break; + case 5: + $binaryCode = bcadd($routingCode, '1'); + break; + case 9: + $binaryCode = bcadd($routingCode, '100001'); + break; + case 11: + $binaryCode = bcadd($routingCode, '1000100001'); + break; + default: + throw new \Mpdf\Barcode\BarcodeException(sprintf('Invalid MSI routing code "%s"', $routingCode)); + } + + $binaryCode = bcmul($binaryCode, 10); + $binaryCode = bcadd($binaryCode, $trackingNumber[0]); + $binaryCode = bcmul($binaryCode, 5); + $binaryCode = bcadd($binaryCode, $trackingNumber[1]); + + $binaryCode .= substr($trackingNumber, 2, 18); + + // convert to hexadecimal + $binaryCode = $this->decToHex($binaryCode); + + // pad to get 13 bytes + $binaryCode = str_pad($binaryCode, 26, '0', STR_PAD_LEFT); + + // convert string to array of bytes + $binaryCodeArray = chunk_split($binaryCode, 2, "\r"); + $binaryCodeArray = substr($binaryCodeArray, 0, -1); + $binaryCodeArray = explode("\r", $binaryCodeArray); + + // calculate frame check sequence + $fcs = $this->imbCrc11Fcs($binaryCodeArray); + + // exclude first 2 bits from first byte + $first_byte = sprintf('%2s', dechex((hexdec($binaryCodeArray[0]) << 2) >> 2)); + $binaryCode102bit = $first_byte . substr($binaryCode, 2); + + // convert binary data to codewords + $codewords = []; + $data = $this->hexToDec($binaryCode102bit); + $codewords[0] = bcmod($data, 636) * 2; + $data = bcdiv($data, 636); + + for ($i = 1; $i < 9; ++$i) { + $codewords[$i] = bcmod($data, 1365); + $data = bcdiv($data, 1365); + } + + $codewords[9] = $data; + if (($fcs >> 10) == 1) { + $codewords[9] += 659; + } + + // generate lookup tables + $table2of13 = $this->imbTables(2, 78); + $table5of13 = $this->imbTables(5, 1287); + + // convert codewords to characters + $characters = []; + $bitmask = 512; + + foreach ($codewords as $k => $val) { + if ($val <= 1286) { + $chrcode = $table5of13[$val]; + } else { + $chrcode = $table2of13[($val - 1287)]; + } + if (($fcs & $bitmask) > 0) { + // bitwise invert + $chrcode = ((~$chrcode) & 8191); + } + $characters[] = $chrcode; + $bitmask /= 2; + } + + $characters = array_reverse($characters); + + // build bars + $k = 0; + $bararray = ['code' => $code, 'maxw' => 0, 'maxh' => $daft['F'], 'bcode' => []]; + for ($i = 0; $i < 65; ++$i) { + $asc = (($characters[$asc_chr[$i]] & pow(2, $asc_pos[$i])) > 0); + $dsc = (($characters[$dsc_chr[$i]] & pow(2, $dsc_pos[$i])) > 0); + if ($asc and $dsc) { + // full bar (F) + $p = 0; + $h = $daft['F']; + } elseif ($asc) { + // ascender (A) + $p = 0; + $h = $daft['A']; + } elseif ($dsc) { + // descender (D) + $p = $daft['F'] - $daft['D']; + $h = $daft['D']; + } else { + // tracker (T) + $p = ($daft['F'] - $daft['T']) / 2; + $h = $daft['T']; + } + $bararray['bcode'][$k++] = ['t' => 1, 'w' => 1, 'h' => $h, 'p' => $p]; + // Gap + $bararray['bcode'][$k++] = ['t' => 0, 'w' => $gapWidth, 'h' => 1, 'p' => 0]; + $bararray['maxw'] += (1 + $gapWidth); + } + + unset($bararray['bcode'][($k - 1)]); + $bararray['maxw'] -= $gapWidth; + + $this->data = $bararray; + } + + /** + * Intelligent Mail Barcode calculation of Frame Check Sequence + * + * @param string[] $codeArray + * @return int + */ + private function imbCrc11Fcs($codeArray) + { + $genpoly = 0x0F35; // generator polynomial + $fcs = 0x07FF; // Frame Check Sequence + + // do most significant byte skipping the 2 most significant bits + $data = hexdec($codeArray[0]) << 5; + for ($bit = 2; $bit < 8; ++$bit) { + if (($fcs ^ $data) & 0x400) { + $fcs = ($fcs << 1) ^ $genpoly; + } else { + $fcs = ($fcs << 1); + } + $fcs &= 0x7FF; + $data <<= 1; + } + // do rest of bytes + for ($byte = 1; $byte < 13; ++$byte) { + $data = hexdec($codeArray[$byte]) << 3; + for ($bit = 0; $bit < 8; ++$bit) { + if (($fcs ^ $data) & 0x400) { + $fcs = ($fcs << 1) ^ $genpoly; + } else { + $fcs = ($fcs << 1); + } + $fcs &= 0x7FF; + $data <<= 1; + } + } + return $fcs; + } + + /** + * Reverse unsigned short value + * + * @param int $num + * @return int + */ + private function imbReverseUs($num) + { + $rev = 0; + for ($i = 0; $i < 16; ++$i) { + $rev <<= 1; + $rev |= ($num & 1); + $num >>= 1; + } + return $rev; + } + + /** + * Generate Nof13 tables used for Intelligent Mail Barcode + * + * @param int $n + * @param int $size + * + * @return mixed[] + */ + private function imbTables($n, $size) + { + $table = []; + $lli = 0; // LUT lower index + $lui = $size - 1; // LUT upper index + for ($count = 0; $count < 8192; ++$count) { + + $bitCount = 0; + for ($bit_index = 0; $bit_index < 13; ++$bit_index) { + $bitCount += (int) (($count & (1 << $bit_index)) != 0); + } + + // if we don't have the right number of bits on, go on to the next value + if ($bitCount == $n) { + $reverse = ($this->imbReverseUs($count) >> 3); + // if the reverse is less than count, we have already visited this pair before + if ($reverse >= $count) { + // If count is symmetric, place it at the first free slot from the end of the list. + // Otherwise, place it at the first free slot from the beginning of the list AND place $reverse ath the next free slot from the beginning of the list + if ($reverse == $count) { + $table[$lui] = $count; + --$lui; + } else { + $table[$lli] = $count; + ++$lli; + $table[$lli] = $reverse; + ++$lli; + } + } + } + } + + return $table; + } + + /** + * Convert large integer number to hexadecimal representation. + * + * @param int $number + * @return string + */ + private function decToHex($number) + { + $hex = []; + + if ($number == 0) { + return '00'; + } + + while ($number > 0) { + if ($number == 0) { + array_push($hex, '0'); + } else { + array_push($hex, strtoupper(dechex(bcmod($number, '16')))); + $number = bcdiv($number, '16', 0); + } + } + + $hex = array_reverse($hex); + return implode($hex); + } + + /** + * Convert large hexadecimal number to decimal representation (string). + * (requires PHP bcmath extension) + * + * @param string $hex + * @return int + */ + private function hexToDec($hex) + { + $dec = 0; + $bitval = 1; + $len = strlen($hex); + for ($pos = ($len - 1); $pos >= 0; --$pos) { + $dec = bcadd($dec, bcmul(hexdec($hex[$pos]), $bitval)); + $bitval = bcmul($bitval, 16); + } + return $dec; + } + + /** + * @inheritdoc + */ + public function getType() + { + return 'IMB'; + } + +} diff --git a/Mpdf/Barcode/Msi.php b/Mpdf/Barcode/Msi.php new file mode 100644 index 0000000..26b57ff --- /dev/null +++ b/Mpdf/Barcode/Msi.php @@ -0,0 +1,98 @@ +init($code, $checksum); + + $this->data['nom-X'] = 0.381; // Nominal value for X-dim (bar width) in mm (2 X min. spec.) + $this->data['nom-H'] = 10; // Nominal value for Height of Full bar in mm (non-spec.) + $this->data['lightmL'] = 12; // LEFT light margin = x X-dim (spec.) + $this->data['lightmR'] = 12; // RIGHT light margin = x X-dim (spec.) + $this->data['lightTB'] = 0; // TOP/BOTTOM light margin = x X-dim (non-spec.) + } + + /** + * @param int $code + * @param bool $checksum + */ + private function init($code, $checksum) + { + $chr = [ + '0' => '100100100100', + '1' => '100100100110', + '2' => '100100110100', + '3' => '100100110110', + '4' => '100110100100', + '5' => '100110100110', + '6' => '100110110100', + '7' => '100110110110', + '8' => '110100100100', + '9' => '110100100110', + 'A' => '110100110100', + 'B' => '110100110110', + 'C' => '110110100100', + 'D' => '110110100110', + 'E' => '110110110100', + 'F' => '110110110110', + ]; + + $checkdigit = ''; + + if ($checksum) { + // add checksum + $clen = strlen($code); + $p = 2; + $check = 0; + for ($i = ($clen - 1); $i >= 0; --$i) { + $check += (hexdec($code[$i]) * $p); + ++$p; + if ($p > 7) { + $p = 2; + } + } + $check %= 11; + if ($check > 0) { + $check = 11 - $check; + } + $code .= $check; + $checkdigit = $check; + } + $seq = '110'; // left guard + $clen = strlen($code); + for ($i = 0; $i < $clen; ++$i) { + $digit = $code[$i]; + if (!isset($chr[$digit])) { + // invalid character + throw new \Mpdf\Barcode\BarcodeException(sprintf('Invalid character "%s" in MSI barcode value', $digit)); + } + $seq .= $chr[$digit]; + } + $seq .= '1001'; // right guard + $bararray = ['code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => []]; + $bararray['checkdigit'] = $checkdigit; + + $this->data = $this->binseqToArray($seq, $bararray); + } + + /** + * @inheritdoc + */ + public function getType() + { + return 'MSI'; + } + +} diff --git a/Mpdf/Barcode/Postnet.php b/Mpdf/Barcode/Postnet.php new file mode 100644 index 0000000..ff7fa0d --- /dev/null +++ b/Mpdf/Barcode/Postnet.php @@ -0,0 +1,124 @@ +init($code, $gapWidth, $planet); + + $this->data['nom-X'] = $xDim; + $this->data['nom-H'] = 3.175; // Nominal value for Height of Full bar in mm (spec.) + $this->data['quietL'] = 3.175; // LEFT Quiet margin = mm (?spec.) + $this->data['quietR'] = 3.175; // RIGHT Quiet margin = mm (?spec.) + $this->data['quietTB'] = 1.016; // TOP/BOTTOM Quiet margin = mm (?spec.) + } + + /** + * @param string $code + * @param float $gapWidth + * @param bool $planet + */ + private function init($code, $gapWidth, $planet) + { + // bar lenght + if ($planet) { + $barlen = [ + 0 => [1, 1, 2, 2, 2], + 1 => [2, 2, 2, 1, 1], + 2 => [2, 2, 1, 2, 1], + 3 => [2, 2, 1, 1, 2], + 4 => [2, 1, 2, 2, 1], + 5 => [2, 1, 2, 1, 2], + 6 => [2, 1, 1, 2, 2], + 7 => [1, 2, 2, 2, 1], + 8 => [1, 2, 2, 1, 2], + 9 => [1, 2, 1, 2, 2] + ]; + } else { + $barlen = [ + 0 => [2, 2, 1, 1, 1], + 1 => [1, 1, 1, 2, 2], + 2 => [1, 1, 2, 1, 2], + 3 => [1, 1, 2, 2, 1], + 4 => [1, 2, 1, 1, 2], + 5 => [1, 2, 1, 2, 1], + 6 => [1, 2, 2, 1, 1], + 7 => [2, 1, 1, 1, 2], + 8 => [2, 1, 1, 2, 1], + 9 => [2, 1, 2, 1, 1] + ]; + } + + $bararray = ['code' => $code, 'maxw' => 0, 'maxh' => 5, 'bcode' => []]; + + $k = 0; + $code = str_replace('-', '', $code); + $code = str_replace(' ', '', $code); + $len = strlen($code); + + // calculate checksum + $sum = 0; + for ($i = 0; $i < $len; ++$i) { + $sum += (int) $code[$i]; + } + + $chkd = ($sum % 10); + if ($chkd > 0) { + $chkd = (10 - $chkd); + } + + $code .= $chkd; + $checkdigit = $chkd; + $len = strlen($code); + + // start bar + $bararray['bcode'][$k++] = ['t' => 1, 'w' => 1, 'h' => 5, 'p' => 0]; + $bararray['bcode'][$k++] = ['t' => 0, 'w' => $gapWidth, 'h' => 5, 'p' => 0]; + $bararray['maxw'] += (1 + $gapWidth); + + for ($i = 0; $i < $len; ++$i) { + for ($j = 0; $j < 5; ++$j) { + $bh = $barlen[$code[$i]][$j]; + if ($bh == 2) { + $h = 5; + $p = 0; + } else { + $h = 2; + $p = 3; + } + $bararray['bcode'][$k++] = ['t' => 1, 'w' => 1, 'h' => $h, 'p' => $p]; + $bararray['bcode'][$k++] = ['t' => 0, 'w' => $gapWidth, 'h' => 2, 'p' => 0]; + $bararray['maxw'] += (1 + $gapWidth); + } + } + + // end bar + $bararray['bcode'][$k++] = ['t' => 1, 'w' => 1, 'h' => 5, 'p' => 0]; + $bararray['maxw'] += 1; + $bararray['checkdigit'] = $checkdigit; + + $this->data = $bararray; + } + + /** + * @inheritdoc + */ + public function getType() + { + return 'POSTNET'; + } + +} diff --git a/Mpdf/Barcode/Rm4Scc.php b/Mpdf/Barcode/Rm4Scc.php new file mode 100644 index 0000000..b676fdc --- /dev/null +++ b/Mpdf/Barcode/Rm4Scc.php @@ -0,0 +1,199 @@ +init($code, $gapWidth, $daft, $kix); + + $this->data['nom-X'] = $xDim; + $this->data['nom-H'] = 5.0; // Nominal value for Height of Full bar in mm (spec.) + $this->data['quietL'] = 2; // LEFT Quiet margin = mm (spec.) + $this->data['quietR'] = 2; // RIGHT Quiet margin = mm (spec.) + $this->data['quietTB'] = 2; // TOP/BOTTOM Quiet margin = mm (spec?) + } + + /** + * @param string $code + * @param float $gapWidth + * @param int[] $daft + * @param bool $kix + */ + private function init($code, $gapWidth, $daft, $kix) + { + $notkix = !$kix; + + // bar mode + // 1 = pos 1, length 2 + // 2 = pos 1, length 3 + // 3 = pos 2, length 1 + // 4 = pos 2, length 2 + + $barmode = [ + '0' => [3, 3, 2, 2], + '1' => [3, 4, 1, 2], + '2' => [3, 4, 2, 1], + '3' => [4, 3, 1, 2], + '4' => [4, 3, 2, 1], + '5' => [4, 4, 1, 1], + '6' => [3, 1, 4, 2], + '7' => [3, 2, 3, 2], + '8' => [3, 2, 4, 1], + '9' => [4, 1, 3, 2], + 'A' => [4, 1, 4, 1], + 'B' => [4, 2, 3, 1], + 'C' => [3, 1, 2, 4], + 'D' => [3, 2, 1, 4], + 'E' => [3, 2, 2, 3], + 'F' => [4, 1, 1, 4], + 'G' => [4, 1, 2, 3], + 'H' => [4, 2, 1, 3], + 'I' => [1, 3, 4, 2], + 'J' => [1, 4, 3, 2], + 'K' => [1, 4, 4, 1], + 'L' => [2, 3, 3, 2], + 'M' => [2, 3, 4, 1], + 'N' => [2, 4, 3, 1], + 'O' => [1, 3, 2, 4], + 'P' => [1, 4, 1, 4], + 'Q' => [1, 4, 2, 3], + 'R' => [2, 3, 1, 4], + 'S' => [2, 3, 2, 3], + 'T' => [2, 4, 1, 3], + 'U' => [1, 1, 4, 4], + 'V' => [1, 2, 3, 4], + 'W' => [1, 2, 4, 3], + 'X' => [2, 1, 3, 4], + 'Y' => [2, 1, 4, 3], + 'Z' => [2, 2, 3, 3] + ]; + + $code = strtoupper($code); + $len = strlen($code); + + $bararray = ['code' => $code, 'maxw' => 0, 'maxh' => $daft['F'], 'bcode' => []]; + + if ($notkix) { + // table for checksum calculation (row,col) + $checktable = [ + '0' => [1, 1], + '1' => [1, 2], + '2' => [1, 3], + '3' => [1, 4], + '4' => [1, 5], + '5' => [1, 0], + '6' => [2, 1], + '7' => [2, 2], + '8' => [2, 3], + '9' => [2, 4], + 'A' => [2, 5], + 'B' => [2, 0], + 'C' => [3, 1], + 'D' => [3, 2], + 'E' => [3, 3], + 'F' => [3, 4], + 'G' => [3, 5], + 'H' => [3, 0], + 'I' => [4, 1], + 'J' => [4, 2], + 'K' => [4, 3], + 'L' => [4, 4], + 'M' => [4, 5], + 'N' => [4, 0], + 'O' => [5, 1], + 'P' => [5, 2], + 'Q' => [5, 3], + 'R' => [5, 4], + 'S' => [5, 5], + 'T' => [5, 0], + 'U' => [0, 1], + 'V' => [0, 2], + 'W' => [0, 3], + 'X' => [0, 4], + 'Y' => [0, 5], + 'Z' => [0, 0] + ]; + $row = 0; + $col = 0; + for ($i = 0; $i < $len; ++$i) { + $row += $checktable[$code[$i]][0]; + $col += $checktable[$code[$i]][1]; + } + $row %= 6; + $col %= 6; + $chk = array_keys($checktable, [$row, $col]); + $code .= $chk[0]; + $bararray['checkdigit'] = $chk[0]; + ++$len; + } + + $k = 0; + if ($notkix) { + // start bar + $bararray['bcode'][$k++] = ['t' => 1, 'w' => 1, 'h' => $daft['A'], 'p' => 0]; + $bararray['bcode'][$k++] = ['t' => 0, 'w' => $gapWidth, 'h' => $daft['A'], 'p' => 0]; + $bararray['maxw'] += (1 + $gapWidth); + } + + for ($i = 0; $i < $len; ++$i) { + + for ($j = 0; $j < 4; ++$j) { + + switch ($barmode[$code[$i]][$j]) { + case 1: + // ascender (A) + $p = 0; + $h = $daft['A']; + break; + case 2: + // full bar (F) + $p = 0; + $h = $daft['F']; + break; + case 3: + // tracker (T) + $p = ($daft['F'] - $daft['T']) / 2; + $h = $daft['T']; + break; + case 4: + // descender (D) + $p = $daft['F'] - $daft['D']; + $h = $daft['D']; + break; + } + + $bararray['bcode'][$k++] = ['t' => 1, 'w' => 1, 'h' => $h, 'p' => $p]; + $bararray['bcode'][$k++] = ['t' => 0, 'w' => $gapWidth, 'h' => 2, 'p' => 0]; + $bararray['maxw'] += (1 + $gapWidth); + + } + } + + if ($notkix) { + // stop bar + $bararray['bcode'][$k++] = ['t' => 1, 'w' => 1, 'h' => $daft['F'], 'p' => 0]; + $bararray['maxw'] += 1; + } + + $this->data = $bararray; + } + + /** + * @inheritdoc + */ + public function getType() + { + return 'RM4SCC'; + } + +} diff --git a/Mpdf/Barcode/S25.php b/Mpdf/Barcode/S25.php new file mode 100644 index 0000000..c238687 --- /dev/null +++ b/Mpdf/Barcode/S25.php @@ -0,0 +1,111 @@ +init($code, $checksum); + + $this->data['nom-X'] = 0.381; // Nominal value for X-dim (bar width) in mm (2 X min. spec.) + $this->data['nom-H'] = 10; // Nominal value for Height of Full bar in mm (non-spec.) + $this->data['lightmL'] = 10; // LEFT light margin = x X-dim (spec.) + $this->data['lightmR'] = 10; // RIGHT light margin = x X-dim (spec.) + $this->data['lightTB'] = 0; // TOP/BOTTOM light margin = x X-dim (non-spec.) + } + + /** + * @param string $code + * @param bool $checksum + */ + private function init($code, $checksum) + { + $chr = [ + '0' => '10101110111010', + '1' => '11101010101110', + '2' => '10111010101110', + '3' => '11101110101010', + '4' => '10101110101110', + '5' => '11101011101010', + '6' => '10111011101010', + '7' => '10101011101110', + '8' => '10101110111010', + '9' => '10111010111010', + ]; + + $checkdigit = ''; + + if ($checksum) { + // add checksum + $checkdigit = $this->checksum($code); + $code .= $checkdigit; + } + + if ((strlen($code) % 2) != 0) { + // add leading zero if code-length is odd + $code = '0' . $code; + } + + $seq = '11011010'; + $clen = strlen($code); + for ($i = 0; $i < $clen; ++$i) { + $digit = $code[$i]; + if (!isset($chr[$digit])) { + // invalid character + throw new \Mpdf\Barcode\BarcodeException(sprintf('Invalid character "%s" in S25 barcode value', $digit)); + } + $seq .= $chr[$digit]; + } + + $seq .= '1101011'; + $bararray = ['code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => []]; + $bararray['checkdigit'] = $checkdigit; + + $this->data = $this->binseqToArray($seq, $bararray); + } + + /** + * Checksum for standard 2 of 5 barcodes. + * + * @param string $code + * + * @return int + */ + private function checksum($code) + { + $len = strlen($code); + $sum = 0; + for ($i = 0; $i < $len; $i += 2) { + $sum += $code[$i]; + } + $sum *= 3; + for ($i = 1; $i < $len; $i += 2) { + $sum += ($code[$i]); + } + $r = $sum % 10; + if ($r > 0) { + $r = (10 - $r); + } + return $r; + } + + /** + * @inheritdoc + */ + public function getType() + { + return 'S25'; + } + +} diff --git a/mpdf/CREDITS.txt b/Mpdf/CREDITS.txt similarity index 97% rename from mpdf/CREDITS.txt rename to Mpdf/CREDITS.txt index 3fa5584..d633b6b 100644 --- a/mpdf/CREDITS.txt +++ b/Mpdf/CREDITS.txt @@ -21,9 +21,9 @@ CREDITS From HTML2FPDF: -Olivier Plathey for the fpdf.php class [http://www.fpdf.org] -Damon Kohler for the Flowing Block script [mailto:damonkohler@yahoo.com] --Clment Lavoillotte for HTML-oriented FPDF idea +-Clément Lavoillotte for HTML-oriented FPDF idea -Yamasoft for the gif.php class [http://www.yamasoft.com/] --Jrme Fenal for the _parsegif() function +-Jérôme Fenal for the _parsegif() function -"VIETCOM" for the PDFTable code [http://www.freepgs.com/vietcom/tool/pdftable/] [mailto:vncommando@yahoo.com] -Yukihiro O. for the SetDash() function [mailto:yukihiro_o@infoseek.jp] -Ron Korving for the WordWrap() function @@ -69,14 +69,14 @@ CREDITS From HTML2FPDF: * @link http://www.ar-php.org * @author Khaled Al-Shamaa * @desc Set of PHP5 / UTF-8 Classes developed to enhance Arabic web - * applications by providing set of tools includes stem-based searching, + * applications by providing set of tools includes stem-based searching, * translitiration, soundex, Hijri calendar, charset detection and - * converter, spell numbers, keyboard language, Muslim prayer time, + * converter, spell numbers, keyboard language, Muslim prayer time, * auto-summarization, and more... * @package Arabic - * + * * @version 1.8 released in Feb 15, 2009 - * + * * @license LGPL ****************************************************************************/ @@ -89,4 +89,3 @@ but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. [http://www.opensource.org/licenses/lgpl-license.php] - diff --git a/Mpdf/Cache.php b/Mpdf/Cache.php new file mode 100644 index 0000000..bc6bc91 --- /dev/null +++ b/Mpdf/Cache.php @@ -0,0 +1,116 @@ +createBasePath($basePath)) { + throw new \Mpdf\MpdfException(sprintf('Temporary files directory "%s" is not writable', $basePath)); + } + + $this->basePath = $basePath; + $this->cleanupInterval = $cleanupInterval; + } + + protected function createBasePath($basePath) + { + if (!file_exists($basePath)) { + if (!$this->createBasePath(dirname($basePath))) { + return false; + } + + if (!$this->createDirectory($basePath)) { + return false; + } + } + + if (!is_writable($basePath) || !is_dir($basePath)) { + return false; + } + + return true; + } + + protected function createDirectory($basePath) + { + if (!mkdir($basePath)) { + return false; + } + + if (!chmod($basePath, 0777)) { + return false; + } + + return true; + } + + public function tempFilename($filename) + { + return $this->getFilePath($filename); + } + + public function has($filename) + { + return file_exists($this->getFilePath($filename)); + } + + public function load($filename) + { + return file_get_contents($this->getFilePath($filename)); + } + + public function write($filename, $data) + { + $tempFile = tempnam($this->basePath, 'cache_tmp_'); + file_put_contents($tempFile, $data); + + $path = $this->getFilePath($filename); + rename($tempFile, $path); + + return $path; + } + + public function remove($filename) + { + return unlink($this->getFilePath($filename)); + } + + public function clearOld() + { + $iterator = new DirectoryIterator($this->basePath); + + /** @var \DirectoryIterator $item */ + foreach ($iterator as $item) { + if (!$item->isDot() + && $item->isFile() + && !$this->isDotFile($item) + && $this->isOld($item)) { + unlink($item->getPathname()); + } + } + } + + private function getFilePath($filename) + { + return $this->basePath . '/' . $filename; + } + + private function isOld(DirectoryIterator $item) + { + return $item->getMTime() + $this->cleanupInterval < time(); + } + + public function isDotFile(DirectoryIterator $item) + { + return substr($item->getFilename(), 0, 1) === '.'; + } +} diff --git a/Mpdf/Color/ColorConverter.php b/Mpdf/Color/ColorConverter.php new file mode 100644 index 0000000..0eeb2bd --- /dev/null +++ b/Mpdf/Color/ColorConverter.php @@ -0,0 +1,337 @@ +mpdf = $mpdf; + $this->colorModeConverter = $colorModeConverter; + $this->colorSpaceRestrictor = $colorSpaceRestrictor; + + $this->cache = []; + } + + public function convert($color, array &$PDFAXwarnings = []) + { + $color = strtolower(trim($color)); + + if ($color === 'transparent' || $color === 'inherit') { + return false; + } + + if (isset(NamedColors::$colors[$color])) { + $color = NamedColors::$colors[$color]; + } + + if (!isset($this->cache[$color])) { + $c = $this->convertPlain($color, $PDFAXwarnings); + $cstr = ''; + if (is_array($c)) { + $c = array_pad($c, 6, 0); + $cstr = pack('a1ccccc', $c[0], $c[1] & 0xFF, $c[2] & 0xFF, $c[3] & 0xFF, $c[4] & 0xFF, $c[5] & 0xFF); + } + + $this->cache[$color] = $cstr; + } + + return $this->cache[$color]; + } + + public function lighten($c) + { + $this->ensureBinaryColorFormat($c); + + if ($c[0] == static::MODE_RGB || $c[0] == static::MODE_RGBA) { + list($h, $s, $l) = $this->colorModeConverter->rgb2hsl(ord($c[1]) / 255, ord($c[2]) / 255, ord($c[3]) / 255); + $l += ((1 - $l) * 0.8); + list($r, $g, $b) = $this->colorModeConverter->hsl2rgb($h, $s, $l); + $ret = [3, $r, $g, $b]; + } elseif ($c[0] == static::MODE_CMYK || $c[0] == static::MODE_CMYKA) { + $ret = [4, max(0, ord($c[1]) - 20), max(0, ord($c[2]) - 20), max(0, ord($c[3]) - 20), max(0, ord($c[4]) - 20)]; + } elseif ($c[0] == static::MODE_GRAYSCALE) { + $ret = [1, min(255, ord($c[1]) + 32)]; + } + + $c = array_pad($ret, 6, 0); + $cstr = pack('a1ccccc', $c[0], $c[1] & 0xFF, $c[2] & 0xFF, $c[3] & 0xFF, $c[4] & 0xFF, $c[5] & 0xFF); + + return $cstr; + } + + public function darken($c) + { + $this->ensureBinaryColorFormat($c); + + if ($c[0] == static::MODE_RGB || $c[0] == static::MODE_RGBA) { + list($h, $s, $l) = $this->colorModeConverter->rgb2hsl(ord($c[1]) / 255, ord($c[2]) / 255, ord($c[3]) / 255); + $s *= 0.25; + $l *= 0.75; + list($r, $g, $b) = $this->colorModeConverter->hsl2rgb($h, $s, $l); + $ret = [3, $r, $g, $b]; + } elseif ($c[0] == static::MODE_CMYK || $c[0] == static::MODE_CMYKA) { + $ret = [4, min(100, ord($c[1]) + 20), min(100, ord($c[2]) + 20), min(100, ord($c[3]) + 20), min(100, ord($c[4]) + 20)]; + } elseif ($c[0] == static::MODE_GRAYSCALE) { + $ret = [1, max(0, ord($c[1]) - 32)]; + } + $c = array_pad($ret, 6, 0); + $cstr = pack('a1ccccc', $c[0], $c[1] & 0xFF, $c[2] & 0xFF, $c[3] & 0xFF, $c[4] & 0xFF, $c[5] & 0xFF); + + return $cstr; + } + + /** + * @param string $c + * @return float[] + */ + public function invert($c) + { + $this->ensureBinaryColorFormat($c); + + if ($c[0] == static::MODE_RGB || $c[0] == static::MODE_RGBA) { + return [3, 255 - ord($c[1]), 255 - ord($c[2]), 255 - ord($c[3])]; + } + + if ($c[0] == static::MODE_CMYK || $c[0] == static::MODE_CMYKA) { + return [4, 100 - ord($c[1]), 100 - ord($c[2]), 100 - ord($c[3]), 100 - ord($c[4])]; + } + + if ($c[0] == static::MODE_GRAYSCALE) { + return [1, 255 - ord($c[1])]; + } + + // Cannot cope with non-RGB colors at present + throw new \Mpdf\MpdfException('Trying to invert non-RGB color'); + } + + /** + * @param string $c Binary color string + * + * @return string + */ + public function colAtoString($c) + { + if ($c[0] == static::MODE_GRAYSCALE) { + return 'rgb(' . ord($c[1]) . ', ' . ord($c[1]) . ', ' . ord($c[1]) . ')'; + } + + if ($c[0] == static::MODE_SPOT) { + return 'spot(' . ord($c[1]) . ', ' . ord($c[2]) . ')'; + } + + if ($c[0] == static::MODE_RGB) { + return 'rgb(' . ord($c[1]) . ', ' . ord($c[2]) . ', ' . ord($c[3]) . ')'; + } + + if ($c[0] == static::MODE_CMYK) { + return 'cmyk(' . ord($c[1]) . ', ' . ord($c[2]) . ', ' . ord($c[3]) . ', ' . ord($c[4]) . ')'; + } + + if ($c[0] == static::MODE_RGBA) { + return 'rgba(' . ord($c[1]) . ', ' . ord($c[2]) . ', ' . ord($c[3]) . ', ' . sprintf('%0.2F', ord($c[4]) / 100) . ')'; + } + + if ($c[0] == static::MODE_CMYKA) { + return 'cmyka(' . ord($c[1]) . ', ' . ord($c[2]) . ', ' . ord($c[3]) . ', ' . ord($c[4]) . ', ' . sprintf('%0.2F', ord($c[5]) / 100) . ')'; + } + + return ''; + } + + /** + * @param string $color + * @param string[] $PDFAXwarnings + * + * @return bool|float[] + */ + private function convertPlain($color, array &$PDFAXwarnings = []) + { + $c = false; + + if (preg_match('/^[\d]+$/', $color)) { + $c = [static::MODE_GRAYSCALE, $color]; // i.e. integer only + } elseif (strpos($color, '#') === 0) { // case of #nnnnnn or #nnn + $c = $this->processHashColor($color); + } elseif (preg_match('/(rgba|rgb|device-cmyka|cmyka|device-cmyk|cmyk|hsla|hsl|spot)\((.*?)\)/', $color, $m)) { + $c = $this->processModeColor($m[1], explode(',', $m[2])); + } + + if ($this->mpdf->PDFA || $this->mpdf->PDFX || $this->mpdf->restrictColorSpace) { + $c = $this->restrictColorSpace($c, $color, $PDFAXwarnings); + } + + return $c; + } + + /** + * @param string $color + * + * @return float[] + */ + private function processHashColor($color) + { + // in case of Background: #CCC url() x-repeat etc. + $cor = preg_replace('/\s+.*/', '', $color); + + // Turn #RGB into #RRGGBB + if (strlen($cor) === 4) { + $cor = '#' . $cor[1] . $cor[1] . $cor[2] . $cor[2] . $cor[3] . $cor[3]; + } + + $r = hexdec(substr($cor, 1, 2)); + $g = hexdec(substr($cor, 3, 2)); + $b = hexdec(substr($cor, 5, 2)); + + return [3, $r, $g, $b]; + } + + /** + * @param $mode + * @param mixed[] $cores + * @return bool|float[] + */ + private function processModeColor($mode, array $cores) + { + $c = false; + + $cores = $this->convertPercentCoreValues($mode, $cores); + + switch ($mode) { + case 'rgb': + return [static::MODE_RGB, $cores[0], $cores[1], $cores[2]]; + + case 'rgba': + return [static::MODE_RGBA, $cores[0], $cores[1], $cores[2], $cores[3] * 100]; + + case 'cmyk': + case 'device-cmyk': + return [static::MODE_CMYK, $cores[0], $cores[1], $cores[2], $cores[3]]; + + case 'cmyka': + case 'device-cmyka': + return [static::MODE_CMYKA, $cores[0], $cores[1], $cores[2], $cores[3], $cores[4] * 100]; + + case 'hsl': + $conv = $this->colorModeConverter->hsl2rgb($cores[0] / 360, $cores[1], $cores[2]); + return [static::MODE_RGB, $conv[0], $conv[1], $conv[2]]; + + case 'hsla': + $conv = $this->colorModeConverter->hsl2rgb($cores[0] / 360, $cores[1], $cores[2]); + return [static::MODE_RGBA, $conv[0], $conv[1], $conv[2], $cores[3] * 100]; + + case 'spot': + $name = strtoupper(trim($cores[0])); + + if (!isset($this->mpdf->spotColors[$name])) { + if (isset($cores[5])) { + $this->mpdf->AddSpotColor($cores[0], $cores[2], $cores[3], $cores[4], $cores[5]); + } else { + throw new \Mpdf\MpdfException(sprintf('Undefined spot color "%s"', $name)); + } + } + + return [static::MODE_SPOT, $this->mpdf->spotColors[$name]['i'], $cores[1]]; + } + + return $c; + } + + /** + * @param string $mode + * @param mixed[] $cores + * + * @return float[] + */ + private function convertPercentCoreValues($mode, array $cores) + { + $ncores = count($cores); + + if (strpos($cores[0], '%') !== false) { + $cores[0] = (float) $cores[0]; + if ($mode === 'rgb' || $mode === 'rgba') { + $cores[0] = (int) ($cores[0] * 255 / 100); + } + } + + if ($ncores > 1 && strpos($cores[1], '%') !== false) { + $cores[1] = (float) $cores[1]; + if ($mode === 'rgb' || $mode === 'rgba') { + $cores[1] = (int) ($cores[1] * 255 / 100); + } + if ($mode === 'hsl' || $mode === 'hsla') { + $cores[1] /= 100; + } + } + + if ($ncores > 2 && strpos($cores[2], '%') !== false) { + $cores[2] = (float) $cores[2]; + if ($mode === 'rgb' || $mode === 'rgba') { + $cores[2] = (int) ($cores[2] * 255 / 100); + } + if ($mode === 'hsl' || $mode === 'hsla') { + $cores[2] /= 100; + } + } + + if ($ncores > 3 && strpos($cores[3], '%') !== false) { + $cores[3] = (float) $cores[3]; + } + + return $cores; + } + + /** + * @param mixed $c + * @param string $color + * @param string[] $PDFAXwarnings + * + * @return float[] + */ + private function restrictColorSpace($c, $color, &$PDFAXwarnings = []) + { + return $this->colorSpaceRestrictor->restrictColorSpace($c, $color, $PDFAXwarnings); + } + + /** + * @param string $color Binary color string + */ + private function ensureBinaryColorFormat($color) + { + if (!is_string($color)) { + throw new \Mpdf\MpdfException('Invalid color input, binary color string expected'); + } + + if (strlen($color) !== 6) { + throw new \Mpdf\MpdfException('Invalid color input, binary color string expected'); + } + + if (!in_array($color[0], [static::MODE_GRAYSCALE, static::MODE_SPOT, static::MODE_RGB, static::MODE_CMYK, static::MODE_RGBA, static::MODE_CMYKA])) { + throw new \Mpdf\MpdfException('Invalid color input, invalid color mode in binary color string'); + } + } + +} diff --git a/Mpdf/Color/ColorModeConverter.php b/Mpdf/Color/ColorModeConverter.php new file mode 100644 index 0000000..610cff4 --- /dev/null +++ b/Mpdf/Color/ColorModeConverter.php @@ -0,0 +1,199 @@ +cmyk2rgb($c); + return $this->rgb2gray($rgb); + } + + /** + * @param float[] $c + * + * @return float[] + */ + public function rgb2cmyk($c) + { + $cyan = 1 - ($c[1] / 255); + $magenta = 1 - ($c[2] / 255); + $yellow = 1 - ($c[3] / 255); + $min = min($cyan, $magenta, $yellow); + + if ($min == 1) { + if ($c[0] == 5) { + return [6, 100, 100, 100, 100, $c[4]]; + } + + return [4, 100, 100, 100, 100]; + // For K-Black + //if ($c[0]==5) { return array (6,0,0,0,100, $c[4]); } + //else { return array (4,0,0,0,100); } + } + + $K = $min; + $black = 1 - $K; + if ($c[0] == 5) { + return [6, ($cyan - $K) * 100 / $black, ($magenta - $K) * 100 / $black, ($yellow - $K) * 100 / $black, $K * 100, $c[4]]; + } + + return [4, ($cyan - $K) * 100 / $black, ($magenta - $K) * 100 / $black, ($yellow - $K) * 100 / $black, $K * 100]; + } + + /** + * @param float[] $c + * + * @return float[] + */ + public function cmyk2rgb($c) + { + $rgb = []; + $colors = 255 - ($c[4] * 2.55); + $rgb[0] = (int) ($colors * (255 - ($c[1] * 2.55)) / 255); + $rgb[1] = (int) ($colors * (255 - ($c[2] * 2.55)) / 255); + $rgb[2] = (int) ($colors * (255 - ($c[3] * 2.55)) / 255); + if ($c[0] == 6) { + return [5, $rgb[0], $rgb[1], $rgb[2], $c[5]]; + } + + return [3, $rgb[0], $rgb[1], $rgb[2]]; + } + + /** + * @param float $r + * @param float $g + * @param float $b + * + * @return float[] + */ + public function rgb2hsl($r, $g, $b) + { + $h = 0; + + $min = min($r, $g, $b); + $max = max($r, $g, $b); + + $diff = $max - $min; + $l = ($max + $min) / 2; + + if ($diff == 0) { + $h = 0; + $s = 0; + } else { + + if ($l < 0.5) { + $s = $diff / ($max + $min); + } else { + $s = $diff / (2 - $max - $min); + } + + $rDiff = ((($max - $r) / 6) + ($diff / 2)) / $diff; + $gDiff = ((($max - $g) / 6) + ($diff / 2)) / $diff; + $bDiff = ((($max - $b) / 6) + ($diff / 2)) / $diff; + + if ($r == $max) { + $h = $bDiff - $gDiff; + } elseif ($g == $max) { + $h = (1 / 3) + $rDiff - $bDiff; + } elseif ($b == $max) { + $h = (2 / 3) + $gDiff - $rDiff; + } + + if ($h < 0) { + ++$h; + } + + if ($h > 1) { + --$h; + } + } + + return [$h, $s, $l]; + } + + /** + * Input is HSL value of complementary colour, held in $h2, $s, $l as fractions of 1 + * Output is RGB in normal 255 255 255 format, held in $r, $g, $b + * + * @param float $h + * @param float $s + * @param float $l + * + * @return float[] + */ + public function hsl2rgb($h, $s, $l) + { + if ($s == 0) { + $r = $l * 255; + $g = $l * 255; + $b = $l * 255; + } else { + if ($l < 0.5) { + $tmp = $l * (1 + $s); + } else { + $tmp = ($l + $s) - ($s * $l); + } + $tmp2 = 2 * $l - $tmp; + $r = round(255 * $this->hue2rgb($tmp2, $tmp, $h + (1 / 3))); + $g = round(255 * $this->hue2rgb($tmp2, $tmp, $h)); + $b = round(255 * $this->hue2rgb($tmp2, $tmp, $h - (1 / 3))); + } + + return [$r, $g, $b]; + } + + /** + * @param float $v1 + * @param float $v2 + * @param float $vh + * + * @return float + */ + public function hue2rgb($v1, $v2, $vh) + { + if ($vh < 0) { + ++$vh; + } + + if ($vh > 1) { + --$vh; + } + + if ((6 * $vh) < 1) { + return ($v1 + ($v2 - $v1) * 6 * $vh); + } + + if ((2 * $vh) < 1) { + return $v2; + } + + if ((3 * $vh) < 2) { + return ($v1 + ($v2 - $v1) * ((2 / 3 - $vh) * 6)); + } + + return $v1; + } + +} diff --git a/Mpdf/Color/ColorSpaceRestrictor.php b/Mpdf/Color/ColorSpaceRestrictor.php new file mode 100644 index 0000000..195138f --- /dev/null +++ b/Mpdf/Color/ColorSpaceRestrictor.php @@ -0,0 +1,214 @@ +gray] + * 2 - allow RGB / SPOT COLOR / Grayscale [convert CMYK->RGB] + * 3 - allow CMYK / SPOT COLOR / Grayscale [convert RGB->CMYK] + * + * @param \Mpdf\Mpdf $mpdf + * @param \Mpdf\Color\ColorModeConverter $colorModeConverter + * @param int $mode + */ + public function __construct(Mpdf $mpdf, ColorModeConverter $colorModeConverter, $mode) + { + $this->mpdf = $mpdf; + $this->colorModeConverter = $colorModeConverter; + $this->mode = $mode; + } + + /** + * @param mixed $c + * @param string $color + * @param string[] $PDFAXwarnings + * + * @return float[]|mixed + */ + public function restrictColorSpace($c, $color, &$PDFAXwarnings = []) + { + if (!is_array($c)) { + return $c; + } + + $mode = (int) $c[0]; + switch ($mode) { + case 1: + return $c; + case 2: + return $this->restrictSpotColorSpace($c, $PDFAXwarnings); + case 3: + return $this->restrictRgbColorSpace($c, $color, $PDFAXwarnings); + case 4: + return $this->restrictCmykColorSpace($c, $color, $PDFAXwarnings); + case 5: + return $this->restrictRgbaColorSpace($c, $color, $PDFAXwarnings); + case 6: + return $this->restrictCmykaColorSpace($c, $color, $PDFAXwarnings); + } + + return $c; + } + + /** + * @param string $c + * @param string[] $PDFAXwarnings + * + * @return float[] + */ + private function restrictSpotColorSpace($c, &$PDFAXwarnings = []) + { + if (!isset($this->mpdf->spotColorIDs[$c[1]])) { + throw new \Mpdf\MpdfException('Error: Spot colour has not been defined - ' . $this->mpdf->spotColorIDs[$c[1]]); + } + + if ($this->mpdf->PDFA) { + if ($this->mpdf->PDFA && !$this->mpdf->PDFAauto) { + $PDFAXwarnings[] = "Spot color specified '" . $this->mpdf->spotColorIDs[$c[1]] . "' (converted to process color)"; + } + if ($this->mode != 3) { + $sp = $this->mpdf->spotColors[$this->mpdf->spotColorIDs[$c[1]]]; + $c = $this->colorModeConverter->cmyk2rgb([4, $sp['c'], $sp['m'], $sp['y'], $sp['k']]); + } + } elseif ($this->mode == 1) { + $sp = $this->mpdf->spotColors[$this->mpdf->spotColorIDs[$c[1]]]; + $c = $this->colorModeConverter->cmyk2gray([4, $sp['c'], $sp['m'], $sp['y'], $sp['k']]); + } + + return $c; + } + + /** + * @param mixed $c + * @param string $color + * @param string[] $PDFAXwarnings + * + * @return float[] + */ + private function restrictRgbColorSpace($c, $color, &$PDFAXwarnings = []) + { + if ($this->mpdf->PDFX || ($this->mpdf->PDFA && $this->mode == 3)) { + if (($this->mpdf->PDFA && !$this->mpdf->PDFAauto) || ($this->mpdf->PDFX && !$this->mpdf->PDFXauto)) { + $PDFAXwarnings[] = "RGB color specified '" . $color . "' (converted to CMYK)"; + } + $c = $this->colorModeConverter->rgb2cmyk($c); + } elseif ($this->mode == 1) { + $c = $this->colorModeConverter->rgb2gray($c); + } elseif ($this->mode == 3) { + $c = $this->colorModeConverter->rgb2cmyk($c); + } + + return $c; + } + + /** + * @param mixed $c + * @param string $color + * @param string[] $PDFAXwarnings + * + * @return float[] + */ + private function restrictCmykColorSpace($c, $color, &$PDFAXwarnings = []) + { + if ($this->mpdf->PDFA && $this->mode != 3) { + if ($this->mpdf->PDFA && !$this->mpdf->PDFAauto) { + $PDFAXwarnings[] = "CMYK color specified '" . $color . "' (converted to RGB)"; + } + $c = $this->colorModeConverter->cmyk2rgb($c); + } elseif ($this->mode == 1) { + $c = $this->colorModeConverter->cmyk2gray($c); + } elseif ($this->mode == 2) { + $c = $this->colorModeConverter->cmyk2rgb($c); + } + + return $c; + } + + /** + * @param mixed $c + * @param string $color + * @param string[] $PDFAXwarnings + * + * @return float[] + */ + private function restrictRgbaColorSpace($c, $color, &$PDFAXwarnings = []) + { + if ($this->mpdf->PDFX || ($this->mpdf->PDFA && $this->mode == 3)) { + if (($this->mpdf->PDFA && !$this->mpdf->PDFAauto) || ($this->mpdf->PDFX && !$this->mpdf->PDFXauto)) { + $PDFAXwarnings[] = "RGB color with transparency specified '" . $color . "' (converted to CMYK without transparency)"; + } + $c = $this->colorModeConverter->rgb2cmyk($c); + $c = [4, $c[1], $c[2], $c[3], $c[4]]; + } elseif ($this->mpdf->PDFA && $this->mode != 3) { + if (!$this->mpdf->PDFAauto) { + $PDFAXwarnings[] = "RGB color with transparency specified '" . $color . "' (converted to RGB without transparency)"; + } + $c = $this->colorModeConverter->rgb2cmyk($c); + $c = [4, $c[1], $c[2], $c[3], $c[4]]; + } elseif ($this->mode == 1) { + $c = $this->colorModeConverter->rgb2gray($c); + } elseif ($this->mode == 3) { + $c = $this->colorModeConverter->rgb2cmyk($c); + } + + return $c; + } + + /** + * @param mixed $c + * @param string $color + * @param string[] $PDFAXwarnings + * + * @return float[] + */ + private function restrictCmykaColorSpace($c, $color, &$PDFAXwarnings = []) + { + if ($this->mpdf->PDFA && $this->mode != 3) { + if (($this->mpdf->PDFA && !$this->mpdf->PDFAauto) || ($this->mpdf->PDFX && !$this->mpdf->PDFXauto)) { + $PDFAXwarnings[] = "CMYK color with transparency specified '" . $color . "' (converted to RGB without transparency)"; + } + $c = $this->colorModeConverter->cmyk2rgb($c); + $c = [3, $c[1], $c[2], $c[3]]; + } elseif ($this->mpdf->PDFX || ($this->mpdf->PDFA && $this->mode == 3)) { + if (($this->mpdf->PDFA && !$this->mpdf->PDFAauto) || ($this->mpdf->PDFX && !$this->mpdf->PDFXauto)) { + $PDFAXwarnings[] = "CMYK color with transparency specified '" . $color . "' (converted to CMYK without transparency)"; + } + $c = $this->colorModeConverter->cmyk2rgb($c); + $c = [3, $c[1], $c[2], $c[3]]; + } elseif ($this->mode == 1) { + $c = $this->colorModeConverter->cmyk2gray($c); + } elseif ($this->mode == 2) { + $c = $this->colorModeConverter->cmyk2rgb($c); + } + + return $c; + } + +} diff --git a/Mpdf/Color/NamedColors.php b/Mpdf/Color/NamedColors.php new file mode 100644 index 0000000..80b4693 --- /dev/null +++ b/Mpdf/Color/NamedColors.php @@ -0,0 +1,158 @@ + '#f0f8ff', + 'antiquewhite' => '#faebd7', + 'aqua' => '#00ffff', + 'aquamarine' => '#7fffd4', + 'azure' => '#f0ffff', + 'beige' => '#f5f5dc', + 'bisque' => '#ffe4c4', + 'black' => '#000000', + 'blanchedalmond' => '#ffebcd', + 'blue' => '#0000ff', + 'blueviolet' => '#8a2be2', + 'brown' => '#a52a2a', + 'burlywood' => '#deb887', + 'cadetblue' => '#5f9ea0', + 'chartreuse' => '#7fff00', + 'chocolate' => '#d2691e', + 'coral' => '#ff7f50', + 'cornflowerblue' => '#6495ed', + 'cornsilk' => '#fff8dc', + 'crimson' => '#dc143c', + 'cyan' => '#00ffff', + 'darkblue' => '#00008b', + 'darkcyan' => '#008b8b', + 'darkgoldenrod' => '#b8860b', + 'darkgray' => '#a9a9a9', + 'darkgreen' => '#006400', + 'darkgrey' => '#a9a9a9', + 'darkkhaki' => '#bdb76b', + 'darkmagenta' => '#8b008b', + 'darkolivegreen' => '#556b2f', + 'darkorange' => '#ff8c00', + 'darkorchid' => '#9932cc', + 'darkred' => '#8b0000', + 'darksalmon' => '#e9967a', + 'darkseagreen' => '#8fbc8f', + 'darkslateblue' => '#483d8b', + 'darkslategray' => '#2f4f4f', + 'darkslategrey' => '#2f4f4f', + 'darkturquoise' => '#00ced1', + 'darkviolet' => '#9400d3', + 'deeppink' => '#ff1493', + 'deepskyblue' => '#00bfff', + 'dimgray' => '#696969', + 'dimgrey' => '#696969', + 'dodgerblue' => '#1e90ff', + 'firebrick' => '#b22222', + 'floralwhite' => '#fffaf0', + 'forestgreen' => '#228b22', + 'fuchsia' => '#ff00ff', + 'gainsboro' => '#dcdcdc', + 'ghostwhite' => '#f8f8ff', + 'gold' => '#ffd700', + 'goldenrod' => '#daa520', + 'gray' => '#808080', + 'green' => '#008000', + 'greenyellow' => '#adff2f', + 'grey' => '#808080', + 'honeydew' => '#f0fff0', + 'hotpink' => '#ff69b4', + 'indianred' => '#cd5c5c', + 'indigo' => '#4b0082', + 'ivory' => '#fffff0', + 'khaki' => '#f0e68c', + 'lavender' => '#e6e6fa', + 'lavenderblush' => '#fff0f5', + 'lawngreen' => '#7cfc00', + 'lemonchiffon' => '#fffacd', + 'lightblue' => '#add8e6', + 'lightcoral' => '#f08080', + 'lightcyan' => '#e0ffff', + 'lightgoldenrodyellow' => '#fafad2', + 'lightgray' => '#d3d3d3', + 'lightgreen' => '#90ee90', + 'lightgrey' => '#d3d3d3', + 'lightpink' => '#ffb6c1', + 'lightsalmon' => '#ffa07a', + 'lightseagreen' => '#20b2aa', + 'lightskyblue' => '#87cefa', + 'lightslategray' => '#778899', + 'lightslategrey' => '#778899', + 'lightsteelblue' => '#b0c4de', + 'lightyellow' => '#ffffe0', + 'lime' => '#00ff00', + 'limegreen' => '#32cd32', + 'linen' => '#faf0e6', + 'magenta' => '#ff00ff', + 'maroon' => '#800000', + 'mediumaquamarine' => '#66cdaa', + 'mediumblue' => '#0000cd', + 'mediumorchid' => '#ba55d3', + 'mediumpurple' => '#9370db', + 'mediumseagreen' => '#3cb371', + 'mediumslateblue' => '#7b68ee', + 'mediumspringgreen' => '#00fa9a', + 'mediumturquoise' => '#48d1cc', + 'mediumvioletred' => '#c71585', + 'midnightblue' => '#191970', + 'mintcream' => '#f5fffa', + 'mistyrose' => '#ffe4e1', + 'moccasin' => '#ffe4b5', + 'navajowhite' => '#ffdead', + 'navy' => '#000080', + 'oldlace' => '#fdf5e6', + 'olive' => '#808000', + 'olivedrab' => '#6b8e23', + 'orange' => '#ffa500', + 'orangered' => '#ff4500', + 'orchid' => '#da70d6', + 'palegoldenrod' => '#eee8aa', + 'palegreen' => '#98fb98', + 'paleturquoise' => '#afeeee', + 'palevioletred' => '#d87093', + 'papayawhip' => '#ffefd5', + 'peachpuff' => '#ffdab9', + 'peru' => '#cd853f', + 'pink' => '#ffc0cb', + 'plum' => '#dda0dd', + 'powderblue' => '#b0e0e6', + 'purple' => '#800080', + 'red' => '#ff0000', + 'rosybrown' => '#bc8f8f', + 'royalblue' => '#4169e1', + 'saddlebrown' => '#8b4513', + 'salmon' => '#fa8072', + 'sandybrown' => '#f4a460', + 'seagreen' => '#2e8b57', + 'seashell' => '#fff5ee', + 'sienna' => '#a0522d', + 'silver' => '#c0c0c0', + 'skyblue' => '#87ceeb', + 'slateblue' => '#6a5acd', + 'slategray' => '#708090', + 'slategrey' => '#708090', + 'snow' => '#fffafa', + 'springgreen' => '#00ff7f', + 'steelblue' => '#4682b4', + 'tan' => '#d2b48c', + 'teal' => '#008080', + 'thistle' => '#d8bfd8', + 'tomato' => '#ff6347', + 'turquoise' => '#40e0d0', + 'violet' => '#ee82ee', + 'violetred' => '#d02090', + 'wheat' => '#f5deb3', + 'white' => '#ffffff', + 'whitesmoke' => '#f5f5f5', + 'yellow' => '#ffff00', + 'yellowgreen' => '#9acd32', + ]; +} diff --git a/Mpdf/Config/ConfigVariables.php b/Mpdf/Config/ConfigVariables.php new file mode 100644 index 0000000..6ad896c --- /dev/null +++ b/Mpdf/Config/ConfigVariables.php @@ -0,0 +1,527 @@ +defaults = [ + + // PAGING + 'mirrorMargins' => 0, + 'forcePortraitMargins' => false, + 'displayDefaultOrientation' => false, + + // Adds date and page info for printer when using @page and "marks:crop," + 'printers_info' => false, + 'bleedMargin' => 5, + + // Distance of cross mark from margin in mm + 'crossMarkMargin' => 5, + // Distance of crop mark from margin in mm + 'cropMarkMargin' => 8, + // Default length in mm of crop line + 'cropMarkLength' => 18, + // Non-printable border at edge of paper sheet in mm + 'nonPrintMargin' => 8, + + // 'slice' or 'cloneall' or 'clonebycss' - for forced pagebreaks using + // Automatic pagebreaks (flow in text) are always 'slice' + 'defaultPagebreakType' => 'cloneall', + + // Avoid just the border/background-color of the end of a block being moved on to next page + // Allows an (empty) end of block to extend beyond the bottom margin by this amount (mm) + 'margBuffer' => 2, + + // PAGE NUMBERING + 'pagenumPrefix' => '', + 'pagenumSuffix' => '', + 'nbpgPrefix' => '', + 'nbpgSuffix' => '', + // 1:Decimal, A:uppercase alphabetic etc. (as for list-style shorthands) + 'defaultPageNumStyle' => '1', + + // PAGE NUMBER ALIASES + 'aliasNbPg' => '{nb}', + 'aliasNbPgGp' => '{nbpg}', + + // FONTS, LANGUAGES & CHARACTER SETS + // Set maximum size of TTF font file to allow non-subsets - in kB + // Used to avoid a font e.g. Arial Unicode MS (perhaps used for substitutions) ever being fully embedded + // NB Free serif is 1.5MB, most files are <= 600kB (most 200-400KB) + 'maxTTFFilesize' => 2000, + + // this value determines whether to subset or not + // 0 - 100' => percent characters + // i.e. if ==40, mPDF will embed whole font if >40% characters in that font + // or embed subset if <40% characters + // 0 will force whole file to be embedded (NO subsetting) + // 100 will force always to subset + // This value is overridden if you set new mPDF('s') + // and/or Can set at runtime + 'percentSubset' => 30, + + // Uses Adobe CJK fonts for CJK languages + // default TRUE, only set false if you have defined some available fonts that support CJK + // If true this will not stop use of other CJK fonts if specified by font-family: + // and vice versa i.e. only dictates behaviour when specified by lang="" incl. AutoFont() + 'useAdobeCJK' => false, + + // When embedding full TTF font files, remakes the font file using only core tables + // May improve function with some PostScript printers (GhostScript/GSView) + // Does not work with TTC font collections + // Slightly smaller file, increased processing time + 'repackageTTF' => false, + + // Allows automatic character set conversion if "charset=xxx" detected in html header (WriteHTML() ) + 'allow_charset_conversion' => true, + // Automatically determine BIDI text in LTR page + 'biDirectional' => false, + + // AUTOMATIC FONT SELECTION + // Based on script and/or language + // mPDF 6.0 (similar to previously using function SetAutoFont() ) + 'autoScriptToLang' => false, + 'baseScript' => Ucdn::SCRIPT_LATIN, + 'autoVietnamese' => true, + 'autoArabic' => true, + // mPDF 6.0 (similar to old useLang) + 'autoLangToFont' => false, + + // Substitute missing characters in UTF-8(multibyte) documents - from other fonts + 'useSubstitutions' => false, + // Weight for bold text when using an artificial (outline) bold, value 0 (off) - 10 (rec. max) + 'falseBoldWeight' => 5, + + // CONFIGURATION + 'allow_output_buffering' => false, + + // Adding mPDFI functions + 'enableImports' => false, + + // Allows top and bottom margins to collapse between block elements + 'collapseBlockMargins' => true, + + // To interpret "px" pixel values in HTML/CSS (see img_dpi below) + 'dpi' => 96, + + // Automatically correct for tags where HTML specifies optional end tags e.g. P,LI,DD,TD + // If you are confident input html is valid XHTML, turning this off may make it more reliable(?) + 'allow_html_optional_endtags' => true, + + 'ignore_invalid_utf8' => false, + // Converts all entities in Text inputs to UTF-8 before encoding + 'text_input_as_HTML' => false, + + // When writing a block element with position:fixed and overflow:auto, mPDF scales it down to fit in the space + // by repeatedly rewriting it and making adjustments. These values give the adjustments used, depending how far out + // the previous guess was. The lower the number, the quicker it will finish, but the less accurate the fit may be. + // FPR1 is for coarse adjustments, and FPR4 for fine adjustments when it is getting closer. + 'incrementFPR1' => 10, // i.e. will alter by 1/[10]th of width and try again until within closer limits + 'incrementFPR2' => 20, + 'incrementFPR3' => 30, + 'incrementFPR4' => 50, // i.e. will alter by 1/[50]th of width and try again when it nearly fits + + // COLORSPACE + // 1 - allow GRAYSCALE only [convert CMYK/RGB->gray] + // 2 - allow RGB / SPOT COLOR / Grayscale [convert CMYK->RGB] + // 3 - allow CMYK / SPOT COLOR / Grayscale [convert RGB->CMYK] + 'restrictColorSpace' => 0, + + // PDFX/1-a Compliant files + // true=Forces compliance with PDFX-1a spec + // Cannot be used with 'restrictColorSpace' (i.e. no RGB) + 'PDFX' => false, + // Overrides warnings making changes when possible to force PDFX1-a compliance + 'PDFXauto' => false, + + // PDFA1-b Compliant files + // true=Forces compliance with PDFA-1b spec + // Can use with 'restrictColorSpace'=3 (for a CMYK file) + // Any other settings, uses RGB profile + 'PDFA' => false, + // Overrides warnings making changes when possible to force PDFA1-b compliance + 'PDFAauto' => false, + + // Colour profile OutputIntent + // sRGB_IEC61966-2-1 (=default if blank and PDFA), or other added .icc profile + // Must be CMYK for PDFX, or appropriate type for PDFA(RGB or CMYK) + 'ICCProfile' => '', + + 'spotColors' => [], + 'spotColorIDs' => [], + + // DEBUGGING & DEVELOPERS + 'debug' => false, + // Checks and reports on errors when parsing TTF files - adds significantly to processing time + 'debugfonts' => false, + 'showImageErrors' => false, + // Die and report error if table is too wide to contain whole words + 'table_error_report' => false, + // Parameter which can be passed to show in error report i.e. chapter number being processed + 'table_error_report_param' => '', + + 'title2annots' => false, // Automatically convert title="" properties in tags, to annotations + 'annotSize' => 0.5, // default mm for Adobe annotations - nominal + 'annotMargin' => null, // default position for Annotations + 'annotOpacity' => 0.5, // default opacity for Annotations + + // BOOKMARKS + // makes into a bookmark as well as internal link target, 1' => just name, 2' => name (p.34) + // Set an optional array to specify appearance of Bookmarks (by level) + // Default values are Black and normal style + 'anchor2Bookmark' => 0, + + /* + Example: + 'bookmarkStyles' => array( + 0 => array('color'=> array(0,64,128), 'style'=>'B'), + 1 => array('color'=> array(128,0,0), 'style'=>''), + 2 => array('color'=> array(0,128,0), 'style'=>'I'), + ), + */ + 'bookmarkStyles' => [], + + // Specify whether to automatically generate bookmarks from h1 - h6 tags + /* + Define arrays with e.g. the tag=>Bookmark-level + Remember bookmark levels start at 0 + (does not work inside tables) + H1 - H6 must be uppercase + 'h2bookmarks' => array('H1'=>0, 'H2'=>1, 'H3'=>2), + */ + 'h2bookmarks' => [], + + // TABLE OF CONTENTS + + // Specify whether to automatically generate ToC entries from h1 - h6 tags + /* + Define arrays with e.g. the tag=>ToC-level + Remember ToC levels start at 0 + (does not work inside tables) + Only the default ToC will be used if > 1 ToCs are defined for the document + H1 - H6 must be uppercase + 'h2toc' => array('H1'=>0, 'H2'=>1, 'H3'=>2), + */ + 'h2toc' => [], + + // INDEX + /* Specifies whether to repeat the main entry for each subEntry (true suppresses this) + e.g. Mammal:dog ... Mammal:elephant -> + [true] + Mammal + - dog + - elephant + [false] + Mammal, dog + Mammal, elephant + */ + 'indexUseSubentries' => true, + + // CSS & STYLES + // screen, print, or any other CSS @media type (except "all") + 'CSSselectMedia' => 'print', + + // PAGE HEADERS & FOOTERS + 'forcePortraitHeaders' => false, + + // Values used if simple FOOTER/HEADER given i.e. not array + 'defaultheaderfontsize' => 8, // pt + 'defaultheaderfontstyle' => 'BI', // '', or 'B' or 'I' or 'BI' + 'defaultheaderline' => 1, // 1 or 0 - line under the header + 'defaultfooterfontsize' => 8, // pt + 'defaultfooterfontstyle' => 'BI', // '', or 'B' or 'I' or 'BI' + 'defaultfooterline' => 1, // 1 or 0 - line over the footer + + // spacing between bottom of header and line (if present) - function of fontsize + 'header_line_spacing' => 0.25, + // spacing between bottom of header and line (if present) - function of fontsize + 'footer_line_spacing' => 0.25, + // If 'pad' margin-top sets fixed distance in mm (padding) between bottom of header and top of text. + // If 'stretch' margin-top sets a minimum distance in mm between top of page and top of text, which expands if header is too large to fit. + 'setAutoTopMargin' => false, + 'setAutoBottomMargin' => false, + // distance in mm used as padding if 'stretch' mode is used + 'autoMarginPadding' => 2, + + // TABLES + // Forces all cells to have same border, background etc. Improves performance + 'simpleTables' => false, + // Reduce memory usage processing tables (but with increased processing time) + 'packTableData' => false, + + 'ignore_table_percents' => false, + 'ignore_table_widths' => false, + // If table width set > page width, force resizing but keep relative sizes + // Also forces respect of cell widths set by % + 'keep_table_proportions' => true, + // automatically reduce fontsize in table if words would have to split ( not in CJK) + // 0 or false to disable, value (if set) gives maximum factor to reduce fontsize + 'shrink_tables_to_fit' => 1.4, + + // If page-break-inside:avoid but cannot fit on full page without + // exceeding autosize, setting this value to true will force respect for autosize, and disable the page-break-inside:avoid + 'tableMinSizePriority' => false, + + // "Keep-with-table" Attempts to keep a

to

tagged heading together with a table which comes immediately after it. + 'use_kwt' => false, + // Set to TRUE to use table Head iteration counter + 'iterationCounter' => false, + // Use table border (using this width in mm) when table breaks across pages + // Recommended to use small value e.g. 0.01 + 'splitTableBorderWidth' => 0, + + // Allowed characters for text alignment on decimal marks. Additional codes must start with D + // DM - middot U+00B7 + // DA - arabic decimal mark U+066B + 'decimal_align' => ['DP' => '.', 'DC' => ',', 'DM' => "\xc2\xb7", 'DA' => "\xd9\xab", 'DD' => '-'], + + // IMAGES + // if image-rendering=='auto', this defines value for image-rendering + // if true, image interpolation shall be performed by a conforming reader + 'interpolateImages' => false, + // Default dpi to output images if size not defined + // See also above "dpi" + 'img_dpi' => 96, + // Specify whitelisted PHP streams to be used for images + // Useful to add custom streams like `s3` + // Note: for security reasons the `phar` stream cannot be used @see https://github.com/mpdf/mpdf/issues/949 + 'whitelistStreamWrappers' => ['http', 'https', 'file'], + + // TEXT SPACING & JUSTIFICATION + + // Specify whether kerning should be used when CSS font-kerning="auto" used for HTML, + // Also whether kerning should be used in any direct writing e.g. $mpdf->Text(), + 'useKerning' => false, + // In justified text,
does not cause the preceding text to be justified in browsers + // Change to true to force justification (as in MS Word) + 'justifyB4br' => false, + + // Number of spaces to replace for a TAB in
 sections
+			// Notepad uses 6, HTML specification recommends 8
+			'tabSpaces' => 8,
+			// Proportion (/1) of space (when justifying margins) to allocate to Word vs. Character
+			'jSWord' => 0.4,
+			// Maximum spacing to allocate to character spacing. (0' => no maximum)
+			'jSmaxChar' => 2,
+
+			// Maximum character spacing allowed (carried over) when finishing a last line
+			'jSmaxCharLast' => 1,
+			// Maximum word spacing allowed (carried over) when finishing a last line
+			'jSmaxWordLast' => 2,
+
+			// LINE SPACING & TEXT BASELINE
+			// Use the fixed factor ('normalLineheight') when line-height:normal
+			// Compatible with mPDF versions < 6
+			'useFixedNormalLineHeight' => false,
+
+			// Use a fixed ratio ('baselineC') to set the text baseline
+			// Compatible with mPDF versions < 6
+			'useFixedTextBaseline' => false,
+
+			// Default Value used for line-height when CSS specified as 'normal' (default)
+			'normalLineheight' => 1.33,
+
+			// Correction factor applied to lineheight values derived from 'win', 'mac', 'winTypo'
+			'adjustFontDescLineheight' => 1.14,
+
+			// Small Caps
+			// Factor of 1 to scale capital letters
+			'smCapsScale' => 0.75,
+			// % to stretch small caps horizontally (i.e. 100' => no stretch)
+			'smCapsStretch' => 110,
+
+			// Line-breaking
+			// The alternative to these next 2 is the use of U+200B Zero-width space
+			// These are only effective if using OTL for the fonts
+			// Use the dictionaries to determine line-breaking in Lao, Khmer and Thai
+			'useDictionaryLBR' => true,
+			// Use the inbuilt algorithm to determine line-breaking in Tibetan
+			'useTibetanLBR' => true,
+
+			// CJK Line-breaking
+			// FALSE=always wrap to next line, TRUE=squeeze or overflow
+			'allowCJKorphans' => true,
+			// FALSE=squeeze, TRUE=overflow (only some characters, and disabled in tables)
+			'allowCJKoverflow' => false,
+			// Forces overflowng punctuation to hang outside right margin mPDF 5.6.40
+			'CJKforceend' => false,
+
+			// COLUMNS
+			'keepColumns' => false, // Set to go to the second column only when the first is full of text etc.
+			'max_colH_correction' => 1.15, // Maximum ratio to adjust column height when justifying - too large a value can give ugly results
+			'ColGap' => 5,
+
+			// LISTS
+			// mPDF 6
+			// 'mpdf' or 'browser' - Specify whether to use mPDF custom method of automatic
+			'list_auto_mode' => 'browser',
+			// indentation of lists, or standard browser-compatible
+			// custom mPDF method is ignored if list-style-position: inside, or image used for marker (or custom U+)
+			// List Indentation when set to 'auto' if using standard browser-compatible method
+			'list_indent_default' => '40px',
+			// List Indentation when set to 'auto' if using mPDF custom method
+			'list_indent_default_mpdf' => '0em',
+			// 1/0 yes/no to indent first level of list, if using mPDF custom method
+			'list_indent_first_level' => 0,
+
+			// Content to follow a numbered list marker e.g. '.' gives 1. or IV., ')' gives 1) or a)
+			'list_number_suffix' => '.',
+
+			// To specify a bullet size and offset proportional to the list item's font size:
+			// Browsers use a fixed bullet size and offset
+			// Offset (CSS length) of list marker bullets (disc/circle/square)
+			'list_marker_offset' => '5.5pt',
+			// Size (CSS) of list marker bullets (disc/circle/square)
+			'list_symbol_size' => '3.6pt',
+
+			// Hyphenation
+			'SHYlanguages' => ['en', 'de', 'es', 'fi', 'fr', 'it', 'nl', 'pl', 'ru', 'sv'], // existing defined patterns
+			'SHYlang' => "en", // 'en','de','es','fi','fr','it','nl','pl','ru','sv'
+			'SHYleftmin' => 2,
+			'SHYrightmin' => 2,
+			'SHYcharmin' => 2,
+			'SHYcharmax' => 10,
+
+			// ACTIVE FORMS
+			'useActiveForms' => false,
+
+			// WATERMARKS
+			'watermarkImgBehind' => false,
+			'showWatermarkText' => 0,
+			'showWatermarkImage' => 0,
+			'watermarkText' => '',
+			'watermarkAngle' => 45,
+			'watermarkImage' => '',
+			'watermark_font' => '',
+			'watermarkTextAlpha' => 0.2,
+			'watermarkImageAlpha' => 0.2,
+
+			// Accepts any PDF spec. value: Normal, Multiply, Screen, Overlay, Darken, Lighten, ColorDodge, ColorBurn, HardLight, SoftLight, Difference, Exclusion
+			// "Multiply" works well for watermark image on top
+			'watermarkImgAlphaBlend' => 'Normal',
+
+			// BORDERS
+			'autoPadding' => false, // Automatically increases padding in block elements when border-radius set - if required
+
+			// SVG
+
+			// If you wish to use Automatic Font selection within SVG's. change this definition to true.
+			// This selects different fonts for different scripts used in text.
+			// This can be enabled/disabled independently of the use of Automatic Font selection within mPDF generally.
+			// Choice of font is determined by the LangToFont and ScriptToLang classes, the same as for mPDF generally.
+			'svgAutoFont' => false,
+
+			// Enable a limited use of classes within SVG  elements by setting this to true.
+			// This allows recognition of a "class" attribute on a  element.
+			// The CSS style for that class should be outside the SVG, and cannot use any other selectors (i.e. only .class {} can be defined)
+			// ';
+				$html = str_replace('>'.$m[1][$i].'', $sub, $html);
+			}
+		}
+
+		$html = preg_replace('//i', '', $html);
+		$html = preg_replace('/<\!\-\-.*?\-\->/s', ' ', $html);
+
+		$match = 0; // no match for instance
+		$CSSext = [];
+
+		// CSS inside external files
+		$regexp = '/]*rel=["\']stylesheet["\'][^>]*href=["\']([^>"\']*)["\'].*?>/si';
+		$x = preg_match_all($regexp, $html, $cxt);
+		if ($x) {
+			$match += $x;
+			$CSSext = $cxt[1];
+		}
+		$regexp = '/]*href=["\']([^>"\']*)["\'][^>]*?rel=["\']stylesheet["\'].*?>/si';
+		$x = preg_match_all($regexp, $html, $cxt);
+		if ($x) {
+			$match += $x;
+			$CSSext = array_merge($CSSext, $cxt[1]);
+		}
+
+		// look for @import stylesheets
+		// $regexp = '/@import url\([\'\"]{0,1}([^\)]*?\.css)[\'\"]{0,1}\)/si';
+		// $regexp = '/@import url\([\'\"]{0,1}([^\)]*?\.css(\?\S+)?)[\'\"]{0,1}\)/si';
+		$regexp = '/@import url\([\'\"]{0,1}(\S*?\.css(\?[^\s\'\"]+)?)[\'\"]{0,1}\)\;?/si';
+		$x = preg_match_all($regexp, $html, $cxt);
+		if ($x) {
+			$match += $x;
+			$CSSext = array_merge($CSSext, $cxt[1]);
+		}
+
+		// look for @import without the url()
+		// $regexp = '/@import [\'\"]{0,1}([^;]*?\.css)[\'\"]{0,1}/si';
+		// $regexp = '/@import [\'\"]{0,1}([^;]*?\.css(\?\S+)?)[\'\"]{0,1}/si';
+		$regexp = '/@import (?!url)[\'\"]{0,1}(\S*?\.css(\?[^\s\'\"]+)?)[\'\"]{0,1}\;?/si';
+		$x = preg_match_all($regexp, $html, $cxt);
+		if ($x) {
+			$match += $x;
+			$CSSext = array_merge($CSSext, $cxt[1]);
+		}
+
+		$ind = 0;
+		$CSSstr = '';
+
+		if (!is_array($this->cascadeCSS)) {
+			$this->cascadeCSS = [];
+		}
+
+		while ($match) {
+
+			$path = $CSSext[$ind];
+
+			$path = htmlspecialchars_decode($path); // mPDF 6
+
+			$this->mpdf->GetFullPath($path);
+
+			$CSSextblock = $this->getFileContents($path);
+			if ($CSSextblock) {
+				// look for embedded @import stylesheets in other stylesheets
+				// and fix url paths (including background-images) relative to stylesheet
+				// $regexpem = '/@import url\([\'\"]{0,1}(.*?\.css)[\'\"]{0,1}\)/si';
+				$regexpem = '/@import url\([\'\"]{0,1}(.*?\.css(\?\S+)?)[\'\"]{0,1}\)/si';
+				$xem = preg_match_all($regexpem, $CSSextblock, $cxtem);
+				$cssBasePath = preg_replace('/\/[^\/]*$/', '', $path) . '/';
+				if ($xem) {
+					foreach ($cxtem[1] as $cxtembedded) {
+						// path is relative to original stylesheet!!
+						$this->mpdf->GetFullPath($cxtembedded, $cssBasePath);
+						$match++;
+						$CSSext[] = $cxtembedded;
+					}
+				}
+				$regexpem = '/(background[^;]*url\s*\(\s*[\'\"]{0,1})([^\)\'\"]*)([\'\"]{0,1}\s*\))/si';
+				$xem = preg_match_all($regexpem, $CSSextblock, $cxtem);
+				if ($xem) {
+					$count_cxtem = count($cxtem[0]);
+					for ($i = 0; $i < $count_cxtem; $i++) {
+						// path is relative to original stylesheet!!
+						$embedded = $cxtem[2][$i];
+						if (!preg_match('/^data:image/i', $embedded)) { // mPDF 5.5.13
+							$this->mpdf->GetFullPath($embedded, $cssBasePath);
+							$CSSextblock = str_replace($cxtem[0][$i], ($cxtem[1][$i] . $embedded . $cxtem[3][$i]), $CSSextblock);
+						}
+					}
+				}
+				$CSSstr .= ' ' . $CSSextblock;
+			}
+			$match--;
+			$ind++;
+		}
+
+		// CSS as ');
+		} else {
+			throw new \Mpdf\MpdfException(sprintf('Unable to read default CSS file "%s"', $this->defaultCssFile));
+		}
+
+		if ($default_font == '') {
+			if ($this->onlyCoreFonts) {
+				if (in_array(strtolower($this->defaultCSS['BODY']['FONT-FAMILY']), $this->mono_fonts)) {
+					$default_font = 'ccourier';
+				} elseif (in_array(strtolower($this->defaultCSS['BODY']['FONT-FAMILY']), $this->sans_fonts)) {
+					$default_font = 'chelvetica';
+				} else {
+					$default_font = 'ctimes';
+				}
+			} else {
+				$default_font = $this->defaultCSS['BODY']['FONT-FAMILY'];
+			}
+		}
+		if (!$default_font_size) {
+			$mmsize = $this->sizeConverter->convert($this->defaultCSS['BODY']['FONT-SIZE']);
+			$default_font_size = $mmsize * (Mpdf::SCALE);
+		}
+
+		if ($default_font) {
+			$this->SetDefaultFont($default_font);
+		}
+		if ($default_font_size) {
+			$this->SetDefaultFontSize($default_font_size);
+		}
+
+		$this->SetLineHeight(); // lineheight is in mm
+
+		$this->SetFColor($this->colorConverter->convert(255, $this->PDFAXwarnings));
+		$this->HREF = '';
+		$this->oldy = -1;
+		$this->B = 0;
+		$this->I = 0;
+
+		// mPDF 6  Lists
+		$this->listlvl = 0;
+		$this->listtype = [];
+		$this->listitem = [];
+		$this->listcounter = [];
+
+		$this->tdbegin = false;
+		$this->table = [];
+		$this->cell = [];
+		$this->col = -1;
+		$this->row = -1;
+		$this->cellBorderBuffer = [];
+
+		$this->divbegin = false;
+		// mPDF 6
+		$this->cellTextAlign = '';
+		$this->cellLineHeight = '';
+		$this->cellLineStackingStrategy = '';
+		$this->cellLineStackingShift = '';
+
+		$this->divwidth = 0;
+		$this->divheight = 0;
+		$this->spanbgcolor = false;
+		$this->spanborder = false;
+		$this->spanborddet = [];
+
+		$this->blockjustfinished = false;
+		$this->ignorefollowingspaces = true; // in order to eliminate exceeding left-side spaces
+		$this->dash_on = false;
+		$this->dotted_on = false;
+		$this->textshadow = '';
+
+		$this->currentfontfamily = '';
+		$this->currentfontsize = '';
+		$this->currentfontstyle = '';
+		$this->colorarray = ''; // mPDF 6
+		$this->spanbgcolorarray = ''; // mPDF 6
+		$this->textbuffer = [];
+		$this->internallink = [];
+		$this->basepath = "";
+
+		$this->SetBasePath('');
+
+		$this->textparam = [];
+
+		$this->specialcontent = '';
+		$this->selectoption = [];
+	}
+
+	public function cleanup()
+	{
+		mb_internal_encoding($this->originalMbEnc);
+		@mb_regex_encoding($this->originalMbRegexEnc);
+	}
+
+	/**
+	 * @param \Psr\Log\LoggerInterface
+	 *
+	 * @return \Mpdf\Mpdf
+	 */
+	public function setLogger(LoggerInterface $logger)
+	{
+		$this->logger = $logger;
+
+		foreach ($this->services as $name) {
+			if ($this->$name && $this->$name instanceof \Psr\Log\LoggerAwareInterface) {
+				$this->$name->setLogger($logger);
+			}
+		}
+
+		return $this;
+	}
+
+	private function initConfig(array $config)
+	{
+		$configObject = new ConfigVariables();
+		$defaults = $configObject->getDefaults();
+		$config = array_intersect_key($config + $defaults, $defaults);
+
+		foreach ($config as $var => $val) {
+			$this->{$var} = $val;
+		}
+
+		return $config;
+	}
+
+	private function initConstructorParams(array $config)
+	{
+		$constructor = [
+			'mode' => '',
+			'format' => 'A4',
+			'default_font_size' => 0,
+			'default_font' => '',
+			'margin_left' => 15,
+			'margin_right' => 15,
+			'margin_top' => 16,
+			'margin_bottom' => 16,
+			'margin_header' => 9,
+			'margin_footer' => 9,
+			'orientation' => 'P',
+		];
+
+		foreach ($constructor as $key => $val) {
+			if (isset($config[$key])) {
+				$constructor[$key] = $config[$key];
+			}
+		}
+
+		return array_values($constructor);
+	}
+
+	private function initFontConfig(array $config)
+	{
+		$configObject = new FontVariables();
+		$defaults = $configObject->getDefaults();
+		$config = array_intersect_key($config + $defaults, $defaults);
+		foreach ($config as $var => $val) {
+			$this->{$var} = $val;
+		}
+
+		return $config;
+	}
+
+	function _setPageSize($format, &$orientation)
+	{
+		if (is_string($format)) {
+
+			if (empty($format)) {
+				$format = 'A4';
+			}
+
+			// e.g. A4-L = A4 landscape, A4-P = A4 portrait
+			if (preg_match('/([0-9a-zA-Z]*)-([P,L])/i', $format, $m)) {
+				$format = $m[1];
+				$orientation = $m[2];
+			} elseif (empty($orientation)) {
+				$orientation = 'P';
+			}
+
+			$format = PageFormat::getSizeFromName($format);
+
+			$this->fwPt = $format[0];
+			$this->fhPt = $format[1];
+
+		} else {
+
+			if (!$format[0] || !$format[1]) {
+				throw new \Mpdf\MpdfException('Invalid page format: ' . $format[0] . ' ' . $format[1]);
+			}
+
+			$this->fwPt = $format[0] * Mpdf::SCALE;
+			$this->fhPt = $format[1] * Mpdf::SCALE;
+		}
+
+		$this->fw = $this->fwPt / Mpdf::SCALE;
+		$this->fh = $this->fhPt / Mpdf::SCALE;
+
+		// Page orientation
+		$orientation = strtolower($orientation);
+		if ($orientation === 'p' || $orientation == 'portrait') {
+			$orientation = 'P';
+			$this->wPt = $this->fwPt;
+			$this->hPt = $this->fhPt;
+		} elseif ($orientation === 'l' || $orientation == 'landscape') {
+			$orientation = 'L';
+			$this->wPt = $this->fhPt;
+			$this->hPt = $this->fwPt;
+		} else {
+			throw new \Mpdf\MpdfException('Incorrect orientation: ' . $orientation);
+		}
+
+		$this->CurOrientation = $orientation;
+
+		$this->w = $this->wPt / Mpdf::SCALE;
+		$this->h = $this->hPt / Mpdf::SCALE;
+	}
+
+	function RestrictUnicodeFonts($res)
+	{
+		// $res = array of (Unicode) fonts to restrict to: e.g. norasi|norasiB - language specific
+		if (count($res)) { // Leave full list of available fonts if passed blank array
+			$this->available_unifonts = $res;
+		} else {
+			$this->available_unifonts = $this->default_available_fonts;
+		}
+		if (count($this->available_unifonts) == 0) {
+			$this->available_unifonts[] = $this->default_available_fonts[0];
+		}
+		$this->available_unifonts = array_values($this->available_unifonts);
+	}
+
+	function setMBencoding($enc)
+	{
+		if ($this->mb_enc != $enc) {
+			$this->mb_enc = $enc;
+			mb_internal_encoding($this->mb_enc);
+		}
+	}
+
+	function SetMargins($left, $right, $top)
+	{
+		// Set left, top and right margins
+		$this->lMargin = $left;
+		$this->rMargin = $right;
+		$this->tMargin = $top;
+	}
+
+	function ResetMargins()
+	{
+		// ReSet left, top margins
+		if (($this->forcePortraitHeaders || $this->forcePortraitMargins) && $this->DefOrientation == 'P' && $this->CurOrientation == 'L') {
+			if (($this->mirrorMargins) && (($this->page) % 2 == 0)) { // EVEN
+				$this->tMargin = $this->orig_rMargin;
+				$this->bMargin = $this->orig_lMargin;
+			} else { // ODD	// OR NOT MIRRORING MARGINS/FOOTERS
+				$this->tMargin = $this->orig_lMargin;
+				$this->bMargin = $this->orig_rMargin;
+			}
+			$this->lMargin = $this->DeflMargin;
+			$this->rMargin = $this->DefrMargin;
+			$this->MarginCorrection = 0;
+			$this->PageBreakTrigger = $this->h - $this->bMargin;
+		} elseif (($this->mirrorMargins) && (($this->page) % 2 == 0)) { // EVEN
+			$this->lMargin = $this->DefrMargin;
+			$this->rMargin = $this->DeflMargin;
+			$this->MarginCorrection = $this->DefrMargin - $this->DeflMargin;
+		} else { // ODD	// OR NOT MIRRORING MARGINS/FOOTERS
+			$this->lMargin = $this->DeflMargin;
+			$this->rMargin = $this->DefrMargin;
+			if ($this->mirrorMargins) {
+				$this->MarginCorrection = $this->DeflMargin - $this->DefrMargin;
+			}
+		}
+		$this->x = $this->lMargin;
+	}
+
+	function SetLeftMargin($margin)
+	{
+		// Set left margin
+		$this->lMargin = $margin;
+		if ($this->page > 0 and $this->x < $margin) {
+			$this->x = $margin;
+		}
+	}
+
+	function SetTopMargin($margin)
+	{
+		// Set top margin
+		$this->tMargin = $margin;
+	}
+
+	function SetRightMargin($margin)
+	{
+		// Set right margin
+		$this->rMargin = $margin;
+	}
+
+	function SetAutoPageBreak($auto, $margin = 0)
+	{
+		// Set auto page break mode and triggering margin
+		$this->autoPageBreak = $auto;
+		$this->bMargin = $margin;
+		$this->PageBreakTrigger = $this->h - $margin;
+	}
+
+	function SetDisplayMode($zoom, $layout = 'continuous')
+	{
+		$allowedZoomModes = ['fullpage', 'fullwidth', 'real', 'default', 'none'];
+
+		if (in_array($zoom, $allowedZoomModes, true) || is_numeric($zoom)) {
+			$this->ZoomMode = $zoom;
+		} else {
+			throw new \Mpdf\MpdfException('Incorrect zoom display mode: ' . $zoom);
+		}
+
+		$allowedLayoutModes = ['single', 'continuous', 'two', 'twoleft', 'tworight', 'default'];
+
+		if (in_array($layout, $allowedLayoutModes, true)) {
+			$this->LayoutMode = $layout;
+		} else {
+			throw new \Mpdf\MpdfException('Incorrect layout display mode: ' . $layout);
+		}
+	}
+
+	function SetCompression($compress)
+	{
+		// Set page compression
+		if (function_exists('gzcompress')) {
+			$this->compress = $compress;
+		} else {
+			$this->compress = false;
+		}
+	}
+
+	function SetTitle($title)
+	{
+		// Title of document // Arrives as UTF-8
+		$this->title = $title;
+	}
+
+	function SetSubject($subject)
+	{
+		// Subject of document
+		$this->subject = $subject;
+	}
+
+	function SetAuthor($author)
+	{
+		// Author of document
+		$this->author = $author;
+	}
+
+	function SetKeywords($keywords)
+	{
+		// Keywords of document
+		$this->keywords = $keywords;
+	}
+
+	function SetCreator($creator)
+	{
+		// Creator of document
+		$this->creator = $creator;
+	}
+
+	function AddCustomProperty($key, $value)
+	{
+		$this->customProperties[$key] = $value;
+	}
+
+	/**
+	 * Set one or multiple associated file ("/AF" as required by PDF/A-3)
+	 *
+	 * param $files is an array of hash containing:
+	 *   path: file path on FS
+	 *   content: file content
+	 *   name: file name (not necessarily the same as the file on FS)
+	 *   mime (optional): file mime type (will show up as /Subtype in the PDF)
+	 *   description (optional): file description
+	 *   AFRelationship (optional): PDF/A-3 AFRelationship (e.g. "Alternative")
+	 *
+	 * e.g. to associate 1 file:
+	 *     [[
+	 *         'path' => 'tmp/1234.xml',
+	 *         'content' => 'file content',
+	 *         'name' => 'public_name.xml',
+	 *         'mime' => 'text/xml',
+	 *         'description' => 'foo',
+	 *         'AFRelationship' => 'Alternative',
+	 *     ]]
+	 *
+	 * @param mixed[] $files Array of arrays of associated files. See above
+	 */
+	function SetAssociatedFiles(array $files)
+	{
+		$this->associatedFiles = $files;
+	}
+
+	function SetAdditionalXmpRdf($s)
+	{
+		$this->additionalXmpRdf = $s;
+	}
+
+	function SetAnchor2Bookmark($x)
+	{
+		$this->anchor2Bookmark = $x;
+	}
+
+	public function AliasNbPages($alias = '{nb}')
+	{
+		// Define an alias for total number of pages
+		$this->aliasNbPg = $alias;
+	}
+
+	public function AliasNbPageGroups($alias = '{nbpg}')
+	{
+		// Define an alias for total number of pages in a group
+		$this->aliasNbPgGp = $alias;
+	}
+
+	function SetAlpha($alpha, $bm = 'Normal', $return = false, $mode = 'B')
+	{
+		// alpha: real value from 0 (transparent) to 1 (opaque)
+		// bm:    blend mode, one of the following:
+		//          Normal, Multiply, Screen, Overlay, Darken, Lighten, ColorDodge, ColorBurn,
+		//          HardLight, SoftLight, Difference, Exclusion, Hue, Saturation, Color, Luminosity
+		// set alpha for stroking (CA) and non-stroking (ca) operations
+		// mode determines F (fill) S (stroke) B (both)
+		if (($this->PDFA || $this->PDFX) && $alpha != 1) {
+			if (($this->PDFA && !$this->PDFAauto) || ($this->PDFX && !$this->PDFXauto)) {
+				$this->PDFAXwarnings[] = "Image opacity must be 100% (Opacity changed to 100%)";
+			}
+			$alpha = 1;
+		}
+		$a = ['BM' => '/' . $bm];
+		if ($mode == 'F' || $mode == 'B') {
+			$a['ca'] = $alpha; // mPDF 5.7.2
+		}
+		if ($mode == 'S' || $mode == 'B') {
+			$a['CA'] = $alpha; // mPDF 5.7.2
+		}
+		$gs = $this->AddExtGState($a);
+		if ($return) {
+			return sprintf('/GS%d gs', $gs);
+		} else {
+			$this->writer->write(sprintf('/GS%d gs', $gs));
+		}
+	}
+
+	function AddExtGState($parms)
+	{
+		$n = count($this->extgstates);
+		// check if graphics state already exists
+		for ($i = 1; $i <= $n; $i++) {
+			if (count($this->extgstates[$i]['parms']) == count($parms)) {
+				$same = true;
+				foreach ($this->extgstates[$i]['parms'] as $k => $v) {
+					if (!isset($parms[$k]) || $parms[$k] != $v) {
+						$same = false;
+						break;
+					}
+				}
+				if ($same) {
+					return $i;
+				}
+			}
+		}
+		$n++;
+		$this->extgstates[$n]['parms'] = $parms;
+		return $n;
+	}
+
+	function SetVisibility($v)
+	{
+		if (($this->PDFA || $this->PDFX) && $this->visibility != 'visible') {
+			$this->PDFAXwarnings[] = "Cannot set visibility to anything other than full when using PDFA or PDFX";
+			return '';
+		} elseif (!$this->PDFA && !$this->PDFX) {
+			$this->pdf_version = '1.5';
+		}
+		if ($this->visibility != 'visible') {
+			$this->writer->write('EMC');
+			$this->hasOC = intval($this->hasOC);
+		}
+		if ($v == 'printonly') {
+			$this->writer->write('/OC /OC1 BDC');
+			$this->hasOC = ($this->hasOC | 1);
+		} elseif ($v == 'screenonly') {
+			$this->writer->write('/OC /OC2 BDC');
+			$this->hasOC = ($this->hasOC | 2);
+		} elseif ($v == 'hidden') {
+			$this->writer->write('/OC /OC3 BDC');
+			$this->hasOC = ($this->hasOC | 4);
+		} elseif ($v != 'visible') {
+			throw new \Mpdf\MpdfException('Incorrect visibility: ' . $v);
+		}
+		$this->visibility = $v;
+	}
+
+	function Open()
+	{
+		// Begin document
+		if ($this->state == 0) {
+			// Was is function _begindoc()
+			// Start document
+			$this->state = 1;
+			$this->writer->write('%PDF-' . $this->pdf_version);
+			$this->writer->write('%' . chr(226) . chr(227) . chr(207) . chr(211)); // 4 chars > 128 to show binary file
+		}
+	}
+
+	function Close()
+	{
+		// @log Closing last page
+
+		// Terminate document
+		if ($this->state == 3) {
+			return;
+		}
+		if ($this->page == 0) {
+			$this->AddPage($this->CurOrientation);
+		}
+		if (count($this->cellBorderBuffer)) {
+			$this->printcellbuffer();
+		} // *TABLES*
+		if ($this->tablebuffer) {
+			$this->printtablebuffer();
+		} // *TABLES*
+		/* -- COLUMNS -- */
+
+		if ($this->ColActive) {
+			$this->SetColumns(0);
+			$this->ColActive = 0;
+			if (count($this->columnbuffer)) {
+				$this->printcolumnbuffer();
+			}
+		}
+		/* -- END COLUMNS -- */
+
+		// BODY Backgrounds
+		$s = '';
+
+		$s .= $this->PrintBodyBackgrounds();
+		$s .= $this->PrintPageBackgrounds();
+
+		$this->pages[$this->page] = preg_replace(
+			'/(___BACKGROUND___PATTERNS' . $this->uniqstr . ')/',
+			"\n" . $s . "\n" . '\\1',
+			$this->pages[$this->page]
+		);
+
+		$this->pageBackgrounds = [];
+
+		if ($this->visibility != 'visible') {
+			$this->SetVisibility('visible');
+		}
+
+		$this->EndLayer();
+
+		if (!$this->tableOfContents->TOCmark) { // Page footer
+			$this->InFooter = true;
+			$this->Footer();
+			$this->InFooter = false;
+		}
+
+		if ($this->tableOfContents->TOCmark || count($this->tableOfContents->m_TOC)) {
+			$this->tableOfContents->insertTOC();
+		}
+
+		// *TOC*
+		// Close page
+		$this->_endpage();
+
+		// Close document
+		$this->_enddoc();
+	}
+
+	/* -- BACKGROUNDS -- */
+
+	function _resizeBackgroundImage($imw, $imh, $cw, $ch, $resize, $repx, $repy, $pba = [], $size = [])
+	{
+		// pba is background positioning area (from CSS background-origin) may not always be set [x,y,w,h]
+		// size is from CSS3 background-size - takes precendence over old resize
+		// $w - absolute length or % or auto or cover | contain
+		// $h - absolute length or % or auto or cover | contain
+		if (isset($pba['w'])) {
+			$cw = $pba['w'];
+		}
+		if (isset($pba['h'])) {
+			$ch = $pba['h'];
+		}
+
+		$cw = $cw * Mpdf::SCALE;
+		$ch = $ch * Mpdf::SCALE;
+		if (empty($size) && !$resize) {
+			return [$imw, $imh, $repx, $repy];
+		}
+
+		if (isset($size['w']) && $size['w']) {
+			if ($size['w'] == 'contain') {
+				// Scale the image, while preserving its intrinsic aspect ratio (if any),
+				// to the largest size such that both its width and its height can fit inside the background positioning area.
+				// Same as resize==3
+				$h = $imh * $cw / $imw;
+				$w = $cw;
+				if ($h > $ch) {
+					$w = $w * $ch / $h;
+					$h = $ch;
+				}
+			} elseif ($size['w'] == 'cover') {
+				// Scale the image, while preserving its intrinsic aspect ratio (if any),
+				// to the smallest size such that both its width and its height can completely cover the background positioning area.
+				$h = $imh * $cw / $imw;
+				$w = $cw;
+				if ($h < $ch) {
+					$w = $w * $h / $ch;
+					$h = $ch;
+				}
+			} else {
+				if (stristr($size['w'], '%')) {
+					$size['w'] = (float) $size['w'];
+					$size['w'] /= 100;
+					$size['w'] = ($cw * $size['w']);
+				}
+				if (stristr($size['h'], '%')) {
+					$size['h'] = (float) $size['h'];
+					$size['h'] /= 100;
+					$size['h'] = ($ch * $size['h']);
+				}
+				if ($size['w'] == 'auto' && $size['h'] == 'auto') {
+					$w = $imw;
+					$h = $imh;
+				} elseif ($size['w'] == 'auto' && $size['h'] != 'auto') {
+					$w = $imw * $size['h'] / $imh;
+					$h = $size['h'];
+				} elseif ($size['w'] != 'auto' && $size['h'] == 'auto') {
+					$h = $imh * $size['w'] / $imw;
+					$w = $size['w'];
+				} else {
+					$w = $size['w'];
+					$h = $size['h'];
+				}
+			}
+			return [$w, $h, $repx, $repy];
+		} elseif ($resize == 1 && $imw > $cw) {
+			$h = $imh * $cw / $imw;
+			return [$cw, $h, $repx, $repy];
+		} elseif ($resize == 2 && $imh > $ch) {
+			$w = $imw * $ch / $imh;
+			return [$w, $ch, $repx, $repy];
+		} elseif ($resize == 3) {
+			$w = $imw;
+			$h = $imh;
+			if ($w > $cw) {
+				$h = $h * $cw / $w;
+				$w = $cw;
+			}
+			if ($h > $ch) {
+				$w = $w * $ch / $h;
+				$h = $ch;
+			}
+			return [$w, $h, $repx, $repy];
+		} elseif ($resize == 4) {
+			$h = $imh * $cw / $imw;
+			return [$cw, $h, $repx, $repy];
+		} elseif ($resize == 5) {
+			$w = $imw * $ch / $imh;
+			return [$w, $ch, $repx, $repy];
+		} elseif ($resize == 6) {
+			return [$cw, $ch, $repx, $repy];
+		}
+		return [$imw, $imh, $repx, $repy];
+	}
+
+	function SetBackground(&$properties, &$maxwidth)
+	{
+		if (isset($properties['BACKGROUND-ORIGIN']) && ($properties['BACKGROUND-ORIGIN'] == 'border-box' || $properties['BACKGROUND-ORIGIN'] == 'content-box')) {
+			$origin = $properties['BACKGROUND-ORIGIN'];
+		} else {
+			$origin = 'padding-box';
+		}
+
+		if (isset($properties['BACKGROUND-SIZE'])) {
+			if (stristr($properties['BACKGROUND-SIZE'], 'contain')) {
+				$bsw = $bsh = 'contain';
+			} elseif (stristr($properties['BACKGROUND-SIZE'], 'cover')) {
+				$bsw = $bsh = 'cover';
+			} else {
+				$bsw = $bsh = 'auto';
+				$sz = preg_split('/\s+/', trim($properties['BACKGROUND-SIZE']));
+				if (count($sz) == 2) {
+					$bsw = $sz[0];
+					$bsh = $sz[1];
+				} else {
+					$bsw = $sz[0];
+				}
+				if (!stristr($bsw, '%') && !stristr($bsw, 'auto')) {
+					$bsw = $this->sizeConverter->convert($bsw, $maxwidth, $this->FontSize);
+				}
+				if (!stristr($bsh, '%') && !stristr($bsh, 'auto')) {
+					$bsh = $this->sizeConverter->convert($bsh, $maxwidth, $this->FontSize);
+				}
+			}
+			$size = ['w' => $bsw, 'h' => $bsh];
+		} else {
+			$size = false;
+		} // mPDF 6
+		if (preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient/', $properties['BACKGROUND-IMAGE'])) {
+			return ['gradient' => $properties['BACKGROUND-IMAGE'], 'origin' => $origin, 'size' => $size];
+		} else {
+			$file = $properties['BACKGROUND-IMAGE'];
+			$sizesarray = $this->Image($file, 0, 0, 0, 0, '', '', false, false, false, false, true);
+			if (isset($sizesarray['IMAGE_ID'])) {
+				$image_id = $sizesarray['IMAGE_ID'];
+				$orig_w = $sizesarray['WIDTH'] * Mpdf::SCALE;  // in user units i.e. mm
+				$orig_h = $sizesarray['HEIGHT'] * Mpdf::SCALE;  // (using $this->img_dpi)
+				if (isset($properties['BACKGROUND-IMAGE-RESOLUTION'])) {
+					if (preg_match('/from-image/i', $properties['BACKGROUND-IMAGE-RESOLUTION']) && isset($sizesarray['set-dpi']) && $sizesarray['set-dpi'] > 0) {
+						$orig_w *= $this->img_dpi / $sizesarray['set-dpi'];
+						$orig_h *= $this->img_dpi / $sizesarray['set-dpi'];
+					} elseif (preg_match('/(\d+)dpi/i', $properties['BACKGROUND-IMAGE-RESOLUTION'], $m)) {
+						$dpi = $m[1];
+						if ($dpi > 0) {
+							$orig_w *= $this->img_dpi / $dpi;
+							$orig_h *= $this->img_dpi / $dpi;
+						}
+					}
+				}
+				$x_repeat = true;
+				$y_repeat = true;
+				if (isset($properties['BACKGROUND-REPEAT'])) {
+					if ($properties['BACKGROUND-REPEAT'] == 'no-repeat' || $properties['BACKGROUND-REPEAT'] == 'repeat-x') {
+						$y_repeat = false;
+					}
+					if ($properties['BACKGROUND-REPEAT'] == 'no-repeat' || $properties['BACKGROUND-REPEAT'] == 'repeat-y') {
+						$x_repeat = false;
+					}
+				}
+				$x_pos = 0;
+				$y_pos = 0;
+				if (isset($properties['BACKGROUND-POSITION'])) {
+					$ppos = preg_split('/\s+/', $properties['BACKGROUND-POSITION']);
+					$x_pos = $ppos[0];
+					$y_pos = $ppos[1];
+					if (!stristr($x_pos, '%')) {
+						$x_pos = $this->sizeConverter->convert($x_pos, $maxwidth, $this->FontSize);
+					}
+					if (!stristr($y_pos, '%')) {
+						$y_pos = $this->sizeConverter->convert($y_pos, $maxwidth, $this->FontSize);
+					}
+				}
+				if (isset($properties['BACKGROUND-IMAGE-RESIZE'])) {
+					$resize = $properties['BACKGROUND-IMAGE-RESIZE'];
+				} else {
+					$resize = 0;
+				}
+				if (isset($properties['BACKGROUND-IMAGE-OPACITY'])) {
+					$opacity = $properties['BACKGROUND-IMAGE-OPACITY'];
+				} else {
+					$opacity = 1;
+				}
+				return ['image_id' => $image_id, 'orig_w' => $orig_w, 'orig_h' => $orig_h, 'x_pos' => $x_pos, 'y_pos' => $y_pos, 'x_repeat' => $x_repeat, 'y_repeat' => $y_repeat, 'resize' => $resize, 'opacity' => $opacity, 'itype' => $sizesarray['itype'], 'origin' => $origin, 'size' => $size];
+			}
+		}
+		return false;
+	}
+
+	/* -- END BACKGROUNDS -- */
+
+	function PrintBodyBackgrounds()
+	{
+		$s = '';
+		$clx = 0;
+		$cly = 0;
+		$clw = $this->w;
+		$clh = $this->h;
+		// If using bleed and trim margins in paged media
+		if ($this->pageDim[$this->page]['outer_width_LR'] || $this->pageDim[$this->page]['outer_width_TB']) {
+			$clx = $this->pageDim[$this->page]['outer_width_LR'] - $this->pageDim[$this->page]['bleedMargin'];
+			$cly = $this->pageDim[$this->page]['outer_width_TB'] - $this->pageDim[$this->page]['bleedMargin'];
+			$clw = $this->w - 2 * $clx;
+			$clh = $this->h - 2 * $cly;
+		}
+
+		if ($this->bodyBackgroundColor) {
+			$s .= 'q ' . $this->SetFColor($this->bodyBackgroundColor, true) . "\n";
+			if ($this->bodyBackgroundColor[0] == 5) { // RGBa
+				$s .= $this->SetAlpha(ord($this->bodyBackgroundColor[4]) / 100, 'Normal', true, 'F') . "\n";
+			} elseif ($this->bodyBackgroundColor[0] == 6) { // CMYKa
+				$s .= $this->SetAlpha(ord($this->bodyBackgroundColor[5]) / 100, 'Normal', true, 'F') . "\n";
+			}
+			$s .= sprintf('%.3F %.3F %.3F %.3F re f Q', ($clx * Mpdf::SCALE), ($cly * Mpdf::SCALE), $clw * Mpdf::SCALE, $clh * Mpdf::SCALE) . "\n";
+		}
+
+		/* -- BACKGROUNDS -- */
+		if ($this->bodyBackgroundGradient) {
+			$g = $this->gradient->parseBackgroundGradient($this->bodyBackgroundGradient);
+			if ($g) {
+				$s .= $this->gradient->Gradient($clx, $cly, $clw, $clh, (isset($g['gradtype']) ? $g['gradtype'] : null), $g['stops'], $g['colorspace'], $g['coords'], $g['extend'], true);
+			}
+		}
+		if ($this->bodyBackgroundImage) {
+			if (isset($this->bodyBackgroundImage['gradient']) && $this->bodyBackgroundImage['gradient'] && preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient/', $this->bodyBackgroundImage['gradient'])) {
+				$g = $this->gradient->parseMozGradient($this->bodyBackgroundImage['gradient']);
+				if ($g) {
+					$s .= $this->gradient->Gradient($clx, $cly, $clw, $clh, $g['type'], $g['stops'], $g['colorspace'], $g['coords'], $g['extend'], true);
+				}
+			} elseif ($this->bodyBackgroundImage['image_id']) { // Background pattern
+				$n = count($this->patterns) + 1;
+				// If using resize, uses TrimBox (not including the bleed)
+				list($orig_w, $orig_h, $x_repeat, $y_repeat) = $this->_resizeBackgroundImage($this->bodyBackgroundImage['orig_w'], $this->bodyBackgroundImage['orig_h'], $clw, $clh, $this->bodyBackgroundImage['resize'], $this->bodyBackgroundImage['x_repeat'], $this->bodyBackgroundImage['y_repeat']);
+
+				$this->patterns[$n] = ['x' => $clx, 'y' => $cly, 'w' => $clw, 'h' => $clh, 'pgh' => $this->h, 'image_id' => $this->bodyBackgroundImage['image_id'], 'orig_w' => $orig_w, 'orig_h' => $orig_h, 'x_pos' => $this->bodyBackgroundImage['x_pos'], 'y_pos' => $this->bodyBackgroundImage['y_pos'], 'x_repeat' => $x_repeat, 'y_repeat' => $y_repeat, 'itype' => $this->bodyBackgroundImage['itype']];
+				if (($this->bodyBackgroundImage['opacity'] > 0 || $this->bodyBackgroundImage['opacity'] === '0') && $this->bodyBackgroundImage['opacity'] < 1) {
+					$opac = $this->SetAlpha($this->bodyBackgroundImage['opacity'], 'Normal', true);
+				} else {
+					$opac = '';
+				}
+				$s .= sprintf('q /Pattern cs /P%d scn %s %.3F %.3F %.3F %.3F re f Q', $n, $opac, ($clx * Mpdf::SCALE), ($cly * Mpdf::SCALE), $clw * Mpdf::SCALE, $clh * Mpdf::SCALE) . "\n";
+			}
+		}
+		/* -- END BACKGROUNDS -- */
+		return $s;
+	}
+
+	function _setClippingPath($clx, $cly, $clw, $clh)
+	{
+		$s = ' q 0 w '; // Line width=0
+		$s .= sprintf('%.3F %.3F m ', ($clx) * Mpdf::SCALE, ($this->h - ($cly)) * Mpdf::SCALE); // start point TL before the arc
+		$s .= sprintf('%.3F %.3F l ', ($clx) * Mpdf::SCALE, ($this->h - ($cly + $clh)) * Mpdf::SCALE); // line to BL
+		$s .= sprintf('%.3F %.3F l ', ($clx + $clw) * Mpdf::SCALE, ($this->h - ($cly + $clh)) * Mpdf::SCALE); // line to BR
+		$s .= sprintf('%.3F %.3F l ', ($clx + $clw) * Mpdf::SCALE, ($this->h - ($cly)) * Mpdf::SCALE); // line to TR
+		$s .= sprintf('%.3F %.3F l ', ($clx) * Mpdf::SCALE, ($this->h - ($cly)) * Mpdf::SCALE); // line to TL
+		$s .= ' W n '; // Ends path no-op & Sets the clipping path
+		return $s;
+	}
+
+	function PrintPageBackgrounds($adjustmenty = 0)
+	{
+		$s = '';
+
+		ksort($this->pageBackgrounds);
+
+		foreach ($this->pageBackgrounds as $bl => $pbs) {
+
+			foreach ($pbs as $pb) {
+
+				if ((!isset($pb['image_id']) && !isset($pb['gradient'])) || isset($pb['shadowonly'])) { // Background colour or boxshadow
+
+					if ($pb['z-index'] > 0) {
+						$this->current_layer = $pb['z-index'];
+						$s .= "\n" . '/OCBZ-index /ZI' . $pb['z-index'] . ' BDC' . "\n";
+					}
+
+					if ($pb['visibility'] != 'visible') {
+						if ($pb['visibility'] == 'printonly') {
+							$s .= '/OC /OC1 BDC' . "\n";
+						} elseif ($pb['visibility'] == 'screenonly') {
+							$s .= '/OC /OC2 BDC' . "\n";
+						} elseif ($pb['visibility'] == 'hidden') {
+							$s .= '/OC /OC3 BDC' . "\n";
+						}
+					}
+
+					// Box shadow
+					if (isset($pb['shadow']) && $pb['shadow']) {
+						$s .= $pb['shadow'] . "\n";
+					}
+
+					if (isset($pb['clippath']) && $pb['clippath']) {
+						$s .= $pb['clippath'] . "\n";
+					}
+
+					$s .= 'q ' . $this->SetFColor($pb['col'], true) . "\n";
+
+					if ($pb['col'] && $pb['col'][0] === '5') { // RGBa
+						$s .= $this->SetAlpha(ord($pb['col'][4]) / 100, 'Normal', true, 'F') . "\n";
+					} elseif ($pb['col'] && $pb['col'][0] === '6') { // CMYKa
+						$s .= $this->SetAlpha(ord($pb['col'][5]) / 100, 'Normal', true, 'F') . "\n";
+					}
+
+					$s .= sprintf('%.3F %.3F %.3F %.3F re f Q', $pb['x'] * Mpdf::SCALE, ($this->h - $pb['y']) * Mpdf::SCALE, $pb['w'] * Mpdf::SCALE, -$pb['h'] * Mpdf::SCALE) . "\n";
+
+					if (isset($pb['clippath']) && $pb['clippath']) {
+						$s .= 'Q' . "\n";
+					}
+
+					if ($pb['visibility'] != 'visible') {
+						$s .= 'EMC' . "\n";
+					}
+
+					if ($pb['z-index'] > 0) {
+						$s .= "\n" . 'EMCBZ-index' . "\n";
+						$this->current_layer = 0;
+					}
+				}
+			}
+
+			/* -- BACKGROUNDS -- */
+			foreach ($pbs as $pb) {
+
+				if ((isset($pb['gradient']) && $pb['gradient']) || (isset($pb['image_id']) && $pb['image_id'])) {
+
+					if ($pb['z-index'] > 0) {
+						$this->current_layer = $pb['z-index'];
+						$s .= "\n" . '/OCGZ-index /ZI' . $pb['z-index'] . ' BDC' . "\n";
+					}
+
+					if ($pb['visibility'] != 'visible') {
+						if ($pb['visibility'] == 'printonly') {
+							$s .= '/OC /OC1 BDC' . "\n";
+						} elseif ($pb['visibility'] == 'screenonly') {
+							$s .= '/OC /OC2 BDC' . "\n";
+						} elseif ($pb['visibility'] == 'hidden') {
+							$s .= '/OC /OC3 BDC' . "\n";
+						}
+					}
+
+				}
+
+				if (isset($pb['gradient']) && $pb['gradient']) {
+
+					if (isset($pb['clippath']) && $pb['clippath']) {
+						$s .= $pb['clippath'] . "\n";
+					}
+
+					$s .= $this->gradient->Gradient($pb['x'], $pb['y'], $pb['w'], $pb['h'], $pb['gradtype'], $pb['stops'], $pb['colorspace'], $pb['coords'], $pb['extend'], true);
+
+					if (isset($pb['clippath']) && $pb['clippath']) {
+						$s .= 'Q' . "\n";
+					}
+
+				} elseif (isset($pb['image_id']) && $pb['image_id']) { // Background Image
+
+					$pb['y'] -= $adjustmenty;
+					$pb['h'] += $adjustmenty;
+					$n = count($this->patterns) + 1;
+
+					list($orig_w, $orig_h, $x_repeat, $y_repeat) = $this->_resizeBackgroundImage($pb['orig_w'], $pb['orig_h'], $pb['w'], $pb['h'], $pb['resize'], $pb['x_repeat'], $pb['y_repeat'], $pb['bpa'], $pb['size']);
+
+					$this->patterns[$n] = ['x' => $pb['x'], 'y' => $pb['y'], 'w' => $pb['w'], 'h' => $pb['h'], 'pgh' => $this->h, 'image_id' => $pb['image_id'], 'orig_w' => $orig_w, 'orig_h' => $orig_h, 'x_pos' => $pb['x_pos'], 'y_pos' => $pb['y_pos'], 'x_repeat' => $x_repeat, 'y_repeat' => $y_repeat, 'itype' => $pb['itype'], 'bpa' => $pb['bpa']];
+
+					$x = $pb['x'] * Mpdf::SCALE;
+					$y = ($this->h - $pb['y']) * Mpdf::SCALE;
+					$w = $pb['w'] * Mpdf::SCALE;
+					$h = -$pb['h'] * Mpdf::SCALE;
+
+					if (isset($pb['clippath']) && $pb['clippath']) {
+						$s .= $pb['clippath'] . "\n";
+					}
+
+					if ($this->writingHTMLfooter || $this->writingHTMLheader) { // Write each (tiles) image rather than use as a pattern
+
+						$iw = $pb['orig_w'] / Mpdf::SCALE;
+						$ih = $pb['orig_h'] / Mpdf::SCALE;
+
+						$w = $pb['w'];
+						$h = $pb['h'];
+						$x0 = $pb['x'];
+						$y0 = $pb['y'];
+
+						if (isset($pb['bpa']) && $pb['bpa']) {
+							$w = $pb['bpa']['w'];
+							$h = $pb['bpa']['h'];
+							$x0 = $pb['bpa']['x'];
+							$y0 = $pb['bpa']['y'];
+						}
+
+						if (isset($pb['size']['w']) && $pb['size']['w']) {
+							$size = $pb['size'];
+
+							if ($size['w'] == 'contain') {
+								// Scale the image, while preserving its intrinsic aspect ratio (if any), to the largest
+								// size such that both its width and its height can fit inside the background positioning area.
+								// Same as resize==3
+								$ih = $ih * $pb['bpa']['w'] / $iw;
+								$iw = $pb['bpa']['w'];
+								if ($ih > $pb['bpa']['h']) {
+									$iw = $iw * $pb['bpa']['h'] / $ih;
+									$ih = $pb['bpa']['h'];
+								}
+							} elseif ($size['w'] == 'cover') {
+								// Scale the image, while preserving its intrinsic aspect ratio (if any), to the smallest
+								// size such that both its width and its height can completely cover the background positioning area.
+								$ih = $ih * $pb['bpa']['w'] / $iw;
+								$iw = $pb['bpa']['w'];
+								if ($ih < $pb['bpa']['h']) {
+									$iw = $iw * $ih / $pb['bpa']['h'];
+									$ih = $pb['bpa']['h'];
+								}
+							} else {
+
+								if (NumericString::containsPercentChar($size['w'])) {
+									$size['w'] = NumericString::removePercentChar($size['w']);
+									$size['w'] /= 100;
+									$size['w'] = ($pb['bpa']['w'] * $size['w']);
+								}
+
+								if (NumericString::containsPercentChar($size['h'])) {
+									$size['h'] = NumericString::removePercentChar($size['h']);
+									$size['h'] /= 100;
+									$size['h'] = ($pb['bpa']['h'] * $size['h']);
+								}
+
+								if ($size['w'] == 'auto' && $size['h'] == 'auto') {
+									$iw = $iw;
+									$ih = $ih;
+								} elseif ($size['w'] == 'auto' && $size['h'] != 'auto') {
+									$iw = $iw * $size['h'] / $ih;
+									$ih = $size['h'];
+								} elseif ($size['w'] != 'auto' && $size['h'] == 'auto') {
+									$ih = $ih * $size['w'] / $iw;
+									$iw = $size['w'];
+								} else {
+									$iw = $size['w'];
+									$ih = $size['h'];
+								}
+							}
+						}
+
+						// Number to repeat
+						if ($pb['x_repeat']) {
+							$nx = ceil($pb['w'] / $iw) + 1;
+						} else {
+							$nx = 1;
+						}
+
+						if ($pb['y_repeat']) {
+							$ny = ceil($pb['h'] / $ih) + 1;
+						} else {
+							$ny = 1;
+						}
+
+						$x_pos = $pb['x_pos'];
+						if (stristr($x_pos, '%')) {
+							$x_pos = (float) $x_pos;
+							$x_pos /= 100;
+							$x_pos = ($pb['bpa']['w'] * $x_pos) - ($iw * $x_pos);
+						}
+
+						$y_pos = $pb['y_pos'];
+
+						if (stristr($y_pos, '%')) {
+							$y_pos = (float) $y_pos;
+							$y_pos /= 100;
+							$y_pos = ($pb['bpa']['h'] * $y_pos) - ($ih * $y_pos);
+						}
+
+						if ($nx > 1) {
+							while ($x_pos > ($pb['x'] - $pb['bpa']['x'])) {
+								$x_pos -= $iw;
+							}
+						}
+
+						if ($ny > 1) {
+							while ($y_pos > ($pb['y'] - $pb['bpa']['y'])) {
+								$y_pos -= $ih;
+							}
+						}
+
+						for ($xi = 0; $xi < $nx; $xi++) {
+							for ($yi = 0; $yi < $ny; $yi++) {
+								$x = $x0 + $x_pos + ($iw * $xi);
+								$y = $y0 + $y_pos + ($ih * $yi);
+								if ($pb['opacity'] > 0 && $pb['opacity'] < 1) {
+									$opac = $this->SetAlpha($pb['opacity'], 'Normal', true);
+								} else {
+									$opac = '';
+								}
+								$s .= sprintf("q %s %.3F 0 0 %.3F %.3F %.3F cm /I%d Do Q", $opac, $iw * Mpdf::SCALE, $ih * Mpdf::SCALE, $x * Mpdf::SCALE, ($this->h - ($y + $ih)) * Mpdf::SCALE, $pb['image_id']) . "\n";
+							}
+						}
+
+					} else {
+						if (($pb['opacity'] > 0 || $pb['opacity'] === '0') && $pb['opacity'] < 1) {
+							$opac = $this->SetAlpha($pb['opacity'], 'Normal', true);
+						} else {
+							$opac = '';
+						}
+						$s .= sprintf('q /Pattern cs /P%d scn %s %.3F %.3F %.3F %.3F re f Q', $n, $opac, $x, $y, $w, $h) . "\n";
+					}
+
+					if (isset($pb['clippath']) && $pb['clippath']) {
+						$s .= 'Q' . "\n";
+					}
+				}
+
+				if ((isset($pb['gradient']) && $pb['gradient']) || (isset($pb['image_id']) && $pb['image_id'])) {
+					if ($pb['visibility'] != 'visible') {
+						$s .= 'EMC' . "\n";
+					}
+
+					if ($pb['z-index'] > 0) {
+						$s .= "\n" . 'EMCGZ-index' . "\n";
+						$this->current_layer = 0;
+					}
+				}
+			}
+			/* -- END BACKGROUNDS -- */
+		}
+
+		return $s;
+	}
+
+	function PrintTableBackgrounds($adjustmenty = 0)
+	{
+		$s = '';
+		/* -- BACKGROUNDS -- */
+		ksort($this->tableBackgrounds);
+		foreach ($this->tableBackgrounds as $bl => $pbs) {
+			foreach ($pbs as $pb) {
+				if ((!isset($pb['gradient']) || !$pb['gradient']) && (!isset($pb['image_id']) || !$pb['image_id'])) {
+					$s .= 'q ' . $this->SetFColor($pb['col'], true) . "\n";
+					if ($pb['col'][0] == 5) { // RGBa
+						$s .= $this->SetAlpha(ord($pb['col'][4]) / 100, 'Normal', true, 'F') . "\n";
+					} elseif ($pb['col'][0] == 6) { // CMYKa
+						$s .= $this->SetAlpha(ord($pb['col'][5]) / 100, 'Normal', true, 'F') . "\n";
+					}
+					$s .= sprintf('%.3F %.3F %.3F %.3F re %s Q', $pb['x'] * Mpdf::SCALE, ($this->h - $pb['y']) * Mpdf::SCALE, $pb['w'] * Mpdf::SCALE, -$pb['h'] * Mpdf::SCALE, 'f') . "\n";
+				}
+				if (isset($pb['gradient']) && $pb['gradient']) {
+					if (isset($pb['clippath']) && $pb['clippath']) {
+						$s .= $pb['clippath'] . "\n";
+					}
+					$s .= $this->gradient->Gradient($pb['x'], $pb['y'], $pb['w'], $pb['h'], $pb['gradtype'], $pb['stops'], $pb['colorspace'], $pb['coords'], $pb['extend'], true);
+					if (isset($pb['clippath']) && $pb['clippath']) {
+						$s .= 'Q' . "\n";
+					}
+				}
+				if (isset($pb['image_id']) && $pb['image_id']) { // Background pattern
+					$pb['y'] -= $adjustmenty;
+					$pb['h'] += $adjustmenty;
+					$n = count($this->patterns) + 1;
+					list($orig_w, $orig_h, $x_repeat, $y_repeat) = $this->_resizeBackgroundImage($pb['orig_w'], $pb['orig_h'], $pb['w'], $pb['h'], $pb['resize'], $pb['x_repeat'], $pb['y_repeat']);
+					$this->patterns[$n] = ['x' => $pb['x'], 'y' => $pb['y'], 'w' => $pb['w'], 'h' => $pb['h'], 'pgh' => $this->h, 'image_id' => $pb['image_id'], 'orig_w' => $orig_w, 'orig_h' => $orig_h, 'x_pos' => $pb['x_pos'], 'y_pos' => $pb['y_pos'], 'x_repeat' => $x_repeat, 'y_repeat' => $y_repeat, 'itype' => $pb['itype']];
+					$x = $pb['x'] * Mpdf::SCALE;
+					$y = ($this->h - $pb['y']) * Mpdf::SCALE;
+					$w = $pb['w'] * Mpdf::SCALE;
+					$h = -$pb['h'] * Mpdf::SCALE;
+
+					// mPDF 5.7.3
+					if (($this->writingHTMLfooter || $this->writingHTMLheader) && (!isset($pb['clippath']) || $pb['clippath'] == '')) {
+						// Set clipping path
+						$pb['clippath'] = sprintf(' q 0 w %.3F %.3F m %.3F %.3F l %.3F %.3F l %.3F %.3F l %.3F %.3F l W n ', $x, $y, $x, $y + $h, $x + $w, $y + $h, $x + $w, $y, $x, $y);
+					}
+
+					if (isset($pb['clippath']) && $pb['clippath']) {
+						$s .= $pb['clippath'] . "\n";
+					}
+
+					// mPDF 5.7.3
+					if ($this->writingHTMLfooter || $this->writingHTMLheader) { // Write each (tiles) image rather than use as a pattern
+						$iw = $pb['orig_w'] / Mpdf::SCALE;
+						$ih = $pb['orig_h'] / Mpdf::SCALE;
+
+						$w = $pb['w'];
+						$h = $pb['h'];
+						$x0 = $pb['x'];
+						$y0 = $pb['y'];
+
+						if (isset($pb['bpa']) && $pb['bpa']) {
+							$w = $pb['bpa']['w'];
+							$h = $pb['bpa']['h'];
+							$x0 = $pb['bpa']['x'];
+							$y0 = $pb['bpa']['y'];
+						} // At present 'bpa' (background page area) is not set for tablebackgrounds - only pagebackgrounds
+						// For now, just set it as:
+						else {
+							$pb['bpa'] = ['x' => $x0, 'y' => $y0, 'w' => $w, 'h' => $h];
+						}
+
+						if (isset($pb['size']['w']) && $pb['size']['w']) {
+							$size = $pb['size'];
+
+							if ($size['w'] == 'contain') {
+								// Scale the image, while preserving its intrinsic aspect ratio (if any), to the largest size such that both its width and its height can fit inside the background positioning area.
+								// Same as resize==3
+								$ih = $ih * $pb['bpa']['w'] / $iw;
+								$iw = $pb['bpa']['w'];
+								if ($ih > $pb['bpa']['h']) {
+									$iw = $iw * $pb['bpa']['h'] / $ih;
+									$ih = $pb['bpa']['h'];
+								}
+							} elseif ($size['w'] == 'cover') {
+								// Scale the image, while preserving its intrinsic aspect ratio (if any), to the smallest size such that both its width and its height can completely cover the background positioning area.
+								$ih = $ih * $pb['bpa']['w'] / $iw;
+								$iw = $pb['bpa']['w'];
+								if ($ih < $pb['bpa']['h']) {
+									$iw = $iw * $ih / $pb['bpa']['h'];
+									$ih = $pb['bpa']['h'];
+								}
+							} else {
+								if (NumericString::containsPercentChar($size['w'])) {
+									$size['w'] = NumericString::removePercentChar($size['w']);
+									$size['w'] /= 100;
+									$size['w'] = ($pb['bpa']['w'] * $size['w']);
+								}
+								if (NumericString::containsPercentChar($size['h'])) {
+									$size['h'] = NumericString::removePercentChar($size['h']);
+									$size['h'] /= 100;
+									$size['h'] = ($pb['bpa']['h'] * $size['h']);
+								}
+								if ($size['w'] == 'auto' && $size['h'] == 'auto') {
+									$iw = $iw;
+									$ih = $ih;
+								} elseif ($size['w'] == 'auto' && $size['h'] != 'auto') {
+									$iw = $iw * $size['h'] / $ih;
+									$ih = $size['h'];
+								} elseif ($size['w'] != 'auto' && $size['h'] == 'auto') {
+									$ih = $ih * $size['w'] / $iw;
+									$iw = $size['w'];
+								} else {
+									$iw = $size['w'];
+									$ih = $size['h'];
+								}
+							}
+						}
+
+						// Number to repeat
+						if (isset($pb['x_repeat']) && $pb['x_repeat']) {
+							$nx = ceil($pb['w'] / $iw) + 1;
+						} else {
+							$nx = 1;
+						}
+						if (isset($pb['y_repeat']) && $pb['y_repeat']) {
+							$ny = ceil($pb['h'] / $ih) + 1;
+						} else {
+							$ny = 1;
+						}
+
+						$x_pos = $pb['x_pos'];
+						if (NumericString::containsPercentChar($x_pos)) {
+							$x_pos = NumericString::removePercentChar($x_pos);
+							$x_pos /= 100;
+							$x_pos = ($pb['bpa']['w'] * $x_pos) - ($iw * $x_pos);
+						}
+						$y_pos = $pb['y_pos'];
+						if (NumericString::containsPercentChar($y_pos)) {
+							$y_pos = NumericString::removePercentChar($y_pos);
+							$y_pos /= 100;
+							$y_pos = ($pb['bpa']['h'] * $y_pos) - ($ih * $y_pos);
+						}
+						if ($nx > 1) {
+							while ($x_pos > ($pb['x'] - $pb['bpa']['x'])) {
+								$x_pos -= $iw;
+							}
+						}
+						if ($ny > 1) {
+							while ($y_pos > ($pb['y'] - $pb['bpa']['y'])) {
+								$y_pos -= $ih;
+							}
+						}
+						for ($xi = 0; $xi < $nx; $xi++) {
+							for ($yi = 0; $yi < $ny; $yi++) {
+								$x = $x0 + $x_pos + ($iw * $xi);
+								$y = $y0 + $y_pos + ($ih * $yi);
+								if ($pb['opacity'] > 0 && $pb['opacity'] < 1) {
+									$opac = $this->SetAlpha($pb['opacity'], 'Normal', true);
+								} else {
+									$opac = '';
+								}
+								$s .= sprintf("q %s %.3F 0 0 %.3F %.3F %.3F cm /I%d Do Q", $opac, $iw * Mpdf::SCALE, $ih * Mpdf::SCALE, $x * Mpdf::SCALE, ($this->h - ($y + $ih)) * Mpdf::SCALE, $pb['image_id']) . "\n";
+							}
+						}
+					} else {
+						if (($pb['opacity'] > 0 || $pb['opacity'] === '0') && $pb['opacity'] < 1) {
+							$opac = $this->SetAlpha($pb['opacity'], 'Normal', true);
+						} else {
+							$opac = '';
+						}
+						$s .= sprintf('q /Pattern cs /P%d scn %s %.3F %.3F %.3F %.3F re f Q', $n, $opac, $x, $y, $w, $h) . "\n";
+					}
+
+					if (isset($pb['clippath']) && $pb['clippath']) {
+						$s .= 'Q' . "\n";
+					}
+				}
+			}
+		}
+		/* -- END BACKGROUNDS -- */
+		return $s;
+	}
+
+	function BeginLayer($id)
+	{
+		if ($this->current_layer > 0) {
+			$this->EndLayer();
+		}
+		if ($id < 1) {
+			return false;
+		}
+		if (!isset($this->layers[$id])) {
+			$this->layers[$id] = ['name' => 'Layer ' . ($id)];
+			if (($this->PDFA || $this->PDFX)) {
+				$this->PDFAXwarnings[] = "Cannot use layers when using PDFA or PDFX";
+				return '';
+			} elseif (!$this->PDFA && !$this->PDFX) {
+				$this->pdf_version = '1.5';
+			}
+		}
+		$this->current_layer = $id;
+		$this->writer->write('/OCZ-index /ZI' . $id . ' BDC');
+
+		$this->pageoutput[$this->page] = [];
+	}
+
+	function EndLayer()
+	{
+		if ($this->current_layer > 0) {
+			$this->writer->write('EMCZ-index');
+			$this->current_layer = 0;
+		}
+	}
+
+	function AddPageByArray($a)
+	{
+		if (!is_array($a)) {
+			$a = [];
+		}
+
+		$orientation = (isset($a['orientation']) ? $a['orientation'] : '');
+		$condition = (isset($a['condition']) ? $a['condition'] : (isset($a['type']) ? $a['type'] : ''));
+		$resetpagenum = (isset($a['resetpagenum']) ? $a['resetpagenum'] : '');
+		$pagenumstyle = (isset($a['pagenumstyle']) ? $a['pagenumstyle'] : '');
+		$suppress = (isset($a['suppress']) ? $a['suppress'] : '');
+		$mgl = (isset($a['mgl']) ? $a['mgl'] : (isset($a['margin-left']) ? $a['margin-left'] : ''));
+		$mgr = (isset($a['mgr']) ? $a['mgr'] : (isset($a['margin-right']) ? $a['margin-right'] : ''));
+		$mgt = (isset($a['mgt']) ? $a['mgt'] : (isset($a['margin-top']) ? $a['margin-top'] : ''));
+		$mgb = (isset($a['mgb']) ? $a['mgb'] : (isset($a['margin-bottom']) ? $a['margin-bottom'] : ''));
+		$mgh = (isset($a['mgh']) ? $a['mgh'] : (isset($a['margin-header']) ? $a['margin-header'] : ''));
+		$mgf = (isset($a['mgf']) ? $a['mgf'] : (isset($a['margin-footer']) ? $a['margin-footer'] : ''));
+		$ohname = (isset($a['ohname']) ? $a['ohname'] : (isset($a['odd-header-name']) ? $a['odd-header-name'] : ''));
+		$ehname = (isset($a['ehname']) ? $a['ehname'] : (isset($a['even-header-name']) ? $a['even-header-name'] : ''));
+		$ofname = (isset($a['ofname']) ? $a['ofname'] : (isset($a['odd-footer-name']) ? $a['odd-footer-name'] : ''));
+		$efname = (isset($a['efname']) ? $a['efname'] : (isset($a['even-footer-name']) ? $a['even-footer-name'] : ''));
+		$ohvalue = (isset($a['ohvalue']) ? $a['ohvalue'] : (isset($a['odd-header-value']) ? $a['odd-header-value'] : 0));
+		$ehvalue = (isset($a['ehvalue']) ? $a['ehvalue'] : (isset($a['even-header-value']) ? $a['even-header-value'] : 0));
+		$ofvalue = (isset($a['ofvalue']) ? $a['ofvalue'] : (isset($a['odd-footer-value']) ? $a['odd-footer-value'] : 0));
+		$efvalue = (isset($a['efvalue']) ? $a['efvalue'] : (isset($a['even-footer-value']) ? $a['even-footer-value'] : 0));
+		$pagesel = (isset($a['pagesel']) ? $a['pagesel'] : (isset($a['pageselector']) ? $a['pageselector'] : ''));
+		$newformat = (isset($a['newformat']) ? $a['newformat'] : (isset($a['sheet-size']) ? $a['sheet-size'] : ''));
+
+		$this->AddPage($orientation, $condition, $resetpagenum, $pagenumstyle, $suppress, $mgl, $mgr, $mgt, $mgb, $mgh, $mgf, $ohname, $ehname, $ofname, $efname, $ohvalue, $ehvalue, $ofvalue, $efvalue, $pagesel, $newformat);
+	}
+
+	// mPDF 6 pagebreaktype
+	function _preForcedPagebreak($pagebreaktype)
+	{
+		if ($pagebreaktype == 'cloneall') {
+			// Close any open block tags
+			$arr = [];
+			$ai = 0;
+			for ($b = $this->blklvl; $b > 0; $b--) {
+				$this->tag->CloseTag($this->blk[$b]['tag'], $arr, $ai);
+			}
+			if ($this->blklvl == 0 && !empty($this->textbuffer)) { // Output previously buffered content
+				$this->printbuffer($this->textbuffer, 1);
+				$this->textbuffer = [];
+			}
+		} elseif ($pagebreaktype == 'clonebycss') {
+			// Close open block tags whilst box-decoration-break==clone
+			$arr = [];
+			$ai = 0;
+			for ($b = $this->blklvl; $b > 0; $b--) {
+				if (isset($this->blk[$b]['box_decoration_break']) && $this->blk[$b]['box_decoration_break'] == 'clone') {
+					$this->tag->CloseTag($this->blk[$b]['tag'], $arr, $ai);
+				} else {
+					if ($b == $this->blklvl && !empty($this->textbuffer)) { // Output previously buffered content
+						$this->printbuffer($this->textbuffer, 1);
+						$this->textbuffer = [];
+					}
+					break;
+				}
+			}
+		} elseif (!empty($this->textbuffer)) { // Output previously buffered content
+			$this->printbuffer($this->textbuffer, 1);
+			$this->textbuffer = [];
+		}
+	}
+
+	// mPDF 6 pagebreaktype
+	function _postForcedPagebreak($pagebreaktype, $startpage, $save_blk, $save_blklvl)
+	{
+		if ($pagebreaktype == 'cloneall') {
+			$this->blk = [];
+			$this->blk[0] = $save_blk[0];
+			// Re-open block tags
+			$this->blklvl = 0;
+			$arr = [];
+			$i = 0;
+			for ($b = 1; $b <= $save_blklvl; $b++) {
+				$this->tag->OpenTag($save_blk[$b]['tag'], $save_blk[$b]['attr'], $arr, $i);
+			}
+		} elseif ($pagebreaktype == 'clonebycss') {
+			$this->blk = [];
+			$this->blk[0] = $save_blk[0];
+			// Don't re-open tags for lowest level elements - so need to do some adjustments
+			for ($b = 1; $b <= $this->blklvl; $b++) {
+				$this->blk[$b] = $save_blk[$b];
+				$this->blk[$b]['startpage'] = 0;
+				$this->blk[$b]['y0'] = $this->y; // ?? $this->tMargin
+				if (($this->page - $startpage) % 2) {
+					if (isset($this->blk[$b]['x0'])) {
+						$this->blk[$b]['x0'] += $this->MarginCorrection;
+					} else {
+						$this->blk[$b]['x0'] = $this->MarginCorrection;
+					}
+				}
+				// for Float DIV
+				$this->blk[$b]['marginCorrected'][$this->page] = true;
+			}
+
+			// Re-open block tags for any that have box_decoration_break==clone
+			$arr = [];
+			$i = 0;
+			for ($b = $this->blklvl + 1; $b <= $save_blklvl; $b++) {
+				if ($b < $this->blklvl) {
+					$this->lastblocklevelchange = -1;
+				}
+				$this->tag->OpenTag($save_blk[$b]['tag'], $save_blk[$b]['attr'], $arr, $i);
+			}
+			if ($this->blk[$this->blklvl]['box_decoration_break'] != 'clone') {
+				$this->lastblocklevelchange = -1;
+			}
+		} else {
+			$this->lastblocklevelchange = -1;
+		}
+	}
+
+	function AddPage(
+		$orientation = '',
+		$condition = '',
+		$resetpagenum = '',
+		$pagenumstyle = '',
+		$suppress = '',
+		$mgl = '',
+		$mgr = '',
+		$mgt = '',
+		$mgb = '',
+		$mgh = '',
+		$mgf = '',
+		$ohname = '',
+		$ehname = '',
+		$ofname = '',
+		$efname = '',
+		$ohvalue = 0,
+		$ehvalue = 0,
+		$ofvalue = 0,
+		$efvalue = 0,
+		$pagesel = '',
+		$newformat = ''
+	) {
+		/* -- CSS-FLOAT -- */
+		// Float DIV
+		// Cannot do with columns on, or if any change in page orientation/margins etc.
+		// If next page already exists - i.e background /headers and footers already written
+		if ($this->state > 0 && $this->page < count($this->pages)) {
+			$bak_cml = $this->cMarginL;
+			$bak_cmr = $this->cMarginR;
+			$bak_dw = $this->divwidth;
+			// Paint Div Border if necessary
+			if ($this->blklvl > 0) {
+				$save_tr = $this->table_rotate; // *TABLES*
+				$this->table_rotate = 0; // *TABLES*
+				if (isset($this->blk[$this->blklvl]['y0']) && $this->y == $this->blk[$this->blklvl]['y0']) {
+					$this->blk[$this->blklvl]['startpage'] ++;
+				}
+				if ((isset($this->blk[$this->blklvl]['y0']) && $this->y > $this->blk[$this->blklvl]['y0']) || $this->flowingBlockAttr['is_table']) {
+					$toplvl = $this->blklvl;
+				} else {
+					$toplvl = $this->blklvl - 1;
+				}
+				$sy = $this->y;
+				for ($bl = 1; $bl <= $toplvl; $bl++) {
+					$this->PaintDivBB('pagebottom', 0, $bl);
+				}
+				$this->y = $sy;
+				$this->table_rotate = $save_tr; // *TABLES*
+			}
+			$s = $this->PrintPageBackgrounds();
+
+			// Writes after the marker so not overwritten later by page background etc.
+			$this->pages[$this->page] = preg_replace(
+				'/(___BACKGROUND___PATTERNS' . $this->uniqstr . ')/',
+				'\\1' . "\n" . $s . "\n",
+				$this->pages[$this->page]
+			);
+
+			$this->pageBackgrounds = [];
+			$family = $this->FontFamily;
+			$style = $this->FontStyle;
+			$size = $this->FontSizePt;
+			$lw = $this->LineWidth;
+			$dc = $this->DrawColor;
+			$fc = $this->FillColor;
+			$tc = $this->TextColor;
+			$cf = $this->ColorFlag;
+
+			$this->printfloatbuffer();
+
+			// Move to next page
+			$this->page++;
+
+			$this->ResetMargins();
+			$this->SetAutoPageBreak($this->autoPageBreak, $this->bMargin);
+			$this->x = $this->lMargin;
+			$this->y = $this->tMargin;
+			$this->FontFamily = '';
+			$this->writer->write('2 J');
+			$this->LineWidth = $lw;
+			$this->writer->write(sprintf('%.3F w', $lw * Mpdf::SCALE));
+
+			if ($family) {
+				$this->SetFont($family, $style, $size, true, true);
+			}
+
+			$this->DrawColor = $dc;
+
+			if ($dc != $this->defDrawColor) {
+				$this->writer->write($dc);
+			}
+
+			$this->FillColor = $fc;
+
+			if ($fc != $this->defFillColor) {
+				$this->writer->write($fc);
+			}
+
+			$this->TextColor = $tc;
+			$this->ColorFlag = $cf;
+
+			for ($bl = 1; $bl <= $this->blklvl; $bl++) {
+				$this->blk[$bl]['y0'] = $this->y;
+				// Don't correct more than once for background DIV containing a Float
+				if (!isset($this->blk[$bl]['marginCorrected'][$this->page])) {
+					if (isset($this->blk[$bl]['x0'])) {
+						$this->blk[$bl]['x0'] += $this->MarginCorrection;
+					} else {
+						$this->blk[$bl]['x0'] = $this->MarginCorrection;
+					}
+				}
+				$this->blk[$bl]['marginCorrected'][$this->page] = true;
+			}
+
+			$this->cMarginL = $bak_cml;
+			$this->cMarginR = $bak_cmr;
+			$this->divwidth = $bak_dw;
+
+			return '';
+		}
+		/* -- END CSS-FLOAT -- */
+
+		// Start a new page
+		if ($this->state == 0) {
+			$this->Open();
+		}
+
+		$bak_cml = $this->cMarginL;
+		$bak_cmr = $this->cMarginR;
+		$bak_dw = $this->divwidth;
+
+		$bak_lh = $this->lineheight;
+
+		$orientation = substr(strtoupper($orientation), 0, 1);
+		$condition = strtoupper($condition);
+
+
+		if ($condition == 'E') { // only adds new page if needed to create an Even page
+			if (!$this->mirrorMargins || ($this->page) % 2 == 0) {
+				return false;
+			}
+		} elseif ($condition == 'O') { // only adds new page if needed to create an Odd page
+			if (!$this->mirrorMargins || ($this->page) % 2 == 1) {
+				return false;
+			}
+		} elseif ($condition == 'NEXT-EVEN') { // always adds at least one new page to create an Even page
+			if (!$this->mirrorMargins) {
+				$condition = '';
+			} else {
+				if ($pagesel) {
+					$pbch = $pagesel;
+					$pagesel = '';
+				} // *CSS-PAGE*
+				else {
+					$pbch = false;
+				} // *CSS-PAGE*
+				$this->AddPage($this->CurOrientation, 'O');
+				$this->extrapagebreak = true; // mPDF 6 pagebreaktype
+				if ($pbch) {
+					$pagesel = $pbch;
+				} // *CSS-PAGE*
+				$condition = '';
+			}
+		} elseif ($condition == 'NEXT-ODD') { // always adds at least one new page to create an Odd page
+			if (!$this->mirrorMargins) {
+				$condition = '';
+			} else {
+				if ($pagesel) {
+					$pbch = $pagesel;
+					$pagesel = '';
+				} // *CSS-PAGE*
+				else {
+					$pbch = false;
+				} // *CSS-PAGE*
+				$this->AddPage($this->CurOrientation, 'E');
+				$this->extrapagebreak = true; // mPDF 6 pagebreaktype
+				if ($pbch) {
+					$pagesel = $pbch;
+				} // *CSS-PAGE*
+				$condition = '';
+			}
+		}
+
+		if ($resetpagenum || $pagenumstyle || $suppress) {
+			$this->PageNumSubstitutions[] = ['from' => ($this->page + 1), 'reset' => $resetpagenum, 'type' => $pagenumstyle, 'suppress' => $suppress];
+		}
+
+		$save_tr = $this->table_rotate; // *TABLES*
+		$this->table_rotate = 0; // *TABLES*
+		$save_kwt = $this->kwt;
+		$this->kwt = 0;
+		$save_layer = $this->current_layer;
+		$save_vis = $this->visibility;
+
+		if ($this->visibility != 'visible') {
+			$this->SetVisibility('visible');
+		}
+
+		$this->EndLayer();
+
+		// Paint Div Border if necessary
+		// PAINTS BACKGROUND COLOUR OR BORDERS for DIV - DISABLED FOR COLUMNS (cf. AcceptPageBreak) AT PRESENT in ->PaintDivBB
+		if (!$this->ColActive && $this->blklvl > 0) {
+			if (isset($this->blk[$this->blklvl]['y0']) && $this->y == $this->blk[$this->blklvl]['y0'] && !$this->extrapagebreak) { // mPDF 6 pagebreaktype
+				if (isset($this->blk[$this->blklvl]['startpage'])) {
+					$this->blk[$this->blklvl]['startpage'] ++;
+				} else {
+					$this->blk[$this->blklvl]['startpage'] = 1;
+				}
+			}
+			if ((isset($this->blk[$this->blklvl]['y0']) && $this->y > $this->blk[$this->blklvl]['y0']) || $this->flowingBlockAttr['is_table'] || $this->extrapagebreak) {
+				$toplvl = $this->blklvl;
+			} // mPDF 6 pagebreaktype
+			else {
+				$toplvl = $this->blklvl - 1;
+			}
+			$sy = $this->y;
+			for ($bl = 1; $bl <= $toplvl; $bl++) {
+				if (isset($this->blk[$bl]['z-index']) && $this->blk[$bl]['z-index'] > 0) {
+					$this->BeginLayer($this->blk[$bl]['z-index']);
+				}
+				if (isset($this->blk[$bl]['visibility']) && $this->blk[$bl]['visibility'] && $this->blk[$bl]['visibility'] != 'visible') {
+					$this->SetVisibility($this->blk[$bl]['visibility']);
+				}
+				$this->PaintDivBB('pagebottom', 0, $bl);
+			}
+			$this->y = $sy;
+			// RESET block y0 and x0 - see below
+		}
+		$this->extrapagebreak = false; // mPDF 6 pagebreaktype
+
+		if ($this->visibility != 'visible') {
+			$this->SetVisibility('visible');
+		}
+
+		$this->EndLayer();
+
+		// BODY Backgrounds
+		if ($this->page > 0) {
+			$s = '';
+			$s .= $this->PrintBodyBackgrounds();
+
+			$s .= $this->PrintPageBackgrounds();
+			$this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS' . $this->uniqstr . ')/', "\n" . $s . "\n" . '\\1', $this->pages[$this->page]);
+			$this->pageBackgrounds = [];
+		}
+
+		$save_kt = $this->keep_block_together;
+		$this->keep_block_together = 0;
+
+		$save_cols = false;
+
+		/* -- COLUMNS -- */
+		if ($this->ColActive) {
+			$save_cols = true;
+			$save_nbcol = $this->NbCol; // other values of gap and vAlign will not change by setting Columns off
+			$this->SetColumns(0);
+		}
+		/* -- END COLUMNS -- */
+
+		$family = $this->FontFamily;
+		$style = $this->FontStyle;
+		$size = $this->FontSizePt;
+		$this->ColumnAdjust = true; // enables column height adjustment for the page
+		$lw = $this->LineWidth;
+		$dc = $this->DrawColor;
+		$fc = $this->FillColor;
+		$tc = $this->TextColor;
+		$cf = $this->ColorFlag;
+		if ($this->page > 0) {
+			// Page footer
+			$this->InFooter = true;
+
+			$this->Reset();
+			$this->pageoutput[$this->page] = [];
+
+			$this->Footer();
+			// Close page
+			$this->_endpage();
+		}
+
+		// Start new page
+		$this->_beginpage($orientation, $mgl, $mgr, $mgt, $mgb, $mgh, $mgf, $ohname, $ehname, $ofname, $efname, $ohvalue, $ehvalue, $ofvalue, $efvalue, $pagesel, $newformat);
+
+		if ($this->docTemplate) {
+			$currentReaderId = $this->currentReaderId;
+
+			$pagecount = $this->setSourceFile($this->docTemplate);
+			if (($this->page - $this->docTemplateStart) > $pagecount) {
+				if ($this->docTemplateContinue) {
+					$tplIdx = $this->importPage($pagecount);
+					$this->useTemplate($tplIdx);
+				}
+			} else {
+				$tplIdx = $this->importPage(($this->page - $this->docTemplateStart));
+				$this->useTemplate($tplIdx);
+			}
+
+			$this->currentReaderId = $currentReaderId;
+		}
+
+		if ($this->pageTemplate) {
+			$this->useTemplate($this->pageTemplate);
+		}
+
+		// Tiling Patterns
+		$this->writer->write('___PAGE___START' . $this->uniqstr);
+		$this->writer->write('___BACKGROUND___PATTERNS' . $this->uniqstr);
+		$this->writer->write('___HEADER___MARKER' . $this->uniqstr);
+		$this->pageBackgrounds = [];
+
+		// Set line cap style to square
+		$this->SetLineCap(2);
+		// Set line width
+		$this->LineWidth = $lw;
+		$this->writer->write(sprintf('%.3F w', $lw * Mpdf::SCALE));
+		// Set font
+		if ($family) {
+			$this->SetFont($family, $style, $size, true, true); // forces write
+		}
+
+		// Set colors
+		$this->DrawColor = $dc;
+		if ($dc != $this->defDrawColor) {
+			$this->writer->write($dc);
+		}
+		$this->FillColor = $fc;
+		if ($fc != $this->defFillColor) {
+			$this->writer->write($fc);
+		}
+		$this->TextColor = $tc;
+		$this->ColorFlag = $cf;
+
+		// Page header
+		$this->Header();
+
+		// Restore line width
+		if ($this->LineWidth != $lw) {
+			$this->LineWidth = $lw;
+			$this->writer->write(sprintf('%.3F w', $lw * Mpdf::SCALE));
+		}
+		// Restore font
+		if ($family) {
+			$this->SetFont($family, $style, $size, true, true); // forces write
+		}
+
+		// Restore colors
+		if ($this->DrawColor != $dc) {
+			$this->DrawColor = $dc;
+			$this->writer->write($dc);
+		}
+		if ($this->FillColor != $fc) {
+			$this->FillColor = $fc;
+			$this->writer->write($fc);
+		}
+		$this->TextColor = $tc;
+		$this->ColorFlag = $cf;
+		$this->InFooter = false;
+
+		if ($save_layer > 0) {
+			$this->BeginLayer($save_layer);
+		}
+
+		if ($save_vis != 'visible') {
+			$this->SetVisibility($save_vis);
+		}
+
+		/* -- COLUMNS -- */
+		if ($save_cols) {
+			// Restore columns
+			$this->SetColumns($save_nbcol, $this->colvAlign, $this->ColGap);
+		}
+		if ($this->ColActive) {
+			$this->SetCol(0);
+		}
+		/* -- END COLUMNS -- */
+
+
+		// RESET BLOCK BORDER TOP
+		if (!$this->ColActive) {
+			for ($bl = 1; $bl <= $this->blklvl; $bl++) {
+				$this->blk[$bl]['y0'] = $this->y;
+				if (isset($this->blk[$bl]['x0'])) {
+					$this->blk[$bl]['x0'] += $this->MarginCorrection;
+				} else {
+					$this->blk[$bl]['x0'] = $this->MarginCorrection;
+				}
+				// Added mPDF 3.0 Float DIV
+				$this->blk[$bl]['marginCorrected'][$this->page] = true;
+			}
+		}
+
+
+		$this->table_rotate = $save_tr; // *TABLES*
+		$this->kwt = $save_kwt;
+
+		$this->keep_block_together = $save_kt;
+
+		$this->cMarginL = $bak_cml;
+		$this->cMarginR = $bak_cmr;
+		$this->divwidth = $bak_dw;
+
+		$this->lineheight = $bak_lh;
+	}
+
+	/**
+	 * Get current page number
+	 *
+	 * @return int
+	 */
+	function PageNo()
+	{
+		return $this->page;
+	}
+
+	function AddSpotColorsFromFile($file)
+	{
+		$colors = @file($file);
+		if (!$colors) {
+			throw new \Mpdf\MpdfException("Cannot load spot colors file - " . $file);
+		}
+		foreach ($colors as $sc) {
+			list($name, $c, $m, $y, $k) = preg_split("/\t/", $sc);
+			$c = intval($c);
+			$m = intval($m);
+			$y = intval($y);
+			$k = intval($k);
+			$this->AddSpotColor($name, $c, $m, $y, $k);
+		}
+	}
+
+	function AddSpotColor($name, $c, $m, $y, $k)
+	{
+		$name = strtoupper(trim($name));
+		if (!isset($this->spotColors[$name])) {
+			$i = count($this->spotColors) + 1;
+			$this->spotColors[$name] = ['i' => $i, 'c' => $c, 'm' => $m, 'y' => $y, 'k' => $k];
+			$this->spotColorIDs[$i] = $name;
+		}
+	}
+
+	function SetColor($col, $type = '')
+	{
+		$out = '';
+		if (!$col) {
+			return '';
+		} // mPDF 6
+		if ($col[0] == 3 || $col[0] == 5) { // RGB / RGBa
+			$out = sprintf('%.3F %.3F %.3F rg', ord($col[1]) / 255, ord($col[2]) / 255, ord($col[3]) / 255);
+		} elseif ($col[0] == 1) { // GRAYSCALE
+			$out = sprintf('%.3F g', ord($col[1]) / 255);
+		} elseif ($col[0] == 2) { // SPOT COLOR
+			$out = sprintf('/CS%d cs %.3F scn', ord($col[1]), ord($col[2]) / 100);
+		} elseif ($col[0] == 4 || $col[0] == 6) { // CMYK / CMYKa
+			$out = sprintf('%.3F %.3F %.3F %.3F k', ord($col[1]) / 100, ord($col[2]) / 100, ord($col[3]) / 100, ord($col[4]) / 100);
+		}
+		if ($type == 'Draw') {
+			$out = strtoupper($out);
+		} // e.g. rg => RG
+		elseif ($type == 'CodeOnly') {
+			$out = preg_replace('/\s(rg|g|k)/', '', $out);
+		}
+		return $out;
+	}
+
+	function SetDColor($col, $return = false)
+	{
+		$out = $this->SetColor($col, 'Draw');
+		if ($return) {
+			return $out;
+		}
+		if ($out == '') {
+			return '';
+		}
+		$this->DrawColor = $out;
+		if ($this->page > 0 && ((isset($this->pageoutput[$this->page]['DrawColor']) && $this->pageoutput[$this->page]['DrawColor'] != $this->DrawColor) || !isset($this->pageoutput[$this->page]['DrawColor']))) {
+			$this->writer->write($this->DrawColor);
+		}
+		$this->pageoutput[$this->page]['DrawColor'] = $this->DrawColor;
+	}
+
+	function SetFColor($col, $return = false)
+	{
+		$out = $this->SetColor($col, 'Fill');
+		if ($return) {
+			return $out;
+		}
+		if ($out == '') {
+			return '';
+		}
+		$this->FillColor = $out;
+		$this->ColorFlag = ($out != $this->TextColor);
+		if ($this->page > 0 && ((isset($this->pageoutput[$this->page]['FillColor']) && $this->pageoutput[$this->page]['FillColor'] != $this->FillColor) || !isset($this->pageoutput[$this->page]['FillColor']))) {
+			$this->writer->write($this->FillColor);
+		}
+		$this->pageoutput[$this->page]['FillColor'] = $this->FillColor;
+	}
+
+	function SetTColor($col, $return = false)
+	{
+		$out = $this->SetColor($col, 'Text');
+		if ($return) {
+			return $out;
+		}
+		if ($out == '') {
+			return '';
+		}
+		$this->TextColor = $out;
+		$this->ColorFlag = ($this->FillColor != $out);
+	}
+
+	function SetDrawColor($r, $g = -1, $b = -1, $col4 = -1, $return = false)
+	{
+		// Set color for all stroking operations
+		$col = [];
+		if (($r == 0 and $g == 0 and $b == 0 && $col4 == -1) or $g == -1) {
+			$col = $this->colorConverter->convert($r, $this->PDFAXwarnings);
+		} elseif ($col4 == -1) {
+			$col = $this->colorConverter->convert('rgb(' . $r . ',' . $g . ',' . $b . ')', $this->PDFAXwarnings);
+		} else {
+			$col = $this->colorConverter->convert('cmyk(' . $r . ',' . $g . ',' . $b . ',' . $col4 . ')', $this->PDFAXwarnings);
+		}
+		$out = $this->SetDColor($col, $return);
+		return $out;
+	}
+
+	function SetFillColor($r, $g = -1, $b = -1, $col4 = -1, $return = false)
+	{
+		// Set color for all filling operations
+		$col = [];
+		if (($r == 0 and $g == 0 and $b == 0 && $col4 == -1) or $g == -1) {
+			$col = $this->colorConverter->convert($r, $this->PDFAXwarnings);
+		} elseif ($col4 == -1) {
+			$col = $this->colorConverter->convert('rgb(' . $r . ',' . $g . ',' . $b . ')', $this->PDFAXwarnings);
+		} else {
+			$col = $this->colorConverter->convert('cmyk(' . $r . ',' . $g . ',' . $b . ',' . $col4 . ')', $this->PDFAXwarnings);
+		}
+		$out = $this->SetFColor($col, $return);
+		return $out;
+	}
+
+	function SetTextColor($r, $g = -1, $b = -1, $col4 = -1, $return = false)
+	{
+		// Set color for text
+		$col = [];
+		if (($r == 0 and $g == 0 and $b == 0 && $col4 == -1) or $g == -1) {
+			$col = $this->colorConverter->convert($r, $this->PDFAXwarnings);
+		} elseif ($col4 == -1) {
+			$col = $this->colorConverter->convert('rgb(' . $r . ',' . $g . ',' . $b . ')', $this->PDFAXwarnings);
+		} else {
+			$col = $this->colorConverter->convert('cmyk(' . $r . ',' . $g . ',' . $b . ',' . $col4 . ')', $this->PDFAXwarnings);
+		}
+		$out = $this->SetTColor($col, $return);
+		return $out;
+	}
+
+	function _getCharWidth(&$cw, $u, $isdef = true)
+	{
+		$w = 0;
+
+		if ($u == 0) {
+			$w = false;
+		} elseif (isset($cw[$u * 2 + 1])) {
+			$w = (ord($cw[$u * 2]) << 8) + ord($cw[$u * 2 + 1]);
+		}
+
+		if ($w == 65535) {
+			return 0;
+		} elseif ($w) {
+			return $w;
+		} elseif ($isdef) {
+			return false;
+		} else {
+			return 0;
+		}
+	}
+
+	function _charDefined(&$cw, $u)
+	{
+		$w = 0;
+		if ($u == 0) {
+			return false;
+		}
+		if (isset($cw[$u * 2 + 1])) {
+			$w = (ord($cw[$u * 2]) << 8) + ord($cw[$u * 2 + 1]);
+		}
+
+		return (bool) $w;
+	}
+
+	function GetCharWidthCore($c)
+	{
+		// Get width of a single character in the current Core font
+		$c = (string) $c;
+		$w = 0;
+		// Soft Hyphens chr(173)
+		if ($c == chr(173) && $this->FontFamily != 'csymbol' && $this->FontFamily != 'czapfdingbats') {
+			return 0;
+		} elseif (($this->textvar & TextVars::FC_SMALLCAPS) && isset($this->upperCase[ord($c)])) {  // mPDF 5.7.1
+			$charw = $this->CurrentFont['cw'][chr($this->upperCase[ord($c)])];
+			if ($charw !== false) {
+				$charw = $charw * $this->smCapsScale * $this->smCapsStretch / 100;
+				$w+=$charw;
+			}
+		} elseif (isset($this->CurrentFont['cw'][$c])) {
+			$w += $this->CurrentFont['cw'][$c];
+		} elseif (isset($this->CurrentFont['cw'][ord($c)])) {
+			$w += $this->CurrentFont['cw'][ord($c)];
+		}
+		$w *= ($this->FontSize / 1000);
+		if ($this->minwSpacing || $this->fixedlSpacing) {
+			if ($c == ' ') {
+				$nb_spaces = 1;
+			} else {
+				$nb_spaces = 0;
+			}
+			$w += $this->fixedlSpacing + ($nb_spaces * $this->minwSpacing);
+		}
+		return ($w);
+	}
+
+	function GetCharWidthNonCore($c, $addSubset = true)
+	{
+		// Get width of a single character in the current Non-Core font
+		$c = (string) $c;
+		$w = 0;
+		$unicode = $this->UTF8StringToArray($c, $addSubset);
+		$char = $unicode[0];
+		/* -- CJK-FONTS -- */
+		if ($this->CurrentFont['type'] == 'Type0') { // CJK Adobe fonts
+			if ($char == 173) {
+				return 0;
+			} // Soft Hyphens
+			elseif (isset($this->CurrentFont['cw'][$char])) {
+				$w+=$this->CurrentFont['cw'][$char];
+			} elseif (isset($this->CurrentFont['MissingWidth'])) {
+				$w += $this->CurrentFont['MissingWidth'];
+			} else {
+				$w += 500;
+			}
+		} else {
+			/* -- END CJK-FONTS -- */
+			if ($char == 173) {
+				return 0;
+			} // Soft Hyphens
+			elseif (($this->textvar & TextVars::FC_SMALLCAPS) && isset($this->upperCase[$char])) { // mPDF 5.7.1
+				$charw = $this->_getCharWidth($this->CurrentFont['cw'], $this->upperCase[$char]);
+				if ($charw !== false) {
+					$charw = $charw * $this->smCapsScale * $this->smCapsStretch / 100;
+					$w+=$charw;
+				} elseif (isset($this->CurrentFont['desc']['MissingWidth'])) {
+					$w += $this->CurrentFont['desc']['MissingWidth'];
+				} elseif (isset($this->CurrentFont['MissingWidth'])) {
+					$w += $this->CurrentFont['MissingWidth'];
+				} else {
+					$w += 500;
+				}
+			} else {
+				$charw = $this->_getCharWidth($this->CurrentFont['cw'], $char);
+				if ($charw !== false) {
+					$w+=$charw;
+				} elseif (isset($this->CurrentFont['desc']['MissingWidth'])) {
+					$w += $this->CurrentFont['desc']['MissingWidth'];
+				} elseif (isset($this->CurrentFont['MissingWidth'])) {
+					$w += $this->CurrentFont['MissingWidth'];
+				} else {
+					$w += 500;
+				}
+			}
+		} // *CJK-FONTS*
+		$w *= ($this->FontSize / 1000);
+		if ($this->minwSpacing || $this->fixedlSpacing) {
+			if ($c == ' ') {
+				$nb_spaces = 1;
+			} else {
+				$nb_spaces = 0;
+			}
+			$w += $this->fixedlSpacing + ($nb_spaces * $this->minwSpacing);
+		}
+		return ($w);
+	}
+
+	function GetCharWidth($c, $addSubset = true)
+	{
+		if (!$this->usingCoreFont) {
+			return $this->GetCharWidthNonCore($c, $addSubset);
+		} else {
+			return $this->GetCharWidthCore($c);
+		}
+	}
+
+	function GetStringWidth($s, $addSubset = true, $OTLdata = false, $textvar = 0, $includeKashida = false)
+	{
+	// mPDF 5.7.1
+		// Get width of a string in the current font
+		$s = (string) $s;
+		$cw = &$this->CurrentFont['cw'];
+		$w = 0;
+		$kerning = 0;
+		$lastchar = 0;
+		$nb_carac = 0;
+		$nb_spaces = 0;
+		$kashida = 0;
+		// mPDF ITERATION
+		if ($this->iterationCounter) {
+			$s = preg_replace('/{iteration ([a-zA-Z0-9_]+)}/', '\\1', $s);
+		}
+		if (!$this->usingCoreFont) {
+			$discards = substr_count($s, "\xc2\xad"); // mPDF 6 soft hyphens [U+00AD]
+			$unicode = $this->UTF8StringToArray($s, $addSubset);
+			if ($this->minwSpacing || $this->fixedlSpacing) {
+				$nb_spaces = mb_substr_count($s, ' ', $this->mb_enc);
+				$nb_carac = count($unicode) - $discards; // mPDF 6
+				// mPDF 5.7.1
+				// Use GPOS OTL
+				if (isset($this->CurrentFont['useOTL']) && $this->CurrentFont['useOTL']) {
+					if (isset($OTLdata['group']) && $OTLdata['group']) {
+						$nb_carac -= substr_count($OTLdata['group'], 'M');
+					}
+				}
+			}
+			/* -- CJK-FONTS -- */
+			if ($this->CurrentFont['type'] == 'Type0') { // CJK Adobe fonts
+				foreach ($unicode as $char) {
+					if ($char == 0x00AD) {
+						continue;
+					} // mPDF 6 soft hyphens [U+00AD]
+					if (isset($cw[$char])) {
+						$w+=$cw[$char];
+					} elseif (isset($this->CurrentFont['MissingWidth'])) {
+						$w += $this->CurrentFont['MissingWidth'];
+					} else {
+						$w += 500;
+					}
+				}
+			} else {
+				/* -- END CJK-FONTS -- */
+				foreach ($unicode as $i => $char) {
+					if ($char == 0x00AD) {
+						continue;
+					} // mPDF 6 soft hyphens [U+00AD]
+					if (($textvar & TextVars::FC_SMALLCAPS) && isset($this->upperCase[$char])) {
+						$charw = $this->_getCharWidth($cw, $this->upperCase[$char]);
+						if ($charw !== false) {
+							$charw = $charw * $this->smCapsScale * $this->smCapsStretch / 100;
+							$w+=$charw;
+						} elseif (isset($this->CurrentFont['desc']['MissingWidth'])) {
+							$w += $this->CurrentFont['desc']['MissingWidth'];
+						} elseif (isset($this->CurrentFont['MissingWidth'])) {
+							$w += $this->CurrentFont['MissingWidth'];
+						} else {
+							$w += 500;
+						}
+					} else {
+						$charw = $this->_getCharWidth($cw, $char);
+						if ($charw !== false) {
+							$w+=$charw;
+						} elseif (isset($this->CurrentFont['desc']['MissingWidth'])) {
+							$w += $this->CurrentFont['desc']['MissingWidth'];
+						} elseif (isset($this->CurrentFont['MissingWidth'])) {
+							$w += $this->CurrentFont['MissingWidth'];
+						} else {
+							$w += 500;
+						}
+						// mPDF 5.7.1
+						// Use GPOS OTL
+						// ...GetStringWidth...
+						if (isset($this->CurrentFont['useOTL']) && ($this->CurrentFont['useOTL'] & 0xFF) && !empty($OTLdata)) {
+							if (isset($OTLdata['GPOSinfo'][$i]['wDir']) && $OTLdata['GPOSinfo'][$i]['wDir'] == 'RTL') {
+								if (isset($OTLdata['GPOSinfo'][$i]['XAdvanceR']) && $OTLdata['GPOSinfo'][$i]['XAdvanceR']) {
+									$w += $OTLdata['GPOSinfo'][$i]['XAdvanceR'] * 1000 / $this->CurrentFont['unitsPerEm'];
+								}
+							} else {
+								if (isset($OTLdata['GPOSinfo'][$i]['XAdvanceL']) && $OTLdata['GPOSinfo'][$i]['XAdvanceL']) {
+									$w += $OTLdata['GPOSinfo'][$i]['XAdvanceL'] * 1000 / $this->CurrentFont['unitsPerEm'];
+								}
+							}
+							// Kashida from GPOS
+							// Kashida is set as an absolute length value (already set as a proportion based on useKashida %)
+							if ($includeKashida && isset($OTLdata['GPOSinfo'][$i]['kashida_space']) && $OTLdata['GPOSinfo'][$i]['kashida_space']) {
+								$kashida += $OTLdata['GPOSinfo'][$i]['kashida_space'];
+							}
+						}
+						if (($textvar & TextVars::FC_KERNING) && $lastchar) {
+							if (isset($this->CurrentFont['kerninfo'][$lastchar][$char])) {
+								$kerning += $this->CurrentFont['kerninfo'][$lastchar][$char];
+							}
+						}
+						$lastchar = $char;
+					}
+				}
+			} // *CJK-FONTS*
+		} else {
+			if ($this->FontFamily != 'csymbol' && $this->FontFamily != 'czapfdingbats') {
+				$s = str_replace(chr(173), '', $s);
+			}
+			$nb_carac = $l = strlen($s);
+			if ($this->minwSpacing || $this->fixedlSpacing) {
+				$nb_spaces = substr_count($s, ' ');
+			}
+			for ($i = 0; $i < $l; $i++) {
+				if (($textvar & TextVars::FC_SMALLCAPS) && isset($this->upperCase[ord($s[$i])])) {  // mPDF 5.7.1
+					$charw = $cw[chr($this->upperCase[ord($s[$i])])];
+					if ($charw !== false) {
+						$charw = $charw * $this->smCapsScale * $this->smCapsStretch / 100;
+						$w+=$charw;
+					}
+				} elseif (isset($cw[$s[$i]])) {
+					$w += $cw[$s[$i]];
+				} elseif (isset($cw[ord($s[$i])])) {
+					$w += $cw[ord($s[$i])];
+				}
+				if (($textvar & TextVars::FC_KERNING) && $i > 0) { // mPDF 5.7.1
+					if (isset($this->CurrentFont['kerninfo'][$s[($i - 1)]][$s[$i]])) {
+						$kerning += $this->CurrentFont['kerninfo'][$s[($i - 1)]][$s[$i]];
+					}
+				}
+			}
+		}
+		unset($cw);
+		if ($textvar & TextVars::FC_KERNING) {
+			$w += $kerning;
+		} // mPDF 5.7.1
+		$w *= ($this->FontSize / 1000);
+		$w += (($nb_carac + $nb_spaces) * $this->fixedlSpacing) + ($nb_spaces * $this->minwSpacing);
+		$w += $kashida / Mpdf::SCALE;
+
+		return ($w);
+	}
+
+	function SetLineWidth($width)
+	{
+		// Set line width
+		$this->LineWidth = $width;
+		$lwout = (sprintf('%.3F w', $width * Mpdf::SCALE));
+		if ($this->page > 0 && ((isset($this->pageoutput[$this->page]['LineWidth']) && $this->pageoutput[$this->page]['LineWidth'] != $lwout) || !isset($this->pageoutput[$this->page]['LineWidth']))) {
+			$this->writer->write($lwout);
+		}
+		$this->pageoutput[$this->page]['LineWidth'] = $lwout;
+	}
+
+	function Line($x1, $y1, $x2, $y2)
+	{
+		// Draw a line
+		$this->writer->write(sprintf('%.3F %.3F m %.3F %.3F l S', $x1 * Mpdf::SCALE, ($this->h - $y1) * Mpdf::SCALE, $x2 * Mpdf::SCALE, ($this->h - $y2) * Mpdf::SCALE));
+	}
+
+	function Arrow($x1, $y1, $x2, $y2, $headsize = 3, $fill = 'B', $angle = 25)
+	{
+		// F == fill // S == stroke // B == stroke and fill
+		// angle = splay of arrowhead - 1 - 89 degrees
+		if ($fill == 'F') {
+			$fill = 'f';
+		} elseif ($fill == 'FD' or $fill == 'DF' or $fill == 'B') {
+			$fill = 'B';
+		} else {
+			$fill = 'S';
+		}
+		$a = atan2(($y2 - $y1), ($x2 - $x1));
+		$b = $a + deg2rad($angle);
+		$c = $a - deg2rad($angle);
+		$x3 = $x2 - ($headsize * cos($b));
+		$y3 = $this->h - ($y2 - ($headsize * sin($b)));
+		$x4 = $x2 - ($headsize * cos($c));
+		$y4 = $this->h - ($y2 - ($headsize * sin($c)));
+
+		$x5 = $x3 - ($x3 - $x4) / 2; // mid point of base of arrowhead - to join arrow line to
+		$y5 = $y3 - ($y3 - $y4) / 2;
+
+		$s = '';
+		$s .= sprintf('%.3F %.3F m %.3F %.3F l S', $x1 * Mpdf::SCALE, ($this->h - $y1) * Mpdf::SCALE, $x5 * Mpdf::SCALE, $y5 * Mpdf::SCALE);
+		$this->writer->write($s);
+
+		$s = '';
+		$s .= sprintf('%.3F %.3F m %.3F %.3F l %.3F %.3F l %.3F %.3F l %.3F %.3F l ', $x5 * Mpdf::SCALE, $y5 * Mpdf::SCALE, $x3 * Mpdf::SCALE, $y3 * Mpdf::SCALE, $x2 * Mpdf::SCALE, ($this->h - $y2) * Mpdf::SCALE, $x4 * Mpdf::SCALE, $y4 * Mpdf::SCALE, $x5 * Mpdf::SCALE, $y5 * Mpdf::SCALE);
+		$s .= $fill;
+		$this->writer->write($s);
+	}
+
+	function Rect($x, $y, $w, $h, $style = '')
+	{
+		// Draw a rectangle
+		if ($style == 'F') {
+			$op = 'f';
+		} elseif ($style == 'FD' or $style == 'DF') {
+			$op = 'B';
+		} else {
+			$op = 'S';
+		}
+		$this->writer->write(sprintf('%.3F %.3F %.3F %.3F re %s', $x * Mpdf::SCALE, ($this->h - $y) * Mpdf::SCALE, $w * Mpdf::SCALE, -$h * Mpdf::SCALE, $op));
+	}
+
+	function AddFontDirectory($directory)
+	{
+		$this->fontDir[] = $directory;
+		$this->fontFileFinder->setDirectories($this->fontDir);
+	}
+
+	function AddFont($family, $style = '')
+	{
+		if (empty($family)) {
+			return;
+		}
+
+		$family = strtolower($family);
+		$style = strtoupper($style);
+		$style = str_replace('U', '', $style);
+
+		if ($style == 'IB') {
+			$style = 'BI';
+		}
+
+		$fontkey = $family . $style;
+
+		// check if the font has been already added
+		if (isset($this->fonts[$fontkey])) {
+			return;
+		}
+
+		/* -- CJK-FONTS -- */
+		if (in_array($family, $this->available_CJK_fonts)) {
+			if (empty($this->Big5_widths)) {
+				require __DIR__ . '//data/CJKdata.php';
+			}
+			$this->AddCJKFont($family); // don't need to add style
+			return;
+		}
+		/* -- END CJK-FONTS -- */
+
+		if ($this->usingCoreFont) {
+			throw new \Mpdf\MpdfException("mPDF Error - problem with Font management");
+		}
+
+		$stylekey = $style;
+		if (!$style) {
+			$stylekey = 'R';
+		}
+
+		if (!isset($this->fontdata[$family][$stylekey]) || !$this->fontdata[$family][$stylekey]) {
+			throw new \Mpdf\MpdfException(sprintf('Font "%s%s%s" is not supported', $family, $style ? ' - ' : '', $style));
+		}
+
+		/* Setup defaults */
+		$font = [
+			'name' => '',
+			'type' => '',
+			'desc' => '',
+			'panose' => '',
+			'unitsPerEm' => '',
+			'up' => '',
+			'ut' => '',
+			'strs' => '',
+			'strp' => '',
+			'sip' => false,
+			'smp' => false,
+			'useOTL' => 0,
+			'fontmetrics' => '',
+			'haskerninfo' => false,
+			'haskernGPOS' => false,
+			'hassmallcapsGSUB' => false,
+			'BMPselected' => false,
+			'GSUBScriptLang' => [],
+			'GSUBFeatures' => [],
+			'GSUBLookups' => [],
+			'GPOSScriptLang' => [],
+			'GPOSFeatures' => [],
+			'GPOSLookups' => [],
+			'rtlPUAstr' => '',
+		];
+
+		$fontCacheFilename = $fontkey . '.mtx.json';
+		if ($this->fontCache->jsonHas($fontCacheFilename)) {
+			$font = $this->fontCache->jsonLoad($fontCacheFilename);
+		}
+
+		$ttffile = $this->fontFileFinder->findFontFile($this->fontdata[$family][$stylekey]);
+		$ttfstat = stat($ttffile);
+
+		$TTCfontID = isset($this->fontdata[$family]['TTCfontID'][$stylekey]) ? isset($this->fontdata[$family]['TTCfontID'][$stylekey]) : 0;
+		$fontUseOTL = isset($this->fontdata[$family]['useOTL']) ? $this->fontdata[$family]['useOTL'] : false;
+		$BMPonly = in_array($family, $this->BMPonly) ? true : false;
+
+		$regenerate = false;
+		if ($BMPonly && !$font['BMPselected']) {
+			$regenerate = true;
+		} elseif (!$BMPonly && $font['BMPselected']) {
+			$regenerate = true;
+		}
+
+		if ($fontUseOTL && $font['useOTL'] != $fontUseOTL) {
+			$regenerate = true;
+			$font['useOTL'] = $fontUseOTL;
+		} elseif (!$fontUseOTL && $font['useOTL']) {
+			$regenerate = true;
+			$font['useOTL'] = 0;
+		}
+
+		if ($this->fontDescriptor != $font['fontmetrics']) {
+			$regenerate = true;
+		} // mPDF 6
+
+		if (empty($font['name']) || $font['originalsize'] != $ttfstat['size'] || $regenerate) {
+			$generator = new MetricsGenerator($this->fontCache, $this->fontDescriptor);
+
+			$generator->generateMetrics(
+				$ttffile,
+				$ttfstat,
+				$fontkey,
+				$TTCfontID,
+				$this->debugfonts,
+				$BMPonly,
+				$font['useOTL'],
+				$fontUseOTL
+			);
+
+			$font = $this->fontCache->jsonLoad($fontCacheFilename);
+			$cw = $this->fontCache->load($fontkey . '.cw.dat');
+			$glyphIDtoUni = $this->fontCache->load($fontkey . '.gid.dat');
+		} else {
+			if ($this->fontCache->has($fontkey . '.cw.dat')) {
+				$cw = $this->fontCache->load($fontkey . '.cw.dat');
+			}
+
+			if ($this->fontCache->has($fontkey . '.gid.dat')) {
+				$glyphIDtoUni = $this->fontCache->load($fontkey . '.gid.dat');
+			}
+		}
+
+		if (isset($this->fontdata[$family]['sip-ext']) && $this->fontdata[$family]['sip-ext']) {
+			$sipext = $this->fontdata[$family]['sip-ext'];
+		} else {
+			$sipext = '';
+		}
+
+		// Override with values from config_font.php
+		if (isset($this->fontdata[$family]['Ascent']) && $this->fontdata[$family]['Ascent']) {
+			$desc['Ascent'] = $this->fontdata[$family]['Ascent'];
+		}
+		if (isset($this->fontdata[$family]['Descent']) && $this->fontdata[$family]['Descent']) {
+			$desc['Descent'] = $this->fontdata[$family]['Descent'];
+		}
+		if (isset($this->fontdata[$family]['Leading']) && $this->fontdata[$family]['Leading']) {
+			$desc['Leading'] = $this->fontdata[$family]['Leading'];
+		}
+
+		$i = count($this->fonts) + $this->extraFontSubsets + 1;
+
+		$this->fonts[$fontkey] = [
+			'i' => $i,
+			'name' => $font['name'],
+			'type' => $font['type'],
+			'desc' => $font['desc'],
+			'panose' => $font['panose'],
+			'unitsPerEm' => $font['unitsPerEm'],
+			'up' => $font['up'],
+			'ut' => $font['ut'],
+			'strs' => $font['strs'],
+			'strp' => $font['strp'],
+			'cw' => $cw,
+			'ttffile' => $ttffile,
+			'fontkey' => $fontkey,
+			'used' => false,
+			'sip' => $font['sip'],
+			'sipext' => $sipext,
+			'smp' => $font['smp'],
+			'TTCfontID' => $TTCfontID,
+			'useOTL' => $fontUseOTL,
+			'useKashida' => (isset($this->fontdata[$family]['useKashida']) ? $this->fontdata[$family]['useKashida'] : false),
+			'GSUBScriptLang' => $font['GSUBScriptLang'],
+			'GSUBFeatures' => $font['GSUBFeatures'],
+			'GSUBLookups' => $font['GSUBLookups'],
+			'GPOSScriptLang' => $font['GPOSScriptLang'],
+			'GPOSFeatures' => $font['GPOSFeatures'],
+			'GPOSLookups' => $font['GPOSLookups'],
+			'rtlPUAstr' => $font['rtlPUAstr'],
+			'glyphIDtoUni' => $glyphIDtoUni,
+			'haskerninfo' => $font['haskerninfo'],
+			'haskernGPOS' => $font['haskernGPOS'],
+			'hassmallcapsGSUB' => $font['hassmallcapsGSUB'],
+		];
+
+
+		if (!$font['sip'] && !$font['smp']) {
+			$subsetRange = range(32, 127);
+			$this->fonts[$fontkey]['subset'] = array_combine($subsetRange, $subsetRange);
+		} else {
+			$this->fonts[$fontkey]['subsets'] = [0 => range(0, 127)];
+			$this->fonts[$fontkey]['subsetfontids'] = [$i];
+		}
+
+		if ($font['haskerninfo']) {
+			$this->fonts[$fontkey]['kerninfo'] = $font['kerninfo'];
+		}
+
+		$this->FontFiles[$fontkey] = [
+			'length1' => $font['originalsize'],
+			'type' => 'TTF',
+			'ttffile' => $ttffile,
+			'sip' => $font['sip'],
+			'smp' => $font['smp'],
+		];
+
+		unset($cw);
+	}
+
+	function SetFont($family, $style = '', $size = 0, $write = true, $forcewrite = false)
+	{
+		$family = strtolower($family);
+
+		if (!$this->onlyCoreFonts) {
+			if ($family == 'sans' || $family == 'sans-serif') {
+				$family = $this->sans_fonts[0];
+			}
+			if ($family == 'serif') {
+				$family = $this->serif_fonts[0];
+			}
+			if ($family == 'mono' || $family == 'monospace') {
+				$family = $this->mono_fonts[0];
+			}
+		}
+
+		if (isset($this->fonttrans[$family]) && $this->fonttrans[$family]) {
+			$family = $this->fonttrans[$family];
+		}
+
+		if ($family == '') {
+			if ($this->FontFamily) {
+				$family = $this->FontFamily;
+			} elseif ($this->default_font) {
+				$family = $this->default_font;
+			} else {
+				throw new \Mpdf\MpdfException("No font or default font set!");
+			}
+		}
+
+		$this->ReqFontStyle = $style; // required or requested style - used later for artificial bold/italic
+
+		if (($family == 'csymbol') || ($family == 'czapfdingbats') || ($family == 'ctimes') || ($family == 'ccourier') || ($family == 'chelvetica')) {
+			if ($this->PDFA || $this->PDFX) {
+				if ($family == 'csymbol' || $family == 'czapfdingbats') {
+					throw new \Mpdf\MpdfException("Symbol and Zapfdingbats cannot be embedded in mPDF (required for PDFA1-b or PDFX/1-a).");
+				}
+				if ($family == 'ctimes' || $family == 'ccourier' || $family == 'chelvetica') {
+					if (($this->PDFA && !$this->PDFAauto) || ($this->PDFX && !$this->PDFXauto)) {
+						$this->PDFAXwarnings[] = "Core Adobe font " . ucfirst($family) . " cannot be embedded in mPDF, which is required for PDFA1-b or PDFX/1-a. (Embedded font will be substituted.)";
+					}
+					if ($family == 'chelvetica') {
+						$family = 'sans';
+					}
+					if ($family == 'ctimes') {
+						$family = 'serif';
+					}
+					if ($family == 'ccourier') {
+						$family = 'mono';
+					}
+				}
+				$this->usingCoreFont = false;
+			} else {
+				$this->usingCoreFont = true;
+			}
+			if ($family == 'csymbol' || $family == 'czapfdingbats') {
+				$style = '';
+			}
+		} else {
+			$this->usingCoreFont = false;
+		}
+
+		// mPDF 5.7.1
+		if ($style) {
+			$style = strtoupper($style);
+			if ($style == 'IB') {
+				$style = 'BI';
+			}
+		}
+		if ($size == 0) {
+			$size = $this->FontSizePt;
+		}
+
+		$fontkey = $family . $style;
+
+		$stylekey = $style;
+		if (!$stylekey) {
+			$stylekey = "R";
+		}
+
+		if (!$this->onlyCoreFonts && !$this->usingCoreFont) {
+			if (!isset($this->fonts[$fontkey]) || count($this->default_available_fonts) != count($this->available_unifonts)) { // not already added
+
+				/* -- CJK-FONTS -- */
+				if (in_array($fontkey, $this->available_CJK_fonts)) {
+					if (!isset($this->fonts[$fontkey])) { // already added
+						if (empty($this->Big5_widths)) {
+							require __DIR__ . '//data/CJKdata.php';
+						}
+						$this->AddCJKFont($family); // don't need to add style
+					}
+				} else { // Test to see if requested font/style is available - or substitute /* -- END CJK-FONTS -- */
+					if (!in_array($fontkey, $this->available_unifonts)) {
+						// If font[nostyle] exists - set it
+						if (in_array($family, $this->available_unifonts)) {
+							$style = '';
+						} // elseif only one font available - set it (assumes if only one font available it will not have a style)
+						elseif (count($this->available_unifonts) == 1) {
+							$family = $this->available_unifonts[0];
+							$style = '';
+						} else {
+							$found = 0;
+							// else substitute font of similar type
+							if (in_array($family, $this->sans_fonts)) {
+								$i = array_intersect($this->sans_fonts, $this->available_unifonts);
+								if (count($i)) {
+									$i = array_values($i);
+									// with requested style if possible
+									if (!in_array(($i[0] . $style), $this->available_unifonts)) {
+										$style = '';
+									}
+									$family = $i[0];
+									$found = 1;
+								}
+							} elseif (in_array($family, $this->serif_fonts)) {
+								$i = array_intersect($this->serif_fonts, $this->available_unifonts);
+								if (count($i)) {
+									$i = array_values($i);
+									// with requested style if possible
+									if (!in_array(($i[0] . $style), $this->available_unifonts)) {
+										$style = '';
+									}
+									$family = $i[0];
+									$found = 1;
+								}
+							} elseif (in_array($family, $this->mono_fonts)) {
+								$i = array_intersect($this->mono_fonts, $this->available_unifonts);
+								if (count($i)) {
+									$i = array_values($i);
+									// with requested style if possible
+									if (!in_array(($i[0] . $style), $this->available_unifonts)) {
+										$style = '';
+									}
+									$family = $i[0];
+									$found = 1;
+								}
+							}
+
+							if (!$found) {
+								// set first available font
+								$fs = $this->available_unifonts[0];
+								preg_match('/^([a-z_0-9\-]+)([BI]{0,2})$/', $fs, $fas); // Allow "-"
+								// with requested style if possible
+								$ws = $fas[1] . $style;
+								if (in_array($ws, $this->available_unifonts)) {
+									$family = $fas[1]; // leave $style as is
+								} elseif (in_array($fas[1], $this->available_unifonts)) {
+									// or without style
+									$family = $fas[1];
+									$style = '';
+								} else {
+									// or with the style specified
+									$family = $fas[1];
+									$style = $fas[2];
+								}
+							}
+						}
+						$fontkey = $family . $style;
+					}
+				}
+			}
+
+			// try to add font (if not already added)
+			$this->AddFont($family, $style);
+
+			// Test if font is already selected
+			if ($this->FontFamily == $family && $this->FontFamily == $this->currentfontfamily && $this->FontStyle == $style && $this->FontStyle == $this->currentfontstyle && $this->FontSizePt == $size && $this->FontSizePt == $this->currentfontsize && !$forcewrite) {
+				return $family;
+			}
+
+			$fontkey = $family . $style;
+
+			// Select it
+			$this->FontFamily = $family;
+			$this->FontStyle = $style;
+			$this->FontSizePt = $size;
+			$this->FontSize = $size / Mpdf::SCALE;
+			$this->CurrentFont = &$this->fonts[$fontkey];
+			if ($write) {
+				$fontout = (sprintf('BT /F%d %.3F Tf ET', $this->CurrentFont['i'], $this->FontSizePt));
+				if ($this->page > 0 && ((isset($this->pageoutput[$this->page]['Font']) && $this->pageoutput[$this->page]['Font'] != $fontout) || !isset($this->pageoutput[$this->page]['Font']))) {
+					$this->writer->write($fontout);
+				}
+				$this->pageoutput[$this->page]['Font'] = $fontout;
+			}
+
+			// Added - currentfont (lowercase) used in HTML2PDF
+			$this->currentfontfamily = $family;
+			$this->currentfontsize = $size;
+			$this->currentfontstyle = $style;
+			$this->setMBencoding('UTF-8');
+		} else {  // if using core fonts
+			if ($this->PDFA || $this->PDFX) {
+				throw new \Mpdf\MpdfException('Core Adobe fonts cannot be embedded in mPDF (required for PDFA1-b or PDFX/1-a) - cannot use option to use core fonts.');
+			}
+			$this->setMBencoding('windows-1252');
+
+			// Test if font is already selected
+			if (($this->FontFamily == $family) and ( $this->FontStyle == $style) and ( $this->FontSizePt == $size) && !$forcewrite) {
+				return $family;
+			}
+
+			if (!isset($this->CoreFonts[$fontkey])) {
+				if (in_array($family, $this->serif_fonts)) {
+					$family = 'ctimes';
+				} elseif (in_array($family, $this->mono_fonts)) {
+					$family = 'ccourier';
+				} else {
+					$family = 'chelvetica';
+				}
+				$this->usingCoreFont = true;
+				$fontkey = $family . $style;
+			}
+
+			if (!isset($this->fonts[$fontkey])) {
+				// STANDARD CORE FONTS
+				if (isset($this->CoreFonts[$fontkey])) {
+					// Load metric file
+					$file = $family;
+					if ($family == 'ctimes' || $family == 'chelvetica' || $family == 'ccourier') {
+						$file .= strtolower($style);
+					}
+					require __DIR__ . '//data/font/' . $file . '.php';
+					if (!isset($cw)) {
+						throw new \Mpdf\MpdfException(sprintf('Could not include font metric file "%s"', $file));
+					}
+					$i = count($this->fonts) + $this->extraFontSubsets + 1;
+					$this->fonts[$fontkey] = ['i' => $i, 'type' => 'core', 'name' => $this->CoreFonts[$fontkey], 'desc' => $desc, 'up' => $up, 'ut' => $ut, 'cw' => $cw];
+					if ($this->useKerning && isset($kerninfo)) {
+						$this->fonts[$fontkey]['kerninfo'] = $kerninfo;
+					}
+				} else {
+					throw new \Mpdf\MpdfException(sprintf('Font %s not defined', $fontkey));
+				}
+			}
+
+			// Test if font is already selected
+			if (($this->FontFamily == $family) and ( $this->FontStyle == $style) and ( $this->FontSizePt == $size) && !$forcewrite) {
+				return $family;
+			}
+			// Select it
+			$this->FontFamily = $family;
+			$this->FontStyle = $style;
+			$this->FontSizePt = $size;
+			$this->FontSize = $size / Mpdf::SCALE;
+			$this->CurrentFont = &$this->fonts[$fontkey];
+			if ($write) {
+				$fontout = (sprintf('BT /F%d %.3F Tf ET', $this->CurrentFont['i'], $this->FontSizePt));
+				if ($this->page > 0 && ((isset($this->pageoutput[$this->page]['Font']) && $this->pageoutput[$this->page]['Font'] != $fontout) || !isset($this->pageoutput[$this->page]['Font']))) {
+					$this->writer->write($fontout);
+				}
+				$this->pageoutput[$this->page]['Font'] = $fontout;
+			}
+			// Added - currentfont (lowercase) used in HTML2PDF
+			$this->currentfontfamily = $family;
+			$this->currentfontsize = $size;
+			$this->currentfontstyle = $style;
+		}
+
+		return $family;
+	}
+
+	function SetFontSize($size, $write = true)
+	{
+		// Set font size in points
+		if ($this->FontSizePt == $size) {
+			return;
+		}
+		$this->FontSizePt = $size;
+		$this->FontSize = $size / Mpdf::SCALE;
+		$this->currentfontsize = $size;
+		if ($write) {
+			$fontout = (sprintf('BT /F%d %.3F Tf ET', $this->CurrentFont['i'], $this->FontSizePt));
+			// Edited mPDF 3.0
+			if ($this->page > 0 && ((isset($this->pageoutput[$this->page]['Font']) && $this->pageoutput[$this->page]['Font'] != $fontout) || !isset($this->pageoutput[$this->page]['Font']))) {
+				$this->writer->write($fontout);
+			}
+			$this->pageoutput[$this->page]['Font'] = $fontout;
+		}
+	}
+
+	function AddLink()
+	{
+		// Create a new internal link
+		$n = count($this->links) + 1;
+		$this->links[$n] = [0, 0];
+		return $n;
+	}
+
+	function SetLink($link, $y = 0, $page = -1)
+	{
+		// Set destination of internal link
+		if ($y == -1) {
+			$y = $this->y;
+		}
+		if ($page == -1) {
+			$page = $this->page;
+		}
+		$this->links[$link] = [$page, $y];
+	}
+
+	function Link($x, $y, $w, $h, $link)
+	{
+		$l = [$x * Mpdf::SCALE, $this->hPt - $y * Mpdf::SCALE, $w * Mpdf::SCALE, $h * Mpdf::SCALE, $link];
+		if ($this->keep_block_together) { // don't write yet
+			return;
+		} elseif ($this->table_rotate) { // *TABLES*
+			$this->tbrot_Links[$this->page][] = $l; // *TABLES*
+			return; // *TABLES*
+		} // *TABLES*
+		elseif ($this->kwt) {
+			$this->kwt_Links[$this->page][] = $l;
+			return;
+		}
+
+		if ($this->writingHTMLheader || $this->writingHTMLfooter) {
+			$this->HTMLheaderPageLinks[] = $l;
+			return;
+		}
+		// Put a link on the page
+		$this->PageLinks[$this->page][] = $l;
+		// Save cross-reference to Column buffer
+		$ref = count($this->PageLinks[$this->page]) - 1; // *COLUMNS*
+		$this->columnLinks[$this->CurrCol][(int) $this->x][(int) $this->y] = $ref; // *COLUMNS*
+	}
+
+	function Text($x, $y, $txt, $OTLdata = [], $textvar = 0, $aixextra = '', $coordsys = '', $return = false)
+	{
+		// Output (or return) a string
+		// Called (internally) by Watermark() & _tableWrite() [rotated cells] & TableHeaderFooter() & WriteText()
+		// Called also from classes/svg.php
+		// Expects Font to be set
+		// Expects input to be mb_encoded if necessary and RTL reversed & OTL processed
+		// ARTIFICIAL BOLD AND ITALIC
+		$s = 'q ';
+		if ($this->falseBoldWeight && strpos($this->ReqFontStyle, "B") !== false && strpos($this->FontStyle, "B") === false) {
+			$s .= '2 Tr 1 J 1 j ';
+			$s .= sprintf('%.3F w ', ($this->FontSize / 130) * Mpdf::SCALE * $this->falseBoldWeight);
+			$tc = strtoupper($this->TextColor); // change 0 0 0 rg to 0 0 0 RG
+			if ($this->FillColor != $tc) {
+				$s .= $tc . ' ';
+			}  // stroke (outline) = same colour as text(fill)
+		}
+		if (strpos($this->ReqFontStyle, "I") !== false && strpos($this->FontStyle, "I") === false) {
+			$aix = '1 0 0.261799 1 %.3F %.3F Tm';
+		} else {
+			$aix = '%.3F %.3F Td';
+		}
+
+		$aix = $aixextra . $aix;
+
+		if ($this->ColorFlag) {
+			$s .= $this->TextColor . ' ';
+		}
+
+		$this->CurrentFont['used'] = true;
+
+		if ($this->usingCoreFont) {
+			$txt2 = str_replace(chr(160), chr(32), $txt);
+		} else {
+			$txt2 = str_replace(chr(194) . chr(160), chr(32), $txt);
+		}
+
+		$px = $x;
+		$py = $y;
+		if ($coordsys != 'SVG') {
+			$px = $x * Mpdf::SCALE;
+			$py = ($this->h - $y) * Mpdf::SCALE;
+		}
+
+
+		/** ************** SIMILAR TO Cell() ************************ */
+
+		// IF corefonts AND NOT SmCaps AND NOT Kerning
+		// Just output text
+		if ($this->usingCoreFont && !($textvar & TextVars::FC_SMALLCAPS) && !($textvar & TextVars::FC_KERNING)) {
+			$txt2 = $this->writer->escape($txt2);
+			$s .= sprintf('BT ' . $aix . ' (%s) Tj ET', $px, $py, $txt2);
+		} // IF NOT corefonts [AND NO wordspacing] AND NOT SIP/SMP AND NOT SmCaps AND NOT Kerning AND NOT OTL
+		// Just output text
+		elseif (!$this->usingCoreFont && !($textvar & TextVars::FC_SMALLCAPS) && !($textvar & TextVars::FC_KERNING) && !(isset($this->CurrentFont['useOTL']) && ($this->CurrentFont['useOTL'] & 0xFF) && !empty($OTLdata['GPOSinfo']))) {
+			// IF SIP/SMP
+			if ($this->CurrentFont['sip'] || $this->CurrentFont['smp']) {
+				$txt2 = $this->UTF8toSubset($txt2);
+				$s .=sprintf('BT ' . $aix . ' %s Tj ET', $px, $py, $txt2);
+			} // NOT SIP/SMP
+			else {
+				$txt2 = $this->writer->utf8ToUtf16BigEndian($txt2, false);
+				$txt2 = $this->writer->escape($txt2);
+				$s .=sprintf('BT ' . $aix . ' (%s) Tj ET', $px, $py, $txt2);
+			}
+		} // IF NOT corefonts [AND IS wordspacing] AND NOT SIP AND NOT SmCaps AND NOT Kerning AND NOT OTL
+		// Not required here (cf. Cell() )
+		// ELSE (IF SmCaps || Kerning || OTL) [corefonts or not corefonts; SIP or SMP or BMP]
+		else {
+			$s .= $this->applyGPOSpdf($txt2, $aix, $px, $py, $OTLdata, $textvar);
+		}
+		/*         * ************** END ************************ */
+
+		$s .= ' ';
+
+		if (($textvar & TextVars::FD_UNDERLINE) && $txt != '') { // mPDF 5.7.1
+			$c = strtoupper($this->TextColor); // change 0 0 0 rg to 0 0 0 RG
+			if ($this->FillColor != $c) {
+				$s.= ' ' . $c . ' ';
+			}
+			if (isset($this->CurrentFont['up']) && $this->CurrentFont['up']) {
+				$up = $this->CurrentFont['up'];
+			} else {
+				$up = -100;
+			}
+			$adjusty = (-$up / 1000 * $this->FontSize);
+			if (isset($this->CurrentFont['ut']) && $this->CurrentFont['ut']) {
+				$ut = $this->CurrentFont['ut'] / 1000 * $this->FontSize;
+			} else {
+				$ut = 60 / 1000 * $this->FontSize;
+			}
+			$olw = $this->LineWidth;
+			$s .= ' ' . (sprintf(' %.3F w', $ut * Mpdf::SCALE));
+			$s .= ' ' . $this->_dounderline($x, $y + $adjusty, $txt, $OTLdata, $textvar);
+			$s .= ' ' . (sprintf(' %.3F w', $olw * Mpdf::SCALE));
+			if ($this->FillColor != $c) {
+				$s.= ' ' . $this->FillColor . ' ';
+			}
+		}
+		// STRIKETHROUGH
+		if (($textvar & TextVars::FD_LINETHROUGH) && $txt != '') { // mPDF 5.7.1
+			$c = strtoupper($this->TextColor); // change 0 0 0 rg to 0 0 0 RG
+			if ($this->FillColor != $c) {
+				$s.= ' ' . $c . ' ';
+			}
+			// Superscript and Subscript Y coordinate adjustment (now for striked-through texts)
+			if (isset($this->CurrentFont['desc']['CapHeight']) && $this->CurrentFont['desc']['CapHeight']) {
+				$ch = $this->CurrentFont['desc']['CapHeight'];
+			} else {
+				$ch = 700;
+			}
+			$adjusty = (-$ch / 1000 * $this->FontSize) * 0.35;
+			if (isset($this->CurrentFont['ut']) && $this->CurrentFont['ut']) {
+				$ut = $this->CurrentFont['ut'] / 1000 * $this->FontSize;
+			} else {
+				$ut = 60 / 1000 * $this->FontSize;
+			}
+			$olw = $this->LineWidth;
+			$s .= ' ' . (sprintf(' %.3F w', $ut * Mpdf::SCALE));
+			$s .= ' ' . $this->_dounderline($x, $y + $adjusty, $txt, $OTLdata, $textvar);
+			$s .= ' ' . (sprintf(' %.3F w', $olw * Mpdf::SCALE));
+			if ($this->FillColor != $c) {
+				$s.= ' ' . $this->FillColor . ' ';
+			}
+		}
+		$s .= 'Q';
+
+		if ($return) {
+			return $s . " \n";
+		}
+		$this->writer->write($s);
+	}
+
+	/* -- DIRECTW -- */
+
+	function WriteText($x, $y, $txt)
+	{
+		// Output a string using Text() but does encoding and text reversing of RTL
+		$txt = $this->purify_utf8_text($txt);
+		if ($this->text_input_as_HTML) {
+			$txt = $this->all_entities_to_utf8($txt);
+		}
+		if ($this->usingCoreFont) {
+			$txt = mb_convert_encoding($txt, $this->mb_enc, 'UTF-8');
+		}
+
+		// DIRECTIONALITY
+		if (preg_match("/([" . $this->pregRTLchars . "])/u", $txt)) {
+			$this->biDirectional = true;
+		} // *OTL*
+
+		$textvar = 0;
+		$save_OTLtags = $this->OTLtags;
+		$this->OTLtags = [];
+		if ($this->useKerning) {
+			if ($this->CurrentFont['haskernGPOS']) {
+				$this->OTLtags['Plus'] .= ' kern';
+			} else {
+				$textvar = ($textvar | TextVars::FC_KERNING);
+			}
+		}
+
+		/* -- OTL -- */
+		// Use OTL OpenType Table Layout - GSUB & GPOS
+		if (isset($this->CurrentFont['useOTL']) && $this->CurrentFont['useOTL']) {
+			$txt = $this->otl->applyOTL($txt, $this->CurrentFont['useOTL']);
+			$OTLdata = $this->otl->OTLdata;
+		}
+		/* -- END OTL -- */
+		$this->OTLtags = $save_OTLtags;
+
+		$this->magic_reverse_dir($txt, $this->directionality, $OTLdata);
+
+		$this->Text($x, $y, $txt, $OTLdata, $textvar);
+	}
+
+	function WriteCell($w, $h = 0, $txt = '', $border = 0, $ln = 0, $align = '', $fill = 0, $link = '', $currentx = 0)
+	{
+		// Output a cell using Cell() but does encoding and text reversing of RTL
+		$txt = $this->purify_utf8_text($txt);
+		if ($this->text_input_as_HTML) {
+			$txt = $this->all_entities_to_utf8($txt);
+		}
+		if ($this->usingCoreFont) {
+			$txt = mb_convert_encoding($txt, $this->mb_enc, 'UTF-8');
+		}
+		// DIRECTIONALITY
+		if (preg_match("/([" . $this->pregRTLchars . "])/u", $txt)) {
+			$this->biDirectional = true;
+		} // *OTL*
+
+		$textvar = 0;
+		$save_OTLtags = $this->OTLtags;
+		$this->OTLtags = [];
+		if ($this->useKerning) {
+			if ($this->CurrentFont['haskernGPOS']) {
+				$this->OTLtags['Plus'] .= ' kern';
+			} else {
+				$textvar = ($textvar | TextVars::FC_KERNING);
+			}
+		}
+
+		/* -- OTL -- */
+		// Use OTL OpenType Table Layout - GSUB & GPOS
+		if (isset($this->CurrentFont['useOTL']) && $this->CurrentFont['useOTL']) {
+			$txt = $this->otl->applyOTL($txt, $this->CurrentFont['useOTL']);
+			$OTLdata = $this->otl->OTLdata;
+		}
+		/* -- END OTL -- */
+		$this->OTLtags = $save_OTLtags;
+
+		$this->magic_reverse_dir($txt, $this->directionality, $OTLdata);
+
+		$this->Cell($w, $h, $txt, $border, $ln, $align, $fill, $link, $currentx, 0, 0, 'M', 0, false, $OTLdata, $textvar);
+	}
+
+	/* -- END DIRECTW -- */
+
+	function ResetSpacing()
+	{
+		if ($this->ws != 0) {
+			$this->writer->write('BT 0 Tw ET');
+		}
+		$this->ws = 0;
+		if ($this->charspacing != 0) {
+			$this->writer->write('BT 0 Tc ET');
+		}
+		$this->charspacing = 0;
+	}
+
+	function SetSpacing($cs, $ws)
+	{
+		if (intval($cs * 1000) == 0) {
+			$cs = 0;
+		}
+		if ($cs) {
+			$this->writer->write(sprintf('BT %.3F Tc ET', $cs));
+		} elseif ($this->charspacing != 0) {
+			$this->writer->write('BT 0 Tc ET');
+		}
+		$this->charspacing = $cs;
+		if (intval($ws * 1000) == 0) {
+			$ws = 0;
+		}
+		if ($ws) {
+			$this->writer->write(sprintf('BT %.3F Tw ET', $ws));
+		} elseif ($this->ws != 0) {
+			$this->writer->write('BT 0 Tw ET');
+		}
+		$this->ws = $ws;
+	}
+
+	// WORD SPACING
+	function GetJspacing($nc, $ns, $w, $inclCursive, &$cOTLdata)
+	{
+		$kashida_present = false;
+		$kashida_space = 0;
+		if ($w > 0 && $inclCursive && isset($this->CurrentFont['useKashida']) && $this->CurrentFont['useKashida'] && !empty($cOTLdata)) {
+			for ($c = 0; $c < count($cOTLdata); $c++) {
+				for ($i = 0; $i < strlen($cOTLdata[$c]['group']); $i++) {
+					if (isset($cOTLdata[$c]['GPOSinfo'][$i]['kashida']) && $cOTLdata[$c]['GPOSinfo'][$i]['kashida'] > 0) {
+						$kashida_present = true;
+						break 2;
+					}
+				}
+			}
+		}
+
+		if ($kashida_present) {
+			$k_ctr = 0;  // Number of kashida points
+			$k_total = 0;  // Total of kashida values (priority)
+			// Reset word
+			$max_kashida_in_word = 0;
+			$last_kashida_in_word = -1;
+
+			for ($c = 0; $c < count($cOTLdata); $c++) {
+				for ($i = 0; $i < strlen($cOTLdata[$c]['group']); $i++) {
+					if ($cOTLdata[$c]['group'][$i] == 'S') {
+						// Save from last word
+						if ($max_kashida_in_word) {
+							$k_ctr++;
+							$k_total = $max_kashida_in_word;
+						}
+						// Reset word
+						$max_kashida_in_word = 0;
+						$last_kashida_in_word = -1;
+					}
+
+					if (isset($cOTLdata[$c]['GPOSinfo'][$i]['kashida']) && $cOTLdata[$c]['GPOSinfo'][$i]['kashida'] > 0) {
+						if ($max_kashida_in_word) {
+							if ($cOTLdata[$c]['GPOSinfo'][$i]['kashida'] > $max_kashida_in_word) {
+								$max_kashida_in_word = $cOTLdata[$c]['GPOSinfo'][$i]['kashida'];
+								$cOTLdata[$c]['GPOSinfo'][$last_kashida_in_word]['kashida'] = 0;
+								$last_kashida_in_word = $i;
+							} else {
+								$cOTLdata[$c]['GPOSinfo'][$i]['kashida'] = 0;
+							}
+						} else {
+							$max_kashida_in_word = $cOTLdata[$c]['GPOSinfo'][$i]['kashida'];
+							$last_kashida_in_word = $i;
+						}
+					}
+				}
+			}
+			// Save from last word
+			if ($max_kashida_in_word) {
+				$k_ctr++;
+				$k_total = $max_kashida_in_word;
+			}
+
+			// Number of kashida points = $k_ctr
+			// $useKashida is a % value from CurrentFont/config_fonts.php
+			// % ratio divided between word-spacing and kashida-spacing
+			$kashida_space_ratio = intval($this->CurrentFont['useKashida']) / 100;
+
+
+			$kashida_space = $w * $kashida_space_ratio;
+
+			$tatw = $this->_getCharWidth($this->CurrentFont['cw'], 0x0640);
+			// Only use kashida if each allocated kashida width is > 0.01 x width of a tatweel
+			// Otherwise fontstretch is too small and errors
+			// If not just leave to adjust word-spacing
+			if ($tatw && (($kashida_space / $k_ctr) / $tatw) > 0.01) {
+				for ($c = 0; $c < count($cOTLdata); $c++) {
+					for ($i = 0; $i < strlen($cOTLdata[$c]['group']); $i++) {
+						if (isset($cOTLdata[$c]['GPOSinfo'][$i]['kashida']) && $cOTLdata[$c]['GPOSinfo'][$i]['kashida'] > 0) {
+							// At this point kashida is a number representing priority (higher number - higher priority)
+							// We are now going to set it as an actual length
+							// This shares it equally amongst words:
+							$cOTLdata[$c]['GPOSinfo'][$i]['kashida_space'] = (1 / $k_ctr) * $kashida_space;
+						}
+					}
+				}
+				$w -= $kashida_space;
+			}
+		}
+
+		$ws = 0;
+		$charspacing = 0;
+		$ww = $this->jSWord;
+		$ncx = $nc - 1;
+		if ($nc == 0) {
+			return [0, 0, 0];
+		} // Only word spacing allowed / possible
+		elseif ($this->fixedlSpacing !== false || $inclCursive) {
+			if ($ns) {
+				$ws = $w / $ns;
+			}
+		} elseif ($nc == 1) {
+			$charspacing = $w;
+		} elseif (!$ns) {
+			$charspacing = $w / ($ncx );
+			if (($this->jSmaxChar > 0) && ($charspacing > $this->jSmaxChar)) {
+				$charspacing = $this->jSmaxChar;
+			}
+		} elseif ($ns == ($ncx )) {
+			$charspacing = $w / $ns;
+		} else {
+			if ($this->usingCoreFont) {
+				$cs = ($w * (1 - $this->jSWord)) / ($ncx );
+				if (($this->jSmaxChar > 0) && ($cs > $this->jSmaxChar)) {
+					$cs = $this->jSmaxChar;
+					$ww = 1 - (($cs * ($ncx )) / $w);
+				}
+				$charspacing = $cs;
+				$ws = ($w * ($ww) ) / $ns;
+			} else {
+				$cs = ($w * (1 - $this->jSWord)) / ($ncx - $ns);
+				if (($this->jSmaxChar > 0) && ($cs > $this->jSmaxChar)) {
+					$cs = $this->jSmaxChar;
+					$ww = 1 - (($cs * ($ncx - $ns)) / $w);
+				}
+				$charspacing = $cs;
+				$ws = (($w * ($ww) ) / $ns) - $charspacing;
+			}
+		}
+		return [$charspacing, $ws, $kashida_space];
+	}
+
+	/**
+	 * Output a cell
+	 *
+	 * Expects input to be mb_encoded if necessary and RTL reversed
+	 *
+	 * @since mPDF 5.7.1
+	 */
+	function Cell($w, $h = 0, $txt = '', $border = 0, $ln = 0, $align = '', $fill = 0, $link = '', $currentx = 0, $lcpaddingL = 0, $lcpaddingR = 0, $valign = 'M', $spanfill = 0, $exactWidth = false, $OTLdata = false, $textvar = 0, $lineBox = false)
+	{
+		// NON_BREAKING SPACE
+		if ($this->usingCoreFont) {
+			$txt = str_replace(chr(160), chr(32), $txt);
+		} else {
+			$txt = str_replace(chr(194) . chr(160), chr(32), $txt);
+		}
+
+		$oldcolumn = $this->CurrCol;
+
+		// Automatic page break
+		// Allows PAGE-BREAK-AFTER = avoid to work
+		if (isset($this->blk[$this->blklvl])) {
+			$bottom = $this->blk[$this->blklvl]['padding_bottom'] + $this->blk[$this->blklvl]['margin_bottom'];
+		} else {
+			$bottom = 0;
+		}
+
+		if (!$this->tableLevel
+			&& (
+				($this->y + $this->divheight > $this->PageBreakTrigger)
+				|| ($this->y + $h > $this->PageBreakTrigger)
+				|| (
+					$this->y + ($h * 2) + $bottom > $this->PageBreakTrigger
+						&& $this->blk[$this->blklvl]['page_break_after_avoid']
+				)
+			)
+			&& !$this->InFooter
+			&& $this->AcceptPageBreak()
+		) { // mPDF 5.7.2
+
+			$x = $this->x; // Current X position
+
+			// WORD SPACING
+			$ws = $this->ws; // Word Spacing
+			$charspacing = $this->charspacing; // Character Spacing
+			$this->ResetSpacing();
+
+			$this->AddPage($this->CurOrientation);
+
+			// Added to correct for OddEven Margins
+			$x += $this->MarginCorrection;
+			if ($currentx) {
+				$currentx += $this->MarginCorrection;
+			}
+			$this->x = $x;
+			// WORD SPACING
+			$this->SetSpacing($charspacing, $ws);
+		}
+
+		// Test: to put line through centre of cell: $this->Line($this->x,$this->y+($h/2),$this->x+50,$this->y+($h/2));
+		// Test: to put border around cell as it is specified: $border='LRTB';
+
+		/* -- COLUMNS -- */
+		// COLS
+		// COLUMN CHANGE
+		if ($this->CurrCol != $oldcolumn) {
+			if ($currentx) {
+				$currentx += $this->ChangeColumn * ($this->ColWidth + $this->ColGap);
+			}
+			$this->x += $this->ChangeColumn * ($this->ColWidth + $this->ColGap);
+		}
+
+		// COLUMNS Update/overwrite the lowest bottom of printing y value for a column
+		if ($this->ColActive) {
+			if ($h) {
+				$this->ColDetails[$this->CurrCol]['bottom_margin'] = $this->y + $h;
+			} else {
+				$this->ColDetails[$this->CurrCol]['bottom_margin'] = $this->y + $this->divheight;
+			}
+		}
+		/* -- END COLUMNS -- */
+
+
+		if ($w == 0) {
+			$w = $this->w - $this->rMargin - $this->x;
+		}
+
+		$s = '';
+		if ($fill == 1 && $this->FillColor) {
+			if ((isset($this->pageoutput[$this->page]['FillColor']) && $this->pageoutput[$this->page]['FillColor'] != $this->FillColor) || !isset($this->pageoutput[$this->page]['FillColor'])) {
+				$s .= $this->FillColor . ' ';
+			}
+			$this->pageoutput[$this->page]['FillColor'] = $this->FillColor;
+		}
+
+		if ($lineBox && isset($lineBox['boxtop']) && $txt) { // i.e. always from WriteFlowingBlock/finishFlowingBlock (but not objects -
+			// which only have $lineBox['top'] set)
+			$boxtop = $this->y + $lineBox['boxtop'];
+			$boxbottom = $this->y + $lineBox['boxbottom'];
+			$glyphYorigin = $lineBox['glyphYorigin'];
+			$baseline_shift = $lineBox['baseline-shift'];
+			$bord_boxtop = $bg_boxtop = $boxtop = $boxtop - $baseline_shift;
+			$bord_boxbottom = $bg_boxbottom = $boxbottom = $boxbottom - $baseline_shift;
+			$bord_boxheight = $bg_boxheight = $boxheight = $boxbottom - $boxtop;
+
+			// If inline element BACKGROUND has bounding box set by parent element:
+			if (isset($lineBox['background-boxtop'])) {
+				$bg_boxtop = $this->y + $lineBox['background-boxtop'] - $lineBox['background-baseline-shift'];
+				$bg_boxbottom = $this->y + $lineBox['background-boxbottom'] - $lineBox['background-baseline-shift'];
+				$bg_boxheight = $bg_boxbottom - $bg_boxtop;
+			}
+			// If inline element BORDER has bounding box set by parent element:
+			if (isset($lineBox['border-boxtop'])) {
+				$bord_boxtop = $this->y + $lineBox['border-boxtop'] - $lineBox['border-baseline-shift'];
+				$bord_boxbottom = $this->y + $lineBox['border-boxbottom'] - $lineBox['border-baseline-shift'];
+				$bord_boxheight = $bord_boxbottom - $bord_boxtop;
+			}
+
+		} else {
+
+			$boxtop = $this->y;
+			$boxheight = $h;
+			$boxbottom = $this->y + $h;
+			$baseline_shift = 0;
+
+			if ($txt != '') {
+
+				// FONT SIZE - this determines the baseline caculation
+				$bfs = $this->FontSize;
+				// Calculate baseline Superscript and Subscript Y coordinate adjustment
+				$bfx = $this->baselineC;
+				$baseline = $bfx * $bfs;
+
+				if ($textvar & TextVars::FA_SUPERSCRIPT) {
+					$baseline_shift = $this->textparam['text-baseline'];
+				} elseif ($textvar & TextVars::FA_SUBSCRIPT) {
+					$baseline_shift = $this->textparam['text-baseline'];
+				} elseif ($this->bullet) {
+					$baseline += ($bfx - 0.7) * $this->FontSize;
+				}
+
+				// Vertical align (for Images)
+				if ($valign == 'T') {
+					$va = (0.5 * $bfs * $this->normalLineheight);
+				} elseif ($valign == 'B') {
+					$va = $h - (0.5 * $bfs * $this->normalLineheight);
+				} else {
+					$va = 0.5 * $h;
+				} // Middle
+
+				// ONLY SET THESE IF WANT TO CONFINE BORDER +/- FILL TO FIT FONTSIZE - NOT FULL CELL AS IS ORIGINAL FUNCTION
+				// spanfill or spanborder are set in FlowingBlock functions
+				if ($spanfill || !empty($this->spanborddet) || $link != '') {
+					$exth = 0.2; // Add to fontsize to increase height of background / link / border
+					$boxtop = $this->y + $baseline + $va - ($this->FontSize * (1 + $exth / 2) * (0.5 + $bfx));
+					$boxheight = $this->FontSize * (1 + $exth);
+					$boxbottom = $boxtop + $boxheight;
+				}
+
+				$glyphYorigin = $baseline + $va;
+			}
+
+			$boxtop -= $baseline_shift;
+			$boxbottom -= $baseline_shift;
+			$bord_boxtop = $bg_boxtop = $boxtop;
+			$bord_boxbottom = $bg_boxbottom = $boxbottom;
+			$bord_boxheight = $bg_boxheight = $boxheight = $boxbottom - $boxtop;
+		}
+
+		$bbw = $tbw = $lbw = $rbw = 0; // Border widths
+		if (!empty($this->spanborddet)) {
+
+			if (!isset($this->spanborddet['B'])) {
+				$this->spanborddet['B'] = ['s' => 0, 'style' => '', 'w' => 0];
+			}
+
+			if (!isset($this->spanborddet['T'])) {
+				$this->spanborddet['T'] = ['s' => 0, 'style' => '', 'w' => 0];
+			}
+
+			if (!isset($this->spanborddet['L'])) {
+				$this->spanborddet['L'] = ['s' => 0, 'style' => '', 'w' => 0];
+			}
+
+			if (!isset($this->spanborddet['R'])) {
+				$this->spanborddet['R'] = ['s' => 0, 'style' => '', 'w' => 0];
+			}
+
+			$bbw = $this->spanborddet['B']['w'];
+			$tbw = $this->spanborddet['T']['w'];
+			$lbw = $this->spanborddet['L']['w'];
+			$rbw = $this->spanborddet['R']['w'];
+		}
+
+		if ($fill == 1 || $border == 1 || !empty($this->spanborddet)) {
+
+			if (!empty($this->spanborddet)) {
+
+				if ($fill == 1) {
+					$s .= sprintf('%.3F %.3F %.3F %.3F re f ', ($this->x - $lbw) * Mpdf::SCALE, ($this->h - $bg_boxtop + $tbw) * Mpdf::SCALE, ($w + $lbw + $rbw) * Mpdf::SCALE, (-$bg_boxheight - $tbw - $bbw) * Mpdf::SCALE);
+				}
+
+				$s.= ' q ';
+				$dashon = 3;
+				$dashoff = 3.5;
+				$dot = 2.5;
+
+				if ($tbw) {
+					$short = 0;
+
+					if ($this->spanborddet['T']['style'] == 'dashed') {
+						$s .= sprintf(' 0 j 0 J [%.3F %.3F] 0 d ', $tbw * $dashon * Mpdf::SCALE, $tbw * $dashoff * Mpdf::SCALE);
+					} elseif ($this->spanborddet['T']['style'] == 'dotted') {
+						$s .= sprintf(' 1 j 1 J [%.3F %.3F] %.3F d ', 0.001, $tbw * $dot * Mpdf::SCALE, -$tbw / 2 * Mpdf::SCALE);
+						$short = $tbw / 2;
+					} else {
+						$s .= ' 0 j 0 J [] 0 d ';
+					}
+
+					if ($this->spanborddet['T']['style'] != 'dotted') {
+						$s .= 'q ';
+						$s .= sprintf('%.3F %.3F m ', ($this->x - $lbw) * Mpdf::SCALE, ($this->h - $bord_boxtop + $tbw) * Mpdf::SCALE);
+						$s .= sprintf('%.3F %.3F l ', ($this->x + $w + $rbw) * Mpdf::SCALE, ($this->h - $bord_boxtop + $tbw) * Mpdf::SCALE);
+						$s .= sprintf('%.3F %.3F l ', ($this->x + $w) * Mpdf::SCALE, ($this->h - $bord_boxtop) * Mpdf::SCALE);
+						$s .= sprintf('%.3F %.3F l ', ($this->x) * Mpdf::SCALE, ($this->h - $bord_boxtop) * Mpdf::SCALE);
+						$s .= ' h W n '; // Ends path no-op & Sets the clipping path
+					}
+
+					$c = $this->SetDColor($this->spanborddet['T']['c'], true);
+
+					if ($this->spanborddet['T']['style'] == 'double') {
+						$s .= sprintf(' %s %.3F w ', $c, $tbw / 3 * Mpdf::SCALE);
+						$s .= sprintf('%.3F %.3F m %.3F %.3F l S ', ($this->x - $lbw) * Mpdf::SCALE, ($this->h - $bord_boxtop + $tbw * 5 / 6) * Mpdf::SCALE, ($this->x + $w + $rbw) * Mpdf::SCALE, ($this->h - $bord_boxtop + $tbw * 5 / 6) * Mpdf::SCALE);
+						$s .= sprintf('%.3F %.3F m %.3F %.3F l S ', ($this->x - $lbw) * Mpdf::SCALE, ($this->h - $bord_boxtop + $tbw / 6) * Mpdf::SCALE, ($this->x + $w + $rbw) * Mpdf::SCALE, ($this->h - $bord_boxtop + $tbw / 6) * Mpdf::SCALE);
+					} elseif ($this->spanborddet['T']['style'] == 'dotted') {
+						$s .= sprintf(' %s %.3F w ', $c, $tbw * Mpdf::SCALE);
+						$s .= sprintf('%.3F %.3F m %.3F %.3F l S ', ($this->x - $lbw) * Mpdf::SCALE, ($this->h - $bord_boxtop + $tbw / 2) * Mpdf::SCALE, ($this->x + $w + $rbw - $short) * Mpdf::SCALE, ($this->h - $bord_boxtop + $tbw / 2) * Mpdf::SCALE);
+					} else {
+						$s .= sprintf(' %s %.3F w ', $c, $tbw * Mpdf::SCALE);
+						$s .= sprintf('%.3F %.3F m %.3F %.3F l S ', ($this->x - $lbw) * Mpdf::SCALE, ($this->h - $bord_boxtop + $tbw / 2) * Mpdf::SCALE, ($this->x + $w + $rbw - $short) * Mpdf::SCALE, ($this->h - $bord_boxtop + $tbw / 2) * Mpdf::SCALE);
+					}
+
+					if ($this->spanborddet['T']['style'] != 'dotted') {
+						$s .= ' Q ';
+					}
+				}
+				if ($bbw) {
+
+					$short = 0;
+					if ($this->spanborddet['B']['style'] == 'dashed') {
+						$s .= sprintf(' 0 j 0 J [%.3F %.3F] 0 d ', $bbw * $dashon * Mpdf::SCALE, $bbw * $dashoff * Mpdf::SCALE);
+					} elseif ($this->spanborddet['B']['style'] == 'dotted') {
+						$s .= sprintf(' 1 j 1 J [%.3F %.3F] %.3F d ', 0.001, $bbw * $dot * Mpdf::SCALE, -$bbw / 2 * Mpdf::SCALE);
+						$short = $bbw / 2;
+					} else {
+						$s .= ' 0 j 0 J [] 0 d ';
+					}
+
+					if ($this->spanborddet['B']['style'] != 'dotted') {
+						$s .= 'q ';
+						$s .= sprintf('%.3F %.3F m ', ($this->x - $lbw) * Mpdf::SCALE, ($this->h - $bord_boxbottom - $bbw) * Mpdf::SCALE);
+						$s .= sprintf('%.3F %.3F l ', ($this->x + $w + $rbw) * Mpdf::SCALE, ($this->h - $bord_boxbottom - $bbw) * Mpdf::SCALE);
+						$s .= sprintf('%.3F %.3F l ', ($this->x + $w) * Mpdf::SCALE, ($this->h - $bord_boxbottom) * Mpdf::SCALE);
+						$s .= sprintf('%.3F %.3F l ', ($this->x) * Mpdf::SCALE, ($this->h - $bord_boxbottom) * Mpdf::SCALE);
+						$s .= ' h W n '; // Ends path no-op & Sets the clipping path
+					}
+
+					$c = $this->SetDColor($this->spanborddet['B']['c'], true);
+
+					if ($this->spanborddet['B']['style'] == 'double') {
+						$s .= sprintf(' %s %.3F w ', $c, $bbw / 3 * Mpdf::SCALE);
+						$s .= sprintf('%.3F %.3F m %.3F %.3F l S ', ($this->x - $lbw) * Mpdf::SCALE, ($this->h - $bord_boxbottom - $bbw / 6) * Mpdf::SCALE, ($this->x + $w + $rbw - $short) * Mpdf::SCALE, ($this->h - $bord_boxbottom - $bbw / 6) * Mpdf::SCALE);
+						$s .= sprintf('%.3F %.3F m %.3F %.3F l S ', ($this->x - $lbw) * Mpdf::SCALE, ($this->h - $bord_boxbottom - $bbw * 5 / 6) * Mpdf::SCALE, ($this->x + $w + $rbw - $short) * Mpdf::SCALE, ($this->h - $bord_boxbottom - $bbw * 5 / 6) * Mpdf::SCALE);
+					} elseif ($this->spanborddet['B']['style'] == 'dotted') {
+						$s .= sprintf(' %s %.3F w ', $c, $bbw * Mpdf::SCALE);
+						$s .= sprintf('%.3F %.3F m %.3F %.3F l S ', ($this->x - $lbw) * Mpdf::SCALE, ($this->h - $bord_boxbottom - $bbw / 2) * Mpdf::SCALE, ($this->x + $w + $rbw - $short) * Mpdf::SCALE, ($this->h - $bord_boxbottom - $bbw / 2) * Mpdf::SCALE);
+					} else {
+						$s .= sprintf(' %s %.3F w ', $c, $bbw * Mpdf::SCALE);
+						$s .= sprintf('%.3F %.3F m %.3F %.3F l S ', ($this->x - $lbw) * Mpdf::SCALE, ($this->h - $bord_boxbottom - $bbw / 2) * Mpdf::SCALE, ($this->x + $w + $rbw - $short) * Mpdf::SCALE, ($this->h - $bord_boxbottom - $bbw / 2) * Mpdf::SCALE);
+					}
+
+					if ($this->spanborddet['B']['style'] != 'dotted') {
+						$s .= ' Q ';
+					}
+				}
+
+				if ($lbw) {
+					$short = 0;
+					if ($this->spanborddet['L']['style'] == 'dashed') {
+						$s .= sprintf(' 0 j 0 J [%.3F %.3F] 0 d ', $lbw * $dashon * Mpdf::SCALE, $lbw * $dashoff * Mpdf::SCALE);
+					} elseif ($this->spanborddet['L']['style'] == 'dotted') {
+						$s .= sprintf(' 1 j 1 J [%.3F %.3F] %.3F d ', 0.001, $lbw * $dot * Mpdf::SCALE, -$lbw / 2 * Mpdf::SCALE);
+						$short = $lbw / 2;
+					} else {
+						$s .= ' 0 j 0 J [] 0 d ';
+					}
+
+					if ($this->spanborddet['L']['style'] != 'dotted') {
+						$s .= 'q ';
+						$s .= sprintf('%.3F %.3F m ', ($this->x - $lbw) * Mpdf::SCALE, ($this->h - $bord_boxbottom - $bbw) * Mpdf::SCALE);
+						$s .= sprintf('%.3F %.3F l ', ($this->x) * Mpdf::SCALE, ($this->h - $bord_boxbottom) * Mpdf::SCALE);
+						$s .= sprintf('%.3F %.3F l ', ($this->x) * Mpdf::SCALE, ($this->h - $bord_boxtop) * Mpdf::SCALE);
+						$s .= sprintf('%.3F %.3F l ', ($this->x - $lbw) * Mpdf::SCALE, ($this->h - $bord_boxtop + $tbw) * Mpdf::SCALE);
+						$s .= ' h W n '; // Ends path no-op & Sets the clipping path
+					}
+
+					$c = $this->SetDColor($this->spanborddet['L']['c'], true);
+					if ($this->spanborddet['L']['style'] == 'double') {
+						$s .= sprintf(' %s %.3F w ', $c, $lbw / 3 * Mpdf::SCALE);
+						$s .= sprintf('%.3F %.3F m %.3F %.3F l S ', ($this->x - $lbw / 6) * Mpdf::SCALE, ($this->h - $bord_boxtop + $tbw) * Mpdf::SCALE, ($this->x - $lbw / 6) * Mpdf::SCALE, ($this->h - $bord_boxbottom - $bbw + $short) * Mpdf::SCALE);
+						$s .= sprintf('%.3F %.3F m %.3F %.3F l S ', ($this->x - $lbw * 5 / 6) * Mpdf::SCALE, ($this->h - $bord_boxtop + $tbw) * Mpdf::SCALE, ($this->x - $lbw * 5 / 6) * Mpdf::SCALE, ($this->h - $bord_boxbottom - $bbw + $short) * Mpdf::SCALE);
+					} elseif ($this->spanborddet['L']['style'] == 'dotted') {
+						$s .= sprintf(' %s %.3F w ', $c, $lbw * Mpdf::SCALE);
+						$s .= sprintf('%.3F %.3F m %.3F %.3F l S ', ($this->x - $lbw / 2) * Mpdf::SCALE, ($this->h - $bord_boxtop + $tbw) * Mpdf::SCALE, ($this->x - $lbw / 2) * Mpdf::SCALE, ($this->h - $bord_boxbottom - $bbw + $short) * Mpdf::SCALE);
+					} else {
+						$s .= sprintf(' %s %.3F w ', $c, $lbw * Mpdf::SCALE);
+						$s .= sprintf('%.3F %.3F m %.3F %.3F l S ', ($this->x - $lbw / 2) * Mpdf::SCALE, ($this->h - $bord_boxtop + $tbw) * Mpdf::SCALE, ($this->x - $lbw / 2) * Mpdf::SCALE, ($this->h - $bord_boxbottom - $bbw + $short) * Mpdf::SCALE);
+					}
+
+					if ($this->spanborddet['L']['style'] != 'dotted') {
+						$s .= ' Q ';
+					}
+				}
+
+				if ($rbw) {
+
+					$short = 0;
+					if ($this->spanborddet['R']['style'] == 'dashed') {
+						$s .= sprintf(' 0 j 0 J [%.3F %.3F] 0 d ', $rbw * $dashon * Mpdf::SCALE, $rbw * $dashoff * Mpdf::SCALE);
+					} elseif ($this->spanborddet['R']['style'] == 'dotted') {
+						$s .= sprintf(' 1 j 1 J [%.3F %.3F] %.3F d ', 0.001, $rbw * $dot * Mpdf::SCALE, -$rbw / 2 * Mpdf::SCALE);
+						$short = $rbw / 2;
+					} else {
+						$s .= ' 0 j 0 J [] 0 d ';
+					}
+
+					if ($this->spanborddet['R']['style'] != 'dotted') {
+						$s .= 'q ';
+						$s .= sprintf('%.3F %.3F m ', ($this->x + $w + $rbw) * Mpdf::SCALE, ($this->h - $bord_boxbottom - $bbw) * Mpdf::SCALE);
+						$s .= sprintf('%.3F %.3F l ', ($this->x + $w) * Mpdf::SCALE, ($this->h - $bord_boxbottom) * Mpdf::SCALE);
+						$s .= sprintf('%.3F %.3F l ', ($this->x + $w) * Mpdf::SCALE, ($this->h - $bord_boxtop) * Mpdf::SCALE);
+						$s .= sprintf('%.3F %.3F l ', ($this->x + $w + $rbw) * Mpdf::SCALE, ($this->h - $bord_boxtop + $tbw) * Mpdf::SCALE);
+						$s .= ' h W n '; // Ends path no-op & Sets the clipping path
+					}
+
+					$c = $this->SetDColor($this->spanborddet['R']['c'], true);
+					if ($this->spanborddet['R']['style'] == 'double') {
+						$s .= sprintf(' %s %.3F w ', $c, $rbw / 3 * Mpdf::SCALE);
+						$s .= sprintf('%.3F %.3F m %.3F %.3F l S ', ($this->x + $w + $rbw / 6) * Mpdf::SCALE, ($this->h - $bord_boxtop + $tbw) * Mpdf::SCALE, ($this->x + $w + $rbw / 6) * Mpdf::SCALE, ($this->h - $bord_boxbottom - $bbw + $short) * Mpdf::SCALE);
+						$s .= sprintf('%.3F %.3F m %.3F %.3F l S ', ($this->x + $w + $rbw * 5 / 6) * Mpdf::SCALE, ($this->h - $bord_boxtop + $tbw) * Mpdf::SCALE, ($this->x + $w + $rbw * 5 / 6) * Mpdf::SCALE, ($this->h - $bord_boxbottom - $bbw + $short) * Mpdf::SCALE);
+					} elseif ($this->spanborddet['R']['style'] == 'dotted') {
+						$s .= sprintf(' %s %.3F w ', $c, $rbw * Mpdf::SCALE);
+						$s .= sprintf('%.3F %.3F m %.3F %.3F l S ', ($this->x + $w + $rbw / 2) * Mpdf::SCALE, ($this->h - $bord_boxtop + $tbw) * Mpdf::SCALE, ($this->x + $w + $rbw / 2) * Mpdf::SCALE, ($this->h - $bord_boxbottom - $bbw + $short) * Mpdf::SCALE);
+					} else {
+						$s .= sprintf(' %s %.3F w ', $c, $rbw * Mpdf::SCALE);
+						$s .= sprintf('%.3F %.3F m %.3F %.3F l S ', ($this->x + $w + $rbw / 2) * Mpdf::SCALE, ($this->h - $bord_boxtop + $tbw) * Mpdf::SCALE, ($this->x + $w + $rbw / 2) * Mpdf::SCALE, ($this->h - $bord_boxbottom - $bbw + $short) * Mpdf::SCALE);
+					}
+
+					if ($this->spanborddet['R']['style'] != 'dotted') {
+						$s .= ' Q ';
+					}
+				}
+
+				$s.= ' Q ';
+
+			} else { // If "border", does not come from WriteFlowingBlock or FinishFlowingBlock
+
+				if ($fill == 1) {
+					$op = ($border == 1) ? 'B' : 'f';
+				} else {
+					$op = 'S';
+				}
+
+				$s .= sprintf('%.3F %.3F %.3F %.3F re %s ', $this->x * Mpdf::SCALE, ($this->h - $bg_boxtop) * Mpdf::SCALE, $w * Mpdf::SCALE, -$bg_boxheight * Mpdf::SCALE, $op);
+			}
+		}
+
+		if (is_string($border)) { // If "border", does not come from WriteFlowingBlock or FinishFlowingBlock
+
+			$x = $this->x;
+			$y = $this->y;
+
+			if (is_int(strpos($border, 'L'))) {
+				$s .= sprintf('%.3F %.3F m %.3F %.3F l S ', $x * Mpdf::SCALE, ($this->h - $bord_boxtop) * Mpdf::SCALE, $x * Mpdf::SCALE, ($this->h - ($bord_boxbottom)) * Mpdf::SCALE);
+			}
+
+			if (is_int(strpos($border, 'T'))) {
+				$s .= sprintf('%.3F %.3F m %.3F %.3F l S ', $x * Mpdf::SCALE, ($this->h - $bord_boxtop) * Mpdf::SCALE, ($x + $w) * Mpdf::SCALE, ($this->h - $bord_boxtop) * Mpdf::SCALE);
+			}
+
+			if (is_int(strpos($border, 'R'))) {
+				$s .= sprintf('%.3F %.3F m %.3F %.3F l S ', ($x + $w) * Mpdf::SCALE, ($this->h - $bord_boxtop) * Mpdf::SCALE, ($x + $w) * Mpdf::SCALE, ($this->h - ($bord_boxbottom)) * Mpdf::SCALE);
+			}
+
+			if (is_int(strpos($border, 'B'))) {
+				$s .= sprintf('%.3F %.3F m %.3F %.3F l S ', $x * Mpdf::SCALE, ($this->h - ($bord_boxbottom)) * Mpdf::SCALE, ($x + $w) * Mpdf::SCALE, ($this->h - ($bord_boxbottom)) * Mpdf::SCALE);
+			}
+		}
+
+		if ($txt != '') {
+
+			if ($exactWidth) {
+				$stringWidth = $w;
+			} else {
+				$stringWidth = $this->GetStringWidth($txt, true, $OTLdata, $textvar) + ( $this->charspacing * mb_strlen($txt, $this->mb_enc) / Mpdf::SCALE ) + ( $this->ws * mb_substr_count($txt, ' ', $this->mb_enc) / Mpdf::SCALE );
+			}
+
+			// Set x OFFSET FOR PRINTING
+			if ($align == 'R') {
+				$dx = $w - $this->cMarginR - $stringWidth - $lcpaddingR;
+			} elseif ($align == 'C') {
+				$dx = (($w - $stringWidth ) / 2);
+			} elseif ($align == 'L' or $align == 'J') {
+				$dx = $this->cMarginL + $lcpaddingL;
+			} else {
+				$dx = 0;
+			}
+
+			if ($this->ColorFlag) {
+				$s .='q ' . $this->TextColor . ' ';
+			}
+
+			// OUTLINE
+			if (isset($this->textparam['outline-s']) && $this->textparam['outline-s'] && !($textvar & TextVars::FC_SMALLCAPS)) { // mPDF 5.7.1
+				$s .=' ' . sprintf('%.3F w', $this->LineWidth * Mpdf::SCALE) . ' ';
+				$s .=" $this->DrawColor ";
+				$s .=" 2 Tr ";
+			} elseif ($this->falseBoldWeight && strpos($this->ReqFontStyle, "B") !== false && strpos($this->FontStyle, "B") === false && !($textvar & TextVars::FC_SMALLCAPS)) { // can't use together with OUTLINE or Small Caps	// mPDF 5.7.1	??? why not with SmallCaps ???
+				$s .= ' 2 Tr 1 J 1 j ';
+				$s .= ' ' . sprintf('%.3F w', ($this->FontSize / 130) * Mpdf::SCALE * $this->falseBoldWeight) . ' ';
+				$tc = strtoupper($this->TextColor); // change 0 0 0 rg to 0 0 0 RG
+				if ($this->FillColor != $tc) {
+					$s .= ' ' . $tc . ' ';
+				}  // stroke (outline) = same colour as text(fill)
+			} else {
+				$s .=" 0 Tr ";
+			}
+
+			if (strpos($this->ReqFontStyle, "I") !== false && strpos($this->FontStyle, "I") === false) { // Artificial italic
+				$aix = '1 0 0.261799 1 %.3F %.3F Tm ';
+			} else {
+				$aix = '%.3F %.3F Td ';
+			}
+
+			$px = ($this->x + $dx) * Mpdf::SCALE;
+			$py = ($this->h - ($this->y + $glyphYorigin - $baseline_shift)) * Mpdf::SCALE;
+
+			// THE TEXT
+			$txt2 = $txt;
+			$sub = '';
+			$this->CurrentFont['used'] = true;
+
+			/*             * ************** SIMILAR TO Text() ************************ */
+
+			// IF corefonts AND NOT SmCaps AND NOT Kerning
+			// Just output text; charspacing and wordspacing already set by charspacing (Tc) and ws (Tw)
+			if ($this->usingCoreFont && !($textvar & TextVars::FC_SMALLCAPS) && !($textvar & TextVars::FC_KERNING)) {
+				$txt2 = $this->writer->escape($txt2);
+				$sub .= sprintf('BT ' . $aix . ' (%s) Tj ET', $px, $py, $txt2);
+			} // IF NOT corefonts AND NO wordspacing AND NOT SIP/SMP AND NOT SmCaps AND NOT Kerning AND NOT OTL
+			// Just output text
+			elseif (!$this->usingCoreFont && !$this->ws && !($textvar & TextVars::FC_SMALLCAPS) && !($textvar & TextVars::FC_KERNING) && !(isset($this->CurrentFont['useOTL']) && ($this->CurrentFont['useOTL'] & 0xFF) && !empty($OTLdata['GPOSinfo']))) {
+				// IF SIP/SMP
+				if ((isset($this->CurrentFont['sip']) && $this->CurrentFont['sip']) || (isset($this->CurrentFont['smp']) && $this->CurrentFont['smp'])) {
+					$txt2 = $this->UTF8toSubset($txt2);
+					$sub .=sprintf('BT ' . $aix . ' %s Tj ET', $px, $py, $txt2);
+				} // NOT SIP/SMP
+				else {
+					$txt2 = $this->writer->utf8ToUtf16BigEndian($txt2, false);
+					$txt2 = $this->writer->escape($txt2);
+					$sub .=sprintf('BT ' . $aix . ' (%s) Tj ET', $px, $py, $txt2);
+				}
+			} // IF NOT corefonts AND IS wordspacing AND NOT SIP AND NOT SmCaps AND NOT Kerning AND NOT OTL
+			// Output text word by word with an adjustment to the intercharacter spacing for SPACEs to form word spacing
+			// IF multibyte - Tw has no effect - need to do word spacing using an adjustment before each space
+			elseif (!$this->usingCoreFont && $this->ws && !((isset($this->CurrentFont['sip']) && $this->CurrentFont['sip']) || (isset($this->CurrentFont['smp']) && $this->CurrentFont['smp'])) && !($textvar & TextVars::FC_SMALLCAPS) && !($textvar & TextVars::FC_KERNING) && !(isset($this->CurrentFont['useOTL']) && ($this->CurrentFont['useOTL'] & 0xFF) && (!empty($OTLdata['GPOSinfo']) || (strpos($OTLdata['group'], 'M') !== false && $this->charspacing)) )) {
+				$space = " ";
+				$space = $this->writer->utf8ToUtf16BigEndian($space, false);
+				$space = $this->writer->escape($space);
+				$sub .=sprintf('BT ' . $aix . ' %.3F Tc [', $px, $py, $this->charspacing);
+				$t = explode(' ', $txt2);
+				$numt = count($t);
+				for ($i = 0; $i < $numt; $i++) {
+					$tx = $t[$i];
+					$tx = $this->writer->utf8ToUtf16BigEndian($tx, false);
+					$tx = $this->writer->escape($tx);
+					$sub .=sprintf('(%s) ', $tx);
+					if (($i + 1) < $numt) {
+						$adj = -($this->ws) * 1000 / $this->FontSizePt;
+						$sub .=sprintf('%d(%s) ', $adj, $space);
+					}
+				}
+				$sub .='] TJ ';
+				$sub .=' ET';
+			} // ELSE (IF SmCaps || Kerning || OTL) [corefonts or not corefonts; SIP or SMP or BMP]
+			else {
+				$sub = $this->applyGPOSpdf($txt, $aix, $px, $py, $OTLdata, $textvar);
+			}
+
+			/** ************** END SIMILAR TO Text() ************************ */
+
+			if ($this->shrin_k > 1) {
+				$shrin_k = $this->shrin_k;
+			} else {
+				$shrin_k = 1;
+			}
+
+			// UNDERLINE
+			if ($textvar & TextVars::FD_UNDERLINE) { // mPDF 5.7.1	// mPDF 6
+
+				// mPDF 5.7.3  inline text-decoration parameters
+
+				$c = isset($this->textparam['u-decoration']['color']) ? $this->textparam['u-decoration']['color'] : '';
+				if ($this->FillColor != $c) {
+					$sub .= ' ' . $c . ' ';
+				}
+
+				// mPDF 5.7.3  inline text-decoration parameters
+				$decorationfontkey = isset($this->textparam['u-decoration']['fontkey']) ? $this->textparam['u-decoration']['fontkey'] : '';
+				$decorationfontsize = isset($this->textparam['u-decoration']['fontsize']) ? $this->textparam['u-decoration']['fontsize'] / $shrin_k : 0;
+
+				if (isset($this->fonts[$decorationfontkey]['ut']) && $this->fonts[$decorationfontkey]['ut']) {
+					$ut = $this->fonts[$decorationfontkey]['ut'] / 1000 * $decorationfontsize;
+				} else {
+					$ut = 60 / 1000 * $decorationfontsize;
+				}
+
+				if (isset($this->fonts[$decorationfontkey]['up']) && $this->fonts[$decorationfontkey]['up']) {
+					$up = $this->fonts[$decorationfontkey]['up'];
+				} else {
+					$up = -100;
+				}
+
+				$adjusty = (-$up / 1000 * $decorationfontsize) + $ut / 2;
+				$ubaseline = isset($this->textparam['u-decoration']['baseline'])
+					? $glyphYorigin - $this->textparam['u-decoration']['baseline'] / $shrin_k
+					: $glyphYorigin;
+
+				$olw = $this->LineWidth;
+
+				$sub .= ' ' . (sprintf(' %.3F w 0 j 0 J ', $ut * Mpdf::SCALE));
+				$sub .= ' ' . $this->_dounderline($this->x + $dx, $this->y + $ubaseline + $adjusty, $txt, $OTLdata, $textvar);
+				$sub .= ' ' . (sprintf(' %.3F w 2 j 2 J ', $olw * Mpdf::SCALE));
+
+				if ($this->FillColor != $c) {
+					$sub .= ' ' . $this->FillColor . ' ';
+				}
+			}
+
+			// STRIKETHROUGH
+			if ($textvar & TextVars::FD_LINETHROUGH) { // mPDF 5.7.1	// mPDF 6
+
+				// mPDF 5.7.3  inline text-decoration parameters
+				$c = $this->textparam['s-decoration']['color'];
+
+				if ($this->FillColor != $c) {
+					$sub .= ' ' . $c . ' ';
+				}
+
+				// mPDF 5.7.3  inline text-decoration parameters
+				$decorationfontkey = $this->textparam['s-decoration']['fontkey'];
+				$decorationfontsize = $this->textparam['s-decoration']['fontsize'] / $shrin_k;
+
+				// Use yStrikeoutSize from OS/2 if available
+				if (isset($this->fonts[$decorationfontkey]['strs']) && $this->fonts[$decorationfontkey]['strs']) {
+					$ut = $this->fonts[$decorationfontkey]['strs'] / 1000 * $decorationfontsize;
+				} // else use underlineThickness from post if available
+				elseif (isset($this->fonts[$decorationfontkey]['ut']) && $this->fonts[$decorationfontkey]['ut']) {
+					$ut = $this->fonts[$decorationfontkey]['ut'] / 1000 * $decorationfontsize;
+				} else {
+					$ut = 50 / 1000 * $decorationfontsize;
+				}
+
+				// Use yStrikeoutPosition from OS/2 if available
+				if (isset($this->fonts[$decorationfontkey]['strp']) && $this->fonts[$decorationfontkey]['strp']) {
+					$up = $this->fonts[$decorationfontkey]['strp'];
+					$adjusty = (-$up / 1000 * $decorationfontsize);
+				} // else use a fraction ($this->baselineS) of CapHeight
+				else {
+					if (isset($this->fonts[$decorationfontkey]['desc']['CapHeight']) && $this->fonts[$decorationfontkey]['desc']['CapHeight']) {
+						$ch = $this->fonts[$decorationfontkey]['desc']['CapHeight'];
+					} else {
+						$ch = 700;
+					}
+					$adjusty = (-$ch / 1000 * $decorationfontsize) * $this->baselineS;
+				}
+
+				$sbaseline = $glyphYorigin - $this->textparam['s-decoration']['baseline'] / $shrin_k;
+
+				$olw = $this->LineWidth;
+
+				$sub .=' ' . (sprintf(' %.3F w 0 j 0 J ', $ut * Mpdf::SCALE));
+				$sub .=' ' . $this->_dounderline($this->x + $dx, $this->y + $sbaseline + $adjusty, $txt, $OTLdata, $textvar);
+				$sub .=' ' . (sprintf(' %.3F w 2 j 2 J ', $olw * Mpdf::SCALE));
+
+				if ($this->FillColor != $c) {
+					$sub .= ' ' . $this->FillColor . ' ';
+				}
+			}
+
+			// mPDF 5.7.3  inline text-decoration parameters
+			// OVERLINE
+			if ($textvar & TextVars::FD_OVERLINE) { // mPDF 5.7.1	// mPDF 6
+				// mPDF 5.7.3  inline text-decoration parameters
+				$c = $this->textparam['o-decoration']['color'];
+				if ($this->FillColor != $c) {
+					$sub .= ' ' . $c . ' ';
+				}
+
+				// mPDF 5.7.3  inline text-decoration parameters
+				$decorationfontkey = (int) (((float) $this->textparam['o-decoration']['fontkey']) / $shrin_k);
+				$decorationfontsize = $this->textparam['o-decoration']['fontsize'];
+
+				if (isset($this->fonts[$decorationfontkey]['ut']) && $this->fonts[$decorationfontkey]['ut']) {
+					$ut = $this->fonts[$decorationfontkey]['ut'] / 1000 * $decorationfontsize;
+				} else {
+					$ut = 60 / 1000 * $decorationfontsize;
+				}
+				if (isset($this->fonts[$decorationfontkey]['desc']['CapHeight']) && $this->fonts[$decorationfontkey]['desc']['CapHeight']) {
+					$ch = $this->fonts[$decorationfontkey]['desc']['CapHeight'];
+				} else {
+					$ch = 700;
+				}
+				$adjusty = (-$ch / 1000 * $decorationfontsize) * $this->baselineO;
+				$obaseline = $glyphYorigin - $this->textparam['o-decoration']['baseline'] / $shrin_k;
+				$olw = $this->LineWidth;
+				$sub .=' ' . (sprintf(' %.3F w 0 j 0 J ', $ut * Mpdf::SCALE));
+				$sub .=' ' . $this->_dounderline($this->x + $dx, $this->y + $obaseline + $adjusty, $txt, $OTLdata, $textvar);
+				$sub .=' ' . (sprintf(' %.3F w 2 j 2 J ', $olw * Mpdf::SCALE));
+				if ($this->FillColor != $c) {
+					$sub .= ' ' . $this->FillColor . ' ';
+				}
+			}
+
+			// TEXT SHADOW
+			if ($this->textshadow) {  // First to process is last in CSS comma separated shadows
+				foreach ($this->textshadow as $ts) {
+					$s .= ' q ';
+					$s .= $this->SetTColor($ts['col'], true) . "\n";
+					if ($ts['col'][0] == 5 && ord($ts['col'][4]) < 100) { // RGBa
+						$s .= $this->SetAlpha(ord($ts['col'][4]) / 100, 'Normal', true, 'F') . "\n";
+					} elseif ($ts['col'][0] == 6 && ord($ts['col'][5]) < 100) { // CMYKa
+						$s .= $this->SetAlpha(ord($ts['col'][5]) / 100, 'Normal', true, 'F') . "\n";
+					} elseif ($ts['col'][0] == 1 && $ts['col'][2] == 1 && ord($ts['col'][3]) < 100) { // Gray
+						$s .= $this->SetAlpha(ord($ts['col'][3]) / 100, 'Normal', true, 'F') . "\n";
+					}
+					$s .= sprintf(' 1 0 0 1 %.4F %.4F cm', $ts['x'] * Mpdf::SCALE, -$ts['y'] * Mpdf::SCALE) . "\n";
+					$s .= $sub;
+					$s .= ' Q ';
+				}
+			}
+
+			$s .= $sub;
+
+			// COLOR
+			if ($this->ColorFlag) {
+				$s .=' Q';
+			}
+
+			// LINK
+			if ($link != '') {
+				$this->Link($this->x, $boxtop, $w, $boxheight, $link);
+			}
+		}
+		if ($s) {
+			$this->writer->write($s);
+		}
+
+		// WORD SPACING
+		if ($this->ws && !$this->usingCoreFont) {
+			$this->writer->write(sprintf('BT %.3F Tc ET', $this->charspacing));
+		}
+		$this->lasth = $h;
+		if (strpos($txt, "\n") !== false) {
+			$ln = 1; // cell recognizes \n from 
tag + } + if ($ln > 0) { + // Go to next line + $this->y += $h; + if ($ln == 1) { + // Move to next line + if ($currentx != 0) { + $this->x = $currentx; + } else { + $this->x = $this->lMargin; + } + } + } else { + $this->x+=$w; + } + } + + function applyGPOSpdf($txt, $aix, $x, $y, $OTLdata, $textvar = 0) + { + // Generate PDF string + // ============================== + if ((isset($this->CurrentFont['sip']) && $this->CurrentFont['sip']) || (isset($this->CurrentFont['smp']) && $this->CurrentFont['smp'])) { + $sipset = true; + } else { + $sipset = false; + } + + if ($textvar & TextVars::FC_SMALLCAPS) { + $smcaps = true; + } // IF SmallCaps using transformation, NOT OTL + else { + $smcaps = false; + } + + if ($sipset) { + $fontid = $last_fontid = $original_fontid = $this->CurrentFont['subsetfontids'][0]; + } else { + $fontid = $last_fontid = $original_fontid = $this->CurrentFont['i']; + } + $SmallCapsON = false; // state: uppercase/not + $lastSmallCapsON = false; // state: uppercase/not + $last_fontsize = $fontsize = $this->FontSizePt; + $last_fontstretch = $fontstretch = 100; + $groupBreak = false; + + $unicode = $this->UTF8StringToArray($txt); + + $GPOSinfo = (isset($OTLdata['GPOSinfo']) ? $OTLdata['GPOSinfo'] : []); + $charspacing = ($this->charspacing * 1000 / $this->FontSizePt); + $wordspacing = ($this->ws * 1000 / $this->FontSizePt); + + $XshiftBefore = 0; + $XshiftAfter = 0; + $lastYPlacement = 0; + + if ($sipset) { + // mPDF 6 DELETED ******** + // $txt= preg_replace('/'.preg_quote($this->aliasNbPg,'/').'/', chr(7), $txt); // ? Need to adjust OTL info + // $txt= preg_replace('/'.preg_quote($this->aliasNbPgGp,'/').'/', chr(8), $txt); // ? Need to adjust OTL info + $tj = '<'; + } else { + $tj = '('; + } + + for ($i = 0; $i < count($unicode); $i++) { + $c = $unicode[$i]; + $tx = ''; + $XshiftBefore = $XshiftAfter; + $XshiftAfter = 0; + $YPlacement = 0; + $groupBreak = false; + $kashida = 0; + if (!empty($OTLdata)) { + // YPlacement from GPOS + if (isset($GPOSinfo[$i]['YPlacement']) && $GPOSinfo[$i]['YPlacement']) { + $YPlacement = $GPOSinfo[$i]['YPlacement'] * $this->FontSizePt / $this->CurrentFont['unitsPerEm']; + $groupBreak = true; + } + // XPlacement from GPOS + if (isset($GPOSinfo[$i]['XPlacement']) && $GPOSinfo[$i]['XPlacement']) { + if (!isset($GPOSinfo[$i]['wDir']) || $GPOSinfo[$i]['wDir'] != 'RTL') { + if (isset($GPOSinfo[$i]['BaseWidth'])) { + $GPOSinfo[$i]['XPlacement'] -= $GPOSinfo[$i]['BaseWidth']; + } + } + + // Convert to PDF Text space (thousandths of a unit ); + $XshiftBefore += $GPOSinfo[$i]['XPlacement'] * 1000 / $this->CurrentFont['unitsPerEm']; + $XshiftAfter += -$GPOSinfo[$i]['XPlacement'] * 1000 / $this->CurrentFont['unitsPerEm']; + } + + // Kashida from GPOS + // Kashida is set as an absolute length value, but to adjust text needs to be converted to + // font-related size + if (isset($GPOSinfo[$i]['kashida_space']) && $GPOSinfo[$i]['kashida_space']) { + $kashida = $GPOSinfo[$i]['kashida_space']; + } + + if ($c == 32) { // word spacing + $XshiftAfter += $wordspacing; + } + + if (substr($OTLdata['group'], ($i + 1), 1) != 'M') { // Don't add inter-character spacing before Marks + $XshiftAfter += $charspacing; + } + + // ...applyGPOSpdf... + // XAdvance from GPOS - Convert to PDF Text space (thousandths of a unit ); + if (((isset($GPOSinfo[$i]['wDir']) && $GPOSinfo[$i]['wDir'] != 'RTL') || !isset($GPOSinfo[$i]['wDir'])) && isset($GPOSinfo[$i]['XAdvanceL']) && $GPOSinfo[$i]['XAdvanceL']) { + $XshiftAfter += $GPOSinfo[$i]['XAdvanceL'] * 1000 / $this->CurrentFont['unitsPerEm']; + } elseif (isset($GPOSinfo[$i]['wDir']) && $GPOSinfo[$i]['wDir'] == 'RTL' && isset($GPOSinfo[$i]['XAdvanceR']) && $GPOSinfo[$i]['XAdvanceR']) { + $XshiftAfter += $GPOSinfo[$i]['XAdvanceR'] * 1000 / $this->CurrentFont['unitsPerEm']; + } + } // Character & Word spacing - if NOT OTL + else { + $XshiftAfter += $charspacing; + if ($c == 32) { + $XshiftAfter += $wordspacing; + } + } + + // IF Kerning done using pairs rather than OTL + if ($textvar & TextVars::FC_KERNING) { + if ($i > 0 && isset($this->CurrentFont['kerninfo'][$unicode[($i - 1)]][$unicode[$i]])) { + $XshiftBefore += $this->CurrentFont['kerninfo'][$unicode[($i - 1)]][$unicode[$i]]; + } + } + + if ($YPlacement != $lastYPlacement) { + $groupBreak = true; + } + + if ($XshiftBefore) { // +ve value in PDF moves to the left + // If Fontstretch is ongoing, need to adjust X adjustments because these will be stretched out. + $XshiftBefore *= 100 / $last_fontstretch; + if ($sipset) { + $tj .= sprintf('>%d<', (-$XshiftBefore)); + } else { + $tj .= sprintf(')%d(', (-$XshiftBefore)); + } + } + + // Small-Caps + if ($smcaps) { + if (isset($this->upperCase[$c])) { + $c = $this->upperCase[$c]; + // $this->CurrentFont['subset'][$this->upperCase[$c]] = $this->upperCase[$c]; // add the CAP to subset + $SmallCapsON = true; + // For $sipset + if (!$lastSmallCapsON) { // Turn ON SmallCaps + $groupBreak = true; + $fontstretch = $this->smCapsStretch; + $fontsize = $this->FontSizePt * $this->smCapsScale; + } + } else { + $SmallCapsON = false; + if ($lastSmallCapsON) { // Turn OFF SmallCaps + $groupBreak = true; + $fontstretch = 100; + $fontsize = $this->FontSizePt; + } + } + } + + // Prepare Text and Select Font ID + if ($sipset) { + // mPDF 6 DELETED ******** + // if ($c == 7 || $c == 8) { + // if ($original_fontid != $last_fontid) { + // $groupBreak = true; + // $fontid = $original_fontid; + // } + // if ($c == 7) { $tj .= $this->aliasNbPgHex; } + // else { $tj .= $this->aliasNbPgGpHex; } + // continue; + // } + for ($j = 0; $j < 99; $j++) { + $init = array_search($c, $this->CurrentFont['subsets'][$j]); + if ($init !== false) { + if ($this->CurrentFont['subsetfontids'][$j] != $last_fontid) { + $groupBreak = true; + $fontid = $this->CurrentFont['subsetfontids'][$j]; + } + $tx = sprintf("%02s", strtoupper(dechex($init))); + break; + } elseif (count($this->CurrentFont['subsets'][$j]) < 255) { + $n = count($this->CurrentFont['subsets'][$j]); + $this->CurrentFont['subsets'][$j][$n] = $c; + if ($this->CurrentFont['subsetfontids'][$j] != $last_fontid) { + $groupBreak = true; + $fontid = $this->CurrentFont['subsetfontids'][$j]; + } + $tx = sprintf("%02s", strtoupper(dechex($n))); + break; + } elseif (!isset($this->CurrentFont['subsets'][($j + 1)])) { + $this->CurrentFont['subsets'][($j + 1)] = [0 => 0]; + $this->CurrentFont['subsetfontids'][($j + 1)] = count($this->fonts) + $this->extraFontSubsets + 1; + $this->extraFontSubsets++; + } + } + } else { + $tx = UtfString::code2utf($c); + if ($this->usingCoreFont) { + $tx = utf8_decode($tx); + } else { + $tx = $this->writer->utf8ToUtf16BigEndian($tx, false); + } + $tx = $this->writer->escape($tx); + } + + // If any settings require a new Text Group + if ($groupBreak || $fontstretch != $last_fontstretch) { + if ($sipset) { + $tj .= '>] TJ '; + } else { + $tj .= ')] TJ '; + } + if ($fontid != $last_fontid || $fontsize != $last_fontsize) { + $tj .= sprintf(' /F%d %.3F Tf ', $fontid, $fontsize); + } + if ($fontstretch != $last_fontstretch) { + $tj .= sprintf('%d Tz ', $fontstretch); + } + if ($YPlacement != $lastYPlacement) { + $tj .= sprintf('%.3F Ts ', $YPlacement); + } + if ($sipset) { + $tj .= '[<'; + } else { + $tj .= '[('; + } + } + + // Output the code for the txt character + $tj .= $tx; + $lastSmallCapsON = $SmallCapsON; + $last_fontid = $fontid; + $last_fontsize = $fontsize; + $last_fontstretch = $fontstretch; + + // Kashida + if ($kashida) { + $c = 0x0640; // add the Tatweel U+0640 + if (isset($this->CurrentFont['subset'])) { + $this->CurrentFont['subset'][$c] = $c; + } + $kashida *= 1000 / $this->FontSizePt; + $tatw = $this->_getCharWidth($this->CurrentFont['cw'], 0x0640); + + // Get YPlacement from next Base character + $nextbase = $i + 1; + while ($OTLdata['group'][$nextbase] != 'C') { + $nextbase++; + } + if (isset($GPOSinfo[$nextbase]) && isset($GPOSinfo[$nextbase]['YPlacement']) && $GPOSinfo[$nextbase]['YPlacement']) { + $YPlacement = $GPOSinfo[$nextbase]['YPlacement'] * $this->FontSizePt / $this->CurrentFont['unitsPerEm']; + } + + // Prepare Text and Select Font ID + if ($sipset) { + for ($j = 0; $j < 99; $j++) { + $init = array_search($c, $this->CurrentFont['subsets'][$j]); + if ($init !== false) { + if ($this->CurrentFont['subsetfontids'][$j] != $last_fontid) { + $fontid = $this->CurrentFont['subsetfontids'][$j]; + } + $tx = sprintf("%02s", strtoupper(dechex($init))); + break; + } elseif (count($this->CurrentFont['subsets'][$j]) < 255) { + $n = count($this->CurrentFont['subsets'][$j]); + $this->CurrentFont['subsets'][$j][$n] = $c; + if ($this->CurrentFont['subsetfontids'][$j] != $last_fontid) { + $fontid = $this->CurrentFont['subsetfontids'][$j]; + } + $tx = sprintf("%02s", strtoupper(dechex($n))); + break; + } elseif (!isset($this->CurrentFont['subsets'][($j + 1)])) { + $this->CurrentFont['subsets'][($j + 1)] = [0 => 0]; + $this->CurrentFont['subsetfontids'][($j + 1)] = count($this->fonts) + $this->extraFontSubsets + 1; + $this->extraFontSubsets++; + } + } + } else { + $tx = UtfString::code2utf($c); + $tx = $this->writer->utf8ToUtf16BigEndian($tx, false); + $tx = $this->writer->escape($tx); + } + + if ($kashida > $tatw) { + // Insert multiple tatweel characters, repositioning the last one to give correct total length + $fontstretch = 100; + $nt = intval($kashida / $tatw); + $nudgeback = (($nt + 1) * $tatw) - $kashida; + $optx = str_repeat($tx, $nt); + if ($sipset) { + $optx .= sprintf('>%d<', ($nudgeback)); + } else { + $optx .= sprintf(')%d(', ($nudgeback)); + } + $optx .= $tx; // #last + } else { + // Insert single tatweel character and use fontstretch to get correct length + $fontstretch = ($kashida / $tatw) * 100; + $optx = $tx; + } + + if ($sipset) { + $tj .= '>] TJ '; + } else { + $tj .= ')] TJ '; + } + if ($fontid != $last_fontid || $fontsize != $last_fontsize) { + $tj .= sprintf(' /F%d %.3F Tf ', $fontid, $fontsize); + } + if ($fontstretch != $last_fontstretch) { + $tj .= sprintf('%d Tz ', $fontstretch); + } + $tj .= sprintf('%.3F Ts ', $YPlacement); + if ($sipset) { + $tj .= '[<'; + } else { + $tj .= '[('; + } + + // Output the code for the txt character(s) + $tj .= $optx; + $last_fontid = $fontid; + $last_fontstretch = $fontstretch; + $fontstretch = 100; + } + + $lastYPlacement = $YPlacement; + } + + + // Finish up + if ($sipset) { + $tj .= '>'; + if ($XshiftAfter) { + $tj .= sprintf('%d', (-$XshiftAfter)); + } + if ($last_fontid != $original_fontid) { + $tj .= '] TJ '; + $tj .= sprintf(' /F%d %.3F Tf ', $original_fontid, $fontsize); + $tj .= '['; + } + $tj = preg_replace('/([^\\\])<>/', '\\1 ', $tj); + } else { + $tj .= ')'; + if ($XshiftAfter) { + $tj .= sprintf('%d', (-$XshiftAfter)); + } + if ($last_fontid != $original_fontid) { + $tj .= '] TJ '; + $tj .= sprintf(' /F%d %.3F Tf ', $original_fontid, $fontsize); + $tj .= '['; + } + $tj = preg_replace('/([^\\\])\(\)/', '\\1 ', $tj); + } + + $s = sprintf(' BT ' . $aix . ' 0 Tc 0 Tw [%s] TJ ET ', $x, $y, $tj); + + // echo $s."\n\n"; // exit; + + return $s; + } + + function _kern($txt, $mode, $aix, $x, $y) + { + if ($mode == 'MBTw') { // Multibyte requiring word spacing + $space = ' '; + // Convert string to UTF-16BE without BOM + $space = $this->writer->utf8ToUtf16BigEndian($space, false); + $space = $this->writer->escape($space); + $s = sprintf(' BT ' . $aix, $x * Mpdf::SCALE, ($this->h - $y) * Mpdf::SCALE); + $t = explode(' ', $txt); + for ($i = 0; $i < count($t); $i++) { + $tx = $t[$i]; + + $tj = '('; + $unicode = $this->UTF8StringToArray($tx); + for ($ti = 0; $ti < count($unicode); $ti++) { + if ($ti > 0 && isset($this->CurrentFont['kerninfo'][$unicode[($ti - 1)]][$unicode[$ti]])) { + $kern = -$this->CurrentFont['kerninfo'][$unicode[($ti - 1)]][$unicode[$ti]]; + $tj .= sprintf(')%d(', $kern); + } + $tc = UtfString::code2utf($unicode[$ti]); + $tc = $this->writer->utf8ToUtf16BigEndian($tc, false); + $tj .= $this->writer->escape($tc); + } + $tj .= ')'; + $s .= sprintf(' %.3F Tc [%s] TJ', $this->charspacing, $tj); + + + if (($i + 1) < count($t)) { + $s .= sprintf(' %.3F Tc (%s) Tj', $this->ws + $this->charspacing, $space); + } + } + $s .= ' ET '; + } elseif (!$this->usingCoreFont) { + $s = ''; + $tj = '('; + $unicode = $this->UTF8StringToArray($txt); + for ($i = 0; $i < count($unicode); $i++) { + if ($i > 0 && isset($this->CurrentFont['kerninfo'][$unicode[($i - 1)]][$unicode[$i]])) { + $kern = -$this->CurrentFont['kerninfo'][$unicode[($i - 1)]][$unicode[$i]]; + $tj .= sprintf(')%d(', $kern); + } + $tx = UtfString::code2utf($unicode[$i]); + $tx = $this->writer->utf8ToUtf16BigEndian($tx, false); + $tj .= $this->writer->escape($tx); + } + $tj .= ')'; + $s .= sprintf(' BT ' . $aix . ' [%s] TJ ET ', $x * Mpdf::SCALE, ($this->h - $y) * Mpdf::SCALE, $tj); + } else { // CORE Font + $s = ''; + $tj = '('; + $l = strlen($txt); + for ($i = 0; $i < $l; $i++) { + if ($i > 0 && isset($this->CurrentFont['kerninfo'][$txt[($i - 1)]][$txt[$i]])) { + $kern = -$this->CurrentFont['kerninfo'][$txt[($i - 1)]][$txt[$i]]; + $tj .= sprintf(')%d(', $kern); + } + $tj .= $this->writer->escape($txt[$i]); + } + $tj .= ')'; + $s .= sprintf(' BT ' . $aix . ' [%s] TJ ET ', $x * Mpdf::SCALE, ($this->h - $y) * Mpdf::SCALE, $tj); + } + + return $s; + } + + function MultiCell( + $w, + $h, + $txt, + $border = 0, + $align = '', + $fill = 0, + $link = '', + $directionality = 'ltr', + $encoded = false, + $OTLdata = false, + $maxrows = false + ) { + // maxrows is called from mpdfform->TEXTAREA + // Parameter (pre-)encoded - When called internally from form::textarea - + // mb_encoding already done and OTL - but not reverse RTL + if (!$encoded) { + + $txt = $this->purify_utf8_text($txt); + + if ($this->text_input_as_HTML) { + $txt = $this->all_entities_to_utf8($txt); + } + + if ($this->usingCoreFont) { + $txt = mb_convert_encoding($txt, $this->mb_enc, 'UTF-8'); + } + + if (preg_match("/([" . $this->pregRTLchars . "])/u", $txt)) { + $this->biDirectional = true; + } + + /* -- OTL -- */ + if (!is_array($OTLdata)) { + unset($OTLdata); + } + + // Use OTL OpenType Table Layout - GSUB & GPOS + if (isset($this->CurrentFont['useOTL']) && $this->CurrentFont['useOTL']) { + $txt = $this->otl->applyOTL($txt, $this->CurrentFont['useOTL']); + $OTLdata = $this->otl->OTLdata; + } + + if ($directionality == 'rtl' || $this->biDirectional) { + if (!isset($OTLdata)) { + $unicode = $this->UTF8StringToArray($txt, false); + $is_strong = false; + $this->getBasicOTLdata($OTLdata, $unicode, $is_strong); + } + } + /* -- END OTL -- */ + } + + if (!$align) { + $align = $this->defaultAlign; + } + + // Output text with automatic or explicit line breaks + $cw = &$this->CurrentFont['cw']; + + if ($w == 0) { + $w = $this->w - $this->rMargin - $this->x; + } + + $wmax = ($w - ($this->cMarginL + $this->cMarginR)); + + if ($this->usingCoreFont) { + $s = str_replace("\r", '', $txt); + $nb = strlen($s); + while ($nb > 0 and $s[$nb - 1] == "\n") { + $nb--; + } + } else { + $s = str_replace("\r", '', $txt); + $nb = mb_strlen($s, $this->mb_enc); + while ($nb > 0 and mb_substr($s, $nb - 1, 1, $this->mb_enc) == "\n") { + $nb--; + } + } + + $b = 0; + + if ($border) { + + if ($border == 1) { + $border = 'LTRB'; + $b = 'LRT'; + $b2 = 'LR'; + } else { + $b2 = ''; + if (is_int(strpos($border, 'L'))) { + $b2 .= 'L'; + } + if (is_int(strpos($border, 'R'))) { + $b2 .= 'R'; + } + $b = is_int(strpos($border, 'T')) ? $b2 . 'T' : $b2; + } + } + + $sep = -1; + $i = 0; + $j = 0; + $l = 0; + $ns = 0; + $nl = 1; + + $rows = 0; + $start_y = $this->y; + + if (!$this->usingCoreFont) { + + $inclCursive = false; + + if (preg_match("/([" . $this->pregCURSchars . "])/u", $s)) { + $inclCursive = true; + } + + while ($i < $nb) { + + // Get next character + $c = mb_substr($s, $i, 1, $this->mb_enc); + + if ($c === "\n") { // Explicit line break + + // WORD SPACING + $this->ResetSpacing(); + $tmp = rtrim(mb_substr($s, $j, $i - $j, $this->mb_enc)); + $tmpOTLdata = false; + + /* -- OTL -- */ + if (isset($OTLdata)) { + $tmpOTLdata = $this->otl->sliceOTLdata($OTLdata, $j, $i - $j); + $this->otl->trimOTLdata($tmpOTLdata, false, true); + $this->magic_reverse_dir($tmp, $directionality, $tmpOTLdata); + } + /* -- END OTL -- */ + + $this->Cell($w, $h, $tmp, $b, 2, $align, $fill, $link, 0, 0, 0, 'M', 0, false, $tmpOTLdata); + + if ($maxrows != false && isset($this->form) && ($this->y - $start_y) / $h > $maxrows) { + return false; + } + + $i++; + $sep = -1; + $j = $i; + $l = 0; + $ns = 0; + $nl++; + + if ($border and $nl == 2) { + $b = $b2; + } + + continue; + } + + if ($c == " ") { + $sep = $i; + $ls = $l; + $ns++; + } + + $l += $this->GetCharWidthNonCore($c); + + if ($l > $wmax) { + + // Automatic line break + if ($sep == -1) { // Only one word + + if ($i == $j) { + $i++; + } + + // WORD SPACING + $this->ResetSpacing(); + $tmp = rtrim(mb_substr($s, $j, $i - $j, $this->mb_enc)); + $tmpOTLdata = false; + + /* -- OTL -- */ + if (isset($OTLdata)) { + $tmpOTLdata = $this->otl->sliceOTLdata($OTLdata, $j, $i - $j); + $this->otl->trimOTLdata($tmpOTLdata, false, true); + $this->magic_reverse_dir($tmp, $directionality, $tmpOTLdata); + } + /* -- END OTL -- */ + + $this->Cell($w, $h, $tmp, $b, 2, $align, $fill, $link, 0, 0, 0, 'M', 0, false, $tmpOTLdata); + + } else { + + $tmp = rtrim(mb_substr($s, $j, $sep - $j, $this->mb_enc)); + $tmpOTLdata = false; + + /* -- OTL -- */ + if (isset($OTLdata)) { + $tmpOTLdata = $this->otl->sliceOTLdata($OTLdata, $j, $sep - $j); + $this->otl->trimOTLdata($tmpOTLdata, false, true); + } + /* -- END OTL -- */ + + if ($align === 'J') { + + // JUSTIFY J using Unicode fonts (Word spacing doesn't work) + // WORD SPACING UNICODE + // Change NON_BREAKING SPACE to spaces so they are 'spaced' properly + + $tmp = str_replace(chr(194) . chr(160), chr(32), $tmp); + $len_ligne = $this->GetStringWidth($tmp, false, $tmpOTLdata); + $nb_carac = mb_strlen($tmp, $this->mb_enc); + $nb_spaces = mb_substr_count($tmp, ' ', $this->mb_enc); + + // Take off number of Marks + // Use GPOS OTL + + if (isset($this->CurrentFont['useOTL']) && ($this->CurrentFont['useOTL'])) { + if (isset($tmpOTLdata['group']) && $tmpOTLdata['group']) { + $nb_carac -= substr_count($tmpOTLdata['group'], 'M'); + } + } + + list($charspacing, $ws, $kashida) = $this->GetJspacing($nb_carac, $nb_spaces, ((($wmax) - $len_ligne) * Mpdf::SCALE), $inclCursive, $tmpOTLdata); + $this->SetSpacing($charspacing, $ws); + } + + if (isset($OTLdata)) { + $this->magic_reverse_dir($tmp, $directionality, $tmpOTLdata); + } + + $this->Cell($w, $h, $tmp, $b, 2, $align, $fill, $link, 0, 0, 0, 'M', 0, false, $tmpOTLdata); + + $i = $sep + 1; + } + + if ($maxrows != false && isset($this->form) && ($this->y - $start_y) / $h > $maxrows) { + return false; + } + + $sep = -1; + $j = $i; + $l = 0; + $ns = 0; + $nl++; + + if ($border and $nl == 2) { + $b = $b2; + } + + } else { + $i++; + } + } + + // Last chunk + // WORD SPACING + + $this->ResetSpacing(); + + } else { + + while ($i < $nb) { + + // Get next character + $c = $s[$i]; + if ($c === "\n") { + + // Explicit line break + // WORD SPACING + + $this->ResetSpacing(); + $this->Cell($w, $h, substr($s, $j, $i - $j), $b, 2, $align, $fill, $link); + + if ($maxrows != false && isset($this->form) && ($this->y - $start_y) / $h > $maxrows) { + return false; + } + + $i++; + $sep = -1; + $j = $i; + $l = 0; + $ns = 0; + $nl++; + + if ($border and $nl == 2) { + $b = $b2; + } + + continue; + } + + if ($c === ' ') { + $sep = $i; + $ls = $l; + $ns++; + } + + $l += $this->GetCharWidthCore($c); + + if ($l > $wmax) { + + // Automatic line break + if ($sep == -1) { + + if ($i == $j) { + $i++; + } + + // WORD SPACING + $this->ResetSpacing(); + $this->Cell($w, $h, substr($s, $j, $i - $j), $b, 2, $align, $fill, $link); + + } else { + + if ($align === 'J') { + + $tmp = rtrim(substr($s, $j, $sep - $j)); + + // JUSTIFY J using Unicode fonts (Word spacing doesn't work) + // WORD SPACING NON_UNICODE/CJK + // Change NON_BREAKING SPACE to spaces so they are 'spaced' properly + + $tmp = str_replace(chr(160), chr(32), $tmp); + $len_ligne = $this->GetStringWidth($tmp); + $nb_carac = strlen($tmp); + $nb_spaces = substr_count($tmp, ' '); + $tmpOTLdata = []; + + list($charspacing, $ws, $kashida) = $this->GetJspacing($nb_carac, $nb_spaces, ((($wmax) - $len_ligne) * Mpdf::SCALE), false, $tmpOTLdata); + $this->SetSpacing($charspacing, $ws); + } + + $this->Cell($w, $h, substr($s, $j, $sep - $j), $b, 2, $align, $fill, $link); + $i = $sep + 1; + } + + if ($maxrows != false && isset($this->form) && ($this->y - $start_y) / $h > $maxrows) { + return false; + } + + $sep = -1; + $j = $i; + $l = 0; + $ns = 0; + $nl++; + + if ($border and $nl == 2) { + $b = $b2; + } + + } else { + $i++; + } + } + + // Last chunk + // WORD SPACING + + $this->ResetSpacing(); + } + + // Last chunk + if ($border and is_int(strpos($border, 'B'))) { + $b .= 'B'; + } + + if (!$this->usingCoreFont) { + + $tmp = rtrim(mb_substr($s, $j, $i - $j, $this->mb_enc)); + $tmpOTLdata = false; + + /* -- OTL -- */ + if (isset($OTLdata)) { + $tmpOTLdata = $this->otl->sliceOTLdata($OTLdata, $j, $i - $j); + $this->otl->trimOTLdata($tmpOTLdata, false, true); + $this->magic_reverse_dir($tmp, $directionality, $tmpOTLdata); + } + /* -- END OTL -- */ + + $this->Cell($w, $h, $tmp, $b, 2, $align, $fill, $link, 0, 0, 0, 'M', 0, false, $tmpOTLdata); + } else { + $this->Cell($w, $h, substr($s, $j, $i - $j), $b, 2, $align, $fill, $link); + } + + $this->x = $this->lMargin; + } + + /* -- DIRECTW -- */ + + function Write($h, $txt, $currentx = 0, $link = '', $directionality = 'ltr', $align = '', $fill = 0) + { + if (empty($this->directWrite)) { + $this->directWrite = new DirectWrite($this, $this->otl, $this->sizeConverter, $this->colorConverter); + } + + $this->directWrite->Write($h, $txt, $currentx, $link, $directionality, $align, $fill); + } + + /* -- END DIRECTW -- */ + + + /* -- HTML-CSS -- */ + + function saveInlineProperties() + { + $saved = []; + $saved['family'] = $this->FontFamily; + $saved['style'] = $this->FontStyle; + $saved['sizePt'] = $this->FontSizePt; + $saved['size'] = $this->FontSize; + $saved['HREF'] = $this->HREF; + $saved['textvar'] = $this->textvar; // mPDF 5.7.1 + $saved['OTLtags'] = $this->OTLtags; // mPDF 5.7.1 + $saved['textshadow'] = $this->textshadow; + $saved['linewidth'] = $this->LineWidth; + $saved['drawcolor'] = $this->DrawColor; + $saved['textparam'] = $this->textparam; + $saved['lSpacingCSS'] = $this->lSpacingCSS; + $saved['wSpacingCSS'] = $this->wSpacingCSS; + $saved['I'] = $this->I; + $saved['B'] = $this->B; + $saved['colorarray'] = $this->colorarray; + $saved['bgcolorarray'] = $this->spanbgcolorarray; + $saved['border'] = $this->spanborddet; + $saved['color'] = $this->TextColor; + $saved['bgcolor'] = $this->FillColor; + $saved['lang'] = $this->currentLang; + $saved['fontLanguageOverride'] = $this->fontLanguageOverride; // mPDF 5.7.1 + $saved['display_off'] = $this->inlineDisplayOff; + + return $saved; + } + + function restoreInlineProperties(&$saved) + { + $FontFamily = $saved['family']; + $this->FontStyle = $saved['style']; + $this->FontSizePt = $saved['sizePt']; + $this->FontSize = $saved['size']; + + $this->currentLang = $saved['lang']; + $this->fontLanguageOverride = $saved['fontLanguageOverride']; // mPDF 5.7.1 + + $this->ColorFlag = ($this->FillColor != $this->TextColor); // Restore ColorFlag as well + + $this->HREF = $saved['HREF']; + $this->textvar = $saved['textvar']; // mPDF 5.7.1 + $this->OTLtags = $saved['OTLtags']; // mPDF 5.7.1 + $this->textshadow = $saved['textshadow']; + $this->LineWidth = $saved['linewidth']; + $this->DrawColor = $saved['drawcolor']; + $this->textparam = $saved['textparam']; + $this->inlineDisplayOff = $saved['display_off']; + + $this->lSpacingCSS = $saved['lSpacingCSS']; + if (($this->lSpacingCSS || $this->lSpacingCSS === '0') && strtoupper($this->lSpacingCSS) != 'NORMAL') { + $this->fixedlSpacing = $this->sizeConverter->convert($this->lSpacingCSS, $this->FontSize); + } else { + $this->fixedlSpacing = false; + } + $this->wSpacingCSS = $saved['wSpacingCSS']; + if ($this->wSpacingCSS && strtoupper($this->wSpacingCSS) != 'NORMAL') { + $this->minwSpacing = $this->sizeConverter->convert($this->wSpacingCSS, $this->FontSize); + } else { + $this->minwSpacing = 0; + } + + $this->SetFont($FontFamily, $saved['style'], $saved['sizePt'], false); + + $this->currentfontstyle = $saved['style']; + $this->currentfontsize = $saved['sizePt']; + $this->SetStylesArray(['B' => $saved['B'], 'I' => $saved['I']]); // mPDF 5.7.1 + + $this->TextColor = $saved['color']; + $this->FillColor = $saved['bgcolor']; + $this->colorarray = $saved['colorarray']; + $cor = $saved['colorarray']; + if ($cor) { + $this->SetTColor($cor); + } + $this->spanbgcolorarray = $saved['bgcolorarray']; + $cor = $saved['bgcolorarray']; + if ($cor) { + $this->SetFColor($cor); + } + $this->spanborddet = $saved['border']; + } + + // Used when ColActive for tables - updated to return first block with background fill OR borders + function GetFirstBlockFill() + { + // Returns the first blocklevel that uses a bgcolor fill + $startfill = 0; + for ($i = 1; $i <= $this->blklvl; $i++) { + if ($this->blk[$i]['bgcolor'] || $this->blk[$i]['border_left']['w'] || $this->blk[$i]['border_right']['w'] || $this->blk[$i]['border_top']['w'] || $this->blk[$i]['border_bottom']['w']) { + $startfill = $i; + break; + } + } + return $startfill; + } + + // -------------------------FLOWING BLOCK------------------------------------// + // The following functions were originally written by Damon Kohler // + // --------------------------------------------------------------------------// + + function saveFont() + { + $saved = []; + $saved['family'] = $this->FontFamily; + $saved['style'] = $this->FontStyle; + $saved['sizePt'] = $this->FontSizePt; + $saved['size'] = $this->FontSize; + $saved['curr'] = &$this->CurrentFont; + $saved['lang'] = $this->currentLang; // mPDF 6 + $saved['color'] = $this->TextColor; + $saved['spanbgcolor'] = $this->spanbgcolor; + $saved['spanbgcolorarray'] = $this->spanbgcolorarray; + $saved['bord'] = $this->spanborder; + $saved['border'] = $this->spanborddet; + $saved['HREF'] = $this->HREF; + $saved['textvar'] = $this->textvar; // mPDF 5.7.1 + $saved['textshadow'] = $this->textshadow; + $saved['linewidth'] = $this->LineWidth; + $saved['drawcolor'] = $this->DrawColor; + $saved['textparam'] = $this->textparam; + $saved['ReqFontStyle'] = $this->ReqFontStyle; + $saved['fixedlSpacing'] = $this->fixedlSpacing; + $saved['minwSpacing'] = $this->minwSpacing; + return $saved; + } + + function restoreFont(&$saved, $write = true) + { + if (!isset($saved) || empty($saved)) { + return; + } + + $this->FontFamily = $saved['family']; + $this->FontStyle = $saved['style']; + $this->FontSizePt = $saved['sizePt']; + $this->FontSize = $saved['size']; + $this->CurrentFont = &$saved['curr']; + $this->currentLang = $saved['lang']; // mPDF 6 + $this->TextColor = $saved['color']; + $this->spanbgcolor = $saved['spanbgcolor']; + $this->spanbgcolorarray = $saved['spanbgcolorarray']; + $this->spanborder = $saved['bord']; + $this->spanborddet = $saved['border']; + $this->ColorFlag = ($this->FillColor != $this->TextColor); // Restore ColorFlag as well + $this->HREF = $saved['HREF']; + $this->fixedlSpacing = $saved['fixedlSpacing']; + $this->minwSpacing = $saved['minwSpacing']; + $this->textvar = $saved['textvar']; // mPDF 5.7.1 + $this->textshadow = $saved['textshadow']; + $this->LineWidth = $saved['linewidth']; + $this->DrawColor = $saved['drawcolor']; + $this->textparam = $saved['textparam']; + if ($write) { + $this->SetFont($saved['family'], $saved['style'], $saved['sizePt'], true, true); // force output + $fontout = (sprintf('BT /F%d %.3F Tf ET', $this->CurrentFont['i'], $this->FontSizePt)); + if ($this->page > 0 && ((isset($this->pageoutput[$this->page]['Font']) && $this->pageoutput[$this->page]['Font'] != $fontout) || !isset($this->pageoutput[$this->page]['Font']))) { + $this->writer->write($fontout); + } + $this->pageoutput[$this->page]['Font'] = $fontout; + } else { + $this->SetFont($saved['family'], $saved['style'], $saved['sizePt'], false); + } + $this->ReqFontStyle = $saved['ReqFontStyle']; + } + + function newFlowingBlock($w, $h, $a = '', $is_table = false, $blockstate = 0, $newblock = true, $blockdir = 'ltr', $table_draft = false) + { + if (!$a) { + if ($blockdir == 'rtl') { + $a = 'R'; + } else { + $a = 'L'; + } + } + $this->flowingBlockAttr['width'] = ($w * Mpdf::SCALE); + // line height in user units + $this->flowingBlockAttr['is_table'] = $is_table; + $this->flowingBlockAttr['table_draft'] = $table_draft; + $this->flowingBlockAttr['height'] = $h; + $this->flowingBlockAttr['lineCount'] = 0; + $this->flowingBlockAttr['align'] = $a; + $this->flowingBlockAttr['font'] = []; + $this->flowingBlockAttr['content'] = []; + $this->flowingBlockAttr['contentB'] = []; + $this->flowingBlockAttr['contentWidth'] = 0; + $this->flowingBlockAttr['blockstate'] = $blockstate; + + $this->flowingBlockAttr['newblock'] = $newblock; + $this->flowingBlockAttr['valign'] = 'M'; + $this->flowingBlockAttr['blockdir'] = $blockdir; + $this->flowingBlockAttr['cOTLdata'] = []; // mPDF 5.7.1 + $this->flowingBlockAttr['lastBidiText'] = ''; // mPDF 5.7.1 + if (!empty($this->otl)) { + $this->otl->lastBidiStrongType = ''; + } // *OTL* + } + + function finishFlowingBlock($endofblock = false, $next = '') + { + $currentx = $this->x; + // prints out the last chunk + $is_table = $this->flowingBlockAttr['is_table']; + $table_draft = $this->flowingBlockAttr['table_draft']; + $maxWidth = & $this->flowingBlockAttr['width']; + $stackHeight = & $this->flowingBlockAttr['height']; + $align = & $this->flowingBlockAttr['align']; + $content = & $this->flowingBlockAttr['content']; + $contentB = & $this->flowingBlockAttr['contentB']; + $font = & $this->flowingBlockAttr['font']; + $contentWidth = & $this->flowingBlockAttr['contentWidth']; + $lineCount = & $this->flowingBlockAttr['lineCount']; + $valign = & $this->flowingBlockAttr['valign']; + $blockstate = $this->flowingBlockAttr['blockstate']; + + $cOTLdata = & $this->flowingBlockAttr['cOTLdata']; // mPDF 5.7.1 + $newblock = $this->flowingBlockAttr['newblock']; + $blockdir = $this->flowingBlockAttr['blockdir']; + + // *********** BLOCK BACKGROUND COLOR *****************// + if ($this->blk[$this->blklvl]['bgcolor'] && !$is_table) { + $fill = 0; + } else { + $this->SetFColor($this->colorConverter->convert(255, $this->PDFAXwarnings)); + $fill = 0; + } + + $hanger = ''; + // Always right trim! + // Right trim last content and adjust width if needed to justify (later) + if (isset($content[count($content) - 1]) && preg_match('/[ ]+$/', $content[count($content) - 1], $m)) { + $strip = strlen($m[0]); + $content[count($content) - 1] = substr($content[count($content) - 1], 0, (strlen($content[count($content) - 1]) - $strip)); + /* -- OTL -- */ + if (isset($this->CurrentFont['useOTL']) && $this->CurrentFont['useOTL']) { + $this->otl->trimOTLdata($cOTLdata[count($cOTLdata) - 1], false, true); + } + /* -- END OTL -- */ + } + + // the amount of space taken up so far in user units + $usedWidth = 0; + + // COLS + $oldcolumn = $this->CurrCol; + + if ($this->ColActive && !$is_table) { + $this->breakpoints[$this->CurrCol][] = $this->y; + } // *COLUMNS* + // Print out each chunk + + /* -- TABLES -- */ + if ($is_table) { + $ipaddingL = 0; + $ipaddingR = 0; + $paddingL = 0; + $paddingR = 0; + } else { + /* -- END TABLES -- */ + $ipaddingL = $this->blk[$this->blklvl]['padding_left']; + $ipaddingR = $this->blk[$this->blklvl]['padding_right']; + $paddingL = ($ipaddingL * Mpdf::SCALE); + $paddingR = ($ipaddingR * Mpdf::SCALE); + $this->cMarginL = $this->blk[$this->blklvl]['border_left']['w']; + $this->cMarginR = $this->blk[$this->blklvl]['border_right']['w']; + + // Added mPDF 3.0 Float DIV + $fpaddingR = 0; + $fpaddingL = 0; + /* -- CSS-FLOAT -- */ + if (count($this->floatDivs)) { + list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($this->blklvl); + if ($r_exists) { + $fpaddingR = $r_width; + } + if ($l_exists) { + $fpaddingL = $l_width; + } + } + /* -- END CSS-FLOAT -- */ + + $usey = $this->y + 0.002; + if (($newblock) && ($blockstate == 1 || $blockstate == 3) && ($lineCount == 0)) { + $usey += $this->blk[$this->blklvl]['margin_top'] + $this->blk[$this->blklvl]['padding_top'] + $this->blk[$this->blklvl]['border_top']['w']; + } + /* -- CSS-IMAGE-FLOAT -- */ + // If float exists at this level + if (isset($this->floatmargins['R']) && $usey <= $this->floatmargins['R']['y1'] && $usey >= $this->floatmargins['R']['y0'] && !$this->floatmargins['R']['skipline']) { + $fpaddingR += $this->floatmargins['R']['w']; + } + if (isset($this->floatmargins['L']) && $usey <= $this->floatmargins['L']['y1'] && $usey >= $this->floatmargins['L']['y0'] && !$this->floatmargins['L']['skipline']) { + $fpaddingL += $this->floatmargins['L']['w']; + } + /* -- END CSS-IMAGE-FLOAT -- */ + } // *TABLES* + + + $lineBox = []; + + $this->_setInlineBlockHeights($lineBox, $stackHeight, $content, $font, $is_table); + + if ($is_table && count($content) == 0) { + $stackHeight = 0; + } + + if ($table_draft) { + $this->y += $stackHeight; + $this->objectbuffer = []; + return 0; + } + + // While we're at it, check if contains cursive text + // Change NBSP to SPACE. + // Re-calculate contentWidth + $contentWidth = 0; + + foreach ($content as $k => $chunk) { + $this->restoreFont($font[$k], false); + if (!isset($this->objectbuffer[$k]) || (isset($this->objectbuffer[$k]) && !$this->objectbuffer[$k])) { + // Soft Hyphens chr(173) + if (!$this->usingCoreFont) { + /* -- OTL -- */ + // mPDF 5.7.1 + if (isset($this->CurrentFont['useOTL']) && $this->CurrentFont['useOTL']) { + $this->otl->removeChar($chunk, $cOTLdata[$k], "\xc2\xad"); + $this->otl->replaceSpace($chunk, $cOTLdata[$k]); + $content[$k] = $chunk; + } /* -- END OTL -- */ else { // *OTL* + $content[$k] = $chunk = str_replace("\xc2\xad", '', $chunk); + $content[$k] = $chunk = str_replace(chr(194) . chr(160), chr(32), $chunk); + } // *OTL* + } elseif ($this->FontFamily != 'csymbol' && $this->FontFamily != 'czapfdingbats') { + $content[$k] = $chunk = str_replace(chr(173), '', $chunk); + $content[$k] = $chunk = str_replace(chr(160), chr(32), $chunk); + } + $contentWidth += $this->GetStringWidth($chunk, true, (isset($cOTLdata[$k]) ? $cOTLdata[$k] : false), $this->textvar) * Mpdf::SCALE; + } elseif (isset($this->objectbuffer[$k]) && $this->objectbuffer[$k]) { + // LIST MARKERS // mPDF 6 Lists + if ($this->objectbuffer[$k]['type'] == 'image' && isset($this->objectbuffer[$k]['listmarker']) && $this->objectbuffer[$k]['listmarker'] && $this->objectbuffer[$k]['listmarkerposition'] == 'outside') { + // do nothing + } else { + $contentWidth += $this->objectbuffer[$k]['OUTER-WIDTH'] * Mpdf::SCALE; + } + } + } + + if (isset($font[count($font) - 1])) { + $lastfontreqstyle = (isset($font[count($font) - 1]['ReqFontStyle']) ? $font[count($font) - 1]['ReqFontStyle'] : ''); + $lastfontstyle = (isset($font[count($font) - 1]['style']) ? $font[count($font) - 1]['style'] : ''); + } else { + $lastfontreqstyle = null; + $lastfontstyle = null; + } + if ($blockdir == 'ltr' && strpos($lastfontreqstyle, "I") !== false && strpos($lastfontstyle, "I") === false) { // Artificial italic + $lastitalic = $this->FontSize * 0.15 * Mpdf::SCALE; + } else { + $lastitalic = 0; + } + + // Get PAGEBREAK TO TEST for height including the bottom border/padding + $check_h = max($this->divheight, $stackHeight); + + // This fixes a proven bug... + if ($endofblock && $newblock && $blockstate == 0 && !$content) { + $check_h = 0; + } + // but ? needs to fix potentially more widespread... + // if (!$content) { $check_h = 0; } + + if ($this->blklvl > 0 && !$is_table) { + if ($endofblock && $blockstate > 1) { + if ($this->blk[$this->blklvl]['page_break_after_avoid']) { + $check_h += $stackHeight; + } + $check_h += ($this->blk[$this->blklvl]['padding_bottom'] + $this->blk[$this->blklvl]['border_bottom']['w']); + } + if (($newblock && ($blockstate == 1 || $blockstate == 3) && $lineCount == 0) || ($endofblock && $blockstate == 3 && $lineCount == 0)) { + $check_h += ($this->blk[$this->blklvl]['padding_top'] + $this->blk[$this->blklvl]['margin_top'] + $this->blk[$this->blklvl]['border_top']['w']); + } + } + + // Force PAGE break if column height cannot take check-height + if ($this->ColActive && $check_h > ($this->PageBreakTrigger - $this->y0)) { + $this->SetCol($this->NbCol - 1); + } + + // Avoid just border/background-color moved on to next page + if ($endofblock && $blockstate > 1 && !$content) { + $buff = $this->margBuffer; + } else { + $buff = 0; + } + + + // PAGEBREAK + if (!$is_table && ($this->y + $check_h) > ($this->PageBreakTrigger + $buff) and ! $this->InFooter and $this->AcceptPageBreak()) { + $bak_x = $this->x; // Current X position + // WORD SPACING + $ws = $this->ws; // Word Spacing + $charspacing = $this->charspacing; // Character Spacing + $this->ResetSpacing(); + + $this->AddPage($this->CurOrientation); + + $this->x = $bak_x; + // Added to correct for OddEven Margins + $currentx += $this->MarginCorrection; + $this->x += $this->MarginCorrection; + + // WORD SPACING + $this->SetSpacing($charspacing, $ws); + } + + + /* -- COLUMNS -- */ + // COLS + // COLUMN CHANGE + if ($this->CurrCol != $oldcolumn) { + $currentx += $this->ChangeColumn * ($this->ColWidth + $this->ColGap); + $this->x += $this->ChangeColumn * ($this->ColWidth + $this->ColGap); + $oldcolumn = $this->CurrCol; + } + + + if ($this->ColActive && !$is_table) { + $this->breakpoints[$this->CurrCol][] = $this->y; + } + /* -- END COLUMNS -- */ + + // TOP MARGIN + if ($newblock && ($blockstate == 1 || $blockstate == 3) && ($this->blk[$this->blklvl]['margin_top']) && $lineCount == 0 && !$is_table) { + $this->DivLn($this->blk[$this->blklvl]['margin_top'], $this->blklvl - 1, true, $this->blk[$this->blklvl]['margin_collapse']); + if ($this->ColActive) { + $this->breakpoints[$this->CurrCol][] = $this->y; + } // *COLUMNS* + } + + if ($newblock && ($blockstate == 1 || $blockstate == 3) && $lineCount == 0 && !$is_table) { + $this->blk[$this->blklvl]['y0'] = $this->y; + $this->blk[$this->blklvl]['startpage'] = $this->page; + if ($this->blk[$this->blklvl]['float']) { + $this->blk[$this->blklvl]['float_start_y'] = $this->y; + } + if ($this->ColActive) { + $this->breakpoints[$this->CurrCol][] = $this->y; + } // *COLUMNS* + } + + // Paragraph INDENT + $WidthCorrection = 0; + if (($newblock) && ($blockstate == 1 || $blockstate == 3) && isset($this->blk[$this->blklvl]['text_indent']) && ($lineCount == 0) && (!$is_table) && ($align != 'C')) { + $ti = $this->sizeConverter->convert($this->blk[$this->blklvl]['text_indent'], $this->blk[$this->blklvl]['inner_width'], $this->blk[$this->blklvl]['InlineProperties']['size'], false); // mPDF 5.7.4 + $WidthCorrection = ($ti * Mpdf::SCALE); + } + + + // PADDING and BORDER spacing/fill + if (($newblock) && ($blockstate == 1 || $blockstate == 3) && (($this->blk[$this->blklvl]['padding_top']) || ($this->blk[$this->blklvl]['border_top'])) && ($lineCount == 0) && (!$is_table)) { + // $state = 0 normal; 1 top; 2 bottom; 3 top and bottom + $this->DivLn($this->blk[$this->blklvl]['padding_top'] + $this->blk[$this->blklvl]['border_top']['w'], -3, true, false, 1); + if ($this->ColActive) { + $this->breakpoints[$this->CurrCol][] = $this->y; + } // *COLUMNS* + $this->x = $currentx; + } + + + // Added mPDF 3.0 Float DIV + $fpaddingR = 0; + $fpaddingL = 0; + /* -- CSS-FLOAT -- */ + if (count($this->floatDivs)) { + list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($this->blklvl); + if ($r_exists) { + $fpaddingR = $r_width; + } + if ($l_exists) { + $fpaddingL = $l_width; + } + } + /* -- END CSS-FLOAT -- */ + + $usey = $this->y + 0.002; + if (($newblock) && ($blockstate == 1 || $blockstate == 3) && ($lineCount == 0)) { + $usey += $this->blk[$this->blklvl]['margin_top'] + $this->blk[$this->blklvl]['padding_top'] + $this->blk[$this->blklvl]['border_top']['w']; + } + /* -- CSS-IMAGE-FLOAT -- */ + // If float exists at this level + if (isset($this->floatmargins['R']) && $usey <= $this->floatmargins['R']['y1'] && $usey >= $this->floatmargins['R']['y0'] && !$this->floatmargins['R']['skipline']) { + $fpaddingR += $this->floatmargins['R']['w']; + } + if (isset($this->floatmargins['L']) && $usey <= $this->floatmargins['L']['y1'] && $usey >= $this->floatmargins['L']['y0'] && !$this->floatmargins['L']['skipline']) { + $fpaddingL += $this->floatmargins['L']['w']; + } + /* -- END CSS-IMAGE-FLOAT -- */ + + + if ($content) { + // In FinishFlowing Block no lines are justified as it is always last line + // but if CJKorphan has allowed content width to go over max width, use J charspacing to compress line + // JUSTIFICATION J - NOT! + $nb_carac = 0; + $nb_spaces = 0; + $jcharspacing = 0; + $jkashida = 0; + $jws = 0; + $inclCursive = false; + $dottab = false; + foreach ($content as $k => $chunk) { + if (!isset($this->objectbuffer[$k]) || (isset($this->objectbuffer[$k]) && !$this->objectbuffer[$k])) { + $nb_carac += mb_strlen($chunk, $this->mb_enc); + $nb_spaces += mb_substr_count($chunk, ' ', $this->mb_enc); + // mPDF 6 + // Use GPOS OTL + $this->restoreFont($font[$k], false); + if (isset($this->CurrentFont['useOTL']) && $this->CurrentFont['useOTL']) { + if (isset($cOTLdata[$k]['group']) && $cOTLdata[$k]['group']) { + $nb_marks = substr_count($cOTLdata[$k]['group'], 'M'); + $nb_carac -= $nb_marks; + } + if (preg_match("/([" . $this->pregCURSchars . "])/u", $chunk)) { + $inclCursive = true; + } + } + } else { + $nb_carac ++; // mPDF 6 allow spacing for inline object + if ($this->objectbuffer[$k]['type'] == 'dottab') { + $dottab = $this->objectbuffer[$k]['outdent']; + } + } + } + + // DIRECTIONALITY RTL + $chunkorder = range(0, count($content) - 1); // mPDF 6 + /* -- OTL -- */ + // mPDF 6 + if ($blockdir == 'rtl' || $this->biDirectional) { + $this->otl->bidiReorder($chunkorder, $content, $cOTLdata, $blockdir); + // From this point on, $content and $cOTLdata may contain more elements (and re-ordered) compared to + // $this->objectbuffer and $font ($chunkorder contains the mapping) + } + /* -- END OTL -- */ + + // Remove any XAdvance from OTL data at end of line + // And correct for XPlacement on last character + // BIDI is applied + foreach ($chunkorder as $aord => $k) { + if (count($cOTLdata)) { + $this->restoreFont($font[$k], false); + // ...FinishFlowingBlock... + if ($aord == count($chunkorder) - 1 && isset($cOTLdata[$aord]['group'])) { // Last chunk on line + $nGPOS = strlen($cOTLdata[$aord]['group']) - 1; // Last character + if (isset($cOTLdata[$aord]['GPOSinfo'][$nGPOS]['XAdvanceL']) || isset($cOTLdata[$aord]['GPOSinfo'][$nGPOS]['XAdvanceR'])) { + if (isset($cOTLdata[$aord]['GPOSinfo'][$nGPOS]['XAdvanceL'])) { + $w = $cOTLdata[$aord]['GPOSinfo'][$nGPOS]['XAdvanceL'] * 1000 / $this->CurrentFont['unitsPerEm']; + } else { + $w = $cOTLdata[$aord]['GPOSinfo'][$nGPOS]['XAdvanceR'] * 1000 / $this->CurrentFont['unitsPerEm']; + } + $w *= ($this->FontSize / 1000); + $contentWidth -= $w * Mpdf::SCALE; + $cOTLdata[$aord]['GPOSinfo'][$nGPOS]['XAdvanceL'] = 0; + $cOTLdata[$aord]['GPOSinfo'][$nGPOS]['XAdvanceR'] = 0; + } + + // If last character has an XPlacement set, adjust width calculation, and add to XAdvance to account for it + if (isset($cOTLdata[$aord]['GPOSinfo'][$nGPOS]['XPlacement'])) { + $w = -$cOTLdata[$aord]['GPOSinfo'][$nGPOS]['XPlacement'] * 1000 / $this->CurrentFont['unitsPerEm']; + $w *= ($this->FontSize / 1000); + $contentWidth -= $w * Mpdf::SCALE; + $cOTLdata[$aord]['GPOSinfo'][$nGPOS]['XAdvanceL'] = $cOTLdata[$aord]['GPOSinfo'][$nGPOS]['XPlacement']; + $cOTLdata[$aord]['GPOSinfo'][$nGPOS]['XAdvanceR'] = $cOTLdata[$aord]['GPOSinfo'][$nGPOS]['XPlacement']; + } + } + } + } + + // if it's justified, we need to find the char/word spacing (or if orphans have allowed length of line to go over the maxwidth) + // If "orphans" in fact is just a final space - ignore this + $lastchar = mb_substr($content[(count($chunkorder) - 1)], mb_strlen($content[(count($chunkorder) - 1)], $this->mb_enc) - 1, 1, $this->mb_enc); + if (preg_match("/[" . $this->CJKoverflow . "]/u", $lastchar)) { + $CJKoverflow = true; + } else { + $CJKoverflow = false; + } + if ((((($contentWidth + $lastitalic) > $maxWidth) && ($content[(count($chunkorder) - 1)] != ' ') ) || + (!$endofblock && $align == 'J' && ($next == 'image' || $next == 'select' || $next == 'input' || $next == 'textarea' || ($next == 'br' && $this->justifyB4br)))) && !($CJKoverflow && $this->allowCJKoverflow)) { + // WORD SPACING + list($jcharspacing, $jws, $jkashida) = $this->GetJspacing($nb_carac, $nb_spaces, ($maxWidth - $lastitalic - $contentWidth - $WidthCorrection - (($this->cMarginL + $this->cMarginR) * Mpdf::SCALE) - ($paddingL + $paddingR + (($fpaddingL + $fpaddingR) * Mpdf::SCALE) )), $inclCursive, $cOTLdata); + } /* -- CJK-FONTS -- */ elseif ($this->checkCJK && $align == 'J' && $CJKoverflow && $this->allowCJKoverflow && $this->CJKforceend) { + // force-end overhang + $hanger = mb_substr($content[(count($chunkorder) - 1)], mb_strlen($content[(count($chunkorder) - 1)], $this->mb_enc) - 1, 1, $this->mb_enc); + if (preg_match("/[" . $this->CJKoverflow . "]/u", $hanger)) { + $content[(count($chunkorder) - 1)] = mb_substr($content[(count($chunkorder) - 1)], 0, mb_strlen($content[(count($chunkorder) - 1)], $this->mb_enc) - 1, $this->mb_enc); + $this->restoreFont($font[$chunkorder[count($chunkorder) - 1]], false); + $contentWidth -= $this->GetStringWidth($hanger) * Mpdf::SCALE; + $nb_carac -= 1; + list($jcharspacing, $jws, $jkashida) = $this->GetJspacing($nb_carac, $nb_spaces, ($maxWidth - $lastitalic - $contentWidth - $WidthCorrection - (($this->cMarginL + $this->cMarginR) * Mpdf::SCALE) - ($paddingL + $paddingR + (($fpaddingL + $fpaddingR) * Mpdf::SCALE) )), $inclCursive, $cOTLdata); + } + } /* -- END CJK-FONTS -- */ + + // Check if will fit at word/char spacing of previous line - if so continue it + // but only allow a maximum of $this->jSmaxWordLast and $this->jSmaxCharLast + elseif ($contentWidth < ($maxWidth - $lastitalic - $WidthCorrection - (($this->cMarginL + $this->cMarginR) * Mpdf::SCALE) - ($paddingL + $paddingR + (($fpaddingL + $fpaddingR) * Mpdf::SCALE))) && !$this->fixedlSpacing) { + if ($this->ws > $this->jSmaxWordLast) { + $jws = $this->jSmaxWordLast; + } + if ($this->charspacing > $this->jSmaxCharLast) { + $jcharspacing = $this->jSmaxCharLast; + } + $check = $maxWidth - $lastitalic - $WidthCorrection - $contentWidth - (($this->cMarginL + $this->cMarginR) * Mpdf::SCALE) - ($paddingL + $paddingR + (($fpaddingL + $fpaddingR) * Mpdf::SCALE) ) - ( $jcharspacing * $nb_carac) - ( $jws * $nb_spaces); + if ($check <= 0) { + $jcharspacing = 0; + $jws = 0; + } + } + + $empty = $maxWidth - $lastitalic - $WidthCorrection - $contentWidth - (($this->cMarginL + $this->cMarginR) * Mpdf::SCALE) - ($paddingL + $paddingR + (($fpaddingL + $fpaddingR) * Mpdf::SCALE) ); + + + $empty -= ($jcharspacing * ($nb_carac - 1)); // mPDF 6 nb_carac MINUS 1 + $empty -= ($jws * $nb_spaces); + $empty -= ($jkashida); + + $empty /= Mpdf::SCALE; + + if (!$is_table) { + $this->maxPosR = max($this->maxPosR, ($this->w - $this->rMargin - $this->blk[$this->blklvl]['outer_right_margin'] - $empty)); + $this->maxPosL = min($this->maxPosL, ($this->lMargin + $this->blk[$this->blklvl]['outer_left_margin'] + $empty)); + } + + $arraysize = count($chunkorder); + + $margins = ($this->cMarginL + $this->cMarginR) + ($ipaddingL + $ipaddingR + $fpaddingR + $fpaddingR ); + + if (!$is_table) { + $this->DivLn($stackHeight, $this->blklvl, false); + } // false -> don't advance y + + $this->x = $currentx + $this->cMarginL + $ipaddingL + $fpaddingL; + if ($dottab !== false && $blockdir == 'rtl') { + $this->x -= $dottab; + } elseif ($align == 'R') { + $this->x += $empty; + } elseif ($align == 'J' && $blockdir == 'rtl') { + $this->x += $empty; + } elseif ($align == 'C') { + $this->x += ($empty / 2); + } + + // Paragraph INDENT + $WidthCorrection = 0; + if (($newblock) && ($blockstate == 1 || $blockstate == 3) && isset($this->blk[$this->blklvl]['text_indent']) && ($lineCount == 0) && (!$is_table) && ($align != 'C')) { + $ti = $this->sizeConverter->convert($this->blk[$this->blklvl]['text_indent'], $this->blk[$this->blklvl]['inner_width'], $this->blk[$this->blklvl]['InlineProperties']['size'], false); // mPDF 5.7.4 + if ($blockdir != 'rtl') { + $this->x += $ti; + } // mPDF 6 + } + + foreach ($chunkorder as $aord => $k) { // mPDF 5.7 + $chunk = $content[$aord]; + if (isset($this->objectbuffer[$k]) && $this->objectbuffer[$k]) { + $xadj = $this->x - $this->objectbuffer[$k]['OUTER-X']; + $this->objectbuffer[$k]['OUTER-X'] += $xadj; + $this->objectbuffer[$k]['BORDER-X'] += $xadj; + $this->objectbuffer[$k]['INNER-X'] += $xadj; + + if ($this->objectbuffer[$k]['type'] == 'listmarker') { + $this->objectbuffer[$k]['lineBox'] = $lineBox[-1]; // Block element details for glyph-origin + } + $yadj = $this->y - $this->objectbuffer[$k]['OUTER-Y']; + if ($this->objectbuffer[$k]['type'] == 'dottab') { // mPDF 6 DOTTAB + $this->objectbuffer[$k]['lineBox'] = $lineBox[$k]; // element details for glyph-origin + } + if ($this->objectbuffer[$k]['type'] != 'dottab') { // mPDF 6 DOTTAB + $yadj += $lineBox[$k]['top']; + } + $this->objectbuffer[$k]['OUTER-Y'] += $yadj; + $this->objectbuffer[$k]['BORDER-Y'] += $yadj; + $this->objectbuffer[$k]['INNER-Y'] += $yadj; + } + + $this->restoreFont($font[$k]); // mPDF 5.7 + + if ($is_table && substr($align, 0, 1) == 'D' && $aord == 0) { + $dp = $this->decimal_align[substr($align, 0, 2)]; + $s = preg_split('/' . preg_quote($dp, '/') . '/', $content[0], 2); // ? needs to be /u if not core + $s0 = $this->GetStringWidth($s[0], false); + $this->x += ($this->decimal_offset - $s0); + } + + $this->SetSpacing(($this->fixedlSpacing * Mpdf::SCALE) + $jcharspacing, ($this->fixedlSpacing + $this->minwSpacing) * Mpdf::SCALE + $jws); + $this->fixedlSpacing = false; + $this->minwSpacing = 0; + + $save_vis = $this->visibility; + if (isset($this->textparam['visibility']) && $this->textparam['visibility'] && $this->textparam['visibility'] != $this->visibility) { + $this->SetVisibility($this->textparam['visibility']); + } + + // *********** SPAN BACKGROUND COLOR ***************** // + if (isset($this->spanbgcolor) && $this->spanbgcolor) { + $cor = $this->spanbgcolorarray; + $this->SetFColor($cor); + $save_fill = $fill; + $spanfill = 1; + $fill = 1; + } + if (!empty($this->spanborddet)) { + if (strpos($contentB[$k], 'L') !== false && isset($this->spanborddet['L'])) { + $this->x += $this->spanborddet['L']['w']; + } + if (strpos($contentB[$k], 'L') === false) { + $this->spanborddet['L']['s'] = $this->spanborddet['L']['w'] = 0; + } + if (strpos($contentB[$k], 'R') === false) { + $this->spanborddet['R']['s'] = $this->spanborddet['R']['w'] = 0; + } + } + // WORD SPACING + // mPDF 5.7.1 + $stringWidth = $this->GetStringWidth($chunk, true, (isset($cOTLdata[$aord]) ? $cOTLdata[$aord] : false), $this->textvar); + $nch = mb_strlen($chunk, $this->mb_enc); + // Use GPOS OTL + if (isset($this->CurrentFont['useOTL']) && $this->CurrentFont['useOTL']) { + if (isset($cOTLdata[$aord]['group']) && $cOTLdata[$aord]['group']) { + $nch -= substr_count($cOTLdata[$aord]['group'], 'M'); + } + } + $stringWidth += ( $this->charspacing * $nch / Mpdf::SCALE ); + + $stringWidth += ( $this->ws * mb_substr_count($chunk, ' ', $this->mb_enc) / Mpdf::SCALE ); + + if (isset($this->objectbuffer[$k])) { + if ($this->objectbuffer[$k]['type'] == 'dottab') { + $this->objectbuffer[$k]['OUTER-WIDTH'] +=$empty; + $this->objectbuffer[$k]['OUTER-WIDTH'] +=$this->objectbuffer[$k]['outdent']; + } + // LIST MARKERS // mPDF 6 Lists + if ($this->objectbuffer[$k]['type'] == 'image' && isset($this->objectbuffer[$k]['listmarker']) && $this->objectbuffer[$k]['listmarker'] && $this->objectbuffer[$k]['listmarkerposition'] == 'outside') { + // do nothing + } else { + $stringWidth = $this->objectbuffer[$k]['OUTER-WIDTH']; + } + } + + if ($stringWidth == 0) { + $stringWidth = 0.000001; + } + if ($aord == $arraysize - 1) { // mPDF 5.7 + // mPDF 5.7.1 + if ($this->checkCJK && $CJKoverflow && $align == 'J' && $this->allowCJKoverflow && $hanger && $this->CJKforceend) { + // force-end overhang + $this->Cell($stringWidth, $stackHeight, $chunk, '', 0, '', $fill, $this->HREF, $currentx, 0, 0, 'M', $fill, true, (isset($cOTLdata[$aord]) ? $cOTLdata[$aord] : false), $this->textvar, (isset($lineBox[$k]) ? $lineBox[$k] : false)); // mPDF 5.7.1 + $this->Cell($this->GetStringWidth($hanger), $stackHeight, $hanger, '', 1, '', $fill, $this->HREF, $currentx, 0, 0, 'M', $fill, true, (isset($cOTLdata[$aord]) ? $cOTLdata[$aord] : false), $this->textvar, (isset($lineBox[$k]) ? $lineBox[$k] : false)); // mPDF 5.7.1 + } else { + $this->Cell($stringWidth, $stackHeight, $chunk, '', 1, '', $fill, $this->HREF, $currentx, 0, 0, 'M', $fill, true, (isset($cOTLdata[$aord]) ? $cOTLdata[$aord] : false), $this->textvar, (isset($lineBox[$k]) ? $lineBox[$k] : false)); // mPDF 5.7.1 + } + } else { + $this->Cell($stringWidth, $stackHeight, $chunk, '', 0, '', $fill, $this->HREF, 0, 0, 0, 'M', $fill, true, (isset($cOTLdata[$aord]) ? $cOTLdata[$aord] : false), $this->textvar, (isset($lineBox[$k]) ? $lineBox[$k] : false)); // first or middle part // mPDF 5.7.1 + } + + + if (!empty($this->spanborddet)) { + if (strpos($contentB[$k], 'R') !== false && $aord != $arraysize - 1) { + $this->x += $this->spanborddet['R']['w']; + } + } + // *********** SPAN BACKGROUND COLOR OFF - RESET BLOCK BGCOLOR ***************** // + if (isset($spanfill) && $spanfill) { + $fill = $save_fill; + $spanfill = 0; + if ($fill) { + $this->SetFColor($bcor); + } + } + if (isset($this->textparam['visibility']) && $this->textparam['visibility'] && $this->visibility != $save_vis) { + $this->SetVisibility($save_vis); + } + } + + $this->printobjectbuffer($is_table, $blockdir); + $this->objectbuffer = []; + $this->ResetSpacing(); + } // END IF CONTENT + + /* -- CSS-IMAGE-FLOAT -- */ + // Update values if set to skipline + if ($this->floatmargins) { + $this->_advanceFloatMargins(); + } + + + if ($endofblock && $blockstate > 1) { + // If float exists at this level + if (isset($this->floatmargins['R']['y1'])) { + $fry1 = $this->floatmargins['R']['y1']; + } else { + $fry1 = 0; + } + if (isset($this->floatmargins['L']['y1'])) { + $fly1 = $this->floatmargins['L']['y1']; + } else { + $fly1 = 0; + } + if ($this->y < $fry1 || $this->y < $fly1) { + $drop = max($fry1, $fly1) - $this->y; + $this->DivLn($drop); + $this->x = $currentx; + } + } + /* -- END CSS-IMAGE-FLOAT -- */ + + + // PADDING and BORDER spacing/fill + if ($endofblock && ($blockstate > 1) && ($this->blk[$this->blklvl]['padding_bottom'] || $this->blk[$this->blklvl]['border_bottom'] || $this->blk[$this->blklvl]['css_set_height']) && (!$is_table)) { + // If CSS height set, extend bottom - if on same page as block started, and CSS HEIGHT > actual height, + // and does not force pagebreak + $extra = 0; + if (isset($this->blk[$this->blklvl]['css_set_height']) && $this->blk[$this->blklvl]['css_set_height'] && $this->blk[$this->blklvl]['startpage'] == $this->page) { + // predicted height + $h1 = ($this->y - $this->blk[$this->blklvl]['y0']) + $this->blk[$this->blklvl]['padding_bottom'] + $this->blk[$this->blklvl]['border_bottom']['w']; + if ($h1 < ($this->blk[$this->blklvl]['css_set_height'] + $this->blk[$this->blklvl]['padding_bottom'] + $this->blk[$this->blklvl]['padding_top'])) { + $extra = ($this->blk[$this->blklvl]['css_set_height'] + $this->blk[$this->blklvl]['padding_bottom'] + $this->blk[$this->blklvl]['padding_top']) - $h1; + } + if ($this->y + $this->blk[$this->blklvl]['padding_bottom'] + $this->blk[$this->blklvl]['border_bottom']['w'] + $extra > $this->PageBreakTrigger) { + $extra = $this->PageBreakTrigger - ($this->y + $this->blk[$this->blklvl]['padding_bottom'] + $this->blk[$this->blklvl]['border_bottom']['w']); + } + } + + // $state = 0 normal; 1 top; 2 bottom; 3 top and bottom + $this->DivLn($this->blk[$this->blklvl]['padding_bottom'] + $this->blk[$this->blklvl]['border_bottom']['w'] + $extra, -3, true, false, 2); + $this->x = $currentx; + + if ($this->ColActive) { + $this->breakpoints[$this->CurrCol][] = $this->y; + } // *COLUMNS* + } + + // SET Bottom y1 of block (used for painting borders) + if (($endofblock) && ($blockstate > 1) && (!$is_table)) { + $this->blk[$this->blklvl]['y1'] = $this->y; + } + + // BOTTOM MARGIN + if (($endofblock) && ($blockstate > 1) && ($this->blk[$this->blklvl]['margin_bottom']) && (!$is_table)) { + if ($this->y + $this->blk[$this->blklvl]['margin_bottom'] < $this->PageBreakTrigger and ! $this->InFooter) { + $this->DivLn($this->blk[$this->blklvl]['margin_bottom'], $this->blklvl - 1, true, $this->blk[$this->blklvl]['margin_collapse']); + if ($this->ColActive) { + $this->breakpoints[$this->CurrCol][] = $this->y; + } // *COLUMNS* + } + } + + // Reset lineheight + $stackHeight = $this->divheight; + } + + function printobjectbuffer($is_table = false, $blockdir = false) + { + if (!$blockdir) { + $blockdir = $this->directionality; + } + + if ($is_table && $this->shrin_k > 1) { + $k = $this->shrin_k; + } else { + $k = 1; + } + + $save_y = $this->y; + $save_x = $this->x; + + $save_currentfontfamily = $this->FontFamily; + $save_currentfontsize = $this->FontSizePt; + $save_currentfontstyle = $this->FontStyle; + + if ($blockdir == 'rtl') { + $rtlalign = 'R'; + } else { + $rtlalign = 'L'; + } + + foreach ($this->objectbuffer as $ib => $objattr) { + + if ($objattr['type'] == 'bookmark' || $objattr['type'] == 'indexentry' || $objattr['type'] == 'toc') { + $x = $objattr['OUTER-X']; + $y = $objattr['OUTER-Y']; + $this->y = $y - $this->FontSize / 2; + $this->x = $x; + if ($objattr['type'] == 'bookmark') { + $this->Bookmark($objattr['CONTENT'], $objattr['bklevel'], $y - $this->FontSize); + } // *BOOKMARKS* + if ($objattr['type'] == 'indexentry') { + $this->IndexEntry($objattr['CONTENT']); + } // *INDEX* + if ($objattr['type'] == 'toc') { + $this->TOC_Entry($objattr['CONTENT'], $objattr['toclevel'], (isset($objattr['toc_id']) ? $objattr['toc_id'] : '')); + } // *TOC* + } /* -- ANNOTATIONS -- */ elseif ($objattr['type'] == 'annot') { + if ($objattr['POS-X']) { + $x = $objattr['POS-X']; + } elseif ($this->annotMargin <> 0) { + $x = -$objattr['OUTER-X']; + } else { + $x = $objattr['OUTER-X']; + } + if ($objattr['POS-Y']) { + $y = $objattr['POS-Y']; + } else { + $y = $objattr['OUTER-Y'] - $this->FontSize / 2; + } + // Create a dummy entry in the _out/columnBuffer with position sensitive data, + // linking $y-1 in the Columnbuffer with entry in $this->columnAnnots + // and when columns are split in length will not break annotation from current line + $this->y = $y - 1; + $this->x = $x - 1; + $this->Line($x - 1, $y - 1, $x - 1, $y - 1); + $this->Annotation($objattr['CONTENT'], $x, $y, $objattr['ICON'], $objattr['AUTHOR'], $objattr['SUBJECT'], $objattr['OPACITY'], $objattr['COLOR'], (isset($objattr['POPUP']) ? $objattr['POPUP'] : ''), (isset($objattr['FILE']) ? $objattr['FILE'] : '')); + } /* -- END ANNOTATIONS -- */ else { + $y = $objattr['OUTER-Y']; + $x = $objattr['OUTER-X']; + $w = $objattr['OUTER-WIDTH']; + $h = $objattr['OUTER-HEIGHT']; + if (isset($objattr['text'])) { + $texto = $objattr['text']; + } + $this->y = $y; + $this->x = $x; + if (isset($objattr['fontfamily'])) { + $this->SetFont($objattr['fontfamily'], '', $objattr['fontsize']); + } + } + + // HR + if ($objattr['type'] == 'hr') { + $this->SetDColor($objattr['color']); + switch ($objattr['align']) { + case 'C': + $empty = $objattr['OUTER-WIDTH'] - $objattr['INNER-WIDTH']; + $empty /= 2; + $x += $empty; + break; + case 'R': + $empty = $objattr['OUTER-WIDTH'] - $objattr['INNER-WIDTH']; + $x += $empty; + break; + } + $oldlinewidth = $this->LineWidth; + $this->SetLineWidth($objattr['linewidth'] / $k); + $this->y += ($objattr['linewidth'] / 2) + $objattr['margin_top'] / $k; + $this->Line($x, $this->y, $x + $objattr['INNER-WIDTH'], $this->y); + $this->SetLineWidth($oldlinewidth); + $this->SetDColor($this->colorConverter->convert(0, $this->PDFAXwarnings)); + } + // IMAGE + if ($objattr['type'] == 'image') { + // mPDF 5.7.3 TRANSFORMS + if (isset($objattr['transform'])) { + $this->writer->write("\n" . '% BTR'); // Begin Transform + } + if (isset($objattr['z-index']) && $objattr['z-index'] > 0 && $this->current_layer == 0) { + $this->BeginLayer($objattr['z-index']); + } + if (isset($objattr['visibility']) && $objattr['visibility'] != 'visible' && $objattr['visibility']) { + $this->SetVisibility($objattr['visibility']); + } + if (isset($objattr['opacity'])) { + $this->SetAlpha($objattr['opacity']); + } + + $obiw = $objattr['INNER-WIDTH']; + $obih = $objattr['INNER-HEIGHT']; + + $sx = $objattr['orig_w'] ? ($objattr['INNER-WIDTH'] * Mpdf::SCALE / $objattr['orig_w']) : INF; + $sy = $objattr['orig_h'] ? ($objattr['INNER-HEIGHT'] * Mpdf::SCALE / $objattr['orig_h']) : INF; + + $rotate = 0; + if (isset($objattr['ROTATE'])) { + $rotate = $objattr['ROTATE']; + } + + if ($rotate == 90) { + // Clockwise + $obiw = $objattr['INNER-HEIGHT']; + $obih = $objattr['INNER-WIDTH']; + $tr = $this->transformTranslate(0, -$objattr['INNER-WIDTH'], true); + $tr .= ' ' . $this->transformRotate(90, $objattr['INNER-X'], ($objattr['INNER-Y'] + $objattr['INNER-WIDTH']), true); + $sx = $obiw * Mpdf::SCALE / $objattr['orig_h']; + $sy = $obih * Mpdf::SCALE / $objattr['orig_w']; + } elseif ($rotate == -90 || $rotate == 270) { + // AntiClockwise + $obiw = $objattr['INNER-HEIGHT']; + $obih = $objattr['INNER-WIDTH']; + $tr = $this->transformTranslate($objattr['INNER-WIDTH'], ($objattr['INNER-HEIGHT'] - $objattr['INNER-WIDTH']), true); + $tr .= ' ' . $this->transformRotate(-90, $objattr['INNER-X'], ($objattr['INNER-Y'] + $objattr['INNER-WIDTH']), true); + $sx = $obiw * Mpdf::SCALE / $objattr['orig_h']; + $sy = $obih * Mpdf::SCALE / $objattr['orig_w']; + } elseif ($rotate == 180) { + // Mirror + $tr = $this->transformTranslate($objattr['INNER-WIDTH'], -$objattr['INNER-HEIGHT'], true); + $tr .= ' ' . $this->transformRotate(180, $objattr['INNER-X'], ($objattr['INNER-Y'] + $objattr['INNER-HEIGHT']), true); + } else { + $tr = ''; + } + $tr = trim($tr); + if ($tr) { + $tr .= ' '; + } + $gradmask = ''; + + // mPDF 5.7.3 TRANSFORMS + $tr2 = ''; + if (isset($objattr['transform'])) { + $maxsize_x = $w; + $maxsize_y = $h; + $cx = $x + $w / 2; + $cy = $y + $h / 2; + preg_match_all('/(translatex|translatey|translate|scalex|scaley|scale|rotate|skewX|skewY|skew)\((.*?)\)/is', $objattr['transform'], $m); + if (count($m[0])) { + for ($i = 0; $i < count($m[0]); $i++) { + $c = strtolower($m[1][$i]); + $v = trim($m[2][$i]); + $vv = preg_split('/[ ,]+/', $v); + if ($c == 'translate' && count($vv)) { + $translate_x = $this->sizeConverter->convert($vv[0], $maxsize_x, false, false); + if (count($vv) == 2) { + $translate_y = $this->sizeConverter->convert($vv[1], $maxsize_y, false, false); + } else { + $translate_y = 0; + } + $tr2 .= $this->transformTranslate($translate_x, $translate_y, true) . ' '; + } elseif ($c == 'translatex' && count($vv)) { + $translate_x = $this->sizeConverter->convert($vv[0], $maxsize_x, false, false); + $tr2 .= $this->transformTranslate($translate_x, 0, true) . ' '; + } elseif ($c == 'translatey' && count($vv)) { + $translate_y = $this->sizeConverter->convert($vv[1], $maxsize_y, false, false); + $tr2 .= $this->transformTranslate(0, $translate_y, true) . ' '; + } elseif ($c == 'scale' && count($vv)) { + $scale_x = $vv[0] * 100; + if (count($vv) == 2) { + $scale_y = $vv[1] * 100; + } else { + $scale_y = $scale_x; + } + $tr2 .= $this->transformScale($scale_x, $scale_y, $cx, $cy, true) . ' '; + } elseif ($c == 'scalex' && count($vv)) { + $scale_x = $vv[0] * 100; + $tr2 .= $this->transformScale($scale_x, 0, $cx, $cy, true) . ' '; + } elseif ($c == 'scaley' && count($vv)) { + $scale_y = $vv[1] * 100; + $tr2 .= $this->transformScale(0, $scale_y, $cx, $cy, true) . ' '; + } elseif ($c == 'skew' && count($vv)) { + $angle_x = $this->ConvertAngle($vv[0], false); + if (count($vv) == 2) { + $angle_y = $this->ConvertAngle($vv[1], false); + } else { + $angle_y = 0; + } + $tr2 .= $this->transformSkew($angle_x, $angle_y, $cx, $cy, true) . ' '; + } elseif ($c == 'skewx' && count($vv)) { + $angle = $this->ConvertAngle($vv[0], false); + $tr2 .= $this->transformSkew($angle, 0, $cx, $cy, true) . ' '; + } elseif ($c == 'skewy' && count($vv)) { + $angle = $this->ConvertAngle($vv[0], false); + $tr2 .= $this->transformSkew(0, $angle, $cx, $cy, true) . ' '; + } elseif ($c == 'rotate' && count($vv)) { + $angle = $this->ConvertAngle($vv[0]); + $tr2 .= $this->transformRotate($angle, $cx, $cy, true) . ' '; + } + } + } + } + + // LIST MARKERS (Images) // mPDF 6 Lists + if (isset($objattr['listmarker']) && $objattr['listmarker'] && $objattr['listmarkerposition'] == 'outside') { + $mw = $objattr['OUTER-WIDTH']; + // NB If change marker-offset, also need to alter in function _getListMarkerWidth + $adjx = $this->sizeConverter->convert($this->list_marker_offset, $this->FontSize); + if ($objattr['dir'] == 'rtl') { + $objattr['INNER-X'] += $adjx; + } else { + $objattr['INNER-X'] -= $adjx; + $objattr['INNER-X'] -= $mw; + } + } + // mPDF 5.7.3 TRANSFORMS / BACKGROUND COLOR + // Transform also affects image background + if ($tr2) { + $this->writer->write('q ' . $tr2 . ' '); + } + if (isset($objattr['bgcolor']) && $objattr['bgcolor']) { + $bgcol = $objattr['bgcolor']; + $this->SetFColor($bgcol); + $this->Rect($x, $y, $w, $h, 'F'); + $this->SetFColor($this->colorConverter->convert(255, $this->PDFAXwarnings)); + } + if ($tr2) { + $this->writer->write('Q'); + } + + /* -- BACKGROUNDS -- */ + if (isset($objattr['GRADIENT-MASK'])) { + $g = $this->gradient->parseMozGradient($objattr['GRADIENT-MASK']); + if ($g) { + $dummy = $this->gradient->Gradient($objattr['INNER-X'], $objattr['INNER-Y'], $obiw, $obih, $g['type'], $g['stops'], $g['colorspace'], $g['coords'], $g['extend'], true, true); + $gradmask = '/TGS' . count($this->gradients) . ' gs '; + } + } + /* -- END BACKGROUNDS -- */ + /* -- IMAGES-WMF -- */ + if (isset($objattr['itype']) && $objattr['itype'] == 'wmf') { + $outstring = sprintf('q ' . $tr . $tr2 . '%.3F 0 0 %.3F %.3F %.3F cm /FO%d Do Q', $sx, -$sy, $objattr['INNER-X'] * Mpdf::SCALE - $sx * $objattr['wmf_x'], (($this->h - $objattr['INNER-Y']) * Mpdf::SCALE) + $sy * $objattr['wmf_y'], $objattr['ID']); // mPDF 5.7.3 TRANSFORMS + } else { /* -- END IMAGES-WMF -- */ + if (isset($objattr['itype']) && $objattr['itype'] == 'svg') { + $outstring = sprintf('q ' . $tr . $tr2 . '%.3F 0 0 %.3F %.3F %.3F cm /FO%d Do Q', $sx, -$sy, $objattr['INNER-X'] * Mpdf::SCALE - $sx * $objattr['wmf_x'], (($this->h - $objattr['INNER-Y']) * Mpdf::SCALE) + $sy * $objattr['wmf_y'], $objattr['ID']); // mPDF 5.7.3 TRANSFORMS + } else { + $outstring = sprintf("q " . $tr . $tr2 . "%.3F 0 0 %.3F %.3F %.3F cm " . $gradmask . "/I%d Do Q", $obiw * Mpdf::SCALE, $obih * Mpdf::SCALE, $objattr['INNER-X'] * Mpdf::SCALE, ($this->h - ($objattr['INNER-Y'] + $obih )) * Mpdf::SCALE, $objattr['ID']); // mPDF 5.7.3 TRANSFORMS + } + } + $this->writer->write($outstring); + // LINK + if (isset($objattr['link'])) { + $this->Link($objattr['INNER-X'], $objattr['INNER-Y'], $objattr['INNER-WIDTH'], $objattr['INNER-HEIGHT'], $objattr['link']); + } + if (isset($objattr['opacity'])) { + $this->SetAlpha(1); + } + + // mPDF 5.7.3 TRANSFORMS + // Transform also affects image borders + if ($tr2) { + $this->writer->write('q ' . $tr2 . ' '); + } + if ((isset($objattr['border_top']) && $objattr['border_top'] > 0) || (isset($objattr['border_left']) && $objattr['border_left'] > 0) || (isset($objattr['border_right']) && $objattr['border_right'] > 0) || (isset($objattr['border_bottom']) && $objattr['border_bottom'] > 0)) { + $this->PaintImgBorder($objattr, $is_table); + } + if ($tr2) { + $this->writer->write('Q'); + } + + if (isset($objattr['visibility']) && $objattr['visibility'] != 'visible' && $objattr['visibility']) { + $this->SetVisibility('visible'); + } + if (isset($objattr['z-index']) && $objattr['z-index'] > 0 && $this->current_layer == 0) { + $this->EndLayer(); + } + // mPDF 5.7.3 TRANSFORMS + if (isset($objattr['transform'])) { + $this->writer->write("\n" . '% ETR'); // End Transform + } + } + + if ($objattr['type'] === 'barcode') { + + $bgcol = $this->colorConverter->convert(255, $this->PDFAXwarnings); + + if (isset($objattr['bgcolor']) && $objattr['bgcolor']) { + $bgcol = $objattr['bgcolor']; + } + + $col = $this->colorConverter->convert(0, $this->PDFAXwarnings); + + if (isset($objattr['color']) && $objattr['color']) { + $col = $objattr['color']; + } + + $this->SetFColor($bgcol); + $this->Rect($objattr['BORDER-X'], $objattr['BORDER-Y'], $objattr['BORDER-WIDTH'], $objattr['BORDER-HEIGHT'], 'F'); + $this->SetFColor($this->colorConverter->convert(255, $this->PDFAXwarnings)); + + if (isset($objattr['BORDER-WIDTH'])) { + $this->PaintImgBorder($objattr, $is_table); + } + + $barcodeTypes = ['EAN13', 'ISBN', 'ISSN', 'UPCA', 'UPCE', 'EAN8']; + if (in_array($objattr['btype'], $barcodeTypes, true)) { + + $this->WriteBarcode( + $objattr['code'], + $objattr['showtext'], + $objattr['INNER-X'], + $objattr['INNER-Y'], + $objattr['bsize'], + 0, + 0, + 0, + 0, + 0, + $objattr['bheight'], + $bgcol, + $col, + $objattr['btype'], + $objattr['bsupp'], + (isset($objattr['bsupp_code']) ? $objattr['bsupp_code'] : ''), + $k + ); + + } elseif ($objattr['btype'] === 'QR') { + + if (!class_exists('Mpdf\QrCode\QrCode') || !class_exists('Mpdf\QrCode\Output\Mpdf')) { + throw new \Mpdf\MpdfException('Mpdf\QrCode package was not found. Install the package from Packagist with "composer require mpdf/qrcode"'); + } + + $barcodeContent = str_replace('\r\n', "\r\n", $objattr['code']); + $barcodeContent = str_replace('\n', "\n", $barcodeContent); + + $qrcode = new QrCode\QrCode($barcodeContent, $objattr['errorlevel']); + if ($objattr['disableborder']) { + $qrcode->disableBorder(); + } + + $bgColor = [255, 255, 255]; + if ($objattr['bgcolor']) { + $bgColor = array_map( + function ($col) { + return intval(255 * floatval($col)); + }, + explode(" ", $this->SetColor($objattr['bgcolor'], 'CodeOnly')) + ); + } + $color = [0, 0, 0]; + if ($objattr['color']) { + $color = array_map( + function ($col) { + return intval(255 * floatval($col)); + }, + explode(" ", $this->SetColor($objattr['color'], 'CodeOnly')) + ); + } + + $out = new QrCode\Output\Mpdf(); + $out->output( + $qrcode, + $this, + $objattr['INNER-X'], + $objattr['INNER-Y'], + $objattr['bsize'] * 25, + $bgColor, + $color + ); + + unset($qrcode); + + } else { + + $this->WriteBarcode2( + $objattr['code'], + $objattr['INNER-X'], + $objattr['INNER-Y'], + $objattr['bsize'], + $objattr['bheight'], + $bgcol, + $col, + $objattr['btype'], + $objattr['pr_ratio'], + $k + ); + + } + } + + // TEXT CIRCLE + if ($objattr['type'] == 'textcircle') { + $bgcol = ''; + if (isset($objattr['bgcolor']) && $objattr['bgcolor']) { + $bgcol = $objattr['bgcolor']; + } + $col = $this->colorConverter->convert(0, $this->PDFAXwarnings); + if (isset($objattr['color']) && $objattr['color']) { + $col = $objattr['color']; + } + $this->SetTColor($col); + $this->SetFColor($bgcol); + if ($bgcol) { + $this->Rect($objattr['BORDER-X'], $objattr['BORDER-Y'], $objattr['BORDER-WIDTH'], $objattr['BORDER-HEIGHT'], 'F'); + } + $this->SetFColor($this->colorConverter->convert(255, $this->PDFAXwarnings)); + if (isset($objattr['BORDER-WIDTH'])) { + $this->PaintImgBorder($objattr, $is_table); + } + if (empty($this->directWrite)) { + $this->directWrite = new DirectWrite($this, $this->otl, $this->sizeConverter, $this->colorConverter); + } + if (isset($objattr['top-text'])) { + $this->directWrite->CircularText($objattr['INNER-X'] + $objattr['INNER-WIDTH'] / 2, $objattr['INNER-Y'] + $objattr['INNER-HEIGHT'] / 2, $objattr['r'] / $k, $objattr['top-text'], 'top', $objattr['fontfamily'], $objattr['fontsize'] / $k, $objattr['fontstyle'], $objattr['space-width'], $objattr['char-width'], (isset($objattr['divider']) ? $objattr['divider'] : '')); + } + if (isset($objattr['bottom-text'])) { + $this->directWrite->CircularText($objattr['INNER-X'] + $objattr['INNER-WIDTH'] / 2, $objattr['INNER-Y'] + $objattr['INNER-HEIGHT'] / 2, $objattr['r'] / $k, $objattr['bottom-text'], 'bottom', $objattr['fontfamily'], $objattr['fontsize'] / $k, $objattr['fontstyle'], $objattr['space-width'], $objattr['char-width'], (isset($objattr['divider']) ? $objattr['divider'] : '')); + } + } + + $this->ResetSpacing(); + + // LIST MARKERS (Text or bullets) // mPDF 6 Lists + if ($objattr['type'] == 'listmarker') { + if (isset($objattr['fontfamily'])) { + $this->SetFont($objattr['fontfamily'], $objattr['fontstyle'], $objattr['fontsizept']); + } + $col = $this->colorConverter->convert(0, $this->PDFAXwarnings); + if (isset($objattr['colorarray']) && ($objattr['colorarray'])) { + $col = $objattr['colorarray']; + } + + if (isset($objattr['bullet']) && $objattr['bullet']) { // Used for position "outside" only + $type = $objattr['bullet']; + $size = $objattr['size']; + + if ($objattr['listmarkerposition'] == 'inside') { + $adjx = $size / 2; + if ($objattr['dir'] == 'rtl') { + $adjx += $objattr['offset']; + } + $this->x += $adjx; + } else { + $adjx = $objattr['offset']; + $adjx += $size / 2; + if ($objattr['dir'] == 'rtl') { + $this->x += $adjx; + } else { + $this->x -= $adjx; + } + } + + $yadj = $objattr['lineBox']['glyphYorigin']; + if (isset($this->CurrentFont['desc']['XHeight']) && $this->CurrentFont['desc']['XHeight']) { + $xh = $this->CurrentFont['desc']['XHeight']; + } else { + $xh = 500; + } + $yadj -= ($this->FontSize * $xh / 1000) * 0.625; // Vertical height of bullet (centre) from baseline= XHeight * 0.625 + $this->y += $yadj; + + $this->_printListBullet($this->x, $this->y, $size, $type, $col); + } else { + $this->SetTColor($col); + $w = $this->GetStringWidth($texto); + // NB If change marker-offset, also need to alter in function _getListMarkerWidth + $adjx = $this->sizeConverter->convert($this->list_marker_offset, $this->FontSize); + if ($objattr['dir'] == 'rtl') { + $align = 'L'; + $this->x += $adjx; + } else { + // Use these lines to set as marker-offset, right-aligned - default + $align = 'R'; + $this->x -= $adjx; + $this->x -= $w; + } + $this->Cell($w, $this->FontSize, $texto, 0, 0, $align, 0, '', 0, 0, 0, 'T', 0, false, false, 0, $objattr['lineBox']); + $this->SetTColor($this->colorConverter->convert(0, $this->PDFAXwarnings)); + } + } + + // DOT-TAB + if ($objattr['type'] == 'dottab') { + if (isset($objattr['fontfamily'])) { + $this->SetFont($objattr['fontfamily'], '', $objattr['fontsize']); + } + $sp = $this->GetStringWidth(' '); + $nb = floor(($w - 2 * $sp) / $this->GetStringWidth('.')); + if ($nb > 0) { + $dots = ' ' . str_repeat('.', $nb) . ' '; + } else { + $dots = ' '; + } + $col = $this->colorConverter->convert(0, $this->PDFAXwarnings); + if (isset($objattr['colorarray']) && ($objattr['colorarray'])) { + $col = $objattr['colorarray']; + } + $this->SetTColor($col); + $save_dh = $this->divheight; + $save_sbd = $this->spanborddet; + $save_textvar = $this->textvar; // mPDF 5.7.1 + $this->spanborddet = ''; + $this->divheight = 0; + $this->textvar = 0x00; // mPDF 5.7.1 + + $this->Cell($w, $h, $dots, 0, 0, 'C', 0, '', 0, 0, 0, 'T', 0, false, false, 0, $objattr['lineBox']); // mPDF 6 DOTTAB + $this->spanborddet = $save_sbd; + $this->textvar = $save_textvar; // mPDF 5.7.1 + $this->divheight = $save_dh; + $this->SetTColor($this->colorConverter->convert(0, $this->PDFAXwarnings)); + } + + /* -- FORMS -- */ + // TEXT/PASSWORD INPUT + if ($objattr['type'] == 'input' && ($objattr['subtype'] == 'TEXT' || $objattr['subtype'] == 'PASSWORD')) { + $this->form->print_ob_text($objattr, $w, $h, $texto, $rtlalign, $k, $blockdir); + } + + // TEXTAREA + if ($objattr['type'] == 'textarea') { + $this->form->print_ob_textarea($objattr, $w, $h, $texto, $rtlalign, $k, $blockdir); + } + + // SELECT + if ($objattr['type'] == 'select') { + $this->form->print_ob_select($objattr, $w, $h, $texto, $rtlalign, $k, $blockdir); + } + + + // INPUT/BUTTON as IMAGE + if ($objattr['type'] == 'input' && $objattr['subtype'] == 'IMAGE') { + $this->form->print_ob_imageinput($objattr, $w, $h, $texto, $rtlalign, $k, $blockdir, $is_table); + } + + // BUTTON + if ($objattr['type'] == 'input' && ($objattr['subtype'] == 'SUBMIT' || $objattr['subtype'] == 'RESET' || $objattr['subtype'] == 'BUTTON')) { + $this->form->print_ob_button($objattr, $w, $h, $texto, $rtlalign, $k, $blockdir); + } + + // CHECKBOX + if ($objattr['type'] == 'input' && ($objattr['subtype'] == 'CHECKBOX')) { + $this->form->print_ob_checkbox($objattr, $w, $h, $texto, $rtlalign, $k, $blockdir, $x, $y); + } + // RADIO + if ($objattr['type'] == 'input' && ($objattr['subtype'] == 'RADIO')) { + $this->form->print_ob_radio($objattr, $w, $h, $texto, $rtlalign, $k, $blockdir, $x, $y); + } + /* -- END FORMS -- */ + } + + $this->SetFont($save_currentfontfamily, $save_currentfontstyle, $save_currentfontsize); + + $this->y = $save_y; + $this->x = $save_x; + + unset($content); + } + + function _printListBullet($x, $y, $size, $type, $color) + { + // x and y are the centre of the bullet; size is the width and/or height in mm + $fcol = $this->SetTColor($color, true); + $lcol = strtoupper($fcol); // change 0 0 0 rg to 0 0 0 RG + $this->writer->write(sprintf('q %s %s', $lcol, $fcol)); + $this->writer->write('0 j 0 J [] 0 d'); + if ($type == 'square') { + $size *= 0.85; // Smaller to appear the same size as circle/disc + $this->writer->write(sprintf('%.3F %.3F %.3F %.3F re f', ($x - $size / 2) * Mpdf::SCALE, ($this->h - $y + $size / 2) * Mpdf::SCALE, ($size) * Mpdf::SCALE, (-$size) * Mpdf::SCALE)); + } elseif ($type == 'disc') { + $this->Circle($x, $y, $size / 2, 'F'); // Fill + } elseif ($type == 'circle') { + $lw = $size / 12; // Line width + $this->writer->write(sprintf('%.3F w ', $lw * Mpdf::SCALE)); + $this->Circle($x, $y, $size / 2 - $lw / 2, 'S'); // Stroke + } + $this->writer->write('Q'); + } + + // mPDF 6 + // Get previous character and move pointers + function _moveToPrevChar(&$contentctr, &$charctr, $content) + { + $lastchar = false; + $charctr--; + while ($charctr < 0) { // go back to previous $content[] + $contentctr--; + if ($contentctr < 0) { + return false; + } + if ($this->usingCoreFont) { + $charctr = strlen($content[$contentctr]) - 1; + } else { + $charctr = mb_strlen($content[$contentctr], $this->mb_enc) - 1; + } + } + if ($this->usingCoreFont) { + $lastchar = $content[$contentctr][$charctr]; + } else { + $lastchar = mb_substr($content[$contentctr], $charctr, 1, $this->mb_enc); + } + return $lastchar; + } + + // Get previous character + function _getPrevChar($contentctr, $charctr, $content) + { + $lastchar = false; + $charctr--; + while ($charctr < 0) { // go back to previous $content[] + $contentctr--; + if ($contentctr < 0) { + return false; + } + if ($this->usingCoreFont) { + $charctr = strlen($content[$contentctr]) - 1; + } else { + $charctr = mb_strlen($content[$contentctr], $this->mb_enc) - 1; + } + } + if ($this->usingCoreFont) { + $lastchar = $content[$contentctr][$charctr]; + } else { + $lastchar = mb_substr($content[$contentctr], $charctr, 1, $this->mb_enc); + } + return $lastchar; + } + + function WriteFlowingBlock($s, $sOTLdata) + { + // mPDF 5.7.1 + $currentx = $this->x; + $is_table = $this->flowingBlockAttr['is_table']; + $table_draft = $this->flowingBlockAttr['table_draft']; + // width of all the content so far in points + $contentWidth = & $this->flowingBlockAttr['contentWidth']; + // cell width in points + $maxWidth = & $this->flowingBlockAttr['width']; + $lineCount = & $this->flowingBlockAttr['lineCount']; + // line height in user units + $stackHeight = & $this->flowingBlockAttr['height']; + $align = & $this->flowingBlockAttr['align']; + $content = & $this->flowingBlockAttr['content']; + $contentB = & $this->flowingBlockAttr['contentB']; + $font = & $this->flowingBlockAttr['font']; + $valign = & $this->flowingBlockAttr['valign']; + $blockstate = $this->flowingBlockAttr['blockstate']; + $cOTLdata = & $this->flowingBlockAttr['cOTLdata']; // mPDF 5.7.1 + + $newblock = $this->flowingBlockAttr['newblock']; + $blockdir = $this->flowingBlockAttr['blockdir']; + + // *********** BLOCK BACKGROUND COLOR ***************** // + if ($this->blk[$this->blklvl]['bgcolor'] && !$is_table) { + $fill = 0; + } else { + $this->SetFColor($this->colorConverter->convert(255, $this->PDFAXwarnings)); + $fill = 0; + } + $font[] = $this->saveFont(); + $content[] = ''; + $contentB[] = ''; + $cOTLdata[] = $sOTLdata; // mPDF 5.7.1 + $currContent = & $content[count($content) - 1]; + + $CJKoverflow = false; + $Oikomi = false; // mPDF 6 + $hanger = ''; + + // COLS + $oldcolumn = $this->CurrCol; + if ($this->ColActive && !$is_table) { + $this->breakpoints[$this->CurrCol][] = $this->y; + } // *COLUMNS* + + /* -- TABLES -- */ + if ($is_table) { + $ipaddingL = 0; + $ipaddingR = 0; + $paddingL = 0; + $paddingR = 0; + $cpaddingadjustL = 0; + $cpaddingadjustR = 0; + // Added mPDF 3.0 + $fpaddingR = 0; + $fpaddingL = 0; + } else { + /* -- END TABLES -- */ + $ipaddingL = $this->blk[$this->blklvl]['padding_left']; + $ipaddingR = $this->blk[$this->blklvl]['padding_right']; + $paddingL = ($ipaddingL * Mpdf::SCALE); + $paddingR = ($ipaddingR * Mpdf::SCALE); + $this->cMarginL = $this->blk[$this->blklvl]['border_left']['w']; + $cpaddingadjustL = -$this->cMarginL; + $this->cMarginR = $this->blk[$this->blklvl]['border_right']['w']; + $cpaddingadjustR = -$this->cMarginR; + // Added mPDF 3.0 Float DIV + $fpaddingR = 0; + $fpaddingL = 0; + /* -- CSS-FLOAT -- */ + if (count($this->floatDivs)) { + list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($this->blklvl); + if ($r_exists) { + $fpaddingR = $r_width; + } + if ($l_exists) { + $fpaddingL = $l_width; + } + } + /* -- END CSS-FLOAT -- */ + + $usey = $this->y + 0.002; + if (($newblock) && ($blockstate == 1 || $blockstate == 3) && ($lineCount == 0)) { + $usey += $this->blk[$this->blklvl]['margin_top'] + $this->blk[$this->blklvl]['padding_top'] + $this->blk[$this->blklvl]['border_top']['w']; + } + /* -- CSS-IMAGE-FLOAT -- */ + // If float exists at this level + if (isset($this->floatmargins['R']) && $usey <= $this->floatmargins['R']['y1'] && $usey >= $this->floatmargins['R']['y0'] && !$this->floatmargins['R']['skipline']) { + $fpaddingR += $this->floatmargins['R']['w']; + } + if (isset($this->floatmargins['L']) && $usey <= $this->floatmargins['L']['y1'] && $usey >= $this->floatmargins['L']['y0'] && !$this->floatmargins['L']['skipline']) { + $fpaddingL += $this->floatmargins['L']['w']; + } + /* -- END CSS-IMAGE-FLOAT -- */ + } // *TABLES* + // OBJECTS - IMAGES & FORM Elements (NB has already skipped line/page if required - in printbuffer) + if (substr($s, 0, 3) == "\xbb\xa4\xac") { // identifier has been identified! + $objattr = $this->_getObjAttr($s); + $h_corr = 0; + if ($is_table) { // *TABLES* + $maximumW = ($maxWidth / Mpdf::SCALE) - ($this->cellPaddingL + $this->cMarginL + $this->cellPaddingR + $this->cMarginR); // *TABLES* + } // *TABLES* + else { // *TABLES* + if (($newblock) && ($blockstate == 1 || $blockstate == 3) && ($lineCount == 0) && (!$is_table)) { + $h_corr = $this->blk[$this->blklvl]['padding_top'] + $this->blk[$this->blklvl]['border_top']['w']; + } + $maximumW = ($maxWidth / Mpdf::SCALE) - ($this->blk[$this->blklvl]['padding_left'] + $this->blk[$this->blklvl]['border_left']['w'] + $this->blk[$this->blklvl]['padding_right'] + $this->blk[$this->blklvl]['border_right']['w'] + $fpaddingL + $fpaddingR ); + } // *TABLES* + $objattr = $this->inlineObject($objattr['type'], $this->lMargin + $fpaddingL + ($contentWidth / Mpdf::SCALE), ($this->y + $h_corr), $objattr, $this->lMargin, ($contentWidth / Mpdf::SCALE), $maximumW, $stackHeight, true, $is_table); + + // SET LINEHEIGHT for this line ================ RESET AT END + $stackHeight = max($stackHeight, $objattr['OUTER-HEIGHT']); + $this->objectbuffer[count($content) - 1] = $objattr; + // if (isset($objattr['vertical-align'])) { $valign = $objattr['vertical-align']; } + // else { $valign = ''; } + // LIST MARKERS // mPDF 6 Lists + if ($objattr['type'] == 'image' && isset($objattr['listmarker']) && $objattr['listmarker'] && $objattr['listmarkerposition'] == 'outside') { + // do nothing + } else { + $contentWidth += ($objattr['OUTER-WIDTH'] * Mpdf::SCALE); + } + return; + } + + $lbw = $rbw = 0; // Border widths + if (!empty($this->spanborddet)) { + if (isset($this->spanborddet['L'])) { + $lbw = $this->spanborddet['L']['w']; + } + if (isset($this->spanborddet['R'])) { + $rbw = $this->spanborddet['R']['w']; + } + } + + if ($this->usingCoreFont) { + $clen = strlen($s); + } else { + $clen = mb_strlen($s, $this->mb_enc); + } + + // for every character in the string + for ($i = 0; $i < $clen; $i++) { + // extract the current character + // get the width of the character in points + if ($this->usingCoreFont) { + $c = $s[$i]; + // Soft Hyphens chr(173) + $cw = ($this->GetCharWidthCore($c) * Mpdf::SCALE); + if (($this->textvar & TextVars::FC_KERNING) && $i > 0) { // mPDF 5.7.1 + if (isset($this->CurrentFont['kerninfo'][$s[($i - 1)]][$c])) { + $cw += ($this->CurrentFont['kerninfo'][$s[($i - 1)]][$c] * $this->FontSizePt / 1000 ); + } + } + } else { + $c = mb_substr($s, $i, 1, $this->mb_enc); + $cw = ($this->GetCharWidthNonCore($c, false) * Mpdf::SCALE); + // mPDF 5.7.1 + // Use OTL GPOS + if (isset($this->CurrentFont['useOTL']) && ($this->CurrentFont['useOTL'] & 0xFF)) { + // ...WriteFlowingBlock... + // Only add XAdvanceL (not sure at present whether RTL or LTR writing direction) + // At this point, XAdvanceL and XAdvanceR will balance + if (isset($sOTLdata['GPOSinfo'][$i]['XAdvanceL'])) { + $cw += $sOTLdata['GPOSinfo'][$i]['XAdvanceL'] * (1000 / $this->CurrentFont['unitsPerEm']) * ($this->FontSize / 1000) * Mpdf::SCALE; + } + } + if (($this->textvar & TextVars::FC_KERNING) && $i > 0) { // mPDF 5.7.1 + $lastc = mb_substr($s, ($i - 1), 1, $this->mb_enc); + $ulastc = $this->UTF8StringToArray($lastc, false); + $uc = $this->UTF8StringToArray($c, false); + if (isset($this->CurrentFont['kerninfo'][$ulastc[0]][$uc[0]])) { + $cw += ($this->CurrentFont['kerninfo'][$ulastc[0]][$uc[0]] * $this->FontSizePt / 1000 ); + } + } + } + + if ($i == 0) { + $cw += $lbw * Mpdf::SCALE; + $contentB[(count($contentB) - 1)] .= 'L'; + } + if ($i == ($clen - 1)) { + $cw += $rbw * Mpdf::SCALE; + $contentB[(count($contentB) - 1)] .= 'R'; + } + if ($c == ' ') { + $currContent .= $c; + $contentWidth += $cw; + continue; + } + + // Paragraph INDENT + $WidthCorrection = 0; + if (($newblock) && ($blockstate == 1 || $blockstate == 3) && isset($this->blk[$this->blklvl]['text_indent']) && ($lineCount == 0) && (!$is_table) && ($align != 'C')) { + $ti = $this->sizeConverter->convert($this->blk[$this->blklvl]['text_indent'], $this->blk[$this->blklvl]['inner_width'], $this->blk[$this->blklvl]['InlineProperties']['size'], false); // mPDF 5.7.4 + $WidthCorrection = ($ti * Mpdf::SCALE); + } + // OUTDENT + foreach ($this->objectbuffer as $k => $objattr) { // mPDF 6 DOTTAB + if ($objattr['type'] == 'dottab') { + $WidthCorrection -= ($objattr['outdent'] * Mpdf::SCALE); + break; + } + } + + + // Added mPDF 3.0 Float DIV + $fpaddingR = 0; + $fpaddingL = 0; + /* -- CSS-FLOAT -- */ + if (count($this->floatDivs)) { + list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($this->blklvl); + if ($r_exists) { + $fpaddingR = $r_width; + } + if ($l_exists) { + $fpaddingL = $l_width; + } + } + /* -- END CSS-FLOAT -- */ + + $usey = $this->y + 0.002; + if (($newblock) && ($blockstate == 1 || $blockstate == 3) && ($lineCount == 0)) { + $usey += $this->blk[$this->blklvl]['margin_top'] + $this->blk[$this->blklvl]['padding_top'] + $this->blk[$this->blklvl]['border_top']['w']; + } + + /* -- CSS-IMAGE-FLOAT -- */ + // If float exists at this level + if (isset($this->floatmargins['R']) && $usey <= $this->floatmargins['R']['y1'] && $usey >= $this->floatmargins['R']['y0'] && !$this->floatmargins['R']['skipline']) { + $fpaddingR += $this->floatmargins['R']['w']; + } + if (isset($this->floatmargins['L']) && $usey <= $this->floatmargins['L']['y1'] && $usey >= $this->floatmargins['L']['y0'] && !$this->floatmargins['L']['skipline']) { + $fpaddingL += $this->floatmargins['L']['w']; + } + /* -- END CSS-IMAGE-FLOAT -- */ + + + // try adding another char + if (( $contentWidth + $cw > $maxWidth - $WidthCorrection - (($this->cMarginL + $this->cMarginR) * Mpdf::SCALE) - ($paddingL + $paddingR + (($fpaddingL + $fpaddingR) * Mpdf::SCALE) ) + 0.001)) {// 0.001 is to correct for deviations converting mm=>pts + // it won't fit, output what we already have + $lineCount++; + + // contains any content that didn't make it into this print + $savedContent = ''; + $savedContentB = ''; + $savedOTLdata = []; // mPDF 5.7.1 + $savedFont = []; + $savedObj = []; + $savedPreOTLdata = []; // mPDF 5.7.1 + $savedPreContent = []; + $savedPreContentB = []; + $savedPreFont = []; + + // mPDF 6 + // New line-breaking algorithm + ///////////////////// + // LINE BREAKING + ///////////////////// + $breakfound = false; + $contentctr = count($content) - 1; + if ($this->usingCoreFont) { + $charctr = strlen($currContent); + } else { + $charctr = mb_strlen($currContent, $this->mb_enc); + } + $checkchar = $c; + $prevchar = $this->_getPrevChar($contentctr, $charctr, $content); + + /* -- CJK-FONTS -- */ + // 1) CJK Overflowing a) punctuation or b) Oikomi + // Next character ($c) is suitable to add as overhanging or squeezed punctuation, or Oikomi + if ($CJKoverflow || $Oikomi) { // If flag already set + $CJKoverflow = false; + $Oikomi = false; + $breakfound = true; + } + if (!$this->usingCoreFont && !$breakfound && $this->checkCJK) { + + // Get next/following character (in this chunk) + $followingchar = ''; + if ($i < ($clen - 1)) { + if ($this->usingCoreFont) { + $followingchar = $s[$i + 1]; + } else { + $followingchar = mb_substr($s, $i + 1, 1, $this->mb_enc); + } + } + + // 1a) Overflow punctuation + if (preg_match("/[" . $this->pregCJKchars . "]/u", $prevchar) && preg_match("/[" . $this->CJKoverflow . "]/u", $checkchar) && $this->allowCJKorphans) { + // add character onto this line + $currContent .= $c; + $contentWidth += $cw; + $CJKoverflow = true; // Set flag + continue; + } elseif (preg_match("/[" . $this->pregCJKchars . "]/u", $checkchar) && $this->allowCJKorphans && + (preg_match("/[" . $this->CJKleading . "]/u", $followingchar) || preg_match("/[" . $this->CJKfollowing . "]/u", $checkchar)) && + !preg_match("/[" . $this->CJKleading . "]/u", $checkchar) && !preg_match("/[" . $this->CJKfollowing . "]/u", $followingchar) && + !(preg_match("/[0-9\x{ff10}-\x{ff19}]/u", $followingchar) && preg_match("/[0-9\x{ff10}-\x{ff19}]/u", $checkchar))) { + // 1b) Try squeezing another character(s) onto this line = Oikomi, if character cannot end line + // or next character cannot start line (and not splitting CJK numerals) + // NB otherwise it move lastchar(s) to next line to keep $c company = Oidashi, which is done below in standard way + // add character onto this line + $currContent .= $c; + $contentWidth += $cw; + $Oikomi = true; // Set flag + continue; + } + } + /* -- END CJK-FONTS -- */ + /* -- HYPHENATION -- */ + + // AUTOMATIC HYPHENATION + // 2) Automatic hyphen in current word (does not cross tags) + if (isset($this->textparam['hyphens']) && $this->textparam['hyphens'] == 1) { + $currWord = ''; + // Look back and ahead to get current word + for ($ac = $charctr - 1; $ac >= 0; $ac--) { + if ($this->usingCoreFont) { + $addc = substr($currContent, $ac, 1); + } else { + $addc = mb_substr($currContent, $ac, 1, $this->mb_enc); + } + if ($addc == ' ') { + break; + } + $currWord = $addc . $currWord; + } + $start = $ac + 1; + for ($ac = $i; $ac < ($clen - 1); $ac++) { + if ($this->usingCoreFont) { + $addc = substr($s, $ac, 1); + } else { + $addc = mb_substr($s, $ac, 1, $this->mb_enc); + } + if ($addc == ' ') { + break; + } + $currWord .= $addc; + } + $ptr = $this->hyphenator->hyphenateWord($currWord, $charctr - $start); + if ($ptr > -1) { + $breakfound = [$contentctr, $start + $ptr, $contentctr, $start + $ptr, 'hyphen']; + } + } + /* -- END HYPHENATION -- */ + + // Search backwards to find first line-break opportunity + while ($breakfound == false && $prevchar !== false) { + $cutcontentctr = $contentctr; + $cutcharctr = $charctr; + $prevchar = $this->_moveToPrevChar($contentctr, $charctr, $content); + ///////////////////// + // 3) Break at SPACE + ///////////////////// + if ($prevchar == ' ') { + $breakfound = [$contentctr, $charctr, $cutcontentctr, $cutcharctr, 'discard']; + } ///////////////////// + // 4) Break at U+200B in current word (Khmer, Lao & Thai Invisible word boundary, and Tibetan) + ///////////////////// + elseif ($prevchar == "\xe2\x80\x8b") { // U+200B Zero-width Word Break + $breakfound = [$contentctr, $charctr, $cutcontentctr, $cutcharctr, 'discard']; + } ///////////////////// + // 5) Break at Hard HYPHEN '-' or U+2010 + ///////////////////// + elseif (isset($this->textparam['hyphens']) && $this->textparam['hyphens'] != 2 && ($prevchar == '-' || $prevchar == "\xe2\x80\x90")) { + // Don't break a URL + // Look back to get first part of current word + $checkw = ''; + for ($ac = $charctr - 1; $ac >= 0; $ac--) { + if ($this->usingCoreFont) { + $addc = substr($currContent, $ac, 1); + } else { + $addc = mb_substr($currContent, $ac, 1, $this->mb_enc); + } + if ($addc == ' ') { + break; + } + $checkw = $addc . $checkw; + } + // Don't break if HyphenMinus AND (a URL or before a numeral or before a >) + if ((!preg_match('/(http:|ftp:|https:|www\.)/', $checkw) && $checkchar != '>' && !preg_match('/[0-9]/', $checkchar)) || $prevchar == "\xe2\x80\x90") { + $breakfound = [$cutcontentctr, $cutcharctr, $cutcontentctr, $cutcharctr, 'cut']; + } + } ///////////////////// + // 6) Break at Soft HYPHEN (replace with hard hyphen) + ///////////////////// + elseif (isset($this->textparam['hyphens']) && $this->textparam['hyphens'] != 2 && !$this->usingCoreFont && $prevchar == "\xc2\xad") { + $breakfound = [$cutcontentctr, $cutcharctr, $cutcontentctr, $cutcharctr, 'cut']; + $content[$contentctr] = mb_substr($content[$contentctr], 0, $charctr, $this->mb_enc) . '-' . mb_substr($content[$contentctr], $charctr + 1, mb_strlen($content[$contentctr]), $this->mb_enc); + if (!empty($cOTLdata[$contentctr])) { + $cOTLdata[$contentctr]['char_data'][$charctr] = ['bidi_class' => 9, 'uni' => 45]; + $cOTLdata[$contentctr]['group'][$charctr] = 'C'; + } + } elseif (isset($this->textparam['hyphens']) && $this->textparam['hyphens'] != 2 && $this->FontFamily != 'csymbol' && $this->FontFamily != 'czapfdingbats' && $prevchar == chr(173)) { + $breakfound = [$cutcontentctr, $cutcharctr, $cutcontentctr, $cutcharctr, 'cut']; + $content[$contentctr] = substr($content[$contentctr], 0, $charctr) . '-' . substr($content[$contentctr], $charctr + 1); + } /* -- CJK-FONTS -- */ + ///////////////////// + // 7) Break at CJK characters (unless forbidden characters to end or start line) + // CJK Avoiding line break in the middle of numerals + ///////////////////// + elseif (!$this->usingCoreFont && $this->checkCJK && preg_match("/[" . $this->pregCJKchars . "]/u", $checkchar) && + !preg_match("/[" . $this->CJKfollowing . "]/u", $checkchar) && !preg_match("/[" . $this->CJKleading . "]/u", $prevchar) && + !(preg_match("/[0-9\x{ff10}-\x{ff19}]/u", $prevchar) && preg_match("/[0-9\x{ff10}-\x{ff19}]/u", $checkchar))) { + $breakfound = [$cutcontentctr, $cutcharctr, $cutcontentctr, $cutcharctr, 'cut']; + } + /* -- END CJK-FONTS -- */ + ///////////////////// + // 8) Break at OBJECT (Break before all objects here - selected objects are moved forward to next line below e.g. dottab) + ///////////////////// + if (isset($this->objectbuffer[$contentctr])) { + $breakfound = [$cutcontentctr, $cutcharctr, $cutcontentctr, $cutcharctr, 'cut']; + } + + + $checkchar = $prevchar; + } + + // If a line-break opportunity found: + if (is_array($breakfound)) { + $contentctr = $breakfound[0]; + $charctr = $breakfound[1]; + $cutcontentctr = $breakfound[2]; + $cutcharctr = $breakfound[3]; + $type = $breakfound[4]; + // Cache chunks which are already processed, but now need to be passed on to the new line + for ($ix = count($content) - 1; $ix > $cutcontentctr; $ix--) { + // save and crop off any subsequent chunks + /* -- OTL -- */ + if (!empty($sOTLdata)) { + $tmpOTL = array_pop($cOTLdata); + $savedPreOTLdata[] = $tmpOTL; + } + /* -- END OTL -- */ + $savedPreContent[] = array_pop($content); + $savedPreContentB[] = array_pop($contentB); + $savedPreFont[] = array_pop($font); + } + + // Next cache the part which will start the next line + if ($this->usingCoreFont) { + $savedPreContent[] = substr($content[$cutcontentctr], $cutcharctr); + } else { + $savedPreContent[] = mb_substr($content[$cutcontentctr], $cutcharctr, mb_strlen($content[$cutcontentctr]), $this->mb_enc); + } + $savedPreContentB[] = preg_replace('/L/', '', $contentB[$cutcontentctr]); + $savedPreFont[] = $font[$cutcontentctr]; + /* -- OTL -- */ + if (!empty($sOTLdata)) { + $savedPreOTLdata[] = $this->otl->splitOTLdata($cOTLdata[$cutcontentctr], $cutcharctr, $cutcharctr); + } + /* -- END OTL -- */ + + + // Finally adjust the Current content which ends this line + if ($cutcharctr == 0 && $type == 'discard') { + array_pop($content); + array_pop($contentB); + array_pop($font); + array_pop($cOTLdata); + } + + $currContent = & $content[count($content) - 1]; + if ($this->usingCoreFont) { + $currContent = substr($currContent, 0, $charctr); + } else { + $currContent = mb_substr($currContent, 0, $charctr, $this->mb_enc); + } + + if (!empty($sOTLdata)) { + $savedPreOTLdata[] = $this->otl->splitOTLdata($cOTLdata[(count($cOTLdata) - 1)], mb_strlen($currContent, $this->mb_enc)); + } + + if (strpos($contentB[(count($contentB) - 1)], 'R') !== false) { // ??? + $contentB[count($content) - 1] = preg_replace('/R/', '', $contentB[count($content) - 1]); // ??? + } + + if ($type == 'hyphen') { + $currContent .= '-'; + if (!empty($cOTLdata[(count($cOTLdata) - 1)])) { + $cOTLdata[(count($cOTLdata) - 1)]['char_data'][] = ['bidi_class' => 9, 'uni' => 45]; + $cOTLdata[(count($cOTLdata) - 1)]['group'] .= 'C'; + } + } + + $savedContent = ''; + $savedContentB = ''; + $savedFont = []; + $savedOTLdata = []; + } + // If no line-break opportunity found - split at current position + // or - Next character ($c) is suitable to add as overhanging or squeezed punctuation, or Oikomi, as set above by: + // 1) CJK Overflowing a) punctuation or b) Oikomi + // in which case $breakfound==1 and NOT array + + if (!is_array($breakfound)) { + $savedFont = $this->saveFont(); + if (!empty($sOTLdata)) { + $savedOTLdata = $this->otl->splitOTLdata($cOTLdata[(count($cOTLdata) - 1)], mb_strlen($currContent, $this->mb_enc)); + } + } + + if ($content[count($content) - 1] == '' && !isset($this->objectbuffer[count($content) - 1])) { + array_pop($content); + array_pop($contentB); + array_pop($font); + array_pop($cOTLdata); + $currContent = & $content[count($content) - 1]; + } + + // Right Trim current content - including CJK space, and for OTLdata + // incl. CJK - strip CJK space at end of line   = \xe3\x80\x80 = CJK space + $currContent = rtrim($currContent); + if ($this->checkCJK) { + $currContent = preg_replace("/\xe3\x80\x80$/", '', $currContent); + } // *CJK-FONTS* + /* -- OTL -- */ + if (isset($this->CurrentFont['useOTL']) && $this->CurrentFont['useOTL']) { + $this->otl->trimOTLdata($cOTLdata[count($cOTLdata) - 1], false, true); // NB also does U+3000 + } + /* -- END OTL -- */ + + + // Selected OBJECTS are moved forward to next line, unless they come before a space or U+200B (type='discard') + if (isset($this->objectbuffer[(count($content) - 1)]) && (!isset($type) || $type != 'discard')) { + $objtype = $this->objectbuffer[(count($content) - 1)]['type']; + if ($objtype == 'dottab' || $objtype == 'bookmark' || $objtype == 'indexentry' || $objtype == 'toc' || $objtype == 'annot') { + $savedObj = array_pop($this->objectbuffer); + } + } + + + // Decimal alignment (cancel if wraps to > 1 line) + if ($is_table && substr($align, 0, 1) == 'D') { + $align = substr($align, 2, 1); + } + + $lineBox = []; + + $this->_setInlineBlockHeights($lineBox, $stackHeight, $content, $font, $is_table); + + // update $contentWidth since it has changed with cropping + $contentWidth = 0; + + $inclCursive = false; + foreach ($content as $k => $chunk) { + if (isset($this->objectbuffer[$k]) && $this->objectbuffer[$k]) { + // LIST MARKERS + if ($this->objectbuffer[$k]['type'] == 'image' && isset($this->objectbuffer[$k]['listmarker']) && $this->objectbuffer[$k]['listmarker']) { + if ($this->objectbuffer[$k]['listmarkerposition'] != 'outside') { + $contentWidth += $this->objectbuffer[$k]['OUTER-WIDTH'] * Mpdf::SCALE; + } + } else { + $contentWidth += $this->objectbuffer[$k]['OUTER-WIDTH'] * Mpdf::SCALE; + } + } elseif (!isset($this->objectbuffer[$k]) || (isset($this->objectbuffer[$k]) && !$this->objectbuffer[$k])) { + $this->restoreFont($font[$k], false); + if ($this->checkCJK && $k == count($content) - 1 && $CJKoverflow && $align == 'J' && $this->allowCJKoverflow && $this->CJKforceend) { + // force-end overhang + $hanger = mb_substr($chunk, mb_strlen($chunk, $this->mb_enc) - 1, 1, $this->mb_enc); + // Probably ought to do something with char_data and GPOS in cOTLdata... + $content[$k] = $chunk = mb_substr($chunk, 0, mb_strlen($chunk, $this->mb_enc) - 1, $this->mb_enc); + } + + // Soft Hyphens chr(173) + Replace NBSP with SPACE + Set inclcursive if includes CURSIVE TEXT + if (!$this->usingCoreFont) { + /* -- OTL -- */ + if ((isset($this->CurrentFont['useOTL']) && $this->CurrentFont['useOTL']) || !empty($sOTLdata)) { + $this->otl->removeChar($chunk, $cOTLdata[$k], "\xc2\xad"); + $this->otl->replaceSpace($chunk, $cOTLdata[$k]); // NBSP -> space + if (preg_match("/([" . $this->pregCURSchars . "])/u", $chunk)) { + $inclCursive = true; + } + $content[$k] = $chunk; + } /* -- END OTL -- */ else { // *OTL* + $content[$k] = $chunk = str_replace("\xc2\xad", '', $chunk); + $content[$k] = $chunk = str_replace(chr(194) . chr(160), chr(32), $chunk); + } // *OTL* + } elseif ($this->FontFamily != 'csymbol' && $this->FontFamily != 'czapfdingbats') { + $content[$k] = $chunk = str_replace(chr(173), '', $chunk); + $content[$k] = $chunk = str_replace(chr(160), chr(32), $chunk); + } + + $contentWidth += $this->GetStringWidth($chunk, true, (isset($cOTLdata[$k]) ? $cOTLdata[$k] : false), $this->textvar) * Mpdf::SCALE; // mPDF 5.7.1 + if (!empty($this->spanborddet)) { + if (isset($this->spanborddet['L']['w']) && strpos($contentB[$k], 'L') !== false) { + $contentWidth += $this->spanborddet['L']['w'] * Mpdf::SCALE; + } + if (isset($this->spanborddet['R']['w']) && strpos($contentB[$k], 'R') !== false) { + $contentWidth += $this->spanborddet['R']['w'] * Mpdf::SCALE; + } + } + } + } + + $lastfontreqstyle = (isset($font[count($font) - 1]['ReqFontStyle']) ? $font[count($font) - 1]['ReqFontStyle'] : ''); + $lastfontstyle = (isset($font[count($font) - 1]['style']) ? $font[count($font) - 1]['style'] : ''); + if ($blockdir == 'ltr' && strpos($lastfontreqstyle, "I") !== false && strpos($lastfontstyle, "I") === false) { // Artificial italic + $lastitalic = $this->FontSize * 0.15 * Mpdf::SCALE; + } else { + $lastitalic = 0; + } + + + + + // NOW FORMAT THE LINE TO OUTPUT + if (!$table_draft) { + // DIRECTIONALITY RTL + $chunkorder = range(0, count($content) - 1); // mPDF 5.7 + /* -- OTL -- */ + // mPDF 6 + if ($blockdir == 'rtl' || $this->biDirectional) { + $this->otl->bidiReorder($chunkorder, $content, $cOTLdata, $blockdir); + // From this point on, $content and $cOTLdata may contain more elements (and re-ordered) compared to + // $this->objectbuffer and $font ($chunkorder contains the mapping) + } + + /* -- END OTL -- */ + // Remove any XAdvance from OTL data at end of line + foreach ($chunkorder as $aord => $k) { + if (count($cOTLdata)) { + $this->restoreFont($font[$k], false); + // ...WriteFlowingBlock... + if ($aord == count($chunkorder) - 1 && isset($cOTLdata[$aord]['group'])) { // Last chunk on line + $nGPOS = strlen($cOTLdata[$aord]['group']) - 1; // Last character + if (isset($cOTLdata[$aord]['GPOSinfo'][$nGPOS]['XAdvanceL']) || isset($cOTLdata[$aord]['GPOSinfo'][$nGPOS]['XAdvanceR'])) { + if (isset($cOTLdata[$aord]['GPOSinfo'][$nGPOS]['XAdvanceL'])) { + $w = $cOTLdata[$aord]['GPOSinfo'][$nGPOS]['XAdvanceL'] * 1000 / $this->CurrentFont['unitsPerEm']; + } else { + $w = $cOTLdata[$aord]['GPOSinfo'][$nGPOS]['XAdvanceR'] * 1000 / $this->CurrentFont['unitsPerEm']; + } + $w *= ($this->FontSize / 1000); + $contentWidth -= $w * Mpdf::SCALE; + $cOTLdata[$aord]['GPOSinfo'][$nGPOS]['XAdvanceL'] = 0; + $cOTLdata[$aord]['GPOSinfo'][$nGPOS]['XAdvanceR'] = 0; + } + + // If last character has an XPlacement set, adjust width calculation, and add to XAdvance to account for it + if (isset($cOTLdata[$aord]['GPOSinfo'][$nGPOS]['XPlacement'])) { + $w = -$cOTLdata[$aord]['GPOSinfo'][$nGPOS]['XPlacement'] * 1000 / $this->CurrentFont['unitsPerEm']; + $w *= ($this->FontSize / 1000); + $contentWidth -= $w * Mpdf::SCALE; + $cOTLdata[$aord]['GPOSinfo'][$nGPOS]['XAdvanceL'] = $cOTLdata[$aord]['GPOSinfo'][$nGPOS]['XPlacement']; + $cOTLdata[$aord]['GPOSinfo'][$nGPOS]['XAdvanceR'] = $cOTLdata[$aord]['GPOSinfo'][$nGPOS]['XPlacement']; + } + } + } + } + + // JUSTIFICATION J + $jcharspacing = 0; + $jws = 0; + $nb_carac = 0; + $nb_spaces = 0; + $jkashida = 0; + // if it's justified, we need to find the char/word spacing (or if hanger $this->CJKforceend) + if (($align == 'J' && !$CJKoverflow) || (($contentWidth + $lastitalic > $maxWidth - $WidthCorrection - (($this->cMarginL + $this->cMarginR) * Mpdf::SCALE) - ($paddingL + $paddingR + (($fpaddingL + $fpaddingR) * Mpdf::SCALE) ) + 0.001) && (!$CJKoverflow || ($CJKoverflow && !$this->allowCJKoverflow))) || $CJKoverflow && $align == 'J' && $this->allowCJKoverflow && $hanger && $this->CJKforceend) { // 0.001 is to correct for deviations converting mm=>pts + // JUSTIFY J (Use character spacing) + // WORD SPACING + // mPDF 5.7 + foreach ($chunkorder as $aord => $k) { + $chunk = isset($content[$aord]) ? $content[$aord] : ''; + if (!isset($this->objectbuffer[$k]) || (isset($this->objectbuffer[$k]) && !$this->objectbuffer[$k])) { + $nb_carac += mb_strlen($chunk, $this->mb_enc); + $nb_spaces += mb_substr_count($chunk, ' ', $this->mb_enc); + // Use GPOS OTL + if (isset($this->CurrentFont['useOTL']) && ($this->CurrentFont['useOTL'] & 0xFF)) { + if (isset($cOTLdata[$aord]['group']) && $cOTLdata[$aord]['group']) { + $nb_carac -= substr_count($cOTLdata[$aord]['group'], 'M'); + } + } + } else { + $nb_carac ++; + } // mPDF 6 allow spacing for inline object + } + // GetJSpacing adds kashida spacing to GPOSinfo if appropriate for Font + list($jcharspacing, $jws, $jkashida) = $this->GetJspacing($nb_carac, $nb_spaces, ($maxWidth - $lastitalic - $contentWidth - $WidthCorrection - (($this->cMarginL + $this->cMarginR) * Mpdf::SCALE) - ($paddingL + $paddingR + (($fpaddingL + $fpaddingR) * Mpdf::SCALE) )), $inclCursive, $cOTLdata); + } + + // WORD SPACING + $empty = $maxWidth - $lastitalic - $WidthCorrection - $contentWidth - (($this->cMarginL + $this->cMarginR) * Mpdf::SCALE) - ($paddingL + $paddingR + (($fpaddingL + $fpaddingR) * Mpdf::SCALE) ); + + $empty -= ($jcharspacing * ($nb_carac - 1)); // mPDF 6 nb_carac MINUS 1 + $empty -= ($jws * $nb_spaces); + $empty -= ($jkashida); + $empty /= Mpdf::SCALE; + + $b = ''; // do not use borders + // Get PAGEBREAK TO TEST for height including the top border/padding + $check_h = max($this->divheight, $stackHeight); + if (($newblock) && ($blockstate == 1 || $blockstate == 3) && ($this->blklvl > 0) && ($lineCount == 1) && (!$is_table)) { + $check_h += ($this->blk[$this->blklvl]['padding_top'] + $this->blk[$this->blklvl]['margin_top'] + $this->blk[$this->blklvl]['border_top']['w']); + } + + if ($this->ColActive && $check_h > ($this->PageBreakTrigger - $this->y0)) { + $this->SetCol($this->NbCol - 1); + } + + // PAGEBREAK + // 'If' below used in order to fix "first-line of other page with justify on" bug + if (!$is_table && ($this->y + $check_h) > $this->PageBreakTrigger and ! $this->InFooter and $this->AcceptPageBreak()) { + $bak_x = $this->x; // Current X position + // WORD SPACING + $ws = $this->ws; // Word Spacing + $charspacing = $this->charspacing; // Character Spacing + $this->ResetSpacing(); + + $this->AddPage($this->CurOrientation); + + $this->x = $bak_x; + // Added to correct for OddEven Margins + $currentx += $this->MarginCorrection; + $this->x += $this->MarginCorrection; + + // WORD SPACING + $this->SetSpacing($charspacing, $ws); + } + + if ($this->kwt && !$is_table) { // mPDF 5.7+ + $this->printkwtbuffer(); + $this->kwt = false; + } + + + /* -- COLUMNS -- */ + // COLS + // COLUMN CHANGE + if ($this->CurrCol != $oldcolumn) { + $currentx += $this->ChangeColumn * ($this->ColWidth + $this->ColGap); + $this->x += $this->ChangeColumn * ($this->ColWidth + $this->ColGap); + $oldcolumn = $this->CurrCol; + } + + if ($this->ColActive && !$is_table) { + $this->breakpoints[$this->CurrCol][] = $this->y; + } // *COLUMNS* + /* -- END COLUMNS -- */ + + // TOP MARGIN + if (($newblock) && ($blockstate == 1 || $blockstate == 3) && ($this->blk[$this->blklvl]['margin_top']) && ($lineCount == 1) && (!$is_table)) { + $this->DivLn($this->blk[$this->blklvl]['margin_top'], $this->blklvl - 1, true, $this->blk[$this->blklvl]['margin_collapse']); + if ($this->ColActive) { + $this->breakpoints[$this->CurrCol][] = $this->y; + } // *COLUMNS* + } + + + // Update y0 for top of block (used to paint border) + if (($newblock) && ($blockstate == 1 || $blockstate == 3) && ($lineCount == 1) && (!$is_table)) { + $this->blk[$this->blklvl]['y0'] = $this->y; + $this->blk[$this->blklvl]['startpage'] = $this->page; + if ($this->blk[$this->blklvl]['float']) { + $this->blk[$this->blklvl]['float_start_y'] = $this->y; + } + } + + // TOP PADDING and BORDER spacing/fill + if (($newblock) && ($blockstate == 1 || $blockstate == 3) && (($this->blk[$this->blklvl]['padding_top']) || ($this->blk[$this->blklvl]['border_top'])) && ($lineCount == 1) && (!$is_table)) { + // $state = 0 normal; 1 top; 2 bottom; 3 top and bottom + $this->DivLn($this->blk[$this->blklvl]['padding_top'] + $this->blk[$this->blklvl]['border_top']['w'], -3, true, false, 1); + if ($this->ColActive) { + $this->breakpoints[$this->CurrCol][] = $this->y; + } // *COLUMNS* + } + + $arraysize = count($chunkorder); + + $margins = ($this->cMarginL + $this->cMarginR) + ($ipaddingL + $ipaddingR + $fpaddingR + $fpaddingR ); + + // PAINT BACKGROUND FOR THIS LINE + if (!$is_table) { + $this->DivLn($stackHeight, $this->blklvl, false); + } // false -> don't advance y + + $this->x = $currentx + $this->cMarginL + $ipaddingL + $fpaddingL; + if ($align == 'R') { + $this->x += $empty; + } elseif ($align == 'C') { + $this->x += ($empty / 2); + } + + // Paragraph INDENT + if (isset($this->blk[$this->blklvl]['text_indent']) && ($newblock) && ($blockstate == 1 || $blockstate == 3) && ($lineCount == 1) && (!$is_table) && ($blockdir != 'rtl') && ($align != 'C')) { + $ti = $this->sizeConverter->convert($this->blk[$this->blklvl]['text_indent'], $this->blk[$this->blklvl]['inner_width'], $this->blk[$this->blklvl]['InlineProperties']['size'], false); // mPDF 5.7.4 + $this->x += $ti; + } + + // BIDI magic_reverse moved upwards from here + foreach ($chunkorder as $aord => $k) { // mPDF 5.7 + + $chunk = isset($content[$aord]) ? $content[$aord] : ''; + + if (isset($this->objectbuffer[$k]) && $this->objectbuffer[$k]) { + $xadj = $this->x - $this->objectbuffer[$k]['OUTER-X']; + $this->objectbuffer[$k]['OUTER-X'] += $xadj; + $this->objectbuffer[$k]['BORDER-X'] += $xadj; + $this->objectbuffer[$k]['INNER-X'] += $xadj; + + if ($this->objectbuffer[$k]['type'] == 'listmarker') { + $this->objectbuffer[$k]['lineBox'] = $lineBox[-1]; // Block element details for glyph-origin + } + $yadj = $this->y - $this->objectbuffer[$k]['OUTER-Y']; + if ($this->objectbuffer[$k]['type'] == 'dottab') { // mPDF 6 DOTTAB + $this->objectbuffer[$k]['lineBox'] = $lineBox[$k]; // element details for glyph-origin + } + if ($this->objectbuffer[$k]['type'] != 'dottab') { // mPDF 6 DOTTAB + $yadj += $lineBox[$k]['top']; + } + $this->objectbuffer[$k]['OUTER-Y'] += $yadj; + $this->objectbuffer[$k]['BORDER-Y'] += $yadj; + $this->objectbuffer[$k]['INNER-Y'] += $yadj; + } + + $this->restoreFont($font[$k]); // mPDF 5.7 + + $this->SetSpacing(($this->fixedlSpacing * Mpdf::SCALE) + $jcharspacing, ($this->fixedlSpacing + $this->minwSpacing) * Mpdf::SCALE + $jws); + // Now unset these values so they don't influence GetStringwidth below or in fn. Cell + $this->fixedlSpacing = false; + $this->minwSpacing = 0; + + $save_vis = $this->visibility; + if (isset($this->textparam['visibility']) && $this->textparam['visibility'] && $this->textparam['visibility'] != $this->visibility) { + $this->SetVisibility($this->textparam['visibility']); + } + // *********** SPAN BACKGROUND COLOR ***************** // + if ($this->spanbgcolor) { + $cor = $this->spanbgcolorarray; + $this->SetFColor($cor); + $save_fill = $fill; + $spanfill = 1; + $fill = 1; + } + if (!empty($this->spanborddet)) { + if (strpos($contentB[$k], 'L') !== false) { + $this->x += (isset($this->spanborddet['L']['w']) ? $this->spanborddet['L']['w'] : 0); + } + if (strpos($contentB[$k], 'L') === false) { + $this->spanborddet['L']['s'] = $this->spanborddet['L']['w'] = 0; + } + if (strpos($contentB[$k], 'R') === false) { + $this->spanborddet['R']['s'] = $this->spanborddet['R']['w'] = 0; + } + } + + // WORD SPACING + // StringWidth this time includes any kashida spacing + $stringWidth = $this->GetStringWidth($chunk, true, (isset($cOTLdata[$aord]) ? $cOTLdata[$aord] : false), $this->textvar, true); + + $nch = mb_strlen($chunk, $this->mb_enc); + // Use GPOS OTL + if (isset($this->CurrentFont['useOTL']) && ($this->CurrentFont['useOTL'] & 0xFF)) { + if (isset($cOTLdata[$aord]['group']) && $cOTLdata[$aord]['group']) { + $nch -= substr_count($cOTLdata[$aord]['group'], 'M'); + } + } + $stringWidth += ( $this->charspacing * $nch / Mpdf::SCALE ); + + $stringWidth += ( $this->ws * mb_substr_count($chunk, ' ', $this->mb_enc) / Mpdf::SCALE ); + + if (isset($this->objectbuffer[$k])) { + // LIST MARKERS // mPDF 6 Lists + if ($this->objectbuffer[$k]['type'] == 'image' && isset($this->objectbuffer[$k]['listmarker']) && $this->objectbuffer[$k]['listmarker'] && $this->objectbuffer[$k]['listmarkerposition'] == 'outside') { + $stringWidth = 0; + } else { + $stringWidth = $this->objectbuffer[$k]['OUTER-WIDTH']; + } + } + + if ($stringWidth == 0) { + $stringWidth = 0.000001; + } + + if ($aord == $arraysize - 1) { + $stringWidth -= ( $this->charspacing / Mpdf::SCALE ); + if ($this->checkCJK && $CJKoverflow && $align == 'J' && $this->allowCJKoverflow && $hanger && $this->CJKforceend) { + // force-end overhang + $this->Cell($stringWidth, $stackHeight, $chunk, '', 0, '', $fill, $this->HREF, $currentx, 0, 0, 'M', $fill, true, (isset($cOTLdata[$aord]) ? $cOTLdata[$aord] : false), $this->textvar, (isset($lineBox[$k]) ? $lineBox[$k] : false)); + $this->Cell($this->GetStringWidth($hanger), $stackHeight, $hanger, '', 1, '', $fill, $this->HREF, $currentx, 0, 0, 'M', $fill, true, (isset($cOTLdata[$aord]) ? $cOTLdata[$aord] : false), $this->textvar, (isset($lineBox[$k]) ? $lineBox[$k] : false)); + } else { + $this->Cell($stringWidth, $stackHeight, $chunk, '', 1, '', $fill, $this->HREF, $currentx, 0, 0, 'M', $fill, true, (isset($cOTLdata[$aord]) ? $cOTLdata[$aord] : false), $this->textvar, (isset($lineBox[$k]) ? $lineBox[$k] : false)); // mono-style line or last part (skips line) + } + } else { + $this->Cell($stringWidth, $stackHeight, $chunk, '', 0, '', $fill, $this->HREF, 0, 0, 0, 'M', $fill, true, (isset($cOTLdata[$aord]) ? $cOTLdata[$aord] : false), $this->textvar, (isset($lineBox[$k]) ? $lineBox[$k] : false)); // first or middle part + } + + if (!empty($this->spanborddet)) { + if (strpos($contentB[$k], 'R') !== false && $aord != $arraysize - 1) { + $this->x += $this->spanborddet['R']['w']; + } + } + // *********** SPAN BACKGROUND COLOR OFF - RESET BLOCK BGCOLOR ***************** // + if (isset($spanfill) && $spanfill) { + $fill = $save_fill; + $spanfill = 0; + if ($fill) { + $this->SetFColor($bcor); + } + } + if (isset($this->textparam['visibility']) && $this->textparam['visibility'] && $this->visibility != $save_vis) { + $this->SetVisibility($save_vis); + } + } + } elseif ($table_draft) { + $this->y += $stackHeight; + } + + if (!$is_table) { + $this->maxPosR = max($this->maxPosR, ($this->w - $this->rMargin - $this->blk[$this->blklvl]['outer_right_margin'])); + $this->maxPosL = min($this->maxPosL, ($this->lMargin + $this->blk[$this->blklvl]['outer_left_margin'])); + } + + // move on to the next line, reset variables, tack on saved content and current char + + if (!$table_draft) { + $this->printobjectbuffer($is_table, $blockdir); + } + $this->objectbuffer = []; + + + /* -- CSS-IMAGE-FLOAT -- */ + // Update values if set to skipline + if ($this->floatmargins) { + $this->_advanceFloatMargins(); + } + /* -- END CSS-IMAGE-FLOAT -- */ + + // Reset lineheight + $stackHeight = $this->divheight; + $valign = 'M'; + + $font = []; + $content = []; + $contentB = []; + $cOTLdata = []; // mPDF 5.7.1 + $contentWidth = 0; + if (!empty($savedObj)) { + $this->objectbuffer[] = $savedObj; + $font[] = $savedFont; + $content[] = ''; + $contentB[] = ''; + $cOTLdata[] = []; // mPDF 5.7.1 + $contentWidth += $savedObj['OUTER-WIDTH'] * Mpdf::SCALE; + } + if (count($savedPreContent) > 0) { + for ($ix = count($savedPreContent) - 1; $ix >= 0; $ix--) { + $font[] = $savedPreFont[$ix]; + $content[] = $savedPreContent[$ix]; + $contentB[] = $savedPreContentB[$ix]; + if (!empty($sOTLdata)) { + $cOTLdata[] = $savedPreOTLdata[$ix]; + } + $this->restoreFont($savedPreFont[$ix]); + $lbw = $rbw = 0; // Border widths + if (!empty($this->spanborddet)) { + $lbw = (isset($this->spanborddet['L']['w']) ? $this->spanborddet['L']['w'] : 0); + $rbw = (isset($this->spanborddet['R']['w']) ? $this->spanborddet['R']['w'] : 0); + } + if ($ix > 0) { + $contentWidth += $this->GetStringWidth($savedPreContent[$ix], true, (isset($savedPreOTLdata[$ix]) ? $savedPreOTLdata[$ix] : false), $this->textvar) * Mpdf::SCALE; // mPDF 5.7.1 + if (strpos($savedPreContentB[$ix], 'L') !== false) { + $contentWidth += $lbw; + } + if (strpos($savedPreContentB[$ix], 'R') !== false) { + $contentWidth += $rbw; + } + } + } + $savedPreContent = []; + $savedPreContentB = []; + $savedPreOTLdata = []; // mPDF 5.7.1 + $savedPreFont = []; + $content[(count($content) - 1)] .= $c; + } else { + $font[] = $savedFont; + $content[] = $savedContent . $c; + $contentB[] = $savedContentB; + $cOTLdata[] = $savedOTLdata; // mPDF 5.7.1 + } + + $currContent = & $content[(count($content) - 1)]; + $this->restoreFont($font[(count($font) - 1)]); // mPDF 6.0 + + /* -- CJK-FONTS -- */ + // CJK - strip CJK space at start of line + //   = \xe3\x80\x80 = CJK space + if ($this->checkCJK && $currContent == "\xe3\x80\x80") { + $currContent = ''; + if (isset($this->CurrentFont['useOTL']) && $this->CurrentFont['useOTL']) { + $this->otl->trimOTLdata($cOTLdata[count($cOTLdata) - 1], true, false); // left trim U+3000 + } + } + /* -- END CJK-FONTS -- */ + + $lbw = $rbw = 0; // Border widths + if (!empty($this->spanborddet)) { + $lbw = (isset($this->spanborddet['L']['w']) ? $this->spanborddet['L']['w'] : 0); + $rbw = (isset($this->spanborddet['R']['w']) ? $this->spanborddet['R']['w'] : 0); + } + + $contentWidth += $this->GetStringWidth($currContent, false, (isset($cOTLdata[(count($cOTLdata) - 1)]) ? $cOTLdata[(count($cOTLdata) - 1)] : false), $this->textvar) * Mpdf::SCALE; // mPDF 5.7.1 + if (strpos($savedContentB, 'L') !== false) { + $contentWidth += $lbw; + } + $CJKoverflow = false; + $hanger = ''; + } // another character will fit, so add it on + else { + $contentWidth += $cw; + $currContent .= $c; + } + } + + unset($content); + unset($contentB); + } + + // ----------------------END OF FLOWING BLOCK------------------------------------// + + + /* -- CSS-IMAGE-FLOAT -- */ + // Update values if set to skipline + function _advanceFloatMargins() + { + // Update floatmargins - L + if (isset($this->floatmargins['L']) && $this->floatmargins['L']['skipline'] && $this->floatmargins['L']['y0'] != $this->y) { + $yadj = $this->y - $this->floatmargins['L']['y0']; + $this->floatmargins['L']['y0'] = $this->y; + $this->floatmargins['L']['y1'] += $yadj; + + // Update objattr in floatbuffer + if ($this->floatbuffer[$this->floatmargins['L']['id']]['border_left']['w']) { + $this->floatbuffer[$this->floatmargins['L']['id']]['BORDER-Y'] += $yadj; + } + $this->floatbuffer[$this->floatmargins['L']['id']]['INNER-Y'] += $yadj; + $this->floatbuffer[$this->floatmargins['L']['id']]['OUTER-Y'] += $yadj; + + // Unset values + $this->floatbuffer[$this->floatmargins['L']['id']]['skipline'] = false; + $this->floatmargins['L']['skipline'] = false; + $this->floatmargins['L']['id'] = ''; + } + // Update floatmargins - R + if (isset($this->floatmargins['R']) && $this->floatmargins['R']['skipline'] && $this->floatmargins['R']['y0'] != $this->y) { + $yadj = $this->y - $this->floatmargins['R']['y0']; + $this->floatmargins['R']['y0'] = $this->y; + $this->floatmargins['R']['y1'] += $yadj; + + // Update objattr in floatbuffer + if ($this->floatbuffer[$this->floatmargins['R']['id']]['border_left']['w']) { + $this->floatbuffer[$this->floatmargins['R']['id']]['BORDER-Y'] += $yadj; + } + $this->floatbuffer[$this->floatmargins['R']['id']]['INNER-Y'] += $yadj; + $this->floatbuffer[$this->floatmargins['R']['id']]['OUTER-Y'] += $yadj; + + // Unset values + $this->floatbuffer[$this->floatmargins['R']['id']]['skipline'] = false; + $this->floatmargins['R']['skipline'] = false; + $this->floatmargins['R']['id'] = ''; + } + } + + /* -- END CSS-IMAGE-FLOAT -- */ + + + + /* -- END HTML-CSS -- */ + + function _SetTextRendering($mode) + { + if (!(($mode == 0) || ($mode == 1) || ($mode == 2))) { + throw new \Mpdf\MpdfException("Text rendering mode should be 0, 1 or 2 (value : $mode)"); + } + $tr = ($mode . ' Tr'); + if ($this->page > 0 && ((isset($this->pageoutput[$this->page]['TextRendering']) && $this->pageoutput[$this->page]['TextRendering'] != $tr) || !isset($this->pageoutput[$this->page]['TextRendering']))) { + $this->writer->write($tr); + } + $this->pageoutput[$this->page]['TextRendering'] = $tr; + } + + function SetTextOutline($params = []) + { + if (isset($params['outline-s']) && $params['outline-s']) { + $this->SetLineWidth($params['outline-WIDTH']); + $this->SetDColor($params['outline-COLOR']); + $tr = ('2 Tr'); + if ($this->page > 0 && ((isset($this->pageoutput[$this->page]['TextRendering']) && $this->pageoutput[$this->page]['TextRendering'] != $tr) || !isset($this->pageoutput[$this->page]['TextRendering']))) { + $this->writer->write($tr); + } + $this->pageoutput[$this->page]['TextRendering'] = $tr; + } else { // Now resets all values + $this->SetLineWidth(0.2); + $this->SetDColor($this->colorConverter->convert(0, $this->PDFAXwarnings)); + $this->_SetTextRendering(0); + $tr = ('0 Tr'); + if ($this->page > 0 && ((isset($this->pageoutput[$this->page]['TextRendering']) && $this->pageoutput[$this->page]['TextRendering'] != $tr) || !isset($this->pageoutput[$this->page]['TextRendering']))) { + $this->writer->write($tr); + } + $this->pageoutput[$this->page]['TextRendering'] = $tr; + } + } + + function Image($file, $x, $y, $w = 0, $h = 0, $type = '', $link = '', $paint = true, $constrain = true, $watermark = false, $shownoimg = true, $allowvector = true) + { + $orig_srcpath = $file; + $this->GetFullPath($file); + + $info = $this->imageProcessor->getImage($file, true, $allowvector, $orig_srcpath); + if (!$info && $paint) { + $info = $this->imageProcessor->getImage($this->noImageFile); + if ($info) { + $file = $this->noImageFile; + $w = ($info['w'] * (25.4 / $this->img_dpi)); // 14 x 16px + $h = ($info['h'] * (25.4 / $this->img_dpi)); // 14 x 16px + } + } + if (!$info) { + return false; + } + // Automatic width and height calculation if needed + if ($w == 0 and $h == 0) { + /* -- IMAGES-WMF -- */ + if ($info['type'] == 'wmf') { + // WMF units are twips (1/20pt) + // divide by 20 to get points + // divide by k to get user units + $w = abs($info['w']) / (20 * Mpdf::SCALE); + $h = abs($info['h']) / (20 * Mpdf::SCALE); + } else { /* -- END IMAGES-WMF -- */ + if ($info['type'] == 'svg') { + // returned SVG units are pts + // divide by k to get user units (mm) + $w = abs($info['w']) / Mpdf::SCALE; + $h = abs($info['h']) / Mpdf::SCALE; + } else { + // Put image at default image dpi + $w = ($info['w'] / Mpdf::SCALE) * (72 / $this->img_dpi); + $h = ($info['h'] / Mpdf::SCALE) * (72 / $this->img_dpi); + } + } + } + if ($w == 0) { + $w = abs($h * $info['w'] / $info['h']); + } + if ($h == 0) { + $h = abs($w * $info['h'] / $info['w']); + } + + /* -- WATERMARK -- */ + if ($watermark) { + $maxw = $this->w; + $maxh = $this->h; + // Size = D PF or array + if (is_array($this->watermark_size)) { + $w = $this->watermark_size[0]; + $h = $this->watermark_size[1]; + } elseif (!is_string($this->watermark_size)) { + $maxw -= $this->watermark_size * 2; + $maxh -= $this->watermark_size * 2; + $w = $maxw; + $h = abs($w * $info['h'] / $info['w']); + if ($h > $maxh) { + $h = $maxh; + $w = abs($h * $info['w'] / $info['h']); + } + } elseif ($this->watermark_size == 'F') { + if ($this->ColActive) { + $maxw = $this->w - ($this->DeflMargin + $this->DefrMargin); + } else { + $maxw = $this->pgwidth; + } + $maxh = $this->h - ($this->tMargin + $this->bMargin); + $w = $maxw; + $h = abs($w * $info['h'] / $info['w']); + if ($h > $maxh) { + $h = $maxh; + $w = abs($h * $info['w'] / $info['h']); + } + } elseif ($this->watermark_size == 'P') { // Default P + $w = $maxw; + $h = abs($w * $info['h'] / $info['w']); + if ($h > $maxh) { + $h = $maxh; + $w = abs($h * $info['w'] / $info['h']); + } + } + // Automatically resize to maximum dimensions of page if too large + if ($w > $maxw) { + $w = $maxw; + $h = abs($w * $info['h'] / $info['w']); + } + if ($h > $maxh) { + $h = $maxh; + $w = abs($h * $info['w'] / $info['h']); + } + // Position + if (is_array($this->watermark_pos)) { + $x = $this->watermark_pos[0]; + $y = $this->watermark_pos[1]; + } elseif ($this->watermark_pos == 'F') { // centred on printable area + if ($this->ColActive) { // *COLUMNS* + if (($this->mirrorMargins) && (($this->page) % 2 == 0)) { + $xadj = $this->DeflMargin - $this->DefrMargin; + } // *COLUMNS* + else { + $xadj = 0; + } // *COLUMNS* + $x = ($this->DeflMargin - $xadj + ($this->w - ($this->DeflMargin + $this->DefrMargin)) / 2) - ($w / 2); // *COLUMNS* + } // *COLUMNS* + else { // *COLUMNS* + $x = ($this->lMargin + ($this->pgwidth) / 2) - ($w / 2); + } // *COLUMNS* + $y = ($this->tMargin + ($this->h - ($this->tMargin + $this->bMargin)) / 2) - ($h / 2); + } else { // default P - centred on whole page + $x = ($this->w / 2) - ($w / 2); + $y = ($this->h / 2) - ($h / 2); + } + /* -- IMAGES-WMF -- */ + if ($info['type'] == 'wmf') { + $sx = $w * Mpdf::SCALE / $info['w']; + $sy = -$h * Mpdf::SCALE / $info['h']; + $outstring = sprintf('q %.3F 0 0 %.3F %.3F %.3F cm /FO%d Do Q', $sx, $sy, $x * Mpdf::SCALE - $sx * $info['x'], (($this->h - $y) * Mpdf::SCALE) - $sy * $info['y'], $info['i']); + } else { /* -- END IMAGES-WMF -- */ + if ($info['type'] == 'svg') { + $sx = $w * Mpdf::SCALE / $info['w']; + $sy = -$h * Mpdf::SCALE / $info['h']; + $outstring = sprintf('q %.3F 0 0 %.3F %.3F %.3F cm /FO%d Do Q', $sx, $sy, $x * Mpdf::SCALE - $sx * $info['x'], (($this->h - $y) * Mpdf::SCALE) - $sy * $info['y'], $info['i']); + } else { + $outstring = sprintf("q %.3F 0 0 %.3F %.3F %.3F cm /I%d Do Q", $w * Mpdf::SCALE, $h * Mpdf::SCALE, $x * Mpdf::SCALE, ($this->h - ($y + $h)) * Mpdf::SCALE, $info['i']); + } + } + + if ($this->watermarkImgBehind) { + $outstring = $this->watermarkImgAlpha . "\n" . $outstring . "\n" . $this->SetAlpha(1, 'Normal', true) . "\n"; + $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS' . $this->uniqstr . ')/', "\n" . $outstring . "\n" . '\\1', $this->pages[$this->page]); + } else { + $this->writer->write($outstring); + } + + return 0; + } // end of IF watermark + /* -- END WATERMARK -- */ + + if ($constrain) { + // Automatically resize to maximum dimensions of page if too large + if (isset($this->blk[$this->blklvl]['inner_width']) && $this->blk[$this->blklvl]['inner_width']) { + $maxw = $this->blk[$this->blklvl]['inner_width']; + } else { + $maxw = $this->pgwidth; + } + if ($w > $maxw) { + $w = $maxw; + $h = abs($w * $info['h'] / $info['w']); + } + if ($h > $this->h - ($this->tMargin + $this->bMargin + 1)) { // see below - +10 to avoid drawing too close to border of page + $h = $this->h - ($this->tMargin + $this->bMargin + 1); + if ($this->fullImageHeight) { + $h = $this->fullImageHeight; + } + $w = abs($h * $info['w'] / $info['h']); + } + + + // Avoid drawing out of the paper(exceeding width limits). + // if ( ($x + $w) > $this->fw ) { + if (($x + $w) > $this->w) { + $x = $this->lMargin; + $y += 5; + } + + $changedpage = false; + $oldcolumn = $this->CurrCol; + // Avoid drawing out of the page. + if ($y + $h > $this->PageBreakTrigger and ! $this->InFooter and $this->AcceptPageBreak()) { + $this->AddPage($this->CurOrientation); + // Added to correct for OddEven Margins + $x = $x + $this->MarginCorrection; + $y = $this->tMargin; // mPDF 5.7.3 + $changedpage = true; + } + /* -- COLUMNS -- */ + // COLS + // COLUMN CHANGE + if ($this->CurrCol != $oldcolumn) { + $y = $this->y0; + $x += $this->ChangeColumn * ($this->ColWidth + $this->ColGap); + $this->x += $this->ChangeColumn * ($this->ColWidth + $this->ColGap); + } + /* -- END COLUMNS -- */ + } // end of IF constrain + + /* -- IMAGES-WMF -- */ + if ($info['type'] == 'wmf') { + $sx = $w * Mpdf::SCALE / $info['w']; + $sy = -$h * Mpdf::SCALE / $info['h']; + $outstring = sprintf('q %.3F 0 0 %.3F %.3F %.3F cm /FO%d Do Q', $sx, $sy, $x * Mpdf::SCALE - $sx * $info['x'], (($this->h - $y) * Mpdf::SCALE) - $sy * $info['y'], $info['i']); + } else { /* -- END IMAGES-WMF -- */ + if ($info['type'] == 'svg') { + $sx = $w * Mpdf::SCALE / $info['w']; + $sy = -$h * Mpdf::SCALE / $info['h']; + $outstring = sprintf('q %.3F 0 0 %.3F %.3F %.3F cm /FO%d Do Q', $sx, $sy, $x * Mpdf::SCALE - $sx * $info['x'], (($this->h - $y) * Mpdf::SCALE) - $sy * $info['y'], $info['i']); + } else { + $outstring = sprintf("q %.3F 0 0 %.3F %.3F %.3F cm /I%d Do Q", $w * Mpdf::SCALE, $h * Mpdf::SCALE, $x * Mpdf::SCALE, ($this->h - ($y + $h)) * Mpdf::SCALE, $info['i']); + } + } + + if ($paint) { + $this->writer->write($outstring); + if ($link) { + $this->Link($x, $y, $w, $h, $link); + } + + // Avoid writing text on top of the image. // THIS WAS OUTSIDE THE if ($paint) bit!!!!!!!!!!!!!!!! + $this->y = $y + $h; + } + + // Return width-height array + $sizesarray['WIDTH'] = $w; + $sizesarray['HEIGHT'] = $h; + $sizesarray['X'] = $x; // Position before painting image + $sizesarray['Y'] = $y; // Position before painting image + $sizesarray['OUTPUT'] = $outstring; + + $sizesarray['IMAGE_ID'] = $info['i']; + $sizesarray['itype'] = $info['type']; + $sizesarray['set-dpi'] = (isset($info['set-dpi']) ? $info['set-dpi'] : 0); + return $sizesarray; + } + + // ============================================================= + // ============================================================= + // ============================================================= + // ============================================================= + // ============================================================= + /* -- HTML-CSS -- */ + + function _getObjAttr($t) + { + $c = explode("\xbb\xa4\xac", $t, 2); + $c = explode(",", $c[1], 2); + foreach ($c as $v) { + $v = explode("=", $v, 2); + $sp[$v[0]] = $v[1]; + } + return (unserialize($sp['objattr'])); + } + + function inlineObject($type, $x, $y, $objattr, $Lmargin, $widthUsed, $maxWidth, $lineHeight, $paint = false, $is_table = false) + { + if ($is_table) { + $k = $this->shrin_k; + } else { + $k = 1; + } + + // NB $x is only used when paint=true + // Lmargin not used + $w = 0; + if (isset($objattr['width'])) { + $w = $objattr['width'] / $k; + } + $h = 0; + if (isset($objattr['height'])) { + $h = abs($objattr['height'] / $k); + } + $widthLeft = $maxWidth - $widthUsed; + $maxHeight = $this->h - ($this->tMargin + $this->bMargin + 10); + if ($this->fullImageHeight) { + $maxHeight = $this->fullImageHeight; + } + // For Images + if (isset($objattr['border_left'])) { + $extraWidth = ($objattr['border_left']['w'] + $objattr['border_right']['w'] + $objattr['margin_left'] + $objattr['margin_right']) / $k; + $extraHeight = ($objattr['border_top']['w'] + $objattr['border_bottom']['w'] + $objattr['margin_top'] + $objattr['margin_bottom']) / $k; + + if ($type == 'image' || $type == 'barcode' || $type == 'textcircle') { + $extraWidth += ($objattr['padding_left'] + $objattr['padding_right']) / $k; + $extraHeight += ($objattr['padding_top'] + $objattr['padding_bottom']) / $k; + } + } + + if (!isset($objattr['vertical-align'])) { + if ($objattr['type'] == 'select') { + $objattr['vertical-align'] = 'M'; + } else { + $objattr['vertical-align'] = 'BS'; + } + } // mPDF 6 + + if ($type == 'image' || (isset($objattr['subtype']) && $objattr['subtype'] == 'IMAGE')) { + if (isset($objattr['itype']) && ($objattr['itype'] == 'wmf' || $objattr['itype'] == 'svg')) { + $file = $objattr['file']; + $info = $this->formobjects[$file]; + } elseif (isset($objattr['file'])) { + $file = $objattr['file']; + $info = $this->images[$file]; + } + } + if ($type == 'annot' || $type == 'bookmark' || $type == 'indexentry' || $type == 'toc') { + $w = 0.00001; + $h = 0.00001; + } + + // TEST whether need to skipline + if (!$paint) { + if ($type == 'hr') { // always force new line + if (($y + $h + $lineHeight > $this->PageBreakTrigger) && !$this->InFooter && !$is_table) { + return [-2, $w, $h]; + } // New page + new line + else { + return [1, $w, $h]; + } // new line + } else { + // LIST MARKERS // mPDF 6 Lists + $displayheight = $h; + $displaywidth = $w; + if ($objattr['type'] == 'image' && isset($objattr['listmarker']) && $objattr['listmarker']) { + $displayheight = 0; + if ($objattr['listmarkerposition'] == 'outside') { + $displaywidth = 0; + } + } + + if ($widthUsed > 0 && $displaywidth > $widthLeft && (!$is_table || $type != 'image')) { // New line needed + // mPDF 6 Lists + if (($y + $displayheight + $lineHeight > $this->PageBreakTrigger) && !$this->InFooter) { + return [-2, $w, $h]; + } // New page + new line + return [1, $w, $h]; // new line + } elseif ($widthUsed > 0 && $displaywidth > $widthLeft && $is_table) { // New line needed in TABLE + return [1, $w, $h]; // new line + } // Will fit on line but NEW PAGE REQUIRED + elseif (($y + $displayheight > $this->PageBreakTrigger) && !$this->InFooter && !$is_table) { + return [-1, $w, $h]; + } // mPDF 6 Lists + else { + return [0, $w, $h]; + } + } + } + + if ($type == 'annot' || $type == 'bookmark' || $type == 'indexentry' || $type == 'toc') { + $w = 0.00001; + $h = 0.00001; + $objattr['BORDER-WIDTH'] = 0; + $objattr['BORDER-HEIGHT'] = 0; + $objattr['BORDER-X'] = $x; + $objattr['BORDER-Y'] = $y; + $objattr['INNER-WIDTH'] = 0; + $objattr['INNER-HEIGHT'] = 0; + $objattr['INNER-X'] = $x; + $objattr['INNER-Y'] = $y; + } + + if ($type == 'image') { + // Automatically resize to width remaining + if ($w > ($widthLeft + 0.0001) && !$is_table) { // mPDF 5.7.4 0.0001 to allow for rounding errors when w==maxWidth + $w = $widthLeft; + $h = abs($w * $info['h'] / $info['w']); + } + $img_w = $w - $extraWidth; + $img_h = $h - $extraHeight; + + $objattr['BORDER-WIDTH'] = $img_w + $objattr['padding_left'] / $k + $objattr['padding_right'] / $k + (($objattr['border_left']['w'] / $k + $objattr['border_right']['w'] / $k) / 2); + $objattr['BORDER-HEIGHT'] = $img_h + $objattr['padding_top'] / $k + $objattr['padding_bottom'] / $k + (($objattr['border_top']['w'] / $k + $objattr['border_bottom']['w'] / $k) / 2); + $objattr['BORDER-X'] = $x + $objattr['margin_left'] / $k + (($objattr['border_left']['w'] / $k) / 2); + $objattr['BORDER-Y'] = $y + $objattr['margin_top'] / $k + (($objattr['border_top']['w'] / $k) / 2); + $objattr['INNER-WIDTH'] = $img_w; + $objattr['INNER-HEIGHT'] = $img_h; + $objattr['INNER-X'] = $x + $objattr['padding_left'] / $k + $objattr['margin_left'] / $k + ($objattr['border_left']['w'] / $k); + $objattr['INNER-Y'] = $y + $objattr['padding_top'] / $k + $objattr['margin_top'] / $k + ($objattr['border_top']['w'] / $k); + $objattr['ID'] = $info['i']; + } + + if ($type == 'input' && $objattr['subtype'] == 'IMAGE') { + $img_w = $w - $extraWidth; + $img_h = $h - $extraHeight; + $objattr['BORDER-WIDTH'] = $img_w + (($objattr['border_left']['w'] / $k + $objattr['border_right']['w'] / $k) / 2); + $objattr['BORDER-HEIGHT'] = $img_h + (($objattr['border_top']['w'] / $k + $objattr['border_bottom']['w'] / $k) / 2); + $objattr['BORDER-X'] = $x + $objattr['margin_left'] / $k + (($objattr['border_left']['w'] / $k) / 2); + $objattr['BORDER-Y'] = $y + $objattr['margin_top'] / $k + (($objattr['border_top']['w'] / $k) / 2); + $objattr['INNER-WIDTH'] = $img_w; + $objattr['INNER-HEIGHT'] = $img_h; + $objattr['INNER-X'] = $x + $objattr['margin_left'] / $k + ($objattr['border_left']['w'] / $k); + $objattr['INNER-Y'] = $y + $objattr['margin_top'] / $k + ($objattr['border_top']['w'] / $k); + $objattr['ID'] = $info['i']; + } + + if ($type == 'barcode' || $type == 'textcircle') { + $b_w = $w - $extraWidth; + $b_h = $h - $extraHeight; + $objattr['BORDER-WIDTH'] = $b_w + $objattr['padding_left'] / $k + $objattr['padding_right'] / $k + (($objattr['border_left']['w'] / $k + $objattr['border_right']['w'] / $k) / 2); + $objattr['BORDER-HEIGHT'] = $b_h + $objattr['padding_top'] / $k + $objattr['padding_bottom'] / $k + (($objattr['border_top']['w'] / $k + $objattr['border_bottom']['w'] / $k) / 2); + $objattr['BORDER-X'] = $x + $objattr['margin_left'] / $k + (($objattr['border_left']['w'] / $k) / 2); + $objattr['BORDER-Y'] = $y + $objattr['margin_top'] / $k + (($objattr['border_top']['w'] / $k) / 2); + $objattr['INNER-X'] = $x + $objattr['padding_left'] / $k + $objattr['margin_left'] / $k + ($objattr['border_left']['w'] / $k); + $objattr['INNER-Y'] = $y + $objattr['padding_top'] / $k + $objattr['margin_top'] / $k + ($objattr['border_top']['w'] / $k); + $objattr['INNER-WIDTH'] = $b_w; + $objattr['INNER-HEIGHT'] = $b_h; + } + + + if ($type == 'textarea') { + // Automatically resize to width remaining + if ($w > $widthLeft && !$is_table) { + $w = $widthLeft; + } + // This used to resize height to maximum remaining on page ? why. Causes problems when in table and causing a new column + // if (($y + $h > $this->PageBreakTrigger) && !$this->InFooter) { + // $h=$this->h - $y - $this->bMargin; + // } + } + + if ($type == 'hr') { + if ($is_table) { + $objattr['INNER-WIDTH'] = $maxWidth * $objattr['W-PERCENT'] / 100; + $objattr['width'] = $objattr['INNER-WIDTH']; + $w = $maxWidth; + } else { + if ($w > $maxWidth) { + $w = $maxWidth; + } + $objattr['INNER-WIDTH'] = $w; + $w = $maxWidth; + } + } + + + + if (($type == 'select') || ($type == 'input' && ($objattr['subtype'] == 'TEXT' || $objattr['subtype'] == 'PASSWORD'))) { + // Automatically resize to width remaining + if ($w > $widthLeft && !$is_table) { + $w = $widthLeft; + } + } + + if ($type == 'textarea' || $type == 'select' || $type == 'input') { + if (isset($objattr['fontsize'])) { + $objattr['fontsize'] /= $k; + } + if (isset($objattr['linewidth'])) { + $objattr['linewidth'] /= $k; + } + } + + if (!isset($objattr['BORDER-Y'])) { + $objattr['BORDER-Y'] = 0; + } + if (!isset($objattr['BORDER-X'])) { + $objattr['BORDER-X'] = 0; + } + if (!isset($objattr['INNER-Y'])) { + $objattr['INNER-Y'] = 0; + } + if (!isset($objattr['INNER-X'])) { + $objattr['INNER-X'] = 0; + } + + // Return width-height array + $objattr['OUTER-WIDTH'] = $w; + $objattr['OUTER-HEIGHT'] = $h; + $objattr['OUTER-X'] = $x; + $objattr['OUTER-Y'] = $y; + return $objattr; + } + + /* -- END HTML-CSS -- */ + + // ============================================================= + // ============================================================= + // ============================================================= + // ============================================================= + // ============================================================= + + function SetLineJoin($mode = 0) + { + $s = sprintf('%d j', $mode); + if ($this->page > 0 && ((isset($this->pageoutput[$this->page]['LineJoin']) && $this->pageoutput[$this->page]['LineJoin'] != $s) || !isset($this->pageoutput[$this->page]['LineJoin']))) { + $this->writer->write($s); + } + $this->pageoutput[$this->page]['LineJoin'] = $s; + } + + function SetLineCap($mode = 2) + { + $s = sprintf('%d J', $mode); + if ($this->page > 0 && ((isset($this->pageoutput[$this->page]['LineCap']) && $this->pageoutput[$this->page]['LineCap'] != $s) || !isset($this->pageoutput[$this->page]['LineCap']))) { + $this->writer->write($s); + } + $this->pageoutput[$this->page]['LineCap'] = $s; + } + + function SetDash($black = false, $white = false) + { + if ($black and $white) { + $s = sprintf('[%.3F %.3F] 0 d', $black * Mpdf::SCALE, $white * Mpdf::SCALE); + } else { + $s = '[] 0 d'; + } + if ($this->page > 0 && ((isset($this->pageoutput[$this->page]['Dash']) && $this->pageoutput[$this->page]['Dash'] != $s) || !isset($this->pageoutput[$this->page]['Dash']))) { + $this->writer->write($s); + } + $this->pageoutput[$this->page]['Dash'] = $s; + } + + function SetDisplayPreferences($preferences) + { + // String containing any or none of /HideMenubar/HideToolbar/HideWindowUI/DisplayDocTitle/CenterWindow/FitWindow + $this->DisplayPreferences .= $preferences; + } + + function Ln($h = '', $collapsible = 0) + { + // Added collapsible to allow collapsible top-margin on new page + // Line feed; default value is last cell height + $this->x = $this->lMargin + $this->blk[$this->blklvl]['outer_left_margin']; + if ($collapsible && ($this->y == $this->tMargin) && (!$this->ColActive)) { + $h = 0; + } + if (is_string($h)) { + $this->y+=$this->lasth; + } else { + $this->y+=$h; + } + } + + /* -- HTML-CSS -- */ + + function DivLn($h, $level = -3, $move_y = true, $collapsible = false, $state = 0) + { + // $state = 0 normal; 1 top; 2 bottom; 3 top and bottom + // Used in Columns and keep-with-table i.e. "kwt" + // writes background block by block so it can be repositioned + // and also used in writingFlowingBlock at top and bottom of blocks to move y (not to draw/paint anything) + // adds lines (y) where DIV bgcolors are filled in + // this->x is returned as it was + // allows .00001 as nominal height used for bookmarks/annotations etc. + if ($collapsible && (sprintf("%0.4f", $this->y) == sprintf("%0.4f", $this->tMargin)) && (!$this->ColActive)) { + return; + } + + // mPDF 6 Columns + // if ($collapsible && (sprintf("%0.4f", $this->y)==sprintf("%0.4f", $this->y0)) && ($this->ColActive) && $this->CurrCol == 0) { return; } // *COLUMNS* + if ($collapsible && (sprintf("%0.4f", $this->y) == sprintf("%0.4f", $this->y0)) && ($this->ColActive)) { + return; + } // *COLUMNS* + // Still use this method if columns or keep-with-table, as it allows repositioning later + // otherwise, now uses PaintDivBB() + if (!$this->ColActive && !$this->kwt) { + if ($move_y && !$this->ColActive) { + $this->y += $h; + } + return; + } + + if ($level == -3) { + $level = $this->blklvl; + } + $firstblockfill = $this->GetFirstBlockFill(); + if ($firstblockfill && $this->blklvl > 0 && $this->blklvl >= $firstblockfill) { + $last_x = 0; + $last_w = 0; + $last_fc = $this->FillColor; + $bak_x = $this->x; + $bak_h = $this->divheight; + $this->divheight = 0; // Temporarily turn off divheight - as Cell() uses it to check for PageBreak + for ($blvl = $firstblockfill; $blvl <= $level; $blvl++) { + $this->x = $this->lMargin + $this->blk[$blvl]['outer_left_margin']; + // mPDF 6 + if ($this->blk[$blvl]['bgcolor']) { + $this->SetFColor($this->blk[$blvl]['bgcolorarray']); + } + if ($last_x != ($this->lMargin + $this->blk[$blvl]['outer_left_margin']) || ($last_w != $this->blk[$blvl]['width']) || $last_fc != $this->FillColor || (isset($this->blk[$blvl]['border_top']['s']) && $this->blk[$blvl]['border_top']['s']) || (isset($this->blk[$blvl]['border_bottom']['s']) && $this->blk[$blvl]['border_bottom']['s']) || (isset($this->blk[$blvl]['border_left']['s']) && $this->blk[$blvl]['border_left']['s']) || (isset($this->blk[$blvl]['border_right']['s']) && $this->blk[$blvl]['border_right']['s'])) { + $x = $this->x; + $this->Cell(($this->blk[$blvl]['width']), $h, '', '', 0, '', 1); + $this->x = $x; + if (!$this->keep_block_together && !$this->writingHTMLheader && !$this->writingHTMLfooter) { + // $state = 0 normal; 1 top; 2 bottom; 3 top and bottom + if ($blvl == $this->blklvl) { + $this->PaintDivLnBorder($state, $blvl, $h); + } else { + $this->PaintDivLnBorder(0, $blvl, $h); + } + } + } + $last_x = $this->lMargin + $this->blk[$blvl]['outer_left_margin']; + $last_w = $this->blk[$blvl]['width']; + $last_fc = $this->FillColor; + } + // Reset current block fill + if (isset($this->blk[$this->blklvl]['bgcolorarray'])) { + $bcor = $this->blk[$this->blklvl]['bgcolorarray']; + $this->SetFColor($bcor); + } + $this->x = $bak_x; + $this->divheight = $bak_h; + } + if ($move_y) { + $this->y += $h; + } + } + + /* -- END HTML-CSS -- */ + + function SetX($x) + { + // Set x position + if ($x >= 0) { + $this->x = $x; + } else { + $this->x = $this->w + $x; + } + } + + function SetY($y) + { + // Set y position and reset x + $this->x = $this->lMargin; + if ($y >= 0) { + $this->y = $y; + } else { + $this->y = $this->h + $y; + } + } + + function SetXY($x, $y) + { + // Set x and y positions + $this->SetY($y); + $this->SetX($x); + } + + function Output($name = '', $dest = '') + { + $this->logger->debug(sprintf('PDF generated in %.6F seconds', microtime(true) - $this->time0), ['context' => LogContext::STATISTICS]); + + // Finish document if necessary + if ($this->state < 3) { + $this->Close(); + } + + if ($this->debug && error_get_last()) { + $e = error_get_last(); + if (($e['type'] < 2048 && $e['type'] != 8) || (intval($e['type']) & intval(ini_get("error_reporting")))) { + throw new \Mpdf\MpdfException( + sprintf('Error detected. PDF file generation aborted: %s', $e['message']), + $e['type'], + 1, + $e['file'], + $e['line'] + ); + } + } + + if (($this->PDFA || $this->PDFX) && $this->encrypted) { + throw new \Mpdf\MpdfException('PDF/A1-b or PDF/X1-a does not permit encryption of documents.'); + } + + if (count($this->PDFAXwarnings) && (($this->PDFA && !$this->PDFAauto) || ($this->PDFX && !$this->PDFXauto))) { + if ($this->PDFA) { + $standard = 'PDFA/1-b'; + $option = '$mpdf->PDFAauto'; + } else { + $standard = 'PDFX/1-a '; + $option = '$mpdf->PDFXauto'; + } + + $this->logger->warning(sprintf('PDF could not be generated as it stands as a %s compliant file.', $standard), ['context' => LogContext::PDFA_PDFX]); + $this->logger->warning(sprintf('These issues can be automatically fixed by mPDF using %s = true;', $option), ['context' => LogContext::PDFA_PDFX]); + $this->logger->warning(sprintf('Action that mPDF will take to automatically force %s compliance are shown further in the log.', $standard), ['context' => LogContext::PDFA_PDFX]); + + $this->PDFAXwarnings = array_unique($this->PDFAXwarnings); + foreach ($this->PDFAXwarnings as $w) { + $this->logger->warning($w, ['context' => LogContext::PDFA_PDFX]); + } + + throw new \Mpdf\MpdfException('PDFA/PDFX warnings generated. See log for further details'); + } + + $this->logger->debug(sprintf('Compiled in %.6F seconds', microtime(true) - $this->time0), ['context' => LogContext::STATISTICS]); + $this->logger->debug(sprintf('Peak Memory usage %s MB', number_format(memory_get_peak_usage(true) / (1024 * 1024), 2)), ['context' => LogContext::STATISTICS]); + $this->logger->debug(sprintf('PDF file size %s kB', number_format(strlen($this->buffer) / 1024)), ['context' => LogContext::STATISTICS]); + $this->logger->debug(sprintf('%d fonts used', count($this->fonts)), ['context' => LogContext::STATISTICS]); + + if (is_bool($dest)) { + $dest = $dest ? Destination::DOWNLOAD : Destination::FILE; + } + + $dest = strtoupper($dest); + if (empty($dest)) { + if (empty($name)) { + $name = 'mpdf.pdf'; + $dest = Destination::INLINE; + } else { + $dest = Destination::FILE; + } + } + + switch ($dest) { + + case Destination::INLINE: + + if (headers_sent($filename, $line)) { + throw new \Mpdf\MpdfException( + sprintf('Data has already been sent to output (%s at line %s), unable to output PDF file', $filename, $line) + ); + } + + if ($this->debug && !$this->allow_output_buffering && ob_get_contents()) { + throw new \Mpdf\MpdfException('Output has already been sent from the script - PDF file generation aborted.'); + } + + // We send to a browser + if (PHP_SAPI !== 'cli') { + header('Content-Type: application/pdf'); + + if (!isset($_SERVER['HTTP_ACCEPT_ENCODING']) || empty($_SERVER['HTTP_ACCEPT_ENCODING'])) { + // don't use length if server using compression + header('Content-Length: ' . strlen($this->buffer)); + } + + header('Content-disposition: inline; filename="' . $name . '"'); + header('Cache-Control: public, must-revalidate, max-age=0'); + header('Pragma: public'); + header('X-Generator: mPDF' . ($this->exposeVersion ? (' ' . static::VERSION) : '')); + header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); + header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + } + + echo $this->buffer; + + break; + + case Destination::DOWNLOAD: + + if (headers_sent()) { + throw new \Mpdf\MpdfException('Data has already been sent to output, unable to output PDF file'); + } + + header('Content-Description: File Transfer'); + header('Content-Transfer-Encoding: binary'); + header('Cache-Control: public, must-revalidate, max-age=0'); + header('Pragma: public'); + header('X-Generator: mPDF' . ($this->exposeVersion ? (' ' . static::VERSION) : '')); + header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); + header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + header('Content-Type: application/pdf'); + + if (!isset($_SERVER['HTTP_ACCEPT_ENCODING']) || empty($_SERVER['HTTP_ACCEPT_ENCODING'])) { + // don't use length if server using compression + header('Content-Length: ' . strlen($this->buffer)); + } + + header('Content-Disposition: attachment; filename="' . $name . '"'); + + echo $this->buffer; + + break; + + case Destination::FILE: + $f = fopen($name, 'wb'); + + if (!$f) { + throw new \Mpdf\MpdfException(sprintf('Unable to create output file %s', $name)); + } + + fwrite($f, $this->buffer, strlen($this->buffer)); + fclose($f); + + break; + + case Destination::STRING_RETURN: + $this->cache->clearOld(); + return $this->buffer; + + default: + throw new \Mpdf\MpdfException(sprintf('Incorrect output destination %s', $dest)); + } + + $this->cache->clearOld(); + } + + // ***************************************************************************** + // * + // Protected methods * + // * + // ***************************************************************************** + function _dochecks() + { + // Check for locale-related bug + if (1.1 == 1) { + throw new \Mpdf\MpdfException('Do not alter the locale before including mPDF'); + } + + // Check for decimal separator + if (sprintf('%.1f', 1.0) != '1.0') { + setlocale(LC_NUMERIC, 'C'); + } + + if (ini_get('mbstring.func_overload')) { + throw new \Mpdf\MpdfException('Mpdf cannot function properly with mbstring.func_overload enabled'); + } + + if (!function_exists('mb_substr')) { + throw new \Mpdf\MpdfException('mbstring extension must be loaded in order to run mPDF'); + } + } + + function _puthtmlheaders() + { + $this->state = 2; + $nb = $this->page; + for ($n = 1; $n <= $nb; $n++) { + if ($this->mirrorMargins && $n % 2 == 0) { + $OE = 'E'; + } // EVEN + else { + $OE = 'O'; + } + $this->page = $n; + $pn = $this->docPageNum($n); + if ($pn) { + $pnstr = $this->pagenumPrefix . $pn . $this->pagenumSuffix; + } else { + $pnstr = ''; + } + + $pnt = $this->docPageNumTotal($n); + + if ($pnt) { + $pntstr = $this->nbpgPrefix . $pnt . $this->nbpgSuffix; + } else { + $pntstr = ''; + } + + if (isset($this->saveHTMLHeader[$n][$OE])) { + $html = isset($this->saveHTMLHeader[$n][$OE]['html']) ? $this->saveHTMLHeader[$n][$OE]['html'] : ''; + $this->lMargin = $this->saveHTMLHeader[$n][$OE]['ml']; + $this->rMargin = $this->saveHTMLHeader[$n][$OE]['mr']; + $this->tMargin = $this->saveHTMLHeader[$n][$OE]['mh']; + $this->bMargin = $this->saveHTMLHeader[$n][$OE]['mf']; + $this->margin_header = $this->saveHTMLHeader[$n][$OE]['mh']; + $this->margin_footer = $this->saveHTMLHeader[$n][$OE]['mf']; + $this->w = $this->saveHTMLHeader[$n][$OE]['pw']; + $this->h = $this->saveHTMLHeader[$n][$OE]['ph']; + $rotate = (isset($this->saveHTMLHeader[$n][$OE]['rotate']) ? $this->saveHTMLHeader[$n][$OE]['rotate'] : null); + $this->Reset(); + $this->pageoutput[$n] = []; + $this->pgwidth = $this->w - $this->lMargin - $this->rMargin; + $this->x = $this->lMargin; + $this->y = $this->margin_header; + $html = str_replace('{PAGENO}', $pnstr, $html); + $html = str_replace($this->aliasNbPgGp, $pntstr, $html); // {nbpg} + $html = str_replace($this->aliasNbPg, $nb, $html); // {nb} + $html = preg_replace_callback('/\{DATE\s+(.*?)\}/', [$this, 'date_callback'], $html); // mPDF 5.7 + + $this->HTMLheaderPageLinks = []; + $this->HTMLheaderPageAnnots = []; + $this->HTMLheaderPageForms = []; + $this->pageBackgrounds = []; + + $this->writingHTMLheader = true; + $this->WriteHTML($html, HTMLParserMode::HTML_HEADER_BUFFER); + $this->writingHTMLheader = false; + $this->Reset(); + $this->pageoutput[$n] = []; + + $s = $this->PrintPageBackgrounds(); + $this->headerbuffer = $s . $this->headerbuffer; + $os = ''; + if ($rotate) { + $os .= sprintf('q 0 -1 1 0 0 %.3F cm ', ($this->w * Mpdf::SCALE)); + // To rotate the other way i.e. Header to left of page: + // $os .= sprintf('q 0 1 -1 0 %.3F %.3F cm ',($this->h*Mpdf::SCALE), (($this->rMargin - $this->lMargin )*Mpdf::SCALE)); + } + $os .= $this->headerbuffer; + if ($rotate) { + $os .= ' Q' . "\n"; + } + + // Writes over the page background but behind any other output on page + $os = preg_replace(['/\\\\/', '/\$/'], ['\\\\\\\\', '\\\\$'], $os); + + $this->pages[$n] = preg_replace('/(___HEADER___MARKER' . $this->uniqstr . ')/', "\n" . $os . "\n" . '\\1', $this->pages[$n]); + + $lks = $this->HTMLheaderPageLinks; + foreach ($lks as $lk) { + if ($rotate) { + $lw = $lk[2]; + $lh = $lk[3]; + $lk[2] = $lh; + $lk[3] = $lw; // swap width and height + $ax = $lk[0] / Mpdf::SCALE; + $ay = $lk[1] / Mpdf::SCALE; + $bx = $ay - ($lh / Mpdf::SCALE); + $by = $this->w - $ax; + $lk[0] = $bx * Mpdf::SCALE; + $lk[1] = ($this->h - $by) * Mpdf::SCALE - $lw; + } + $this->PageLinks[$n][] = $lk; + } + /* -- FORMS -- */ + foreach ($this->HTMLheaderPageForms as $f) { + $this->form->forms[$f['n']] = $f; + } + /* -- END FORMS -- */ + } + + if (isset($this->saveHTMLFooter[$n][$OE])) { + + $html = $this->saveHTMLFooter[$this->page][$OE]['html']; + + $this->lMargin = $this->saveHTMLFooter[$n][$OE]['ml']; + $this->rMargin = $this->saveHTMLFooter[$n][$OE]['mr']; + $this->tMargin = $this->saveHTMLFooter[$n][$OE]['mh']; + $this->bMargin = $this->saveHTMLFooter[$n][$OE]['mf']; + $this->margin_header = $this->saveHTMLFooter[$n][$OE]['mh']; + $this->margin_footer = $this->saveHTMLFooter[$n][$OE]['mf']; + $this->w = $this->saveHTMLFooter[$n][$OE]['pw']; + $this->h = $this->saveHTMLFooter[$n][$OE]['ph']; + $rotate = (isset($this->saveHTMLFooter[$n][$OE]['rotate']) ? $this->saveHTMLFooter[$n][$OE]['rotate'] : null); + $this->Reset(); + $this->pageoutput[$n] = []; + $this->pgwidth = $this->w - $this->lMargin - $this->rMargin; + $this->x = $this->lMargin; + $top_y = $this->y = $this->h - $this->margin_footer; + + // if bottom-margin==0, corrects to avoid division by zero + if ($this->y == $this->h) { + $top_y = $this->y = ($this->h + 0.01); + } + + $html = str_replace('{PAGENO}', $pnstr, $html); + $html = str_replace($this->aliasNbPgGp, $pntstr, $html); // {nbpg} + $html = str_replace($this->aliasNbPg, $nb, $html); // {nb} + $html = preg_replace_callback('/\{DATE\s+(.*?)\}/', [$this, 'date_callback'], $html); // mPDF 5.7 + + + $this->HTMLheaderPageLinks = []; + $this->HTMLheaderPageAnnots = []; + $this->HTMLheaderPageForms = []; + $this->pageBackgrounds = []; + + $this->writingHTMLfooter = true; + $this->InFooter = true; + $this->WriteHTML($html, HTMLParserMode::HTML_HEADER_BUFFER); + $this->InFooter = false; + $this->Reset(); + $this->pageoutput[$n] = []; + + $fheight = $this->y - $top_y; + $adj = -$fheight; + + $s = $this->PrintPageBackgrounds(-$adj); + $this->headerbuffer = $s . $this->headerbuffer; + $this->writingHTMLfooter = false; // mPDF 5.7.3 (moved after PrintPageBackgrounds so can adjust position of images in footer) + + $os = ''; + $os .= $this->StartTransform(true) . "\n"; + + if ($rotate) { + $os .= sprintf('q 0 -1 1 0 0 %.3F cm ', ($this->w * Mpdf::SCALE)); + // To rotate the other way i.e. Header to left of page: + // $os .= sprintf('q 0 1 -1 0 %.3F %.3F cm ',($this->h*Mpdf::SCALE), (($this->rMargin - $this->lMargin )*Mpdf::SCALE)); + } + + $os .= $this->transformTranslate(0, $adj, true) . "\n"; + $os .= $this->headerbuffer; + + if ($rotate) { + $os .= ' Q' . "\n"; + } + + $os .= $this->StopTransform(true) . "\n"; + + // Writes over the page background but behind any other output on page + $os = preg_replace(['/\\\\/', '/\$/'], ['\\\\\\\\', '\\\\$'], $os); + + $this->pages[$n] = preg_replace('/(___HEADER___MARKER' . $this->uniqstr . ')/', "\n" . $os . "\n" . '\\1', $this->pages[$n]); + + $lks = $this->HTMLheaderPageLinks; + + foreach ($lks as $lk) { + + $lk[1] -= $adj * Mpdf::SCALE; + + if ($rotate) { + $lw = $lk[2]; + $lh = $lk[3]; + $lk[2] = $lh; + $lk[3] = $lw; // swap width and height + + $ax = $lk[0] / Mpdf::SCALE; + $ay = $lk[1] / Mpdf::SCALE; + $bx = $ay - ($lh / Mpdf::SCALE); + $by = $this->w - $ax; + $lk[0] = $bx * Mpdf::SCALE; + $lk[1] = ($this->h - $by) * Mpdf::SCALE - $lw; + } + + $this->PageLinks[$n][] = $lk; + } + + /* -- FORMS -- */ + foreach ($this->HTMLheaderPageForms as $f) { + $f['y'] += $adj; + $this->form->forms[$f['n']] = $f; + } + /* -- END FORMS -- */ + } + } + + $this->page = $nb; + $this->state = 1; + } + + /* -- ANNOTATIONS -- */ + function Annotation($text, $x = 0, $y = 0, $icon = 'Note', $author = '', $subject = '', $opacity = 0, $colarray = false, $popup = '', $file = '') + { + if (is_array($colarray) && count($colarray) == 3) { + $colarray = $this->colorConverter->convert('rgb(' . $colarray[0] . ',' . $colarray[1] . ',' . $colarray[2] . ')', $this->PDFAXwarnings); + } + if ($colarray === false) { + $colarray = $this->colorConverter->convert('yellow', $this->PDFAXwarnings); + } + if ($x == 0) { + $x = $this->x; + } + if ($y == 0) { + $y = $this->y; + } + $page = $this->page; + if ($page < 1) { // Document has not been started - assume it's for first page + $page = 1; + if ($x == 0) { + $x = $this->lMargin; + } + if ($y == 0) { + $y = $this->tMargin; + } + } + + if ($this->PDFA || $this->PDFX) { + if (($this->PDFA && !$this->PDFAauto) || ($this->PDFX && !$this->PDFXauto)) { + $this->PDFAXwarnings[] = "Annotation markers cannot be semi-transparent in PDFA1-b or PDFX/1-a, so they may make underlying text unreadable. (Annotation markers moved to right margin)"; + } + $x = ($this->w) - $this->rMargin * 0.66; + } + if (!$this->annotMargin) { + $y -= $this->FontSize / 2; + } + + if (!$opacity && $this->annotMargin) { + $opacity = 1; + } elseif (!$opacity) { + $opacity = $this->annotOpacity; + } + + $an = ['txt' => $text, 'x' => $x, 'y' => $y, 'opt' => ['Icon' => $icon, 'T' => $author, 'Subj' => $subject, 'C' => $colarray, 'CA' => $opacity, 'popup' => $popup, 'file' => $file]]; + + if ($this->keep_block_together) { // don't write yet + return; + } elseif ($this->table_rotate) { + $this->tbrot_Annots[$this->page][] = $an; + return; + } elseif ($this->kwt) { + $this->kwt_Annots[$this->page][] = $an; + return; + } + + if ($this->writingHTMLheader || $this->writingHTMLfooter) { + $this->HTMLheaderPageAnnots[] = $an; + return; + } + + // Put an Annotation on the page + $this->PageAnnots[$page][] = $an; + + /* -- COLUMNS -- */ + // Save cross-reference to Column buffer + $ref = isset($this->PageAnnots[$this->page]) ? (count($this->PageAnnots[$this->page]) - 1) : -1; + $this->columnAnnots[$this->CurrCol][intval($this->x)][intval($this->y)] = $ref; + /* -- END COLUMNS -- */ + } + + /* -- END ANNOTATIONS -- */ + + function _enddoc() + { + // @log Writing Headers & Footers + + $this->_puthtmlheaders(); + + // @log Writing Pages + + // Remove references to unused fonts (usually default font) + foreach ($this->fonts as $fk => $font) { + if (isset($font['type']) && $font['type'] == 'TTF' && !$font['used']) { + if ($font['sip'] || $font['smp']) { + foreach ($font['subsetfontids'] as $k => $fid) { + foreach ($this->pages as $pn => $page) { + $this->pages[$pn] = preg_replace('/\s\/F' . $fid . ' \d[\d.]* Tf\s/is', ' ', $this->pages[$pn]); + } + } + } else { + foreach ($this->pages as $pn => $page) { + $this->pages[$pn] = preg_replace('/\s\/F' . $font['i'] . ' \d[\d.]* Tf\s/is', ' ', $this->pages[$pn]); + } + } + } + } + + if (count($this->layers)) { + foreach ($this->pages as $pn => $page) { + preg_match_all('/\/OCZ-index \/ZI(\d+) BDC(.*?)(EMCZ)-index/is', $this->pages[$pn], $m1); + preg_match_all('/\/OCBZ-index \/ZI(\d+) BDC(.*?)(EMCBZ)-index/is', $this->pages[$pn], $m2); + preg_match_all('/\/OCGZ-index \/ZI(\d+) BDC(.*?)(EMCGZ)-index/is', $this->pages[$pn], $m3); + $m = []; + for ($i = 0; $i < 4; $i++) { + $m[$i] = array_merge($m1[$i], $m2[$i], $m3[$i]); + } + if (count($m[0])) { + $sortarr = []; + for ($i = 0; $i < count($m[0]); $i++) { + $key = $m[1][$i] * 2; + if ($m[3][$i] == 'EMCZ') { + $key +=2; // background first then gradient then normal + } elseif ($m[3][$i] == 'EMCGZ') { + $key +=1; + } + $sortarr[$i] = $key; + } + asort($sortarr); + foreach ($sortarr as $i => $k) { + $this->pages[$pn] = str_replace($m[0][$i], '', $this->pages[$pn]); + $this->pages[$pn] .= "\n" . $m[0][$i] . "\n"; + } + $this->pages[$pn] = preg_replace('/\/OC[BG]{0,1}Z-index \/ZI(\d+) BDC/is', '/OC /ZI\\1 BDC ', $this->pages[$pn]); + $this->pages[$pn] = preg_replace('/EMC[BG]{0,1}Z-index/is', 'EMC', $this->pages[$pn]); + } + } + } + + $this->pageWriter->writePages(); + + // @log Writing document resources + + $this->resourceWriter->writeResources(); + + // Info + $this->writer->object(); + $this->InfoRoot = $this->n; + $this->writer->write('<<'); + + // @log Writing document info + $this->metadataWriter->writeInfo(); + + $this->writer->write('>>'); + $this->writer->write('endobj'); + + // METADATA + if ($this->PDFA || $this->PDFX) { + $this->metadataWriter->writeMetadata(); + } + + // OUTPUTINTENT + if ($this->PDFA || $this->PDFX || $this->ICCProfile) { + $this->metadataWriter->writeOutputIntent(); + } + + // Associated files + if ($this->associatedFiles) { + $this->metadataWriter->writeAssociatedFiles(); + } + + // Catalog + $this->writer->object(); + $this->writer->write('<<'); + + // @log Writing document catalog + + $this->metadataWriter->writeCatalog(); + + $this->writer->write('>>'); + $this->writer->write('endobj'); + + // Cross-ref + $o = strlen($this->buffer); + $this->writer->write('xref'); + $this->writer->write('0 ' . ($this->n + 1)); + $this->writer->write('0000000000 65535 f '); + + for ($i = 1; $i <= $this->n; $i++) { + $this->writer->write(sprintf('%010d 00000 n ', $this->offsets[$i])); + } + + // Trailer + $this->writer->write('trailer'); + $this->writer->write('<<'); + + $this->metadataWriter->writeTrailer(); + + $this->writer->write('>>'); + $this->writer->write('startxref'); + $this->writer->write($o); + + $this->buffer .= '%%EOF'; + $this->state = 3; + } + + function _beginpage( + $orientation, + $mgl = '', + $mgr = '', + $mgt = '', + $mgb = '', + $mgh = '', + $mgf = '', + $ohname = '', + $ehname = '', + $ofname = '', + $efname = '', + $ohvalue = 0, + $ehvalue = 0, + $ofvalue = 0, + $efvalue = 0, + $pagesel = '', + $newformat = '' + ) { + if (!($pagesel && $this->page == 1 && (sprintf("%0.4f", $this->y) == sprintf("%0.4f", $this->tMargin)))) { + $this->page++; + $this->pages[$this->page] = ''; + } + $this->state = 2; + $resetHTMLHeadersrequired = false; + + if ($newformat) { + $this->_setPageSize($newformat, $orientation); + } + + /* -- CSS-PAGE -- */ + // Paged media (page-box) + if ($pagesel || (isset($this->page_box['using']) && $this->page_box['using'])) { + + if ($pagesel || $this->page == 1) { + $first = true; + } else { + $first = false; + } + + if ($this->mirrorMargins && ($this->page % 2 == 0)) { + $oddEven = 'E'; + } else { + $oddEven = 'O'; + } + + if ($pagesel) { + $psel = $pagesel; + } elseif ($this->page_box['current']) { + $psel = $this->page_box['current']; + } else { + $psel = ''; + } + + list($orientation, $mgl, $mgr, $mgt, $mgb, $mgh, $mgf, $hname, $fname, $bg, $resetpagenum, $pagenumstyle, $suppress, $marks, $newformat) = $this->SetPagedMediaCSS($psel, $first, $oddEven); + + if ($this->mirrorMargins && ($this->page % 2 == 0)) { + + if ($hname) { + $ehvalue = 1; + $ehname = $hname; + } else { + $ehvalue = -1; + } + + if ($fname) { + $efvalue = 1; + $efname = $fname; + } else { + $efvalue = -1; + } + + } else { + + if ($hname) { + $ohvalue = 1; + $ohname = $hname; + } else { + $ohvalue = -1; + } + + if ($fname) { + $ofvalue = 1; + $ofname = $fname; + } else { + $ofvalue = -1; + } + } + + if ($resetpagenum || $pagenumstyle || $suppress) { + $this->PageNumSubstitutions[] = ['from' => ($this->page), 'reset' => $resetpagenum, 'type' => $pagenumstyle, 'suppress' => $suppress]; + } + + // PAGED MEDIA - CROP / CROSS MARKS from @PAGE + $this->show_marks = $marks; + + // Background color + if (isset($bg['BACKGROUND-COLOR'])) { + $cor = $this->colorConverter->convert($bg['BACKGROUND-COLOR'], $this->PDFAXwarnings); + if ($cor) { + $this->bodyBackgroundColor = $cor; + } + } else { + $this->bodyBackgroundColor = false; + } + + /* -- BACKGROUNDS -- */ + if (isset($bg['BACKGROUND-GRADIENT'])) { + $this->bodyBackgroundGradient = $bg['BACKGROUND-GRADIENT']; + } else { + $this->bodyBackgroundGradient = false; + } + + // Tiling Patterns + if (isset($bg['BACKGROUND-IMAGE']) && $bg['BACKGROUND-IMAGE']) { + $ret = $this->SetBackground($bg, $this->pgwidth); + if ($ret) { + $this->bodyBackgroundImage = $ret; + } + } else { + $this->bodyBackgroundImage = false; + } + /* -- END BACKGROUNDS -- */ + + $this->page_box['current'] = $psel; + $this->page_box['using'] = true; + } + /* -- END CSS-PAGE -- */ + + // Page orientation + if (!$orientation) { + $orientation = $this->DefOrientation; + } else { + $orientation = strtoupper(substr($orientation, 0, 1)); + if ($orientation != $this->DefOrientation) { + $this->OrientationChanges[$this->page] = true; + } + } + + if ($orientation != $this->CurOrientation || $newformat) { + + // Change orientation + if ($orientation == 'P') { + $this->wPt = $this->fwPt; + $this->hPt = $this->fhPt; + $this->w = $this->fw; + $this->h = $this->fh; + if (($this->forcePortraitHeaders || $this->forcePortraitMargins) && $this->DefOrientation == 'P') { + $this->tMargin = $this->orig_tMargin; + $this->bMargin = $this->orig_bMargin; + $this->DeflMargin = $this->orig_lMargin; + $this->DefrMargin = $this->orig_rMargin; + $this->margin_header = $this->orig_hMargin; + $this->margin_footer = $this->orig_fMargin; + } else { + $resetHTMLHeadersrequired = true; + } + } else { + $this->wPt = $this->fhPt; + $this->hPt = $this->fwPt; + $this->w = $this->fh; + $this->h = $this->fw; + + if (($this->forcePortraitHeaders || $this->forcePortraitMargins) && $this->DefOrientation == 'P') { + $this->tMargin = $this->orig_lMargin; + $this->bMargin = $this->orig_rMargin; + $this->DeflMargin = $this->orig_bMargin; + $this->DefrMargin = $this->orig_tMargin; + $this->margin_header = $this->orig_hMargin; + $this->margin_footer = $this->orig_fMargin; + } else { + $resetHTMLHeadersrequired = true; + } + } + + $this->CurOrientation = $orientation; + $this->ResetMargins(); + $this->pgwidth = $this->w - $this->lMargin - $this->rMargin; + $this->PageBreakTrigger = $this->h - $this->bMargin; + } + + $this->pageDim[$this->page]['w'] = $this->w; + $this->pageDim[$this->page]['h'] = $this->h; + + $this->pageDim[$this->page]['outer_width_LR'] = isset($this->page_box['outer_width_LR']) ? $this->page_box['outer_width_LR'] : 0; + $this->pageDim[$this->page]['outer_width_TB'] = isset($this->page_box['outer_width_TB']) ? $this->page_box['outer_width_TB'] : 0; + + if (!isset($this->page_box['outer_width_LR']) && !isset($this->page_box['outer_width_TB'])) { + $this->pageDim[$this->page]['bleedMargin'] = 0; + } elseif ($this->bleedMargin <= $this->page_box['outer_width_LR'] && $this->bleedMargin <= $this->page_box['outer_width_TB']) { + $this->pageDim[$this->page]['bleedMargin'] = $this->bleedMargin; + } else { + $this->pageDim[$this->page]['bleedMargin'] = min($this->page_box['outer_width_LR'], $this->page_box['outer_width_TB']) - 0.01; + } + + // If Page Margins are re-defined + // strlen()>0 is used to pick up (integer) 0, (string) '0', or set value + if ((strlen($mgl) > 0 && $this->DeflMargin != $mgl) || (strlen($mgr) > 0 && $this->DefrMargin != $mgr) || (strlen($mgt) > 0 && $this->tMargin != $mgt) || (strlen($mgb) > 0 && $this->bMargin != $mgb) || (strlen($mgh) > 0 && $this->margin_header != $mgh) || (strlen($mgf) > 0 && $this->margin_footer != $mgf)) { + + if (strlen($mgl) > 0) { + $this->DeflMargin = $mgl; + } + + if (strlen($mgr) > 0) { + $this->DefrMargin = $mgr; + } + + if (strlen($mgt) > 0) { + $this->tMargin = $mgt; + } + + if (strlen($mgb) > 0) { + $this->bMargin = $mgb; + } + + if (strlen($mgh) > 0) { + $this->margin_header = $mgh; + } + + if (strlen($mgf) > 0) { + $this->margin_footer = $mgf; + } + + $this->ResetMargins(); + $this->SetAutoPageBreak($this->autoPageBreak, $this->bMargin); + + $this->pgwidth = $this->w - $this->lMargin - $this->rMargin; + $resetHTMLHeadersrequired = true; + } + + $this->ResetMargins(); + $this->pgwidth = $this->w - $this->lMargin - $this->rMargin; + $this->SetAutoPageBreak($this->autoPageBreak, $this->bMargin); + + // Reset column top margin + $this->y0 = $this->tMargin; + + $this->x = $this->lMargin; + $this->y = $this->tMargin; + $this->FontFamily = ''; + + // HEADERS AND FOOTERS // mPDF 6 + if ($ohvalue < 0 || strtoupper($ohvalue) == 'OFF') { + $this->HTMLHeader = ''; + $resetHTMLHeadersrequired = true; + } elseif ($ohname && $ohvalue > 0) { + if (preg_match('/^html_(.*)$/i', $ohname, $n)) { + $name = $n[1]; + } else { + $name = $ohname; + } + if (isset($this->pageHTMLheaders[$name])) { + $this->HTMLHeader = $this->pageHTMLheaders[$name]; + } else { + $this->HTMLHeader = ''; + } + $resetHTMLHeadersrequired = true; + } + + if ($ehvalue < 0 || strtoupper($ehvalue) == 'OFF') { + $this->HTMLHeaderE = ''; + $resetHTMLHeadersrequired = true; + } elseif ($ehname && $ehvalue > 0) { + if (preg_match('/^html_(.*)$/i', $ehname, $n)) { + $name = $n[1]; + } else { + $name = $ehname; + } + if (isset($this->pageHTMLheaders[$name])) { + $this->HTMLHeaderE = $this->pageHTMLheaders[$name]; + } else { + $this->HTMLHeaderE = ''; + } + $resetHTMLHeadersrequired = true; + } + + if ($ofvalue < 0 || strtoupper($ofvalue) == 'OFF') { + $this->HTMLFooter = ''; + $resetHTMLHeadersrequired = true; + } elseif ($ofname && $ofvalue > 0) { + if (preg_match('/^html_(.*)$/i', $ofname, $n)) { + $name = $n[1]; + } else { + $name = $ofname; + } + if (isset($this->pageHTMLfooters[$name])) { + $this->HTMLFooter = $this->pageHTMLfooters[$name]; + } else { + $this->HTMLFooter = ''; + } + $resetHTMLHeadersrequired = true; + } + + if ($efvalue < 0 || strtoupper($efvalue) == 'OFF') { + $this->HTMLFooterE = ''; + $resetHTMLHeadersrequired = true; + } elseif ($efname && $efvalue > 0) { + if (preg_match('/^html_(.*)$/i', $efname, $n)) { + $name = $n[1]; + } else { + $name = $efname; + } + if (isset($this->pageHTMLfooters[$name])) { + $this->HTMLFooterE = $this->pageHTMLfooters[$name]; + } else { + $this->HTMLFooterE = ''; + } + $resetHTMLHeadersrequired = true; + } + + if ($resetHTMLHeadersrequired) { + $this->SetHTMLHeader($this->HTMLHeader); + $this->SetHTMLHeader($this->HTMLHeaderE, 'E'); + $this->SetHTMLFooter($this->HTMLFooter); + $this->SetHTMLFooter($this->HTMLFooterE, 'E'); + } + + + if (($this->mirrorMargins) && (($this->page) % 2 == 0)) { // EVEN + $this->_setAutoHeaderHeight($this->HTMLHeaderE); + $this->_setAutoFooterHeight($this->HTMLFooterE); + } else { // ODD or DEFAULT + $this->_setAutoHeaderHeight($this->HTMLHeader); + $this->_setAutoFooterHeight($this->HTMLFooter); + } + + // Reset column top margin + $this->y0 = $this->tMargin; + + $this->x = $this->lMargin; + $this->y = $this->tMargin; + } + + // mPDF 6 + function _setAutoHeaderHeight(&$htmlh) + { + /* When the setAutoTopMargin option is set to pad/stretch, only apply auto header height when a header exists */ + if ($this->HTMLHeader === '' && $this->HTMLHeaderE === '') { + return; + } + + if ($this->setAutoTopMargin == 'pad') { + if (isset($htmlh['h']) && $htmlh['h']) { + $h = $htmlh['h']; + } // 5.7.3 + else { + $h = 0; + } + $this->tMargin = $this->margin_header + $h + $this->orig_tMargin; + } elseif ($this->setAutoTopMargin == 'stretch') { + if (isset($htmlh['h']) && $htmlh['h']) { + $h = $htmlh['h']; + } // 5.7.3 + else { + $h = 0; + } + $this->tMargin = max($this->orig_tMargin, $this->margin_header + $h + $this->autoMarginPadding); + } + } + + // mPDF 6 + function _setAutoFooterHeight(&$htmlf) + { + /* When the setAutoTopMargin option is set to pad/stretch, only apply auto footer height when a footer exists */ + if ($this->HTMLFooter === '' && $this->HTMLFooterE === '') { + return; + } + + if ($this->setAutoBottomMargin == 'pad') { + if (isset($htmlf['h']) && $htmlf['h']) { + $h = $htmlf['h']; + } // 5.7.3 + else { + $h = 0; + } + $this->bMargin = $this->margin_footer + $h + $this->orig_bMargin; + $this->PageBreakTrigger = $this->h - $this->bMargin; + } elseif ($this->setAutoBottomMargin == 'stretch') { + if (isset($htmlf['h']) && $htmlf['h']) { + $h = $htmlf['h']; + } // 5.7.3 + else { + $h = 0; + } + $this->bMargin = max($this->orig_bMargin, $this->margin_footer + $h + $this->autoMarginPadding); + $this->PageBreakTrigger = $this->h - $this->bMargin; + } + } + + function _endpage() + { + /* -- CSS-IMAGE-FLOAT -- */ + $this->printfloatbuffer(); + /* -- END CSS-IMAGE-FLOAT -- */ + + if ($this->visibility != 'visible') { + $this->SetVisibility('visible'); + } + $this->EndLayer(); + // End of page contents + $this->state = 1; + } + + function _dounderline($x, $y, $txt, $OTLdata = false, $textvar = 0) + { + // Now print line exactly where $y secifies - called from Text() and Cell() - adjust position there + // WORD SPACING + $w = ($this->GetStringWidth($txt, false, $OTLdata, $textvar) * Mpdf::SCALE) + ($this->charspacing * mb_strlen($txt, $this->mb_enc)) + ( $this->ws * mb_substr_count($txt, ' ', $this->mb_enc)); + // Draw a line + return sprintf('%.3F %.3F m %.3F %.3F l S', $x * Mpdf::SCALE, ($this->h - $y) * Mpdf::SCALE, ($x * Mpdf::SCALE) + $w, ($this->h - $y) * Mpdf::SCALE); + } + + + + /* -- WATERMARK -- */ + + // add a watermark + function watermark($texte, $angle = 45, $fontsize = 96, $alpha = 0.2) + { + if ($this->PDFA || $this->PDFX) { + throw new \Mpdf\MpdfException('PDFA and PDFX do not permit transparency, so mPDF does not allow Watermarks!'); + } + + if (!$this->watermark_font) { + $this->watermark_font = $this->default_font; + } + + $this->SetFont($this->watermark_font, "B", $fontsize, false); // Don't output + $texte = $this->purify_utf8_text($texte); + + if ($this->text_input_as_HTML) { + $texte = $this->all_entities_to_utf8($texte); + } + + if ($this->usingCoreFont) { + $texte = mb_convert_encoding($texte, $this->mb_enc, 'UTF-8'); + } + + // DIRECTIONALITY + if (preg_match("/([" . $this->pregRTLchars . "])/u", $texte)) { + $this->biDirectional = true; + } // *OTL* + + $textvar = 0; + $save_OTLtags = $this->OTLtags; + $this->OTLtags = []; + if ($this->useKerning) { + if ($this->CurrentFont['haskernGPOS']) { + $this->OTLtags['Plus'] .= ' kern'; + } else { + $textvar = ($textvar | TextVars::FC_KERNING); + } + } + + /* -- OTL -- */ + // Use OTL OpenType Table Layout - GSUB & GPOS + if (isset($this->CurrentFont['useOTL']) && $this->CurrentFont['useOTL']) { + $texte = $this->otl->applyOTL($texte, $this->CurrentFont['useOTL']); + $OTLdata = $this->otl->OTLdata; + } + /* -- END OTL -- */ + $this->OTLtags = $save_OTLtags; + + $this->magic_reverse_dir($texte, $this->directionality, $OTLdata); + + $this->SetAlpha($alpha); + + $this->SetTColor($this->colorConverter->convert(0, $this->PDFAXwarnings)); + + $szfont = $fontsize; + $loop = 0; + $maxlen = (min($this->w, $this->h) ); // sets max length of text as 7/8 width/height of page + + while ($loop == 0) { + $this->SetFont($this->watermark_font, "B", $szfont, false); // Don't output + $offset = ((sin(deg2rad($angle))) * ($szfont / Mpdf::SCALE)); + + $strlen = $this->GetStringWidth($texte, true, $OTLdata, $textvar); + if ($strlen > $maxlen - $offset) { + $szfont --; + } else { + $loop ++; + } + } + + $this->SetFont($this->watermark_font, "B", $szfont - 0.1, true, true); // Output The -0.1 is because SetFont above is not written to PDF + + // Repeating it will not output anything as mPDF thinks it is set + $adj = ((cos(deg2rad($angle))) * ($strlen / 2)); + $opp = ((sin(deg2rad($angle))) * ($strlen / 2)); + + $wx = ($this->w / 2) - $adj + $offset / 3; + $wy = ($this->h / 2) + $opp; + + $this->Rotate($angle, $wx, $wy); + $this->Text($wx, $wy, $texte, $OTLdata, $textvar); + $this->Rotate(0); + $this->SetTColor($this->colorConverter->convert(0, $this->PDFAXwarnings)); + + $this->SetAlpha(1); + } + + function watermarkImg($src, $alpha = 0.2) + { + if ($this->PDFA || $this->PDFX) { + throw new \Mpdf\MpdfException('PDFA and PDFX do not permit transparency, so mPDF does not allow Watermarks!'); + } + + if ($this->watermarkImgBehind) { + $this->watermarkImgAlpha = $this->SetAlpha($alpha, 'Normal', true); + } else { + $this->SetAlpha($alpha, $this->watermarkImgAlphaBlend); + } + + $this->Image($src, 0, 0, 0, 0, '', '', true, true, true); + + if (!$this->watermarkImgBehind) { + $this->SetAlpha(1); + } + } + + /* -- END WATERMARK -- */ + + function Rotate($angle, $x = -1, $y = -1) + { + if ($x == -1) { + $x = $this->x; + } + if ($y == -1) { + $y = $this->y; + } + if ($this->angle != 0) { + $this->writer->write('Q'); + } + $this->angle = $angle; + if ($angle != 0) { + $angle*=M_PI / 180; + $c = cos($angle); + $s = sin($angle); + $cx = $x * Mpdf::SCALE; + $cy = ($this->h - $y) * Mpdf::SCALE; + $this->writer->write(sprintf('q %.5F %.5F %.5F %.5F %.3F %.3F cm 1 0 0 1 %.3F %.3F cm', $c, $s, -$s, $c, $cx, $cy, -$cx, -$cy)); + } + } + + function CircularText($x, $y, $r, $text, $align = 'top', $fontfamily = '', $fontsize = 0, $fontstyle = '', $kerning = 120, $fontwidth = 100, $divider = '') + { + if (empty($this->directWrite)) { + $this->directWrite = new DirectWrite($this, $this->otl, $this->sizeConverter, $this->colorConverter); + } + + $this->directWrite->CircularText($x, $y, $r, $text, $align, $fontfamily, $fontsize, $fontstyle, $kerning, $fontwidth, $divider); + } + + // From Invoice + function RoundedRect($x, $y, $w, $h, $r, $style = '') + { + $hp = $this->h; + + if ($style == 'F') { + $op = 'f'; + } elseif ($style == 'FD' or $style == 'DF') { + $op = 'B'; + } else { + $op = 'S'; + } + + $MyArc = 4 / 3 * (sqrt(2) - 1); + $this->writer->write(sprintf('%.3F %.3F m', ($x + $r) * Mpdf::SCALE, ($hp - $y) * Mpdf::SCALE)); + $xc = $x + $w - $r; + $yc = $y + $r; + $this->writer->write(sprintf('%.3F %.3F l', $xc * Mpdf::SCALE, ($hp - $y) * Mpdf::SCALE)); + + $this->_Arc($xc + $r * $MyArc, $yc - $r, $xc + $r, $yc - $r * $MyArc, $xc + $r, $yc); + $xc = $x + $w - $r; + $yc = $y + $h - $r; + $this->writer->write(sprintf('%.3F %.3F l', ($x + $w) * Mpdf::SCALE, ($hp - $yc) * Mpdf::SCALE)); + + $this->_Arc($xc + $r, $yc + $r * $MyArc, $xc + $r * $MyArc, $yc + $r, $xc, $yc + $r); + $xc = $x + $r; + $yc = $y + $h - $r; + $this->writer->write(sprintf('%.3F %.3F l', $xc * Mpdf::SCALE, ($hp - ($y + $h)) * Mpdf::SCALE)); + + $this->_Arc($xc - $r * $MyArc, $yc + $r, $xc - $r, $yc + $r * $MyArc, $xc - $r, $yc); + $xc = $x + $r; + $yc = $y + $r; + $this->writer->write(sprintf('%.3F %.3F l', ($x) * Mpdf::SCALE, ($hp - $yc) * Mpdf::SCALE)); + + $this->_Arc($xc - $r, $yc - $r * $MyArc, $xc - $r * $MyArc, $yc - $r, $xc, $yc - $r); + $this->writer->write($op); + } + + function _Arc($x1, $y1, $x2, $y2, $x3, $y3) + { + $h = $this->h; + $this->writer->write(sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', $x1 * Mpdf::SCALE, ($h - $y1) * Mpdf::SCALE, $x2 * Mpdf::SCALE, ($h - $y2) * Mpdf::SCALE, $x3 * Mpdf::SCALE, ($h - $y3) * Mpdf::SCALE)); + } + + // ==================================================== + + + + /* -- DIRECTW -- */ + function Shaded_box($text, $font = '', $fontstyle = 'B', $szfont = '', $width = '70%', $style = 'DF', $radius = 2.5, $fill = '#FFFFFF', $color = '#000000', $pad = 2) + { + // F (shading - no line),S (line, no shading),DF (both) + if (empty($this->directWrite)) { + $this->directWrite = new DirectWrite($this, $this->otl, $this->sizeConverter, $this->colorConverter); + } + $this->directWrite->Shaded_box($text, $font, $fontstyle, $szfont, $width, $style, $radius, $fill, $color, $pad); + } + + /* -- END DIRECTW -- */ + + function UTF8StringToArray($str, $addSubset = true) + { + $out = []; + $len = strlen($str); + for ($i = 0; $i < $len; $i++) { + $uni = -1; + $h = ord($str[$i]); + if ($h <= 0x7F) { + $uni = $h; + } elseif ($h >= 0xC2) { + if (($h <= 0xDF) && ($i < $len - 1)) { + $uni = ($h & 0x1F) << 6 | (ord($str[++$i]) & 0x3F); + } elseif (($h <= 0xEF) && ($i < $len - 2)) { + $uni = ($h & 0x0F) << 12 | (ord($str[++$i]) & 0x3F) << 6 | (ord($str[++$i]) & 0x3F); + } elseif (($h <= 0xF4) && ($i < $len - 3)) { + $uni = ($h & 0x0F) << 18 | (ord($str[++$i]) & 0x3F) << 12 | (ord($str[++$i]) & 0x3F) << 6 | (ord($str[++$i]) & 0x3F); + } + } + if ($uni >= 0) { + $out[] = $uni; + if ($addSubset && isset($this->CurrentFont['subset'])) { + $this->CurrentFont['subset'][$uni] = $uni; + } + } + } + return $out; + } + + // Convert utf-8 string to for Font Subsets + function UTF8toSubset($str) + { + $ret = '<'; + // $str = preg_replace('/'.preg_quote($this->aliasNbPg,'/').'/', chr(7), $str ); // mPDF 6 deleted + // $str = preg_replace('/'.preg_quote($this->aliasNbPgGp,'/').'/', chr(8), $str ); // mPDF 6 deleted + $unicode = $this->UTF8StringToArray($str); + $orig_fid = $this->CurrentFont['subsetfontids'][0]; + $last_fid = $this->CurrentFont['subsetfontids'][0]; + foreach ($unicode as $c) { + /* // mPDF 6 deleted + if ($c == 7 || $c == 8) { + if ($orig_fid != $last_fid) { + $ret .= '> Tj /F'.$orig_fid.' '.$this->FontSizePt.' Tf <'; + $last_fid = $orig_fid; + } + if ($c == 7) { $ret .= $this->aliasNbPgHex; } + else { $ret .= $this->aliasNbPgGpHex; } + continue; + } + */ + if (!$this->_charDefined($this->CurrentFont['cw'], $c)) { + $c = 0; + } // mPDF 6 + for ($i = 0; $i < 99; $i++) { + // return c as decimal char + $init = array_search($c, $this->CurrentFont['subsets'][$i]); + if ($init !== false) { + if ($this->CurrentFont['subsetfontids'][$i] != $last_fid) { + $ret .= '> Tj /F' . $this->CurrentFont['subsetfontids'][$i] . ' ' . $this->FontSizePt . ' Tf <'; + $last_fid = $this->CurrentFont['subsetfontids'][$i]; + } + $ret .= sprintf("%02s", strtoupper(dechex($init))); + break; + } // TrueType embedded SUBSETS + elseif (count($this->CurrentFont['subsets'][$i]) < 255) { + $n = count($this->CurrentFont['subsets'][$i]); + $this->CurrentFont['subsets'][$i][$n] = $c; + if ($this->CurrentFont['subsetfontids'][$i] != $last_fid) { + $ret .= '> Tj /F' . $this->CurrentFont['subsetfontids'][$i] . ' ' . $this->FontSizePt . ' Tf <'; + $last_fid = $this->CurrentFont['subsetfontids'][$i]; + } + $ret .= sprintf("%02s", strtoupper(dechex($n))); + break; + } elseif (!isset($this->CurrentFont['subsets'][($i + 1)])) { + // TrueType embedded SUBSETS + $this->CurrentFont['subsets'][($i + 1)] = [0 => 0]; + $new_fid = count($this->fonts) + $this->extraFontSubsets + 1; + $this->CurrentFont['subsetfontids'][($i + 1)] = $new_fid; + $this->extraFontSubsets++; + } + } + } + $ret .= '>'; + if ($last_fid != $orig_fid) { + $ret .= ' Tj /F' . $orig_fid . ' ' . $this->FontSizePt . ' Tf <> '; + } + return $ret; + } + + /* -- CJK-FONTS -- */ + + // from class PDF_Chinese CJK EXTENSIONS + function AddCIDFont($family, $style, $name, &$cw, $CMap, $registry, $desc) + { + $fontkey = strtolower($family) . strtoupper($style); + if (isset($this->fonts[$fontkey])) { + throw new \Mpdf\MpdfException("Font already added: $family $style"); + } + $i = count($this->fonts) + $this->extraFontSubsets + 1; + $name = str_replace(' ', '', $name); + if ($family == 'sjis') { + $up = -120; + } else { + $up = -130; + } + // ? 'up' and 'ut' do not seem to be referenced anywhere + $this->fonts[$fontkey] = ['i' => $i, 'type' => 'Type0', 'name' => $name, 'up' => $up, 'ut' => 40, 'cw' => $cw, 'CMap' => $CMap, 'registry' => $registry, 'MissingWidth' => 1000, 'desc' => $desc]; + } + + function AddCJKFont($family) + { + + if ($this->PDFA || $this->PDFX) { + throw new \Mpdf\MpdfException("Adobe CJK fonts cannot be embedded in mPDF (required for PDFA1-b and PDFX/1-a)."); + } + if ($family == 'big5') { + $this->AddBig5Font(); + } elseif ($family == 'gb') { + $this->AddGBFont(); + } elseif ($family == 'sjis') { + $this->AddSJISFont(); + } elseif ($family == 'uhc') { + $this->AddUHCFont(); + } + } + + function AddBig5Font() + { + // Add Big5 font with proportional Latin + $family = 'big5'; + $name = 'MSungStd-Light-Acro'; + $cw = $this->Big5_widths; + $CMap = 'UniCNS-UTF16-H'; + $registry = ['ordering' => 'CNS1', 'supplement' => 4]; + $desc = [ + 'Ascent' => 880, + 'Descent' => -120, + 'CapHeight' => 880, + 'Flags' => 6, + 'FontBBox' => '[-160 -249 1015 1071]', + 'ItalicAngle' => 0, + 'StemV' => 93, + ]; + $this->AddCIDFont($family, '', $name, $cw, $CMap, $registry, $desc); + $this->AddCIDFont($family, 'B', $name . ',Bold', $cw, $CMap, $registry, $desc); + $this->AddCIDFont($family, 'I', $name . ',Italic', $cw, $CMap, $registry, $desc); + $this->AddCIDFont($family, 'BI', $name . ',BoldItalic', $cw, $CMap, $registry, $desc); + } + + function AddGBFont() + { + // Add GB font with proportional Latin + $family = 'gb'; + $name = 'STSongStd-Light-Acro'; + $cw = $this->GB_widths; + $CMap = 'UniGB-UTF16-H'; + $registry = ['ordering' => 'GB1', 'supplement' => 4]; + $desc = [ + 'Ascent' => 880, + 'Descent' => -120, + 'CapHeight' => 737, + 'Flags' => 6, + 'FontBBox' => '[-25 -254 1000 880]', + 'ItalicAngle' => 0, + 'StemV' => 58, + 'Style' => '<< /Panose <000000000400000000000000> >>', + ]; + $this->AddCIDFont($family, '', $name, $cw, $CMap, $registry, $desc); + $this->AddCIDFont($family, 'B', $name . ',Bold', $cw, $CMap, $registry, $desc); + $this->AddCIDFont($family, 'I', $name . ',Italic', $cw, $CMap, $registry, $desc); + $this->AddCIDFont($family, 'BI', $name . ',BoldItalic', $cw, $CMap, $registry, $desc); + } + + function AddSJISFont() + { + // Add SJIS font with proportional Latin + $family = 'sjis'; + $name = 'KozMinPro-Regular-Acro'; + $cw = $this->SJIS_widths; + $CMap = 'UniJIS-UTF16-H'; + $registry = ['ordering' => 'Japan1', 'supplement' => 5]; + $desc = [ + 'Ascent' => 880, + 'Descent' => -120, + 'CapHeight' => 740, + 'Flags' => 6, + 'FontBBox' => '[-195 -272 1110 1075]', + 'ItalicAngle' => 0, + 'StemV' => 86, + 'XHeight' => 502, + ]; + $this->AddCIDFont($family, '', $name, $cw, $CMap, $registry, $desc); + $this->AddCIDFont($family, 'B', $name . ',Bold', $cw, $CMap, $registry, $desc); + $this->AddCIDFont($family, 'I', $name . ',Italic', $cw, $CMap, $registry, $desc); + $this->AddCIDFont($family, 'BI', $name . ',BoldItalic', $cw, $CMap, $registry, $desc); + } + + function AddUHCFont() + { + // Add UHC font with proportional Latin + $family = 'uhc'; + $name = 'HYSMyeongJoStd-Medium-Acro'; + $cw = $this->UHC_widths; + $CMap = 'UniKS-UTF16-H'; + $registry = ['ordering' => 'Korea1', 'supplement' => 2]; + $desc = [ + 'Ascent' => 880, + 'Descent' => -120, + 'CapHeight' => 720, + 'Flags' => 6, + 'FontBBox' => '[-28 -148 1001 880]', + 'ItalicAngle' => 0, + 'StemV' => 60, + 'Style' => '<< /Panose <000000000600000000000000> >>', + ]; + $this->AddCIDFont($family, '', $name, $cw, $CMap, $registry, $desc); + $this->AddCIDFont($family, 'B', $name . ',Bold', $cw, $CMap, $registry, $desc); + $this->AddCIDFont($family, 'I', $name . ',Italic', $cw, $CMap, $registry, $desc); + $this->AddCIDFont($family, 'BI', $name . ',BoldItalic', $cw, $CMap, $registry, $desc); + } + + /* -- END CJK-FONTS -- */ + + ////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////// + + function SetDefaultFont($font) + { + // Disallow embedded fonts to be used as defaults in PDFA + if ($this->PDFA || $this->PDFX) { + if (strtolower($font) == 'ctimes') { + $font = 'serif'; + } + if (strtolower($font) == 'ccourier') { + $font = 'monospace'; + } + if (strtolower($font) == 'chelvetica') { + $font = 'sans-serif'; + } + } + $font = $this->SetFont($font); // returns substituted font if necessary + $this->default_font = $font; + $this->original_default_font = $font; + if (!$this->watermark_font) { + $this->watermark_font = $font; + } // *WATERMARK* + $this->defaultCSS['BODY']['FONT-FAMILY'] = $font; + $this->cssManager->CSS['BODY']['FONT-FAMILY'] = $font; + } + + function SetDefaultFontSize($fontsize) + { + $this->default_font_size = $fontsize; + $this->original_default_font_size = $fontsize; + $this->SetFontSize($fontsize); + $this->defaultCSS['BODY']['FONT-SIZE'] = $fontsize . 'pt'; + $this->cssManager->CSS['BODY']['FONT-SIZE'] = $fontsize . 'pt'; + } + + function SetDefaultBodyCSS($prop, $val) + { + if ($prop) { + $this->defaultCSS['BODY'][strtoupper($prop)] = $val; + $this->cssManager->CSS['BODY'][strtoupper($prop)] = $val; + } + } + + function SetDirectionality($dir = 'ltr') + { + /* -- OTL -- */ + if (strtolower($dir) == 'rtl') { + if ($this->directionality != 'rtl') { + // Swop L/R Margins so page 1 RTL is an 'even' page + $tmp = $this->DeflMargin; + $this->DeflMargin = $this->DefrMargin; + $this->DefrMargin = $tmp; + $this->orig_lMargin = $this->DeflMargin; + $this->orig_rMargin = $this->DefrMargin; + + $this->SetMargins($this->DeflMargin, $this->DefrMargin, $this->tMargin); + } + $this->directionality = 'rtl'; + $this->defaultAlign = 'R'; + $this->defaultTableAlign = 'R'; + } else { + /* -- END OTL -- */ + $this->directionality = 'ltr'; + $this->defaultAlign = 'L'; + $this->defaultTableAlign = 'L'; + } // *OTL* + $this->cssManager->CSS['BODY']['DIRECTION'] = $this->directionality; + } + + // Return either a number (factor) - based on current set fontsize (if % or em) - or exact lineheight (with 'mm' after it) + function fixLineheight($v) + { + $lh = false; + if (preg_match('/^[0-9\.,]*$/', $v) && $v >= 0) { + return ($v + 0); + } elseif (strtoupper($v) == 'NORMAL' || $v == 'N') { + return 'N'; // mPDF 6 + } else { + $tlh = $this->sizeConverter->convert($v, $this->FontSize, $this->FontSize, true); + if ($tlh) { + return ($tlh . 'mm'); + } + } + return $this->normalLineheight; + } + + function _getNormalLineheight($desc = false) + { + if (!$desc) { + $desc = $this->CurrentFont['desc']; + } + if (!isset($desc['Leading'])) { + $desc['Leading'] = 0; + } + if ($this->useFixedNormalLineHeight) { + $lh = $this->normalLineheight; + } elseif (isset($desc['Ascent']) && $desc['Ascent']) { + $lh = ($this->adjustFontDescLineheight * ($desc['Ascent'] - $desc['Descent'] + $desc['Leading']) / 1000); + } else { + $lh = $this->normalLineheight; + } + return $lh; + } + + // Set a (fixed) lineheight to an actual value - either to named fontsize(pts) or default + function SetLineHeight($FontPt = '', $lh = '') + { + if (!$FontPt) { + $FontPt = $this->FontSizePt; + } + $fs = $FontPt / Mpdf::SCALE; + $this->lineheight = $this->_computeLineheight($lh, $fs); + } + + function _computeLineheight($lh, $fs = '') + { + if ($this->shrin_k > 1) { + $k = $this->shrin_k; + } else { + $k = 1; + } + if (!$fs) { + $fs = $this->FontSize; + } + if ($lh == 'N') { + $lh = $this->_getNormalLineheight(); + } + if (preg_match('/mm/', $lh)) { + return (((float) $lh) / $k); // convert to number + } elseif ($lh > 0) { + return ($fs * $lh); + } + return ($fs * $this->normalLineheight); + } + + function _setLineYpos(&$fontsize, &$fontdesc, &$CSSlineheight, $blockYpos = false) + { + $ypos['glyphYorigin'] = 0; + $ypos['baseline-shift'] = 0; + $linegap = 0; + $leading = 0; + + if (isset($fontdesc['Ascent']) && $fontdesc['Ascent'] && !$this->useFixedTextBaseline) { + // Fontsize uses font metrics - this method seems to produce results compatible with browsers (except IE9) + $ypos['boxtop'] = $fontdesc['Ascent'] / 1000 * $fontsize; + $ypos['boxbottom'] = $fontdesc['Descent'] / 1000 * $fontsize; + if (isset($fontdesc['Leading'])) { + $linegap = $fontdesc['Leading'] / 1000 * $fontsize; + } + } // Default if not set - uses baselineC + else { + $ypos['boxtop'] = (0.5 + $this->baselineC) * $fontsize; + $ypos['boxbottom'] = -(0.5 - $this->baselineC) * $fontsize; + } + $fontheight = $ypos['boxtop'] - $ypos['boxbottom']; + + if ($this->shrin_k > 1) { + $shrin_k = $this->shrin_k; + } else { + $shrin_k = 1; + } + + $leading = 0; + if ($CSSlineheight == 'N') { + $lh = $this->_getNormalLineheight($fontdesc); + $lineheight = ($fontsize * $lh); + $leading += $linegap; // specified in hhea or sTypo in OpenType tables + } elseif (preg_match('/mm/', $CSSlineheight)) { + $lineheight = (((float) $CSSlineheight) / $shrin_k); // convert to number + } // ??? If lineheight is a factor e.g. 1.3 ?? use factor x 1em or ? use 'normal' lineheight * factor + // Could depend on value for $text_height - a draft CSS value as set above for now + elseif ($CSSlineheight > 0) { + $lineheight = ($fontsize * $CSSlineheight); + } else { + $lineheight = ($fontsize * $this->normalLineheight); + } + + // In general, calculate the "leading" - the difference between the fontheight and the lineheight + // and add half to the top and half to the bottom. BUT + // If an inline element has a font-size less than the block element, and the line-height is set as an em or % value + // it will add too much leading below the font and expand the height of the line - so just use the block element exttop/extbottom: + if (preg_match('/mm/', $CSSlineheight) + && ($blockYpos && $ypos['boxtop'] < $blockYpos['boxtop']) + && ($blockYpos && $ypos['boxbottom'] > $blockYpos['boxbottom'])) { + + $ypos['exttop'] = $blockYpos['exttop']; + $ypos['extbottom'] = $blockYpos['extbottom']; + + } else { + + $leading += ($lineheight - $fontheight); + + $ypos['exttop'] = $ypos['boxtop'] + $leading / 2; + $ypos['extbottom'] = $ypos['boxbottom'] - $leading / 2; + } + + + // TEMP ONLY FOR DEBUGGING ********************************* + // $ypos['lineheight'] = $lineheight; + // $ypos['fontheight'] = $fontheight; + // $ypos['leading'] = $leading; + + return $ypos; + } + + /* Called from WriteFlowingBlock() and finishFlowingBlock() + Determines the line hieght and glyph/writing position + for each element in the line to be written */ + + function _setInlineBlockHeights(&$lineBox, &$stackHeight, &$content, &$font, $is_table) + { + if ($this->shrin_k > 1) { + $shrin_k = $this->shrin_k; + } else { + $shrin_k = 1; + } + + $ypos = []; + $bordypos = []; + $bgypos = []; + + if ($is_table) { + // FOR TABLE + $fontsize = $this->FontSize; + $fontkey = $this->FontFamily . $this->FontStyle; + $fontdesc = $this->fonts[$fontkey]['desc']; + $CSSlineheight = $this->cellLineHeight; + $line_stacking_strategy = $this->cellLineStackingStrategy; // inline-line-height [default] | block-line-height | max-height | grid-height + $line_stacking_shift = $this->cellLineStackingShift; // consider-shifts [default] | disregard-shifts + } else { + // FOR BLOCK FONT + $fontsize = $this->blk[$this->blklvl]['InlineProperties']['size']; + $fontkey = $this->blk[$this->blklvl]['InlineProperties']['family'] . $this->blk[$this->blklvl]['InlineProperties']['style']; + $fontdesc = $this->fonts[$fontkey]['desc']; + $CSSlineheight = $this->blk[$this->blklvl]['line_height']; + // inline-line-height | block-line-height | max-height | grid-height + $line_stacking_strategy = (isset($this->blk[$this->blklvl]['line_stacking_strategy']) ? $this->blk[$this->blklvl]['line_stacking_strategy'] : 'inline-line-height'); + // consider-shifts | disregard-shifts + $line_stacking_shift = (isset($this->blk[$this->blklvl]['line_stacking_shift']) ? $this->blk[$this->blklvl]['line_stacking_shift'] : 'consider-shifts'); + } + $boxLineHeight = $this->_computeLineheight($CSSlineheight, $fontsize); + + + // First, set a "strut" using block font at index $lineBox[-1] + $ypos[-1] = $this->_setLineYpos($fontsize, $fontdesc, $CSSlineheight); + + // for the block element - always taking the block EXTENDED progression including leading - which may be negative + if ($line_stacking_strategy == 'block-line-height') { + $topy = $ypos[-1]['exttop']; + $bottomy = $ypos[-1]['extbottom']; + } else { + $topy = 0; + $bottomy = 0; + } + + // Get text-middle for aligning images/objects + $midpoint = $ypos[-1]['boxtop'] - (($ypos[-1]['boxtop'] - $ypos[-1]['boxbottom']) / 2); + + // for images / inline objects / replaced elements + $mta = 0; // Maximum top-aligned + $mba = 0; // Maximum bottom-aligned + foreach ($content as $k => $chunk) { + if (isset($this->objectbuffer[$k]) && $this->objectbuffer[$k]['type'] == 'listmarker') { + $ypos[$k] = $ypos[-1]; + // UPDATE Maximums + if ($line_stacking_strategy == 'block-line-height' || $line_stacking_strategy == 'grid-height' || $line_stacking_strategy == 'max-height') { // don't include extended block progression of all inline elements + if ($ypos[$k]['boxtop'] > $topy) { + $topy = $ypos[$k]['boxtop']; + } + if ($ypos[$k]['boxbottom'] < $bottomy) { + $bottomy = $ypos[$k]['boxbottom']; + } + } else { + if ($ypos[$k]['exttop'] > $topy) { + $topy = $ypos[$k]['exttop']; + } + if ($ypos[$k]['extbottom'] < $bottomy) { + $bottomy = $ypos[$k]['extbottom']; + } + } + } elseif (isset($this->objectbuffer[$k]) && $this->objectbuffer[$k]['type'] == 'dottab') { // mPDF 6 DOTTAB + $fontsize = $font[$k]['size']; + $fontdesc = $font[$k]['curr']['desc']; + $lh = 1; + $ypos[$k] = $this->_setLineYpos($fontsize, $fontdesc, $lh, $ypos[-1]); // Lineheight=1 fixed + } elseif (isset($this->objectbuffer[$k])) { + $oh = $this->objectbuffer[$k]['OUTER-HEIGHT']; + $va = $this->objectbuffer[$k]['vertical-align']; + + if ($va == 'BS') { // (BASELINE default) + if ($oh > $topy) { + $topy = $oh; + } + } elseif ($va == 'M') { + if (($midpoint + $oh / 2) > $topy) { + $topy = $midpoint + $oh / 2; + } + if (($midpoint - $oh / 2) < $bottomy) { + $bottomy = $midpoint - $oh / 2; + } + } elseif ($va == 'TT') { + if (($ypos[-1]['boxtop'] - $oh) < $bottomy) { + $bottomy = $ypos[-1]['boxtop'] - $oh; + $topy = max($topy, $ypos[-1]['boxtop']); + } + } elseif ($va == 'TB') { + if (($ypos[-1]['boxbottom'] + $oh) > $topy) { + $topy = $ypos[-1]['boxbottom'] + $oh; + $bottomy = min($bottomy, $ypos[-1]['boxbottom']); + } + } elseif ($va == 'T') { + if ($oh > $mta) { + $mta = $oh; + } + } elseif ($va == 'B') { + if ($oh > $mba) { + $mba = $oh; + } + } + } elseif ($content[$k] || $content[$k] === '0') { + // FOR FLOWING BLOCK + $fontsize = $font[$k]['size']; + $fontdesc = $font[$k]['curr']['desc']; + // In future could set CSS line-height from inline elements; for now, use block level: + $ypos[$k] = $this->_setLineYpos($fontsize, $fontdesc, $CSSlineheight, $ypos[-1]); + + if (isset($font[$k]['textparam']['text-baseline']) && $font[$k]['textparam']['text-baseline'] != 0) { + $ypos[$k]['baseline-shift'] = $font[$k]['textparam']['text-baseline']; + } + + // DO ALIGNMENT FOR BASELINES ******************* + // Until most fonts have OpenType BASE tables, this won't work + // $ypos[$k] compared to $ypos[-1] or $ypos[$k-1] using $dominant_baseline and $baseline_table + // UPDATE Maximums + if ($line_stacking_strategy == 'block-line-height' || $line_stacking_strategy == 'grid-height' || $line_stacking_strategy == 'max-height') { // don't include extended block progression of all inline elements + if ($line_stacking_shift == 'disregard-shifts') { + if ($ypos[$k]['boxtop'] > $topy) { + $topy = $ypos[$k]['boxtop']; + } + if ($ypos[$k]['boxbottom'] < $bottomy) { + $bottomy = $ypos[$k]['boxbottom']; + } + } else { + if (($ypos[$k]['boxtop'] + $ypos[$k]['baseline-shift']) > $topy) { + $topy = $ypos[$k]['boxtop'] + $ypos[$k]['baseline-shift']; + } + if (($ypos[$k]['boxbottom'] + $ypos[$k]['baseline-shift']) < $bottomy) { + $bottomy = $ypos[$k]['boxbottom'] + $ypos[$k]['baseline-shift']; + } + } + } else { + if ($line_stacking_shift == 'disregard-shifts') { + if ($ypos[$k]['exttop'] > $topy) { + $topy = $ypos[$k]['exttop']; + } + if ($ypos[$k]['extbottom'] < $bottomy) { + $bottomy = $ypos[$k]['extbottom']; + } + } else { + if (($ypos[$k]['exttop'] + $ypos[$k]['baseline-shift']) > $topy) { + $topy = $ypos[$k]['exttop'] + $ypos[$k]['baseline-shift']; + } + if (($ypos[$k]['extbottom'] + $ypos[$k]['baseline-shift']) < $bottomy) { + $bottomy = $ypos[$k]['extbottom'] + $ypos[$k]['baseline-shift']; + } + } + } + + // If BORDER set on inline element + if (isset($font[$k]['bord']) && $font[$k]['bord']) { + $bordfontsize = $font[$k]['textparam']['bord-decoration']['fontsize'] / $shrin_k; + $bordfontkey = $font[$k]['textparam']['bord-decoration']['fontkey']; + if ($bordfontkey != $fontkey || $bordfontsize != $fontsize || isset($font[$k]['textparam']['bord-decoration']['baseline'])) { + $bordfontdesc = $this->fonts[$bordfontkey]['desc']; + $bordypos[$k] = $this->_setLineYpos($bordfontsize, $bordfontdesc, $CSSlineheight, $ypos[-1]); + if (isset($font[$k]['textparam']['bord-decoration']['baseline']) && $font[$k]['textparam']['bord-decoration']['baseline'] != 0) { + $bordypos[$k]['baseline-shift'] = $font[$k]['textparam']['bord-decoration']['baseline'] / $shrin_k; + } + } + } + // If BACKGROUND set on inline element + if (isset($font[$k]['spanbgcolor']) && $font[$k]['spanbgcolor']) { + $bgfontsize = $font[$k]['textparam']['bg-decoration']['fontsize'] / $shrin_k; + $bgfontkey = $font[$k]['textparam']['bg-decoration']['fontkey']; + if ($bgfontkey != $fontkey || $bgfontsize != $fontsize || isset($font[$k]['textparam']['bg-decoration']['baseline'])) { + $bgfontdesc = $this->fonts[$bgfontkey]['desc']; + $bgypos[$k] = $this->_setLineYpos($bgfontsize, $bgfontdesc, $CSSlineheight, $ypos[-1]); + if (isset($font[$k]['textparam']['bg-decoration']['baseline']) && $font[$k]['textparam']['bg-decoration']['baseline'] != 0) { + $bgypos[$k]['baseline-shift'] = $font[$k]['textparam']['bg-decoration']['baseline'] / $shrin_k; + } + } + } + } + } + + + // TOP or BOTTOM aligned images + if ($mta > ($topy - $bottomy)) { + if (($topy - $mta) < $bottomy) { + $bottomy = $topy - $mta; + } + } + if ($mba > ($topy - $bottomy)) { + if (($bottomy + $mba) > $topy) { + $topy = $bottomy + $mba; + } + } + + if ($line_stacking_strategy == 'block-line-height') { // fixed height set by block element (whether present or not) + $topy = $ypos[-1]['exttop']; + $bottomy = $ypos[-1]['extbottom']; + } + + $inclusiveHeight = $topy - $bottomy; + + // SET $stackHeight taking note of line_stacking_strategy + // NB inclusive height already takes account of need to consider block progression height (excludes leading set by lineheight) + // or extended block progression height (includes leading set by lineheight) + if ($line_stacking_strategy == 'block-line-height') { // fixed = extended block progression height of block element + $stackHeight = $boxLineHeight; + } elseif ($line_stacking_strategy == 'max-height') { // smallest height which includes extended block progression height of block element + // and block progression heights of inline elements (NOT extended) + $stackHeight = $inclusiveHeight; + } elseif ($line_stacking_strategy == 'grid-height') { // smallest multiple of block element lineheight to include + // block progression heights of inline elements (NOT extended) + $stackHeight = $boxLineHeight; + while ($stackHeight < $inclusiveHeight) { + $stackHeight += $boxLineHeight; + } + } else { // 'inline-line-height' = default // smallest height which includes extended block progression height of block element + // AND extended block progression heights of inline elements + $stackHeight = $inclusiveHeight; + } + + $diff = $stackHeight - $inclusiveHeight; + $topy += $diff / 2; + $bottomy -= $diff / 2; + + // ADJUST $ypos => lineBox using $stackHeight; lineBox are all offsets from the top of stackHeight in mm + // and SET IMAGE OFFSETS + $lineBox[-1]['boxtop'] = $topy - $ypos[-1]['boxtop']; + $lineBox[-1]['boxbottom'] = $topy - $ypos[-1]['boxbottom']; + // $lineBox[-1]['exttop'] = $topy - $ypos[-1]['exttop']; + // $lineBox[-1]['extbottom'] = $topy - $ypos[-1]['extbottom']; + $lineBox[-1]['glyphYorigin'] = $topy - $ypos[-1]['glyphYorigin']; + $lineBox[-1]['baseline-shift'] = $ypos[-1]['baseline-shift']; + + $midpoint = $lineBox[-1]['boxbottom'] - (($lineBox[-1]['boxbottom'] - $lineBox[-1]['boxtop']) / 2); + + foreach ($content as $k => $chunk) { + if (isset($this->objectbuffer[$k])) { + $oh = $this->objectbuffer[$k]['OUTER-HEIGHT']; + // LIST MARKERS + if ($this->objectbuffer[$k]['type'] == 'listmarker') { + $oh = $fontsize; + } elseif ($this->objectbuffer[$k]['type'] == 'dottab') { // mPDF 6 DOTTAB + $oh = $font[$k]['size']; // == $this->objectbuffer[$k]['fontsize']/Mpdf::SCALE; + $lineBox[$k]['boxtop'] = $topy - $ypos[$k]['boxtop']; + $lineBox[$k]['boxbottom'] = $topy - $ypos[$k]['boxbottom']; + $lineBox[$k]['glyphYorigin'] = $topy - $ypos[$k]['glyphYorigin']; + $lineBox[$k]['baseline-shift'] = 0; + // continue; + } + $va = $this->objectbuffer[$k]['vertical-align']; // = $objattr['vertical-align'] = set as M,T,B,S + + if ($va == 'BS') { // (BASELINE default) + $lineBox[$k]['top'] = $lineBox[-1]['glyphYorigin'] - $oh; + } elseif ($va == 'M') { + $lineBox[$k]['top'] = $midpoint - $oh / 2; + } elseif ($va == 'TT') { + $lineBox[$k]['top'] = $lineBox[-1]['boxtop']; + } elseif ($va == 'TB') { + $lineBox[$k]['top'] = $lineBox[-1]['boxbottom'] - $oh; + } elseif ($va == 'T') { + $lineBox[$k]['top'] = 0; + } elseif ($va == 'B') { + $lineBox[$k]['top'] = $stackHeight - $oh; + } + } elseif ($content[$k] || $content[$k] === '0') { + $lineBox[$k]['boxtop'] = $topy - $ypos[$k]['boxtop']; + $lineBox[$k]['boxbottom'] = $topy - $ypos[$k]['boxbottom']; + // $lineBox[$k]['exttop'] = $topy - $ypos[$k]['exttop']; + // $lineBox[$k]['extbottom'] = $topy - $ypos[$k]['extbottom']; + $lineBox[$k]['glyphYorigin'] = $topy - $ypos[$k]['glyphYorigin']; + $lineBox[$k]['baseline-shift'] = $ypos[$k]['baseline-shift']; + if (isset($bordypos[$k]['boxtop'])) { + $lineBox[$k]['border-boxtop'] = $topy - $bordypos[$k]['boxtop']; + $lineBox[$k]['border-boxbottom'] = $topy - $bordypos[$k]['boxbottom']; + $lineBox[$k]['border-baseline-shift'] = $bordypos[$k]['baseline-shift']; + } + if (isset($bgypos[$k]['boxtop'])) { + $lineBox[$k]['background-boxtop'] = $topy - $bgypos[$k]['boxtop']; + $lineBox[$k]['background-boxbottom'] = $topy - $bgypos[$k]['boxbottom']; + $lineBox[$k]['background-baseline-shift'] = $bgypos[$k]['baseline-shift']; + } + } + } + } + + function SetBasePath($str = '') + { + if (isset($_SERVER['HTTP_HOST'])) { + $host = $_SERVER['HTTP_HOST']; + } elseif (isset($_SERVER['SERVER_NAME'])) { + $host = $_SERVER['SERVER_NAME']; + } else { + $host = ''; + } + if (!$str) { + if (isset($_SERVER['SCRIPT_NAME'])) { + $currentPath = dirname($_SERVER['SCRIPT_NAME']); + } else { + $currentPath = dirname($_SERVER['PHP_SELF']); + } + $currentPath = str_replace("\\", "/", $currentPath); + if ($currentPath == '/') { + $currentPath = ''; + } + if ($host) { // mPDF 6 + if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] && $_SERVER['HTTPS'] !== 'off') { + $currpath = 'https://' . $host . $currentPath . '/'; + } else { + $currpath = 'http://' . $host . $currentPath . '/'; + } + } else { + $currpath = ''; + } + $this->basepath = $currpath; + $this->basepathIsLocal = true; + return; + } + $str = preg_replace('/\?.*/', '', $str); + if (!preg_match('/(http|https|ftp):\/\/.*\//i', $str)) { + $str .= '/'; + } + $str .= 'xxx'; // in case $str ends in / e.g. http://www.bbc.co.uk/ + $this->basepath = dirname($str) . "/"; // returns e.g. e.g. http://www.google.com/dir1/dir2/dir3/ + $this->basepath = str_replace("\\", "/", $this->basepath); // If on Windows + $tr = parse_url($this->basepath); + if (isset($tr['host']) && ($tr['host'] == $host)) { + $this->basepathIsLocal = true; + } else { + $this->basepathIsLocal = false; + } + } + + public function GetFullPath(&$path, $basepath = '') + { + // When parsing CSS need to pass temporary basepath - so links are relative to current stylesheet + if (!$basepath) { + $basepath = $this->basepath; + } + + // Fix path value + $path = str_replace("\\", '/', $path); // If on Windows + + // mPDF 5.7.2 + if (substr($path, 0, 2) === '//') { + $scheme = parse_url($basepath, PHP_URL_SCHEME); + $scheme = $scheme ?: 'http'; + $path = $scheme . ':' . $path; + } + + $path = preg_replace('|^./|', '', $path); // Inadvertently corrects "./path/etc" and "//www.domain.com/etc" + + if (substr($path, 0, 1) == '#') { + return; + } + + // Skip schemes not supported by installed stream wrappers + $wrappers = stream_get_wrappers(); + $pattern = sprintf('@^(?!%s)[a-z0-9\.\-+]+:.*@i', implode('|', $wrappers)); + if (preg_match($pattern, $path)) { + return; + } + + if (substr($path, 0, 3) == "../") { // It is a relative link + + $backtrackamount = substr_count($path, "../"); + $maxbacktrack = substr_count($basepath, "/") - 3; + $filepath = str_replace("../", '', $path); + $path = $basepath; + + // If it is an invalid relative link, then make it go to directory root + if ($backtrackamount > $maxbacktrack) { + $backtrackamount = $maxbacktrack; + } + + // Backtrack some directories + for ($i = 0; $i < $backtrackamount + 1; $i++) { + $path = substr($path, 0, strrpos($path, "/")); + } + + $path = $path . "/" . $filepath; // Make it an absolute path + + } elseif ((strpos($path, ":/") === false || strpos($path, ":/") > 10) && !is_file($path)) { // It is a local link + + if (substr($path, 0, 1) == "/") { + + $tr = parse_url($basepath); + + // mPDF 5.7.2 + $root = ''; + if (!empty($tr['scheme'])) { + $root .= $tr['scheme'] . '://'; + } + + $root .= isset($tr['host']) ? $tr['host'] : ''; + $root .= ((isset($tr['port']) && $tr['port']) ? (':' . $tr['port']) : ''); // mPDF 5.7.3 + + $path = $root . $path; + + } else { + $path = $basepath . $path; + } + } + // Do nothing if it is an Absolute Link + } + + function docPageNum($num = 0, $extras = false) + { + if ($num < 1) { + $num = $this->page; + } + + $type = $this->defaultPageNumStyle; // set default Page Number Style + $ppgno = $num; + $suppress = 0; + $offset = 0; + $lastreset = 0; + + foreach ($this->PageNumSubstitutions as $psarr) { + + if ($num >= $psarr['from']) { + + if ($psarr['reset']) { + if ($psarr['reset'] > 1) { + $offset = $psarr['reset'] - 1; + } + $ppgno = $num - $psarr['from'] + 1 + $offset; + $lastreset = $psarr['from']; + } + + if ($psarr['type']) { + $type = $psarr['type']; + } + + if (strtoupper($psarr['suppress']) == 'ON' || $psarr['suppress'] == 1) { + $suppress = 1; + } elseif (strtoupper($psarr['suppress']) == 'OFF') { + $suppress = 0; + } + } + } + + if ($suppress) { + return ''; + } + + $ppgno = $this->_getStyledNumber($ppgno, $type); + + if ($extras) { + $ppgno = $this->pagenumPrefix . $ppgno . $this->pagenumSuffix; + } + + return $ppgno; + } + + function docPageNumTotal($num = 0, $extras = false) + { + if ($num < 1) { + $num = $this->page; + } + + $type = $this->defaultPageNumStyle; // set default Page Number Style + $ppgstart = 1; + $ppgend = count($this->pages) + 1; + $suppress = 0; + $offset = 0; + + foreach ($this->PageNumSubstitutions as $psarr) { + if ($num >= $psarr['from']) { + if ($psarr['reset']) { + if ($psarr['reset'] > 1) { + $offset = $psarr['reset'] - 1; + } + $ppgstart = $psarr['from'] + $offset; + $ppgend = count($this->pages) + 1 + $offset; + } + if ($psarr['type']) { + $type = $psarr['type']; + } + if (strtoupper($psarr['suppress']) == 'ON' || $psarr['suppress'] == 1) { + $suppress = 1; + } elseif (strtoupper($psarr['suppress']) == 'OFF') { + $suppress = 0; + } + } + if ($num < $psarr['from']) { + if ($psarr['reset']) { + $ppgend = $psarr['from'] + $offset; + break; + } + } + } + + if ($suppress) { + return ''; + } + + $ppgno = $ppgend - $ppgstart + $offset; + $ppgno = $this->_getStyledNumber($ppgno, $type); + + if ($extras) { + $ppgno = $this->pagenumPrefix . $ppgno . $this->pagenumSuffix; + } + + return $ppgno; + } + + // mPDF 6 + function _getStyledNumber($ppgno, $type, $listmarker = false) + { + if ($listmarker) { + $reverse = true; // Reverse RTL numerals (Hebrew) when using for list + $checkfont = true; // Using list - font is set, so check if character is available + } else { + $reverse = false; // For pagenumbers, RTL numerals (Hebrew) will get reversed later by bidi + $checkfont = false; // For pagenumbers - font is not set, so no check + } + + $decToAlpha = new Conversion\DecToAlpha(); + $decToCjk = new Conversion\DecToCjk(); + $decToHebrew = new Conversion\DecToHebrew(); + $decToRoman = new Conversion\DecToRoman(); + $decToOther = new Conversion\DecToOther($this); + + $lowertype = strtolower($type); + + if ($lowertype == 'upper-latin' || $lowertype == 'upper-alpha' || $type == 'A') { + + $ppgno = $decToAlpha->convert($ppgno, true); + + } elseif ($lowertype == 'lower-latin' || $lowertype == 'lower-alpha' || $type == 'a') { + + $ppgno = $decToAlpha->convert($ppgno, false); + + } elseif ($lowertype == 'upper-roman' || $type == 'I') { + + $ppgno = $decToRoman->convert($ppgno, true); + + } elseif ($lowertype == 'lower-roman' || $type == 'i') { + + $ppgno = $decToRoman->convert($ppgno, false); + + } elseif ($lowertype == 'hebrew') { + + $ppgno = $decToHebrew->convert($ppgno, $reverse); + + } elseif (preg_match('/(arabic-indic|bengali|devanagari|gujarati|gurmukhi|kannada|malayalam|oriya|persian|tamil|telugu|thai|urdu|cambodian|khmer|lao|myanmar)/i', $lowertype, $m)) { + + $cp = $decToOther->getCodePage($m[1]); + $ppgno = $decToOther->convert($ppgno, $cp, $checkfont); + + } elseif ($lowertype == 'cjk-decimal') { + + $ppgno = $decToCjk->convert($ppgno); + + } + + return $ppgno; + } + + function docPageSettings($num = 0) + { + // Returns current type (numberstyle), suppression state for this page number; + // reset is only returned if set for this page number + if ($num < 1) { + $num = $this->page; + } + + $type = $this->defaultPageNumStyle; // set default Page Number Style + $ppgno = $num; + $suppress = 0; + $offset = 0; + $reset = ''; + + foreach ($this->PageNumSubstitutions as $psarr) { + if ($num >= $psarr['from']) { + if ($psarr['reset']) { + if ($psarr['reset'] > 1) { + $offset = $psarr['reset'] - 1; + } + $ppgno = $num - $psarr['from'] + 1 + $offset; + } + if ($psarr['type']) { + $type = $psarr['type']; + } + if (strtoupper($psarr['suppress']) == 'ON' || $psarr['suppress'] == 1) { + $suppress = 1; + } elseif (strtoupper($psarr['suppress']) == 'OFF') { + $suppress = 0; + } + } + if ($num == $psarr['from']) { + $reset = $psarr['reset']; + } + } + + if ($suppress) { + $suppress = 'on'; + } else { + $suppress = 'off'; + } + + return [$type, $suppress, $reset]; + } + + function RestartDocTemplate() + { + $this->docTemplateStart = $this->page; + } + + // Page header + function Header($content = '') + { + + $this->cMarginL = 0; + $this->cMarginR = 0; + + + if (($this->mirrorMargins && ($this->page % 2 == 0) && $this->HTMLHeaderE) || ($this->mirrorMargins && ($this->page % 2 == 1) && $this->HTMLHeader) || (!$this->mirrorMargins && $this->HTMLHeader)) { + $this->writeHTMLHeaders(); + return; + } + } + + /* -- TABLES -- */ + function TableHeaderFooter($content = '', $tablestartpage = '', $tablestartcolumn = '', $horf = 'H', $level = 0, $firstSpread = true, $finalSpread = true) + { + if (($horf == 'H' || $horf == 'F') && !empty($content)) { // mPDF 5.7.2 + $table = &$this->table[1][1]; + + // mPDF 5.7.2 + if ($horf == 'F') { // Table Footer + $firstrow = count($table['cells']) - $table['footernrows']; + $lastrow = count($table['cells']) - 1; + } else { // Table Header + $firstrow = 0; + $lastrow = $table['headernrows'] - 1; + } + if (empty($content[$firstrow])) { + if ($this->debug) { + throw new \Mpdf\MpdfException(" must precede in a table"); + } else { + return; + } + } + + + // Advance down page by half width of top border + if ($horf == 'H') { // Only if header + if ($table['borders_separate']) { + $adv = $table['border_spacing_V'] / 2 + $table['border_details']['T']['w'] + $table['padding']['T']; + } else { + $adv = $table['max_cell_border_width']['T'] / 2; + } + if ($adv) { + if ($this->table_rotate) { + $this->y += ($adv); + } else { + $this->DivLn($adv, $this->blklvl, true); + } + } + } + + $topy = $content[$firstrow][0]['y'] - $this->y; + + for ($i = $firstrow; $i <= $lastrow; $i++) { + $y = $this->y; + + /* -- COLUMNS -- */ + // If outside columns, this is done in PaintDivBB + if ($this->ColActive) { + // OUTER FILL BGCOLOR of DIVS + if ($this->blklvl > 0) { + $firstblockfill = $this->GetFirstBlockFill(); + if ($firstblockfill && $this->blklvl >= $firstblockfill) { + $divh = $content[$i][0]['h']; + $bak_x = $this->x; + $this->DivLn($divh, -3, false); + // Reset current block fill + $bcor = $this->blk[$this->blklvl]['bgcolorarray']; + $this->SetFColor($bcor); + $this->x = $bak_x; + } + } + } + /* -- END COLUMNS -- */ + + $colctr = 0; + foreach ($content[$i] as $tablehf) { + $colctr++; + $y = Arrays::get($tablehf, 'y', null) - $topy; + $this->y = $y; + // Set some cell values + $x = Arrays::get($tablehf, 'x', null); + if (($this->mirrorMargins) && ($tablestartpage == 'ODD') && (($this->page) % 2 == 0)) { // EVEN + $x = $x + $this->MarginCorrection; + } elseif (($this->mirrorMargins) && ($tablestartpage == 'EVEN') && (($this->page) % 2 == 1)) { // ODD + $x = $x + $this->MarginCorrection; + } + /* -- COLUMNS -- */ + // Added to correct for Columns + if ($this->ColActive) { + if ($this->directionality == 'rtl') { // *OTL* + $x -= ($this->CurrCol - $tablestartcolumn) * ($this->ColWidth + $this->ColGap); // *OTL* + } // *OTL* + else { // *OTL* + $x += ($this->CurrCol - $tablestartcolumn) * ($this->ColWidth + $this->ColGap); + } // *OTL* + } + /* -- END COLUMNS -- */ + + if ($colctr == 1) { + $x0 = $x; + } + + // mPDF ITERATION + if ($this->iterationCounter) { + foreach ($tablehf['textbuffer'] as $k => $t) { + if (!is_array($t[0]) && preg_match('/{iteration ([a-zA-Z0-9_]+)}/', $t[0], $m)) { + $vname = '__' . $m[1] . '_'; + if (!isset($this->$vname)) { + $this->$vname = 1; + } else { + $this->$vname++; + } + $tablehf['textbuffer'][$k][0] = preg_replace('/{iteration ' . $m[1] . '}/', $this->$vname, $tablehf['textbuffer'][$k][0]); + } + } + } + + $w = Arrays::get($tablehf, 'w', null); + $h = Arrays::get($tablehf, 'h', null); + $va = Arrays::get($tablehf, 'va', null); + $R = Arrays::get($tablehf, 'R', null); + $direction = Arrays::get($tablehf, 'direction', null); + $mih = Arrays::get($tablehf, 'mih', null); + $border = Arrays::get($tablehf, 'border', null); + $border_details = Arrays::get($tablehf, 'border_details', null); + $padding = Arrays::get($tablehf, 'padding', null); + $this->tabletheadjustfinished = true; + + $textbuffer = Arrays::get($tablehf, 'textbuffer', null); + + // Align + $align = Arrays::get($tablehf, 'a', null); + $this->cellTextAlign = $align; + + $this->cellLineHeight = Arrays::get($tablehf, 'cellLineHeight', null); + $this->cellLineStackingStrategy = Arrays::get($tablehf, 'cellLineStackingStrategy', null); + $this->cellLineStackingShift = Arrays::get($tablehf, 'cellLineStackingShift', null); + + $this->x = $x; + + if ($this->ColActive) { + if ($table['borders_separate']) { + $tablefill = isset($table['bgcolor'][-1]) ? $table['bgcolor'][-1] : 0; + if ($tablefill) { + $color = $this->colorConverter->convert($tablefill, $this->PDFAXwarnings); + if ($color) { + $xadj = ($table['border_spacing_H'] / 2); + $yadj = ($table['border_spacing_V'] / 2); + $wadj = $table['border_spacing_H']; + $hadj = $table['border_spacing_V']; + if ($i == $firstrow && $horf == 'H') { // Top + $yadj += $table['padding']['T'] + $table['border_details']['T']['w']; + $hadj += $table['padding']['T'] + $table['border_details']['T']['w']; + } + if (($i == ($lastrow) || (isset($tablehf['rowspan']) && ($i + $tablehf['rowspan']) == ($lastrow + 1)) || (!isset($tablehf['rowspan']) && ($i + 1) == ($lastrow + 1))) && $horf == 'F') { // Bottom + $hadj += $table['padding']['B'] + $table['border_details']['B']['w']; + } + if ($colctr == 1) { // Left + $xadj += $table['padding']['L'] + $table['border_details']['L']['w']; + $wadj += $table['padding']['L'] + $table['border_details']['L']['w']; + } + if ($colctr == count($content[$i])) { // Right + $wadj += $table['padding']['R'] + $table['border_details']['R']['w']; + } + $this->SetFColor($color); + $this->Rect($x - $xadj, $y - $yadj, $w + $wadj, $h + $hadj, 'F'); + } + } + } + } + + if ($table['empty_cells'] != 'hide' || !empty($textbuffer) || !$table['borders_separate']) { + $paintcell = true; + } else { + $paintcell = false; + } + + // Vertical align + if ($R && intval($R) > 0 && isset($va) && $va != 'B') { + $va = 'B'; + } + + if (!isset($va) || empty($va) || $va == 'M') { + $this->y += ($h - $mih) / 2; + } elseif (isset($va) && $va == 'B') { + $this->y += $h - $mih; + } + + + // TABLE ROW OR CELL FILL BGCOLOR + $fill = 0; + if (isset($tablehf['bgcolor']) && $tablehf['bgcolor'] && $tablehf['bgcolor'] != 'transparent') { + $fill = $tablehf['bgcolor']; + $leveladj = 6; + } elseif (isset($content[$i][0]['trbgcolor']) && $content[$i][0]['trbgcolor'] && $content[$i][0]['trbgcolor'] != 'transparent') { // Row color + $fill = $content[$i][0]['trbgcolor']; + $leveladj = 3; + } + if ($fill && $paintcell) { + $color = $this->colorConverter->convert($fill, $this->PDFAXwarnings); + if ($color) { + if ($table['borders_separate']) { + if ($this->ColActive) { + $this->SetFColor($color); + $this->Rect($x + ($table['border_spacing_H'] / 2), $y + ($table['border_spacing_V'] / 2), $w - $table['border_spacing_H'], $h - $table['border_spacing_V'], 'F'); + } else { + $this->tableBackgrounds[$level * 9 + $leveladj][] = ['gradient' => false, 'x' => ($x + ($table['border_spacing_H'] / 2)), 'y' => ($y + ($table['border_spacing_V'] / 2)), 'w' => ($w - $table['border_spacing_H']), 'h' => ($h - $table['border_spacing_V']), 'col' => $color]; + } + } else { + if ($this->ColActive) { + $this->SetFColor($color); + $this->Rect($x, $y, $w, $h, 'F'); + } else { + $this->tableBackgrounds[$level * 9 + $leveladj][] = ['gradient' => false, 'x' => $x, 'y' => $y, 'w' => $w, 'h' => $h, 'col' => $color]; + } + } + } + } + + + /* -- BACKGROUNDS -- */ + if (isset($tablehf['gradient']) && $tablehf['gradient'] && $paintcell) { + $g = $this->gradient->parseBackgroundGradient($tablehf['gradient']); + if ($g) { + if ($table['borders_separate']) { + $px = $x + ($table['border_spacing_H'] / 2); + $py = $y + ($table['border_spacing_V'] / 2); + $pw = $w - $table['border_spacing_H']; + $ph = $h - $table['border_spacing_V']; + } else { + $px = $x; + $py = $y; + $pw = $w; + $ph = $h; + } + if ($this->ColActive) { + $this->gradient->Gradient($px, $py, $pw, $ph, $g['type'], $g['stops'], $g['colorspace'], $g['coords'], $g['extend']); + } else { + $this->tableBackgrounds[$level * 9 + 7][] = ['gradient' => true, 'x' => $px, 'y' => $py, 'w' => $pw, 'h' => $ph, 'gradtype' => $g['type'], 'stops' => $g['stops'], 'colorspace' => $g['colorspace'], 'coords' => $g['coords'], 'extend' => $g['extend'], 'clippath' => '']; + } + } + } + + if (isset($tablehf['background-image']) && $paintcell) { + if ($tablehf['background-image']['gradient'] && preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient/', $tablehf['background-image']['gradient'])) { + $g = $this->gradient->parseMozGradient($tablehf['background-image']['gradient']); + if ($g) { + if ($table['borders_separate']) { + $px = $x + ($table['border_spacing_H'] / 2); + $py = $y + ($table['border_spacing_V'] / 2); + $pw = $w - $table['border_spacing_H']; + $ph = $h - $table['border_spacing_V']; + } else { + $px = $x; + $py = $y; + $pw = $w; + $ph = $h; + } + if ($this->ColActive) { + $this->gradient->Gradient($px, $py, $pw, $ph, $g['type'], $g['stops'], $g['colorspace'], $g['coords'], $g['extend']); + } else { + $this->tableBackgrounds[$level * 9 + 7][] = ['gradient' => true, 'x' => $px, 'y' => $py, 'w' => $pw, 'h' => $ph, 'gradtype' => $g['type'], 'stops' => $g['stops'], 'colorspace' => $g['colorspace'], 'coords' => $g['coords'], 'extend' => $g['extend'], 'clippath' => '']; + } + } + } elseif ($tablehf['background-image']['image_id']) { // Background pattern + $n = count($this->patterns) + 1; + if ($table['borders_separate']) { + $px = $x + ($table['border_spacing_H'] / 2); + $py = $y + ($table['border_spacing_V'] / 2); + $pw = $w - $table['border_spacing_H']; + $ph = $h - $table['border_spacing_V']; + } else { + $px = $x; + $py = $y; + $pw = $w; + $ph = $h; + } + if ($this->ColActive) { + list($orig_w, $orig_h, $x_repeat, $y_repeat) = $this->_resizeBackgroundImage($tablehf['background-image']['orig_w'], $tablehf['background-image']['orig_h'], $pw, $ph, $tablehf['background-image']['resize'], $tablehf['background-image']['x_repeat'], $tablehf['background-image']['y_repeat']); + $this->patterns[$n] = ['x' => $px, 'y' => $py, 'w' => $pw, 'h' => $ph, 'pgh' => $this->h, 'image_id' => $tablehf['background-image']['image_id'], 'orig_w' => $orig_w, 'orig_h' => $orig_h, 'x_pos' => $tablehf['background-image']['x_pos'], 'y_pos' => $tablehf['background-image']['y_pos'], 'x_repeat' => $x_repeat, 'y_repeat' => $y_repeat, 'itype' => $tablehf['background-image']['itype']]; + if ($tablehf['background-image']['opacity'] > 0 && $tablehf['background-image']['opacity'] < 1) { + $opac = $this->SetAlpha($tablehf['background-image']['opacity'], 'Normal', true); + } else { + $opac = ''; + } + $this->writer->write(sprintf('q /Pattern cs /P%d scn %s %.3F %.3F %.3F %.3F re f Q', $n, $opac, $px * Mpdf::SCALE, ($this->h - $py) * Mpdf::SCALE, $pw * Mpdf::SCALE, -$ph * Mpdf::SCALE)); + } else { + $this->tableBackgrounds[$level * 9 + 8][] = ['x' => $px, 'y' => $py, 'w' => $pw, 'h' => $ph, 'image_id' => $tablehf['background-image']['image_id'], 'orig_w' => $tablehf['background-image']['orig_w'], 'orig_h' => $tablehf['background-image']['orig_h'], 'x_pos' => $tablehf['background-image']['x_pos'], 'y_pos' => $tablehf['background-image']['y_pos'], 'x_repeat' => $tablehf['background-image']['x_repeat'], 'y_repeat' => $tablehf['background-image']['y_repeat'], 'clippath' => '', 'resize' => $tablehf['background-image']['resize'], 'opacity' => $tablehf['background-image']['opacity'], 'itype' => $tablehf['background-image']['itype']]; + } + } + } + /* -- END BACKGROUNDS -- */ + + // Cell Border + if ($table['borders_separate'] && $paintcell && $border) { + $this->_tableRect($x + ($table['border_spacing_H'] / 2) + ($border_details['L']['w'] / 2), $y + ($table['border_spacing_V'] / 2) + ($border_details['T']['w'] / 2), $w - $table['border_spacing_H'] - ($border_details['L']['w'] / 2) - ($border_details['R']['w'] / 2), $h - $table['border_spacing_V'] - ($border_details['T']['w'] / 2) - ($border_details['B']['w'] / 2), $border, $border_details, false, $table['borders_separate']); + } elseif ($paintcell && $border) { + $this->_tableRect($x, $y, $w, $h, $border, $border_details, true, $table['borders_separate']); // true causes buffer + } + + // Print cell content + if (!empty($textbuffer)) { + if ($horf == 'F' && preg_match('/{colsum([0-9]*)[_]*}/', $textbuffer[0][0], $m)) { + $rep = sprintf("%01." . intval($m[1]) . "f", $this->colsums[$colctr - 1]); + $textbuffer[0][0] = preg_replace('/{colsum[0-9_]*}/', $rep, $textbuffer[0][0]); + } + + if ($R) { + $cellPtSize = $textbuffer[0][11] / $this->shrin_k; + if (!$cellPtSize) { + $cellPtSize = $this->default_font_size; + } + $cellFontHeight = ($cellPtSize / Mpdf::SCALE); + $opx = $this->x; + $opy = $this->y; + $angle = intval($R); + + // Only allow 45 - 90 degrees (when bottom-aligned) or -90 + if ($angle > 90) { + $angle = 90; + } elseif ($angle > 0 && (isset($va) && $va != 'B')) { + $angle = 90; + } elseif ($angle > 0 && $angle < 45) { + $angle = 45; + } elseif ($angle < 0) { + $angle = -90; + } + + $offset = ((sin(deg2rad($angle))) * 0.37 * $cellFontHeight); + if (isset($align) && $align == 'R') { + $this->x += ($w) + ($offset) - ($cellFontHeight / 3) - ($padding['R'] + $border_details['R']['w']); + } elseif (!isset($align) || $align == 'C') { + $this->x += ($w / 2) + ($offset); + } else { + $this->x += ($offset) + ($cellFontHeight / 3) + ($padding['L'] + $border_details['L']['w']); + } + $str = ''; + foreach ($tablehf['textbuffer'] as $t) { + $str .= $t[0] . ' '; + } + $str = rtrim($str); + + if (!isset($va) || $va == 'M') { + $this->y -= ($h - $mih) / 2; // Undo what was added earlier VERTICAL ALIGN + if ($angle > 0) { + $this->y += (($h - $mih) / 2) + ($padding['T'] + $border_details['T']['w']) + ($mih - ($padding['T'] + $border_details['T']['w'] + $border_details['B']['w'] + $padding['B'])); + } elseif ($angle < 0) { + $this->y += (($h - $mih) / 2) + ($padding['T'] + $border_details['T']['w']); + } + } elseif (isset($va) && $va == 'B') { + $this->y -= $h - $mih; // Undo what was added earlier VERTICAL ALIGN + if ($angle > 0) { + $this->y += $h - ($border_details['B']['w'] + $padding['B']); + } elseif ($angle < 0) { + $this->y += $h - $mih + ($padding['T'] + $border_details['T']['w']); + } + } elseif (isset($va) && $va == 'T') { + if ($angle > 0) { + $this->y += $mih - ($border_details['B']['w'] + $padding['B']); + } elseif ($angle < 0) { + $this->y += ($padding['T'] + $border_details['T']['w']); + } + } + + $this->Rotate($angle, $this->x, $this->y); + $s_fs = $this->FontSizePt; + $s_f = $this->FontFamily; + $s_st = $this->FontStyle; + if (!empty($textbuffer[0][3])) { // Font Color + $cor = $textbuffer[0][3]; + $this->SetTColor($cor); + } + $this->SetFont($textbuffer[0][4], $textbuffer[0][2], $cellPtSize, true, true); + + $this->magic_reverse_dir($str, $this->directionality, $textbuffer[0][18]); + $this->Text($this->x, $this->y, $str, $textbuffer[0][18], $textbuffer[0][8]); // textvar + $this->Rotate(0); + $this->SetFont($s_f, $s_st, $s_fs, true, true); + $this->SetTColor(0); + $this->x = $opx; + $this->y = $opy; + } else { + if ($table['borders_separate']) { // NB twice border width + $xadj = $border_details['L']['w'] + $padding['L'] + ($table['border_spacing_H'] / 2); + $wadj = $border_details['L']['w'] + $border_details['R']['w'] + $padding['L'] + $padding['R'] + $table['border_spacing_H']; + $yadj = $border_details['T']['w'] + $padding['T'] + ($table['border_spacing_H'] / 2); + } else { + $xadj = $border_details['L']['w'] / 2 + $padding['L']; + $wadj = ($border_details['L']['w'] + $border_details['R']['w']) / 2 + $padding['L'] + $padding['R']; + $yadj = $border_details['T']['w'] / 2 + $padding['T']; + } + + $this->divwidth = $w - ($wadj); + $this->x += $xadj; + $this->y += $yadj; + $this->printbuffer($textbuffer, '', true, false, $direction); + } + } + $textbuffer = []; + + /* -- BACKGROUNDS -- */ + if (!$this->ColActive) { + if (isset($content[$i][0]['trgradients']) && ($colctr == 1 || $table['borders_separate'])) { + $g = $this->gradient->parseBackgroundGradient($content[$i][0]['trgradients']); + if ($g) { + $gx = $x0; + $gy = $y; + $gh = $h; + $gw = $table['w'] - ($table['max_cell_border_width']['L'] / 2) - ($table['max_cell_border_width']['R'] / 2) - $table['margin']['L'] - $table['margin']['R']; + if ($table['borders_separate']) { + $gw -= ($table['padding']['L'] + $table['border_details']['L']['w'] + $table['padding']['R'] + $table['border_details']['R']['w'] + $table['border_spacing_H']); + $clx = $x + ($table['border_spacing_H'] / 2); + $cly = $y + ($table['border_spacing_V'] / 2); + $clw = $w - $table['border_spacing_H']; + $clh = $h - $table['border_spacing_V']; + // Set clipping path + $s = $this->_setClippingPath($clx, $cly, $clw, $clh); // mPDF 6 + $this->tableBackgrounds[$level * 9 + 4][] = ['gradient' => true, 'x' => $gx + ($table['border_spacing_H'] / 2), 'y' => $gy + ($table['border_spacing_V'] / 2), 'w' => $gw - $table['border_spacing_V'], 'h' => $gh - $table['border_spacing_H'], 'gradtype' => $g['type'], 'stops' => $g['stops'], 'colorspace' => $g['colorspace'], 'coords' => $g['coords'], 'extend' => $g['extend'], 'clippath' => $s]; + } else { + $this->tableBackgrounds[$level * 9 + 4][] = ['gradient' => true, 'x' => $gx, 'y' => $gy, 'w' => $gw, 'h' => $gh, 'gradtype' => $g['type'], 'stops' => $g['stops'], 'colorspace' => $g['colorspace'], 'coords' => $g['coords'], 'extend' => $g['extend'], 'clippath' => '']; + } + } + } + + if (isset($content[$i][0]['trbackground-images']) && ($colctr == 1 || $table['borders_separate'])) { + if ($content[$i][0]['trbackground-images']['gradient'] && preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient/', $content[$i][0]['trbackground-images']['gradient'])) { + $g = $this->gradient->parseMozGradient($content[$i][0]['trbackground-images']['gradient']); + if ($g) { + $gx = $x0; + $gy = $y; + $gh = $h; + $gw = $table['w'] - ($table['max_cell_border_width']['L'] / 2) - ($table['max_cell_border_width']['R'] / 2) - $table['margin']['L'] - $table['margin']['R']; + if ($table['borders_separate']) { + $gw -= ($table['padding']['L'] + $table['border_details']['L']['w'] + $table['padding']['R'] + $table['border_details']['R']['w'] + $table['border_spacing_H']); + $clx = $x + ($table['border_spacing_H'] / 2); + $cly = $y + ($table['border_spacing_V'] / 2); + $clw = $w - $table['border_spacing_H']; + $clh = $h - $table['border_spacing_V']; + // Set clipping path + $s = $this->_setClippingPath($clx, $cly, $clw, $clh); // mPDF 6 + $this->tableBackgrounds[$level * 9 + 4][] = ['gradient' => true, 'x' => $gx + ($table['border_spacing_H'] / 2), 'y' => $gy + ($table['border_spacing_V'] / 2), 'w' => $gw - $table['border_spacing_V'], 'h' => $gh - $table['border_spacing_H'], 'gradtype' => $g['type'], 'stops' => $g['stops'], 'colorspace' => $g['colorspace'], 'coords' => $g['coords'], 'extend' => $g['extend'], 'clippath' => $s]; + } else { + $this->tableBackgrounds[$level * 9 + 4][] = ['gradient' => true, 'x' => $gx, 'y' => $gy, 'w' => $gw, 'h' => $gh, 'gradtype' => $g['type'], 'stops' => $g['stops'], 'colorspace' => $g['colorspace'], 'coords' => $g['coords'], 'extend' => $g['extend'], 'clippath' => '']; + } + } + } else { + $image_id = $content[$i][0]['trbackground-images']['image_id']; + $orig_w = $content[$i][0]['trbackground-images']['orig_w']; + $orig_h = $content[$i][0]['trbackground-images']['orig_h']; + $x_pos = $content[$i][0]['trbackground-images']['x_pos']; + $y_pos = $content[$i][0]['trbackground-images']['y_pos']; + $x_repeat = $content[$i][0]['trbackground-images']['x_repeat']; + $y_repeat = $content[$i][0]['trbackground-images']['y_repeat']; + $resize = $content[$i][0]['trbackground-images']['resize']; + $opacity = $content[$i][0]['trbackground-images']['opacity']; + $itype = $content[$i][0]['trbackground-images']['itype']; + + $clippath = ''; + $gx = $x0; + $gy = $y; + $gh = $h; + $gw = $table['w'] - ($table['max_cell_border_width']['L'] / 2) - ($table['max_cell_border_width']['R'] / 2) - $table['margin']['L'] - $table['margin']['R']; + if ($table['borders_separate']) { + $gw -= ($table['padding']['L'] + $table['border_details']['L']['w'] + $table['padding']['R'] + $table['border_details']['R']['w'] + $table['border_spacing_H']); + $clx = $x + ($table['border_spacing_H'] / 2); + $cly = $y + ($table['border_spacing_V'] / 2); + $clw = $w - $table['border_spacing_H']; + $clh = $h - $table['border_spacing_V']; + // Set clipping path + $s = $this->_setClippingPath($clx, $cly, $clw, $clh); // mPDF 6 + $this->tableBackgrounds[$level * 9 + 5][] = ['x' => $gx + ($table['border_spacing_H'] / 2), 'y' => $gy + ($table['border_spacing_V'] / 2), 'w' => $gw - $table['border_spacing_V'], 'h' => $gh - $table['border_spacing_H'], 'image_id' => $image_id, 'orig_w' => $orig_w, 'orig_h' => $orig_h, 'x_pos' => $x_pos, 'y_pos' => $y_pos, 'x_repeat' => $x_repeat, 'y_repeat' => $y_repeat, 'clippath' => $s, 'resize' => $resize, 'opacity' => $opacity, 'itype' => $itype]; + } else { + $this->tableBackgrounds[$level * 9 + 5][] = ['x' => $gx, 'y' => $gy, 'w' => $gw, 'h' => $gh, 'image_id' => $image_id, 'orig_w' => $orig_w, 'orig_h' => $orig_h, 'x_pos' => $x_pos, 'y_pos' => $y_pos, 'x_repeat' => $x_repeat, 'y_repeat' => $y_repeat, 'clippath' => '', 'resize' => $resize, 'opacity' => $opacity, 'itype' => $itype]; + } + } + } + } + /* -- END BACKGROUNDS -- */ + + // TABLE BORDER - if separate OR collapsed and only table border + if (($table['borders_separate'] || ($this->simpleTables && !$table['simple']['border'])) && $table['border']) { + $halfspaceL = $table['padding']['L'] + ($table['border_spacing_H'] / 2); + $halfspaceR = $table['padding']['R'] + ($table['border_spacing_H'] / 2); + $halfspaceT = $table['padding']['T'] + ($table['border_spacing_V'] / 2); + $halfspaceB = $table['padding']['B'] + ($table['border_spacing_V'] / 2); + $tbx = $x; + $tby = $y; + $tbw = $w; + $tbh = $h; + $tab_bord = 0; + $corner = ''; + if ($i == $firstrow && $horf == 'H') { // Top + $tby -= $halfspaceT + ($table['border_details']['T']['w'] / 2); + $tbh += $halfspaceT + ($table['border_details']['T']['w'] / 2); + $this->setBorder($tab_bord, Border::TOP); + $corner .= 'T'; + } + if (($i == ($lastrow) || (isset($tablehf['rowspan']) && ($i + $tablehf['rowspan']) == ($lastrow + 1))) && $horf == 'F') { // Bottom + $tbh += $halfspaceB + ($table['border_details']['B']['w'] / 2); + $this->setBorder($tab_bord, Border::BOTTOM); + $corner .= 'B'; + } + if ($colctr == 1 && $firstSpread) { // Left + $tbx -= $halfspaceL + ($table['border_details']['L']['w'] / 2); + $tbw += $halfspaceL + ($table['border_details']['L']['w'] / 2); + $this->setBorder($tab_bord, Border::LEFT); + $corner .= 'L'; + } + if ($colctr == count($content[$i]) && $finalSpread) { // Right + $tbw += $halfspaceR + ($table['border_details']['R']['w'] / 2); + $this->setBorder($tab_bord, Border::RIGHT); + $corner .= 'R'; + } + $this->_tableRect($tbx, $tby, $tbw, $tbh, $tab_bord, $table['border_details'], false, $table['borders_separate'], 'table', $corner, $table['border_spacing_V'], $table['border_spacing_H']); + } + }// end column $content + $this->y = $y + $h; // Update y coordinate + }// end row $i + unset($table); + $this->colsums = []; + } + } + + /* -- END TABLES -- */ + + function SetHTMLHeader($header = '', $OE = '', $write = false) + { + + $height = 0; + if (is_array($header) && isset($header['html']) && $header['html']) { + $Hhtml = $header['html']; + if ($this->setAutoTopMargin) { + if (isset($header['h'])) { + $height = $header['h']; + } else { + $height = $this->_getHtmlHeight($Hhtml); + } + } + } elseif (!is_array($header) && $header) { + $Hhtml = $header; + if ($this->setAutoTopMargin) { + $height = $this->_getHtmlHeight($Hhtml); + } + } else { + $Hhtml = ''; + } + + if ($OE !== 'E') { + $OE = 'O'; + } + + if ($OE === 'E') { + if ($Hhtml) { + $this->HTMLHeaderE = []; + $this->HTMLHeaderE['html'] = $Hhtml; + $this->HTMLHeaderE['h'] = $height; + } else { + $this->HTMLHeaderE = ''; + } + } else { + if ($Hhtml) { + $this->HTMLHeader = []; + $this->HTMLHeader['html'] = $Hhtml; + $this->HTMLHeader['h'] = $height; + } else { + $this->HTMLHeader = ''; + } + } + + if (!$this->mirrorMargins && $OE == 'E') { + return; + } + if ($Hhtml == '') { + return; + } + + if ($this->setAutoTopMargin == 'pad') { + $this->tMargin = $this->margin_header + $height + $this->orig_tMargin; + if (isset($this->saveHTMLHeader[$this->page][$OE]['mt'])) { + $this->saveHTMLHeader[$this->page][$OE]['mt'] = $this->tMargin; + } + } elseif ($this->setAutoTopMargin == 'stretch') { + $this->tMargin = max($this->orig_tMargin, $this->margin_header + $height + $this->autoMarginPadding); + if (isset($this->saveHTMLHeader[$this->page][$OE]['mt'])) { + $this->saveHTMLHeader[$this->page][$OE]['mt'] = $this->tMargin; + } + } + if ($write && $this->state != 0 && (($this->mirrorMargins && $OE == 'E' && ($this->page) % 2 == 0) || ($this->mirrorMargins && $OE != 'E' && ($this->page) % 2 == 1) || !$this->mirrorMargins)) { + $this->writeHTMLHeaders(); + } + } + + function SetHTMLFooter($footer = '', $OE = '') + { + $height = 0; + if (is_array($footer) && isset($footer['html']) && $footer['html']) { + $Fhtml = $footer['html']; + if ($this->setAutoBottomMargin) { + if (isset($footer['h'])) { + $height = $footer['h']; + } else { + $height = $this->_getHtmlHeight($Fhtml); + } + } + } elseif (!is_array($footer) && $footer) { + $Fhtml = $footer; + if ($this->setAutoBottomMargin) { + $height = $this->_getHtmlHeight($Fhtml); + } + } else { + $Fhtml = ''; + } + + if ($OE !== 'E') { + $OE = 'O'; + } + + if ($OE === 'E') { + if ($Fhtml) { + $this->HTMLFooterE = []; + $this->HTMLFooterE['html'] = $Fhtml; + $this->HTMLFooterE['h'] = $height; + } else { + $this->HTMLFooterE = ''; + } + } else { + if ($Fhtml) { + $this->HTMLFooter = []; + $this->HTMLFooter['html'] = $Fhtml; + $this->HTMLFooter['h'] = $height; + } else { + $this->HTMLFooter = ''; + } + } + + if (!$this->mirrorMargins && $OE == 'E') { + return; + } + + if ($Fhtml == '') { + return false; + } + + if ($this->setAutoBottomMargin == 'pad') { + $this->bMargin = $this->margin_footer + $height + $this->orig_bMargin; + $this->PageBreakTrigger = $this->h - $this->bMargin; + if (isset($this->saveHTMLHeader[$this->page][$OE]['mb'])) { + $this->saveHTMLHeader[$this->page][$OE]['mb'] = $this->bMargin; + } + } elseif ($this->setAutoBottomMargin == 'stretch') { + $this->bMargin = max($this->orig_bMargin, $this->margin_footer + $height + $this->autoMarginPadding); + $this->PageBreakTrigger = $this->h - $this->bMargin; + if (isset($this->saveHTMLHeader[$this->page][$OE]['mb'])) { + $this->saveHTMLHeader[$this->page][$OE]['mb'] = $this->bMargin; + } + } + } + + function _getHtmlHeight($html) + { + $save_state = $this->state; + if ($this->state == 0) { + $this->AddPage($this->CurOrientation); + } + $this->state = 2; + $this->Reset(); + $this->pageoutput[$this->page] = []; + $save_x = $this->x; + $save_y = $this->y; + $this->x = $this->lMargin; + $this->y = $this->margin_header; + $html = str_replace('{PAGENO}', $this->pagenumPrefix . $this->docPageNum($this->page) . $this->pagenumSuffix, $html); + $html = str_replace($this->aliasNbPgGp, $this->nbpgPrefix . $this->docPageNumTotal($this->page) . $this->nbpgSuffix, $html); + $html = str_replace($this->aliasNbPg, $this->page, $html); + $html = preg_replace_callback('/\{DATE\s+(.*?)\}/', [$this, 'date_callback'], $html); // mPDF 5.7 + $this->HTMLheaderPageLinks = []; + $this->HTMLheaderPageAnnots = []; + $this->HTMLheaderPageForms = []; + $savepb = $this->pageBackgrounds; + $this->writingHTMLheader = true; + $this->WriteHTML($html, HTMLParserMode::HTML_HEADER_BUFFER); + $this->writingHTMLheader = false; + $h = ($this->y - $this->margin_header); + $this->Reset(); + // mPDF 5.7.2 - Clear in case Float used in Header/Footer + $this->blk[0]['blockContext'] = 0; + $this->blk[0]['float_endpos'] = 0; + + $this->pageoutput[$this->page] = []; + $this->headerbuffer = ''; + $this->pageBackgrounds = $savepb; + $this->x = $save_x; + $this->y = $save_y; + $this->state = $save_state; + if ($save_state == 0) { + unset($this->pages[1]); + $this->page = 0; + } + return $h; + } + + // Called internally from Header + function writeHTMLHeaders() + { + + if ($this->mirrorMargins && ($this->page) % 2 == 0) { + $OE = 'E'; + } else { + $OE = 'O'; + } + + if ($OE === 'E') { + $this->saveHTMLHeader[$this->page][$OE]['html'] = $this->HTMLHeaderE['html']; + } else { + $this->saveHTMLHeader[$this->page][$OE]['html'] = $this->HTMLHeader['html']; + } + + if ($this->forcePortraitHeaders && $this->CurOrientation == 'L' && $this->CurOrientation != $this->DefOrientation) { + $this->saveHTMLHeader[$this->page][$OE]['rotate'] = true; + $this->saveHTMLHeader[$this->page][$OE]['ml'] = $this->tMargin; + $this->saveHTMLHeader[$this->page][$OE]['mr'] = $this->bMargin; + $this->saveHTMLHeader[$this->page][$OE]['mh'] = $this->margin_header; + $this->saveHTMLHeader[$this->page][$OE]['mf'] = $this->margin_footer; + $this->saveHTMLHeader[$this->page][$OE]['pw'] = $this->h; + $this->saveHTMLHeader[$this->page][$OE]['ph'] = $this->w; + } else { + $this->saveHTMLHeader[$this->page][$OE]['ml'] = $this->lMargin; + $this->saveHTMLHeader[$this->page][$OE]['mr'] = $this->rMargin; + $this->saveHTMLHeader[$this->page][$OE]['mh'] = $this->margin_header; + $this->saveHTMLHeader[$this->page][$OE]['mf'] = $this->margin_footer; + $this->saveHTMLHeader[$this->page][$OE]['pw'] = $this->w; + $this->saveHTMLHeader[$this->page][$OE]['ph'] = $this->h; + } + } + + function writeHTMLFooters() + { + + if ($this->mirrorMargins && ($this->page) % 2 == 0) { + $OE = 'E'; + } else { + $OE = 'O'; + } + + if ($OE === 'E') { + $this->saveHTMLFooter[$this->page][$OE]['html'] = $this->HTMLFooterE['html']; + } else { + $this->saveHTMLFooter[$this->page][$OE]['html'] = $this->HTMLFooter['html']; + } + + if ($this->forcePortraitHeaders && $this->CurOrientation == 'L' && $this->CurOrientation != $this->DefOrientation) { + $this->saveHTMLFooter[$this->page][$OE]['rotate'] = true; + $this->saveHTMLFooter[$this->page][$OE]['ml'] = $this->tMargin; + $this->saveHTMLFooter[$this->page][$OE]['mr'] = $this->bMargin; + $this->saveHTMLFooter[$this->page][$OE]['mt'] = $this->rMargin; + $this->saveHTMLFooter[$this->page][$OE]['mb'] = $this->lMargin; + $this->saveHTMLFooter[$this->page][$OE]['mh'] = $this->margin_header; + $this->saveHTMLFooter[$this->page][$OE]['mf'] = $this->margin_footer; + $this->saveHTMLFooter[$this->page][$OE]['pw'] = $this->h; + $this->saveHTMLFooter[$this->page][$OE]['ph'] = $this->w; + } else { + $this->saveHTMLFooter[$this->page][$OE]['ml'] = $this->lMargin; + $this->saveHTMLFooter[$this->page][$OE]['mr'] = $this->rMargin; + $this->saveHTMLFooter[$this->page][$OE]['mt'] = $this->tMargin; + $this->saveHTMLFooter[$this->page][$OE]['mb'] = $this->bMargin; + $this->saveHTMLFooter[$this->page][$OE]['mh'] = $this->margin_header; + $this->saveHTMLFooter[$this->page][$OE]['mf'] = $this->margin_footer; + $this->saveHTMLFooter[$this->page][$OE]['pw'] = $this->w; + $this->saveHTMLFooter[$this->page][$OE]['ph'] = $this->h; + } + } + + // mPDF 6 + function _shareHeaderFooterWidth($cl, $cc, $cr) + { + // mPDF 6 + $l = mb_strlen($cl, 'UTF-8'); + $c = mb_strlen($cc, 'UTF-8'); + $r = mb_strlen($cr, 'UTF-8'); + $s = max($l, $r); + $tw = $c + 2 * $s; + if ($tw > 0) { + return [intval($s * 100 / $tw), intval($c * 100 / $tw), intval($s * 100 / $tw)]; + } else { + return [33, 33, 33]; + } + } + + // mPDF 6 + // Create an HTML header/footer from array (non-HTML header/footer) + function _createHTMLheaderFooter($arr, $hf) + { + $lContent = (isset($arr['L']['content']) ? $arr['L']['content'] : ''); + $cContent = (isset($arr['C']['content']) ? $arr['C']['content'] : ''); + $rContent = (isset($arr['R']['content']) ? $arr['R']['content'] : ''); + + list($lw, $cw, $rw) = $this->_shareHeaderFooterWidth($lContent, $cContent, $rContent); + + if ($hf == 'H') { + $valign = 'bottom'; + $vpadding = '0 0 ' . $this->header_line_spacing . 'em 0'; + } else { + $valign = 'top'; + $vpadding = '' . $this->footer_line_spacing . 'em 0 0 0'; + } + + if ($this->directionality == 'rtl') { // table columns get reversed so need different text-alignment + $talignL = 'right'; + $talignR = 'left'; + } else { + $talignL = 'left'; + $talignR = 'right'; + } + + $html = ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= '
' . $lContent . '' . $cContent . '' . $rContent . '
'; + + return $html; + } + + function DefHeaderByName($name, $arr) + { + if (!$name) { + $name = '_nonhtmldefault'; + } + $html = $this->_createHTMLheaderFooter($arr, 'H'); + + $this->pageHTMLheaders[$name]['html'] = $html; + $this->pageHTMLheaders[$name]['h'] = $this->_getHtmlHeight($html); + } + + function DefFooterByName($name, $arr) + { + if (!$name) { + $name = '_nonhtmldefault'; + } + $html = $this->_createHTMLheaderFooter($arr, 'F'); + + $this->pageHTMLfooters[$name]['html'] = $html; + $this->pageHTMLfooters[$name]['h'] = $this->_getHtmlHeight($html); + } + + function SetHeaderByName($name, $side = 'O', $write = false) + { + if (!$name) { + $name = '_nonhtmldefault'; + } + $this->SetHTMLHeader($this->pageHTMLheaders[$name], $side, $write); + } + + function SetFooterByName($name, $side = 'O') + { + if (!$name) { + $name = '_nonhtmldefault'; + } + $this->SetHTMLFooter($this->pageHTMLfooters[$name], $side); + } + + function DefHTMLHeaderByName($name, $html) + { + if (!$name) { + $name = '_default'; + } + + $this->pageHTMLheaders[$name]['html'] = $html; + $this->pageHTMLheaders[$name]['h'] = $this->_getHtmlHeight($html); + } + + function DefHTMLFooterByName($name, $html) + { + if (!$name) { + $name = '_default'; + } + + $this->pageHTMLfooters[$name]['html'] = $html; + $this->pageHTMLfooters[$name]['h'] = $this->_getHtmlHeight($html); + } + + function SetHTMLHeaderByName($name, $side = 'O', $write = false) + { + if (!$name) { + $name = '_default'; + } + $this->SetHTMLHeader($this->pageHTMLheaders[$name], $side, $write); + } + + function SetHTMLFooterByName($name, $side = 'O') + { + if (!$name) { + $name = '_default'; + } + $this->SetHTMLFooter($this->pageHTMLfooters[$name], $side); + } + + function SetHeader($Harray = [], $side = '', $write = false) + { + $oddhtml = ''; + $evenhtml = ''; + + if (is_string($Harray)) { + + if (strlen($Harray) === 0) { + + $oddhtml = ''; + $evenhtml = ''; + + } elseif (strpos($Harray, '|') !== false) { + + $hdet = explode('|', $Harray); + + list($lw, $cw, $rw) = $this->_shareHeaderFooterWidth($hdet[0], $hdet[1], $hdet[2]); + $oddhtml = ''; + $oddhtml .= ''; + $oddhtml .= ''; + $oddhtml .= ''; + $oddhtml .= ''; + $oddhtml .= '
' . $hdet[0] . '' . $hdet[1] . '' . $hdet[2] . '
'; + + $evenhtml = ''; + $evenhtml .= ''; + $evenhtml .= ''; + $evenhtml .= ''; + $evenhtml .= ''; + $evenhtml .= '
' . $hdet[2] . '' . $hdet[1] . '' . $hdet[0] . '
'; + + } else { + + $oddhtml = '
' . $Harray . '
'; + $evenhtml = '
' . $Harray . '
'; + } + + } elseif (is_array($Harray) && !empty($Harray)) { + + $odd = null; + $even = null; + + if ($side === 'O') { + $odd = $Harray; + } elseif ($side === 'E') { + $even = $Harray; + } else { + $odd = Arrays::get($Harray, 'odd', null); + $even = Arrays::get($Harray, 'even', null); + } + + $oddhtml = $this->_createHTMLheaderFooter($odd, 'H'); + $evenhtml = $this->_createHTMLheaderFooter($even, 'H'); + } + + if ($side === 'E') { + $this->SetHTMLHeader($evenhtml, 'E', $write); + } elseif ($side === 'O') { + $this->SetHTMLHeader($oddhtml, 'O', $write); + } else { + $this->SetHTMLHeader($oddhtml, 'O', $write); + $this->SetHTMLHeader($evenhtml, 'E', $write); + } + } + + function SetFooter($Farray = [], $side = '') + { + $oddhtml = ''; + $evenhtml = ''; + + if (is_string($Farray)) { + + if (strlen($Farray) == 0) { + + $oddhtml = ''; + $evenhtml = ''; + + } elseif (strpos($Farray, '|') !== false) { + + $hdet = explode('|', $Farray); + $oddhtml = ''; + $oddhtml .= ''; + $oddhtml .= ''; + $oddhtml .= ''; + $oddhtml .= ''; + $oddhtml .= '
' . $hdet[0] . '' . $hdet[1] . '' . $hdet[2] . '
'; + + $evenhtml = ''; + $evenhtml .= ''; + $evenhtml .= ''; + $evenhtml .= ''; + $evenhtml .= ''; + $evenhtml .= '
' . $hdet[2] . '' . $hdet[1] . '' . $hdet[0] . '
'; + + } else { + + $oddhtml = '
' . $Farray . '
'; + + $evenhtml = '
' . $Farray . '
'; + } + + } elseif (is_array($Farray)) { + + $odd = null; + $even = null; + + if ($side === 'O') { + $odd = $Farray; + } elseif ($side == 'E') { + $even = $Farray; + } else { + $odd = Arrays::get($Farray, 'odd', null); + $even = Arrays::get($Farray, 'even', null); + } + + $oddhtml = $this->_createHTMLheaderFooter($odd, 'F'); + $evenhtml = $this->_createHTMLheaderFooter($even, 'F'); + } + + if ($side === 'E') { + $this->SetHTMLFooter($evenhtml, 'E'); + } elseif ($side === 'O') { + $this->SetHTMLFooter($oddhtml, 'O'); + } else { + $this->SetHTMLFooter($oddhtml, 'O'); + $this->SetHTMLFooter($evenhtml, 'E'); + } + } + + /* -- WATERMARK -- */ + + function SetWatermarkText($txt = '', $alpha = -1) + { + if ($alpha >= 0) { + $this->watermarkTextAlpha = $alpha; + } + $this->watermarkText = $txt; + } + + function SetWatermarkImage($src, $alpha = -1, $size = 'D', $pos = 'F') + { + if ($alpha >= 0) { + $this->watermarkImageAlpha = $alpha; + } + $this->watermarkImage = $src; + $this->watermark_size = $size; + $this->watermark_pos = $pos; + } + + /* -- END WATERMARK -- */ + + // Page footer + function Footer() + { + /* -- CSS-PAGE -- */ + // PAGED MEDIA - CROP / CROSS MARKS from @PAGE + if ($this->show_marks == 'CROP' || $this->show_marks == 'CROPCROSS') { + // Show TICK MARKS + $this->SetLineWidth(0.1); // = 0.1 mm + $this->SetDColor($this->colorConverter->convert(0, $this->PDFAXwarnings)); + $l = $this->cropMarkLength; + $m = $this->cropMarkMargin; // Distance of crop mark from margin + $b = $this->nonPrintMargin; // Non-printable border at edge of paper sheet + $ax1 = $b; + $bx = $this->page_box['outer_width_LR'] - $m; + $ax = max($ax1, $bx - $l); + $cx1 = $this->w - $b; + $dx = $this->w - $this->page_box['outer_width_LR'] + $m; + $cx = min($cx1, $dx + $l); + $ay1 = $b; + $by = $this->page_box['outer_width_TB'] - $m; + $ay = max($ay1, $by - $l); + $cy1 = $this->h - $b; + $dy = $this->h - $this->page_box['outer_width_TB'] + $m; + $cy = min($cy1, $dy + $l); + + $this->Line($ax, $this->page_box['outer_width_TB'], $bx, $this->page_box['outer_width_TB']); + $this->Line($cx, $this->page_box['outer_width_TB'], $dx, $this->page_box['outer_width_TB']); + $this->Line($ax, $this->h - $this->page_box['outer_width_TB'], $bx, $this->h - $this->page_box['outer_width_TB']); + $this->Line($cx, $this->h - $this->page_box['outer_width_TB'], $dx, $this->h - $this->page_box['outer_width_TB']); + $this->Line($this->page_box['outer_width_LR'], $ay, $this->page_box['outer_width_LR'], $by); + $this->Line($this->page_box['outer_width_LR'], $cy, $this->page_box['outer_width_LR'], $dy); + $this->Line($this->w - $this->page_box['outer_width_LR'], $ay, $this->w - $this->page_box['outer_width_LR'], $by); + $this->Line($this->w - $this->page_box['outer_width_LR'], $cy, $this->w - $this->page_box['outer_width_LR'], $dy); + + if ($this->printers_info) { + $hd = date('Y-m-d H:i') . ' Page ' . $this->page . ' of {nb}'; + $this->SetTColor($this->colorConverter->convert(0, $this->PDFAXwarnings)); + $this->SetFont('arial', '', 7.5, true, true); + $this->x = $this->page_box['outer_width_LR'] + 1.5; + $this->y = 1; + $this->Cell(0, $this->FontSize, $hd, 0, 0, 'L', 0, '', 0, 0, 0, 'M'); + $this->SetFont($this->default_font, '', $this->original_default_font_size); + } + } + if ($this->show_marks == 'CROSS' || $this->show_marks == 'CROPCROSS') { + $this->SetLineWidth(0.1); // = 0.1 mm + $this->SetDColor($this->colorConverter->convert(0, $this->PDFAXwarnings)); + $l = 14 / 2; // longer length of the cross line (half) + $w = 6 / 2; // shorter width of the cross line (half) + $r = 1.2; // radius of circle + $m = $this->crossMarkMargin; // Distance of cross mark from margin + $x1 = $this->page_box['outer_width_LR'] - $m; + $x2 = $this->w - $this->page_box['outer_width_LR'] + $m; + $y1 = $this->page_box['outer_width_TB'] - $m; + $y2 = $this->h - $this->page_box['outer_width_TB'] + $m; + // Left + $this->Circle($x1, $this->h / 2, $r, 'S'); + $this->Line($x1 - $w, $this->h / 2, $x1 + $w, $this->h / 2); + $this->Line($x1, $this->h / 2 - $l, $x1, $this->h / 2 + $l); + // Right + $this->Circle($x2, $this->h / 2, $r, 'S'); + $this->Line($x2 - $w, $this->h / 2, $x2 + $w, $this->h / 2); + $this->Line($x2, $this->h / 2 - $l, $x2, $this->h / 2 + $l); + // Top + $this->Circle($this->w / 2, $y1, $r, 'S'); + $this->Line($this->w / 2, $y1 - $w, $this->w / 2, $y1 + $w); + $this->Line($this->w / 2 - $l, $y1, $this->w / 2 + $l, $y1); + // Bottom + $this->Circle($this->w / 2, $y2, $r, 'S'); + $this->Line($this->w / 2, $y2 - $w, $this->w / 2, $y2 + $w); + $this->Line($this->w / 2 - $l, $y2, $this->w / 2 + $l, $y2); + } + + /* -- END CSS-PAGE -- */ + + // mPDF 6 + // If @page set non-HTML headers/footers named, they were not read until later in the HTML code - so now set them + if ($this->page == 1) { + if ($this->firstPageBoxHeader) { + if (isset($this->pageHTMLheaders[$this->firstPageBoxHeader])) { + $this->HTMLHeader = $this->pageHTMLheaders[$this->firstPageBoxHeader]; + } + $this->Header(); + } + if ($this->firstPageBoxFooter) { + if (isset($this->pageHTMLfooters[$this->firstPageBoxFooter])) { + $this->HTMLFooter = $this->pageHTMLfooters[$this->firstPageBoxFooter]; + } + } + $this->firstPageBoxHeader = ''; + $this->firstPageBoxFooter = ''; + } + + + if (($this->mirrorMargins && ($this->page % 2 == 0) && $this->HTMLFooterE) || ($this->mirrorMargins && ($this->page % 2 == 1) && $this->HTMLFooter) || (!$this->mirrorMargins && $this->HTMLFooter)) { + $this->writeHTMLFooters(); + } + + /* -- WATERMARK -- */ + if (($this->watermarkText) && ($this->showWatermarkText)) { + $this->watermark($this->watermarkText, $this->watermarkAngle, 120, $this->watermarkTextAlpha); // Watermark text + } + if (($this->watermarkImage) && ($this->showWatermarkImage)) { + $this->watermarkImg($this->watermarkImage, $this->watermarkImageAlpha); // Watermark image + } + /* -- END WATERMARK -- */ + } + + /* -- HTML-CSS -- */ + + /** + * Write HTML code to the document + * + * Also used internally to parse HTML into buffers + * + * @param string $html + * @param int $mode Use HTMLParserMode constants. Controls what parts of the $html code is parsed. + * @param bool $init Clears and sets buffers to Top level block etc. + * @param bool $close If false leaves buffers etc. in current state, so that it can continue a block etc. + */ + function WriteHTML($html, $mode = HTMLParserMode::DEFAULT_MODE, $init = true, $close = true) + { + /* Check $html is an integer, float, string, boolean or class with __toString(), otherwise throw exception */ + if (is_scalar($html) === false) { + if (!is_object($html) || ! method_exists($html, '__toString')) { + throw new \Mpdf\MpdfException('WriteHTML() requires $html be an integer, float, string, boolean or an object with the __toString() magic method.'); + } + } + + // Check the mode is valid + if (in_array($mode, HTMLParserMode::getAllModes(), true) === false) { + throw new \Mpdf\MpdfException('WriteHTML() requires $mode to be one of the modes defined in HTMLParserMode'); + } + + /* Cast $html as a string */ + $html = (string) $html; + + // @log Parsing CSS & Headers + + if ($init) { + $this->headerbuffer = ''; + $this->textbuffer = []; + $this->fixedPosBlockSave = []; + } + if ($mode === HTMLParserMode::HEADER_CSS) { + $html = ''; + } // stylesheet only + + if ($this->allow_charset_conversion) { + if ($mode === HTMLParserMode::DEFAULT_MODE) { + $this->ReadCharset($html); + } + if ($this->charset_in && $mode !== HTMLParserMode::HTML_HEADER_BUFFER) { + $success = iconv($this->charset_in, 'UTF-8//TRANSLIT', $html); + if ($success) { + $html = $success; + } + } + } + + $html = $this->purify_utf8($html, false); + if ($init) { + $this->blklvl = 0; + $this->lastblocklevelchange = 0; + $this->blk = []; + $this->initialiseBlock($this->blk[0]); + $this->blk[0]['width'] = & $this->pgwidth; + $this->blk[0]['inner_width'] = & $this->pgwidth; + $this->blk[0]['blockContext'] = $this->blockContext; + } + + $zproperties = []; + if ($mode === HTMLParserMode::DEFAULT_MODE || $mode === HTMLParserMode::HEADER_CSS) { + $this->ReadMetaTags($html); + + if (preg_match('/]*href=["\']([^"\'>]*)["\']/i', $html, $m)) { + $this->SetBasePath($m[1]); + } + $html = $this->cssManager->ReadCSS($html); + + if ($this->autoLangToFont && !$this->usingCoreFont && preg_match('/]*lang=[\'\"](.*?)[\'\"]/ism', $html, $m)) { + $html_lang = $m[1]; + } + + if (preg_match('/]*dir=[\'\"]\s*rtl\s*[\'\"]/ism', $html)) { + $zproperties['DIRECTION'] = 'rtl'; + } + + // allow in-line CSS for body tag to be parsed // Get tag inline CSS + if (preg_match('/]*)>(.*?)<\/body>/ism', $html, $m) || preg_match('/]*)>(.*)$/ism', $html, $m)) { + $html = $m[2]; + // Changed to allow style="background: url('bg.jpg')" + if (preg_match('/style=[\"](.*?)[\"]/ism', $m[1], $mm) || preg_match('/style=[\'](.*?)[\']/ism', $m[1], $mm)) { + $zproperties = $this->cssManager->readInlineCSS($mm[1]); + } + if (preg_match('/dir=[\'\"]\s*rtl\s*[\'\"]/ism', $m[1])) { + $zproperties['DIRECTION'] = 'rtl'; + } + if (isset($html_lang) && $html_lang) { + $zproperties['LANG'] = $html_lang; + } + if ($this->autoLangToFont && !$this->onlyCoreFonts && preg_match('/lang=[\'\"](.*?)[\'\"]/ism', $m[1], $mm)) { + $zproperties['LANG'] = $mm[1]; + } + } + } + $properties = $this->cssManager->MergeCSS('BLOCK', 'BODY', ''); + if ($zproperties) { + $properties = $this->cssManager->array_merge_recursive_unique($properties, $zproperties); + } + + if (isset($properties['DIRECTION']) && $properties['DIRECTION']) { + $this->cssManager->CSS['BODY']['DIRECTION'] = $properties['DIRECTION']; + } + if (!isset($this->cssManager->CSS['BODY']['DIRECTION'])) { + $this->cssManager->CSS['BODY']['DIRECTION'] = $this->directionality; + } else { + $this->SetDirectionality($this->cssManager->CSS['BODY']['DIRECTION']); + } + + $this->setCSS($properties, '', 'BODY'); + + $this->blk[0]['InlineProperties'] = $this->saveInlineProperties(); + + if ($mode === HTMLParserMode::HEADER_CSS) { + return ''; + } + if (!isset($this->cssManager->CSS['BODY'])) { + $this->cssManager->CSS['BODY'] = []; + } + + /* -- BACKGROUNDS -- */ + if (isset($properties['BACKGROUND-GRADIENT'])) { + $this->bodyBackgroundGradient = $properties['BACKGROUND-GRADIENT']; + } + + if (isset($properties['BACKGROUND-IMAGE']) && $properties['BACKGROUND-IMAGE']) { + $ret = $this->SetBackground($properties, $this->pgwidth); + if ($ret) { + $this->bodyBackgroundImage = $ret; + } + } + /* -- END BACKGROUNDS -- */ + + /* -- CSS-PAGE -- */ + // If page-box is set + if ($this->state == 0 && ((isset($this->cssManager->CSS['@PAGE']) && $this->cssManager->CSS['@PAGE']) || (isset($this->cssManager->CSS['@PAGE>>PSEUDO>>FIRST']) && $this->cssManager->CSS['@PAGE>>PSEUDO>>FIRST']))) { // mPDF 5.7.3 + $this->page_box['current'] = ''; + $this->page_box['using'] = true; + list($pborientation, $pbmgl, $pbmgr, $pbmgt, $pbmgb, $pbmgh, $pbmgf, $hname, $fname, $bg, $resetpagenum, $pagenumstyle, $suppress, $marks, $newformat) = $this->SetPagedMediaCSS('', false, 'O'); + $this->DefOrientation = $this->CurOrientation = $pborientation; + $this->orig_lMargin = $this->DeflMargin = $pbmgl; + $this->orig_rMargin = $this->DefrMargin = $pbmgr; + $this->orig_tMargin = $this->tMargin = $pbmgt; + $this->orig_bMargin = $this->bMargin = $pbmgb; + $this->orig_hMargin = $this->margin_header = $pbmgh; + $this->orig_fMargin = $this->margin_footer = $pbmgf; + list($pborientation, $pbmgl, $pbmgr, $pbmgt, $pbmgb, $pbmgh, $pbmgf, $hname, $fname, $bg, $resetpagenum, $pagenumstyle, $suppress, $marks, $newformat) = $this->SetPagedMediaCSS('', true, 'O'); // first page + $this->show_marks = $marks; + if ($hname) { + $this->firstPageBoxHeader = $hname; + } + if ($fname) { + $this->firstPageBoxFooter = $fname; + } + } + /* -- END CSS-PAGE -- */ + + $parseonly = false; + $this->bufferoutput = false; + if ($mode == HTMLParserMode::HTML_PARSE_NO_WRITE) { + $parseonly = true; + // Close any open block tags + $arr = []; + $ai = 0; + for ($b = $this->blklvl; $b > 0; $b--) { + $this->tag->CloseTag($this->blk[$b]['tag'], $arr, $ai); + } + // Output any text left in buffer + if (count($this->textbuffer)) { + $this->printbuffer($this->textbuffer); + } + $this->textbuffer = []; + } elseif ($mode === HTMLParserMode::HTML_HEADER_BUFFER) { + // Close any open block tags + $arr = []; + $ai = 0; + for ($b = $this->blklvl; $b > 0; $b--) { + $this->tag->CloseTag($this->blk[$b]['tag'], $arr, $ai); + } + // Output any text left in buffer + if (count($this->textbuffer)) { + $this->printbuffer($this->textbuffer); + } + $this->bufferoutput = true; + $this->textbuffer = []; + $this->headerbuffer = ''; + $properties = $this->cssManager->MergeCSS('BLOCK', 'BODY', ''); + $this->setCSS($properties, '', 'BODY'); + } + + mb_internal_encoding('UTF-8'); + + $html = $this->AdjustHTML($html, $this->tabSpaces); // Try to make HTML look more like XHTML + + if ($this->autoScriptToLang) { + $html = $this->markScriptToLang($html); + } + + preg_match_all('/]*)>(.*?)<\/htmlpageheader>/si', $html, $h); + for ($i = 0; $i < count($h[1]); $i++) { + if (preg_match('/name=[\'|\"](.*?)[\'|\"]/', $h[1][$i], $n)) { + $this->pageHTMLheaders[$n[1]]['html'] = $h[2][$i]; + $this->pageHTMLheaders[$n[1]]['h'] = $this->_getHtmlHeight($h[2][$i]); + } + } + preg_match_all('/]*)>(.*?)<\/htmlpagefooter>/si', $html, $f); + for ($i = 0; $i < count($f[1]); $i++) { + if (preg_match('/name=[\'|\"](.*?)[\'|\"]/', $f[1][$i], $n)) { + $this->pageHTMLfooters[$n[1]]['html'] = $f[2][$i]; + $this->pageHTMLfooters[$n[1]]['h'] = $this->_getHtmlHeight($f[2][$i]); + } + } + + $html = preg_replace('//si', '', $html); + $html = preg_replace('//si', '', $html); + + if ($this->state == 0 && ($mode === HTMLParserMode::DEFAULT_MODE || $mode === HTMLParserMode::HTML_BODY)) { + $this->AddPage($this->CurOrientation); + } + + + if (isset($hname) && preg_match('/^html_(.*)$/i', $hname, $n)) { + $this->SetHTMLHeader($this->pageHTMLheaders[$n[1]], 'O', true); + } + if (isset($fname) && preg_match('/^html_(.*)$/i', $fname, $n)) { + $this->SetHTMLFooter($this->pageHTMLfooters[$n[1]], 'O'); + } + + + + $html = str_replace('checkSIP = false; + $this->checkSMP = false; + $this->checkCJK = false; + if ($this->onlyCoreFonts) { + $html = $this->SubstituteChars($html); + } else { + if (preg_match("/([" . $this->pregRTLchars . "])/u", $html)) { + $this->biDirectional = true; + } // *OTL* + if (preg_match("/([\x{20000}-\x{2FFFF}])/u", $html)) { + $this->checkSIP = true; + } + if (preg_match("/([\x{10000}-\x{1FFFF}])/u", $html)) { + $this->checkSMP = true; + } + /* -- CJK-FONTS -- */ + if (preg_match("/([" . $this->pregCJKchars . "])/u", $html)) { + $this->checkCJK = true; + } + /* -- END CJK-FONTS -- */ + } + + // Don't allow non-breaking spaces that are converted to substituted chars or will break anyway and mess up table width calc. + $html = str_replace('160', chr(32), $html); + $html = str_replace('', '|', $html); + $html = str_replace('', '|', $html); + $html = str_replace('', '|', $html); + + // Add new supported tags in the DisableTags function + $html = strip_tags($html, $this->enabledtags); // remove all unsupported tags, but the ones inside the 'enabledtags' string + // Explode the string in order to parse the HTML code + $a = preg_split('/<(.*?)>/ms', $html, -1, PREG_SPLIT_DELIM_CAPTURE); + // ? more accurate regexp that allows e.g.
+ // if changing - also change in fn.SubstituteChars() + // $a = preg_split ('/<((?:[^<>]+(?:"[^"]*"|\'[^\']*\')?)+)>/ms', $html, -1, PREG_SPLIT_DELIM_CAPTURE); + + if ($this->mb_enc) { + mb_internal_encoding($this->mb_enc); + } + $pbc = 0; + $this->subPos = -1; + $cnt = count($a); + for ($i = 0; $i < $cnt; $i++) { + $e = $a[$i]; + if ($i % 2 == 0) { + // TEXT + if ($this->blk[$this->blklvl]['hide']) { + continue; + } + if ($this->inlineDisplayOff) { + continue; + } + if ($this->inMeter) { + continue; + } + + if ($this->inFixedPosBlock) { + $this->fixedPosBlock .= $e; + continue; + } // *CSS-POSITION* + if (strlen($e) == 0) { + continue; + } + + if ($this->ignorefollowingspaces && !$this->ispre) { + if (strlen(ltrim($e)) == 0) { + continue; + } + if ($this->FontFamily != 'csymbol' && $this->FontFamily != 'czapfdingbats' && substr($e, 0, 1) == ' ') { + $this->ignorefollowingspaces = false; + $e = ltrim($e); + } + } + + $this->OTLdata = null; // mPDF 5.7.1 + + $e = UtfString::strcode2utf($e); + $e = $this->lesser_entity_decode($e); + + if ($this->usingCoreFont) { + // If core font is selected in document which is not onlyCoreFonts - substitute with non-core font + if ($this->useSubstitutions && !$this->onlyCoreFonts && $this->subPos < $i && !$this->specialcontent) { + $cnt += $this->SubstituteCharsNonCore($a, $i, $e); + } + // CONVERT ENCODING + $e = mb_convert_encoding($e, $this->mb_enc, 'UTF-8'); + if ($this->textvar & TextVars::FT_UPPERCASE) { + $e = mb_strtoupper($e, $this->mb_enc); + } // mPDF 5.7.1 + elseif ($this->textvar & TextVars::FT_LOWERCASE) { + $e = mb_strtolower($e, $this->mb_enc); + } // mPDF 5.7.1 + elseif ($this->textvar & TextVars::FT_CAPITALIZE) { + $e = mb_convert_case($e, MB_CASE_TITLE, "UTF-8"); + } // mPDF 5.7.1 + } else { + if ($this->checkSIP && $this->CurrentFont['sipext'] && $this->subPos < $i && (!$this->specialcontent || !$this->useActiveForms)) { + $cnt += $this->SubstituteCharsSIP($a, $i, $e); + } + + if ($this->useSubstitutions && !$this->onlyCoreFonts && $this->CurrentFont['type'] != 'Type0' && $this->subPos < $i && (!$this->specialcontent || !$this->useActiveForms)) { + $cnt += $this->SubstituteCharsMB($a, $i, $e); + } + + if ($this->textvar & TextVars::FT_UPPERCASE) { + $e = mb_strtoupper($e, $this->mb_enc); + } elseif ($this->textvar & TextVars::FT_LOWERCASE) { + $e = mb_strtolower($e, $this->mb_enc); + } elseif ($this->textvar & TextVars::FT_CAPITALIZE) { + $e = mb_convert_case($e, MB_CASE_TITLE, "UTF-8"); + } + + /* -- OTL -- */ + // Use OTL OpenType Table Layout - GSUB & GPOS + if (isset($this->CurrentFont['useOTL']) && $this->CurrentFont['useOTL'] && (!$this->specialcontent || !$this->useActiveForms)) { + if (!$this->otl) { + $this->otl = new Otl($this, $this->fontCache); + } + $e = $this->otl->applyOTL($e, $this->CurrentFont['useOTL']); + $this->OTLdata = $this->otl->OTLdata; + $this->otl->removeChar($e, $this->OTLdata, "\xef\xbb\xbf"); // Remove ZWNBSP (also Byte order mark FEFF) + } /* -- END OTL -- */ + else { + // removes U+200E/U+200F LTR and RTL mark and U+200C/U+200D Zero-width Joiner and Non-joiner + $e = preg_replace("/[\xe2\x80\x8c\xe2\x80\x8d\xe2\x80\x8e\xe2\x80\x8f]/u", '', $e); + $e = preg_replace("/[\xef\xbb\xbf]/u", '', $e); // Remove ZWNBSP (also Byte order mark FEFF) + } + } + + if (($this->tts) || ($this->ttz) || ($this->tta)) { + $es = explode('|', $e); + $e = ''; + foreach ($es as $val) { + $e .= chr($val); + } + } + + // FORM ELEMENTS + if ($this->specialcontent) { + /* -- FORMS -- */ + // SELECT tag (form element) + if ($this->specialcontent == "type=select") { + $e = ltrim($e); + if (!empty($this->OTLdata)) { + $this->otl->trimOTLdata($this->OTLdata, true, false); + } // *OTL* + $stringwidth = $this->GetStringWidth($e); + if (!isset($this->selectoption['MAXWIDTH']) || $stringwidth > $this->selectoption['MAXWIDTH']) { + $this->selectoption['MAXWIDTH'] = $stringwidth; + } + if (!isset($this->selectoption['SELECTED']) || $this->selectoption['SELECTED'] == '') { + $this->selectoption['SELECTED'] = $e; + if (!empty($this->OTLdata)) { + $this->selectoption['SELECTED-OTLDATA'] = $this->OTLdata; + } // *OTL* + } + // Active Forms + if (isset($this->selectoption['ACTIVE']) && $this->selectoption['ACTIVE']) { + $this->selectoption['ITEMS'][] = ['exportValue' => $this->selectoption['currentVAL'], 'content' => $e, 'selected' => $this->selectoption['currentSEL']]; + } + $this->OTLdata = []; + } // TEXTAREA + else { + $objattr = unserialize($this->specialcontent); + $objattr['text'] = $e; + $objattr['OTLdata'] = $this->OTLdata; + $this->OTLdata = []; + $te = "\xbb\xa4\xactype=textarea,objattr=" . serialize($objattr) . "\xbb\xa4\xac"; + if ($this->tdbegin) { + $this->_saveCellTextBuffer($te, $this->HREF); + } else { + $this->_saveTextBuffer($te, $this->HREF); + } + } + /* -- END FORMS -- */ + } // TABLE + elseif ($this->tableLevel) { + /* -- TABLES -- */ + if ($this->tdbegin) { + if (($this->ignorefollowingspaces) && !$this->ispre) { + $e = ltrim($e); + if (!empty($this->OTLdata)) { + $this->otl->trimOTLdata($this->OTLdata, true, false); + } // *OTL* + } + if ($e || $e === '0') { + if ($this->blockjustfinished && $this->cell[$this->row][$this->col]['s'] > 0) { + $this->_saveCellTextBuffer("\n"); + if (!isset($this->cell[$this->row][$this->col]['maxs'])) { + $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s']; + } elseif ($this->cell[$this->row][$this->col]['maxs'] < $this->cell[$this->row][$this->col]['s']) { + $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s']; + } + $this->cell[$this->row][$this->col]['s'] = 0; // reset + } + $this->blockjustfinished = false; + + if (!isset($this->cell[$this->row][$this->col]['R']) || !$this->cell[$this->row][$this->col]['R']) { + if (isset($this->cell[$this->row][$this->col]['s'])) { + $this->cell[$this->row][$this->col]['s'] += $this->GetStringWidth($e, false, $this->OTLdata, $this->textvar); + } else { + $this->cell[$this->row][$this->col]['s'] = $this->GetStringWidth($e, false, $this->OTLdata, $this->textvar); + } + if (!empty($this->spanborddet)) { + $this->cell[$this->row][$this->col]['s'] += (isset($this->spanborddet['L']['w']) ? $this->spanborddet['L']['w'] : 0) + (isset($this->spanborddet['R']['w']) ? $this->spanborddet['R']['w'] : 0); + } + } + $this->_saveCellTextBuffer($e, $this->HREF); + if (substr($this->cell[$this->row][$this->col]['a'], 0, 1) == 'D') { + $dp = $this->decimal_align[substr($this->cell[$this->row][$this->col]['a'], 0, 2)]; + $s = preg_split('/' . preg_quote($dp, '/') . '/', $e, 2); // ? needs to be /u if not core + $s0 = $this->GetStringWidth($s[0], false); + if (isset($s[1]) && $s[1]) { + $s1 = $this->GetStringWidth(($s[1] . $dp), false); + } else { + $s1 = 0; + } + if (!isset($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['decimal_align'][$this->col]['maxs0'])) { + $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['decimal_align'][$this->col]['maxs0'] = $s0; + } else { + $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['decimal_align'][$this->col]['maxs0'] = max($s0, $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['decimal_align'][$this->col]['maxs0']); + } + if (!isset($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['decimal_align'][$this->col]['maxs1'])) { + $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['decimal_align'][$this->col]['maxs1'] = $s1; + } else { + $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['decimal_align'][$this->col]['maxs1'] = max($s1, $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['decimal_align'][$this->col]['maxs1']); + } + } + + $this->nestedtablejustfinished = false; + $this->linebreakjustfinished = false; + } + } + /* -- END TABLES -- */ + } // ALL ELSE + else { + if ($this->ignorefollowingspaces && !$this->ispre) { + $e = ltrim($e); + if (!empty($this->OTLdata)) { + $this->otl->trimOTLdata($this->OTLdata, true, false); + } // *OTL* + } + if ($e || $e === '0') { + $this->_saveTextBuffer($e, $this->HREF); + } + } + if ($e || $e === '0') { + $this->ignorefollowingspaces = false; // mPDF 6 + } + if (substr($e, -1, 1) == ' ' && !$this->ispre && $this->FontFamily != 'csymbol' && $this->FontFamily != 'czapfdingbats') { + $this->ignorefollowingspaces = true; + } + } else { // TAG ** + if (isset($e[0]) && $e[0] == '/') { + $endtag = trim(strtoupper(substr($e, 1))); + + /* -- CSS-POSITION -- */ + // mPDF 6 + if ($this->inFixedPosBlock) { + if (in_array($endtag, $this->outerblocktags) || in_array($endtag, $this->innerblocktags)) { + $this->fixedPosBlockDepth--; + } + if ($this->fixedPosBlockDepth == 0) { + $this->fixedPosBlockSave[] = [$this->fixedPosBlock, $this->fixedPosBlockBBox, $this->page]; + $this->fixedPosBlock = ''; + $this->inFixedPosBlock = false; + continue; + } + $this->fixedPosBlock .= '<' . $e . '>'; + continue; + } + /* -- END CSS-POSITION -- */ + + // mPDF 6 + // Correct for tags where HTML5 specifies optional end tags (see also OpenTag() ) + if ($this->allow_html_optional_endtags && !$parseonly) { + if (isset($this->blk[$this->blklvl]['tag'])) { + $closed = false; + // li end tag may be omitted if there is no more content in the parent element + if (!$closed && $this->blk[$this->blklvl]['tag'] == 'LI' && $endtag != 'LI' && (in_array($endtag, $this->outerblocktags) || in_array($endtag, $this->innerblocktags))) { + $this->tag->CloseTag('LI', $a, $i); + $closed = true; + } + // dd end tag may be omitted if there is no more content in the parent element + if (!$closed && $this->blk[$this->blklvl]['tag'] == 'DD' && $endtag != 'DD' && (in_array($endtag, $this->outerblocktags) || in_array($endtag, $this->innerblocktags))) { + $this->tag->CloseTag('DD', $a, $i); + $closed = true; + } + // p end tag may be omitted if there is no more content in the parent element and the parent element is not an A element [??????] + if (!$closed && $this->blk[$this->blklvl]['tag'] == 'P' && $endtag != 'P' && (in_array($endtag, $this->outerblocktags) || in_array($endtag, $this->innerblocktags))) { + $this->tag->CloseTag('P', $a, $i); + $closed = true; + } + // option end tag may be omitted if there is no more content in the parent element + if (!$closed && $this->blk[$this->blklvl]['tag'] == 'OPTION' && $endtag != 'OPTION' && (in_array($endtag, $this->outerblocktags) || in_array($endtag, $this->innerblocktags))) { + $this->tag->CloseTag('OPTION', $a, $i); + $closed = true; + } + } + /* -- TABLES -- */ + // Check for Table tags where HTML specifies optional end tags, + if ($endtag == 'TABLE') { + if ($this->lastoptionaltag == 'THEAD' || $this->lastoptionaltag == 'TBODY' || $this->lastoptionaltag == 'TFOOT') { + $this->tag->CloseTag($this->lastoptionaltag, $a, $i); + } + if ($this->lastoptionaltag == 'TR') { + $this->tag->CloseTag('TR', $a, $i); + } + if ($this->lastoptionaltag == 'TD' || $this->lastoptionaltag == 'TH') { + $this->tag->CloseTag($this->lastoptionaltag, $a, $i); + $this->tag->CloseTag('TR', $a, $i); + } + } + if ($endtag == 'THEAD' || $endtag == 'TBODY' || $endtag == 'TFOOT') { + if ($this->lastoptionaltag == 'TR') { + $this->tag->CloseTag('TR', $a, $i); + } + if ($this->lastoptionaltag == 'TD' || $this->lastoptionaltag == 'TH') { + $this->tag->CloseTag($this->lastoptionaltag, $a, $i); + $this->tag->CloseTag('TR', $a, $i); + } + } + if ($endtag == 'TR') { + if ($this->lastoptionaltag == 'TD' || $this->lastoptionaltag == 'TH') { + $this->tag->CloseTag($this->lastoptionaltag, $a, $i); + } + } + /* -- END TABLES -- */ + } + + + // mPDF 6 + if ($this->blk[$this->blklvl]['hide']) { + if (in_array($endtag, $this->outerblocktags) || in_array($endtag, $this->innerblocktags)) { + unset($this->blk[$this->blklvl]); + $this->blklvl--; + } + continue; + } + + // mPDF 6 + $this->tag->CloseTag($endtag, $a, $i); // mPDF 6 + } else { // OPENING TAG + if ($this->blk[$this->blklvl]['hide']) { + if (strpos($e, ' ')) { + $te = strtoupper(substr($e, 0, strpos($e, ' '))); + } else { + $te = strtoupper($e); + } + // mPDF 6 + if ($te == 'THEAD' || $te == 'TBODY' || $te == 'TFOOT' || $te == 'TR' || $te == 'TD' || $te == 'TH') { + $this->lastoptionaltag = $te; + } + if (in_array($te, $this->outerblocktags) || in_array($te, $this->innerblocktags)) { + $this->blklvl++; + $this->blk[$this->blklvl]['hide'] = true; + $this->blk[$this->blklvl]['tag'] = $te; // mPDF 6 + } + continue; + } + + /* -- CSS-POSITION -- */ + if ($this->inFixedPosBlock) { + if (strpos($e, ' ')) { + $te = strtoupper(substr($e, 0, strpos($e, ' '))); + } else { + $te = strtoupper($e); + } + $this->fixedPosBlock .= '<' . $e . '>'; + if (in_array($te, $this->outerblocktags) || in_array($te, $this->innerblocktags)) { + $this->fixedPosBlockDepth++; + } + continue; + } + /* -- END CSS-POSITION -- */ + $regexp = '|=\'(.*?)\'|s'; // eliminate single quotes, if any + $e = preg_replace($regexp, "=\"\$1\"", $e); + // changes anykey=anyvalue to anykey="anyvalue" (only do this inside [some] tags) + if (substr($e, 0, 10) != 'pageheader' && substr($e, 0, 10) != 'pagefooter' && substr($e, 0, 12) != 'tocpagebreak' && substr($e, 0, 10) != 'indexentry' && substr($e, 0, 8) != 'tocentry') { // mPDF 6 (ZZZ99H) + $regexp = '| (\\w+?)=([^\\s>"]+)|si'; + $e = preg_replace($regexp, " \$1=\"\$2\"", $e); + } + + $e = preg_replace('/ (\\S+?)\s*=\s*"/i', " \\1=\"", $e); + + // Fix path values, if needed + $orig_srcpath = ''; + if ((stristr($e, "href=") !== false) or ( stristr($e, "src=") !== false)) { + $regexp = '/ (href|src)\s*=\s*"(.*?)"/i'; + preg_match($regexp, $e, $auxiliararray); + if (isset($auxiliararray[2])) { + $path = $auxiliararray[2]; + } else { + $path = ''; + } + if (trim($path) != '' && !(stristr($e, "src=") !== false && substr($path, 0, 4) == 'var:') && substr($path, 0, 1) != '@') { + $path = htmlspecialchars_decode($path); // mPDF 5.7.4 URLs + $orig_srcpath = $path; + $this->GetFullPath($path); + $regexp = '/ (href|src)="(.*?)"/i'; + $e = preg_replace($regexp, ' \\1="' . $path . '"', $e); + } + }//END of Fix path values + // Extract attributes + $contents = []; + $contents1 = []; + $contents2 = []; + // Changed to allow style="background: url('bg.jpg')" + // Changed to improve performance; maximum length of \S (attribute) = 16 + // Increase allowed attribute name to 32 - cutting off "toc-even-header-name" etc. + preg_match_all('/\\S{1,32}=["][^"]*["]/', $e, $contents1); + preg_match_all('/\\S{1,32}=[\'][^\']*[\']/i', $e, $contents2); + + $contents = array_merge($contents1, $contents2); + preg_match('/\\S+/', $e, $a2); + $tag = (isset($a2[0]) ? strtoupper($a2[0]) : ''); + $attr = []; + if ($orig_srcpath) { + $attr['ORIG_SRC'] = $orig_srcpath; + } + if (!empty($contents)) { + foreach ($contents[0] as $v) { + // Changed to allow style="background: url('bg.jpg')" + if (preg_match('/^([^=]*)=["]?([^"]*)["]?$/', $v, $a3) || preg_match('/^([^=]*)=[\']?([^\']*)[\']?$/', $v, $a3)) { + if (strtoupper($a3[1]) == 'ID' || strtoupper($a3[1]) == 'CLASS') { // 4.2.013 Omits STYLE + $attr[strtoupper($a3[1])] = trim(strtoupper($a3[2])); + } // includes header-style-right etc. used for + elseif (preg_match('/^(HEADER|FOOTER)-STYLE/i', $a3[1])) { + $attr[strtoupper($a3[1])] = trim(strtoupper($a3[2])); + } else { + $attr[strtoupper($a3[1])] = trim($a3[2]); + } + } + } + } + $this->tag->OpenTag($tag, $attr, $a, $i); // mPDF 6 + /* -- CSS-POSITION -- */ + if ($this->inFixedPosBlock) { + $this->fixedPosBlockBBox = [$tag, $attr, $this->x, $this->y]; + $this->fixedPosBlock = ''; + $this->fixedPosBlockDepth = 1; + } + /* -- END CSS-POSITION -- */ + if (preg_match('/\/$/', $e)) { + $this->tag->CloseTag($tag, $a, $i); + } + } + } // end TAG + } // end of foreach($a as $i=>$e) + + if ($close) { + // Close any open block tags + for ($b = $this->blklvl; $b > 0; $b--) { + $this->tag->CloseTag($this->blk[$b]['tag'], $a, $i); + } + + // Output any text left in buffer + if (count($this->textbuffer) && !$parseonly) { + $this->printbuffer($this->textbuffer); + } + if (!$parseonly) { + $this->textbuffer = []; + } + + /* -- CSS-FLOAT -- */ + // If ended with a float, need to move to end page + $currpos = $this->page * 1000 + $this->y; + if (isset($this->blk[$this->blklvl]['float_endpos']) && $this->blk[$this->blklvl]['float_endpos'] > $currpos) { + $old_page = $this->page; + $new_page = intval($this->blk[$this->blklvl]['float_endpos'] / 1000); + if ($old_page != $new_page) { + $s = $this->PrintPageBackgrounds(); + // Writes after the marker so not overwritten later by page background etc. + $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS' . $this->uniqstr . ')/', '\\1' . "\n" . $s . "\n", $this->pages[$this->page]); + $this->pageBackgrounds = []; + $this->page = $new_page; + $this->ResetMargins(); + $this->Reset(); + $this->pageoutput[$this->page] = []; + } + $this->y = (($this->blk[$this->blklvl]['float_endpos'] * 1000) % 1000000) / 1000; // mod changes operands to integers before processing + } + /* -- END CSS-FLOAT -- */ + + /* -- CSS-IMAGE-FLOAT -- */ + $this->printfloatbuffer(); + /* -- END CSS-IMAGE-FLOAT -- */ + + // Create Internal Links, if needed + if (!empty($this->internallink)) { + + foreach ($this->internallink as $k => $v) { + + if (strpos($k, "#") !== false) { + continue; + } + + if (!is_array($v)) { + continue; + } + + $ypos = $v['Y']; + $pagenum = $v['PAGE']; + $sharp = "#"; + + while (array_key_exists($sharp . $k, $this->internallink)) { + $internallink = $this->internallink[$sharp . $k]; + $this->SetLink($internallink, $ypos, $pagenum); + $sharp .= "#"; + } + } + } + + $this->bufferoutput = false; + + /* -- CSS-POSITION -- */ + if (count($this->fixedPosBlockSave)) { + foreach ($this->fixedPosBlockSave as $fpbs) { + $old_page = $this->page; + $this->page = $fpbs[2]; + $this->WriteFixedPosHTML($fpbs[0], 0, 0, 100, 100, 'auto', $fpbs[1]); // 0,0,10,10 are overwritten by bbox + $this->page = $old_page; + } + $this->fixedPosBlockSave = []; + } + /* -- END CSS-POSITION -- */ + } + } + + /* -- CSS-POSITION -- */ + + function WriteFixedPosHTML($html, $x, $y, $w, $h, $overflow = 'visible', $bounding = []) + { + // $overflow can be 'hidden', 'visible' or 'auto' - 'auto' causes autofit to size + // Annotations disabled - enabled in mPDF 5.0 + // Links do work + // Will always go on current page (or start Page 1 if required) + // Probably INCOMPATIBLE WITH keep with table, columns etc. + // Called externally or interally via
+ // When used internally, $x $y $w $h and $overflow are all overridden by $bounding + + $overflow = strtolower($overflow); + if ($this->state == 0) { + $this->AddPage($this->CurOrientation); + } + $save_y = $this->y; + $save_x = $this->x; + $this->fullImageHeight = $this->h; + $save_cols = false; + /* -- COLUMNS -- */ + if ($this->ColActive) { + $save_cols = true; + $save_nbcol = $this->NbCol; // other values of gap and vAlign will not change by setting Columns off + $this->SetColumns(0); + } + /* -- END COLUMNS -- */ + $save_annots = $this->title2annots; // *ANNOTATIONS* + $this->writingHTMLheader = true; // a FIX to stop pagebreaks etc. + $this->writingHTMLfooter = true; + $this->InFooter = true; // suppresses autopagebreaks + $save_bgs = $this->pageBackgrounds; + $checkinnerhtml = preg_replace('/\s/', '', $html); + $rotate = 0; + + if ($w > $this->w) { + $x = 0; + $w = $this->w; + } + if ($h > $this->h) { + $y = 0; + $h = $this->h; + } + if ($x > $this->w) { + $x = $this->w - $w; + } + if ($y > $this->h) { + $y = $this->h - $h; + } + + if (!empty($bounding)) { + // $cont_ containing block = full physical page (position: absolute) or page inside margins (position: fixed) + // $bbox_ Bounding box is the
which is positioned absolutely/fixed + // top/left/right/bottom/width/height/background*/border*/padding*/margin* are taken from bounding + // font*[family/size/style/weight]/line-height/text*[align/decoration/transform/indent]/color are transferred to $inner + // as an enclosing
(after having checked ID/CLASS) + // $x, $y, $w, $h are inside of $bbox_ = containing box for $inner_ + // $inner_ InnerHTML is the contents of that block to be output + $tag = $bounding[0]; + $attr = $bounding[1]; + $orig_x0 = $bounding[2]; + $orig_y0 = $bounding[3]; + + // As in WriteHTML() initialising + $this->blklvl = 0; + $this->lastblocklevelchange = 0; + $this->blk = []; + $this->initialiseBlock($this->blk[0]); + + $this->blk[0]['width'] = & $this->pgwidth; + $this->blk[0]['inner_width'] = & $this->pgwidth; + + $this->blk[0]['blockContext'] = $this->blockContext; + + $properties = $this->cssManager->MergeCSS('BLOCK', 'BODY', ''); + $this->setCSS($properties, '', 'BODY'); + $this->blklvl = 1; + $this->initialiseBlock($this->blk[1]); + $this->blk[1]['tag'] = $tag; + $this->blk[1]['attr'] = $attr; + $this->Reset(); + $p = $this->cssManager->MergeCSS('BLOCK', $tag, $attr); + if (isset($p['ROTATE']) && ($p['ROTATE'] == 90 || $p['ROTATE'] == -90 || $p['ROTATE'] == 180)) { + $rotate = $p['ROTATE']; + } // mPDF 6 + if (isset($p['OVERFLOW'])) { + $overflow = strtolower($p['OVERFLOW']); + } + if (strtolower($p['POSITION']) == 'fixed') { + $cont_w = $this->pgwidth; // $this->blk[0]['inner_width']; + $cont_h = $this->h - $this->tMargin - $this->bMargin; + $cont_x = $this->lMargin; + $cont_y = $this->tMargin; + } else { + $cont_w = $this->w; // ABSOLUTE; + $cont_h = $this->h; + $cont_x = 0; + $cont_y = 0; + } + + // Pass on in-line properties to the innerhtml + $css = ''; + if (isset($p['TEXT-ALIGN'])) { + $css .= 'text-align: ' . strtolower($p['TEXT-ALIGN']) . '; '; + } + if (isset($p['TEXT-TRANSFORM'])) { + $css .= 'text-transform: ' . strtolower($p['TEXT-TRANSFORM']) . '; '; + } + if (isset($p['TEXT-INDENT'])) { + $css .= 'text-indent: ' . strtolower($p['TEXT-INDENT']) . '; '; + } + if (isset($p['TEXT-DECORATION'])) { + $css .= 'text-decoration: ' . strtolower($p['TEXT-DECORATION']) . '; '; + } + if (isset($p['FONT-FAMILY'])) { + $css .= 'font-family: ' . strtolower($p['FONT-FAMILY']) . '; '; + } + if (isset($p['FONT-STYLE'])) { + $css .= 'font-style: ' . strtolower($p['FONT-STYLE']) . '; '; + } + if (isset($p['FONT-WEIGHT'])) { + $css .= 'font-weight: ' . strtolower($p['FONT-WEIGHT']) . '; '; + } + if (isset($p['FONT-SIZE'])) { + $css .= 'font-size: ' . strtolower($p['FONT-SIZE']) . '; '; + } + if (isset($p['LINE-HEIGHT'])) { + $css .= 'line-height: ' . strtolower($p['LINE-HEIGHT']) . '; '; + } + if (isset($p['TEXT-SHADOW'])) { + $css .= 'text-shadow: ' . strtolower($p['TEXT-SHADOW']) . '; '; + } + if (isset($p['LETTER-SPACING'])) { + $css .= 'letter-spacing: ' . strtolower($p['LETTER-SPACING']) . '; '; + } + // mPDF 6 + if (isset($p['FONT-VARIANT-POSITION'])) { + $css .= 'font-variant-position: ' . strtolower($p['FONT-VARIANT-POSITION']) . '; '; + } + if (isset($p['FONT-VARIANT-CAPS'])) { + $css .= 'font-variant-caps: ' . strtolower($p['FONT-VARIANT-CAPS']) . '; '; + } + if (isset($p['FONT-VARIANT-LIGATURES'])) { + $css .= 'font-variant-ligatures: ' . strtolower($p['FONT-VARIANT-LIGATURES']) . '; '; + } + if (isset($p['FONT-VARIANT-NUMERIC'])) { + $css .= 'font-variant-numeric: ' . strtolower($p['FONT-VARIANT-NUMERIC']) . '; '; + } + if (isset($p['FONT-VARIANT-ALTERNATES'])) { + $css .= 'font-variant-alternates: ' . strtolower($p['FONT-VARIANT-ALTERNATES']) . '; '; + } + if (isset($p['FONT-FEATURE-SETTINGS'])) { + $css .= 'font-feature-settings: ' . strtolower($p['FONT-FEATURE-SETTINGS']) . '; '; + } + if (isset($p['FONT-LANGUAGE-OVERRIDE'])) { + $css .= 'font-language-override: ' . strtolower($p['FONT-LANGUAGE-OVERRIDE']) . '; '; + } + if (isset($p['FONT-KERNING'])) { + $css .= 'font-kerning: ' . strtolower($p['FONT-KERNING']) . '; '; + } + + if (isset($p['COLOR'])) { + $css .= 'color: ' . strtolower($p['COLOR']) . '; '; + } + if (isset($p['Z-INDEX'])) { + $css .= 'z-index: ' . $p['Z-INDEX'] . '; '; + } + if ($css) { + $html = '
' . $html . '
'; + } + // Copy over (only) the properties to set for border and background + $pb = []; + $pb['MARGIN-TOP'] = (isset($p['MARGIN-TOP']) ? $p['MARGIN-TOP'] : ''); + $pb['MARGIN-RIGHT'] = (isset($p['MARGIN-RIGHT']) ? $p['MARGIN-RIGHT'] : ''); + $pb['MARGIN-BOTTOM'] = (isset($p['MARGIN-BOTTOM']) ? $p['MARGIN-BOTTOM'] : ''); + $pb['MARGIN-LEFT'] = (isset($p['MARGIN-LEFT']) ? $p['MARGIN-LEFT'] : ''); + $pb['PADDING-TOP'] = (isset($p['PADDING-TOP']) ? $p['PADDING-TOP'] : ''); + $pb['PADDING-RIGHT'] = (isset($p['PADDING-RIGHT']) ? $p['PADDING-RIGHT'] : ''); + $pb['PADDING-BOTTOM'] = (isset($p['PADDING-BOTTOM']) ? $p['PADDING-BOTTOM'] : ''); + $pb['PADDING-LEFT'] = (isset($p['PADDING-LEFT']) ? $p['PADDING-LEFT'] : ''); + $pb['BORDER-TOP'] = (isset($p['BORDER-TOP']) ? $p['BORDER-TOP'] : ''); + $pb['BORDER-RIGHT'] = (isset($p['BORDER-RIGHT']) ? $p['BORDER-RIGHT'] : ''); + $pb['BORDER-BOTTOM'] = (isset($p['BORDER-BOTTOM']) ? $p['BORDER-BOTTOM'] : ''); + $pb['BORDER-LEFT'] = (isset($p['BORDER-LEFT']) ? $p['BORDER-LEFT'] : ''); + if (isset($p['BORDER-TOP-LEFT-RADIUS-H'])) { + $pb['BORDER-TOP-LEFT-RADIUS-H'] = $p['BORDER-TOP-LEFT-RADIUS-H']; + } + if (isset($p['BORDER-TOP-LEFT-RADIUS-V'])) { + $pb['BORDER-TOP-LEFT-RADIUS-V'] = $p['BORDER-TOP-LEFT-RADIUS-V']; + } + if (isset($p['BORDER-TOP-RIGHT-RADIUS-H'])) { + $pb['BORDER-TOP-RIGHT-RADIUS-H'] = $p['BORDER-TOP-RIGHT-RADIUS-H']; + } + if (isset($p['BORDER-TOP-RIGHT-RADIUS-V'])) { + $pb['BORDER-TOP-RIGHT-RADIUS-V'] = $p['BORDER-TOP-RIGHT-RADIUS-V']; + } + if (isset($p['BORDER-BOTTOM-LEFT-RADIUS-H'])) { + $pb['BORDER-BOTTOM-LEFT-RADIUS-H'] = $p['BORDER-BOTTOM-LEFT-RADIUS-H']; + } + if (isset($p['BORDER-BOTTOM-LEFT-RADIUS-V'])) { + $pb['BORDER-BOTTOM-LEFT-RADIUS-V'] = $p['BORDER-BOTTOM-LEFT-RADIUS-V']; + } + if (isset($p['BORDER-BOTTOM-RIGHT-RADIUS-H'])) { + $pb['BORDER-BOTTOM-RIGHT-RADIUS-H'] = $p['BORDER-BOTTOM-RIGHT-RADIUS-H']; + } + if (isset($p['BORDER-BOTTOM-RIGHT-RADIUS-V'])) { + $pb['BORDER-BOTTOM-RIGHT-RADIUS-V'] = $p['BORDER-BOTTOM-RIGHT-RADIUS-V']; + } + if (isset($p['BACKGROUND-COLOR'])) { + $pb['BACKGROUND-COLOR'] = $p['BACKGROUND-COLOR']; + } + if (isset($p['BOX-SHADOW'])) { + $pb['BOX-SHADOW'] = $p['BOX-SHADOW']; + } + /* -- BACKGROUNDS -- */ + if (isset($p['BACKGROUND-IMAGE'])) { + $pb['BACKGROUND-IMAGE'] = $p['BACKGROUND-IMAGE']; + } + if (isset($p['BACKGROUND-IMAGE-RESIZE'])) { + $pb['BACKGROUND-IMAGE-RESIZE'] = $p['BACKGROUND-IMAGE-RESIZE']; + } + if (isset($p['BACKGROUND-IMAGE-OPACITY'])) { + $pb['BACKGROUND-IMAGE-OPACITY'] = $p['BACKGROUND-IMAGE-OPACITY']; + } + if (isset($p['BACKGROUND-REPEAT'])) { + $pb['BACKGROUND-REPEAT'] = $p['BACKGROUND-REPEAT']; + } + if (isset($p['BACKGROUND-POSITION'])) { + $pb['BACKGROUND-POSITION'] = $p['BACKGROUND-POSITION']; + } + if (isset($p['BACKGROUND-GRADIENT'])) { + $pb['BACKGROUND-GRADIENT'] = $p['BACKGROUND-GRADIENT']; + } + if (isset($p['BACKGROUND-SIZE'])) { + $pb['BACKGROUND-SIZE'] = $p['BACKGROUND-SIZE']; + } + if (isset($p['BACKGROUND-ORIGIN'])) { + $pb['BACKGROUND-ORIGIN'] = $p['BACKGROUND-ORIGIN']; + } + if (isset($p['BACKGROUND-CLIP'])) { + $pb['BACKGROUND-CLIP'] = $p['BACKGROUND-CLIP']; + } + + /* -- END BACKGROUNDS -- */ + + $this->setCSS($pb, 'BLOCK', $tag); + + // ================================================================ + $bbox_br = $this->blk[1]['border_right']['w']; + $bbox_bl = $this->blk[1]['border_left']['w']; + $bbox_bt = $this->blk[1]['border_top']['w']; + $bbox_bb = $this->blk[1]['border_bottom']['w']; + $bbox_pr = $this->blk[1]['padding_right']; + $bbox_pl = $this->blk[1]['padding_left']; + $bbox_pt = $this->blk[1]['padding_top']; + $bbox_pb = $this->blk[1]['padding_bottom']; + $bbox_mr = $this->blk[1]['margin_right']; + if (isset($p['MARGIN-RIGHT']) && strtolower($p['MARGIN-RIGHT']) == 'auto') { + $bbox_mr = 'auto'; + } + $bbox_ml = $this->blk[1]['margin_left']; + if (isset($p['MARGIN-LEFT']) && strtolower($p['MARGIN-LEFT']) == 'auto') { + $bbox_ml = 'auto'; + } + $bbox_mt = $this->blk[1]['margin_top']; + if (isset($p['MARGIN-TOP']) && strtolower($p['MARGIN-TOP']) == 'auto') { + $bbox_mt = 'auto'; + } + $bbox_mb = $this->blk[1]['margin_bottom']; + if (isset($p['MARGIN-BOTTOM']) && strtolower($p['MARGIN-BOTTOM']) == 'auto') { + $bbox_mb = 'auto'; + } + if (isset($p['LEFT']) && strtolower($p['LEFT']) != 'auto') { + $bbox_left = $this->sizeConverter->convert($p['LEFT'], $cont_w, $this->FontSize, false); + } else { + $bbox_left = 'auto'; + } + if (isset($p['TOP']) && strtolower($p['TOP']) != 'auto') { + $bbox_top = $this->sizeConverter->convert($p['TOP'], $cont_h, $this->FontSize, false); + } else { + $bbox_top = 'auto'; + } + if (isset($p['RIGHT']) && strtolower($p['RIGHT']) != 'auto') { + $bbox_right = $this->sizeConverter->convert($p['RIGHT'], $cont_w, $this->FontSize, false); + } else { + $bbox_right = 'auto'; + } + if (isset($p['BOTTOM']) && strtolower($p['BOTTOM']) != 'auto') { + $bbox_bottom = $this->sizeConverter->convert($p['BOTTOM'], $cont_h, $this->FontSize, false); + } else { + $bbox_bottom = 'auto'; + } + if (isset($p['WIDTH']) && strtolower($p['WIDTH']) != 'auto') { + $inner_w = $this->sizeConverter->convert($p['WIDTH'], $cont_w, $this->FontSize, false); + } else { + $inner_w = 'auto'; + } + if (isset($p['HEIGHT']) && strtolower($p['HEIGHT']) != 'auto') { + $inner_h = $this->sizeConverter->convert($p['HEIGHT'], $cont_h, $this->FontSize, false); + } else { + $inner_h = 'auto'; + } + + // If bottom or right pos are set and not left / top - save this to adjust rotated block later + if ($rotate == 90 || $rotate == -90) { // mPDF 6 + if ($bbox_left === 'auto' && $bbox_right !== 'auto') { + $rot_rpos = $bbox_right; + } else { + $rot_rpos = false; + } + if ($bbox_top === 'auto' && $bbox_bottom !== 'auto') { + $rot_bpos = $bbox_bottom; + } else { + $rot_bpos = false; + } + } + + // ================================================================ + if ($checkinnerhtml == '' && $inner_h === 'auto') { + $inner_h = 0.0001; + } + if ($checkinnerhtml == '' && $inner_w === 'auto') { + $inner_w = 2 * $this->GetCharWidth('W', false); + } + // ================================================================ + // Algorithm from CSS2.1 See http://www.w3.org/TR/CSS21/visudet.html#abs-non-replaced-height + // mPD 5.3.14 + // Special case (not CSS) if all not specified, centre vertically on page + $bbox_top_orig = ''; + if ($bbox_top === 'auto' && $inner_h === 'auto' && $bbox_bottom === 'auto' && $bbox_mt === 'auto' && $bbox_mb === 'auto') { + $bbox_top_orig = $bbox_top; + if ($bbox_mt === 'auto') { + $bbox_mt = 0; + } + if ($bbox_mb === 'auto') { + $bbox_mb = 0; + } + $bbox_top = $orig_y0 - $bbox_mt - $cont_y; + // solve for $bbox_bottom when content_h known - $inner_h=='auto' && $bbox_bottom=='auto' + } // mPD 5.3.14 + elseif ($bbox_top === 'auto' && $inner_h === 'auto' && $bbox_bottom === 'auto') { + $bbox_top_orig = $bbox_top = $orig_y0 - $cont_y; + if ($bbox_mt === 'auto') { + $bbox_mt = 0; + } + if ($bbox_mb === 'auto') { + $bbox_mb = 0; + } + // solve for $bbox_bottom when content_h known - $inner_h=='auto' && $bbox_bottom=='auto' + } elseif ($bbox_top !== 'auto' && $inner_h !== 'auto' && $bbox_bottom !== 'auto') { + if ($bbox_mt === 'auto' && $bbox_mb === 'auto') { + $x = $cont_h - $bbox_top - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_bottom; + $bbox_mt = $bbox_mb = ($x / 2); + } elseif ($bbox_mt === 'auto') { + $bbox_mt = $cont_h - $bbox_top - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_mb - $bbox_bottom; + } elseif ($bbox_mb === 'auto') { + $bbox_mb = $cont_h - $bbox_top - $bbox_mt - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_bottom; + } else { + $bbox_bottom = $cont_h - $bbox_top - $bbox_mt - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_mt; + } + } else { + if ($bbox_mt === 'auto') { + $bbox_mt = 0; + } + if ($bbox_mb === 'auto') { + $bbox_mb = 0; + } + if ($bbox_top === 'auto' && $inner_h === 'auto' && $bbox_bottom !== 'auto') { + // solve for $bbox_top when content_h known - $inner_h=='auto' && $bbox_top =='auto' + } elseif ($bbox_top === 'auto' && $bbox_bottom === 'auto' && $inner_h !== 'auto') { + $bbox_top = $orig_y0 - $bbox_mt - $cont_y; + $bbox_bottom = $cont_h - $bbox_top - $bbox_mt - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_mt; + } elseif ($inner_h === 'auto' && $bbox_bottom === 'auto' && $bbox_top !== 'auto') { + // solve for $bbox_bottom when content_h known - $inner_h=='auto' && $bbox_bottom=='auto' + } elseif ($bbox_top === 'auto' && $inner_h !== 'auto' && $bbox_bottom !== 'auto') { + $bbox_top = $cont_h - $bbox_mt - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_mt - $bbox_bottom; + } elseif ($inner_h === 'auto' && $bbox_top !== 'auto' && $bbox_bottom !== 'auto') { + $inner_h = $cont_h - $bbox_top - $bbox_mt - $bbox_bt - $bbox_pt - $bbox_pb - $bbox_bb - $bbox_mt - $bbox_bottom; + } elseif ($bbox_bottom === 'auto' && $bbox_top !== 'auto' && $inner_h !== 'auto') { + $bbox_bottom = $cont_h - $bbox_top - $bbox_mt - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_mt; + } + } + + // THEN DO SAME FOR WIDTH + // http://www.w3.org/TR/CSS21/visudet.html#abs-non-replaced-width + if ($bbox_left === 'auto' && $inner_w === 'auto' && $bbox_right === 'auto') { + if ($bbox_ml === 'auto') { + $bbox_ml = 0; + } + if ($bbox_mr === 'auto') { + $bbox_mr = 0; + } + // IF containing element RTL, should set $bbox_right + $bbox_left = $orig_x0 - $bbox_ml - $cont_x; + // solve for $bbox_right when content_w known - $inner_w=='auto' && $bbox_right=='auto' + } elseif ($bbox_left !== 'auto' && $inner_w !== 'auto' && $bbox_right !== 'auto') { + if ($bbox_ml === 'auto' && $bbox_mr === 'auto') { + $x = $cont_w - $bbox_left - $bbox_bl - $bbox_pl - $inner_w - $bbox_pr - $bbox_br - $bbox_right; + $bbox_ml = $bbox_mr = ($x / 2); + } elseif ($bbox_ml === 'auto') { + $bbox_ml = $cont_w - $bbox_left - $bbox_bl - $bbox_pl - $inner_w - $bbox_pr - $bbox_br - $bbox_mr - $bbox_right; + } elseif ($bbox_mr === 'auto') { + $bbox_mr = $cont_w - $bbox_left - $bbox_ml - $bbox_bl - $bbox_pl - $inner_w - $bbox_pr - $bbox_br - $bbox_right; + } else { + $bbox_right = $cont_w - $bbox_left - $bbox_ml - $bbox_bl - $bbox_pl - $inner_w - $bbox_pr - $bbox_br - $bbox_ml; + } + } else { + if ($bbox_ml === 'auto') { + $bbox_ml = 0; + } + if ($bbox_mr === 'auto') { + $bbox_mr = 0; + } + if ($bbox_left === 'auto' && $inner_w === 'auto' && $bbox_right !== 'auto') { + // solve for $bbox_left when content_w known - $inner_w=='auto' && $bbox_left =='auto' + } elseif ($bbox_left === 'auto' && $bbox_right === 'auto' && $inner_w !== 'auto') { + // IF containing element RTL, should set $bbox_right + $bbox_left = $orig_x0 - $bbox_ml - $cont_x; + $bbox_right = $cont_w - $bbox_left - $bbox_ml - $bbox_bl - $bbox_pl - $inner_w - $bbox_pr - $bbox_br - $bbox_ml; + } elseif ($inner_w === 'auto' && $bbox_right === 'auto' && $bbox_left !== 'auto') { + // solve for $bbox_right when content_w known - $inner_w=='auto' && $bbox_right=='auto' + } elseif ($bbox_left === 'auto' && $inner_w !== 'auto' && $bbox_right !== 'auto') { + $bbox_left = $cont_w - $bbox_ml - $bbox_bl - $bbox_pl - $inner_w - $bbox_pr - $bbox_br - $bbox_ml - $bbox_right; + } elseif ($inner_w === 'auto' && $bbox_left !== 'auto' && $bbox_right !== 'auto') { + $inner_w = $cont_w - $bbox_left - $bbox_ml - $bbox_bl - $bbox_pl - $bbox_pr - $bbox_br - $bbox_ml - $bbox_right; + } elseif ($bbox_right === 'auto' && $bbox_left !== 'auto' && $inner_w !== 'auto') { + $bbox_right = $cont_w - $bbox_left - $bbox_ml - $bbox_bl - $bbox_pl - $inner_w - $bbox_pr - $bbox_br - $bbox_ml; + } + } + + // ================================================================ + // ================================================================ + /* -- BACKGROUNDS -- */ + if (isset($pb['BACKGROUND-IMAGE']) && $pb['BACKGROUND-IMAGE']) { + $ret = $this->SetBackground($pb, $this->blk[1]['inner_width']); + if ($ret) { + $this->blk[1]['background-image'] = $ret; + } + } + /* -- END BACKGROUNDS -- */ + + $bbox_top_auto = $bbox_top === 'auto'; + $bbox_left_auto = $bbox_left === 'auto'; + $bbox_right_auto = $bbox_right === 'auto'; + $bbox_bottom_auto = $bbox_bottom === 'auto'; + + $bbox_top = is_numeric($bbox_top) ? $bbox_top : 0; + $bbox_left = is_numeric($bbox_left) ? $bbox_left : 0; + $bbox_right = is_numeric($bbox_right) ? $bbox_right : 0; + $bbox_bottom = is_numeric($bbox_bottom) ? $bbox_bottom : 0; + + $y = $cont_y + $bbox_top + $bbox_mt + $bbox_bt + $bbox_pt; + $h = $cont_h - $bbox_top - $bbox_mt - $bbox_bt - $bbox_pt - $bbox_pb - $bbox_bb - $bbox_mb - $bbox_bottom; + + $x = $cont_x + $bbox_left + $bbox_ml + $bbox_bl + $bbox_pl; + $w = $cont_w - $bbox_left - $bbox_ml - $bbox_bl - $bbox_pl - $bbox_pr - $bbox_br - $bbox_mr - $bbox_right; + + // Set (temporary) values for x y w h to do first paint, if values are auto + if ($inner_h === 'auto' && $bbox_top_auto) { + $y = $cont_y + $bbox_mt + $bbox_bt + $bbox_pt; + $h = $cont_h - ($bbox_bottom + $bbox_mt + $bbox_mb + $bbox_bt + $bbox_bb + $bbox_pt + $bbox_pb); + } elseif ($inner_h === 'auto' && $bbox_bottom_auto) { + $y = $cont_y + $bbox_top + $bbox_mt + $bbox_bt + $bbox_pt; + $h = $cont_h - ($bbox_top + $bbox_mt + $bbox_mb + $bbox_bt + $bbox_bb + $bbox_pt + $bbox_pb); + } + if ($inner_w === 'auto' && $bbox_left_auto) { + $x = $cont_x + $bbox_ml + $bbox_bl + $bbox_pl; + $w = $cont_w - ($bbox_right + $bbox_ml + $bbox_mr + $bbox_bl + $bbox_br + $bbox_pl + $bbox_pr); + } elseif ($inner_w === 'auto' && $bbox_right_auto) { + $x = $cont_x + $bbox_left + $bbox_ml + $bbox_bl + $bbox_pl; + $w = $cont_w - ($bbox_left + $bbox_ml + $bbox_mr + $bbox_bl + $bbox_br + $bbox_pl + $bbox_pr); + } + + $bbox_y = $cont_y + $bbox_top + $bbox_mt; + $bbox_x = $cont_x + $bbox_left + $bbox_ml; + + $saved_block1 = $this->blk[1]; + + unset($p); + unset($pb); + + // ================================================================ + if ($inner_w === 'auto') { // do a first write + $this->lMargin = $x; + $this->rMargin = $this->w - $w - $x; + + // SET POSITION & FONT VALUES + $this->pgwidth = $this->w - $this->lMargin - $this->rMargin; + $this->pageoutput[$this->page] = []; + $this->x = $x; + $this->y = $y; + $this->HTMLheaderPageLinks = []; + $this->HTMLheaderPageAnnots = []; + $this->HTMLheaderPageForms = []; + $this->pageBackgrounds = []; + $this->maxPosR = 0; + $this->maxPosL = $this->w; // For RTL + $this->WriteHTML($html, HTMLParserMode::HTML_HEADER_BUFFER); + $inner_w = $this->maxPosR - $this->lMargin; + if ($bbox_right_auto) { + $bbox_right = $cont_w - $bbox_left - $bbox_ml - $bbox_bl - $bbox_pl - $inner_w - $bbox_pr - $bbox_br - $bbox_ml; + } elseif ($bbox_left_auto) { + $bbox_left = $cont_w - $bbox_ml - $bbox_bl - $bbox_pl - $inner_w - $bbox_pr - $bbox_br - $bbox_ml - $bbox_right; + $bbox_x = $cont_x + $bbox_left + $bbox_ml; + $inner_x = $bbox_x + $bbox_bl + $bbox_pl; + $x = $inner_x; + } + + $w = $inner_w; + $bbox_y = $cont_y + $bbox_top + $bbox_mt; + $bbox_x = $cont_x + $bbox_left + $bbox_ml; + } + + if ($inner_h === 'auto') { // do a first write + + $this->lMargin = $x; + $this->rMargin = $this->w - $w - $x; + + // SET POSITION & FONT VALUES + $this->pgwidth = $this->w - $this->lMargin - $this->rMargin; + $this->pageoutput[$this->page] = []; + $this->x = $x; + $this->y = $y; + $this->HTMLheaderPageLinks = []; + $this->HTMLheaderPageAnnots = []; + $this->HTMLheaderPageForms = []; + $this->pageBackgrounds = []; + $this->WriteHTML($html, HTMLParserMode::HTML_HEADER_BUFFER); + $inner_h = $this->y - $y; + + if ($overflow != 'hidden' && $overflow != 'visible') { // constrained + if (($this->y + $bbox_pb + $bbox_bb) > ($cont_y + $cont_h)) { + $adj = ($this->y + $bbox_pb + $bbox_bb) - ($cont_y + $cont_h); + $inner_h -= $adj; + } + } + if ($bbox_bottom_auto && $bbox_top_orig === 'auto') { + $bbox_bottom = $bbox_top = ($cont_h - $bbox_mt - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_mb) / 2; + if ($overflow != 'hidden' && $overflow != 'visible') { // constrained + if ($bbox_top < 0) { + $bbox_top = 0; + $inner_h = $cont_h - $bbox_top - $bbox_mt - $bbox_bt - $bbox_pt - $bbox_pb - $bbox_bb - $bbox_mb - $bbox_bottom; + } + } + $bbox_y = $cont_y + $bbox_top + $bbox_mt; + $inner_y = $bbox_y + $bbox_bt + $bbox_pt; + $y = $inner_y; + } elseif ($bbox_bottom_auto) { + $bbox_bottom = $cont_h - $bbox_top - $bbox_mt - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_mb; + } elseif ($bbox_top_auto) { + $bbox_top = $cont_h - $bbox_mt - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_mb - $bbox_bottom; + if ($overflow != 'hidden' && $overflow != 'visible') { // constrained + if ($bbox_top < 0) { + $bbox_top = 0; + $inner_h = $cont_h - $bbox_top - $bbox_mt - $bbox_bt - $bbox_pt - $bbox_pb - $bbox_bb - $bbox_mb - $bbox_bottom; + } + } + $bbox_y = $cont_y + $bbox_top + $bbox_mt; + $inner_y = $bbox_y + $bbox_bt + $bbox_pt; + $y = $inner_y; + } + $h = $inner_h; + $bbox_y = $cont_y + $bbox_top + $bbox_mt; + $bbox_x = $cont_x + $bbox_left + $bbox_ml; + } + + $inner_w = $w; + $inner_h = $h; + } + + $this->lMargin = $x; + $this->rMargin = $this->w - $w - $x; + + // SET POSITION & FONT VALUES + $this->pgwidth = $this->w - $this->lMargin - $this->rMargin; + $this->pageoutput[$this->page] = []; + + $this->x = $x; + $this->y = $y; + + $this->HTMLheaderPageLinks = []; + $this->HTMLheaderPageAnnots = []; + $this->HTMLheaderPageForms = []; + + $this->pageBackgrounds = []; + + $this->WriteHTML($html, HTMLParserMode::HTML_HEADER_BUFFER); + + $actual_h = $this->y - $y; + $use_w = $w; + $use_h = $h; + $ratio = $actual_h / $use_w; + + if ($overflow != 'hidden' && $overflow != 'visible') { + $target = $h / $w; + if ($target > 0) { + if (($ratio / $target) > 1) { + $nl = ceil($actual_h / $this->lineheight); + $l = $use_w * $nl; + $est_w = sqrt(($l * $this->lineheight) / $target) * 0.8; + $use_w += ($est_w - $use_w) - ($w / 100); + } + $bpcstart = ($ratio / $target); + $bpcctr = 1; + + while (($ratio / $target) > 1) { + // @log 'Auto-sizing fixed-position block $bpcctr++ + + $this->x = $x; + $this->y = $y; + + if (($ratio / $target) > 1.5 || ($ratio / $target) < 0.6) { + $use_w += ($w / $this->incrementFPR1); + } elseif (($ratio / $target) > 1.2 || ($ratio / $target) < 0.85) { + $use_w += ($w / $this->incrementFPR2); + } elseif (($ratio / $target) > 1.1 || ($ratio / $target) < 0.91) { + $use_w += ($w / $this->incrementFPR3); + } else { + $use_w += ($w / $this->incrementFPR4); + } + + $use_h = $use_w * $target; + $this->rMargin = $this->w - $use_w - $x; + $this->pgwidth = $this->w - $this->lMargin - $this->rMargin; + $this->HTMLheaderPageLinks = []; + $this->HTMLheaderPageAnnots = []; + $this->HTMLheaderPageForms = []; + $this->pageBackgrounds = []; + $this->WriteHTML($html, HTMLParserMode::HTML_HEADER_BUFFER); + $actual_h = $this->y - $y; + $ratio = $actual_h / $use_w; + } + } + } + + $shrink_f = $w / $use_w; + + // ================================================================ + + $this->pages[$this->page] .= '___BEFORE_BORDERS___'; + $block_s = $this->PrintPageBackgrounds(); // Save to print later inside clipping path + $this->pageBackgrounds = []; + + // ================================================================ + + if ($rotate == 90 || $rotate == -90) { // mPDF 6 + $prerotw = $bbox_bl + $bbox_pl + $inner_w + $bbox_pr + $bbox_br; + $preroth = $bbox_bt + $bbox_pt + $inner_h + $bbox_pb + $bbox_bb; + $rot_start = " q\n"; + if ($rotate == 90) { + if ($rot_rpos !== false) { + $adjw = $prerotw; + } // width before rotation + else { + $adjw = $preroth; + } // height before rotation + if ($rot_bpos !== false) { + $adjh = -$prerotw + $preroth; + } else { + $adjh = 0; + } + } else { + if ($rot_rpos !== false) { + $adjw = $prerotw - $preroth; + } else { + $adjw = 0; + } + if ($rot_bpos !== false) { + $adjh = $preroth; + } // height before rotation + else { + $adjh = $prerotw; + } // width before rotation + } + $rot_start .= $this->transformTranslate($adjw, $adjh, true) . "\n"; + $rot_start .= $this->transformRotate($rotate, $bbox_x, $bbox_y, true) . "\n"; + $rot_end = " Q\n"; + } elseif ($rotate == 180) { // mPDF 6 + $rot_start = " q\n"; + $rot_start .= $this->transformTranslate($bbox_bl + $bbox_pl + $inner_w + $bbox_pr + $bbox_br, $bbox_bt + $bbox_pt + $inner_h + $bbox_pb + $bbox_bb, true) . "\n"; + $rot_start .= $this->transformRotate(180, $bbox_x, $bbox_y, true) . "\n"; + $rot_end = " Q\n"; + } else { + $rot_start = ''; + $rot_end = ''; + } + + // ================================================================ + if (!empty($bounding)) { + // WHEN HEIGHT // BOTTOM EDGE IS KNOWN and $this->y is set to the bottom + // Re-instate saved $this->blk[1] + $this->blk[1] = $saved_block1; + + // These are only needed when painting border/background + $this->blk[1]['width'] = $bbox_w = $cont_w - $bbox_left - $bbox_ml - $bbox_mr - $bbox_right; + $this->blk[1]['x0'] = $bbox_x; + $this->blk[1]['y0'] = $bbox_y; + $this->blk[1]['startpage'] = $this->page; + $this->blk[1]['y1'] = $bbox_y + $bbox_bt + $bbox_pt + $inner_h + $bbox_pb + $bbox_bb; + $this->writer->write($rot_start); + $this->PaintDivBB('', 0, 1); // Prints borders and sets backgrounds in $this->pageBackgrounds + $this->writer->write($rot_end); + } + + $s = $this->PrintPageBackgrounds(); + $s = $rot_start . $s . $rot_end; + $this->pages[$this->page] = preg_replace('/___BEFORE_BORDERS___/', "\n" . $s . "\n", $this->pages[$this->page]); + $this->pageBackgrounds = []; + + $this->writer->write($rot_start); + + // Clipping Output + if ($overflow == 'hidden') { + // Bounding rectangle to clip + $clip_y1 = $this->y; + if (!empty($bounding) && ($this->y + $bbox_pb + $bbox_bb) > ($bbox_y + $bbox_bt + $bbox_pt + $inner_h + $bbox_pb + $bbox_bb )) { + $clip_y1 = ($bbox_y + $bbox_bt + $bbox_pt + $inner_h + $bbox_pb + $bbox_bb ) - ($bbox_pb + $bbox_bb); + } + // $op = 'W* n'; // Clipping + $op = 'W n'; // Clipping alternative mode + $this->writer->write("q"); + $ch = $clip_y1 - $y; + $this->writer->write(sprintf('%.3F %.3F %.3F %.3F re %s', $x * Mpdf::SCALE, ($this->h - $y) * Mpdf::SCALE, $w * Mpdf::SCALE, -$ch * Mpdf::SCALE, $op)); + if (!empty($block_s)) { + $tmp = "q\n" . sprintf('%.3F %.3F %.3F %.3F re %s', $x * Mpdf::SCALE, ($this->h - $y) * Mpdf::SCALE, $w * Mpdf::SCALE, -$ch * Mpdf::SCALE, $op); + $tmp .= "\n" . $block_s . "\nQ"; + $block_s = $tmp; + } + } + + + if (!empty($block_s)) { + if ($shrink_f != 1) { // i.e. autofit has resized the box + $tmp = "q\n" . $this->transformScale(($shrink_f * 100), ($shrink_f * 100), $x, $y, true); + $tmp .= "\n" . $block_s . "\nQ"; + $block_s = $tmp; + } + $this->writer->write($block_s); + } + + + + if ($shrink_f != 1) { // i.e. autofit has resized the box + $this->StartTransform(); + $this->transformScale(($shrink_f * 100), ($shrink_f * 100), $x, $y); + } + + $this->writer->write($this->headerbuffer); + + if ($shrink_f != 1) { // i.e. autofit has resized the box + $this->StopTransform(); + } + + if ($overflow == 'hidden') { + // End clipping + $this->writer->write("Q"); + } + + $this->writer->write($rot_end); + + + // Page Links + foreach ($this->HTMLheaderPageLinks as $lk) { + if ($rotate) { + $tmp = $lk[2]; // Switch h - w + $lk[2] = $lk[3]; + $lk[3] = $tmp; + + $lx1 = (($lk[0] / Mpdf::SCALE)); + $ly1 = (($this->h - ($lk[1] / Mpdf::SCALE))); + if ($rotate == 90) { + $adjx = -($lx1 - $bbox_x) + ($preroth - ($ly1 - $bbox_y)); + $adjy = -($ly1 - $bbox_y) + ($lx1 - $bbox_x); + $lk[2] = -$lk[2]; + } elseif ($rotate == -90) { + $adjx = -($lx1 - $bbox_x) + ($ly1 - $bbox_y); + $adjy = -($ly1 - $bbox_y) - ($lx1 - $bbox_x) + $prerotw; + $lk[3] = -$lk[3]; + } + if ($rot_rpos !== false) { + $adjx += $prerotw - $preroth; + } + if ($rot_bpos !== false) { + $adjy += $preroth - $prerotw; + } + $lx1 += $adjx; + $ly1 += $adjy; + + $lk[0] = $lx1 * Mpdf::SCALE; + $lk[1] = ($this->h - $ly1) * Mpdf::SCALE; + } + if ($shrink_f != 1) { // i.e. autofit has resized the box + $lx1 = (($lk[0] / Mpdf::SCALE) - $x); + $lx2 = $x + ($lx1 * $shrink_f); + $lk[0] = $lx2 * Mpdf::SCALE; + $ly1 = (($this->h - ($lk[1] / Mpdf::SCALE)) - $y); + $ly2 = $y + ($ly1 * $shrink_f); + $lk[1] = ($this->h - $ly2) * Mpdf::SCALE; + $lk[2] *= $shrink_f; // width + $lk[3] *= $shrink_f; // height + } + $this->PageLinks[$this->page][] = $lk; + } + + foreach ($this->HTMLheaderPageForms as $n => $f) { + if ($shrink_f != 1) { // i.e. autofit has resized the box + $f['x'] = $x + (($f['x'] - $x) * $shrink_f); + $f['y'] = $y + (($f['y'] - $y) * $shrink_f); + $f['w'] *= $shrink_f; + $f['h'] *= $shrink_f; + $f['style']['fontsize'] *= $shrink_f; + } + $this->form->forms[$f['n']] = $f; + } + // Page Annotations + foreach ($this->HTMLheaderPageAnnots as $lk) { + if ($rotate) { + if ($rotate == 90) { + $adjx = -($lk['x'] - $bbox_x) + ($preroth - ($lk['y'] - $bbox_y)); + $adjy = -($lk['y'] - $bbox_y) + ($lk['x'] - $bbox_x); + } elseif ($rotate == -90) { + $adjx = -($lk['x'] - $bbox_x) + ($lk['y'] - $bbox_y); + $adjy = -($lk['y'] - $bbox_y) - ($lk['x'] - $bbox_x) + $prerotw; + } + if ($rot_rpos !== false) { + $adjx += $prerotw - $preroth; + } + if ($rot_bpos !== false) { + $adjy += $preroth - $prerotw; + } + $lk['x'] += $adjx; + $lk['y'] += $adjy; + } + if ($shrink_f != 1) { // i.e. autofit has resized the box + $lk['x'] = $x + (($lk['x'] - $x) * $shrink_f); + $lk['y'] = $y + (($lk['y'] - $y) * $shrink_f); + } + $this->PageAnnots[$this->page][] = $lk; + } + + // Restore + $this->headerbuffer = ''; + $this->HTMLheaderPageLinks = []; + $this->HTMLheaderPageAnnots = []; + $this->HTMLheaderPageForms = []; + $this->pageBackgrounds = $save_bgs; + $this->writingHTMLheader = false; + + $this->writingHTMLfooter = false; + $this->fullImageHeight = false; + $this->ResetMargins(); + $this->pgwidth = $this->w - $this->lMargin - $this->rMargin; + $this->SetXY($save_x, $save_y); + $this->title2annots = $save_annots; // *ANNOTATIONS* + $this->InFooter = false; // turns back on autopagebreaks + $this->pageoutput[$this->page] = []; + $this->pageoutput[$this->page]['Font'] = ''; + /* -- COLUMNS -- */ + if ($save_cols) { + $this->SetColumns($save_nbcol, $this->colvAlign, $this->ColGap); + } + /* -- END COLUMNS -- */ + } + + /* -- END CSS-POSITION -- */ + + function initialiseBlock(&$blk) + { + $blk['margin_top'] = 0; + $blk['margin_left'] = 0; + $blk['margin_bottom'] = 0; + $blk['margin_right'] = 0; + $blk['padding_top'] = 0; + $blk['padding_left'] = 0; + $blk['padding_bottom'] = 0; + $blk['padding_right'] = 0; + $blk['border_top']['w'] = 0; + $blk['border_left']['w'] = 0; + $blk['border_bottom']['w'] = 0; + $blk['border_right']['w'] = 0; + $blk['direction'] = 'ltr'; + $blk['hide'] = false; + $blk['outer_left_margin'] = 0; + $blk['outer_right_margin'] = 0; + $blk['cascadeCSS'] = []; + $blk['block-align'] = false; + $blk['bgcolor'] = false; + $blk['page_break_after_avoid'] = false; + $blk['keep_block_together'] = false; + $blk['float'] = false; + $blk['line_height'] = ''; + $blk['margin_collapse'] = false; + } + + function border_details($bd) + { + $prop = preg_split('/\s+/', trim($bd)); + + if (isset($this->blk[$this->blklvl]['inner_width'])) { + $refw = $this->blk[$this->blklvl]['inner_width']; + } elseif (isset($this->blk[$this->blklvl - 1]['inner_width'])) { + $refw = $this->blk[$this->blklvl - 1]['inner_width']; + } else { + $refw = $this->w; + } + if (count($prop) == 1) { + $bsize = $this->sizeConverter->convert($prop[0], $refw, $this->FontSize, false); + if ($bsize > 0) { + return ['s' => 1, 'w' => $bsize, 'c' => $this->colorConverter->convert(0, $this->PDFAXwarnings), 'style' => 'solid']; + } else { + return ['w' => 0, 's' => 0]; + } + } elseif (count($prop) == 2) { + // 1px solid + if (in_array($prop[1], $this->borderstyles) || $prop[1] == 'none' || $prop[1] == 'hidden') { + $prop[2] = ''; + } // solid #000000 + elseif (in_array($prop[0], $this->borderstyles) || $prop[0] == 'none' || $prop[0] == 'hidden') { + $prop[0] = ''; + $prop[1] = $prop[0]; + $prop[2] = $prop[1]; + } // 1px #000000 + else { + $prop[1] = ''; + $prop[2] = $prop[1]; + } + } elseif (count($prop) == 3) { + // Change #000000 1px solid to 1px solid #000000 (proper) + if (substr($prop[0], 0, 1) == '#') { + $tmp = $prop[0]; + $prop[0] = $prop[1]; + $prop[1] = $prop[2]; + $prop[2] = $tmp; + } // Change solid #000000 1px to 1px solid #000000 (proper) + elseif (substr($prop[0], 1, 1) == '#') { + $tmp = $prop[1]; + $prop[0] = $prop[2]; + $prop[1] = $prop[0]; + $prop[2] = $tmp; + } // Change solid 1px #000000 to 1px solid #000000 (proper) + elseif (in_array($prop[0], $this->borderstyles) || $prop[0] == 'none' || $prop[0] == 'hidden') { + $tmp = $prop[0]; + $prop[0] = $prop[1]; + $prop[1] = $tmp; + } + } else { + return ['w' => 0, 's' => 0]; + } + // Size + $bsize = $this->sizeConverter->convert($prop[0], $refw, $this->FontSize, false); + // color + $coul = $this->colorConverter->convert($prop[2], $this->PDFAXwarnings); // returns array + // Style + $prop[1] = strtolower($prop[1]); + if (in_array($prop[1], $this->borderstyles) && $bsize > 0) { + $on = 1; + } elseif ($prop[1] == 'hidden') { + $on = 1; + $bsize = 0; + $coul = ''; + } elseif ($prop[1] == 'none') { + $on = 0; + $bsize = 0; + $coul = ''; + } else { + $on = 0; + $bsize = 0; + $coul = ''; + $prop[1] = ''; + } + return ['s' => $on, 'w' => $bsize, 'c' => $coul, 'style' => $prop[1], 'dom' => 0]; + } + + /* -- END HTML-CSS -- */ + + + /* -- BORDER-RADIUS -- */ + + function _borderPadding($a, $b, &$px, &$py) + { + // $px and py are padding long axis (x) and short axis (y) + $added = 0; // extra padding + + $x = $a - $px; + $y = $b - $py; + // Check if Falls within ellipse of border radius + if (( (($x + $added) * ($x + $added)) / ($a * $a) + (($y + $added) * ($y + $added)) / ($b * $b) ) <= 1) { + return false; + } + + $t = atan2($y, $x); + + $newx = $b / sqrt((($b * $b) / ($a * $a)) + ( tan($t) * tan($t) )); + $newy = $a / sqrt((($a * $a) / ($b * $b)) + ( (1 / tan($t)) * (1 / tan($t)) )); + $px = max($px, $a - $newx + $added); + $py = max($py, $b - $newy + $added); + } + + /* -- END BORDER-RADIUS -- */ + /* -- HTML-CSS -- */ + /* -- CSS-PAGE -- */ + + function SetPagedMediaCSS($name, $first, $oddEven) + { + if ($oddEven == 'E') { + if ($this->directionality == 'rtl') { + $side = 'R'; + } else { + $side = 'L'; + } + } else { + if ($this->directionality == 'rtl') { + $side = 'L'; + } else { + $side = 'R'; + } + } + $name = strtoupper($name); + $p = []; + $p['SIZE'] = 'AUTO'; + + // Uses mPDF original margins as default + $p['MARGIN-RIGHT'] = strval($this->orig_rMargin) . 'mm'; + $p['MARGIN-LEFT'] = strval($this->orig_lMargin) . 'mm'; + $p['MARGIN-TOP'] = strval($this->orig_tMargin) . 'mm'; + $p['MARGIN-BOTTOM'] = strval($this->orig_bMargin) . 'mm'; + $p['MARGIN-HEADER'] = strval($this->orig_hMargin) . 'mm'; + $p['MARGIN-FOOTER'] = strval($this->orig_fMargin) . 'mm'; + + // Basic page + selector + if (isset($this->cssManager->CSS['@PAGE'])) { + $zp = $this->cssManager->CSS['@PAGE']; + } else { + $zp = []; + } + if (is_array($zp) && !empty($zp)) { + $p = array_merge($p, $zp); + } + + if (isset($p['EVEN-HEADER-NAME']) && $oddEven == 'E') { + $p['HEADER'] = $p['EVEN-HEADER-NAME']; + unset($p['EVEN-HEADER-NAME']); + } + if (isset($p['ODD-HEADER-NAME']) && $oddEven != 'E') { + $p['HEADER'] = $p['ODD-HEADER-NAME']; + unset($p['ODD-HEADER-NAME']); + } + if (isset($p['EVEN-FOOTER-NAME']) && $oddEven == 'E') { + $p['FOOTER'] = $p['EVEN-FOOTER-NAME']; + unset($p['EVEN-FOOTER-NAME']); + } + if (isset($p['ODD-FOOTER-NAME']) && $oddEven != 'E') { + $p['FOOTER'] = $p['ODD-FOOTER-NAME']; + unset($p['ODD-FOOTER-NAME']); + } + + // If right/Odd page + if (isset($this->cssManager->CSS['@PAGE>>PSEUDO>>RIGHT']) && $side == 'R') { + $zp = $this->cssManager->CSS['@PAGE>>PSEUDO>>RIGHT']; + } else { + $zp = []; + } + if (isset($zp['SIZE'])) { + unset($zp['SIZE']); + } + if (isset($zp['SHEET-SIZE'])) { + unset($zp['SHEET-SIZE']); + } + // Disallow margin-left or -right on :LEFT or :RIGHT + if (isset($zp['MARGIN-LEFT'])) { + unset($zp['MARGIN-LEFT']); + } + if (isset($zp['MARGIN-RIGHT'])) { + unset($zp['MARGIN-RIGHT']); + } + if (is_array($zp) && !empty($zp)) { + $p = array_merge($p, $zp); + } + + // If left/Even page + if (isset($this->cssManager->CSS['@PAGE>>PSEUDO>>LEFT']) && $side == 'L') { + $zp = $this->cssManager->CSS['@PAGE>>PSEUDO>>LEFT']; + } else { + $zp = []; + } + if (isset($zp['SIZE'])) { + unset($zp['SIZE']); + } + if (isset($zp['SHEET-SIZE'])) { + unset($zp['SHEET-SIZE']); + } + // Disallow margin-left or -right on :LEFT or :RIGHT + if (isset($zp['MARGIN-LEFT'])) { + unset($zp['MARGIN-LEFT']); + } + if (isset($zp['MARGIN-RIGHT'])) { + unset($zp['MARGIN-RIGHT']); + } + if (is_array($zp) && !empty($zp)) { + $p = array_merge($p, $zp); + } + + // If first page + if (isset($this->cssManager->CSS['@PAGE>>PSEUDO>>FIRST']) && $first) { + $zp = $this->cssManager->CSS['@PAGE>>PSEUDO>>FIRST']; + } else { + $zp = []; + } + if (isset($zp['SIZE'])) { + unset($zp['SIZE']); + } + if (isset($zp['SHEET-SIZE'])) { + unset($zp['SHEET-SIZE']); + } + // Disallow margin-left or -right on :FIRST // mPDF 5.7.3 + if (isset($zp['MARGIN-LEFT'])) { + unset($zp['MARGIN-LEFT']); + } + if (isset($zp['MARGIN-RIGHT'])) { + unset($zp['MARGIN-RIGHT']); + } + if (is_array($zp) && !empty($zp)) { + $p = array_merge($p, $zp); + } + + // If named page + if ($name) { + if (isset($this->cssManager->CSS['@PAGE>>NAMED>>' . $name])) { + $zp = $this->cssManager->CSS['@PAGE>>NAMED>>' . $name]; + } else { + $zp = []; + } + if (is_array($zp) && !empty($zp)) { + $p = array_merge($p, $zp); + } + + if (isset($p['EVEN-HEADER-NAME']) && $oddEven == 'E') { + $p['HEADER'] = $p['EVEN-HEADER-NAME']; + unset($p['EVEN-HEADER-NAME']); + } + if (isset($p['ODD-HEADER-NAME']) && $oddEven != 'E') { + $p['HEADER'] = $p['ODD-HEADER-NAME']; + unset($p['ODD-HEADER-NAME']); + } + if (isset($p['EVEN-FOOTER-NAME']) && $oddEven == 'E') { + $p['FOOTER'] = $p['EVEN-FOOTER-NAME']; + unset($p['EVEN-FOOTER-NAME']); + } + if (isset($p['ODD-FOOTER-NAME']) && $oddEven != 'E') { + $p['FOOTER'] = $p['ODD-FOOTER-NAME']; + unset($p['ODD-FOOTER-NAME']); + } + + // If named right/Odd page + if (isset($this->cssManager->CSS['@PAGE>>NAMED>>' . $name . '>>PSEUDO>>RIGHT']) && $side == 'R') { + $zp = $this->cssManager->CSS['@PAGE>>NAMED>>' . $name . '>>PSEUDO>>RIGHT']; + } else { + $zp = []; + } + if (isset($zp['SIZE'])) { + unset($zp['SIZE']); + } + if (isset($zp['SHEET-SIZE'])) { + unset($zp['SHEET-SIZE']); + } + // Disallow margin-left or -right on :LEFT or :RIGHT + if (isset($zp['MARGIN-LEFT'])) { + unset($zp['MARGIN-LEFT']); + } + if (isset($zp['MARGIN-RIGHT'])) { + unset($zp['MARGIN-RIGHT']); + } + if (is_array($zp) && !empty($zp)) { + $p = array_merge($p, $zp); + } + + // If named left/Even page + if (isset($this->cssManager->CSS['@PAGE>>NAMED>>' . $name . '>>PSEUDO>>LEFT']) && $side == 'L') { + $zp = $this->cssManager->CSS['@PAGE>>NAMED>>' . $name . '>>PSEUDO>>LEFT']; + } else { + $zp = []; + } + if (isset($zp['SIZE'])) { + unset($zp['SIZE']); + } + if (isset($zp['SHEET-SIZE'])) { + unset($zp['SHEET-SIZE']); + } + // Disallow margin-left or -right on :LEFT or :RIGHT + if (isset($zp['MARGIN-LEFT'])) { + unset($zp['MARGIN-LEFT']); + } + if (isset($zp['MARGIN-RIGHT'])) { + unset($zp['MARGIN-RIGHT']); + } + if (is_array($zp) && !empty($zp)) { + $p = array_merge($p, $zp); + } + + // If named first page + if (isset($this->cssManager->CSS['@PAGE>>NAMED>>' . $name . '>>PSEUDO>>FIRST']) && $first) { + $zp = $this->cssManager->CSS['@PAGE>>NAMED>>' . $name . '>>PSEUDO>>FIRST']; + } else { + $zp = []; + } + if (isset($zp['SIZE'])) { + unset($zp['SIZE']); + } + if (isset($zp['SHEET-SIZE'])) { + unset($zp['SHEET-SIZE']); + } + // Disallow margin-left or -right on :FIRST // mPDF 5.7.3 + if (isset($zp['MARGIN-LEFT'])) { + unset($zp['MARGIN-LEFT']); + } + if (isset($zp['MARGIN-RIGHT'])) { + unset($zp['MARGIN-RIGHT']); + } + if (is_array($zp) && !empty($zp)) { + $p = array_merge($p, $zp); + } + } + + $orientation = $mgl = $mgr = $mgt = $mgb = $mgh = $mgf = ''; + $header = $footer = ''; + $resetpagenum = $pagenumstyle = $suppress = ''; + $marks = ''; + $bg = []; + + $newformat = ''; + + + if (isset($p['SHEET-SIZE']) && is_array($p['SHEET-SIZE'])) { + $newformat = $p['SHEET-SIZE']; + if ($newformat[0] > $newformat[1]) { // landscape + $newformat = array_reverse($newformat); + $p['ORIENTATION'] = 'L'; + } else { + $p['ORIENTATION'] = 'P'; + } + $this->_setPageSize($newformat, $p['ORIENTATION']); + } + + if (isset($p['SIZE']) && is_array($p['SIZE']) && !$newformat) { + if ($p['SIZE']['W'] > $p['SIZE']['H']) { + $p['ORIENTATION'] = 'L'; + } else { + $p['ORIENTATION'] = 'P'; + } + } + if (is_array($p['SIZE'])) { + if ($p['SIZE']['W'] > $this->fw) { + $p['SIZE']['W'] = $this->fw; + } // mPD 4.2 use fw not fPt + if ($p['SIZE']['H'] > $this->fh) { + $p['SIZE']['H'] = $this->fh; + } + if (($p['ORIENTATION'] == $this->DefOrientation && !$newformat) || ($newformat && $p['ORIENTATION'] == 'P')) { + $outer_width_LR = ($this->fw - $p['SIZE']['W']) / 2; + $outer_width_TB = ($this->fh - $p['SIZE']['H']) / 2; + } else { + $outer_width_LR = ($this->fh - $p['SIZE']['W']) / 2; + $outer_width_TB = ($this->fw - $p['SIZE']['H']) / 2; + } + $pgw = $p['SIZE']['W']; + $pgh = $p['SIZE']['H']; + } else { // AUTO LANDSCAPE PORTRAIT + $outer_width_LR = 0; + $outer_width_TB = 0; + if (!$newformat) { + if (strtoupper($p['SIZE']) == 'AUTO') { + $p['ORIENTATION'] = $this->DefOrientation; + } elseif (strtoupper($p['SIZE']) == 'LANDSCAPE') { + $p['ORIENTATION'] = 'L'; + } else { + $p['ORIENTATION'] = 'P'; + } + } + if (($p['ORIENTATION'] == $this->DefOrientation && !$newformat) || ($newformat && $p['ORIENTATION'] == 'P')) { + $pgw = $this->fw; + $pgh = $this->fh; + } else { + $pgw = $this->fh; + $pgh = $this->fw; + } + } + + if (isset($p['HEADER']) && $p['HEADER']) { + $header = $p['HEADER']; + } + if (isset($p['FOOTER']) && $p['FOOTER']) { + $footer = $p['FOOTER']; + } + if (isset($p['RESETPAGENUM']) && $p['RESETPAGENUM']) { + $resetpagenum = $p['RESETPAGENUM']; + } + if (isset($p['PAGENUMSTYLE']) && $p['PAGENUMSTYLE']) { + $pagenumstyle = $p['PAGENUMSTYLE']; + } + if (isset($p['SUPPRESS']) && $p['SUPPRESS']) { + $suppress = $p['SUPPRESS']; + } + + if (isset($p['MARKS'])) { + if (preg_match('/cross/i', $p['MARKS']) && preg_match('/crop/i', $p['MARKS'])) { + $marks = 'CROPCROSS'; + } elseif (strtoupper($p['MARKS']) == 'CROP') { + $marks = 'CROP'; + } elseif (strtoupper($p['MARKS']) == 'CROSS') { + $marks = 'CROSS'; + } + } + + if (isset($p['BACKGROUND-COLOR']) && $p['BACKGROUND-COLOR']) { + $bg['BACKGROUND-COLOR'] = $p['BACKGROUND-COLOR']; + } + /* -- BACKGROUNDS -- */ + if (isset($p['BACKGROUND-GRADIENT']) && $p['BACKGROUND-GRADIENT']) { + $bg['BACKGROUND-GRADIENT'] = $p['BACKGROUND-GRADIENT']; + } + if (isset($p['BACKGROUND-IMAGE']) && $p['BACKGROUND-IMAGE']) { + $bg['BACKGROUND-IMAGE'] = $p['BACKGROUND-IMAGE']; + } + if (isset($p['BACKGROUND-REPEAT']) && $p['BACKGROUND-REPEAT']) { + $bg['BACKGROUND-REPEAT'] = $p['BACKGROUND-REPEAT']; + } + if (isset($p['BACKGROUND-POSITION']) && $p['BACKGROUND-POSITION']) { + $bg['BACKGROUND-POSITION'] = $p['BACKGROUND-POSITION']; + } + if (isset($p['BACKGROUND-IMAGE-RESIZE']) && $p['BACKGROUND-IMAGE-RESIZE']) { + $bg['BACKGROUND-IMAGE-RESIZE'] = $p['BACKGROUND-IMAGE-RESIZE']; + } + if (isset($p['BACKGROUND-IMAGE-OPACITY'])) { + $bg['BACKGROUND-IMAGE-OPACITY'] = $p['BACKGROUND-IMAGE-OPACITY']; + } + /* -- END BACKGROUNDS -- */ + + if (isset($p['MARGIN-LEFT'])) { + $mgl = $this->sizeConverter->convert($p['MARGIN-LEFT'], $pgw) + $outer_width_LR; + } + if (isset($p['MARGIN-RIGHT'])) { + $mgr = $this->sizeConverter->convert($p['MARGIN-RIGHT'], $pgw) + $outer_width_LR; + } + if (isset($p['MARGIN-BOTTOM'])) { + $mgb = $this->sizeConverter->convert($p['MARGIN-BOTTOM'], $pgh) + $outer_width_TB; + } + if (isset($p['MARGIN-TOP'])) { + $mgt = $this->sizeConverter->convert($p['MARGIN-TOP'], $pgh) + $outer_width_TB; + } + if (isset($p['MARGIN-HEADER'])) { + $mgh = $this->sizeConverter->convert($p['MARGIN-HEADER'], $pgh) + $outer_width_TB; + } + if (isset($p['MARGIN-FOOTER'])) { + $mgf = $this->sizeConverter->convert($p['MARGIN-FOOTER'], $pgh) + $outer_width_TB; + } + + if (isset($p['ORIENTATION']) && $p['ORIENTATION']) { + $orientation = $p['ORIENTATION']; + } + $this->page_box['outer_width_LR'] = $outer_width_LR; // Used in MARKS:crop etc. + $this->page_box['outer_width_TB'] = $outer_width_TB; + + return [$orientation, $mgl, $mgr, $mgt, $mgb, $mgh, $mgf, $header, $footer, $bg, $resetpagenum, $pagenumstyle, $suppress, $marks, $newformat]; + } + + /* -- END CSS-PAGE -- */ + + + + /* -- CSS-FLOAT -- */ + + // Added mPDF 3.0 Float DIV - CLEAR + function ClearFloats($clear, $blklvl = 0) + { + list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($blklvl, true); + $end = $currpos = ($this->page * 1000 + $this->y); + if ($clear == 'BOTH' && ($l_exists || $r_exists)) { + $this->pageoutput[$this->page] = []; + $end = max($l_max, $r_max, $currpos); + } elseif ($clear == 'RIGHT' && $r_exists) { + $this->pageoutput[$this->page] = []; + $end = max($r_max, $currpos); + } elseif ($clear == 'LEFT' && $l_exists) { + $this->pageoutput[$this->page] = []; + $end = max($l_max, $currpos); + } else { + return; + } + $old_page = $this->page; + $new_page = intval($end / 1000); + if ($old_page != $new_page) { + $s = $this->PrintPageBackgrounds(); + // Writes after the marker so not overwritten later by page background etc. + $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS' . $this->uniqstr . ')/', '\\1' . "\n" . $s . "\n", $this->pages[$this->page]); + $this->pageBackgrounds = []; + $this->page = $new_page; + } + $this->ResetMargins(); + $this->pageoutput[$this->page] = []; + $this->y = (($end * 1000) % 1000000) / 1000; // mod changes operands to integers before processing + } + + // Added mPDF 3.0 Float DIV + function GetFloatDivInfo($blklvl = 0, $clear = false) + { + // If blklvl specified, only returns floats at that level - for ClearFloats + $l_exists = false; + $r_exists = false; + $l_max = 0; + $r_max = 0; + $l_width = 0; + $r_width = 0; + if (count($this->floatDivs)) { + $currpos = ($this->page * 1000 + $this->y); + foreach ($this->floatDivs as $f) { + if (($clear && $f['blockContext'] == $this->blk[$blklvl]['blockContext']) || (!$clear && $currpos >= $f['startpos'] && $currpos < ($f['endpos'] - 0.001) && $f['blklvl'] > $blklvl && $f['blockContext'] == $this->blk[$blklvl]['blockContext'])) { + if ($f['side'] == 'L') { + $l_exists = true; + $l_max = max($l_max, $f['endpos']); + $l_width = max($l_width, $f['w']); + } + if ($f['side'] == 'R') { + $r_exists = true; + $r_max = max($r_max, $f['endpos']); + $r_width = max($r_width, $f['w']); + } + } + } + } + return [$l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width]; + } + + /* -- END CSS-FLOAT -- */ + + // LIST MARKERS // mPDF 6 Lists + function _setListMarker($listitemtype, $listitemimage, $listitemposition) + { + // if position:inside (and NOT table) - output now as a textbuffer; (so if next is block, will move to new line) + // elseif position:outside (and NOT table) - output in front of first textbuffer output by setting listitem (cf. _saveTextBuffer) + $e = ''; + $this->listitem = ''; + $spacer = ' '; + // IMAGE + if ($listitemimage && $listitemimage != 'none') { + $listitemimage = trim(preg_replace('/url\(["\']*(.*?)["\']*\)/', '\\1', $listitemimage)); + + // ? Restrict maximum height/width of list marker?? + $maxWidth = 100; + $maxHeight = 100; + + $objattr = []; + $objattr['margin_top'] = 0; + $objattr['margin_bottom'] = 0; + $objattr['margin_left'] = 0; + $objattr['margin_right'] = 0; + $objattr['padding_top'] = 0; + $objattr['padding_bottom'] = 0; + $objattr['padding_left'] = 0; + $objattr['padding_right'] = 0; + $objattr['width'] = 0; + $objattr['height'] = 0; + $objattr['border_top']['w'] = 0; + $objattr['border_bottom']['w'] = 0; + $objattr['border_left']['w'] = 0; + $objattr['border_right']['w'] = 0; + $objattr['visibility'] = 'visible'; + $srcpath = $listitemimage; + $orig_srcpath = $listitemimage; + + $objattr['vertical-align'] = 'BS'; // vertical alignment of marker (baseline) + $w = 0; + $h = 0; + + // Image file + $info = $this->imageProcessor->getImage($srcpath, true, true, $orig_srcpath); + if (!$info) { + return; + } + + if ($info['w'] == 0 && $info['h'] == 0) { + $info['h'] = $this->sizeConverter->convert('1em', $this->blk[$this->blklvl]['inner_width'], $this->FontSize, false); + } + + $objattr['file'] = $srcpath; + + // Default width and height calculation if needed + if ($w == 0 and $h == 0) { + /* -- IMAGES-WMF -- */ + if ($info['type'] == 'wmf') { + // WMF units are twips (1/20pt) + // divide by 20 to get points + // divide by k to get user units + $w = abs($info['w']) / (20 * Mpdf::SCALE); + $h = abs($info['h']) / (20 * Mpdf::SCALE); + } else { /* -- END IMAGES-WMF -- */ + if ($info['type'] == 'svg') { + // SVG units are pixels + $w = abs($info['w']) / Mpdf::SCALE; + $h = abs($info['h']) / Mpdf::SCALE; + } else { + // Put image at default image dpi + $w = ($info['w'] / Mpdf::SCALE) * (72 / $this->img_dpi); + $h = ($info['h'] / Mpdf::SCALE) * (72 / $this->img_dpi); + } + } + } + // IF WIDTH OR HEIGHT SPECIFIED + if ($w == 0) { + $w = abs($h * $info['w'] / $info['h']); + } + if ($h == 0) { + $h = abs($w * $info['h'] / $info['w']); + } + + if ($w > $maxWidth) { + $w = $maxWidth; + $h = abs($w * $info['h'] / $info['w']); + } + + if ($h > $maxHeight) { + $h = $maxHeight; + $w = abs($h * $info['w'] / $info['h']); + } + + $objattr['type'] = 'image'; + $objattr['itype'] = $info['type']; + + $objattr['orig_h'] = $info['h']; + $objattr['orig_w'] = $info['w']; + + /* -- IMAGES-WMF -- */ + if ($info['type'] == 'wmf') { + $objattr['wmf_x'] = $info['x']; + $objattr['wmf_y'] = $info['y']; + } else { /* -- END IMAGES-WMF -- */ + if ($info['type'] == 'svg') { + $objattr['wmf_x'] = $info['x']; + $objattr['wmf_y'] = $info['y']; + } + } + + $objattr['height'] = $h; + $objattr['width'] = $w; + $objattr['image_height'] = $h; + $objattr['image_width'] = $w; + + $objattr['dir'] = (isset($this->blk[$this->blklvl]['direction']) ? $this->blk[$this->blklvl]['direction'] : 'ltr'); + $objattr['listmarker'] = true; + + $objattr['listmarkerposition'] = $listitemposition; + + $e = "\xbb\xa4\xactype=image,objattr=" . serialize($objattr) . "\xbb\xa4\xac"; + $this->_saveTextBuffer($e); + + if ($listitemposition == 'inside') { + $e = $spacer; + $this->_saveTextBuffer($e); + } + } elseif ($listitemtype == 'disc' || $listitemtype == 'circle' || $listitemtype == 'square') { // SYMBOL (needs new font) + $objattr = []; + $objattr['type'] = 'listmarker'; + $objattr['listmarkerposition'] = $listitemposition; + $objattr['width'] = 0; + $size = $this->sizeConverter->convert($this->list_symbol_size, $this->FontSize); + $objattr['size'] = $size; + $objattr['offset'] = $this->sizeConverter->convert($this->list_marker_offset, $this->FontSize); + + if ($listitemposition == 'inside') { + $objattr['width'] = $size + $objattr['offset']; + } + + $objattr['height'] = $this->FontSize; + $objattr['vertical-align'] = 'T'; + $objattr['text'] = ''; + $objattr['dir'] = (isset($this->blk[$this->blklvl]['direction']) ? $this->blk[$this->blklvl]['direction'] : 'ltr'); + $objattr['bullet'] = $listitemtype; + $objattr['colorarray'] = $this->colorarray; + $objattr['fontfamily'] = $this->FontFamily; + $objattr['fontsize'] = $this->FontSize; + $objattr['fontsizept'] = $this->FontSizePt; + $objattr['fontstyle'] = $this->FontStyle; + + $e = "\xbb\xa4\xactype=listmarker,objattr=" . serialize($objattr) . "\xbb\xa4\xac"; + $this->listitem = $this->_saveTextBuffer($e, '', '', true); // true returns array + + } elseif (preg_match('/U\+([a-fA-F0-9]+)/i', $listitemtype, $m)) { // SYMBOL 2 (needs new font) + + if ($this->_charDefined($this->CurrentFont['cw'], hexdec($m[1]))) { + $list_item_marker = UtfString::codeHex2utf($m[1]); + } else { + $list_item_marker = '-'; + } + if (preg_match('/rgb\(.*?\)/', $listitemtype, $m)) { + $list_item_color = $this->colorConverter->convert($m[0], $this->PDFAXwarnings); + } else { + $list_item_color = ''; + } + + // SAVE then SET COLR + $save_colorarray = $this->colorarray; + if ($list_item_color) { + $this->colorarray = $list_item_color; + } + + if ($listitemposition == 'inside') { + $e = $list_item_marker . $spacer; + $this->_saveTextBuffer($e); + } else { + $objattr = []; + $objattr['type'] = 'listmarker'; + $objattr['width'] = 0; + $objattr['height'] = $this->FontSize; + $objattr['vertical-align'] = 'T'; + $objattr['text'] = $list_item_marker; + $objattr['dir'] = (isset($this->blk[$this->blklvl]['direction']) ? $this->blk[$this->blklvl]['direction'] : 'ltr'); + $objattr['colorarray'] = $this->colorarray; + $objattr['fontfamily'] = $this->FontFamily; + $objattr['fontsize'] = $this->FontSize; + $objattr['fontsizept'] = $this->FontSizePt; + $objattr['fontstyle'] = $this->FontStyle; + $e = "\xbb\xa4\xactype=listmarker,objattr=" . serialize($objattr) . "\xbb\xa4\xac"; + $this->listitem = $this->_saveTextBuffer($e, '', '', true); // true returns array + } + + // RESET COLOR + $this->colorarray = $save_colorarray; + + } else { // TEXT + $counter = $this->listcounter[$this->listlvl]; + + if ($listitemtype == 'none') { + return; + } + + $num = $this->_getStyledNumber($counter, $listitemtype, true); + + if ($listitemposition == 'inside') { + $e = $num . $this->list_number_suffix . $spacer; + $this->_saveTextBuffer($e); + } else { + if (isset($this->blk[$this->blklvl]['direction']) && $this->blk[$this->blklvl]['direction'] == 'rtl') { + // REPLACE MIRRORED RTL $this->list_number_suffix e.g. ) -> ( (NB could use Ucdn::$mirror_pairs) + $m = strtr($this->list_number_suffix, ")]}", "([{") . $num; + } else { + $m = $num . $this->list_number_suffix; + } + + $objattr = []; + $objattr['type'] = 'listmarker'; + $objattr['width'] = 0; + $objattr['height'] = $this->FontSize; + $objattr['vertical-align'] = 'T'; + $objattr['text'] = $m; + $objattr['dir'] = (isset($this->blk[$this->blklvl]['direction']) ? $this->blk[$this->blklvl]['direction'] : 'ltr'); + $objattr['colorarray'] = $this->colorarray; + $objattr['fontfamily'] = $this->FontFamily; + $objattr['fontsize'] = $this->FontSize; + $objattr['fontsizept'] = $this->FontSizePt; + $objattr['fontstyle'] = $this->FontStyle; + $e = "\xbb\xa4\xactype=listmarker,objattr=" . serialize($objattr) . "\xbb\xa4\xac"; + + $this->listitem = $this->_saveTextBuffer($e, '', '', true); // true returns array + } + } + } + + // mPDF Lists + function _getListMarkerWidth(&$currblk, &$a, &$i) + { + $blt_width = 0; + + $markeroffset = $this->sizeConverter->convert($this->list_marker_offset, $this->FontSize); + + // Get Maximum number in the list + $maxnum = $this->listcounter[$this->listlvl]; + if ($currblk['list_style_type'] != 'disc' && $currblk['list_style_type'] != 'circle' && $currblk['list_style_type'] != 'square') { + $lvl = 1; + for ($j = $i + 2; $j < count($a); $j+=2) { + $e = $a[$j]; + if (!$e) { + continue; + } + if ($e[0] == '/') { // end tag + $e = strtoupper(substr($e, 1)); + if ($e == 'OL' || $e == 'UL') { + if ($lvl == 1) { + break; + } + $lvl--; + } + } else { // opening tag + if (strpos($e, ' ')) { + $e = substr($e, 0, strpos($e, ' ')); + } + $e = strtoupper($e); + if ($e == 'LI') { + if ($lvl == 1) { + $maxnum++; + } + } elseif ($e == 'OL' || $e == 'UL') { + $lvl++; + } + } + } + } + + $decToAlpha = new Conversion\DecToAlpha(); + $decToRoman = new Conversion\DecToRoman(); + $decToOther = new Conversion\DecToOther($this); + + switch ($currblk['list_style_type']) { + case 'decimal': + case '1': + $blt_width = $this->GetStringWidth(str_repeat('5', strlen($maxnum)) . $this->list_number_suffix); + break; + case 'none': + $blt_width = 0; + break; + case 'upper-alpha': + case 'upper-latin': + case 'A': + $maxnumA = $decToAlpha->convert($maxnum, true); + if ($maxnum < 13) { + $blt_width = $this->GetStringWidth('D' . $this->list_number_suffix); + } else { + $blt_width = $this->GetStringWidth(str_repeat('W', strlen($maxnumA)) . $this->list_number_suffix); + } + break; + case 'lower-alpha': + case 'lower-latin': + case 'a': + $maxnuma = $decToAlpha->convert($maxnum, false); + if ($maxnum < 13) { + $blt_width = $this->GetStringWidth('b' . $this->list_number_suffix); + } else { + $blt_width = $this->GetStringWidth(str_repeat('m', strlen($maxnuma)) . $this->list_number_suffix); + } + break; + case 'upper-roman': + case 'I': + if ($maxnum > 87) { + $bbit = 87; + } elseif ($maxnum > 86) { + $bbit = 86; + } elseif ($maxnum > 37) { + $bbit = 38; + } elseif ($maxnum > 36) { + $bbit = 37; + } elseif ($maxnum > 27) { + $bbit = 28; + } elseif ($maxnum > 26) { + $bbit = 27; + } elseif ($maxnum > 17) { + $bbit = 18; + } elseif ($maxnum > 16) { + $bbit = 17; + } elseif ($maxnum > 7) { + $bbit = 8; + } elseif ($maxnum > 6) { + $bbit = 7; + } elseif ($maxnum > 3) { + $bbit = 4; + } else { + $bbit = $maxnum; + } + + $maxlnum = $decToRoman->convert($bbit, true); + $blt_width = $this->GetStringWidth($maxlnum . $this->list_number_suffix); + + break; + case 'lower-roman': + case 'i': + if ($maxnum > 87) { + $bbit = 87; + } elseif ($maxnum > 86) { + $bbit = 86; + } elseif ($maxnum > 37) { + $bbit = 38; + } elseif ($maxnum > 36) { + $bbit = 37; + } elseif ($maxnum > 27) { + $bbit = 28; + } elseif ($maxnum > 26) { + $bbit = 27; + } elseif ($maxnum > 17) { + $bbit = 18; + } elseif ($maxnum > 16) { + $bbit = 17; + } elseif ($maxnum > 7) { + $bbit = 8; + } elseif ($maxnum > 6) { + $bbit = 7; + } elseif ($maxnum > 3) { + $bbit = 4; + } else { + $bbit = $maxnum; + } + $maxlnum = $decToRoman->convert($bbit, false); + $blt_width = $this->GetStringWidth($maxlnum . $this->list_number_suffix); + break; + + case 'disc': + case 'circle': + case 'square': + $size = $this->sizeConverter->convert($this->list_symbol_size, $this->FontSize); + $offset = $this->sizeConverter->convert($this->list_marker_offset, $this->FontSize); + $blt_width = $size + $offset; + break; + + case 'arabic-indic': + $blt_width = $this->GetStringWidth(str_repeat($decToOther->convert(3, 0x0660), strlen($maxnum)) . $this->list_number_suffix); + break; + case 'persian': + case 'urdu': + $blt_width = $this->GetStringWidth(str_repeat($decToOther->convert(3, 0x06F0), strlen($maxnum)) . $this->list_number_suffix); + break; + case 'bengali': + $blt_width = $this->GetStringWidth(str_repeat($decToOther->convert(3, 0x09E6), strlen($maxnum)) . $this->list_number_suffix); + break; + case 'devanagari': + $blt_width = $this->GetStringWidth(str_repeat($decToOther->convert(3, 0x0966), strlen($maxnum)) . $this->list_number_suffix); + break; + case 'gujarati': + $blt_width = $this->GetStringWidth(str_repeat($decToOther->convert(3, 0x0AE6), strlen($maxnum)) . $this->list_number_suffix); + break; + case 'gurmukhi': + $blt_width = $this->GetStringWidth(str_repeat($decToOther->convert(3, 0x0A66), strlen($maxnum)) . $this->list_number_suffix); + break; + case 'kannada': + $blt_width = $this->GetStringWidth(str_repeat($decToOther->convert(3, 0x0CE6), strlen($maxnum)) . $this->list_number_suffix); + break; + case 'malayalam': + $blt_width = $this->GetStringWidth(str_repeat($decToOther->convert(6, 0x0D66), strlen($maxnum)) . $this->list_number_suffix); + break; + case 'oriya': + $blt_width = $this->GetStringWidth(str_repeat($decToOther->convert(3, 0x0B66), strlen($maxnum)) . $this->list_number_suffix); + break; + case 'telugu': + $blt_width = $this->GetStringWidth(str_repeat($decToOther->convert(3, 0x0C66), strlen($maxnum)) . $this->list_number_suffix); + break; + case 'tamil': + $blt_width = $this->GetStringWidth(str_repeat($decToOther->convert(9, 0x0BE6), strlen($maxnum)) . $this->list_number_suffix); + break; + case 'thai': + $blt_width = $this->GetStringWidth(str_repeat($decToOther->convert(5, 0x0E50), strlen($maxnum)) . $this->list_number_suffix); + break; + default: + $blt_width = $this->GetStringWidth(str_repeat('5', strlen($maxnum)) . $this->list_number_suffix); + break; + } + + return ($blt_width + $markeroffset); + } + + function _saveTextBuffer($t, $link = '', $intlink = '', $return = false) + { + // mPDF 6 Lists + $arr = []; + $arr[0] = $t; + if (isset($link) && $link) { + $arr[1] = $link; + } + $arr[2] = $this->currentfontstyle; + if (isset($this->colorarray) && $this->colorarray) { + $arr[3] = $this->colorarray; + } + $arr[4] = $this->currentfontfamily; + $arr[5] = $this->currentLang; // mPDF 6 + if (isset($intlink) && $intlink) { + $arr[7] = $intlink; + } + // mPDF 6 + // If Kerning set for OTL, and useOTL has positive value, but has not set for this particular script, + // set for kerning via kern table + // e.g. Latin script when useOTL set as 0x80 + if (isset($this->OTLtags['Plus']) && strpos($this->OTLtags['Plus'], 'kern') !== false && empty($this->OTLdata['GPOSinfo'])) { + $this->textvar = ($this->textvar | TextVars::FC_KERNING); + } + $arr[8] = $this->textvar; // mPDF 5.7.1 + if (isset($this->textparam) && $this->textparam) { + $arr[9] = $this->textparam; + } + if (isset($this->spanbgcolorarray) && $this->spanbgcolorarray) { + $arr[10] = $this->spanbgcolorarray; + } + $arr[11] = $this->currentfontsize; + if (isset($this->ReqFontStyle) && $this->ReqFontStyle) { + $arr[12] = $this->ReqFontStyle; + } + if (isset($this->lSpacingCSS) && $this->lSpacingCSS) { + $arr[14] = $this->lSpacingCSS; + } + if (isset($this->wSpacingCSS) && $this->wSpacingCSS) { + $arr[15] = $this->wSpacingCSS; + } + if (isset($this->spanborddet) && $this->spanborddet) { + $arr[16] = $this->spanborddet; + } + if (isset($this->textshadow) && $this->textshadow) { + $arr[17] = $this->textshadow; + } + if (isset($this->OTLdata) && $this->OTLdata) { + $arr[18] = $this->OTLdata; + $this->OTLdata = []; + } // mPDF 5.7.1 + else { + $arr[18] = null; + } + // mPDF 6 Lists + if ($return) { + return ($arr); + } + if ($this->listitem) { + $this->textbuffer[] = $this->listitem; + $this->listitem = []; + } + $this->textbuffer[] = $arr; + } + + function _saveCellTextBuffer($t, $link = '', $intlink = '') + { + $arr = []; + $arr[0] = $t; + if (isset($link) && $link) { + $arr[1] = $link; + } + $arr[2] = $this->currentfontstyle; + if (isset($this->colorarray) && $this->colorarray) { + $arr[3] = $this->colorarray; + } + $arr[4] = $this->currentfontfamily; + if (isset($intlink) && $intlink) { + $arr[7] = $intlink; + } + // mPDF 6 + // If Kerning set for OTL, and useOTL has positive value, but has not set for this particular script, + // set for kerning via kern table + // e.g. Latin script when useOTL set as 0x80 + if (isset($this->OTLtags['Plus']) && strpos($this->OTLtags['Plus'], 'kern') !== false && empty($this->OTLdata['GPOSinfo'])) { + $this->textvar = ($this->textvar | TextVars::FC_KERNING); + } + $arr[8] = $this->textvar; // mPDF 5.7.1 + if (isset($this->textparam) && $this->textparam) { + $arr[9] = $this->textparam; + } + if (isset($this->spanbgcolorarray) && $this->spanbgcolorarray) { + $arr[10] = $this->spanbgcolorarray; + } + $arr[11] = $this->currentfontsize; + if (isset($this->ReqFontStyle) && $this->ReqFontStyle) { + $arr[12] = $this->ReqFontStyle; + } + if (isset($this->lSpacingCSS) && $this->lSpacingCSS) { + $arr[14] = $this->lSpacingCSS; + } + if (isset($this->wSpacingCSS) && $this->wSpacingCSS) { + $arr[15] = $this->wSpacingCSS; + } + if (isset($this->spanborddet) && $this->spanborddet) { + $arr[16] = $this->spanborddet; + } + if (isset($this->textshadow) && $this->textshadow) { + $arr[17] = $this->textshadow; + } + if (isset($this->OTLdata) && $this->OTLdata) { + $arr[18] = $this->OTLdata; + $this->OTLdata = []; + } // mPDF 5.7.1 + else { + $arr[18] = null; + } + $this->cell[$this->row][$this->col]['textbuffer'][] = $arr; + } + + function printbuffer($arrayaux, $blockstate = 0, $is_table = false, $table_draft = false, $cell_dir = '') + { + // $blockstate = 0; // NO margins/padding + // $blockstate = 1; // Top margins/padding only + // $blockstate = 2; // Bottom margins/padding only + // $blockstate = 3; // Top & bottom margins/padding + $this->spanbgcolorarray = ''; + $this->spanbgcolor = false; + $this->spanborder = false; + $this->spanborddet = []; + $paint_ht_corr = 0; + /* -- CSS-FLOAT -- */ + if (count($this->floatDivs)) { + list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($this->blklvl); + if (($this->blk[$this->blklvl]['inner_width'] - $l_width - $r_width) < (2 * $this->GetCharWidth('W', false))) { + // Too narrow to fit - try to move down past L or R float + if ($l_max < $r_max && ($this->blk[$this->blklvl]['inner_width'] - $r_width) > (2 * $this->GetCharWidth('W', false))) { + $this->ClearFloats('LEFT', $this->blklvl); + } elseif ($r_max < $l_max && ($this->blk[$this->blklvl]['inner_width'] - $l_width) > (2 * $this->GetCharWidth('W', false))) { + $this->ClearFloats('RIGHT', $this->blklvl); + } else { + $this->ClearFloats('BOTH', $this->blklvl); + } + } + } + /* -- END CSS-FLOAT -- */ + $bak_y = $this->y; + $bak_x = $this->x; + $align = ''; + if (!$is_table) { + if (isset($this->blk[$this->blklvl]['align']) && $this->blk[$this->blklvl]['align']) { + $align = $this->blk[$this->blklvl]['align']; + } + // Block-align is set by e.g. <.. align="center"> Takes priority for this block but not inherited + if (isset($this->blk[$this->blklvl]['block-align']) && $this->blk[$this->blklvl]['block-align']) { + $align = $this->blk[$this->blklvl]['block-align']; + } + if (isset($this->blk[$this->blklvl]['direction'])) { + $blockdir = $this->blk[$this->blklvl]['direction']; + } else { + $blockdir = ""; + } + $this->divwidth = $this->blk[$this->blklvl]['width']; + } else { + $align = $this->cellTextAlign; + $blockdir = $cell_dir; + } + $oldpage = $this->page; + + // ADDED for Out of Block now done as Flowing Block + if ($this->divwidth == 0) { + $this->divwidth = $this->pgwidth; + } + + if (!$is_table) { + $this->SetLineHeight($this->FontSizePt, $this->blk[$this->blklvl]['line_height']); + } + $this->divheight = $this->lineheight; + $old_height = $this->divheight; + + // As a failsafe - if font has been set but not output to page + if (!$table_draft) { + $this->SetFont($this->default_font, '', $this->default_font_size, true, true); // force output to page + } + + $this->newFlowingBlock($this->divwidth, $this->divheight, $align, $is_table, $blockstate, true, $blockdir, $table_draft); + + $array_size = count($arrayaux); + + // Added - Otherwise

did not output top margins/padding for 1st/2nd div + if ($array_size == 0) { + $this->finishFlowingBlock(true); + } // true = END of flowing block + // mPDF 6 + // ALL the chunks of textbuffer need to have at least basic OTLdata set + // First make sure each element/chunk has the OTLdata for Bidi set. + for ($i = 0; $i < $array_size; $i++) { + if (empty($arrayaux[$i][18])) { + if (substr($arrayaux[$i][0], 0, 3) == "\xbb\xa4\xac") { // object identifier has been identified! + $unicode = [0xFFFC]; // Object replacement character + } else { + $unicode = $this->UTF8StringToArray($arrayaux[$i][0], false); + } + $is_strong = false; + $this->getBasicOTLdata($arrayaux[$i][18], $unicode, $is_strong); + } + // Gets messed up if try and use core fonts inside a paragraph of text which needs to be BiDi re-ordered or OTLdata set + if (($blockdir == 'rtl' || $this->biDirectional) && isset($arrayaux[$i][4]) && in_array($arrayaux[$i][4], ['ccourier', 'ctimes', 'chelvetica', 'csymbol', 'czapfdingbats'])) { + throw new \Mpdf\MpdfException("You cannot use core fonts in a document which contains RTL text."); + } + } + // mPDF 6 + // Process bidirectional text ready for bidi-re-ordering (which is done after line-breaks are established in WriteFlowingBlock etc.) + if (($blockdir == 'rtl' || $this->biDirectional) && !$table_draft) { + if (empty($this->otl)) { + $this->otl = new Otl($this, $this->fontCache); + } + $this->otl->bidiPrepare($arrayaux, $blockdir); + $array_size = count($arrayaux); + } + + + // Remove empty items // mPDF 6 + for ($i = $array_size - 1; $i > 0; $i--) { + if (empty($arrayaux[$i][0]) && (isset($arrayaux[$i][16]) && $arrayaux[$i][16] !== '0') && empty($arrayaux[$i][7])) { + unset($arrayaux[$i]); + } + } + + // Correct adjoining borders for inline elements + if (isset($arrayaux[0][16])) { + $lastspanborder = $arrayaux[0][16]; + } else { + $lastspanborder = false; + } + for ($i = 1; $i < $array_size; $i++) { + if (isset($arrayaux[$i][16]) && $arrayaux[$i][16] == $lastspanborder && + ((!isset($arrayaux[$i][9]['bord-decoration']) && !isset($arrayaux[$i - 1][9]['bord-decoration'])) || + (isset($arrayaux[$i][9]['bord-decoration']) && isset($arrayaux[$i - 1][9]['bord-decoration']) && $arrayaux[$i][9]['bord-decoration'] == $arrayaux[$i - 1][9]['bord-decoration']) + ) + ) { + if (isset($arrayaux[$i][16]['R'])) { + $lastspanborder = $arrayaux[$i][16]; + } else { + $lastspanborder = false; + } + $arrayaux[$i][16]['L']['s'] = 0; + $arrayaux[$i][16]['L']['w'] = 0; + $arrayaux[$i - 1][16]['R']['s'] = 0; + $arrayaux[$i - 1][16]['R']['w'] = 0; + } else { + if (isset($arrayaux[$i][16]['R'])) { + $lastspanborder = $arrayaux[$i][16]; + } else { + $lastspanborder = false; + } + } + } + + for ($i = 0; $i < $array_size; $i++) { + // COLS + $oldcolumn = $this->CurrCol; + $vetor = isset($arrayaux[$i]) ? $arrayaux[$i] : null; + if ($i == 0 && $vetor[0] != "\n" && ! $this->ispre) { + $vetor[0] = ltrim($vetor[0]); + if (!empty($vetor[18])) { + $this->otl->trimOTLdata($vetor[18], true, false); + } // *OTL* + } + + // FIXED TO ALLOW IT TO SHOW '0' + if (empty($vetor[0]) && !($vetor[0] === '0') && empty($vetor[7])) { // Ignore empty text and not carrying an internal link + // Check if it is the last element. If so then finish printing the block + if ($i == ($array_size - 1)) { + $this->finishFlowingBlock(true); + } // true = END of flowing block + continue; + } + + + // Activating buffer properties + if (isset($vetor[11]) && $vetor[11] != '') { // Font Size + if ($is_table && $this->shrin_k) { + $this->SetFontSize($vetor[11] / $this->shrin_k, false); + } else { + $this->SetFontSize($vetor[11], false); + } + } + + if (isset($vetor[17]) && !empty($vetor[17])) { // TextShadow + $this->textshadow = $vetor[17]; + } + if (isset($vetor[16]) && !empty($vetor[16])) { // Border + $this->spanborddet = $vetor[16]; + $this->spanborder = true; + } + + if (isset($vetor[15])) { // Word spacing + $this->wSpacingCSS = $vetor[15]; + if ($this->wSpacingCSS && strtoupper($this->wSpacingCSS) != 'NORMAL') { + $this->minwSpacing = $this->sizeConverter->convert($this->wSpacingCSS, $this->FontSize) / $this->shrin_k; // mPDF 5.7.3 + } + } + if (isset($vetor[14])) { // Letter spacing + $this->lSpacingCSS = $vetor[14]; + if (($this->lSpacingCSS || $this->lSpacingCSS === '0') && strtoupper($this->lSpacingCSS) != 'NORMAL') { + $this->fixedlSpacing = $this->sizeConverter->convert($this->lSpacingCSS, $this->FontSize) / $this->shrin_k; // mPDF 5.7.3 + } + } + + + if (isset($vetor[10]) and ! empty($vetor[10])) { // Background color + $this->spanbgcolorarray = $vetor[10]; + $this->spanbgcolor = true; + } + if (isset($vetor[9]) and ! empty($vetor[9])) { // Text parameters - Outline + hyphens + $this->textparam = $vetor[9]; + $this->SetTextOutline($this->textparam); + // mPDF 5.7.3 inline text-decoration parameters + if ($is_table && $this->shrin_k) { + if (isset($this->textparam['text-baseline'])) { + $this->textparam['text-baseline'] /= $this->shrin_k; + } + if (isset($this->textparam['decoration-baseline'])) { + $this->textparam['decoration-baseline'] /= $this->shrin_k; + } + if (isset($this->textparam['decoration-fontsize'])) { + $this->textparam['decoration-fontsize'] /= $this->shrin_k; + } + } + } + if (isset($vetor[8])) { // mPDF 5.7.1 + $this->textvar = $vetor[8]; + } + if (isset($vetor[7]) and $vetor[7] != '') { // internal target: + $ily = $this->y; + if ($this->table_rotate) { + $this->internallink[$vetor[7]] = ["Y" => $ily, "PAGE" => $this->page, "tbrot" => true]; + } elseif ($this->kwt) { + $this->internallink[$vetor[7]] = ["Y" => $ily, "PAGE" => $this->page, "kwt" => true]; + } elseif ($this->ColActive) { + $this->internallink[$vetor[7]] = ["Y" => $ily, "PAGE" => $this->page, "col" => $this->CurrCol]; + } elseif (!$this->keep_block_together) { + $this->internallink[$vetor[7]] = ["Y" => $ily, "PAGE" => $this->page]; + } + if (empty($vetor[0])) { // Ignore empty text + // Check if it is the last element. If so then finish printing the block + if ($i == ($array_size - 1)) { + $this->finishFlowingBlock(true); + } // true = END of flowing block + continue; + } + } + if (isset($vetor[5]) and $vetor[5] != '') { // Language // mPDF 6 + $this->currentLang = $vetor[5]; + } + if (isset($vetor[4]) and $vetor[4] != '') { // Font Family + $font = $this->SetFont($vetor[4], $this->FontStyle, 0, false); + } + if (!empty($vetor[3])) { // Font Color + $cor = $vetor[3]; + $this->SetTColor($cor); + } + if (isset($vetor[2]) and $vetor[2] != '') { // Bold,Italic styles + $this->SetStyles($vetor[2]); + } + + if (isset($vetor[12]) and $vetor[12] != '') { // Requested Bold,Italic + $this->ReqFontStyle = $vetor[12]; + } + if (isset($vetor[1]) and $vetor[1] != '') { // LINK + if (strpos($vetor[1], ".") === false && strpos($vetor[1], "@") !== 0) { // assuming every external link has a dot indicating extension (e.g: .html .txt .zip www.somewhere.com etc.) + // Repeated reference to same anchor? + while (array_key_exists($vetor[1], $this->internallink)) { + $vetor[1] = "#" . $vetor[1]; + } + $this->internallink[$vetor[1]] = $this->AddLink(); + $vetor[1] = $this->internallink[$vetor[1]]; + } + $this->HREF = $vetor[1]; // HREF link style set here ****** + } + + // SPECIAL CONTENT - IMAGES & FORM OBJECTS + // Print-out special content + + if (substr($vetor[0], 0, 3) == "\xbb\xa4\xac") { // identifier has been identified! + $objattr = $this->_getObjAttr($vetor[0]); + + /* -- TABLES -- */ + if ($objattr['type'] == 'nestedtable') { + if ($objattr['nestedcontent']) { + $level = $objattr['level']; + $table = &$this->table[$level][$objattr['table']]; + + if ($table_draft) { + $this->y += $this->table[($level + 1)][$objattr['nestedcontent']]['h']; // nested table height + $this->finishFlowingBlock(false, 'nestedtable'); + } else { + $cell = &$table['cells'][$objattr['row']][$objattr['col']]; + $this->finishFlowingBlock(false, 'nestedtable'); + $save_dw = $this->divwidth; + $save_buffer = $this->cellBorderBuffer; + $this->cellBorderBuffer = []; + $ncx = $this->x; + list($dummyx, $w) = $this->_tableGetWidth($table, $objattr['row'], $objattr['col']); + $ntw = $this->table[($level + 1)][$objattr['nestedcontent']]['w']; // nested table width + if (!$this->simpleTables) { + if ($this->packTableData) { + list($bt, $br, $bb, $bl) = $this->_getBorderWidths($cell['borderbin']); + } else { + $br = $cell['border_details']['R']['w']; + $bl = $cell['border_details']['L']['w']; + } + if ($table['borders_separate']) { + $innerw = $w - $bl - $br - $cell['padding']['L'] - $cell['padding']['R'] - $table['border_spacing_H']; + } else { + $innerw = $w - $bl / 2 - $br / 2 - $cell['padding']['L'] - $cell['padding']['R']; + } + } elseif ($this->simpleTables) { + if ($table['borders_separate']) { + $innerw = $w - $table['simple']['border_details']['L']['w'] - $table['simple']['border_details']['R']['w'] - $cell['padding']['L'] - $cell['padding']['R'] - $table['border_spacing_H']; + } else { + $innerw = $w - $table['simple']['border_details']['L']['w'] / 2 - $table['simple']['border_details']['R']['w'] / 2 - $cell['padding']['L'] - $cell['padding']['R']; + } + } + if ($cell['a'] == 'C' || $this->table[($level + 1)][$objattr['nestedcontent']]['a'] == 'C') { + $ncx += ($innerw - $ntw) / 2; + } elseif ($cell['a'] == 'R' || $this->table[($level + 1)][$objattr['nestedcontent']]['a'] == 'R') { + $ncx += $innerw - $ntw; + } + $this->x = $ncx; + + $this->_tableWrite($this->table[($level + 1)][$objattr['nestedcontent']]); + $this->cellBorderBuffer = $save_buffer; + $this->x = $bak_x; + $this->divwidth = $save_dw; + } + + $this->newFlowingBlock($this->divwidth, $this->divheight, $align, $is_table, $blockstate, false, $blockdir, $table_draft); + } + } else { + /* -- END TABLES -- */ + if ($is_table) { // *TABLES* + $maxWidth = $this->divwidth; // *TABLES* + } // *TABLES* + else { // *TABLES* + $maxWidth = $this->divwidth - ($this->blk[$this->blklvl]['padding_left'] + $this->blk[$this->blklvl]['border_left']['w'] + $this->blk[$this->blklvl]['padding_right'] + $this->blk[$this->blklvl]['border_right']['w']); + } // *TABLES* + + /* -- CSS-IMAGE-FLOAT -- */ + // If float (already) exists at this level + if (isset($this->floatmargins['R']) && $this->y <= $this->floatmargins['R']['y1'] && $this->y >= $this->floatmargins['R']['y0']) { + $maxWidth -= $this->floatmargins['R']['w']; + } + if (isset($this->floatmargins['L']) && $this->y <= $this->floatmargins['L']['y1'] && $this->y >= $this->floatmargins['L']['y0']) { + $maxWidth -= $this->floatmargins['L']['w']; + } + /* -- END CSS-IMAGE-FLOAT -- */ + + list($skipln) = $this->inlineObject($objattr['type'], '', $this->y, $objattr, $this->lMargin, ($this->flowingBlockAttr['contentWidth'] / Mpdf::SCALE), $maxWidth, $this->flowingBlockAttr['height'], false, $is_table); + // 1 -> New line needed because of width + // -1 -> Will fit width on line but NEW PAGE REQUIRED because of height + // -2 -> Will not fit on line therefore needs new line but thus NEW PAGE REQUIRED + $iby = $this->y; + $oldpage = $this->page; + $oldcol = $this->CurrCol; + if (($skipln == 1 || $skipln == -2) && !isset($objattr['float'])) { + $this->finishFlowingBlock(false, $objattr['type']); + $this->newFlowingBlock($this->divwidth, $this->divheight, $align, $is_table, $blockstate, false, $blockdir, $table_draft); + } + + if (!$table_draft) { + $thispage = $this->page; + if ($this->CurrCol != $oldcol) { + $changedcol = true; + } else { + $changedcol = false; + } + + // the previous lines can already have triggered page break or column change + if (!$changedcol && $skipln < 0 && $this->AcceptPageBreak() && $thispage == $oldpage) { + $this->AddPage($this->CurOrientation); + + // Added to correct Images already set on line before page advanced + // i.e. if second inline image on line is higher than first and forces new page + if (count($this->objectbuffer)) { + $yadj = $iby - $this->y; + foreach ($this->objectbuffer as $ib => $val) { + if ($this->objectbuffer[$ib]['OUTER-Y']) { + $this->objectbuffer[$ib]['OUTER-Y'] -= $yadj; + } + if ($this->objectbuffer[$ib]['BORDER-Y']) { + $this->objectbuffer[$ib]['BORDER-Y'] -= $yadj; + } + if ($this->objectbuffer[$ib]['INNER-Y']) { + $this->objectbuffer[$ib]['INNER-Y'] -= $yadj; + } + } + } + } + + // Added to correct for OddEven Margins + if ($this->page != $oldpage) { + if (($this->page - $oldpage) % 2 == 1) { + $bak_x += $this->MarginCorrection; + } + $oldpage = $this->page; + $y = $this->tMargin - $paint_ht_corr; + $this->oldy = $this->tMargin - $paint_ht_corr; + $old_height = 0; + } + $this->x = $bak_x; + /* -- COLUMNS -- */ + // COLS + // OR COLUMN CHANGE + if ($this->CurrCol != $oldcolumn) { + if ($this->directionality == 'rtl') { // *OTL* + $bak_x -= ($this->CurrCol - $oldcolumn) * ($this->ColWidth + $this->ColGap); // *OTL* + } // *OTL* + else { // *OTL* + $bak_x += ($this->CurrCol - $oldcolumn) * ($this->ColWidth + $this->ColGap); + } // *OTL* + $this->x = $bak_x; + $oldcolumn = $this->CurrCol; + $y = $this->y0 - $paint_ht_corr; + $this->oldy = $this->y0 - $paint_ht_corr; + $old_height = 0; + } + /* -- END COLUMNS -- */ + } + + /* -- CSS-IMAGE-FLOAT -- */ + if ($objattr['type'] == 'image' && isset($objattr['float'])) { + $fy = $this->y; + + // DIV TOP MARGIN/BORDER/PADDING + if ($this->flowingBlockAttr['newblock'] && ($this->flowingBlockAttr['blockstate'] == 1 || $this->flowingBlockAttr['blockstate'] == 3) && $this->flowingBlockAttr['lineCount'] == 0) { + $fy += $this->blk[$this->blklvl]['margin_top'] + $this->blk[$this->blklvl]['padding_top'] + $this->blk[$this->blklvl]['border_top']['w']; + } + + if ($objattr['float'] == 'R') { + $fx = $this->w - $this->rMargin - $objattr['width'] - ($this->blk[$this->blklvl]['outer_right_margin'] + $this->blk[$this->blklvl]['border_right']['w'] + $this->blk[$this->blklvl]['padding_right']); + } elseif ($objattr['float'] == 'L') { + $fx = $this->lMargin + ($this->blk[$this->blklvl]['outer_left_margin'] + $this->blk[$this->blklvl]['border_left']['w'] + $this->blk[$this->blklvl]['padding_left']); + } + $w = $objattr['width']; + $h = abs($objattr['height']); + + $widthLeft = $maxWidth - ($this->flowingBlockAttr['contentWidth'] / Mpdf::SCALE); + $maxHeight = $this->h - ($this->tMargin + $this->margin_header + $this->bMargin + 10); + // For Images + $extraWidth = ($objattr['border_left']['w'] + $objattr['border_right']['w'] + $objattr['margin_left'] + $objattr['margin_right']); + $extraHeight = ($objattr['border_top']['w'] + $objattr['border_bottom']['w'] + $objattr['margin_top'] + $objattr['margin_bottom']); + + if ($objattr['itype'] == 'wmf' || $objattr['itype'] == 'svg') { + $file = $objattr['file']; + $info = $this->formobjects[$file]; + } else { + $file = $objattr['file']; + $info = $this->images[$file]; + } + $img_w = $w - $extraWidth; + $img_h = $h - $extraHeight; + if ($objattr['border_left']['w']) { + $objattr['BORDER-WIDTH'] = $img_w + (($objattr['border_left']['w'] + $objattr['border_right']['w']) / 2); + $objattr['BORDER-HEIGHT'] = $img_h + (($objattr['border_top']['w'] + $objattr['border_bottom']['w']) / 2); + $objattr['BORDER-X'] = $fx + $objattr['margin_left'] + (($objattr['border_left']['w']) / 2); + $objattr['BORDER-Y'] = $fy + $objattr['margin_top'] + (($objattr['border_top']['w']) / 2); + } + $objattr['INNER-WIDTH'] = $img_w; + $objattr['INNER-HEIGHT'] = $img_h; + $objattr['INNER-X'] = $fx + $objattr['margin_left'] + ($objattr['border_left']['w']); + $objattr['INNER-Y'] = $fy + $objattr['margin_top'] + ($objattr['border_top']['w']); + $objattr['ID'] = $info['i']; + $objattr['OUTER-WIDTH'] = $w; + $objattr['OUTER-HEIGHT'] = $h; + $objattr['OUTER-X'] = $fx; + $objattr['OUTER-Y'] = $fy; + if ($objattr['float'] == 'R') { + // If R float already exists at this level + $this->floatmargins['R']['skipline'] = false; + if (isset($this->floatmargins['R']['y1']) && $this->floatmargins['R']['y1'] > 0 && $fy < $this->floatmargins['R']['y1']) { + $this->WriteFlowingBlock($vetor[0], $vetor[18]); // mPDF 5.7.1 + } // If L float already exists at this level + elseif (isset($this->floatmargins['L']['y1']) && $this->floatmargins['L']['y1'] > 0 && $fy < $this->floatmargins['L']['y1']) { + // Final check distance between floats is not now too narrow to fit text + $mw = 2 * $this->GetCharWidth('W', false); + if (($this->blk[$this->blklvl]['inner_width'] - $w - $this->floatmargins['L']['w']) < $mw) { + $this->WriteFlowingBlock($vetor[0], $vetor[18]); // mPDF 5.7.1 + } else { + $this->floatmargins['R']['x'] = $fx; + $this->floatmargins['R']['w'] = $w; + $this->floatmargins['R']['y0'] = $fy; + $this->floatmargins['R']['y1'] = $fy + $h; + if ($skipln == 1) { + $this->floatmargins['R']['skipline'] = true; + $this->floatmargins['R']['id'] = count($this->floatbuffer) + 0; + $objattr['skipline'] = true; + } + $this->floatbuffer[] = $objattr; + } + } else { + $this->floatmargins['R']['x'] = $fx; + $this->floatmargins['R']['w'] = $w; + $this->floatmargins['R']['y0'] = $fy; + $this->floatmargins['R']['y1'] = $fy + $h; + if ($skipln == 1) { + $this->floatmargins['R']['skipline'] = true; + $this->floatmargins['R']['id'] = count($this->floatbuffer) + 0; + $objattr['skipline'] = true; + } + $this->floatbuffer[] = $objattr; + } + } elseif ($objattr['float'] == 'L') { + // If L float already exists at this level + $this->floatmargins['L']['skipline'] = false; + if (isset($this->floatmargins['L']['y1']) && $this->floatmargins['L']['y1'] > 0 && $fy < $this->floatmargins['L']['y1']) { + $this->floatmargins['L']['skipline'] = false; + $this->WriteFlowingBlock($vetor[0], $vetor[18]); // mPDF 5.7.1 + } // If R float already exists at this level + elseif (isset($this->floatmargins['R']['y1']) && $this->floatmargins['R']['y1'] > 0 && $fy < $this->floatmargins['R']['y1']) { + // Final check distance between floats is not now too narrow to fit text + $mw = 2 * $this->GetCharWidth('W', false); + if (($this->blk[$this->blklvl]['inner_width'] - $w - $this->floatmargins['R']['w']) < $mw) { + $this->WriteFlowingBlock($vetor[0], $vetor[18]); // mPDF 5.7.1 + } else { + $this->floatmargins['L']['x'] = $fx + $w; + $this->floatmargins['L']['w'] = $w; + $this->floatmargins['L']['y0'] = $fy; + $this->floatmargins['L']['y1'] = $fy + $h; + if ($skipln == 1) { + $this->floatmargins['L']['skipline'] = true; + $this->floatmargins['L']['id'] = count($this->floatbuffer) + 0; + $objattr['skipline'] = true; + } + $this->floatbuffer[] = $objattr; + } + } else { + $this->floatmargins['L']['x'] = $fx + $w; + $this->floatmargins['L']['w'] = $w; + $this->floatmargins['L']['y0'] = $fy; + $this->floatmargins['L']['y1'] = $fy + $h; + if ($skipln == 1) { + $this->floatmargins['L']['skipline'] = true; + $this->floatmargins['L']['id'] = count($this->floatbuffer) + 0; + $objattr['skipline'] = true; + } + $this->floatbuffer[] = $objattr; + } + } + } else { + /* -- END CSS-IMAGE-FLOAT -- */ + $this->WriteFlowingBlock($vetor[0], (isset($vetor[18]) ? $vetor[18] : null)); // mPDF 5.7.1 + /* -- CSS-IMAGE-FLOAT -- */ + } + /* -- END CSS-IMAGE-FLOAT -- */ + } // *TABLES* + } // END If special content + else { // THE text + if ($this->tableLevel) { + $paint_ht_corr = 0; + } // To move the y up when new column/page started if div border needed + else { + $paint_ht_corr = $this->blk[$this->blklvl]['border_top']['w']; + } + + if ($vetor[0] == "\n") { // We are reading a
now turned into newline ("\n") + if ($this->flowingBlockAttr['content']) { + $this->finishFlowingBlock(false, 'br'); + } elseif ($is_table) { + $this->y+= $this->_computeLineheight($this->cellLineHeight); + } elseif (!$is_table) { + $this->DivLn($this->lineheight); + if ($this->ColActive) { + $this->breakpoints[$this->CurrCol][] = $this->y; + } // *COLUMNS* + } + // Added to correct for OddEven Margins + if ($this->page != $oldpage) { + if (($this->page - $oldpage) % 2 == 1) { + $bak_x += $this->MarginCorrection; + } + $oldpage = $this->page; + $y = $this->tMargin - $paint_ht_corr; + $this->oldy = $this->tMargin - $paint_ht_corr; + $old_height = 0; + } + $this->x = $bak_x; + /* -- COLUMNS -- */ + // COLS + // OR COLUMN CHANGE + if ($this->CurrCol != $oldcolumn) { + if ($this->directionality == 'rtl') { // *OTL* + $bak_x -= ($this->CurrCol - $oldcolumn) * ($this->ColWidth + $this->ColGap); // *OTL* + } // *OTL* + else { // *OTL* + $bak_x += ($this->CurrCol - $oldcolumn) * ($this->ColWidth + $this->ColGap); + } // *OTL* + $this->x = $bak_x; + $oldcolumn = $this->CurrCol; + $y = $this->y0 - $paint_ht_corr; + $this->oldy = $this->y0 - $paint_ht_corr; + $old_height = 0; + } + /* -- END COLUMNS -- */ + $this->newFlowingBlock($this->divwidth, $this->divheight, $align, $is_table, $blockstate, false, $blockdir, $table_draft); + } else { + $this->WriteFlowingBlock($vetor[0], $vetor[18]); // mPDF 5.7.1 + // Added to correct for OddEven Margins + if ($this->page != $oldpage) { + if (($this->page - $oldpage) % 2 == 1) { + $bak_x += $this->MarginCorrection; + $this->x = $bak_x; + } + $oldpage = $this->page; + $y = $this->tMargin - $paint_ht_corr; + $this->oldy = $this->tMargin - $paint_ht_corr; + $old_height = 0; + } + /* -- COLUMNS -- */ + // COLS + // OR COLUMN CHANGE + if ($this->CurrCol != $oldcolumn) { + if ($this->directionality == 'rtl') { // *OTL* + $bak_x -= ($this->CurrCol - $oldcolumn) * ($this->ColWidth + $this->ColGap); // *OTL* + } // *OTL* + else { // *OTL* + $bak_x += ($this->CurrCol - $oldcolumn) * ($this->ColWidth + $this->ColGap); + } // *OTL* + $this->x = $bak_x; + $oldcolumn = $this->CurrCol; + $y = $this->y0 - $paint_ht_corr; + $this->oldy = $this->y0 - $paint_ht_corr; + $old_height = 0; + } + /* -- END COLUMNS -- */ + } + } + + // Check if it is the last element. If so then finish printing the block + if ($i == ($array_size - 1)) { + $this->finishFlowingBlock(true); // true = END of flowing block + // Added to correct for OddEven Margins + if ($this->page != $oldpage) { + if (($this->page - $oldpage) % 2 == 1) { + $bak_x += $this->MarginCorrection; + $this->x = $bak_x; + } + $oldpage = $this->page; + $y = $this->tMargin - $paint_ht_corr; + $this->oldy = $this->tMargin - $paint_ht_corr; + $old_height = 0; + } + + /* -- COLUMNS -- */ + // COLS + // OR COLUMN CHANGE + if ($this->CurrCol != $oldcolumn) { + if ($this->directionality == 'rtl') { // *OTL* + $bak_x -= ($this->CurrCol - $oldcolumn) * ($this->ColWidth + $this->ColGap); // *OTL* + } // *OTL* + else { // *OTL* + $bak_x += ($this->CurrCol - $oldcolumn) * ($this->ColWidth + $this->ColGap); + } // *OTL* + $this->x = $bak_x; + $oldcolumn = $this->CurrCol; + $y = $this->y0 - $paint_ht_corr; + $this->oldy = $this->y0 - $paint_ht_corr; + $old_height = 0; + } + /* -- END COLUMNS -- */ + } + + // RESETTING VALUES + $this->SetTColor($this->colorConverter->convert(0, $this->PDFAXwarnings)); + $this->SetDColor($this->colorConverter->convert(0, $this->PDFAXwarnings)); + $this->SetFColor($this->colorConverter->convert(255, $this->PDFAXwarnings)); + $this->colorarray = ''; + $this->spanbgcolorarray = ''; + $this->spanbgcolor = false; + $this->spanborder = false; + $this->spanborddet = []; + $this->HREF = ''; + $this->textparam = []; + $this->SetTextOutline(); + + $this->textvar = 0x00; // mPDF 5.7.1 + $this->OTLtags = []; + $this->textshadow = ''; + + $this->currentfontfamily = ''; + $this->currentfontsize = ''; + $this->currentfontstyle = ''; + $this->currentLang = $this->default_lang; // mPDF 6 + $this->RestrictUnicodeFonts($this->default_available_fonts); // mPDF 6 + /* -- TABLES -- */ + if ($this->tableLevel) { + $this->SetLineHeight('', $this->table[1][1]['cellLineHeight']); // *TABLES* + } else { /* -- END TABLES -- */ + if (isset($this->blk[$this->blklvl]['line_height']) && $this->blk[$this->blklvl]['line_height']) { + $this->SetLineHeight('', $this->blk[$this->blklvl]['line_height']); // sets default line height + } + } + $this->ResetStyles(); + $this->lSpacingCSS = ''; + $this->wSpacingCSS = ''; + $this->fixedlSpacing = false; + $this->minwSpacing = 0; + $this->SetDash(); + $this->dash_on = false; + $this->dotted_on = false; + }//end of for(i=0;iReset(); // mPDF 6 + // PAINT DIV BORDER // DISABLED IN COLUMNS AS DOESN'T WORK WHEN BROKEN ACROSS COLS?? + if ((isset($this->blk[$this->blklvl]['border']) || isset($this->blk[$this->blklvl]['bgcolor']) || isset($this->blk[$this->blklvl]['box_shadow'])) && $blockstate && ($this->y != $this->oldy)) { + $bottom_y = $this->y; // Does not include Bottom Margin + if (isset($this->blk[$this->blklvl]['startpage']) && $this->blk[$this->blklvl]['startpage'] != $this->page && $blockstate != 1) { + $this->PaintDivBB('pagetop', $blockstate); + } elseif ($blockstate != 1) { + $this->PaintDivBB('', $blockstate); + } + $this->y = $bottom_y; + $this->x = $bak_x; + } + + // Reset Font + $this->SetFontSize($this->default_font_size, false); + if ($table_draft) { + $ch = $this->y - $bak_y; + $this->y = $bak_y; + $this->x = $bak_x; + return $ch; + } + } + + function _setDashBorder($style, $div, $cp, $side) + { + if ($style == 'dashed' && (($side == 'L' || $side == 'R') || ($side == 'T' && $div != 'pagetop' && !$cp) || ($side == 'B' && $div != 'pagebottom') )) { + $dashsize = 2; // final dash will be this + 1*linewidth + $dashsizek = 1.5; // ratio of Dash/Blank + $this->SetDash($dashsize, ($dashsize / $dashsizek) + ($this->LineWidth * 2)); + } elseif ($style == 'dotted' || ($side == 'T' && ($div == 'pagetop' || $cp)) || ($side == 'B' && $div == 'pagebottom')) { + // Round join and cap + $this->SetLineJoin(1); + $this->SetLineCap(1); + $this->SetDash(0.001, ($this->LineWidth * 3)); + } + } + + function _setBorderLine($b, $k = 1) + { + $this->SetLineWidth($b['w'] / $k); + $this->SetDColor($b['c']); + if ($b['c'][0] == 5) { // RGBa + $this->SetAlpha(ord($b['c'][4]) / 100, 'Normal', false, 'S'); // mPDF 5.7.2 + } elseif ($b['c'][0] == 6) { // CMYKa + $this->SetAlpha(ord($b['c'][5]) / 100, 'Normal', false, 'S'); // mPDF 5.7.2 + } + } + + function PaintDivBB($divider = '', $blockstate = 0, $blvl = 0) + { + // Borders & backgrounds are done elsewhere for columns - messes up the repositioning in printcolumnbuffer + if ($this->ColActive) { + return; + } // *COLUMNS* + if ($this->keep_block_together) { + return; + } // mPDF 6 + $save_y = $this->y; + if (!$blvl) { + $blvl = $this->blklvl; + } + $x0 = $x1 = $y0 = $y1 = 0; + + // Added mPDF 3.0 Float DIV + if (isset($this->blk[$blvl]['bb_painted'][$this->page]) && $this->blk[$blvl]['bb_painted'][$this->page]) { + return; + } // *CSS-FLOAT* + + if (isset($this->blk[$blvl]['x0'])) { + $x0 = $this->blk[$blvl]['x0']; + } // left + if (isset($this->blk[$blvl]['y1'])) { + $y1 = $this->blk[$blvl]['y1']; + } // bottom + // Added mPDF 3.0 Float DIV - ensures backgrounds/borders are drawn to bottom of page + if ($y1 == 0) { + if ($divider == 'pagebottom') { + $y1 = $this->h - $this->bMargin; + } else { + $y1 = $this->y; + } + } + + $continuingpage = (isset($this->blk[$blvl]['startpage']) && $this->blk[$blvl]['startpage'] != $this->page); + + if (isset($this->blk[$blvl]['y0'])) { + $y0 = $this->blk[$blvl]['y0']; + } + $h = $y1 - $y0; + $w = $this->blk[$blvl]['width']; + $x1 = $x0 + $w; + + // Set border-widths as used here + $border_top = $this->blk[$blvl]['border_top']['w']; + $border_bottom = $this->blk[$blvl]['border_bottom']['w']; + $border_left = $this->blk[$blvl]['border_left']['w']; + $border_right = $this->blk[$blvl]['border_right']['w']; + if (!$this->blk[$blvl]['border_top'] || $divider == 'pagetop' || $continuingpage) { + $border_top = 0; + } + if (!$this->blk[$blvl]['border_bottom'] || $blockstate == 1 || $divider == 'pagebottom') { + $border_bottom = 0; + } + + $brTL_H = 0; + $brTL_V = 0; + $brTR_H = 0; + $brTR_V = 0; + $brBL_H = 0; + $brBL_V = 0; + $brBR_H = 0; + $brBR_V = 0; + + $brset = false; + /* -- BORDER-RADIUS -- */ + if (isset($this->blk[$blvl]['border_radius_TL_H'])) { + $brTL_H = $this->blk[$blvl]['border_radius_TL_H']; + $brset = true; + } + if (isset($this->blk[$blvl]['border_radius_TL_V'])) { + $brTL_V = $this->blk[$blvl]['border_radius_TL_V']; + $brset = true; + } + if (isset($this->blk[$blvl]['border_radius_TR_H'])) { + $brTR_H = $this->blk[$blvl]['border_radius_TR_H']; + $brset = true; + } + if (isset($this->blk[$blvl]['border_radius_TR_V'])) { + $brTR_V = $this->blk[$blvl]['border_radius_TR_V']; + $brset = true; + } + if (isset($this->blk[$blvl]['border_radius_BR_H'])) { + $brBR_H = $this->blk[$blvl]['border_radius_BR_H']; + $brset = true; + } + if (isset($this->blk[$blvl]['border_radius_BR_V'])) { + $brBR_V = $this->blk[$blvl]['border_radius_BR_V']; + $brset = true; + } + if (isset($this->blk[$blvl]['border_radius_BL_H'])) { + $brBL_H = $this->blk[$blvl]['border_radius_BL_H']; + $brset = true; + } + if (isset($this->blk[$blvl]['border_radius_BL_V'])) { + $brBL_V = $this->blk[$blvl]['border_radius_BL_V']; + $brset = true; + } + + if (!$this->blk[$blvl]['border_top'] || $divider == 'pagetop' || $continuingpage) { + $brTL_H = 0; + $brTL_V = 0; + $brTR_H = 0; + $brTR_V = 0; + } + if (!$this->blk[$blvl]['border_bottom'] || $blockstate == 1 || $divider == 'pagebottom') { + $brBL_H = 0; + $brBL_V = 0; + $brBR_H = 0; + $brBR_V = 0; + } + + // Disallow border-radius if it is smaller than the border width. + if ($brTL_H < min($border_left, $border_top)) { + $brTL_H = $brTL_V = 0; + } + if ($brTL_V < min($border_left, $border_top)) { + $brTL_V = $brTL_H = 0; + } + if ($brTR_H < min($border_right, $border_top)) { + $brTR_H = $brTR_V = 0; + } + if ($brTR_V < min($border_right, $border_top)) { + $brTR_V = $brTR_H = 0; + } + if ($brBL_H < min($border_left, $border_bottom)) { + $brBL_H = $brBL_V = 0; + } + if ($brBL_V < min($border_left, $border_bottom)) { + $brBL_V = $brBL_H = 0; + } + if ($brBR_H < min($border_right, $border_bottom)) { + $brBR_H = $brBR_V = 0; + } + if ($brBR_V < min($border_right, $border_bottom)) { + $brBR_V = $brBR_H = 0; + } + + // CHECK FOR radii that sum to > width or height of div ******** + $f = min($h / ($brTL_V + $brBL_V + 0.001), $h / ($brTR_V + $brBR_V + 0.001), $w / ($brTL_H + $brTR_H + 0.001), $w / ($brBL_H + $brBR_H + 0.001)); + if ($f < 1) { + $brTL_H *= $f; + $brTL_V *= $f; + $brTR_H *= $f; + $brTR_V *= $f; + $brBL_H *= $f; + $brBL_V *= $f; + $brBR_H *= $f; + $brBR_V *= $f; + } + /* -- END BORDER-RADIUS -- */ + + $tbcol = $this->colorConverter->convert(255, $this->PDFAXwarnings); + for ($l = 0; $l <= $blvl; $l++) { + if ($this->blk[$l]['bgcolor']) { + $tbcol = $this->blk[$l]['bgcolorarray']; + } + } + + // BORDERS + if (isset($this->blk[$blvl]['y0']) && $this->blk[$blvl]['y0']) { + $y0 = $this->blk[$blvl]['y0']; + } + $h = $y1 - $y0; + $w = $this->blk[$blvl]['width']; + + if ($this->blk[$blvl]['border_top'] && $divider != 'pagetop' && !$continuingpage) { + $tbd = $this->blk[$blvl]['border_top']; + + $legend = ''; + $legbreakL = 0; + $legbreakR = 0; + // BORDER LEGEND + if (isset($this->blk[$blvl]['border_legend']) && $this->blk[$blvl]['border_legend']) { + $legend = $this->blk[$blvl]['border_legend']; // Same structure array as textbuffer + $txt = $legend[0] = ltrim($legend[0]); + if (!empty($legend[18])) { + $this->otl->trimOTLdata($legend[18], true, false); + } // *OTL* + // Set font, size, style, color + $this->SetFont($legend[4], $legend[2], $legend[11]); + if (isset($legend[3]) && $legend[3]) { + $cor = $legend[3]; + $this->SetTColor($cor); + } + $stringWidth = $this->GetStringWidth($txt, true, $legend[18], $legend[8]); + $save_x = $this->x; + $save_y = $this->y; + $save_currentfontfamily = $this->FontFamily; + $save_currentfontsize = $this->FontSizePt; + $save_currentfontstyle = $this->FontStyle; + $this->y = $y0 - $this->FontSize / 2 + $this->blk[$blvl]['border_top']['w'] / 2; + $this->x = $x0 + $this->blk[$blvl]['padding_left'] + $this->blk[$blvl]['border_left']['w']; + + // Set the distance from the border line to the text ? make configurable variable + $gap = 0.2 * $this->FontSize; + $legbreakL = $this->x - $gap; + $legbreakR = $this->x + $stringWidth + $gap; + $this->magic_reverse_dir($txt, $this->blk[$blvl]['direction'], $legend[18]); + $fill = ''; + $this->Cell($stringWidth, $this->FontSize, $txt, '', 0, 'C', $fill, '', 0, 0, 0, 'M', $fill, false, $legend[18], $legend[8]); + // Reset + $this->x = $save_x; + $this->y = $save_y; + $this->SetFont($save_currentfontfamily, $save_currentfontstyle, $save_currentfontsize); + $this->SetTColor($this->colorConverter->convert(0, $this->PDFAXwarnings)); + } + + if (isset($tbd['s']) && $tbd['s']) { + if (!$brset && $tbd['style'] != 'dotted' && $tbd['style'] != 'dashed') { + $this->writer->write('q'); + $this->SetLineWidth(0); + $this->writer->write(sprintf('%.3F %.3F m ', ($x0) * Mpdf::SCALE, ($this->h - ($y0)) * Mpdf::SCALE)); + $this->writer->write(sprintf('%.3F %.3F l ', ($x0 + $border_left) * Mpdf::SCALE, ($this->h - ($y0 + $border_top)) * Mpdf::SCALE)); + $this->writer->write(sprintf('%.3F %.3F l ', ($x0 + $w - $border_right) * Mpdf::SCALE, ($this->h - ($y0 + $border_top)) * Mpdf::SCALE)); + $this->writer->write(sprintf('%.3F %.3F l ', ($x0 + $w) * Mpdf::SCALE, ($this->h - ($y0)) * Mpdf::SCALE)); + $this->writer->write(' h W n '); // Ends path no-op & Sets the clipping path + } + + $this->_setBorderLine($tbd); + if ($tbd['style'] == 'dotted' || $tbd['style'] == 'dashed') { + $legbreakL -= $border_top / 2; // because line cap different + $legbreakR += $border_top / 2; + $this->_setDashBorder($tbd['style'], $divider, $continuingpage, 'T'); + } /* -- BORDER-RADIUS -- */ elseif (($brTL_V && $brTL_H) || ($brTR_V && $brTR_H) || $tbd['style'] == 'solid' || $tbd['style'] == 'double') { + $this->SetLineJoin(0); + $this->SetLineCap(0); + } + $s = ''; + if ($brTR_H && $brTR_V) { + $s .= ($this->_EllipseArc($x0 + $w - $brTR_H, $y0 + $brTR_V, $brTR_H - $border_top / 2, $brTR_V - $border_top / 2, 1, 2, true)) . "\n"; + } else { /* -- END BORDER-RADIUS -- */ + if ($tbd['style'] == 'solid' || $tbd['style'] == 'double') { + $s .= (sprintf('%.3F %.3F m ', ($x0 + $w) * Mpdf::SCALE, ($this->h - ($y0 + ($border_top / 2))) * Mpdf::SCALE)) . "\n"; + } else { + $s .= (sprintf('%.3F %.3F m ', ($x0 + $w - ($border_top / 2)) * Mpdf::SCALE, ($this->h - ($y0 + ($border_top / 2))) * Mpdf::SCALE)) . "\n"; + } + } + /* -- BORDER-RADIUS -- */ + if ($brTL_H && $brTL_V) { + if ($legend) { + if ($legbreakR < ($x0 + $w - $brTR_H)) { + $s .= (sprintf('%.3F %.3F l ', $legbreakR * Mpdf::SCALE, ($this->h - ($y0 + ($border_top / 2))) * Mpdf::SCALE)) . "\n"; + } + if ($legbreakL > ($x0 + $brTL_H )) { + $s .= (sprintf('%.3F %.3F m ', $legbreakL * Mpdf::SCALE, ($this->h - ($y0 + ($border_top / 2))) * Mpdf::SCALE)) . "\n"; + $s .= (sprintf('%.3F %.3F l ', ($x0 + $brTL_H ) * Mpdf::SCALE, ($this->h - ($y0 + ($border_top / 2))) * Mpdf::SCALE) . "\n"); + } else { + $s .= (sprintf('%.3F %.3F m ', ($x0 + $brTL_H ) * Mpdf::SCALE, ($this->h - ($y0 + ($border_top / 2))) * Mpdf::SCALE)) . "\n"; + } + } else { + $s .= (sprintf('%.3F %.3F l ', ($x0 + $brTL_H ) * Mpdf::SCALE, ($this->h - ($y0 + ($border_top / 2))) * Mpdf::SCALE)) . "\n"; + } + $s .= ($this->_EllipseArc($x0 + $brTL_H, $y0 + $brTL_V, $brTL_H - $border_top / 2, $brTL_V - $border_top / 2, 2, 1)) . "\n"; + } else { + /* -- END BORDER-RADIUS -- */ + if ($legend) { + if ($legbreakR < ($x0 + $w)) { + $s .= (sprintf('%.3F %.3F l ', $legbreakR * Mpdf::SCALE, ($this->h - ($y0 + ($border_top / 2))) * Mpdf::SCALE)) . "\n"; + } + if ($legbreakL > ($x0)) { + $s .= (sprintf('%.3F %.3F m ', $legbreakL * Mpdf::SCALE, ($this->h - ($y0 + ($border_top / 2))) * Mpdf::SCALE)) . "\n"; + if ($tbd['style'] == 'solid' || $tbd['style'] == 'double') { + $s .= (sprintf('%.3F %.3F l ', ($x0) * Mpdf::SCALE, ($this->h - ($y0 + ($border_top / 2))) * Mpdf::SCALE)) . "\n"; + } else { + $s .= (sprintf('%.3F %.3F l ', ($x0 + ($border_top / 2)) * Mpdf::SCALE, ($this->h - ($y0 + ($border_top / 2))) * Mpdf::SCALE)) . "\n"; + } + } elseif ($tbd['style'] == 'solid' || $tbd['style'] == 'double') { + $s .= (sprintf('%.3F %.3F m ', ($x0) * Mpdf::SCALE, ($this->h - ($y0 + ($border_top / 2))) * Mpdf::SCALE)) . "\n"; + } else { + $s .= (sprintf('%.3F %.3F m ', ($x0 + $border_top / 2) * Mpdf::SCALE, ($this->h - ($y0 + ($border_top / 2))) * Mpdf::SCALE)) . "\n"; + } + } elseif ($tbd['style'] == 'solid' || $tbd['style'] == 'double') { + $s .= (sprintf('%.3F %.3F l ', ($x0) * Mpdf::SCALE, ($this->h - ($y0 + ($border_top / 2))) * Mpdf::SCALE)) . "\n"; + } else { + $s .= (sprintf('%.3F %.3F l ', ($x0 + ($border_top / 2)) * Mpdf::SCALE, ($this->h - ($y0 + ($border_top / 2))) * Mpdf::SCALE)) . "\n"; + } + /* -- BORDER-RADIUS -- */ + } + /* -- END BORDER-RADIUS -- */ + $s .= 'S' . "\n"; + $this->writer->write($s); + + if ($tbd['style'] == 'double') { + $this->SetLineWidth($tbd['w'] / 3); + $this->SetDColor($tbcol); + $this->writer->write($s); + } + if (!$brset && $tbd['style'] != 'dotted' && $tbd['style'] != 'dashed') { + $this->writer->write('Q'); + } + + // Reset Corners and Dash off + $this->SetLineWidth(0.1); + $this->SetDColor($this->colorConverter->convert(0, $this->PDFAXwarnings)); + $this->SetLineJoin(2); + $this->SetLineCap(2); + $this->SetDash(); + } + } + // Reinstate line above for dotted line divider when block border crosses a page + // elseif ($divider == 'pagetop' || $continuingpage) { + + if ($this->blk[$blvl]['border_bottom'] && $blockstate != 1 && $divider != 'pagebottom') { + $tbd = $this->blk[$blvl]['border_bottom']; + if (isset($tbd['s']) && $tbd['s']) { + if (!$brset && $tbd['style'] != 'dotted' && $tbd['style'] != 'dashed') { + $this->writer->write('q'); + $this->SetLineWidth(0); + $this->writer->write(sprintf('%.3F %.3F m ', ($x0) * Mpdf::SCALE, ($this->h - ($y0 + $h)) * Mpdf::SCALE)); + $this->writer->write(sprintf('%.3F %.3F l ', ($x0 + $border_left) * Mpdf::SCALE, ($this->h - ($y0 + $h - $border_bottom)) * Mpdf::SCALE)); + $this->writer->write(sprintf('%.3F %.3F l ', ($x0 + $w - $border_right) * Mpdf::SCALE, ($this->h - ($y0 + $h - $border_bottom)) * Mpdf::SCALE)); + $this->writer->write(sprintf('%.3F %.3F l ', ($x0 + $w) * Mpdf::SCALE, ($this->h - ($y0 + $h)) * Mpdf::SCALE)); + $this->writer->write(' h W n '); // Ends path no-op & Sets the clipping path + } + + $this->_setBorderLine($tbd); + if ($tbd['style'] == 'dotted' || $tbd['style'] == 'dashed') { + $this->_setDashBorder($tbd['style'], $divider, $continuingpage, 'B'); + } /* -- BORDER-RADIUS -- */ elseif (($brBL_V && $brBL_H) || ($brBR_V && $brBR_H) || $tbd['style'] == 'solid' || $tbd['style'] == 'double') { + $this->SetLineJoin(0); + $this->SetLineCap(0); + } + $s = ''; + if ($brBL_H && $brBL_V) { + $s .= ($this->_EllipseArc($x0 + $brBL_H, $y0 + $h - $brBL_V, $brBL_H - $border_bottom / 2, $brBL_V - $border_bottom / 2, 3, 2, true)) . "\n"; + } else { /* -- END BORDER-RADIUS -- */ + if ($tbd['style'] == 'solid' || $tbd['style'] == 'double') { + $s .= (sprintf('%.3F %.3F m ', ($x0) * Mpdf::SCALE, ($this->h - ($y0 + $h - ($border_bottom / 2))) * Mpdf::SCALE)) . "\n"; + } else { + $s .= (sprintf('%.3F %.3F m ', ($x0 + ($border_bottom / 2)) * Mpdf::SCALE, ($this->h - ($y0 + $h - ($border_bottom / 2))) * Mpdf::SCALE)) . "\n"; + } + } + /* -- BORDER-RADIUS -- */ + if ($brBR_H && $brBR_V) { + $s .= (sprintf('%.3F %.3F l ', ($x0 + $w - ($border_bottom / 2) - $brBR_H ) * Mpdf::SCALE, ($this->h - ($y0 + $h - ($border_bottom / 2))) * Mpdf::SCALE)) . "\n"; + $s .= ($this->_EllipseArc($x0 + $w - $brBR_H, $y0 + $h - $brBR_V, $brBR_H - $border_bottom / 2, $brBR_V - $border_bottom / 2, 4, 1)) . "\n"; + } else { /* -- END BORDER-RADIUS -- */ + if ($tbd['style'] == 'solid' || $tbd['style'] == 'double') { + $s .= (sprintf('%.3F %.3F l ', ($x0 + $w) * Mpdf::SCALE, ($this->h - ($y0 + $h - ($border_bottom / 2))) * Mpdf::SCALE)) . "\n"; + } else { + $s .= (sprintf('%.3F %.3F l ', ($x0 + $w - ($border_bottom / 2)) * Mpdf::SCALE, ($this->h - ($y0 + $h - ($border_bottom / 2))) * Mpdf::SCALE)) . "\n"; + } + } + $s .= 'S' . "\n"; + $this->writer->write($s); + + if ($tbd['style'] == 'double') { + $this->SetLineWidth($tbd['w'] / 3); + $this->SetDColor($tbcol); + $this->writer->write($s); + } + if (!$brset && $tbd['style'] != 'dotted' && $tbd['style'] != 'dashed') { + $this->writer->write('Q'); + } + + // Reset Corners and Dash off + $this->SetLineWidth(0.1); + $this->SetDColor($this->colorConverter->convert(0, $this->PDFAXwarnings)); + $this->SetLineJoin(2); + $this->SetLineCap(2); + $this->SetDash(); + } + } + // Reinstate line below for dotted line divider when block border crosses a page + // elseif ($blockstate == 1 || $divider == 'pagebottom') { + + if ($this->blk[$blvl]['border_left']) { + $tbd = $this->blk[$blvl]['border_left']; + if (isset($tbd['s']) && $tbd['s']) { + if (!$brset && $tbd['style'] != 'dotted' && $tbd['style'] != 'dashed') { + $this->writer->write('q'); + $this->SetLineWidth(0); + $this->writer->write(sprintf('%.3F %.3F m ', ($x0) * Mpdf::SCALE, ($this->h - ($y0)) * Mpdf::SCALE)); + $this->writer->write(sprintf('%.3F %.3F l ', ($x0 + $border_left) * Mpdf::SCALE, ($this->h - ($y0 + $border_top)) * Mpdf::SCALE)); + $this->writer->write(sprintf('%.3F %.3F l ', ($x0 + $border_left) * Mpdf::SCALE, ($this->h - ($y0 + $h - $border_bottom)) * Mpdf::SCALE)); + $this->writer->write(sprintf('%.3F %.3F l ', ($x0) * Mpdf::SCALE, ($this->h - ($y0 + $h)) * Mpdf::SCALE)); + $this->writer->write(' h W n '); // Ends path no-op & Sets the clipping path + } + + $this->_setBorderLine($tbd); + if ($tbd['style'] == 'dotted' || $tbd['style'] == 'dashed') { + $this->_setDashBorder($tbd['style'], $divider, $continuingpage, 'L'); + } /* -- BORDER-RADIUS -- */ elseif (($brTL_V && $brTL_H) || ($brBL_V && $brBL_H) || $tbd['style'] == 'solid' || $tbd['style'] == 'double') { + $this->SetLineJoin(0); + $this->SetLineCap(0); + } + $s = ''; + if ($brTL_V && $brTL_H) { + $s .= ($this->_EllipseArc($x0 + $brTL_H, $y0 + $brTL_V, $brTL_H - $border_left / 2, $brTL_V - $border_left / 2, 2, 2, true)) . "\n"; + } else { /* -- END BORDER-RADIUS -- */ + if ($tbd['style'] == 'solid' || $tbd['style'] == 'double') { + $s .= (sprintf('%.3F %.3F m ', ($x0 + ($border_left / 2)) * Mpdf::SCALE, ($this->h - ($y0)) * Mpdf::SCALE)) . "\n"; + } else { + $s .= (sprintf('%.3F %.3F m ', ($x0 + ($border_left / 2)) * Mpdf::SCALE, ($this->h - ($y0 + ($border_left / 2))) * Mpdf::SCALE)) . "\n"; + } + } + /* -- BORDER-RADIUS -- */ + if ($brBL_V && $brBL_H) { + $s .= (sprintf('%.3F %.3F l ', ($x0 + ($border_left / 2)) * Mpdf::SCALE, ($this->h - ($y0 + $h - ($border_left / 2) - $brBL_V) ) * Mpdf::SCALE)) . "\n"; + $s .= ($this->_EllipseArc($x0 + $brBL_H, $y0 + $h - $brBL_V, $brBL_H - $border_left / 2, $brBL_V - $border_left / 2, 3, 1)) . "\n"; + } else { /* -- END BORDER-RADIUS -- */ + if ($tbd['style'] == 'solid' || $tbd['style'] == 'double') { + $s .= (sprintf('%.3F %.3F l ', ($x0 + ($border_left / 2)) * Mpdf::SCALE, ($this->h - ($y0 + $h) ) * Mpdf::SCALE)) . "\n"; + } else { + $s .= (sprintf('%.3F %.3F l ', ($x0 + ($border_left / 2)) * Mpdf::SCALE, ($this->h - ($y0 + $h - ($border_left / 2)) ) * Mpdf::SCALE)) . "\n"; + } + } + $s .= 'S' . "\n"; + $this->writer->write($s); + + if ($tbd['style'] == 'double') { + $this->SetLineWidth($tbd['w'] / 3); + $this->SetDColor($tbcol); + $this->writer->write($s); + } + if (!$brset && $tbd['style'] != 'dotted' && $tbd['style'] != 'dashed') { + $this->writer->write('Q'); + } + + // Reset Corners and Dash off + $this->SetLineWidth(0.1); + $this->SetDColor($this->colorConverter->convert(0, $this->PDFAXwarnings)); + $this->SetLineJoin(2); + $this->SetLineCap(2); + $this->SetDash(); + } + } + if ($this->blk[$blvl]['border_right']) { + $tbd = $this->blk[$blvl]['border_right']; + if (isset($tbd['s']) && $tbd['s']) { + if (!$brset && $tbd['style'] != 'dotted' && $tbd['style'] != 'dashed') { + $this->writer->write('q'); + $this->SetLineWidth(0); + $this->writer->write(sprintf('%.3F %.3F m ', ($x0 + $w) * Mpdf::SCALE, ($this->h - ($y0)) * Mpdf::SCALE)); + $this->writer->write(sprintf('%.3F %.3F l ', ($x0 + $w - $border_right) * Mpdf::SCALE, ($this->h - ($y0 + $border_top)) * Mpdf::SCALE)); + $this->writer->write(sprintf('%.3F %.3F l ', ($x0 + $w - $border_right) * Mpdf::SCALE, ($this->h - ($y0 + $h - $border_bottom)) * Mpdf::SCALE)); + $this->writer->write(sprintf('%.3F %.3F l ', ($x0 + $w) * Mpdf::SCALE, ($this->h - ($y0 + $h)) * Mpdf::SCALE)); + $this->writer->write(' h W n '); // Ends path no-op & Sets the clipping path + } + + $this->_setBorderLine($tbd); + if ($tbd['style'] == 'dotted' || $tbd['style'] == 'dashed') { + $this->_setDashBorder($tbd['style'], $divider, $continuingpage, 'R'); + } /* -- BORDER-RADIUS -- */ elseif (($brTR_V && $brTR_H) || ($brBR_V && $brBR_H) || $tbd['style'] == 'solid' || $tbd['style'] == 'double') { + $this->SetLineJoin(0); + $this->SetLineCap(0); + } + $s = ''; + if ($brBR_V && $brBR_H) { + $s .= ($this->_EllipseArc($x0 + $w - $brBR_H, $y0 + $h - $brBR_V, $brBR_H - $border_right / 2, $brBR_V - $border_right / 2, 4, 2, true)) . "\n"; + } else { /* -- END BORDER-RADIUS -- */ + if ($tbd['style'] == 'solid' || $tbd['style'] == 'double') { + $s .= (sprintf('%.3F %.3F m ', ($x0 + $w - ($border_right / 2)) * Mpdf::SCALE, ($this->h - ($y0 + $h)) * Mpdf::SCALE)) . "\n"; + } else { + $s .= (sprintf('%.3F %.3F m ', ($x0 + $w - ($border_right / 2)) * Mpdf::SCALE, ($this->h - ($y0 + $h - ($border_right / 2))) * Mpdf::SCALE)) . "\n"; + } + } + /* -- BORDER-RADIUS -- */ + if ($brTR_V && $brTR_H) { + $s .= (sprintf('%.3F %.3F l ', ($x0 + $w - ($border_right / 2)) * Mpdf::SCALE, ($this->h - ($y0 + ($border_right / 2) + $brTR_V) ) * Mpdf::SCALE)) . "\n"; + $s .= ($this->_EllipseArc($x0 + $w - $brTR_H, $y0 + $brTR_V, $brTR_H - $border_right / 2, $brTR_V - $border_right / 2, 1, 1)) . "\n"; + } else { /* -- END BORDER-RADIUS -- */ + if ($tbd['style'] == 'solid' || $tbd['style'] == 'double') { + $s .= (sprintf('%.3F %.3F l ', ($x0 + $w - ($border_right / 2)) * Mpdf::SCALE, ($this->h - ($y0) ) * Mpdf::SCALE)) . "\n"; + } else { + $s .= (sprintf('%.3F %.3F l ', ($x0 + $w - ($border_right / 2)) * Mpdf::SCALE, ($this->h - ($y0 + ($border_right / 2)) ) * Mpdf::SCALE)) . "\n"; + } + } + $s .= 'S' . "\n"; + $this->writer->write($s); + + if ($tbd['style'] == 'double') { + $this->SetLineWidth($tbd['w'] / 3); + $this->SetDColor($tbcol); + $this->writer->write($s); + } + if (!$brset && $tbd['style'] != 'dotted' && $tbd['style'] != 'dashed') { + $this->writer->write('Q'); + } + + // Reset Corners and Dash off + $this->SetLineWidth(0.1); + $this->SetDColor($this->colorConverter->convert(0, $this->PDFAXwarnings)); + $this->SetLineJoin(2); + $this->SetLineCap(2); + $this->SetDash(); + } + } + + + $this->SetDash(); + $this->y = $save_y; + + + // BACKGROUNDS are disabled in columns/kbt/headers - messes up the repositioning in printcolumnbuffer + if ($this->ColActive || $this->kwt || $this->keep_block_together) { + return; + } + + + $bgx0 = $x0; + $bgx1 = $x1; + $bgy0 = $y0; + $bgy1 = $y1; + + // Defined br values represent the radius of the outer curve - need to take border-width/2 from each radius for drawing the borders + if (isset($this->blk[$blvl]['background_clip']) && $this->blk[$blvl]['background_clip'] == 'padding-box') { + $brbgTL_H = max(0, $brTL_H - $this->blk[$blvl]['border_left']['w']); + $brbgTL_V = max(0, $brTL_V - $this->blk[$blvl]['border_top']['w']); + $brbgTR_H = max(0, $brTR_H - $this->blk[$blvl]['border_right']['w']); + $brbgTR_V = max(0, $brTR_V - $this->blk[$blvl]['border_top']['w']); + $brbgBL_H = max(0, $brBL_H - $this->blk[$blvl]['border_left']['w']); + $brbgBL_V = max(0, $brBL_V - $this->blk[$blvl]['border_bottom']['w']); + $brbgBR_H = max(0, $brBR_H - $this->blk[$blvl]['border_right']['w']); + $brbgBR_V = max(0, $brBR_V - $this->blk[$blvl]['border_bottom']['w']); + $bgx0 += $this->blk[$blvl]['border_left']['w']; + $bgx1 -= $this->blk[$blvl]['border_right']['w']; + if ($this->blk[$blvl]['border_top'] && $divider != 'pagetop' && !$continuingpage) { + $bgy0 += $this->blk[$blvl]['border_top']['w']; + } + if ($this->blk[$blvl]['border_bottom'] && $blockstate != 1 && $divider != 'pagebottom') { + $bgy1 -= $this->blk[$blvl]['border_bottom']['w']; + } + } elseif (isset($this->blk[$blvl]['background_clip']) && $this->blk[$blvl]['background_clip'] == 'content-box') { + $brbgTL_H = max(0, $brTL_H - $this->blk[$blvl]['border_left']['w'] - $this->blk[$blvl]['padding_left']); + $brbgTL_V = max(0, $brTL_V - $this->blk[$blvl]['border_top']['w'] - $this->blk[$blvl]['padding_top']); + $brbgTR_H = max(0, $brTR_H - $this->blk[$blvl]['border_right']['w'] - $this->blk[$blvl]['padding_right']); + $brbgTR_V = max(0, $brTR_V - $this->blk[$blvl]['border_top']['w'] - $this->blk[$blvl]['padding_top']); + $brbgBL_H = max(0, $brBL_H - $this->blk[$blvl]['border_left']['w'] - $this->blk[$blvl]['padding_left']); + $brbgBL_V = max(0, $brBL_V - $this->blk[$blvl]['border_bottom']['w'] - $this->blk[$blvl]['padding_bottom']); + $brbgBR_H = max(0, $brBR_H - $this->blk[$blvl]['border_right']['w'] - $this->blk[$blvl]['padding_right']); + $brbgBR_V = max(0, $brBR_V - $this->blk[$blvl]['border_bottom']['w'] - $this->blk[$blvl]['padding_bottom']); + $bgx0 += $this->blk[$blvl]['border_left']['w'] + $this->blk[$blvl]['padding_left']; + $bgx1 -= $this->blk[$blvl]['border_right']['w'] + $this->blk[$blvl]['padding_right']; + if (($this->blk[$blvl]['border_top']['w'] || $this->blk[$blvl]['padding_top']) && $divider != 'pagetop' && !$continuingpage) { + $bgy0 += $this->blk[$blvl]['border_top']['w'] + $this->blk[$blvl]['padding_top']; + } + if (($this->blk[$blvl]['border_bottom']['w'] || $this->blk[$blvl]['padding_bottom']) && $blockstate != 1 && $divider != 'pagebottom') { + $bgy1 -= $this->blk[$blvl]['border_bottom']['w'] + $this->blk[$blvl]['padding_bottom']; + } + } else { + $brbgTL_H = $brTL_H; + $brbgTL_V = $brTL_V; + $brbgTR_H = $brTR_H; + $brbgTR_V = $brTR_V; + $brbgBL_H = $brBL_H; + $brbgBL_V = $brBL_V; + $brbgBR_H = $brBR_H; + $brbgBR_V = $brBR_V; + } + + // Set clipping path + $s = ' q 0 w '; // Line width=0 + $s .= sprintf('%.3F %.3F m ', ($bgx0 + $brbgTL_H ) * Mpdf::SCALE, ($this->h - $bgy0) * Mpdf::SCALE); // start point TL before the arc + /* -- BORDER-RADIUS -- */ + if ($brbgTL_H || $brbgTL_V) { + $s .= $this->_EllipseArc($bgx0 + $brbgTL_H, $bgy0 + $brbgTL_V, $brbgTL_H, $brbgTL_V, 2); // segment 2 TL + } + /* -- END BORDER-RADIUS -- */ + $s .= sprintf('%.3F %.3F l ', ($bgx0) * Mpdf::SCALE, ($this->h - ($bgy1 - $brbgBL_V )) * Mpdf::SCALE); // line to BL + /* -- BORDER-RADIUS -- */ + if ($brbgBL_H || $brbgBL_V) { + $s .= $this->_EllipseArc($bgx0 + $brbgBL_H, $bgy1 - $brbgBL_V, $brbgBL_H, $brbgBL_V, 3); // segment 3 BL + } + /* -- END BORDER-RADIUS -- */ + $s .= sprintf('%.3F %.3F l ', ($bgx1 - $brbgBR_H ) * Mpdf::SCALE, ($this->h - ($bgy1)) * Mpdf::SCALE); // line to BR + /* -- BORDER-RADIUS -- */ + if ($brbgBR_H || $brbgBR_V) { + $s .= $this->_EllipseArc($bgx1 - $brbgBR_H, $bgy1 - $brbgBR_V, $brbgBR_H, $brbgBR_V, 4); // segment 4 BR + } + /* -- END BORDER-RADIUS -- */ + $s .= sprintf('%.3F %.3F l ', ($bgx1) * Mpdf::SCALE, ($this->h - ($bgy0 + $brbgTR_V)) * Mpdf::SCALE); // line to TR + /* -- BORDER-RADIUS -- */ + if ($brbgTR_H || $brbgTR_V) { + $s .= $this->_EllipseArc($bgx1 - $brbgTR_H, $bgy0 + $brbgTR_V, $brbgTR_H, $brbgTR_V, 1); // segment 1 TR + } + /* -- END BORDER-RADIUS -- */ + $s .= sprintf('%.3F %.3F l ', ($bgx0 + $brbgTL_H ) * Mpdf::SCALE, ($this->h - $bgy0) * Mpdf::SCALE); // line to TL + // Box Shadow + $shadow = ''; + if (isset($this->blk[$blvl]['box_shadow']) && $this->blk[$blvl]['box_shadow'] && $h > 0) { + foreach ($this->blk[$blvl]['box_shadow'] as $sh) { + // Colors + if ($sh['col'][0] == 1) { + $colspace = 'Gray'; + if ($sh['col'][2] == 1) { + $col1 = '1' . $sh['col'][1] . '1' . $sh['col'][3]; + } else { + $col1 = '1' . $sh['col'][1] . '1' . chr(100); + } + $col2 = '1' . $sh['col'][1] . '1' . chr(0); + } elseif ($sh['col'][0] == 4) { // CMYK + $colspace = 'CMYK'; + $col1 = '6' . $sh['col'][1] . $sh['col'][2] . $sh['col'][3] . $sh['col'][4] . chr(100); + $col2 = '6' . $sh['col'][1] . $sh['col'][2] . $sh['col'][3] . $sh['col'][4] . chr(0); + } elseif ($sh['col'][0] == 5) { // RGBa + $colspace = 'RGB'; + $col1 = '5' . $sh['col'][1] . $sh['col'][2] . $sh['col'][3] . $sh['col'][4]; + $col2 = '5' . $sh['col'][1] . $sh['col'][2] . $sh['col'][3] . chr(0); + } elseif ($sh['col'][0] == 6) { // CMYKa + $colspace = 'CMYK'; + $col1 = '6' . $sh['col'][1] . $sh['col'][2] . $sh['col'][3] . $sh['col'][4] . $sh['col'][5]; + $col2 = '6' . $sh['col'][1] . $sh['col'][2] . $sh['col'][3] . $sh['col'][4] . chr(0); + } else { + $colspace = 'RGB'; + $col1 = '5' . $sh['col'][1] . $sh['col'][2] . $sh['col'][3] . chr(100); + $col2 = '5' . $sh['col'][1] . $sh['col'][2] . $sh['col'][3] . chr(0); + } + + // Use clipping path as set above (and rectangle around page) to clip area outside box + $shadow .= $s; // Use the clipping path with W* + $shadow .= sprintf('0 %.3F m %.3F %.3F l ', $this->h * Mpdf::SCALE, $this->w * Mpdf::SCALE, $this->h * Mpdf::SCALE); + $shadow .= sprintf('%.3F 0 l 0 0 l 0 %.3F l ', $this->w * Mpdf::SCALE, $this->h * Mpdf::SCALE); + $shadow .= 'W n' . "\n"; + + $sh['blur'] = abs($sh['blur']); // cannot have negative blur value + // Ensure spread/blur do not make effective shadow width/height < 0 + // Could do more complex things but this just adjusts spread value + if (-$sh['spread'] + $sh['blur'] / 2 > min($w / 2, $h / 2)) { + $sh['spread'] = $sh['blur'] / 2 - min($w / 2, $h / 2) + 0.01; + } + // Shadow Offset + if ($sh['x'] || $sh['y']) { + $shadow .= sprintf(' q 1 0 0 1 %.4F %.4F cm', $sh['x'] * Mpdf::SCALE, -$sh['y'] * Mpdf::SCALE) . "\n"; + } + + // Set path for INNER shadow + $shadow .= ' q 0 w '; + $shadow .= $this->SetFColor($col1, true) . "\n"; + if ($col1[0] == 5 && ord($col1[4]) < 100) { // RGBa + $shadow .= $this->SetAlpha(ord($col1[4]) / 100, 'Normal', true, 'F') . "\n"; + } elseif ($col1[0] == 6 && ord($col1[5]) < 100) { // CMYKa + $shadow .= $this->SetAlpha(ord($col1[5]) / 100, 'Normal', true, 'F') . "\n"; + } elseif ($col1[0] == 1 && $col1[2] == 1 && ord($col1[3]) < 100) { // Gray + $shadow .= $this->SetAlpha(ord($col1[3]) / 100, 'Normal', true, 'F') . "\n"; + } + + // Blur edges + $mag = 0.551784; // Bezier Control magic number for 4-part spline for circle/ellipse + $mag2 = 0.551784; // Bezier Control magic number to fill in edge of blurred rectangle + $d1 = $sh['spread'] + $sh['blur'] / 2; + $d2 = $sh['spread'] - $sh['blur'] / 2; + $bl = $sh['blur']; + $x00 = $x0 - $d1; + $y00 = $y0 - $d1; + $w00 = $w + $d1 * 2; + $h00 = $h + $d1 * 2; + + // If any border-radius is greater width-negative spread(inner edge), ignore radii for shadow or screws up + $flatten = false; + if (max($brbgTR_H, $brbgTL_H, $brbgBR_H, $brbgBL_H) >= $w + $d2) { + $flatten = true; + } + if (max($brbgTR_V, $brbgTL_V, $brbgBR_V, $brbgBL_V) >= $h + $d2) { + $flatten = true; + } + + + // TOP RIGHT corner + $p1x = $x00 + $w00 - $d1 - $brbgTR_H; + $p1c2x = $p1x + ($d2 + $brbgTR_H) * $mag; + $p1y = $y00 + $bl; + $p2x = $x00 + $w00 - $d1 - $brbgTR_H; + $p2c2x = $p2x + ($d1 + $brbgTR_H) * $mag; + $p2y = $y00; + $p2c1y = $p2y + $bl / 2; + $p3x = $x00 + $w00; + $p3c2x = $p3x - $bl / 2; + $p3y = $y00 + $d1 + $brbgTR_V; + $p3c1y = $p3y - ($d1 + $brbgTR_V) * $mag; + $p4x = $x00 + $w00 - $bl; + $p4y = $y00 + $d1 + $brbgTR_V; + $p4c2y = $p4y - ($d2 + $brbgTR_V) * $mag; + if (-$d2 > min($brbgTR_H, $brbgTR_V) || $flatten) { + $p1x = $x00 + $w00 - $bl; + $p1c2x = $p1x; + $p2x = $x00 + $w00 - $bl; + $p2c2x = $p2x + $bl * $mag2; + $p3y = $y00 + $bl; + $p3c1y = $p3y - $bl * $mag2; + $p4y = $y00 + $bl; + $p4c2y = $p4y; + } + + $shadow .= sprintf('%.3F %.3F m ', ($p1x ) * Mpdf::SCALE, ($this->h - ($p1y )) * Mpdf::SCALE); + $shadow .= sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', ($p1c2x) * Mpdf::SCALE, ($this->h - ($p1y)) * Mpdf::SCALE, ($p4x) * Mpdf::SCALE, ($this->h - ($p4c2y)) * Mpdf::SCALE, ($p4x) * Mpdf::SCALE, ($this->h - ($p4y)) * Mpdf::SCALE); + $patch_array[0]['f'] = 0; + $patch_array[0]['points'] = [$p1x, $p1y, $p1x, $p1y, + $p2x, $p2c1y, $p2x, $p2y, $p2c2x, $p2y, + $p3x, $p3c1y, $p3x, $p3y, $p3c2x, $p3y, + $p4x, $p4y, $p4x, $p4y, $p4x, $p4c2y, + $p1c2x, $p1y]; + $patch_array[0]['colors'] = [$col1, $col2, $col2, $col1]; + + + // RIGHT + $p1x = $x00 + $w00; // control point only matches p3 preceding + $p1y = $y00 + $d1 + $brbgTR_V; + $p2x = $x00 + $w00 - $bl; // control point only matches p4 preceding + $p2y = $y00 + $d1 + $brbgTR_V; + $p3x = $x00 + $w00 - $bl; + $p3y = $y00 + $h00 - $d1 - $brbgBR_V; + $p4x = $x00 + $w00; + $p4c1x = $p4x - $bl / 2; + $p4y = $y00 + $h00 - $d1 - $brbgBR_V; + if (-$d2 > min($brbgTR_H, $brbgTR_V) || $flatten) { + $p1y = $y00 + $bl; + $p2y = $y00 + $bl; + } + if (-$d2 > min($brbgBR_H, $brbgBR_V) || $flatten) { + $p3y = $y00 + $h00 - $bl; + $p4y = $y00 + $h00 - $bl; + } + + $shadow .= sprintf('%.3F %.3F l ', ($p3x ) * Mpdf::SCALE, ($this->h - ($p3y )) * Mpdf::SCALE); + $patch_array[1]['f'] = 2; + $patch_array[1]['points'] = [$p2x, $p2y, + $p3x, $p3y, $p3x, $p3y, $p3x, $p3y, + $p4c1x, $p4y, $p4x, $p4y, $p4x, $p4y, + $p1x, $p1y]; + $patch_array[1]['colors'] = [$col1, $col2]; + + + // BOTTOM RIGHT corner + $p1x = $x00 + $w00 - $bl; // control points only matches p3 preceding + $p1y = $y00 + $h00 - $d1 - $brbgBR_V; + $p1c2y = $p1y + ($d2 + $brbgBR_V) * $mag; + $p2x = $x00 + $w00; // control point only matches p4 preceding + $p2y = $y00 + $h00 - $d1 - $brbgBR_V; + $p2c2y = $p2y + ($d1 + $brbgBR_V) * $mag; + $p3x = $x00 + $w00 - $d1 - $brbgBR_H; + $p3c1x = $p3x + ($d1 + $brbgBR_H) * $mag; + $p3y = $y00 + $h00; + $p3c2y = $p3y - $bl / 2; + $p4x = $x00 + $w00 - $d1 - $brbgBR_H; + $p4c2x = $p4x + ($d2 + $brbgBR_H) * $mag; + $p4y = $y00 + $h00 - $bl; + + if (-$d2 > min($brbgBR_H, $brbgBR_V) || $flatten) { + $p1y = $y00 + $h00 - $bl; + $p1c2y = $p1y; + $p2y = $y00 + $h00 - $bl; + $p2c2y = $p2y + $bl * $mag2; + $p3x = $x00 + $w00 - $bl; + $p3c1x = $p3x + $bl * $mag2; + $p4x = $x00 + $w00 - $bl; + $p4c2x = $p4x; + } + + $shadow .= sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', ($p1x) * Mpdf::SCALE, ($this->h - ($p1c2y)) * Mpdf::SCALE, ($p4c2x) * Mpdf::SCALE, ($this->h - ($p4y)) * Mpdf::SCALE, ($p4x) * Mpdf::SCALE, ($this->h - ($p4y)) * Mpdf::SCALE); + $patch_array[2]['f'] = 2; + $patch_array[2]['points'] = [$p2x, $p2c2y, + $p3c1x, $p3y, $p3x, $p3y, $p3x, $p3c2y, + $p4x, $p4y, $p4x, $p4y, $p4c2x, $p4y, + $p1x, $p1c2y]; + $patch_array[2]['colors'] = [$col2, $col1]; + + + + // BOTTOM + $p1x = $x00 + $w00 - $d1 - $brbgBR_H; // control point only matches p3 preceding + $p1y = $y00 + $h00; + $p2x = $x00 + $w00 - $d1 - $brbgBR_H; // control point only matches p4 preceding + $p2y = $y00 + $h00 - $bl; + $p3x = $x00 + $d1 + $brbgBL_H; + $p3y = $y00 + $h00 - $bl; + $p4x = $x00 + $d1 + $brbgBL_H; + $p4y = $y00 + $h00; + $p4c1y = $p4y - $bl / 2; + + if (-$d2 > min($brbgBR_H, $brbgBR_V) || $flatten) { + $p1x = $x00 + $w00 - $bl; + $p2x = $x00 + $w00 - $bl; + } + if (-$d2 > min($brbgBL_H, $brbgBL_V) || $flatten) { + $p3x = $x00 + $bl; + $p4x = $x00 + $bl; + } + + $shadow .= sprintf('%.3F %.3F l ', ($p3x ) * Mpdf::SCALE, ($this->h - ($p3y )) * Mpdf::SCALE); + $patch_array[3]['f'] = 2; + $patch_array[3]['points'] = [$p2x, $p2y, + $p3x, $p3y, $p3x, $p3y, $p3x, $p3y, + $p4x, $p4c1y, $p4x, $p4y, $p4x, $p4y, + $p1x, $p1y]; + $patch_array[3]['colors'] = [$col1, $col2]; + + // BOTTOM LEFT corner + $p1x = $x00 + $d1 + $brbgBL_H; + $p1c2x = $p1x - ($d2 + $brbgBL_H) * $mag; // control points only matches p3 preceding + $p1y = $y00 + $h00 - $bl; + $p2x = $x00 + $d1 + $brbgBL_H; + $p2c2x = $p2x - ($d1 + $brbgBL_H) * $mag; // control point only matches p4 preceding + $p2y = $y00 + $h00; + $p3x = $x00; + $p3c2x = $p3x + $bl / 2; + $p3y = $y00 + $h00 - $d1 - $brbgBL_V; + $p3c1y = $p3y + ($d1 + $brbgBL_V) * $mag; + $p4x = $x00 + $bl; + $p4y = $y00 + $h00 - $d1 - $brbgBL_V; + $p4c2y = $p4y + ($d2 + $brbgBL_V) * $mag; + if (-$d2 > min($brbgBL_H, $brbgBL_V) || $flatten) { + $p1x = $x00 + $bl; + $p1c2x = $p1x; + $p2x = $x00 + $bl; + $p2c2x = $p2x - $bl * $mag2; + $p3y = $y00 + $h00 - $bl; + $p3c1y = $p3y + $bl * $mag2; + $p4y = $y00 + $h00 - $bl; + $p4c2y = $p4y; + } + + $shadow .= sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', ($p1c2x) * Mpdf::SCALE, ($this->h - ($p1y)) * Mpdf::SCALE, ($p4x) * Mpdf::SCALE, ($this->h - ($p4c2y)) * Mpdf::SCALE, ($p4x) * Mpdf::SCALE, ($this->h - ($p4y)) * Mpdf::SCALE); + $patch_array[4]['f'] = 2; + $patch_array[4]['points'] = [$p2c2x, $p2y, + $p3x, $p3c1y, $p3x, $p3y, $p3c2x, $p3y, + $p4x, $p4y, $p4x, $p4y, $p4x, $p4c2y, + $p1c2x, $p1y]; + $patch_array[4]['colors'] = [$col2, $col1]; + + + // LEFT - joins on the right (C3-C4 of previous): f = 2 + $p1x = $x00; // control point only matches p3 preceding + $p1y = $y00 + $h00 - $d1 - $brbgBL_V; + $p2x = $x00 + $bl; // control point only matches p4 preceding + $p2y = $y00 + $h00 - $d1 - $brbgBL_V; + $p3x = $x00 + $bl; + $p3y = $y00 + $d1 + $brbgTL_V; + $p4x = $x00; + $p4c1x = $p4x + $bl / 2; + $p4y = $y00 + $d1 + $brbgTL_V; + if (-$d2 > min($brbgBL_H, $brbgBL_V) || $flatten) { + $p1y = $y00 + $h00 - $bl; + $p2y = $y00 + $h00 - $bl; + } + if (-$d2 > min($brbgTL_H, $brbgTL_V) || $flatten) { + $p3y = $y00 + $bl; + $p4y = $y00 + $bl; + } + + $shadow .= sprintf('%.3F %.3F l ', ($p3x ) * Mpdf::SCALE, ($this->h - ($p3y )) * Mpdf::SCALE); + $patch_array[5]['f'] = 2; + $patch_array[5]['points'] = [$p2x, $p2y, + $p3x, $p3y, $p3x, $p3y, $p3x, $p3y, + $p4c1x, $p4y, $p4x, $p4y, $p4x, $p4y, + $p1x, $p1y]; + $patch_array[5]['colors'] = [$col1, $col2]; + + // TOP LEFT corner + $p1x = $x00 + $bl; // control points only matches p3 preceding + $p1y = $y00 + $d1 + $brbgTL_V; + $p1c2y = $p1y - ($d2 + $brbgTL_V) * $mag; + $p2x = $x00; // control point only matches p4 preceding + $p2y = $y00 + $d1 + $brbgTL_V; + $p2c2y = $p2y - ($d1 + $brbgTL_V) * $mag; + $p3x = $x00 + $d1 + $brbgTL_H; + $p3c1x = $p3x - ($d1 + $brbgTL_H) * $mag; + $p3y = $y00; + $p3c2y = $p3y + $bl / 2; + $p4x = $x00 + $d1 + $brbgTL_H; + $p4c2x = $p4x - ($d2 + $brbgTL_H) * $mag; + $p4y = $y00 + $bl; + + if (-$d2 > min($brbgTL_H, $brbgTL_V) || $flatten) { + $p1y = $y00 + $bl; + $p1c2y = $p1y; + $p2y = $y00 + $bl; + $p2c2y = $p2y - $bl * $mag2; + $p3x = $x00 + $bl; + $p3c1x = $p3x - $bl * $mag2; + $p4x = $x00 + $bl; + $p4c2x = $p4x; + } + + $shadow .= sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', ($p1x) * Mpdf::SCALE, ($this->h - ($p1c2y)) * Mpdf::SCALE, ($p4c2x) * Mpdf::SCALE, ($this->h - ($p4y)) * Mpdf::SCALE, ($p4x) * Mpdf::SCALE, ($this->h - ($p4y)) * Mpdf::SCALE); + $patch_array[6]['f'] = 2; + $patch_array[6]['points'] = [$p2x, $p2c2y, + $p3c1x, $p3y, $p3x, $p3y, $p3x, $p3c2y, + $p4x, $p4y, $p4x, $p4y, $p4c2x, $p4y, + $p1x, $p1c2y]; + $patch_array[6]['colors'] = [$col2, $col1]; + + + // TOP - joins on the right (C3-C4 of previous): f = 2 + $p1x = $x00 + $d1 + $brbgTL_H; // control point only matches p3 preceding + $p1y = $y00; + $p2x = $x00 + $d1 + $brbgTL_H; // control point only matches p4 preceding + $p2y = $y00 + $bl; + $p3x = $x00 + $w00 - $d1 - $brbgTR_H; + $p3y = $y00 + $bl; + $p4x = $x00 + $w00 - $d1 - $brbgTR_H; + $p4y = $y00; + $p4c1y = $p4y + $bl / 2; + if (-$d2 > min($brbgTL_H, $brbgTL_V) || $flatten) { + $p1x = $x00 + $bl; + $p2x = $x00 + $bl; + } + if (-$d2 > min($brbgTR_H, $brbgTR_V) || $flatten) { + $p3x = $x00 + $w00 - $bl; + $p4x = $x00 + $w00 - $bl; + } + + $shadow .= sprintf('%.3F %.3F l ', ($p3x ) * Mpdf::SCALE, ($this->h - ($p3y )) * Mpdf::SCALE); + $patch_array[7]['f'] = 2; + $patch_array[7]['points'] = [$p2x, $p2y, + $p3x, $p3y, $p3x, $p3y, $p3x, $p3y, + $p4x, $p4c1y, $p4x, $p4y, $p4x, $p4y, + $p1x, $p1y]; + $patch_array[7]['colors'] = [$col1, $col2]; + + $shadow .= ' h f Q ' . "\n"; // Close path and Fill the inner solid shadow + + if ($bl) { + $shadow .= $this->gradient->CoonsPatchMesh($x00, $y00, $w00, $h00, $patch_array, $x00, $x00 + $w00, $y00, $y00 + $h00, $colspace, true); + } + + if ($sh['x'] || $sh['y']) { + $shadow .= ' Q' . "\n"; // Shadow Offset + } + $shadow .= ' Q' . "\n"; // Ends path no-op & Sets the clipping path + } + } + + $s .= ' W n '; // Ends path no-op & Sets the clipping path + + if ($this->blk[$blvl]['bgcolor']) { + $this->pageBackgrounds[$blvl][] = [ + 'x' => $x0, + 'y' => $y0, + 'w' => $w, + 'h' => $h, + 'col' => $this->blk[$blvl]['bgcolorarray'], + 'clippath' => $s, + 'visibility' => $this->visibility, + 'shadow' => $shadow, + 'z-index' => $this->current_layer, + ]; + } elseif ($shadow) { + $this->pageBackgrounds[$blvl][] = [ + 'x' => 0, + 'y' => 0, + 'w' => 0, + 'h' => 0, + 'shadowonly' => true, + 'col' => '', + 'clippath' => '', + 'visibility' => $this->visibility, + 'shadow' => $shadow, + 'z-index' => $this->current_layer, + ]; + } + + /* -- BACKGROUNDS -- */ + if (isset($this->blk[$blvl]['gradient'])) { + $g = $this->gradient->parseBackgroundGradient($this->blk[$blvl]['gradient']); + if ($g) { + $gx = $x0; + $gy = $y0; + $this->pageBackgrounds[$blvl][] = [ + 'gradient' => true, + 'x' => $gx, + 'y' => $gy, + 'w' => $w, + 'h' => $h, + 'gradtype' => $g['type'], + 'stops' => $g['stops'], + 'colorspace' => $g['colorspace'], + 'coords' => $g['coords'], + 'extend' => $g['extend'], + 'clippath' => $s, + 'visibility' => $this->visibility, + 'z-index' => $this->current_layer + ]; + } + } + + if (isset($this->blk[$blvl]['background-image'])) { + if (isset($this->blk[$blvl]['background-image']['gradient']) && $this->blk[$blvl]['background-image']['gradient'] && preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient/', $this->blk[$blvl]['background-image']['gradient'])) { + $g = $this->gradient->parseMozGradient($this->blk[$blvl]['background-image']['gradient']); + if ($g) { + $gx = $x0; + $gy = $y0; + // origin specifies the background-positioning-area (bpa) + if ($this->blk[$blvl]['background-image']['origin'] == 'padding-box') { + $gx += $this->blk[$blvl]['border_left']['w']; + $w -= ($this->blk[$blvl]['border_left']['w'] + $this->blk[$blvl]['border_right']['w']); + if ($this->blk[$blvl]['border_top'] && $divider != 'pagetop' && !$continuingpage) { + $gy += $this->blk[$blvl]['border_top']['w']; + } + if ($this->blk[$blvl]['border_bottom'] && $blockstate != 1 && $divider != 'pagebottom') { + $gy1 = $y1 - $this->blk[$blvl]['border_bottom']['w']; + } else { + $gy1 = $y1; + } + $h = $gy1 - $gy; + } elseif ($this->blk[$blvl]['background-image']['origin'] == 'content-box') { + $gx += $this->blk[$blvl]['border_left']['w'] + $this->blk[$blvl]['padding_left']; + $w -= ($this->blk[$blvl]['border_left']['w'] + $this->blk[$blvl]['padding_left'] + $this->blk[$blvl]['border_right']['w'] + $this->blk[$blvl]['padding_right']); + if ($this->blk[$blvl]['border_top'] && $divider != 'pagetop' && !$continuingpage) { + $gy += $this->blk[$blvl]['border_top']['w'] + $this->blk[$blvl]['padding_top']; + } + if ($this->blk[$blvl]['border_bottom'] && $blockstate != 1 && $divider != 'pagebottom') { + $gy1 = $y1 - ($this->blk[$blvl]['border_bottom']['w'] + $this->blk[$blvl]['padding_bottom']); + } else { + $gy1 = $y1 - $this->blk[$blvl]['padding_bottom']; + } + $h = $gy1 - $gy; + } + + if (isset($this->blk[$blvl]['background-image']['size']['w']) && $this->blk[$blvl]['background-image']['size']['w']) { + $size = $this->blk[$blvl]['background-image']['size']; + if ($size['w'] != 'contain' && $size['w'] != 'cover') { + if (stristr($size['w'], '%')) { + $size['w'] = (float) $size['w']; + $size['w'] /= 100; + $w *= $size['w']; + } elseif ($size['w'] != 'auto') { + $w = $size['w']; + } + if (stristr($size['h'], '%')) { + $size['h'] = (float) $size['h']; + $size['h'] /= 100; + $h *= $size['h']; + } elseif ($size['h'] != 'auto') { + $h = $size['h']; + } + } + } + $this->pageBackgrounds[$blvl][] = [ + 'gradient' => true, + 'x' => $gx, + 'y' => $gy, + 'w' => $w, + 'h' => $h, + 'gradtype' => $g['type'], + 'stops' => $g['stops'], + 'colorspace' => $g['colorspace'], + 'coords' => $g['coords'], + 'extend' => $g['extend'], + 'clippath' => $s, + 'visibility' => $this->visibility, + 'z-index' => $this->current_layer + ]; + } + + } else { + + $image_id = $this->blk[$blvl]['background-image']['image_id']; + $orig_w = $this->blk[$blvl]['background-image']['orig_w']; + $orig_h = $this->blk[$blvl]['background-image']['orig_h']; + $x_pos = $this->blk[$blvl]['background-image']['x_pos']; + $y_pos = $this->blk[$blvl]['background-image']['y_pos']; + $x_repeat = $this->blk[$blvl]['background-image']['x_repeat']; + $y_repeat = $this->blk[$blvl]['background-image']['y_repeat']; + $resize = $this->blk[$blvl]['background-image']['resize']; + $opacity = $this->blk[$blvl]['background-image']['opacity']; + $itype = $this->blk[$blvl]['background-image']['itype']; + $size = $this->blk[$blvl]['background-image']['size']; + // origin specifies the background-positioning-area (bpa) + + $bpa = ['x' => $x0, 'y' => $y0, 'w' => $w, 'h' => $h]; + + if ($this->blk[$blvl]['background-image']['origin'] == 'padding-box') { + + $bpa['x'] = $x0 + $this->blk[$blvl]['border_left']['w']; + $bpa['w'] = $w - ($this->blk[$blvl]['border_left']['w'] + $this->blk[$blvl]['border_right']['w']); + if ($this->blk[$blvl]['border_top'] && $divider != 'pagetop' && !$continuingpage) { + $bpa['y'] = $y0 + $this->blk[$blvl]['border_top']['w']; + } else { + $bpa['y'] = $y0; + } + if ($this->blk[$blvl]['border_bottom'] && $blockstate != 1 && $divider != 'pagebottom') { + $bpay = $y1 - $this->blk[$blvl]['border_bottom']['w']; + } else { + $bpay = $y1; + } + $bpa['h'] = $bpay - $bpa['y']; + + } elseif ($this->blk[$blvl]['background-image']['origin'] == 'content-box') { + + $bpa['x'] = $x0 + $this->blk[$blvl]['border_left']['w'] + $this->blk[$blvl]['padding_left']; + $bpa['w'] = $w - ($this->blk[$blvl]['border_left']['w'] + $this->blk[$blvl]['padding_left'] + $this->blk[$blvl]['border_right']['w'] + $this->blk[$blvl]['padding_right']); + if ($this->blk[$blvl]['border_top'] && $divider != 'pagetop' && !$continuingpage) { + $bpa['y'] = $y0 + $this->blk[$blvl]['border_top']['w'] + $this->blk[$blvl]['padding_top']; + } else { + $bpa['y'] = $y0 + $this->blk[$blvl]['padding_top']; + } + if ($this->blk[$blvl]['border_bottom'] && $blockstate != 1 && $divider != 'pagebottom') { + $bpay = $y1 - ($this->blk[$blvl]['border_bottom']['w'] + $this->blk[$blvl]['padding_bottom']); + } else { + $bpay = $y1 - $this->blk[$blvl]['padding_bottom']; + } + $bpa['h'] = $bpay - $bpa['y']; + + } + + $this->pageBackgrounds[$blvl][] = [ + 'x' => $x0, + 'y' => $y0, + 'w' => $w, + 'h' => $h, + 'image_id' => $image_id, + 'orig_w' => $orig_w, + 'orig_h' => $orig_h, + 'x_pos' => $x_pos, + 'y_pos' => $y_pos, + 'x_repeat' => $x_repeat, + 'y_repeat' => $y_repeat, + 'clippath' => $s, + 'resize' => $resize, + 'opacity' => $opacity, + 'itype' => $itype, + 'visibility' => $this->visibility, + 'z-index' => $this->current_layer, + 'size' => $size, + 'bpa' => $bpa + ]; + } + } + /* -- END BACKGROUNDS -- */ + + // Float DIV + $this->blk[$blvl]['bb_painted'][$this->page] = true; + } + /* -- BORDER-RADIUS -- */ + + function _EllipseArc($x0, $y0, $rx, $ry, $seg = 1, $part = false, $start = false) + { + // Anticlockwise segment 1-4 TR-TL-BL-BR (part=1 or 2) + $s = ''; + + if ($rx < 0) { + $rx = 0; + } + + if ($ry < 0) { + $ry = 0; + } + + $rx *= Mpdf::SCALE; + $ry *= Mpdf::SCALE; + + $astart = 0; + + if ($seg == 1) { // Top Right + $afinish = 90; + $nSeg = 4; + } elseif ($seg == 2) { // Top Left + $afinish = 180; + $nSeg = 8; + } elseif ($seg == 3) { // Bottom Left + $afinish = 270; + $nSeg = 12; + } else { // Bottom Right + $afinish = 360; + $nSeg = 16; + } + + $astart = deg2rad((float) $astart); + $afinish = deg2rad((float) $afinish); + + $totalAngle = $afinish - $astart; + $dt = $totalAngle / $nSeg; // segment angle + $dtm = $dt / 3; + $x0 *= Mpdf::SCALE; + $y0 = ($this->h - $y0) * Mpdf::SCALE; + $t1 = $astart; + $a0 = $x0 + ($rx * cos($t1)); + $b0 = $y0 + ($ry * sin($t1)); + $c0 = -$rx * sin($t1); + $d0 = $ry * cos($t1); + $op = false; + + for ($i = 1; $i <= $nSeg; $i++) { + // Draw this bit of the total curve + $t1 = ($i * $dt) + $astart; + $a1 = $x0 + ($rx * cos($t1)); + $b1 = $y0 + ($ry * sin($t1)); + $c1 = -$rx * sin($t1); + $d1 = $ry * cos($t1); + if ($i > ($nSeg - 4) && (!$part || ($part == 1 && $i <= $nSeg - 2) || ($part == 2 && $i > $nSeg - 2))) { + if ($start && !$op) { + $s .= sprintf('%.3F %.3F m ', $a0, $b0); + } + $s .= sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', ($a0 + ($c0 * $dtm)), ($b0 + ($d0 * $dtm)), ($a1 - ($c1 * $dtm)), ($b1 - ($d1 * $dtm)), $a1, $b1); + $op = true; + } + $a0 = $a1; + $b0 = $b1; + $c0 = $c1; + $d0 = $d1; + } + + return $s; + } + + /* -- END BORDER-RADIUS -- */ + + function PaintDivLnBorder($state = 0, $blvl = 0, $h = 0) + { + // $state = 0 normal; 1 top; 2 bottom; 3 top and bottom + $this->ColDetails[$this->CurrCol]['bottom_margin'] = $this->y + $h; + + $save_y = $this->y; + + $w = $this->blk[$blvl]['width']; + $x0 = $this->x; // left + $y0 = $this->y; // top + $x1 = $this->x + $w; // bottom + $y1 = $this->y + $h; // bottom + $continuingpage = (isset($this->blk[$blvl]['startpage']) && $this->blk[$blvl]['startpage'] != $this->page); + + if ($this->blk[$blvl]['border_top'] && ($state == 1 || $state == 3)) { + $tbd = $this->blk[$blvl]['border_top']; + if (isset($tbd['s']) && $tbd['s']) { + $this->_setBorderLine($tbd); + $this->y = $y0 + ($tbd['w'] / 2); + if ($tbd['style'] == 'dotted' || $tbd['style'] == 'dashed') { + $this->_setDashBorder($tbd['style'], '', $continuingpage, 'T'); + $this->Line($x0 + ($tbd['w'] / 2), $this->y, $x0 + $w - ($tbd['w'] / 2), $this->y); + } else { + $this->SetLineJoin(0); + $this->SetLineCap(0); + $this->Line($x0, $this->y, $x0 + $w, $this->y); + } + $this->y += $tbd['w']; + // Reset Corners and Dash off + $this->SetLineJoin(2); + $this->SetLineCap(2); + $this->SetDash(); + } + } + if ($this->blk[$blvl]['border_left']) { + $tbd = $this->blk[$blvl]['border_left']; + if (isset($tbd['s']) && $tbd['s']) { + $this->_setBorderLine($tbd); + if ($tbd['style'] == 'dotted' || $tbd['style'] == 'dashed') { + $this->y = $y0 + ($tbd['w'] / 2); + $this->_setDashBorder($tbd['style'], '', $continuingpage, 'L'); + $this->Line($x0 + ($tbd['w'] / 2), $this->y, $x0 + ($tbd['w'] / 2), $y0 + $h - ($tbd['w'] / 2)); + } else { + $this->y = $y0; + $this->SetLineJoin(0); + $this->SetLineCap(0); + $this->Line($x0 + ($tbd['w'] / 2), $this->y, $x0 + ($tbd['w'] / 2), $y0 + $h); + } + $this->y += $tbd['w']; + // Reset Corners and Dash off + $this->SetLineJoin(2); + $this->SetLineCap(2); + $this->SetDash(); + } + } + if ($this->blk[$blvl]['border_right']) { + $tbd = $this->blk[$blvl]['border_right']; + if (isset($tbd['s']) && $tbd['s']) { + $this->_setBorderLine($tbd); + if ($tbd['style'] == 'dotted' || $tbd['style'] == 'dashed') { + $this->y = $y0 + ($tbd['w'] / 2); + $this->_setDashBorder($tbd['style'], '', $continuingpage, 'R'); + $this->Line($x0 + $w - ($tbd['w'] / 2), $this->y, $x0 + $w - ($tbd['w'] / 2), $y0 + $h - ($tbd['w'] / 2)); + } else { + $this->y = $y0; + $this->SetLineJoin(0); + $this->SetLineCap(0); + $this->Line($x0 + $w - ($tbd['w'] / 2), $this->y, $x0 + $w - ($tbd['w'] / 2), $y0 + $h); + } + $this->y += $tbd['w']; + // Reset Corners and Dash off + $this->SetLineJoin(2); + $this->SetLineCap(2); + $this->SetDash(); + } + } + if ($this->blk[$blvl]['border_bottom'] && $state > 1) { + $tbd = $this->blk[$blvl]['border_bottom']; + if (isset($tbd['s']) && $tbd['s']) { + $this->_setBorderLine($tbd); + $this->y = $y0 + $h - ($tbd['w'] / 2); + if ($tbd['style'] == 'dotted' || $tbd['style'] == 'dashed') { + $this->_setDashBorder($tbd['style'], '', $continuingpage, 'B'); + $this->Line($x0 + ($tbd['w'] / 2), $this->y, $x0 + $w - ($tbd['w'] / 2), $this->y); + } else { + $this->SetLineJoin(0); + $this->SetLineCap(0); + $this->Line($x0, $this->y, $x0 + $w, $this->y); + } + $this->y += $tbd['w']; + // Reset Corners and Dash off + $this->SetLineJoin(2); + $this->SetLineCap(2); + $this->SetDash(); + } + } + $this->SetDash(); + $this->y = $save_y; + } + + function PaintImgBorder($objattr, $is_table) + { + // Borders are disabled in columns - messes up the repositioning in printcolumnbuffer + if ($this->ColActive) { + return; + } // *COLUMNS* + if ($is_table) { + $k = $this->shrin_k; + } else { + $k = 1; + } + $h = (isset($objattr['BORDER-HEIGHT']) ? $objattr['BORDER-HEIGHT'] : 0); + $w = (isset($objattr['BORDER-WIDTH']) ? $objattr['BORDER-WIDTH'] : 0); + $x0 = (isset($objattr['BORDER-X']) ? $objattr['BORDER-X'] : 0); + $y0 = (isset($objattr['BORDER-Y']) ? $objattr['BORDER-Y'] : 0); + + // BORDERS + if ($objattr['border_top']) { + $tbd = $objattr['border_top']; + if (!empty($tbd['s'])) { + $this->_setBorderLine($tbd, $k); + if ($tbd['style'] == 'dotted' || $tbd['style'] == 'dashed') { + $this->_setDashBorder($tbd['style'], '', '', 'T'); + } + $this->Line($x0, $y0, $x0 + $w, $y0); + // Reset Corners and Dash off + $this->SetLineJoin(2); + $this->SetLineCap(2); + $this->SetDash(); + } + } + if ($objattr['border_left']) { + $tbd = $objattr['border_left']; + if (!empty($tbd['s'])) { + $this->_setBorderLine($tbd, $k); + if ($tbd['style'] == 'dotted' || $tbd['style'] == 'dashed') { + $this->_setDashBorder($tbd['style'], '', '', 'L'); + } + $this->Line($x0, $y0, $x0, $y0 + $h); + // Reset Corners and Dash off + $this->SetLineJoin(2); + $this->SetLineCap(2); + $this->SetDash(); + } + } + if ($objattr['border_right']) { + $tbd = $objattr['border_right']; + if (!empty($tbd['s'])) { + $this->_setBorderLine($tbd, $k); + if ($tbd['style'] == 'dotted' || $tbd['style'] == 'dashed') { + $this->_setDashBorder($tbd['style'], '', '', 'R'); + } + $this->Line($x0 + $w, $y0, $x0 + $w, $y0 + $h); + // Reset Corners and Dash off + $this->SetLineJoin(2); + $this->SetLineCap(2); + $this->SetDash(); + } + } + if ($objattr['border_bottom']) { + $tbd = $objattr['border_bottom']; + if (!empty($tbd['s'])) { + $this->_setBorderLine($tbd, $k); + if ($tbd['style'] == 'dotted' || $tbd['style'] == 'dashed') { + $this->_setDashBorder($tbd['style'], '', '', 'B'); + } + $this->Line($x0, $y0 + $h, $x0 + $w, $y0 + $h); + // Reset Corners and Dash off + $this->SetLineJoin(2); + $this->SetLineCap(2); + $this->SetDash(); + } + } + $this->SetDash(); + $this->SetAlpha(1); + } + + /* -- END HTML-CSS -- */ + + function Reset() + { + $this->SetTColor($this->colorConverter->convert(0, $this->PDFAXwarnings)); + $this->SetDColor($this->colorConverter->convert(0, $this->PDFAXwarnings)); + $this->SetFColor($this->colorConverter->convert(255, $this->PDFAXwarnings)); + $this->SetAlpha(1); + $this->colorarray = ''; + + $this->spanbgcolorarray = ''; + $this->spanbgcolor = false; + $this->spanborder = false; + $this->spanborddet = []; + + $this->ResetStyles(); + + $this->HREF = ''; + $this->textparam = []; + $this->SetTextOutline(); + + $this->textvar = 0x00; // mPDF 5.7.1 + $this->OTLtags = []; + $this->textshadow = ''; + + $this->currentLang = $this->default_lang; // mPDF 6 + $this->RestrictUnicodeFonts($this->default_available_fonts); // mPDF 6 + $this->SetFont($this->default_font, '', 0, false); + $this->SetFontSize($this->default_font_size, false); + + $this->currentfontfamily = ''; + $this->currentfontsize = ''; + $this->currentfontstyle = ''; + + /* -- TABLES -- */ + if ($this->tableLevel && isset($this->table[1][1]['cellLineHeight'])) { + $this->SetLineHeight('', $this->table[1][1]['cellLineHeight']); // *TABLES* + } else { /* -- END TABLES -- */ + if (isset($this->blk[$this->blklvl]['line_height']) && $this->blk[$this->blklvl]['line_height']) { + $this->SetLineHeight('', $this->blk[$this->blklvl]['line_height']); // sets default line height + } + } + + $this->lSpacingCSS = ''; + $this->wSpacingCSS = ''; + $this->fixedlSpacing = false; + $this->minwSpacing = 0; + $this->SetDash(); // restore to no dash + $this->dash_on = false; + $this->dotted_on = false; + $this->divwidth = 0; + $this->divheight = 0; + $this->cellTextAlign = ''; + $this->cellLineHeight = ''; + $this->cellLineStackingStrategy = ''; + $this->cellLineStackingShift = ''; + $this->oldy = -1; + + $bodystyle = []; + if (isset($this->cssManager->CSS['BODY']['FONT-STYLE'])) { + $bodystyle['FONT-STYLE'] = $this->cssManager->CSS['BODY']['FONT-STYLE']; + } + if (isset($this->cssManager->CSS['BODY']['FONT-WEIGHT'])) { + $bodystyle['FONT-WEIGHT'] = $this->cssManager->CSS['BODY']['FONT-WEIGHT']; + } + if (isset($this->cssManager->CSS['BODY']['COLOR'])) { + $bodystyle['COLOR'] = $this->cssManager->CSS['BODY']['COLOR']; + } + if (isset($bodystyle)) { + $this->setCSS($bodystyle, 'BLOCK', 'BODY'); + } + } + + /* -- HTML-CSS -- */ + + function ReadMetaTags($html) + { + // changes anykey=anyvalue to anykey="anyvalue" (only do this when this happens inside tags) + $regexp = '/ (\\w+?)=([^\\s>"]+)/si'; + $html = preg_replace($regexp, " \$1=\"\$2\"", $html); + if (preg_match('/(.*?)<\/title>/si', $html, $m)) { + $this->SetTitle($m[1]); + } + preg_match_all('/<meta [^>]*?(name|content)="([^>]*?)" [^>]*?(name|content)="([^>]*?)".*?>/si', $html, $aux); + $firstattr = $aux[1]; + $secondattr = $aux[3]; + for ($i = 0; $i < count($aux[0]); $i++) { + $name = ( strtoupper($firstattr[$i]) == "NAME" ) ? strtoupper($aux[2][$i]) : strtoupper($aux[4][$i]); + $content = ( strtoupper($firstattr[$i]) == "CONTENT" ) ? $aux[2][$i] : $aux[4][$i]; + switch ($name) { + case "KEYWORDS": + $this->SetKeywords($content); + break; + case "AUTHOR": + $this->SetAuthor($content); + break; + case "DESCRIPTION": + $this->SetSubject($content); + break; + } + } + } + + function ReadCharset($html) + { + // Charset conversion + if ($this->allow_charset_conversion) { + if (preg_match('/<head.*charset=([^\'\"\s]*).*<\/head>/si', $html, $m)) { + if (strtoupper($m[1]) != 'UTF-8') { + $this->charset_in = strtoupper($m[1]); + } + } + } + } + + function setCSS($arrayaux, $type = '', $tag = '') + { + // type= INLINE | BLOCK | TABLECELL // tag= BODY + if (!is_array($arrayaux)) { + return; // Removes PHP Warning + } + + // mPDF 5.7.3 inline text-decoration parameters + $preceeding_fontkey = $this->FontFamily . $this->FontStyle; + $preceeding_fontsize = $this->FontSize; + $spanbordset = false; + $spanbgset = false; + // mPDF 6 + $prevlevel = (($this->blklvl == 0) ? 0 : $this->blklvl - 1); + + // Set font size first so that e.g. MARGIN 0.83em works on font size for this element + if (isset($arrayaux['FONT-SIZE'])) { + $v = $arrayaux['FONT-SIZE']; + $firstLetter = substr($v, 0, 1); + if (is_numeric($firstLetter) || ($firstLetter === '.')) { + if ($type == 'BLOCK' && $this->blklvl > 0 && isset($this->blk[$this->blklvl - 1]['InlineProperties']) && isset($this->blk[$this->blklvl - 1]['InlineProperties']['size'])) { + $mmsize = $this->sizeConverter->convert($v, $this->blk[$this->blklvl - 1]['InlineProperties']['size']); + } elseif ($type == 'TABLECELL') { + $mmsize = $this->sizeConverter->convert($v, $this->default_font_size / Mpdf::SCALE); + } else { + $mmsize = $this->sizeConverter->convert($v, $this->FontSize); + } + $this->SetFontSize($mmsize * (Mpdf::SCALE), false); // Get size in points (pt) + } else { + $v = strtoupper($v); + if (isset($this->fontsizes[$v])) { + $this->SetFontSize($this->fontsizes[$v] * $this->default_font_size, false); + } + } + if ($tag == 'BODY') { + $this->SetDefaultFontSize($this->FontSizePt); + } + } + + // mPDF 6 + if (isset($arrayaux['LANG']) && $arrayaux['LANG']) { + if ($this->autoLangToFont && !$this->usingCoreFont) { + if ($arrayaux['LANG'] != $this->default_lang && $arrayaux['LANG'] != 'UTF-8') { + list ($coreSuitable, $mpdf_pdf_unifont) = $this->languageToFont->getLanguageOptions($arrayaux['LANG'], $this->useAdobeCJK); + if ($mpdf_pdf_unifont) { + $arrayaux['FONT-FAMILY'] = $mpdf_pdf_unifont; + } + if ($tag == 'BODY') { + $this->default_lang = $arrayaux['LANG']; + } + } + } + $this->currentLang = $arrayaux['LANG']; + } + + // FOR INLINE and BLOCK OR 'BODY' + if (isset($arrayaux['FONT-FAMILY'])) { + $v = $arrayaux['FONT-FAMILY']; + // If it is a font list, get all font types + $aux_fontlist = explode(",", $v); + $found = 0; + foreach ($aux_fontlist as $f) { + $fonttype = trim($f); + $fonttype = preg_replace('/["\']*(.*?)["\']*/', '\\1', $fonttype); + $fonttype = preg_replace('/ /', '', $fonttype); + $v = strtolower(trim($fonttype)); + if (isset($this->fonttrans[$v]) && $this->fonttrans[$v]) { + $v = $this->fonttrans[$v]; + } + if ((!$this->onlyCoreFonts && in_array($v, $this->available_unifonts)) || + in_array($v, ['ccourier', 'ctimes', 'chelvetica']) || + ($this->onlyCoreFonts && in_array($v, ['courier', 'times', 'helvetica', 'arial'])) || + in_array($v, ['sjis', 'uhc', 'big5', 'gb'])) { + $fonttype = $v; + $found = 1; + break; + } + } + if (!$found) { + foreach ($aux_fontlist as $f) { + $fonttype = trim($f); + $fonttype = preg_replace('/["\']*(.*?)["\']*/', '\\1', $fonttype); + $fonttype = preg_replace('/ /', '', $fonttype); + $v = strtolower(trim($fonttype)); + if (isset($this->fonttrans[$v]) && $this->fonttrans[$v]) { + $v = $this->fonttrans[$v]; + } + if (in_array($v, $this->sans_fonts) || in_array($v, $this->serif_fonts) || in_array($v, $this->mono_fonts)) { + $fonttype = $v; + break; + } + } + } + + if ($tag == 'BODY') { + $this->SetDefaultFont($fonttype); + } + $this->SetFont($fonttype, $this->currentfontstyle, 0, false); + } else { + $this->SetFont($this->currentfontfamily, $this->currentfontstyle, 0, false); + } + + foreach ($arrayaux as $k => $v) { + if ($type != 'INLINE' && $tag != 'BODY' && $type != 'TABLECELL') { + switch ($k) { + // BORDERS + case 'BORDER-TOP': + $this->blk[$this->blklvl]['border_top'] = $this->border_details($v); + if ($this->blk[$this->blklvl]['border_top']['s']) { + $this->blk[$this->blklvl]['border'] = 1; + } + break; + case 'BORDER-BOTTOM': + $this->blk[$this->blklvl]['border_bottom'] = $this->border_details($v); + if ($this->blk[$this->blklvl]['border_bottom']['s']) { + $this->blk[$this->blklvl]['border'] = 1; + } + break; + case 'BORDER-LEFT': + $this->blk[$this->blklvl]['border_left'] = $this->border_details($v); + if ($this->blk[$this->blklvl]['border_left']['s']) { + $this->blk[$this->blklvl]['border'] = 1; + } + break; + case 'BORDER-RIGHT': + $this->blk[$this->blklvl]['border_right'] = $this->border_details($v); + if ($this->blk[$this->blklvl]['border_right']['s']) { + $this->blk[$this->blklvl]['border'] = 1; + } + break; + + // PADDING + case 'PADDING-TOP': + $this->blk[$this->blklvl]['padding_top'] = $this->sizeConverter->convert($v, $this->blk[$prevlevel]['inner_width'], $this->FontSize, false); + break; + case 'PADDING-BOTTOM': + $this->blk[$this->blklvl]['padding_bottom'] = $this->sizeConverter->convert($v, $this->blk[$prevlevel]['inner_width'], $this->FontSize, false); + break; + case 'PADDING-LEFT': + if (($tag == 'UL' || $tag == 'OL') && $v == 'auto') { + $this->blk[$this->blklvl]['padding_left'] = 'auto'; + break; + } + $this->blk[$this->blklvl]['padding_left'] = $this->sizeConverter->convert($v, $this->blk[$prevlevel]['inner_width'], $this->FontSize, false); + break; + case 'PADDING-RIGHT': + if (($tag == 'UL' || $tag == 'OL') && $v == 'auto') { + $this->blk[$this->blklvl]['padding_right'] = 'auto'; + break; + } + $this->blk[$this->blklvl]['padding_right'] = $this->sizeConverter->convert($v, $this->blk[$prevlevel]['inner_width'], $this->FontSize, false); + break; + + // MARGINS + case 'MARGIN-TOP': + $tmp = $this->sizeConverter->convert($v, $this->blk[$prevlevel]['inner_width'], $this->FontSize, false); + if (isset($this->blk[$this->blklvl]['lastbottommargin'])) { + if ($tmp > $this->blk[$this->blklvl]['lastbottommargin']) { + $tmp -= $this->blk[$this->blklvl]['lastbottommargin']; + } else { + $tmp = 0; + } + } + $this->blk[$this->blklvl]['margin_top'] = $tmp; + break; + case 'MARGIN-BOTTOM': + $this->blk[$this->blklvl]['margin_bottom'] = $this->sizeConverter->convert($v, $this->blk[$prevlevel]['inner_width'], $this->FontSize, false); + break; + case 'MARGIN-LEFT': + $this->blk[$this->blklvl]['margin_left'] = $this->sizeConverter->convert($v, $this->blk[$prevlevel]['inner_width'], $this->FontSize, false); + break; + case 'MARGIN-RIGHT': + $this->blk[$this->blklvl]['margin_right'] = $this->sizeConverter->convert($v, $this->blk[$prevlevel]['inner_width'], $this->FontSize, false); + break; + + /* -- BORDER-RADIUS -- */ + case 'BORDER-TOP-LEFT-RADIUS-H': + $this->blk[$this->blklvl]['border_radius_TL_H'] = $this->sizeConverter->convert($v, $this->blk[$prevlevel]['inner_width'], $this->FontSize, false); + break; + case 'BORDER-TOP-LEFT-RADIUS-V': + $this->blk[$this->blklvl]['border_radius_TL_V'] = $this->sizeConverter->convert($v, $this->blk[$prevlevel]['inner_width'], $this->FontSize, false); + break; + case 'BORDER-TOP-RIGHT-RADIUS-H': + $this->blk[$this->blklvl]['border_radius_TR_H'] = $this->sizeConverter->convert($v, $this->blk[$prevlevel]['inner_width'], $this->FontSize, false); + break; + case 'BORDER-TOP-RIGHT-RADIUS-V': + $this->blk[$this->blklvl]['border_radius_TR_V'] = $this->sizeConverter->convert($v, $this->blk[$prevlevel]['inner_width'], $this->FontSize, false); + break; + case 'BORDER-BOTTOM-LEFT-RADIUS-H': + $this->blk[$this->blklvl]['border_radius_BL_H'] = $this->sizeConverter->convert($v, $this->blk[$prevlevel]['inner_width'], $this->FontSize, false); + break; + case 'BORDER-BOTTOM-LEFT-RADIUS-V': + $this->blk[$this->blklvl]['border_radius_BL_V'] = $this->sizeConverter->convert($v, $this->blk[$prevlevel]['inner_width'], $this->FontSize, false); + break; + case 'BORDER-BOTTOM-RIGHT-RADIUS-H': + $this->blk[$this->blklvl]['border_radius_BR_H'] = $this->sizeConverter->convert($v, $this->blk[$prevlevel]['inner_width'], $this->FontSize, false); + break; + case 'BORDER-BOTTOM-RIGHT-RADIUS-V': + $this->blk[$this->blklvl]['border_radius_BR_V'] = $this->sizeConverter->convert($v, $this->blk[$prevlevel]['inner_width'], $this->FontSize, false); + break; + /* -- END BORDER-RADIUS -- */ + + case 'BOX-SHADOW': + $bs = $this->cssManager->setCSSboxshadow($v); + if ($bs) { + $this->blk[$this->blklvl]['box_shadow'] = $bs; + } + break; + + case 'BACKGROUND-CLIP': + if (strtoupper($v) == 'PADDING-BOX') { + $this->blk[$this->blklvl]['background_clip'] = 'padding-box'; + } elseif (strtoupper($v) == 'CONTENT-BOX') { + $this->blk[$this->blklvl]['background_clip'] = 'content-box'; + } + break; + + case 'PAGE-BREAK-AFTER': + if (strtoupper($v) == 'AVOID') { + $this->blk[$this->blklvl]['page_break_after_avoid'] = true; + } elseif (strtoupper($v) == 'ALWAYS' || strtoupper($v) == 'LEFT' || strtoupper($v) == 'RIGHT') { + $this->blk[$this->blklvl]['page_break_after'] = strtoupper($v); + } + break; + + // mPDF 6 pagebreaktype + case 'BOX-DECORATION-BREAK': + if (strtoupper($v) == 'CLONE') { + $this->blk[$this->blklvl]['box_decoration_break'] = 'clone'; + } elseif (strtoupper($v) == 'SLICE') { + $this->blk[$this->blklvl]['box_decoration_break'] = 'slice'; + } + break; + + case 'WIDTH': + if (strtoupper($v) != 'AUTO') { + $this->blk[$this->blklvl]['css_set_width'] = $this->sizeConverter->convert($v, $this->blk[$prevlevel]['inner_width'], $this->FontSize, false); + } + break; + + // mPDF 6 Lists + // LISTS + case 'LIST-STYLE-TYPE': + $this->blk[$this->blklvl]['list_style_type'] = strtolower($v); + break; + case 'LIST-STYLE-IMAGE': + $this->blk[$this->blklvl]['list_style_image'] = strtolower($v); + break; + case 'LIST-STYLE-POSITION': + $this->blk[$this->blklvl]['list_style_position'] = strtolower($v); + break; + }//end of switch($k) + } + + + if ($type != 'INLINE' && $type != 'TABLECELL') { // All block-level, including BODY tag + switch ($k) { + case 'TEXT-INDENT': + // Computed value - to inherit + $this->blk[$this->blklvl]['text_indent'] = $this->sizeConverter->convert($v, $this->blk[$prevlevel]['inner_width'], $this->FontSize, false) . 'mm'; + break; + + case 'MARGIN-COLLAPSE': // Custom tag to collapse margins at top and bottom of page + if (strtoupper($v) == 'COLLAPSE') { + $this->blk[$this->blklvl]['margin_collapse'] = true; + } + break; + + case 'LINE-HEIGHT': + $this->blk[$this->blklvl]['line_height'] = $this->fixLineheight($v); + if (!$this->blk[$this->blklvl]['line_height']) { + $this->blk[$this->blklvl]['line_height'] = 'N'; + } // mPDF 6 + break; + + // mPDF 6 + case 'LINE-STACKING-STRATEGY': + $this->blk[$this->blklvl]['line_stacking_strategy'] = strtolower($v); + break; + + case 'LINE-STACKING-SHIFT': + $this->blk[$this->blklvl]['line_stacking_shift'] = strtolower($v); + break; + + case 'TEXT-ALIGN': // left right center justify + switch (strtoupper($v)) { + case 'LEFT': + $this->blk[$this->blklvl]['align'] = "L"; + break; + case 'CENTER': + $this->blk[$this->blklvl]['align'] = "C"; + break; + case 'RIGHT': + $this->blk[$this->blklvl]['align'] = "R"; + break; + case 'JUSTIFY': + $this->blk[$this->blklvl]['align'] = "J"; + break; + } + break; + + /* -- BACKGROUNDS -- */ + case 'BACKGROUND-GRADIENT': + if ($type == 'BLOCK') { + $this->blk[$this->blklvl]['gradient'] = $v; + } + break; + /* -- END BACKGROUNDS -- */ + + case 'DIRECTION': + if ($v) { + $this->blk[$this->blklvl]['direction'] = strtolower($v); + } + break; + } + } + + // FOR INLINE ONLY + if ($type == 'INLINE') { + switch ($k) { + case 'DISPLAY': + if (strtoupper($v) == 'NONE') { + $this->inlineDisplayOff = true; + } + break; + case 'DIRECTION': + break; + } + } + // FOR INLINE ONLY + if ($type == 'INLINE') { + switch ($k) { + // BORDERS + case 'BORDER-TOP': + $this->spanborddet['T'] = $this->border_details($v); + $this->spanborder = true; + $spanbordset = true; + break; + case 'BORDER-BOTTOM': + $this->spanborddet['B'] = $this->border_details($v); + $this->spanborder = true; + $spanbordset = true; + break; + case 'BORDER-LEFT': + $this->spanborddet['L'] = $this->border_details($v); + $this->spanborder = true; + $spanbordset = true; + break; + case 'BORDER-RIGHT': + $this->spanborddet['R'] = $this->border_details($v); + $this->spanborder = true; + $spanbordset = true; + break; + case 'VISIBILITY': // block is set in OpenTag + $v = strtolower($v); + if ($v == 'visible' || $v == 'hidden' || $v == 'printonly' || $v == 'screenonly') { + $this->textparam['visibility'] = $v; + } + break; + }//end of switch($k) + } + + if ($type != 'TABLECELL') { + // FOR INLINE and BLOCK + switch ($k) { + case 'TEXT-ALIGN': // left right center justify + if (strtoupper($v) == 'NOJUSTIFY' && $this->blk[$this->blklvl]['align'] == "J") { + $this->blk[$this->blklvl]['align'] = ""; + } + break; + // bgcolor only - to stay consistent with original html2fpdf + case 'BACKGROUND': + case 'BACKGROUND-COLOR': + $cor = $this->colorConverter->convert($v, $this->PDFAXwarnings); + if ($cor) { + if ($tag == 'BODY') { + $this->bodyBackgroundColor = $cor; + } elseif ($type == 'INLINE') { + $this->spanbgcolorarray = $cor; + $this->spanbgcolor = true; + $spanbgset = true; + } else { + $this->blk[$this->blklvl]['bgcolorarray'] = $cor; + $this->blk[$this->blklvl]['bgcolor'] = true; + } + } elseif ($type != 'INLINE') { + if ($this->ColActive) { + $this->blk[$this->blklvl]['bgcolorarray'] = $this->blk[$prevlevel]['bgcolorarray']; + $this->blk[$this->blklvl]['bgcolor'] = $this->blk[$prevlevel]['bgcolor']; + } + } + break; + + case 'VERTICAL-ALIGN': // super and sub only dealt with here e.g. <SUB> and <SUP> + switch (strtoupper($v)) { + case 'SUPER': + $this->textvar = ($this->textvar | TextVars::FA_SUPERSCRIPT); // mPDF 5.7.1 + $this->textvar = ($this->textvar & ~TextVars::FA_SUBSCRIPT); + // mPDF 5.7.3 inline text-decoration parameters + if (isset($this->textparam['text-baseline'])) { + $this->textparam['text-baseline'] += ($this->baselineSup) * $preceeding_fontsize; + } else { + $this->textparam['text-baseline'] = ($this->baselineSup) * $preceeding_fontsize; + } + break; + case 'SUB': + $this->textvar = ($this->textvar | TextVars::FA_SUBSCRIPT); + $this->textvar = ($this->textvar & ~TextVars::FA_SUPERSCRIPT); + // mPDF 5.7.3 inline text-decoration parameters + if (isset($this->textparam['text-baseline'])) { + $this->textparam['text-baseline'] += ($this->baselineSub) * $preceeding_fontsize; + } else { + $this->textparam['text-baseline'] = ($this->baselineSub) * $preceeding_fontsize; + } + break; + case 'BASELINE': + $this->textvar = ($this->textvar & ~TextVars::FA_SUBSCRIPT); + $this->textvar = ($this->textvar & ~TextVars::FA_SUPERSCRIPT); + // mPDF 5.7.3 inline text-decoration parameters + if (isset($this->textparam['text-baseline'])) { + unset($this->textparam['text-baseline']); + } + break; + // mPDF 5.7.3 inline text-decoration parameters + default: + $lh = $this->_computeLineheight($this->blk[$this->blklvl]['line_height']); + $sz = $this->sizeConverter->convert($v, $lh, $this->FontSize, false); + $this->textvar = ($this->textvar & ~TextVars::FA_SUBSCRIPT); + $this->textvar = ($this->textvar & ~TextVars::FA_SUPERSCRIPT); + if ($sz) { + if ($sz > 0) { + $this->textvar = ($this->textvar | TextVars::FA_SUPERSCRIPT); + } else { + $this->textvar = ($this->textvar | TextVars::FA_SUBSCRIPT); + } + if (isset($this->textparam['text-baseline'])) { + $this->textparam['text-baseline'] += $sz; + } else { + $this->textparam['text-baseline'] = $sz; + } + } + } + break; + }//end of switch($k) + } + + + // FOR ALL + switch ($k) { + case 'LETTER-SPACING': + $this->lSpacingCSS = $v; + if (($this->lSpacingCSS || $this->lSpacingCSS === '0') && strtoupper($this->lSpacingCSS) != 'NORMAL') { + $this->fixedlSpacing = $this->sizeConverter->convert($this->lSpacingCSS, $this->FontSize); + } + break; + + case 'WORD-SPACING': + $this->wSpacingCSS = $v; + if ($this->wSpacingCSS && strtoupper($this->wSpacingCSS) != 'NORMAL') { + $this->minwSpacing = $this->sizeConverter->convert($this->wSpacingCSS, $this->FontSize); + } + break; + + case 'FONT-STYLE': // italic normal oblique + switch (strtoupper($v)) { + case 'ITALIC': + case 'OBLIQUE': + $this->SetStyle('I', true); + break; + case 'NORMAL': + $this->SetStyle('I', false); + break; + } + break; + + case 'FONT-WEIGHT': // normal bold // Does not support: bolder, lighter, 100..900(step value=100) + switch (strtoupper($v)) { + case 'BOLD': + $this->SetStyle('B', true); + break; + case 'NORMAL': + $this->SetStyle('B', false); + break; + } + break; + + case 'FONT-KERNING': + if (strtoupper($v) == 'NORMAL' || (strtoupper($v) == 'AUTO' && $this->useKerning)) { + /* -- OTL -- */ + if ($this->CurrentFont['haskernGPOS']) { + if (isset($this->OTLtags['Plus'])) { + $this->OTLtags['Plus'] .= ' kern'; + } else { + $this->OTLtags['Plus'] = ' kern'; + } + } /* -- END OTL -- */ else { // *OTL* + $this->textvar = ($this->textvar | TextVars::FC_KERNING); + } // *OTL* + } elseif (strtoupper($v) == 'NONE' || (strtoupper($v) == 'AUTO' && !$this->useKerning)) { + if (isset($this->OTLtags['Plus'])) { + $this->OTLtags['Plus'] = str_replace('kern', '', $this->OTLtags['Plus']); // *OTL* + } + if (isset($this->OTLtags['FFPlus'])) { + $this->OTLtags['FFPlus'] = preg_replace('/kern[\d]*/', '', $this->OTLtags['FFPlus']); + } + $this->textvar = ($this->textvar & ~TextVars::FC_KERNING); + } + break; + + /* -- OTL -- */ + case 'FONT-LANGUAGE-OVERRIDE': + $v = strtoupper($v); + if (strpos($v, 'NORMAL') !== false) { + $this->fontLanguageOverride = ''; + } else { + $this->fontLanguageOverride = trim($v); + } + break; + + + case 'FONT-VARIANT-POSITION': + if (isset($this->OTLtags['Plus'])) { + $this->OTLtags['Plus'] = str_replace(['sups', 'subs'], '', $this->OTLtags['Plus']); + } + switch (strtoupper($v)) { + case 'SUPER': + $this->OTLtags['Plus'] .= ' sups'; + break; + case 'SUB': + $this->OTLtags['Plus'] .= ' subs'; + break; + case 'NORMAL': + break; + } + break; + + case 'FONT-VARIANT-CAPS': + $v = strtoupper($v); + if (!isset($this->OTLtags['Plus'])) { + $this->OTLtags['Plus'] = ''; + } + $this->OTLtags['Plus'] = str_replace(['c2sc', 'smcp', 'c2pc', 'pcap', 'unic', 'titl'], '', $this->OTLtags['Plus']); + $this->textvar = ($this->textvar & ~TextVars::FC_SMALLCAPS); // ?????????????? <small-caps> + if (strpos($v, 'ALL-SMALL-CAPS') !== false) { + $this->OTLtags['Plus'] .= ' c2sc smcp'; + } elseif (strpos($v, 'SMALL-CAPS') !== false) { + if (isset($this->CurrentFont['hassmallcapsGSUB']) && $this->CurrentFont['hassmallcapsGSUB']) { + $this->OTLtags['Plus'] .= ' smcp'; + } else { + $this->textvar = ($this->textvar | TextVars::FC_SMALLCAPS); + } + } elseif (strpos($v, 'ALL-PETITE-CAPS') !== false) { + $this->OTLtags['Plus'] .= ' c2pc pcap'; + } elseif (strpos($v, 'PETITE-CAPS') !== false) { + $this->OTLtags['Plus'] .= ' pcap'; + } elseif (strpos($v, 'UNICASE') !== false) { + $this->OTLtags['Plus'] .= ' unic'; + } elseif (strpos($v, 'TITLING-CAPS') !== false) { + $this->OTLtags['Plus'] .= ' titl'; + } + break; + + case 'FONT-VARIANT-LIGATURES': + $v = strtoupper($v); + if (!isset($this->OTLtags['Plus'])) { + $this->OTLtags['Plus'] = ''; + } + if (!isset($this->OTLtags['Minus'])) { + $this->OTLtags['Minus'] = ''; + } + if (strpos($v, 'NORMAL') !== false) { + $this->OTLtags['Minus'] = str_replace(['liga', 'clig', 'calt'], '', $this->OTLtags['Minus']); + $this->OTLtags['Plus'] = str_replace(['dlig', 'hlig'], '', $this->OTLtags['Plus']); + } elseif (strpos($v, 'NONE') !== false) { + $this->OTLtags['Minus'] .= ' liga clig calt'; + $this->OTLtags['Plus'] = str_replace(['dlig', 'hlig'], '', $this->OTLtags['Plus']); + } + if (strpos($v, 'NO-COMMON-LIGATURES') !== false) { + $this->OTLtags['Minus'] .= ' liga clig'; + } elseif (strpos($v, 'COMMON-LIGATURES') !== false) { + $this->OTLtags['Minus'] = str_replace(['liga', 'clig'], '', $this->OTLtags['Minus']); + } + if (strpos($v, 'NO-CONTEXTUAL') !== false) { + $this->OTLtags['Minus'] .= ' calt'; + } elseif (strpos($v, 'CONTEXTUAL') !== false) { + $this->OTLtags['Minus'] = str_replace('calt', '', $this->OTLtags['Minus']); + } + if (strpos($v, 'NO-DISCRETIONARY-LIGATURES') !== false) { + $this->OTLtags['Plus'] = str_replace('dlig', '', $this->OTLtags['Plus']); + } elseif (strpos($v, 'DISCRETIONARY-LIGATURES') !== false) { + $this->OTLtags['Plus'] .= ' dlig'; + } + if (strpos($v, 'NO-HISTORICAL-LIGATURES') !== false) { + $this->OTLtags['Plus'] = str_replace('hlig', '', $this->OTLtags['Plus']); + } elseif (strpos($v, 'HISTORICAL-LIGATURES') !== false) { + $this->OTLtags['Plus'] .= ' hlig'; + } + + break; + + case 'FONT-VARIANT-NUMERIC': + $v = strtoupper($v); + if (!isset($this->OTLtags['Plus'])) { + $this->OTLtags['Plus'] = ''; + } + if (strpos($v, 'NORMAL') !== false) { + $this->OTLtags['Plus'] = str_replace(['ordn', 'zero', 'lnum', 'onum', 'pnum', 'tnum', 'frac', 'afrc'], '', $this->OTLtags['Plus']); + } + if (strpos($v, 'ORDINAL') !== false) { + $this->OTLtags['Plus'] .= ' ordn'; + } + if (strpos($v, 'SLASHED-ZERO') !== false) { + $this->OTLtags['Plus'] .= ' zero'; + } + if (strpos($v, 'LINING-NUMS') !== false) { + $this->OTLtags['Plus'] .= ' lnum'; + $this->OTLtags['Plus'] = str_replace('onum', '', $this->OTLtags['Plus']); + } elseif (strpos($v, 'OLDSTYLE-NUMS') !== false) { + $this->OTLtags['Plus'] .= ' onum'; + $this->OTLtags['Plus'] = str_replace('lnum', '', $this->OTLtags['Plus']); + } + if (strpos($v, 'PROPORTIONAL-NUMS') !== false) { + $this->OTLtags['Plus'] .= ' pnum'; + $this->OTLtags['Plus'] = str_replace('tnum', '', $this->OTLtags['Plus']); + } elseif (strpos($v, 'TABULAR-NUMS') !== false) { + $this->OTLtags['Plus'] .= ' tnum'; + $this->OTLtags['Plus'] = str_replace('pnum', '', $this->OTLtags['Plus']); + } + if (strpos($v, 'DIAGONAL-FRACTIONS') !== false) { + $this->OTLtags['Plus'] .= ' frac'; + $this->OTLtags['Plus'] = str_replace('afrc', '', $this->OTLtags['Plus']); + } elseif (strpos($v, 'STACKED-FRACTIONS') !== false) { + $this->OTLtags['Plus'] .= ' afrc'; + $this->OTLtags['Plus'] = str_replace('frac', '', $this->OTLtags['Plus']); + } + break; + + case 'FONT-VARIANT-ALTERNATES': // Only supports historical-forms + $v = strtoupper($v); + if (!isset($this->OTLtags['Plus'])) { + $this->OTLtags['Plus'] = ''; + } + if (strpos($v, 'NORMAL') !== false) { + $this->OTLtags['Plus'] = str_replace('hist', '', $this->OTLtags['Plus']); + } + if (strpos($v, 'HISTORICAL-FORMS') !== false) { + $this->OTLtags['Plus'] .= ' hist'; + } + break; + + + case 'FONT-FEATURE-SETTINGS': + $v = strtolower($v); + if (strpos($v, 'normal') !== false) { + $this->OTLtags['FFMinus'] = ''; + $this->OTLtags['FFPlus'] = ''; + } else { + if (!isset($this->OTLtags['FFPlus'])) { + $this->OTLtags['FFPlus'] = ''; + } + if (!isset($this->OTLtags['FFMinus'])) { + $this->OTLtags['FFMinus'] = ''; + } + $tags = preg_split('/[,]/', $v); + foreach ($tags as $t) { + if (preg_match('/[\"\']([a-zA-Z0-9]{4})[\"\']\s*(on|off|\d*){0,1}/', $t, $m)) { + if ($m[2] == 'off' || $m[2] === '0') { + if (strpos($this->OTLtags['FFMinus'], $m[1]) === false) { + $this->OTLtags['FFMinus'] .= ' ' . $m[1]; + } + $this->OTLtags['FFPlus'] = preg_replace('/' . $m[1] . '[\d]*/', '', $this->OTLtags['FFPlus']); + } else { + if ($m[2] == 'on') { + $m[2] = '1'; + } + if (strpos($this->OTLtags['FFPlus'], $m[1]) === false) { + $this->OTLtags['FFPlus'] .= ' ' . $m[1] . $m[2]; + } + $this->OTLtags['FFMinus'] = str_replace($m[1], '', $this->OTLtags['FFMinus']); + } + } + } + } + break; + /* -- END OTL -- */ + + + case 'TEXT-TRANSFORM': // none uppercase lowercase // Does support: capitalize + switch (strtoupper($v)) { // Not working 100% + case 'CAPITALIZE': + $this->textvar = ($this->textvar | TextVars::FT_CAPITALIZE); // mPDF 5.7.1 + $this->textvar = ($this->textvar & ~TextVars::FT_UPPERCASE); // mPDF 5.7.1 + $this->textvar = ($this->textvar & ~TextVars::FT_LOWERCASE); // mPDF 5.7.1 + break; + case 'UPPERCASE': + $this->textvar = ($this->textvar | TextVars::FT_UPPERCASE); // mPDF 5.7.1 + $this->textvar = ($this->textvar & ~TextVars::FT_LOWERCASE); // mPDF 5.7.1 + $this->textvar = ($this->textvar & ~TextVars::FT_CAPITALIZE); // mPDF 5.7.1 + break; + case 'LOWERCASE': + $this->textvar = ($this->textvar | TextVars::FT_LOWERCASE); // mPDF 5.7.1 + $this->textvar = ($this->textvar & ~TextVars::FT_UPPERCASE); // mPDF 5.7.1 + $this->textvar = ($this->textvar & ~TextVars::FT_CAPITALIZE); // mPDF 5.7.1 + break; + case 'NONE': + break; + $this->textvar = ($this->textvar & ~TextVars::FT_UPPERCASE); // mPDF 5.7.1 + $this->textvar = ($this->textvar & ~TextVars::FT_LOWERCASE); // mPDF 5.7.1 + $this->textvar = ($this->textvar & ~TextVars::FT_CAPITALIZE); // mPDF 5.7.1 + } + break; + + case 'TEXT-SHADOW': + $ts = $this->cssManager->setCSStextshadow($v); + if ($ts) { + $this->textshadow = $ts; + } + break; + + case 'HYPHENS': + if (strtoupper($v) == 'NONE') { + $this->textparam['hyphens'] = 2; + } elseif (strtoupper($v) == 'AUTO') { + $this->textparam['hyphens'] = 1; + } elseif (strtoupper($v) == 'MANUAL') { + $this->textparam['hyphens'] = 0; + } + break; + + case 'TEXT-OUTLINE': + if (strtoupper($v) == 'NONE') { + $this->textparam['outline-s'] = false; + } + break; + + case 'TEXT-OUTLINE-WIDTH': + case 'OUTLINE-WIDTH': + switch (strtoupper($v)) { + case 'THIN': + $v = '0.03em'; + break; + case 'MEDIUM': + $v = '0.05em'; + break; + case 'THICK': + $v = '0.07em'; + break; + } + $w = $this->sizeConverter->convert($v, $this->FontSize, $this->FontSize); + if ($w) { + $this->textparam['outline-WIDTH'] = $w; + $this->textparam['outline-s'] = true; + } else { + $this->textparam['outline-s'] = false; + } + break; + + case 'TEXT-OUTLINE-COLOR': + case 'OUTLINE-COLOR': + if (strtoupper($v) == 'INVERT') { + if ($this->colorarray) { + $cor = $this->colorarray; + $this->textparam['outline-COLOR'] = $this->colorConverter->invert($cor); + } else { + $this->textparam['outline-COLOR'] = $this->colorConverter->convert(255, $this->PDFAXwarnings); + } + } else { + $cor = $this->colorConverter->convert($v, $this->PDFAXwarnings); + if ($cor) { + $this->textparam['outline-COLOR'] = $cor; + } + } + break; + + case 'COLOR': // font color + $cor = $this->colorConverter->convert($v, $this->PDFAXwarnings); + if ($cor) { + $this->colorarray = $cor; + $this->SetTColor($cor); + } + break; + }//end of switch($k) + }//end of foreach + // mPDF 5.7.3 inline text-decoration parameters + // Needs to be set at the end - after vertical-align = super/sub, so that textparam['text-baseline'] is set + if (isset($arrayaux['TEXT-DECORATION'])) { + $v = $arrayaux['TEXT-DECORATION']; // none underline line-through (strikeout) // Does not support: blink + if (stristr($v, 'LINE-THROUGH')) { + $this->textvar = ($this->textvar | TextVars::FD_LINETHROUGH); + // mPDF 5.7.3 inline text-decoration parameters + if (isset($this->textparam['text-baseline'])) { + $this->textparam['s-decoration']['baseline'] = $this->textparam['text-baseline']; + } else { + $this->textparam['s-decoration']['baseline'] = 0; + } + $this->textparam['s-decoration']['fontkey'] = $this->FontFamily . $this->FontStyle; + $this->textparam['s-decoration']['fontsize'] = $this->FontSize; + $this->textparam['s-decoration']['color'] = strtoupper($this->TextColor); // change 0 0 0 rg to 0 0 0 RG + } + if (stristr($v, 'UNDERLINE')) { + $this->textvar = ($this->textvar | TextVars::FD_UNDERLINE); + // mPDF 5.7.3 inline text-decoration parameters + if (isset($this->textparam['text-baseline'])) { + $this->textparam['u-decoration']['baseline'] = $this->textparam['text-baseline']; + } else { + $this->textparam['u-decoration']['baseline'] = 0; + } + $this->textparam['u-decoration']['fontkey'] = $this->FontFamily . $this->FontStyle; + $this->textparam['u-decoration']['fontsize'] = $this->FontSize; + $this->textparam['u-decoration']['color'] = strtoupper($this->TextColor); // change 0 0 0 rg to 0 0 0 RG + } + if (stristr($v, 'OVERLINE')) { + $this->textvar = ($this->textvar | TextVars::FD_OVERLINE); + // mPDF 5.7.3 inline text-decoration parameters + if (isset($this->textparam['text-baseline'])) { + $this->textparam['o-decoration']['baseline'] = $this->textparam['text-baseline']; + } else { + $this->textparam['o-decoration']['baseline'] = 0; + } + $this->textparam['o-decoration']['fontkey'] = $this->FontFamily . $this->FontStyle; + $this->textparam['o-decoration']['fontsize'] = $this->FontSize; + $this->textparam['o-decoration']['color'] = strtoupper($this->TextColor); // change 0 0 0 rg to 0 0 0 RG + } + if (stristr($v, 'NONE')) { + $this->textvar = ($this->textvar & ~TextVars::FD_UNDERLINE); + $this->textvar = ($this->textvar & ~TextVars::FD_LINETHROUGH); + $this->textvar = ($this->textvar & ~TextVars::FD_OVERLINE); + // mPDF 5.7.3 inline text-decoration parameters + if (isset($this->textparam['u-decoration'])) { + unset($this->textparam['u-decoration']); + } + if (isset($this->textparam['s-decoration'])) { + unset($this->textparam['s-decoration']); + } + if (isset($this->textparam['o-decoration'])) { + unset($this->textparam['o-decoration']); + } + } + } + // mPDF 6 + if ($spanbordset) { // BORDER has been set on this INLINE element + if (isset($this->textparam['text-baseline'])) { + $this->textparam['bord-decoration']['baseline'] = $this->textparam['text-baseline']; + } else { + $this->textparam['bord-decoration']['baseline'] = 0; + } + $this->textparam['bord-decoration']['fontkey'] = $this->FontFamily . $this->FontStyle; + $this->textparam['bord-decoration']['fontsize'] = $this->FontSize; + } + if ($spanbgset) { // BACKGROUND[-COLOR] has been set on this INLINE element + if (isset($this->textparam['text-baseline'])) { + $this->textparam['bg-decoration']['baseline'] = $this->textparam['text-baseline']; + } else { + $this->textparam['bg-decoration']['baseline'] = 0; + } + $this->textparam['bg-decoration']['fontkey'] = $this->FontFamily . $this->FontStyle; + $this->textparam['bg-decoration']['fontsize'] = $this->FontSize; + } + } + + /* -- END HTML-CSS -- */ + + function SetStyle($tag, $enable) + { + $this->$tag = $enable; + $style = ''; + foreach (['B', 'I'] as $s) { + if ($this->$s) { + $style .= $s; + } + } + $this->currentfontstyle = $style; + $this->SetFont('', $style, 0, false); + } + + // Set multiple styles at one time + function SetStylesArray($arr) + { + $style = ''; + foreach (['B', 'I'] as $s) { + if (isset($arr[$s])) { + if ($arr[$s]) { + $this->$s = true; + $style .= $s; + } else { + $this->$s = false; + } + } elseif ($this->$s) { + $style .= $s; + } + } + $this->currentfontstyle = $style; + $this->SetFont('', $style, 0, false); + } + + // Set multiple styles at one $str e.g. "BI" + function SetStyles($str) + { + $style = ''; + foreach (['B', 'I'] as $s) { + if (strpos($str, $s) !== false) { + $this->$s = true; + $style .= $s; + } else { + $this->$s = false; + } + } + $this->currentfontstyle = $style; + $this->SetFont('', $style, 0, false); + } + + function ResetStyles() + { + foreach (['B', 'I'] as $s) { + $this->$s = false; + } + $this->currentfontstyle = ''; + $this->SetFont('', '', 0, false); + } + + function DisableTags($str = '') + { + if ($str == '') { // enable all tags + // Insert new supported tags in the long string below. + $this->enabledtags = "<a><acronym><address><article><aside><b><bdi><bdo><big><blockquote><br><caption><center><cite><code><del><details><dd><div><dl><dt><em><fieldset><figcaption><figure><font><form><h1><h2><h3><h4><h5><h6><hgroup><hr><i><img><input><ins><kbd><legend><li><main><mark><meter><nav><ol><option><p><pre><progress><q><s><samp><section><select><small><span><strike><strong><sub><summary><sup><table><tbody><td><template><textarea><tfoot><th><thead><time><tr><tt><u><ul><var><footer><header><annotation><bookmark><textcircle><barcode><dottab><indexentry><indexinsert><watermarktext><watermarkimage><tts><ttz><tta><column_break><columnbreak><newcolumn><newpage><page_break><pagebreak><formfeed><columns><toc><tocentry><tocpagebreak><pageheader><pagefooter><setpageheader><setpagefooter><sethtmlpageheader><sethtmlpagefooter>"; + } else { + $str = explode(",", $str); + foreach ($str as $v) { + $this->enabledtags = str_replace(trim($v), '', $this->enabledtags); + } + } + } + + /* -- TABLES -- */ + + function TableCheckMinWidth($maxwidth, $forcewrap = 0, $textbuffer = [], $checkletter = false) + { + // mPDF 6 + $acclength = 0; // mPDF 6 (accumulated length across > 1 chunk) + $acclongest = 0; // mPDF 6 (accumulated length max across > 1 chunk) + $biggestword = 0; + $toonarrow = false; + if ((count($textbuffer) == 0) or ( (count($textbuffer) == 1) && ($textbuffer[0][0] == ''))) { + return 0; + } + + foreach ($textbuffer as $chunk) { + $line = $chunk[0]; + $OTLdata = (isset($chunk[18]) ? $chunk[18] : null); + + // mPDF ITERATION + if ($this->iterationCounter) { + $line = preg_replace('/{iteration ([a-zA-Z0-9_]+)}/', '\\1', $line); + } + + // IMAGES & FORM ELEMENTS + if (substr($line, 0, 3) == "\xbb\xa4\xac") { // inline object - FORM element or IMAGE! + $objattr = $this->_getObjAttr($line); + if ($objattr['type'] != 'hr' && isset($objattr['width']) && ($objattr['width'] / $this->shrin_k) > ($maxwidth + 0.0001)) { + if (($objattr['width'] / $this->shrin_k) > $biggestword) { + $biggestword = ($objattr['width'] / $this->shrin_k); + } + $toonarrow = true; + } + continue; + } + + if ($line == "\n") { + $acclength = 0; // mPDF 6 (accumulated length across > 1 chunk) + continue; + } + $line = trim($line); + if (!empty($OTLdata)) { + $this->otl->trimOTLdata($OTLdata, true, true); + } // *OTL* + // SET FONT SIZE/STYLE from $chunk[n] + // FONTSIZE + if (isset($chunk[11]) and $chunk[11] != '') { + if ($this->shrin_k) { + $this->SetFontSize($chunk[11] / $this->shrin_k, false); + } else { + $this->SetFontSize($chunk[11], false); + } + } + // FONTFAMILY + if (isset($chunk[4]) and $chunk[4] != '') { + $font = $this->SetFont($chunk[4], $this->FontStyle, 0, false); + } + // B I + if (isset($chunk[2]) and $chunk[2] != '') { + $this->SetStyles($chunk[2]); + } + + $lbw = $rbw = 0; // Border widths + if (isset($chunk[16]) && !empty($chunk[16])) { // Border + $this->spanborddet = $chunk[16]; + $lbw = (isset($this->spanborddet['L']['w']) ? $this->spanborddet['L']['w'] : 0); + $rbw = (isset($this->spanborddet['R']['w']) ? $this->spanborddet['R']['w'] : 0); + } + if (isset($chunk[15])) { // Word spacing + $this->wSpacingCSS = $chunk[15]; + if ($this->wSpacingCSS && strtoupper($this->wSpacingCSS) != 'NORMAL') { + $this->minwSpacing = $this->sizeConverter->convert($this->wSpacingCSS, $this->FontSize) / $this->shrin_k; // mPDF 5.7.3 + } + } + if (isset($chunk[14])) { // Letter spacing + $this->lSpacingCSS = $chunk[14]; + if (($this->lSpacingCSS || $this->lSpacingCSS === '0') && strtoupper($this->lSpacingCSS) != 'NORMAL') { + $this->fixedlSpacing = $this->sizeConverter->convert($this->lSpacingCSS, $this->FontSize) / $this->shrin_k; // mPDF 5.7.3 + } + } + if (isset($chunk[8])) { // mPDF 5.7.1 + $this->textvar = $chunk[8]; + } + + // mPDF 6 + // If overflow==wrap ($checkletter) OR (No word breaks and contains CJK) + if ($checkletter || (!preg_match('/(\xe2\x80\x8b| )/', trim($line)) && preg_match("/([" . $this->pregCJKchars . "])/u", $line) )) { + if (preg_match("/([" . $this->pregCJKchars . "])/u", $line)) { + $checkCJK = true; + } else { + $checkCJK = false; + } + + $letters = preg_split('//u', $line); + foreach ($letters as $k => $letter) { + // mPDF 6 + if ($checkCJK) { + if (preg_match("/[" . $this->CJKleading . "]/u", $letter) && $k > 0) { + $letter = $letters[$k - 1] . $letter; + } + if (preg_match("/[" . $this->CJKfollowing . "]/u", $letter) && $k < (count($letters) - 1)) { + $letter = $letter . $letters[$k + 1]; + } + } + + $letterwidth = $this->GetStringWidth($letter, false, false, $chunk[8]); // Pass $textvar ($chunk[8]), but do OTLdata here + // so don't have to split OTLdata for each word + if ($k == 0) { + $letterwidth += $lbw; + } + if ($k == (count($letters) - 1)) { + $letterwidth += $rbw; + } + + // Warn user that maxwidth is insufficient + if ($letterwidth > $maxwidth + 0.0001) { + if ($letterwidth > $biggestword) { + $biggestword = $letterwidth; + } + $toonarrow = true; + } + } + } else { + // mPDF 6 + // Need to account for any XAdvance in GPOSinfo (OTLdata = $chunk[18]) + $wordXAdvance = []; + if (isset($chunk[18]) && $chunk[18]) { + preg_match_all('/(\xe2\x80\x8b| )/', $line, $spaces, PREG_OFFSET_CAPTURE); // U+200B Zero Width word boundary, or space + $lastoffset = 0; + $k = -1; // Added so that if no spaces found, "last word" later is calculated for the one and only word + foreach ($spaces[0] as $k => $m) { + $offset = $m[1]; + // ...TableCheckMinWidth... + // At this point, BIDI not applied, Writing direction is not set, and XAdvanceL balances XAdvanceR + for ($n = $lastoffset; $n < $offset; $n++) { + if (isset($chunk[18]['GPOSinfo'][$n]['XAdvanceL'])) { + if (isset($wordXAdvance[$k])) { + $wordXAdvance[$k] += $chunk[18]['GPOSinfo'][$n]['XAdvanceL']; + } else { + $wordXAdvance[$k] = $chunk[18]['GPOSinfo'][$n]['XAdvanceL']; + } + } + } + $lastoffset = $offset + 1; + } + + $k++; // last word + foreach ($chunk[18]['GPOSinfo'] as $n => $gpos) { + if ($n >= $lastoffset && isset($chunk[18]['GPOSinfo'][$n]['XAdvanceL'])) { + if (isset($wordXAdvance[$k])) { + $wordXAdvance[$k] += $chunk[18]['GPOSinfo'][$n]['XAdvanceL']; + } else { + $wordXAdvance[$k] = $chunk[18]['GPOSinfo'][$n]['XAdvanceL']; + } + } + } + } + + $words = preg_split('/(\xe2\x80\x8b| )/', $line); // U+200B Zero Width word boundary, or space + foreach ($words as $k => $word) { + $word = trim($word); + $wordwidth = $this->GetStringWidth($word, false, false, $chunk[8]); // Pass $textvar ($chunk[8]), but do OTLdata here + // so don't have to split OTLdata for each word + if (isset($wordXAdvance[$k])) { + $wordwidth += ($wordXAdvance[$k] * 1000 / $this->CurrentFont['unitsPerEm']) * ($this->FontSize / 1000); + } + if ($k == 0) { + $wordwidth += $lbw; + } + if ($k == (count($words) - 1)) { + $wordwidth += $rbw; + } + + // mPDF 6 + if (count($words) == 1 && substr($chunk[0], 0, 1) != ' ') { + $acclength += $wordwidth; + } elseif (count($words) > 1 && $k == 0 && substr($chunk[0], 0, 1) != ' ') { + $acclength += $wordwidth; + } else { + $acclength = $wordwidth; + } + $acclongest = max($acclongest, $acclength); + if (count($words) == 1 && substr($chunk[0], -1, 1) == ' ') { + $acclength = 0; + } elseif (count($words) > 1 && ($k != (count($words) - 1) || substr($chunk[0], -1, 1) == ' ')) { + $acclength = 0; + } + + // Warn user that maxwidth is insufficient + if ($wordwidth > $maxwidth + 0.0001) { + if ($wordwidth > $biggestword) { + $biggestword = $wordwidth; + } + $toonarrow = true; + } + } + } + + // mPDF 6 Accumulated length of biggest word - across multiple chunks + if ($acclongest > $maxwidth + 0.0001) { + if ($acclongest > $biggestword) { + $biggestword = $acclongest; + } + $toonarrow = true; + } + + // RESET FONT SIZE/STYLE + // RESETTING VALUES + // Now we must deactivate what we have used + if (isset($chunk[2]) and $chunk[2] != '') { + $this->ResetStyles(); + } + if (isset($chunk[4]) and $chunk[4] != '') { + $this->SetFont($this->default_font, $this->FontStyle, 0, false); + } + if (isset($chunk[11]) and $chunk[11] != '') { + $this->SetFontSize($this->default_font_size, false); + } + $this->spanborddet = []; + $this->textvar = 0x00; // mPDF 5.7.1 + $this->OTLtags = []; + $this->lSpacingCSS = ''; + $this->wSpacingCSS = ''; + $this->fixedlSpacing = false; + $this->minwSpacing = 0; + } + + // Return -(wordsize) if word is bigger than maxwidth + // ADDED + if (($toonarrow) && ($this->table_error_report)) { + throw new \Mpdf\MpdfException("Word is too long to fit in table - " . $this->table_error_report_param); + } + if ($toonarrow) { + return -$biggestword; + } else { + return 1; + } + } + + function shrinkTable(&$table, $k) + { + $table['border_spacing_H'] /= $k; + $table['border_spacing_V'] /= $k; + + $table['padding']['T'] /= $k; + $table['padding']['R'] /= $k; + $table['padding']['B'] /= $k; + $table['padding']['L'] /= $k; + + $table['margin']['T'] /= $k; + $table['margin']['R'] /= $k; + $table['margin']['B'] /= $k; + $table['margin']['L'] /= $k; + + $table['border_details']['T']['w'] /= $k; + $table['border_details']['R']['w'] /= $k; + $table['border_details']['B']['w'] /= $k; + $table['border_details']['L']['w'] /= $k; + + if (isset($table['max_cell_border_width']['T'])) { + $table['max_cell_border_width']['T'] /= $k; + } + if (isset($table['max_cell_border_width']['R'])) { + $table['max_cell_border_width']['R'] /= $k; + } + if (isset($table['max_cell_border_width']['B'])) { + $table['max_cell_border_width']['B'] /= $k; + } + if (isset($table['max_cell_border_width']['L'])) { + $table['max_cell_border_width']['L'] /= $k; + } + + if ($this->simpleTables) { + $table['simple']['border_details']['T']['w'] /= $k; + $table['simple']['border_details']['R']['w'] /= $k; + $table['simple']['border_details']['B']['w'] /= $k; + $table['simple']['border_details']['L']['w'] /= $k; + } + + $table['miw'] /= $k; + $table['maw'] /= $k; + + for ($j = 0; $j < $table['nc']; $j++) { // columns + + $table['wc'][$j]['miw'] = isset($table['wc'][$j]['miw']) ? $table['wc'][$j]['miw'] : 0; + $table['wc'][$j]['maw'] = isset($table['wc'][$j]['maw']) ? $table['wc'][$j]['maw'] : 0; + + $table['wc'][$j]['miw'] /= $k; + $table['wc'][$j]['maw'] /= $k; + + if (isset($table['decimal_align'][$j]['maxs0']) && $table['decimal_align'][$j]['maxs0']) { + $table['decimal_align'][$j]['maxs0'] /= $k; + } + + if (isset($table['decimal_align'][$j]['maxs1']) && $table['decimal_align'][$j]['maxs1']) { + $table['decimal_align'][$j]['maxs1'] /= $k; + } + + if (isset($table['wc'][$j]['absmiw']) && $table['wc'][$j]['absmiw']) { + $table['wc'][$j]['absmiw'] /= $k; + } + + for ($i = 0; $i < $table['nr']; $i++) { // rows + + $c = &$table['cells'][$i][$j]; + + if (isset($c) && $c) { + + if (!$this->simpleTables) { + + if ($this->packTableData) { + + $cell = $this->_unpackCellBorder($c['borderbin']); + + $cell['border_details']['T']['w'] /= $k; + $cell['border_details']['R']['w'] /= $k; + $cell['border_details']['B']['w'] /= $k; + $cell['border_details']['L']['w'] /= $k; + $cell['border_details']['mbw']['TL'] /= $k; + $cell['border_details']['mbw']['TR'] /= $k; + $cell['border_details']['mbw']['BL'] /= $k; + $cell['border_details']['mbw']['BR'] /= $k; + $cell['border_details']['mbw']['LT'] /= $k; + $cell['border_details']['mbw']['LB'] /= $k; + $cell['border_details']['mbw']['RT'] /= $k; + $cell['border_details']['mbw']['RB'] /= $k; + + $c['borderbin'] = $this->_packCellBorder($cell); + + } else { + + $c['border_details']['T']['w'] /= $k; + $c['border_details']['R']['w'] /= $k; + $c['border_details']['B']['w'] /= $k; + $c['border_details']['L']['w'] /= $k; + $c['border_details']['mbw']['TL'] /= $k; + $c['border_details']['mbw']['TR'] /= $k; + $c['border_details']['mbw']['BL'] /= $k; + $c['border_details']['mbw']['BR'] /= $k; + $c['border_details']['mbw']['LT'] /= $k; + $c['border_details']['mbw']['LB'] /= $k; + $c['border_details']['mbw']['RT'] /= $k; + $c['border_details']['mbw']['RB'] /= $k; + } + } + + $c['padding']['T'] /= $k; + $c['padding']['R'] /= $k; + $c['padding']['B'] /= $k; + $c['padding']['L'] /= $k; + + $c['maxs'] = isset($c['maxs']) ? $c['maxs'] /= $k : null; + $c['w'] = isset($c['w']) ? $c['w'] /= $k : null; + + $c['s'] = isset($c['s']) ? $c['s'] /= $k : 0; + $c['h'] = isset($c['h']) ? $c['h'] /= $k : null; + + $c['miw'] = isset($c['miw']) ? $c['miw'] /= $k : 0; + $c['maw'] = isset($c['maw']) ? $c['maw'] /= $k : 0; + + $c['absmiw'] = isset($c['absmiw']) ? $c['absmiw'] /= $k : null; + + $c['nestedmaw'] = isset($c['nestedmaw']) ? $c['nestedmaw'] /= $k : null; + $c['nestedmiw'] = isset($c['nestedmiw']) ? $c['nestedmiw'] /= $k : null; + + if (isset($c['textbuffer'])) { + foreach ($c['textbuffer'] as $n => $tb) { + if (!empty($tb[16])) { + !isset($c['textbuffer'][$n][16]['T']) || $c['textbuffer'][$n][16]['T']['w'] /= $k; + !isset($c['textbuffer'][$n][16]['B']) || $c['textbuffer'][$n][16]['B']['w'] /= $k; + !isset($c['textbuffer'][$n][16]['L']) || $c['textbuffer'][$n][16]['L']['w'] /= $k; + !isset($c['textbuffer'][$n][16]['R']) || $c['textbuffer'][$n][16]['R']['w'] /= $k; + } + } + } + + unset($c); + } + + } // rows + } // columns + } + + function read_short(&$fh) + { + $s = fread($fh, 2); + $a = (ord($s[0]) << 8) + ord($s[1]); + if ($a & (1 << 15)) { + $a = ($a - (1 << 16)); + } + return $a; + } + + function _packCellBorder($cell) + { + if (!is_array($cell) || !isset($cell)) { + return ''; + } + + if (!$this->packTableData) { + return $cell; + } + // = 186 bytes + $bindata = pack("nnda6A10nnda6A10nnda6A10nnda6A10nd9", $cell['border'], $cell['border_details']['R']['s'], $cell['border_details']['R']['w'], $cell['border_details']['R']['c'], $cell['border_details']['R']['style'], $cell['border_details']['R']['dom'], $cell['border_details']['L']['s'], $cell['border_details']['L']['w'], $cell['border_details']['L']['c'], $cell['border_details']['L']['style'], $cell['border_details']['L']['dom'], $cell['border_details']['T']['s'], $cell['border_details']['T']['w'], $cell['border_details']['T']['c'], $cell['border_details']['T']['style'], $cell['border_details']['T']['dom'], $cell['border_details']['B']['s'], $cell['border_details']['B']['w'], $cell['border_details']['B']['c'], $cell['border_details']['B']['style'], $cell['border_details']['B']['dom'], $cell['border_details']['mbw']['BL'], $cell['border_details']['mbw']['BR'], $cell['border_details']['mbw']['RT'], $cell['border_details']['mbw']['RB'], $cell['border_details']['mbw']['TL'], $cell['border_details']['mbw']['TR'], $cell['border_details']['mbw']['LT'], $cell['border_details']['mbw']['LB'], (isset($cell['border_details']['cellposdom']) ? $cell['border_details']['cellposdom'] : 0)); + return $bindata; + } + + function _getBorderWidths($bindata) + { + if (!$bindata) { + return [0, 0, 0, 0]; + } + if (!$this->packTableData) { + return [$bindata['border_details']['T']['w'], $bindata['border_details']['R']['w'], $bindata['border_details']['B']['w'], $bindata['border_details']['L']['w']]; + } + + $bd = unpack("nbord/nrs/drw/a6rca/A10rst/nrd/nls/dlw/a6lca/A10lst/nld/nts/dtw/a6tca/A10tst/ntd/nbs/dbw/a6bca/A10bst/nbd/dmbl/dmbr/dmrt/dmrb/dmtl/dmtr/dmlt/dmlb/dcpd", $bindata); + $cell['border_details']['R']['w'] = $bd['rw']; + $cell['border_details']['L']['w'] = $bd['lw']; + $cell['border_details']['T']['w'] = $bd['tw']; + $cell['border_details']['B']['w'] = $bd['bw']; + return [$bd['tw'], $bd['rw'], $bd['bw'], $bd['lw']]; + } + + function _unpackCellBorder($bindata) + { + if (!$bindata) { + return []; + } + if (!$this->packTableData) { + return $bindata; + } + + $bd = unpack("nbord/nrs/drw/a6rca/A10rst/nrd/nls/dlw/a6lca/A10lst/nld/nts/dtw/a6tca/A10tst/ntd/nbs/dbw/a6bca/A10bst/nbd/dmbl/dmbr/dmrt/dmrb/dmtl/dmtr/dmlt/dmlb/dcpd", $bindata); + + $cell['border'] = $bd['bord']; + $cell['border_details']['R']['s'] = $bd['rs']; + $cell['border_details']['R']['w'] = $bd['rw']; + $cell['border_details']['R']['c'] = str_pad($bd['rca'], 6, "\x00"); + $cell['border_details']['R']['style'] = trim($bd['rst']); + $cell['border_details']['R']['dom'] = $bd['rd']; + + $cell['border_details']['L']['s'] = $bd['ls']; + $cell['border_details']['L']['w'] = $bd['lw']; + $cell['border_details']['L']['c'] = str_pad($bd['lca'], 6, "\x00"); + $cell['border_details']['L']['style'] = trim($bd['lst']); + $cell['border_details']['L']['dom'] = $bd['ld']; + + $cell['border_details']['T']['s'] = $bd['ts']; + $cell['border_details']['T']['w'] = $bd['tw']; + $cell['border_details']['T']['c'] = str_pad($bd['tca'], 6, "\x00"); + $cell['border_details']['T']['style'] = trim($bd['tst']); + $cell['border_details']['T']['dom'] = $bd['td']; + + $cell['border_details']['B']['s'] = $bd['bs']; + $cell['border_details']['B']['w'] = $bd['bw']; + $cell['border_details']['B']['c'] = str_pad($bd['bca'], 6, "\x00"); + $cell['border_details']['B']['style'] = trim($bd['bst']); + $cell['border_details']['B']['dom'] = $bd['bd']; + + $cell['border_details']['mbw']['BL'] = $bd['mbl']; + $cell['border_details']['mbw']['BR'] = $bd['mbr']; + $cell['border_details']['mbw']['RT'] = $bd['mrt']; + $cell['border_details']['mbw']['RB'] = $bd['mrb']; + $cell['border_details']['mbw']['TL'] = $bd['mtl']; + $cell['border_details']['mbw']['TR'] = $bd['mtr']; + $cell['border_details']['mbw']['LT'] = $bd['mlt']; + $cell['border_details']['mbw']['LB'] = $bd['mlb']; + $cell['border_details']['cellposdom'] = $bd['cpd']; + + + return($cell); + } + + ////////////////////////TABLE CODE (from PDFTable)///////////////////////////////////// + ////////////////////////TABLE CODE (from PDFTable)///////////////////////////////////// + ////////////////////////TABLE CODE (from PDFTable)///////////////////////////////////// + // table Array of (w, h, bc, nr, wc, hr, cells) + // w Width of table + // h Height of table + // nc Number column + // nr Number row + // hr List of height of each row + // wc List of width of each column + // cells List of cells of each rows, cells[i][j] is a cell in the table + function _tableColumnWidth(&$table, $firstpass = false) + { + $cs = &$table['cells']; + + $nc = $table['nc']; + $nr = $table['nr']; + $listspan = []; + + if ($table['borders_separate']) { + $tblbw = $table['border_details']['L']['w'] + $table['border_details']['R']['w'] + $table['margin']['L'] + $table['margin']['R'] + $table['padding']['L'] + $table['padding']['R'] + $table['border_spacing_H']; + } else { + $tblbw = $table['max_cell_border_width']['L'] / 2 + $table['max_cell_border_width']['R'] / 2 + $table['margin']['L'] + $table['margin']['R']; + } + + // ADDED table['l'][colno] + // = total length of text approx (using $c['s']) in that column - used to approximately distribute col widths in _tableWidth + // + for ($j = 0; $j < $nc; $j++) { // columns + $wc = &$table['wc'][$j]; + for ($i = 0; $i < $nr; $i++) { // rows + if (isset($cs[$i][$j]) && $cs[$i][$j]) { + $c = &$cs[$i][$j]; + + if ($this->simpleTables) { + if ($table['borders_separate']) { // NB twice border width + $extrcw = $table['simple']['border_details']['L']['w'] + $table['simple']['border_details']['R']['w'] + $c['padding']['L'] + $c['padding']['R'] + $table['border_spacing_H']; + } else { + $extrcw = $table['simple']['border_details']['L']['w'] / 2 + $table['simple']['border_details']['R']['w'] / 2 + $c['padding']['L'] + $c['padding']['R']; + } + } else { + if ($this->packTableData) { + list($bt, $br, $bb, $bl) = $this->_getBorderWidths($c['borderbin']); + } else { + $br = $c['border_details']['R']['w']; + $bl = $c['border_details']['L']['w']; + } + if ($table['borders_separate']) { // NB twice border width + $extrcw = $bl + $br + $c['padding']['L'] + $c['padding']['R'] + $table['border_spacing_H']; + } else { + $extrcw = $bl / 2 + $br / 2 + $c['padding']['L'] + $c['padding']['R']; + } + } + + // $mw = $this->GetStringWidth('W') + $extrcw ; + $mw = $extrcw; // mPDF 6 + if (substr($c['a'], 0, 1) == 'D') { + $mw = $table['decimal_align'][$j]['maxs0'] + $table['decimal_align'][$j]['maxs1'] + $extrcw; + } + + $c['absmiw'] = $mw; + + if (isset($c['R']) && $c['R']) { + $c['maw'] = $c['miw'] = $this->FontSize + $extrcw; + if (isset($c['w'])) { // If cell width is specified + if ($c['miw'] < $c['w']) { + $c['miw'] = $c['w']; + } + } + if (!isset($c['colspan'])) { + if ($wc['miw'] < $c['miw']) { + $wc['miw'] = $c['miw']; + } + if ($wc['maw'] < $c['maw']) { + $wc['maw'] = $c['maw']; + } + + if ($firstpass) { + if (isset($table['l'][$j])) { + $table['l'][$j] += $c['miw']; + } else { + $table['l'][$j] = $c['miw']; + } + } + } + if ($c['miw'] > $wc['miw']) { + $wc['miw'] = $c['miw']; + } + if ($wc['miw'] > $wc['maw']) { + $wc['maw'] = $wc['miw']; + } + continue; + } + + if ($firstpass) { + if (isset($c['s'])) { + $c['s'] += $extrcw; + } + if (isset($c['maxs'])) { + $c['maxs'] += $extrcw; + } + if (isset($c['nestedmiw'])) { + $c['nestedmiw'] += $extrcw; + } + if (isset($c['nestedmaw'])) { + $c['nestedmaw'] += $extrcw; + } + } + + + // If minimum width has already been set by a nested table or inline object (image/form), use it + if (isset($c['nestedmiw']) && (!isset($this->table[1][1]['overflow']) || $this->table[1][1]['overflow'] != 'visible')) { + $miw = $c['nestedmiw']; + } else { + $miw = $mw; + } + + if (isset($c['maxs']) && $c['maxs'] != '') { + $c['s'] = $c['maxs']; + } + + // If maximum width has already been set by a nested table, use it + if (isset($c['nestedmaw'])) { + $c['maw'] = $c['nestedmaw']; + } else { + $c['maw'] = $c['s']; + } + + if (isset($table['overflow']) && $table['overflow'] == 'visible' && $table['level'] == 1) { + if (($c['maw'] + $tblbw) > $this->blk[$this->blklvl]['inner_width']) { + $c['maw'] = $this->blk[$this->blklvl]['inner_width'] - $tblbw; + } + } + + if (isset($c['nowrap']) && $c['nowrap']) { + $miw = $c['maw']; + } + + if (isset($c['wpercent']) && $firstpass) { + if (isset($c['colspan'])) { // Not perfect - but % set on colspan is shared equally on cols. + for ($k = 0; $k < $c['colspan']; $k++) { + $table['wc'][($j + $k)]['wpercent'] = $c['wpercent'] / $c['colspan']; + } + } else { + if (isset($table['w']) && $table['w']) { + $c['w'] = $c['wpercent'] / 100 * ($table['w'] - $tblbw ); + } + $wc['wpercent'] = $c['wpercent']; + } + } + + if (isset($table['overflow']) && $table['overflow'] == 'visible' && $table['level'] == 1) { + if (isset($c['w']) && ($c['w'] + $tblbw) > $this->blk[$this->blklvl]['inner_width']) { + $c['w'] = $this->blk[$this->blklvl]['inner_width'] - $tblbw; + } + } + + + if (isset($c['w'])) { // If cell width is specified + if ($miw < $c['w']) { + $c['miw'] = $c['w']; + } // Cell min width = that specified + if ($miw > $c['w']) { + $c['miw'] = $c['w'] = $miw; + } // If width specified is less than minimum allowed (W) increase it + // mPDF 5.7.4 Do not set column width in colspan + // cf. http://www.mpdf1.com/forum/discussion/2221/colspan-bug + if (!isset($c['colspan'])) { + if (!isset($wc['w'])) { + $wc['w'] = 1; + } // If the Col width is not specified = set it to 1 + } + // mPDF 5.7.3 cf. http://www.mpdf1.com/forum/discussion/1648/nested-table-bug- + $c['maw'] = $c['w']; + } else { + $c['miw'] = $miw; + } // If cell width not specified -> set Cell min width it to minimum allowed (W) + + if (isset($c['miw']) && $c['maw'] < $c['miw']) { + $c['maw'] = $c['miw']; + } // If Cell max width < Minwidth - increase it to = + if (!isset($c['colspan'])) { + if (isset($c['miw']) && $wc['miw'] < $c['miw']) { + $wc['miw'] = $c['miw']; + } // Update Col Minimum and maximum widths + if ($wc['maw'] < $c['maw']) { + $wc['maw'] = $c['maw']; + } + if ((isset($wc['absmiw']) && $wc['absmiw'] < $c['absmiw']) || !isset($wc['absmiw'])) { + $wc['absmiw'] = $c['absmiw']; + } // Update Col Minimum and maximum widths + + if (isset($table['l'][$j])) { + $table['l'][$j] += $c['s']; + } else { + $table['l'][$j] = $c['s']; + } + } else { + $listspan[] = [$i, $j]; + } + + // Check if minimum width of the whole column is big enough for largest word to fit + // mPDF 6 + if (isset($c['textbuffer'])) { + if (isset($table['overflow']) && $table['overflow'] == 'wrap') { + $letter = true; + } // check for maximum width of letters + else { + $letter = false; + } + $minwidth = $this->TableCheckMinWidth($wc['miw'] - $extrcw, 0, $c['textbuffer'], $letter); + } else { + $minwidth = 0; + } + if ($minwidth < 0) { + // increase minimum width + if (!isset($c['colspan'])) { + $wc['miw'] = max((isset($wc['miw']) ? $wc['miw'] : 0), ((-$minwidth) + $extrcw)); + } else { + $c['miw'] = max((isset($c['miw']) ? $c['miw'] : 0), ((-$minwidth) + $extrcw)); + } + } + if (!isset($c['colspan'])) { + if ($wc['miw'] > $wc['maw']) { + $wc['maw'] = $wc['miw']; + } // update maximum width, if needed + } + } + unset($c); + }//rows + }//columns + // COLUMN SPANS + $wc = &$table['wc']; + foreach ($listspan as $span) { + list($i, $j) = $span; + $c = &$cs[$i][$j]; + $lc = $j + $c['colspan']; + if ($lc > $nc) { + $lc = $nc; + } + $wis = $wisa = 0; + $was = $wasa = 0; + $list = []; + for ($k = $j; $k < $lc; $k++) { + if (isset($table['l'][$k])) { + if ($c['R']) { + $table['l'][$k] += $c['miw'] / $c['colspan']; + } else { + $table['l'][$k] += $c['s'] / $c['colspan']; + } + } else { + if ($c['R']) { + $table['l'][$k] = $c['miw'] / $c['colspan']; + } else { + $table['l'][$k] = $c['s'] / $c['colspan']; + } + } + $wis += $wc[$k]['miw']; // $wis is the sum of the column miw in the colspan + $was += $wc[$k]['maw']; // $was is the sum of the column maw in the colspan + if (!isset($c['w'])) { + $list[] = $k; + $wisa += $wc[$k]['miw']; // $wisa is the sum of the column miw in cells with no width specified in the colspan + $wasa += $wc[$k]['maw']; // $wasa is the sum of the column maw in cells with no width specified in the colspan + } + } + if ($c['miw'] > $wis) { + if (!$wis) { + for ($k = $j; $k < $lc; $k++) { + $wc[$k]['miw'] = $c['miw'] / $c['colspan']; + } + } elseif (!count($list) && $wis != 0) { + $wi = $c['miw'] - $wis; + for ($k = $j; $k < $lc; $k++) { + $wc[$k]['miw'] += ($wc[$k]['miw'] / $wis) * $wi; + } + } else { + $wi = $c['miw'] - $wis; + // mPDF 5.7.2 Extra min width distributed proportionately to all cells in colspan without a specified width + // cf. http://www.mpdf1.com/forum/discussion/1607#Item_4 + foreach ($list as $k) { + if (!isset($wc[$k]['w']) || !$wc[$k]['w']) { + $wc[$k]['miw'] += ($wc[$k]['miw'] / $wisa) * $wi; + } + } // mPDF 5.7.2 + } + } + if ($c['maw'] > $was) { + if (!$wis) { + for ($k = $j; $k < $lc; $k++) { + $wc[$k]['maw'] = $c['maw'] / $c['colspan']; + } + } elseif (!count($list) && $was != 0) { + $wi = $c['maw'] - $was; + for ($k = $j; $k < $lc; $k++) { + $wc[$k]['maw'] += ($wc[$k]['maw'] / $was) * $wi; + } + } else { + $wi = $c['maw'] - $was; + // mPDF 5.7.4 Extra max width distributed evenly to all cells in colspan without a specified width + // cf. http://www.mpdf1.com/forum/discussion/2221/colspan-bug + foreach ($list as $k) { + $wc[$k]['maw'] += $wi / count($list); + } + } + } + unset($c); + } + + $checkminwidth = 0; + $checkmaxwidth = 0; + $totallength = 0; + + for ($i = 0; $i < $nc; $i++) { + $checkminwidth += $table['wc'][$i]['miw']; + $checkmaxwidth += $table['wc'][$i]['maw']; + $totallength += isset($table['l']) ? $table['l'][$i] : 0; + } + + if (!isset($table['w']) && $firstpass) { + $sumpc = 0; + $notset = 0; + for ($i = 0; $i < $nc; $i++) { + if (isset($table['wc'][$i]['wpercent']) && $table['wc'][$i]['wpercent']) { + $sumpc += $table['wc'][$i]['wpercent']; + } else { + $notset++; + } + } + + // If sum of widths as % >= 100% and not all columns are set + // Set a nominal width of 1% for unset columns + if ($sumpc >= 100 && $notset) { + for ($i = 0; $i < $nc; $i++) { + if ((!isset($table['wc'][$i]['wpercent']) || !$table['wc'][$i]['wpercent']) && + (!isset($table['wc'][$i]['w']) || !$table['wc'][$i]['w'])) { + $table['wc'][$i]['wpercent'] = 1; + } + } + } + + + if ($sumpc) { // if any percents are set + $sumnonpc = (100 - $sumpc); + $sumpc = max($sumpc, 100); + $miwleft = 0; + $miwleftcount = 0; + $miwsurplusnonpc = 0; + $maxcalcmiw = 0; + $mawleft = 0; + $mawleftcount = 0; + $mawsurplusnonpc = 0; + $maxcalcmaw = 0; + $mawnon = 0; + $miwnon = 0; + for ($i = 0; $i < $nc; $i++) { + if (isset($table['wc'][$i]['wpercent'])) { + $maxcalcmiw = max($maxcalcmiw, ($table['wc'][$i]['miw'] * $sumpc / $table['wc'][$i]['wpercent'])); + $maxcalcmaw = max($maxcalcmaw, ($table['wc'][$i]['maw'] * $sumpc / $table['wc'][$i]['wpercent'])); + } else { + $miwleft += $table['wc'][$i]['miw']; + $mawleft += $table['wc'][$i]['maw']; + if (!isset($table['wc'][$i]['w'])) { + $miwleftcount++; + $mawleftcount++; + } + } + } + if ($miwleft && $sumnonpc > 0) { + $miwnon = $miwleft * 100 / $sumnonpc; + } + if ($mawleft && $sumnonpc > 0) { + $mawnon = $mawleft * 100 / $sumnonpc; + } + if (($miwnon > $checkminwidth || $maxcalcmiw > $checkminwidth) && $this->keep_table_proportions) { + if ($miwnon > $maxcalcmiw) { + $miwsurplusnonpc = round((($miwnon * $sumnonpc / 100) - $miwleft), 3); + $checkminwidth = $miwnon; + } else { + $checkminwidth = $maxcalcmiw; + } + for ($i = 0; $i < $nc; $i++) { + if (isset($table['wc'][$i]['wpercent'])) { + $newmiw = $checkminwidth * $table['wc'][$i]['wpercent'] / 100; + if ($table['wc'][$i]['miw'] < $newmiw) { + $table['wc'][$i]['miw'] = $newmiw; + } + $table['wc'][$i]['w'] = 1; + } elseif ($miwsurplusnonpc && !$table['wc'][$i]['w']) { + $table['wc'][$i]['miw'] += $miwsurplusnonpc / $miwleftcount; + } + } + } + if (($mawnon > $checkmaxwidth || $maxcalcmaw > $checkmaxwidth)) { + if ($mawnon > $maxcalcmaw) { + $mawsurplusnonpc = round((($mawnon * $sumnonpc / 100) - $mawleft), 3); + $checkmaxwidth = $mawnon; + } else { + $checkmaxwidth = $maxcalcmaw; + } + for ($i = 0; $i < $nc; $i++) { + if (isset($table['wc'][$i]['wpercent'])) { + $newmaw = $checkmaxwidth * $table['wc'][$i]['wpercent'] / 100; + if ($table['wc'][$i]['maw'] < $newmaw) { + $table['wc'][$i]['maw'] = $newmaw; + } + $table['wc'][$i]['w'] = 1; + } elseif ($mawsurplusnonpc && !$table['wc'][$i]['w']) { + $table['wc'][$i]['maw'] += $mawsurplusnonpc / $mawleftcount; + } + if ($table['wc'][$i]['maw'] < $table['wc'][$i]['miw']) { + $table['wc'][$i]['maw'] = $table['wc'][$i]['miw']; + } + } + } + if ($checkminwidth > $checkmaxwidth) { + $checkmaxwidth = $checkminwidth; + } + } + } + + if (isset($table['wpercent']) && $table['wpercent']) { + $checkminwidth *= (100 / $table['wpercent']); + $checkmaxwidth *= (100 / $table['wpercent']); + } + + + $checkminwidth += $tblbw; + $checkmaxwidth += $tblbw; + + // Table['miw'] set by percent in first pass may be larger than sum of column miw + if ((isset($table['miw']) && $checkminwidth > $table['miw']) || !isset($table['miw'])) { + $table['miw'] = $checkminwidth; + } + if ((isset($table['maw']) && $checkmaxwidth > $table['maw']) || !isset($table['maw'])) { + $table['maw'] = $checkmaxwidth; + } + $table['tl'] = $totallength; + + // mPDF 6 + if ($this->table_rotate) { + $mxw = $this->tbrot_maxw; + } else { + $mxw = $this->blk[$this->blklvl]['inner_width']; + } + + if (!isset($table['overflow'])) { + $table['overflow'] = null; + } + + if ($table['overflow'] == 'visible') { + return [0, 0]; + } elseif ($table['overflow'] == 'hidden' && !$this->table_rotate && !$this->ColActive && $checkminwidth > $mxw) { + $table['w'] = $table['miw']; + return [0, 0]; + } + // elseif ($table['overflow']=='wrap') { return array(0,0); } // mPDF 6 + + if (isset($table['w']) && $table['w']) { + + if ($table['w'] >= $checkminwidth && $table['w'] <= $mxw) { + $table['maw'] = $mxw = $table['w']; + } elseif ($table['w'] >= $checkminwidth && $table['w'] > $mxw && $this->keep_table_proportions) { + $checkminwidth = $table['w']; + } elseif ($table['w'] < $checkminwidth && $checkminwidth < $mxw && $this->keep_table_proportions) { + $table['maw'] = $table['w'] = $checkminwidth; + } else { + unset($table['w']); + } + } + + $ratio = $checkminwidth / $mxw; + + if ($checkminwidth > $mxw) { + return [($ratio + 0.001), $checkminwidth]; // 0.001 to allow for rounded numbers when resizing + } + + unset($cs); + + return [0, 0]; + } + + function _tableWidth(&$table) + { + $widthcols = &$table['wc']; + $numcols = $table['nc']; + $tablewidth = 0; + + if ($table['borders_separate']) { + $tblbw = $table['border_details']['L']['w'] + $table['border_details']['R']['w'] + $table['margin']['L'] + $table['margin']['R'] + $table['padding']['L'] + $table['padding']['R'] + $table['border_spacing_H']; + } else { + $tblbw = $table['max_cell_border_width']['L'] / 2 + $table['max_cell_border_width']['R'] / 2 + $table['margin']['L'] + $table['margin']['R']; + } + + if ($table['level'] > 1 && isset($table['w'])) { + + if (isset($table['wpercent']) && $table['wpercent']) { + $table['w'] = $temppgwidth = (($table['w'] - $tblbw) * $table['wpercent'] / 100) + $tblbw; + } else { + $temppgwidth = $table['w']; + } + + } elseif ($this->table_rotate) { + + $temppgwidth = $this->tbrot_maxw; + + // If it is less than 1/20th of the remaining page height to finish the DIV (i.e. DIV padding + table bottom margin) then allow for this + $enddiv = $this->blk[$this->blklvl]['padding_bottom'] + $this->blk[$this->blklvl]['border_bottom']['w']; + + if ($enddiv / $temppgwidth < 0.05) { + $temppgwidth -= $enddiv; + } + + } else { + + if (isset($table['w']) && $table['w'] < $this->blk[$this->blklvl]['inner_width']) { + $notfullwidth = 1; + $temppgwidth = $table['w']; + } elseif ($table['overflow'] == 'visible' && $table['level'] == 1) { + $temppgwidth = null; + } elseif ($table['overflow'] == 'hidden' && !$this->ColActive && isset($table['w']) && $table['w'] > $this->blk[$this->blklvl]['inner_width'] && $table['w'] == $table) { + // $temppgwidth = $this->blk[$this->blklvl]['inner_width']; + $temppgwidth = $table['w']; + } else { + $temppgwidth = $this->blk[$this->blklvl]['inner_width']; + } + + } + + $totaltextlength = 0; // Added - to sum $table['l'][colno] + $totalatextlength = 0; // Added - to sum $table['l'][colno] for those columns where width not set + $percentages_set = 0; + + for ($i = 0; $i < $numcols; $i++) { + if (isset($widthcols[$i]['wpercent'])) { + $tablewidth += $widthcols[$i]['maw']; + $percentages_set = 1; + } elseif (isset($widthcols[$i]['w'])) { + $tablewidth += $widthcols[$i]['miw']; + } else { + $tablewidth += $widthcols[$i]['maw']; + } + $totaltextlength += isset($table['l']) ? $table['l'][$i] : 0; + } + + if (!$totaltextlength) { + $totaltextlength = 1; + } + + $tablewidth += $tblbw; // Outer half of table borders + + if ($tablewidth > $temppgwidth) { + $table['w'] = $temppgwidth; + } elseif ($tablewidth < $temppgwidth && !isset($table['w']) && $percentages_set) { // if any widths set as percentages and max width fits < page width + $table['w'] = $table['maw']; + } + + // if table width is set and is > allowed width + if (isset($table['w']) && $table['w'] > $temppgwidth) { + $table['w'] = $temppgwidth; + } + + // IF the table width is now set - Need to distribute columns widths + // mPDF 5.7.3 + // If the table width is already set to the maximum width (e.g. nested table), then use maximum column widths exactly + if (isset($table['w']) && ($table['w'] == $tablewidth) && !$percentages_set) { + + // This sets the columns all to maximum width + for ($i = 0; $i < $numcols; $i++) { + $widthcols[$i] = $widthcols[$i]['maw']; + } + + } elseif (isset($table['w'])) { // elseif the table width is set distribute width using algorithm + + $wis = $wisa = 0; + $list = []; + $notsetlist = []; + + for ($i = 0; $i < $numcols; $i++) { + $wis += $widthcols[$i]['miw']; + if (!isset($widthcols[$i]['w']) || ($widthcols[$i]['w'] && $table['w'] > $temppgwidth && !$this->keep_table_proportions && !$notfullwidth )) { + $list[] = $i; + $wisa += $widthcols[$i]['miw']; + $totalatextlength += $table['l'][$i]; + } + } + + if (!$totalatextlength) { + $totalatextlength = 1; + } + + // Allocate spare (more than col's minimum width) across the cols according to their approx total text length + // Do it by setting minimum width here + if ($table['w'] > $wis + $tblbw) { + + // First set any cell widths set as percentages + if ($table['w'] < $temppgwidth || $this->keep_table_proportions) { + for ($k = 0; $k < $numcols; $k++) { + if (isset($widthcols[$k]['wpercent'])) { + $curr = $widthcols[$k]['miw']; + $widthcols[$k]['miw'] = ($table['w'] - $tblbw) * $widthcols[$k]['wpercent'] / 100; + $wis += $widthcols[$k]['miw'] - $curr; + $wisa += $widthcols[$k]['miw'] - $curr; + } + } + } + + // Now allocate surplus up to maximum width of each column + $surplus = 0; + $ttl = 0; // number of surplus columns + + if (!count($list)) { + + $wi = ($table['w'] - ($wis + $tblbw)); // i.e. extra space to distribute + + for ($k = 0; $k < $numcols; $k++) { + + $spareratio = ($table['l'][$k] / $totaltextlength); // gives ratio to divide up free space + + // Don't allocate more than Maximum required width - save rest in surplus + if ($widthcols[$k]['miw'] + ($wi * $spareratio) >= $widthcols[$k]['maw']) { // mPDF 5.7.3 + $surplus += ($wi * $spareratio) - ($widthcols[$k]['maw'] - $widthcols[$k]['miw']); + $widthcols[$k]['miw'] = $widthcols[$k]['maw']; + } else { + $notsetlist[] = $k; + $ttl += $table['l'][$k]; + $widthcols[$k]['miw'] += ($wi * $spareratio); + } + } + + } else { + + $wi = ($table['w'] - ($wis + $tblbw)); // i.e. extra space to distribute + + foreach ($list as $k) { + + $spareratio = ($table['l'][$k] / $totalatextlength); // gives ratio to divide up free space + + // Don't allocate more than Maximum required width - save rest in surplus + if ($widthcols[$k]['miw'] + ($wi * $spareratio) >= $widthcols[$k]['maw']) { // mPDF 5.7.3 + $surplus += ($wi * $spareratio) - ($widthcols[$k]['maw'] - $widthcols[$k]['miw']); + $widthcols[$k]['miw'] = $widthcols[$k]['maw']; + } else { + $notsetlist[] = $k; + $ttl += $table['l'][$k]; + $widthcols[$k]['miw'] += ($wi * $spareratio); + } + } + } + + // If surplus still left over apportion it across columns + if ($surplus) { + + if (count($notsetlist) && count($notsetlist) < $numcols) { // if some are set only add to remaining - otherwise add to all of them + foreach ($notsetlist as $i) { + if ($ttl) { + $widthcols[$i]['miw'] += $surplus * $table['l'][$i] / $ttl; + } + } + } elseif (count($list) && count($list) < $numcols) { // If some widths are defined, and others have been added up to their maxmum + foreach ($list as $i) { + $widthcols[$i]['miw'] += $surplus / count($list); + } + } elseif ($numcols) { // If all columns + $ttl = array_sum($table['l']); + if ($ttl) { + for ($i = 0; $i < $numcols; $i++) { + $widthcols[$i]['miw'] += $surplus * $table['l'][$i] / $ttl; + } + } + } + } + } + + // This sets the columns all to minimum width (which has been increased above if appropriate) + for ($i = 0; $i < $numcols; $i++) { + $widthcols[$i] = $widthcols[$i]['miw']; + } + + // TABLE NOT WIDE ENOUGH EVEN FOR MINIMUM CONTENT WIDTH + // If sum of column widths set are too wide for table + $checktablewidth = 0; + for ($i = 0; $i < $numcols; $i++) { + $checktablewidth += $widthcols[$i]; + } + + if ($checktablewidth > ($temppgwidth + 0.001 - $tblbw)) { + + $usedup = 0; + $numleft = 0; + + for ($i = 0; $i < $numcols; $i++) { + if ((isset($widthcols[$i]) && $widthcols[$i] > (($temppgwidth - $tblbw) / $numcols)) && (!isset($widthcols[$i]['w']))) { + $numleft++; + unset($widthcols[$i]); + } else { + $usedup += $widthcols[$i]; + } + } + + for ($i = 0; $i < $numcols; $i++) { + if (!isset($widthcols[$i]) || !$widthcols[$i]) { + $widthcols[$i] = ((($temppgwidth - $tblbw) - $usedup) / ($numleft)); + } + } + } + + } else { // table has no width defined + + $table['w'] = $tablewidth; + + for ($i = 0; $i < $numcols; $i++) { + + if (isset($widthcols[$i]['wpercent']) && $this->keep_table_proportions) { + $colwidth = $widthcols[$i]['maw']; + } elseif (isset($widthcols[$i]['w'])) { + $colwidth = $widthcols[$i]['miw']; + } else { + $colwidth = $widthcols[$i]['maw']; + } + + unset($widthcols[$i]); + $widthcols[$i] = $colwidth; + + } + } + + if ($table['overflow'] === 'visible' && $table['level'] == 1) { + + if ($tablewidth > $this->blk[$this->blklvl]['inner_width']) { + + for ($j = 0; $j < $numcols; $j++) { // columns + + for ($i = 0; $i < $table['nr']; $i++) { // rows + + if (isset($table['cells'][$i][$j]) && $table['cells'][$i][$j]) { + + $colspan = (isset($table['cells'][$i][$j]['colspan']) ? $table['cells'][$i][$j]['colspan'] : 1); + + if ($colspan > 1) { + $w = 0; + + for ($c = $j; $c < ($j + $colspan); $c++) { + $w += $widthcols[$c]; + } + + if ($w > $this->blk[$this->blklvl]['inner_width']) { + $diff = $w - ($this->blk[$this->blklvl]['inner_width'] - $tblbw); + for ($c = $j; $c < ($j + $colspan); $c++) { + $widthcols[$c] -= $diff * ($widthcols[$c] / $w); + } + $table['w'] -= $diff; + $table['csp'][$j] = $w - $diff; + } + } + } + } + } + } + + $pgNo = 0; + $currWc = 0; + + for ($i = 0; $i < $numcols; $i++) { // columns + + if (isset($table['csp'][$i])) { + $w = $table['csp'][$i]; + unset($table['csp'][$i]); + } else { + $w = $widthcols[$i]; + } + + if (($currWc + $w + $tblbw) > $this->blk[$this->blklvl]['inner_width']) { + $pgNo++; + $currWc = $widthcols[$i]; + } else { + $currWc += $widthcols[$i]; + } + + $table['colPg'][$i] = $pgNo; + } + } + } + + function _tableHeight(&$table) + { + $level = $table['level']; + $levelid = $table['levelid']; + $cells = &$table['cells']; + $numcols = $table['nc']; + $numrows = $table['nr']; + $listspan = []; + $checkmaxheight = 0; + $headerrowheight = 0; + $checkmaxheightplus = 0; + $headerrowheightplus = 0; + $firstrowheight = 0; + + $footerrowheight = 0; + $footerrowheightplus = 0; + if ($this->table_rotate) { + $temppgheight = $this->tbrot_maxh; + $remainingpage = $this->tbrot_maxh; + } else { + $temppgheight = ($this->h - $this->bMargin - $this->tMargin) - $this->kwt_height; + $remainingpage = ($this->h - $this->bMargin - $this->y) - $this->kwt_height; + + // If it is less than 1/20th of the remaining page height to finish the DIV (i.e. DIV padding + table bottom margin) + // then allow for this + $enddiv = $this->blk[$this->blklvl]['padding_bottom'] + $this->blk[$this->blklvl]['border_bottom']['w'] + $table['margin']['B']; + if ($remainingpage > $enddiv && $enddiv / $remainingpage < 0.05) { + $remainingpage -= $enddiv; + } elseif ($remainingpage == 0) { + $remainingpage = 0.001; + } + if ($temppgheight > $enddiv && $enddiv / $temppgheight < 0.05) { + $temppgheight -= $enddiv; + } elseif ($temppgheight == 0) { + $temppgheight = 0.001; + } + } + if ($remainingpage < 0) { + $remainingpage = 0.001; + } + if ($temppgheight < 0) { + $temppgheight = 0.001; + } + + for ($i = 0; $i < $numrows; $i++) { // rows + $heightrow = &$table['hr'][$i]; + for ($j = 0; $j < $numcols; $j++) { // columns + if (isset($cells[$i][$j]) && $cells[$i][$j]) { + $c = &$cells[$i][$j]; + + if ($this->simpleTables) { + if ($table['borders_separate']) { // NB twice border width + $extraWLR = ($table['simple']['border_details']['L']['w'] + $table['simple']['border_details']['R']['w']) + ($c['padding']['L'] + $c['padding']['R']) + $table['border_spacing_H']; + $extrh = ($table['simple']['border_details']['T']['w'] + $table['simple']['border_details']['B']['w']) + ($c['padding']['T'] + $c['padding']['B']) + $table['border_spacing_V']; + } else { + $extraWLR = ($table['simple']['border_details']['L']['w'] + $table['simple']['border_details']['R']['w']) / 2 + ($c['padding']['L'] + $c['padding']['R']); + $extrh = ($table['simple']['border_details']['T']['w'] + $table['simple']['border_details']['B']['w']) / 2 + ($c['padding']['T'] + $c['padding']['B']); + } + } else { + if ($this->packTableData) { + list($bt, $br, $bb, $bl) = $this->_getBorderWidths($c['borderbin']); + } else { + $bt = $c['border_details']['T']['w']; + $bb = $c['border_details']['B']['w']; + $br = $c['border_details']['R']['w']; + $bl = $c['border_details']['L']['w']; + } + if ($table['borders_separate']) { // NB twice border width + $extraWLR = $bl + $br + $c['padding']['L'] + $c['padding']['R'] + $table['border_spacing_H']; + $extrh = $bt + $bb + $c['padding']['T'] + $c['padding']['B'] + $table['border_spacing_V']; + } else { + $extraWLR = $bl / 2 + $br / 2 + $c['padding']['L'] + $c['padding']['R']; + $extrh = $bt / 2 + $bb / 2 + $c['padding']['T'] + $c['padding']['B']; + } + } + + if ($table['overflow'] == 'visible' && $level == 1) { + list($x, $cw) = $this->_splitTableGetWidth($table, $i, $j); + } else { + list($x, $cw) = $this->_tableGetWidth($table, $i, $j); + } + + + // Get CELL HEIGHT + // ++ extra parameter forces wrap to break word + if ($c['R'] && isset($c['textbuffer'])) { + $str = ''; + foreach ($c['textbuffer'] as $t) { + $str .= $t[0] . ' '; + } + $str = rtrim($str); + $s_fs = $this->FontSizePt; + $s_f = $this->FontFamily; + $s_st = $this->FontStyle; + $this->SetFont($c['textbuffer'][0][4], $c['textbuffer'][0][2], $c['textbuffer'][0][11] / $this->shrin_k, true, true); + $tempch = $this->GetStringWidth($str, true, $c['textbuffer'][0][18], $c['textbuffer'][0][8]); + if ($c['R'] >= 45 && $c['R'] < 90) { + $tempch = ((sin(deg2rad($c['R']))) * $tempch ) + ((sin(deg2rad($c['R']))) * (($c['textbuffer'][0][11] / Mpdf::SCALE) / $this->shrin_k)); + } + $this->SetFont($s_f, $s_st, $s_fs, true, true); + $ch = ($tempch ) + $extrh; + } else { + if (isset($c['textbuffer']) && !empty($c['textbuffer'])) { + $this->cellLineHeight = $c['cellLineHeight']; + $this->cellLineStackingStrategy = $c['cellLineStackingStrategy']; + $this->cellLineStackingShift = $c['cellLineStackingShift']; + $this->divwidth = $cw - $extraWLR; + $tempch = $this->printbuffer($c['textbuffer'], '', true, true); + } else { + $tempch = 0; + } + + // Added cellpadding top and bottom. (Lineheight already adjusted) + $ch = $tempch + $extrh; + } + // If height is defined and it is bigger than calculated $ch then update values + if (isset($c['h']) && $c['h'] > $ch) { + $c['mih'] = $ch; // in order to keep valign working + $ch = $c['h']; + } else { + $c['mih'] = $ch; + } + if (isset($c['rowspan'])) { + $listspan[] = [$i, $j]; + } elseif ($heightrow < $ch) { + $heightrow = $ch; + } + + // this is the extra used in _tableWrite to determine whether to trigger a page change + if ($table['borders_separate']) { + if ($i == ($numrows - 1) || (isset($c['rowspan']) && ($i + $c['rowspan']) == ($numrows))) { + $extra = $table['margin']['B'] + $table['padding']['B'] + $table['border_details']['B']['w'] + $table['border_spacing_V'] / 2; + } else { + $extra = $table['border_spacing_V'] / 2; + } + } else { + if (!$this->simpleTables) { + $extra = $bb / 2; + } elseif ($this->simpleTables) { + $extra = $table['simple']['border_details']['B']['w'] / 2; + } + } + if (isset($table['is_thead'][$i]) && $table['is_thead'][$i]) { + if ($j == 0) { + $headerrowheight += $ch; + $headerrowheightplus += $ch + $extra; + } + } elseif (isset($table['is_tfoot'][$i]) && $table['is_tfoot'][$i]) { + if ($j == 0) { + $footerrowheight += $ch; + $footerrowheightplus += $ch + $extra; + } + } else { + $checkmaxheight = max($checkmaxheight, $ch); + $checkmaxheightplus = max($checkmaxheightplus, $ch + $extra); + } + if ($this->tableLevel == 1 && $i == (isset($table['headernrows']) ? $table['headernrows'] : 0)) { + $firstrowheight = max($ch, $firstrowheight); + } + unset($c); + } + }//end of columns + }//end of rows + + $heightrow = &$table['hr']; + foreach ($listspan as $span) { + list($i, $j) = $span; + $c = &$cells[$i][$j]; + $lr = $i + $c['rowspan']; + if ($lr > $numrows) { + $lr = $numrows; + } + $hs = $hsa = 0; + $list = []; + for ($k = $i; $k < $lr; $k++) { + $hs += $heightrow[$k]; + // mPDF 6 + $sh = false; // specified height + for ($m = 0; $m < $numcols; $m++) { // columns + $tc = &$cells[$k][$m]; + if (isset($tc['rowspan'])) { + continue; + } + if (isset($tc['h'])) { + $sh = true; + break; + } + } + if (!$sh) { + $list[] = $k; + } + } + + if ($table['borders_separate']) { + if ($i == ($numrows - 1) || ($i + $c['rowspan']) == ($numrows)) { + $extra = $table['margin']['B'] + $table['padding']['B'] + $table['border_details']['B']['w'] + $table['border_spacing_V'] / 2; + } else { + $extra = $table['border_spacing_V'] / 2; + } + } else { + if (!$this->simpleTables) { + if ($this->packTableData) { + list($bt, $br, $bb, $bl) = $this->_getBorderWidths($c['borderbin']); + } else { + $bb = $c['border_details']['B']['w']; + } + $extra = $bb / 2; + } elseif ($this->simpleTables) { + $extra = $table['simple']['border_details']['B']['w'] / 2; + } + } + if (!empty($table['is_thead'][$i])) { + $headerrowheight = max($headerrowheight, $hs); + $headerrowheightplus = max($headerrowheightplus, $hs + $extra); + } elseif (!empty($table['is_tfoot'][$i])) { + $footerrowheight = max($footerrowheight, $hs); + $footerrowheightplus = max($footerrowheightplus, $hs + $extra); + } else { + $checkmaxheight = max($checkmaxheight, $hs); + $checkmaxheightplus = max($checkmaxheightplus, $hs + $extra); + } + if ($this->tableLevel == 1 && $i == (isset($table['headernrows']) ? $table['headernrows'] : 0)) { + $firstrowheight = max($hs, $firstrowheight); + } + + if ($c['mih'] > $hs) { + if (!$hs) { + for ($k = $i; $k < $lr; $k++) { + $heightrow[$k] = $c['mih'] / $c['rowspan']; + } + } elseif (!count($list)) { // no rows in the rowspan have a height specified, so share amongst all rows equally + $hi = $c['mih'] - $hs; + for ($k = $i; $k < $lr; $k++) { + $heightrow[$k] += ($heightrow[$k] / $hs) * $hi; + } + } else { + $hi = $c['mih'] - $hs; // mPDF 6 + foreach ($list as $k) { + $heightrow[$k] += $hi / (count($list)); // mPDF 6 + } + } + } + unset($c); + + // If rowspans overlap so that one or more rows do not have a height set... + // i.e. for one or more rows, the only cells (explicit) in that row have rowspan>1 + // so heightrow is still == 0 + if ($heightrow[$i] == 0) { + // Get row extent to analyse above and below + $top = $i; + foreach ($listspan as $checkspan) { + list($cki, $ckj) = $checkspan; + $c = &$cells[$cki][$ckj]; + if (isset($c['rowspan']) && $c['rowspan'] > 1) { + if (($cki + $c['rowspan'] - 1) >= $i) { + $top = min($top, $cki); + } + } + } + $bottom = $i + $c['rowspan'] - 1; + // Check for overconstrained conditions + for ($k = $top; $k <= $bottom; $k++) { + // if ['hr'] for any of the others is also 0, then abort (too complicated) + if ($k != $i && $heightrow[$k] == 0) { + break(1); + } + // check again that top and bottom are not crossed by rowspans - or abort (too complicated) + if ($k == $top) { + // ???? take account of colspan as well??? + for ($m = 0; $m < $numcols; $m++) { // columns + if (!isset($cells[$k][$m]) || $cells[$k][$m] == 0) { + break(2); + } + } + } elseif ($k == $bottom) { + // ???? take account of colspan as well??? + for ($m = 0; $m < $numcols; $m++) { // columns + $c = &$cells[$k][$m]; + if (isset($c['rowspan']) && $c['rowspan'] > 1) { + break(2); + } + } + } + } + // By columns add up col height using ['h'] if set or ['mih'] if not + // Intentionally do not substract border-spacing + $colH = []; + $extH = 0; + $newhr = []; + for ($m = 0; $m < $numcols; $m++) { // columns + for ($k = $top; $k <= $bottom; $k++) { + if (isset($cells[$k][$m]) && $cells[$k][$m] != 0) { + $c = &$cells[$k][$m]; + if (isset($c['h']) && $c['h']) { + $useh = $c['h']; + } // ???? take account of colspan as well??? + else { + $useh = $c['mih']; + } + if (isset($colH[$m])) { + $colH[$m] += $useh; + } else { + $colH[$m] = $useh; + } + if (!isset($c['rowspan']) || $c['rowspan'] < 2) { + $newhr[$k] = max((isset($newhr[$k]) ? $newhr[$k] : 0), $useh); + } + } + } + $extH = max($extH, $colH[$m]); // mPDF 6 + } + $newhr[$i] = $extH - array_sum($newhr); + for ($k = $top; $k <= $bottom; $k++) { + $heightrow[$k] = $newhr[$k]; + } + } + + + unset($c); + } + + $table['h'] = array_sum($heightrow); + unset($heightrow); + + if ($table['borders_separate']) { + $table['h'] += $table['margin']['T'] + $table['margin']['B'] + $table['border_details']['T']['w'] + $table['border_details']['B']['w'] + $table['border_spacing_V'] + $table['padding']['T'] + $table['padding']['B']; + } else { + $table['h'] += $table['margin']['T'] + $table['margin']['B'] + $table['max_cell_border_width']['T'] / 2 + $table['max_cell_border_width']['B'] / 2; + } + + $maxrowheight = $checkmaxheightplus + $headerrowheightplus + $footerrowheightplus; + $maxfirstrowheight = $firstrowheight + $headerrowheightplus + $footerrowheightplus; // includes thead, 1st row and tfoot + return [$table['h'], $maxrowheight, $temppgheight, $remainingpage, $maxfirstrowheight]; + } + + function _tableGetWidth(&$table, $i, $j) + { + $cell = &$table['cells'][$i][$j]; + if ($cell) { + if (isset($cell['x0'])) { + return [$cell['x0'], $cell['w0']]; + } + $x = 0; + $widthcols = &$table['wc']; + for ($k = 0; $k < $j; $k++) { + $x += $widthcols[$k]; + } + $w = $widthcols[$j]; + if (isset($cell['colspan'])) { + for ($k = $j + $cell['colspan'] - 1; $k > $j; $k--) { + $w += $widthcols[$k]; + } + } + $cell['x0'] = $x; + $cell['w0'] = $w; + return [$x, $w]; + } + return [0, 0]; + } + + function _splitTableGetWidth(&$table, $i, $j) + { + $cell = &$table['cells'][$i][$j]; + if ($cell) { + if (isset($cell['x0'])) { + return [$cell['x0'], $cell['w0']]; + } + $x = 0; + $widthcols = &$table['wc']; + $pg = $table['colPg'][$j]; + for ($k = 0; $k < $j; $k++) { + if ($table['colPg'][$k] == $pg) { + $x += $widthcols[$k]; + } + } + $w = $widthcols[$j]; + if (isset($cell['colspan'])) { + for ($k = $j + $cell['colspan'] - 1; $k > $j; $k--) { + if ($table['colPg'][$k] == $pg) { + $w += $widthcols[$k]; + } + } + } + $cell['x0'] = $x; + $cell['w0'] = $w; + return [$x, $w]; + } + return [0, 0]; + } + + function _tableGetHeight(&$table, $i, $j) + { + $cell = &$table['cells'][$i][$j]; + if ($cell) { + if (isset($cell['y0'])) { + return [$cell['y0'], $cell['h0']]; + } + $y = 0; + $heightrow = &$table['hr']; + for ($k = 0; $k < $i; $k++) { + $y += $heightrow[$k]; + } + $h = $heightrow[$i]; + if (isset($cell['rowspan'])) { + for ($k = $i + $cell['rowspan'] - 1; $k > $i; $k--) { + if (array_key_exists($k, $heightrow)) { + $h += $heightrow[$k]; + } else { + $this->logger->debug('Possible non-wellformed HTML markup in a table', ['context' => LogContext::HTML_MARKUP]); + } + } + } + $cell['y0'] = $y; + $cell['h0'] = $h; + return [$y, $h]; + } + return [0, 0]; + } + + function _tableGetMaxRowHeight($table, $row) + { + if ($row == $table['nc'] - 1) { + return $table['hr'][$row]; + } + $maxrowheight = $table['hr'][$row]; + for ($i = $row + 1; $i < $table['nr']; $i++) { + $cellsset = 0; + for ($j = 0; $j < $table['nc']; $j++) { + if ($table['cells'][$i][$j]) { + if (isset($table['cells'][$i][$j]['colspan'])) { + $cellsset += $table['cells'][$i][$j]['colspan']; + } else { + $cellsset += 1; + } + } + } + if ($cellsset == $table['nc']) { + return $maxrowheight; + } else { + $maxrowheight += $table['hr'][$i]; + } + } + return $maxrowheight; + } + + // CHANGED TO ALLOW TABLE BORDER TO BE SPECIFIED CORRECTLY - added border_details + function _tableRect($x, $y, $w, $h, $bord = -1, $details = [], $buffer = false, $bSeparate = false, $cort = 'cell', $tablecorner = '', $bsv = 0, $bsh = 0) + { + $cellBorderOverlay = []; + + if ($bord == -1) { + $this->Rect($x, $y, $w, $h); + } elseif ($this->simpleTables && ($cort == 'cell')) { + $this->SetLineWidth($details['L']['w']); + if ($details['L']['c']) { + $this->SetDColor($details['L']['c']); + } else { + $this->SetDColor($this->colorConverter->convert(0, $this->PDFAXwarnings)); + } + $this->SetLineJoin(0); + $this->Rect($x, $y, $w, $h); + } elseif ($bord) { + if (!$bSeparate && $buffer) { + $priority = 'LRTB'; + for ($p = 0; $p < strlen($priority); $p++) { + $side = $priority[$p]; + $details['p'] = $side; + + $dom = 0; + if (isset($details[$side]['w'])) { + $dom += ($details[$side]['w'] * 100000); + } + if (isset($details[$side]['style'])) { + $dom += (array_search($details[$side]['style'], $this->borderstyles) * 100); + } + if (isset($details[$side]['dom'])) { + $dom += ($details[$side]['dom'] * 10); + } + + // Precedence to darker colours at joins + $coldom = 0; + if (isset($details[$side]['c']) && is_array($details[$side]['c'])) { + if ($details[$side]['c'][0] == 3) { // RGB + $coldom = 10 - (((ord($details[$side]['c'][1]) * 1.00) + (ord($details[$side]['c'][2]) * 1.00) + (ord($details[$side]['c'][3]) * 1.00)) / 76.5); + } + } // 10 black - 0 white + if ($coldom) { + $dom += $coldom; + } + // Lastly precedence to RIGHT and BOTTOM cells at joins + if (isset($details['cellposdom'])) { + $dom += $details['cellposdom']; + } + + $save = false; + if ($side == 'T' && $this->issetBorder($bord, Border::TOP)) { + $cbord = Border::TOP; + $save = true; + } elseif ($side == 'L' && $this->issetBorder($bord, Border::LEFT)) { + $cbord = Border::LEFT; + $save = true; + } elseif ($side == 'R' && $this->issetBorder($bord, Border::RIGHT)) { + $cbord = Border::RIGHT; + $save = true; + } elseif ($side == 'B' && $this->issetBorder($bord, Border::BOTTOM)) { + $cbord = Border::BOTTOM; + $save = true; + } + + if ($save) { + $this->cellBorderBuffer[] = pack("A16nCnda6A10d14", str_pad(sprintf("%08.7f", $dom), 16, "0", STR_PAD_LEFT), $cbord, ord($side), $details[$side]['s'], $details[$side]['w'], $details[$side]['c'], $details[$side]['style'], $x, $y, $w, $h, $details['mbw']['BL'], $details['mbw']['BR'], $details['mbw']['RT'], $details['mbw']['RB'], $details['mbw']['TL'], $details['mbw']['TR'], $details['mbw']['LT'], $details['mbw']['LB'], $details['cellposdom'], 0); + if ($details[$side]['style'] == 'ridge' || $details[$side]['style'] == 'groove' || $details[$side]['style'] == 'inset' || $details[$side]['style'] == 'outset' || $details[$side]['style'] == 'double') { + $details[$side]['overlay'] = true; + $this->cellBorderBuffer[] = pack("A16nCnda6A10d14", str_pad(sprintf("%08.7f", ($dom + 4)), 16, "0", STR_PAD_LEFT), $cbord, ord($side), $details[$side]['s'], $details[$side]['w'], $details[$side]['c'], $details[$side]['style'], $x, $y, $w, $h, $details['mbw']['BL'], $details['mbw']['BR'], $details['mbw']['RT'], $details['mbw']['RB'], $details['mbw']['TL'], $details['mbw']['TR'], $details['mbw']['LT'], $details['mbw']['LB'], $details['cellposdom'], 1); + } + } + } + return; + } + + if (isset($details['p']) && strlen($details['p']) > 1) { + $priority = $details['p']; + } else { + $priority = 'LTRB'; + } + $Tw = 0; + $Rw = 0; + $Bw = 0; + $Lw = 0; + if (isset($details['T']['w'])) { + $Tw = $details['T']['w']; + } + if (isset($details['R']['w'])) { + $Rw = $details['R']['w']; + } + if (isset($details['B']['w'])) { + $Bw = $details['B']['w']; + } + if (isset($details['L']['w'])) { + $Lw = $details['L']['w']; + } + + $x2 = $x + $w; + $y2 = $y + $h; + $oldlinewidth = $this->LineWidth; + + for ($p = 0; $p < strlen($priority); $p++) { + $side = $priority[$p]; + $xadj = 0; + $xadj2 = 0; + $yadj = 0; + $yadj2 = 0; + $print = false; + if ($Tw && $side == 'T' && $this->issetBorder($bord, Border::TOP)) { // TOP + $ly1 = $y; + $ly2 = $y; + $lx1 = $x; + $lx2 = $x2; + $this->SetLineWidth($Tw); + if ($cort == 'cell' || strpos($tablecorner, 'L') !== false) { + if ($Tw > $Lw) { + $xadj = ($Tw - $Lw) / 2; + } + if ($Tw < $Lw) { + $xadj = ($Tw + $Lw) / 2; + } + } else { + $xadj = $Tw / 2 - $bsh / 2; + } + if ($cort == 'cell' || strpos($tablecorner, 'R') !== false) { + if ($Tw > $Rw) { + $xadj2 = ($Tw - $Rw) / 2; + } + if ($Tw < $Rw) { + $xadj2 = ($Tw + $Rw) / 2; + } + } else { + $xadj2 = $Tw / 2 - $bsh / 2; + } + if (!$bSeparate && !empty($details['mbw']) && !empty($details['mbw']['TL'])) { + $xadj = ($Tw - $details['mbw']['TL']) / 2; + } + if (!$bSeparate && !empty($details['mbw']) && !empty($details['mbw']['TR'])) { + $xadj2 = ($Tw - $details['mbw']['TR']) / 2; + } + $print = true; + } + if ($Lw && $side == 'L' && $this->issetBorder($bord, Border::LEFT)) { // LEFT + $ly1 = $y; + $ly2 = $y2; + $lx1 = $x; + $lx2 = $x; + $this->SetLineWidth($Lw); + if ($cort == 'cell' || strpos($tablecorner, 'T') !== false) { + if ($Lw > $Tw) { + $yadj = ($Lw - $Tw) / 2; + } + if ($Lw < $Tw) { + $yadj = ($Lw + $Tw) / 2; + } + } else { + $yadj = $Lw / 2 - $bsv / 2; + } + if ($cort == 'cell' || strpos($tablecorner, 'B') !== false) { + if ($Lw > $Bw) { + $yadj2 = ($Lw - $Bw) / 2; + } + if ($Lw < $Bw) { + $yadj2 = ($Lw + $Bw) / 2; + } + } else { + $yadj2 = $Lw / 2 - $bsv / 2; + } + if (!$bSeparate && $details['mbw']['LT']) { + $yadj = ($Lw - $details['mbw']['LT']) / 2; + } + if (!$bSeparate && $details['mbw']['LB']) { + $yadj2 = ($Lw - $details['mbw']['LB']) / 2; + } + $print = true; + } + if ($Rw && $side == 'R' && $this->issetBorder($bord, Border::RIGHT)) { // RIGHT + $ly1 = $y; + $ly2 = $y2; + $lx1 = $x2; + $lx2 = $x2; + $this->SetLineWidth($Rw); + if ($cort == 'cell' || strpos($tablecorner, 'T') !== false) { + if ($Rw < $Tw) { + $yadj = ($Rw + $Tw) / 2; + } + if ($Rw > $Tw) { + $yadj = ($Rw - $Tw) / 2; + } + } else { + $yadj = $Rw / 2 - $bsv / 2; + } + + if ($cort == 'cell' || strpos($tablecorner, 'B') !== false) { + if ($Rw > $Bw) { + $yadj2 = ($Rw - $Bw) / 2; + } + if ($Rw < $Bw) { + $yadj2 = ($Rw + $Bw) / 2; + } + } else { + $yadj2 = $Rw / 2 - $bsv / 2; + } + + if (!$bSeparate && !empty($details['mbw']) && !empty($details['mbw']['RT'])) { + $yadj = ($Rw - $details['mbw']['RT']) / 2; + } + if (!$bSeparate && !empty($details['mbw']) && !empty($details['mbw']['RB'])) { + $yadj2 = ($Rw - $details['mbw']['RB']) / 2; + } + $print = true; + } + if ($Bw && $side == 'B' && $this->issetBorder($bord, Border::BOTTOM)) { // BOTTOM + $ly1 = $y2; + $ly2 = $y2; + $lx1 = $x; + $lx2 = $x2; + $this->SetLineWidth($Bw); + if ($cort == 'cell' || strpos($tablecorner, 'L') !== false) { + if ($Bw > $Lw) { + $xadj = ($Bw - $Lw) / 2; + } + if ($Bw < $Lw) { + $xadj = ($Bw + $Lw) / 2; + } + } else { + $xadj = $Bw / 2 - $bsh / 2; + } + if ($cort == 'cell' || strpos($tablecorner, 'R') !== false) { + if ($Bw > $Rw) { + $xadj2 = ($Bw - $Rw) / 2; + } + if ($Bw < $Rw) { + $xadj2 = ($Bw + $Rw) / 2; + } + } else { + $xadj2 = $Bw / 2 - $bsh / 2; + } + if (!$bSeparate && isset($details['mbw']) && isset($details['mbw']['BL'])) { + $xadj = ($Bw - $details['mbw']['BL']) / 2; + } + if (!$bSeparate && isset($details['mbw']) && isset($details['mbw']['BR'])) { + $xadj2 = ($Bw - $details['mbw']['BR']) / 2; + } + $print = true; + } + + // Now draw line + if ($print) { + /* -- TABLES-ADVANCED-BORDERS -- */ + if ($details[$side]['style'] == 'double') { + if (!isset($details[$side]['overlay']) || !$details[$side]['overlay'] || $bSeparate) { + if ($details[$side]['c']) { + $this->SetDColor($details[$side]['c']); + } else { + $this->SetDColor($this->colorConverter->convert(0, $this->PDFAXwarnings)); + } + $this->Line($lx1 + $xadj, $ly1 + $yadj, $lx2 - $xadj2, $ly2 - $yadj2); + } + if ((isset($details[$side]['overlay']) && $details[$side]['overlay']) || $bSeparate) { + if ($bSeparate && $cort == 'table') { + if ($side == 'T') { + $xadj -= $this->LineWidth / 2; + $xadj2 -= $this->LineWidth; + if ($this->issetBorder($bord, Border::LEFT)) { + $xadj += $this->LineWidth / 2; + } + if ($this->issetBorder($bord, Border::RIGHT)) { + $xadj2 += $this->LineWidth; + } + } + if ($side == 'L') { + $yadj -= $this->LineWidth / 2; + $yadj2 -= $this->LineWidth; + if ($this->issetBorder($bord, Border::TOP)) { + $yadj += $this->LineWidth / 2; + } + if ($this->issetBorder($bord, Border::BOTTOM)) { + $yadj2 += $this->LineWidth; + } + } + if ($side == 'B') { + $xadj -= $this->LineWidth / 2; + $xadj2 -= $this->LineWidth; + if ($this->issetBorder($bord, Border::LEFT)) { + $xadj += $this->LineWidth / 2; + } + if ($this->issetBorder($bord, Border::RIGHT)) { + $xadj2 += $this->LineWidth; + } + } + if ($side == 'R') { + $yadj -= $this->LineWidth / 2; + $yadj2 -= $this->LineWidth; + if ($this->issetBorder($bord, Border::TOP)) { + $yadj += $this->LineWidth / 2; + } + if ($this->issetBorder($bord, Border::BOTTOM)) { + $yadj2 += $this->LineWidth; + } + } + } + + $this->SetLineWidth($this->LineWidth / 3); + + $tbcol = $this->colorConverter->convert(255, $this->PDFAXwarnings); + for ($l = 0; $l <= $this->blklvl; $l++) { + if ($this->blk[$l]['bgcolor']) { + $tbcol = ($this->blk[$l]['bgcolorarray']); + } + } + + if ($bSeparate) { + $cellBorderOverlay[] = [ + 'x' => $lx1 + $xadj, + 'y' => $ly1 + $yadj, + 'x2' => $lx2 - $xadj2, + 'y2' => $ly2 - $yadj2, + 'col' => $tbcol, + 'lw' => $this->LineWidth, + ]; + } else { + $this->SetDColor($tbcol); + $this->Line($lx1 + $xadj, $ly1 + $yadj, $lx2 - $xadj2, $ly2 - $yadj2); + } + } + } elseif (isset($details[$side]['style']) && ($details[$side]['style'] == 'ridge' || $details[$side]['style'] == 'groove' || $details[$side]['style'] == 'inset' || $details[$side]['style'] == 'outset')) { + if (!isset($details[$side]['overlay']) || !$details[$side]['overlay'] || $bSeparate) { + if ($details[$side]['c']) { + $this->SetDColor($details[$side]['c']); + } else { + $this->SetDColor($this->colorConverter->convert(0, $this->PDFAXwarnings)); + } + if ($details[$side]['style'] == 'outset' || $details[$side]['style'] == 'groove') { + $nc = $this->colorConverter->darken($details[$side]['c']); + $this->SetDColor($nc); + } elseif ($details[$side]['style'] == 'ridge' || $details[$side]['style'] == 'inset') { + $nc = $this->colorConverter->lighten($details[$side]['c']); + $this->SetDColor($nc); + } + $this->Line($lx1 + $xadj, $ly1 + $yadj, $lx2 - $xadj2, $ly2 - $yadj2); + } + if ((isset($details[$side]['overlay']) && $details[$side]['overlay']) || $bSeparate) { + if ($details[$side]['c']) { + $this->SetDColor($details[$side]['c']); + } else { + $this->SetDColor($this->colorConverter->convert(0, $this->PDFAXwarnings)); + } + $doubleadj = ($this->LineWidth) / 3; + $this->SetLineWidth($this->LineWidth / 2); + $xadj3 = $yadj3 = $wadj3 = $hadj3 = 0; + + if ($details[$side]['style'] == 'ridge' || $details[$side]['style'] == 'inset') { + $nc = $this->colorConverter->darken($details[$side]['c']); + + if ($bSeparate && $cort == 'table') { + if ($side == 'T') { + $yadj3 = $this->LineWidth / 2; + $xadj3 = -$this->LineWidth / 2; + $wadj3 = $this->LineWidth; + if ($this->issetBorder($bord, Border::LEFT)) { + $xadj3 += $this->LineWidth; + $wadj3 -= $this->LineWidth; + } + if ($this->issetBorder($bord, Border::RIGHT)) { + $wadj3 -= $this->LineWidth * 2; + } + } + if ($side == 'L') { + $xadj3 = $this->LineWidth / 2; + $yadj3 = -$this->LineWidth / 2; + $hadj3 = $this->LineWidth; + if ($this->issetBorder($bord, Border::TOP)) { + $yadj3 += $this->LineWidth; + $hadj3 -= $this->LineWidth; + } + if ($this->issetBorder($bord, Border::BOTTOM)) { + $hadj3 -= $this->LineWidth * 2; + } + } + if ($side == 'B') { + $yadj3 = $this->LineWidth / 2; + $xadj3 = -$this->LineWidth / 2; + $wadj3 = $this->LineWidth; + } + if ($side == 'R') { + $xadj3 = $this->LineWidth / 2; + $yadj3 = -$this->LineWidth / 2; + $hadj3 = $this->LineWidth; + } + } elseif ($side == 'T') { + $yadj3 = $this->LineWidth / 2; + $xadj3 = $this->LineWidth / 2; + $wadj3 = -$this->LineWidth * 2; + } elseif ($side == 'L') { + $xadj3 = $this->LineWidth / 2; + $yadj3 = $this->LineWidth / 2; + $hadj3 = -$this->LineWidth * 2; + } elseif ($side == 'B' && $bSeparate) { + $yadj3 = $this->LineWidth / 2; + $wadj3 = $this->LineWidth / 2; + } elseif ($side == 'R' && $bSeparate) { + $xadj3 = $this->LineWidth / 2; + $hadj3 = $this->LineWidth / 2; + } elseif ($side == 'B') { + $yadj3 = $this->LineWidth / 2; + $xadj3 = $this->LineWidth / 2; + } elseif ($side == 'R') { + $xadj3 = $this->LineWidth / 2; + $yadj3 = $this->LineWidth / 2; + } + } else { + $nc = $this->colorConverter->lighten($details[$side]['c']); + + if ($bSeparate && $cort == 'table') { + if ($side == 'T') { + $yadj3 = $this->LineWidth / 2; + $xadj3 = -$this->LineWidth / 2; + $wadj3 = $this->LineWidth; + if ($this->issetBorder($bord, Border::LEFT)) { + $xadj3 += $this->LineWidth; + $wadj3 -= $this->LineWidth; + } + } + if ($side == 'L') { + $xadj3 = $this->LineWidth / 2; + $yadj3 = -$this->LineWidth / 2; + $hadj3 = $this->LineWidth; + if ($this->issetBorder($bord, Border::TOP)) { + $yadj3 += $this->LineWidth; + $hadj3 -= $this->LineWidth; + } + } + if ($side == 'B') { + $yadj3 = $this->LineWidth / 2; + $xadj3 = -$this->LineWidth / 2; + $wadj3 = $this->LineWidth; + if ($this->issetBorder($bord, Border::LEFT)) { + $xadj3 += $this->LineWidth; + $wadj3 -= $this->LineWidth; + } + } + if ($side == 'R') { + $xadj3 = $this->LineWidth / 2; + $yadj3 = -$this->LineWidth / 2; + $hadj3 = $this->LineWidth; + if ($this->issetBorder($bord, Border::TOP)) { + $yadj3 += $this->LineWidth; + $hadj3 -= $this->LineWidth; + } + } + } elseif ($side == 'T') { + $yadj3 = $this->LineWidth / 2; + $xadj3 = $this->LineWidth / 2; + } elseif ($side == 'L') { + $xadj3 = $this->LineWidth / 2; + $yadj3 = $this->LineWidth / 2; + } elseif ($side == 'B' && $bSeparate) { + $yadj3 = $this->LineWidth / 2; + $xadj3 = $this->LineWidth / 2; + } elseif ($side == 'R' && $bSeparate) { + $xadj3 = $this->LineWidth / 2; + $yadj3 = $this->LineWidth / 2; + } elseif ($side == 'B') { + $yadj3 = $this->LineWidth / 2; + $xadj3 = -$this->LineWidth / 2; + $wadj3 = $this->LineWidth; + } elseif ($side == 'R') { + $xadj3 = $this->LineWidth / 2; + $yadj3 = -$this->LineWidth / 2; + $hadj3 = $this->LineWidth; + } + } + + if ($bSeparate) { + $cellBorderOverlay[] = [ + 'x' => $lx1 + $xadj + $xadj3, + 'y' => $ly1 + $yadj + $yadj3, + 'x2' => $lx2 - $xadj2 + $xadj3 + $wadj3, + 'y2' => $ly2 - $yadj2 + $yadj3 + $hadj3, + 'col' => $nc, + 'lw' => $this->LineWidth, + ]; + } else { + $this->SetDColor($nc); + $this->Line($lx1 + $xadj + $xadj3, $ly1 + $yadj + $yadj3, $lx2 - $xadj2 + $xadj3 + $wadj3, $ly2 - $yadj2 + $yadj3 + $hadj3); + } + } + } else { + /* -- END TABLES-ADVANCED-BORDERS -- */ + if ($details[$side]['style'] == 'dashed') { + $dashsize = 2; // final dash will be this + 1*linewidth + $dashsizek = 1.5; // ratio of Dash/Blank + $this->SetDash($dashsize, ($dashsize / $dashsizek) + ($this->LineWidth * 2)); + } elseif ($details[$side]['style'] == 'dotted') { + $this->SetLineJoin(1); + $this->SetLineCap(1); + $this->SetDash(0.001, ($this->LineWidth * 2)); + } + if ($details[$side]['c']) { + $this->SetDColor($details[$side]['c']); + } else { + $this->SetDColor($this->colorConverter->convert(0, $this->PDFAXwarnings)); + } + $this->Line($lx1 + $xadj, $ly1 + $yadj, $lx2 - $xadj2, $ly2 - $yadj2); + /* -- TABLES-ADVANCED-BORDERS -- */ + } + /* -- END TABLES-ADVANCED-BORDERS -- */ + + // Reset Corners + $this->SetDash(); + // BUTT style line cap + $this->SetLineCap(2); + } + } + + if ($bSeparate && count($cellBorderOverlay)) { + foreach ($cellBorderOverlay as $cbo) { + $this->SetLineWidth($cbo['lw']); + $this->SetDColor($cbo['col']); + $this->Line($cbo['x'], $cbo['y'], $cbo['x2'], $cbo['y2']); + } + } + + // $this->SetLineWidth($oldlinewidth); + // $this->SetDColor($this->colorConverter->convert(0, $this->PDFAXwarnings)); + } + } + + /* -- TABLES -- */ + /* -- TABLES-ADVANCED-BORDERS -- */ + + /* -- END TABLES-ADVANCED-BORDERS -- */ + + function setBorder(&$var, $flag, $set = true) + { + $flag = intval($flag); + if ($set) { + $set = true; + } + $var = intval($var); + $var = $set ? ($var | $flag) : ($var & ~$flag); + } + + function issetBorder($var, $flag) + { + $flag = intval($flag); + $var = intval($var); + return (($var & $flag) == $flag); + } + + function _table2cellBorder(&$tableb, &$cbdb, &$cellb, $bval) + { + if ($tableb && $tableb['w'] > $cbdb['w']) { + $cbdb = $tableb; + $this->setBorder($cellb, $bval); + } elseif ($tableb && $tableb['w'] == $cbdb['w'] && array_search($tableb['style'], $this->borderstyles) > array_search($cbdb['style'], $this->borderstyles)) { + $cbdb = $tableb; + $this->setBorder($cellb, $bval); + } + } + + // FIX BORDERS ******************************************** + function _fixTableBorders(&$table) + { + if (!$table['borders_separate'] && $table['border_details']['L']['w']) { + $table['max_cell_border_width']['L'] = $table['border_details']['L']['w']; + } + if (!$table['borders_separate'] && $table['border_details']['R']['w']) { + $table['max_cell_border_width']['R'] = $table['border_details']['R']['w']; + } + if (!$table['borders_separate'] && $table['border_details']['T']['w']) { + $table['max_cell_border_width']['T'] = $table['border_details']['T']['w']; + } + if (!$table['borders_separate'] && $table['border_details']['B']['w']) { + $table['max_cell_border_width']['B'] = $table['border_details']['B']['w']; + } + if ($this->simpleTables) { + return; + } + $cells = &$table['cells']; + $numcols = $table['nc']; + $numrows = $table['nr']; + /* -- TABLES-ADVANCED-BORDERS -- */ + if (isset($table['topntail']) && $table['topntail']) { + $tntborddet = $this->border_details($table['topntail']); + } + if (isset($table['thead-underline']) && $table['thead-underline']) { + $thuborddet = $this->border_details($table['thead-underline']); + } + /* -- END TABLES-ADVANCED-BORDERS -- */ + + for ($i = 0; $i < $numrows; $i++) { // Rows + for ($j = 0; $j < $numcols; $j++) { // Columns + if (isset($cells[$i][$j]) && $cells[$i][$j]) { + $cell = &$cells[$i][$j]; + if ($this->packTableData) { + $cbord = $this->_unpackCellBorder($cell['borderbin']); + } else { + $cbord = &$cells[$i][$j]; + } + + // mPDF 5.7.3 + if (!$cbord['border'] && $cbord['border'] !== 0 && isset($table['border']) && $table['border'] && $this->table_border_attr_set) { + $cbord['border'] = $table['border']; + $cbord['border_details'] = $table['border_details']; + } + + if (isset($cell['colspan']) && $cell['colspan'] > 1) { + $ccolsp = $cell['colspan']; + } else { + $ccolsp = 1; + } + if (isset($cell['rowspan']) && $cell['rowspan'] > 1) { + $crowsp = $cell['rowspan']; + } else { + $crowsp = 1; + } + + $cbord['border_details']['cellposdom'] = ((($i + 1) / $numrows) / 10000 ) + ((($j + 1) / $numcols) / 10 ); + // Inherit Cell border from Table border + if ($this->table_border_css_set && !$table['borders_separate']) { + if ($i == 0) { + $this->_table2cellBorder($table['border_details']['T'], $cbord['border_details']['T'], $cbord['border'], Border::TOP); + } + if ($i == ($numrows - 1) || ($i + $crowsp) == ($numrows)) { + $this->_table2cellBorder($table['border_details']['B'], $cbord['border_details']['B'], $cbord['border'], Border::BOTTOM); + } + if ($j == 0) { + $this->_table2cellBorder($table['border_details']['L'], $cbord['border_details']['L'], $cbord['border'], Border::LEFT); + } + if ($j == ($numcols - 1) || ($j + $ccolsp) == ($numcols)) { + $this->_table2cellBorder($table['border_details']['R'], $cbord['border_details']['R'], $cbord['border'], Border::RIGHT); + } + } + + /* -- TABLES-ADVANCED-BORDERS -- */ + $fixbottom = true; + if (isset($table['topntail']) && $table['topntail']) { + if ($i == 0) { + $cbord['border_details']['T'] = $tntborddet; + $this->setBorder($cbord['border'], Border::TOP); + } + if ($this->tableLevel == 1 && $table['headernrows'] > 0 && $i == $table['headernrows'] - 1) { + $cbord['border_details']['B'] = $tntborddet; + $this->setBorder($cbord['border'], Border::BOTTOM); + $fixbottom = false; + } elseif ($this->tableLevel == 1 && $table['headernrows'] > 0 && $i == $table['headernrows']) { + if (!$table['borders_separate']) { + $cbord['border_details']['T'] = $tntborddet; + $this->setBorder($cbord['border'], Border::TOP); + } + } + if ($this->tableLevel == 1 && $table['footernrows'] > 0 && $i == ($numrows - $table['footernrows'] - 1)) { + if (!$table['borders_separate']) { + $cbord['border_details']['B'] = $tntborddet; + $this->setBorder($cbord['border'], Border::BOTTOM); + $fixbottom = false; + } + } elseif ($this->tableLevel == 1 && $table['footernrows'] > 0 && $i == ($numrows - $table['footernrows'])) { + $cbord['border_details']['T'] = $tntborddet; + $this->setBorder($cbord['border'], Border::TOP); + } + if ($this->tabletheadjustfinished) { // $this->tabletheadjustfinished called from tableheader + if (!$table['borders_separate']) { + $cbord['border_details']['T'] = $tntborddet; + $this->setBorder($cbord['border'], Border::TOP); + } + } + if ($i == ($numrows - 1) || ($i + $crowsp) == ($numrows)) { + $cbord['border_details']['B'] = $tntborddet; + $this->setBorder($cbord['border'], Border::BOTTOM); + } + } + if (isset($table['thead-underline']) && $table['thead-underline']) { + if ($table['borders_separate']) { + if ($i == 0) { + $cbord['border_details']['B'] = $thuborddet; + $this->setBorder($cbord['border'], Border::BOTTOM); + $fixbottom = false; + } + } else { + if ($this->tableLevel == 1 && $table['headernrows'] > 0 && $i == $table['headernrows'] - 1) { + $cbord['border_details']['T'] = $thuborddet; + $this->setBorder($cbord['border'], Border::TOP); + } elseif ($this->tabletheadjustfinished) { // $this->tabletheadjustfinished called from tableheader + $cbord['border_details']['T'] = $thuborddet; + $this->setBorder($cbord['border'], Border::TOP); + } + } + } + + // Collapse Border - Algorithm for conflicting borders + // Hidden >> Width >> double>solid>dashed>dotted... >> style set on cell>table >> top/left>bottom/right + // Do not turn off border which is overridden + // Needed for page break for TOP/BOTTOM both to be defined in Collapsed borders + // Means it is painted twice. (Left/Right can still disable overridden border) + if (!$table['borders_separate']) { + + if (($i < ($numrows - 1) || ($i + $crowsp) < $numrows ) && $fixbottom) { // Bottom + + for ($cspi = 0; $cspi < $ccolsp; $cspi++) { + + // already defined Top for adjacent cell below + if (isset($cells[($i + $crowsp)][$j + $cspi])) { + if ($this->packTableData) { + $adjc = $cells[($i + $crowsp)][$j + $cspi]; + $celladj = $this->_unpackCellBorder($adjc['borderbin']); + } else { + $celladj = & $cells[($i + $crowsp)][$j + $cspi]; + } + } else { + $celladj = false; + } + + if (isset($celladj['border_details']['T']['s']) && $celladj['border_details']['T']['s'] == 1) { + + $csadj = $celladj['border_details']['T']['w']; + $csthis = $cbord['border_details']['B']['w']; + + // Hidden + if ($cbord['border_details']['B']['style'] == 'hidden') { + + $celladj['border_details']['T'] = $cbord['border_details']['B']; + $this->setBorder($celladj['border'], Border::TOP, false); + $this->setBorder($cbord['border'], Border::BOTTOM, false); + + } elseif ($celladj['border_details']['T']['style'] == 'hidden') { + + $cbord['border_details']['B'] = $celladj['border_details']['T']; + $this->setBorder($cbord['border'], Border::BOTTOM, false); + $this->setBorder($celladj['border'], Border::TOP, false); + + } elseif ($csthis > $csadj) { // Width + + if (!isset($cells[($i + $crowsp)][$j + $cspi]['colspan']) || (isset($cells[($i + $crowsp)][$j + $cspi]['colspan']) && $cells[($i + $crowsp)][$j + $cspi]['colspan'] < 2)) { // don't overwrite bordering cells that span + $celladj['border_details']['T'] = $cbord['border_details']['B']; + $this->setBorder($cbord['border'], Border::BOTTOM); + } + + } elseif ($csadj > $csthis) { + + if ($ccolsp < 2) { // don't overwrite this cell if it spans + $cbord['border_details']['B'] = $celladj['border_details']['T']; + $this->setBorder($celladj['border'], Border::TOP); + } + + } elseif (array_search($cbord['border_details']['B']['style'], $this->borderstyles) > array_search($celladj['border_details']['T']['style'], $this->borderstyles)) { // double>solid>dashed>dotted... + + if (!isset($cells[($i + $crowsp)][$j + $cspi]['colspan']) || (isset($cells[($i + $crowsp)][$j + $cspi]['colspan']) && $cells[($i + $crowsp)][$j + $cspi]['colspan'] < 2)) { // don't overwrite bordering cells that span + $celladj['border_details']['T'] = $cbord['border_details']['B']; + $this->setBorder($cbord['border'], Border::BOTTOM); + } + + } elseif (array_search($celladj['border_details']['T']['style'], $this->borderstyles) > array_search($cbord['border_details']['B']['style'], $this->borderstyles)) { + + if ($ccolsp < 2) { // don't overwrite this cell if it spans + $cbord['border_details']['B'] = $celladj['border_details']['T']; + $this->setBorder($celladj['border'], Border::TOP); + } + + } elseif ($celladj['border_details']['T']['dom'] > $celladj['border_details']['B']['dom']) { // Style set on cell vs. table + + if ($ccolsp < 2) { // don't overwrite this cell if it spans + $cbord['border_details']['B'] = $celladj['border_details']['T']; + $this->setBorder($celladj['border'], Border::TOP); + } + + } else { // Style set on cell vs. table - OR - LEFT/TOP (cell) in preference to BOTTOM/RIGHT + + if (!isset($cells[($i + $crowsp)][$j + $cspi]['colspan']) || (isset($cells[($i + $crowsp)][$j + $cspi]['colspan']) && $cells[($i + $crowsp)][$j + $cspi]['colspan'] < 2)) { // don't overwrite bordering cells that span + $celladj['border_details']['T'] = $cbord['border_details']['B']; + $this->setBorder($cbord['border'], Border::BOTTOM); + } + + } + + } elseif ($celladj) { + + if (!isset($cells[($i + $crowsp)][$j + $cspi]['colspan']) || (isset($cells[($i + $crowsp)][$j + $cspi]['colspan']) && $cells[($i + $crowsp)][$j + $cspi]['colspan'] < 2)) { // don't overwrite bordering cells that span + $celladj['border_details']['T'] = $cbord['border_details']['B']; + } + + } + + // mPDF 5.7.4 + if ($celladj && $this->packTableData) { + $cells[$i + $crowsp][$j + $cspi]['borderbin'] = $this->_packCellBorder($celladj); + } + + unset($celladj); + } + } + + if ($j < ($numcols - 1) || ($j + $ccolsp) < $numcols) { // Right-Left + + for ($cspi = 0; $cspi < $crowsp; $cspi++) { + + // already defined Left for adjacent cell to R + if (isset($cells[($i + $cspi)][$j + $ccolsp])) { + if ($this->packTableData) { + $adjc = $cells[($i + $cspi)][$j + $ccolsp]; + $celladj = $this->_unpackCellBorder($adjc['borderbin']); + } else { + $celladj = & $cells[$i + $cspi][$j + $ccolsp]; + } + } else { + $celladj = false; + } + if ($celladj && $celladj['border_details']['L']['s'] == 1) { + $csadj = $celladj['border_details']['L']['w']; + $csthis = $cbord['border_details']['R']['w']; + // Hidden + if ($cbord['border_details']['R']['style'] == 'hidden') { + $celladj['border_details']['L'] = $cbord['border_details']['R']; + $this->setBorder($celladj['border'], Border::LEFT, false); + $this->setBorder($cbord['border'], Border::RIGHT, false); + } elseif ($celladj['border_details']['L']['style'] == 'hidden') { + $cbord['border_details']['R'] = $celladj['border_details']['L']; + $this->setBorder($cbord['border'], Border::RIGHT, false); + $this->setBorder($celladj['border'], Border::LEFT, false); + } // Width + elseif ($csthis > $csadj) { + if (!isset($cells[($i + $cspi)][$j + $ccolsp]['rowspan']) || (isset($cells[($i + $cspi)][$j + $ccolsp]['rowspan']) && $cells[($i + $cspi)][$j + $ccolsp]['rowspan'] < 2)) { // don't overwrite bordering cells that span + $celladj['border_details']['L'] = $cbord['border_details']['R']; + $this->setBorder($cbord['border'], Border::RIGHT); + $this->setBorder($celladj['border'], Border::LEFT, false); + } + } elseif ($csadj > $csthis) { + if ($crowsp < 2) { // don't overwrite this cell if it spans + $cbord['border_details']['R'] = $celladj['border_details']['L']; + $this->setBorder($cbord['border'], Border::RIGHT, false); + $this->setBorder($celladj['border'], Border::LEFT); + } + } // double>solid>dashed>dotted... + elseif (array_search($cbord['border_details']['R']['style'], $this->borderstyles) > array_search($celladj['border_details']['L']['style'], $this->borderstyles)) { + if (!isset($cells[($i + $cspi)][$j + $ccolsp]['rowspan']) || (isset($cells[($i + $cspi)][$j + $ccolsp]['rowspan']) && $cells[($i + $cspi)][$j + $ccolsp]['rowspan'] < 2)) { // don't overwrite bordering cells that span + $celladj['border_details']['L'] = $cbord['border_details']['R']; + $this->setBorder($celladj['border'], Border::LEFT, false); + $this->setBorder($cbord['border'], Border::RIGHT); + } + } elseif (array_search($celladj['border_details']['L']['style'], $this->borderstyles) > array_search($cbord['border_details']['R']['style'], $this->borderstyles)) { + if ($crowsp < 2) { // don't overwrite this cell if it spans + $cbord['border_details']['R'] = $celladj['border_details']['L']; + $this->setBorder($cbord['border'], Border::RIGHT, false); + $this->setBorder($celladj['border'], Border::LEFT); + } + } // Style set on cell vs. table + elseif ($celladj['border_details']['L']['dom'] > $cbord['border_details']['R']['dom']) { + if ($crowsp < 2) { // don't overwrite this cell if it spans + $cbord['border_details']['R'] = $celladj['border_details']['L']; + $this->setBorder($celladj['border'], Border::LEFT); + } + } // Style set on cell vs. table - OR - LEFT/TOP (cell) in preference to BOTTOM/RIGHT + else { + if (!isset($cells[($i + $cspi)][$j + $ccolsp]['rowspan']) || (isset($cells[($i + $cspi)][$j + $ccolsp]['rowspan']) && $cells[($i + $cspi)][$j + $ccolsp]['rowspan'] < 2)) { // don't overwrite bordering cells that span + $celladj['border_details']['L'] = $cbord['border_details']['R']; + $this->setBorder($cbord['border'], Border::RIGHT); + } + } + } elseif ($celladj) { + // if right-cell border is not set + if (!isset($cells[($i + $cspi)][$j + $ccolsp]['rowspan']) || (isset($cells[($i + $cspi)][$j + $ccolsp]['rowspan']) && $cells[($i + $cspi)][$j + $ccolsp]['rowspan'] < 2)) { // don't overwrite bordering cells that span + $celladj['border_details']['L'] = $cbord['border_details']['R']; + } + } + // mPDF 5.7.4 + if ($celladj && $this->packTableData) { + $cells[$i + $cspi][$j + $ccolsp]['borderbin'] = $this->_packCellBorder($celladj); + } + unset($celladj); + } + } + } + + + // Set maximum cell border width meeting at LRTB edges of cell - used for extended cell border + // ['border_details']['mbw']['LT'] = meeting border width - Left border - Top end + if (!$table['borders_separate']) { + + $cbord['border_details']['mbw']['BL'] = max($cbord['border_details']['mbw']['BL'], $cbord['border_details']['L']['w']); + $cbord['border_details']['mbw']['BR'] = max($cbord['border_details']['mbw']['BR'], $cbord['border_details']['R']['w']); + $cbord['border_details']['mbw']['RT'] = max($cbord['border_details']['mbw']['RT'], $cbord['border_details']['T']['w']); + $cbord['border_details']['mbw']['RB'] = max($cbord['border_details']['mbw']['RB'], $cbord['border_details']['B']['w']); + $cbord['border_details']['mbw']['TL'] = max($cbord['border_details']['mbw']['TL'], $cbord['border_details']['L']['w']); + $cbord['border_details']['mbw']['TR'] = max($cbord['border_details']['mbw']['TR'], $cbord['border_details']['R']['w']); + $cbord['border_details']['mbw']['LT'] = max($cbord['border_details']['mbw']['LT'], $cbord['border_details']['T']['w']); + $cbord['border_details']['mbw']['LB'] = max($cbord['border_details']['mbw']['LB'], $cbord['border_details']['B']['w']); + + if (($i + $crowsp) < $numrows && isset($cells[$i + $crowsp][$j])) { // Has Bottom adjoining cell + + if ($this->packTableData) { + $adjc = $cells[$i + $crowsp][$j]; + $celladj = $this->_unpackCellBorder($adjc['borderbin']); + } else { + $celladj = & $cells[$i + $crowsp][$j]; + } + + $cbord['border_details']['mbw']['BL'] = max( + $cbord['border_details']['mbw']['BL'], + $celladj ? $celladj['border_details']['L']['w'] : 0, + $celladj ? $celladj['border_details']['mbw']['TL']: 0 + ); + + $cbord['border_details']['mbw']['BR'] = max( + $cbord['border_details']['mbw']['BR'], + $celladj ? $celladj['border_details']['R']['w'] : 0, + $celladj ? $celladj['border_details']['mbw']['TR']: 0 + ); + + $cbord['border_details']['mbw']['LB'] = max( + $cbord['border_details']['mbw']['LB'], + $celladj ? $celladj['border_details']['mbw']['LT'] : 0 + ); + + $cbord['border_details']['mbw']['RB'] = max( + $cbord['border_details']['mbw']['RB'], + $celladj ? $celladj['border_details']['mbw']['RT'] : 0 + ); + + unset($celladj); + } + + if (($j + $ccolsp) < $numcols && isset($cells[$i][$j + $ccolsp])) { // Has Right adjoining cell + + if ($this->packTableData) { + $adjc = $cells[$i][$j + $ccolsp]; + $celladj = $this->_unpackCellBorder($adjc['borderbin']); + } else { + $celladj = & $cells[$i][$j + $ccolsp]; + } + + $cbord['border_details']['mbw']['RT'] = max( + $cbord['border_details']['mbw']['RT'], + $celladj ? $celladj['border_details']['T']['w'] : 0, + $celladj ? $celladj['border_details']['mbw']['LT'] : 0 + ); + + $cbord['border_details']['mbw']['RB'] = max( + $cbord['border_details']['mbw']['RB'], + $celladj ? $celladj['border_details']['B']['w'] : 0, + $celladj ? $celladj['border_details']['mbw']['LB'] : 0 + ); + + $cbord['border_details']['mbw']['TR'] = max( + $cbord['border_details']['mbw']['TR'], + $celladj ? $celladj['border_details']['mbw']['TL'] : 0 + ); + + $cbord['border_details']['mbw']['BR'] = max( + $cbord['border_details']['mbw']['BR'], + $celladj ? $celladj['border_details']['mbw']['BL'] : 0 + ); + + unset($celladj); + } + + if ($i > 0 && isset($cells[$i - 1][$j]) && is_array($cells[$i - 1][$j]) && (($this->packTableData && $cells[$i - 1][$j]['borderbin']) || $cells[$i - 1][$j]['border'])) { // Has Top adjoining cell + + if ($this->packTableData) { + $adjc = $cells[$i - 1][$j]; + $celladj = $this->_unpackCellBorder($adjc['borderbin']); + } else { + $celladj = & $cells[$i - 1][$j]; + } + + $cbord['border_details']['mbw']['TL'] = max( + $cbord['border_details']['mbw']['TL'], + $celladj ? $celladj['border_details']['L']['w'] : 0, + $celladj ? $celladj['border_details']['mbw']['BL'] : 0 + ); + + $cbord['border_details']['mbw']['TR'] = max( + $cbord['border_details']['mbw']['TR'], + $celladj ? $celladj['border_details']['R']['w'] : 0, + $celladj ? $celladj['border_details']['mbw']['BR'] : 0 + ); + + $cbord['border_details']['mbw']['LT'] = max( + $cbord['border_details']['mbw']['LT'], + $celladj ? $celladj['border_details']['mbw']['LB'] : 0 + ); + + $cbord['border_details']['mbw']['RT'] = max( + $cbord['border_details']['mbw']['RT'], + $celladj ? $celladj['border_details']['mbw']['RB'] : 0 + ); + + if ($celladj['border_details']['mbw']['BL']) { + $celladj['border_details']['mbw']['BL'] = max($cbord['border_details']['mbw']['TL'], $celladj['border_details']['mbw']['BL']); + } + + if ($celladj['border_details']['mbw']['BR']) { + $celladj['border_details']['mbw']['BR'] = max($celladj['border_details']['mbw']['BR'], $cbord['border_details']['mbw']['TR']); + } + + if ($this->packTableData) { + $cells[$i - 1][$j]['borderbin'] = $this->_packCellBorder($celladj); + } + unset($celladj); + } + + if ($j > 0 && isset($cells[$i][$j - 1]) && is_array($cells[$i][$j - 1]) && (($this->packTableData && $cells[$i][$j - 1]['borderbin']) || $cells[$i][$j - 1]['border'])) { // Has Left adjoining cell + + if ($this->packTableData) { + $adjc = $cells[$i][$j - 1]; + $celladj = $this->_unpackCellBorder($adjc['borderbin']); + } else { + $celladj = & $cells[$i][$j - 1]; + } + + $cbord['border_details']['mbw']['LT'] = max( + $cbord['border_details']['mbw']['LT'], + $celladj ? $celladj['border_details']['T']['w'] : 0, + $celladj ? $celladj['border_details']['mbw']['RT'] : 0 + ); + + $cbord['border_details']['mbw']['LB'] = max( + $cbord['border_details']['mbw']['LB'], + $celladj ? $celladj['border_details']['B']['w'] : 0, + $celladj ? $celladj['border_details']['mbw']['RB'] : 0 + ); + + $cbord['border_details']['mbw']['BL'] = max( + $cbord['border_details']['mbw']['BL'], + $celladj ? $celladj['border_details']['mbw']['BR'] : 0 + ); + + $cbord['border_details']['mbw']['TL'] = max( + $cbord['border_details']['mbw']['TL'], + $celladj ? $celladj['border_details']['mbw']['TR'] : 0 + ); + + if ($celladj['border_details']['mbw']['RT']) { + $celladj['border_details']['mbw']['RT'] = max($celladj['border_details']['mbw']['RT'], $cbord['border_details']['mbw']['LT']); + } + + if ($celladj['border_details']['mbw']['RB']) { + $celladj['border_details']['mbw']['RB'] = max($celladj['border_details']['mbw']['RB'], $cbord['border_details']['mbw']['LB']); + } + + if ($this->packTableData) { + $cells[$i][$j - 1]['borderbin'] = $this->_packCellBorder($celladj); + } + + unset($celladj); + } + + + // Update maximum cell border width at LRTB edges of table - used for overall table width + if ($j == 0 && $cbord['border_details']['L']['w']) { + $table['max_cell_border_width']['L'] = max($table['max_cell_border_width']['L'], $cbord['border_details']['L']['w']); + } + if (($j == ($numcols - 1) || ($j + $ccolsp) == $numcols ) && $cbord['border_details']['R']['w']) { + $table['max_cell_border_width']['R'] = max($table['max_cell_border_width']['R'], $cbord['border_details']['R']['w']); + } + if ($i == 0 && $cbord['border_details']['T']['w']) { + $table['max_cell_border_width']['T'] = max($table['max_cell_border_width']['T'], $cbord['border_details']['T']['w']); + } + if (($i == ($numrows - 1) || ($i + $crowsp) == $numrows ) && $cbord['border_details']['B']['w']) { + $table['max_cell_border_width']['B'] = max($table['max_cell_border_width']['B'], $cbord['border_details']['B']['w']); + } + } + /* -- END TABLES-ADVANCED-BORDERS -- */ + + if ($this->packTableData) { + $cell['borderbin'] = $this->_packCellBorder($cbord); + } + + unset($cbord); + + unset($cell); + } + } + } + unset($cell); + } + + // END FIX BORDERS ************************************************************************************ + + function _reverseTableDir(&$table) + { + $cells = &$table['cells']; + $numcols = $table['nc']; + $numrows = $table['nr']; + for ($i = 0; $i < $numrows; $i++) { // Rows + $row = []; + for ($j = ($numcols - 1); $j >= 0; $j--) { // Columns + if (isset($cells[$i][$j]) && $cells[$i][$j]) { + $cell = &$cells[$i][$j]; + $col = $numcols - $j - 1; + if (isset($cell['colspan']) && $cell['colspan'] > 1) { + $col -= ($cell['colspan'] - 1); + } + // Nested content + if (isset($cell['textbuffer'])) { + for ($n = 0; $n < count($cell['textbuffer']); $n++) { + $t = $cell['textbuffer'][$n][0]; + if (substr($t, 0, 19) == "\xbb\xa4\xactype=nestedtable") { + $objattr = $this->_getObjAttr($t); + $objattr['col'] = $col; + $cell['textbuffer'][$n][0] = "\xbb\xa4\xactype=nestedtable,objattr=" . serialize($objattr) . "\xbb\xa4\xac"; + $this->table[($this->tableLevel + 1)][$objattr['nestedcontent']]['nestedpos'][1] = $col; + } + } + } + $row[$col] = $cells[$i][$j]; + unset($cell); + } + } + for ($f = 0; $f < $numcols; $f++) { + if (!isset($row[$f])) { + $row[$f] = 0; + } + } + $table['cells'][$i] = $row; + } + } + + function _tableWrite(&$table, $split = false, $startrow = 0, $startcol = 0, $splitpg = 0, $rety = 0) + { + $level = $table['level']; + $levelid = $table['levelid']; + + $cells = &$table['cells']; + $numcols = $table['nc']; + $numrows = $table['nr']; + $maxbwtop = 0; + if ($this->ColActive && $level == 1) { + $this->breakpoints[$this->CurrCol][] = $this->y; + } // *COLUMNS* + + if (!$split || ($startrow == 0 && $splitpg == 0) || $startrow > 0) { + // TABLE TOP MARGIN + if ($table['margin']['T']) { + if (!$this->table_rotate && $level == 1) { + $this->DivLn($table['margin']['T'], $this->blklvl, true, 1); // collapsible + } else { + $this->y += ($table['margin']['T']); + } + } + // Advance down page by half width of top border + if ($table['borders_separate']) { + if ($startrow > 0 && (!isset($table['is_thead']) || count($table['is_thead']) == 0)) { + $adv = $table['border_spacing_V'] / 2; + } else { + $adv = $table['padding']['T'] + $table['border_details']['T']['w'] + $table['border_spacing_V'] / 2; + } + } else { + $adv = $table['max_cell_border_width']['T'] / 2; + } + if (!$this->table_rotate && $level == 1) { + $this->DivLn($adv); + } else { + $this->y += $adv; + } + } + + if ($level == 1) { + $this->x = $this->lMargin + $this->blk[$this->blklvl]['outer_left_margin'] + $this->blk[$this->blklvl]['padding_left'] + $this->blk[$this->blklvl]['border_left']['w']; + $x0 = $this->x; + $y0 = $this->y; + $right = $x0 + $this->blk[$this->blklvl]['inner_width']; + $outerfilled = $this->y; // Keep track of how far down the outer DIV bgcolor is painted (NB rowspans) + $this->outerfilled = $this->y; + $this->colsums = []; + } else { + $x0 = $this->x; + $y0 = $this->y; + $right = $x0 + $table['w']; + } + + if ($this->table_rotate) { + $temppgwidth = $this->tbrot_maxw; + $this->PageBreakTrigger = $pagetrigger = $y0 + ($this->blk[$this->blklvl]['inner_width']); + if ($level == 1) { + $this->tbrot_y0 = $this->y - $adv - $table['margin']['T']; + $this->tbrot_x0 = $this->x; + $this->tbrot_w = $table['w']; + if ($table['borders_separate']) { + $this->tbrot_h = $table['margin']['T'] + $table['padding']['T'] + $table['border_details']['T']['w'] + $table['border_spacing_V'] / 2; + } else { + $this->tbrot_h = $table['margin']['T'] + $table['padding']['T'] + $table['max_cell_border_width']['T']; + } + } + } else { + $this->PageBreakTrigger = $pagetrigger = ($this->h - $this->bMargin); + if ($level == 1) { + $temppgwidth = $this->blk[$this->blklvl]['inner_width']; + if (isset($table['a']) and ( $table['w'] < $this->blk[$this->blklvl]['inner_width'])) { + if ($table['a'] == 'C') { + $x0 += ((($right - $x0) - $table['w']) / 2); + } elseif ($table['a'] == 'R') { + $x0 = $right - $table['w']; + } + } + } else { + $temppgwidth = $table['w']; + } + } + if (!isset($table['overflow'])) { + $table['overflow'] = null; + } + if ($table['overflow'] == 'hidden' && $level == 1 && !$this->table_rotate && !$this->ColActive) { + // Bounding rectangle to clip + $this->tableClipPath = sprintf('q %.3F %.3F %.3F %.3F re W n', $x0 * Mpdf::SCALE, $this->h * Mpdf::SCALE, $this->blk[$this->blklvl]['inner_width'] * Mpdf::SCALE, -$this->h * Mpdf::SCALE); + $this->writer->write($this->tableClipPath); + } else { + $this->tableClipPath = ''; + } + + + if ($table['borders_separate']) { + $indent = $table['margin']['L'] + $table['border_details']['L']['w'] + $table['padding']['L'] + $table['border_spacing_H'] / 2; + } else { + $indent = $table['margin']['L'] + $table['max_cell_border_width']['L'] / 2; + } + $x0 += $indent; + + $returny = 0; + $lastCol = 0; + $tableheader = []; + $tablefooter = []; + $tableheaderrowheight = 0; + $tablefooterrowheight = 0; + $footery = 0; + + // mPD 3.0 Set the Page & Column where table starts + if (($this->mirrorMargins) && (($this->page) % 2 == 0)) { // EVEN + $tablestartpage = 'EVEN'; + } elseif (($this->mirrorMargins) && (($this->page) % 2 == 1)) { // ODD + $tablestartpage = 'ODD'; + } else { + $tablestartpage = ''; + } + if ($this->ColActive) { + $tablestartcolumn = $this->CurrCol; + } else { + $tablestartcolumn = ''; + } + + $y = $h = 0; + for ($i = 0; $i < $numrows; $i++) { // Rows + if (isset($table['is_tfoot'][$i]) && $table['is_tfoot'][$i] && $level == 1) { + $tablefooterrowheight += $table['hr'][$i]; + $tablefooter[$i][0]['trbackground-images'] = $table['trbackground-images'][$i]; + $tablefooter[$i][0]['trgradients'] = $table['trgradients'][$i]; + $tablefooter[$i][0]['trbgcolor'] = $table['bgcolor'][$i]; + for ($j = $startcol; $j < $numcols; $j++) { // Columns + if (isset($cells[$i][$j]) && $cells[$i][$j]) { + $cell = &$cells[$i][$j]; + if ($split) { + if ($table['colPg'][$j] != $splitpg) { + continue; + } + list($x, $w) = $this->_splitTableGetWidth($table, $i, $j); + $js = $j - $startcol; + } else { + list($x, $w) = $this->_tableGetWidth($table, $i, $j); + $js = $j; + } + + list($y, $h) = $this->_tableGetHeight($table, $i, $j); + $x += $x0; + $y += $y0; + // Get info of tfoot ==>> table footer + $tablefooter[$i][$js]['x'] = $x; + $tablefooter[$i][$js]['y'] = $y; + $tablefooter[$i][$js]['h'] = $h; + $tablefooter[$i][$js]['w'] = $w; + if (isset($cell['textbuffer'])) { + $tablefooter[$i][$js]['textbuffer'] = $cell['textbuffer']; + } else { + $tablefooter[$i][$js]['textbuffer'] = ''; + } + $tablefooter[$i][$js]['a'] = $cell['a']; + $tablefooter[$i][$js]['R'] = $cell['R']; + $tablefooter[$i][$js]['va'] = $cell['va']; + $tablefooter[$i][$js]['mih'] = $cell['mih']; + if (isset($cell['gradient'])) { + $tablefooter[$i][$js]['gradient'] = $cell['gradient']; // *BACKGROUNDS* + } + if (isset($cell['background-image'])) { + $tablefooter[$i][$js]['background-image'] = $cell['background-image']; // *BACKGROUNDS* + } + + // CELL FILL BGCOLOR + if (!$this->simpleTables) { + if ($this->packTableData) { + $c = $this->_unpackCellBorder($cell['borderbin']); + $tablefooter[$i][$js]['border'] = $c['border']; + $tablefooter[$i][$js]['border_details'] = $c['border_details']; + } else { + $tablefooter[$i][$js]['border'] = $cell['border']; + $tablefooter[$i][$js]['border_details'] = $cell['border_details']; + } + } elseif ($this->simpleTables) { + $tablefooter[$i][$js]['border'] = $table['simple']['border']; + $tablefooter[$i][$js]['border_details'] = $table['simple']['border_details']; + } + $tablefooter[$i][$js]['bgcolor'] = $cell['bgcolor']; + $tablefooter[$i][$js]['padding'] = $cell['padding']; + if (isset($cell['rowspan'])) { + $tablefooter[$i][$js]['rowspan'] = $cell['rowspan']; + } + if (isset($cell['colspan'])) { + $tablefooter[$i][$js]['colspan'] = $cell['colspan']; + } + if (isset($cell['direction'])) { + $tablefooter[$i][$js]['direction'] = $cell['direction']; + } + if (isset($cell['cellLineHeight'])) { + $tablefooter[$i][$js]['cellLineHeight'] = $cell['cellLineHeight']; + } + if (isset($cell['cellLineStackingStrategy'])) { + $tablefooter[$i][$js]['cellLineStackingStrategy'] = $cell['cellLineStackingStrategy']; + } + if (isset($cell['cellLineStackingShift'])) { + $tablefooter[$i][$js]['cellLineStackingShift'] = $cell['cellLineStackingShift']; + } + } + } + } + } + + if ($level == 1) { + $this->writer->write('___TABLE___BACKGROUNDS' . $this->uniqstr); + } + $tableheaderadj = 0; + $tablefooteradj = 0; + + $tablestartpageno = $this->page; + + // Draw Table Contents and Borders + for ($i = 0; $i < $numrows; $i++) { // Rows + if ($split && $startrow > 0) { + $thnr = (isset($table['is_thead']) ? count($table['is_thead']) : 0); + if ($i >= $thnr && $i < $startrow) { + continue; + } + if ($i == $startrow) { + $returny = $rety - $tableheaderrowheight; + } + } + + // Get Maximum row/cell height in row - including rowspan>1 + 1 overlapping + $maxrowheight = $this->_tableGetMaxRowHeight($table, $i); + + $skippage = false; + $newpagestarted = false; + for ($j = $startcol; $j < $numcols; $j++) { // Columns + if ($split) { + if ($table['colPg'][$j] > $splitpg) { + break; + } + $lastCol = $j; + } + if (isset($cells[$i][$j]) && $cells[$i][$j]) { + $cell = &$cells[$i][$j]; + if ($split) { + $lastCol = $j + (isset($cell['colspan']) ? ($cell['colspan'] - 1) : 0); + list($x, $w) = $this->_splitTableGetWidth($table, $i, $j); + } else { + list($x, $w) = $this->_tableGetWidth($table, $i, $j); + } + + list($y, $h) = $this->_tableGetHeight($table, $i, $j); + $x += $x0; + $y += $y0; + $y -= $returny; + + if ($table['borders_separate']) { + if (!empty($tablefooter) || $i == ($numrows - 1) || (isset($cell['rowspan']) && ($i + $cell['rowspan']) == $numrows) || (!isset($cell['rowspan']) && ($i + 1) == $numrows)) { + $extra = $table['padding']['B'] + $table['border_details']['B']['w'] + $table['border_spacing_V'] / 2; + // $extra = $table['margin']['B'] + $table['padding']['B'] + $table['border_details']['B']['w'] + $table['border_spacing_V']/2; + } else { + $extra = $table['border_spacing_V'] / 2; + } + } else { + $extra = $table['max_cell_border_width']['B'] / 2; + } + + if ($j == $startcol && ((($y + $maxrowheight + $extra ) > ($pagetrigger + 0.001)) || (($this->keepColumns || !$this->ColActive) && !empty($tablefooter) && ($y + $maxrowheight + $tablefooterrowheight + $extra) > $pagetrigger) && ($this->tableLevel == 1 && $i < ($numrows - $table['headernrows']))) && ($y0 > 0 || $x0 > 0) && !$this->InFooter && $this->autoPageBreak) { + if (!$skippage) { + $finalSpread = true; + $firstSpread = true; + if ($split) { + for ($t = $startcol; $t < $numcols; $t++) { + // Are there more columns to print on a next page? + if ($table['colPg'][$t] > $splitpg) { + $finalSpread = false; + break; + } + } + if ($startcol > 0) { + $firstSpread = false; + } + } + + if (($this->keepColumns || !$this->ColActive) && !empty($tablefooter) && $i > 0) { + $this->y = $y; + $ya = $this->y; + $this->TableHeaderFooter($tablefooter, $tablestartpage, $tablestartcolumn, 'F', $level, $firstSpread, $finalSpread); + if ($this->table_rotate) { + $this->tbrot_h += $this->y - $ya; + } + $tablefooteradj = $this->y - $ya; + } + $y -= $y0; + $returny += $y; + + $oldcolumn = $this->CurrCol; + if ($this->AcceptPageBreak()) { + $newpagestarted = true; + $this->y = $y + $y0; + + // Move down to account for border-spacing or + // extra half border width in case page breaks in middle + if ($i > 0 && !$this->table_rotate && $level == 1 && !$this->ColActive) { + if ($table['borders_separate']) { + $adv = $table['border_spacing_V'] / 2; + // If table footer + if (($this->keepColumns || !$this->ColActive) && !empty($tablefooter) && $i > 0) { + $adv += ($table['padding']['B'] + $table['border_details']['B']['w']); + } + } else { + $maxbwtop = 0; + $maxbwbottom = 0; + if (!$this->simpleTables) { + if (!empty($tablefooter)) { + $maxbwbottom = $table['max_cell_border_width']['B']; + } else { + $brow = $i - 1; + for ($ctj = 0; $ctj < $numcols; $ctj++) { + if (isset($cells[$brow][$ctj]) && $cells[$brow][$ctj]) { + if ($this->packTableData) { + list($bt, $br, $bb, $bl) = $this->_getBorderWidths($cells[$brow][$ctj]['borderbin']); + } else { + $bb = $cells[$brow][$ctj]['border_details']['B']['w']; + } + $maxbwbottom = max($maxbwbottom, $bb); + } + } + } + if (!empty($tableheader)) { + $maxbwtop = $table['max_cell_border_width']['T']; + } else { + $trow = $i - 1; + for ($ctj = 0; $ctj < $numcols; $ctj++) { + if (isset($cells[$trow][$ctj]) && $cells[$trow][$ctj]) { + if ($this->packTableData) { + list($bt, $br, $bb, $bl) = $this->_getBorderWidths($cells[$trow][$ctj]['borderbin']); + } else { + $bt = $cells[$trow][$ctj]['border_details']['T']['w']; + } + $maxbwtop = max($maxbwtop, $bt); + } + } + } + } elseif ($this->simpleTables) { + $maxbwtop = $table['simple']['border_details']['T']['w']; + $maxbwbottom = $table['simple']['border_details']['B']['w']; + } + $adv = $maxbwbottom / 2; + } + $this->y += $adv; + } + + // Rotated table split over pages - needs this->y for borders/backgrounds + if ($i > 0 && $this->table_rotate && $level == 1) { + // $this->y = $y0 + $this->tbrot_w; + } + + if ($this->tableClipPath) { + $this->writer->write("Q"); + } + + $bx = $x0; + $by = $y0; + + if ($table['borders_separate']) { + $bx -= ($table['padding']['L'] + $table['border_details']['L']['w'] + $table['border_spacing_H'] / 2); + if ($tablestartpageno != $this->page) { // IF already broken across a previous pagebreak + $by += $table['max_cell_border_width']['T'] / 2; + if (empty($tableheader)) { + $by -= ($table['border_spacing_V'] / 2); + } + } else { + $by -= ($table['padding']['T'] + $table['border_details']['T']['w'] + $table['border_spacing_V'] / 2); + } + } elseif ($tablestartpageno != $this->page && !empty($tableheader)) { + $by += $maxbwtop / 2; + } + + $by -= $tableheaderadj; + $bh = $this->y - $by + $tablefooteradj; + if (!$table['borders_separate']) { + $bh -= $adv; + } + if ($split) { + $bw = 0; + for ($t = $startcol; $t < $numcols; $t++) { + if ($table['colPg'][$t] == $splitpg) { + $bw += $table['wc'][$t]; + } + if ($table['colPg'][$t] > $splitpg) { + break; + } + } + if ($table['borders_separate']) { + if ($firstSpread) { + $bw += $table['padding']['L'] + $table['border_details']['L']['w'] + $table['border_spacing_H']; + } else { + $bx += ($table['padding']['L'] + $table['border_details']['L']['w']); + $bw += $table['border_spacing_H']; + } + if ($finalSpread) { + $bw += $table['padding']['R'] + $table['border_details']['R']['w'] / 2 + $table['border_spacing_H']; + } + } + } else { + $bw = $table['w'] - ($table['max_cell_border_width']['L'] / 2) - ($table['max_cell_border_width']['R'] / 2) - $table['margin']['L'] - $table['margin']['R']; + } + + if ($this->splitTableBorderWidth && ($this->keepColumns || !$this->ColActive) && empty($tablefooter) && $i > 0 && $table['border_details']['B']['w']) { + $prevDrawColor = $this->DrawColor; + $lw = $this->LineWidth; + $this->SetLineWidth($this->splitTableBorderWidth); + $this->SetDColor($table['border_details']['B']['c']); + $this->SetLineJoin(0); + $this->SetLineCap(0); + $blx = $bx; + $blw = $bw; + if (!$table['borders_separate']) { + $blx -= ($table['max_cell_border_width']['L'] / 2); + $blw += ($table['max_cell_border_width']['L'] / 2 + $table['max_cell_border_width']['R'] / 2); + } + $this->Line($blx, $this->y + ($this->splitTableBorderWidth / 2), $blx + $blw, $this->y + ($this->splitTableBorderWidth / 2)); + $this->DrawColor = $prevDrawColor; + $this->writer->write($this->DrawColor); + $this->SetLineWidth($lw); + $this->SetLineJoin(2); + $this->SetLineCap(2); + } + + if (!$this->ColActive && ($i > 0 || $j > 0)) { + if (isset($table['bgcolor'][-1])) { + $color = $this->colorConverter->convert($table['bgcolor'][-1], $this->PDFAXwarnings); + if ($color) { + if (!$table['borders_separate']) { + $bh -= $table['max_cell_border_width']['B'] / 2; + } + $this->tableBackgrounds[$level * 9][] = ['gradient' => false, 'x' => $bx, 'y' => $by, 'w' => $bw, 'h' => $bh, 'col' => $color]; + } + } + + /* -- BACKGROUNDS -- */ + if (isset($table['gradient'])) { + $g = $this->gradient->parseBackgroundGradient($table['gradient']); + if ($g) { + $this->tableBackgrounds[$level * 9 + 1][] = ['gradient' => true, 'x' => $bx, 'y' => $by, 'w' => $bw, 'h' => $bh, 'gradtype' => $g['type'], 'stops' => $g['stops'], 'colorspace' => $g['colorspace'], 'coords' => $g['coords'], 'extend' => $g['extend'], 'clippath' => '']; + } + } + + if (isset($table['background-image'])) { + if ($table['background-image']['gradient'] && preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient/', $table['background-image']['gradient'])) { + $g = $this->gradient->parseMozGradient($table['background-image']['gradient']); + if ($g) { + $this->tableBackgrounds[$level * 9 + 1][] = ['gradient' => true, 'x' => $bx, 'y' => $by, 'w' => $bw, 'h' => $bh, 'gradtype' => $g['type'], 'stops' => $g['stops'], 'colorspace' => $g['colorspace'], 'coords' => $g['coords'], 'extend' => $g['extend'], 'clippath' => '']; + } + } else { + $image_id = $table['background-image']['image_id']; + $orig_w = $table['background-image']['orig_w']; + $orig_h = $table['background-image']['orig_h']; + $x_pos = $table['background-image']['x_pos']; + $y_pos = $table['background-image']['y_pos']; + $x_repeat = $table['background-image']['x_repeat']; + $y_repeat = $table['background-image']['y_repeat']; + $resize = $table['background-image']['resize']; + $opacity = $table['background-image']['opacity']; + $itype = $table['background-image']['itype']; + $this->tableBackgrounds[$level * 9 + 2][] = ['x' => $bx, 'y' => $by, 'w' => $bw, 'h' => $bh, 'image_id' => $image_id, 'orig_w' => $orig_w, 'orig_h' => $orig_h, 'x_pos' => $x_pos, 'y_pos' => $y_pos, 'x_repeat' => $x_repeat, 'y_repeat' => $y_repeat, 'clippath' => '', 'resize' => $resize, 'opacity' => $opacity, 'itype' => $itype]; + } + } + /* -- END BACKGROUNDS -- */ + } + + // $this->AcceptPageBreak() has moved tablebuffer to $this->pages content + if ($this->tableBackgrounds) { + $s = $this->PrintTableBackgrounds(); + if ($this->bufferoutput) { + $this->headerbuffer = preg_replace('/(___TABLE___BACKGROUNDS' . $this->uniqstr . ')/', '\\1' . "\n" . $s . "\n", $this->headerbuffer); + $this->headerbuffer = preg_replace('/(___TABLE___BACKGROUNDS' . $this->uniqstr . ')/', " ", $this->headerbuffer); + } else { + $this->pages[$this->page] = preg_replace('/(___TABLE___BACKGROUNDS' . $this->uniqstr . ')/', '\\1' . "\n" . $s . "\n", $this->pages[$this->page]); + $this->pages[$this->page] = preg_replace('/(___TABLE___BACKGROUNDS' . $this->uniqstr . ')/', " ", $this->pages[$this->page]); + } + $this->tableBackgrounds = []; + } + + if ($split) { + if ($i == 0 && $j == 0) { + $y0 = -1; + } elseif ($finalSpread) { + $splitpg = 0; + $startcol = 0; + $startrow = $i; + } else { + $splitpg++; + $startcol = $t; + $returny -= $y; + } + return [false, $startrow, $startcol, $splitpg, $returny, $y0]; + } + + $this->AddPage($this->CurOrientation); + + $this->writer->write('___TABLE___BACKGROUNDS' . $this->uniqstr); + + + if ($this->tableClipPath) { + $this->writer->write($this->tableClipPath); + } + + // Added to correct for OddEven Margins + $x = $x + $this->MarginCorrection; + $x0 = $x0 + $this->MarginCorrection; + + if ($this->splitTableBorderWidth && ($this->keepColumns || !$this->ColActive) && empty($tableheader) && $i > 0 && $table['border_details']['T']['w']) { + $prevDrawColor = $this->DrawColor; + $lw = $this->LineWidth; + $this->SetLineWidth($this->splitTableBorderWidth); + $this->SetDColor($table['border_details']['T']['c']); + $this->SetLineJoin(0); + $this->SetLineCap(0); + $blx += $this->MarginCorrection; + $this->Line($blx, $this->y - ($this->splitTableBorderWidth / 2), $blx + $blw, $this->y - ($this->splitTableBorderWidth / 2)); + $this->DrawColor = $prevDrawColor; + $this->writer->write($this->DrawColor); + $this->SetLineWidth($lw); + $this->SetLineJoin(2); + $this->SetLineCap(2); + } + + // Move down to account for half of top border-spacing or + // extra half border width in case page was broken in middle + if ($i > 0 && !$this->table_rotate && $level == 1 && $table['headernrows'] == 0) { + if ($table['borders_separate']) { + $adv = $table['border_spacing_V'] / 2; + } else { + $maxbwtop = 0; + for ($ctj = 0; $ctj < $numcols; $ctj++) { + if (isset($cells[$i][$ctj]) && $cells[$i][$ctj]) { + if (!$this->simpleTables) { + if ($this->packTableData) { + list($bt, $br, $bb, $bl) = $this->_getBorderWidths($cells[$i][$ctj]['borderbin']); + } else { + $bt = $cells[$i][$ctj]['border_details']['T']['w']; + } + $maxbwtop = max($maxbwtop, $bt); + } elseif ($this->simpleTables) { + $maxbwtop = max($maxbwtop, $table['simple']['border_details']['T']['w']); + } + } + } + $adv = $maxbwtop / 2; + } + $this->y += $adv; + } + + + if ($this->table_rotate) { + $this->tbrot_x0 = $this->lMargin + $this->blk[$this->blklvl]['outer_left_margin'] + $this->blk[$this->blklvl]['padding_left'] + $this->blk[$this->blklvl]['border_left']['w']; + if ($table['borders_separate']) { + $this->tbrot_h = $table['margin']['T'] + $table['padding']['T'] + $table['border_details']['T']['w'] + $table['border_spacing_V'] / 2; + } else { + $this->tbrot_h = $table['margin']['T'] + $table['max_cell_border_width']['T']; + } + $this->tbrot_y0 = $this->y; + $pagetrigger = $y0 - $tableheaderadj + ($this->blk[$this->blklvl]['inner_width']); + } else { + $pagetrigger = $this->PageBreakTrigger; + } + + if ($this->kwt_saved && $level == 1) { + $this->kwt_moved = true; + } + + + if (!empty($tableheader)) { + $ya = $this->y; + $this->TableHeaderFooter($tableheader, $tablestartpage, $tablestartcolumn, 'H', $level); + if ($this->table_rotate) { + $this->tbrot_h = $this->y - $ya; + } + $tableheaderadj = $this->y - $ya; + } elseif ($i == 0 && !$this->table_rotate && $level == 1 && !$this->ColActive) { + // Advance down page + if ($table['borders_separate']) { + $adv = $table['border_spacing_V'] / 2 + $table['border_details']['T']['w'] + $table['padding']['T']; + } else { + $adv = $table['max_cell_border_width']['T'] / 2; + } + if ($adv) { + if ($this->table_rotate) { + $this->y += ($adv); + } else { + $this->DivLn($adv, $this->blklvl, true); + } + } + } + + $outerfilled = 0; + $y = $y0 = $this->y; + } + + /* -- COLUMNS -- */ + // COLS + // COLUMN CHANGE + if ($this->CurrCol != $oldcolumn) { + // Added to correct for Columns + $x += $this->ChangeColumn * ($this->ColWidth + $this->ColGap); + $x0 += $this->ChangeColumn * ($this->ColWidth + $this->ColGap); + if ($this->CurrCol == 0) { // just added a page - possibly with tableheader + $y0 = $this->y; // this->y0 is global used by Columns - $y0 is internal to tablewrite + } else { + $y0 = $this->y0; // this->y0 is global used by Columns - $y0 is internal to tablewrite + } + $y = $y0; + $outerfilled = 0; + if ($this->CurrCol != 0 && ($this->keepColumns && $this->ColActive) && !empty($tableheader) && $i > 0) { + $this->x = $x; + $this->y = $y; + $this->TableHeaderFooter($tableheader, $tablestartpage, $tablestartcolumn, 'H', $level); + $y0 = $y = $this->y; + } + } + /* -- END COLUMNS -- */ + } + $skippage = true; + } + + $this->x = $x; + $this->y = $y; + + if ($this->kwt_saved && $level == 1) { + $this->printkwtbuffer(); + $x0 = $x = $this->x; + $y0 = $y = $this->y; + $this->kwt_moved = false; + $this->kwt_saved = false; + } + + + // Set the Page & Column where table actually starts + if ($i == 0 && $j == 0 && $level == 1) { + if (($this->mirrorMargins) && (($this->page) % 2 == 0)) { // EVEN + $tablestartpage = 'EVEN'; + } elseif (($this->mirrorMargins) && (($this->page) % 2 == 1)) { // ODD + $tablestartpage = 'ODD'; + } else { + $tablestartpage = ''; + } + $tablestartpageno = $this->page; + if ($this->ColActive) { + $tablestartcolumn = $this->CurrCol; + } // *COLUMNS* + } + + // ALIGN + $align = $cell['a']; + + /* -- COLUMNS -- */ + // If outside columns, this is done in PaintDivBB + if ($this->ColActive) { + // OUTER FILL BGCOLOR of DIVS + if ($this->blklvl > 0 && ($j == 0) && !$this->table_rotate && $level == 1) { + $firstblockfill = $this->GetFirstBlockFill(); + if ($firstblockfill && $this->blklvl >= $firstblockfill) { + $divh = $maxrowheight; + // Last row + if ((!isset($cell['rowspan']) && $i == $numrows - 1) || (isset($cell['rowspan']) && (($i == $numrows - 1 && $cell['rowspan'] < 2) || ($cell['rowspan'] > 1 && ($i + $cell['rowspan'] - 1) == $numrows - 1)))) { + if ($table['borders_separate']) { + $adv = $table['margin']['B'] + $table['padding']['B'] + $table['border_details']['B']['w'] + $table['border_spacing_V'] / 2; + } else { + $adv = $table['margin']['B'] + $table['max_cell_border_width']['B'] / 2; + } + $divh += $adv; // last row: fill bottom half of bottom border (y advanced at end) + } + + if (($this->y + $divh) > $outerfilled) { // if not already painted by previous rowspan + $bak_x = $this->x; + $bak_y = $this->y; + if ($outerfilled > $this->y) { + $divh = ($this->y + $divh) - $outerfilled; + $this->y = $outerfilled; + } + + $this->DivLn($divh, -3, false); + $outerfilled = $this->y + $divh; + // Reset current block fill + $bcor = $this->blk[$this->blklvl]['bgcolorarray']; + if ($bcor) { + $this->SetFColor($bcor); + } + $this->x = $bak_x; + $this->y = $bak_y; + } + } + } + } + + // TABLE BACKGROUND FILL BGCOLOR - for cellSpacing + if ($this->ColActive) { + if ($table['borders_separate']) { + $fill = isset($table['bgcolor'][-1]) ? $table['bgcolor'][-1] : 0; + if ($fill) { + $color = $this->colorConverter->convert($fill, $this->PDFAXwarnings); + if ($color) { + $xadj = ($table['border_spacing_H'] / 2); + $yadj = ($table['border_spacing_V'] / 2); + $wadj = $table['border_spacing_H']; + $hadj = $table['border_spacing_V']; + if ($i == 0) { // Top + $yadj += $table['padding']['T'] + $table['border_details']['T']['w']; + $hadj += $table['padding']['T'] + $table['border_details']['T']['w']; + } + if ($j == 0) { // Left + $xadj += $table['padding']['L'] + $table['border_details']['L']['w']; + $wadj += $table['padding']['L'] + $table['border_details']['L']['w']; + } + if ($i == ($numrows - 1) || (isset($cell['rowspan']) && ($i + $cell['rowspan']) == $numrows) || (!isset($cell['rowspan']) && ($i + 1) == $numrows)) { // Bottom + $hadj += $table['padding']['B'] + $table['border_details']['B']['w']; + } + if ($j == ($numcols - 1) || (isset($cell['colspan']) && ($j + $cell['colspan']) == $numcols) || (!isset($cell['colspan']) && ($j + 1) == $numcols)) { // Right + $wadj += $table['padding']['R'] + $table['border_details']['R']['w']; + } + $this->SetFColor($color); + $this->Rect($x - $xadj, $y - $yadj, $w + $wadj, $h + $hadj, 'F'); + } + } + } + } + /* -- END COLUMNS -- */ + + if ($table['empty_cells'] != 'hide' || !empty($cell['textbuffer']) || (isset($cell['nestedcontent']) && $cell['nestedcontent']) || !$table['borders_separate']) { + $paintcell = true; + } else { + $paintcell = false; + } + + // Set Borders + $bord = 0; + $bord_det = []; + + if (!$this->simpleTables) { + if ($this->packTableData) { + $c = $this->_unpackCellBorder($cell['borderbin']); + $bord = $c['border']; + $bord_det = $c['border_details']; + } else { + $bord = $cell['border']; + $bord_det = $cell['border_details']; + } + } elseif ($this->simpleTables) { + $bord = $table['simple']['border']; + $bord_det = $table['simple']['border_details']; + } + + // TABLE ROW OR CELL FILL BGCOLOR + $fill = 0; + if (isset($cell['bgcolor']) && $cell['bgcolor'] && $cell['bgcolor'] != 'transparent') { + $fill = $cell['bgcolor']; + $leveladj = 6; + } elseif (isset($table['bgcolor'][$i]) && $table['bgcolor'][$i] && $table['bgcolor'][$i] != 'transparent') { // Row color + $fill = $table['bgcolor'][$i]; + $leveladj = 3; + } + if ($fill && $paintcell) { + $color = $this->colorConverter->convert($fill, $this->PDFAXwarnings); + if ($color) { + if ($table['borders_separate']) { + if ($this->ColActive) { + $this->SetFColor($color); + $this->Rect($x + ($table['border_spacing_H'] / 2), $y + ($table['border_spacing_V'] / 2), $w - $table['border_spacing_H'], $h - $table['border_spacing_V'], 'F'); + } else { + $this->tableBackgrounds[$level * 9 + $leveladj][] = ['gradient' => false, 'x' => ($x + ($table['border_spacing_H'] / 2)), 'y' => ($y + ($table['border_spacing_V'] / 2)), 'w' => ($w - $table['border_spacing_H']), 'h' => ($h - $table['border_spacing_V']), 'col' => $color]; + } + } else { + if ($this->ColActive) { + $this->SetFColor($color); + $this->Rect($x, $y, $w, $h, 'F'); + } else { + $this->tableBackgrounds[$level * 9 + $leveladj][] = ['gradient' => false, 'x' => $x, 'y' => $y, 'w' => $w, 'h' => $h, 'col' => $color]; + } + } + } + } + + /* -- BACKGROUNDS -- */ + if (isset($cell['gradient']) && $cell['gradient'] && $paintcell) { + $g = $this->gradient->parseBackgroundGradient($cell['gradient']); + if ($g) { + if ($table['borders_separate']) { + $px = $x + ($table['border_spacing_H'] / 2); + $py = $y + ($table['border_spacing_V'] / 2); + $pw = $w - $table['border_spacing_H']; + $ph = $h - $table['border_spacing_V']; + } else { + $px = $x; + $py = $y; + $pw = $w; + $ph = $h; + } + if ($this->ColActive) { + $this->gradient->Gradient($px, $py, $pw, $ph, $g['type'], $g['stops'], $g['colorspace'], $g['coords'], $g['extend']); + } else { + $this->tableBackgrounds[$level * 9 + 7][] = ['gradient' => true, 'x' => $px, 'y' => $py, 'w' => $pw, 'h' => $ph, 'gradtype' => $g['type'], 'stops' => $g['stops'], 'colorspace' => $g['colorspace'], 'coords' => $g['coords'], 'extend' => $g['extend'], 'clippath' => '']; + } + } + } + + if (isset($cell['background-image']) && $paintcell) { + if (isset($cell['background-image']['gradient']) && $cell['background-image']['gradient'] && preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient/', $cell['background-image']['gradient'])) { + $g = $this->gradient->parseMozGradient($cell['background-image']['gradient']); + if ($g) { + if ($table['borders_separate']) { + $px = $x + ($table['border_spacing_H'] / 2); + $py = $y + ($table['border_spacing_V'] / 2); + $pw = $w - $table['border_spacing_H']; + $ph = $h - $table['border_spacing_V']; + } else { + $px = $x; + $py = $y; + $pw = $w; + $ph = $h; + } + if ($this->ColActive) { + $this->gradient->Gradient($px, $py, $pw, $ph, $g['type'], $g['stops'], $g['colorspace'], $g['coords'], $g['extend']); + } else { + $this->tableBackgrounds[$level * 9 + 7][] = ['gradient' => true, 'x' => $px, 'y' => $py, 'w' => $pw, 'h' => $ph, 'gradtype' => $g['type'], 'stops' => $g['stops'], 'colorspace' => $g['colorspace'], 'coords' => $g['coords'], 'extend' => $g['extend'], 'clippath' => '']; + } + } + } elseif (isset($cell['background-image']['image_id']) && $cell['background-image']['image_id']) { // Background pattern + $n = count($this->patterns) + 1; + if ($table['borders_separate']) { + $px = $x + ($table['border_spacing_H'] / 2); + $py = $y + ($table['border_spacing_V'] / 2); + $pw = $w - $table['border_spacing_H']; + $ph = $h - $table['border_spacing_V']; + } else { + $px = $x; + $py = $y; + $pw = $w; + $ph = $h; + } + if ($this->ColActive) { + list($orig_w, $orig_h, $x_repeat, $y_repeat) = $this->_resizeBackgroundImage($cell['background-image']['orig_w'], $cell['background-image']['orig_h'], $pw, $ph, $cell['background-image']['resize'], $cell['background-image']['x_repeat'], $cell['background-image']['y_repeat']); + $this->patterns[$n] = ['x' => $px, 'y' => $py, 'w' => $pw, 'h' => $ph, 'pgh' => $this->h, 'image_id' => $cell['background-image']['image_id'], 'orig_w' => $orig_w, 'orig_h' => $orig_h, 'x_pos' => $cell['background-image']['x_pos'], 'y_pos' => $cell['background-image']['y_pos'], 'x_repeat' => $x_repeat, 'y_repeat' => $y_repeat]; + if ($cell['background-image']['opacity'] > 0 && $cell['background-image']['opacity'] < 1) { + $opac = $this->SetAlpha($cell['background-image']['opacity'], 'Normal', true); + } else { + $opac = ''; + } + $this->writer->write(sprintf('q /Pattern cs /P%d scn %s %.3F %.3F %.3F %.3F re f Q', $n, $opac, $px * Mpdf::SCALE, ($this->h - $py) * Mpdf::SCALE, $pw * Mpdf::SCALE, -$ph * Mpdf::SCALE)); + } else { + $image_id = $cell['background-image']['image_id']; + $orig_w = $cell['background-image']['orig_w']; + $orig_h = $cell['background-image']['orig_h']; + $x_pos = $cell['background-image']['x_pos']; + $y_pos = $cell['background-image']['y_pos']; + $x_repeat = $cell['background-image']['x_repeat']; + $y_repeat = $cell['background-image']['y_repeat']; + $resize = $cell['background-image']['resize']; + $opacity = $cell['background-image']['opacity']; + $itype = $cell['background-image']['itype']; + $this->tableBackgrounds[$level * 9 + 8][] = ['x' => $px, 'y' => $py, 'w' => $pw, 'h' => $ph, 'image_id' => $image_id, 'orig_w' => $orig_w, 'orig_h' => $orig_h, 'x_pos' => $x_pos, 'y_pos' => $y_pos, 'x_repeat' => $x_repeat, 'y_repeat' => $y_repeat, 'clippath' => '', 'resize' => $resize, 'opacity' => $opacity, 'itype' => $itype]; + } + } + } + /* -- END BACKGROUNDS -- */ + + if (isset($cell['colspan']) && $cell['colspan'] > 1) { + $ccolsp = $cell['colspan']; + } else { + $ccolsp = 1; + } + if (isset($cell['rowspan']) && $cell['rowspan'] > 1) { + $crowsp = $cell['rowspan']; + } else { + $crowsp = 1; + } + + + // but still need to do this for repeated headers... + if (!$table['borders_separate'] && $this->tabletheadjustfinished && !$this->simpleTables) { + if (isset($table['topntail']) && $table['topntail']) { + $bord_det['T'] = $this->border_details($table['topntail']); + $bord_det['T']['w'] /= $this->shrin_k; + $this->setBorder($bord, Border::TOP); + } + if (isset($table['thead-underline']) && $table['thead-underline']) { + $bord_det['T'] = $this->border_details($table['thead-underline']); + $bord_det['T']['w'] /= $this->shrin_k; + $this->setBorder($bord, Border::TOP); + } + } + + + // Get info of first row ==>> table header + // Use > 1 row if THEAD + if (isset($table['is_thead'][$i]) && $table['is_thead'][$i] && $level == 1) { + if ($j == 0) { + $tableheaderrowheight += $table['hr'][$i]; + } + $tableheader[$i][0]['trbackground-images'] = (isset($table['trbackground-images'][$i]) ? $table['trbackground-images'][$i] : null); + $tableheader[$i][0]['trgradients'] = (isset($table['trgradients'][$i]) ? $table['trgradients'][$i] : null); + $tableheader[$i][0]['trbgcolor'] = (isset($table['bgcolor'][$i]) ? $table['bgcolor'][$i] : null); + $tableheader[$i][$j]['x'] = $x; + $tableheader[$i][$j]['y'] = $y; + $tableheader[$i][$j]['h'] = $h; + $tableheader[$i][$j]['w'] = $w; + if (isset($cell['textbuffer'])) { + $tableheader[$i][$j]['textbuffer'] = $cell['textbuffer']; + } else { + $tableheader[$i][$j]['textbuffer'] = ''; + } + $tableheader[$i][$j]['a'] = $cell['a']; + $tableheader[$i][$j]['R'] = $cell['R']; + + $tableheader[$i][$j]['va'] = $cell['va']; + $tableheader[$i][$j]['mih'] = $cell['mih']; + $tableheader[$i][$j]['gradient'] = (isset($cell['gradient']) ? $cell['gradient'] : null); // *BACKGROUNDS* + $tableheader[$i][$j]['background-image'] = (isset($cell['background-image']) ? $cell['background-image'] : null); // *BACKGROUNDS* + $tableheader[$i][$j]['rowspan'] = (isset($cell['rowspan']) ? $cell['rowspan'] : null); + $tableheader[$i][$j]['colspan'] = (isset($cell['colspan']) ? $cell['colspan'] : null); + $tableheader[$i][$j]['bgcolor'] = $cell['bgcolor']; + + if (!$this->simpleTables) { + $tableheader[$i][$j]['border'] = $bord; + $tableheader[$i][$j]['border_details'] = $bord_det; + } elseif ($this->simpleTables) { + $tableheader[$i][$j]['border'] = $table['simple']['border']; + $tableheader[$i][$j]['border_details'] = $table['simple']['border_details']; + } + $tableheader[$i][$j]['padding'] = $cell['padding']; + if (isset($cell['direction'])) { + $tableheader[$i][$j]['direction'] = $cell['direction']; + } + if (isset($cell['cellLineHeight'])) { + $tableheader[$i][$j]['cellLineHeight'] = $cell['cellLineHeight']; + } + if (isset($cell['cellLineStackingStrategy'])) { + $tableheader[$i][$j]['cellLineStackingStrategy'] = $cell['cellLineStackingStrategy']; + } + if (isset($cell['cellLineStackingShift'])) { + $tableheader[$i][$j]['cellLineStackingShift'] = $cell['cellLineStackingShift']; + } + } + + // CELL BORDER + if ($bord) { + if ($table['borders_separate'] && $paintcell) { + $this->_tableRect($x + ($table['border_spacing_H'] / 2) + ($bord_det['L']['w'] / 2), $y + ($table['border_spacing_V'] / 2) + ($bord_det['T']['w'] / 2), $w - $table['border_spacing_H'] - ($bord_det['L']['w'] / 2) - ($bord_det['R']['w'] / 2), $h - $table['border_spacing_V'] - ($bord_det['T']['w'] / 2) - ($bord_det['B']['w'] / 2), $bord, $bord_det, false, $table['borders_separate']); + } elseif (!$table['borders_separate']) { + $this->_tableRect($x, $y, $w, $h, $bord, $bord_det, true, $table['borders_separate']); // true causes buffer + } + } + + // VERTICAL ALIGN + if ($cell['R'] && intval($cell['R']) > 0 && intval($cell['R']) < 90 && isset($cell['va']) && $cell['va'] != 'B') { + $cell['va'] = 'B'; + } + if (!isset($cell['va']) || $cell['va'] == 'M') { + $this->y += ($h - $cell['mih']) / 2; + } elseif (isset($cell['va']) && $cell['va'] == 'B') { + $this->y += $h - $cell['mih']; + } + + // NESTED CONTENT + // TEXT (and nested tables) + + $this->divwidth = $w; + if (!empty($cell['textbuffer'])) { + $this->cellTextAlign = $align; + $this->cellLineHeight = $cell['cellLineHeight']; + $this->cellLineStackingStrategy = $cell['cellLineStackingStrategy']; + $this->cellLineStackingShift = $cell['cellLineStackingShift']; + if ($level == 1) { + if (isset($table['is_tfoot'][$i]) && $table['is_tfoot'][$i]) { + if (preg_match('/{colsum([0-9]*)[_]*}/', $cell['textbuffer'][0][0], $m)) { + $rep = sprintf("%01." . intval($m[1]) . "f", $this->colsums[$j]); + $cell['textbuffer'][0][0] = preg_replace('/{colsum[0-9_]*}/', $rep, $cell['textbuffer'][0][0]); + } + } elseif (!isset($table['is_thead'][$i])) { + if (isset($this->colsums[$j])) { + $this->colsums[$j] += $this->toFloat($cell['textbuffer'][0][0]); + } else { + $this->colsums[$j] = $this->toFloat($cell['textbuffer'][0][0]); + } + } + } + $opy = $this->y; + // mPDF ITERATION + if ($this->iterationCounter) { + foreach ($cell['textbuffer'] as $k => $t) { + if (preg_match('/{iteration ([a-zA-Z0-9_]+)}/', $t[0], $m)) { + $vname = '__' . $m[1] . '_'; + if (!isset($this->$vname)) { + $this->$vname = 1; + } else { + $this->$vname++; + } + $cell['textbuffer'][$k][0] = preg_replace('/{iteration ' . $m[1] . '}/', $this->$vname, $cell['textbuffer'][$k][0]); + } + } + } + + + if ($cell['R']) { + $cellPtSize = $cell['textbuffer'][0][11] / $this->shrin_k; + if (!$cellPtSize) { + $cellPtSize = $this->default_font_size; + } + $cellFontHeight = ($cellPtSize / Mpdf::SCALE); + $opx = $this->x; + $angle = intval($cell['R']); + // Only allow 45 to 89 degrees (when bottom-aligned) or exactly 90 or -90 + if ($angle > 90) { + $angle = 90; + } elseif ($angle > 0 && $angle < 45) { + $angle = 45; + } elseif ($angle < 0) { + $angle = -90; + } + $offset = ((sin(deg2rad($angle))) * 0.37 * $cellFontHeight); + if (isset($cell['a']) && $cell['a'] == 'R') { + $this->x += ($w) + ($offset) - ($cellFontHeight / 3) - ($cell['padding']['R'] + ($table['border_spacing_H'] / 2)); + } elseif (!isset($cell['a']) || $cell['a'] == 'C') { + $this->x += ($w / 2) + ($offset); + } else { + $this->x += ($offset) + ($cellFontHeight / 3) + ($cell['padding']['L'] + ($table['border_spacing_H'] / 2)); + } + $str = ''; + foreach ($cell['textbuffer'] as $t) { + $str .= $t[0] . ' '; + } + $str = rtrim($str); + if (!isset($cell['va']) || $cell['va'] == 'M') { + $this->y -= ($h - $cell['mih']) / 2; // Undo what was added earlier VERTICAL ALIGN + if ($angle > 0) { + $this->y += (($h - $cell['mih']) / 2) + $cell['padding']['T'] + ($cell['mih'] - ($cell['padding']['T'] + $cell['padding']['B'])); + } elseif ($angle < 0) { + $this->y += (($h - $cell['mih']) / 2) + ($cell['padding']['T'] + ($table['border_spacing_V'] / 2)); + } + } elseif (isset($cell['va']) && $cell['va'] == 'B') { + $this->y -= $h - $cell['mih']; // Undo what was added earlier VERTICAL ALIGN + if ($angle > 0) { + $this->y += $h - ($cell['padding']['B'] + ($table['border_spacing_V'] / 2)); + } elseif ($angle < 0) { + $this->y += $h - $cell['mih'] + ($cell['padding']['T'] + ($table['border_spacing_V'] / 2)); + } + } elseif (isset($cell['va']) && $cell['va'] == 'T') { + if ($angle > 0) { + $this->y += $cell['mih'] - ($cell['padding']['B'] + ($table['border_spacing_V'] / 2)); + } elseif ($angle < 0) { + $this->y += ($cell['padding']['T'] + ($table['border_spacing_V'] / 2)); + } + } + $this->Rotate($angle, $this->x, $this->y); + $s_fs = $this->FontSizePt; + $s_f = $this->FontFamily; + $s_st = $this->FontStyle; + if (!empty($cell['textbuffer'][0][3])) { // Font Color + $cor = $cell['textbuffer'][0][3]; + $this->SetTColor($cor); + } + $this->SetFont($cell['textbuffer'][0][4], $cell['textbuffer'][0][2], $cellPtSize, true, true); + + $this->magic_reverse_dir($str, $this->directionality, $cell['textbuffer'][0][18]); + $this->Text($this->x, $this->y, $str, $cell['textbuffer'][0][18], $cell['textbuffer'][0][8]); // textvar + $this->Rotate(0); + $this->SetFont($s_f, $s_st, $s_fs, true, true); + $this->SetTColor(0); + $this->x = $opx; + } else { + if (!$this->simpleTables) { + if ($bord_det) { + $btlw = $bord_det['L']['w']; + $btrw = $bord_det['R']['w']; + $bttw = $bord_det['T']['w']; + } else { + $btlw = 0; + $btrw = 0; + $bttw = 0; + } + if ($table['borders_separate']) { + $xadj = $btlw + $cell['padding']['L'] + ($table['border_spacing_H'] / 2); + $wadj = $btlw + $btrw + $cell['padding']['L'] + $cell['padding']['R'] + $table['border_spacing_H']; + $yadj = $bttw + $cell['padding']['T'] + ($table['border_spacing_H'] / 2); + } else { + $xadj = $btlw / 2 + $cell['padding']['L']; + $wadj = ($btlw + $btrw) / 2 + $cell['padding']['L'] + $cell['padding']['R']; + $yadj = $bttw / 2 + $cell['padding']['T']; + } + } elseif ($this->simpleTables) { + if ($table['borders_separate']) { // NB twice border width + $xadj = $table['simple']['border_details']['L']['w'] + $cell['padding']['L'] + ($table['border_spacing_H'] / 2); + $wadj = $table['simple']['border_details']['L']['w'] + $table['simple']['border_details']['R']['w'] + $cell['padding']['L'] + $cell['padding']['R'] + $table['border_spacing_H']; + $yadj = $table['simple']['border_details']['T']['w'] + $cell['padding']['T'] + ($table['border_spacing_H'] / 2); + } else { + $xadj = $table['simple']['border_details']['L']['w'] / 2 + $cell['padding']['L']; + $wadj = ($table['simple']['border_details']['L']['w'] + $table['simple']['border_details']['R']['w']) / 2 + $cell['padding']['L'] + $cell['padding']['R']; + $yadj = $table['simple']['border_details']['T']['w'] / 2 + $cell['padding']['T']; + } + } + $this->decimal_offset = 0; + if (substr($cell['a'], 0, 1) == 'D') { + if (isset($cell['colspan']) && $cell['colspan'] > 1) { + $this->cellTextAlign = $c['a'] = substr($cell['a'], 2, 1); + } else { + $smax = $table['decimal_align'][$j]['maxs0']; + $d_content = $table['decimal_align'][$j]['maxs0'] + $table['decimal_align'][$j]['maxs1']; + $this->decimal_offset = $smax; + $extra = ($w - $d_content - $wadj); + if ($extra > 0) { + if (substr($cell['a'], 2, 1) == 'R') { + $this->decimal_offset += $extra; + } elseif (substr($cell['a'], 2, 1) == 'C') { + $this->decimal_offset += ($extra) / 2; + } + } + } + } + $this->divwidth = $w - $wadj; + if ($this->divwidth == 0) { + $this->divwidth = 0.0001; + } + $this->x += $xadj; + $this->y += $yadj; + $this->printbuffer($cell['textbuffer'], '', true, false, $cell['direction']); + } + $this->y = $opy; + } + + /* -- BACKGROUNDS -- */ + if (!$this->ColActive) { + if (isset($table['trgradients'][$i]) && ($j == 0 || $table['borders_separate'])) { + $g = $this->gradient->parseBackgroundGradient($table['trgradients'][$i]); + if ($g) { + $gx = $x0; + $gy = $y; + $gh = $h; + $gw = $table['w'] - ($table['max_cell_border_width']['L'] / 2) - ($table['max_cell_border_width']['R'] / 2) - $table['margin']['L'] - $table['margin']['R']; + if ($table['borders_separate']) { + $gw -= ($table['padding']['L'] + $table['border_details']['L']['w'] + $table['padding']['R'] + $table['border_details']['R']['w'] + $table['border_spacing_H']); + $clx = $x + ($table['border_spacing_H'] / 2); + $cly = $y + ($table['border_spacing_V'] / 2); + $clw = $w - $table['border_spacing_H']; + $clh = $h - $table['border_spacing_V']; + // Set clipping path + $s = $this->_setClippingPath($clx, $cly, $clw, $clh); // mPDF 6 + $this->tableBackgrounds[$level * 9 + 4][] = ['gradient' => true, 'x' => $gx + ($table['border_spacing_H'] / 2), 'y' => $gy + ($table['border_spacing_V'] / 2), 'w' => $gw - $table['border_spacing_V'], 'h' => $gh - $table['border_spacing_H'], 'gradtype' => $g['type'], 'stops' => $g['stops'], 'colorspace' => $g['colorspace'], 'coords' => $g['coords'], 'extend' => $g['extend'], 'clippath' => $s]; + } else { + $this->tableBackgrounds[$level * 9 + 4][] = ['gradient' => true, 'x' => $gx, 'y' => $gy, 'w' => $gw, 'h' => $gh, 'gradtype' => $g['type'], 'stops' => $g['stops'], 'colorspace' => $g['colorspace'], 'coords' => $g['coords'], 'extend' => $g['extend'], 'clippath' => '']; + } + } + } + if (isset($table['trbackground-images'][$i]) && ($j == 0 || $table['borders_separate'])) { + if (isset($table['trbackground-images'][$i]['gradient']) && preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient/', $table['trbackground-images'][$i]['gradient'])) { + $g = $this->gradient->parseMozGradient($table['trbackground-images'][$i]['gradient']); + if ($g) { + $gx = $x0; + $gy = $y; + $gh = $h; + $gw = $table['w'] - ($table['max_cell_border_width']['L'] / 2) - ($table['max_cell_border_width']['R'] / 2) - $table['margin']['L'] - $table['margin']['R']; + if ($table['borders_separate']) { + $gw -= ($table['padding']['L'] + $table['border_details']['L']['w'] + $table['padding']['R'] + $table['border_details']['R']['w'] + $table['border_spacing_H']); + $clx = $x + ($table['border_spacing_H'] / 2); + $cly = $y + ($table['border_spacing_V'] / 2); + $clw = $w - $table['border_spacing_H']; + $clh = $h - $table['border_spacing_V']; + // Set clipping path + $s = $this->_setClippingPath($clx, $cly, $clw, $clh); // mPDF 6 + $this->tableBackgrounds[$level * 9 + 4][] = ['gradient' => true, 'x' => $gx + ($table['border_spacing_H'] / 2), 'y' => $gy + ($table['border_spacing_V'] / 2), 'w' => $gw - $table['border_spacing_V'], 'h' => $gh - $table['border_spacing_H'], 'gradtype' => $g['type'], 'stops' => $g['stops'], 'colorspace' => $g['colorspace'], 'coords' => $g['coords'], 'extend' => $g['extend'], 'clippath' => $s]; + } else { + $this->tableBackgrounds[$level * 9 + 4][] = ['gradient' => true, 'x' => $gx, 'y' => $gy, 'w' => $gw, 'h' => $gh, 'gradtype' => $g['type'], 'stops' => $g['stops'], 'colorspace' => $g['colorspace'], 'coords' => $g['coords'], 'extend' => $g['extend'], 'clippath' => '']; + } + } + } else { + $image_id = $table['trbackground-images'][$i]['image_id']; + $orig_w = $table['trbackground-images'][$i]['orig_w']; + $orig_h = $table['trbackground-images'][$i]['orig_h']; + $x_pos = $table['trbackground-images'][$i]['x_pos']; + $y_pos = $table['trbackground-images'][$i]['y_pos']; + $x_repeat = $table['trbackground-images'][$i]['x_repeat']; + $y_repeat = $table['trbackground-images'][$i]['y_repeat']; + $resize = $table['trbackground-images'][$i]['resize']; + $opacity = $table['trbackground-images'][$i]['opacity']; + $itype = $table['trbackground-images'][$i]['itype']; + $clippath = ''; + $gx = $x0; + $gy = $y; + $gh = $h; + $gw = $table['w'] - ($table['max_cell_border_width']['L'] / 2) - ($table['max_cell_border_width']['R'] / 2) - $table['margin']['L'] - $table['margin']['R']; + if ($table['borders_separate']) { + $gw -= ($table['padding']['L'] + $table['border_details']['L']['w'] + $table['padding']['R'] + $table['border_details']['R']['w'] + $table['border_spacing_H']); + $clx = $x + ($table['border_spacing_H'] / 2); + $cly = $y + ($table['border_spacing_V'] / 2); + $clw = $w - $table['border_spacing_H']; + $clh = $h - $table['border_spacing_V']; + // Set clipping path + $s = $this->_setClippingPath($clx, $cly, $clw, $clh); // mPDF 6 + $this->tableBackgrounds[$level * 9 + 5][] = ['x' => $gx + ($table['border_spacing_H'] / 2), 'y' => $gy + ($table['border_spacing_V'] / 2), 'w' => $gw - $table['border_spacing_V'], 'h' => $gh - $table['border_spacing_H'], 'image_id' => $image_id, 'orig_w' => $orig_w, 'orig_h' => $orig_h, 'x_pos' => $x_pos, 'y_pos' => $y_pos, 'x_repeat' => $x_repeat, 'y_repeat' => $y_repeat, 'clippath' => $s, 'resize' => $resize, 'opacity' => $opacity, 'itype' => $itype]; + } else { + $this->tableBackgrounds[$level * 9 + 5][] = ['x' => $gx, 'y' => $gy, 'w' => $gw, 'h' => $gh, 'image_id' => $image_id, 'orig_w' => $orig_w, 'orig_h' => $orig_h, 'x_pos' => $x_pos, 'y_pos' => $y_pos, 'x_repeat' => $x_repeat, 'y_repeat' => $y_repeat, 'clippath' => '', 'resize' => $resize, 'opacity' => $opacity, 'itype' => $itype]; + } + } + } + } + + /* -- END BACKGROUNDS -- */ + + // TABLE BORDER - if separate + if (($table['borders_separate'] || ($this->simpleTables && !$table['simple']['border'])) && $table['border']) { + $halfspaceL = $table['padding']['L'] + ($table['border_spacing_H'] / 2); + $halfspaceR = $table['padding']['R'] + ($table['border_spacing_H'] / 2); + $halfspaceT = $table['padding']['T'] + ($table['border_spacing_V'] / 2); + $halfspaceB = $table['padding']['B'] + ($table['border_spacing_V'] / 2); + $tbx = $x; + $tby = $y; + $tbw = $w; + $tbh = $h; + $tab_bord = 0; + + $corner = ''; + if ($i == 0) { // Top + $tby -= $halfspaceT + ($table['border_details']['T']['w'] / 2); + $tbh += $halfspaceT + ($table['border_details']['T']['w'] / 2); + $this->setBorder($tab_bord, Border::TOP); + $corner .= 'T'; + } + if ($i == ($numrows - 1) || (isset($cell['rowspan']) && ($i + $cell['rowspan']) == $numrows)) { // Bottom + $tbh += $halfspaceB + ($table['border_details']['B']['w'] / 2); + $this->setBorder($tab_bord, Border::BOTTOM); + $corner .= 'B'; + } + if ($j == 0) { // Left + $tbx -= $halfspaceL + ($table['border_details']['L']['w'] / 2); + $tbw += $halfspaceL + ($table['border_details']['L']['w'] / 2); + $this->setBorder($tab_bord, Border::LEFT); + $corner .= 'L'; + } + if ($j == ($numcols - 1) || (isset($cell['colspan']) && ($j + $cell['colspan']) == $numcols)) { // Right + $tbw += $halfspaceR + ($table['border_details']['R']['w'] / 2); + $this->setBorder($tab_bord, Border::RIGHT); + $corner .= 'R'; + } + $this->_tableRect($tbx, $tby, $tbw, $tbh, $tab_bord, $table['border_details'], false, $table['borders_separate'], 'table', $corner, $table['border_spacing_V'], $table['border_spacing_H']); + } + + unset($cell); + // Reset values + $this->Reset(); + }//end of (if isset(cells)...) + }// end of columns + + $newpagestarted = false; + $this->tabletheadjustfinished = false; + + /* -- COLUMNS -- */ + if ($this->ColActive) { + if (!$this->table_keep_together && $i < $numrows - 1 && $level == 1) { + $this->breakpoints[$this->CurrCol][] = $y + $h; + } // mPDF 6 + if (count($this->cellBorderBuffer)) { + $this->printcellbuffer(); + } + } + /* -- END COLUMNS -- */ + + if ($i == $numrows - 1) { + $this->y = $y + $h; + } // last row jump (update this->y position) + if ($this->table_rotate && $level == 1) { + $this->tbrot_h += $h; + } + } // end of rows + + if (count($this->cellBorderBuffer)) { + $this->printcellbuffer(); + } + + + if ($this->tableClipPath) { + $this->writer->write("Q"); + } + $this->tableClipPath = ''; + + // Advance down page by half width of bottom border + if ($table['borders_separate']) { + $this->y += $table['padding']['B'] + $table['border_details']['B']['w'] + $table['border_spacing_V'] / 2; + } else { + $this->y += $table['max_cell_border_width']['B'] / 2; + } + + if ($table['borders_separate'] && $level == 1) { + $this->tbrot_h += $table['margin']['B'] + $table['padding']['B'] + $table['border_details']['B']['w'] + $table['border_spacing_V'] / 2; + } elseif ($level == 1) { + $this->tbrot_h += $table['margin']['B'] + $table['max_cell_border_width']['B'] / 2; + } + + $bx = $x0; + $by = $y0; + if ($table['borders_separate']) { + $bx -= ($table['padding']['L'] + $table['border_details']['L']['w'] + $table['border_spacing_H'] / 2); + if ($tablestartpageno != $this->page) { // IF broken across page + $by += $table['max_cell_border_width']['T'] / 2; + if (empty($tableheader)) { + $by -= ($table['border_spacing_V'] / 2); + } + } elseif ($split && $startrow > 0 && empty($tableheader)) { + $by -= ($table['border_spacing_V'] / 2); + } else { + $by -= ($table['padding']['T'] + $table['border_details']['T']['w'] + $table['border_spacing_V'] / 2); + } + } elseif ($tablestartpageno != $this->page && !empty($tableheader)) { + $by += $maxbwtop / 2; + } + $by -= $tableheaderadj; + $bh = $this->y - $by; + if (!$table['borders_separate']) { + $bh -= $table['max_cell_border_width']['B'] / 2; + } + + if ($split) { + $bw = 0; + $finalSpread = true; + for ($t = $startcol; $t < $numcols; $t++) { + if ($table['colPg'][$t] == $splitpg) { + $bw += $table['wc'][$t]; + } + if ($table['colPg'][$t] > $splitpg) { + $finalSpread = false; + break; + } + } + if ($startcol == 0) { + $firstSpread = true; + } else { + $firstSpread = false; + } + if ($table['borders_separate']) { + $bw += $table['border_spacing_H']; + if ($firstSpread) { + $bw += $table['padding']['L'] + $table['border_details']['L']['w']; + } else { + $bx += ($table['padding']['L'] + $table['border_details']['L']['w']); + } + if ($finalSpread) { + $bw += $table['padding']['R'] + $table['border_details']['R']['w']; + } + } + } else { + $bw = $table['w'] - ($table['max_cell_border_width']['L'] / 2) - ($table['max_cell_border_width']['R'] / 2) - $table['margin']['L'] - $table['margin']['R']; + } + + if (!$this->ColActive) { + if (isset($table['bgcolor'][-1])) { + $color = $this->colorConverter->convert($table['bgcolor'][-1], $this->PDFAXwarnings); + if ($color) { + $this->tableBackgrounds[$level * 9][] = ['gradient' => false, 'x' => $bx, 'y' => $by, 'w' => $bw, 'h' => $bh, 'col' => $color]; + } + } + + /* -- BACKGROUNDS -- */ + if (isset($table['gradient'])) { + $g = $this->gradient->parseBackgroundGradient($table['gradient']); + if ($g) { + $this->tableBackgrounds[$level * 9 + 1][] = ['gradient' => true, 'x' => $bx, 'y' => $by, 'w' => $bw, 'h' => $bh, 'gradtype' => $g['type'], 'stops' => $g['stops'], 'colorspace' => $g['colorspace'], 'coords' => $g['coords'], 'extend' => $g['extend'], 'clippath' => '']; + } + } + + if (isset($table['background-image'])) { + if (isset($table['background-image']['gradient']) && $table['background-image']['gradient'] && preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient/', $table['background-image']['gradient'])) { + $g = $this->gradient->parseMozGradient($table['background-image']['gradient']); + if ($g) { + $this->tableBackgrounds[$level * 9 + 1][] = ['gradient' => true, 'x' => $bx, 'y' => $by, 'w' => $bw, 'h' => $bh, 'gradtype' => $g['type'], 'stops' => $g['stops'], 'colorspace' => $g['colorspace'], 'coords' => $g['coords'], 'extend' => $g['extend'], 'clippath' => '']; + } + } else { + $image_id = $table['background-image']['image_id']; + $orig_w = $table['background-image']['orig_w']; + $orig_h = $table['background-image']['orig_h']; + $x_pos = $table['background-image']['x_pos']; + $y_pos = $table['background-image']['y_pos']; + $x_repeat = $table['background-image']['x_repeat']; + $y_repeat = $table['background-image']['y_repeat']; + $resize = $table['background-image']['resize']; + $opacity = $table['background-image']['opacity']; + $itype = $table['background-image']['itype']; + $this->tableBackgrounds[$level * 9 + 2][] = ['x' => $bx, 'y' => $by, 'w' => $bw, 'h' => $bh, 'image_id' => $image_id, 'orig_w' => $orig_w, 'orig_h' => $orig_h, 'x_pos' => $x_pos, 'y_pos' => $y_pos, 'x_repeat' => $x_repeat, 'y_repeat' => $y_repeat, 'clippath' => '', 'resize' => $resize, 'opacity' => $opacity, 'itype' => $itype]; + } + } + /* -- END BACKGROUNDS -- */ + } + + if ($this->tableBackgrounds && $level == 1) { + $s = $this->PrintTableBackgrounds(); + if ($this->table_rotate && !$this->processingHeader && !$this->processingFooter) { + $this->tablebuffer = preg_replace('/(___TABLE___BACKGROUNDS' . $this->uniqstr . ')/', '\\1' . "\n" . $s . "\n", $this->tablebuffer); + if ($level == 1) { + $this->tablebuffer = preg_replace('/(___TABLE___BACKGROUNDS' . $this->uniqstr . ')/', " ", $this->tablebuffer); + } + } elseif ($this->bufferoutput) { + $this->headerbuffer = preg_replace('/(___TABLE___BACKGROUNDS' . $this->uniqstr . ')/', '\\1' . "\n" . $s . "\n", $this->headerbuffer); + if ($level == 1) { + $this->headerbuffer = preg_replace('/(___TABLE___BACKGROUNDS' . $this->uniqstr . ')/', " ", $this->headerbuffer); + } + } else { + $this->pages[$this->page] = preg_replace('/(___TABLE___BACKGROUNDS' . $this->uniqstr . ')/', '\\1' . "\n" . $s . "\n", $this->pages[$this->page]); + if ($level == 1) { + $this->pages[$this->page] = preg_replace('/(___TABLE___BACKGROUNDS' . $this->uniqstr . ')/', " ", $this->pages[$this->page]); + } + } + $this->tableBackgrounds = []; + } + + + // TABLE BOTTOM MARGIN + if ($table['margin']['B']) { + if (!$this->table_rotate && $level == 1) { + $this->DivLn($table['margin']['B'], $this->blklvl, true); // collapsible + } else { + $this->y += ($table['margin']['B']); + } + } + + if ($this->ColActive && $level == 1) { + $this->breakpoints[$this->CurrCol][] = $this->y; + } // *COLUMNS* + + if ($split) { + // Are there more columns to print on a next page? + if ($lastCol < $numcols - 1) { + $splitpg++; + $startcol = $lastCol + 1; + return [false, $startrow, $startcol, $splitpg, $returny, $y0]; + } else { + return [true, 0, 0, 0, false, false]; + } + } + } + + // END OF FUNCTION _tableWrite() + /////////////////////////END OF TABLE CODE////////////////////////////////// + /* -- END TABLES -- */ + + function _putextgstates() + { + for ($i = 1; $i <= count($this->extgstates); $i++) { + $this->writer->object(); + $this->extgstates[$i]['n'] = $this->n; + $this->writer->write('<</Type /ExtGState'); + foreach ($this->extgstates[$i]['parms'] as $k => $v) { + $this->writer->write('/' . $k . ' ' . $v); + } + $this->writer->write('>>'); + $this->writer->write('endobj'); + } + } + + function SetProtection($permissions = [], $user_pass = '', $owner_pass = null, $length = 40) + { + $this->encrypted = $this->protection->setProtection($permissions, $user_pass, $owner_pass, $length); + } + + // ========================================= + // FROM class PDF_Bookmark + function Bookmark($txt, $level = 0, $y = 0) + { + $txt = $this->purify_utf8_text($txt); + if ($this->text_input_as_HTML) { + $txt = $this->all_entities_to_utf8($txt); + } + if ($y == -1) { + if (!$this->ColActive) { + $y = $this->y; + } else { + $y = $this->y0; + } // If columns are on - mark top of columns + } + + // else y is used as set, or =0 i.e. top of page + // DIRECTIONALITY RTL + $bmo = ['t' => $txt, 'l' => $level, 'y' => $y, 'p' => $this->page]; + + if ($this->keep_block_together) { + // do nothing + } elseif ($this->table_rotate) { + $this->tbrot_BMoutlines[] = $bmo; + } elseif ($this->kwt) { + $this->kwt_BMoutlines[] = $bmo; + } elseif ($this->ColActive) { + $this->col_BMoutlines[] = $bmo; + } else { + $this->BMoutlines[] = $bmo; + } + } + + /** + * Initiate, and Mark a place for the Table of Contents to be inserted + */ + function TOC( + $tocfont = '', + $tocfontsize = 0, + $tocindent = 0, + $resetpagenum = '', + $pagenumstyle = '', + $suppress = '', + $toc_orientation = '', + $TOCusePaging = true, + $TOCuseLinking = false, + $toc_id = 0, + $tocoutdent = '' + ) { + + $this->tableOfContents->TOC( + $tocfont, + $tocfontsize, + $tocindent, + $resetpagenum, + $pagenumstyle, + $suppress, + $toc_orientation, + $TOCusePaging, + $TOCuseLinking, + $toc_id, + $tocoutdent + ); + } + + function TOCpagebreakByArray($a) + { + if (!is_array($a)) { + $a = []; + } + $tocoutdent = (isset($a['tocoutdent']) ? $a['tocoutdent'] : (isset($a['outdent']) ? $a['outdent'] : '')); + $TOCusePaging = (isset($a['TOCusePaging']) ? $a['TOCusePaging'] : (isset($a['paging']) ? $a['paging'] : true)); + $TOCuseLinking = (isset($a['TOCuseLinking']) ? $a['TOCuseLinking'] : (isset($a['links']) ? $a['links'] : '')); + $toc_orientation = (isset($a['toc_orientation']) ? $a['toc_orientation'] : (isset($a['toc-orientation']) ? $a['toc-orientation'] : '')); + $toc_mgl = (isset($a['toc_mgl']) ? $a['toc_mgl'] : (isset($a['toc-margin-left']) ? $a['toc-margin-left'] : '')); + $toc_mgr = (isset($a['toc_mgr']) ? $a['toc_mgr'] : (isset($a['toc-margin-right']) ? $a['toc-margin-right'] : '')); + $toc_mgt = (isset($a['toc_mgt']) ? $a['toc_mgt'] : (isset($a['toc-margin-top']) ? $a['toc-margin-top'] : '')); + $toc_mgb = (isset($a['toc_mgb']) ? $a['toc_mgb'] : (isset($a['toc-margin-bottom']) ? $a['toc-margin-bottom'] : '')); + $toc_mgh = (isset($a['toc_mgh']) ? $a['toc_mgh'] : (isset($a['toc-margin-header']) ? $a['toc-margin-header'] : '')); + $toc_mgf = (isset($a['toc_mgf']) ? $a['toc_mgf'] : (isset($a['toc-margin-footer']) ? $a['toc-margin-footer'] : '')); + $toc_ohname = (isset($a['toc_ohname']) ? $a['toc_ohname'] : (isset($a['toc-odd-header-name']) ? $a['toc-odd-header-name'] : '')); + $toc_ehname = (isset($a['toc_ehname']) ? $a['toc_ehname'] : (isset($a['toc-even-header-name']) ? $a['toc-even-header-name'] : '')); + $toc_ofname = (isset($a['toc_ofname']) ? $a['toc_ofname'] : (isset($a['toc-odd-footer-name']) ? $a['toc-odd-footer-name'] : '')); + $toc_efname = (isset($a['toc_efname']) ? $a['toc_efname'] : (isset($a['toc-even-footer-name']) ? $a['toc-even-footer-name'] : '')); + $toc_ohvalue = (isset($a['toc_ohvalue']) ? $a['toc_ohvalue'] : (isset($a['toc-odd-header-value']) ? $a['toc-odd-header-value'] : 0)); + $toc_ehvalue = (isset($a['toc_ehvalue']) ? $a['toc_ehvalue'] : (isset($a['toc-even-header-value']) ? $a['toc-even-header-value'] : 0)); + $toc_ofvalue = (isset($a['toc_ofvalue']) ? $a['toc_ofvalue'] : (isset($a['toc-odd-footer-value']) ? $a['toc-odd-footer-value'] : 0)); + $toc_efvalue = (isset($a['toc_efvalue']) ? $a['toc_efvalue'] : (isset($a['toc-even-footer-value']) ? $a['toc-even-footer-value'] : 0)); + $toc_preHTML = (isset($a['toc_preHTML']) ? $a['toc_preHTML'] : (isset($a['toc-preHTML']) ? $a['toc-preHTML'] : '')); + $toc_postHTML = (isset($a['toc_postHTML']) ? $a['toc_postHTML'] : (isset($a['toc-postHTML']) ? $a['toc-postHTML'] : '')); + $toc_bookmarkText = (isset($a['toc_bookmarkText']) ? $a['toc_bookmarkText'] : (isset($a['toc-bookmarkText']) ? $a['toc-bookmarkText'] : '')); + $resetpagenum = (isset($a['resetpagenum']) ? $a['resetpagenum'] : ''); + $pagenumstyle = (isset($a['pagenumstyle']) ? $a['pagenumstyle'] : ''); + $suppress = (isset($a['suppress']) ? $a['suppress'] : ''); + $orientation = (isset($a['orientation']) ? $a['orientation'] : ''); + $mgl = (isset($a['mgl']) ? $a['mgl'] : (isset($a['margin-left']) ? $a['margin-left'] : '')); + $mgr = (isset($a['mgr']) ? $a['mgr'] : (isset($a['margin-right']) ? $a['margin-right'] : '')); + $mgt = (isset($a['mgt']) ? $a['mgt'] : (isset($a['margin-top']) ? $a['margin-top'] : '')); + $mgb = (isset($a['mgb']) ? $a['mgb'] : (isset($a['margin-bottom']) ? $a['margin-bottom'] : '')); + $mgh = (isset($a['mgh']) ? $a['mgh'] : (isset($a['margin-header']) ? $a['margin-header'] : '')); + $mgf = (isset($a['mgf']) ? $a['mgf'] : (isset($a['margin-footer']) ? $a['margin-footer'] : '')); + $ohname = (isset($a['ohname']) ? $a['ohname'] : (isset($a['odd-header-name']) ? $a['odd-header-name'] : '')); + $ehname = (isset($a['ehname']) ? $a['ehname'] : (isset($a['even-header-name']) ? $a['even-header-name'] : '')); + $ofname = (isset($a['ofname']) ? $a['ofname'] : (isset($a['odd-footer-name']) ? $a['odd-footer-name'] : '')); + $efname = (isset($a['efname']) ? $a['efname'] : (isset($a['even-footer-name']) ? $a['even-footer-name'] : '')); + $ohvalue = (isset($a['ohvalue']) ? $a['ohvalue'] : (isset($a['odd-header-value']) ? $a['odd-header-value'] : 0)); + $ehvalue = (isset($a['ehvalue']) ? $a['ehvalue'] : (isset($a['even-header-value']) ? $a['even-header-value'] : 0)); + $ofvalue = (isset($a['ofvalue']) ? $a['ofvalue'] : (isset($a['odd-footer-value']) ? $a['odd-footer-value'] : 0)); + $efvalue = (isset($a['efvalue']) ? $a['efvalue'] : (isset($a['even-footer-value']) ? $a['even-footer-value'] : 0)); + $toc_id = (isset($a['toc_id']) ? $a['toc_id'] : (isset($a['name']) ? $a['name'] : 0)); + $pagesel = (isset($a['pagesel']) ? $a['pagesel'] : (isset($a['pageselector']) ? $a['pageselector'] : '')); + $toc_pagesel = (isset($a['toc_pagesel']) ? $a['toc_pagesel'] : (isset($a['toc-pageselector']) ? $a['toc-pageselector'] : '')); + $sheetsize = (isset($a['sheetsize']) ? $a['sheetsize'] : (isset($a['sheet-size']) ? $a['sheet-size'] : '')); + $toc_sheetsize = (isset($a['toc_sheetsize']) ? $a['toc_sheetsize'] : (isset($a['toc-sheet-size']) ? $a['toc-sheet-size'] : '')); + + $this->TOCpagebreak('', '', '', $TOCusePaging, $TOCuseLinking, $toc_orientation, $toc_mgl, $toc_mgr, $toc_mgt, $toc_mgb, $toc_mgh, $toc_mgf, $toc_ohname, $toc_ehname, $toc_ofname, $toc_efname, $toc_ohvalue, $toc_ehvalue, $toc_ofvalue, $toc_efvalue, $toc_preHTML, $toc_postHTML, $toc_bookmarkText, $resetpagenum, $pagenumstyle, $suppress, $orientation, $mgl, $mgr, $mgt, $mgb, $mgh, $mgf, $ohname, $ehname, $ofname, $efname, $ohvalue, $ehvalue, $ofvalue, $efvalue, $toc_id, $pagesel, $toc_pagesel, $sheetsize, $toc_sheetsize, $tocoutdent); + } + + function TOCpagebreak($tocfont = '', $tocfontsize = '', $tocindent = '', $TOCusePaging = true, $TOCuseLinking = '', $toc_orientation = '', $toc_mgl = '', $toc_mgr = '', $toc_mgt = '', $toc_mgb = '', $toc_mgh = '', $toc_mgf = '', $toc_ohname = '', $toc_ehname = '', $toc_ofname = '', $toc_efname = '', $toc_ohvalue = 0, $toc_ehvalue = 0, $toc_ofvalue = 0, $toc_efvalue = 0, $toc_preHTML = '', $toc_postHTML = '', $toc_bookmarkText = '', $resetpagenum = '', $pagenumstyle = '', $suppress = '', $orientation = '', $mgl = '', $mgr = '', $mgt = '', $mgb = '', $mgh = '', $mgf = '', $ohname = '', $ehname = '', $ofname = '', $efname = '', $ohvalue = 0, $ehvalue = 0, $ofvalue = 0, $efvalue = 0, $toc_id = 0, $pagesel = '', $toc_pagesel = '', $sheetsize = '', $toc_sheetsize = '', $tocoutdent = '') + { + // Start a new page + if ($this->state == 0) { + $this->AddPage(); + } + if ($this->y == $this->tMargin && (!$this->mirrorMargins || ($this->mirrorMargins && $this->page % 2 == 1))) { + // Don't add a page + if ($this->page == 1 && count($this->PageNumSubstitutions) == 0) { + if (!$suppress) { + $suppress = 'off'; + } + // $this->PageNumSubstitutions[] = array('from'=>1, 'reset'=> $resetpagenum, 'type'=>$pagenumstyle, 'suppress'=> $suppress); + } + $this->PageNumSubstitutions[] = ['from' => $this->page, 'reset' => $resetpagenum, 'type' => $pagenumstyle, 'suppress' => $suppress]; + } else { + $this->AddPage($orientation, 'NEXT-ODD', $resetpagenum, $pagenumstyle, $suppress, $mgl, $mgr, $mgt, $mgb, $mgh, $mgf, $ohname, $ehname, $ofname, $efname, $ohvalue, $ehvalue, $ofvalue, $efvalue, $pagesel, $sheetsize); + } + $this->tableOfContents->TOCpagebreak($tocfont, $tocfontsize, $tocindent, $TOCusePaging, $TOCuseLinking, $toc_orientation, $toc_mgl, $toc_mgr, $toc_mgt, $toc_mgb, $toc_mgh, $toc_mgf, $toc_ohname, $toc_ehname, $toc_ofname, $toc_efname, $toc_ohvalue, $toc_ehvalue, $toc_ofvalue, $toc_efvalue, $toc_preHTML, $toc_postHTML, $toc_bookmarkText, $resetpagenum, $pagenumstyle, $suppress, $orientation, $mgl, $mgr, $mgt, $mgb, $mgh, $mgf, $ohname, $ehname, $ofname, $efname, $ohvalue, $ehvalue, $ofvalue, $efvalue, $toc_id, $pagesel, $toc_pagesel, $sheetsize, $toc_sheetsize, $tocoutdent); + } + + function TOC_Entry($txt, $level = 0, $toc_id = 0) + { + if ($this->ColActive) { + $ily = $this->y0; + } else { + $ily = $this->y; + } // use top of columns + + $linkn = $this->AddLink(); + $uid = '__mpdfinternallink_' . $linkn; + if ($this->table_rotate) { + $this->internallink[$uid] = ["Y" => $ily, "PAGE" => $this->page, "tbrot" => true]; + } elseif ($this->kwt) { + $this->internallink[$uid] = ["Y" => $ily, "PAGE" => $this->page, "kwt" => true]; + } elseif ($this->ColActive) { + $this->internallink[$uid] = ["Y" => $ily, "PAGE" => $this->page, "col" => $this->CurrCol]; + } elseif (!$this->keep_block_together) { + $this->internallink[$uid] = ["Y" => $ily, "PAGE" => $this->page]; + } + $this->internallink['#' . $uid] = $linkn; + $this->SetLink($linkn, $ily, $this->page); + + if (strtoupper($toc_id) == 'ALL') { + $toc_id = '_mpdf_all'; + } elseif (!$toc_id) { + $toc_id = 0; + } else { + $toc_id = strtolower($toc_id); + } + $btoc = ['t' => $txt, 'l' => $level, 'p' => $this->page, 'link' => $linkn, 'toc_id' => $toc_id]; + if ($this->keep_block_together) { + // do nothing + } /* -- TABLES -- */ elseif ($this->table_rotate) { + $this->tbrot_toc[] = $btoc; + } elseif ($this->kwt) { + $this->kwt_toc[] = $btoc; + } /* -- END TABLES -- */ elseif ($this->ColActive) { // *COLUMNS* + $this->col_toc[] = $btoc; // *COLUMNS* + } // *COLUMNS* + else { + $this->tableOfContents->_toc[] = $btoc; + } + } + + /* -- END TOC -- */ + + // ====================================================== + function MovePages($target_page, $start_page, $end_page = -1) + { + // move a page/pages EARLIER in the document + if ($end_page < 1) { + $end_page = $start_page; + } + $n_toc = $end_page - $start_page + 1; + + // Set/Update PageNumSubstitutions changes before moving anything + if (count($this->PageNumSubstitutions)) { + $tp_present = false; + $sp_present = false; + $ep_present = false; + foreach ($this->PageNumSubstitutions as $k => $v) { + if ($this->PageNumSubstitutions[$k]['from'] == $target_page) { + $tp_present = true; + if ($this->PageNumSubstitutions[$k]['suppress'] != 'on' && $this->PageNumSubstitutions[$k]['suppress'] != 1) { + $this->PageNumSubstitutions[$k]['suppress'] = 'off'; + } + } + if ($this->PageNumSubstitutions[$k]['from'] == $start_page) { + $sp_present = true; + if ($this->PageNumSubstitutions[$k]['suppress'] != 'on' && $this->PageNumSubstitutions[$k]['suppress'] != 1) { + $this->PageNumSubstitutions[$k]['suppress'] = 'off'; + } + } + if ($this->PageNumSubstitutions[$k]['from'] == ($end_page + 1)) { + $ep_present = true; + if ($this->PageNumSubstitutions[$k]['suppress'] != 'on' && $this->PageNumSubstitutions[$k]['suppress'] != 1) { + $this->PageNumSubstitutions[$k]['suppress'] = 'off'; + } + } + } + + if (!$tp_present) { + list($tp_type, $tp_suppress, $tp_reset) = $this->docPageSettings($target_page); + } + if (!$sp_present) { + list($sp_type, $sp_suppress, $sp_reset) = $this->docPageSettings($start_page); + } + if (!$ep_present) { + list($ep_type, $ep_suppress, $ep_reset) = $this->docPageSettings($start_page - 1); + } + } + + $last = []; + // store pages + for ($i = $start_page; $i <= $end_page; $i++) { + $last[] = $this->pages[$i]; + } + // move pages + for ($i = $start_page - 1; $i >= ($target_page); $i--) { + $this->pages[$i + $n_toc] = $this->pages[$i]; + } + // Put toc pages at insert point + for ($i = 0; $i < $n_toc; $i++) { + $this->pages[$target_page + $i] = $last[$i]; + } + + /* -- BOOKMARKS -- */ + // Update Bookmarks + foreach ($this->BMoutlines as $i => $o) { + if ($o['p'] >= $target_page) { + $this->BMoutlines[$i]['p'] += $n_toc; + } + } + /* -- END BOOKMARKS -- */ + + // Update Page Links + if (count($this->PageLinks)) { + $newarr = []; + foreach ($this->PageLinks as $i => $o) { + foreach ($this->PageLinks[$i] as $key => $pl) { + if (strpos($pl[4], '@') === 0) { + $p = substr($pl[4], 1); + if ($p >= $start_page && $p <= $end_page) { + $this->PageLinks[$i][$key][4] = '@' . ($p + ($target_page - $start_page)); + } elseif ($p >= $target_page && $p < $start_page) { + $this->PageLinks[$i][$key][4] = '@' . ($p + $n_toc); + } + } + } + if ($i >= $start_page && $i <= $end_page) { + $newarr[($i + ($target_page - $start_page))] = $this->PageLinks[$i]; + } elseif ($i >= $target_page && $i < $start_page) { + $newarr[($i + $n_toc)] = $this->PageLinks[$i]; + } else { + $newarr[$i] = $this->PageLinks[$i]; + } + } + $this->PageLinks = $newarr; + } + + // OrientationChanges + if (count($this->OrientationChanges)) { + $newarr = []; + foreach ($this->OrientationChanges as $p => $v) { + if ($p >= $start_page && $p <= $end_page) { + $newarr[($p + ($target_page - $start_page))] = $this->OrientationChanges[$p]; + } elseif ($p >= $target_page && $p < $start_page) { + $newarr[$p + $n_toc] = $this->OrientationChanges[$p]; + } else { + $newarr[$p] = $this->OrientationChanges[$p]; + } + } + ksort($newarr); + $this->OrientationChanges = $newarr; + } + + // Page Dimensions + if (count($this->pageDim)) { + $newarr = []; + foreach ($this->pageDim as $p => $v) { + if ($p >= $start_page && $p <= $end_page) { + $newarr[($p + ($target_page - $start_page))] = $this->pageDim[$p]; + } elseif ($p >= $target_page && $p < $start_page) { + $newarr[$p + $n_toc] = $this->pageDim[$p]; + } else { + $newarr[$p] = $this->pageDim[$p]; + } + } + ksort($newarr); + $this->pageDim = $newarr; + } + + // HTML Headers & Footers + if (count($this->saveHTMLHeader)) { + $newarr = []; + foreach ($this->saveHTMLHeader as $p => $v) { + if ($p >= $start_page && $p <= $end_page) { + $newarr[($p + ($target_page - $start_page))] = $this->saveHTMLHeader[$p]; + } elseif ($p >= $target_page && $p < $start_page) { + $newarr[$p + $n_toc] = $this->saveHTMLHeader[$p]; + } else { + $newarr[$p] = $this->saveHTMLHeader[$p]; + } + } + ksort($newarr); + $this->saveHTMLHeader = $newarr; + } + if (count($this->saveHTMLFooter)) { + $newarr = []; + foreach ($this->saveHTMLFooter as $p => $v) { + if ($p >= $start_page && $p <= $end_page) { + $newarr[($p + ($target_page - $start_page))] = $this->saveHTMLFooter[$p]; + } elseif ($p >= $target_page && $p < $start_page) { + $newarr[$p + $n_toc] = $this->saveHTMLFooter[$p]; + } else { + $newarr[$p] = $this->saveHTMLFooter[$p]; + } + } + ksort($newarr); + $this->saveHTMLFooter = $newarr; + } + + // Update Internal Links + if (count($this->internallink)) { + foreach ($this->internallink as $key => $o) { + if (is_array($o) && $o['PAGE'] >= $start_page && $o['PAGE'] <= $end_page) { + $this->internallink[$key]['PAGE'] += ($target_page - $start_page); + } elseif (is_array($o) && $o['PAGE'] >= $target_page && $o['PAGE'] < $start_page) { + $this->internallink[$key]['PAGE'] += $n_toc; + } + } + } + + // Update Links + if (count($this->links)) { + foreach ($this->links as $key => $o) { + if ($o[0] >= $start_page && $o[0] <= $end_page) { + $this->links[$key][0] += ($target_page - $start_page); + } + if ($o[0] >= $target_page && $o[0] < $start_page) { + $this->links[$key][0] += $n_toc; + } + } + } + + // Update Form fields + if (count($this->form->forms)) { + foreach ($this->form->forms as $key => $f) { + if ($f['page'] >= $start_page && $f['page'] <= $end_page) { + $this->form->forms[$key]['page'] += ($target_page - $start_page); + } + if ($f['page'] >= $target_page && $f['page'] < $start_page) { + $this->form->forms[$key]['page'] += $n_toc; + } + } + } + + /* -- ANNOTATIONS -- */ + // Update Annotations + if (count($this->PageAnnots)) { + $newarr = []; + foreach ($this->PageAnnots as $p => $anno) { + if ($p >= $start_page && $p <= $end_page) { + $np = $p + ($target_page - $start_page); + foreach ($anno as $o) { + $newarr[$np][] = $o; + } + } elseif ($p >= $target_page && $p < $start_page) { + $np = $p + $n_toc; + foreach ($anno as $o) { + $newarr[$np][] = $o; + } + } else { + $newarr[$p] = $this->PageAnnots[$p]; + } + } + $this->PageAnnots = $newarr; + unset($newarr); + } + /* -- END ANNOTATIONS -- */ + + // Update TOC pages + if (count($this->tableOfContents->_toc)) { + foreach ($this->tableOfContents->_toc as $key => $t) { + if ($t['p'] >= $start_page && $t['p'] <= $end_page) { + $this->tableOfContents->_toc[$key]['p'] += ($target_page - $start_page); + } + if ($t['p'] >= $target_page && $t['p'] < $start_page) { + $this->tableOfContents->_toc[$key]['p'] += $n_toc; + } + } + } + + // Update PageNumSubstitutions + if (count($this->PageNumSubstitutions)) { + $newarr = []; + foreach ($this->PageNumSubstitutions as $k => $v) { + if ($this->PageNumSubstitutions[$k]['from'] >= $start_page && $this->PageNumSubstitutions[$k]['from'] <= $end_page) { + $this->PageNumSubstitutions[$k]['from'] += ($target_page - $start_page); + $newarr[$this->PageNumSubstitutions[$k]['from']] = $this->PageNumSubstitutions[$k]; + } elseif ($this->PageNumSubstitutions[$k]['from'] >= $target_page && $this->PageNumSubstitutions[$k]['from'] < $start_page) { + $this->PageNumSubstitutions[$k]['from'] += $n_toc; + $newarr[$this->PageNumSubstitutions[$k]['from']] = $this->PageNumSubstitutions[$k]; + } else { + $newarr[$this->PageNumSubstitutions[$k]['from']] = $this->PageNumSubstitutions[$k]; + } + } + + if (!$sp_present) { + $newarr[$target_page] = ['from' => $target_page, 'suppress' => $sp_suppress, 'reset' => $sp_reset, 'type' => $sp_type]; + } + if (!$tp_present) { + $newarr[($target_page + $n_toc)] = ['from' => ($target_page + $n_toc), 'suppress' => $tp_suppress, 'reset' => $tp_reset, 'type' => $tp_type]; + } + if (!$ep_present && $end_page > count($this->pages)) { + $newarr[($end_page + 1)] = ['from' => ($end_page + 1), 'suppress' => $ep_suppress, 'reset' => $ep_reset, 'type' => $ep_type]; + } + ksort($newarr); + $this->PageNumSubstitutions = []; + foreach ($newarr as $v) { + $this->PageNumSubstitutions[] = $v; + } + } + } + + function DeletePages($start_page, $end_page = -1) + { + // move a page/pages EARLIER in the document + if ($end_page < 1) { + $end_page = $start_page; + } + $n_tod = $end_page - $start_page + 1; + $last_page = count($this->pages); + $n_atend = $last_page - $end_page + 1; + + // move pages + for ($i = 0; $i < $n_atend; $i++) { + $this->pages[$start_page + $i] = $this->pages[$end_page + 1 + $i]; + } + // delete pages + for ($i = 0; $i < $n_tod; $i++) { + unset($this->pages[$last_page - $i]); + } + + + /* -- BOOKMARKS -- */ + // Update Bookmarks + foreach ($this->BMoutlines as $i => $o) { + if ($o['p'] >= $end_page) { + $this->BMoutlines[$i]['p'] -= $n_tod; + } elseif ($p < $start_page) { + unset($this->BMoutlines[$i]); + } + } + /* -- END BOOKMARKS -- */ + + // Update Page Links + if (count($this->PageLinks)) { + $newarr = []; + foreach ($this->PageLinks as $i => $o) { + foreach ($this->PageLinks[$i] as $key => $pl) { + if (strpos($pl[4], '@') === 0) { + $p = substr($pl[4], 1); + if ($p > $end_page) { + $this->PageLinks[$i][$key][4] = '@' . ($p - $n_tod); + } elseif ($p < $start_page) { + unset($this->PageLinks[$i][$key]); + } + } + } + if ($i > $end_page) { + $newarr[($i - $n_tod)] = $this->PageLinks[$i]; + } elseif ($p < $start_page) { + $newarr[$i] = $this->PageLinks[$i]; + } + } + $this->PageLinks = $newarr; + } + + // OrientationChanges + if (count($this->OrientationChanges)) { + $newarr = []; + foreach ($this->OrientationChanges as $p => $v) { + if ($p > $end_page) { + $newarr[($p - $t_tod)] = $this->OrientationChanges[$p]; + } elseif ($p < $start_page) { + $newarr[$p] = $this->OrientationChanges[$p]; + } + } + ksort($newarr); + $this->OrientationChanges = $newarr; + } + + // Page Dimensions + if (count($this->pageDim)) { + $newarr = []; + foreach ($this->pageDim as $p => $v) { + if ($p > $end_page) { + $newarr[($p - $n_tod)] = $this->pageDim[$p]; + } elseif ($p < $start_page) { + $newarr[$p] = $this->pageDim[$p]; + } + } + ksort($newarr); + $this->pageDim = $newarr; + } + + // HTML Headers & Footers + if (count($this->saveHTMLHeader)) { + foreach ($this->saveHTMLHeader as $p => $v) { + if ($p > $end_page) { + $newarr[($p - $n_tod)] = $this->saveHTMLHeader[$p]; + } // mPDF 5.7.3 + elseif ($p < $start_page) { + $newarr[$p] = $this->saveHTMLHeader[$p]; + } + } + ksort($newarr); + $this->saveHTMLHeader = $newarr; + } + if (count($this->saveHTMLFooter)) { + $newarr = []; + foreach ($this->saveHTMLFooter as $p => $v) { + if ($p > $end_page) { + $newarr[($p - $n_tod)] = $this->saveHTMLFooter[$p]; + } elseif ($p < $start_page) { + $newarr[$p] = $this->saveHTMLFooter[$p]; + } + } + ksort($newarr); + $this->saveHTMLFooter = $newarr; + } + + // Update Internal Links + foreach ($this->internallink as $key => $o) { + if ($o['PAGE'] > $end_page) { + $this->internallink[$key]['PAGE'] -= $n_tod; + } elseif ($o['PAGE'] < $start_page) { + unset($this->internallink[$key]); + } + } + + // Update Links + foreach ($this->links as $key => $o) { + if ($o[0] > $end_page) { + $this->links[$key][0] -= $n_tod; + } elseif ($o[0] < $start_page) { + unset($this->links[$key]); + } + } + + // Update Form fields + foreach ($this->form->forms as $key => $f) { + if ($f['page'] > $end_page) { + $this->form->forms[$key]['page'] -= $n_tod; + } elseif ($f['page'] < $start_page) { + unset($this->form->forms[$key]); + } + } + + /* -- ANNOTATIONS -- */ + // Update Annotations + if (count($this->PageAnnots)) { + $newarr = []; + foreach ($this->PageAnnots as $p => $anno) { + if ($p > $end_page) { + foreach ($anno as $o) { + $newarr[($p - $n_tod)][] = $o; + } + } elseif ($p < $start_page) { + $newarr[$p] = $this->PageAnnots[$p]; + } + } + ksort($newarr); + $this->PageAnnots = $newarr; + } + /* -- END ANNOTATIONS -- */ + + // Update PageNumSubstitutions + foreach ($this->PageNumSubstitutions as $k => $v) { + if ($this->PageNumSubstitutions[$k]['from'] > $end_page) { + $this->PageNumSubstitutions[$k]['from'] -= $n_tod; + } elseif ($this->PageNumSubstitutions[$k]['from'] < $start_page) { + unset($this->PageNumSubstitutions[$k]); + } + } + + unset($newarr); + $this->page = count($this->pages); + } + + // ====================================================== + /* -- INDEX -- */ + // FROM class PDF_Ref == INDEX + + function IndexEntry($txt, $xref = '') + { + if ($xref) { + $this->IndexEntrySee($txt, $xref); + return; + } + + // Search the reference (AND Ref/PageNo) in the array + $Present = false; + if ($this->keep_block_together) { + // do nothing + } /* -- TABLES -- */ elseif ($this->kwt) { + $size = count($this->kwt_Reference); + for ($i = 0; $i < $size; $i++) { + if (isset($this->kwt_Reference[$i]['t']) && $this->kwt_Reference[$i]['t'] == $txt) { + $Present = true; + if ($this->page != $this->kwt_Reference[$i]['op']) { + $this->kwt_Reference[$i]['op'] = $this->page; + } + } + } + if (!$Present) { // If not found, add it + $this->kwt_Reference[] = ['t' => $txt, 'op' => $this->page]; + } + } /* -- END TABLES -- */ else { + $size = count($this->Reference); + for ($i = 0; $i < $size; $i++) { + if (isset($this->Reference[$i]['t']) && $this->Reference[$i]['t'] == $txt) { + $Present = true; + if (!in_array($this->page, $this->Reference[$i]['p'])) { + $this->Reference[$i]['p'][] = $this->page; + } + } + } + if (!$Present) { // If not found, add it + $this->Reference[] = ['t' => $txt, 'p' => [$this->page]]; + } + } + } + + // Added function to add a reference "Elephants. See Chickens" + function IndexEntrySee($txta, $txtb) + { + if ($this->directionality == 'rtl') { // *OTL* + // ONLY DO THIS IF NOT IN TAGS + if ($txta == strip_tags($txta)) { + $txta = str_replace(':', ' - ', $txta); // *OTL* + } + if ($txtb == strip_tags($txtb)) { + $txtb = str_replace(':', ' - ', $txtb); // *OTL* + } + } // *OTL* + else { // *OTL* + if ($txta == strip_tags($txta)) { + $txta = str_replace(':', ', ', $txta); + } + if ($txtb == strip_tags($txtb)) { + $txtb = str_replace(':', ', ', $txtb); + } + } // *OTL* + $this->Reference[] = ['t' => $txta . ' - see ' . $txtb, 'p' => []]; + } + + private function filesInDir($directory) + { + $files = []; + foreach ((new \DirectoryIterator($directory)) as $v) { + if ($v->isDir() || $v->isDot()) { + continue; + } + + $files[] = $v->getPathname(); + } + + return $files; + } + + function InsertIndex($usedivletters = 1, $useLinking = false, $indexCollationLocale = '', $indexCollationGroup = '') + { + $size = count($this->Reference); + if ($size == 0) { + return false; + } + + // $spacer used after named entry + // $sep separates number [groups], $joiner joins numbers in range + // e.g. "elephant 73, 97-99" = elephant[$spacer]73[$sep]97[$joiner]99 + // $subEntrySeparator separates main and subentry (if $this->indexUseSubentries == false;) e.g. + // Mammal:elephant => Mammal[$subEntrySeparator]elephant + // $subEntryInset specifies what precedes a subentry (if $this->indexUseSubentries == true;) e.g. + // Mammal:elephant => [$subEntryInset]elephant + $spacer = "\xc2\xa0 "; + if ($this->directionality == 'rtl') { + $sep = '، '; + $joiner = '-'; + $subEntrySeparator = '، '; + $subEntryInset = ' - '; + } else { + $sep = ', '; + $joiner = '-'; + $subEntrySeparator = ', '; + $subEntryInset = ' - '; + } + + for ($i = 0; $i < $size; $i++) { + $txt = $this->Reference[$i]['t']; + $txt = strip_tags($txt); // mPDF 6 + $txt = $this->purify_utf8($txt); + $this->Reference[$i]['uf'] = $txt; // Unformatted e.g. pure utf-8 encoded characters, no mark-up/tags + // Used for ordering and collation + } + + if ($usedivletters) { + if ($indexCollationGroup && \in_array(strtolower($indexCollationGroup), array_map(function ($v) { + return strtolower(basename($v, '.php')); + }, $this->filesInDir(__DIR__ . '//data/collations/')))) { + $collation = require __DIR__ . '//data/collations/' . $indexCollationGroup . '.php'; + } else { + $collation = []; + } + for ($i = 0; $i < $size; $i++) { + if ($this->Reference[$i]['uf']) { + $l = mb_substr($this->Reference[$i]['uf'], 0, 1, 'UTF-8'); + if (isset($indexCollationGroup) && $indexCollationGroup) { + $uni = $this->UTF8StringToArray($l); + $ucode = $uni[0]; + if (isset($collation[$ucode])) { + $this->Reference[$i]['d'] = UtfString::code2utf($collation[$ucode]); + } else { + $this->Reference[$i]['d'] = mb_strtolower($l, 'UTF-8'); + } + } else { + $this->Reference[$i]['d'] = mb_strtolower($l, 'UTF-8'); + } + } + } + } + + // Alphabetic sort of the references + $originalLocale = setlocale(LC_COLLATE, 0); + if ($indexCollationLocale) { + setlocale(LC_COLLATE, $indexCollationLocale); + } + + usort($this->Reference, function ($a, $b) { + return strcoll(strtolower($a['uf']), strtolower($b['uf'])); + }); + + if ($indexCollationLocale) { + setlocale(LC_COLLATE, $originalLocale); + } + + $html = '<div class="mpdf_index_main">'; + + $lett = ''; + $last_lett = ''; + $mainentry = ''; + for ($i = 0; $i < $size; $i++) { + if ($this->Reference[$i]['t']) { + if ($usedivletters) { + $lett = $this->Reference[$i]['d']; + if ($lett != $last_lett) { + $html .= '<div class="mpdf_index_letter">' . $lett . '</div>'; + } + } + $txt = $this->Reference[$i]['t']; + + // Sub-entries e.g. Mammals:elephant + // But allow for tags e.g. <b>Mammal</b>:elephants + $a = preg_split('/(<.*?>)/', $txt, -1, PREG_SPLIT_DELIM_CAPTURE); + $txt = ''; + $marker = false; + foreach ($a as $k => $e) { + if ($k % 2 == 0 && !$marker) { + if (strpos($e, ':') !== false) { // == SubEntry + if ($this->indexUseSubentries) { + // If the Main entry does not have any page numbers associated with it + // create and insert an entry + list($txtmain, $sub) = preg_split('/[:]/', $e, 2); + if (strip_tags($txt . $txtmain) != $mainentry) { + $html .= '<div class="mpdf_index_entry">' . $txt . $txtmain . '</div>'; + $mainentry = strip_tags($txt . $txtmain); + } + + $txt = $subEntryInset; + $e = $sub; // Only replace first one + } else { + $e = preg_replace('/[:]/', $subEntrySeparator, $e, 1); // Only replace first one + } + $marker = true; // Don't replace any more once the subentry marker has been found + } + } + $txt .= $e; + } + + if (!$marker) { + $mainentry = strip_tags($txt); + } + + $html .= '<div class="mpdf_index_entry">'; + $html .= $txt; + $ppp = $this->Reference[$i]['p']; // = array of page numbers to point to + if (count($ppp)) { + sort($ppp); + $newarr = []; + $range_start = $ppp[0]; + $range_end = 0; + + $html .= $spacer; + + for ($zi = 1; $zi < count($ppp); $zi++) { + if ($ppp[$zi] == ($ppp[($zi - 1)] + 1)) { + $range_end = $ppp[$zi]; + } else { + if ($range_end) { + if ($range_end == $range_start + 1) { + if ($useLinking) { + $html .= '<a class="mpdf_index_link" href="@' . $range_start . '">'; + } + $html .= $this->docPageNum($range_start); + if ($useLinking) { + $html .= '</a>'; + } + $html .= $sep; + + if ($useLinking) { + $html .= '<a class="mpdf_index_link" href="@' . $ppp[$zi - 1] . '">'; + } + $html .= $this->docPageNum($ppp[$zi - 1]); + if ($useLinking) { + $html .= '</a>'; + } + $html .= $sep; + } + } else { + if ($useLinking) { + $html .= '<a class="mpdf_index_link" href="@' . $ppp[$zi - 1] . '">'; + } + $html .= $this->docPageNum($ppp[$zi - 1]); + if ($useLinking) { + $html .= '</a>'; + } + $html .= $sep; + } + $range_start = $ppp[$zi]; + $range_end = 0; + } + } + + if ($range_end) { + if ($useLinking) { + $html .= '<a class="mpdf_index_link" href="@' . $range_start . '">'; + } + $html .= $this->docPageNum($range_start); + if ($range_end == $range_start + 1) { + if ($useLinking) { + $html .= '</a>'; + } + $html .= $sep; + if ($useLinking) { + $html .= '<a class="mpdf_index_link" href="@' . $range_end . '">'; + } + $html .= $this->docPageNum($range_end); + if ($useLinking) { + $html .= '</a>'; + } + } else { + $html .= $joiner; + $html .= $this->docPageNum($range_end); + if ($useLinking) { + $html .= '</a>'; + } + } + } else { + if ($useLinking) { + $html .= '<a class="mpdf_index_link" href="@' . $ppp[(count($ppp) - 1)] . '">'; + } + $html .= $this->docPageNum($ppp[(count($ppp) - 1)]); + if ($useLinking) { + $html .= '</a>'; + } + } + } + } + $html .= '</div>'; + $last_lett = $lett; + } + $html .= '</div>'; + $save_fpb = $this->fixedPosBlockSave; + $this->WriteHTML($html); + $this->fixedPosBlockSave = $save_fpb; + + $this->breakpoints[$this->CurrCol][] = $this->y; // *COLUMNS* + } + + /* -- END INDEX -- */ + + function AcceptPageBreak() + { + if (count($this->cellBorderBuffer)) { + $this->printcellbuffer(); + } // *TABLES* + /* -- COLUMNS -- */ + if ($this->ColActive == 1) { + if ($this->CurrCol < $this->NbCol - 1) { + // Go to the next column + $this->CurrCol++; + $this->SetCol($this->CurrCol); + $this->y = $this->y0; + $this->ChangeColumn = 1; // Number (and direction) of columns changed +1, +2, -2 etc. + // DIRECTIONALITY RTL + if ($this->directionality == 'rtl') { + $this->ChangeColumn = -($this->ChangeColumn); + } // *OTL* + // Stay on the page + return false; + } else { + // Go back to the first column - NEW PAGE + if (count($this->columnbuffer)) { + $this->printcolumnbuffer(); + } + $this->SetCol(0); + $this->y0 = $this->tMargin; + $this->ChangeColumn = -($this->NbCol - 1); + // DIRECTIONALITY RTL + if ($this->directionality == 'rtl') { + $this->ChangeColumn = -($this->ChangeColumn); + } // *OTL* + // Page break + return true; + } + } /* -- END COLUMNS -- */ + /* -- TABLES -- */ elseif ($this->table_rotate) { + if ($this->tablebuffer) { + $this->printtablebuffer(); + } + return true; + } /* -- END TABLES -- */ else { // *COLUMNS* + $this->ChangeColumn = 0; + return $this->autoPageBreak; + } // *COLUMNS* + return $this->autoPageBreak; + } + + // ----------- COLUMNS --------------------- + /* -- COLUMNS -- */ + + function SetColumns($NbCol, $vAlign = '', $gap = 5) + { + // NbCol = number of columns + // Anything less than 2 turns columns off + if ($NbCol < 2) { // SET COLUMNS OFF + if ($this->ColActive) { + $this->ColActive = 0; + if (count($this->columnbuffer)) { + $this->printcolumnbuffer(); + } + $this->NbCol = 1; + $this->ResetMargins(); + $this->pgwidth = $this->w - $this->lMargin - $this->rMargin; + $this->divwidth = 0; + $this->Ln(); + } + $this->ColActive = 0; + $this->columnbuffer = []; + $this->ColDetails = []; + $this->columnLinks = []; + $this->columnAnnots = []; + $this->columnForms = []; + $this->col_BMoutlines = []; + $this->col_toc = []; + $this->breakpoints = []; + } else { // SET COLUMNS ON + if ($this->ColActive) { + $this->ColActive = 0; + if (count($this->columnbuffer)) { + $this->printcolumnbuffer(); + } + $this->ResetMargins(); + } + if (isset($this->y) && $this->y > $this->tMargin) { + $this->Ln(); + } + $this->NbCol = $NbCol; + $this->ColGap = $gap; + $this->divwidth = 0; + $this->ColActive = 1; + $this->ColumnAdjust = true; // enables column height adjustment for the page + $this->columnbuffer = []; + $this->ColDetails = []; + $this->columnLinks = []; + $this->columnAnnots = []; + $this->columnForms = []; + $this->col_BMoutlines = []; + $this->col_toc = []; + $this->breakpoints = []; + if ((strtoupper($vAlign) == 'J') || (strtoupper($vAlign) == 'JUSTIFY')) { + $vAlign = 'J'; + } else { + $vAlign = ''; + } + $this->colvAlign = $vAlign; + // Save the ordinate + $absL = $this->DeflMargin - ($gap / 2); + $absR = $this->DefrMargin - ($gap / 2); + $PageWidth = $this->w - $absL - $absR; // virtual pagewidth for calculation only + $ColWidth = (($PageWidth - ($gap * ($NbCol))) / $NbCol); + $this->ColWidth = $ColWidth; + /* -- OTL -- */ + + if ($this->directionality == 'rtl') { + for ($i = 0; $i < $this->NbCol; $i++) { + $this->ColL[$i] = $absL + ($gap / 2) + (($NbCol - ($i + 1)) * ($PageWidth / $NbCol)); + $this->ColR[$i] = $this->ColL[$i] + $ColWidth; // NB This is not R margin -> R pos + } + } else { + /* -- END OTL -- */ + for ($i = 0; $i < $this->NbCol; $i++) { + $this->ColL[$i] = $absL + ($gap / 2) + ($i * ($PageWidth / $NbCol) ); + $this->ColR[$i] = $this->ColL[$i] + $ColWidth; // NB This is not R margin -> R pos + } + } // *OTL* + $this->pgwidth = $ColWidth; + $this->SetCol(0); + $this->y0 = $this->y; + } + $this->x = $this->lMargin; + } + + function SetCol($CurrCol) + { + // Used internally to set column by number: 0 is 1st column + // Set position on a column + $this->CurrCol = $CurrCol; + $x = $this->ColL[$CurrCol]; + $xR = $this->ColR[$CurrCol]; // NB This is not R margin -> R pos + if (($this->mirrorMargins) && (($this->page) % 2 == 0)) { // EVEN + $x += $this->MarginCorrection; + $xR += $this->MarginCorrection; + } + $this->SetMargins($x, ($this->w - $xR), $this->tMargin); + } + + function AddColumn() + { + $this->NewColumn(); + $this->ColumnAdjust = false; // disables all column height adjustment for the page. + } + + function NewColumn() + { + if ($this->ColActive == 1) { + if ($this->CurrCol < $this->NbCol - 1) { + // Go to the next column + $this->CurrCol++; + $this->SetCol($this->CurrCol); + $this->y = $this->y0; + $this->ChangeColumn = 1; + // DIRECTIONALITY RTL + if ($this->directionality == 'rtl') { + $this->ChangeColumn = -($this->ChangeColumn); + } // *OTL* + // Stay on the page + } else { + // Go back to the first column + // Page break + if (count($this->columnbuffer)) { + $this->printcolumnbuffer(); + } + $this->AddPage($this->CurOrientation); + $this->SetCol(0); + $this->y0 = $this->tMargin; + $this->ChangeColumn = -($this->NbCol - 1); + // DIRECTIONALITY RTL + if ($this->directionality == 'rtl') { + $this->ChangeColumn = -($this->ChangeColumn); + } // *OTL* + } + $this->x = $this->lMargin; + } else { + $this->AddPage($this->CurOrientation); + } + } + + function printcolumnbuffer() + { + // Columns ended (but page not ended) -> try to match all columns - unless disabled by using a custom column-break + if (!$this->ColActive && $this->ColumnAdjust && !$this->keepColumns) { + // Calculate adjustment to add to each column to calculate rel_y value + $this->ColDetails[0]['add_y'] = 0; + $last_col = 0; + // Recursively add previous column's height + for ($i = 1; $i < $this->NbCol; $i++) { + if (isset($this->ColDetails[$i]['bottom_margin']) && $this->ColDetails[$i]['bottom_margin']) { // If any entries in the column + $this->ColDetails[$i]['add_y'] = ($this->ColDetails[$i - 1]['bottom_margin'] - $this->y0) + $this->ColDetails[$i - 1]['add_y']; + $last_col = $i; // Last column actually printed + } + } + + // Calculate value for each position sensitive entry as though for one column + foreach ($this->columnbuffer as $key => $s) { + $t = $s['s']; + if ($t == 'ACROFORM') { + $this->columnbuffer[$key]['rel_y'] = $s['y'] + $this->ColDetails[$s['col']]['add_y'] - $this->y0; + $this->columnbuffer[$key]['s'] = ''; + } elseif (preg_match('/BT \d+\.\d\d+ (\d+\.\d\d+) Td/', $t)) { + $this->columnbuffer[$key]['rel_y'] = $s['y'] + $this->ColDetails[$s['col']]['add_y'] - $this->y0; + } elseif (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) \d+\.\d\d+ [\-]{0,1}\d+\.\d\d+ re/', $t)) { + $this->columnbuffer[$key]['rel_y'] = $s['y'] + $this->ColDetails[$s['col']]['add_y'] - $this->y0; + } elseif (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) m/', $t)) { + $this->columnbuffer[$key]['rel_y'] = $s['y'] + $this->ColDetails[$s['col']]['add_y'] - $this->y0; + } elseif (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) l/', $t)) { + $this->columnbuffer[$key]['rel_y'] = $s['y'] + $this->ColDetails[$s['col']]['add_y'] - $this->y0; + } elseif (preg_match('/q \d+\.\d\d+ 0 0 \d+\.\d\d+ \d+\.\d\d+ (\d+\.\d\d+) cm \/(I|FO)\d+ Do Q/', $t)) { + $this->columnbuffer[$key]['rel_y'] = $s['y'] + $this->ColDetails[$s['col']]['add_y'] - $this->y0; + } elseif (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) \d+\.\d\d+ \d+\.\d\d+ \d+\.\d\d+ \d+\.\d\d+ c/', $t)) { + $this->columnbuffer[$key]['rel_y'] = $s['y'] + $this->ColDetails[$s['col']]['add_y'] - $this->y0; + } + } + foreach ($this->internallink as $key => $f) { + if (is_array($f) && isset($f['col'])) { + $this->internallink[$key]['rel_y'] = $f['Y'] + $this->ColDetails[$f['col']]['add_y'] - $this->y0; + } + } + + $breaks = []; + foreach ($this->breakpoints as $c => $bpa) { + foreach ($bpa as $rely) { + $breaks[] = $rely + $this->ColDetails[$c]['add_y'] - $this->y0; + } + } + + + if (isset($this->ColDetails[$last_col]['bottom_margin'])) { + $lcbm = $this->ColDetails[$last_col]['bottom_margin']; + } else { + $lcbm = 0; + } + $sum_h = $this->ColDetails[$last_col]['add_y'] + $lcbm - $this->y0; + // $sum_h = max($this->ColDetails[$last_col]['add_y'] + $this->ColDetails[$last_col]['bottom_margin'] - $this->y0, end($breaks)); + $target_h = ($sum_h / $this->NbCol); + + $cbr = []; + for ($i = 1; $i < $this->NbCol; $i++) { + $th = ($sum_h * $i / $this->NbCol); + foreach ($breaks as $bk => $val) { + if ($val > $th) { + if (($val - $th) < ($th - $breaks[$bk - 1])) { + $cbr[$i - 1] = $val; + } else { + $cbr[$i - 1] = $breaks[$bk - 1]; + } + break; + } + } + } + $cbr[($this->NbCol - 1)] = $sum_h; + + // mPDF 6 + // Avoid outputing with 1st column empty + if (isset($cbr[0]) && $cbr[0] == 0) { + for ($i = 0; $i < $this->NbCol - 1; $i++) { + $cbr[$i] = $cbr[$i + 1]; + } + } + + // Now update the columns - divide into columns of approximately equal value + $last_new_col = 0; + $yadj = 0; // mm + $xadj = 0; + $last_col_bottom = 0; + $lowest_bottom_y = 0; + $block_bottom = 0; + $newcolumn = 0; + foreach ($this->columnbuffer as $key => $s) { + if (isset($s['rel_y'])) { // only process position sensitive data + if ($s['rel_y'] >= $cbr[$newcolumn]) { + $newcolumn++; + } else { + $newcolumn = $last_new_col; + } + + + $block_bottom = max($block_bottom, ($s['rel_y'] + $s['h'])); + + if ($this->directionality == 'rtl') { // *OTL* + $xadj = -(($newcolumn - $s['col']) * ($this->ColWidth + $this->ColGap)); // *OTL* + } // *OTL* + else { // *OTL* + $xadj = ($newcolumn - $s['col']) * ($this->ColWidth + $this->ColGap); + } // *OTL* + + if ($last_new_col != $newcolumn) { // Added new column + $last_col_bottom = $this->columnbuffer[$key]['rel_y']; + $block_bottom = 0; + } + $yadj = ($s['rel_y'] - $s['y']) - ($last_col_bottom) + $this->y0; + // callback function + $t = $s['s']; + + // mPDF 5.7+ + $t = $this->columnAdjustPregReplace('Td', $xadj, $yadj, '/BT (\d+\.\d\d+) (\d+\.\d\d+) Td/', $t); + $t = $this->columnAdjustPregReplace('re', $xadj, $yadj, '/(\d+\.\d\d+) (\d+\.\d\d+) (\d+\.\d\d+) ([\-]{0,1}\d+\.\d\d+) re/', $t); + $t = $this->columnAdjustPregReplace('l', $xadj, $yadj, '/(\d+\.\d\d+) (\d+\.\d\d+) l/', $t); + $t = $this->columnAdjustPregReplace('img', $xadj, $yadj, '/q (\d+\.\d\d+) 0 0 (\d+\.\d\d+) (\d+\.\d\d+) (\d+\.\d\d+) cm \/(I|FO)/', $t); + $t = $this->columnAdjustPregReplace('draw', $xadj, $yadj, '/(\d+\.\d\d+) (\d+\.\d\d+) m/', $t); + $t = $this->columnAdjustPregReplace('bezier', $xadj, $yadj, '/(\d+\.\d\d+) (\d+\.\d\d+) (\d+\.\d\d+) (\d+\.\d\d+) (\d+\.\d\d+) (\d+\.\d\d+) c/', $t); + + $this->columnbuffer[$key]['s'] = $t; + $this->columnbuffer[$key]['newcol'] = $newcolumn; + $this->columnbuffer[$key]['newy'] = $s['y'] + $yadj; + $last_new_col = $newcolumn; + $clb = $s['y'] + $yadj + $s['h']; // bottom_margin of current + if ((isset($this->ColDetails[$newcolumn]['max_bottom']) && $clb > $this->ColDetails[$newcolumn]['max_bottom']) || (!isset($this->ColDetails[$newcolumn]['max_bottom']) && $clb)) { + $this->ColDetails[$newcolumn]['max_bottom'] = $clb; + } + if ($clb > $lowest_bottom_y) { + $lowest_bottom_y = $clb; + } + // Adjust LINKS + if (isset($this->columnLinks[$s['col']][intval($s['x'])][intval($s['y'])])) { + $ref = $this->columnLinks[$s['col']][intval($s['x'])][intval($s['y'])]; + $this->PageLinks[$this->page][$ref][0] += ($xadj * Mpdf::SCALE); + $this->PageLinks[$this->page][$ref][1] -= ($yadj * Mpdf::SCALE); + unset($this->columnLinks[$s['col']][intval($s['x'])][intval($s['y'])]); + } + // Adjust FORM FIELDS + if (isset($this->columnForms[$s['col']][intval($s['x'])][intval($s['y'])])) { + $ref = $this->columnForms[$s['col']][intval($s['x'])][intval($s['y'])]; + $this->form->forms[$ref]['x'] += ($xadj); + $this->form->forms[$ref]['y'] += ($yadj); + unset($this->columnForms[$s['col']][intval($s['x'])][intval($s['y'])]); + } + /* -- ANNOTATIONS -- */ + if (isset($this->columnAnnots[$s['col']][intval($s['x'])][intval($s['y'])])) { + $ref = $this->columnAnnots[$s['col']][intval($s['x'])][intval($s['y'])]; + if ($this->PageAnnots[$this->page][$ref]['x'] < 0) { + $this->PageAnnots[$this->page][$ref]['x'] -= ($xadj); + } else { + $this->PageAnnots[$this->page][$ref]['x'] += ($xadj); + } + $this->PageAnnots[$this->page][$ref]['y'] += ($yadj); // unlike PageLinks, Page annots has y values from top in mm + unset($this->columnAnnots[$s['col']][intval($s['x'])][intval($s['y'])]); + } + /* -- END ANNOTATIONS -- */ + } + } + + /* -- BOOKMARKS -- */ + // Adjust Bookmarks + foreach ($this->col_BMoutlines as $v) { + $this->BMoutlines[] = ['t' => $v['t'], 'l' => $v['l'], 'y' => $this->y0, 'p' => $v['p']]; + } + /* -- END BOOKMARKS -- */ + + /* -- TOC -- */ + + // Adjust ToC + foreach ($this->col_toc as $v) { + $this->tableOfContents->_toc[] = ['t' => $v['t'], 'l' => $v['l'], 'p' => $v['p'], 'link' => $v['link'], 'toc_id' => $v['toc_id']]; + $this->links[$v['link']][1] = $this->y0; + } + /* -- END TOC -- */ + + // Adjust column length to be equal + if ($this->colvAlign == 'J') { + foreach ($this->columnbuffer as $key => $s) { + if (isset($s['rel_y'])) { // only process position sensitive data + // Set ratio to expand y values or heights + if (isset($this->ColDetails[$s['newcol']]['max_bottom']) && $this->ColDetails[$s['newcol']]['max_bottom'] && $this->ColDetails[$s['newcol']]['max_bottom'] != $this->y0) { + $ratio = ($lowest_bottom_y - ($this->y0)) / ($this->ColDetails[$s['newcol']]['max_bottom'] - ($this->y0)); + } else { + $ratio = 1; + } + if (($ratio > 1) && ($ratio <= $this->max_colH_correction)) { + $yadj = ($s['newy'] - $this->y0) * ($ratio - 1); + + // Adjust LINKS + if (isset($this->columnLinks[$s['col']][intval($s['x'])][intval($s['y'])])) { + $ref = $this->columnLinks[$s['col']][intval($s['x'])][intval($s['y'])]; + $this->PageLinks[$this->page][$ref][1] -= ($yadj * Mpdf::SCALE); // y value + $this->PageLinks[$this->page][$ref][3] *= $ratio; // height + unset($this->columnLinks[$s['col']][intval($s['x'])][intval($s['y'])]); + } + // Adjust FORM FIELDS + if (isset($this->columnForms[$s['col']][intval($s['x'])][intval($s['y'])])) { + $ref = $this->columnForms[$s['col']][intval($s['x'])][intval($s['y'])]; + $this->form->forms[$ref]['x'] += ($xadj); + $this->form->forms[$ref]['y'] += ($yadj); + unset($this->columnForms[$s['col']][intval($s['x'])][intval($s['y'])]); + } + /* -- ANNOTATIONS -- */ + if (isset($this->columnAnnots[$s['col']][intval($s['x'])][intval($s['y'])])) { + $ref = $this->columnAnnots[$s['col']][intval($s['x'])][intval($s['y'])]; + $this->PageAnnots[$this->page][$ref]['y'] += ($yadj); + unset($this->columnAnnots[$s['col']][intval($s['x'])][intval($s['y'])]); + } + /* -- END ANNOTATIONS -- */ + } + } + } + foreach ($this->internallink as $key => $f) { + if (is_array($f) && isset($f['col'])) { + $last_col_bottom = 0; + for ($nbc = 0; $nbc < $this->NbCol; $nbc++) { + if ($f['rel_y'] >= $cbr[$nbc]) { + $last_col_bottom = $cbr[$nbc]; + } + } + $yadj = ($f['rel_y'] - $f['Y']) - $last_col_bottom + $this->y0; + $f['Y'] += $yadj; + unset($f['col']); + unset($f['rel_y']); + $this->internallink[$key] = $f; + } + } + + $last_col = -1; + $trans_on = false; + foreach ($this->columnbuffer as $key => $s) { + if (isset($s['rel_y'])) { // only process position sensitive data + // Set ratio to expand y values or heights + if (isset($this->ColDetails[$s['newcol']]['max_bottom']) && $this->ColDetails[$s['newcol']]['max_bottom'] && $this->ColDetails[$s['newcol']]['max_bottom'] != $this->y0) { + $ratio = ($lowest_bottom_y - ($this->y0)) / ($this->ColDetails[$s['newcol']]['max_bottom'] - ($this->y0)); + } else { + $ratio = 1; + } + if (($ratio > 1) && ($ratio <= $this->max_colH_correction)) { + // Start Transformation + $this->pages[$this->page] .= $this->StartTransform(true) . "\n"; + $this->pages[$this->page] .= $this->transformScale(100, $ratio * 100, $x = '', $this->y0, true) . "\n"; + $trans_on = true; + } + } + // Now output the adjusted values + $this->pages[$this->page] .= $s['s'] . "\n"; + if (isset($s['rel_y']) && ($ratio > 1) && ($ratio <= $this->max_colH_correction)) { // only process position sensitive data + // Stop Transformation + $this->pages[$this->page] .= $this->StopTransform(true) . "\n"; + $trans_on = false; + } + } + if ($trans_on) { + $this->pages[$this->page] .= $this->StopTransform(true) . "\n"; + } + } else { // if NOT $this->colvAlign == 'J' + // Now output the adjusted values + foreach ($this->columnbuffer as $s) { + $this->pages[$this->page] .= $s['s'] . "\n"; + } + } + if ($lowest_bottom_y > 0) { + $this->y = $lowest_bottom_y; + } + } // Columns not ended but new page -> align columns (can leave the columns alone - just tidy up the height) + elseif ($this->colvAlign == 'J' && $this->ColumnAdjust && !$this->keepColumns) { + // calculate the lowest bottom margin + $lowest_bottom_y = 0; + foreach ($this->columnbuffer as $key => $s) { + // Only process output data + $t = $s['s']; + if ($t == 'ACROFORM' || (preg_match('/BT \d+\.\d\d+ (\d+\.\d\d+) Td/', $t)) || (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) \d+\.\d\d+ [\-]{0,1}\d+\.\d\d+ re/', $t)) || + (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) l/', $t)) || + (preg_match('/q \d+\.\d\d+ 0 0 \d+\.\d\d+ \d+\.\d\d+ (\d+\.\d\d+) cm \/(I|FO)\d+ Do Q/', $t)) || + (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) m/', $t)) || + (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) \d+\.\d\d+ \d+\.\d\d+ \d+\.\d\d+ \d+\.\d\d+ c/', $t))) { + $clb = $s['y'] + $s['h']; + if ((isset($this->ColDetails[$s['col']]['max_bottom']) && $clb > $this->ColDetails[$s['col']]['max_bottom']) || !isset($this->ColDetails[$s['col']]['max_bottom'])) { + $this->ColDetails[$s['col']]['max_bottom'] = $clb; + } + if ($clb > $lowest_bottom_y) { + $lowest_bottom_y = $clb; + } + $this->columnbuffer[$key]['rel_y'] = $s['y']; // Marks position sensitive data to process later + if ($t == 'ACROFORM') { + $this->columnbuffer[$key]['s'] = ''; + } + } + } + // Adjust column length equal + foreach ($this->columnbuffer as $key => $s) { + // Set ratio to expand y values or heights + if (isset($this->ColDetails[$s['col']]['max_bottom']) && $this->ColDetails[$s['col']]['max_bottom']) { + $ratio = ($lowest_bottom_y - ($this->y0)) / ($this->ColDetails[$s['col']]['max_bottom'] - ($this->y0)); + } else { + $ratio = 1; + } + if (($ratio > 1) && ($ratio <= $this->max_colH_correction)) { + $yadj = ($s['y'] - $this->y0) * ($ratio - 1); + + // Adjust LINKS + if (isset($s['rel_y'])) { // only process position sensitive data + // otherwise triggers for all entries in column buffer (.e.g. formatting) and makes below adjustments more than once + if (isset($this->columnLinks[$s['col']][intval($s['x'])][intval($s['y'])])) { + $ref = $this->columnLinks[$s['col']][intval($s['x'])][intval($s['y'])]; + $this->PageLinks[$this->page][$ref][1] -= ($yadj * Mpdf::SCALE); // y value + $this->PageLinks[$this->page][$ref][3] *= $ratio; // height + unset($this->columnLinks[$s['col']][intval($s['x'])][intval($s['y'])]); + } + // Adjust FORM FIELDS + if (isset($this->columnForms[$s['col']][intval($s['x'])][intval($s['y'])])) { + $ref = $this->columnForms[$s['col']][intval($s['x'])][intval($s['y'])]; + $this->form->forms[$ref]['x'] += ($xadj); + $this->form->forms[$ref]['y'] += ($yadj); + unset($this->columnForms[$s['col']][intval($s['x'])][intval($s['y'])]); + } + /* -- ANNOTATIONS -- */ + if (isset($this->columnAnnots[$s['col']][intval($s['x'])][intval($s['y'])])) { + $ref = $this->columnAnnots[$s['col']][intval($s['x'])][intval($s['y'])]; + $this->PageAnnots[$this->page][$ref]['y'] += ($yadj); + unset($this->columnAnnots[$s['col']][intval($s['x'])][intval($s['y'])]); + } + /* -- END ANNOTATIONS -- */ + } + } + } + + /* -- BOOKMARKS -- */ + + // Adjust Bookmarks + foreach ($this->col_BMoutlines as $v) { + $this->BMoutlines[] = ['t' => $v['t'], 'l' => $v['l'], 'y' => $this->y0, 'p' => $v['p']]; + } + /* -- END BOOKMARKS -- */ + + /* -- TOC -- */ + + // Adjust ToC + foreach ($this->col_toc as $v) { + $this->tableOfContents->_toc[] = ['t' => $v['t'], 'l' => $v['l'], 'p' => $v['p'], 'link' => $v['link'], 'toc_id' => $v['toc_id']]; + $this->links[$v['link']][1] = $this->y0; + } + /* -- END TOC -- */ + + $trans_on = false; + foreach ($this->columnbuffer as $key => $s) { + + if (isset($s['rel_y'])) { // only process position sensitive data + + // Set ratio to expand y values or heights + if (isset($this->ColDetails[$s['col']]['max_bottom']) && $this->ColDetails[$s['col']]['max_bottom']) { + $ratio = ($lowest_bottom_y - ($this->y0)) / ($this->ColDetails[$s['col']]['max_bottom'] - ($this->y0)); + } else { + $ratio = 1; + } + + if (($ratio > 1) && ($ratio <= $this->max_colH_correction)) { + // Start Transformation + $this->pages[$this->page] .= $this->StartTransform(true) . "\n"; + $this->pages[$this->page] .= $this->transformScale(100, $ratio * 100, $x = '', $this->y0, true) . "\n"; + $trans_on = true; + } + } + + // Now output the adjusted values + $this->pages[$this->page] .= $s['s'] . "\n"; + if (isset($s['rel_y']) && ($ratio > 1) && ($ratio <= $this->max_colH_correction)) { + // Stop Transformation + $this->pages[$this->page] .= $this->StopTransform(true) . "\n"; + $trans_on = false; + } + } + + if ($trans_on) { + $this->pages[$this->page] .= $this->StopTransform(true) . "\n"; + } + + if ($lowest_bottom_y > 0) { + $this->y = $lowest_bottom_y; + } + + } else { // Just reproduce the page as it was + + // If page has not ended but height adjustment was disabled by custom column-break - adjust y + $lowest_bottom_y = 0; + + if (!$this->ColActive && (!$this->ColumnAdjust || $this->keepColumns)) { + + // calculate the lowest bottom margin + foreach ($this->columnbuffer as $key => $s) { + + // Only process output data + $t = $s['s']; + if ($t === 'ACROFORM' + || (preg_match('/BT \d+\.\d\d+ (\d+\.\d\d+) Td/', $t)) + || (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) \d+\.\d\d+ [\-]{0,1}\d+\.\d\d+ re/', $t)) + || (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) l/', $t)) + || (preg_match('/q \d+\.\d\d+ 0 0 \d+\.\d\d+ \d+\.\d\d+ (\d+\.\d\d+) cm \/(I|FO)\d+ Do Q/', $t)) + || (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) m/', $t)) + || (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) \d+\.\d\d+ \d+\.\d\d+ \d+\.\d\d+ \d+\.\d\d+ c/', $t))) { + + $clb = $s['y'] + $s['h']; + + if (isset($this->ColDetails[$s['col']]['max_bottom']) && $clb > $this->ColDetails[$s['col']]['max_bottom'] || (!isset($this->ColDetails[$s['col']]['max_bottom']) && $clb)) { + $this->ColDetails[$s['col']]['max_bottom'] = $clb; + } + + if ($clb > $lowest_bottom_y) { + $lowest_bottom_y = $clb; + } + } + } + } + + foreach ($this->columnbuffer as $key => $s) { + if ($s['s'] != 'ACROFORM') { + $this->pages[$this->page] .= $s['s'] . "\n"; + } + } + + if ($lowest_bottom_y > 0) { + $this->y = $lowest_bottom_y; + } + + /* -- BOOKMARKS -- */ + // Output Bookmarks + foreach ($this->col_BMoutlines as $v) { + $this->BMoutlines[] = ['t' => $v['t'], 'l' => $v['l'], 'y' => $v['y'], 'p' => $v['p']]; + } + /* -- END BOOKMARKS -- */ + + /* -- TOC -- */ + // Output ToC + foreach ($this->col_toc as $v) { + $this->tableOfContents->_toc[] = ['t' => $v['t'], 'l' => $v['l'], 'p' => $v['p'], 'link' => $v['link'], 'toc_id' => $v['toc_id']]; + } + /* -- END TOC -- */ + } + + foreach ($this->internallink as $key => $f) { + + if (isset($this->internallink[$key]['col'])) { + unset($this->internallink[$key]['col']); + } + + if (isset($this->internallink[$key]['rel_y'])) { + unset($this->internallink[$key]['rel_y']); + } + } + + $this->columnbuffer = []; + $this->ColDetails = []; + $this->columnLinks = []; + $this->columnAnnots = []; + $this->columnForms = []; + + $this->col_BMoutlines = []; + $this->col_toc = []; + $this->breakpoints = []; + } + + // mPDF 5.7+ + function columnAdjustPregReplace($type, $xadj, $yadj, $pattern, $subject) + { + preg_match($pattern, $subject, $matches); + + if (!count($matches)) { + return $subject; + } + + if (!isset($matches[3])) { + $matches[3] = 0; + } + + if (!isset($matches[4])) { + $matches[4] = 0; + } + + if (!isset($matches[5])) { + $matches[5] = 0; + } + + if (!isset($matches[6])) { + $matches[6] = 0; + } + + return str_replace($matches[0], $this->columnAdjustAdd($type, Mpdf::SCALE, $xadj, $yadj, $matches[1], $matches[2], $matches[3], $matches[4], $matches[5], $matches[6]), $subject); + } + /* -- END COLUMNS -- */ + + // ================================================================== + /* -- TABLES -- */ + function printcellbuffer() + { + if (count($this->cellBorderBuffer)) { + + sort($this->cellBorderBuffer); + + foreach ($this->cellBorderBuffer as $cbb) { + + $cba = unpack("A16dom/nbord/A1side/ns/dbw/a6ca/A10style/dx/dy/dw/dh/dmbl/dmbr/dmrt/dmrb/dmtl/dmtr/dmlt/dmlb/dcpd/dover/", $cbb); + $side = $cba['side']; + $color = str_pad($cba['ca'], 6, "\x00"); + + $details = []; + + $details[$side]['dom'] = (float) $cba['dom']; + $details[$side]['s'] = $cba['s']; + $details[$side]['w'] = $cba['bw']; + $details[$side]['c'] = $color; + $details[$side]['style'] = trim($cba['style']); + + $details['mbw']['BL'] = $cba['mbl']; + $details['mbw']['BR'] = $cba['mbr']; + $details['mbw']['RT'] = $cba['mrt']; + $details['mbw']['RB'] = $cba['mrb']; + $details['mbw']['TL'] = $cba['mtl']; + $details['mbw']['TR'] = $cba['mtr']; + $details['mbw']['LT'] = $cba['mlt']; + $details['mbw']['LB'] = $cba['mlb']; + + $details['cellposdom'] = $cba['cpd']; + + $details['p'] = $side; + + if ($cba['over'] == 1) { + $details[$side]['overlay'] = true; + } else { + $details[$side]['overlay'] = false; + } + + $this->_tableRect($cba['x'], $cba['y'], $cba['w'], $cba['h'], $cba['bord'], $details, false, false); + } + + $this->cellBorderBuffer = []; + } + } + + // ================================================================== + function printtablebuffer() + { + + if (!$this->table_rotate) { + + $this->pages[$this->page] .= $this->tablebuffer; + + foreach ($this->tbrot_Links as $p => $l) { + foreach ($l as $v) { + $this->PageLinks[$p][] = $v; + } + } + $this->tbrot_Links = []; + + /* -- ANNOTATIONS -- */ + foreach ($this->tbrot_Annots as $p => $l) { + foreach ($l as $v) { + $this->PageAnnots[$p][] = $v; + } + } + $this->tbrot_Annots = []; + /* -- END ANNOTATIONS -- */ + + /* -- BOOKMARKS -- */ + // Output Bookmarks + foreach ($this->tbrot_BMoutlines as $v) { + $this->BMoutlines[] = ['t' => $v['t'], 'l' => $v['l'], 'y' => $v['y'], 'p' => $v['p']]; + } + $this->tbrot_BMoutlines = []; + /* -- END BOOKMARKS -- */ + + /* -- TOC -- */ + // Output ToC + foreach ($this->tbrot_toc as $v) { + $this->tableOfContents->_toc[] = ['t' => $v['t'], 'l' => $v['l'], 'p' => $v['p'], 'link' => $v['link'], 'toc_id' => $v['toc_id']]; + } + $this->tbrot_toc = []; + /* -- END TOC -- */ + + return; + } + + // elseif rotated + $lm = $this->lMargin + $this->blk[$this->blklvl]['outer_left_margin'] + $this->blk[$this->blklvl]['border_left']['w'] + $this->blk[$this->blklvl]['padding_left']; + $pw = $this->blk[$this->blklvl]['inner_width']; + + // Start Transformation + $this->pages[$this->page] .= $this->StartTransform(true) . "\n"; + + if ($this->table_rotate > 1) { // clockwise + + if ($this->tbrot_align == 'L') { + $xadj = $this->tbrot_h; // align L (as is) + } elseif ($this->tbrot_align == 'R') { + $xadj = $lm - $this->tbrot_x0 + ($pw); // align R + } else { + $xadj = $lm - $this->tbrot_x0 + (($pw + $this->tbrot_h) / 2); // align C + } + + $yadj = 0; + + } else { // anti-clockwise + + if ($this->tbrot_align == 'L') { + $xadj = 0; // align L (as is) + } elseif ($this->tbrot_align == 'R') { + $xadj = $lm - $this->tbrot_x0 + ($pw - $this->tbrot_h); // align R + } else { + $xadj = $lm - $this->tbrot_x0 + (($pw - $this->tbrot_h) / 2); // align C + } + + $yadj = $this->tbrot_w; + } + + + $this->pages[$this->page] .= $this->transformTranslate($xadj, $yadj, true) . "\n"; + $this->pages[$this->page] .= $this->transformRotate($this->table_rotate, $this->tbrot_x0, $this->tbrot_y0, true) . "\n"; + + // Now output the adjusted values + $this->pages[$this->page] .= $this->tablebuffer; + + foreach ($this->tbrot_Links as $p => $l) { + + foreach ($l as $v) { + + $w = $v[2] / Mpdf::SCALE; + $h = $v[3] / Mpdf::SCALE; + $ax = ($v[0] / Mpdf::SCALE) - $this->tbrot_x0; + $ay = (($this->hPt - $v[1]) / Mpdf::SCALE) - $this->tbrot_y0; + + if ($this->table_rotate > 1) { // clockwise + $bx = $this->tbrot_x0 + $xadj - $ay - $h; + $by = $this->tbrot_y0 + $yadj + $ax; + } else { + $bx = $this->tbrot_x0 + $xadj + $ay; + $by = $this->tbrot_y0 + $yadj - $ax - $w; + } + + $v[0] = $bx * Mpdf::SCALE; + $v[1] = ($this->h - $by) * Mpdf::SCALE; + $v[2] = $h * Mpdf::SCALE; // swap width and height + $v[3] = $w * Mpdf::SCALE; + + $this->PageLinks[$p][] = $v; + } + } + + $this->tbrot_Links = []; + foreach ($this->internallink as $key => $f) { + if (is_array($f) && isset($f['tbrot'])) { + $f['Y'] = $this->tbrot_y0; + $f['PAGE'] = $this->page; + unset($f['tbrot']); + $this->internallink[$key] = $f; + } + } + + /* -- ANNOTATIONS -- */ + foreach ($this->tbrot_Annots as $p => $l) { + foreach ($l as $v) { + $ax = abs($v['x']) - $this->tbrot_x0; // abs because -ve values are internally set and held for reference if annotMargin set + $ay = $v['y'] - $this->tbrot_y0; + + if ($this->table_rotate > 1) { // clockwise + $bx = $this->tbrot_x0 + $xadj - $ay; + $by = $this->tbrot_y0 + $yadj + $ax; + } else { + $bx = $this->tbrot_x0 + $xadj + $ay; + $by = $this->tbrot_y0 + $yadj - $ax; + } + + if ($v['x'] < 0) { + $v['x'] = -$bx; + } else { + $v['x'] = $bx; + } + + $v['y'] = ($by); + $this->PageAnnots[$p][] = $v; + } + } + + $this->tbrot_Annots = []; + /* -- END ANNOTATIONS -- */ + + /* -- BOOKMARKS -- */ + // Adjust Bookmarks + foreach ($this->tbrot_BMoutlines as $v) { + $v['y'] = $this->tbrot_y0; + $this->BMoutlines[] = ['t' => $v['t'], 'l' => $v['l'], 'y' => $v['y'], 'p' => $this->page]; + } + /* -- END BOOKMARKS -- */ + + /* -- TOC -- */ + // Adjust ToC - uses document page number + foreach ($this->tbrot_toc as $v) { + $this->tableOfContents->_toc[] = ['t' => $v['t'], 'l' => $v['l'], 'p' => $this->page, 'link' => $v['link'], 'toc_id' => $v['toc_id']]; + $this->links[$v['link']][1] = $this->tbrot_y0; + } + /* -- END TOC -- */ + + $this->tbrot_BMoutlines = []; + $this->tbrot_toc = []; + + // Stop Transformation + $this->pages[$this->page] .= $this->StopTransform(true) . "\n"; + + $this->y = $this->tbrot_y0 + $this->tbrot_w; + $this->x = $this->lMargin; + + $this->tablebuffer = ''; + } + + /** + * Keep-with-table This buffers contents of h1-6 to keep on page with table + */ + function printkwtbuffer() + { + if (!$this->kwt_moved) { + + foreach ($this->kwt_buffer as $s) { + $this->pages[$this->page] .= $s['s'] . "\n"; + } + + foreach ($this->kwt_Links as $p => $l) { + foreach ($l as $v) { + $this->PageLinks[$p][] = $v; + } + } + + $this->kwt_Links = []; + + /* -- ANNOTATIONS -- */ + foreach ($this->kwt_Annots as $p => $l) { + foreach ($l as $v) { + $this->PageAnnots[$p][] = $v; + } + } + $this->kwt_Annots = []; + /* -- END ANNOTATIONS -- */ + + /* -- INDEX -- */ + // Output Reference (index) + foreach ($this->kwt_Reference as $v) { + + $Present = 0; + + for ($i = 0; $i < count($this->Reference); $i++) { + if ($this->Reference[$i]['t'] == $v['t']) { + $Present = 1; + if (!in_array($v['op'], $this->Reference[$i]['p'])) { + $this->Reference[$i]['p'][] = $v['op']; + } + } + } + + if ($Present == 0) { + $this->Reference[] = ['t' => $v['t'], 'p' => [$v['op']]]; + } + } + $this->kwt_Reference = []; + /* -- END INDEX -- */ + + /* -- BOOKMARKS -- */ + // Output Bookmarks + foreach ($this->kwt_BMoutlines as $v) { + $this->BMoutlines[] = ['t' => $v['t'], 'l' => $v['l'], 'y' => $v['y'], 'p' => $v['p']]; + } + $this->kwt_BMoutlines = []; + /* -- END BOOKMARKS -- */ + + /* -- TOC -- */ + // Output ToC + foreach ($this->kwt_toc as $v) { + $this->tableOfContents->_toc[] = ['t' => $v['t'], 'l' => $v['l'], 'p' => $v['p'], 'link' => $v['link'], 'toc_id' => $v['toc_id']]; + } + $this->kwt_toc = []; + /* -- END TOC -- */ + + $this->pageoutput[$this->page] = []; // mPDF 6 + + return; + } + + // Start Transformation + $this->pages[$this->page] .= $this->StartTransform(true) . "\n"; + $xadj = $this->lMargin - $this->kwt_x0; + // $yadj = $this->y - $this->kwt_y0 ; + $yadj = $this->tMargin - $this->kwt_y0; + + $this->pages[$this->page] .= $this->transformTranslate($xadj, $yadj, true) . "\n"; + + // Now output the adjusted values + foreach ($this->kwt_buffer as $s) { + $this->pages[$this->page] .= $s['s'] . "\n"; + } + + // Adjust hyperLinks + foreach ($this->kwt_Links as $p => $l) { + foreach ($l as $v) { + $bx = $this->kwt_x0 + $xadj; + $by = $this->kwt_y0 + $yadj; + $v[0] = $bx * Mpdf::SCALE; + $v[1] = ($this->h - $by) * Mpdf::SCALE; + $this->PageLinks[$p][] = $v; + } + } + + foreach ($this->internallink as $key => $f) { + if (is_array($f) && isset($f['kwt'])) { + $f['Y'] += $yadj; + $f['PAGE'] = $this->page; + unset($f['kwt']); + $this->internallink[$key] = $f; + } + } + + /* -- ANNOTATIONS -- */ + foreach ($this->kwt_Annots as $p => $l) { + foreach ($l as $v) { + $bx = $this->kwt_x0 + $xadj; + $by = $this->kwt_y0 + $yadj; + if ($v['x'] < 0) { + $v['x'] = -$bx; + } else { + $v['x'] = $bx; + } + $v['y'] = $by; + $this->PageAnnots[$p][] = $v; + } + } + /* -- END ANNOTATIONS -- */ + + /* -- BOOKMARKS -- */ + + // Adjust Bookmarks + foreach ($this->kwt_BMoutlines as $v) { + if ($v['y'] != 0) { + $v['y'] += $yadj; + } + $this->BMoutlines[] = ['t' => $v['t'], 'l' => $v['l'], 'y' => $v['y'], 'p' => $this->page]; + } + /* -- END BOOKMARKS -- */ + + /* -- INDEX -- */ + // Adjust Reference (index) + foreach ($this->kwt_Reference as $v) { + + $Present = 0; + + // Search the reference (AND Ref/PageNo) in the array + for ($i = 0; $i < count($this->Reference); $i++) { + if ($this->Reference[$i]['t'] == $v['t']) { + $Present = 1; + if (!in_array($this->page, $this->Reference[$i]['p'])) { + $this->Reference[$i]['p'][] = $this->page; + } + } + } + + if ($Present == 0) { + $this->Reference[] = ['t' => $v['t'], 'p' => [$this->page]]; + } + } + /* -- END INDEX -- */ + + /* -- TOC -- */ + + // Adjust ToC + foreach ($this->kwt_toc as $v) { + $this->tableOfContents->_toc[] = ['t' => $v['t'], 'l' => $v['l'], 'p' => $this->page, 'link' => $v['link'], 'toc_id' => $v['toc_id']]; + $this->links[$v['link']][0] = $this->page; + $this->links[$v['link']][1] += $yadj; + } + /* -- END TOC -- */ + + + $this->kwt_Links = []; + $this->kwt_Annots = []; + + $this->kwt_Reference = []; + $this->kwt_BMoutlines = []; + $this->kwt_toc = []; + + // Stop Transformation + $this->pages[$this->page] .= $this->StopTransform(true) . "\n"; + + $this->kwt_buffer = []; + + $this->y += $this->kwt_height; + $this->pageoutput[$this->page] = []; // mPDF 6 + } + /* -- END TABLES -- */ + + function printfloatbuffer() + { + if (count($this->floatbuffer)) { + $this->objectbuffer = $this->floatbuffer; + $this->printobjectbuffer(false); + $this->objectbuffer = []; + $this->floatbuffer = []; + $this->floatmargins = []; + } + } + + function Circle($x, $y, $r, $style = 'S') + { + $this->Ellipse($x, $y, $r, $r, $style); + } + + function Ellipse($x, $y, $rx, $ry, $style = 'S') + { + if ($style === 'F') { + $op = 'f'; + } elseif ($style === 'FD' or $style === 'DF') { + $op = 'B'; + } else { + $op = 'S'; + } + + $lx = 4 / 3 * (M_SQRT2 - 1) * $rx; + $ly = 4 / 3 * (M_SQRT2 - 1) * $ry; + + $h = $this->h; + + $this->writer->write(sprintf('%.3F %.3F m %.3F %.3F %.3F %.3F %.3F %.3F c', ($x + $rx) * Mpdf::SCALE, ($h - $y) * Mpdf::SCALE, ($x + $rx) * Mpdf::SCALE, ($h - ($y - $ly)) * Mpdf::SCALE, ($x + $lx) * Mpdf::SCALE, ($h - ($y - $ry)) * Mpdf::SCALE, $x * Mpdf::SCALE, ($h - ($y - $ry)) * Mpdf::SCALE)); + $this->writer->write(sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c', ($x - $lx) * Mpdf::SCALE, ($h - ($y - $ry)) * Mpdf::SCALE, ($x - $rx) * Mpdf::SCALE, ($h - ($y - $ly)) * Mpdf::SCALE, ($x - $rx) * Mpdf::SCALE, ($h - $y) * Mpdf::SCALE)); + $this->writer->write(sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c', ($x - $rx) * Mpdf::SCALE, ($h - ($y + $ly)) * Mpdf::SCALE, ($x - $lx) * Mpdf::SCALE, ($h - ($y + $ry)) * Mpdf::SCALE, $x * Mpdf::SCALE, ($h - ($y + $ry)) * Mpdf::SCALE)); + $this->writer->write(sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c %s', ($x + $lx) * Mpdf::SCALE, ($h - ($y + $ry)) * Mpdf::SCALE, ($x + $rx) * Mpdf::SCALE, ($h - ($y + $ly)) * Mpdf::SCALE, ($x + $rx) * Mpdf::SCALE, ($h - $y) * Mpdf::SCALE, $op)); + } + + /* -- DIRECTW -- */ + function AutosizeText($text, $w, $font, $style, $szfont = 72) + { + + $text = ' ' . $text . ' '; + + $this->SetFont($font, $style, $szfont, false); + + $text = $this->purify_utf8_text($text); + if ($this->text_input_as_HTML) { + $text = $this->all_entities_to_utf8($text); + } + if ($this->usingCoreFont) { + $text = mb_convert_encoding($text, $this->mb_enc, 'UTF-8'); + } + + // DIRECTIONALITY + if (preg_match("/([" . $this->pregRTLchars . "])/u", $text)) { + $this->biDirectional = true; + } + + $textvar = 0; + $save_OTLtags = $this->OTLtags; + $this->OTLtags = []; + + if ($this->useKerning) { + if ($this->CurrentFont['haskernGPOS']) { + $this->OTLtags['Plus'] .= ' kern'; + } else { + $textvar = ($textvar | TextVars::FC_KERNING); + } + } + + /* -- OTL -- */ + // Use OTL OpenType Table Layout - GSUB & GPOS + if (isset($this->CurrentFont['useOTL']) && $this->CurrentFont['useOTL']) { + $text = $this->otl->applyOTL($text, $this->CurrentFont['useOTL']); + $OTLdata = $this->otl->OTLdata; + } + /* -- END OTL -- */ + + $this->OTLtags = $save_OTLtags; + + $this->magic_reverse_dir($text, $this->directionality, $OTLdata); + + $width = $this->sizeConverter->convert($w); + $loop = 0; + + while ($loop == 0) { + + $this->SetFont($font, $style, $szfont, false); + $sz = $this->GetStringWidth($text, true, $OTLdata, $textvar); + + if ($sz > $w) { + $szfont --; + } else { + $loop ++; + } + } + + $this->SetFont($font, $style, $szfont, true, true); + $this->Cell($w, 0, $text, 0, 0, "C", 0, '', 0, 0, 0, 'M', 0, false, $OTLdata, $textvar); + } + /* -- END DIRECTW -- */ + + // ==================================================== + // ==================================================== + + function magic_reverse_dir(&$chunk, $dir, &$chunkOTLdata) + { + /* -- OTL -- */ + if ($this->usingCoreFont) { + return 0; + } + + if ($chunk == '') { + return 0; + } + + if ($this->biDirectional || $dir == 'rtl') { + + // check if string contains RTL text + // including any added from OTL tables (in PUA) + $pregRTLchars = $this->pregRTLchars; + + if (isset($this->CurrentFont['rtlPUAstr']) && $this->CurrentFont['rtlPUAstr']) { + $pregRTLchars .= $this->CurrentFont['rtlPUAstr']; + } + + if (!preg_match("/[" . $pregRTLchars . "]/u", $chunk) && $dir != 'rtl') { + return 0; + } // Chunk doesn't contain RTL characters + + $unicode = $this->UTF8StringToArray($chunk, false); + + $isStrong = false; + if (empty($chunkOTLdata)) { + $this->getBasicOTLdata($chunkOTLdata, $unicode, $isStrong); + } + + $useGPOS = isset($this->CurrentFont['useOTL']) && ($this->CurrentFont['useOTL'] & 0x80); + + // NB Returned $chunk may be a shorter string (with adjusted $cOTLdata) by removal of LRE, RLE etc embedding codes. + list($chunk, $rtl_content) = $this->otl->bidiSort($unicode, $chunk, $dir, $chunkOTLdata, $useGPOS); + + return $rtl_content; + } + + /* -- END OTL -- */ + return 0; + } + + /* -- OTL -- */ + + function getBasicOTLdata(&$chunkOTLdata, $unicode, &$is_strong) + { + if (empty($this->otl)) { + $this->otl = new Otl($this, $this->fontCache); + } + + $chunkOTLdata['group'] = ''; + $chunkOTLdata['GPOSinfo'] = []; + $chunkOTLdata['char_data'] = []; + + foreach ($unicode as $char) { + + $ucd_record = Ucdn::get_ucd_record($char); + $chunkOTLdata['char_data'][] = ['bidi_class' => $ucd_record[2], 'uni' => $char]; + + if ($ucd_record[2] == 0 || $ucd_record[2] == 3 || $ucd_record[2] == 4) { + $is_strong = true; + } // contains strong character + + if ($ucd_record[0] == Ucdn::UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK) { + $chunkOTLdata['group'] .= 'M'; + } elseif ($char == 32 || $char == 12288) { + $chunkOTLdata['group'] .= 'S'; + } else { + $chunkOTLdata['group'] .= 'C'; + } + } + } + + function _setBidiCodes($mode = 'start', $bdf = '') + { + $s = ''; + + if ($mode == 'end') { + + // PDF comes before PDI to close isolate-override (e.g. "LRILROPDFPDI") + if (strpos($bdf, 'PDF') !== false) { + $s .= UtfString::code2utf(0x202C); + } // POP DIRECTIONAL FORMATTING + + if (strpos($bdf, 'PDI') !== false) { + $s .= UtfString::code2utf(0x2069); + } // POP DIRECTIONAL ISOLATE + + } elseif ($mode == 'start') { + + // LRI comes before LRO to open isolate-override (e.g. "LRILROPDFPDI") + if (strpos($bdf, 'LRI') !== false) { // U+2066 LRI + $s .= UtfString::code2utf(0x2066); + } elseif (strpos($bdf, 'RLI') !== false) { // U+2067 RLI + $s .= UtfString::code2utf(0x2067); + } elseif (strpos($bdf, 'FSI') !== false) { // U+2068 FSI + $s .= UtfString::code2utf(0x2068); + } + + if (strpos($bdf, 'LRO') !== false) { // U+202D LRO + $s .= UtfString::code2utf(0x202D); + } elseif (strpos($bdf, 'RLO') !== false) { // U+202E RLO + $s .= UtfString::code2utf(0x202E); + } elseif (strpos($bdf, 'LRE') !== false) { // U+202A LRE + $s .= UtfString::code2utf(0x202A); + } elseif (strpos($bdf, 'RLE') !== false) { // U+202B RLE + $s .= UtfString::code2utf(0x202B); + } + } + + return $s; + } + /* -- END OTL -- */ + + function SetSubstitutions() + { + $subsarray = []; + require __DIR__ . '//data/subs_win-1252.php'; + $this->substitute = []; + foreach ($subsarray as $key => $val) { + $this->substitute[UtfString::code2utf($key)] = $val; + } + } + + function SubstituteChars($html) + { + // only substitute characters between tags + if (count($this->substitute)) { + $a = preg_split('/(<.*?>)/ms', $html, -1, PREG_SPLIT_DELIM_CAPTURE); + $html = ''; + foreach ($a as $i => $e) { + if ($i % 2 == 0) { + $e = strtr($e, $this->substitute); + } + $html .= $e; + } + } + + return $html; + } + + function SubstituteCharsSIP(&$writehtml_a, &$writehtml_i, &$writehtml_e) + { + if (preg_match("/^(.*?)([\x{20000}-\x{2FFFF}]+)(.*)/u", $writehtml_e, $m)) { + if (isset($this->CurrentFont['sipext']) && $this->CurrentFont['sipext']) { + $font = $this->CurrentFont['sipext']; + if (!in_array($font, $this->available_unifonts)) { + return 0; + } + $writehtml_a[$writehtml_i] = $writehtml_e = $m[1]; + array_splice($writehtml_a, $writehtml_i + 1, 0, ['span style="font-family: ' . $font . '"', $m[2], '/span', $m[3]]); + $this->subPos = $writehtml_i; + return 4; + } + } + + return 0; + } + + /** + * If core font is selected in document which is not onlyCoreFonts - substitute with non-core font + */ + function SubstituteCharsNonCore(&$writehtml_a, &$writehtml_i, &$writehtml_e) + { + // Ignore if in Textarea + if ($writehtml_i > 0 && strtolower(substr($writehtml_a[$writehtml_i - 1], 0, 8)) == 'textarea') { + return 0; + } + + if (mb_convert_encoding(mb_convert_encoding($writehtml_e, $this->mb_enc, "UTF-8"), "UTF-8", $this->mb_enc) == $writehtml_e) { + return 0; + } + + $cw = &$this->CurrentFont['cw']; + $unicode = $this->UTF8StringToArray($writehtml_e, false); + $start = -1; + $end = 0; + $flag = 0; + $ftype = ''; + $u = []; + + if (!$this->subArrMB) { + + require __DIR__ . '//data/subs_core.php'; + + $this->subArrMB['a'] = $aarr; + $this->subArrMB['s'] = $sarr; + $this->subArrMB['z'] = $zarr; + } + + foreach ($unicode as $c => $char) { + + if (($char > 127 || ($flag == 1 && $char == 32)) && $char != 173 && (!isset($this->subArrMB['a'][$char]) || ($flag == 1 && $char == 32)) && ($char < 1536 || ($char > 1791 && $char < 2304) || $char > 3455)) { + if ($flag == 0) { + $start = $c; + } + $flag = 1; + $u[] = $char; + } elseif ($flag > 0) { + $end = $c - 1; + break; + } + } + + if ($flag > 0 && !$end) { + $end = count($unicode) - 1; + } + + if ($start == -1) { + return 0; + } + + // Try in backup subs font + if (!is_array($this->backupSubsFont)) { + $this->backupSubsFont = ["$this->backupSubsFont"]; + } + + foreach ($this->backupSubsFont as $bsfctr => $bsf) { + + if ($this->fonttrans[$bsf] == 'chelvetica' || $this->fonttrans[$bsf] == 'ctimes' || $this->fonttrans[$bsf] == 'ccourier') { + continue; + } + + $font = $bsf; + unset($cw); + $cw = ''; + + if (isset($this->fonts[$font])) { + $cw = &$this->fonts[$font]['cw']; + } elseif ($this->fontCache->has($font . '.cw.dat')) { + $cw = $this->fontCache->load($font . '.cw.dat'); + } else { + $prevFontFamily = $this->FontFamily; + $prevFontStyle = $this->currentfontstyle; + $prevFontSizePt = $this->FontSizePt; + $this->SetFont($bsf, '', '', false); + $this->SetFont($prevFontFamily, $prevFontStyle, $prevFontSizePt, false); + } + + if (!$cw) { + continue; + } + + $l = 0; + foreach ($u as $char) { + if ($char == 173 || $this->_charDefined($cw, $char) || ($char > 1536 && $char < 1791) || ($char > 2304 && $char < 3455 )) { + $l++; + } else { + if ($l == 0 && $bsfctr == (count($this->backupSubsFont) - 1)) { // Not found even in last backup font + $cont = mb_substr($writehtml_e, $start + 1); + $writehtml_e = mb_substr($writehtml_e, 0, $start + 1, 'UTF-8'); + array_splice($writehtml_a, $writehtml_i + 1, 0, ['', $cont]); + $this->subPos = $writehtml_i + 1; + + return 2; + } else { + break; + } + } + } + + if ($l > 0) { + $patt = mb_substr($writehtml_e, $start, $l, 'UTF-8'); + if (preg_match("/(.*?)(" . preg_quote($patt, '/') . ")(.*)/u", $writehtml_e, $m)) { + $writehtml_e = $m[1]; + array_splice($writehtml_a, $writehtml_i + 1, 0, ['span style="font-family: ' . $font . '"', $m[2], '/span', $m[3]]); + $this->subPos = $writehtml_i + 3; + + return 4; + } + } + } + + unset($cw); + + return 0; + } + + function SubstituteCharsMB(&$writehtml_a, &$writehtml_i, &$writehtml_e) + { + // Ignore if in Textarea + if ($writehtml_i > 0 && strtolower(substr($writehtml_a[$writehtml_i - 1], 0, 8)) == 'textarea') { + return 0; + } + + $cw = &$this->CurrentFont['cw']; + $unicode = $this->UTF8StringToArray($writehtml_e, false); + $start = -1; + $end = 0; + $flag = 0; + $ftype = ''; + $u = []; + + foreach ($unicode as $c => $char) { + + if (($flag == 0 || $flag == 2) && (!$this->_charDefined($cw, $char) || ($flag == 2 && $char == 32)) && $this->checkSIP && $char > 131071) { // Unicode Plane 2 (SIP) + + if (in_array($this->FontFamily, $this->available_CJK_fonts)) { + return 0; + } + + if ($flag == 0) { + $start = $c; + } + + $flag = 2; + $u[] = $char; + + // elseif (($flag == 0 || $flag==1) && $char != 173 && !$this->_charDefined($cw,$char) && ($char<1423 || ($char>3583 && $char < 11263))) { + + } elseif (($flag == 0 || $flag == 1) && $char != 173 && (!$this->_charDefined($cw, $char) || ($flag == 1 && $char == 32)) && ($char < 1536 || ($char > 1791 && $char < 2304) || $char > 3455)) { + + if ($flag == 0) { + $start = $c; + } + + $flag = 1; + $u[] = $char; + + } elseif ($flag > 0) { + + $end = $c - 1; + break; + + } + } + + if ($flag > 0 && !$end) { + $end = count($unicode) - 1; + } + + if ($start == -1) { + return 0; + } + + if ($flag == 2) { // SIP + + // Check if current CJK font has a ext-B related font + if (isset($this->CurrentFont['sipext']) && $this->CurrentFont['sipext']) { + $font = $this->CurrentFont['sipext']; + unset($cw); + $cw = ''; + + if (isset($this->fonts[$font])) { + $cw = &$this->fonts[$font]['cw']; + } elseif ($this->fontCache->has($font . '.cw.dat')) { + $cw = $this->fontCache->load($font . '.cw.dat'); + } else { + $prevFontFamily = $this->FontFamily; + $prevFontStyle = $this->currentfontstyle; + $prevFontSizePt = $this->FontSizePt; + $this->SetFont($font, '', '', false); + $this->SetFont($prevFontFamily, $prevFontStyle, $prevFontSizePt, false); + } + + if (!$cw) { + return 0; + } + + $l = 0; + foreach ($u as $char) { + if ($this->_charDefined($cw, $char) || $char > 131071) { + $l++; + } else { + break; + } + } + + if ($l > 0) { + $patt = mb_substr($writehtml_e, $start, $l); + if (preg_match("/(.*?)(" . preg_quote($patt, '/') . ")(.*)/u", $writehtml_e, $m)) { + $writehtml_e = $m[1]; + array_splice($writehtml_a, $writehtml_i + 1, 0, ['span style="font-family: ' . $font . '"', $m[2], '/span', $m[3]]); + $this->subPos = $writehtml_i + 3; + return 4; + } + } + } + + // Check Backup SIP font (defined in Config\FontVariables) + if (isset($this->backupSIPFont) && $this->backupSIPFont) { + + if ($this->currentfontfamily != $this->backupSIPFont) { + $font = $this->backupSIPFont; + } else { + unset($cw); + return 0; + } + + unset($cw); + $cw = ''; + + if (isset($this->fonts[$font])) { + $cw = &$this->fonts[$font]['cw']; + } elseif ($this->fontCache->has($font . '.cw.dat')) { + $cw = $this->fontCache->load($font . '.cw.dat'); + } else { + $prevFontFamily = $this->FontFamily; + $prevFontStyle = $this->currentfontstyle; + $prevFontSizePt = $this->FontSizePt; + $this->SetFont($this->backupSIPFont, '', '', false); + $this->SetFont($prevFontFamily, $prevFontStyle, $prevFontSizePt, false); + } + + if (!$cw) { + return 0; + } + + $l = 0; + foreach ($u as $char) { + if ($this->_charDefined($cw, $char) || $char > 131071) { + $l++; + } else { + break; + } + } + + if ($l > 0) { + $patt = mb_substr($writehtml_e, $start, $l); + if (preg_match("/(.*?)(" . preg_quote($patt, '/') . ")(.*)/u", $writehtml_e, $m)) { + $writehtml_e = $m[1]; + array_splice($writehtml_a, $writehtml_i + 1, 0, ['span style="font-family: ' . $font . '"', $m[2], '/span', $m[3]]); + $this->subPos = $writehtml_i + 3; + return 4; + } + } + } + + return 0; + } + + // FIRST TRY CORE FONTS (when appropriate) + if (!$this->PDFA && !$this->PDFX && !$this->biDirectional) { // mPDF 6 + $repl = []; + if (!$this->subArrMB) { + require __DIR__ . '//data/subs_core.php'; + $this->subArrMB['a'] = $aarr; + $this->subArrMB['s'] = $sarr; + $this->subArrMB['z'] = $zarr; + } + if (isset($this->subArrMB['a'][$u[0]])) { + $font = 'tta'; + $ftype = 'C'; + foreach ($u as $char) { + if (isset($this->subArrMB['a'][$char])) { + $repl[] = $this->subArrMB['a'][$char]; + } else { + break; + } + } + } elseif (isset($this->subArrMB['z'][$u[0]])) { + $font = 'ttz'; + $ftype = 'C'; + foreach ($u as $char) { + if (isset($this->subArrMB['z'][$char])) { + $repl[] = $this->subArrMB['z'][$char]; + } else { + break; + } + } + } elseif (isset($this->subArrMB['s'][$u[0]])) { + $font = 'tts'; + $ftype = 'C'; + foreach ($u as $char) { + if (isset($this->subArrMB['s'][$char])) { + $repl[] = $this->subArrMB['s'][$char]; + } else { + break; + } + } + } + if ($ftype == 'C') { + $patt = mb_substr($writehtml_e, $start, count($repl)); + if (preg_match("/(.*?)(" . preg_quote($patt, '/') . ")(.*)/u", $writehtml_e, $m)) { + $writehtml_e = $m[1]; + array_splice($writehtml_a, $writehtml_i + 1, 0, [$font, implode('|', $repl), '/' . $font, $m[3]]); // e.g. <tts> + $this->subPos = $writehtml_i + 3; + return 4; + } + return 0; + } + } + + // LASTLY TRY IN BACKUP SUBS FONT + if (!is_array($this->backupSubsFont)) { + $this->backupSubsFont = ["$this->backupSubsFont"]; + } + + foreach ($this->backupSubsFont as $bsfctr => $bsf) { + if ($this->currentfontfamily != $bsf) { + $font = $bsf; + } else { + continue; + } + + unset($cw); + $cw = ''; + + if (isset($this->fonts[$font])) { + $cw = &$this->fonts[$font]['cw']; + } elseif ($this->fontCache->has($font . '.cw.dat')) { + $cw = $this->fontCache->load($font . '.cw.dat'); + } else { + $prevFontFamily = $this->FontFamily; + $prevFontStyle = $this->currentfontstyle; + $prevFontSizePt = $this->FontSizePt; + $this->SetFont($bsf, '', '', false); + $this->SetFont($prevFontFamily, $prevFontStyle, $prevFontSizePt, false); + if ($this->fontCache->has($font . '.cw.dat')) { + $cw = $this->fontCache->load($font . '.cw.dat'); + } + } + + if (!$cw) { + continue; + } + + $l = 0; + foreach ($u as $char) { + if ($char == 173 || $this->_charDefined($cw, $char) || ($char > 1536 && $char < 1791) || ($char > 2304 && $char < 3455 )) { // Arabic and Indic + $l++; + } else { + if ($l == 0 && $bsfctr == (count($this->backupSubsFont) - 1)) { // Not found even in last backup font + $cont = mb_substr($writehtml_e, $start + 1); + $writehtml_e = mb_substr($writehtml_e, 0, $start + 1); + array_splice($writehtml_a, $writehtml_i + 1, 0, ['', $cont]); + $this->subPos = $writehtml_i + 1; + return 2; + } else { + break; + } + } + } + + if ($l > 0) { + $patt = mb_substr($writehtml_e, $start, $l); + if (preg_match("/(.*?)(" . preg_quote($patt, '/') . ")(.*)/u", $writehtml_e, $m)) { + $writehtml_e = $m[1]; + array_splice($writehtml_a, $writehtml_i + 1, 0, ['span style="font-family: ' . $font . '"', $m[2], '/span', $m[3]]); + $this->subPos = $writehtml_i + 3; + return 4; + } + } + } + + unset($cw); + + return 0; + } + + function setHiEntitySubstitutions() + { + $entarr = include __DIR__ . '//data/entity_substitutions.php'; + + foreach ($entarr as $key => $val) { + $this->entsearch[] = '&' . $key . ';'; + $this->entsubstitute[] = UtfString::code2utf($val); + } + } + + function SubstituteHiEntities($html) + { + // converts html_entities > ASCII 127 to unicode + // Leaves in particular < to distinguish from tag marker + if (count($this->entsearch)) { + $html = str_replace($this->entsearch, $this->entsubstitute, $html); + } + + return $html; + } + + /** + * Edited v1.2 Pass by reference; option to continue if invalid UTF-8 chars + */ + function is_utf8(&$string) + { + if ($string === mb_convert_encoding(mb_convert_encoding($string, "UTF-32", "UTF-8"), "UTF-8", "UTF-32")) { + return true; + } + + if ($this->ignore_invalid_utf8) { + $string = mb_convert_encoding(mb_convert_encoding($string, "UTF-32", "UTF-8"), "UTF-8", "UTF-32"); + return true; + } + + return false; + } + + /** + * For HTML + * + * Checks string is valid UTF-8 encoded + * converts html_entities > ASCII 127 to UTF-8 + * Only exception - leaves low ASCII entities e.g. < & etc. + * Leaves in particular < to distinguish from tag marker + */ + function purify_utf8($html, $lo = true) + { + if (!$this->is_utf8($html)) { + + while (mb_convert_encoding(mb_convert_encoding($html, "UTF-32", "UTF-8"), "UTF-8", "UTF-32") != $html) { + + $a = @iconv('UTF-8', 'UTF-8', $html); + $error = error_get_last(); + if ($error && $error['message'] === 'iconv(): Detected an illegal character in input string') { + throw new \Mpdf\MpdfException('Invalid input characters. Did you set $mpdf->in_charset properly?'); + } + + $pos = $start = strlen($a); + $err = ''; + while (ord(substr($html, $pos, 1)) > 128) { + $err .= '[[#' . ord(substr($html, $pos, 1)) . ']]'; + $pos++; + } + + $this->logger->error($err, ['context' => LogContext::UTF8]); + $html = substr($html, $pos); + } + + throw new \Mpdf\MpdfException("HTML contains invalid UTF-8 character(s). See log for further details"); + } + + $html = preg_replace("/\r/", "", $html); + + // converts html_entities > ASCII 127 to UTF-8 + // Leaves in particular < to distinguish from tag marker + $html = $this->SubstituteHiEntities($html); + + // converts all &#nnn; or &#xHHH; to UTF-8 multibyte + // If $lo==true then includes ASCII < 128 + $html = UtfString::strcode2utf($html, $lo); + + return $html; + } + + /** + * For TEXT + */ + function purify_utf8_text($txt) + { + // Make sure UTF-8 string of characters + if (!$this->is_utf8($txt)) { + throw new \Mpdf\MpdfException("Text contains invalid UTF-8 character(s)"); + } + + $txt = preg_replace("/\r/", "", $txt); + + return ($txt); + } + + function all_entities_to_utf8($txt) + { + // converts txt_entities > ASCII 127 to UTF-8 + // Leaves in particular < to distinguish from tag marker + $txt = $this->SubstituteHiEntities($txt); + + // converts all &#nnn; or &#xHHH; to UTF-8 multibyte + $txt = UtfString::strcode2utf($txt); + + $txt = $this->lesser_entity_decode($txt); + return ($txt); + } + + /* -- BARCODES -- */ + /** + * UPC/EAN barcode + * + * EAN13, EAN8, UPCA, UPCE, ISBN, ISSN + * Accepts 12 or 13 digits with or without - hyphens + */ + function WriteBarcode($code, $showtext = 1, $x = '', $y = '', $size = 1, $border = 0, $paddingL = 1, $paddingR = 1, $paddingT = 2, $paddingB = 2, $height = 1, $bgcol = false, $col = false, $btype = 'ISBN', $supplement = '0', $supplement_code = '', $k = 1) + { + if (empty($code)) { + return; + } + + $codestr = $code; + $code = preg_replace('/\-/', '', $code); + + $this->barcode = new Barcode(); + if ($btype == 'ISSN' || $btype == 'ISBN') { + $arrcode = $this->barcode->getBarcodeArray($code, 'EAN13'); + } else { + $arrcode = $this->barcode->getBarcodeArray($code, $btype); + } + + if ($arrcode === false) { + throw new \Mpdf\MpdfException('Error in barcode string: ' . $codestr); + } + + if ((($btype === 'EAN13' || $btype === 'ISBN' || $btype === 'ISSN') && strlen($code) === 12) + || ($btype == 'UPCA' && strlen($code) === 11) + || ($btype == 'UPCE' && strlen($code) === 11) + || ($btype == 'EAN8' && strlen($code) === 7)) { + + $code .= $arrcode['checkdigit']; + + if (stristr($codestr, '-')) { + $codestr .= '-' . $arrcode['checkdigit']; + } else { + $codestr .= $arrcode['checkdigit']; + } + } + + if ($btype === 'ISBN') { + $codestr = 'ISBN ' . $codestr; + } + + if ($btype === 'ISSN') { + $codestr = 'ISSN ' . $codestr; + } + + if (empty($x)) { + $x = $this->x; + } + + if (empty($y)) { + $y = $this->y; + } + + // set foreground color + $prevDrawColor = $this->DrawColor; + $prevTextColor = $this->TextColor; + $prevFillColor = $this->FillColor; + + $lw = $this->LineWidth; + $this->SetLineWidth(0.01); + + $size /= $k; // in case resized in a table + + $xres = $arrcode['nom-X'] * $size; + $llm = $arrcode['lightmL'] * $arrcode['nom-X'] * $size; // Left Light margin + $rlm = $arrcode['lightmR'] * $arrcode['nom-X'] * $size; // Right Light margin + + $bcw = ($arrcode["maxw"] * $xres); // Barcode width = Should always be 31.35mm * $size + + $fbw = $bcw + $llm + $rlm; // Full barcode width incl. light margins + $ow = $fbw + $paddingL + $paddingR; // Full overall width incl. user-defined padding + + $fbwi = $fbw - 2; // Full barcode width incl. light margins - 2mm - for isbn string + // cf. http://www.gs1uk.org/downloads/bar_code/Bar coding getting it right.pdf + $num_height = 3 * $size; // Height of numerals + $fbh = $arrcode['nom-H'] * $size * $height; // Full barcode height incl. numerals + $bch = $fbh - (1.5 * $size); // Barcode height of bars (3mm for numerals) + + if (($btype == 'EAN13' && $showtext) || $btype == 'ISSN' || $btype == 'ISBN') { // Add height for ISBN string + margin from top of bars + $tisbnm = 1.5 * $size; // Top margin between isbn (if shown) & bars + $codestr_fontsize = 2.1 * $size; + $paddingT += $codestr_fontsize + $tisbnm; + } + + $oh = $fbh + $paddingT + $paddingB; // Full overall height incl. user-defined padding + + // PRINT border background color + $xpos = $x; + $ypos = $y; + + if ($col) { + $this->SetDColor($col); + $this->SetTColor($col); + } else { + $this->SetDColor($this->colorConverter->convert(0, $this->PDFAXwarnings)); + $this->SetTColor($this->colorConverter->convert(0, $this->PDFAXwarnings)); + } + + if ($bgcol) { + $this->SetFColor($bgcol); + } else { + $this->SetFColor($this->colorConverter->convert(255, $this->PDFAXwarnings)); + } + + if (!$bgcol && !$col) { // fn. called directly - not via HTML + + if ($border) { + $fillb = 'DF'; + } else { + $fillb = 'F'; + } + + $this->Rect($xpos, $ypos, $ow, $oh, $fillb); + } + + + // PRINT BARS + $xpos = $x + $paddingL + $llm; + $ypos = $y + $paddingT; + + if ($col) { + $this->SetFColor($col); + } else { + $this->SetFColor($this->colorConverter->convert(0, $this->PDFAXwarnings)); + } + + if ($arrcode !== false) { + foreach ($arrcode["bcode"] as $v) { + $bw = ($v["w"] * $xres); + if ($v["t"]) { + // draw a vertical bar + $this->Rect($xpos, $ypos, $bw, $bch, 'F'); + } + $xpos += $bw; + } + } + + // print text + $prevFontFamily = $this->FontFamily; + $prevFontStyle = $this->FontStyle; + $prevFontSizePt = $this->FontSizePt; + + // ISBN string + if (($btype === 'EAN13' && $showtext) || $btype === 'ISBN' || $btype === 'ISSN') { + + if ($this->onlyCoreFonts) { + $this->SetFont('chelvetica'); + } else { + $this->SetFont('sans'); + } + + if ($bgcol) { + $this->SetFColor($bgcol); + } else { + $this->SetFColor($this->colorConverter->convert(255, $this->PDFAXwarnings)); + } + + $this->x = $x + $paddingL + 1; // 1mm left margin (cf. $fbwi above) + + // max width is $fbwi + $loop = 0; + while ($loop == 0) { + $this->SetFontSize($codestr_fontsize * 1.4 * Mpdf::SCALE, false); // don't write + $sz = $this->GetStringWidth($codestr); + + if ($sz > $fbwi) { + $codestr_fontsize -= 0.1; + } else { + $loop ++; + } + } + + $this->SetFont('', '', $codestr_fontsize * 1.4 * Mpdf::SCALE, true, true); // * 1.4 because font height is only 7/10 of given mm + // WORD SPACING + if ($fbwi > $sz) { + $xtra = $fbwi - $sz; + $charspacing = $xtra / (strlen($codestr) - 1); + if ($charspacing) { + $this->writer->write(sprintf('BT %.3F Tc ET', $charspacing * Mpdf::SCALE)); + } + } + + $this->y = $y + $paddingT - ($codestr_fontsize ) - $tisbnm; + $this->Cell($fbw, $codestr_fontsize, $codestr); + + if ($charspacing) { + $this->writer->write('BT 0 Tc ET'); + } + } + + + // Bottom NUMERALS + // mPDF 5.7.4 + if ($this->onlyCoreFonts) { + $this->SetFont('ccourier'); + $fh = 1.3; + } else { + $this->SetFont('ocrb'); + $fh = 1.06; + } + + $charRO = ''; + + if ($btype === 'EAN13' || $btype === 'ISBN' || $btype === 'ISSN') { + + $outerfontsize = 3; // Inner fontsize = 3 + $outerp = $xres * 4; + $innerp = $xres * 2.5; + $textw = ($bcw * 0.5) - $outerp - $innerp; + $chars = 6; // number of numerals in each half + $charLO = substr($code, 0, 1); // Left Outer + $charLI = substr($code, 1, 6); // Left Inner + $charRI = substr($code, 7, 6); // Right Inner + + if (!$supplement) { + $charRO = '>'; // Right Outer + } + + } elseif ($btype === 'UPCA') { + + $outerfontsize = 2.3; // Inner fontsize = 3 + $outerp = $xres * 10; + $innerp = $xres * 2.5; + $textw = ($bcw * 0.5) - $outerp - $innerp; + $chars = 5; + $charLO = substr($code, 0, 1); // Left Outer + $charLI = substr($code, 1, 5); // Left Inner + $charRI = substr($code, 6, 5); // Right Inner + $charRO = substr($code, 11, 1); // Right Outer + + } elseif ($btype === 'UPCE') { + + $outerfontsize = 2.3; // Inner fontsize = 3 + $outerp = $xres * 4; + $innerp = 0; + $textw = ($bcw * 0.5) - $outerp - $innerp; + $chars = 3; + $upce_code = $arrcode['code']; + $charLO = substr($code, 0, 1); // Left Outer + $charLI = substr($upce_code, 0, 3); // Left Inner + $charRI = substr($upce_code, 3, 3); // Right Inner + $charRO = substr($code, 11, 1); // Right Outer + + } elseif ($btype === 'EAN8') { + + $outerfontsize = 3; // Inner fontsize = 3 + $outerp = $xres * 4; + $innerp = $xres * 2.5; + $textw = ($bcw * 0.5) - $outerp - $innerp; + $chars = 4; + $charLO = '<'; // Left Outer + $charLI = substr($code, 0, 4); // Left Inner + $charRI = substr($code, 4, 4); // Right Inner + + if (!$supplement) { + $charRO = '>'; // Right Outer + } + } + + $this->SetFontSize(($outerfontsize / 3) * 3 * $fh * $size * Mpdf::SCALE); // 3mm numerals (FontSize is larger to account for space above/below characters) + + if (!$this->usingCoreFont) { // character width at 3mm + $cw = $this->_getCharWidth($this->CurrentFont['cw'], 32) * 3 * $fh * $size / 1000; + } else { + $cw = 600 * 3 * $fh * $size / 1000; + } + + // Outer left character + $y_text = $y + $paddingT + $bch - ($num_height / 2); + $y_text_outer = $y + $paddingT + $bch - ($num_height * ($outerfontsize / 3) / 2); + + $this->x = $x + $paddingL - ($cw * ($outerfontsize / 3) * 0.1); // 0.1 is correction as char does not fill full width; + $this->y = $y_text_outer; + $this->Cell($cw, $num_height, $charLO); + + // WORD SPACING for inner chars + $xtra = $textw - ($cw * $chars); + $charspacing = $xtra / ($chars - 1); + if ($charspacing) { + $this->writer->write(sprintf('BT %.3F Tc ET', $charspacing * Mpdf::SCALE)); + } + + if ($bgcol) { + $this->SetFColor($bgcol); + } else { + $this->SetFColor($this->colorConverter->convert(255, $this->PDFAXwarnings)); + } + + $this->SetFontSize(3 * $fh * $size * Mpdf::SCALE); // 3mm numerals (FontSize is larger to account for space above/below characters) + + // Inner left half characters + $this->x = $x + $paddingL + $llm + $outerp; + $this->y = $y_text; + $this->Cell($textw, $num_height, $charLI, 0, 0, '', 1); + + // Inner right half characters + $this->x = $x + $paddingL + $llm + ($bcw * 0.5) + $innerp; + $this->y = $y_text; + $this->Cell($textw, $num_height, $charRI, 0, 0, '', 1); + + if ($charspacing) { + $this->writer->write('BT 0 Tc ET'); + } + + // Outer Right character + $this->SetFontSize(($outerfontsize / 3) * 3 * $fh * $size * Mpdf::SCALE); // 3mm numerals (FontSize is larger to account for space above/below characters) + + $this->x = $x + $paddingL + $llm + $bcw + $rlm - ($cw * ($outerfontsize / 3) * 0.9); // 0.9 is correction as char does not fill full width + $this->y = $y_text_outer; + $this->Cell($cw * ($outerfontsize / 3), $num_height, $charRO, 0, 0, 'R'); + + if ($supplement) { // EAN-2 or -5 Supplement + // PRINT BARS + $supparrcode = $this->barcode->getBarcodeArray($supplement_code, 'EAN' . $supplement); + + if ($supparrcode === false) { + throw new \Mpdf\MpdfException('Error in barcode string (supplement): ' . $codestr . ' ' . $supplement_code); + } + + if (strlen($supplement_code) != $supplement) { + throw new \Mpdf\MpdfException('Barcode supplement incorrect: ' . $supplement_code); + } + + $llm = $fbw - (($arrcode['lightmR'] - $supparrcode['sepM']) * $arrcode['nom-X'] * $size); // Left Light margin + $rlm = $arrcode['lightmR'] * $arrcode['nom-X'] * $size; // Right Light margin + + $bcw = ($supparrcode["maxw"] * $xres); // Barcode width = Should always be 31.35mm * $size + + $fbw = $bcw + $llm + $rlm; // Full barcode width incl. light margins + $ow = $fbw + $paddingL + $paddingR; // Full overall width incl. user-defined padding + $bch = $fbh - (1.5 * $size) - ($num_height + 0.5); // Barcode height of bars (3mm for numerals) + + $xpos = $x + $paddingL + $llm; + $ypos = $y + $paddingT + $num_height + 0.5; + + if ($col) { + $this->SetFColor($col); + } else { + $this->SetFColor($this->colorConverter->convert(0, $this->PDFAXwarnings)); + } + + if ($supparrcode !== false) { + foreach ($supparrcode["bcode"] as $v) { + $bw = ($v["w"] * $xres); + if ($v["t"]) { + // draw a vertical bar + $this->Rect($xpos, $ypos, $bw, $bch, 'F'); + } + $xpos += $bw; + } + } + + // Characters + if ($bgcol) { + $this->SetFColor($bgcol); + } else { + $this->SetFColor($this->colorConverter->convert(255, $this->PDFAXwarnings)); + } + + $this->SetFontSize(3 * $fh * $size * Mpdf::SCALE); // 3mm numerals (FontSize is larger to account for space above/below characters) + $this->x = $x + $paddingL + $llm; + $this->y = $y + $paddingT; + $this->Cell($bcw, $num_height, $supplement_code, 0, 0, 'C'); + + // Outer Right character (light margin) + $this->SetFontSize(($outerfontsize / 3) * 3 * $fh * $size * Mpdf::SCALE); // 3mm numerals (FontSize is larger to account for space above/below characters) + $this->x = $x + $paddingL + $llm + $bcw + $rlm - ($cw * 0.9); // 0.9 is correction as char does not fill full width + $this->y = $y + $paddingT; + $this->Cell($cw * ($outerfontsize / 3), $num_height, '>', 0, 0, 'R'); + } + + // Restore ************** + $this->SetFont($prevFontFamily, $prevFontStyle, $prevFontSizePt); + $this->DrawColor = $prevDrawColor; + $this->TextColor = $prevTextColor; + $this->FillColor = $prevFillColor; + $this->SetLineWidth($lw); + $this->SetY($y); + } + + /** + * POSTAL and OTHER barcodes + */ + function WriteBarcode2($code, $x = '', $y = '', $size = 1, $height = 1, $bgcol = false, $col = false, $btype = 'IMB', $print_ratio = '', $k = 1) + { + if (empty($code)) { + return; + } + + $this->barcode = new Barcode(); + $arrcode = $this->barcode->getBarcodeArray($code, $btype, $print_ratio); + + if (empty($x)) { + $x = $this->x; + } + + if (empty($y)) { + $y = $this->y; + } + + $prevDrawColor = $this->DrawColor; + $prevTextColor = $this->TextColor; + $prevFillColor = $this->FillColor; + $lw = $this->LineWidth; + $this->SetLineWidth(0.01); + $size /= $k; // in case resized in a table + $xres = $arrcode['nom-X'] * $size; + + if ($btype === 'IMB' || $btype === 'RM4SCC' || $btype === 'KIX' || $btype === 'POSTNET' || $btype === 'PLANET') { + $llm = $arrcode['quietL'] / $k; // Left Quiet margin + $rlm = $arrcode['quietR'] / $k; // Right Quiet margin + $tlm = $blm = $arrcode['quietTB'] / $k; + $height = 1; // Overrides + } elseif (in_array($btype, ['C128A', 'C128B', 'C128C', 'C128RAW', 'EAN128A', 'EAN128B', 'EAN128C', 'C39', 'C39+', 'C39E', 'C39E+', 'S25', 'S25+', 'I25', 'I25+', 'I25B', 'I25B+', 'C93', 'MSI', 'MSI+', 'CODABAR', 'CODE11'])) { + $llm = $arrcode['lightmL'] * $xres; // Left Quiet margin + $rlm = $arrcode['lightmR'] * $xres; // Right Quiet margin + $tlm = $blm = $arrcode['lightTB'] * $xres * $height; + } + + $bcw = ($arrcode["maxw"] * $xres); + $fbw = $bcw + $llm + $rlm; // Full barcode width incl. light margins + + $bch = ($arrcode["nom-H"] * $size * $height); + $fbh = $bch + $tlm + $blm; // Full barcode height + + // PRINT border background color + $xpos = $x; + $ypos = $y; + + if ($col) { + $this->SetDColor($col); + $this->SetTColor($col); + } else { + $this->SetDColor($this->colorConverter->convert(0, $this->PDFAXwarnings)); + $this->SetTColor($this->colorConverter->convert(0, $this->PDFAXwarnings)); + } + + if ($bgcol) { + $this->SetFColor($bgcol); + } else { + $this->SetFColor($this->colorConverter->convert(255, $this->PDFAXwarnings)); + } + + // PRINT BARS + if ($col) { + $this->SetFColor($col); + } else { + $this->SetFColor($this->colorConverter->convert(0, $this->PDFAXwarnings)); + } + $xpos = $x + $llm; + + if ($arrcode !== false) { + foreach ($arrcode["bcode"] as $v) { + $bw = ($v["w"] * $xres); + if ($v["t"]) { + $ypos = $y + $tlm + ($bch * $v['p'] / $arrcode['maxh']); + $this->Rect($xpos, $ypos, $bw, ($v['h'] * $bch / $arrcode['maxh']), 'F'); + } + $xpos += $bw; + } + } + + // PRINT BEARER BARS + if ($btype == 'I25B' || $btype == 'I25B+') { + $this->Rect($x, $y, $fbw, ($arrcode['lightTB'] * $xres * $height), 'F'); + $this->Rect($x, $y + $tlm + $bch, $fbw, ($arrcode['lightTB'] * $xres * $height), 'F'); + } + + // Restore ************** + $this->DrawColor = $prevDrawColor; + $this->TextColor = $prevTextColor; + $this->FillColor = $prevFillColor; + $this->SetLineWidth($lw); + $this->SetY($y); + } + /* -- END BARCODES -- */ + + function StartTransform($returnstring = false) + { + if ($returnstring) { + return('q'); + } else { + $this->writer->write('q'); + } + } + + function StopTransform($returnstring = false) + { + if ($returnstring) { + return('Q'); + } else { + $this->writer->write('Q'); + } + } + + function transformScale($s_x, $s_y, $x = '', $y = '', $returnstring = false) + { + if ($x === '') { + $x = $this->x; + } + + if ($y === '') { + $y = $this->y; + } + + if (($s_x == 0) or ( $s_y == 0)) { + throw new \Mpdf\MpdfException('Please do not use values equal to zero for scaling'); + } + + $y = ($this->h - $y) * Mpdf::SCALE; + $x *= Mpdf::SCALE; + + // calculate elements of transformation matrix + $s_x /= 100; + $s_y /= 100; + $tm = []; + $tm[0] = $s_x; + $tm[1] = 0; + $tm[2] = 0; + $tm[3] = $s_y; + $tm[4] = $x * (1 - $s_x); + $tm[5] = $y * (1 - $s_y); + + // scale the coordinate system + if ($returnstring) { + return($this->_transform($tm, true)); + } else { + $this->_transform($tm); + } + } + + function transformTranslate($t_x, $t_y, $returnstring = false) + { + // calculate elements of transformation matrix + $tm = []; + $tm[0] = 1; + $tm[1] = 0; + $tm[2] = 0; + $tm[3] = 1; + $tm[4] = $t_x * Mpdf::SCALE; + $tm[5] = -$t_y * Mpdf::SCALE; + + // translate the coordinate system + if ($returnstring) { + return($this->_transform($tm, true)); + } else { + $this->_transform($tm); + } + } + + function transformRotate($angle, $x = '', $y = '', $returnstring = false) + { + if ($x === '') { + $x = $this->x; + } + + if ($y === '') { + $y = $this->y; + } + + $angle = -$angle; + $y = ($this->h - $y) * Mpdf::SCALE; + $x *= Mpdf::SCALE; + + // calculate elements of transformation matrix + $tm = []; + $tm[0] = cos(deg2rad($angle)); + $tm[1] = sin(deg2rad($angle)); + $tm[2] = -$tm[1]; + $tm[3] = $tm[0]; + $tm[4] = $x + $tm[1] * $y - $tm[0] * $x; + $tm[5] = $y - $tm[0] * $y - $tm[1] * $x; + + // rotate the coordinate system around ($x,$y) + if ($returnstring) { + return $this->_transform($tm, true); + } else { + $this->_transform($tm); + } + } + + /** + * mPDF 5.7.3 TRANSFORMS + */ + function transformSkew($angle_x, $angle_y, $x = '', $y = '', $returnstring = false) + { + if ($x === '') { + $x = $this->x; + } + + if ($y === '') { + $y = $this->y; + } + + $angle_x = -$angle_x; + $angle_y = -$angle_y; + + $x *= Mpdf::SCALE; + $y = ($this->h - $y) * Mpdf::SCALE; + + // calculate elements of transformation matrix + $tm = []; + $tm[0] = 1; + $tm[1] = tan(deg2rad($angle_y)); + $tm[2] = tan(deg2rad($angle_x)); + $tm[3] = 1; + $tm[4] = -$tm[2] * $y; + $tm[5] = -$tm[1] * $x; + + // skew the coordinate system + if ($returnstring) { + return $this->_transform($tm, true); + } else { + $this->_transform($tm); + } + } + + function _transform($tm, $returnstring = false) + { + if ($returnstring) { + return(sprintf('%.4F %.4F %.4F %.4F %.4F %.4F cm', $tm[0], $tm[1], $tm[2], $tm[3], $tm[4], $tm[5])); + } else { + $this->writer->write(sprintf('%.4F %.4F %.4F %.4F %.4F %.4F cm', $tm[0], $tm[1], $tm[2], $tm[3], $tm[4], $tm[5])); + } + } + + // AUTOFONT ========================= + function markScriptToLang($html) + { + if ($this->onlyCoreFonts) { + return $html; + } + + $n = ''; + $a = preg_split('/<(.*?)>/ms', $html, -1, PREG_SPLIT_DELIM_CAPTURE); + foreach ($a as $i => $e) { + if ($i % 2 == 0) { + + // ignore if in Textarea + if ($i > 0 && strtolower(substr($a[$i - 1], 1, 8)) == 'textarea') { + $a[$i] = $e; + continue; + } + + $e = UtfString::strcode2utf($e); + $e = $this->lesser_entity_decode($e); + + $earr = $this->UTF8StringToArray($e, false); + + $scriptblock = 0; + $scriptblocks = []; + $scriptblocks[0] = 0; + $chardata = []; + $subchunk = 0; + $charctr = 0; + + foreach ($earr as $char) { + + $ucd_record = Ucdn::get_ucd_record($char); + $sbl = $ucd_record[6]; + + if ($sbl && $sbl != 40 && $sbl != 102) { + if ($scriptblock == 0) { + $scriptblock = $sbl; + $scriptblocks[$subchunk] = $scriptblock; + } elseif ($scriptblock > 0 && $scriptblock != $sbl) { + // NEW (non-common) Script encountered in this chunk. + // Start a new subchunk + $subchunk++; + $scriptblock = $sbl; + $charctr = 0; + $scriptblocks[$subchunk] = $scriptblock; + } + } + + $chardata[$subchunk][$charctr]['script'] = $sbl; + $chardata[$subchunk][$charctr]['uni'] = $char; + $charctr++; + } + + // If scriptblock[x] = common & non-baseScript + // and scriptblock[x+1] = baseScript + // Move common script from end of x to start of x+1 + for ($sch = 0; $sch < $subchunk; $sch++) { + if ($scriptblocks[$sch] > 0 && $scriptblocks[$sch] != $this->baseScript && $scriptblocks[$sch + 1] == $this->baseScript) { + $end = count($chardata[$sch]) - 1; + while ($chardata[$sch][$end]['script'] == 0 && $end > 1) { // common script + $tmp = array_pop($chardata[$sch]); + array_unshift($chardata[$sch + 1], $tmp); + $end--; + } + } + } + + $o = ''; + for ($sch = 0; $sch <= $subchunk; $sch++) { + + if (isset($chardata[$sch])) { + $s = ''; + for ($j = 0; $j < count($chardata[$sch]); $j++) { + $s .= UtfString::code2utf($chardata[$sch][$j]['uni']); + } + + // ZZZ99 Undo lesser_entity_decode as above - but only for <>& + $s = str_replace("&", "&", $s); + $s = str_replace("<", "<", $s); + $s = str_replace(">", ">", $s); + + // Check Vietnamese if Latin script - even if Basescript + if ($scriptblocks[$sch] == Ucdn::SCRIPT_LATIN && $this->autoVietnamese && preg_match("/([" . $this->scriptToLanguage->getLanguageDelimiters('viet') . "])/u", $s)) { + $o .= '<span lang="vi" class="lang_vi">' . $s . '</span>'; + } elseif ($scriptblocks[$sch] == Ucdn::SCRIPT_ARABIC && $this->autoArabic) { // Check Arabic for different languages if Arabic script - even if Basescript + if (preg_match("/[" . $this->scriptToLanguage->getLanguageDelimiters('sindhi') . "]/u", $s)) { + $o .= '<span lang="sd" class="lang_sd">' . $s . '</span>'; + } elseif (preg_match("/[" . $this->scriptToLanguage->getLanguageDelimiters('urdu') . "]/u", $s)) { + $o .= '<span lang="ur" class="lang_ur">' . $s . '</span>'; + } elseif (preg_match("/[" . $this->scriptToLanguage->getLanguageDelimiters('pashto') . "]/u", $s)) { + $o .= '<span lang="ps" class="lang_ps">' . $s . '</span>'; + } elseif (preg_match("/[" . $this->scriptToLanguage->getLanguageDelimiters('persian') . "]/u", $s)) { + $o .= '<span lang="fa" class="lang_fa">' . $s . '</span>'; + } elseif ($this->baseScript != Ucdn::SCRIPT_ARABIC && $this->scriptToLanguage->getLanguageByScript($scriptblocks[$sch])) { + $o .= '<span lang="' . $this->scriptToLanguage->getLanguageByScript($scriptblocks[$sch]) . '" class="lang_' . $this->scriptToLanguage->getLanguageByScript($scriptblocks[$sch]) . '">' . $s . '</span>'; + } else { + // Just output chars + $o .= $s; + } + } elseif ($scriptblocks[$sch] > 0 && $scriptblocks[$sch] != $this->baseScript && $this->scriptToLanguage->getLanguageByScript($scriptblocks[$sch])) { // Identify Script block if not Basescript, and mark up as language + // Encase in <span> + $o .= '<span lang="' . $this->scriptToLanguage->getLanguageByScript($scriptblocks[$sch]) . '" class="lang_' . $this->scriptToLanguage->getLanguageByScript($scriptblocks[$sch]) . '">'; + $o .= $s; + $o .= '</span>'; + } else { + // Just output chars + $o .= $s; + } + } + } + + $a[$i] = $o; + } else { + $a[$i] = '<' . $e . '>'; + } + } + + $n = implode('', $a); + + return $n; + } + + /* -- COLUMNS -- */ + /** + * Callback function from function printcolumnbuffer in mpdf + */ + function columnAdjustAdd($type, $k, $xadj, $yadj, $a, $b, $c = 0, $d = 0, $e = 0, $f = 0) + { + if ($type === 'Td') { // xpos,ypos + + $a += ($xadj * $k); + $b -= ($yadj * $k); + + return 'BT ' . sprintf('%.3F %.3F', $a, $b) . ' Td'; + + } elseif ($type === 're') { // xpos,ypos,width,height + + $a += ($xadj * $k); + $b -= ($yadj * $k); + + return sprintf('%.3F %.3F %.3F %.3F', $a, $b, $c, $d) . ' re'; + + } elseif ($type === 'l') { // xpos,ypos,x2pos,y2pos + + $a += ($xadj * $k); + $b -= ($yadj * $k); + + return sprintf('%.3F %.3F l', $a, $b); + + } elseif ($type === 'img') { // width,height,xpos,ypos + + $c += ($xadj * $k); + $d -= ($yadj * $k); + + return sprintf('q %.3F 0 0 %.3F %.3F %.3F', $a, $b, $c, $d) . ' cm /' . $e; + + } elseif ($type === 'draw') { // xpos,ypos + + $a += ($xadj * $k); + $b -= ($yadj * $k); + + return sprintf('%.3F %.3F m', $a, $b); + + } elseif ($type === 'bezier') { // xpos,ypos,x2pos,y2pos,x3pos,y3pos + + $a += ($xadj * $k); + $b -= ($yadj * $k); + $c += ($xadj * $k); + $d -= ($yadj * $k); + $e += ($xadj * $k); + $f -= ($yadj * $k); + + return sprintf('%.3F %.3F %.3F %.3F %.3F %.3F', $a, $b, $c, $d, $e, $f) . ' c'; + } + } + + /* -- END COLUMNS -- */ + + // mPDF 5.7.3 TRANSFORMS + function ConvertAngle($s, $makepositive = true) + { + if (preg_match('/([\-]*[0-9\.]+)(deg|grad|rad)/i', $s, $m)) { + + $angle = $m[1] + 0; + + if (strtolower($m[2]) == 'deg') { + $angle = $angle; + } elseif (strtolower($m[2]) == 'grad') { + $angle *= (360 / 400); + } elseif (strtolower($m[2]) == 'rad') { + $angle = rad2deg($angle); + } + + while ($angle >= 360) { + $angle -= 360; + } + + while ($angle <= -360) { + $angle += 360; + } + + if ($makepositive) { // always returns an angle between 0 and 360deg + if ($angle < 0) { + $angle += 360; + } + } + + } else { + $angle = $s + 0; + } + + return $angle; + } + + function lesser_entity_decode($html) + { + // supports the most used entity codes (only does ascii safe characters) + $html = str_replace("<", "<", $html); + $html = str_replace(">", ">", $html); + + $html = str_replace("'", "'", $html); + $html = str_replace(""", '"', $html); + $html = str_replace("&", "&", $html); + + return $html; + } + + function AdjustHTML($html, $tabSpaces = 8) + { + $limit = ini_get('pcre.backtrack_limit'); + if (strlen($html) > $limit) { + throw new \Mpdf\MpdfException(sprintf( + 'The HTML code size is larger than pcre.backtrack_limit %d. You should use WriteHTML() with smaller string lengths.', + $limit + )); + } + + preg_match_all("/(<annotation.*?>)/si", $html, $m); + if (count($m[1])) { + for ($i = 0; $i < count($m[1]); $i++) { + $sub = preg_replace("/\n/si", "\xbb\xa4\xac", $m[1][$i]); + $html = preg_replace('/' . preg_quote($m[1][$i], '/') . '/si', $sub, $html); + } + } + + preg_match_all("/(<svg.*?<\/svg>)/si", $html, $svgi); + if (count($svgi[0])) { + for ($i = 0; $i < count($svgi[0]); $i++) { + $file = $this->cache->write('/_tempSVG' . uniqid(random_int(1, 100000), true) . '_' . $i . '.svg', $svgi[0][$i]); + $html = str_replace($svgi[0][$i], '<img src="' . $file . '" />', $html); + } + } + + // Remove javascript code from HTML (should not appear in the PDF file) + $html = preg_replace('/<script.*?<\/script>/is', '', $html); + + // Remove special comments + $html = preg_replace('/<!--mpdf/i', '', $html); + $html = preg_replace('/mpdf-->/i', '', $html); + + // Remove comments from HTML (should not appear in the PDF file) + $html = preg_replace('/<!--.*?-->/s', '', $html); + + $html = preg_replace('/\f/', '', $html); // replace formfeed by nothing + $html = preg_replace('/\r/', '', $html); // replace carriage return by nothing + + // Well formed XHTML end tags + $html = preg_replace('/<(br|hr)>/i', "<\\1 />", $html); // mPDF 6 + $html = preg_replace('/<(br|hr)\/>/i', "<\\1 />", $html); + + // Get rid of empty <thead></thead> etc + $html = preg_replace('/<tr>\s*<\/tr>/i', '', $html); + $html = preg_replace('/<thead>\s*<\/thead>/i', '', $html); + $html = preg_replace('/<tfoot>\s*<\/tfoot>/i', '', $html); + $html = preg_replace('/<table[^>]*>\s*<\/table>/i', '', $html); + + // Remove spaces at end of table cells + $html = preg_replace("/[ \n\r]+<\/t(d|h)/", '</t\\1', $html); + + $html = preg_replace("/[ ]*<dottab\s*[\/]*>[ ]*/", '<dottab />', $html); + + // Concatenates any Substitute characters from symbols/dingbats + $html = str_replace('</tts><tts>', '|', $html); + $html = str_replace('</ttz><ttz>', '|', $html); + $html = str_replace('</tta><tta>', '|', $html); + + $html = preg_replace('/<br \/>\s*/is', "<br />", $html); + + $html = preg_replace('/<wbr[ \/]*>\s*/is', "­", $html); + + // Preserve '\n's in content between the tags <pre> and </pre> + if (preg_match('/<pre/', $html)) { + + $html_a = preg_split('/(\<\/?pre[^\>]*\>)/', $html, -1, 2); + $h = []; + $c = 0; + + foreach ($html_a as $s) { + if ($c > 1 && preg_match('/^<\/pre/i', $s)) { + $c--; + $s = preg_replace('/<\/pre/i', '</innerpre', $s); + } elseif ($c > 0 && preg_match('/^<pre/i', $s)) { + $c++; + $s = preg_replace('/<pre/i', '<innerpre', $s); + } elseif (preg_match('/^<pre/i', $s)) { + $c++; + } elseif (preg_match('/^<\/pre/i', $s)) { + $c--; + } + array_push($h, $s); + } + + $html = implode('', $h); + } + + $thereispre = preg_match_all('#<pre(.*?)>(.*?)</pre>#si', $html, $temp); + + // Preserve '\n's in content between the tags <textarea> and </textarea> + $thereistextarea = preg_match_all('#<textarea(.*?)>(.*?)</textarea>#si', $html, $temp2); + $html = preg_replace('/[\n]/', ' ', $html); // replace linefeed by spaces + $html = preg_replace('/[\t]/', ' ', $html); // replace tabs by spaces + + // Converts < to < when not a tag + $html = preg_replace('/<([^!\/a-zA-Z_:])/i', '<\\1', $html); // mPDF 5.7.3 + $html = preg_replace("/[ ]+/", ' ', $html); + + $html = preg_replace('/\/li>\s+<\/(u|o)l/i', '/li></\\1l', $html); + $html = preg_replace('/\/(u|o)l>\s+<\/li/i', '/\\1l></li', $html); + $html = preg_replace('/\/li>\s+<\/(u|o)l/i', '/li></\\1l', $html); + $html = preg_replace('/\/li>\s+<li/i', '/li><li', $html); + $html = preg_replace('/<(u|o)l([^>]*)>[ ]+/i', '<\\1l\\2>', $html); + $html = preg_replace('/[ ]+<(u|o)l/i', '<\\1l', $html); + + // Make self closing tabs valid XHTML + // Tags which are self-closing: 1) Replaceable and 2) Non-replaced items + $selftabs = 'input|hr|img|br|barcode|dottab'; + $selftabs2 = 'indexentry|indexinsert|bookmark|watermarktext|watermarkimage|column_break|columnbreak|newcolumn|newpage|page_break|pagebreak|formfeed|columns|toc|tocpagebreak|setpageheader|setpagefooter|sethtmlpageheader|sethtmlpagefooter|annotation'; + + // Fix self-closing tags which don't close themselves + $html = preg_replace('/(<(' . $selftabs . '|' . $selftabs2 . ')[^>\/]*)>/i', '\\1 />', $html); + + // Fix self-closing tags that don't include a space between the tag name and the closing slash + $html = preg_replace('/(<(' . $selftabs . '|' . $selftabs2 . '))\/>/i', '\\1 />', $html); + + $iterator = 0; + while ($thereispre) { // Recover <pre attributes>content</pre> + $temp[2][$iterator] = preg_replace('/<([^!\/a-zA-Z_:])/', '<\\1', $temp[2][$iterator]); // mPDF 5.7.2 // mPDF 5.7.3 + + $temp[2][$iterator] = preg_replace_callback("/^([^\n\t]*?)\t/m", [$this, 'tabs2spaces_callback'], $temp[2][$iterator]); // mPDF 5.7+ + $temp[2][$iterator] = preg_replace('/\t/', str_repeat(" ", $tabSpaces), $temp[2][$iterator]); + + $temp[2][$iterator] = preg_replace('/\n/', "<br />", $temp[2][$iterator]); + $temp[2][$iterator] = str_replace('\\', "\\\\", $temp[2][$iterator]); + // $html = preg_replace('#<pre(.*?)>(.*?)</pre>#si','<erp'.$temp[1][$iterator].'>'.$temp[2][$iterator].'</erp>',$html,1); + $html = preg_replace('#<pre(.*?)>(.*?)</pre>#si', '<erp' . $temp[1][$iterator] . '>' . str_replace('$', '\$', $temp[2][$iterator]) . '</erp>', $html, 1); // mPDF 5.7+ + $thereispre--; + $iterator++; + } + + $iterator = 0; + while ($thereistextarea) { // Recover <textarea attributes>content</textarea> + $temp2[2][$iterator] = preg_replace('/\t/', str_repeat(" ", $tabSpaces), $temp2[2][$iterator]); + $temp2[2][$iterator] = str_replace('\\', "\\\\", $temp2[2][$iterator]); + $html = preg_replace('#<textarea(.*?)>(.*?)</textarea>#si', '<aeratxet' . $temp2[1][$iterator] . '>' . trim($temp2[2][$iterator]) . '</aeratxet>', $html, 1); + $thereistextarea--; + $iterator++; + } + + // Restore original tag names + $html = str_replace("<erp", "<pre", $html); + $html = str_replace("</erp>", "</pre>", $html); + $html = str_replace("<aeratxet", "<textarea", $html); + $html = str_replace("</aeratxet>", "</textarea>", $html); + $html = str_replace("</innerpre", "</pre", $html); + $html = str_replace("<innerpre", "<pre", $html); + + $html = preg_replace('/<textarea([^>]*)><\/textarea>/si', '<textarea\\1> </textarea>', $html); + $html = preg_replace('/(<table[^>]*>)\s*(<caption)(.*?<\/caption>)(.*?<\/table>)/si', '\\2 position="top"\\3\\1\\4\\2 position="bottom"\\3', $html); // *TABLES* + $html = preg_replace('/<(h[1-6])([^>]*)(>(?:(?!h[1-6]).)*?<\/\\1>\s*<table)/si', '<\\1\\2 keep-with-table="1"\\3', $html); // *TABLES* + $html = preg_replace("/\xbb\xa4\xac/", "\n", $html); + + // Fixes <p>₹</p> which browser copes with even though it is wrong! + $html = preg_replace("/(&#[x]{0,1}[0-9a-f]{1,5})</i", "\\1;<", $html); + + return $html; + } + + // mPDF 5.7+ + function tabs2spaces_callback($matches) + { + return (stripslashes($matches[1]) . str_repeat(' ', $this->tabSpaces - (mb_strlen(stripslashes($matches[1])) % $this->tabSpaces))); + } + + // mPDF 5.7+ + function date_callback($matches) + { + return date($matches[1]); + } + + // ========== OVERWRITE SEARCH STRING IN A PDF FILE ================ + function OverWrite($file_in, $search, $replacement, $dest = Destination::DOWNLOAD, $file_out = "mpdf") + { + $pdf = file_get_contents($file_in); + + if (!is_array($search)) { + $x = $search; + $search = [$x]; + } + if (!is_array($replacement)) { + $x = $replacement; + $replacement = [$x]; // mPDF 5.7.4 + } + + if (!$this->onlyCoreFonts && !$this->usingCoreFont) { + foreach ($search as $k => $val) { + $search[$k] = $this->writer->utf8ToUtf16BigEndian($search[$k], false); + $search[$k] = $this->writer->escape($search[$k]); + $replacement[$k] = $this->writer->utf8ToUtf16BigEndian($replacement[$k], false); + $replacement[$k] = $this->writer->escape($replacement[$k]); + } + } else { + foreach ($replacement as $k => $val) { + $replacement[$k] = mb_convert_encoding($replacement[$k], $this->mb_enc, 'utf-8'); + $replacement[$k] = $this->writer->escape($replacement[$k]); + } + } + + // Get xref into array + $xref = []; + preg_match("/xref\n0 (\d+)\n(.*?)\ntrailer/s", $pdf, $m); + $xref_objid = $m[1]; + preg_match_all('/(\d{10}) (\d{5}) (f|n)/', $m[2], $x); + for ($i = 0; $i < count($x[0]); $i++) { + $xref[] = [intval($x[1][$i]), $x[2][$i], $x[3][$i]]; + } + + $changes = []; + preg_match("/<<\s*\/Type\s*\/Pages\s*\/Kids\s*\[(.*?)\]\s*\/Count/s", $pdf, $m); + preg_match_all("/(\d+) 0 R /s", $m[1], $o); + $objlist = $o[1]; + + foreach ($objlist as $obj) { + if ($this->compress) { + preg_match("/" . ($obj + 1) . " 0 obj\n<<\s*\/Filter\s*\/FlateDecode\s*\/Length (\d+)>>\nstream\n(.*?)\nendstream\n/s", $pdf, $m); + } else { + preg_match("/" . ($obj + 1) . " 0 obj\n<<\s*\/Length (\d+)>>\nstream\n(.*?)\nendstream\n/s", $pdf, $m); + } + + $s = $m[2]; + if (!$s) { + continue; + } + + $oldlen = $m[1]; + + if ($this->encrypted) { + $s = $this->protection->rc4($this->protection->objectKey($obj + 1), $s); + } + + if ($this->compress) { + $s = gzuncompress($s); + } + + foreach ($search as $k => $val) { + $s = str_replace($search[$k], $replacement[$k], $s); + } + + if ($this->compress) { + $s = gzcompress($s); + } + + if ($this->encrypted) { + $s = $this->protection->rc4($this->protection->objectKey($obj + 1), $s); + } + + $newlen = strlen($s); + + $changes[($xref[$obj + 1][0])] = ($newlen - $oldlen) + (strlen($newlen) - strlen($oldlen)); + + if ($this->compress) { + $newstr = ($obj + 1) . " 0 obj\n<</Filter /FlateDecode /Length " . $newlen . ">>\nstream\n" . $s . "\nendstream\n"; + } else { + $newstr = ($obj + 1) . " 0 obj\n<</Length " . $newlen . ">>\nstream\n" . $s . "\nendstream\n"; + } + + $pdf = str_replace($m[0], $newstr, $pdf); + } + + // Update xref in PDF + krsort($changes); + $newxref = "xref\n0 " . $xref_objid . "\n"; + foreach ($xref as $v) { + foreach ($changes as $ck => $cv) { + if ($v[0] > $ck) { + $v[0] += $cv; + } + } + $newxref .= sprintf('%010d', $v[0]) . ' ' . $v[1] . ' ' . $v[2] . " \n"; + } + $newxref .= "trailer"; + $pdf = preg_replace("/xref\n0 \d+\n.*?\ntrailer/s", $newxref, $pdf); + + // Update startxref in PDF + preg_match("/startxref\n(\d+)\n%%EOF/s", $pdf, $m); + $startxref = $m[1]; + $startxref += array_sum($changes); + $pdf = preg_replace("/startxref\n(\d+)\n%%EOF/s", "startxref\n" . $startxref . "\n%%EOF", $pdf); + + // OUTPUT + switch ($dest) { + case Destination::INLINE: + if (isset($_SERVER['SERVER_NAME'])) { + // We send to a browser + header('Content-Type: application/pdf'); + header('Content-Length: ' . strlen($pdf)); + header('Content-disposition: inline; filename=' . $file_out); + } + + echo $pdf; + + break; + + case Destination::FILE: + if (!$file_out) { + $file_out = 'mpdf.pdf'; + } + + $f = fopen($file_out, 'wb'); + + if (!$f) { + throw new \Mpdf\MpdfException('Unable to create output file: ' . $file_out); + } + + fwrite($f, $pdf, strlen($pdf)); + + fclose($f); + + break; + + case Destination::STRING_RETURN: + return $pdf; + + case Destination::DOWNLOAD: // Download file + default: + if (isset($_SERVER['HTTP_USER_AGENT']) and strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE')) { + header('Content-Type: application/force-download'); + } else { + header('Content-Type: application/octet-stream'); + } + + header('Content-Length: ' . strlen($pdf)); + header('Content-disposition: attachment; filename=' . $file_out); + + echo $pdf; + + break; + } + } + + + function Thumbnail($file, $npr = 3, $spacing = 10) + { + // $npr = number per row + $w = (($this->pgwidth + $spacing) / $npr) - $spacing; + $oldlinewidth = $this->LineWidth; + $this->SetLineWidth(0.02); + $this->SetDColor($this->colorConverter->convert(0, $this->PDFAXwarnings)); + $h = 0; + $maxh = 0; + $x = $_x = $this->lMargin; + $_y = $this->tMargin; + + if ($this->y == 0) { + $y = $_y; + } else { + $y = $this->y; + } + + $pagecount = $this->setSourceFile($file); + + for ($n = 1; $n <= $pagecount; $n++) { + $tplidx = $this->importPage($n); + $size = $this->useTemplate($tplidx, $x, $y, $w); + $this->Rect($x, $y, $size['width'], $size['height']); + $h = max($h, $size['height']); + $maxh = max($h, $maxh); + + if ($n % $npr == 0) { + if (($y + $h + $spacing + $maxh) > $this->PageBreakTrigger && $n != $pagecount) { + $this->AddPage(); + $x = $_x; + $y = $_y; + } else { + $y += $h + $spacing; + $x = $_x; + $h = 0; + } + } else { + $x += $w + $spacing; + } + } + $this->SetLineWidth($oldlinewidth); + } + + function SetPageTemplate($tplidx = '') + { + if (!isset($this->importedPages[$tplidx])) { + $this->pageTemplate = ''; + return false; + } + $this->pageTemplate = $tplidx; + } + + function SetDocTemplate($file = '', $continue = 0) + { + $this->docTemplate = $file; + $this->docTemplateContinue = $continue; + } + + /* -- END IMPORTS -- */ + + // JAVASCRIPT + function _set_object_javascript($string) + { + $this->writer->object(); + $this->writer->write('<<'); + $this->writer->write('/S /JavaScript '); + $this->writer->write('/JS ' . $this->writer->string($string)); + $this->writer->write('>>'); + $this->writer->write('endobj'); + } + + function SetJS($script) + { + $this->js = $script; + } + + /** + * This function takes the last comma or dot (if any) to make a clean float, ignoring thousand separator, currency or any other letter + * + * @param string $num + * @see http://php.net/manual/de/function.floatval.php#114486 + * @return float + */ + public function toFloat($num) + { + $dotPos = strrpos($num, '.'); + $commaPos = strrpos($num, ','); + $sep = (($dotPos > $commaPos) && $dotPos) ? $dotPos : ((($commaPos > $dotPos) && $commaPos) ? $commaPos : false); + + if (!$sep) { + return floatval(preg_replace('/[^0-9]/', '', $num)); + } + + return floatval( + preg_replace('/[^0-9]/', '', substr($num, 0, $sep)) . '.' . + preg_replace('/[^0-9]/', '', substr($num, $sep+1, strlen($num))) + ); + } + + public function getFontDescriptor() + { + return $this->fontDescriptor; + } + + /** + * Temporarily return the method to preserve example 44 yearbook + */ + public function _out($s) + { + $this->writer->write($s); + } + +} diff --git a/Mpdf/MpdfException.php b/Mpdf/MpdfException.php new file mode 100644 index 0000000..f845354 --- /dev/null +++ b/Mpdf/MpdfException.php @@ -0,0 +1,8 @@ +<?php + +namespace Mpdf; + +class MpdfException extends \ErrorException +{ + +} diff --git a/Mpdf/MpdfImageException.php b/Mpdf/MpdfImageException.php new file mode 100644 index 0000000..c8f4ca0 --- /dev/null +++ b/Mpdf/MpdfImageException.php @@ -0,0 +1,8 @@ +<?php + +namespace Mpdf; + +class MpdfImageException extends \Mpdf\MpdfException +{ + +} diff --git a/Mpdf/Otl.php b/Mpdf/Otl.php new file mode 100644 index 0000000..6cf7b7a --- /dev/null +++ b/Mpdf/Otl.php @@ -0,0 +1,6211 @@ +<?php + +namespace Mpdf; + +use Mpdf\Strict; + +use Mpdf\Css\TextVars; +use Mpdf\Fonts\FontCache; + +use Mpdf\Shaper\Indic; +use Mpdf\Shaper\Myanmar; +use Mpdf\Shaper\Sea; + +use Mpdf\Utils\UtfString; + +class Otl +{ + + use Strict; + + const _OTL_OLD_SPEC_COMPAT_1 = true; + const _DICT_NODE_TYPE_SPLIT = 0x01; + const _DICT_NODE_TYPE_LINEAR = 0x02; + const _DICT_INTERMEDIATE_MATCH = 0x03; + const _DICT_FINAL_MATCH = 0x04; + + private $mpdf; + + private $fontCache; + + var $arabLeftJoining; + + var $arabRightJoining; + + var $arabTransparentJoin; + + var $arabTransparent; + + var $GSUBdata; + + var $GPOSdata; + + var $GSUBfont; + + var $fontkey; + + var $ttfOTLdata; + + var $glyphIDtoUni; + + var $_pos; + + var $GSUB_offset; + + var $GPOS_offset; + + var $MarkAttachmentType; + + var $MarkGlyphSets; + + var $GlyphClassMarks; + + var $GlyphClassLigatures; + + var $GlyphClassBases; + + var $GlyphClassComponents; + + var $Ignores; + + var $LuCoverage; + + var $OTLdata; + + var $assocLigs; + + var $assocMarks; + + var $shaper; + + var $restrictToSyllable; + + var $lbdicts; // Line-breaking dictionaries + + var $LuDataCache; + + var $arabGlyphs; + + var $current_fh; + + var $Entry; + + var $Exit; + + var $GDEFdata; + + var $GPOSLookups; + + var $GSLuCoverage; + + var $GSUB_length; + + var $GSUBLookups; + + var $schOTLdata; + + var $lastBidiStrongType; + + var $debugOTL = false; + + public function __construct(Mpdf $mpdf, FontCache $fontCache) + { + $this->mpdf = $mpdf; + $this->fontCache = $fontCache; + + $this->current_fh = ''; + + $this->lbdicts = []; + $this->LuDataCache = []; + } + + function applyOTL($str, $useOTL) + { + if (!$this->arabLeftJoining) { + $this->arabic_initialise(); + } + + $this->OTLdata = []; + if (trim($str) == '') { + return $str; + } + if (!$useOTL) { + return $str; + } + + // 1. Load GDEF data + //============================== + $this->fontkey = $this->mpdf->CurrentFont['fontkey']; + $this->glyphIDtoUni = $this->mpdf->CurrentFont['glyphIDtoUni']; + $fontCacheFilename = $this->fontkey . '.GDEFdata.json'; + if (!isset($this->GDEFdata[$this->fontkey]) && $this->fontCache->jsonHas($fontCacheFilename)) { + $font = $this->fontCache->jsonLoad($fontCacheFilename); + + $this->GSUB_offset = $this->GDEFdata[$this->fontkey]['GSUB_offset'] = $font['GSUB_offset']; + $this->GPOS_offset = $this->GDEFdata[$this->fontkey]['GPOS_offset'] = $font['GPOS_offset']; + $this->GSUB_length = $this->GDEFdata[$this->fontkey]['GSUB_length'] = $font['GSUB_length']; + $this->MarkAttachmentType = $this->GDEFdata[$this->fontkey]['MarkAttachmentType'] = $font['MarkAttachmentType']; + $this->MarkGlyphSets = $this->GDEFdata[$this->fontkey]['MarkGlyphSets'] = $font['MarkGlyphSets']; + $this->GlyphClassMarks = $this->GDEFdata[$this->fontkey]['GlyphClassMarks'] = $font['GlyphClassMarks']; + $this->GlyphClassLigatures = $this->GDEFdata[$this->fontkey]['GlyphClassLigatures'] = $font['GlyphClassLigatures']; + $this->GlyphClassComponents = $this->GDEFdata[$this->fontkey]['GlyphClassComponents'] = $font['GlyphClassComponents']; + $this->GlyphClassBases = $this->GDEFdata[$this->fontkey]['GlyphClassBases'] = $font['GlyphClassBases']; + } else { + $this->GSUB_offset = $this->GDEFdata[$this->fontkey]['GSUB_offset']; + $this->GPOS_offset = $this->GDEFdata[$this->fontkey]['GPOS_offset']; + $this->GSUB_length = $this->GDEFdata[$this->fontkey]['GSUB_length']; + $this->MarkAttachmentType = $this->GDEFdata[$this->fontkey]['MarkAttachmentType']; + $this->MarkGlyphSets = $this->GDEFdata[$this->fontkey]['MarkGlyphSets']; + $this->GlyphClassMarks = $this->GDEFdata[$this->fontkey]['GlyphClassMarks']; + $this->GlyphClassLigatures = $this->GDEFdata[$this->fontkey]['GlyphClassLigatures']; + $this->GlyphClassComponents = $this->GDEFdata[$this->fontkey]['GlyphClassComponents']; + $this->GlyphClassBases = $this->GDEFdata[$this->fontkey]['GlyphClassBases']; + } + + // 2. Prepare string as HEX string and Analyse character properties + //================================================================= + $earr = $this->mpdf->UTF8StringToArray($str, false); + + $scriptblock = 0; + $scriptblocks = []; + $scriptblocks[0] = 0; + $vstr = ''; + $OTLdata = []; + $subchunk = 0; + $charctr = 0; + foreach ($earr as $char) { + $ucd_record = Ucdn::get_ucd_record($char); + $sbl = $ucd_record[6]; + + // Special case - Arabic End of Ayah + if ($char == 1757) { + $sbl = Ucdn::SCRIPT_ARABIC; + } + + if ($sbl && $sbl != 40 && $sbl != 102) { + if ($scriptblock == 0) { + $scriptblock = $sbl; + $scriptblocks[$subchunk] = $scriptblock; + } elseif ($scriptblock > 0 && $scriptblock != $sbl) { + // ************************************************* + // NEW (non-common) Script encountered in this chunk. Start a new subchunk + $subchunk++; + $scriptblock = $sbl; + $charctr = 0; + $scriptblocks[$subchunk] = $scriptblock; + } + } + + $OTLdata[$subchunk][$charctr]['general_category'] = $ucd_record[0]; + $OTLdata[$subchunk][$charctr]['bidi_type'] = $ucd_record[2]; + + //$OTLdata[$subchunk][$charctr]['combining_class'] = $ucd_record[1]; + //$OTLdata[$subchunk][$charctr]['bidi_type'] = $ucd_record[2]; + //$OTLdata[$subchunk][$charctr]['mirrored'] = $ucd_record[3]; + //$OTLdata[$subchunk][$charctr]['east_asian_width'] = $ucd_record[4]; + //$OTLdata[$subchunk][$charctr]['normalization_check'] = $ucd_record[5]; + //$OTLdata[$subchunk][$charctr]['script'] = $ucd_record[6]; + + $charasstr = $this->unicode_hex($char); + + if (strpos($this->GlyphClassMarks, $charasstr) !== false) { + $OTLdata[$subchunk][$charctr]['group'] = 'M'; + } elseif ($char == 32 || $char == 12288) { + $OTLdata[$subchunk][$charctr]['group'] = 'S'; + } // 12288 = 0x3000 = CJK space + else { + $OTLdata[$subchunk][$charctr]['group'] = 'C'; + } + + $OTLdata[$subchunk][$charctr]['uni'] = $char; + $OTLdata[$subchunk][$charctr]['hex'] = $charasstr; + $charctr++; + } + + /* PROCESS EACH SUBCHUNK WITH DIFFERENT SCRIPTS */ + for ($sch = 0; $sch <= $subchunk; $sch++) { + $this->OTLdata = $OTLdata[$sch]; + $scriptblock = $scriptblocks[$sch]; + + // 3. Get Appropriate Scripts, and Shaper engine from analysing text and list of available scripts/langsys in font + //============================== + // Based on actual script block of text, select shaper (and line-breaking dictionaries) + if (Ucdn::SCRIPT_DEVANAGARI <= $scriptblock && $scriptblock <= Ucdn::SCRIPT_MALAYALAM) { + $this->shaper = "I"; + } // INDIC shaper + elseif ($scriptblock == Ucdn::SCRIPT_ARABIC || $scriptblock == Ucdn::SCRIPT_SYRIAC) { + $this->shaper = "A"; + } // ARABIC shaper + elseif ($scriptblock == Ucdn::SCRIPT_NKO || $scriptblock == Ucdn::SCRIPT_MANDAIC) { + $this->shaper = "A"; + } // ARABIC shaper + elseif ($scriptblock == Ucdn::SCRIPT_KHMER) { + $this->shaper = "K"; + } // KHMER shaper + elseif ($scriptblock == Ucdn::SCRIPT_THAI) { + $this->shaper = "T"; + } // THAI shaper + elseif ($scriptblock == Ucdn::SCRIPT_LAO) { + $this->shaper = "L"; + } // LAO shaper + elseif ($scriptblock == Ucdn::SCRIPT_SINHALA) { + $this->shaper = "S"; + } // SINHALA shaper + elseif ($scriptblock == Ucdn::SCRIPT_MYANMAR) { + $this->shaper = "M"; + } // MYANMAR shaper + elseif ($scriptblock == Ucdn::SCRIPT_NEW_TAI_LUE) { + $this->shaper = "E"; + } // SEA South East Asian shaper + elseif ($scriptblock == Ucdn::SCRIPT_CHAM) { + $this->shaper = "E"; + } // SEA South East Asian shaper + elseif ($scriptblock == Ucdn::SCRIPT_TAI_THAM) { + $this->shaper = "E"; + } // SEA South East Asian shaper + else { + $this->shaper = ""; + } + // Get scripttag based on actual text script + $scripttag = Ucdn::$uni_scriptblock[$scriptblock]; + + $GSUBscriptTag = ''; + $GSUBlangsys = ''; + $GPOSscriptTag = ''; + $GPOSlangsys = ''; + $is_old_spec = false; + + $ScriptLang = $this->mpdf->CurrentFont['GSUBScriptLang']; + if (count($ScriptLang)) { + list($GSUBscriptTag, $is_old_spec) = $this->_getOTLscriptTag($ScriptLang, $scripttag, $scriptblock, $this->shaper, $useOTL, 'GSUB'); + if ($this->mpdf->fontLanguageOverride && strpos($ScriptLang[$GSUBscriptTag], $this->mpdf->fontLanguageOverride) !== false) { + $GSUBlangsys = str_pad($this->mpdf->fontLanguageOverride, 4); + } elseif ($GSUBscriptTag && isset($ScriptLang[$GSUBscriptTag]) && $ScriptLang[$GSUBscriptTag] != '') { + $GSUBlangsys = $this->_getOTLLangTag($this->mpdf->currentLang, $ScriptLang[$GSUBscriptTag]); + } + } + $ScriptLang = $this->mpdf->CurrentFont['GPOSScriptLang']; + + // NB If after GSUB, the same script/lang exist for GPOS, just use these... + if ($GSUBscriptTag && $GSUBlangsys && isset($ScriptLang[$GSUBscriptTag]) && strpos($ScriptLang[$GSUBscriptTag], $GSUBlangsys) !== false) { + $GPOSlangsys = $GSUBlangsys; + $GPOSscriptTag = $GSUBscriptTag; + } // else repeat for GPOS + // [Font XBRiyaz has GSUB tables for latn, but not GPOS for latn] + elseif (count($ScriptLang)) { + list($GPOSscriptTag, $dummy) = $this->_getOTLscriptTag($ScriptLang, $scripttag, $scriptblock, $this->shaper, $useOTL, 'GPOS'); + if ($GPOSscriptTag && $this->mpdf->fontLanguageOverride && strpos($ScriptLang[$GPOSscriptTag], $this->mpdf->fontLanguageOverride) !== false) { + $GPOSlangsys = str_pad($this->mpdf->fontLanguageOverride, 4); + } elseif ($GPOSscriptTag && isset($ScriptLang[$GPOSscriptTag]) && $ScriptLang[$GPOSscriptTag] != '') { + $GPOSlangsys = $this->_getOTLLangTag($this->mpdf->currentLang, $ScriptLang[$GPOSscriptTag]); + } + } + + // This is just for the font_dump_OTL utility to set script and langsys override + // $mpdf->overrideOTLsettings does not exist, this is never called + /*if (isset($this->mpdf->overrideOTLsettings) && isset($this->mpdf->overrideOTLsettings[$this->fontkey])) { + $GSUBscriptTag = $GPOSscriptTag = $this->mpdf->overrideOTLsettings[$this->fontkey]['script']; + $GSUBlangsys = $GPOSlangsys = $this->mpdf->overrideOTLsettings[$this->fontkey]['lang']; + }*/ + + if (!$GSUBscriptTag && !$GSUBlangsys && !$GPOSscriptTag && !$GPOSlangsys) { + // Remove ZWJ and ZWNJ + for ($i = 0; $i < count($this->OTLdata); $i++) { + if ($this->OTLdata[$i]['uni'] == 8204 || $this->OTLdata[$i]['uni'] == 8205) { + array_splice($this->OTLdata, $i, 1); + } + } + $this->schOTLdata[$sch] = $this->OTLdata; + $this->OTLdata = []; + continue; + } + + // Don't use MYANMAR shaper unless using v2 scripttag + if ($this->shaper == 'M' && $GSUBscriptTag != 'mym2') { + $this->shaper = ''; + } + + $GSUBFeatures = (isset($this->mpdf->CurrentFont['GSUBFeatures'][$GSUBscriptTag][$GSUBlangsys]) ? $this->mpdf->CurrentFont['GSUBFeatures'][$GSUBscriptTag][$GSUBlangsys] : false); + $GPOSFeatures = (isset($this->mpdf->CurrentFont['GPOSFeatures'][$GPOSscriptTag][$GPOSlangsys]) ? $this->mpdf->CurrentFont['GPOSFeatures'][$GPOSscriptTag][$GPOSlangsys] : false); + + $this->assocLigs = []; // Ligatures[$posarr lpos] => nc + $this->assocMarks = []; // assocMarks[$posarr mpos] => array(compID, ligPos) + + if (!isset($this->GDEFdata[$this->fontkey]['GSUBGPOStables'])) { + $this->ttfOTLdata = $this->GDEFdata[$this->fontkey]['GSUBGPOStables'] = $this->fontCache->load($this->fontkey . '.GSUBGPOStables.dat', 'rb'); + if (!$this->ttfOTLdata) { + throw new \Mpdf\MpdfException('Can\'t open file ' . $this->fontCache->tempFilename($this->fontkey . '.GSUBGPOStables.dat')); + } + } else { + $this->ttfOTLdata = $this->GDEFdata[$this->fontkey]['GSUBGPOStables']; + } + + if ($this->debugOTL) { + $this->_dumpproc('BEGIN', '-', '-', '-', '-', -1, '-', 0); + } + + //////////////////////////////////////////////////////////////// + ///////// LINE BREAKING FOR KHMER, THAI + LAO ///////////////// + //////////////////////////////////////////////////////////////// + // Insert U+200B at word boundaries using dictionaries + if ($this->mpdf->useDictionaryLBR && ($this->shaper == "K" || $this->shaper == "T" || $this->shaper == "L")) { + // Sets $this->OTLdata[$i]['wordend']=true at possible end of word boundaries + $this->seaLineBreaking(); + } // Insert U+200B at word boundaries for Tibetan + elseif ($this->mpdf->useTibetanLBR && $scriptblock == Ucdn::SCRIPT_TIBETAN) { + // Sets $this->OTLdata[$i]['wordend']=true at possible end of word boundaries + $this->tibetanLineBreaking(); + } + + + //////////////////////////////////////////////////////////////// + ////////// GSUB ///////////////////////////////// + //////////////////////////////////////////////////////////////// + if (($useOTL & 0xFF) && $GSUBscriptTag && $GSUBlangsys && $GSUBFeatures) { + // 4. Load GSUB data, Coverage & Lookups + //================================================================= + + $this->GSUBfont = $this->fontkey . '.GSUB.' . $GSUBscriptTag . '.' . $GSUBlangsys; + + if (!isset($this->GSUBdata[$this->GSUBfont])) { + $fontCacheFilename = $this->GSUBfont . '.json'; + if ($this->fontCache->jsonHas($fontCacheFilename)) { + $font = $this->fontCache->jsonLoad($fontCacheFilename); + + $this->GSUBdata[$this->GSUBfont]['rtlSUB'] = $font['rtlSUB']; + $this->GSUBdata[$this->GSUBfont]['finals'] = $font['finals']; + if ($this->shaper == 'I') { + $this->GSUBdata[$this->GSUBfont]['rphf'] = $font['rphf']; + $this->GSUBdata[$this->GSUBfont]['half'] = $font['half']; + $this->GSUBdata[$this->GSUBfont]['pref'] = $font['pref']; + $this->GSUBdata[$this->GSUBfont]['blwf'] = $font['blwf']; + $this->GSUBdata[$this->GSUBfont]['pstf'] = $font['pstf']; + } + } else { + $this->GSUBdata[$this->GSUBfont] = ['rtlSUB' => [], 'rphf' => [], 'rphf' => [], + 'pref' => [], 'blwf' => [], 'pstf' => [], 'finals' => '' + ]; + } + } + + $fontCacheFilename = $this->fontkey . '.GSUBdata.json'; + if (!isset($this->GSUBdata[$this->fontkey]) && $this->fontCache->jsonHas($fontCacheFilename)) { + $this->GSLuCoverage = $this->GSUBdata[$this->fontkey]['GSLuCoverage'] = $this->fontCache->jsonLoad($fontCacheFilename); + } else { + $this->GSLuCoverage = $this->GSUBdata[$this->fontkey]['GSLuCoverage']; + } + + $this->GSUBLookups = $this->mpdf->CurrentFont['GSUBLookups']; + + + // 5(A). GSUB - Shaper - ARABIC + //============================== + if ($this->shaper == 'A') { + //----------------------------------------------------------------------------------- + // a. Apply initial GSUB Lookups (in order specified in lookup list but only selecting from certain tags) + //----------------------------------------------------------------------------------- + $tags = 'locl ccmp'; + $omittags = ''; + $usetags = $tags; + if (!empty($this->mpdf->OTLtags)) { + $usetags = $this->_applyTagSettings($tags, $GSUBFeatures, $omittags, true); + } + $this->_applyGSUBrules($usetags, $GSUBscriptTag, $GSUBlangsys); + + //----------------------------------------------------------------------------------- + // b. Apply context-specific forms GSUB Lookups (initial, isolated, medial, final) + //----------------------------------------------------------------------------------- + // Arab and Syriac are the only scripts requiring the special joining - which takes the place of + // isol fina medi init rules in GSUB (+ fin2 fin3 med2 in Syriac syrc) + $tags = 'isol fina fin2 fin3 medi med2 init'; + $omittags = ''; + $usetags = $tags; + if (!empty($this->mpdf->OTLtags)) { + $usetags = $this->_applyTagSettings($tags, $GSUBFeatures, $omittags, true); + } + + $this->arabGlyphs = $this->GSUBdata[$this->GSUBfont]['rtlSUB']; + + $gcms = explode("| ", $this->GlyphClassMarks); + $gcm = []; + foreach ($gcms as $g) { + $gcm[hexdec($g)] = 1; + } + $this->arabTransparentJoin = $this->arabTransparent + $gcm; + $this->arabic_shaper($usetags, $GSUBscriptTag); + + //----------------------------------------------------------------------------------- + // c. Set Kashida points (after joining occurred - medi, fina, init) but before other substitutions + //----------------------------------------------------------------------------------- + //if ($scriptblock == Ucdn::SCRIPT_ARABIC ) { + for ($i = 0; $i < count($this->OTLdata); $i++) { + // Put the kashida marker on the character BEFORE which is inserted the kashida + // Kashida marker is inverse of priority i.e. Priority 1 => 7, Priority 7 => 1. + // Priority 1 User-inserted Kashida 0640 = Tatweel + // The user entered a Kashida in a position + // Position: Before the user-inserted kashida + if ($this->OTLdata[$i]['uni'] == 0x0640) { + $this->OTLdata[$i]['GPOSinfo']['kashida'] = 8; // Put before the next character + } // Priority 2 Seen (0633) FEB3, FEB4; Sad (0635) FEBB, FEBC + // Initial or medial form + // Connecting to the next character + // Position: After the character + elseif ($this->OTLdata[$i]['uni'] == 0xFEB3 || $this->OTLdata[$i]['uni'] == 0xFEB4 || $this->OTLdata[$i]['uni'] == 0xFEBB || $this->OTLdata[$i]['uni'] == 0xFEBC) { + $checkpos = $i + 1; + while (isset($this->OTLdata[$checkpos]) && strpos($this->GlyphClassMarks, $this->OTLdata[$checkpos]['hex']) !== false) { + $checkpos++; + } + if (isset($this->OTLdata[$checkpos])) { + $this->OTLdata[$checkpos]['GPOSinfo']['kashida'] = 7; // Put after marks on next character + } + } // Priority 3 Taa Marbutah (0629) FE94; Haa (062D) FEA2; Dal (062F) FEAA + // Final form + // Connecting to previous character + // Position: Before the character + elseif ($this->OTLdata[$i]['uni'] == 0xFE94 || $this->OTLdata[$i]['uni'] == 0xFEA2 || $this->OTLdata[$i]['uni'] == 0xFEAA) { + $this->OTLdata[$i]['GPOSinfo']['kashida'] = 6; + } // Priority 4 Alef (0627) FE8E; Tah (0637) FEC2; Lam (0644) FEDE; Kaf (0643) FEDA; Gaf (06AF) FB93 + // Final form + // Connecting to previous character + // Position: Before the character + elseif ($this->OTLdata[$i]['uni'] == 0xFE8E || $this->OTLdata[$i]['uni'] == 0xFEC2 || $this->OTLdata[$i]['uni'] == 0xFEDE || $this->OTLdata[$i]['uni'] == 0xFEDA || $this->OTLdata[$i]['uni'] == 0xFB93) { + $this->OTLdata[$i]['GPOSinfo']['kashida'] = 5; + } // Priority 5 RA (0631) FEAE; Ya (064A) FEF2 FEF4; Alef Maqsurah (0649) FEF0 FBE9 + // Final or Medial form + // Connected to preceding medial BAA (0628) = FE92 + // Position: Before preceding medial Baa + // Although not mentioned in spec, added Farsi Yeh (06CC) FBFD FBFF; equivalent to 064A or 0649 + elseif ($this->OTLdata[$i]['uni'] == 0xFEAE || $this->OTLdata[$i]['uni'] == 0xFEF2 || $this->OTLdata[$i]['uni'] == 0xFEF0 || $this->OTLdata[$i]['uni'] == 0xFEF4 || $this->OTLdata[$i]['uni'] == 0xFBE9 || $this->OTLdata[$i]['uni'] == 0xFBFD || $this->OTLdata[$i]['uni'] == 0xFBFF + ) { + $checkpos = $i - 1; + while (isset($this->OTLdata[$checkpos]) && strpos($this->GlyphClassMarks, $this->OTLdata[$checkpos]['hex']) !== false) { + $checkpos--; + } + if (isset($this->OTLdata[$checkpos]) && $this->OTLdata[$checkpos]['uni'] == 0xFE92) { + $this->OTLdata[$checkpos]['GPOSinfo']['kashida'] = 4; // ******* Before preceding BAA + } + } // Priority 6 WAW (0648) FEEE; Ain (0639) FECA; Qaf (0642) FED6; Fa (0641) FED2 + // Final form + // Connecting to previous character + // Position: Before the character + elseif ($this->OTLdata[$i]['uni'] == 0xFEEE || $this->OTLdata[$i]['uni'] == 0xFECA || $this->OTLdata[$i]['uni'] == 0xFED6 || $this->OTLdata[$i]['uni'] == 0xFED2) { + $this->OTLdata[$i]['GPOSinfo']['kashida'] = 3; + } + + // Priority 7 Other connecting characters + // Final form + // Connecting to previous character + // Position: Before the character + /* This isn't in the spec, but using MS WORD as a basis, give a lower priority to the 3 characters already checked + in (5) above. Test case: + خْرَىٰ + فَتُذَكِّر + */ + + if (!isset($this->OTLdata[$i]['GPOSinfo']['kashida'])) { + if (strpos($this->GSUBdata[$this->GSUBfont]['finals'], $this->OTLdata[$i]['hex']) !== false) { // ANY OTHER FINAL FORM + $this->OTLdata[$i]['GPOSinfo']['kashida'] = 2; + } elseif (strpos('0FEAE 0FEF0 0FEF2', $this->OTLdata[$i]['hex']) !== false) { // not already included in 5 above + $this->OTLdata[$i]['GPOSinfo']['kashida'] = 1; + } + } + } + + //----------------------------------------------------------------------------------- + // d. Apply Presentation Forms GSUB Lookups (+ any discretionary) - Apply one at a time in Feature order + //----------------------------------------------------------------------------------- + $tags = 'rlig calt liga clig mset'; + + $omittags = 'locl ccmp nukt akhn rphf rkrf pref blwf abvf half pstf cfar vatu cjct init medi fina isol med2 fin2 fin3 ljmo vjmo tjmo'; + $usetags = $tags; + if (!empty($this->mpdf->OTLtags)) { + $usetags = $this->_applyTagSettings($tags, $GSUBFeatures, $omittags, false); + } + + $ts = explode(' ', $usetags); + foreach ($ts as $ut) { // - Apply one at a time in Feature order + $this->_applyGSUBrules($ut, $GSUBscriptTag, $GSUBlangsys); + } + //----------------------------------------------------------------------------------- + // e. NOT IN SPEC + // If space precedes a mark -> substitute a   before the Mark, to prevent line breaking Test: + //----------------------------------------------------------------------------------- + for ($ptr = 1; $ptr < count($this->OTLdata); $ptr++) { + if ($this->OTLdata[$ptr]['general_category'] == Ucdn::UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK && $this->OTLdata[$ptr - 1]['uni'] == 32) { + $this->OTLdata[$ptr - 1]['uni'] = 0xa0; + $this->OTLdata[$ptr - 1]['hex'] = '000A0'; + } + } + } // 5(I). GSUB - Shaper - INDIC and SINHALA and KHMER + //=================================== + elseif ($this->shaper == 'I' || $this->shaper == 'K' || $this->shaper == 'S') { + $this->restrictToSyllable = true; + //----------------------------------------------------------------------------------- + // a. First decompose/compose split mattras + // (normalize) ??????? Nukta/Halant order etc ?????????????????????????????????????????????????????????????????????????? + //----------------------------------------------------------------------------------- + for ($ptr = 0; $ptr < count($this->OTLdata); $ptr++) { + $char = $this->OTLdata[$ptr]['uni']; + $sub = Indic::decompose_indic($char); + if ($sub) { + $newinfo = []; + for ($i = 0; $i < count($sub); $i++) { + $newinfo[$i] = []; + $ucd_record = Ucdn::get_ucd_record($sub[$i]); + $newinfo[$i]['general_category'] = $ucd_record[0]; + $newinfo[$i]['bidi_type'] = $ucd_record[2]; + $charasstr = $this->unicode_hex($sub[$i]); + if (strpos($this->GlyphClassMarks, $charasstr) !== false) { + $newinfo[$i]['group'] = 'M'; + } else { + $newinfo[$i]['group'] = 'C'; + } + $newinfo[$i]['uni'] = $sub[$i]; + $newinfo[$i]['hex'] = $charasstr; + } + array_splice($this->OTLdata, $ptr, 1, $newinfo); + $ptr += count($sub) - 1; + } + /* Only Composition-exclusion exceptions that we want to recompose. */ + if ($this->shaper == 'I') { + if ($char == 0x09AF && isset($this->OTLdata[$ptr + 1]) && $this->OTLdata[$ptr + 1]['uni'] == 0x09BC) { + $sub = 0x09DF; + $newinfo = []; + $newinfo[0] = []; + $ucd_record = Ucdn::get_ucd_record($sub); + $newinfo[0]['general_category'] = $ucd_record[0]; + $newinfo[0]['bidi_type'] = $ucd_record[2]; + $newinfo[0]['group'] = 'C'; + $newinfo[0]['uni'] = $sub; + $newinfo[0]['hex'] = $this->unicode_hex($sub); + array_splice($this->OTLdata, $ptr, 2, $newinfo); + } + } + } + //----------------------------------------------------------------------------------- + // b. Analyse characters - group as syllables/clusters (Indic); invalid diacritics; add dotted circle + //----------------------------------------------------------------------------------- + $indic_category_string = ''; + foreach ($this->OTLdata as $eid => $c) { + Indic::set_indic_properties($this->OTLdata[$eid], $scriptblock); // sets ['indic_category'] and ['indic_position'] + //$c['general_category'] + //$c['combining_class'] + //$c['uni'] = $char; + + $indic_category_string .= Indic::$indic_category_char[$this->OTLdata[$eid]['indic_category']]; + } + + $broken_syllables = false; + if ($this->shaper == 'I') { + Indic::set_syllables($this->OTLdata, $indic_category_string, $broken_syllables); + } elseif ($this->shaper == 'S') { + Indic::set_syllables_sinhala($this->OTLdata, $indic_category_string, $broken_syllables); + } elseif ($this->shaper == 'K') { + Indic::set_syllables_khmer($this->OTLdata, $indic_category_string, $broken_syllables); + } + $indic_category_string = ''; + + //----------------------------------------------------------------------------------- + // c. Initial Re-ordering (Indic / Khmer / Sinhala) + //----------------------------------------------------------------------------------- + // Find base consonant + // Decompose/compose and reorder Matras + // Reorder marks to canonical order + + $indic_config = Indic::$indic_configs[$scriptblock]; + $dottedcircle = false; + if ($broken_syllables) { + if ($this->mpdf->_charDefined($this->mpdf->fonts[$this->fontkey]['cw'], 0x25CC)) { + $dottedcircle = []; + $ucd_record = Ucdn::get_ucd_record(0x25CC); + $dottedcircle[0]['general_category'] = $ucd_record[0]; + $dottedcircle[0]['bidi_type'] = $ucd_record[2]; + $dottedcircle[0]['group'] = 'C'; + $dottedcircle[0]['uni'] = 0x25CC; + $dottedcircle[0]['indic_category'] = Indic::OT_DOTTEDCIRCLE; + $dottedcircle[0]['indic_position'] = Indic::POS_BASE_C; + + $dottedcircle[0]['hex'] = '025CC'; // TEMPORARY ***** + } + } + Indic::initial_reordering($this->OTLdata, $this->GSUBdata[$this->GSUBfont], $broken_syllables, $indic_config, $scriptblock, $is_old_spec, $dottedcircle); + + //----------------------------------------------------------------------------------- + // d. Apply initial and basic shaping forms GSUB Lookups (one at a time) + //----------------------------------------------------------------------------------- + if ($this->shaper == 'I' || $this->shaper == 'S') { + $tags = 'locl ccmp nukt akhn rphf rkrf pref blwf half pstf vatu cjct'; + } elseif ($this->shaper == 'K') { + $tags = 'locl ccmp pref blwf abvf pstf cfar'; + } + $this->_applyGSUBrulesIndic($tags, $GSUBscriptTag, $GSUBlangsys, $is_old_spec); + + //----------------------------------------------------------------------------------- + // e. Final Re-ordering (Indic / Khmer / Sinhala) + //----------------------------------------------------------------------------------- + // Reorder matras + // Reorder reph + // Reorder pre-base reordering consonants: + + Indic::final_reordering($this->OTLdata, $this->GSUBdata[$this->GSUBfont], $indic_config, $scriptblock, $is_old_spec); + + //----------------------------------------------------------------------------------- + // f. Apply 'init' feature to first syllable in word (indicated by ['mask']) Indic::FLAG(Indic::INIT); + //----------------------------------------------------------------------------------- + if ($this->shaper == 'I' || $this->shaper == 'S') { + $tags = 'init'; + $this->_applyGSUBrulesIndic($tags, $GSUBscriptTag, $GSUBlangsys, $is_old_spec); + } + + //----------------------------------------------------------------------------------- + // g. Apply Presentation Forms GSUB Lookups (+ any discretionary) + //----------------------------------------------------------------------------------- + $tags = 'pres abvs blws psts haln rlig calt liga clig mset'; + + $omittags = 'locl ccmp nukt akhn rphf rkrf pref blwf abvf half pstf cfar vatu cjct init medi fina isol med2 fin2 fin3 ljmo vjmo tjmo'; + $usetags = $tags; + if (!empty($this->mpdf->OTLtags)) { + $usetags = $this->_applyTagSettings($tags, $GSUBFeatures, $omittags, false); + } + if ($this->shaper == 'K') { // Features are applied one at a time, working through each codepoint + $this->_applyGSUBrulesSingly($usetags, $GSUBscriptTag, $GSUBlangsys); + } else { + $this->_applyGSUBrules($usetags, $GSUBscriptTag, $GSUBlangsys); + } + $this->restrictToSyllable = false; + } // 5(M). GSUB - Shaper - MYANMAR (ONLY mym2) + //============================== + // NB Old style 'mymr' is left to go through the default shaper + elseif ($this->shaper == 'M') { + $this->restrictToSyllable = true; + //----------------------------------------------------------------------------------- + // a. Analyse characters - group as syllables/clusters (Myanmar); invalid diacritics; add dotted circle + //----------------------------------------------------------------------------------- + $myanmar_category_string = ''; + foreach ($this->OTLdata as $eid => $c) { + Myanmar::set_myanmar_properties($this->OTLdata[$eid]); // sets ['myanmar_category'] and ['myanmar_position'] + $myanmar_category_string .= Myanmar::$myanmar_category_char[$this->OTLdata[$eid]['myanmar_category']]; + } + $broken_syllables = false; + Myanmar::set_syllables($this->OTLdata, $myanmar_category_string, $broken_syllables); + $myanmar_category_string = ''; + + //----------------------------------------------------------------------------------- + // b. Re-ordering (Myanmar mym2) + //----------------------------------------------------------------------------------- + $dottedcircle = false; + if ($broken_syllables) { + if ($this->mpdf->_charDefined($this->mpdf->fonts[$this->fontkey]['cw'], 0x25CC)) { + $dottedcircle = []; + $ucd_record = Ucdn::get_ucd_record(0x25CC); + $dottedcircle[0]['general_category'] = $ucd_record[0]; + $dottedcircle[0]['bidi_type'] = $ucd_record[2]; + $dottedcircle[0]['group'] = 'C'; + $dottedcircle[0]['uni'] = 0x25CC; + $dottedcircle[0]['myanmar_category'] = Myanmar::OT_DOTTEDCIRCLE; + $dottedcircle[0]['myanmar_position'] = Myanmar::POS_BASE_C; + $dottedcircle[0]['hex'] = '025CC'; + } + } + Myanmar::reordering($this->OTLdata, $this->GSUBdata[$this->GSUBfont], $broken_syllables, $dottedcircle); + + //----------------------------------------------------------------------------------- + // c. Apply initial and basic shaping forms GSUB Lookups (one at a time) + //----------------------------------------------------------------------------------- + + $tags = 'locl ccmp rphf pref blwf pstf'; + $this->_applyGSUBrulesMyanmar($tags, $GSUBscriptTag, $GSUBlangsys); + + //----------------------------------------------------------------------------------- + // d. Apply Presentation Forms GSUB Lookups (+ any discretionary) + //----------------------------------------------------------------------------------- + $tags = 'pres abvs blws psts haln rlig calt liga clig mset'; + $omittags = 'locl ccmp nukt akhn rphf rkrf pref blwf abvf half pstf cfar vatu cjct init medi fina isol med2 fin2 fin3 ljmo vjmo tjmo'; + $usetags = $tags; + if (!empty($this->mpdf->OTLtags)) { + $usetags = $this->_applyTagSettings($tags, $GSUBFeatures, $omittags, false); + } + $this->_applyGSUBrules($usetags, $GSUBscriptTag, $GSUBlangsys); + $this->restrictToSyllable = false; + } // 5(E). GSUB - Shaper - SEA South East Asian (New Tai Lue, Cham, Tai Tam) + //============================== + elseif ($this->shaper == 'E') { + /* HarfBuzz says: If the designer designed the font for the 'DFLT' script, + * use the default shaper. Otherwise, use the SEA shaper. + * Note that for some simple scripts, there may not be *any* + * GSUB/GPOS needed, so there may be no scripts found! */ + + $this->restrictToSyllable = true; + //----------------------------------------------------------------------------------- + // a. Analyse characters - group as syllables/clusters (Indic); invalid diacritics; add dotted circle + //----------------------------------------------------------------------------------- + $sea_category_string = ''; + foreach ($this->OTLdata as $eid => $c) { + Sea::set_sea_properties($this->OTLdata[$eid], $scriptblock); // sets ['sea_category'] and ['sea_position'] + //$c['general_category'] + //$c['combining_class'] + //$c['uni'] = $char; + + $sea_category_string .= Sea::$sea_category_char[$this->OTLdata[$eid]['sea_category']]; + } + + $broken_syllables = false; + Sea::set_syllables($this->OTLdata, $sea_category_string, $broken_syllables); + $sea_category_string = ''; + + //----------------------------------------------------------------------------------- + // b. Apply locl and ccmp shaping forms - before initial re-ordering; GSUB Lookups (one at a time) + //----------------------------------------------------------------------------------- + $tags = 'locl ccmp'; + $this->_applyGSUBrulesSingly($tags, $GSUBscriptTag, $GSUBlangsys); + + //----------------------------------------------------------------------------------- + // c. Initial Re-ordering + //----------------------------------------------------------------------------------- + // Find base consonant + // Decompose/compose and reorder Matras + // Reorder marks to canonical order + + $dottedcircle = false; + if ($broken_syllables) { + if ($this->mpdf->_charDefined($this->mpdf->fonts[$this->fontkey]['cw'], 0x25CC)) { + $dottedcircle = []; + $ucd_record = Ucdn::get_ucd_record(0x25CC); + $dottedcircle[0]['general_category'] = $ucd_record[0]; + $dottedcircle[0]['bidi_type'] = $ucd_record[2]; + $dottedcircle[0]['group'] = 'C'; + $dottedcircle[0]['uni'] = 0x25CC; + $dottedcircle[0]['sea_category'] = Sea::OT_GB; + $dottedcircle[0]['sea_position'] = Sea::POS_BASE_C; + + $dottedcircle[0]['hex'] = '025CC'; // TEMPORARY ***** + } + } + Sea::initial_reordering($this->OTLdata, $this->GSUBdata[$this->GSUBfont], $broken_syllables, $scriptblock, $dottedcircle); + + //----------------------------------------------------------------------------------- + // d. Apply basic shaping forms GSUB Lookups (one at a time) + //----------------------------------------------------------------------------------- + $tags = 'pref abvf blwf pstf'; + $this->_applyGSUBrulesSingly($tags, $GSUBscriptTag, $GSUBlangsys); + + //----------------------------------------------------------------------------------- + // e. Final Re-ordering + //----------------------------------------------------------------------------------- + + Sea::final_reordering($this->OTLdata, $this->GSUBdata[$this->GSUBfont], $scriptblock); + + //----------------------------------------------------------------------------------- + // f. Apply Presentation Forms GSUB Lookups (+ any discretionary) + //----------------------------------------------------------------------------------- + $tags = 'pres abvs blws psts'; + + $omittags = 'locl ccmp nukt akhn rphf rkrf pref blwf abvf half pstf cfar vatu cjct init medi fina isol med2 fin2 fin3 ljmo vjmo tjmo'; + $usetags = $tags; + if (!empty($this->mpdf->OTLtags)) { + $usetags = $this->_applyTagSettings($tags, $GSUBFeatures, $omittags, false); + } + $this->_applyGSUBrules($usetags, $GSUBscriptTag, $GSUBlangsys); + $this->restrictToSyllable = false; + } // 5(D). GSUB - Shaper - DEFAULT (including THAI and LAO and MYANMAR v1 [mymr] and TIBETAN) + //============================== + else { // DEFAULT + //----------------------------------------------------------------------------------- + // a. First decompose/compose in Thai / Lao - Tibetan + //----------------------------------------------------------------------------------- + // Decomposition for THAI or LAO + /* This function implements the shaping logic documented here: + * + * http://linux.thai.net/~thep/th-otf/shaping.html + * + * The first shaping rule listed there is needed even if the font has Thai + * OpenType tables. + * + * + * The following is NOT specified in the MS OT Thai spec, however, it seems + * to be what Uniscribe and other engines implement. According to Eric Muller: + * + * When you have a SARA AM, decompose it in NIKHAHIT + SARA AA, *and* move the + * NIKHAHIT backwards over any tone mark (0E48-0E4B). + * + * <0E14, 0E4B, 0E33> -> <0E14, 0E4D, 0E4B, 0E32> + * + * This reordering is legit only when the NIKHAHIT comes from a SARA AM, not + * when it's there to start with. The string <0E14, 0E4B, 0E4D> is probably + * not what a user wanted, but the rendering is nevertheless nikhahit above + * chattawa. + * + * Same for Lao. + * + * Thai Lao + * SARA AM: U+0E33 U+0EB3 + * SARA AA: U+0E32 U+0EB2 + * Nikhahit: U+0E4D U+0ECD + * + * Testing shows that Uniscribe reorder the following marks: + * Thai: <0E31,0E34..0E37,0E47..0E4E> + * Lao: <0EB1,0EB4..0EB7,0EC7..0ECE> + * + * Lao versions are the same as Thai + 0x80. + */ + if ($this->shaper == 'T' || $this->shaper == 'L') { + for ($ptr = 0; $ptr < count($this->OTLdata); $ptr++) { + $char = $this->OTLdata[$ptr]['uni']; + if (($char & ~0x0080) == 0x0E33) { // if SARA_AM (U+0E33 or U+0EB3) + $NIKHAHIT = $char + 0x1A; + $SARA_AA = $char - 1; + $sub = [$SARA_AA, $NIKHAHIT]; + + $newinfo = []; + $ucd_record = Ucdn::get_ucd_record($sub[0]); + $newinfo[0]['general_category'] = $ucd_record[0]; + $newinfo[0]['bidi_type'] = $ucd_record[2]; + $charasstr = $this->unicode_hex($sub[0]); + if (strpos($this->GlyphClassMarks, $charasstr) !== false) { + $newinfo[0]['group'] = 'M'; + } else { + $newinfo[0]['group'] = 'C'; + } + $newinfo[0]['uni'] = $sub[0]; + $newinfo[0]['hex'] = $charasstr; + $this->OTLdata[$ptr] = $newinfo[0]; // Substitute SARA_AM => SARA_AA + + $ntones = 0; // number of (preceding) tone marks + // IS_TONE_MARK ((x) & ~0x0080, 0x0E34 - 0x0E37, 0x0E47 - 0x0E4E, 0x0E31) + while (isset($this->OTLdata[$ptr - 1 - $ntones]) && ( + ($this->OTLdata[$ptr - 1 - $ntones]['uni'] & ~0x0080) == 0x0E31 || + (($this->OTLdata[$ptr - 1 - $ntones]['uni'] & ~0x0080) >= 0x0E34 && + ($this->OTLdata[$ptr - 1 - $ntones]['uni'] & ~0x0080) <= 0x0E37) || + (($this->OTLdata[$ptr - 1 - $ntones]['uni'] & ~0x0080) >= 0x0E47 && + ($this->OTLdata[$ptr - 1 - $ntones]['uni'] & ~0x0080) <= 0x0E4E) + ) + ) { + $ntones++; + } + + $newinfo = []; + $ucd_record = Ucdn::get_ucd_record($sub[1]); + $newinfo[0]['general_category'] = $ucd_record[0]; + $newinfo[0]['bidi_type'] = $ucd_record[2]; + $charasstr = $this->unicode_hex($sub[1]); + if (strpos($this->GlyphClassMarks, $charasstr) !== false) { + $newinfo[0]['group'] = 'M'; + } else { + $newinfo[0]['group'] = 'C'; + } + $newinfo[0]['uni'] = $sub[1]; + $newinfo[0]['hex'] = $charasstr; + // Insert NIKAHIT + array_splice($this->OTLdata, $ptr - $ntones, 0, $newinfo); + + $ptr++; + } + } + } + + if ($scriptblock == Ucdn::SCRIPT_TIBETAN) { + // ========================= + // Reordering TIBETAN + // ========================= + // Tibetan does not need to need a shaper generally, as long as characters are presented in the correct order + // so we will do one minor change here: + // From ICU: If the present character is a number, and the next character is a pre-number combining mark + // then the two characters are reordered + // From MS OTL spec the following are Digit modifiers (Md): 0F18–0F19, 0F3E–0F3F + // Digits: 0F20–0F33 + // On testing only 0x0F3F (pre-based mark) seems to need re-ordering + for ($ptr = 0; $ptr < count($this->OTLdata) - 1; $ptr++) { + if (Indic::in_range($this->OTLdata[$ptr]['uni'], 0x0F20, 0x0F33) && $this->OTLdata[$ptr + 1]['uni'] == 0x0F3F) { + $tmp = $this->OTLdata[$ptr + 1]; + $this->OTLdata[$ptr + 1] = $this->OTLdata[$ptr]; + $this->OTLdata[$ptr] = $tmp; + } + } + + + // ========================= + // Decomposition for TIBETAN + // ========================= + /* Recommended, but does not seem to change anything... + for($ptr=0; $ptr<count($this->OTLdata); $ptr++) { + $char = $this->OTLdata[$ptr]['uni']; + $sub = Indic::decompose_indic($char); + if ($sub) { + $newinfo = array(); + for($i=0;$i<count($sub);$i++) { + $newinfo[$i] = array(); + $ucd_record = Ucdn::get_ucd_record($sub[$i]); + $newinfo[$i]['general_category'] = $ucd_record[0]; + $newinfo[$i]['bidi_type'] = $ucd_record[2]; + $charasstr = $this->unicode_hex($sub[$i]); + if (strpos($this->GlyphClassMarks, $charasstr)!==false) { $newinfo[$i]['group'] = 'M'; } + else { $newinfo[$i]['group'] = 'C'; } + $newinfo[$i]['uni'] = $sub[$i]; + $newinfo[$i]['hex'] = $charasstr; + } + array_splice($this->OTLdata, $ptr, 1, $newinfo); + $ptr += count($sub)-1; + } + } + */ + } + + + //----------------------------------------------------------------------------------- + // b. Apply all GSUB Lookups (in order specified in lookup list) + //----------------------------------------------------------------------------------- + $tags = 'locl ccmp pref blwf abvf pstf pres abvs blws psts haln rlig calt liga clig mset RQD'; + // pref blwf abvf pstf required for Tibetan + // " RQD" is a non-standard tag in Garuda font - presumably intended to be used by default ? "ReQuireD" + // Being a 3 letter tag is non-standard, and does not allow it to be set by font-feature-settings + + + /* ?Add these until shapers witten? + Hangul: ljmo vjmo tjmo + */ + + $omittags = ''; + $useGSUBtags = $tags; + if (!empty($this->mpdf->OTLtags)) { + $useGSUBtags = $this->_applyTagSettings($tags, $GSUBFeatures, $omittags, false); + } + // APPLY GSUB rules (as long as not Latin + SmallCaps - but not OTL smcp) + if (!(($this->mpdf->textvar & TextVars::FC_SMALLCAPS) && $scriptblock == Ucdn::SCRIPT_LATIN && strpos($useGSUBtags, 'smcp') === false)) { + $this->_applyGSUBrules($useGSUBtags, $GSUBscriptTag, $GSUBlangsys); + } + } + } + + // Shapers - KHMER & THAI & LAO - Replace Word boundary marker with U+200B + // Also TIBETAN (no shaper) + //======================================================= + if (($this->shaper == "K" || $this->shaper == "T" || $this->shaper == "L") || $scriptblock == Ucdn::SCRIPT_TIBETAN) { + // Set up properties to insert a U+200B character + $newinfo = []; + //$newinfo[0] = array('general_category' => 1, 'bidi_type' => 14, 'group' => 'S', 'uni' => 0x200B, 'hex' => '0200B'); + $newinfo[0] = [ + 'general_category' => Ucdn::UNICODE_GENERAL_CATEGORY_FORMAT, + 'bidi_type' => Ucdn::BIDI_CLASS_BN, + 'group' => 'S', 'uni' => 0x200B, 'hex' => '0200B']; + // Then insert U+200B at (after) all word end boundaries + for ($i = count($this->OTLdata) - 1; $i > 0; $i--) { + // Make sure after GSUB that wordend has not been moved - check next char is not in the same syllable + if (isset($this->OTLdata[$i]['wordend']) && $this->OTLdata[$i]['wordend'] && + isset($this->OTLdata[$i + 1]['uni']) && (!isset($this->OTLdata[$i + 1]['syllable']) || !isset($this->OTLdata[$i + 1]['syllable']) || $this->OTLdata[$i + 1]['syllable'] != $this->OTLdata[$i]['syllable'])) { + array_splice($this->OTLdata, $i + 1, 0, $newinfo); + $this->_updateLigatureMarks($i, 1); + } elseif ($this->OTLdata[$i]['uni'] == 0x2e) { // Word end if Full-stop. + array_splice($this->OTLdata, $i + 1, 0, $newinfo); + $this->_updateLigatureMarks($i, 1); + } + } + } + + + // Shapers - INDIC & ARABIC & KHMER & SINHALA & MYANMAR - Remove ZWJ and ZWNJ + //======================================================= + if ($this->shaper == 'I' || $this->shaper == 'S' || $this->shaper == 'A' || $this->shaper == 'K' || $this->shaper == 'M') { + // Remove ZWJ and ZWNJ + for ($i = 0; $i < count($this->OTLdata); $i++) { + if ($this->OTLdata[$i]['uni'] == 8204 || $this->OTLdata[$i]['uni'] == 8205) { + array_splice($this->OTLdata, $i, 1); + $this->_updateLigatureMarks($i, -1); + } + } + } + + + //////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////// + ////////// GPOS ///////////////////////////////// + //////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////// + if (($useOTL & 0xFF) && $GPOSscriptTag && $GPOSlangsys && $GPOSFeatures) { + $this->Entry = []; + $this->Exit = []; + + // 6. Load GPOS data, Coverage & Lookups + //================================================================= + $fontCacheFilename = $this->mpdf->CurrentFont['fontkey'] . '.GPOSdata.json'; + if (!isset($this->GPOSdata[$this->fontkey]) && $this->fontCache->jsonHas($fontCacheFilename)) { + $this->LuCoverage = $this->GPOSdata[$this->fontkey]['LuCoverage'] = $this->fontCache->jsonLoad($fontCacheFilename); + } else { + $this->LuCoverage = $this->GPOSdata[$this->fontkey]['LuCoverage']; + } + + $this->GPOSLookups = $this->mpdf->CurrentFont['GPOSLookups']; + + + // 7. Select Feature tags to use (incl optional) + //============================== + $tags = 'abvm blwm mark mkmk curs cpsp dist requ'; // Default set + // 'requ' is not listed in the Microsoft registry of Feature tags + // Found in Arial Unicode MS, it repositions the baseline for punctuation in Kannada script + + // ZZZ96 + // Set kern to be included by default in non-Latin script (? just when shapers used) + // Kern is used in some fonts to reposition marks etc. and is essential for correct display + //if ($this->shaper) {$tags .= ' kern'; } + if ($scriptblock != Ucdn::SCRIPT_LATIN) { + $tags .= ' kern'; + } + + $omittags = ''; + $usetags = $tags; + if (!empty($this->mpdf->OTLtags)) { + $usetags = $this->_applyTagSettings($tags, $GPOSFeatures, $omittags, false); + } + + + + // 8. Get GPOS LookupList from Feature tags + //============================== + $LookupList = []; + foreach ($GPOSFeatures as $tag => $arr) { + if (strpos($usetags, $tag) !== false) { + foreach ($arr as $lu) { + $LookupList[$lu] = $tag; + } + } + } + ksort($LookupList); + + + // 9. Apply GPOS Lookups (in order specified in lookup list but selecting from specified tags) + //============================== + // APPLY THE GPOS RULES (as long as not Latin + SmallCaps - but not OTL smcp) + if (!(($this->mpdf->textvar & TextVars::FC_SMALLCAPS) && $scriptblock == Ucdn::SCRIPT_LATIN && strpos($useGSUBtags, 'smcp') === false)) { + $this->_applyGPOSrules($LookupList, $is_old_spec); + // (sets: $this->OTLdata[n]['GPOSinfo'] XPlacement YPlacement XAdvance Entry Exit ) + } + + // 10. Process cursive text + //============================== + if (count($this->Entry) || count($this->Exit)) { + // RTL + $incurs = false; + for ($i = (count($this->OTLdata) - 1); $i >= 0; $i--) { + if (isset($this->Entry[$i]) && isset($this->Entry[$i]['Y']) && $this->Entry[$i]['dir'] == 'RTL') { + $nextbase = $i - 1; // Set as next base ignoring marks (next base reading RTL in logical oder + while (isset($this->OTLdata[$nextbase]['hex']) && strpos($this->GlyphClassMarks, $this->OTLdata[$nextbase]['hex']) !== false) { + $nextbase--; + } + if (isset($this->Exit[$nextbase]) && isset($this->Exit[$nextbase]['Y'])) { + $diff = $this->Entry[$i]['Y'] - $this->Exit[$nextbase]['Y']; + if ($incurs === false) { + $incurs = $diff; + } else { + $incurs += $diff; + } + for ($j = ($i - 1); $j >= $nextbase; $j--) { + if (isset($this->OTLdata[$j]['GPOSinfo']['YPlacement'])) { + $this->OTLdata[$j]['GPOSinfo']['YPlacement'] += $incurs; + } else { + $this->OTLdata[$j]['GPOSinfo']['YPlacement'] = $incurs; + } + } + if (isset($this->Exit[$i]['X']) && isset($this->Entry[$nextbase]['X'])) { + $adj = -($this->Entry[$i]['X'] - $this->Exit[$nextbase]['X']); + // If XAdvance is aplied - in order for PDF to position the Advance correctly need to place it on: + // in RTL - the current glyph or the last of any associated marks + if (isset($this->OTLdata[$nextbase + 1]['GPOSinfo']['XAdvance'])) { + $this->OTLdata[$nextbase + 1]['GPOSinfo']['XAdvance'] += $adj; + } else { + $this->OTLdata[$nextbase + 1]['GPOSinfo']['XAdvance'] = $adj; + } + } + } else { + $incurs = false; + } + } elseif (strpos($this->GlyphClassMarks, $this->OTLdata[$i]['hex']) !== false) { + continue; + } // ignore Marks + else { + $incurs = false; + } + } + // LTR + $incurs = false; + for ($i = 0; $i < count($this->OTLdata); $i++) { + if (isset($this->Exit[$i]) && isset($this->Exit[$i]['Y']) && $this->Exit[$i]['dir'] == 'LTR') { + $nextbase = $i + 1; // Set as next base ignoring marks + while (strpos($this->GlyphClassMarks, $this->OTLdata[$nextbase]['hex']) !== false) { + $nextbase++; + } + if (isset($this->Entry[$nextbase]) && isset($this->Entry[$nextbase]['Y'])) { + $diff = $this->Exit[$i]['Y'] - $this->Entry[$nextbase]['Y']; + if ($incurs === false) { + $incurs = $diff; + } else { + $incurs += $diff; + } + for ($j = ($i + 1); $j <= $nextbase; $j++) { + if (isset($this->OTLdata[$j]['GPOSinfo']['YPlacement'])) { + $this->OTLdata[$j]['GPOSinfo']['YPlacement'] += $incurs; + } else { + $this->OTLdata[$j]['GPOSinfo']['YPlacement'] = $incurs; + } + } + if (isset($this->Exit[$i]['X']) && isset($this->Entry[$nextbase]['X'])) { + $adj = -($this->Exit[$i]['X'] - $this->Entry[$nextbase]['X']); + // If XAdvance is aplied - in order for PDF to position the Advance correctly need to place it on: + // in LTR - the next glyph, ignoring marks + if (isset($this->OTLdata[$nextbase]['GPOSinfo']['XAdvance'])) { + $this->OTLdata[$nextbase]['GPOSinfo']['XAdvance'] += $adj; + } else { + $this->OTLdata[$nextbase]['GPOSinfo']['XAdvance'] = $adj; + } + } + } else { + $incurs = false; + } + } elseif (strpos($this->GlyphClassMarks, $this->OTLdata[$i]['hex']) !== false) { + continue; + } // ignore Marks + else { + $incurs = false; + } + } + } + } // end GPOS + + if ($this->debugOTL) { + $this->_dumpproc('END', '-', '-', '-', '-', 0, '-', 0); + exit; + } + + $this->schOTLdata[$sch] = $this->OTLdata; + $this->OTLdata = []; + } // END foreach subchunk + // 11. Re-assemble and return text string + //============================== + $newGPOSinfo = []; + $newOTLdata = []; + $newchar_data = []; + $newgroup = ''; + $e = ''; + $ectr = 0; + + for ($sch = 0; $sch <= $subchunk; $sch++) { + for ($i = 0; $i < count($this->schOTLdata[$sch]); $i++) { + if (isset($this->schOTLdata[$sch][$i]['GPOSinfo'])) { + $newGPOSinfo[$ectr] = $this->schOTLdata[$sch][$i]['GPOSinfo']; + } + $newchar_data[$ectr] = ['bidi_class' => $this->schOTLdata[$sch][$i]['bidi_type'], 'uni' => $this->schOTLdata[$sch][$i]['uni']]; + $newgroup .= $this->schOTLdata[$sch][$i]['group']; + $e .= UtfString::code2utf($this->schOTLdata[$sch][$i]['uni']); + if (isset($this->mpdf->CurrentFont['subset'])) { + $this->mpdf->CurrentFont['subset'][$this->schOTLdata[$sch][$i]['uni']] = $this->schOTLdata[$sch][$i]['uni']; + } + $ectr++; + } + } + $this->OTLdata['GPOSinfo'] = $newGPOSinfo; + $this->OTLdata['char_data'] = $newchar_data; + $this->OTLdata['group'] = $newgroup; + + // This leaves OTLdata::GPOSinfo, ::bidi_type, & ::group + + return $e; + } + + function _applyTagSettings($tags, $Features, $omittags = '', $onlytags = false) + { + if (empty($this->mpdf->OTLtags['Plus']) && empty($this->mpdf->OTLtags['Minus']) && empty($this->mpdf->OTLtags['FFPlus']) && empty($this->mpdf->OTLtags['FFMinus'])) { + return $tags; + } + + // Use $tags as starting point + $usetags = $tags; + + // Only set / unset tags which are in the font + // Ignore tags which are in $omittags + // If $onlytags, then just unset tags which are already in the Tag list + + $fp = $fm = $ffp = $ffm = ''; + + // Font features to enable - set by font-variant-xx + if (isset($this->mpdf->OTLtags['Plus'])) { + $fp = $this->mpdf->OTLtags['Plus']; + } + preg_match_all('/([a-zA-Z0-9]{4})/', $fp, $m); + for ($i = 0; $i < count($m[0]); $i++) { + $t = $m[1][$i]; + // Is it a valid tag? + if (isset($Features[$t]) && strpos($omittags, $t) === false && (!$onlytags || strpos($tags, $t) !== false )) { + $usetags .= ' ' . $t; + } + } + + // Font features to disable - set by font-variant-xx + if (isset($this->mpdf->OTLtags['Minus'])) { + $fm = $this->mpdf->OTLtags['Minus']; + } + preg_match_all('/([a-zA-Z0-9]{4})/', $fm, $m); + for ($i = 0; $i < count($m[0]); $i++) { + $t = $m[1][$i]; + // Is it a valid tag? + if (isset($Features[$t]) && strpos($omittags, $t) === false && (!$onlytags || strpos($tags, $t) !== false )) { + $usetags = str_replace($t, '', $usetags); + } + } + + // Font features to enable - set by font-feature-settings + if (isset($this->mpdf->OTLtags['FFPlus'])) { + $ffp = $this->mpdf->OTLtags['FFPlus']; // Font Features - may include integer: salt4 + } + preg_match_all('/([a-zA-Z0-9]{4})([\d+]*)/', $ffp, $m); + for ($i = 0; $i < count($m[0]); $i++) { + $t = $m[1][$i]; + // Is it a valid tag? + if (isset($Features[$t]) && strpos($omittags, $t) === false && (!$onlytags || strpos($tags, $t) !== false )) { + $usetags .= ' ' . $m[0][$i]; // - may include integer: salt4 + } + } + + // Font features to disable - set by font-feature-settings + if (isset($this->mpdf->OTLtags['FFMinus'])) { + $ffm = $this->mpdf->OTLtags['FFMinus']; + } + preg_match_all('/([a-zA-Z0-9]{4})/', $ffm, $m); + for ($i = 0; $i < count($m[0]); $i++) { + $t = $m[1][$i]; + // Is it a valid tag? + if (isset($Features[$t]) && strpos($omittags, $t) === false && (!$onlytags || strpos($tags, $t) !== false )) { + $usetags = str_replace($t, '', $usetags); + } + } + return $usetags; + } + + function _applyGSUBrules($usetags, $scriptTag, $langsys) + { + // Features from all Tags are applied together, in Lookup List order. + // For Indic - should be applied one syllable at a time + // - Implemented in functions checkContextMatch and checkContextMatchMultiple by failing to match if outside scope of current 'syllable' + // if $this->restrictToSyllable is true + + $GSUBFeatures = $this->mpdf->CurrentFont['GSUBFeatures'][$scriptTag][$langsys]; + $LookupList = []; + foreach ($GSUBFeatures as $tag => $arr) { + if (strpos($usetags, $tag) !== false) { + foreach ($arr as $lu) { + $LookupList[$lu] = $tag; + } + } + } + ksort($LookupList); + + foreach ($LookupList as $lu => $tag) { + $Type = $this->GSUBLookups[$lu]['Type']; + $Flag = $this->GSUBLookups[$lu]['Flag']; + $MarkFilteringSet = $this->GSUBLookups[$lu]['MarkFilteringSet']; + $tagInt = 1; + if (preg_match('/' . $tag . '([0-9]{1,2})/', $usetags, $m)) { + $tagInt = $m[1]; + } + $ptr = 0; + // Test each glyph sequentially + while ($ptr < (count($this->OTLdata))) { // whilst there is another glyph ..0064 + $currGlyph = $this->OTLdata[$ptr]['hex']; + $currGID = $this->OTLdata[$ptr]['uni']; + $shift = 1; + foreach ($this->GSUBLookups[$lu]['Subtables'] as $c => $subtable_offset) { + // NB Coverage only looks at glyphs for position 1 (esp. 7.3 and 8.3) + if (isset($this->GSLuCoverage[$lu][$c][$currGID])) { + // Get rules from font GSUB subtable + $shift = $this->_applyGSUBsubtable($lu, $c, $ptr, $currGlyph, $currGID, ($subtable_offset - $this->GSUB_offset), $Type, $Flag, $MarkFilteringSet, $this->GSLuCoverage[$lu][$c], 0, $tag, 0, $tagInt); + + if ($shift) { + break; + } + } + } + if ($shift == 0) { + $shift = 1; + } + $ptr += $shift; + } + } + } + + function _applyGSUBrulesSingly($usetags, $scriptTag, $langsys) + { + // Features are applied one at a time, working through each codepoint + + $GSUBFeatures = $this->mpdf->CurrentFont['GSUBFeatures'][$scriptTag][$langsys]; + + $tags = explode(' ', $usetags); + foreach ($tags as $usetag) { + $LookupList = []; + foreach ($GSUBFeatures as $tag => $arr) { + if (strpos($usetags, $tag) !== false) { + foreach ($arr as $lu) { + $LookupList[$lu] = $tag; + } + } + } + ksort($LookupList); + + $ptr = 0; + // Test each glyph sequentially + while ($ptr < (count($this->OTLdata))) { // whilst there is another glyph ..0064 + $currGlyph = $this->OTLdata[$ptr]['hex']; + $currGID = $this->OTLdata[$ptr]['uni']; + $shift = 1; + + foreach ($LookupList as $lu => $tag) { + $Type = $this->GSUBLookups[$lu]['Type']; + $Flag = $this->GSUBLookups[$lu]['Flag']; + $MarkFilteringSet = $this->GSUBLookups[$lu]['MarkFilteringSet']; + $tagInt = 1; + if (preg_match('/' . $tag . '([0-9]{1,2})/', $usetags, $m)) { + $tagInt = $m[1]; + } + + foreach ($this->GSUBLookups[$lu]['Subtables'] as $c => $subtable_offset) { + // NB Coverage only looks at glyphs for position 1 (esp. 7.3 and 8.3) + if (isset($this->GSLuCoverage[$lu][$c][$currGID])) { + // Get rules from font GSUB subtable + $shift = $this->_applyGSUBsubtable($lu, $c, $ptr, $currGlyph, $currGID, ($subtable_offset - $this->GSUB_offset), $Type, $Flag, $MarkFilteringSet, $this->GSLuCoverage[$lu][$c], 0, $tag, 0, $tagInt); + + if ($shift) { + break 2; + } + } + } + } + if ($shift == 0) { + $shift = 1; + } + $ptr += $shift; + } + } + } + + function _applyGSUBrulesMyanmar($usetags, $scriptTag, $langsys) + { + // $usetags = locl ccmp rphf pref blwf pstf'; + // applied to all characters + + $GSUBFeatures = $this->mpdf->CurrentFont['GSUBFeatures'][$scriptTag][$langsys]; + + // ALL should be applied one syllable at a time + // Implemented in functions checkContextMatch and checkContextMatchMultiple by failing to match if outside scope of current 'syllable' + $tags = explode(' ', $usetags); + foreach ($tags as $usetag) { + $LookupList = []; + foreach ($GSUBFeatures as $tag => $arr) { + if ($tag == $usetag) { + foreach ($arr as $lu) { + $LookupList[$lu] = $tag; + } + } + } + ksort($LookupList); + + foreach ($LookupList as $lu => $tag) { + $Type = $this->GSUBLookups[$lu]['Type']; + $Flag = $this->GSUBLookups[$lu]['Flag']; + $MarkFilteringSet = $this->GSUBLookups[$lu]['MarkFilteringSet']; + $tagInt = 1; + if (preg_match('/' . $tag . '([0-9]{1,2})/', $usetags, $m)) { + $tagInt = $m[1]; + } + + $ptr = 0; + // Test each glyph sequentially + while ($ptr < (count($this->OTLdata))) { // whilst there is another glyph ..0064 + $currGlyph = $this->OTLdata[$ptr]['hex']; + $currGID = $this->OTLdata[$ptr]['uni']; + $shift = 1; + foreach ($this->GSUBLookups[$lu]['Subtables'] as $c => $subtable_offset) { + // NB Coverage only looks at glyphs for position 1 (esp. 7.3 and 8.3) + if (isset($this->GSLuCoverage[$lu][$c][$currGID])) { + // Get rules from font GSUB subtable + $shift = $this->_applyGSUBsubtable($lu, $c, $ptr, $currGlyph, $currGID, ($subtable_offset - $this->GSUB_offset), $Type, $Flag, $MarkFilteringSet, $this->GSLuCoverage[$lu][$c], 0, $usetag, 0, $tagInt); + + if ($shift) { + break; + } + } + } + if ($shift == 0) { + $shift = 1; + } + $ptr += $shift; + } + } + } + } + + function _applyGSUBrulesIndic($usetags, $scriptTag, $langsys, $is_old_spec) + { + // $usetags = 'locl ccmp nukt akhn rphf rkrf pref blwf half pstf vatu cjct'; then later - init + // rphf, pref, blwf, half, abvf, pstf, and init are only applied where ['mask'] indicates: Indic::FLAG(Indic::RPHF); + // The rest are applied to all characters + + $GSUBFeatures = $this->mpdf->CurrentFont['GSUBFeatures'][$scriptTag][$langsys]; + + // ALL should be applied one syllable at a time + // Implemented in functions checkContextMatch and checkContextMatchMultiple by failing to match if outside scope of current 'syllable' + $tags = explode(' ', $usetags); + foreach ($tags as $usetag) { + $LookupList = []; + foreach ($GSUBFeatures as $tag => $arr) { + if ($tag == $usetag) { + foreach ($arr as $lu) { + $LookupList[$lu] = $tag; + } + } + } + ksort($LookupList); + + foreach ($LookupList as $lu => $tag) { + $Type = $this->GSUBLookups[$lu]['Type']; + $Flag = $this->GSUBLookups[$lu]['Flag']; + $MarkFilteringSet = $this->GSUBLookups[$lu]['MarkFilteringSet']; + $tagInt = 1; + if (preg_match('/' . $tag . '([0-9]{1,2})/', $usetags, $m)) { + $tagInt = $m[1]; + } + + $ptr = 0; + // Test each glyph sequentially + while ($ptr < (count($this->OTLdata))) { // whilst there is another glyph ..0064 + $currGlyph = $this->OTLdata[$ptr]['hex']; + $currGID = $this->OTLdata[$ptr]['uni']; + $shift = 1; + foreach ($this->GSUBLookups[$lu]['Subtables'] as $c => $subtable_offset) { + // NB Coverage only looks at glyphs for position 1 (esp. 7.3 and 8.3) + if (isset($this->GSLuCoverage[$lu][$c][$currGID])) { + if (strpos('rphf pref blwf half pstf cfar init', $usetag) !== false) { // only apply when mask indicates + $mask = 0; + switch ($usetag) { + case 'rphf': + $mask = (1 << (Indic::RPHF)); + break; + case 'pref': + $mask = (1 << (Indic::PREF)); + break; + case 'blwf': + $mask = (1 << (Indic::BLWF)); + break; + case 'half': + $mask = (1 << (Indic::HALF)); + break; + case 'pstf': + $mask = (1 << (Indic::PSTF)); + break; + case 'cfar': + $mask = (1 << (Indic::CFAR)); + break; + case 'init': + $mask = (1 << (Indic::INIT)); + break; + } + if (!($this->OTLdata[$ptr]['mask'] & $mask)) { + continue; + } + } + // Get rules from font GSUB subtable + $shift = $this->_applyGSUBsubtable($lu, $c, $ptr, $currGlyph, $currGID, ($subtable_offset - $this->GSUB_offset), $Type, $Flag, $MarkFilteringSet, $this->GSLuCoverage[$lu][$c], 0, $usetag, $is_old_spec, $tagInt); + + if ($shift) { + break; + } + } // Special case for Indic ZZZ99S + // Check to substitute Halant-Consonant in PREF, BLWF or PSTF + // i.e. new spec but GSUB tables have Consonant-Halant in Lookups e.g. FreeSerif, which + // incorrectly just moved old spec tables to new spec. Uniscribe seems to cope with this + // See also ttffontsuni.php + // First check if current glyph is a Halant/Virama + elseif (static::_OTL_OLD_SPEC_COMPAT_1 && $Type == 4 && !$is_old_spec && strpos('0094D 009CD 00A4D 00ACD 00B4D 00BCD 00C4D 00CCD 00D4D', $currGlyph) !== false) { + // only apply when 'pref blwf pstf' tags, and when mask indicates + if (strpos('pref blwf pstf', $usetag) !== false) { + $mask = 0; + switch ($usetag) { + case 'pref': + $mask = (1 << (Indic::PREF)); + break; + case 'blwf': + $mask = (1 << (Indic::BLWF)); + break; + case 'pstf': + $mask = (1 << (Indic::PSTF)); + break; + } + if (!($this->OTLdata[$ptr]['mask'] & $mask)) { + continue; + } + + $nextGlyph = $this->OTLdata[$ptr + 1]['hex']; + $nextGID = $this->OTLdata[$ptr + 1]['uni']; + if (isset($this->GSLuCoverage[$lu][$c][$nextGID])) { + // Get rules from font GSUB subtable + $shift = $this->_applyGSUBsubtableSpecial($lu, $c, $ptr, $currGlyph, $currGID, $nextGlyph, $nextGID, ($subtable_offset - $this->GSUB_offset), $Type, $this->GSLuCoverage[$lu][$c]); + + if ($shift) { + break; + } + } + } + } + } + if ($shift == 0) { + $shift = 1; + } + $ptr += $shift; + } + } + } + } + + function _applyGSUBsubtableSpecial($lookupID, $subtable, $ptr, $currGlyph, $currGID, $nextGlyph, $nextGID, $subtable_offset, $Type, $LuCoverage) + { + + // Special case for Indic + // Check to substitute Halant-Consonant in PREF, BLWF or PSTF + // i.e. new spec but GSUB tables have Consonant-Halant in Lookups e.g. FreeSerif, which + // incorrectly just moved old spec tables to new spec. Uniscribe seems to cope with this + // See also ttffontsuni.php + + $this->seek($subtable_offset); + $SubstFormat = $this->read_ushort(); + + // Subtable contains Consonant - Halant + // Text string contains Halant ($CurrGlyph) - Consonant ($nextGlyph) + // Halant has already been matched, and already checked that $nextGID is in Coverage table + //////////////////////////////////////////////////////////////////////////////// + // Only does: LookupType 4: Ligature Substitution Subtable : n to 1 + //////////////////////////////////////////////////////////////////////////////// + $Coverage = $subtable_offset + $this->read_ushort(); + $NextGlyphPos = $LuCoverage[$nextGID]; + $LigSetCount = $this->read_short(); + + $this->skip($NextGlyphPos * 2); + $LigSet = $subtable_offset + $this->read_short(); + + $this->seek($LigSet); + $LigCount = $this->read_short(); + // LigatureSet i.e. all starting with the same Glyph $nextGlyph [Consonant] + $LigatureOffset = []; + for ($g = 0; $g < $LigCount; $g++) { + $LigatureOffset[$g] = $LigSet + $this->read_ushort(); + } + for ($g = 0; $g < $LigCount; $g++) { + // Ligature tables + $this->seek($LigatureOffset[$g]); + $LigGlyph = $this->read_ushort(); + $substitute = $this->glyphToChar($LigGlyph); + $CompCount = $this->read_ushort(); + + if ($CompCount != 2) { + return 0; + } // Only expecting to work with 2:1 (and no ignore characters in between) + + + $gid = $this->read_ushort(); + $checkGlyph = $this->glyphToChar($gid); // Other component/input Glyphs starting at position 2 (arrayindex 1) + + if ($currGID == $checkGlyph) { + $match = true; + } else { + $match = false; + break; + } + + $GlyphPos = []; + $GlyphPos[] = $ptr; + $GlyphPos[] = $ptr + 1; + + + if ($match) { + $shift = $this->GSUBsubstitute($ptr, $substitute, 4, $GlyphPos); // GlyphPos contains positions to set null + if ($shift) { + return 1; + } + } + } + return 0; + } + + function _applyGSUBsubtable($lookupID, $subtable, $ptr, $currGlyph, $currGID, $subtable_offset, $Type, $Flag, $MarkFilteringSet, $LuCoverage, $level, $currentTag, $is_old_spec, $tagInt) + { + $ignore = $this->_getGCOMignoreString($Flag, $MarkFilteringSet); + + // Lets start + $this->seek($subtable_offset); + $SubstFormat = $this->read_ushort(); + + //////////////////////////////////////////////////////////////////////////////// + // LookupType 1: Single Substitution Subtable : 1 to 1 + //////////////////////////////////////////////////////////////////////////////// + if ($Type == 1) { + // Flag = Ignore + if ($this->_checkGCOMignore($Flag, $currGlyph, $MarkFilteringSet)) { + return 0; + } + $CoverageOffset = $subtable_offset + $this->read_ushort(); + $GlyphPos = $LuCoverage[$currGID]; + //=========== + // Format 1: + //=========== + if ($SubstFormat == 1) { // Calculated output glyph indices + $DeltaGlyphID = $this->read_short(); + $this->seek($CoverageOffset); + $glyphs = $this->_getCoverageGID(); + $GlyphID = $glyphs[$GlyphPos] + $DeltaGlyphID; + } //=========== + // Format 2: + //=========== + elseif ($SubstFormat == 2) { // Specified output glyph indices + $GlyphCount = $this->read_ushort(); + $this->skip($GlyphPos * 2); + $GlyphID = $this->read_ushort(); + } + + $substitute = $this->glyphToChar($GlyphID); + $shift = $this->GSUBsubstitute($ptr, $substitute, $Type); + if ($this->debugOTL && $shift) { + $this->_dumpproc('GSUB', $lookupID, $subtable, $Type, $SubstFormat, $ptr, $currGlyph, $level); + } + if ($shift) { + return 1; + } + return 0; + } //////////////////////////////////////////////////////////////////////////////// + // LookupType 2: Multiple Substitution Subtable : 1 to n + //////////////////////////////////////////////////////////////////////////////// + elseif ($Type == 2) { + // Flag = Ignore + if ($this->_checkGCOMignore($Flag, $currGlyph, $MarkFilteringSet)) { + return 0; + } + $Coverage = $subtable_offset + $this->read_ushort(); + $GlyphPos = $LuCoverage[$currGID]; + $this->skip(2); + $this->skip($GlyphPos * 2); + $Sequences = $subtable_offset + $this->read_short(); + + $this->seek($Sequences); + $GlyphCount = $this->read_short(); + $SubstituteGlyphs = []; + for ($g = 0; $g < $GlyphCount; $g++) { + $sgid = $this->read_ushort(); + $SubstituteGlyphs[] = $this->glyphToChar($sgid); + } + + $shift = $this->GSUBsubstitute($ptr, $SubstituteGlyphs, $Type); + if ($this->debugOTL && $shift) { + $this->_dumpproc('GSUB', $lookupID, $subtable, $Type, $SubstFormat, $ptr, $currGlyph, $level); + } + if ($shift) { + return $shift; + } + return 0; + } //////////////////////////////////////////////////////////////////////////////// + // LookupType 3: Alternate Forms : 1 to 1(n) + //////////////////////////////////////////////////////////////////////////////// + elseif ($Type == 3) { + // Flag = Ignore + if ($this->_checkGCOMignore($Flag, $currGlyph, $MarkFilteringSet)) { + return 0; + } + $Coverage = $subtable_offset + $this->read_ushort(); + $AlternateSetCount = $this->read_short(); + ///////////////////////////////////////////////////////////////////////////////!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + // Need to set alternate IF set by CSS3 font-feature for a tag + // i.e. if this is 'salt' alternate may be set to 2 + // default value will be $alt=1 ( === index of 0 in list of alternates) + $alt = 1; // $alt=1 points to Alternative[0] + if ($tagInt > 1) { + $alt = $tagInt; + } + ///////////////////////////////////////////////////////////////////////////////!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + if ($alt == 0) { + return 0; + } // If specified alternate not present, cancel [ or could default $alt = 1 ?] + + $GlyphPos = $LuCoverage[$currGID]; + $this->skip($GlyphPos * 2); + + $AlternateSets = $subtable_offset + $this->read_short(); + $this->seek($AlternateSets); + + $AlternateGlyphCount = $this->read_short(); + if ($alt > $AlternateGlyphCount) { + return 0; + } // If specified alternate not present, cancel [ or could default $alt = 1 ?] + + $this->skip(($alt - 1) * 2); + $GlyphID = $this->read_ushort(); + + $substitute = $this->glyphToChar($GlyphID); + $shift = $this->GSUBsubstitute($ptr, $substitute, $Type); + if ($this->debugOTL && $shift) { + $this->_dumpproc('GSUB', $lookupID, $subtable, $Type, $SubstFormat, $ptr, $currGlyph, $level); + } + if ($shift) { + return 1; + } + return 0; + } //////////////////////////////////////////////////////////////////////////////// + // LookupType 4: Ligature Substitution Subtable : n to 1 + //////////////////////////////////////////////////////////////////////////////// + elseif ($Type == 4) { + // Flag = Ignore + if ($this->_checkGCOMignore($Flag, $currGlyph, $MarkFilteringSet)) { + return 0; + } + $Coverage = $subtable_offset + $this->read_ushort(); + $FirstGlyphPos = $LuCoverage[$currGID]; + + $LigSetCount = $this->read_short(); + + $this->skip($FirstGlyphPos * 2); + $LigSet = $subtable_offset + $this->read_short(); + + $this->seek($LigSet); + $LigCount = $this->read_short(); + // LigatureSet i.e. all starting with the same first Glyph $currGlyph + $LigatureOffset = []; + for ($g = 0; $g < $LigCount; $g++) { + $LigatureOffset[$g] = $LigSet + $this->read_ushort(); + } + for ($g = 0; $g < $LigCount; $g++) { + // Ligature tables + $this->seek($LigatureOffset[$g]); + $LigGlyph = $this->read_ushort(); // Output Ligature GlyphID + $substitute = $this->glyphToChar($LigGlyph); + $CompCount = $this->read_ushort(); + + $spos = $ptr; + $match = true; + $GlyphPos = []; + $GlyphPos[] = $spos; + for ($l = 1; $l < $CompCount; $l++) { + $gid = $this->read_ushort(); + $checkGlyph = $this->glyphToChar($gid); // Other component/input Glyphs starting at position 2 (arrayindex 1) + + $spos++; + //while $this->OTLdata[$spos]['uni'] is an "ignore" => spos++ + while (isset($this->OTLdata[$spos]) && strpos($ignore, $this->OTLdata[$spos]['hex']) !== false) { + $spos++; + } + + if (isset($this->OTLdata[$spos]) && $this->OTLdata[$spos]['uni'] == $checkGlyph) { + $GlyphPos[] = $spos; + } else { + $match = false; + break; + } + } + + + if ($match) { + $shift = $this->GSUBsubstitute($ptr, $substitute, $Type, $GlyphPos); // GlyphPos contains positions to set null + if ($this->debugOTL && $shift) { + $this->_dumpproc('GSUB', $lookupID, $subtable, $Type, $SubstFormat, $ptr, $currGlyph, $level); + } + if ($shift) { + return ($spos - $ptr + 1 - ($CompCount - 1)); + } + } + } + return 0; + } //////////////////////////////////////////////////////////////////////////////// + // LookupType 5: Contextual Substitution Subtable + //////////////////////////////////////////////////////////////////////////////// + elseif ($Type == 5) { + //=========== + // Format 1: Simple Context Glyph Substitution + //=========== + if ($SubstFormat == 1) { + $CoverageTableOffset = $subtable_offset + $this->read_ushort(); + $SubRuleSetCount = $this->read_ushort(); + $SubRuleSetOffset = []; + for ($b = 0; $b < $SubRuleSetCount; $b++) { + $offset = $this->read_ushort(); + if ($offset == 0x0000) { + $SubRuleSetOffset[] = $offset; + } else { + $SubRuleSetOffset[] = $subtable_offset + $offset; + } + } + + // SubRuleSet tables: All contexts beginning with the same glyph + // Select the SubRuleSet required using the position of the glyph in the coverage table + $GlyphPos = $LuCoverage[$currGID]; + if ($SubRuleSetOffset[$GlyphPos] > 0) { + $this->seek($SubRuleSetOffset[$GlyphPos]); + $SubRuleCnt = $this->read_ushort(); + $SubRule = []; + for ($b = 0; $b < $SubRuleCnt; $b++) { + $SubRule[$b] = $SubRuleSetOffset[$GlyphPos] + $this->read_ushort(); + } + for ($b = 0; $b < $SubRuleCnt; $b++) { // EACH RULE + $this->seek($SubRule[$b]); + $InputGlyphCount = $this->read_ushort(); + $SubstCount = $this->read_ushort(); + + $Backtrack = []; + $Lookahead = []; + $Input = []; + $Input[0] = $this->OTLdata[$ptr]['uni']; + for ($r = 1; $r < $InputGlyphCount; $r++) { + $gid = $this->read_ushort(); + $Input[$r] = $this->glyphToChar($gid); + } + $matched = $this->checkContextMatch($Input, $Backtrack, $Lookahead, $ignore, $ptr); + if ($matched) { + if ($this->debugOTL) { + $this->_dumpproc('GSUB', $lookupID, $subtable, $Type, $SubstFormat, $ptr, $currGlyph, $level); + } + for ($p = 0; $p < $SubstCount; $p++) { // EACH LOOKUP + $SequenceIndex[$p] = $this->read_ushort(); + $LookupListIndex[$p] = $this->read_ushort(); + } + + for ($p = 0; $p < $SubstCount; $p++) { + // Apply $LookupListIndex at $SequenceIndex + if ($SequenceIndex[$p] >= $InputGlyphCount) { + continue; + } + $lu = $LookupListIndex[$p]; + $luType = $this->GSUBLookups[$lu]['Type']; + $luFlag = $this->GSUBLookups[$lu]['Flag']; + $luMarkFilteringSet = $this->GSUBLookups[$lu]['MarkFilteringSet']; + + $luptr = $matched[$SequenceIndex[$p]]; + $lucurrGlyph = $this->OTLdata[$luptr]['hex']; + $lucurrGID = $this->OTLdata[$luptr]['uni']; + + foreach ($this->GSUBLookups[$lu]['Subtables'] as $luc => $lusubtable_offset) { + $shift = $this->_applyGSUBsubtable($lu, $luc, $luptr, $lucurrGlyph, $lucurrGID, ($lusubtable_offset - $this->GSUB_offset), $luType, $luFlag, $luMarkFilteringSet, $this->GSLuCoverage[$lu][$luc], 1, $currentTag, $is_old_spec, $tagInt); + if ($shift) { + break; + } + } + } + + if (!defined("OMIT_OTL_FIX_3") || OMIT_OTL_FIX_3 != 1) { + return $shift; + } /* OTL_FIX_3 */ + else { + return $InputGlyphCount; // should be + matched ignores in Input Sequence + } + } + } + } + return 0; + } //=========== + // Format 2: + //=========== + // Format 2: Class-based Context Glyph Substitution + elseif ($SubstFormat == 2) { + $CoverageTableOffset = $subtable_offset + $this->read_ushort(); + $InputClassDefOffset = $subtable_offset + $this->read_ushort(); + $SubClassSetCnt = $this->read_ushort(); + $SubClassSetOffset = []; + for ($b = 0; $b < $SubClassSetCnt; $b++) { + $offset = $this->read_ushort(); + if ($offset == 0x0000) { + $SubClassSetOffset[] = $offset; + } else { + $SubClassSetOffset[] = $subtable_offset + $offset; + } + } + + $InputClasses = $this->_getClasses($InputClassDefOffset); + + for ($s = 0; $s < $SubClassSetCnt; $s++) { // $SubClassSet is ordered by input class-may be NULL + // Select $SubClassSet if currGlyph is in First Input Class + if ($SubClassSetOffset[$s] > 0 && isset($InputClasses[$s][$currGID])) { + $this->seek($SubClassSetOffset[$s]); + $SubClassRuleCnt = $this->read_ushort(); + $SubClassRule = []; + for ($b = 0; $b < $SubClassRuleCnt; $b++) { + $SubClassRule[$b] = $SubClassSetOffset[$s] + $this->read_ushort(); + } + + for ($b = 0; $b < $SubClassRuleCnt; $b++) { // EACH RULE + $this->seek($SubClassRule[$b]); + $InputGlyphCount = $this->read_ushort(); + $SubstCount = $this->read_ushort(); + $Input = []; + for ($r = 1; $r < $InputGlyphCount; $r++) { + $Input[$r] = $this->read_ushort(); + } + + $inputClass = $s; + + $inputGlyphs = []; + $inputGlyphs[0] = $InputClasses[$inputClass]; + + if ($InputGlyphCount > 1) { + // NB starts at 1 + for ($gcl = 1; $gcl < $InputGlyphCount; $gcl++) { + $classindex = $Input[$gcl]; + if (isset($InputClasses[$classindex])) { + $inputGlyphs[$gcl] = $InputClasses[$classindex]; + } else { + $inputGlyphs[$gcl] = ''; + } + } + } + + // Class 0 contains all the glyphs NOT in the other classes + $class0excl = []; + for ($gc = 1; $gc <= count($InputClasses); $gc++) { + if (is_array($InputClasses[$gc])) { + $class0excl = $class0excl + $InputClasses[$gc]; + } + } + + $backtrackGlyphs = []; + $lookaheadGlyphs = []; + + $matched = $this->checkContextMatchMultipleUni($inputGlyphs, $backtrackGlyphs, $lookaheadGlyphs, $ignore, $ptr, $class0excl); + if ($matched) { + if ($this->debugOTL) { + $this->_dumpproc('GSUB', $lookupID, $subtable, $Type, $SubstFormat, $ptr, $currGlyph, $level); + } + for ($p = 0; $p < $SubstCount; $p++) { // EACH LOOKUP + $SequenceIndex[$p] = $this->read_ushort(); + $LookupListIndex[$p] = $this->read_ushort(); + } + + for ($p = 0; $p < $SubstCount; $p++) { + // Apply $LookupListIndex at $SequenceIndex + if ($SequenceIndex[$p] >= $InputGlyphCount) { + continue; + } + $lu = $LookupListIndex[$p]; + $luType = $this->GSUBLookups[$lu]['Type']; + $luFlag = $this->GSUBLookups[$lu]['Flag']; + $luMarkFilteringSet = $this->GSUBLookups[$lu]['MarkFilteringSet']; + + $luptr = $matched[$SequenceIndex[$p]]; + $lucurrGlyph = $this->OTLdata[$luptr]['hex']; + $lucurrGID = $this->OTLdata[$luptr]['uni']; + + foreach ($this->GSUBLookups[$lu]['Subtables'] as $luc => $lusubtable_offset) { + $shift = $this->_applyGSUBsubtable($lu, $luc, $luptr, $lucurrGlyph, $lucurrGID, ($lusubtable_offset - $this->GSUB_offset), $luType, $luFlag, $luMarkFilteringSet, $this->GSLuCoverage[$lu][$luc], 1, $currentTag, $is_old_spec, $tagInt); + if ($shift) { + break; + } + } + } + + if (!defined("OMIT_OTL_FIX_3") || OMIT_OTL_FIX_3 != 1) { + return $shift; + } /* OTL_FIX_3 */ + else { + return $InputGlyphCount; // should be + matched ignores in Input Sequence + } + } + } + } + } + + return 0; + } //=========== + // Format 3: + //=========== + // Format 3: Coverage-based Context Glyph Substitution + elseif ($SubstFormat == 3) { + throw new \Mpdf\MpdfException("GSUB Lookup Type " . $Type . " Format " . $SubstFormat . " not TESTED YET."); + } + } //////////////////////////////////////////////////////////////////////////////// + // LookupType 6: Chaining Contextual Substitution Subtable + //////////////////////////////////////////////////////////////////////////////// + elseif ($Type == 6) { + //=========== + // Format 1: + //=========== + // Format 1: Simple Chaining Context Glyph Substitution + if ($SubstFormat == 1) { + $Coverage = $subtable_offset + $this->read_ushort(); + $GlyphPos = $LuCoverage[$currGID]; + $ChainSubRuleSetCount = $this->read_ushort(); + // All of the ChainSubRule tables defining contexts that begin with the same first glyph are grouped together and defined in a ChainSubRuleSet table + $this->skip($GlyphPos * 2); + $ChainSubRuleSet = $subtable_offset + $this->read_ushort(); + $this->seek($ChainSubRuleSet); + $ChainSubRuleCount = $this->read_ushort(); + + for ($s = 0; $s < $ChainSubRuleCount; $s++) { + $ChainSubRule[$s] = $ChainSubRuleSet + $this->read_ushort(); + } + + for ($s = 0; $s < $ChainSubRuleCount; $s++) { + $this->seek($ChainSubRule[$s]); + + $BacktrackGlyphCount = $this->read_ushort(); + $Backtrack = []; + for ($b = 0; $b < $BacktrackGlyphCount; $b++) { + $gid = $this->read_ushort(); + $Backtrack[] = $this->glyphToChar($gid); + } + $Input = []; + $Input[0] = $this->OTLdata[$ptr]['uni']; + $InputGlyphCount = $this->read_ushort(); + for ($b = 1; $b < $InputGlyphCount; $b++) { + $gid = $this->read_ushort(); + $Input[$b] = $this->glyphToChar($gid); + } + $LookaheadGlyphCount = $this->read_ushort(); + $Lookahead = []; + for ($b = 0; $b < $LookaheadGlyphCount; $b++) { + $gid = $this->read_ushort(); + $Lookahead[] = $this->glyphToChar($gid); + } + + $matched = $this->checkContextMatch($Input, $Backtrack, $Lookahead, $ignore, $ptr); + if ($matched) { + if ($this->debugOTL) { + $this->_dumpproc('GSUB', $lookupID, $subtable, $Type, $SubstFormat, $ptr, $currGlyph, $level); + } + $SubstCount = $this->read_ushort(); + for ($p = 0; $p < $SubstCount; $p++) { + // SubstLookupRecord + $SubstLookupRecord[$p]['SequenceIndex'] = $this->read_ushort(); + $SubstLookupRecord[$p]['LookupListIndex'] = $this->read_ushort(); + } + for ($p = 0; $p < $SubstCount; $p++) { + // Apply $SubstLookupRecord[$p]['LookupListIndex'] at $SubstLookupRecord[$p]['SequenceIndex'] + if ($SubstLookupRecord[$p]['SequenceIndex'] >= $InputGlyphCount) { + continue; + } + $lu = $SubstLookupRecord[$p]['LookupListIndex']; + $luType = $this->GSUBLookups[$lu]['Type']; + $luFlag = $this->GSUBLookups[$lu]['Flag']; + $luMarkFilteringSet = $this->GSUBLookups[$lu]['MarkFilteringSet']; + + $luptr = $matched[$SubstLookupRecord[$p]['SequenceIndex']]; + $lucurrGlyph = $this->OTLdata[$luptr]['hex']; + $lucurrGID = $this->OTLdata[$luptr]['uni']; + + foreach ($this->GSUBLookups[$lu]['Subtables'] as $luc => $lusubtable_offset) { + $shift = $this->_applyGSUBsubtable($lu, $luc, $luptr, $lucurrGlyph, $lucurrGID, ($lusubtable_offset - $this->GSUB_offset), $luType, $luFlag, $luMarkFilteringSet, $this->GSLuCoverage[$lu][$luc], 1, $currentTag, $is_old_spec, $tagInt); + if ($shift) { + break; + } + } + } + if (!defined("OMIT_OTL_FIX_3") || OMIT_OTL_FIX_3 != 1) { + return $shift; + } /* OTL_FIX_3 */ + else { + return $InputGlyphCount; // should be + matched ignores in Input Sequence + } + } + } + return 0; + } //=========== + // Format 2: + //=========== + // Format 2: Class-based Chaining Context Glyph Substitution p257 + elseif ($SubstFormat == 2) { + // NB Format 2 specifies fixed class assignments (identical for each position in the backtrack, input, or lookahead sequence) and exclusive classes (a glyph cannot be in more than one class at a time) + + $CoverageTableOffset = $subtable_offset + $this->read_ushort(); + $BacktrackClassDefOffset = $subtable_offset + $this->read_ushort(); + $InputClassDefOffset = $subtable_offset + $this->read_ushort(); + $LookaheadClassDefOffset = $subtable_offset + $this->read_ushort(); + $ChainSubClassSetCnt = $this->read_ushort(); + $ChainSubClassSetOffset = []; + for ($b = 0; $b < $ChainSubClassSetCnt; $b++) { + $offset = $this->read_ushort(); + if ($offset == 0x0000) { + $ChainSubClassSetOffset[] = $offset; + } else { + $ChainSubClassSetOffset[] = $subtable_offset + $offset; + } + } + + $BacktrackClasses = $this->_getClasses($BacktrackClassDefOffset); + $InputClasses = $this->_getClasses($InputClassDefOffset); + $LookaheadClasses = $this->_getClasses($LookaheadClassDefOffset); + + for ($s = 0; $s < $ChainSubClassSetCnt; $s++) { // $ChainSubClassSet is ordered by input class-may be NULL + // Select $ChainSubClassSet if currGlyph is in First Input Class + if ($ChainSubClassSetOffset[$s] > 0 && isset($InputClasses[$s][$currGID])) { + $this->seek($ChainSubClassSetOffset[$s]); + $ChainSubClassRuleCnt = $this->read_ushort(); + $ChainSubClassRule = []; + for ($b = 0; $b < $ChainSubClassRuleCnt; $b++) { + $ChainSubClassRule[$b] = $ChainSubClassSetOffset[$s] + $this->read_ushort(); + } + + for ($b = 0; $b < $ChainSubClassRuleCnt; $b++) { // EACH RULE + $this->seek($ChainSubClassRule[$b]); + $BacktrackGlyphCount = $this->read_ushort(); + for ($r = 0; $r < $BacktrackGlyphCount; $r++) { + $Backtrack[$r] = $this->read_ushort(); + } + $InputGlyphCount = $this->read_ushort(); + for ($r = 1; $r < $InputGlyphCount; $r++) { + $Input[$r] = $this->read_ushort(); + } + $LookaheadGlyphCount = $this->read_ushort(); + for ($r = 0; $r < $LookaheadGlyphCount; $r++) { + $Lookahead[$r] = $this->read_ushort(); + } + + + // These contain classes of glyphs as arrays + // $InputClasses[(class)] e.g. 0x02E6,0x02E7,0x02E8 + // $LookaheadClasses[(class)] + // $BacktrackClasses[(class)] + // These contain arrays of classIndexes + // [Backtrack] [Lookahead] and [Input] (Input is from the second position only) + + + $inputClass = $s; //??? + + $inputGlyphs = []; + $inputGlyphs[0] = $InputClasses[$inputClass]; + + if ($InputGlyphCount > 1) { + // NB starts at 1 + for ($gcl = 1; $gcl < $InputGlyphCount; $gcl++) { + $classindex = $Input[$gcl]; + if (isset($InputClasses[$classindex])) { + $inputGlyphs[$gcl] = $InputClasses[$classindex]; + } else { + $inputGlyphs[$gcl] = ''; + } + } + } + + // Class 0 contains all the glyphs NOT in the other classes + $class0excl = []; + for ($gc = 1; $gc <= count($InputClasses); $gc++) { + if (isset($InputClasses[$gc])) { + $class0excl = $class0excl + $InputClasses[$gc]; + } + } + + if ($BacktrackGlyphCount) { + for ($gcl = 0; $gcl < $BacktrackGlyphCount; $gcl++) { + $classindex = $Backtrack[$gcl]; + if (isset($BacktrackClasses[$classindex])) { + $backtrackGlyphs[$gcl] = $BacktrackClasses[$classindex]; + } else { + $backtrackGlyphs[$gcl] = ''; + } + } + } else { + $backtrackGlyphs = []; + } + + // Class 0 contains all the glyphs NOT in the other classes + $bclass0excl = []; + for ($gc = 1; $gc <= count($BacktrackClasses); $gc++) { + if (isset($BacktrackClasses[$gc])) { + $bclass0excl = $bclass0excl + $BacktrackClasses[$gc]; + } + } + + + if ($LookaheadGlyphCount) { + for ($gcl = 0; $gcl < $LookaheadGlyphCount; $gcl++) { + $classindex = $Lookahead[$gcl]; + if (isset($LookaheadClasses[$classindex])) { + $lookaheadGlyphs[$gcl] = $LookaheadClasses[$classindex]; + } else { + $lookaheadGlyphs[$gcl] = ''; + } + } + } else { + $lookaheadGlyphs = []; + } + + // Class 0 contains all the glyphs NOT in the other classes + $lclass0excl = []; + for ($gc = 1; $gc <= count($LookaheadClasses); $gc++) { + if (isset($LookaheadClasses[$gc])) { + $lclass0excl = $lclass0excl + $LookaheadClasses[$gc]; + } + } + + + $matched = $this->checkContextMatchMultipleUni($inputGlyphs, $backtrackGlyphs, $lookaheadGlyphs, $ignore, $ptr, $class0excl, $bclass0excl, $lclass0excl); + if ($matched) { + if ($this->debugOTL) { + $this->_dumpproc('GSUB', $lookupID, $subtable, $Type, $SubstFormat, $ptr, $currGlyph, $level); + } + $SubstCount = $this->read_ushort(); + for ($p = 0; $p < $SubstCount; $p++) { // EACH LOOKUP + $SequenceIndex[$p] = $this->read_ushort(); + $LookupListIndex[$p] = $this->read_ushort(); + } + + for ($p = 0; $p < $SubstCount; $p++) { + // Apply $LookupListIndex at $SequenceIndex + if ($SequenceIndex[$p] >= $InputGlyphCount) { + continue; + } + $lu = $LookupListIndex[$p]; + $luType = $this->GSUBLookups[$lu]['Type']; + $luFlag = $this->GSUBLookups[$lu]['Flag']; + $luMarkFilteringSet = $this->GSUBLookups[$lu]['MarkFilteringSet']; + + $luptr = $matched[$SequenceIndex[$p]]; + $lucurrGlyph = $this->OTLdata[$luptr]['hex']; + $lucurrGID = $this->OTLdata[$luptr]['uni']; + + foreach ($this->GSUBLookups[$lu]['Subtables'] as $luc => $lusubtable_offset) { + $shift = $this->_applyGSUBsubtable($lu, $luc, $luptr, $lucurrGlyph, $lucurrGID, ($lusubtable_offset - $this->GSUB_offset), $luType, $luFlag, $luMarkFilteringSet, $this->GSLuCoverage[$lu][$luc], 1, $currentTag, $is_old_spec, $tagInt); + if ($shift) { + break; + } + } + } + + if (!defined("OMIT_OTL_FIX_3") || OMIT_OTL_FIX_3 != 1) { + return $shift; + } /* OTL_FIX_3 */ + else { + return $InputGlyphCount; // should be + matched ignores in Input Sequence + } + } + } + } + } + + return 0; + } //=========== + // Format 3: + //=========== + // Format 3: Coverage-based Chaining Context Glyph Substitution p259 + elseif ($SubstFormat == 3) { + $BacktrackGlyphCount = $this->read_ushort(); + for ($b = 0; $b < $BacktrackGlyphCount; $b++) { + $CoverageBacktrackOffset[] = $subtable_offset + $this->read_ushort(); // in glyph sequence order + } + $InputGlyphCount = $this->read_ushort(); + for ($b = 0; $b < $InputGlyphCount; $b++) { + $CoverageInputOffset[] = $subtable_offset + $this->read_ushort(); // in glyph sequence order + } + $LookaheadGlyphCount = $this->read_ushort(); + for ($b = 0; $b < $LookaheadGlyphCount; $b++) { + $CoverageLookaheadOffset[] = $subtable_offset + $this->read_ushort(); // in glyph sequence order + } + $SubstCount = $this->read_ushort(); + $save_pos = $this->_pos; // Save the point just after PosCount + + $CoverageBacktrackGlyphs = []; + for ($b = 0; $b < $BacktrackGlyphCount; $b++) { + $this->seek($CoverageBacktrackOffset[$b]); + $glyphs = $this->_getCoverage(); + $CoverageBacktrackGlyphs[$b] = implode("|", $glyphs); + } + $CoverageInputGlyphs = []; + for ($b = 0; $b < $InputGlyphCount; $b++) { + $this->seek($CoverageInputOffset[$b]); + $glyphs = $this->_getCoverage(); + $CoverageInputGlyphs[$b] = implode("|", $glyphs); + } + $CoverageLookaheadGlyphs = []; + for ($b = 0; $b < $LookaheadGlyphCount; $b++) { + $this->seek($CoverageLookaheadOffset[$b]); + $glyphs = $this->_getCoverage(); + $CoverageLookaheadGlyphs[$b] = implode("|", $glyphs); + } + + $matched = $this->checkContextMatchMultiple($CoverageInputGlyphs, $CoverageBacktrackGlyphs, $CoverageLookaheadGlyphs, $ignore, $ptr); + if ($matched) { + if ($this->debugOTL) { + $this->_dumpproc('GSUB', $lookupID, $subtable, $Type, $SubstFormat, $ptr, $currGlyph, $level); + } + + $this->seek($save_pos); // Return to just after PosCount + for ($p = 0; $p < $SubstCount; $p++) { + // SubstLookupRecord + $SubstLookupRecord[$p]['SequenceIndex'] = $this->read_ushort(); + $SubstLookupRecord[$p]['LookupListIndex'] = $this->read_ushort(); + } + for ($p = 0; $p < $SubstCount; $p++) { + // Apply $SubstLookupRecord[$p]['LookupListIndex'] at $SubstLookupRecord[$p]['SequenceIndex'] + if ($SubstLookupRecord[$p]['SequenceIndex'] >= $InputGlyphCount) { + continue; + } + $lu = $SubstLookupRecord[$p]['LookupListIndex']; + $luType = $this->GSUBLookups[$lu]['Type']; + $luFlag = $this->GSUBLookups[$lu]['Flag']; + $luMarkFilteringSet = $this->GSUBLookups[$lu]['MarkFilteringSet']; + + $luptr = $matched[$SubstLookupRecord[$p]['SequenceIndex']]; + $lucurrGlyph = $this->OTLdata[$luptr]['hex']; + $lucurrGID = $this->OTLdata[$luptr]['uni']; + + foreach ($this->GSUBLookups[$lu]['Subtables'] as $luc => $lusubtable_offset) { + $shift = $this->_applyGSUBsubtable($lu, $luc, $luptr, $lucurrGlyph, $lucurrGID, ($lusubtable_offset - $this->GSUB_offset), $luType, $luFlag, $luMarkFilteringSet, $this->GSLuCoverage[$lu][$luc], 1, $currentTag, $is_old_spec, $tagInt); + if ($shift) { + break; + } + } + } + if (!defined("OMIT_OTL_FIX_3") || OMIT_OTL_FIX_3 != 1) { + return (isset($shift) ? $shift : 0); + } /* OTL_FIX_3 */ + else { + return $InputGlyphCount; // should be + matched ignores in Input Sequence + } + } + + return 0; + } + } else { + throw new \Mpdf\MpdfException("GSUB Lookup Type " . $Type . " not supported."); + } + } + + function _updateLigatureMarks($pos, $n) + { + if ($n > 0) { + // Update position of Ligatures and associated Marks + // Foreach lig/assocMarks + // Any position lpos or mpos > $pos + count($substitute) + // $this->assocMarks = array(); // assocMarks[$pos mpos] => array(compID, ligPos) + // $this->assocLigs = array(); // Ligatures[$pos lpos] => nc + for ($p = count($this->OTLdata) - 1; $p >= ($pos + $n); $p--) { + if (isset($this->assocLigs[$p])) { + $tmp = $this->assocLigs[$p]; + unset($this->assocLigs[$p]); + $this->assocLigs[($p + $n)] = $tmp; + } + } + for ($p = count($this->OTLdata) - 1; $p >= 0; $p--) { + if (isset($this->assocMarks[$p])) { + if ($this->assocMarks[$p]['ligPos'] >= ($pos + $n)) { + $this->assocMarks[$p]['ligPos'] += $n; + } + if ($p >= ($pos + $n)) { + $tmp = $this->assocMarks[$p]; + unset($this->assocMarks[$p]); + $this->assocMarks[($p + $n)] = $tmp; + } + } + } + } elseif ($n < 1) { // glyphs removed + $nrem = -$n; + // Update position of pre-existing Ligatures and associated Marks + for ($p = ($pos + 1); $p < count($this->OTLdata); $p++) { + if (isset($this->assocLigs[$p])) { + $tmp = $this->assocLigs[$p]; + unset($this->assocLigs[$p]); + $this->assocLigs[($p - $nrem)] = $tmp; + } + } + for ($p = 0; $p < count($this->OTLdata); $p++) { + if (isset($this->assocMarks[$p])) { + if ($this->assocMarks[$p]['ligPos'] >= ($pos)) { + $this->assocMarks[$p]['ligPos'] -= $nrem; + } + if ($p > $pos) { + $tmp = $this->assocMarks[$p]; + unset($this->assocMarks[$p]); + $this->assocMarks[($p - $nrem)] = $tmp; + } + } + } + } + } + + function GSUBsubstitute($pos, $substitute, $Type, $GlyphPos = null) + { + + // LookupType 1: Simple Substitution Subtable : 1 to 1 + // LookupType 3: Alternate Forms : 1 to 1(n) + if ($Type == 1 || $Type == 3) { + $this->OTLdata[$pos]['uni'] = $substitute; + $this->OTLdata[$pos]['hex'] = $this->unicode_hex($substitute); + return 1; + } // LookupType 2: Multiple Substitution Subtable : 1 to n + elseif ($Type == 2) { + for ($i = 0; $i < count($substitute); $i++) { + $uni = $substitute[$i]; + $newOTLdata[$i] = []; + $newOTLdata[$i]['uni'] = $uni; + $newOTLdata[$i]['hex'] = $this->unicode_hex($uni); + + + // Get types of new inserted chars - or replicate type of char being replaced + // $bt = Ucdn::get_bidi_class($uni); + // if (!$bt) { + $bt = $this->OTLdata[$pos]['bidi_type']; + // } + + if (strpos($this->GlyphClassMarks, $newOTLdata[$i]['hex']) !== false) { + $gp = 'M'; + } elseif ($uni == 32) { + $gp = 'S'; + } else { + $gp = 'C'; + } + + // Need to update matra_type ??? of new glyphs inserted ??????????????????????????????????????? + + $newOTLdata[$i]['bidi_type'] = $bt; + $newOTLdata[$i]['group'] = $gp; + + // Need to update details of new glyphs inserted + $newOTLdata[$i]['general_category'] = $this->OTLdata[$pos]['general_category']; + + if ($this->shaper == 'I' || $this->shaper == 'K' || $this->shaper == 'S') { + $newOTLdata[$i]['indic_category'] = $this->OTLdata[$pos]['indic_category']; + $newOTLdata[$i]['indic_position'] = $this->OTLdata[$pos]['indic_position']; + } elseif ($this->shaper == 'M') { + $newOTLdata[$i]['myanmar_category'] = $this->OTLdata[$pos]['myanmar_category']; + $newOTLdata[$i]['myanmar_position'] = $this->OTLdata[$pos]['myanmar_position']; + } + if (isset($this->OTLdata[$pos]['mask'])) { + $newOTLdata[$i]['mask'] = $this->OTLdata[$pos]['mask']; + } + if (isset($this->OTLdata[$pos]['syllable'])) { + $newOTLdata[$i]['syllable'] = $this->OTLdata[$pos]['syllable']; + } + } + if ($this->shaper == 'K' || $this->shaper == 'T' || $this->shaper == 'L') { + if ($this->OTLdata[$pos]['wordend']) { + $newOTLdata[count($substitute) - 1]['wordend'] = true; + } + } + + array_splice($this->OTLdata, $pos, 1, $newOTLdata); // Replace 1 with n + // Update position of Ligatures and associated Marks + // count($substitute)-1 is the number of glyphs added + $nadd = count($substitute) - 1; + $this->_updateLigatureMarks($pos, $nadd); + return count($substitute); + } // LookupType 4: Ligature Substitution Subtable : n to 1 + elseif ($Type == 4) { + // Create Ligatures and associated Marks + $firstGlyph = $this->OTLdata[$pos]['hex']; + + // If all components of the ligature are marks (and in the same syllable), we call this a mark ligature. + $contains_marks = false; + $contains_nonmarks = false; + if (isset($this->OTLdata[$pos]['syllable'])) { + $current_syllable = $this->OTLdata[$pos]['syllable']; + } else { + $current_syllable = 0; + } + for ($i = 0; $i < count($GlyphPos); $i++) { + // If subsequent components are not Marks as well - don't ligate + $unistr = $this->OTLdata[$GlyphPos[$i]]['hex']; + if ($this->restrictToSyllable && isset($this->OTLdata[$GlyphPos[$i]]['syllable']) && $this->OTLdata[$GlyphPos[$i]]['syllable'] != $current_syllable) { + return 0; + } + if (strpos($this->GlyphClassMarks, $unistr) !== false) { + $contains_marks = true; + } else { + $contains_nonmarks = true; + } + } + if ($contains_marks && !$contains_nonmarks) { + // Mark Ligature (all components are Marks) + $firstMarkAssoc = ''; + if (isset($this->assocMarks[$pos])) { + $firstMarkAssoc = $this->assocMarks[$pos]; + } + // If all components of the ligature are marks, we call this a mark ligature. + for ($i = 1; $i < count($GlyphPos); $i++) { + // If subsequent components are not Marks as well - don't ligate + // $unistr = $this->OTLdata[$GlyphPos[$i]]['hex']; + // if (strpos($this->GlyphClassMarks, $unistr )===false) { return; } + + $nextMarkAssoc = ''; + if (isset($this->assocMarks[$GlyphPos[$i]])) { + $nextMarkAssoc = $this->assocMarks[$GlyphPos[$i]]; + } + // If first component was attached to a previous ligature component, + // all subsequent components should be attached to the same ligature + // component, otherwise we shouldn't ligate them. + // If first component was NOT attached to a previous ligature component, + // all subsequent components should also NOT be attached to any ligature component, + if ($firstMarkAssoc != $nextMarkAssoc) { + // unless they are attached to the first component itself! + // if (!is_array($nextMarkAssoc) || $nextMarkAssoc['ligPos']!= $pos) { return; } + // Update/Edit - In test with myanmartext font + // င်္က္ကျြွေိ + // => Lookup 17 E003 E066B E05A 102D + // E003 and 102D should form a mark ligature, but 102D is already associated with (non-mark) ligature E05A + // So instead of disallowing the mark ligature to form, just dissociate... + if (!is_array($nextMarkAssoc) || $nextMarkAssoc['ligPos'] != $pos) { + unset($this->assocMarks[$GlyphPos[$i]]); + } + } + } + + /* + * - If it *is* a mark ligature, we don't allocate a new ligature id, and leave + * the ligature to keep its old ligature id. This will allow it to attach to + * a base ligature in GPOS. Eg. if the sequence is: LAM,LAM,SHADDA,FATHA,HEH, + * and LAM,LAM,HEH form a ligature, they will leave SHADDA and FATHA wit a + * ligature id and component value of 2. Then if SHADDA,FATHA form a ligature + * later, we don't want them to lose their ligature id/component, otherwise + * GPOS will fail to correctly position the mark ligature on top of the + * LAM,LAM,HEH ligature. + */ + // So if is_array($firstMarkAssoc) - the new (Mark) ligature should keep this association + + $lastPos = $GlyphPos[(count($GlyphPos) - 1)]; + } else { + /* + * - Ligatures cannot be formed across glyphs attached to different components + * of previous ligatures. Eg. the sequence is LAM,SHADDA,LAM,FATHA,HEH, and + * LAM,LAM,HEH form a ligature, leaving SHADDA,FATHA next to eachother. + * However, it would be wrong to ligate that SHADDA,FATHA sequence. + * There is an exception to this: If a ligature tries ligating with marks that + * belong to it itself, go ahead, assuming that the font designer knows what + * they are doing (otherwise it can break Indic stuff when a matra wants to + * ligate with a conjunct...) + */ + + /* + * - If a ligature is formed of components that some of which are also ligatures + * themselves, and those ligature components had marks attached to *their* + * components, we have to attach the marks to the new ligature component + * positions! Now *that*'s tricky! And these marks may be following the + * last component of the whole sequence, so we should loop forward looking + * for them and update them. + * + * Eg. the sequence is LAM,LAM,SHADDA,FATHA,HEH, and the font first forms a + * 'calt' ligature of LAM,HEH, leaving the SHADDA and FATHA with a ligature + * id and component == 1. Now, during 'liga', the LAM and the LAM-HEH ligature + * form a LAM-LAM-HEH ligature. We need to reassign the SHADDA and FATHA to + * the new ligature with a component value of 2. + * + * This in fact happened to a font... See: + * https://bugzilla.gnome.org/show_bug.cgi?id=437633 + */ + + $currComp = 0; + for ($i = 0; $i < count($GlyphPos); $i++) { + if ($i > 0 && isset($this->assocLigs[$GlyphPos[$i]])) { // One of the other components is already a ligature + $nc = $this->assocLigs[$GlyphPos[$i]]; + } else { + $nc = 1; + } + // While next char to right is a mark (but not the next matched glyph) + // ?? + also include a Mark Ligature here + $ic = 1; + while ((($i == count($GlyphPos) - 1) || (isset($GlyphPos[$i + 1]) && ($GlyphPos[$i] + $ic) < $GlyphPos[$i + 1])) && isset($this->OTLdata[($GlyphPos[$i] + $ic)]) && strpos($this->GlyphClassMarks, $this->OTLdata[($GlyphPos[$i] + $ic)]['hex']) !== false) { + $newComp = $currComp; + if (isset($this->assocMarks[$GlyphPos[$i] + $ic])) { // One of the inbetween Marks is already associated with a Lig + // OK as long as it is associated with the current Lig + // if ($this->assocMarks[($GlyphPos[$i]+$ic)]['ligPos'] != ($GlyphPos[$i]+$ic)) { die("Problem #1"); } + $newComp += $this->assocMarks[($GlyphPos[$i] + $ic)]['compID']; + } + $this->assocMarks[($GlyphPos[$i] + $ic)] = ['compID' => $newComp, 'ligPos' => $pos]; + $ic++; + } + $currComp += $nc; + } + $lastPos = $GlyphPos[(count($GlyphPos) - 1)] + $ic - 1; + $this->assocLigs[$pos] = $currComp; // Number of components in new Ligature + } + + // Now remove the unwanted glyphs and associated metadata + $newOTLdata[0] = []; + + // Get types of new inserted chars - or replicate type of char being replaced + // $bt = Ucdn::get_bidi_class($substitute); + // if (!$bt) { + $bt = $this->OTLdata[$pos]['bidi_type']; + // } + + if (strpos($this->GlyphClassMarks, $this->unicode_hex($substitute)) !== false) { + $gp = 'M'; + } elseif ($substitute == 32) { + $gp = 'S'; + } else { + $gp = 'C'; + } + + // Need to update details of new glyphs inserted + $newOTLdata[0]['general_category'] = $this->OTLdata[$pos]['general_category']; + + $newOTLdata[0]['bidi_type'] = $bt; + $newOTLdata[0]['group'] = $gp; + + // KASHIDA: If forming a ligature when the last component was identified as a kashida point (final form) + // If previous/first component of ligature is a medial form, then keep this as a kashida point + // TEST (Arabic Typesetting) يَنتُم + $ka = 0; + if (isset($this->OTLdata[$GlyphPos[(count($GlyphPos) - 1)]]['GPOSinfo']['kashida'])) { + $ka = $this->OTLdata[$GlyphPos[(count($GlyphPos) - 1)]]['GPOSinfo']['kashida']; + } + if ($ka == 1 && isset($this->OTLdata[$pos]['form']) && $this->OTLdata[$pos]['form'] == 3) { + $newOTLdata[0]['GPOSinfo']['kashida'] = $ka; + } + + $newOTLdata[0]['uni'] = $substitute; + $newOTLdata[0]['hex'] = $this->unicode_hex($substitute); + + if ($this->shaper == 'I' || $this->shaper == 'K' || $this->shaper == 'S') { + $newOTLdata[0]['indic_category'] = $this->OTLdata[$pos]['indic_category']; + $newOTLdata[0]['indic_position'] = $this->OTLdata[$pos]['indic_position']; + } elseif ($this->shaper == 'M') { + $newOTLdata[0]['myanmar_category'] = $this->OTLdata[$pos]['myanmar_category']; + $newOTLdata[0]['myanmar_position'] = $this->OTLdata[$pos]['myanmar_position']; + } + if (isset($this->OTLdata[$pos]['mask'])) { + $newOTLdata[0]['mask'] = $this->OTLdata[$pos]['mask']; + } + if (isset($this->OTLdata[$pos]['syllable'])) { + $newOTLdata[0]['syllable'] = $this->OTLdata[$pos]['syllable']; + } + + $newOTLdata[0]['is_ligature'] = true; + + + array_splice($this->OTLdata, $pos, 1, $newOTLdata); + + // GlyphPos contains array of arr_pos to set null - not necessarily contiguous + // +- Remove any assocMarks or assocLigs from the main components (the ones that are deleted) + for ($i = count($GlyphPos) - 1; $i > 0; $i--) { + $gpos = $GlyphPos[$i]; + array_splice($this->OTLdata, $gpos, 1); + unset($this->assocLigs[$gpos]); + unset($this->assocMarks[$gpos]); + } + // $this->assocLigs = array(); // Ligatures[$posarr lpos] => nc + // $this->assocMarks = array(); // assocMarks[$posarr mpos] => array(compID, ligPos) + // Update position of pre-existing Ligatures and associated Marks + // Start after first GlyphPos + // count($GlyphPos)-1 is the number of glyphs removed from string + for ($p = ($GlyphPos[0] + 1); $p < (count($this->OTLdata) + count($GlyphPos) - 1); $p++) { + $nrem = 0; // Number of Glyphs removed at this point in the string + for ($i = 0; $i < count($GlyphPos); $i++) { + if ($i > 0 && $p > $GlyphPos[$i]) { + $nrem++; + } + } + if (isset($this->assocLigs[$p])) { + $tmp = $this->assocLigs[$p]; + unset($this->assocLigs[$p]); + $this->assocLigs[($p - $nrem)] = $tmp; + } + if (isset($this->assocMarks[$p])) { + $tmp = $this->assocMarks[$p]; + unset($this->assocMarks[$p]); + if ($tmp['ligPos'] > $GlyphPos[0]) { + $tmp['ligPos'] -= $nrem; + } + $this->assocMarks[($p - $nrem)] = $tmp; + } + } + return 1; + } else { + return 0; + } + } + + //////////////////////////////////////////////////////////////// + ////////// ARABIC ///////////////////////////////// + //////////////////////////////////////////////////////////////// + private function arabic_initialise() + { + // cf. http://unicode.org/Public/UNIDATA/ArabicShaping.txt + // http://unicode.org/Public/UNIDATA/extracted/DerivedJoiningType.txt + // JOIN TO FOLLOWING LETTER IN LOGICAL ORDER (i.e. AS INITIAL/MEDIAL FORM) = Unicode Left-Joining (+ Dual-Joining + Join_Causing 00640) + $this->arabLeftJoining = [ + 0x0620 => 1, 0x0626 => 1, 0x0628 => 1, 0x062A => 1, 0x062B => 1, 0x062C => 1, 0x062D => 1, 0x062E => 1, + 0x0633 => 1, 0x0634 => 1, 0x0635 => 1, 0x0636 => 1, 0x0637 => 1, 0x0638 => 1, 0x0639 => 1, 0x063A => 1, + 0x063B => 1, 0x063C => 1, 0x063D => 1, 0x063E => 1, 0x063F => 1, 0x0640 => 1, 0x0641 => 1, 0x0642 => 1, + 0x0643 => 1, 0x0644 => 1, 0x0645 => 1, 0x0646 => 1, 0x0647 => 1, 0x0649 => 1, 0x064A => 1, 0x066E => 1, + 0x066F => 1, 0x0678 => 1, 0x0679 => 1, 0x067A => 1, 0x067B => 1, 0x067C => 1, 0x067D => 1, 0x067E => 1, + 0x067F => 1, 0x0680 => 1, 0x0681 => 1, 0x0682 => 1, 0x0683 => 1, 0x0684 => 1, 0x0685 => 1, 0x0686 => 1, + 0x0687 => 1, 0x069A => 1, 0x069B => 1, 0x069C => 1, 0x069D => 1, 0x069E => 1, 0x069F => 1, 0x06A0 => 1, + 0x06A1 => 1, 0x06A2 => 1, 0x06A3 => 1, 0x06A4 => 1, 0x06A5 => 1, 0x06A6 => 1, 0x06A7 => 1, 0x06A8 => 1, + 0x06A9 => 1, 0x06AA => 1, 0x06AB => 1, 0x06AC => 1, 0x06AD => 1, 0x06AE => 1, 0x06AF => 1, 0x06B0 => 1, + 0x06B1 => 1, 0x06B2 => 1, 0x06B3 => 1, 0x06B4 => 1, 0x06B5 => 1, 0x06B6 => 1, 0x06B7 => 1, 0x06B8 => 1, + 0x06B9 => 1, 0x06BA => 1, 0x06BB => 1, 0x06BC => 1, 0x06BD => 1, 0x06BE => 1, 0x06BF => 1, 0x06C1 => 1, + 0x06C2 => 1, 0x06CC => 1, 0x06CE => 1, 0x06D0 => 1, 0x06D1 => 1, 0x06FA => 1, 0x06FB => 1, 0x06FC => 1, + 0x06FF => 1, + /* Arabic Supplement */ + 0x0750 => 1, 0x0751 => 1, 0x0752 => 1, 0x0753 => 1, 0x0754 => 1, 0x0755 => 1, 0x0756 => 1, 0x0757 => 1, + 0x0758 => 1, 0x075C => 1, 0x075D => 1, 0x075E => 1, 0x075F => 1, 0x0760 => 1, 0x0761 => 1, 0x0762 => 1, + 0x0763 => 1, 0x0764 => 1, 0x0765 => 1, 0x0766 => 1, 0x0767 => 1, 0x0768 => 1, 0x0769 => 1, 0x076A => 1, + 0x076D => 1, 0x076E => 1, 0x076F => 1, 0x0770 => 1, 0x0772 => 1, 0x0775 => 1, 0x0776 => 1, 0x0777 => 1, + 0x077A => 1, 0x077B => 1, 0x077C => 1, 0x077D => 1, 0x077E => 1, 0x077F => 1, + /* Extended Arabic */ + 0x08A0 => 1, 0x08A2 => 1, 0x08A3 => 1, 0x08A4 => 1, 0x08A5 => 1, 0x08A6 => 1, 0x08A7 => 1, 0x08A8 => 1, + 0x08A9 => 1, + /* 'syrc' Syriac */ + 0x0712 => 1, 0x0713 => 1, 0x0714 => 1, 0x071A => 1, 0x071B => 1, 0x071C => 1, 0x071D => 1, 0x071F => 1, + 0x0720 => 1, 0x0721 => 1, 0x0722 => 1, 0x0723 => 1, 0x0724 => 1, 0x0725 => 1, 0x0726 => 1, 0x0727 => 1, + 0x0729 => 1, 0x072B => 1, 0x072D => 1, 0x072E => 1, 0x074E => 1, 0x074F => 1, + /* N'Ko */ + 0x07CA => 1, 0x07CB => 1, 0x07CC => 1, 0x07CD => 1, 0x07CE => 1, 0x07CF => 1, 0x07D0 => 1, 0x07D1 => 1, + 0x07D2 => 1, 0x07D3 => 1, 0x07D4 => 1, 0x07D5 => 1, 0x07D6 => 1, 0x07D7 => 1, 0x07D8 => 1, 0x07D9 => 1, + 0x07DA => 1, 0x07DB => 1, 0x07DC => 1, 0x07DD => 1, 0x07DE => 1, 0x07DF => 1, 0x07E0 => 1, 0x07E1 => 1, + 0x07E2 => 1, 0x07E3 => 1, 0x07E4 => 1, 0x07E5 => 1, 0x07E6 => 1, 0x07E7 => 1, 0x07E8 => 1, 0x07E9 => 1, + 0x07EA => 1, 0x07FA => 1, + /* Mandaic */ + 0x0841 => 1, 0x0842 => 1, 0x0843 => 1, 0x0844 => 1, 0x0845 => 1, 0x0847 => 1, 0x0848 => 1, 0x084A => 1, + 0x084B => 1, 0x084C => 1, 0x084D => 1, 0x084E => 1, 0x0850 => 1, 0x0851 => 1, 0x0852 => 1, 0x0853 => 1, + 0x0855 => 1, + /* ZWJ U+200D */ + 0x0200D => 1]; + + /* JOIN TO PREVIOUS LETTER IN LOGICAL ORDER (i.e. AS FINAL/MEDIAL FORM) = Unicode Right-Joining (+ Dual-Joining + Join_Causing) */ + $this->arabRightJoining = [ + 0x0620 => 1, 0x0622 => 1, 0x0623 => 1, 0x0624 => 1, 0x0625 => 1, 0x0626 => 1, 0x0627 => 1, 0x0628 => 1, + 0x0629 => 1, 0x062A => 1, 0x062B => 1, 0x062C => 1, 0x062D => 1, 0x062E => 1, 0x062F => 1, 0x0630 => 1, + 0x0631 => 1, 0x0632 => 1, 0x0633 => 1, 0x0634 => 1, 0x0635 => 1, 0x0636 => 1, 0x0637 => 1, 0x0638 => 1, + 0x0639 => 1, 0x063A => 1, 0x063B => 1, 0x063C => 1, 0x063D => 1, 0x063E => 1, 0x063F => 1, 0x0640 => 1, + 0x0641 => 1, 0x0642 => 1, 0x0643 => 1, 0x0644 => 1, 0x0645 => 1, 0x0646 => 1, 0x0647 => 1, 0x0648 => 1, + 0x0649 => 1, 0x064A => 1, 0x066E => 1, 0x066F => 1, 0x0671 => 1, 0x0672 => 1, 0x0673 => 1, 0x0675 => 1, + 0x0676 => 1, 0x0677 => 1, 0x0678 => 1, 0x0679 => 1, 0x067A => 1, 0x067B => 1, 0x067C => 1, 0x067D => 1, + 0x067E => 1, 0x067F => 1, 0x0680 => 1, 0x0681 => 1, 0x0682 => 1, 0x0683 => 1, 0x0684 => 1, 0x0685 => 1, + 0x0686 => 1, 0x0687 => 1, 0x0688 => 1, 0x0689 => 1, 0x068A => 1, 0x068B => 1, 0x068C => 1, 0x068D => 1, + 0x068E => 1, 0x068F => 1, 0x0690 => 1, 0x0691 => 1, 0x0692 => 1, 0x0693 => 1, 0x0694 => 1, 0x0695 => 1, + 0x0696 => 1, 0x0697 => 1, 0x0698 => 1, 0x0699 => 1, 0x069A => 1, 0x069B => 1, 0x069C => 1, 0x069D => 1, + 0x069E => 1, 0x069F => 1, 0x06A0 => 1, 0x06A1 => 1, 0x06A2 => 1, 0x06A3 => 1, 0x06A4 => 1, 0x06A5 => 1, + 0x06A6 => 1, 0x06A7 => 1, 0x06A8 => 1, 0x06A9 => 1, 0x06AA => 1, 0x06AB => 1, 0x06AC => 1, 0x06AD => 1, + 0x06AE => 1, 0x06AF => 1, 0x06B0 => 1, 0x06B1 => 1, 0x06B2 => 1, 0x06B3 => 1, 0x06B4 => 1, 0x06B5 => 1, + 0x06B6 => 1, 0x06B7 => 1, 0x06B8 => 1, 0x06B9 => 1, 0x06BA => 1, 0x06BB => 1, 0x06BC => 1, 0x06BD => 1, + 0x06BE => 1, 0x06BF => 1, 0x06C0 => 1, 0x06C1 => 1, 0x06C2 => 1, 0x06C3 => 1, 0x06C4 => 1, 0x06C5 => 1, + 0x06C6 => 1, 0x06C7 => 1, 0x06C8 => 1, 0x06C9 => 1, 0x06CA => 1, 0x06CB => 1, 0x06CC => 1, 0x06CD => 1, + 0x06CE => 1, 0x06CF => 1, 0x06D0 => 1, 0x06D1 => 1, 0x06D2 => 1, 0x06D3 => 1, 0x06D5 => 1, 0x06EE => 1, + 0x06EF => 1, 0x06FA => 1, 0x06FB => 1, 0x06FC => 1, 0x06FF => 1, + /* Arabic Supplement */ + 0x0750 => 1, 0x0751 => 1, 0x0752 => 1, 0x0753 => 1, 0x0754 => 1, 0x0755 => 1, 0x0756 => 1, 0x0757 => 1, + 0x0758 => 1, 0x0759 => 1, 0x075A => 1, 0x075B => 1, 0x075C => 1, 0x075D => 1, 0x075E => 1, 0x075F => 1, + 0x0760 => 1, 0x0761 => 1, 0x0762 => 1, 0x0763 => 1, 0x0764 => 1, 0x0765 => 1, 0x0766 => 1, 0x0767 => 1, + 0x0768 => 1, 0x0769 => 1, 0x076A => 1, 0x076B => 1, 0x076C => 1, 0x076D => 1, 0x076E => 1, 0x076F => 1, + 0x0770 => 1, 0x0771 => 1, 0x0772 => 1, 0x0773 => 1, 0x0774 => 1, 0x0775 => 1, 0x0776 => 1, 0x0777 => 1, + 0x0778 => 1, 0x0779 => 1, 0x077A => 1, 0x077B => 1, 0x077C => 1, 0x077D => 1, 0x077E => 1, 0x077F => 1, + /* Extended Arabic */ + 0x08A0 => 1, 0x08A2 => 1, 0x08A3 => 1, 0x08A4 => 1, 0x08A5 => 1, 0x08A6 => 1, 0x08A7 => 1, 0x08A8 => 1, + 0x08A9 => 1, 0x08AA => 1, 0x08AB => 1, 0x08AC => 1, + /* 'syrc' Syriac */ + 0x0710 => 1, 0x0712 => 1, 0x0713 => 1, 0x0714 => 1, 0x0715 => 1, 0x0716 => 1, 0x0717 => 1, 0x0718 => 1, + 0x0719 => 1, 0x071A => 1, 0x071B => 1, 0x071C => 1, 0x071D => 1, 0x071E => 1, 0x071F => 1, 0x0720 => 1, + 0x0721 => 1, 0x0722 => 1, 0x0723 => 1, 0x0724 => 1, 0x0725 => 1, 0x0726 => 1, 0x0727 => 1, 0x0728 => 1, + 0x0729 => 1, 0x072A => 1, 0x072B => 1, 0x072C => 1, 0x072D => 1, 0x072E => 1, 0x072F => 1, 0x074D => 1, + 0x074E => 1, 0x074F, + /* N'Ko */ + 0x07CA => 1, 0x07CB => 1, 0x07CC => 1, 0x07CD => 1, 0x07CE => 1, 0x07CF => 1, 0x07D0 => 1, 0x07D1 => 1, + 0x07D2 => 1, 0x07D3 => 1, 0x07D4 => 1, 0x07D5 => 1, 0x07D6 => 1, 0x07D7 => 1, 0x07D8 => 1, 0x07D9 => 1, + 0x07DA => 1, 0x07DB => 1, 0x07DC => 1, 0x07DD => 1, 0x07DE => 1, 0x07DF => 1, 0x07E0 => 1, 0x07E1 => 1, + 0x07E2 => 1, 0x07E3 => 1, 0x07E4 => 1, 0x07E5 => 1, 0x07E6 => 1, 0x07E7 => 1, 0x07E8 => 1, 0x07E9 => 1, + 0x07EA => 1, 0x07FA => 1, + /* Mandaic */ + 0x0841 => 1, 0x0842 => 1, 0x0843 => 1, 0x0844 => 1, 0x0845 => 1, 0x0847 => 1, 0x0848 => 1, 0x084A => 1, + 0x084B => 1, 0x084C => 1, 0x084D => 1, 0x084E => 1, 0x0850 => 1, 0x0851 => 1, 0x0852 => 1, 0x0853 => 1, + 0x0855 => 1, + 0x0840 => 1, 0x0846 => 1, 0x0849 => 1, 0x084F => 1, 0x0854 => 1, /* Right joining */ + /* ZWJ U+200D */ + 0x0200D => 1]; + + /* VOWELS = TRANSPARENT-JOINING = Unicode Transparent-Joining type (not just vowels) */ + $this->arabTransparent = [ + 0x0610 => 1, 0x0611 => 1, 0x0612 => 1, 0x0613 => 1, 0x0614 => 1, 0x0615 => 1, 0x0616 => 1, 0x0617 => 1, + 0x0618 => 1, 0x0619 => 1, 0x061A => 1, 0x064B => 1, 0x064C => 1, 0x064D => 1, 0x064E => 1, 0x064F => 1, + 0x0650 => 1, 0x0651 => 1, 0x0652 => 1, 0x0653 => 1, 0x0654 => 1, 0x0655 => 1, 0x0656 => 1, 0x0657 => 1, + 0x0658 => 1, 0x0659 => 1, 0x065A => 1, 0x065B => 1, 0x065C => 1, 0x065D => 1, 0x065E => 1, 0x065F => 1, + 0x0670 => 1, 0x06D6 => 1, 0x06D7 => 1, 0x06D8 => 1, 0x06D9 => 1, 0x06DA => 1, 0x06DB => 1, 0x06DC => 1, + 0x06DF => 1, 0x06E0 => 1, 0x06E1 => 1, 0x06E2 => 1, 0x06E3 => 1, 0x06E4 => 1, 0x06E7 => 1, 0x06E8 => 1, + 0x06EA => 1, 0x06EB => 1, 0x06EC => 1, 0x06ED => 1, + /* Extended Arabic */ + 0x08E4 => 1, 0x08E5 => 1, 0x08E6 => 1, 0x08E7 => 1, 0x08E8 => 1, 0x08E9 => 1, 0x08EA => 1, 0x08EB => 1, + 0x08EC => 1, 0x08ED => 1, 0x08EE => 1, 0x08EF => 1, 0x08F0 => 1, 0x08F1 => 1, 0x08F2 => 1, 0x08F3 => 1, + 0x08F4 => 1, 0x08F5 => 1, 0x08F6 => 1, 0x08F7 => 1, 0x08F8 => 1, 0x08F9 => 1, 0x08FA => 1, 0x08FB => 1, + 0x08FC => 1, 0x08FD => 1, 0x08FE => 1, + /* Arabic ligatures in presentation form (converted in 'ccmp' in e.g. Arial and Times ? need to add others in this range) */ + 0xFC5E => 1, 0xFC5F => 1, 0xFC60 => 1, 0xFC61 => 1, 0xFC62 => 1, + /* 'syrc' Syriac */ + 0x070F => 1, 0x0711 => 1, 0x0730 => 1, 0x0731 => 1, 0x0732 => 1, 0x0733 => 1, 0x0734 => 1, 0x0735 => 1, + 0x0736 => 1, 0x0737 => 1, 0x0738 => 1, 0x0739 => 1, 0x073A => 1, 0x073B => 1, 0x073C => 1, 0x073D => 1, + 0x073E => 1, 0x073F => 1, 0x0740 => 1, 0x0741 => 1, 0x0742 => 1, 0x0743 => 1, 0x0744 => 1, 0x0745 => 1, + 0x0746 => 1, 0x0747 => 1, 0x0748 => 1, 0x0749 => 1, 0x074A => 1, + /* N'Ko */ + 0x07EB => 1, 0x07EC => 1, 0x07ED => 1, 0x07EE => 1, 0x07EF => 1, 0x07F0 => 1, 0x07F1 => 1, 0x07F2 => 1, + 0x07F3 => 1, + /* Mandaic */ + 0x0859 => 1, 0x085A => 1, 0x085B => 1, + ]; + } + + private function arabic_shaper($usetags, $scriptTag) + { + $chars = []; + for ($i = 0; $i < count($this->OTLdata); $i++) { + $chars[] = $this->OTLdata[$i]['hex']; + } + + $crntChar = null; + $prevChar = null; + $nextChar = null; + $output = []; + $max = count($chars); + for ($i = $max - 1; $i >= 0; $i--) { + $crntChar = $chars[$i]; + if ($i > 0) { + $prevChar = hexdec($chars[$i - 1]); + } else { + $prevChar = null; + } + if ($prevChar && isset($this->arabTransparentJoin[$prevChar]) && isset($chars[$i - 2])) { + $prevChar = hexdec($chars[$i - 2]); + if ($prevChar && isset($this->arabTransparentJoin[$prevChar]) && isset($chars[$i - 3])) { + $prevChar = hexdec($chars[$i - 3]); + if ($prevChar && isset($this->arabTransparentJoin[$prevChar]) && isset($chars[$i - 4])) { + $prevChar = hexdec($chars[$i - 4]); + } + } + } + if ($crntChar && isset($this->arabTransparentJoin[hexdec($crntChar)])) { + // If next_char = RightJoining && prev_char = LeftJoining: + if (isset($chars[$i + 1]) && $chars[$i + 1] && isset($this->arabRightJoining[hexdec($chars[$i + 1])]) && $prevChar && isset($this->arabLeftJoining[$prevChar])) { + $output[] = $this->get_arab_glyphs($crntChar, 1, $chars, $i, $scriptTag, $usetags); // <final> form + } else { + $output[] = $this->get_arab_glyphs($crntChar, 0, $chars, $i, $scriptTag, $usetags); // <isolated> form + } + continue; + } + if (hexdec($crntChar) < 128) { + $output[] = [$crntChar, 0]; + $nextChar = $crntChar; + continue; + } + // 0=ISOLATED FORM :: 1=FINAL :: 2=INITIAL :: 3=MEDIAL + $form = 0; + if ($prevChar && isset($this->arabLeftJoining[$prevChar])) { + $form++; + } + if ($nextChar && isset($this->arabRightJoining[hexdec($nextChar)])) { + $form += 2; + } + $output[] = $this->get_arab_glyphs($crntChar, $form, $chars, $i, $scriptTag, $usetags); + $nextChar = $crntChar; + } + $ra = array_reverse($output); + for ($i = 0; $i < count($this->OTLdata); $i++) { + $this->OTLdata[$i]['uni'] = hexdec($ra[$i][0]); + $this->OTLdata[$i]['hex'] = $ra[$i][0]; + $this->OTLdata[$i]['form'] = $ra[$i][1]; // Actaul form substituted 0=ISOLATED FORM :: 1=FINAL :: 2=INITIAL :: 3=MEDIAL + } + } + + private function get_arab_glyphs($char, $type, &$chars, $i, $scriptTag, $usetags) + { + // Optional Feature settings // doesn't control Syriac at present + if (($type === 0 && strpos($usetags, 'isol') === false) || ($type === 1 && strpos($usetags, 'fina') === false) || ($type === 2 && strpos($usetags, 'init') === false) || ($type === 3 && strpos($usetags, 'medi') === false)) { + return [$char, 0]; + } + + // 0=ISOLATED FORM :: 1=FINAL :: 2=INITIAL :: 3=MEDIAL (:: 4=MED2 :: 5=FIN2 :: 6=FIN3) + $retk = -1; + // Alaph 00710 in Syriac + if ($scriptTag == 'syrc' && $char == '00710') { + // if there is a preceding (base?) character *** should search back to previous base - ignoring vowels and change $n + // set $n as the position of the last base; for now we'll just do this: + $n = $i - 1; + // if the preceding (base) character cannot be joined to + // not in $this->arabLeftJoining i.e. not a char which can join to the next one + if (isset($chars[$n]) && isset($this->arabLeftJoining[hexdec($chars[$n])])) { + // if in the middle of Syriac words + if (isset($chars[$i + 1]) && preg_match('/[\x{0700}-\x{0745}]/u', UtfString::code2utf(hexdec($chars[$n]))) && preg_match('/[\x{0700}-\x{0745}]/u', UtfString::code2utf(hexdec($chars[$i + 1]))) && isset($this->arabGlyphs[$char][4])) { + $retk = 4; + } // if at the end of Syriac words + elseif (!isset($chars[$i + 1]) || !preg_match('/[\x{0700}-\x{0745}]/u', UtfString::code2utf(hexdec($chars[$i + 1])))) { + // if preceding base character IS (00715|00716|0072A) + if (strpos('0715|0716|072A', $chars[$n]) !== false && isset($this->arabGlyphs[$char][6])) { + $retk = 6; + } // elseif preceding base character is NOT (00715|00716|0072A) + elseif (isset($this->arabGlyphs[$char][5])) { + $retk = 5; + } + } + } + if ($retk != -1) { + return [$this->arabGlyphs[$char][$retk], $retk]; + } else { + return [$char, 0]; + } + } + + if (($type > 0 || $type === 0) && isset($this->arabGlyphs[$char][$type])) { + $retk = $type; + } elseif ($type == 3 && isset($this->arabGlyphs[$char][1])) { // if <medial> not defined, but <final>, return <final> + $retk = 1; + } elseif ($type == 2 && isset($this->arabGlyphs[$char][0])) { // if <initial> not defined, but <isolated>, return <isolated> + $retk = 0; + } + if ($retk != -1) { + $match = true; + // If GSUB includes a Backtrack or Lookahead condition (e.g. font ArabicTypesetting) + if (isset($this->arabGlyphs[$char]['prel'][$retk]) && $this->arabGlyphs[$char]['prel'][$retk]) { + $ig = 1; + foreach ($this->arabGlyphs[$char]['prel'][$retk] as $k => $v) { // $k starts 0, 1... + if (!isset($chars[$i - $ig - $k])) { + $match = false; + } elseif (strpos($v, $chars[$i - $ig - $k]) === false) { + while (strpos($this->arabGlyphs[$char]['ignore'][$retk], $chars[$i - $ig - $k]) !== false) { // ignore + $ig++; + } + if (!isset($chars[$i - $ig - $k])) { + $match = false; + } elseif (strpos($v, $chars[$i - $ig - $k]) === false) { + $match = false; + } + } + } + } + if (isset($this->arabGlyphs[$char]['postl'][$retk]) && $this->arabGlyphs[$char]['postl'][$retk]) { + $ig = 1; + foreach ($this->arabGlyphs[$char]['postl'][$retk] as $k => $v) { // $k starts 0, 1... + if (!isset($chars[$i + $ig + $k])) { + $match = false; + } elseif (strpos($v, $chars[$i + $ig + $k]) === false) { + while (strpos($this->arabGlyphs[$char]['ignore'][$retk], $chars[$i + $ig + $k]) !== false) { // ignore + $ig++; + } + if (!isset($chars[$i + $ig + $k])) { + $match = false; + } elseif (strpos($v, $chars[$i + $ig + $k]) === false) { + $match = false; + } + } + } + } + if ($match) { + return [$this->arabGlyphs[$char][$retk], $retk]; + } else { + return [$char, 0]; + } + } else { + return [$char, 0]; + } + } + + //////////////////////////////////////////////////////////////// + ///////////////// LINE BREAKING /////////////////////// + //////////////////////////////////////////////////////////////// + ///////////// TIBETAN LINE BREAKING /////////////////// + //////////////////////////////////////////////////////////////// + // Sets $this->OTLdata[$i]['wordend']=true at possible end of word boundaries + private function tibetanLineBreaking() + { + for ($ptr = 0; $ptr < count($this->OTLdata); $ptr++) { + // Break opportunities at U+0F0B Tsheg or U=0F0D + if (isset($this->OTLdata[$ptr]['uni']) && ($this->OTLdata[$ptr]['uni'] == 0x0F0B || $this->OTLdata[$ptr]['uni'] == 0x0F0D)) { + if (isset($this->OTLdata[$ptr + 1]['uni']) && ($this->OTLdata[$ptr + 1]['uni'] == 0x0F0D || $this->OTLdata[$ptr + 1]['uni'] == 0xF0E)) { + continue; + } + // Set end of word marker in OTLdata at matchpos + $this->OTLdata[$ptr]['wordend'] = true; + } + } + } + + /** + * South East Asian Linebreaking (Thai, Khmer and Lao) using dictionary of words + * + * Sets $this->OTLdata[$i]['wordend']=true at possible end of word boundaries + */ + private function seaLineBreaking() + { + // Load Line-breaking dictionary + if (!isset($this->lbdicts[$this->shaper]) && file_exists(__DIR__ . '//data/linebrdict' . $this->shaper . '.dat')) { + $this->lbdicts[$this->shaper] = file_get_contents(__DIR__ . '//data/linebrdict' . $this->shaper . '.dat'); + } + + $dict = &$this->lbdicts[$this->shaper]; + + // Find all word boundaries and mark end of word $this->OTLdata[$i]['wordend']=true on last character + // If Thai, allow for possible suffixes (not in Lao or Khmer) + // repeater/ellision characters + // (0x0E2F); // Ellision character THAI_PAIYANNOI 0x0E2F UTF-8 0xE0 0xB8 0xAF + // (0x0E46); // Repeat character THAI_MAIYAMOK 0x0E46 UTF-8 0xE0 0xB9 0x86 + // (0x0EC6); // Repeat character LAO UTF-8 0xE0 0xBB 0x86 + + $rollover = []; + $ptr = 0; + + while ($ptr < count($this->OTLdata) - 3) { + if (count($rollover)) { + $matches = $rollover; + $rollover = []; + } else { + $matches = $this->checkwordmatch($dict, $ptr); + } + if (count($matches) == 1) { + $matchpos = $matches[0]; + // Check for repeaters - if so $matchpos++ + if (isset($this->OTLdata[$matchpos + 1]['uni']) && ($this->OTLdata[$matchpos + 1]['uni'] == 0x0E2F || $this->OTLdata[$matchpos + 1]['uni'] == 0x0E46 || $this->OTLdata[$matchpos + 1]['uni'] == 0x0EC6)) { + $matchpos++; + } + // Set end of word marker in OTLdata at matchpos + $this->OTLdata[$matchpos]['wordend'] = true; + $ptr = $matchpos + 1; + } elseif (empty($matches)) { + $ptr++; + // Move past any ASCII characters + while (isset($this->OTLdata[$ptr]['uni']) && ($this->OTLdata[$ptr]['uni'] >> 8) == 0) { + $ptr++; + } + } else { // Multiple matches + $secondmatch = false; + for ($m = count($matches) - 1; $m >= 0; $m--) { + //for ($m=0;$m<count($matches);$m++) { + $firstmatch = $matches[$m]; + $matches2 = $this->checkwordmatch($dict, $firstmatch + 1); + if (count($matches2)) { + // Set end of word marker in OTLdata at matchpos + $this->OTLdata[$firstmatch]['wordend'] = true; + $ptr = $firstmatch + 1; + $rollover = $matches2; + $secondmatch = true; + break; + } + } + if (!$secondmatch) { + // Set end of word marker in OTLdata at end of longest first match + $this->OTLdata[$matches[count($matches) - 1]]['wordend'] = true; + $ptr = $matches[count($matches) - 1] + 1; + // Move past any ASCII characters + while (isset($this->OTLdata[$ptr]['uni']) && ($this->OTLdata[$ptr]['uni'] >> 8) == 0) { + $ptr++; + } + } + } + } + } + + private function checkwordmatch(&$dict, $ptr) + { + /* + Node type: Split. + Divide at < 98 >= 98 + Offset for >= 98 == 79 (long 4-byte unsigned) + + Node type: Linear match. + Char = 97 + + Intermediate match + + Final match + */ + + $dictptr = 0; + $ok = true; + $matches = []; + while ($ok) { + $x = ord($dict[$dictptr]); + $c = $this->OTLdata[$ptr]['uni'] & 0xFF; + if ($x == static::_DICT_INTERMEDIATE_MATCH) { +//echo "DICT_INTERMEDIATE_MATCH: ".dechex($c).'<br />'; + // Do not match if next character in text is a Mark + if (isset($this->OTLdata[$ptr]['uni']) && strpos($this->GlyphClassMarks, $this->OTLdata[$ptr]['hex']) === false) { + $matches[] = $ptr - 1; + } + $dictptr++; + } elseif ($x == static::_DICT_FINAL_MATCH) { +//echo "DICT_FINAL_MATCH: ".dechex($c).'<br />'; + // Do not match if next character in text is a Mark + if (isset($this->OTLdata[$ptr]['uni']) && strpos($this->GlyphClassMarks, $this->OTLdata[$ptr]['hex']) === false) { + $matches[] = $ptr - 1; + } + return $matches; + } elseif ($x == static::_DICT_NODE_TYPE_LINEAR) { +//echo "DICT_NODE_TYPE_LINEAR: ".dechex($c).'<br />'; + $dictptr++; + $m = ord($dict[$dictptr]); + if ($c == $m) { + $ptr++; + if ($ptr > count($this->OTLdata) - 1) { + $next = ord($dict[$dictptr + 1]); + if ($next == static::_DICT_INTERMEDIATE_MATCH || $next == static::_DICT_FINAL_MATCH) { + // Do not match if next character in text is a Mark + if (isset($this->OTLdata[$ptr]['uni']) && strpos($this->GlyphClassMarks, $this->OTLdata[$ptr]['hex']) === false) { + $matches[] = $ptr - 1; + } + } + return $matches; + } + $dictptr++; + continue; + } else { +//echo "DICT_NODE_TYPE_LINEAR NOT: ".dechex($c).'<br />'; + return $matches; + } + } elseif ($x == static::_DICT_NODE_TYPE_SPLIT) { +//echo "DICT_NODE_TYPE_SPLIT ON ".dechex($d).": ".dechex($c).'<br />'; + $dictptr++; + $d = ord($dict[$dictptr]); + if ($c < $d) { + $dictptr += 5; + } else { + $dictptr++; + // Unsigned long 32-bit offset + $offset = (ord($dict[$dictptr]) * 16777216) + (ord($dict[$dictptr + 1]) << 16) + (ord($dict[$dictptr + 2]) << 8) + ord($dict[$dictptr + 3]); + $dictptr = $offset; + } + } else { +//echo "PROBLEM: ".($x).'<br />'; + $ok = false; // Something has gone wrong + } + } + + return $matches; + } + + //////////////////////////////////////////////////////////////// + ////////// GPOS /////////////////////////////////////// + //////////////////////////////////////////////////////////////// + private function _applyGPOSrules($LookupList, $is_old_spec = false) + { + foreach ($LookupList as $lu => $tag) { + $Type = $this->GPOSLookups[$lu]['Type']; + $Flag = $this->GPOSLookups[$lu]['Flag']; + $MarkFilteringSet = ''; + if (isset($this->GPOSLookups[$lu]['MarkFilteringSet'])) { + $MarkFilteringSet = $this->GPOSLookups[$lu]['MarkFilteringSet']; + } + $ptr = 0; + // Test each glyph sequentially + while ($ptr < (count($this->OTLdata))) { // whilst there is another glyph ..0064 + $currGlyph = $this->OTLdata[$ptr]['hex']; + $currGID = $this->OTLdata[$ptr]['uni']; + $shift = 1; + foreach ($this->GPOSLookups[$lu]['Subtables'] as $c => $subtable_offset) { + // NB Coverage only looks at glyphs for position 1 (esp. 7.3 and 8.3) + if (isset($this->LuCoverage[$lu][$c][$currGID])) { + // Get rules from font GPOS subtable + if (isset($this->OTLdata[$ptr]['bidi_type'])) { // No need to check bidi_type - just a check that it exists + $shift = $this->_applyGPOSsubtable($lu, $c, $ptr, $currGlyph, $currGID, ($subtable_offset - $this->GPOS_offset + $this->GSUB_length), $Type, $Flag, $MarkFilteringSet, $this->LuCoverage[$lu][$c], $tag, 0, $is_old_spec); + if ($shift) { + break; + } + } + } + } + if ($shift == 0) { + $shift = 1; + } + $ptr += $shift; + } + } + } + + ////////////////////////////////////////////////////////////////////////////////// + // GPOS Types + // Lookup Type 1: Single Adjustment Positioning Subtable Adjust position of a single glyph + // Lookup Type 2: Pair Adjustment Positioning Subtable Adjust position of a pair of glyphs + // Lookup Type 3: Cursive Attachment Positioning Subtable Attach cursive glyphs + // Lookup Type 4: MarkToBase Attachment Positioning Subtable Attach a combining mark to a base glyph + // Lookup Type 5: MarkToLigature Attachment Positioning Subtable Attach a combining mark to a ligature + // Lookup Type 6: MarkToMark Attachment Positioning Subtable Attach a combining mark to another mark + // Lookup Type 7: Contextual Positioning Subtables Position one or more glyphs in context + // Lookup Type 8: Chaining Contextual Positioning Subtable Position one or more glyphs in chained context + // Lookup Type 9: Extension positioning + ////////////////////////////////////////////////////////////////////////////////// + private function _applyGPOSvaluerecord($basepos, $Value) + { + + // If current glyph is a mark with a defined width, any XAdvance is considered to REPLACE the character Advance Width + // Test case <div style="font-family:myanmartext">င်္က္ကျြွေိ</div> + if (strpos($this->GlyphClassMarks, $this->OTLdata[$basepos]['hex']) !== false) { + $cw = round($this->mpdf->_getCharWidth($this->mpdf->CurrentFont['cw'], $this->OTLdata[$basepos]['uni']) * $this->mpdf->CurrentFont['unitsPerEm'] / 1000); // convert back to font design units + } else { + $cw = 0; + } + + $apos = $this->_getXAdvancePos($basepos); + + if (isset($Value['XAdvance']) && ($Value['XAdvance'] - $cw) != 0) { + // However DON'T REPLACE the character Advance Width if Advance Width is negative + // Test case <div style="font-family: dejavusansmono">ру́сский</div> + if ($Value['XAdvance'] < 0) { + $cw = 0; + } + + // For LTR apply XAdvanceL to the last mark following the base = at $apos + // For RTL apply XAdvanceR to base = at $basepos + if (isset($this->OTLdata[$apos]['GPOSinfo']['XAdvanceL'])) { + $this->OTLdata[$apos]['GPOSinfo']['XAdvanceL'] += $Value['XAdvance'] - $cw; + } else { + $this->OTLdata[$apos]['GPOSinfo']['XAdvanceL'] = $Value['XAdvance'] - $cw; + } + if (isset($this->OTLdata[$basepos]['GPOSinfo']['XAdvanceR'])) { + $this->OTLdata[$basepos]['GPOSinfo']['XAdvanceR'] += $Value['XAdvance'] - $cw; + } else { + $this->OTLdata[$basepos]['GPOSinfo']['XAdvanceR'] = $Value['XAdvance'] - $cw; + } + } + + // Any XPlacement (? and Y Placement) apply to base and marks (from basepos to apos) + for ($a = $basepos; $a <= $apos; $a++) { + if (isset($Value['XPlacement'])) { + if (isset($this->OTLdata[$a]['GPOSinfo']['XPlacement'])) { + $this->OTLdata[$a]['GPOSinfo']['XPlacement'] += $Value['XPlacement']; + } else { + $this->OTLdata[$a]['GPOSinfo']['XPlacement'] = $Value['XPlacement']; + } + } + if (isset($Value['YPlacement'])) { + if (isset($this->OTLdata[$a]['GPOSinfo']['YPlacement'])) { + $this->OTLdata[$a]['GPOSinfo']['YPlacement'] += $Value['YPlacement']; + } else { + $this->OTLdata[$a]['GPOSinfo']['YPlacement'] = $Value['YPlacement']; + } + } + } + } + + // If XAdvance is aplied to $ptr - in order for PDF to position the Advance correctly need to place it on + // the last of any Marks which immediately follow the current glyph + private function _getXAdvancePos($pos) + { + // NB Not all fonts have all marks specified in GlyphClassMarks + // If the current glyph is not a base (but a mark) then ignore this, and apply to the current position + if (strpos($this->GlyphClassMarks, $this->OTLdata[$pos]['hex']) !== false) { + return $pos; + } + + while (isset($this->OTLdata[$pos + 1]['hex']) && strpos($this->GlyphClassMarks, $this->OTLdata[$pos + 1]['hex']) !== false) { + $pos++; + } + return $pos; + } + + private function _applyGPOSsubtable($lookupID, $subtable, $ptr, $currGlyph, $currGID, $subtable_offset, $Type, $Flag, $MarkFilteringSet, $LuCoverage, $tag, $level, $is_old_spec) + { + if (($Flag & 0x0001) == 1) { + $dir = 'RTL'; + } else { // only used for Type 3 + $dir = 'LTR'; + } + + $ignore = $this->_getGCOMignoreString($Flag, $MarkFilteringSet); + + // Lets start + $this->seek($subtable_offset); + $PosFormat = $this->read_ushort(); + + //////////////////////////////////////////////////////////////////////////////// + // LookupType 1: Single adjustment Adjust position of a single glyph (e.g. SmallCaps/Sups/Subs) + //////////////////////////////////////////////////////////////////////////////// + if ($Type == 1) { + //=========== + // Format 1: + //=========== + if ($PosFormat == 1) { + $Coverage = $subtable_offset + $this->read_ushort(); + $ValueFormat = $this->read_ushort(); + $Value = $this->_getValueRecord($ValueFormat); + } //=========== + // Format 2: + //=========== + elseif ($PosFormat == 2) { + $Coverage = $subtable_offset + $this->read_ushort(); + $ValueFormat = $this->read_ushort(); + $ValueCount = $this->read_ushort(); + $GlyphPos = $LuCoverage[$currGID]; + $this->skip($GlyphPos * 2 * $this->count_bits($ValueFormat)); + $Value = $this->_getValueRecord($ValueFormat); + } + $this->_applyGPOSvaluerecord($ptr, $Value); + if ($this->debugOTL) { + $this->_dumpproc('GPOS', $lookupID, $subtable, $Type, $PosFormat, $ptr, $currGlyph, $level); + } + return 1; + } //////////////////////////////////////////////////////////////////////////////// + // LookupType 2: Pair adjustment Adjust position of a pair of glyphs (Kerning) + //////////////////////////////////////////////////////////////////////////////// + elseif ($Type == 2) { + $Coverage = $subtable_offset + $this->read_ushort(); + $ValueFormat1 = $this->read_ushort(); + $ValueFormat2 = $this->read_ushort(); + $sizeOfPair = ( 2 * $this->count_bits($ValueFormat1) ) + ( 2 * $this->count_bits($ValueFormat2) ); + //=========== + // Format 1: + //=========== + if ($PosFormat == 1) { + $PairSetCount = $this->read_ushort(); + $PairSetOffset = []; + for ($p = 0; $p < $PairSetCount; $p++) { + $PairSetOffset[] = $subtable_offset + $this->read_ushort(); + } + for ($p = 0; $p < $PairSetCount; $p++) { + if (isset($LuCoverage[$currGID]) && $LuCoverage[$currGID] == $p) { + $this->seek($PairSetOffset[$p]); + //PairSet table + $PairValueCount = $this->read_ushort(); + for ($pv = 0; $pv < $PairValueCount; $pv++) { + //PairValueRecord + $gid = $this->read_ushort(); + $SecondGlyph = $this->glyphToChar($gid); + $FirstGlyph = $this->OTLdata[$ptr]['uni']; + + $checkpos = $ptr; + $checkpos++; + while (isset($this->OTLdata[$checkpos]) && strpos($ignore, $this->OTLdata[$checkpos]['hex']) !== false) { + $checkpos++; + } + if (isset($this->OTLdata[$checkpos]) && $this->OTLdata[$checkpos]['uni'] == $SecondGlyph) { + $matchedpos = $checkpos; + } else { + $matchedpos = false; + } + + if ($matchedpos !== false) { + $Value1 = $this->_getValueRecord($ValueFormat1); + $Value2 = $this->_getValueRecord($ValueFormat2); + if ($ValueFormat1) { + $this->_applyGPOSvaluerecord($ptr, $Value1); + } + if ($ValueFormat2) { + $this->_applyGPOSvaluerecord($matchedpos, $Value2); + if ($this->debugOTL) { + $this->_dumpproc('GPOS', $lookupID, $subtable, $Type, $PosFormat, $ptr, $currGlyph, $level); + } + return $matchedpos - $ptr + 1; + } + if ($this->debugOTL) { + $this->_dumpproc('GPOS', $lookupID, $subtable, $Type, $PosFormat, $ptr, $currGlyph, $level); + } + return $matchedpos - $ptr; + } else { + $this->skip($sizeOfPair); + } + } + } + } + return 0; + } //=========== + // Format 2: + //=========== + elseif ($PosFormat == 2) { + $ClassDef1 = $subtable_offset + $this->read_ushort(); + $ClassDef2 = $subtable_offset + $this->read_ushort(); + $Class1Count = $this->read_ushort(); + $Class2Count = $this->read_ushort(); + + $sizeOfValueRecords = $Class1Count * $Class2Count * $sizeOfPair; + + //$this->skip($sizeOfValueRecords ); ???? NOT NEEDED + // NB Class1Count includes Class 0 even though it is not defined by $ClassDef1 + // i.e. Class1Count = 5; Class1 will contain array(indices 1-4); + $Class1 = $this->_getClassDefinitionTable($ClassDef1); + $Class2 = $this->_getClassDefinitionTable($ClassDef2); + $FirstGlyph = $this->OTLdata[$ptr]['uni']; + $checkpos = $ptr; + $checkpos++; + while (isset($this->OTLdata[$checkpos]) && strpos($ignore, $this->OTLdata[$checkpos]['hex']) !== false) { + $checkpos++; + } + if (isset($this->OTLdata[$checkpos])) { + $matchedpos = $checkpos; + } else { + return 0; + } + + $SecondGlyph = $this->OTLdata[$matchedpos]['uni']; + for ($i = 0; $i < $Class1Count; $i++) { + if (isset($Class1[$i]) && count($Class1[$i])) { + $FirstClassPos = array_search($FirstGlyph, $Class1[$i]); + if ($FirstClassPos === false) { + continue; + } else { + for ($j = 0; $j < $Class2Count; $j++) { + if (isset($Class2[$j]) && count($Class2[$j])) { + $SecondClassPos = array_search($SecondGlyph, $Class2[$j]); + if ($SecondClassPos === false) { + continue; + } + + // Get ValueRecord[$i][$j] + $offs = ($i * $Class2Count * $sizeOfPair) + ($j * $sizeOfPair); + $this->seek($subtable_offset + 16 + $offs); + + $Value1 = $this->_getValueRecord($ValueFormat1); + $Value2 = $this->_getValueRecord($ValueFormat2); + if ($ValueFormat1) { + $this->_applyGPOSvaluerecord($ptr, $Value1); + } + if ($ValueFormat2) { + $this->_applyGPOSvaluerecord($matchedpos, $Value2); + if ($this->debugOTL) { + $this->_dumpproc('GPOS', $lookupID, $subtable, $Type, $PosFormat, $ptr, $currGlyph, $level); + } + return $matchedpos - $ptr + 1; + } + if ($this->debugOTL) { + $this->_dumpproc('GPOS', $lookupID, $subtable, $Type, $PosFormat, $ptr, $currGlyph, $level); + } + return $matchedpos - $ptr; + } + } + } + } + } + return 0; + } + } //////////////////////////////////////////////////////////////////////////////// + // LookupType 3: Cursive attachment Attach cursive glyphs + //////////////////////////////////////////////////////////////////////////////// + elseif ($Type == 3) { + $this->skip(4); + // Need default XAdvance for glyph + $pdfWidth = $this->mpdf->_getCharWidth($this->mpdf->CurrentFont['cw'], hexdec($currGlyph)); // DON'T convert back to design units + + $CPos = $LuCoverage[$currGID]; + $this->skip($CPos * 4); + $EntryAnchor = $this->read_ushort(); + $ExitAnchor = $this->read_ushort(); + if ($EntryAnchor != 0) { + $EntryAnchor += $subtable_offset; + list($x, $y) = $this->_getAnchorTable($EntryAnchor); + if ($dir == 'RTL') { + if (round($pdfWidth) == round($x * 1000 / $this->mpdf->CurrentFont['unitsPerEm'])) { + $x = 0; + } else { + $x = $x - ($pdfWidth * $this->mpdf->CurrentFont['unitsPerEm'] / 1000); + } + } + + $this->Entry[$ptr] = ['X' => $x, 'Y' => $y, 'dir' => $dir]; + } + if ($ExitAnchor != 0) { + $ExitAnchor += $subtable_offset; + list($x, $y) = $this->_getAnchorTable($ExitAnchor); + if ($dir == 'LTR') { + if (round($pdfWidth) == round($x * 1000 / $this->mpdf->CurrentFont['unitsPerEm'])) { + $x = 0; + } else { + $x = $x - ($pdfWidth * $this->mpdf->CurrentFont['unitsPerEm'] / 1000); + } + } + $this->Exit[$ptr] = ['X' => $x, 'Y' => $y, 'dir' => $dir]; + } + if ($this->debugOTL) { + $this->_dumpproc('GPOS', $lookupID, $subtable, $Type, $PosFormat, $ptr, $currGlyph, $level); + } + return 1; + } //////////////////////////////////////////////////////////////////////////////// + // LookupType 4: MarkToBase attachment Attach a combining mark to a base glyph + //////////////////////////////////////////////////////////////////////////////// + elseif ($Type == 4) { + $MarkCoverage = $subtable_offset + $this->read_ushort(); + //$MarkCoverage is already set in $LuCoverage 00065|00073 etc + $BaseCoverage = $subtable_offset + $this->read_ushort(); + $ClassCount = $this->read_ushort(); // Number of classes defined for marks = Number of mark glyphs in the MarkCoverage table + $MarkArray = $subtable_offset + $this->read_ushort(); // Offset to MarkArray table + $BaseArray = $subtable_offset + $this->read_ushort(); // Offset to BaseArray table + + $this->seek($BaseCoverage); + $BaseGlyphs = implode('|', $this->_getCoverage()); + + $checkpos = $ptr; + $checkpos--; + + // ZZZ93 + // In Lohit-Kannada font (old-spec), rules specify a Type 4 GPOS to attach below-forms to base glyph + // the repositioning does not happen in MS Word, and shouldn't happen comparing with other fonts + // ?Why not + // This Fix blocks the GPOS rule if the "mark" is not actually classified as a mark in the GlyphClasses of GDEF + // but only in Indic old-spec. + // Test cases: ನ್ನು and ಕ್ರೌ + if ($this->shaper == 'I' && $is_old_spec && strpos($this->GlyphClassMarks, $this->OTLdata[$ptr]['hex']) === false) { + return; + } + + + // "To identify the base glyph that combines with a mark, the text-processing client must look backward in the glyph string from the mark to the preceding base glyph." + while (isset($this->OTLdata[$checkpos]) && strpos($this->GlyphClassMarks, $this->OTLdata[$checkpos]['hex']) !== false) { + $checkpos--; + } + + if (isset($this->OTLdata[$checkpos]) && strpos($BaseGlyphs, $this->OTLdata[$checkpos]['hex']) !== false) { + $matchedpos = $checkpos; + } else { + $matchedpos = false; + } + + if ($matchedpos !== false) { + // Get the relevant MarkRecord + $MarkPos = $LuCoverage[$currGID]; + $MarkRecord = $this->_getMarkRecord($MarkArray, $MarkPos); // e.g. Array ( [Class] => 0 [AnchorX] => -549 [AnchorY] => 1548 ) + //Mark Class is = $MarkRecord['Class'] + // Get the relevant BaseRecord + $this->seek($BaseArray); + $BaseCount = $this->read_ushort(); + $BasePos = strpos($BaseGlyphs, $this->OTLdata[$matchedpos]['hex']) / 6; + + // Move to the BaseRecord we want + $nSkip = (2 * $BasePos * $ClassCount ); + $this->skip($nSkip); + + // Read BaseRecord we want for appropriate Class + $nSkip = 2 * $MarkRecord['Class']; + $this->skip($nSkip); + $BaseRecordOffset = $BaseArray + $this->read_ushort(); + list($x, $y) = $this->_getAnchorTable($BaseRecordOffset); + $BaseRecord = ['AnchorX' => $x, 'AnchorY' => $y]; // e.g. Array ( [AnchorX] => 660 [AnchorY] => 1556 ) + // Need default XAdvance for Base glyph + $BaseWidth = $this->mpdf->_getCharWidth($this->mpdf->CurrentFont['cw'], $this->OTLdata[$matchedpos]['uni']) * $this->mpdf->CurrentFont['unitsPerEm'] / 1000; // convert back to font design units + $this->OTLdata[$ptr]['GPOSinfo']['BaseWidth'] = $BaseWidth; + // And any intervening (ignored) characters + if (($ptr - $matchedpos) > 1) { + for ($i = $matchedpos + 1; $i < $ptr; $i++) { + $BaseWidthExtra = $this->mpdf->_getCharWidth($this->mpdf->CurrentFont['cw'], $this->OTLdata[$i]['uni']) * $this->mpdf->CurrentFont['unitsPerEm'] / 1000; // convert back to font design units + $this->OTLdata[$ptr]['GPOSinfo']['BaseWidth'] += $BaseWidthExtra; + } + } + + // Align to previous Glyph by attachment - so need to add to previous placement values + $prevXPlacement = (isset($this->OTLdata[$matchedpos]['GPOSinfo']['XPlacement']) ? $this->OTLdata[$matchedpos]['GPOSinfo']['XPlacement'] : 0); + $prevYPlacement = (isset($this->OTLdata[$matchedpos]['GPOSinfo']['YPlacement']) ? $this->OTLdata[$matchedpos]['GPOSinfo']['YPlacement'] : 0); + + $this->OTLdata[$ptr]['GPOSinfo']['XPlacement'] = $prevXPlacement + $BaseRecord['AnchorX'] - $MarkRecord['AnchorX']; + $this->OTLdata[$ptr]['GPOSinfo']['YPlacement'] = $prevYPlacement + $BaseRecord['AnchorY'] - $MarkRecord['AnchorY']; + if ($this->debugOTL) { + $this->_dumpproc('GPOS', $lookupID, $subtable, $Type, $PosFormat, $ptr, $currGlyph, $level); + } + return 1; + } + return 0; + } //////////////////////////////////////////////////////////////////////////////// + // LookupType 5: MarkToLigature attachment Attach a combining mark to a ligature + //////////////////////////////////////////////////////////////////////////////// + elseif ($Type == 5) { + $MarkCoverage = $subtable_offset + $this->read_ushort(); + //$MarkCoverage is already set in $LuCoverage 00065|00073 etc + $LigatureCoverage = $subtable_offset + $this->read_ushort(); + $ClassCount = $this->read_ushort(); // Number of classes defined for marks = Number of mark glyphs in the MarkCoverage table + $MarkArray = $subtable_offset + $this->read_ushort(); // Offset to MarkArray table + $LigatureArray = $subtable_offset + $this->read_ushort(); // Offset to LigatureArray table + + $this->seek($LigatureCoverage); + $LigatureGlyphs = implode('|', $this->_getCoverage()); + + + $checkpos = $ptr; + $checkpos--; + + // "To position a combining mark using a MarkToLigature attachment subtable, the text-processing client must work backward from the mark to the preceding ligature glyph." + while (isset($this->OTLdata[$checkpos]) && strpos($this->GlyphClassMarks, $this->OTLdata[$checkpos]['hex']) !== false) { + $checkpos--; + } + + if (isset($this->OTLdata[$checkpos]) && strpos($LigatureGlyphs, $this->OTLdata[$checkpos]['hex']) !== false) { + $matchedpos = $checkpos; + } else { + $matchedpos = false; + } + + if ($matchedpos !== false) { + // Get the relevant MarkRecord + $MarkPos = $LuCoverage[$currGID]; + $MarkRecord = $this->_getMarkRecord($MarkArray, $MarkPos); // e.g. Array ( [Class] => 0 [AnchorX] => -549 [AnchorY] => 1548 ) + //Mark Class is = $MarkRecord['Class'] + // Get the relevant LigatureRecord + $this->seek($LigatureArray); + $LigatureCount = $this->read_ushort(); + $LigaturePos = strpos($LigatureGlyphs, $this->OTLdata[$matchedpos]['hex']) / 6; + + // Move to the LigatureAttach table Record we want + $nSkip = (2 * $LigaturePos); + $this->skip($nSkip); + $LigatureAttachOffset = $LigatureArray + $this->read_ushort(); + $this->seek($LigatureAttachOffset); + $ComponentCount = $this->read_ushort(); + $offsets = []; + for ($comp = 0; $comp < $ComponentCount; $comp++) { + // ComponentRecords + for ($class = 0; $class < $ClassCount; $class++) { + $offsets[$comp][$class] = $this->read_ushort(); + } + } + + // Get the specific component for this mark attachment + if (isset($this->assocLigs[$matchedpos]) && isset($this->assocMarks[$ptr]['ligPos']) && $this->assocMarks[$ptr]['ligPos'] == $matchedpos) { + $component = $this->assocMarks[$ptr]['compID']; + } else { + $component = $ComponentCount - 1; + } + + $offset = $offsets[$component][$MarkRecord['Class']]; + if ($offset != 0) { + $LigatureRecordOffset = $offset + $LigatureAttachOffset; + list($x, $y) = $this->_getAnchorTable($LigatureRecordOffset); + $LigatureRecord = ['AnchorX' => $x, 'AnchorY' => $y]; + + // Need default XAdvance for Ligature glyph + $LigatureWidth = $this->mpdf->_getCharWidth($this->mpdf->CurrentFont['cw'], $this->OTLdata[$matchedpos]['uni']) * $this->mpdf->CurrentFont['unitsPerEm'] / 1000; // convert back to font design units + $this->OTLdata[$ptr]['GPOSinfo']['BaseWidth'] = $LigatureWidth; + // And any intervening (ignored)characters + if (($ptr - $matchedpos) > 1) { + for ($i = $matchedpos + 1; $i < $ptr; $i++) { + $LigatureWidthExtra = $this->mpdf->_getCharWidth($this->mpdf->CurrentFont['cw'], $this->OTLdata[$i]['uni']) * $this->mpdf->CurrentFont['unitsPerEm'] / 1000; // convert back to font design units + $this->OTLdata[$ptr]['GPOSinfo']['BaseWidth'] += $LigatureWidthExtra; + } + } + + // Align to previous Ligature by attachment - so need to add to previous placement values + if (isset($this->OTLdata[$matchedpos]['GPOSinfo']['XPlacement'])) { + $prevXPlacement = $this->OTLdata[$matchedpos]['GPOSinfo']['XPlacement']; + } else { + $prevXPlacement = 0; + } + if (isset($this->OTLdata[$matchedpos]['GPOSinfo']['YPlacement'])) { + $prevYPlacement = $this->OTLdata[$matchedpos]['GPOSinfo']['YPlacement']; + } else { + $prevYPlacement = 0; + } + + $this->OTLdata[$ptr]['GPOSinfo']['XPlacement'] = $prevXPlacement + $LigatureRecord['AnchorX'] - $MarkRecord['AnchorX']; + $this->OTLdata[$ptr]['GPOSinfo']['YPlacement'] = $prevYPlacement + $LigatureRecord['AnchorY'] - $MarkRecord['AnchorY']; + if ($this->debugOTL) { + $this->_dumpproc('GPOS', $lookupID, $subtable, $Type, $PosFormat, $ptr, $currGlyph, $level); + } + return 1; + } + } + return 0; + } //////////////////////////////////////////////////////////////////////////////// + // LookupType 6: MarkToMark attachment Attach a combining mark to another mark + //////////////////////////////////////////////////////////////////////////////// + elseif ($Type == 6) { + $Mark1Coverage = $subtable_offset + $this->read_ushort(); // Combining Mark + //$Mark1Coverage is already set in $LuCoverage 0065|0073 etc + $Mark2Coverage = $subtable_offset + $this->read_ushort(); // Base Mark + $ClassCount = $this->read_ushort(); // Number of classes defined for marks = No. of Combining mark1 glyphs in the MarkCoverage table + $Mark1Array = $subtable_offset + $this->read_ushort(); // Offset to MarkArray table + $Mark2Array = $subtable_offset + $this->read_ushort(); // Offset to Mark2Array table + $this->seek($Mark2Coverage); + $Mark2Glyphs = implode('|', $this->_getCoverage()); + $checkpos = $ptr; + $checkpos--; + while (isset($this->OTLdata[$checkpos]) && strpos($ignore, $this->OTLdata[$checkpos]['hex']) !== false) { + $checkpos--; + } + if (isset($this->OTLdata[$checkpos]) && strpos($Mark2Glyphs, $this->OTLdata[$checkpos]['hex']) !== false) { + $matchedpos = $checkpos; + } else { + $matchedpos = false; + } + + if ($matchedpos !== false) { + // Get the relevant MarkRecord + $Mark1Pos = $LuCoverage[$currGID]; + $Mark1Record = $this->_getMarkRecord($Mark1Array, $Mark1Pos); // e.g. Array ( [Class] => 0 [AnchorX] => -549 [AnchorY] => 1548 ) + //Mark Class is = $Mark1Record['Class'] + // Get the relevant Mark2Record + $this->seek($Mark2Array); + $Mark2Count = $this->read_ushort(); + $Mark2Pos = strpos($Mark2Glyphs, $this->OTLdata[$matchedpos]['hex']) / 6; + + // Move to the Mark2Record we want + $nSkip = (2 * $Mark2Pos * $ClassCount ); + $this->skip($nSkip); + + // Read Mark2Record we want for appropriate Class + $nSkip = 2 * $Mark1Record['Class']; + $this->skip($nSkip); + $Mark2RecordOffset = $Mark2Array + $this->read_ushort(); + list($x, $y) = $this->_getAnchorTable($Mark2RecordOffset); + $Mark2Record = ['AnchorX' => $x, 'AnchorY' => $y]; // e.g. Array ( [AnchorX] => 660 [AnchorY] => 1556 ) + // Need default XAdvance for Mark2 glyph + $Mark2Width = $this->mpdf->_getCharWidth($this->mpdf->CurrentFont['cw'], $this->OTLdata[$matchedpos]['uni']) * $this->mpdf->CurrentFont['unitsPerEm'] / 1000; // convert back to font design units + // IF combining marks are set on different components of a ligature glyph, do not apply this rule + // Test: arabictypesetting: إِلَىٰٓ + // Test: arabictypesetting: بَّيْنَكُمْ + $prevLig = -1; + $thisLig = -1; + $prevComp = -1; + $thisComp = -1; + if (isset($this->assocMarks[$matchedpos])) { + $prevLig = $this->assocMarks[$matchedpos]['ligPos']; + $prevComp = $this->assocMarks[$matchedpos]['compID']; + } + if (isset($this->assocMarks[$ptr])) { + $thisLig = $this->assocMarks[$ptr]['ligPos']; + $thisComp = $this->assocMarks[$ptr]['compID']; + } + + // However IF Mark2 (first in logical order, i.e. being attached to) is not associated with a base, carry on + // This happens in Indic when the Mark being attached to e.g. [Halant Ma lig] -> MatraU, [U+0B4D + U+B2E as E0F5]-> U+0B41 become E135 + if (!defined("OMIT_OTL_FIX_1") || OMIT_OTL_FIX_1 != 1) { + /* OTL_FIX_1 */ + if (isset($this->assocMarks[$matchedpos]) && ($prevLig != $thisLig || $prevComp != $thisComp )) { + return 0; + } + } else { + /* Original code */ + if ($prevLig != $thisLig || $prevComp != $thisComp) { + return 0; + } + } + + + if (!defined("OMIT_OTL_FIX_2") || OMIT_OTL_FIX_2 != 1) { + /* OTL_FIX_2 */ + if (!isset($this->OTLdata[$matchedpos]['GPOSinfo']['BaseWidth']) || !$this->OTLdata[$matchedpos]['GPOSinfo']['BaseWidth']) { + $this->OTLdata[$ptr]['GPOSinfo']['BaseWidth'] = $Mark2Width; + } + } + + // ZZZ99Q - Test Case font-family: garuda น้ำ + if (isset($this->OTLdata[$matchedpos]['GPOSinfo']['BaseWidth']) && $this->OTLdata[$matchedpos]['GPOSinfo']['BaseWidth']) { + $this->OTLdata[$ptr]['GPOSinfo']['BaseWidth'] = $this->OTLdata[$matchedpos]['GPOSinfo']['BaseWidth']; + } + + // Align to previous Mark by attachment - so need to add the previous placement values + $prevXPlacement = (isset($this->OTLdata[$matchedpos]['GPOSinfo']['XPlacement']) ? $this->OTLdata[$matchedpos]['GPOSinfo']['XPlacement'] : 0); + $prevYPlacement = (isset($this->OTLdata[$matchedpos]['GPOSinfo']['YPlacement']) ? $this->OTLdata[$matchedpos]['GPOSinfo']['YPlacement'] : 0); + $this->OTLdata[$ptr]['GPOSinfo']['XPlacement'] = $prevXPlacement + $Mark2Record['AnchorX'] - $Mark1Record['AnchorX']; + $this->OTLdata[$ptr]['GPOSinfo']['YPlacement'] = $prevYPlacement + $Mark2Record['AnchorY'] - $Mark1Record['AnchorY']; + if ($this->debugOTL) { + $this->_dumpproc('GPOS', $lookupID, $subtable, $Type, $PosFormat, $ptr, $currGlyph, $level); + } + return 1; + } + return 0; + } //////////////////////////////////////////////////////////////////////////////// + // LookupType 7: Context positioning Position one or more glyphs in context + //////////////////////////////////////////////////////////////////////////////// + elseif ($Type == 7) { + //=========== + // Format 1: + //=========== + if ($PosFormat == 1) { + throw new \Mpdf\MpdfException("GPOS Lookup Type " . $Type . " Format " . $PosFormat . " not TESTED YET."); + } //=========== + // Format 2: + //=========== + elseif ($PosFormat == 2) { + $CoverageTableOffset = $subtable_offset + $this->read_ushort(); + $InputClassDefOffset = $subtable_offset + $this->read_ushort(); + $PosClassSetCnt = $this->read_ushort(); + $PosClassSetOffset = []; + for ($b = 0; $b < $PosClassSetCnt; $b++) { + $offset = $this->read_ushort(); + if ($offset == 0x0000) { + $PosClassSetOffset[] = $offset; + } else { + $PosClassSetOffset[] = $subtable_offset + $offset; + } + } + + $InputClasses = $this->_getClasses($InputClassDefOffset); + + for ($s = 0; $s < $PosClassSetCnt; $s++) { // $ChainPosClassSet is ordered by input class-may be NULL + // Select $PosClassSet if currGlyph is in First Input Class + if ($PosClassSetOffset[$s] > 0 && isset($InputClasses[$s][$currGID])) { + $this->seek($PosClassSetOffset[$s]); + $PosClassRuleCnt = $this->read_ushort(); + $PosClassRule = []; + for ($b = 0; $b < $PosClassRuleCnt; $b++) { + $PosClassRule[$b] = $PosClassSetOffset[$s] + $this->read_ushort(); + } + + for ($b = 0; $b < $PosClassRuleCnt; $b++) { // EACH RULE + $this->seek($PosClassRule[$b]); + $InputGlyphCount = $this->read_ushort(); + $PosCount = $this->read_ushort(); + + $Input = []; + for ($r = 1; $r < $InputGlyphCount; $r++) { + $Input[$r] = $this->read_ushort(); + } + $inputClass = $s; + + $inputGlyphs = []; + $inputGlyphs[0] = $InputClasses[$inputClass]; + + if ($InputGlyphCount > 1) { + // NB starts at 1 + for ($gcl = 1; $gcl < $InputGlyphCount; $gcl++) { + $classindex = $Input[$gcl]; + if (isset($InputClasses[$classindex])) { + $inputGlyphs[$gcl] = $InputClasses[$classindex]; + } else { + $inputGlyphs[$gcl] = ''; + } + } + } + + // Class 0 contains all the glyphs NOT in the other classes + $class0excl = []; + for ($gc = 1; $gc <= count($InputClasses); $gc++) { + if (is_array($InputClasses[$gc])) { + $class0excl = $class0excl + $InputClasses[$gc]; + } + } + + $backtrackGlyphs = []; + $lookaheadGlyphs = []; + + $matched = $this->checkContextMatchMultipleUni($inputGlyphs, $backtrackGlyphs, $lookaheadGlyphs, $ignore, $ptr, $class0excl); + if ($matched) { + for ($p = 0; $p < $PosCount; $p++) { // EACH LOOKUP + $SequenceIndex[$p] = $this->read_ushort(); + $LookupListIndex[$p] = $this->read_ushort(); + } + + for ($p = 0; $p < $PosCount; $p++) { + // Apply $LookupListIndex at $SequenceIndex + if ($SequenceIndex[$p] >= $InputGlyphCount) { + continue; + } + $lu = $LookupListIndex[$p]; + $luType = $this->GPOSLookups[$lu]['Type']; + $luFlag = $this->GPOSLookups[$lu]['Flag']; + $luMarkFilteringSet = $this->GPOSLookups[$lu]['MarkFilteringSet']; + + $luptr = $matched[$SequenceIndex[$p]]; + $lucurrGlyph = $this->OTLdata[$luptr]['hex']; + $lucurrGID = $this->OTLdata[$luptr]['uni']; + + foreach ($this->GPOSLookups[$lu]['Subtables'] as $luc => $lusubtable_offset) { + $shift = $this->_applyGPOSsubtable($lu, $luc, $luptr, $lucurrGlyph, $lucurrGID, ($lusubtable_offset - $this->GPOS_offset + $this->GSUB_length), $luType, $luFlag, $luMarkFilteringSet, $this->LuCoverage[$lu][$luc], $tag, 1, $is_old_spec); + if ($this->debugOTL && $shift) { + $this->_dumpproc('GPOS', $lookupID, $subtable, $Type, $PosFormat, $ptr, $currGlyph, $level); + } + if ($shift) { + break; + } + } + } + + if (!defined("OMIT_OTL_FIX_3") || OMIT_OTL_FIX_3 != 1) { + return $shift; + } /* OTL_FIX_3 */ + else { + return $InputGlyphCount; // should be + matched ignores in Input Sequence + } + } + } + } + } + + return 0; + } //=========== + // Format 3: + //=========== + elseif ($PosFormat == 3) { + throw new \Mpdf\MpdfException("GPOS Lookup Type " . $Type . " Format " . $PosFormat . " not TESTED YET."); + } else { + throw new \Mpdf\MpdfException("GPOS Lookup Type " . $Type . ", Format " . $PosFormat . " not supported."); + } + } //////////////////////////////////////////////////////////////////////////////// + // LookupType 8: Chained Context positioning Position one or more glyphs in chained context + //////////////////////////////////////////////////////////////////////////////// + elseif ($Type == 8) { + //=========== + // Format 1: + //=========== + if ($PosFormat == 1) { + throw new \Mpdf\MpdfException("GPOS Lookup Type " . $Type . " Format " . $PosFormat . " not TESTED YET."); + return 0; + } //=========== + // Format 2: + //=========== + elseif ($PosFormat == 2) { + $CoverageTableOffset = $subtable_offset + $this->read_ushort(); + $BacktrackClassDefOffset = $subtable_offset + $this->read_ushort(); + $InputClassDefOffset = $subtable_offset + $this->read_ushort(); + $LookaheadClassDefOffset = $subtable_offset + $this->read_ushort(); + $ChainPosClassSetCnt = $this->read_ushort(); + $ChainPosClassSetOffset = []; + for ($b = 0; $b < $ChainPosClassSetCnt; $b++) { + $offset = $this->read_ushort(); + if ($offset == 0x0000) { + $ChainPosClassSetOffset[] = $offset; + } else { + $ChainPosClassSetOffset[] = $subtable_offset + $offset; + } + } + + $BacktrackClasses = $this->_getClasses($BacktrackClassDefOffset); + $InputClasses = $this->_getClasses($InputClassDefOffset); + $LookaheadClasses = $this->_getClasses($LookaheadClassDefOffset); + + for ($s = 0; $s < $ChainPosClassSetCnt; $s++) { // $ChainPosClassSet is ordered by input class-may be NULL + // Select $ChainPosClassSet if currGlyph is in First Input Class + if ($ChainPosClassSetOffset[$s] > 0 && isset($InputClasses[$s][$currGID])) { + $this->seek($ChainPosClassSetOffset[$s]); + $ChainPosClassRuleCnt = $this->read_ushort(); + $ChainPosClassRule = []; + for ($b = 0; $b < $ChainPosClassRuleCnt; $b++) { + $ChainPosClassRule[$b] = $ChainPosClassSetOffset[$s] + $this->read_ushort(); + } + + for ($b = 0; $b < $ChainPosClassRuleCnt; $b++) { // EACH RULE + $this->seek($ChainPosClassRule[$b]); + $BacktrackGlyphCount = $this->read_ushort(); + $Backtrack = []; + for ($r = 0; $r < $BacktrackGlyphCount; $r++) { + $Backtrack[$r] = $this->read_ushort(); + } + $InputGlyphCount = $this->read_ushort(); + $Input = []; + for ($r = 1; $r < $InputGlyphCount; $r++) { + $Input[$r] = $this->read_ushort(); + } + $LookaheadGlyphCount = $this->read_ushort(); + $Lookahead = []; + for ($r = 0; $r < $LookaheadGlyphCount; $r++) { + $Lookahead[$r] = $this->read_ushort(); + } + + $inputClass = $s; //??? + + $inputGlyphs = []; + $inputGlyphs[0] = $InputClasses[$inputClass]; + + if ($InputGlyphCount > 1) { + // NB starts at 1 + for ($gcl = 1; $gcl < $InputGlyphCount; $gcl++) { + $classindex = $Input[$gcl]; + if (isset($InputClasses[$classindex])) { + $inputGlyphs[$gcl] = $InputClasses[$classindex]; + } else { + $inputGlyphs[$gcl] = ''; + } + } + } + + // Class 0 contains all the glyphs NOT in the other classes + $class0excl = []; + for ($gc = 1; $gc <= count($InputClasses); $gc++) { + if (isset($InputClasses[$gc]) && is_array($InputClasses[$gc])) { + $class0excl = $class0excl + $InputClasses[$gc]; + } + } + + if ($BacktrackGlyphCount) { + $backtrackGlyphs = []; + for ($gcl = 0; $gcl < $BacktrackGlyphCount; $gcl++) { + $classindex = $Backtrack[$gcl]; + if (isset($BacktrackClasses[$classindex])) { + $backtrackGlyphs[$gcl] = $BacktrackClasses[$classindex]; + } else { + $backtrackGlyphs[$gcl] = ''; + } + } + } else { + $backtrackGlyphs = []; + } + + // Class 0 contains all the glyphs NOT in the other classes + $bclass0excl = []; + for ($gc = 1; $gc <= count($BacktrackClasses); $gc++) { + if (isset($BacktrackClasses[$gc]) && is_array($BacktrackClasses[$gc])) { + $bclass0excl = $bclass0excl + $BacktrackClasses[$gc]; + } + } + + if ($LookaheadGlyphCount) { + $lookaheadGlyphs = []; + for ($gcl = 0; $gcl < $LookaheadGlyphCount; $gcl++) { + $classindex = $Lookahead[$gcl]; + if (isset($LookaheadClasses[$classindex])) { + $lookaheadGlyphs[$gcl] = $LookaheadClasses[$classindex]; + } else { + $lookaheadGlyphs[$gcl] = ''; + } + } + } else { + $lookaheadGlyphs = []; + } + + // Class 0 contains all the glyphs NOT in the other classes + $lclass0excl = []; + for ($gc = 1; $gc <= count($LookaheadClasses); $gc++) { + if (isset($LookaheadClasses[$gc]) && is_array($LookaheadClasses[$gc])) { + $lclass0excl = $lclass0excl + $LookaheadClasses[$gc]; + } + } + + $matched = $this->checkContextMatchMultipleUni($inputGlyphs, $backtrackGlyphs, $lookaheadGlyphs, $ignore, $ptr, $class0excl, $bclass0excl, $lclass0excl); + if ($matched) { + $PosCount = $this->read_ushort(); + $SequenceIndex = []; + $LookupListIndex = []; + for ($p = 0; $p < $PosCount; $p++) { // EACH LOOKUP + $SequenceIndex[$p] = $this->read_ushort(); + $LookupListIndex[$p] = $this->read_ushort(); + } + + for ($p = 0; $p < $PosCount; $p++) { + // Apply $LookupListIndex at $SequenceIndex + if ($SequenceIndex[$p] >= $InputGlyphCount) { + continue; + } + $lu = $LookupListIndex[$p]; + $luType = $this->GPOSLookups[$lu]['Type']; + $luFlag = $this->GPOSLookups[$lu]['Flag']; + $luMarkFilteringSet = $this->GPOSLookups[$lu]['MarkFilteringSet']; + + $luptr = $matched[$SequenceIndex[$p]]; + $lucurrGlyph = $this->OTLdata[$luptr]['hex']; + $lucurrGID = $this->OTLdata[$luptr]['uni']; + + foreach ($this->GPOSLookups[$lu]['Subtables'] as $luc => $lusubtable_offset) { + $shift = $this->_applyGPOSsubtable($lu, $luc, $luptr, $lucurrGlyph, $lucurrGID, ($lusubtable_offset - $this->GPOS_offset + $this->GSUB_length), $luType, $luFlag, $luMarkFilteringSet, $this->LuCoverage[$lu][$luc], $tag, 1, $is_old_spec); + if ($this->debugOTL && $shift) { + $this->_dumpproc('GPOS', $lookupID, $subtable, $Type, $PosFormat, $ptr, $currGlyph, $level); + } + if ($shift) { + break; + } + } + } + + if (!defined("OMIT_OTL_FIX_3") || OMIT_OTL_FIX_3 != 1) { + return $shift; + } /* OTL_FIX_3 */ + else { + return $InputGlyphCount; // should be + matched ignores in Input Sequence + } + } + } + } + } + + return 0; + } //=========== + // Format 3: + //=========== + elseif ($PosFormat == 3) { + $BacktrackGlyphCount = $this->read_ushort(); + for ($b = 0; $b < $BacktrackGlyphCount; $b++) { + $CoverageBacktrackOffset[] = $subtable_offset + $this->read_ushort(); // in glyph sequence order + } + $InputGlyphCount = $this->read_ushort(); + for ($b = 0; $b < $InputGlyphCount; $b++) { + $CoverageInputOffset[] = $subtable_offset + $this->read_ushort(); // in glyph sequence order + } + $LookaheadGlyphCount = $this->read_ushort(); + for ($b = 0; $b < $LookaheadGlyphCount; $b++) { + $CoverageLookaheadOffset[] = $subtable_offset + $this->read_ushort(); // in glyph sequence order + } + $PosCount = $this->read_ushort(); + $save_pos = $this->_pos; // Save the point just after PosCount + + $CoverageBacktrackGlyphs = []; + for ($b = 0; $b < $BacktrackGlyphCount; $b++) { + $this->seek($CoverageBacktrackOffset[$b]); + $glyphs = $this->_getCoverage(); + $CoverageBacktrackGlyphs[$b] = implode("|", $glyphs); + } + $CoverageInputGlyphs = []; + for ($b = 0; $b < $InputGlyphCount; $b++) { + $this->seek($CoverageInputOffset[$b]); + $glyphs = $this->_getCoverage(); + $CoverageInputGlyphs[$b] = implode("|", $glyphs); + } + $CoverageLookaheadGlyphs = []; + for ($b = 0; $b < $LookaheadGlyphCount; $b++) { + $this->seek($CoverageLookaheadOffset[$b]); + $glyphs = $this->_getCoverage(); + $CoverageLookaheadGlyphs[$b] = implode("|", $glyphs); + } + $matched = $this->checkContextMatchMultiple($CoverageInputGlyphs, $CoverageBacktrackGlyphs, $CoverageLookaheadGlyphs, $ignore, $ptr); + if ($matched) { + $this->seek($save_pos); // Return to just after PosCount + for ($p = 0; $p < $PosCount; $p++) { + // PosLookupRecord + $PosLookupRecord[$p]['SequenceIndex'] = $this->read_ushort(); + $PosLookupRecord[$p]['LookupListIndex'] = $this->read_ushort(); + } + for ($p = 0; $p < $PosCount; $p++) { + // Apply $PosLookupRecord[$p]['LookupListIndex'] at $PosLookupRecord[$p]['SequenceIndex'] + if ($PosLookupRecord[$p]['SequenceIndex'] >= $InputGlyphCount) { + continue; + } + $lu = $PosLookupRecord[$p]['LookupListIndex']; + $luType = $this->GPOSLookups[$lu]['Type']; + $luFlag = $this->GPOSLookups[$lu]['Flag']; + if (isset($this->GPOSLookups[$lu]['MarkFilteringSet'])) { + $luMarkFilteringSet = $this->GPOSLookups[$lu]['MarkFilteringSet']; + } else { + $luMarkFilteringSet = ''; + } + + $luptr = $matched[$PosLookupRecord[$p]['SequenceIndex']]; + $lucurrGlyph = $this->OTLdata[$luptr]['hex']; + $lucurrGID = $this->OTLdata[$luptr]['uni']; + + foreach ($this->GPOSLookups[$lu]['Subtables'] as $luc => $lusubtable_offset) { + $shift = $this->_applyGPOSsubtable($lu, $luc, $luptr, $lucurrGlyph, $lucurrGID, ($lusubtable_offset - $this->GPOS_offset + $this->GSUB_length), $luType, $luFlag, $luMarkFilteringSet, $this->LuCoverage[$lu][$luc], $tag, 1, $is_old_spec); + if ($this->debugOTL && $shift) { + $this->_dumpproc('GPOS', $lookupID, $subtable, $Type, $PosFormat, $ptr, $currGlyph, $level); + } + if ($shift) { + break; + } + } + } + } + } else { + throw new \Mpdf\MpdfException("GPOS Lookup Type " . $Type . ", Format " . $PosFormat . " not supported."); + } + } else { + throw new \Mpdf\MpdfException("GPOS Lookup Type " . $Type . " not supported."); + } + } + + ////////////////////////////////////////////////////////////////////////////////// + // GPOS / GSUB / GCOM (common) functions + ////////////////////////////////////////////////////////////////////////////////// + private function checkContextMatch($Input, $Backtrack, $Lookahead, $ignore, $ptr) + { + // Input etc are single numbers - GSUB Format 6.1 + // Input starts with (1=>xxx) + // return false if no match, else an array of ptr for matches (0=>0, 1=>3,...) + + $current_syllable = (isset($this->OTLdata[$ptr]['syllable']) ? $this->OTLdata[$ptr]['syllable'] : 0); + + // BACKTRACK + $checkpos = $ptr; + for ($i = 0; $i < count($Backtrack); $i++) { + $checkpos--; + while (isset($this->OTLdata[$checkpos]) && strpos($ignore, $this->OTLdata[$checkpos]['hex']) !== false) { + $checkpos--; + } + // If outside scope of current syllable - return no match + if ($this->restrictToSyllable && isset($this->OTLdata[$checkpos]['syllable']) && $this->OTLdata[$checkpos]['syllable'] != $current_syllable) { + return false; + } elseif (!isset($this->OTLdata[$checkpos]) || $this->OTLdata[$checkpos]['uni'] != $Backtrack[$i]) { + return false; + } + } + + // INPUT + $matched = [0 => $ptr]; + $checkpos = $ptr; + for ($i = 1; $i < count($Input); $i++) { + $checkpos++; + while (isset($this->OTLdata[$checkpos]) && strpos($ignore, $this->OTLdata[$checkpos]['hex']) !== false) { + $checkpos++; + } + // If outside scope of current syllable - return no match + if ($this->restrictToSyllable && isset($this->OTLdata[$checkpos]['syllable']) && $this->OTLdata[$checkpos]['syllable'] != $current_syllable) { + return false; + } elseif (isset($this->OTLdata[$checkpos]) && $this->OTLdata[$checkpos]['uni'] == $Input[$i]) { + $matched[] = $checkpos; + } else { + return false; + } + } + + // LOOKAHEAD + for ($i = 0; $i < count($Lookahead); $i++) { + $checkpos++; + while (isset($this->OTLdata[$checkpos]) && strpos($ignore, $this->OTLdata[$checkpos]['hex']) !== false) { + $checkpos++; + } + // If outside scope of current syllable - return no match + if ($this->restrictToSyllable && isset($this->OTLdata[$checkpos]['syllable']) && $this->OTLdata[$checkpos]['syllable'] != $current_syllable) { + return false; + } elseif (!isset($this->OTLdata[$checkpos]) || $this->OTLdata[$checkpos]['uni'] != $Lookahead[$i]) { + return false; + } + } + + return $matched; + } + + private function checkContextMatchMultiple($Input, $Backtrack, $Lookahead, $ignore, $ptr, $class0excl = '', $bclass0excl = '', $lclass0excl = '') + { + // Input etc are string/array of glyph strings - GSUB Format 5.2, 5.3, 6.2, 6.3, GPOS Format 7.2, 7.3, 8.2, 8.3 + // Input starts with (1=>xxx) + // return false if no match, else an array of ptr for matches (0=>0, 1=>3,...) + // $class0excl is the string of glyphs in all classes except Class 0 (GSUB 5.2, 6.2, GPOS 7.2, 8.2) + // $bclass0excl & $lclass0excl are the same for lookahead and backtrack (GSUB 6.2, GPOS 8.2) + + $current_syllable = (isset($this->OTLdata[$ptr]['syllable']) ? $this->OTLdata[$ptr]['syllable'] : 0); + + // BACKTRACK + $checkpos = $ptr; + for ($i = 0; $i < count($Backtrack); $i++) { + $checkpos--; + while (isset($this->OTLdata[$checkpos]) && strpos($ignore, $this->OTLdata[$checkpos]['hex']) !== false) { + $checkpos--; + } + // If outside scope of current syllable - return no match + if ($this->restrictToSyllable && isset($this->OTLdata[$checkpos]['syllable']) && $this->OTLdata[$checkpos]['syllable'] != $current_syllable) { + return false; + } // If Class 0 specified, matches anything NOT in $bclass0excl + elseif (!$Backtrack[$i] && isset($this->OTLdata[$checkpos]) && strpos($bclass0excl, $this->OTLdata[$checkpos]['hex']) !== false) { + return false; + } elseif (!isset($this->OTLdata[$checkpos]) || strpos($Backtrack[$i], $this->OTLdata[$checkpos]['hex']) === false) { + return false; + } + } + + // INPUT + $matched = [0 => $ptr]; + $checkpos = $ptr; + for ($i = 1; $i < count($Input); $i++) { // Start at 1 - already matched the first InputGlyph + $checkpos++; + while (isset($this->OTLdata[$checkpos]) && strpos($ignore, $this->OTLdata[$checkpos]['hex']) !== false) { + $checkpos++; + } + // If outside scope of current syllable - return no match + if ($this->restrictToSyllable && isset($this->OTLdata[$checkpos]['syllable']) && $this->OTLdata[$checkpos]['syllable'] != $current_syllable) { + return false; + } // If Input Class 0 specified, matches anything NOT in $class0excl + elseif (!$Input[$i] && isset($this->OTLdata[$checkpos]) && strpos($class0excl, $this->OTLdata[$checkpos]['hex']) === false) { + $matched[] = $checkpos; + } elseif (isset($this->OTLdata[$checkpos]) && strpos($Input[$i], $this->OTLdata[$checkpos]['hex']) !== false) { + $matched[] = $checkpos; + } else { + return false; + } + } + + // LOOKAHEAD + for ($i = 0; $i < count($Lookahead); $i++) { + $checkpos++; + while (isset($this->OTLdata[$checkpos]) && strpos($ignore, $this->OTLdata[$checkpos]['hex']) !== false) { + $checkpos++; + } + // If outside scope of current syllable - return no match + if ($this->restrictToSyllable && isset($this->OTLdata[$checkpos]['syllable']) && $this->OTLdata[$checkpos]['syllable'] != $current_syllable) { + return false; + } // If Class 0 specified, matches anything NOT in $lclass0excl + elseif (!$Lookahead[$i] && isset($this->OTLdata[$checkpos]) && strpos($lclass0excl, $this->OTLdata[$checkpos]['hex']) !== false) { + return false; + } elseif (!isset($this->OTLdata[$checkpos]) || strpos($Lookahead[$i], $this->OTLdata[$checkpos]['hex']) === false) { + return false; + } + } + return $matched; + } + + private function checkContextMatchMultipleUni($Input, $Backtrack, $Lookahead, $ignore, $ptr, $class0excl = [], $bclass0excl = [], $lclass0excl = []) + { + // Input etc are array of glyphs - GSUB Format 5.2, 5.3, 6.2, 6.3, GPOS Format 7.2, 7.3, 8.2, 8.3 + // Input starts with (1=>xxx) + // return false if no match, else an array of ptr for matches (0=>0, 1=>3,...) + // $class0excl is array of glyphs in all classes except Class 0 (GSUB 5.2, 6.2, GPOS 7.2, 8.2) + // $bclass0excl & $lclass0excl are the same for lookahead and backtrack (GSUB 6.2, GPOS 8.2) + + $current_syllable = (isset($this->OTLdata[$ptr]['syllable']) ? $this->OTLdata[$ptr]['syllable'] : 0); + + // BACKTRACK + $checkpos = $ptr; + for ($i = 0; $i < count($Backtrack); $i++) { + $checkpos--; + while (isset($this->OTLdata[$checkpos]) && strpos($ignore, $this->OTLdata[$checkpos]['hex']) !== false) { + $checkpos--; + } + // If outside scope of current syllable - return no match + if ($this->restrictToSyllable && isset($this->OTLdata[$checkpos]['syllable']) && $this->OTLdata[$checkpos]['syllable'] != $current_syllable) { + return false; + } // If Class 0 specified, matches anything NOT in $bclass0excl + elseif (!$Backtrack[$i] && isset($this->OTLdata[$checkpos]) && isset($bclass0excl[$this->OTLdata[$checkpos]['uni']])) { + return false; + } elseif (!isset($this->OTLdata[$checkpos]) || !isset($Backtrack[$i][$this->OTLdata[$checkpos]['uni']])) { + return false; + } + } + + // INPUT + $matched = [0 => $ptr]; + $checkpos = $ptr; + for ($i = 1; $i < count($Input); $i++) { // Start at 1 - already matched the first InputGlyph + $checkpos++; + while (isset($this->OTLdata[$checkpos]) && strpos($ignore, $this->OTLdata[$checkpos]['hex']) !== false) { + $checkpos++; + } + // If outside scope of current syllable - return no match + if ($this->restrictToSyllable && isset($this->OTLdata[$checkpos]['syllable']) && $this->OTLdata[$checkpos]['syllable'] != $current_syllable) { + return false; + } // If Input Class 0 specified, matches anything NOT in $class0excl + elseif (!$Input[$i] && isset($this->OTLdata[$checkpos]) && !isset($class0excl[$this->OTLdata[$checkpos]['uni']])) { + $matched[] = $checkpos; + } elseif (isset($this->OTLdata[$checkpos]) && isset($Input[$i][$this->OTLdata[$checkpos]['uni']])) { + $matched[] = $checkpos; + } else { + return false; + } + } + + // LOOKAHEAD + for ($i = 0; $i < count($Lookahead); $i++) { + $checkpos++; + while (isset($this->OTLdata[$checkpos]) && strpos($ignore, $this->OTLdata[$checkpos]['hex']) !== false) { + $checkpos++; + } + // If outside scope of current syllable - return no match + if ($this->restrictToSyllable && isset($this->OTLdata[$checkpos]['syllable']) && $this->OTLdata[$checkpos]['syllable'] != $current_syllable) { + return false; + } // If Class 0 specified, matches anything NOT in $lclass0excl + elseif (!$Lookahead[$i] && isset($this->OTLdata[$checkpos]) && isset($lclass0excl[$this->OTLdata[$checkpos]['uni']])) { + return false; + } elseif (!isset($this->OTLdata[$checkpos]) || !isset($Lookahead[$i][$this->OTLdata[$checkpos]['uni']])) { + return false; + } + } + return $matched; + } + + private function _getClassDefinitionTable($offset) + { + if (isset($this->LuDataCache[$this->fontkey][$offset])) { + $GlyphByClass = $this->LuDataCache[$this->fontkey][$offset]; + } else { + $this->seek($offset); + $ClassFormat = $this->read_ushort(); + $GlyphClass = []; + // $GlyphByClass = array(0=>array()); // NB This forces an index[0] + if ($ClassFormat == 1) { + $StartGlyph = $this->read_ushort(); + $GlyphCount = $this->read_ushort(); + for ($i = 0; $i < $GlyphCount; $i++) { + $GlyphClass[$i]['startGlyphID'] = $StartGlyph + $i; + $GlyphClass[$i]['endGlyphID'] = $StartGlyph + $i; + $GlyphClass[$i]['class'] = $this->read_ushort(); + for ($g = $GlyphClass[$i]['startGlyphID']; $g <= $GlyphClass[$i]['endGlyphID']; $g++) { + $GlyphByClass[$GlyphClass[$i]['class']][] = $this->glyphToChar($g); + } + } + } elseif ($ClassFormat == 2) { + $tableCount = $this->read_ushort(); + for ($i = 0; $i < $tableCount; $i++) { + $GlyphClass[$i]['startGlyphID'] = $this->read_ushort(); + $GlyphClass[$i]['endGlyphID'] = $this->read_ushort(); + $GlyphClass[$i]['class'] = $this->read_ushort(); + for ($g = $GlyphClass[$i]['startGlyphID']; $g <= $GlyphClass[$i]['endGlyphID']; $g++) { + $GlyphByClass[$GlyphClass[$i]['class']][] = $this->glyphToChar($g); + } + } + } + ksort($GlyphByClass); + $this->LuDataCache[$this->fontkey][$offset] = $GlyphByClass; + } + return $GlyphByClass; + } + + private function count_bits($n) + { + for ($c = 0; $n; $c++) { + $n &= $n - 1; // clear the least significant bit set + } + return $c; + } + + private function _getValueRecord($ValueFormat) + { + // Common ValueRecord for GPOS + // Only returns 3 possible: $vra['XPlacement'] $vra['YPlacement'] $vra['XAdvance'] + $vra = []; + // Horizontal adjustment for placement - in design units + if (($ValueFormat & 0x0001) == 0x0001) { + $vra['XPlacement'] = $this->read_short(); + } + // Vertical adjustment for placement - in design units + if (($ValueFormat & 0x0002) == 0x0002) { + $vra['YPlacement'] = $this->read_short(); + } + // Horizontal adjustment for advance - in design units (only used for horizontal writing) + if (($ValueFormat & 0x0004) == 0x0004) { + $vra['XAdvance'] = $this->read_short(); + } + // Vertical adjustment for advance - in design units (only used for vertical writing) + if (($ValueFormat & 0x0008) == 0x0008) { + $this->read_short(); + } + // Offset to Device table for horizontal placement-measured from beginning of PosTable (may be NULL) + if (($ValueFormat & 0x0010) == 0x0010) { + $this->read_ushort(); + } + // Offset to Device table for vertical placement-measured from beginning of PosTable (may be NULL) + if (($ValueFormat & 0x0020) == 0x0020) { + $this->read_ushort(); + } + // Offset to Device table for horizontal advance-measured from beginning of PosTable (may be NULL) + if (($ValueFormat & 0x0040) == 0x0040) { + $this->read_ushort(); + } + // Offset to Device table for vertical advance-measured from beginning of PosTable (may be NULL) + if (($ValueFormat & 0x0080) == 0x0080) { + $this->read_ushort(); + } + return $vra; + } + + private function _getAnchorTable($offset = 0) + { + if ($offset) { + $this->seek($offset); + } + $AnchorFormat = $this->read_ushort(); + $XCoordinate = $this->read_short(); + $YCoordinate = $this->read_short(); + // Format 2 specifies additional link to contour point; Format 3 additional Device table + return [$XCoordinate, $YCoordinate]; + } + + private function _getMarkRecord($offset, $MarkPos) + { + $this->seek($offset); + $MarkCount = $this->read_ushort(); + $this->skip($MarkPos * 4); + $Class = $this->read_ushort(); + $MarkAnchor = $offset + $this->read_ushort(); // = Offset to anchor table + list($x, $y) = $this->_getAnchorTable($MarkAnchor); + $MarkRecord = ['Class' => $Class, 'AnchorX' => $x, 'AnchorY' => $y]; + return $MarkRecord; + } + + private function _getGCOMignoreString($flag, $MarkFilteringSet) + { + // If ignoreFlag set, combine all ignore glyphs into -> "(?:( 0FBA1| 0FBA2| 0FBA3)*)" + // else "()" + // for Input - set on secondary Lookup table if in Context, and set Backtrack and Lookahead on Context Lookup + $str = ""; + $ignoreflag = 0; + + // Flag & 0xFF?? = MarkAttachmentType + if ($flag & 0xFF00) { + // "a lookup must ignore any mark glyphs that are not in the specified mark attachment class" + // $this->MarkAttachmentType is already adjusted for this i.e. contains all Marks except those in the MarkAttachmentClassDef table + $MarkAttachmentType = $flag >> 8; + $ignoreflag = $flag; + $str = $this->MarkAttachmentType[$MarkAttachmentType]; + } + + // Flag & 0x0010 = UseMarkFilteringSet + if ($flag & 0x0010) { + throw new \Mpdf\MpdfException("This font [" . $this->fontkey . "] contains MarkGlyphSets - Not tested yet"); + // Change also in ttfontsuni.php + if ($MarkFilteringSet == '') { + throw new \Mpdf\MpdfException("This font [" . $this->fontkey . "] contains MarkGlyphSets - but MarkFilteringSet not set"); + } + $str = $this->MarkGlyphSets[$MarkFilteringSet]; + } + + // If Ignore Marks set, supercedes any above + // Flag & 0x0008 = Ignore Marks - (unless already done with MarkAttachmentType) + if (($flag & 0x0008) == 0x0008 && ($flag & 0xFF00) == 0) { + $ignoreflag = 8; + $str = $this->GlyphClassMarks; + } + + // Flag & 0x0004 = Ignore Ligatures + if (($flag & 0x0004) == 0x0004) { + $ignoreflag += 4; + if ($str) { + $str .= "|"; + } + $str .= $this->GlyphClassLigatures; + } + // Flag & 0x0002 = Ignore BaseGlyphs + if (($flag & 0x0002) == 0x0002) { + $ignoreflag += 2; + if ($str) { + $str .= "|"; + } + $str .= $this->GlyphClassBases; + } + if ($str) { + return "((?:(?:" . $str . "))*)"; + } else { + return "()"; + } + } + + private function _checkGCOMignore($flag, $glyph, $MarkFilteringSet) + { + $ignore = false; + // Flag & 0x0008 = Ignore Marks - (unless already done with MarkAttachmentType) + if (($flag & 0x0008 && ($flag & 0xFF00) == 0) && strpos($this->GlyphClassMarks, $glyph)) { + $ignore = true; + } + if (($flag & 0x0004) && strpos($this->GlyphClassLigatures, $glyph)) { + $ignore = true; + } + if (($flag & 0x0002) && strpos($this->GlyphClassBases, $glyph)) { + $ignore = true; + } + // Flag & 0xFF?? = MarkAttachmentType + if ($flag & 0xFF00) { + // "a lookup must ignore any mark glyphs that are not in the specified mark attachment class" + // $this->MarkAttachmentType is already adjusted for this i.e. contains all Marks except those in the MarkAttachmentClassDef table + if (strpos($this->MarkAttachmentType[($flag >> 8)], $glyph)) { + $ignore = true; + } + } + // Flag & 0x0010 = UseMarkFilteringSet + if (($flag & 0x0010) && strpos($this->MarkGlyphSets[$MarkFilteringSet], $glyph)) { + $ignore = true; + } + return $ignore; + } + + /** + * Bidi algorithm + * + * These functions are called from mpdf after GSUB/GPOS has taken place + * At this stage the bidi-type is in string form + * + * Bidirectional Character Types + * ============================= + * Type Description General Scope + * Strong + * L Left-to-Right LRM, most alphabetic, syllabic, Han ideographs, non-European or non-Arabic digits, ... + * LRE Left-to-Right Embedding LRE + * LRO Left-to-Right Override LRO + * R Right-to-Left RLM, Hebrew alphabet, and related punctuation + * AL Right-to-Left Arabic Arabic, Thaana, and Syriac alphabets, most punctuation specific to those scripts, ... + * RLE Right-to-Left Embedding RLE + * RLO Right-to-Left Override RLO + * Weak + * PDF Pop Directional Format PDF + * EN European Number European digits, Eastern Arabic-Indic digits, ... + * ES European Number Separator Plus sign, minus sign + * ET European Number Terminator Degree sign, currency symbols, ... + * AN Arabic Number Arabic-Indic digits, Arabic decimal and thousands separators, ... + * CS Common Number Separator Colon, comma, full stop (period), No-break space, ... + * NSM Nonspacing Mark Characters marked Mn (Nonspacing_Mark) and Me (Enclosing_Mark) in the Unicode Character Database + * BN Boundary Neutral Default ignorables, non-characters, and control characters, other than those explicitly given other types. + * Neutral + * B Paragraph Separator Paragraph separator, appropriate Newline Functions, higher-level protocol paragraph determination + * S Segment Separator Tab + * WS Whitespace Space, figure space, line separator, form feed, General Punctuation spaces, ... + * ON Other Neutrals All other characters, including OBJECT REPLACEMENT CHARACTER + */ + public function bidiSort($ta, $str, $dir, &$chunkOTLdata, $useGPOS) + { + + $pel = 0; // paragraph embedding level + $maxlevel = 0; + $numchars = count($chunkOTLdata['char_data']); + + // Set the initial paragraph embedding level + if ($dir == 'rtl') { + $pel = 1; + } else { + $pel = 0; + } + + // X1. Begin by setting the current embedding level to the paragraph embedding level. Set the directional override status to neutral. + // Current Embedding Level + $cel = $pel; + // directional override status (-1 is Neutral) + $dos = -1; + $remember = []; + + // Array of characters data + $chardata = []; + + // Process each character iteratively, applying rules X2 through X9. Only embedding levels from 0 to 61 are valid in this phase. + // In the resolution of levels in rules I1 and I2, the maximum embedding level of 62 can be reached. + for ($i = 0; $i < $numchars; ++$i) { + if ($chunkOTLdata['char_data'][$i]['uni'] == 8235) { // RLE + // X2. With each RLE, compute the least greater odd embedding level. + // a. If this new level would be valid, then this embedding code is valid. Remember (push) the current embedding level and override status. Reset the current level to this new level, and reset the override status to neutral. + // b. If the new level would not be valid, then this code is invalid. Do not change the current level or override status. + $next_level = $cel + ($cel % 2) + 1; + if ($next_level < 62) { + $remember[] = ['num' => 8235, 'cel' => $cel, 'dos' => $dos]; + $cel = $next_level; + $dos = -1; + } + } elseif ($chunkOTLdata['char_data'][$i]['uni'] == 8234) { // LRE + // X3. With each LRE, compute the least greater even embedding level. + // a. If this new level would be valid, then this embedding code is valid. Remember (push) the current embedding level and override status. Reset the current level to this new level, and reset the override status to neutral. + // b. If the new level would not be valid, then this code is invalid. Do not change the current level or override status. + $next_level = $cel + 2 - ($cel % 2); + if ($next_level < 62) { + $remember[] = ['num' => 8234, 'cel' => $cel, 'dos' => $dos]; + $cel = $next_level; + $dos = -1; + } + } elseif ($chunkOTLdata['char_data'][$i]['uni'] == 8238) { // RLO + // X4. With each RLO, compute the least greater odd embedding level. + // a. If this new level would be valid, then this embedding code is valid. Remember (push) the current embedding level and override status. Reset the current level to this new level, and reset the override status to right-to-left. + // b. If the new level would not be valid, then this code is invalid. Do not change the current level or override status. + $next_level = $cel + ($cel % 2) + 1; + if ($next_level < 62) { + $remember[] = ['num' => 8238, 'cel' => $cel, 'dos' => $dos]; + $cel = $next_level; + $dos = Ucdn::BIDI_CLASS_R; + } + } elseif ($chunkOTLdata['char_data'][$i]['uni'] == 8237) { // LRO + // X5. With each LRO, compute the least greater even embedding level. + // a. If this new level would be valid, then this embedding code is valid. Remember (push) the current embedding level and override status. Reset the current level to this new level, and reset the override status to left-to-right. + // b. If the new level would not be valid, then this code is invalid. Do not change the current level or override status. + $next_level = $cel + 2 - ($cel % 2); + if ($next_level < 62) { + $remember[] = ['num' => 8237, 'cel' => $cel, 'dos' => $dos]; + $cel = $next_level; + $dos = Ucdn::BIDI_CLASS_L; + } + } elseif ($chunkOTLdata['char_data'][$i]['uni'] == 8236) { // PDF + // X7. With each PDF, determine the matching embedding or override code. If there was a valid matching code, restore (pop) the last remembered (pushed) embedding level and directional override. + if (count($remember)) { + $last = count($remember) - 1; + if (($remember[$last]['num'] == 8235) || ($remember[$last]['num'] == 8234) || ($remember[$last]['num'] == 8238) || + ($remember[$last]['num'] == 8237)) { + $match = array_pop($remember); + $cel = $match['cel']; + $dos = $match['dos']; + } + } + } elseif ($chunkOTLdata['char_data'][$i]['uni'] == 10) { // NEW LINE + // Reset to start values + $cel = $pel; + $dos = -1; + $remember = []; + } else { + // X6. For all types besides RLE, LRE, RLO, LRO, and PDF: + // a. Set the level of the current character to the current embedding level. + // b. When the directional override status is not neutral, reset the current character type to directional override status. + if ($dos != -1) { + $chardir = $dos; + } else { + $chardir = $chunkOTLdata['char_data'][$i]['bidi_class']; + } + // stores string characters and other information + if (isset($chunkOTLdata['GPOSinfo'][$i])) { + $gpos = $chunkOTLdata['GPOSinfo'][$i]; + } else { + $gpos = ''; + } + $chardata[] = ['char' => $chunkOTLdata['char_data'][$i]['uni'], 'level' => $cel, 'type' => $chardir, 'group' => $chunkOTLdata['group'][$i], 'GPOSinfo' => $gpos]; + } + } + + $numchars = count($chardata); + + // X8. All explicit directional embeddings and overrides are completely terminated at the end of each paragraph. + // Paragraph separators are not included in the embedding. + // X9. Remove all RLE, LRE, RLO, LRO, and PDF codes. + // This is effectively done by only saving other codes to chardata + // X10. Determine the start-of-sequence (sor) and end-of-sequence (eor) types, either L or R, for each isolating run sequence. These depend on the higher of the two levels on either side of the sequence boundary: + // For sor, compare the level of the first character in the sequence with the level of the character preceding it in the paragraph or if there is none, with the paragraph embedding level. + // For eor, compare the level of the last character in the sequence with the level of the character following it in the paragraph or if there is none, with the paragraph embedding level. + // If the higher level is odd, the sor or eor is R; otherwise, it is L. + + $prelevel = $pel; + $postlevel = $pel; + $cel = $prelevel; // current embedding level + for ($i = 0; $i < $numchars; ++$i) { + $level = $chardata[$i]['level']; + if ($i == 0) { + $left = $prelevel; + } else { + $left = $chardata[$i - 1]['level']; + } + if ($i == ($numchars - 1)) { + $right = $postlevel; + } else { + $right = $chardata[$i + 1]['level']; + } + $chardata[$i]['sor'] = max($left, $level) % 2 ? Ucdn::BIDI_CLASS_R : Ucdn::BIDI_CLASS_L; + $chardata[$i]['eor'] = max($right, $level) % 2 ? Ucdn::BIDI_CLASS_R : Ucdn::BIDI_CLASS_L; + } + + + + // 3.3.3 Resolving Weak Types + // Weak types are now resolved one level run at a time. At level run boundaries where the type of the character on the other side of the boundary is required, the type assigned to sor or eor is used. + // Nonspacing marks are now resolved based on the previous characters. + // W1. Examine each nonspacing mark (NSM) in the level run, and change the type of the NSM to the type of the previous character. If the NSM is at the start of the level run, it will get the type of sor. + for ($i = 0; $i < $numchars; ++$i) { + if ($chardata[$i]['type'] == Ucdn::BIDI_CLASS_NSM) { + if ($i == 0 || $chardata[$i]['level'] != $chardata[$i - 1]['level']) { + $chardata[$i]['type'] = $chardata[$i]['sor']; + } else { + $chardata[$i]['type'] = $chardata[($i - 1)]['type']; + } + } + } + + // W2. Search backward from each instance of a European number until the first strong type (R, L, AL, or sor) is found. If an AL is found, change the type of the European number to Arabic number. + $prevlevel = -1; + $levcount = 0; + for ($i = 0; $i < $numchars; ++$i) { + if ($chardata[$i]['type'] == Ucdn::BIDI_CLASS_EN) { + $found = false; + for ($j = $levcount; $j >= 0; $j--) { + if ($chardata[$j]['type'] == Ucdn::BIDI_CLASS_AL) { + $chardata[$i]['type'] = Ucdn::BIDI_CLASS_AN; + $found = true; + break; + } elseif (($chardata[$j]['type'] == Ucdn::BIDI_CLASS_L) || ($chardata[$j]['type'] == Ucdn::BIDI_CLASS_R)) { + $found = true; + break; + } + } + } + if ($chardata[$i]['level'] != $prevlevel) { + $levcount = 0; + } else { + ++$levcount; + } + $prevlevel = $chardata[$i]['level']; + } + + // W3. Change all ALs to R. + for ($i = 0; $i < $numchars; ++$i) { + if ($chardata[$i]['type'] == Ucdn::BIDI_CLASS_AL) { + $chardata[$i]['type'] = Ucdn::BIDI_CLASS_R; + } + } + + // W4. A single European separator between two European numbers changes to a European number. A single common separator between two numbers of the same type changes to that type. + for ($i = 1; $i < $numchars; ++$i) { + if (($i + 1) < $numchars && $chardata[($i)]['level'] == $chardata[($i + 1)]['level'] && $chardata[($i)]['level'] == $chardata[($i - 1)]['level']) { + if ($chardata[$i]['type'] == Ucdn::BIDI_CLASS_ES && $chardata[($i - 1)]['type'] == Ucdn::BIDI_CLASS_EN && $chardata[($i + 1)]['type'] == Ucdn::BIDI_CLASS_EN) { + $chardata[$i]['type'] = Ucdn::BIDI_CLASS_EN; + } elseif ($chardata[$i]['type'] == Ucdn::BIDI_CLASS_CS && $chardata[($i - 1)]['type'] == Ucdn::BIDI_CLASS_EN && $chardata[($i + 1)]['type'] == Ucdn::BIDI_CLASS_EN) { + $chardata[$i]['type'] = Ucdn::BIDI_CLASS_EN; + } elseif ($chardata[$i]['type'] == Ucdn::BIDI_CLASS_CS && $chardata[($i - 1)]['type'] == Ucdn::BIDI_CLASS_AN && $chardata[($i + 1)]['type'] == Ucdn::BIDI_CLASS_AN) { + $chardata[$i]['type'] = Ucdn::BIDI_CLASS_AN; + } + } + } + + // W5. A sequence of European terminators adjacent to European numbers changes to all European numbers. + for ($i = 0; $i < $numchars; ++$i) { + if ($chardata[$i]['type'] == Ucdn::BIDI_CLASS_ET) { + if ($i > 0 && $chardata[($i - 1)]['type'] == Ucdn::BIDI_CLASS_EN && $chardata[($i)]['level'] == $chardata[($i - 1)]['level']) { + $chardata[$i]['type'] = Ucdn::BIDI_CLASS_EN; + } else { + $j = $i + 1; + while ($j < $numchars && $chardata[$j]['level'] == $chardata[$i]['level']) { + if ($chardata[$j]['type'] == Ucdn::BIDI_CLASS_EN) { + $chardata[$i]['type'] = Ucdn::BIDI_CLASS_EN; + break; + } elseif ($chardata[$j]['type'] != Ucdn::BIDI_CLASS_ET) { + break; + } + ++$j; + } + } + } + } + + // W6. Otherwise, separators and terminators change to Other Neutral. + for ($i = 0; $i < $numchars; ++$i) { + if (($chardata[$i]['type'] == Ucdn::BIDI_CLASS_ET) || ($chardata[$i]['type'] == Ucdn::BIDI_CLASS_ES) || ($chardata[$i]['type'] == Ucdn::BIDI_CLASS_CS)) { + $chardata[$i]['type'] = Ucdn::BIDI_CLASS_ON; + } + } + + //W7. Search backward from each instance of a European number until the first strong type (R, L, or sor) is found. If an L is found, then change the type of the European number to L. + for ($i = 0; $i < $numchars; ++$i) { + if ($chardata[$i]['type'] == Ucdn::BIDI_CLASS_EN) { + if ($i == 0) { // Start of Level run + if ($chardata[$i]['sor'] == Ucdn::BIDI_CLASS_L) { + $chardata[$i]['type'] = $chardata[$i]['sor']; + } + } else { + for ($j = $i - 1; $j >= 0; $j--) { + if ($chardata[$j]['level'] != $chardata[$i]['level']) { // Level run boundary + if ($chardata[$j + 1]['sor'] == Ucdn::BIDI_CLASS_L) { + $chardata[$i]['type'] = $chardata[$j + 1]['sor']; + } + break; + } elseif ($chardata[$j]['type'] == Ucdn::BIDI_CLASS_L) { + $chardata[$i]['type'] = Ucdn::BIDI_CLASS_L; + break; + } elseif ($chardata[$j]['type'] == Ucdn::BIDI_CLASS_R) { + break; + } + } + } + } + } + + // N1. A sequence of neutrals takes the direction of the surrounding strong text if the text on both sides has the same direction. European and Arabic numbers act as if they were R in terms of their influence on neutrals. Start-of-level-run (sor) and end-of-level-run (eor) are used at level run boundaries. + for ($i = 0; $i < $numchars; ++$i) { + if ($chardata[$i]['type'] == Ucdn::BIDI_CLASS_ON || $chardata[$i]['type'] == Ucdn::BIDI_CLASS_WS) { + $left = -1; + // LEFT + if ($i == 0) { // first char + $left = $chardata[($i)]['sor']; + } elseif ($chardata[($i - 1)]['level'] != $chardata[($i)]['level']) { // run boundary + $left = $chardata[($i)]['sor']; + } elseif ($chardata[($i - 1)]['type'] == Ucdn::BIDI_CLASS_L) { + $left = Ucdn::BIDI_CLASS_L; + } elseif ($chardata[($i - 1)]['type'] == Ucdn::BIDI_CLASS_R || $chardata[($i - 1)]['type'] == Ucdn::BIDI_CLASS_EN || $chardata[($i - 1)]['type'] == Ucdn::BIDI_CLASS_AN) { + $left = Ucdn::BIDI_CLASS_R; + } + // RIGHT + $right = -1; + $j = $i; + // move to the right of any following neutrals OR hit a run boundary + while (($chardata[$j]['type'] == Ucdn::BIDI_CLASS_ON || $chardata[$j]['type'] == Ucdn::BIDI_CLASS_WS) && $j <= ($numchars - 1)) { + if ($j == ($numchars - 1)) { // last char + $right = $chardata[($j)]['eor']; + break; + } elseif ($chardata[($j + 1)]['level'] != $chardata[($j)]['level']) { // run boundary + $right = $chardata[($j)]['eor']; + break; + } elseif ($chardata[($j + 1)]['type'] == Ucdn::BIDI_CLASS_L) { + $right = Ucdn::BIDI_CLASS_L; + break; + } elseif ($chardata[($j + 1)]['type'] == Ucdn::BIDI_CLASS_R || $chardata[($j + 1)]['type'] == Ucdn::BIDI_CLASS_EN || $chardata[($j + 1)]['type'] == Ucdn::BIDI_CLASS_AN) { + $right = Ucdn::BIDI_CLASS_R; + break; + } + $j++; + } + if ($left > -1 && $left == $right) { + $chardata[$i]['orig_type'] = $chardata[$i]['type']; // Need to store the original 'WS' for reference in L1 below + $chardata[$i]['type'] = $left; + } + } + } + + // N2. Any remaining neutrals take the embedding direction + for ($i = 0; $i < $numchars; ++$i) { + if ($chardata[$i]['type'] == Ucdn::BIDI_CLASS_ON || $chardata[$i]['type'] == Ucdn::BIDI_CLASS_WS) { + $chardata[$i]['type'] = ($chardata[$i]['level'] % 2) ? Ucdn::BIDI_CLASS_R : Ucdn::BIDI_CLASS_L; + $chardata[$i]['orig_type'] = $chardata[$i]['type']; // Need to store the original 'WS' for reference in L1 below + } + } + + // I1. For all characters with an even (left-to-right) embedding direction, those of type R go up one level and those of type AN or EN go up two levels. + // I2. For all characters with an odd (right-to-left) embedding direction, those of type L, EN or AN go up one level. + for ($i = 0; $i < $numchars; ++$i) { + $odd = $chardata[$i]['level'] % 2; + if ($odd) { + if (($chardata[$i]['type'] == Ucdn::BIDI_CLASS_L) || ($chardata[$i]['type'] == Ucdn::BIDI_CLASS_AN) || ($chardata[$i]['type'] == Ucdn::BIDI_CLASS_EN)) { + $chardata[$i]['level'] += 1; + } + } else { + if ($chardata[$i]['type'] == Ucdn::BIDI_CLASS_R) { + $chardata[$i]['level'] += 1; + } elseif (($chardata[$i]['type'] == Ucdn::BIDI_CLASS_AN) || ($chardata[$i]['type'] == Ucdn::BIDI_CLASS_EN)) { + $chardata[$i]['level'] += 2; + } + } + $maxlevel = max($chardata[$i]['level'], $maxlevel); + } + + // NB + // Separate into lines at this point************ + // + // L1. On each line, reset the embedding level of the following characters to the paragraph embedding level: + // 1. Segment separators (Tab) 'S', + // 2. Paragraph separators 'B', + // 3. Any sequence of whitespace characters 'WS' preceding a segment separator or paragraph separator, and + // 4. Any sequence of whitespace characters 'WS' at the end of the line. + // The types of characters used here are the original types, not those modified by the previous phase cf N1 and N2******* + // Because a Paragraph Separator breaks lines, there will be at most one per line, at the end of that line. + + for ($i = ($numchars - 1); $i > 0; $i--) { + if ($chardata[$i]['type'] == Ucdn::BIDI_CLASS_WS || (isset($chardata[$i]['orig_type']) && $chardata[$i]['orig_type'] == Ucdn::BIDI_CLASS_WS)) { + $chardata[$i]['level'] = $pel; + } else { + break; + } + } + + + // L2. From the highest level found in the text to the lowest odd level on each line, including intermediate levels not actually present in the text, reverse any contiguous sequence of characters that are at that level or higher. + for ($j = $maxlevel; $j > 0; $j--) { + $ordarray = []; + $revarr = []; + $onlevel = false; + for ($i = 0; $i < $numchars; ++$i) { + if ($chardata[$i]['level'] >= $j) { + $onlevel = true; + + // L4. A character is depicted by a mirrored glyph if and only if (a) the resolved directionality of that character is R, and (b) the Bidi_Mirrored property value of that character is true. + if (isset(Ucdn::$mirror_pairs[$chardata[$i]['char']]) && $chardata[$i]['type'] == Ucdn::BIDI_CLASS_R) { + $chardata[$i]['char'] = Ucdn::$mirror_pairs[$chardata[$i]['char']]; + } + + $revarr[] = $chardata[$i]; + } else { + if ($onlevel) { + $revarr = array_reverse($revarr); + $ordarray = array_merge($ordarray, $revarr); + $revarr = []; + $onlevel = false; + } + $ordarray[] = $chardata[$i]; + } + } + if ($onlevel) { + $revarr = array_reverse($revarr); + $ordarray = array_merge($ordarray, $revarr); + } + $chardata = $ordarray; + } + + $group = ''; + $e = ''; + $GPOS = []; + $cctr = 0; + $rtl_content = 0x0; + foreach ($chardata as $cd) { + $e .= UtfString::code2utf($cd['char']); + $group .= $cd['group']; + if ($useGPOS && is_array($cd['GPOSinfo'])) { + $GPOS[$cctr] = $cd['GPOSinfo']; + $GPOS[$cctr]['wDir'] = ($cd['level'] % 2) ? 'RTL' : 'LTR'; + } + if ($cd['type'] == Ucdn::BIDI_CLASS_L) { + $rtl_content |= 1; + } elseif ($cd['type'] == Ucdn::BIDI_CLASS_R) { + $rtl_content |= 2; + } + $cctr++; + } + + + $chunkOTLdata['group'] = $group; + if ($useGPOS) { + $chunkOTLdata['GPOSinfo'] = $GPOS; + } + + return [$e, $rtl_content]; + } + + /** + * The following versions for BidiSort work on amalgamated chunks to process the whole paragraph + * + * Firstly set the level in the OTLdata - called from fn printbuffer() [_bidiPrepare] + * Secondly re-order - called from fn writeFlowingBlock and FinishFlowingBlock, when already divided into lines. [_bidiReorder] + */ + public function bidiPrepare(&$para, $dir) + { + + // Set the initial paragraph embedding level + $pel = 0; // paragraph embedding level + if ($dir == 'rtl') { + $pel = 1; + } + + // X1. Begin by setting the current embedding level to the paragraph embedding level. Set the directional override status to neutral. + // Current Embedding Level + $cel = $pel; + // directional override status (-1 is Neutral) + $dos = -1; + $remember = []; + $controlchars = false; + $strongrtl = false; + $diid = 0; // direction isolate ID + $dictr = 0; // direction isolate counter + // Process each character iteratively, applying rules X2 through X9. Only embedding levels from 0 to 61 are valid in this phase. + // In the resolution of levels in rules I1 and I2, the maximum embedding level of 62 can be reached. + $numchunks = count($para); + for ($nc = 0; $nc < $numchunks; $nc++) { + $chunkOTLdata = & $para[$nc][18]; + + $numchars = count($chunkOTLdata['char_data']); + for ($i = 0; $i < $numchars; ++$i) { + if ($chunkOTLdata['char_data'][$i]['uni'] == 8235) { // RLE + // X2. With each RLE, compute the least greater odd embedding level. + // a. If this new level would be valid, then this embedding code is valid. Remember (push) the current embedding level and override status. Reset the current level to this new level, and reset the override status to neutral. + // b. If the new level would not be valid, then this code is invalid. Do not change the current level or override status. + $next_level = $cel + ($cel % 2) + 1; + if ($next_level < 62) { + $remember[] = ['num' => 8235, 'cel' => $cel, 'dos' => $dos]; + $cel = $next_level; + $dos = -1; + $controlchars = true; + } + } elseif ($chunkOTLdata['char_data'][$i]['uni'] == 8234) { // LRE + // X3. With each LRE, compute the least greater even embedding level. + // a. If this new level would be valid, then this embedding code is valid. Remember (push) the current embedding level and override status. Reset the current level to this new level, and reset the override status to neutral. + // b. If the new level would not be valid, then this code is invalid. Do not change the current level or override status. + $next_level = $cel + 2 - ($cel % 2); + if ($next_level < 62) { + $remember[] = ['num' => 8234, 'cel' => $cel, 'dos' => $dos]; + $cel = $next_level; + $dos = -1; + $controlchars = true; + } + } elseif ($chunkOTLdata['char_data'][$i]['uni'] == 8238) { // RLO + // X4. With each RLO, compute the least greater odd embedding level. + // a. If this new level would be valid, then this embedding code is valid. Remember (push) the current embedding level and override status. Reset the current level to this new level, and reset the override status to right-to-left. + // b. If the new level would not be valid, then this code is invalid. Do not change the current level or override status. + $next_level = $cel + ($cel % 2) + 1; + if ($next_level < 62) { + $remember[] = ['num' => 8238, 'cel' => $cel, 'dos' => $dos]; + $cel = $next_level; + $dos = Ucdn::BIDI_CLASS_R; + $controlchars = true; + } + } elseif ($chunkOTLdata['char_data'][$i]['uni'] == 8237) { // LRO + // X5. With each LRO, compute the least greater even embedding level. + // a. If this new level would be valid, then this embedding code is valid. Remember (push) the current embedding level and override status. Reset the current level to this new level, and reset the override status to left-to-right. + // b. If the new level would not be valid, then this code is invalid. Do not change the current level or override status. + $next_level = $cel + 2 - ($cel % 2); + if ($next_level < 62) { + $remember[] = ['num' => 8237, 'cel' => $cel, 'dos' => $dos]; + $cel = $next_level; + $dos = Ucdn::BIDI_CLASS_L; + $controlchars = true; + } + } elseif ($chunkOTLdata['char_data'][$i]['uni'] == 8236) { // PDF + // X7. With each PDF, determine the matching embedding or override code. If there was a valid matching code, restore (pop) the last remembered (pushed) embedding level and directional override. + if (count($remember)) { + $last = count($remember) - 1; + if (($remember[$last]['num'] == 8235) || ($remember[$last]['num'] == 8234) || ($remember[$last]['num'] == 8238) || + ($remember[$last]['num'] == 8237)) { + $match = array_pop($remember); + $cel = $match['cel']; + $dos = $match['dos']; + } + } + } elseif ($chunkOTLdata['char_data'][$i]['uni'] == 8294 || $chunkOTLdata['char_data'][$i]['uni'] == 8295 || + $chunkOTLdata['char_data'][$i]['uni'] == 8296) { // LRI // RLI // FSI + // X5a. With each RLI: + // X5b. With each LRI: + // X5c. With each FSI, apply rules P2 and P3 for First Strong character + // Set the RLI/LRI/FSI embedding level to the embedding level of the last entry on the directional status stack. + if ($dos != -1) { + $chardir = $dos; + } else { + $chardir = $chunkOTLdata['char_data'][$i]['bidi_class']; + } + $chunkOTLdata['char_data'][$i]['level'] = $cel; + $chunkOTLdata['char_data'][$i]['type'] = $chardir; + $chunkOTLdata['char_data'][$i]['diid'] = $diid; + + $fsi = ''; + // X5c. With each FSI, apply rules P2 and P3 within the isolate run for First Strong character + if ($chunkOTLdata['char_data'][$i]['uni'] == 8296) { // FSI + $lvl = 0; + $nc2 = $nc; + $i2 = $i; + while (!($nc2 == ($numchunks - 1) && $i2 == ((count($para[$nc2][18]['char_data'])) - 1))) { // while not at end of last chunk + $i2++; + if ($i2 >= count($para[$nc2][18]['char_data'])) { + $nc2++; + $i2 = 0; + } + if ($lvl > 0) { + continue; + } + if ($para[$nc2][18]['char_data'][$i2]['uni'] == 8294 || $para[$nc2][18]['char_data'][$i2]['uni'] == 8295 || $para[$nc2][18]['char_data'][$i2]['uni'] == 8296) { + $lvl++; + continue; + } + if ($para[$nc2][18]['char_data'][$i2]['uni'] == 8297) { + $lvl--; + if ($lvl < 0) { + break; + } + } + if ($para[$nc2][18]['char_data'][$i2]['bidi_class'] === Ucdn::BIDI_CLASS_L || $para[$nc2][18]['char_data'][$i2]['bidi_class'] == Ucdn::BIDI_CLASS_AL || $para[$nc2][18]['char_data'][$i2]['bidi_class'] === Ucdn::BIDI_CLASS_R) { + $fsi = $para[$nc2][18]['char_data'][$i2]['bidi_class']; + break; + } + } + // if fsi not found, fsi is same as paragraph embedding level + if (!$fsi && $fsi !== 0) { + if ($pel == 1) { + $fsi = Ucdn::BIDI_CLASS_R; + } else { + $fsi = Ucdn::BIDI_CLASS_L; + } + } + } + + if ($chunkOTLdata['char_data'][$i]['uni'] == 8294 || $fsi === Ucdn::BIDI_CLASS_L) { // LRI or FSI-L + // Compute the least even embedding level greater than the embedding level of the last entry on the directional status stack. + $next_level = $cel + 2 - ($cel % 2); + } elseif ($chunkOTLdata['char_data'][$i]['uni'] == 8295 || $fsi == Ucdn::BIDI_CLASS_R || $fsi == Ucdn::BIDI_CLASS_AL) { // RLI or FSI-R + // Compute the least odd embedding level greater than the embedding level of the last entry on the directional status stack. + $next_level = $cel + ($cel % 2) + 1; + } + + + // Increment the isolate count by one, and push an entry consisting of the new embedding level, + // neutral directional override status, and true directional isolate status onto the directional status stack. + $remember[] = ['num' => $chunkOTLdata['char_data'][$i]['uni'], 'cel' => $cel, 'dos' => $dos, 'diid' => $diid]; + $cel = $next_level; + $dos = -1; + $diid = ++$dictr; // Set new direction isolate ID after incrementing direction isolate counter + + $controlchars = true; + } elseif ($chunkOTLdata['char_data'][$i]['uni'] == 8297) { // PDI + // X6a. With each PDI, perform the following steps: + // Pop the last entry from the directional status stack and decrement the isolate count by one. + while (count($remember)) { + $last = count($remember) - 1; + if (($remember[$last]['num'] == 8294) || ($remember[$last]['num'] == 8295) || ($remember[$last]['num'] == 8296)) { + $match = array_pop($remember); + $cel = $match['cel']; + $dos = $match['dos']; + $diid = $match['diid']; + break; + } // End/close any open embedding states not explicitly closed during the isolate + elseif (($remember[$last]['num'] == 8235) || ($remember[$last]['num'] == 8234) || ($remember[$last]['num'] == 8238) || + ($remember[$last]['num'] == 8237)) { + $match = array_pop($remember); + } + } + // In all cases, set the PDI’s level to the embedding level of the last entry on the directional status stack left after the steps above. + // NB The level assigned to an isolate initiator is always the same as that assigned to the matching PDI. + if ($dos != -1) { + $chardir = $dos; + } else { + $chardir = $chunkOTLdata['char_data'][$i]['bidi_class']; + } + $chunkOTLdata['char_data'][$i]['level'] = $cel; + $chunkOTLdata['char_data'][$i]['type'] = $chardir; + $chunkOTLdata['char_data'][$i]['diid'] = $diid; + $controlchars = true; + } elseif ($chunkOTLdata['char_data'][$i]['uni'] == 10) { // NEW LINE + // Reset to start values + $cel = $pel; + $dos = -1; + $remember = []; + } else { + // X6. For all types besides RLE, LRE, RLO, LRO, and PDF: + // a. Set the level of the current character to the current embedding level. + // b. When the directional override status is not neutral, reset the current character type to directional override status. + if ($dos != -1) { + $chardir = $dos; + } else { + $chardir = $chunkOTLdata['char_data'][$i]['bidi_class']; + if ($chardir == Ucdn::BIDI_CLASS_R || $chardir == Ucdn::BIDI_CLASS_AL) { + $strongrtl = true; + } + } + $chunkOTLdata['char_data'][$i]['level'] = $cel; + $chunkOTLdata['char_data'][$i]['type'] = $chardir; + $chunkOTLdata['char_data'][$i]['diid'] = $diid; + } + } + // X8. All explicit directional embeddings and overrides are completely terminated at the end of each paragraph. + // Paragraph separators are not included in the embedding. + // X9. Remove all RLE, LRE, RLO, LRO, and PDF codes. + if ($controlchars) { + $this->removeChar($para[$nc][0], $para[$nc][18], "\xe2\x80\xaa"); + $this->removeChar($para[$nc][0], $para[$nc][18], "\xe2\x80\xab"); + $this->removeChar($para[$nc][0], $para[$nc][18], "\xe2\x80\xac"); + $this->removeChar($para[$nc][0], $para[$nc][18], "\xe2\x80\xad"); + $this->removeChar($para[$nc][0], $para[$nc][18], "\xe2\x80\xae"); + preg_replace("/\x{202a}-\x{202e}/u", '', $para[$nc][0]); + } + } + + // Remove any blank chunks made by removing directional codes + $numchunks = count($para); + for ($nc = ($numchunks - 1); $nc >= 0; $nc--) { + if (count($para[$nc][18]['char_data']) == 0) { + array_splice($para, $nc, 1); + } + } + if ($dir != 'rtl' && !$strongrtl && !$controlchars) { + return; + } + + $numchunks = count($para); + + // X10. Determine the start-of-sequence (sor) and end-of-sequence (eor) types, either L or R, for each isolating run sequence. These depend on the higher of the two levels on either side of the sequence boundary: + // For sor, compare the level of the first character in the sequence with the level of the character preceding it in the paragraph or if there is none, with the paragraph embedding level. + // For eor, compare the level of the last character in the sequence with the level of the character following it in the paragraph or if there is none, with the paragraph embedding level. + // If the higher level is odd, the sor or eor is R; otherwise, it is L. + + for ($ir = 0; $ir <= $dictr; $ir++) { + $prelevel = $pel; + $postlevel = $pel; + $firstchar = true; + for ($nc = 0; $nc < $numchunks; $nc++) { + $chardata = & $para[$nc][18]['char_data']; + $numchars = count($chardata); + for ($i = 0; $i < $numchars; ++$i) { + if (!isset($chardata[$i]['diid']) || $chardata[$i]['diid'] != $ir) { + continue; + } // Ignore characters in a different isolate run + $right = $postlevel; + $nc2 = $nc; + $i2 = $i; + while (!($nc2 == ($numchunks - 1) && $i2 == ((count($para[$nc2][18]['char_data'])) - 1))) { // while not at end of last chunk + $i2++; + if ($i2 >= count($para[$nc2][18]['char_data'])) { + $nc2++; + $i2 = 0; + } + + if (isset($para[$nc2][18]['char_data'][$i2]['diid']) && $para[$nc2][18]['char_data'][$i2]['diid'] == $ir) { + $right = $para[$nc2][18]['char_data'][$i2]['level']; + break; + } + } + + $level = $chardata[$i]['level']; + if ($firstchar || $level != $prelevel) { + $chardata[$i]['sor'] = max($prelevel, $level) % 2 ? Ucdn::BIDI_CLASS_R : Ucdn::BIDI_CLASS_L; + } + if (($nc == ($numchunks - 1) && $i == ($numchars - 1)) || $level != $right) { + $chardata[$i]['eor'] = max($right, $level) % 2 ? Ucdn::BIDI_CLASS_R : Ucdn::BIDI_CLASS_L; + } + $prelevel = $level; + $firstchar = false; + } + } + } + + + // 3.3.3 Resolving Weak Types + // Weak types are now resolved one level run at a time. At level run boundaries where the type of the character on the other side of the boundary is required, the type assigned to sor or eor is used. + // Nonspacing marks are now resolved based on the previous characters. + // W1. Examine each nonspacing mark (NSM) in the level run, and change the type of the NSM to the type of the previous character. If the NSM is at the start of the level run, it will get the type of sor. + for ($ir = 0; $ir <= $dictr; $ir++) { + $prevtype = 0; + for ($nc = 0; $nc < $numchunks; $nc++) { + $chardata = & $para[$nc][18]['char_data']; + $numchars = count($chardata); + for ($i = 0; $i < $numchars; ++$i) { + if (!isset($chardata[$i]['diid']) || $chardata[$i]['diid'] != $ir) { + continue; + } // Ignore characters in a different isolate run + if ($chardata[$i]['type'] == Ucdn::BIDI_CLASS_NSM) { + if (isset($chardata[$i]['sor'])) { + $chardata[$i]['type'] = $chardata[$i]['sor']; + } else { + $chardata[$i]['type'] = $prevtype; + } + } + $prevtype = $chardata[$i]['type']; + } + } + } + + // W2. Search backward from each instance of a European number until the first strong type (R, L, AL or sor) is found. If an AL is found, change the type of the European number to Arabic number. + for ($ir = 0; $ir <= $dictr; $ir++) { + $laststrongtype = -1; + for ($nc = 0; $nc < $numchunks; $nc++) { + $chardata = & $para[$nc][18]['char_data']; + $numchars = count($chardata); + for ($i = 0; $i < $numchars; ++$i) { + if (!isset($chardata[$i]['diid']) || $chardata[$i]['diid'] != $ir) { + continue; + } // Ignore characters in a different isolate run + if (isset($chardata[$i]['sor'])) { + $laststrongtype = $chardata[$i]['sor']; + } + if ($chardata[$i]['type'] == Ucdn::BIDI_CLASS_EN && $laststrongtype == Ucdn::BIDI_CLASS_AL) { + $chardata[$i]['type'] = Ucdn::BIDI_CLASS_AN; + } + if ($chardata[$i]['type'] == Ucdn::BIDI_CLASS_L || $chardata[$i]['type'] == Ucdn::BIDI_CLASS_R || $chardata[$i]['type'] == Ucdn::BIDI_CLASS_AL) { + $laststrongtype = $chardata[$i]['type']; + } + } + } + } + + + // W3. Change all ALs to R. + for ($nc = 0; $nc < $numchunks; $nc++) { + $chardata = & $para[$nc][18]['char_data']; + $numchars = count($chardata); + for ($i = 0; $i < $numchars; ++$i) { + if (isset($chardata[$i]['type']) && $chardata[$i]['type'] == Ucdn::BIDI_CLASS_AL) { + $chardata[$i]['type'] = Ucdn::BIDI_CLASS_R; + } + } + } + + + // W4. A single European separator between two European numbers changes to a European number. A single common separator between two numbers of the same type changes to that type. + for ($ir = 0; $ir <= $dictr; $ir++) { + $prevtype = -1; + $nexttype = -1; + for ($nc = 0; $nc < $numchunks; $nc++) { + $chardata = & $para[$nc][18]['char_data']; + $numchars = count($chardata); + for ($i = 0; $i < $numchars; ++$i) { + if (!isset($chardata[$i]['diid']) || $chardata[$i]['diid'] != $ir) { + continue; + } // Ignore characters in a different isolate run + // Get next type + $nexttype = -1; + $nc2 = $nc; + $i2 = $i; + while (!($nc2 == ($numchunks - 1) && $i2 == ((count($para[$nc2][18]['char_data'])) - 1))) { // while not at end of last chunk + $i2++; + if ($i2 >= count($para[$nc2][18]['char_data'])) { + $nc2++; + $i2 = 0; + } + + if (isset($para[$nc2][18]['char_data'][$i2]['diid']) && $para[$nc2][18]['char_data'][$i2]['diid'] == $ir) { + $nexttype = $para[$nc2][18]['char_data'][$i2]['type']; + break; + } + } + + if (!isset($chardata[$i]['sor']) && !isset($chardata[$i]['eor'])) { + if ($chardata[$i]['type'] == Ucdn::BIDI_CLASS_ES && $prevtype == Ucdn::BIDI_CLASS_EN && $nexttype == Ucdn::BIDI_CLASS_EN) { + $chardata[$i]['type'] = Ucdn::BIDI_CLASS_EN; + } elseif ($chardata[$i]['type'] == Ucdn::BIDI_CLASS_CS && $prevtype == Ucdn::BIDI_CLASS_EN && $nexttype == Ucdn::BIDI_CLASS_EN) { + $chardata[$i]['type'] = Ucdn::BIDI_CLASS_EN; + } elseif ($chardata[$i]['type'] == Ucdn::BIDI_CLASS_CS && $prevtype == Ucdn::BIDI_CLASS_AN && $nexttype == Ucdn::BIDI_CLASS_AN) { + $chardata[$i]['type'] = Ucdn::BIDI_CLASS_AN; + } + } + $prevtype = $chardata[$i]['type']; + } + } + } + + // W5. A sequence of European terminators adjacent to European numbers changes to all European numbers. + for ($ir = 0; $ir <= $dictr; $ir++) { + $prevtype = -1; + $nexttype = -1; + for ($nc = 0; $nc < $numchunks; $nc++) { + $chardata = & $para[$nc][18]['char_data']; + $numchars = count($chardata); + for ($i = 0; $i < $numchars; ++$i) { + if (!isset($chardata[$i]['diid']) || $chardata[$i]['diid'] != $ir) { + continue; + } // Ignore characters in a different isolate run + if (isset($chardata[$i]['sor'])) { + $prevtype = $chardata[$i]['sor']; + } + + if ($chardata[$i]['type'] == Ucdn::BIDI_CLASS_ET) { + if ($prevtype == Ucdn::BIDI_CLASS_EN) { + $chardata[$i]['type'] = Ucdn::BIDI_CLASS_EN; + } elseif (!isset($chardata[$i]['eor'])) { + $nexttype = -1; + $nc2 = $nc; + $i2 = $i; + while (!($nc2 == ($numchunks - 1) && $i2 == ((count($para[$nc2][18]['char_data'])) - 1))) { // while not at end of last chunk + $i2++; + if ($i2 >= count($para[$nc2][18]['char_data'])) { + $nc2++; + $i2 = 0; + } + if (!isset($para[$nc2][18]['char_data'][$i2]['diid']) || $para[$nc2][18]['char_data'][$i2]['diid'] != $ir) { + continue; + } + $nexttype = $para[$nc2][18]['char_data'][$i2]['type']; + if (isset($para[$nc2][18]['char_data'][$i2]['sor'])) { + break; + } + if ($nexttype == Ucdn::BIDI_CLASS_EN) { + $chardata[$i]['type'] = Ucdn::BIDI_CLASS_EN; + break; + } elseif ($nexttype != Ucdn::BIDI_CLASS_ET) { + break; + } + } + } + } + $prevtype = $chardata[$i]['type']; + } + } + } + + // W6. Otherwise, separators and terminators change to Other Neutral. + for ($nc = 0; $nc < $numchunks; $nc++) { + $chardata = & $para[$nc][18]['char_data']; + $numchars = count($chardata); + for ($i = 0; $i < $numchars; ++$i) { + if (isset($chardata[$i]['type']) && (($chardata[$i]['type'] == Ucdn::BIDI_CLASS_ET) || ($chardata[$i]['type'] == Ucdn::BIDI_CLASS_ES) || ($chardata[$i]['type'] == Ucdn::BIDI_CLASS_CS))) { + $chardata[$i]['type'] = Ucdn::BIDI_CLASS_ON; + } + } + } + + //W7. Search backward from each instance of a European number until the first strong type (R, L, or sor) is found. If an L is found, then change the type of the European number to L. + for ($ir = 0; $ir <= $dictr; $ir++) { + $laststrongtype = -1; + for ($nc = 0; $nc < $numchunks; $nc++) { + $chardata = & $para[$nc][18]['char_data']; + $numchars = count($chardata); + for ($i = 0; $i < $numchars; ++$i) { + if (!isset($chardata[$i]['diid']) || $chardata[$i]['diid'] != $ir) { + continue; + } // Ignore characters in a different isolate run + if (isset($chardata[$i]['sor'])) { + $laststrongtype = $chardata[$i]['sor']; + } + if (isset($chardata[$i]['type']) && $chardata[$i]['type'] == Ucdn::BIDI_CLASS_EN && $laststrongtype == Ucdn::BIDI_CLASS_L) { + $chardata[$i]['type'] = Ucdn::BIDI_CLASS_L; + } + if (isset($chardata[$i]['type']) && ($chardata[$i]['type'] == Ucdn::BIDI_CLASS_L || $chardata[$i]['type'] == Ucdn::BIDI_CLASS_R || $chardata[$i]['type'] == Ucdn::BIDI_CLASS_AL)) { + $laststrongtype = $chardata[$i]['type']; + } + } + } + } + + // N1. A sequence of neutrals takes the direction of the surrounding strong text if the text on both sides has the same direction. European and Arabic numbers act as if they were R in terms of their influence on neutrals. Start-of-level-run (sor) and end-of-level-run (eor) are used at level run boundaries. + for ($ir = 0; $ir <= $dictr; $ir++) { + $laststrongtype = -1; + for ($nc = 0; $nc < $numchunks; $nc++) { + $chardata = & $para[$nc][18]['char_data']; + $numchars = count($chardata); + for ($i = 0; $i < $numchars; ++$i) { + if (!isset($chardata[$i]['diid']) || $chardata[$i]['diid'] != $ir) { + continue; + } // Ignore characters in a different isolate run + if (isset($chardata[$i]['sor'])) { + $laststrongtype = $chardata[$i]['sor']; + } + if ($chardata[$i]['type'] == Ucdn::BIDI_CLASS_ON || $chardata[$i]['type'] == Ucdn::BIDI_CLASS_WS) { + $left = -1; + // LEFT + if ($laststrongtype == Ucdn::BIDI_CLASS_R || $laststrongtype == Ucdn::BIDI_CLASS_EN || $laststrongtype == Ucdn::BIDI_CLASS_AN) { + $left = Ucdn::BIDI_CLASS_R; + } elseif ($laststrongtype == Ucdn::BIDI_CLASS_L) { + $left = Ucdn::BIDI_CLASS_L; + } + // RIGHT + $right = -1; + // move to the right of any following neutrals OR hit a run boundary + + if (isset($chardata[$i]['eor'])) { + $right = $chardata[$i]['eor']; + } else { + $nexttype = -1; + $nc2 = $nc; + $i2 = $i; + while (!($nc2 == ($numchunks - 1) && $i2 == ((count($para[$nc2][18]['char_data'])) - 1))) { // while not at end of last chunk + $i2++; + if ($i2 >= count($para[$nc2][18]['char_data'])) { + $nc2++; + $i2 = 0; + } + if (!isset($para[$nc2][18]['char_data'][$i2]['diid']) || $para[$nc2][18]['char_data'][$i2]['diid'] != $ir) { + continue; + } + $nexttype = $para[$nc2][18]['char_data'][$i2]['type']; + if ($nexttype == Ucdn::BIDI_CLASS_R || $nexttype == Ucdn::BIDI_CLASS_EN || $nexttype == Ucdn::BIDI_CLASS_AN) { + $right = Ucdn::BIDI_CLASS_R; + break; + } elseif ($nexttype == Ucdn::BIDI_CLASS_L) { + $right = Ucdn::BIDI_CLASS_L; + break; + } elseif (isset($para[$nc2][18]['char_data'][$i2]['eor'])) { + $right = $para[$nc2][18]['char_data'][$i2]['eor']; + break; + } + } + } + + if ($left > -1 && $left == $right) { + $chardata[$i]['orig_type'] = $chardata[$i]['type']; // Need to store the original 'WS' for reference in L1 below + $chardata[$i]['type'] = $left; + } + } elseif ($chardata[$i]['type'] == Ucdn::BIDI_CLASS_L || $chardata[$i]['type'] == Ucdn::BIDI_CLASS_R || $chardata[$i]['type'] == Ucdn::BIDI_CLASS_EN || $chardata[$i]['type'] == Ucdn::BIDI_CLASS_AN) { + $laststrongtype = $chardata[$i]['type']; + } + } + } + } + + // N2. Any remaining neutrals take the embedding direction + for ($nc = 0; $nc < $numchunks; $nc++) { + $chardata = & $para[$nc][18]['char_data']; + $numchars = count($chardata); + for ($i = 0; $i < $numchars; ++$i) { + if (isset($chardata[$i]['type']) && ($chardata[$i]['type'] == Ucdn::BIDI_CLASS_ON || $chardata[$i]['type'] == Ucdn::BIDI_CLASS_WS)) { + $chardata[$i]['orig_type'] = $chardata[$i]['type']; // Need to store the original 'WS' for reference in L1 below + $chardata[$i]['type'] = ($chardata[$i]['level'] % 2) ? Ucdn::BIDI_CLASS_R : Ucdn::BIDI_CLASS_L; + } + } + } + + // I1. For all characters with an even (left-to-right) embedding direction, those of type R go up one level and those of type AN or EN go up two levels. + // I2. For all characters with an odd (right-to-left) embedding direction, those of type L, EN or AN go up one level. + for ($nc = 0; $nc < $numchunks; $nc++) { + $chardata = & $para[$nc][18]['char_data']; + $numchars = count($chardata); + for ($i = 0; $i < $numchars; ++$i) { + if (isset($chardata[$i]['level'])) { + $odd = $chardata[$i]['level'] % 2; + if ($odd) { + if (($chardata[$i]['type'] == Ucdn::BIDI_CLASS_L) || ($chardata[$i]['type'] == Ucdn::BIDI_CLASS_AN) || ($chardata[$i]['type'] == Ucdn::BIDI_CLASS_EN)) { + $chardata[$i]['level'] += 1; + } + } else { + if ($chardata[$i]['type'] == Ucdn::BIDI_CLASS_R) { + $chardata[$i]['level'] += 1; + } elseif (($chardata[$i]['type'] == Ucdn::BIDI_CLASS_AN) || ($chardata[$i]['type'] == Ucdn::BIDI_CLASS_EN)) { + $chardata[$i]['level'] += 2; + } + } + } + } + } + + // Remove Isolate formatters + $numchunks = count($para); + if ($controlchars) { + for ($nc = 0; $nc < $numchunks; $nc++) { + $this->removeChar($para[$nc][0], $para[$nc][18], "\xe2\x81\xa6"); + $this->removeChar($para[$nc][0], $para[$nc][18], "\xe2\x81\xa7"); + $this->removeChar($para[$nc][0], $para[$nc][18], "\xe2\x81\xa8"); + $this->removeChar($para[$nc][0], $para[$nc][18], "\xe2\x81\xa9"); + preg_replace("/\x{2066}-\x{2069}/u", '', $para[$nc][0]); + } + // Remove any blank chunks made by removing directional codes + for ($nc = ($numchunks - 1); $nc >= 0; $nc--) { + if (count($para[$nc][18]['char_data']) == 0) { + array_splice($para, $nc, 1); + } + } + } + } + + /** + * Reorder, once divided into lines + */ + public function bidiReorder(&$chunkorder, &$content, &$cOTLdata, $blockdir) + { + + $bidiData = []; + + // First combine into one array (and get the highest level in use) + $numchunks = count($content); + $maxlevel = 0; + for ($nc = 0; $nc < $numchunks; $nc++) { + $numchars = isset($cOTLdata[$nc]['char_data']) ? count($cOTLdata[$nc]['char_data']) : 0; + for ($i = 0; $i < $numchars; ++$i) { + $carac = []; + if (isset($cOTLdata[$nc]['GPOSinfo'][$i])) { + $carac['GPOSinfo'] = $cOTLdata[$nc]['GPOSinfo'][$i]; + } + $carac['uni'] = $cOTLdata[$nc]['char_data'][$i]['uni']; + if (isset($cOTLdata[$nc]['char_data'][$i]['type'])) { + $carac['type'] = $cOTLdata[$nc]['char_data'][$i]['type']; + } + if (isset($cOTLdata[$nc]['char_data'][$i]['level'])) { + $carac['level'] = $cOTLdata[$nc]['char_data'][$i]['level']; + } + if (isset($cOTLdata[$nc]['char_data'][$i]['orig_type'])) { + $carac['orig_type'] = $cOTLdata[$nc]['char_data'][$i]['orig_type']; + } + $carac['group'] = $cOTLdata[$nc]['group'][$i]; + $carac['chunkid'] = $chunkorder[$nc]; // gives font id and/or object ID + + $maxlevel = max((isset($carac['level']) ? $carac['level'] : 0), $maxlevel); + $bidiData[] = $carac; + } + } + if ($maxlevel == 0) { + return; + } + + $numchars = count($bidiData); + + // L1. On each line, reset the embedding level of the following characters to the paragraph embedding level: + // 1. Segment separators (Tab) 'S', + // 2. Paragraph separators 'B', + // 3. Any sequence of whitespace characters 'WS' preceding a segment separator or paragraph separator, and + // 4. Any sequence of whitespace characters 'WS' at the end of the line. + // The types of characters used here are the original types, not those modified by the previous phase cf N1 and N2******* + // Because a Paragraph Separator breaks lines, there will be at most one per line, at the end of that line. + // Set the initial paragraph embedding level + if ($blockdir == 'rtl') { + $pel = 1; + } else { + $pel = 0; + } + + for ($i = ($numchars - 1); $i > 0; $i--) { + if ($bidiData[$i]['type'] == Ucdn::BIDI_CLASS_WS || (isset($bidiData[$i]['orig_type']) && $bidiData[$i]['orig_type'] == Ucdn::BIDI_CLASS_WS)) { + $bidiData[$i]['level'] = $pel; + } else { + break; + } + } + + // L2. From the highest level found in the text to the lowest odd level on each line, including intermediate levels not actually present in the text, reverse any contiguous sequence of characters that are at that level or higher. + for ($j = $maxlevel; $j > 0; $j--) { + $ordarray = []; + $revarr = []; + $onlevel = false; + for ($i = 0; $i < $numchars; ++$i) { + if ($bidiData[$i]['level'] >= $j) { + $onlevel = true; + // L4. A character is depicted by a mirrored glyph if and only if (a) the resolved directionality of that character is R, and (b) the Bidi_Mirrored property value of that character is true. + if (isset(Ucdn::$mirror_pairs[$bidiData[$i]['uni']]) && $bidiData[$i]['type'] == Ucdn::BIDI_CLASS_R) { + $bidiData[$i]['uni'] = Ucdn::$mirror_pairs[$bidiData[$i]['uni']]; + } + + $revarr[] = $bidiData[$i]; + } else { + if ($onlevel) { + $revarr = array_reverse($revarr); + $ordarray = array_merge($ordarray, $revarr); + $revarr = []; + $onlevel = false; + } + $ordarray[] = $bidiData[$i]; + } + } + if ($onlevel) { + $revarr = array_reverse($revarr); + $ordarray = array_merge($ordarray, $revarr); + } + $bidiData = $ordarray; + } + + $content = []; + $cOTLdata = []; + $chunkorder = []; + + $nc = -1; // New chunk order ID + $chunkid = -1; + + foreach ($bidiData as $carac) { + if ($carac['chunkid'] != $chunkid) { + $nc++; + $chunkorder[$nc] = $carac['chunkid']; + $cctr = 0; + $content[$nc] = ''; + $cOTLdata[$nc]['group'] = ''; + } + if ($carac['uni'] != 0xFFFC) { // Object replacement character (65532) + $content[$nc] .= UtfString::code2utf($carac['uni']); + $cOTLdata[$nc]['group'] .= $carac['group']; + if (!empty($carac['GPOSinfo'])) { + if (isset($carac['GPOSinfo'])) { + $cOTLdata[$nc]['GPOSinfo'][$cctr] = $carac['GPOSinfo']; + } + $cOTLdata[$nc]['GPOSinfo'][$cctr]['wDir'] = ($carac['level'] % 2) ? 'RTL' : 'LTR'; + } + } + $chunkid = $carac['chunkid']; + $cctr++; + } + } + + public function splitOTLdata(&$cOTLdata, $OTLcutoffpos, $OTLrestartpos = '') + { + if (!$OTLrestartpos) { + $OTLrestartpos = $OTLcutoffpos; + } + $newOTLdata = ['GPOSinfo' => [], 'char_data' => []]; + $newOTLdata['group'] = substr($cOTLdata['group'], $OTLrestartpos); + $cOTLdata['group'] = substr($cOTLdata['group'], 0, $OTLcutoffpos); + + if (isset($cOTLdata['GPOSinfo']) && $cOTLdata['GPOSinfo']) { + foreach ($cOTLdata['GPOSinfo'] as $k => $val) { + if ($k >= $OTLrestartpos) { + $newOTLdata['GPOSinfo'][($k - $OTLrestartpos)] = $val; + } + if ($k >= $OTLcutoffpos) { + unset($cOTLdata['GPOSinfo'][$k]); + //$cOTLdata['GPOSinfo'][$k] = array(); + } + } + } + if (isset($cOTLdata['char_data'])) { + $newOTLdata['char_data'] = array_slice($cOTLdata['char_data'], $OTLrestartpos); + array_splice($cOTLdata['char_data'], $OTLcutoffpos); + } + + // Not necessary - easier to debug + if (isset($cOTLdata['GPOSinfo'])) { + ksort($cOTLdata['GPOSinfo']); + } + if (isset($newOTLdata['GPOSinfo'])) { + ksort($newOTLdata['GPOSinfo']); + } + + return $newOTLdata; + } + + public function sliceOTLdata($OTLdata, $pos, $len) + { + $newOTLdata = ['GPOSinfo' => [], 'char_data' => []]; + $newOTLdata['group'] = substr($OTLdata['group'], $pos, $len); + + if ($OTLdata['GPOSinfo']) { + foreach ($OTLdata['GPOSinfo'] as $k => $val) { + if ($k >= $pos && $k < ($pos + $len)) { + $newOTLdata['GPOSinfo'][($k - $pos)] = $val; + } + } + } + + if (isset($OTLdata['char_data'])) { + $newOTLdata['char_data'] = array_slice($OTLdata['char_data'], $pos, $len); + } + + // Not necessary - easier to debug + if ($newOTLdata['GPOSinfo']) { + ksort($newOTLdata['GPOSinfo']); + } + + return $newOTLdata; + } + + /** + * Remove one or more occurrences of $char (single character) from $txt and adjust OTLdata + */ + public function removeChar(&$txt, &$cOTLdata, $char) + { + while (mb_strpos($txt, $char, 0, $this->mpdf->mb_enc) !== false) { + $pos = mb_strpos($txt, $char, 0, $this->mpdf->mb_enc); + $newGPOSinfo = []; + $cOTLdata['group'] = substr_replace($cOTLdata['group'], '', $pos, 1); + if ($cOTLdata['GPOSinfo']) { + foreach ($cOTLdata['GPOSinfo'] as $k => $val) { + if ($k > $pos) { + $newGPOSinfo[($k - 1)] = $val; + } elseif ($k != $pos) { + $newGPOSinfo[$k] = $val; + } + } + $cOTLdata['GPOSinfo'] = $newGPOSinfo; + } + if (isset($cOTLdata['char_data'])) { + array_splice($cOTLdata['char_data'], $pos, 1); + } + + $txt = preg_replace("/" . $char . "/", '', $txt, 1); + } + } + + /** + * Remove one or more occurrences of $char (single character) from $txt and adjust OTLdata + */ + public function replaceSpace(&$txt, &$cOTLdata) + { + $char = chr(194) . chr(160); // NBSP + while (mb_strpos($txt, $char, 0, $this->mpdf->mb_enc) !== false) { + $pos = mb_strpos($txt, $char, 0, $this->mpdf->mb_enc); + if ($cOTLdata['char_data'][$pos]['uni'] == 160) { + $cOTLdata['char_data'][$pos]['uni'] = 32; + } + $txt = preg_replace("/" . $char . "/", ' ', $txt, 1); + } + } + + public function trimOTLdata(&$cOTLdata, $Left = true, $Right = true) + { + $len = (!is_array($cOTLdata) || $cOTLdata['char_data'] === null) ? 0 : count($cOTLdata['char_data']); + $nLeft = 0; + $nRight = 0; + for ($i = 0; $i < $len; $i++) { + if ($cOTLdata['char_data'][$i]['uni'] == 32 || $cOTLdata['char_data'][$i]['uni'] == 12288) { + $nLeft++; + } // 12288 = 0x3000 = CJK space + else { + break; + } + } + for ($i = ($len - 1); $i >= 0; $i--) { + if ($cOTLdata['char_data'][$i]['uni'] == 32 || $cOTLdata['char_data'][$i]['uni'] == 12288) { + $nRight++; + } // 12288 = 0x3000 = CJK space + else { + break; + } + } + + // Trim Right + if ($Right && $nRight) { + $cOTLdata['group'] = substr($cOTLdata['group'], 0, strlen($cOTLdata['group']) - $nRight); + if ($cOTLdata['GPOSinfo']) { + foreach ($cOTLdata['GPOSinfo'] as $k => $val) { + if ($k >= $len - $nRight) { + unset($cOTLdata['GPOSinfo'][$k]); + } + } + } + if (isset($cOTLdata['char_data'])) { + for ($i = 0; $i < $nRight; $i++) { + array_pop($cOTLdata['char_data']); + } + } + } + // Trim Left + if ($Left && $nLeft) { + $cOTLdata['group'] = substr($cOTLdata['group'], $nLeft); + if ($cOTLdata['GPOSinfo']) { + $newPOSinfo = []; + foreach ($cOTLdata['GPOSinfo'] as $k => $val) { + if ($k >= $nLeft) { + $newPOSinfo[$k - $nLeft] = $cOTLdata['GPOSinfo'][$k]; + } + } + $cOTLdata['GPOSinfo'] = $newPOSinfo; + } + if (isset($cOTLdata['char_data'])) { + for ($i = 0; $i < $nLeft; $i++) { + array_shift($cOTLdata['char_data']); + } + } + } + } + + //////////////////////////////////////////////////////////////// + ////////// GENERAL OTL FUNCTIONS ///////////////// + //////////////////////////////////////////////////////////////// + + private function glyphToChar($gid) + { + return (ord($this->glyphIDtoUni[$gid * 3]) << 16) + (ord($this->glyphIDtoUni[$gid * 3 + 1]) << 8) + ord($this->glyphIDtoUni[$gid * 3 + 2]); + } + + private function unicode_hex($unicode_dec) + { + return (str_pad(strtoupper(dechex($unicode_dec)), 5, '0', STR_PAD_LEFT)); + } + + private function seek($pos) + { + $this->_pos = $pos; + } + + private function skip($delta) + { + $this->_pos += $delta; + } + + private function read_short() + { + $a = (ord($this->ttfOTLdata[$this->_pos]) << 8) + ord($this->ttfOTLdata[$this->_pos + 1]); + if ($a & (1 << 15)) { + $a = ($a - (1 << 16)); + } + $this->_pos += 2; + return $a; + } + + private function read_ushort() + { + $a = (ord($this->ttfOTLdata[$this->_pos]) << 8) + ord($this->ttfOTLdata[$this->_pos + 1]); + $this->_pos += 2; + return $a; + } + + private function _getCoverageGID() + { + // Called from Lookup Type 1, Format 1 - returns glyphIDs rather than hexstrings + // Need to do this separately to cache separately + // Otherwise the same as fn below _getCoverage + $offset = $this->_pos; + if (isset($this->LuDataCache[$this->fontkey]['GID'][$offset])) { + $g = $this->LuDataCache[$this->fontkey]['GID'][$offset]; + } else { + $g = []; + $CoverageFormat = $this->read_ushort(); + if ($CoverageFormat == 1) { + $CoverageGlyphCount = $this->read_ushort(); + for ($gid = 0; $gid < $CoverageGlyphCount; $gid++) { + $glyphID = $this->read_ushort(); + $g[] = $glyphID; + } + } + if ($CoverageFormat == 2) { + $RangeCount = $this->read_ushort(); + for ($r = 0; $r < $RangeCount; $r++) { + $start = $this->read_ushort(); + $end = $this->read_ushort(); + $StartCoverageIndex = $this->read_ushort(); // n/a + for ($glyphID = $start; $glyphID <= $end; $glyphID++) { + $g[] = $glyphID; + } + } + } + $this->LuDataCache[$this->fontkey]['GID'][$offset] = $g; + } + return $g; + } + + private function _getCoverage() + { + $offset = $this->_pos; + if (isset($this->LuDataCache[$this->fontkey][$offset])) { + $g = $this->LuDataCache[$this->fontkey][$offset]; + } else { + $g = []; + $CoverageFormat = $this->read_ushort(); + if ($CoverageFormat == 1) { + $CoverageGlyphCount = $this->read_ushort(); + for ($gid = 0; $gid < $CoverageGlyphCount; $gid++) { + $glyphID = $this->read_ushort(); + $g[] = $this->unicode_hex($this->glyphToChar($glyphID)); + } + } + if ($CoverageFormat == 2) { + $RangeCount = $this->read_ushort(); + for ($r = 0; $r < $RangeCount; $r++) { + $start = $this->read_ushort(); + $end = $this->read_ushort(); + $StartCoverageIndex = $this->read_ushort(); // n/a + for ($glyphID = $start; $glyphID <= $end; $glyphID++) { + $g[] = $this->unicode_hex($this->glyphToChar($glyphID)); + } + } + } + $this->LuDataCache[$this->fontkey][$offset] = $g; + } + return $g; + } + + private function _getClasses($offset) + { + if (isset($this->LuDataCache[$this->fontkey][$offset])) { + $GlyphByClass = $this->LuDataCache[$this->fontkey][$offset]; + } else { + $this->seek($offset); + $ClassFormat = $this->read_ushort(); + $GlyphByClass = []; + if ($ClassFormat == 1) { + $StartGlyph = $this->read_ushort(); + $GlyphCount = $this->read_ushort(); + for ($i = 0; $i < $GlyphCount; $i++) { + $startGlyphID = $StartGlyph + $i; + $endGlyphID = $StartGlyph + $i; + $class = $this->read_ushort(); + // Note: Font FreeSerif , tag "blws" + // $BacktrackClasses[0] is defined ? a mistake in the font ??? + // Let's ignore for now + if ($class > 0) { + for ($g = $startGlyphID; $g <= $endGlyphID; $g++) { + if ($this->glyphToChar($g)) { + $GlyphByClass[$class][$this->glyphToChar($g)] = 1; + } + } + } + } + } elseif ($ClassFormat == 2) { + $tableCount = $this->read_ushort(); + for ($i = 0; $i < $tableCount; $i++) { + $startGlyphID = $this->read_ushort(); + $endGlyphID = $this->read_ushort(); + $class = $this->read_ushort(); + // Note: Font FreeSerif , tag "blws" + // $BacktrackClasses[0] is defined ? a mistake in the font ??? + // Let's ignore for now + if ($class > 0) { + for ($g = $startGlyphID; $g <= $endGlyphID; $g++) { + if ($this->glyphToChar($g)) { + $GlyphByClass[$class][$this->glyphToChar($g)] = 1; + } + } + } + } + } + $this->LuDataCache[$this->fontkey][$offset] = $GlyphByClass; + } + return $GlyphByClass; + } + + private function _getOTLscriptTag($ScriptLang, $scripttag, $scriptblock, $shaper, $useOTL, $mode) + { + // ScriptLang is the array of available script/lang tags supported by the font + // $scriptblock is the (number/code) for the script of the actual text string based on Unicode properties (Ucdn::$uni_scriptblock) + // $scripttag is the default tag derived from $scriptblock + /* + http://www.microsoft.com/typography/otspec/ttoreg.htm + http://www.microsoft.com/typography/otspec/scripttags.htm + + Values for useOTL + + Bit dn hn Value + 1 1 0x0001 GSUB/GPOS - Latin scripts + 2 2 0x0002 GSUB/GPOS - Cyrillic scripts + 3 4 0x0004 GSUB/GPOS - Greek scripts + 4 8 0x0008 GSUB/GPOS - CJK scripts (excluding Hangul-Jamo) + 5 16 0x0010 (Reserved) + 6 32 0x0020 (Reserved) + 7 64 0x0040 (Reserved) + 8 128 0x0080 GSUB/GPOS - All other scripts (including all RTL scripts, complex scripts with shapers etc) + + NB If change for RTL - cf. function magic_reverse_dir in mpdf.php to update + + */ + + + if ($scriptblock == Ucdn::SCRIPT_LATIN) { + if (!($useOTL & 0x01)) { + return ['', false]; + } + } elseif ($scriptblock == Ucdn::SCRIPT_CYRILLIC) { + if (!($useOTL & 0x02)) { + return ['', false]; + } + } elseif ($scriptblock == Ucdn::SCRIPT_GREEK) { + if (!($useOTL & 0x04)) { + return ['', false]; + } + } elseif ($scriptblock >= Ucdn::SCRIPT_HIRAGANA && $scriptblock <= Ucdn::SCRIPT_YI) { + if (!($useOTL & 0x08)) { + return ['', false]; + } + } else { + if (!($useOTL & 0x80)) { + return ['', false]; + } + } + + // If availabletags includes scripttag - choose + if (isset($ScriptLang[$scripttag])) { + return [$scripttag, false]; + } + + // If INDIC (or Myanmar) and available tag not includes new version, check if includes old version & choose old version + if ($shaper) { + switch ($scripttag) { + case 'bng2': + if (isset($ScriptLang['beng'])) { + return ['beng', true]; + } + // fallthrough + case 'dev2': + if (isset($ScriptLang['deva'])) { + return ['deva', true]; + } + // fallthrough + case 'gjr2': + if (isset($ScriptLang['gujr'])) { + return ['gujr', true]; + } + // fallthrough + case 'gur2': + if (isset($ScriptLang['guru'])) { + return ['guru', true]; + } + // fallthrough + case 'knd2': + if (isset($ScriptLang['knda'])) { + return ['knda', true]; + } + // fallthrough + case 'mlm2': + if (isset($ScriptLang['mlym'])) { + return ['mlym', true]; + } + // fallthrough + case 'ory2': + if (isset($ScriptLang['orya'])) { + return ['orya', true]; + } + // fallthrough + case 'tml2': + if (isset($ScriptLang['taml'])) { + return ['taml', true]; + } + // fallthrough + case 'tel2': + if (isset($ScriptLang['telu'])) { + return ['telu', true]; + } + // fallthrough + case 'mym2': + if (isset($ScriptLang['mymr'])) { + return ['mymr', true]; + } + } + } + + // choose DFLT if present + if (isset($ScriptLang['DFLT'])) { + return ['DFLT', false]; + } + // else choose dflt if present + if (isset($ScriptLang['dflt'])) { + return ['dflt', false]; + } + // else return no scriptTag + if (isset($ScriptLang['latn'])) { + return ['latn', false]; + } + // else return no scriptTag + return ['', false]; + } + + // LangSys tags + private function _getOTLLangTag($ietf, $available) + { + // http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes + // http://www.microsoft.com/typography/otspec/languagetags.htm + // IETF tag = e.g. en-US, und-Arab, sr-Cyrl cf. class LangToFont + if ($available == '') { + return ''; + } + $tags = preg_split('/-/', $ietf); + $lang = ''; + $country = ''; + $script = ''; + $lang = strtolower($tags[0]); + if (isset($tags[1]) && $tags[1]) { + if (strlen($tags[1]) == 2) { + $country = strtolower($tags[1]); + } + } + if (isset($tags[2]) && $tags[2]) { + $country = strtolower($tags[2]); + } + + if ($lang != '' && isset(Ucdn::$ot_languages[$lang])) { + $langsys = Ucdn::$ot_languages[$lang]; + } elseif ($lang != '' && $country != '' && isset(Ucdn::$ot_languages[$lang . '' . $country])) { + $langsys = Ucdn::$ot_languages[$lang . '' . $country]; + } else { + $langsys = "DFLT"; + } + if (strpos($available, $langsys) === false) { + if (strpos($available, "DFLT") !== false) { + return "DFLT"; + } else { + return ''; + } + } + return $langsys; + } + + private function _dumpproc($GPOSSUB, $lookupID, $subtable, $Type, $Format, $ptr, $currGlyph, $level) + { + echo '<div style="padding-left: ' . ($level * 2) . 'em;">'; + echo $GPOSSUB . ' LookupID #' . $lookupID . ' Subtable#' . $subtable . ' Type: ' . $Type . ' Format: ' . $Format . '<br />'; + echo '<div style="font-family:monospace">'; + echo 'Glyph position: ' . $ptr . ' Current Glyph: ' . $currGlyph . '<br />'; + + for ($i = 0; $i < count($this->OTLdata); $i++) { + if ($i == $ptr) { + echo '<b>'; + } + echo $this->OTLdata[$i]['hex'] . ' '; + if ($i == $ptr) { + echo '</b>'; + } + } + echo '<br />'; + + for ($i = 0; $i < count($this->OTLdata); $i++) { + if ($i == $ptr) { + echo '<b>'; + } + echo str_pad($this->OTLdata[$i]['uni'], 5) . ' '; + if ($i == $ptr) { + echo '</b>'; + } + } + echo '<br />'; + + if ($GPOSSUB == 'GPOS') { + for ($i = 0; $i < count($this->OTLdata); $i++) { + if (!empty($this->OTLdata[$i]['GPOSinfo'])) { + echo $this->OTLdata[$i]['hex'] . ' &#x' . $this->OTLdata[$i]['hex'] . '; '; + print_r($this->OTLdata[$i]['GPOSinfo']); + echo ' '; + } + } + } + + echo '</div>'; + echo '</div>'; + } +} diff --git a/Mpdf/OtlDump.php b/Mpdf/OtlDump.php new file mode 100644 index 0000000..7dda9c6 --- /dev/null +++ b/Mpdf/OtlDump.php @@ -0,0 +1,4369 @@ +<?php + +namespace Mpdf; + +// Define the value used in the "head" table of a created TTF file +// 0x74727565 "true" for Mac +// 0x00010000 for Windows +// Either seems to work for a font embedded in a PDF file +// when read by Adobe Reader on a Windows PC(!) +use Mpdf\Fonts\GlyphOperator; + +if (!defined('_TTF_MAC_HEADER')) { + define("_TTF_MAC_HEADER", false); +} + +// Recalculate correct metadata/profiles when making subset fonts (not SIP/SMP) +// e.g. xMin, xMax, maxNContours +if (!defined('_RECALC_PROFILE')) { + define("_RECALC_PROFILE", false); +} + +// mPDF 5.7.1 +if (!function_exists('Mpdf\unicode_hex')) { + function unicode_hex($unicode_dec) + { + return (sprintf("%05s", strtoupper(dechex($unicode_dec)))); + } +} + +class OtlDump +{ + + var $GPOSFeatures; // mPDF 5.7.1 + + var $GPOSLookups; // mPDF 5.7.1 + + var $GPOSScriptLang; // mPDF 5.7.1 + + var $ignoreStrings; // mPDF 5.7.1 + + var $MarkAttachmentType; // mPDF 5.7.1 + + var $MarkGlyphSets; // mPDF 7.5.1 + + var $GlyphClassMarks; // mPDF 5.7.1 + + var $GlyphClassLigatures; // mPDF 5.7.1 + + var $GlyphClassBases; // mPDF 5.7.1 + + var $GlyphClassComponents; // mPDF 5.7.1 + + var $GSUBScriptLang; // mPDF 5.7.1 + + var $rtlPUAstr; // mPDF 5.7.1 + + var $rtlPUAarr; // mPDF 5.7.1 + + var $fontkey; // mPDF 5.7.1 + + var $useOTL; // mPDF 5.7.1 + + var $panose; + + var $maxUni; + + var $sFamilyClass; + + var $sFamilySubClass; + + var $sipset; + + var $smpset; + + var $_pos; + + var $numTables; + + var $searchRange; + + var $entrySelector; + + var $rangeShift; + + var $tables; + + var $otables; + + var $filename; + + var $fh; + + var $glyphPos; + + var $charToGlyph; + + var $ascent; + + var $descent; + + var $name; + + var $familyName; + + var $styleName; + + var $fullName; + + var $uniqueFontID; + + var $unitsPerEm; + + var $bbox; + + var $capHeight; + + var $stemV; + + var $italicAngle; + + var $flags; + + var $underlinePosition; + + var $underlineThickness; + + var $charWidths; + + var $defaultWidth; + + var $maxStrLenRead; + + var $numTTCFonts; + + var $TTCFonts; + + var $maxUniChar; + + var $kerninfo; + + var $mode; + + var $glyphToChar; + + var $fontRevision; + + var $glyphdata; + + var $glyphIDtoUn; + + var $restrictedUse; + + var $GSUBFeatures; + + var $GSUBLookups; + + var $glyphIDtoUni; + + var $GSLuCoverage; + + var $version; + + private $mpdf; + + public function __construct(Mpdf $mpdf) + { + $this->mpdf = $mpdf; + $this->maxStrLenRead = 200000; // Maximum size of glyf table to read in as string (otherwise reads each glyph from file) + } + + function getMetrics($file, $fontkey, $TTCfontID = 0, $debug = false, $BMPonly = false, $kerninfo = false, $useOTL = 0, $mode = null) + { + // mPDF 5.7.1 + $this->mode = $mode; + $this->useOTL = $useOTL; // mPDF 5.7.1 + $this->fontkey = $fontkey; // mPDF 5.7.1 + $this->filename = $file; + $this->fh = fopen($file, 'rb'); + + if (!$this->fh) { + throw new \Mpdf\Exception\FontException(sprintf('Unable to open file "%s"', $file)); + } + + $this->_pos = 0; + $this->charWidths = ''; + $this->glyphPos = []; + $this->charToGlyph = []; + $this->tables = []; + $this->otables = []; + $this->kerninfo = []; + $this->ascent = 0; + $this->descent = 0; + $this->numTTCFonts = 0; + $this->TTCFonts = []; + $this->version = $version = $this->read_ulong(); + $this->panose = []; + + if ($version == 0x4F54544F) { + throw new \Mpdf\Exception\FontException("Postscript outlines are not supported"); + } + + if ($version == 0x74746366 && !$TTCfontID) { + throw new \Mpdf\Exception\FontException("TTCfontID for a TrueType Collection has to be defined in ttfontdata configuration key (" . $file . ")"); + } + + if (!in_array($version, [0x00010000, 0x74727565]) && !$TTCfontID) { + throw new \Mpdf\Exception\FontException("Not a TrueType font: version=" . $version); + } + + if ($TTCfontID > 0) { + $this->version = $version = $this->read_ulong(); // TTC Header version now + if (!in_array($version, [0x00010000, 0x00020000])) { + throw new \Mpdf\Exception\FontException("Error parsing TrueType Collection: version=" . $version . " - " . $file); + } + $this->numTTCFonts = $this->read_ulong(); + for ($i = 1; $i <= $this->numTTCFonts; $i++) { + $this->TTCFonts[$i]['offset'] = $this->read_ulong(); + } + $this->seek($this->TTCFonts[$TTCfontID]['offset']); + $this->version = $version = $this->read_ulong(); // TTFont version again now + } + $this->readTableDirectory($debug); + $this->extractInfo($debug, $BMPonly, $kerninfo, $useOTL); + fclose($this->fh); + } + + function readTableDirectory($debug = false) + { + $this->numTables = $this->read_ushort(); + $this->searchRange = $this->read_ushort(); + $this->entrySelector = $this->read_ushort(); + $this->rangeShift = $this->read_ushort(); + $this->tables = []; + for ($i = 0; $i < $this->numTables; $i++) { + $record = []; + $record['tag'] = $this->read_tag(); + $record['checksum'] = [$this->read_ushort(), $this->read_ushort()]; + $record['offset'] = $this->read_ulong(); + $record['length'] = $this->read_ulong(); + $this->tables[$record['tag']] = $record; + } + if ($debug) { + $this->checksumTables(); + } + } + + function checksumTables() + { + // Check the checksums for all tables + foreach ($this->tables as $t) { + if ($t['length'] > 0 && $t['length'] < $this->maxStrLenRead) { // 1.02 + $table = $this->get_chunk($t['offset'], $t['length']); + $checksum = $this->calcChecksum($table); + if ($t['tag'] == 'head') { + $up = unpack('n*', substr($table, 8, 4)); + $adjustment[0] = $up[1]; + $adjustment[1] = $up[2]; + $checksum = $this->sub32($checksum, $adjustment); + } + $xchecksum = $t['checksum']; + if ($xchecksum != $checksum) { + throw new \Mpdf\Exception\FontException(sprintf('TTF file "%s": invalid checksum %s table: %s (expected %s)', $this->filename, dechex($checksum[0]) . dechex($checksum[1]), $t['tag'], dechex($xchecksum[0]) . dechex($xchecksum[1]))); + } + } + } + } + + function sub32($x, $y) + { + $xlo = $x[1]; + $xhi = $x[0]; + $ylo = $y[1]; + $yhi = $y[0]; + if ($ylo > $xlo) { + $xlo += 1 << 16; + $yhi += 1; + } + $reslo = $xlo - $ylo; + if ($yhi > $xhi) { + $xhi += 1 << 16; + } + $reshi = $xhi - $yhi; + $reshi = $reshi & 0xFFFF; + + return [$reshi, $reslo]; + } + + function calcChecksum($data) + { + if (strlen($data) % 4) { + $data .= str_repeat("\0", (4 - (strlen($data) % 4))); + } + $len = strlen($data); + $hi = 0x0000; + $lo = 0x0000; + for ($i = 0; $i < $len; $i += 4) { + $hi += (ord($data[$i]) << 8) + ord($data[$i + 1]); + $lo += (ord($data[$i + 2]) << 8) + ord($data[$i + 3]); + $hi += ($lo >> 16) & 0xFFFF; + $lo = $lo & 0xFFFF; + } + + return [$hi, $lo]; + } + + function get_table_pos($tag) + { + $offset = isset($this->tables[$tag]['offset']) ? $this->tables[$tag]['offset'] : null; + $length = isset($this->tables[$tag]['length']) ? $this->tables[$tag]['length'] : null; + + return [$offset, $length]; + } + + function seek($pos) + { + $this->_pos = $pos; + fseek($this->fh, $this->_pos); + } + + function skip($delta) + { + $this->_pos = $this->_pos + $delta; + fseek($this->fh, $delta, SEEK_CUR); + } + + function seek_table($tag, $offset_in_table = 0) + { + $tpos = $this->get_table_pos($tag); + $this->_pos = $tpos[0] + $offset_in_table; + fseek($this->fh, $this->_pos); + + return $this->_pos; + } + + function read_tag() + { + $this->_pos += 4; + + return fread($this->fh, 4); + } + + function read_short() + { + $this->_pos += 2; + $s = fread($this->fh, 2); + $a = (ord($s[0]) << 8) + ord($s[1]); + if ($a & (1 << 15)) { + $a = ($a - (1 << 16)); + } + + return $a; + } + + function unpack_short($s) + { + $a = (ord($s[0]) << 8) + ord($s[1]); + if ($a & (1 << 15)) { + $a = ($a - (1 << 16)); + } + + return $a; + } + + function read_ushort() + { + $this->_pos += 2; + $s = fread($this->fh, 2); + + return (ord($s[0]) << 8) + ord($s[1]); + } + + function read_ulong() + { + $this->_pos += 4; + $s = fread($this->fh, 4); + + // if large uInt32 as an integer, PHP converts it to -ve + return (ord($s[0]) * 16777216) + (ord($s[1]) << 16) + (ord($s[2]) << 8) + ord($s[3]); // 16777216 = 1<<24 + } + + function get_ushort($pos) + { + fseek($this->fh, $pos); + $s = fread($this->fh, 2); + + return (ord($s[0]) << 8) + ord($s[1]); + } + + function get_ulong($pos) + { + fseek($this->fh, $pos); + $s = fread($this->fh, 4); + + // iF large uInt32 as an integer, PHP converts it to -ve + return (ord($s[0]) * 16777216) + (ord($s[1]) << 16) + (ord($s[2]) << 8) + ord($s[3]); // 16777216 = 1<<24 + } + + function pack_short($val) + { + if ($val < 0) { + $val = abs($val); + $val = ~$val; + $val += 1; + } + + return pack("n", $val); + } + + function splice($stream, $offset, $value) + { + return substr($stream, 0, $offset) . $value . substr($stream, $offset + strlen($value)); + } + + function _set_ushort($stream, $offset, $value) + { + $up = pack("n", $value); + + return $this->splice($stream, $offset, $up); + } + + function _set_short($stream, $offset, $val) + { + if ($val < 0) { + $val = abs($val); + $val = ~$val; + $val += 1; + } + $up = pack("n", $val); + + return $this->splice($stream, $offset, $up); + } + + function get_chunk($pos, $length) + { + fseek($this->fh, $pos); + if ($length < 1) { + return ''; + } + + return (fread($this->fh, $length)); + } + + function get_table($tag) + { + list($pos, $length) = $this->get_table_pos($tag); + if ($length == 0) { + return ''; + } + fseek($this->fh, $pos); + + return (fread($this->fh, $length)); + } + + function add($tag, $data) + { + if ($tag == 'head') { + $data = $this->splice($data, 8, "\0\0\0\0"); + } + $this->otables[$tag] = $data; + } + + ///////////////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////////////////// + + function extractInfo($debug = false, $BMPonly = false, $kerninfo = false, $useOTL = 0) + { + $this->panose = []; + $this->sFamilyClass = 0; + $this->sFamilySubClass = 0; + /////////////////////////////////// + // name - Naming table + /////////////////////////////////// + $name_offset = $this->seek_table("name"); + $format = $this->read_ushort(); + if ($format != 0 && $format != 1) { + throw new \Mpdf\Exception\FontException("Error loading font: Unknown name table format " . $format); + } + $numRecords = $this->read_ushort(); + $string_data_offset = $name_offset + $this->read_ushort(); + $names = [1 => '', 2 => '', 3 => '', 4 => '', 6 => '']; + $K = array_keys($names); + $nameCount = count($names); + for ($i = 0; $i < $numRecords; $i++) { + $platformId = $this->read_ushort(); + $encodingId = $this->read_ushort(); + $languageId = $this->read_ushort(); + $nameId = $this->read_ushort(); + $length = $this->read_ushort(); + $offset = $this->read_ushort(); + if (!in_array($nameId, $K)) { + continue; + } + $N = ''; + if ($platformId == 3 && $encodingId == 1 && $languageId == 0x409) { // Microsoft, Unicode, US English, PS Name + $opos = $this->_pos; + $this->seek($string_data_offset + $offset); + if ($length % 2 != 0) { + throw new \Mpdf\Exception\FontException("Error loading font: PostScript name is UTF-16BE string of odd length"); + } + $length /= 2; + $N = ''; + while ($length > 0) { + $char = $this->read_ushort(); + $N .= (chr($char)); + $length -= 1; + } + $this->_pos = $opos; + $this->seek($opos); + } else { + if ($platformId == 1 && $encodingId == 0 && $languageId == 0) { // Macintosh, Roman, English, PS Name + $opos = $this->_pos; + $N = $this->get_chunk($string_data_offset + $offset, $length); + $this->_pos = $opos; + $this->seek($opos); + } + } + if ($N && $names[$nameId] == '') { + $names[$nameId] = $N; + $nameCount -= 1; + if ($nameCount == 0) { + break; + } + } + } + if ($names[6]) { + $psName = $names[6]; + } else { + if ($names[4]) { + $psName = preg_replace('/ /', '-', $names[4]); + } else { + if ($names[1]) { + $psName = preg_replace('/ /', '-', $names[1]); + } else { + $psName = ''; + } + } + } + if (!$psName) { + throw new \Mpdf\Exception\FontException("Error loading font: Could not find PostScript font name: " . $this->filename); + } + if ($debug) { + for ($i = 0; $i < count($psName); $i++) { + $c = $psName[$i]; + $oc = ord($c); + if ($oc > 126 || strpos(' [](){}<>/%', $c) !== false) { + throw new \Mpdf\Exception\FontException("psName=" . $psName . " contains invalid character " . $c . " ie U+" . ord($c)); + } + } + } + $this->name = $psName; + if ($names[1]) { + $this->familyName = $names[1]; + } else { + $this->familyName = $psName; + } + if ($names[2]) { + $this->styleName = $names[2]; + } else { + $this->styleName = 'Regular'; + } + if ($names[4]) { + $this->fullName = $names[4]; + } else { + $this->fullName = $psName; + } + if ($names[3]) { + $this->uniqueFontID = $names[3]; + } else { + $this->uniqueFontID = $psName; + } + + if ($names[6]) { + $this->fullName = $names[6]; + } + + /////////////////////////////////// + // head - Font header table + /////////////////////////////////// + $this->seek_table("head"); + if ($debug) { + $ver_maj = $this->read_ushort(); + $ver_min = $this->read_ushort(); + if ($ver_maj != 1) { + throw new \Mpdf\Exception\FontException('Error loading font: Unknown head table version ' . $ver_maj . '.' . $ver_min); + } + $this->fontRevision = $this->read_ushort() . $this->read_ushort(); + + $this->skip(4); + $magic = $this->read_ulong(); + if ($magic != 0x5F0F3CF5) { + throw new \Mpdf\Exception\FontException('Error loading font: Invalid head table magic ' . $magic); + } + $this->skip(2); + } else { + $this->skip(18); + } + $this->unitsPerEm = $unitsPerEm = $this->read_ushort(); + $scale = 1000 / $unitsPerEm; + $this->skip(16); + $xMin = $this->read_short(); + $yMin = $this->read_short(); + $xMax = $this->read_short(); + $yMax = $this->read_short(); + $this->bbox = [($xMin * $scale), ($yMin * $scale), ($xMax * $scale), ($yMax * $scale)]; + $this->skip(3 * 2); + $indexToLocFormat = $this->read_ushort(); + $glyphDataFormat = $this->read_ushort(); + if ($glyphDataFormat != 0) { + throw new \Mpdf\Exception\FontException('Error loading font: Unknown glyph data format ' . $glyphDataFormat); + } + + /////////////////////////////////// + // hhea metrics table + /////////////////////////////////// + // ttf2t1 seems to use this value rather than the one in OS/2 - so put in for compatibility + if (isset($this->tables["hhea"])) { + $this->seek_table("hhea"); + $this->skip(4); + $hheaAscender = $this->read_short(); + $hheaDescender = $this->read_short(); + $this->ascent = ($hheaAscender * $scale); + $this->descent = ($hheaDescender * $scale); + } + + /////////////////////////////////// + // OS/2 - OS/2 and Windows metrics table + /////////////////////////////////// + if (isset($this->tables["OS/2"])) { + $this->seek_table("OS/2"); + $version = $this->read_ushort(); + $this->skip(2); + $usWeightClass = $this->read_ushort(); + $this->skip(2); + $fsType = $this->read_ushort(); + if ($fsType == 0x0002 || ($fsType & 0x0300) != 0) { + global $overrideTTFFontRestriction; + if (!$overrideTTFFontRestriction) { + throw new \Mpdf\Exception\FontException('Font file ' . $this->filename . ' cannot be embedded due to copyright restrictions.'); + } + $this->restrictedUse = true; + } + $this->skip(20); + $sF = $this->read_short(); + $this->sFamilyClass = ($sF >> 8); + $this->sFamilySubClass = ($sF & 0xFF); + $this->_pos += 10; //PANOSE = 10 byte length + $panose = fread($this->fh, 10); + $this->panose = []; + for ($p = 0; $p < strlen($panose); $p++) { + $this->panose[] = ord($panose[$p]); + } + $this->skip(26); + $sTypoAscender = $this->read_short(); + $sTypoDescender = $this->read_short(); + if (!$this->ascent) { + $this->ascent = ($sTypoAscender * $scale); + } + if (!$this->descent) { + $this->descent = ($sTypoDescender * $scale); + } + if ($version > 1) { + $this->skip(16); + $sCapHeight = $this->read_short(); + $this->capHeight = ($sCapHeight * $scale); + } else { + $this->capHeight = $this->ascent; + } + } else { + $usWeightClass = 500; + if (!$this->ascent) { + $this->ascent = ($yMax * $scale); + } + if (!$this->descent) { + $this->descent = ($yMin * $scale); + } + $this->capHeight = $this->ascent; + } + $this->stemV = 50 + intval(pow(($usWeightClass / 65.0), 2)); + + /////////////////////////////////// + // post - PostScript table + /////////////////////////////////// + $this->seek_table("post"); + if ($debug) { + $ver_maj = $this->read_ushort(); + $ver_min = $this->read_ushort(); + if ($ver_maj < 1 || $ver_maj > 4) { + throw new \Mpdf\Exception\FontException('Error loading font: Unknown post table version ' . $ver_maj); + } + } else { + $this->skip(4); + } + $this->italicAngle = $this->read_short() + $this->read_ushort() / 65536.0; + $this->underlinePosition = $this->read_short() * $scale; + $this->underlineThickness = $this->read_short() * $scale; + $isFixedPitch = $this->read_ulong(); + + $this->flags = 4; + + if ($this->italicAngle != 0) { + $this->flags = $this->flags | 64; + } + if ($usWeightClass >= 600) { + $this->flags = $this->flags | 262144; + } + if ($isFixedPitch) { + $this->flags = $this->flags | 1; + } + + /////////////////////////////////// + // hhea - Horizontal header table + /////////////////////////////////// + $this->seek_table("hhea"); + if ($debug) { + $ver_maj = $this->read_ushort(); + $ver_min = $this->read_ushort(); + if ($ver_maj != 1) { + throw new \Mpdf\Exception\FontException(sprintf('Error loading font: Unknown hhea table version %s', $ver_maj)); + } + $this->skip(28); + } else { + $this->skip(32); + } + $metricDataFormat = $this->read_ushort(); + if ($metricDataFormat != 0) { + throw new \Mpdf\Exception\FontException('Error loading font: Unknown horizontal metric data format ' . $metricDataFormat); + } + $numberOfHMetrics = $this->read_ushort(); + if ($numberOfHMetrics == 0) { + throw new \Mpdf\Exception\FontException('Error loading font: Number of horizontal metrics is 0'); + } + + /////////////////////////////////// + // maxp - Maximum profile table + /////////////////////////////////// + $this->seek_table("maxp"); + if ($debug) { + $ver_maj = $this->read_ushort(); + $ver_min = $this->read_ushort(); + if ($ver_maj != 1) { + throw new \Mpdf\Exception\FontException('Error loading font: Unknown maxp table version ' . $ver_maj); + } + } else { + $this->skip(4); + } + $numGlyphs = $this->read_ushort(); + + /////////////////////////////////// + // cmap - Character to glyph index mapping table + /////////////////////////////////// + $cmap_offset = $this->seek_table("cmap"); + $this->skip(2); + $cmapTableCount = $this->read_ushort(); + $unicode_cmap_offset = 0; + for ($i = 0; $i < $cmapTableCount; $i++) { + $platformID = $this->read_ushort(); + $encodingID = $this->read_ushort(); + $offset = $this->read_ulong(); + $save_pos = $this->_pos; + if (($platformID == 3 && $encodingID == 1) || $platformID == 0) { // Microsoft, Unicode + $format = $this->get_ushort($cmap_offset + $offset); + if ($format == 4) { + if (!$unicode_cmap_offset) { + $unicode_cmap_offset = $cmap_offset + $offset; + } + if ($BMPonly) { + break; + } + } + } // Microsoft, Unicode Format 12 table HKCS + else { + if ((($platformID == 3 && $encodingID == 10) || $platformID == 0) && !$BMPonly) { + $format = $this->get_ushort($cmap_offset + $offset); + if ($format == 12) { + $unicode_cmap_offset = $cmap_offset + $offset; + break; + } + } + } + $this->seek($save_pos); + } + + if (!$unicode_cmap_offset) { + throw new \Mpdf\Exception\FontException('Font (' . $this->filename . ') does not have cmap for Unicode (platform 3, encoding 1, format 4, or platform 0, any encoding, format 4)'); + } + + $sipset = false; + $smpset = false; + + // mPDF 5.7.1 + $this->GSUBScriptLang = []; + $this->rtlPUAstr = ''; + $this->rtlPUAarr = []; + $this->GSUBFeatures = []; + $this->GSUBLookups = []; + $this->GPOSScriptLang = []; + $this->GPOSFeatures = []; + $this->GPOSLookups = []; + $this->glyphIDtoUni = ''; + + // Format 12 CMAP does characters above Unicode BMP i.e. some HKCS characters U+20000 and above + if ($format == 12 && !$BMPonly) { + $this->maxUniChar = 0; + $this->seek($unicode_cmap_offset + 4); + $length = $this->read_ulong(); + $limit = $unicode_cmap_offset + $length; + $this->skip(4); + + $nGroups = $this->read_ulong(); + + $glyphToChar = []; + $charToGlyph = []; + for ($i = 0; $i < $nGroups; $i++) { + $startCharCode = $this->read_ulong(); + $endCharCode = $this->read_ulong(); + $startGlyphCode = $this->read_ulong(); + if ($endCharCode > 0x20000 && $endCharCode < 0x2FFFF) { + $sipset = true; + } else { + if ($endCharCode > 0x10000 && $endCharCode < 0x1FFFF) { + $smpset = true; + } + } + $offset = 0; + for ($unichar = $startCharCode; $unichar <= $endCharCode; $unichar++) { + $glyph = $startGlyphCode + $offset; + $offset++; + if ($unichar < 0x30000) { + $charToGlyph[$unichar] = $glyph; + $this->maxUniChar = max($unichar, $this->maxUniChar); + $glyphToChar[$glyph][] = $unichar; + } + } + } + } else { + $glyphToChar = []; + $charToGlyph = []; + $this->getCMAP4($unicode_cmap_offset, $glyphToChar, $charToGlyph); + } + $this->sipset = $sipset; + $this->smpset = $smpset; + + /////////////////////////////////// + // mPDF 5.7.1 + // Map Unmapped glyphs - from $numGlyphs + if ($this->useOTL) { + $bctr = 0xE000; + for ($gid = 1; $gid < $numGlyphs; $gid++) { + if (!isset($glyphToChar[$gid])) { + while (isset($charToGlyph[$bctr])) { + $bctr++; + } // Avoid overwriting a glyph already mapped in PUA + if (($bctr > 0xF8FF) && ($bctr < 0x2CEB0)) { + if (!$BMPonly) { + $bctr = 0x2CEB0; // Use unassigned area 0x2CEB0 to 0x2F7FF (space for 10,000 characters) + $this->sipset = $sipset = true; // forces subsetting; also ensure charwidths are saved + while (isset($charToGlyph[$bctr])) { + $bctr++; + } + } else { + throw new \Mpdf\Exception\FontException(sprintf('Font "%s" does not have cmap for Unicode (platform 3, encoding 1, format 4, or platform 0, any encoding, format 4)', $this->filename)); + } + } + $glyphToChar[$gid][] = $bctr; + $charToGlyph[$bctr] = $gid; + $this->maxUniChar = max($bctr, $this->maxUniChar); + $bctr++; + } + } + } + $this->glyphToChar = $glyphToChar; + $this->charToGlyph = $charToGlyph; + /////////////////////////////////// + // mPDF 5.7.1 OpenType Layout tables + $this->GSUBScriptLang = []; + $this->rtlPUAstr = ''; + $this->rtlPUAarr = []; + if ($useOTL) { + $this->_getGDEFtables(); + list($this->GSUBScriptLang, $this->GSUBFeatures, $this->GSUBLookups, $this->rtlPUAstr, $this->rtlPUAarr) = $this->_getGSUBtables(); + list($this->GPOSScriptLang, $this->GPOSFeatures, $this->GPOSLookups) = $this->_getGPOStables(); + $this->glyphIDtoUni = str_pad('', 256 * 256 * 3, "\x00"); + foreach ($glyphToChar as $gid => $arr) { + if (isset($glyphToChar[$gid][0])) { + $char = $glyphToChar[$gid][0]; + if ($char != 0 && $char != 65535) { + $this->glyphIDtoUni[$gid * 3] = chr($char >> 16); + $this->glyphIDtoUni[$gid * 3 + 1] = chr(($char >> 8) & 0xFF); + $this->glyphIDtoUni[$gid * 3 + 2] = chr($char & 0xFF); + } + } + } + } + /////////////////////////////////// + /////////////////////////////////// + // hmtx - Horizontal metrics table + /////////////////////////////////// + $this->getHMTX($numberOfHMetrics, $numGlyphs, $glyphToChar, $scale); + + /////////////////////////////////// + // kern - Kerning pair table + /////////////////////////////////// + if ($kerninfo) { + // Recognises old form of Kerning table - as required by Windows - Format 0 only + $kern_offset = $this->seek_table("kern"); + $version = $this->read_ushort(); + $nTables = $this->read_ushort(); + // subtable header + $sversion = $this->read_ushort(); + $slength = $this->read_ushort(); + $scoverage = $this->read_ushort(); + $format = $scoverage >> 8; + if ($kern_offset && $version == 0 && $format == 0) { + // Format 0 + $nPairs = $this->read_ushort(); + $this->skip(6); + for ($i = 0; $i < $nPairs; $i++) { + $left = $this->read_ushort(); + $right = $this->read_ushort(); + $val = $this->read_short(); + if (count($glyphToChar[$left]) == 1 && count($glyphToChar[$right]) == 1) { + if ($left != 32 && $right != 32) { + $this->kerninfo[$glyphToChar[$left][0]][$glyphToChar[$right][0]] = intval($val * $scale); + } + } + } + } + } + } + + ///////////////////////////////////////////////////////////////////////////////////////// + function _getGDEFtables() + { + /////////////////////////////////// + // GDEF - Glyph Definition + /////////////////////////////////// + // http://www.microsoft.com/typography/otspec/gdef.htm + if (isset($this->tables["GDEF"])) { + if ($this->mode == 'summary') { + $this->mpdf->WriteHTML('<h1>GDEF table</h1>'); + } + $gdef_offset = $this->seek_table("GDEF"); + // ULONG Version of the GDEF table-currently 0x00010000 + $ver_maj = $this->read_ushort(); + $ver_min = $this->read_ushort(); + // Version 0x00010002 of GDEF header contains additional Offset to a list defining mark glyph set definitions (MarkGlyphSetDef) + $GlyphClassDef_offset = $this->read_ushort(); + $AttachList_offset = $this->read_ushort(); + $LigCaretList_offset = $this->read_ushort(); + $MarkAttachClassDef_offset = $this->read_ushort(); + if ($ver_min == 2) { + $MarkGlyphSetsDef_offset = $this->read_ushort(); + } + + // GlyphClassDef + $this->seek($gdef_offset + $GlyphClassDef_offset); + /* + 1 Base glyph (single character, spacing glyph) + 2 Ligature glyph (multiple character, spacing glyph) + 3 Mark glyph (non-spacing combining glyph) + 4 Component glyph (part of single character, spacing glyph) + */ + $GlyphByClass = $this->_getClassDefinitionTable(); + + if ($this->mode == 'summary') { + $this->mpdf->WriteHTML('<h2>Glyph classes</h2>'); + } + + if (isset($GlyphByClass[1]) && count($GlyphByClass[1]) > 0) { + $this->GlyphClassBases = $this->formatClassArr($GlyphByClass[1]); + if ($this->mode == 'summary') { + $this->mpdf->WriteHTML('<h3>Glyph class 1</h3>'); + $this->mpdf->WriteHTML('<h5>Base glyph (single character, spacing glyph)</h5>'); + $html = ''; + $html .= '<div class="glyphs">'; + foreach ($GlyphByClass[1] as $g) { + $html .= '&#x' . $g . '; '; + } + $html .= '</div>'; + $this->mpdf->WriteHTML($html); + } + } else { + $this->GlyphClassBases = ''; + } + if (isset($GlyphByClass[2]) && count($GlyphByClass[2]) > 0) { + $this->GlyphClassLigatures = $this->formatClassArr($GlyphByClass[2]); + if ($this->mode == 'summary') { + $this->mpdf->WriteHTML('<h3>Glyph class 2</h3>'); + $this->mpdf->WriteHTML('<h5>Ligature glyph (multiple character, spacing glyph)</h5>'); + $html = ''; + $html .= '<div class="glyphs">'; + foreach ($GlyphByClass[2] as $g) { + $html .= '&#x' . $g . '; '; + } + $html .= '</div>'; + $this->mpdf->WriteHTML($html); + } + } else { + $this->GlyphClassLigatures = ''; + } + if (isset($GlyphByClass[3]) && count($GlyphByClass[3]) > 0) { + $this->GlyphClassMarks = $this->formatClassArr($GlyphByClass[3]); + if ($this->mode == 'summary') { + $this->mpdf->WriteHTML('<h3>Glyph class 3</h3>'); + $this->mpdf->WriteHTML('<h5>Mark glyph (non-spacing combining glyph)</h5>'); + $html = ''; + $html .= '<div class="glyphs">'; + foreach ($GlyphByClass[3] as $g) { + $html .= '◌&#x' . $g . '; '; + } + $html .= '</div>'; + $this->mpdf->WriteHTML($html); + } + } else { + $this->GlyphClassMarks = ''; + } + if (isset($GlyphByClass[4]) && count($GlyphByClass[4]) > 0) { + $this->GlyphClassComponents = $this->formatClassArr($GlyphByClass[4]); + if ($this->mode == 'summary') { + $this->mpdf->WriteHTML('<h3>Glyph class 4</h3>'); + $this->mpdf->WriteHTML('<h5>Component glyph (part of single character, spacing glyph)</h5>'); + $html = ''; + $html .= '<div class="glyphs">'; + foreach ($GlyphByClass[4] as $g) { + $html .= '&#x' . $g . '; '; + } + $html .= '</div>'; + $this->mpdf->WriteHTML($html); + } + } else { + $this->GlyphClassComponents = ''; + } + + $Marks = $GlyphByClass[3]; // to use for MarkAttachmentType + + /* Required for GPOS + // Attachment List + if ($AttachList_offset) { + $this->seek($gdef_offset+$AttachList_offset ); + } + The Attachment Point List table (AttachmentList) identifies all the attachment points defined in the GPOS table and their associated glyphs so a client can quickly access coordinates for each glyph's attachment points. As a result, the client can cache coordinates for attachment points along with glyph bitmaps and avoid recalculating the attachment points each time it displays a glyph. Without this table, processing speed would be slower because the client would have to decode the GPOS lookups that define attachment points and compile the points in a list. + + The Attachment List table (AttachList) may be used to cache attachment point coordinates along with glyph bitmaps. + + The table consists of an offset to a Coverage table (Coverage) listing all glyphs that define attachment points in the GPOS table, a count of the glyphs with attachment points (GlyphCount), and an array of offsets to AttachPoint tables (AttachPoint). The array lists the AttachPoint tables, one for each glyph in the Coverage table, in the same order as the Coverage Index. + AttachList table + Type Name Description + Offset Coverage Offset to Coverage table - from beginning of AttachList table + uint16 GlyphCount Number of glyphs with attachment points + Offset AttachPoint[GlyphCount] Array of offsets to AttachPoint tables-from beginning of AttachList table-in Coverage Index order + + An AttachPoint table consists of a count of the attachment points on a single glyph (PointCount) and an array of contour indices of those points (PointIndex), listed in increasing numerical order. + + AttachPoint table + Type Name Description + uint16 PointCount Number of attachment points on this glyph + uint16 PointIndex[PointCount] Array of contour point indices -in increasing numerical order + + See Example 3 - http://www.microsoft.com/typography/otspec/gdef.htm + */ + + // Ligature Caret List + // The Ligature Caret List table (LigCaretList) defines caret positions for all the ligatures in a font. + // Not required for mDPF + // MarkAttachmentType + if ($MarkAttachClassDef_offset) { + if ($this->mode == 'summary') { + $this->mpdf->WriteHTML('<h1>Mark Attachment Types</h1>'); + } + $this->seek($gdef_offset + $MarkAttachClassDef_offset); + $MarkAttachmentTypes = $this->_getClassDefinitionTable(); + foreach ($MarkAttachmentTypes as $class => $glyphs) { + if (is_array($Marks) && count($Marks)) { + $mat = array_diff($Marks, $MarkAttachmentTypes[$class]); + sort($mat, SORT_STRING); + } else { + $mat = []; + } + + $this->MarkAttachmentType[$class] = $this->formatClassArr($mat); + + if ($this->mode == 'summary') { + $this->mpdf->WriteHTML('<h3>Mark Attachment Type: ' . $class . '</h3>'); + $html = ''; + $html .= '<div class="glyphs">'; + foreach ($glyphs as $g) { + $html .= '◌&#x' . $g . '; '; + } + $html .= '</div>'; + $this->mpdf->WriteHTML($html); + } + } + } else { + $this->MarkAttachmentType = []; + } + + // MarkGlyphSets only in Version 0x00010002 of GDEF + if ($ver_min == 2 && $MarkGlyphSetsDef_offset) { + if ($this->mode == 'summary') { + $this->mpdf->WriteHTML('<h1>Mark Glyph Sets</h1>'); + } + $this->seek($gdef_offset + $MarkGlyphSetsDef_offset); + $MarkSetTableFormat = $this->read_ushort(); + $MarkSetCount = $this->read_ushort(); + $MarkSetOffset = []; + for ($i = 0; $i < $MarkSetCount; $i++) { + $MarkSetOffset[] = $this->read_ulong(); + } + for ($i = 0; $i < $MarkSetCount; $i++) { + $this->seek($MarkSetOffset[$i]); + $glyphs = $this->_getCoverage(); + $this->MarkGlyphSets[$i] = $this->formatClassArr($glyphs); + if ($this->mode == 'summary') { + $this->mpdf->WriteHTML('<h3>Mark Glyph Set class: ' . $i . '</h3>'); + $html = ''; + $html .= '<div class="glyphs">'; + foreach ($glyphs as $g) { + $html .= '◌&#x' . $g . '; '; + } + $html .= '</div>'; + $this->mpdf->WriteHTML($html); + } + } + } else { + $this->MarkGlyphSets = []; + } + } else { + $this->mpdf->WriteHTML('<div>GDEF table not defined</div>'); + } + +//echo $this->GlyphClassMarks ; exit; +//print_r($GlyphClass); exit; +//print_r($GlyphByClass); exit; + } + + function _getClassDefinitionTable($offset = 0) + { + + if ($offset > 0) { + $this->seek($offset); + } + + // NB Any glyph not included in the range of covered GlyphIDs automatically belongs to Class 0. This is not returned by this function + $ClassFormat = $this->read_ushort(); + $GlyphByClass = []; + if ($ClassFormat == 1) { + $StartGlyph = $this->read_ushort(); + $GlyphCount = $this->read_ushort(); + for ($i = 0; $i < $GlyphCount; $i++) { + $gid = $StartGlyph + $i; + $class = $this->read_ushort(); + $GlyphByClass[$class][] = unicode_hex($this->glyphToChar[$gid][0]); + } + } else { + if ($ClassFormat == 2) { + $tableCount = $this->read_ushort(); + for ($i = 0; $i < $tableCount; $i++) { + $startGlyphID = $this->read_ushort(); + $endGlyphID = $this->read_ushort(); + $class = $this->read_ushort(); + for ($gid = $startGlyphID; $gid <= $endGlyphID; $gid++) { + $GlyphByClass[$class][] = unicode_hex($this->glyphToChar[$gid][0]); + } + } + } + } + ksort($GlyphByClass); + + return $GlyphByClass; + } + + function _getGSUBtables() + { + /////////////////////////////////// + // GSUB - Glyph Substitution + /////////////////////////////////// + if (isset($this->tables["GSUB"])) { + $this->mpdf->WriteHTML('<h1>GSUB Tables</h1>'); + $ffeats = []; + $gsub_offset = $this->seek_table("GSUB"); + $this->skip(4); + $ScriptList_offset = $gsub_offset + $this->read_ushort(); + $FeatureList_offset = $gsub_offset + $this->read_ushort(); + $LookupList_offset = $gsub_offset + $this->read_ushort(); + + // ScriptList + $this->seek($ScriptList_offset); + $ScriptCount = $this->read_ushort(); + for ($i = 0; $i < $ScriptCount; $i++) { + $ScriptTag = $this->read_tag(); // = "beng", "deva" etc. + $ScriptTableOffset = $this->read_ushort(); + $ffeats[$ScriptTag] = $ScriptList_offset + $ScriptTableOffset; + } + + // Script Table + foreach ($ffeats as $t => $o) { + $ls = []; + $this->seek($o); + $DefLangSys_offset = $this->read_ushort(); + if ($DefLangSys_offset > 0) { + $ls['DFLT'] = $DefLangSys_offset + $o; + } + $LangSysCount = $this->read_ushort(); + for ($i = 0; $i < $LangSysCount; $i++) { + $LangTag = $this->read_tag(); // = + $LangTableOffset = $this->read_ushort(); + $ls[$LangTag] = $o + $LangTableOffset; + } + $ffeats[$t] = $ls; + } +//print_r($ffeats); exit; + // Get FeatureIndexList + // LangSys Table - from first listed langsys + foreach ($ffeats as $st => $scripts) { + foreach ($scripts as $t => $o) { + $FeatureIndex = []; + $langsystable_offset = $o; + $this->seek($langsystable_offset); + $LookUpOrder = $this->read_ushort(); //==NULL + $ReqFeatureIndex = $this->read_ushort(); + if ($ReqFeatureIndex != 0xFFFF) { + $FeatureIndex[] = $ReqFeatureIndex; + } + $FeatureCount = $this->read_ushort(); + for ($i = 0; $i < $FeatureCount; $i++) { + $FeatureIndex[] = $this->read_ushort(); // = index of feature + } + $ffeats[$st][$t] = $FeatureIndex; + } + } +//print_r($ffeats); exit; + // Feauture List => LookupListIndex es + $this->seek($FeatureList_offset); + $FeatureCount = $this->read_ushort(); + $Feature = []; + for ($i = 0; $i < $FeatureCount; $i++) { + $Feature[$i] = ['tag' => $this->read_tag()]; + $Feature[$i]['offset'] = $FeatureList_offset + $this->read_ushort(); + } + for ($i = 0; $i < $FeatureCount; $i++) { + $this->seek($Feature[$i]['offset']); + $this->read_ushort(); // null + $Feature[$i]['LookupCount'] = $Lookupcount = $this->read_ushort(); + $Feature[$i]['LookupListIndex'] = []; + for ($c = 0; $c < $Lookupcount; $c++) { + $Feature[$i]['LookupListIndex'][] = $this->read_ushort(); + } + } + + foreach ($ffeats as $st => $scripts) { + foreach ($scripts as $t => $o) { + $FeatureIndex = $ffeats[$st][$t]; + foreach ($FeatureIndex as $k => $fi) { + $ffeats[$st][$t][$k] = $Feature[$fi]; + } + } + } + //===================================================================================== + $gsub = []; + $GSUBScriptLang = []; + foreach ($ffeats as $st => $scripts) { + foreach ($scripts as $t => $langsys) { + $lg = []; + foreach ($langsys as $ft) { + $lg[$ft['LookupListIndex'][0]] = $ft; + } + // list of Lookups in order they need to be run i.e. order listed in Lookup table + ksort($lg); + foreach ($lg as $ft) { + $gsub[$st][$t][$ft['tag']] = $ft['LookupListIndex']; + } + if (!isset($GSUBScriptLang[$st])) { + $GSUBScriptLang[$st] = ''; + } + $GSUBScriptLang[$st] .= $t . ' '; + } + } + +//print_r($gsub); exit; + + if ($this->mode == 'summary') { + $this->mpdf->WriteHTML('<h3>GSUB Scripts & Languages</h3>'); + $this->mpdf->WriteHTML('<div class="glyphs">'); + $html = ''; + if (count($gsub)) { + foreach ($gsub as $st => $g) { + $html .= '<h5>' . $st . '</h5>'; + foreach ($g as $l => $t) { + $html .= '<div><a href="font_dump_OTL.php?script=' . $st . '&lang=' . $l . '">' . $l . '</a></b>: '; + foreach ($t as $tag => $o) { + $html .= $tag . ' '; + } + $html .= '</div>'; + } + } + } else { + $html .= '<div>No entries in GSUB table.</div>'; + } + $this->mpdf->WriteHTML($html); + $this->mpdf->WriteHTML('</div>'); + + return 0; + } + + //===================================================================================== + // Get metadata and offsets for whole Lookup List table + $this->seek($LookupList_offset); + $LookupCount = $this->read_ushort(); + $GSLookup = []; + $Offsets = []; + $SubtableCount = []; + for ($i = 0; $i < $LookupCount; $i++) { + $Offsets[$i] = $LookupList_offset + $this->read_ushort(); + } + for ($i = 0; $i < $LookupCount; $i++) { + $this->seek($Offsets[$i]); + $GSLookup[$i]['Type'] = $this->read_ushort(); + $GSLookup[$i]['Flag'] = $flag = $this->read_ushort(); + $GSLookup[$i]['SubtableCount'] = $SubtableCount[$i] = $this->read_ushort(); + for ($c = 0; $c < $SubtableCount[$i]; $c++) { + $GSLookup[$i]['Subtables'][$c] = $Offsets[$i] + $this->read_ushort(); + } + // MarkFilteringSet = Index (base 0) into GDEF mark glyph sets structure + if (($flag & 0x0010) == 0x0010) { + $GSLookup[$i]['MarkFilteringSet'] = $this->read_ushort(); + } + // else { $GSLookup[$i]['MarkFilteringSet'] = ''; } + // Lookup Type 7: Extension + if ($GSLookup[$i]['Type'] == 7) { + // Overwrites new offset (32-bit) for each subtable, and a new lookup Type + for ($c = 0; $c < $SubtableCount[$i]; $c++) { + $this->seek($GSLookup[$i]['Subtables'][$c]); + $ExtensionPosFormat = $this->read_ushort(); + $type = $this->read_ushort(); + $GSLookup[$i]['Subtables'][$c] = $GSLookup[$i]['Subtables'][$c] + $this->read_ulong(); + } + $GSLookup[$i]['Type'] = $type; + } + } + +//print_r($GSLookup); exit; + //===================================================================================== + // Process Whole LookupList - Get LuCoverage = Lookup coverage just for first glyph + $this->GSLuCoverage = []; + for ($i = 0; $i < $LookupCount; $i++) { + for ($c = 0; $c < $GSLookup[$i]['SubtableCount']; $c++) { + $this->seek($GSLookup[$i]['Subtables'][$c]); + $PosFormat = $this->read_ushort(); + + if ($GSLookup[$i]['Type'] == 5 && $PosFormat == 3) { + $this->skip(4); + } else { + if ($GSLookup[$i]['Type'] == 6 && $PosFormat == 3) { + $BacktrackGlyphCount = $this->read_ushort(); + $this->skip(2 * $BacktrackGlyphCount + 2); + } + } + // NB Coverage only looks at glyphs for position 1 (i.e. 5.3 and 6.3) // NEEDS TO READ ALL ******************** + $Coverage = $GSLookup[$i]['Subtables'][$c] + $this->read_ushort(); + $this->seek($Coverage); + $glyphs = $this->_getCoverage(); + $this->GSLuCoverage[$i][$c] = implode('|', $glyphs); + } + } + +// $this->GSLuCoverage and $GSLookup + //===================================================================================== + $s = '<?php +$GSLuCoverage = ' . var_export($this->GSLuCoverage, true) . '; +?>'; + + //===================================================================================== + $s = '<?php +$GlyphClassBases = \'' . $this->GlyphClassBases . '\'; +$GlyphClassMarks = \'' . $this->GlyphClassMarks . '\'; +$GlyphClassLigatures = \'' . $this->GlyphClassLigatures . '\'; +$GlyphClassComponents = \'' . $this->GlyphClassComponents . '\'; +$MarkGlyphSets = ' . var_export($this->MarkGlyphSets, true) . '; +$MarkAttachmentType = ' . var_export($this->MarkAttachmentType, true) . '; +?>'; + + //===================================================================================== + //===================================================================================== + //===================================================================================== +// Now repeats as original to get Substitution rules + //===================================================================================== + //===================================================================================== + //===================================================================================== + // Get metadata and offsets for whole Lookup List table + $this->seek($LookupList_offset); + $LookupCount = $this->read_ushort(); + $Lookup = []; + for ($i = 0; $i < $LookupCount; $i++) { + $Lookup[$i]['offset'] = $LookupList_offset + $this->read_ushort(); + } + for ($i = 0; $i < $LookupCount; $i++) { + $this->seek($Lookup[$i]['offset']); + $Lookup[$i]['Type'] = $this->read_ushort(); + $Lookup[$i]['Flag'] = $flag = $this->read_ushort(); + $Lookup[$i]['SubtableCount'] = $this->read_ushort(); + for ($c = 0; $c < $Lookup[$i]['SubtableCount']; $c++) { + $Lookup[$i]['Subtable'][$c]['Offset'] = $Lookup[$i]['offset'] + $this->read_ushort(); + } + // MarkFilteringSet = Index (base 0) into GDEF mark glyph sets structure + if (($flag & 0x0010) == 0x0010) { + $Lookup[$i]['MarkFilteringSet'] = $this->read_ushort(); + } else { + $Lookup[$i]['MarkFilteringSet'] = ''; + } + + // Lookup Type 7: Extension + if ($Lookup[$i]['Type'] == 7) { + // Overwrites new offset (32-bit) for each subtable, and a new lookup Type + for ($c = 0; $c < $Lookup[$i]['SubtableCount']; $c++) { + $this->seek($Lookup[$i]['Subtable'][$c]['Offset']); + $ExtensionPosFormat = $this->read_ushort(); + $type = $this->read_ushort(); + $Lookup[$i]['Subtable'][$c]['Offset'] = $Lookup[$i]['Subtable'][$c]['Offset'] + $this->read_ulong(); + } + $Lookup[$i]['Type'] = $type; + } + } + +//print_r($Lookup); exit; + //===================================================================================== + // Process (1) Whole LookupList + for ($i = 0; $i < $LookupCount; $i++) { + for ($c = 0; $c < $Lookup[$i]['SubtableCount']; $c++) { + $this->seek($Lookup[$i]['Subtable'][$c]['Offset']); + $SubstFormat = $this->read_ushort(); + $Lookup[$i]['Subtable'][$c]['Format'] = $SubstFormat; + + /* + Lookup['Type'] Enumeration table for glyph substitution + Value Type Description + 1 Single Replace one glyph with one glyph + 2 Multiple Replace one glyph with more than one glyph + 3 Alternate Replace one glyph with one of many glyphs + 4 Ligature Replace multiple glyphs with one glyph + 5 Context Replace one or more glyphs in context + 6 Chaining Context Replace one or more glyphs in chained context + 7 Extension Substitution Extension mechanism for other substitutions (i.e. this excludes the Extension type substitution itself) + 8 Reverse chaining context single Applied in reverse order, replace single glyph in chaining context + */ + + // LookupType 1: Single Substitution Subtable + if ($Lookup[$i]['Type'] == 1) { + $Lookup[$i]['Subtable'][$c]['CoverageTableOffset'] = $Lookup[$i]['Subtable'][$c]['Offset'] + $this->read_ushort(); + if ($SubstFormat == 1) { // Calculated output glyph indices + $Lookup[$i]['Subtable'][$c]['DeltaGlyphID'] = $this->read_short(); + } else { + if ($SubstFormat == 2) { // Specified output glyph indices + $GlyphCount = $this->read_ushort(); + for ($g = 0; $g < $GlyphCount; $g++) { + $Lookup[$i]['Subtable'][$c]['Glyphs'][] = $this->read_ushort(); + } + } + } + } // LookupType 2: Multiple Substitution Subtable + else { + if ($Lookup[$i]['Type'] == 2) { + $Lookup[$i]['Subtable'][$c]['CoverageTableOffset'] = $Lookup[$i]['Subtable'][$c]['Offset'] + $this->read_ushort(); + $Lookup[$i]['Subtable'][$c]['SequenceCount'] = $SequenceCount = $this->read_short(); + for ($s = 0; $s < $SequenceCount; $s++) { + $Lookup[$i]['Subtable'][$c]['Sequences'][$s]['Offset'] = $Lookup[$i]['Subtable'][$c]['Offset'] + $this->read_short(); + } + for ($s = 0; $s < $SequenceCount; $s++) { + // Sequence Tables + $this->seek($Lookup[$i]['Subtable'][$c]['Sequences'][$s]['Offset']); + $Lookup[$i]['Subtable'][$c]['Sequences'][$s]['GlyphCount'] = $this->read_short(); + for ($g = 0; $g < $Lookup[$i]['Subtable'][$c]['Sequences'][$s]['GlyphCount']; $g++) { + $Lookup[$i]['Subtable'][$c]['Sequences'][$s]['SubstituteGlyphID'][] = $this->read_ushort(); + } + } + } // LookupType 3: Alternate Forms + else { + if ($Lookup[$i]['Type'] == 3) { + $Lookup[$i]['Subtable'][$c]['CoverageTableOffset'] = $Lookup[$i]['Subtable'][$c]['Offset'] + $this->read_ushort(); + $Lookup[$i]['Subtable'][$c]['AlternateSetCount'] = $AlternateSetCount = $this->read_short(); + for ($s = 0; $s < $AlternateSetCount; $s++) { + $Lookup[$i]['Subtable'][$c]['AlternateSets'][$s]['Offset'] = $Lookup[$i]['Subtable'][$c]['Offset'] + $this->read_short(); + } + + for ($s = 0; $s < $AlternateSetCount; $s++) { + // AlternateSet Tables + $this->seek($Lookup[$i]['Subtable'][$c]['AlternateSets'][$s]['Offset']); + $Lookup[$i]['Subtable'][$c]['AlternateSets'][$s]['GlyphCount'] = $this->read_short(); + for ($g = 0; $g < $Lookup[$i]['Subtable'][$c]['AlternateSets'][$s]['GlyphCount']; $g++) { + $Lookup[$i]['Subtable'][$c]['AlternateSets'][$s]['SubstituteGlyphID'][] = $this->read_ushort(); + } + } + } // LookupType 4: Ligature Substitution Subtable + else { + if ($Lookup[$i]['Type'] == 4) { + $Lookup[$i]['Subtable'][$c]['CoverageTableOffset'] = $Lookup[$i]['Subtable'][$c]['Offset'] + $this->read_ushort(); + $Lookup[$i]['Subtable'][$c]['LigSetCount'] = $LigSetCount = $this->read_short(); + for ($s = 0; $s < $LigSetCount; $s++) { + $Lookup[$i]['Subtable'][$c]['LigSet'][$s]['Offset'] = $Lookup[$i]['Subtable'][$c]['Offset'] + $this->read_short(); + } + for ($s = 0; $s < $LigSetCount; $s++) { + // LigatureSet Tables + $this->seek($Lookup[$i]['Subtable'][$c]['LigSet'][$s]['Offset']); + $Lookup[$i]['Subtable'][$c]['LigSet'][$s]['LigCount'] = $this->read_short(); + for ($g = 0; $g < $Lookup[$i]['Subtable'][$c]['LigSet'][$s]['LigCount']; $g++) { + $Lookup[$i]['Subtable'][$c]['LigSet'][$s]['LigatureOffset'][$g] = $Lookup[$i]['Subtable'][$c]['LigSet'][$s]['Offset'] + $this->read_ushort(); + } + } + for ($s = 0; $s < $LigSetCount; $s++) { + for ($g = 0; $g < $Lookup[$i]['Subtable'][$c]['LigSet'][$s]['LigCount']; $g++) { + // Ligature tables + $this->seek($Lookup[$i]['Subtable'][$c]['LigSet'][$s]['LigatureOffset'][$g]); + $Lookup[$i]['Subtable'][$c]['LigSet'][$s]['Ligature'][$g]['LigGlyph'] = $this->read_ushort(); + $Lookup[$i]['Subtable'][$c]['LigSet'][$s]['Ligature'][$g]['CompCount'] = $this->read_ushort(); + for ($l = 1; $l < $Lookup[$i]['Subtable'][$c]['LigSet'][$s]['Ligature'][$g]['CompCount']; $l++) { + $Lookup[$i]['Subtable'][$c]['LigSet'][$s]['Ligature'][$g]['GlyphID'][$l] = $this->read_ushort(); + } + } + } + } // LookupType 5: Contextual Substitution Subtable + else { + if ($Lookup[$i]['Type'] == 5) { + // Format 1: Context Substitution + if ($SubstFormat == 1) { + $Lookup[$i]['Subtable'][$c]['CoverageTableOffset'] = $Lookup[$i]['Subtable'][$c]['Offset'] + $this->read_ushort(); + $Lookup[$i]['Subtable'][$c]['SubRuleSetCount'] = $SubRuleSetCount = $this->read_short(); + for ($s = 0; $s < $SubRuleSetCount; $s++) { + $Lookup[$i]['Subtable'][$c]['SubRuleSet'][$s]['Offset'] = $Lookup[$i]['Subtable'][$c]['Offset'] + $this->read_short(); + } + for ($s = 0; $s < $SubRuleSetCount; $s++) { + // SubRuleSet Tables + $this->seek($Lookup[$i]['Subtable'][$c]['SubRuleSet'][$s]['Offset']); + $Lookup[$i]['Subtable'][$c]['SubRuleSet'][$s]['SubRuleCount'] = $this->read_short(); + for ($g = 0; $g < $Lookup[$i]['Subtable'][$c]['SubRuleSet'][$s]['SubRuleCount']; $g++) { + $Lookup[$i]['Subtable'][$c]['SubRuleSet'][$s]['SubRuleOffset'][$g] = $Lookup[$i]['Subtable'][$c]['SubRuleSet'][$s]['Offset'] + $this->read_ushort(); + } + } + for ($s = 0; $s < $SubRuleSetCount; $s++) { + // SubRule Tables + for ($g = 0; $g < $Lookup[$i]['Subtable'][$c]['SubRuleSet'][$s]['SubRuleCount']; $g++) { + // Ligature tables + $this->seek($Lookup[$i]['Subtable'][$c]['SubRuleSet'][$s]['SubRuleOffset'][$g]); + + $Lookup[$i]['Subtable'][$c]['SubRuleSet'][$s]['SubRule'][$g]['GlyphCount'] = $this->read_ushort(); + $Lookup[$i]['Subtable'][$c]['SubRuleSet'][$s]['SubRule'][$g]['SubstCount'] = $this->read_ushort(); + // "Input"::[GlyphCount - 1]::Array of input GlyphIDs-start with second glyph + for ($l = 1; $l < $Lookup[$i]['Subtable'][$c]['SubRuleSet'][$s]['SubRule'][$g]['GlyphCount']; $l++) { + $Lookup[$i]['Subtable'][$c]['SubRuleSet'][$s]['SubRule'][$g]['Input'][$l] = $this->read_ushort(); + } + // "SubstLookupRecord"::[SubstCount]::Array of SubstLookupRecords-in design order + for ($l = 0; $l < $Lookup[$i]['Subtable'][$c]['SubRuleSet'][$s]['SubRule'][$g]['SubstCount']; $l++) { + $Lookup[$i]['Subtable'][$c]['SubRuleSet'][$s]['SubRule'][$g]['SubstLookupRecord'][$l]['SequenceIndex'] = $this->read_ushort(); + $Lookup[$i]['Subtable'][$c]['SubRuleSet'][$s]['SubRule'][$g]['SubstLookupRecord'][$l]['LookupListIndex'] = $this->read_ushort(); + } + } + } + } // Format 2: Class-based Context Glyph Substitution + else { + if ($SubstFormat == 2) { + $Lookup[$i]['Subtable'][$c]['CoverageTableOffset'] = $Lookup[$i]['Subtable'][$c]['Offset'] + $this->read_ushort(); + $Lookup[$i]['Subtable'][$c]['ClassDefOffset'] = $Lookup[$i]['Subtable'][$c]['Offset'] + $this->read_ushort(); + $Lookup[$i]['Subtable'][$c]['SubClassSetCnt'] = $this->read_ushort(); + for ($b = 0; $b < $Lookup[$i]['Subtable'][$c]['SubClassSetCnt']; $b++) { + $offset = $this->read_ushort(); + if ($offset == 0x0000) { + $Lookup[$i]['Subtable'][$c]['SubClassSetOffset'][] = 0; + } else { + $Lookup[$i]['Subtable'][$c]['SubClassSetOffset'][] = $Lookup[$i]['Subtable'][$c]['Offset'] + $offset; + } + } + } else { + throw new \Mpdf\Exception\FontException("GPOS Lookup Type " . $Lookup[$i]['Type'] . ", Format " . $SubstFormat . " not supported (ttfontsuni.php)."); + } + } + } // LookupType 6: Chaining Contextual Substitution Subtable + else { + if ($Lookup[$i]['Type'] == 6) { + // Format 1: Simple Chaining Context Glyph Substitution p255 + if ($SubstFormat == 1) { + $Lookup[$i]['Subtable'][$c]['CoverageTableOffset'] = $Lookup[$i]['Subtable'][$c]['Offset'] + $this->read_ushort(); + $Lookup[$i]['Subtable'][$c]['ChainSubRuleSetCount'] = $this->read_ushort(); + for ($b = 0; $b < $Lookup[$i]['Subtable'][$c]['ChainSubRuleSetCount']; $b++) { + $Lookup[$i]['Subtable'][$c]['ChainSubRuleSetOffset'][] = $Lookup[$i]['Subtable'][$c]['Offset'] + $this->read_ushort(); + } + } // Format 2: Class-based Chaining Context Glyph Substitution p257 + else { + if ($SubstFormat == 2) { + $Lookup[$i]['Subtable'][$c]['CoverageTableOffset'] = $Lookup[$i]['Subtable'][$c]['Offset'] + $this->read_ushort(); + $Lookup[$i]['Subtable'][$c]['BacktrackClassDefOffset'] = $Lookup[$i]['Subtable'][$c]['Offset'] + $this->read_ushort(); + $Lookup[$i]['Subtable'][$c]['InputClassDefOffset'] = $Lookup[$i]['Subtable'][$c]['Offset'] + $this->read_ushort(); + $Lookup[$i]['Subtable'][$c]['LookaheadClassDefOffset'] = $Lookup[$i]['Subtable'][$c]['Offset'] + $this->read_ushort(); + $Lookup[$i]['Subtable'][$c]['ChainSubClassSetCnt'] = $this->read_ushort(); + for ($b = 0; $b < $Lookup[$i]['Subtable'][$c]['ChainSubClassSetCnt']; $b++) { + $offset = $this->read_ushort(); + if ($offset == 0x0000) { + $Lookup[$i]['Subtable'][$c]['ChainSubClassSetOffset'][] = $offset; + } else { + $Lookup[$i]['Subtable'][$c]['ChainSubClassSetOffset'][] = $Lookup[$i]['Subtable'][$c]['Offset'] + $offset; + } + } + } // Format 3: Coverage-based Chaining Context Glyph Substitution p259 + else { + if ($SubstFormat == 3) { + $Lookup[$i]['Subtable'][$c]['BacktrackGlyphCount'] = $this->read_ushort(); + for ($b = 0; $b < $Lookup[$i]['Subtable'][$c]['BacktrackGlyphCount']; $b++) { + $Lookup[$i]['Subtable'][$c]['CoverageBacktrack'][] = $Lookup[$i]['Subtable'][$c]['Offset'] + $this->read_ushort(); + } + $Lookup[$i]['Subtable'][$c]['InputGlyphCount'] = $this->read_ushort(); + for ($b = 0; $b < $Lookup[$i]['Subtable'][$c]['InputGlyphCount']; $b++) { + $Lookup[$i]['Subtable'][$c]['CoverageInput'][] = $Lookup[$i]['Subtable'][$c]['Offset'] + $this->read_ushort(); + } + $Lookup[$i]['Subtable'][$c]['LookaheadGlyphCount'] = $this->read_ushort(); + for ($b = 0; $b < $Lookup[$i]['Subtable'][$c]['LookaheadGlyphCount']; $b++) { + $Lookup[$i]['Subtable'][$c]['CoverageLookahead'][] = $Lookup[$i]['Subtable'][$c]['Offset'] + $this->read_ushort(); + } + $Lookup[$i]['Subtable'][$c]['SubstCount'] = $this->read_ushort(); + for ($b = 0; $b < $Lookup[$i]['Subtable'][$c]['SubstCount']; $b++) { + $Lookup[$i]['Subtable'][$c]['SubstLookupRecord'][$b]['SequenceIndex'] = $this->read_ushort(); + $Lookup[$i]['Subtable'][$c]['SubstLookupRecord'][$b]['LookupListIndex'] = $this->read_ushort(); + /* + Substitution Lookup Record + All contextual substitution subtables specify the substitution data in a Substitution Lookup Record (SubstLookupRecord). Each record contains a SequenceIndex, which indicates the position where the substitution will occur in the glyph sequence. In addition, a LookupListIndex identifies the lookup to be applied at the glyph position specified by the SequenceIndex. + */ + } + } + } + } + } else { + throw new \Mpdf\Exception\FontException("Lookup Type " . $Lookup[$i]['Type'] . " not supported."); + } + } + } + } + } + } + } + } +//print_r($Lookup); exit; + //===================================================================================== + // Process (2) Whole LookupList + // Get Coverage tables and prepare preg_replace + for ($i = 0; $i < $LookupCount; $i++) { + for ($c = 0; $c < $Lookup[$i]['SubtableCount']; $c++) { + $SubstFormat = $Lookup[$i]['Subtable'][$c]['Format']; + + // LookupType 1: Single Substitution Subtable 1 => 1 + if ($Lookup[$i]['Type'] == 1) { + $this->seek($Lookup[$i]['Subtable'][$c]['CoverageTableOffset']); + $glyphs = $this->_getCoverage(false); + for ($g = 0; $g < count($glyphs); $g++) { + $replace = []; + $substitute = []; + $replace[] = unicode_hex($this->glyphToChar[$glyphs[$g]][0]); + // Flag = Ignore + if ($this->_checkGSUBignore($Lookup[$i]['Flag'], $replace[0], $Lookup[$i]['MarkFilteringSet'])) { + continue; + } + if (isset($Lookup[$i]['Subtable'][$c]['DeltaGlyphID'])) { // Format 1 + $substitute[] = unicode_hex($this->glyphToChar[($glyphs[$g] + $Lookup[$i]['Subtable'][$c]['DeltaGlyphID'])][0]); + } else { // Format 2 + $substitute[] = unicode_hex($this->glyphToChar[($Lookup[$i]['Subtable'][$c]['Glyphs'][$g])][0]); + } + $Lookup[$i]['Subtable'][$c]['subs'][] = ['Replace' => $replace, 'substitute' => $substitute]; + } + } // LookupType 2: Multiple Substitution Subtable 1 => n + else { + if ($Lookup[$i]['Type'] == 2) { + $this->seek($Lookup[$i]['Subtable'][$c]['CoverageTableOffset']); + $glyphs = $this->_getCoverage(); + for ($g = 0; $g < count($glyphs); $g++) { + $replace = []; + $substitute = []; + $replace[] = $glyphs[$g]; + // Flag = Ignore + if ($this->_checkGSUBignore($Lookup[$i]['Flag'], $replace[0], $Lookup[$i]['MarkFilteringSet'])) { + continue; + } + if (!isset($Lookup[$i]['Subtable'][$c]['Sequences'][$g]['SubstituteGlyphID']) || count($Lookup[$i]['Subtable'][$c]['Sequences'][$g]['SubstituteGlyphID']) == 0) { + continue; + } // Illegal for GlyphCount to be 0; either error in font, or something has gone wrong - lets carry on for now! + foreach ($Lookup[$i]['Subtable'][$c]['Sequences'][$g]['SubstituteGlyphID'] as $sub) { + $substitute[] = unicode_hex($this->glyphToChar[$sub][0]); + } + $Lookup[$i]['Subtable'][$c]['subs'][] = ['Replace' => $replace, 'substitute' => $substitute]; + } + } // LookupType 3: Alternate Forms 1 => 1 (only first alternate form is used) + else { + if ($Lookup[$i]['Type'] == 3) { + $this->seek($Lookup[$i]['Subtable'][$c]['CoverageTableOffset']); + $glyphs = $this->_getCoverage(); + for ($g = 0; $g < count($glyphs); $g++) { + $replace = []; + $substitute = []; + $replace[] = $glyphs[$g]; + // Flag = Ignore + if ($this->_checkGSUBignore($Lookup[$i]['Flag'], $replace[0], $Lookup[$i]['MarkFilteringSet'])) { + continue; + } + + for ($gl = 0; $gl < $Lookup[$i]['Subtable'][$c]['AlternateSets'][$g]['GlyphCount']; $gl++) { + $gid = $Lookup[$i]['Subtable'][$c]['AlternateSets'][$g]['SubstituteGlyphID'][$gl]; + $substitute[] = unicode_hex($this->glyphToChar[$gid][0]); + } + + //$gid = $Lookup[$i]['Subtable'][$c]['AlternateSets'][$g]['SubstituteGlyphID'][0]; + //$substitute[] = unicode_hex($this->glyphToChar[$gid][0]); + + $Lookup[$i]['Subtable'][$c]['subs'][] = ['Replace' => $replace, 'substitute' => $substitute]; + } + if ($i == 166) { + print_r($Lookup[$i]['Subtable']); + exit; + } + } // LookupType 4: Ligature Substitution Subtable n => 1 + else { + if ($Lookup[$i]['Type'] == 4) { + $this->seek($Lookup[$i]['Subtable'][$c]['CoverageTableOffset']); + $glyphs = $this->_getCoverage(); + $LigSetCount = $Lookup[$i]['Subtable'][$c]['LigSetCount']; + for ($s = 0; $s < $LigSetCount; $s++) { + for ($g = 0; $g < $Lookup[$i]['Subtable'][$c]['LigSet'][$s]['LigCount']; $g++) { + $replace = []; + $substitute = []; + $replace[] = $glyphs[$s]; + // Flag = Ignore + if ($this->_checkGSUBignore($Lookup[$i]['Flag'], $replace[0], $Lookup[$i]['MarkFilteringSet'])) { + continue; + } + for ($l = 1; $l < $Lookup[$i]['Subtable'][$c]['LigSet'][$s]['Ligature'][$g]['CompCount']; $l++) { + $gid = $Lookup[$i]['Subtable'][$c]['LigSet'][$s]['Ligature'][$g]['GlyphID'][$l]; + $rpl = unicode_hex($this->glyphToChar[$gid][0]); + // Flag = Ignore + if ($this->_checkGSUBignore($Lookup[$i]['Flag'], $rpl, $Lookup[$i]['MarkFilteringSet'])) { + continue 2; + } + $replace[] = $rpl; + } + $gid = $Lookup[$i]['Subtable'][$c]['LigSet'][$s]['Ligature'][$g]['LigGlyph']; + $substitute[] = unicode_hex($this->glyphToChar[$gid][0]); + $Lookup[$i]['Subtable'][$c]['subs'][] = ['Replace' => $replace, 'substitute' => $substitute, 'CompCount' => $Lookup[$i]['Subtable'][$c]['LigSet'][$s]['Ligature'][$g]['CompCount']]; + } + } + } // LookupType 5: Contextual Substitution Subtable + else { + if ($Lookup[$i]['Type'] == 5) { + // Format 1: Context Substitution + if ($SubstFormat == 1) { + $this->seek($Lookup[$i]['Subtable'][$c]['CoverageTableOffset']); + $Lookup[$i]['Subtable'][$c]['CoverageGlyphs'] = $CoverageGlyphs = $this->_getCoverage(); + + for ($s = 0; $s < $Lookup[$i]['Subtable'][$c]['SubRuleSetCount']; $s++) { + $SubRuleSet = $Lookup[$i]['Subtable'][$c]['SubRuleSet'][$s]; + $Lookup[$i]['Subtable'][$c]['SubRuleSet'][$s]['FirstGlyph'] = $CoverageGlyphs[$s]; + for ($r = 0; $r < $Lookup[$i]['Subtable'][$c]['SubRuleSet'][$s]['SubRuleCount']; $r++) { + $GlyphCount = $Lookup[$i]['Subtable'][$c]['SubRuleSet'][$s]['SubRule'][$r]['GlyphCount']; + for ($g = 1; $g < $GlyphCount; $g++) { + $glyphID = $Lookup[$i]['Subtable'][$c]['SubRuleSet'][$s]['SubRule'][$r]['Input'][$g]; + $Lookup[$i]['Subtable'][$c]['SubRuleSet'][$s]['SubRule'][$r]['InputGlyphs'][$g] = unicode_hex($this->glyphToChar[$glyphID][0]); + } + } + } + } // Format 2: Class-based Context Glyph Substitution + else { + if ($SubstFormat == 2) { + $this->seek($Lookup[$i]['Subtable'][$c]['CoverageTableOffset']); + $Lookup[$i]['Subtable'][$c]['CoverageGlyphs'] = $CoverageGlyphs = $this->_getCoverage(); + + $InputClasses = $this->_getClasses($Lookup[$i]['Subtable'][$c]['ClassDefOffset']); + $Lookup[$i]['Subtable'][$c]['InputClasses'] = $InputClasses; + + for ($s = 0; $s < $Lookup[$i]['Subtable'][$c]['SubClassSetCnt']; $s++) { + if ($Lookup[$i]['Subtable'][$c]['SubClassSetOffset'][$s] > 0) { + $this->seek($Lookup[$i]['Subtable'][$c]['SubClassSetOffset'][$s]); + $Lookup[$i]['Subtable'][$c]['SubClassSet'][$s]['SubClassRuleCnt'] = $SubClassRuleCnt = $this->read_ushort(); + $SubClassRule = []; + for ($b = 0; $b < $SubClassRuleCnt; $b++) { + $SubClassRule[$b] = $Lookup[$i]['Subtable'][$c]['SubClassSetOffset'][$s] + $this->read_ushort(); + $Lookup[$i]['Subtable'][$c]['SubClassSet'][$s]['SubClassRule'][$b] = $SubClassRule[$b]; + } + } + } + + for ($s = 0; $s < $Lookup[$i]['Subtable'][$c]['SubClassSetCnt']; $s++) { + $SubClassRuleCnt = $Lookup[$i]['Subtable'][$c]['SubClassSet'][$s]['SubClassRuleCnt']; + for ($b = 0; $b < $SubClassRuleCnt; $b++) { + if ($Lookup[$i]['Subtable'][$c]['SubClassSetOffset'][$s] > 0) { + $this->seek($Lookup[$i]['Subtable'][$c]['SubClassSet'][$s]['SubClassRule'][$b]); + $Rule = []; + $Rule['InputGlyphCount'] = $this->read_ushort(); + $Rule['SubstCount'] = $this->read_ushort(); + for ($r = 1; $r < $Rule['InputGlyphCount']; $r++) { + $Rule['Input'][$r] = $this->read_ushort(); + } + for ($r = 0; $r < $Rule['SubstCount']; $r++) { + $Rule['SequenceIndex'][$r] = $this->read_ushort(); + $Rule['LookupListIndex'][$r] = $this->read_ushort(); + } + + $Lookup[$i]['Subtable'][$c]['SubClassSet'][$s]['SubClassRule'][$b] = $Rule; + } + } + } + } // Format 3: Coverage-based Context Glyph Substitution + else { + if ($SubstFormat == 3) { + for ($b = 0; $b < $Lookup[$i]['Subtable'][$c]['InputGlyphCount']; $b++) { + $this->seek($Lookup[$i]['Subtable'][$c]['CoverageInput'][$b]); + $glyphs = $this->_getCoverage(); + $Lookup[$i]['Subtable'][$c]['CoverageInputGlyphs'][] = implode("|", $glyphs); + } + throw new \Mpdf\Exception\FontException("Lookup Type 5, SubstFormat 3 not tested. Please report this with the name of font used - " . $this->fontkey); + } + } + } + } // LookupType 6: Chaining Contextual Substitution Subtable + else { + if ($Lookup[$i]['Type'] == 6) { + // Format 1: Simple Chaining Context Glyph Substitution p255 + if ($SubstFormat == 1) { + $this->seek($Lookup[$i]['Subtable'][$c]['CoverageTableOffset']); + $Lookup[$i]['Subtable'][$c]['CoverageGlyphs'] = $CoverageGlyphs = $this->_getCoverage(); + + $ChainSubRuleSetCnt = $Lookup[$i]['Subtable'][$c]['ChainSubRuleSetCount']; + + for ($s = 0; $s < $ChainSubRuleSetCnt; $s++) { + $this->seek($Lookup[$i]['Subtable'][$c]['ChainSubRuleSetOffset'][$s]); + $ChainSubRuleCnt = $Lookup[$i]['Subtable'][$c]['ChainSubRuleSet'][$s]['ChainSubRuleCount'] = $this->read_ushort(); + for ($r = 0; $r < $ChainSubRuleCnt; $r++) { + $Lookup[$i]['Subtable'][$c]['ChainSubRuleSet'][$s]['ChainSubRuleOffset'][$r] = $Lookup[$i]['Subtable'][$c]['ChainSubRuleSetOffset'][$s] + $this->read_ushort(); + } + } + for ($s = 0; $s < $ChainSubRuleSetCnt; $s++) { + $ChainSubRuleCnt = $Lookup[$i]['Subtable'][$c]['ChainSubRuleSet'][$s]['ChainSubRuleCount']; + for ($r = 0; $r < $ChainSubRuleCnt; $r++) { + // ChainSubRule + $this->seek($Lookup[$i]['Subtable'][$c]['ChainSubRuleSet'][$s]['ChainSubRuleOffset'][$r]); + + $BacktrackGlyphCount = $Lookup[$i]['Subtable'][$c]['ChainSubRuleSet'][$s]['ChainSubRule'][$r]['BacktrackGlyphCount'] = $this->read_ushort(); + for ($g = 0; $g < $BacktrackGlyphCount; $g++) { + $glyphID = $this->read_ushort(); + $Lookup[$i]['Subtable'][$c]['ChainSubRuleSet'][$s]['ChainSubRule'][$r]['BacktrackGlyphs'][$g] = unicode_hex($this->glyphToChar[$glyphID][0]); + } + + $InputGlyphCount = $Lookup[$i]['Subtable'][$c]['ChainSubRuleSet'][$s]['ChainSubRule'][$r]['InputGlyphCount'] = $this->read_ushort(); + for ($g = 1; $g < $InputGlyphCount; $g++) { + $glyphID = $this->read_ushort(); + $Lookup[$i]['Subtable'][$c]['ChainSubRuleSet'][$s]['ChainSubRule'][$r]['InputGlyphs'][$g] = unicode_hex($this->glyphToChar[$glyphID][0]); + } + + $LookaheadGlyphCount = $Lookup[$i]['Subtable'][$c]['ChainSubRuleSet'][$s]['ChainSubRule'][$r]['LookaheadGlyphCount'] = $this->read_ushort(); + for ($g = 0; $g < $LookaheadGlyphCount; $g++) { + $glyphID = $this->read_ushort(); + $Lookup[$i]['Subtable'][$c]['ChainSubRuleSet'][$s]['ChainSubRule'][$r]['LookaheadGlyphs'][$g] = unicode_hex($this->glyphToChar[$glyphID][0]); + } + + $SubstCount = $Lookup[$i]['Subtable'][$c]['ChainSubRuleSet'][$s]['ChainSubRule'][$r]['SubstCount'] = $this->read_ushort(); + for ($lu = 0; $lu < $SubstCount; $lu++) { + $Lookup[$i]['Subtable'][$c]['ChainSubRuleSet'][$s]['ChainSubRule'][$r]['SequenceIndex'][$lu] = $this->read_ushort(); + $Lookup[$i]['Subtable'][$c]['ChainSubRuleSet'][$s]['ChainSubRule'][$r]['LookupListIndex'][$lu] = $this->read_ushort(); + } + } + } + } // Format 2: Class-based Chaining Context Glyph Substitution p257 + else { + if ($SubstFormat == 2) { + $this->seek($Lookup[$i]['Subtable'][$c]['CoverageTableOffset']); + $Lookup[$i]['Subtable'][$c]['CoverageGlyphs'] = $CoverageGlyphs = $this->_getCoverage(); + + $BacktrackClasses = $this->_getClasses($Lookup[$i]['Subtable'][$c]['BacktrackClassDefOffset']); + $Lookup[$i]['Subtable'][$c]['BacktrackClasses'] = $BacktrackClasses; + + $InputClasses = $this->_getClasses($Lookup[$i]['Subtable'][$c]['InputClassDefOffset']); + $Lookup[$i]['Subtable'][$c]['InputClasses'] = $InputClasses; + + $LookaheadClasses = $this->_getClasses($Lookup[$i]['Subtable'][$c]['LookaheadClassDefOffset']); + $Lookup[$i]['Subtable'][$c]['LookaheadClasses'] = $LookaheadClasses; + + for ($s = 0; $s < $Lookup[$i]['Subtable'][$c]['ChainSubClassSetCnt']; $s++) { + if ($Lookup[$i]['Subtable'][$c]['ChainSubClassSetOffset'][$s] > 0) { + $this->seek($Lookup[$i]['Subtable'][$c]['ChainSubClassSetOffset'][$s]); + $Lookup[$i]['Subtable'][$c]['ChainSubClassSet'][$s]['ChainSubClassRuleCnt'] = $ChainSubClassRuleCnt = $this->read_ushort(); + $ChainSubClassRule = []; + for ($b = 0; $b < $ChainSubClassRuleCnt; $b++) { + $ChainSubClassRule[$b] = $Lookup[$i]['Subtable'][$c]['ChainSubClassSetOffset'][$s] + $this->read_ushort(); + $Lookup[$i]['Subtable'][$c]['ChainSubClassSet'][$s]['ChainSubClassRule'][$b] = $ChainSubClassRule[$b]; + } + } + } + + for ($s = 0; $s < $Lookup[$i]['Subtable'][$c]['ChainSubClassSetCnt']; $s++) { + $ChainSubClassRuleCnt = $Lookup[$i]['Subtable'][$c]['ChainSubClassSet'][$s]['ChainSubClassRuleCnt']; + for ($b = 0; $b < $ChainSubClassRuleCnt; $b++) { + if ($Lookup[$i]['Subtable'][$c]['ChainSubClassSetOffset'][$s] > 0) { + $this->seek($Lookup[$i]['Subtable'][$c]['ChainSubClassSet'][$s]['ChainSubClassRule'][$b]); + $Rule = []; + $Rule['BacktrackGlyphCount'] = $this->read_ushort(); + for ($r = 0; $r < $Rule['BacktrackGlyphCount']; $r++) { + $Rule['Backtrack'][$r] = $this->read_ushort(); + } + $Rule['InputGlyphCount'] = $this->read_ushort(); + for ($r = 1; $r < $Rule['InputGlyphCount']; $r++) { + $Rule['Input'][$r] = $this->read_ushort(); + } + $Rule['LookaheadGlyphCount'] = $this->read_ushort(); + for ($r = 0; $r < $Rule['LookaheadGlyphCount']; $r++) { + $Rule['Lookahead'][$r] = $this->read_ushort(); + } + $Rule['SubstCount'] = $this->read_ushort(); + for ($r = 0; $r < $Rule['SubstCount']; $r++) { + $Rule['SequenceIndex'][$r] = $this->read_ushort(); + $Rule['LookupListIndex'][$r] = $this->read_ushort(); + } + + $Lookup[$i]['Subtable'][$c]['ChainSubClassSet'][$s]['ChainSubClassRule'][$b] = $Rule; + } + } + } + } // Format 3: Coverage-based Chaining Context Glyph Substitution p259 + else { + if ($SubstFormat == 3) { + for ($b = 0; $b < $Lookup[$i]['Subtable'][$c]['BacktrackGlyphCount']; $b++) { + $this->seek($Lookup[$i]['Subtable'][$c]['CoverageBacktrack'][$b]); + $glyphs = $this->_getCoverage(); + $Lookup[$i]['Subtable'][$c]['CoverageBacktrackGlyphs'][] = implode("|", $glyphs); + } + for ($b = 0; $b < $Lookup[$i]['Subtable'][$c]['InputGlyphCount']; $b++) { + $this->seek($Lookup[$i]['Subtable'][$c]['CoverageInput'][$b]); + $glyphs = $this->_getCoverage(); + $Lookup[$i]['Subtable'][$c]['CoverageInputGlyphs'][] = implode("|", $glyphs); + // Don't use above value as these are ordered numerically not as need to process + } + for ($b = 0; $b < $Lookup[$i]['Subtable'][$c]['LookaheadGlyphCount']; $b++) { + $this->seek($Lookup[$i]['Subtable'][$c]['CoverageLookahead'][$b]); + $glyphs = $this->_getCoverage(); + $Lookup[$i]['Subtable'][$c]['CoverageLookaheadGlyphs'][] = implode("|", $glyphs); + } + } + } + } + } + } + } + } + } + } + } + } + + //===================================================================================== + //===================================================================================== + //===================================================================================== + + $st = $this->mpdf->OTLscript; + $t = $this->mpdf->OTLlang; + $langsys = $gsub[$st][$t]; + + $lul = []; // array of LookupListIndexes + $tags = []; // corresponding array of feature tags e.g. 'ccmp' + foreach ($langsys as $tag => $ft) { + foreach ($ft as $ll) { + $lul[$ll] = $tag; + } + } + ksort($lul); // Order the Lookups in the order they are in the GUSB table, regardless of Feature order + $this->_getGSUBarray($Lookup, $lul, $st); +//print_r($lul); exit; + } + +//print_r($Lookup); exit; + + return [$GSUBScriptLang, $gsub, $GSLookup, $rtlPUAstr, $rtlPUAarr]; + } + +///////////////////////////////////////////////////////////////////////////////////////// + // GSUB functions + function _getGSUBarray(&$Lookup, &$lul, $scripttag, $level = 1, $coverage = '', $exB = '', $exL = '') + { + // Process (3) LookupList for specific Script-LangSys + // Generate preg_replace + $html = ''; + if ($level == 1) { + $html .= '<bookmark level="0" content="GSUB features">'; + } + foreach ($lul as $i => $tag) { + $html .= '<div class="level' . $level . '">'; + $html .= '<h5 class="level' . $level . '">'; + if ($level == 1) { + $html .= '<bookmark level="1" content="' . $tag . ' [#' . $i . ']">'; + } + $html .= 'Lookup #' . $i . ' [tag: <span style="color:#000066;">' . $tag . '</span>]</h5>'; + $ignore = $this->_getGSUBignoreString($Lookup[$i]['Flag'], $Lookup[$i]['MarkFilteringSet']); + if ($ignore) { + $html .= '<div class="ignore">Ignoring: ' . $ignore . '</div> '; + } + + $Type = $Lookup[$i]['Type']; + $Flag = $Lookup[$i]['Flag']; + if (($Flag & 0x0001) == 1) { + $dir = 'RTL'; + } else { + $dir = 'LTR'; + } + + for ($c = 0; $c < $Lookup[$i]['SubtableCount']; $c++) { + $html .= '<div class="subtable">Subtable #' . $c; + if ($level == 1) { + $html .= '<bookmark level="2" content="Subtable #' . $c . '">'; + } + $html .= '</div>'; + + $SubstFormat = $Lookup[$i]['Subtable'][$c]['Format']; + + // LookupType 1: Single Substitution Subtable + if ($Lookup[$i]['Type'] == 1) { + $html .= '<div class="lookuptype">LookupType 1: Single Substitution Subtable</div>'; + for ($s = 0; $s < count($Lookup[$i]['Subtable'][$c]['subs']); $s++) { + $inputGlyphs = $Lookup[$i]['Subtable'][$c]['subs'][$s]['Replace']; + $substitute = $Lookup[$i]['Subtable'][$c]['subs'][$s]['substitute'][0]; + if ($level == 2 && strpos($coverage, $inputGlyphs[0]) === false) { + continue; + } + $html .= '<div class="substitution">'; + $html .= '<span class="unicode">' . $this->formatUni($inputGlyphs[0]) . ' </span> '; + if ($level == 2 && $exB) { + $html .= $exB; + } + $html .= '<span class="unchanged"> ' . $this->formatEntity($inputGlyphs[0]) . '</span>'; + if ($level == 2 && $exL) { + $html .= $exL; + } + $html .= '  » »  '; + if ($level == 2 && $exB) { + $html .= $exB; + } + $html .= '<span class="changed"> ' . $this->formatEntity($substitute) . '</span>'; + if ($level == 2 && $exL) { + $html .= $exL; + } + $html .= '  <span class="unicode">' . $this->formatUni($substitute) . '</span> '; + $html .= '</div>'; + } + } // LookupType 2: Multiple Substitution Subtable + else { + if ($Lookup[$i]['Type'] == 2) { + $html .= '<div class="lookuptype">LookupType 2: Multiple Substitution Subtable</div>'; + for ($s = 0; $s < count($Lookup[$i]['Subtable'][$c]['subs']); $s++) { + $inputGlyphs = $Lookup[$i]['Subtable'][$c]['subs'][$s]['Replace']; + $substitute = $Lookup[$i]['Subtable'][$c]['subs'][$s]['substitute']; + if ($level == 2 && strpos($coverage, $inputGlyphs[0]) === false) { + continue; + } + $html .= '<div class="substitution">'; + $html .= '<span class="unicode">' . $this->formatUni($inputGlyphs[0]) . ' </span> '; + if ($level == 2 && $exB) { + $html .= $exB; + } + $html .= '<span class="unchanged"> ' . $this->formatEntity($inputGlyphs[0]) . '</span>'; + if ($level == 2 && $exL) { + $html .= $exL; + } + $html .= '  » »  '; + if ($level == 2 && $exB) { + $html .= $exB; + } + $html .= '<span class="changed"> ' . $this->formatEntityArr($substitute) . '</span>'; + if ($level == 2 && $exL) { + $html .= $exL; + } + $html .= '  <span class="unicode">' . $this->formatUniArr($substitute) . '</span> '; + $html .= '</div>'; + } + } // LookupType 3: Alternate Forms + else { + if ($Lookup[$i]['Type'] == 3) { + $html .= '<div class="lookuptype">LookupType 3: Alternate Forms</div>'; + for ($s = 0; $s < count($Lookup[$i]['Subtable'][$c]['subs']); $s++) { + $inputGlyphs = $Lookup[$i]['Subtable'][$c]['subs'][$s]['Replace']; + $substitute = $Lookup[$i]['Subtable'][$c]['subs'][$s]['substitute'][0]; + if ($level == 2 && strpos($coverage, $inputGlyphs[0]) === false) { + continue; + } + $html .= '<div class="substitution">'; + $html .= '<span class="unicode">' . $this->formatUni($inputGlyphs[0]) . ' </span> '; + if ($level == 2 && $exB) { + $html .= $exB; + } + $html .= '<span class="unchanged"> ' . $this->formatEntity($inputGlyphs[0]) . '</span>'; + if ($level == 2 && $exL) { + $html .= $exL; + } + $html .= '  » »  '; + if ($level == 2 && $exB) { + $html .= $exB; + } + $html .= '<span class="changed"> ' . $this->formatEntity($substitute) . '</span>'; + if ($level == 2 && $exL) { + $html .= $exL; + } + $html .= '  <span class="unicode">' . $this->formatUni($substitute) . '</span> '; + if (count($Lookup[$i]['Subtable'][$c]['subs'][$s]['substitute']) > 1) { + for ($alt = 1; $alt < count($Lookup[$i]['Subtable'][$c]['subs'][$s]['substitute']); $alt++) { + $substitute = $Lookup[$i]['Subtable'][$c]['subs'][$s]['substitute'][$alt]; + $html .= '  |   ALT #' . $alt . '   '; + $html .= '<span class="changed"> ' . $this->formatEntity($substitute) . '</span>'; + $html .= '  <span class="unicode">' . $this->formatUni($substitute) . '</span> '; + } + } + $html .= '</div>'; + } + } // LookupType 4: Ligature Substitution Subtable + else { + if ($Lookup[$i]['Type'] == 4) { + $html .= '<div class="lookuptype">LookupType 4: Ligature Substitution Subtable</div>'; + for ($s = 0; $s < count($Lookup[$i]['Subtable'][$c]['subs']); $s++) { + $inputGlyphs = $Lookup[$i]['Subtable'][$c]['subs'][$s]['Replace']; + $substitute = $Lookup[$i]['Subtable'][$c]['subs'][$s]['substitute'][0]; + if ($level == 2 && strpos($coverage, $inputGlyphs[0]) === false) { + continue; + } + $html .= '<div class="substitution">'; + $html .= '<span class="unicode">' . $this->formatUniArr($inputGlyphs) . ' </span> '; + if ($level == 2 && $exB) { + $html .= $exB; + } + $html .= '<span class="unchanged"> ' . $this->formatEntityArr($inputGlyphs) . '</span>'; + if ($level == 2 && $exL) { + $html .= $exL; + } + $html .= '  » »  '; + if ($level == 2 && $exB) { + $html .= $exB; + } + $html .= '<span class="changed"> ' . $this->formatEntity($substitute) . '</span>'; + if ($level == 2 && $exL) { + $html .= $exL; + } + $html .= '  <span class="unicode">' . $this->formatUni($substitute) . '</span> '; + $html .= '</div>'; + } + } // LookupType 5: Contextual Substitution Subtable + else { + if ($Lookup[$i]['Type'] == 5) { + $html .= '<div class="lookuptype">LookupType 5: Contextual Substitution Subtable</div>'; + // Format 1: Context Substitution + if ($SubstFormat == 1) { + $html .= '<div class="lookuptypesub">Format 1: Context Substitution</div>'; + for ($s = 0; $s < $Lookup[$i]['Subtable'][$c]['SubRuleSetCount']; $s++) { + // SubRuleSet + $subRule = []; + $html .= '<div class="rule">Subrule Set: ' . $s . '</div>'; + foreach ($Lookup[$i]['Subtable'][$c]['SubRuleSet'][$s]['SubRule'] as $rctr => $rule) { + // SubRule + $html .= '<div class="rule">SubRule: ' . $rctr . '</div>'; + $inputGlyphs = []; + if ($rule['GlyphCount'] > 1) { + $inputGlyphs = $rule['InputGlyphs']; + } + $inputGlyphs[0] = $Lookup[$i]['Subtable'][$c]['SubRuleSet'][$s]['FirstGlyph']; + ksort($inputGlyphs); + $nInput = count($inputGlyphs); + + $exampleI = []; + $html .= '<div class="context">CONTEXT: '; + for ($ff = 0; $ff < count($inputGlyphs); $ff++) { + $html .= '<div>Input #' . $ff . ': <span class="unchanged"> ' . $this->formatEntityStr($inputGlyphs[$ff]) . ' </span></div>'; + $exampleI[] = $this->formatEntityFirst($inputGlyphs[$ff]); + } + $html .= '</div>'; + + for ($b = 0; $b < $rule['SubstCount']; $b++) { + $lup = $rule['SubstLookupRecord'][$b]['LookupListIndex']; + $seqIndex = $rule['SubstLookupRecord'][$b]['SequenceIndex']; + + // GENERATE exampleI[<seqIndex] .... exampleI[>seqIndex] + $exB = ''; + $exL = ''; + if ($seqIndex > 0) { + $exB .= '<span class="inputother">'; + for ($ip = 0; $ip < $seqIndex; $ip++) { + $exB .= $this->formatEntity($inputGlyphs[$ip]) . '‍'; + } + $exB .= '</span>'; + } + if (count($inputGlyphs) > ($seqIndex + 1)) { + $exL .= '<span class="inputother">'; + for ($ip = $seqIndex + 1; $ip < count($inputGlyphs); $ip++) { + $exL .= $this->formatEntity($inputGlyphs[$ip]) . '‍'; + } + $exL .= '</span>'; + } + $html .= '<div class="sequenceIndex">Substitution Position: ' . $seqIndex . '</div>'; + + $lul2 = [$lup => $tag]; + + // Only apply if the (first) 'Replace' glyph from the + // Lookup list is in the [inputGlyphs] at ['SequenceIndex'] + // Pass $inputGlyphs[$seqIndex] e.g. 00636|00645|00656 + // to level 2 and only apply if first Replace glyph is in this list + $html .= $this->_getGSUBarray($Lookup, $lul2, $scripttag, 2, $inputGlyphs[$seqIndex], $exB, $exL); + } + + if (count($subRule['rules'])) { + $volt[] = $subRule; + } + } + } + } // Format 2: Class-based Context Glyph Substitution + else { + if ($SubstFormat == 2) { + $html .= '<div class="lookuptypesub">Format 2: Class-based Context Glyph Substitution</div>'; + foreach ($Lookup[$i]['Subtable'][$c]['SubClassSet'] as $inputClass => $cscs) { + $html .= '<div class="rule">Input Class: ' . $inputClass . '</div>'; + for ($cscrule = 0; $cscrule < $cscs['SubClassRuleCnt']; $cscrule++) { + $html .= '<div class="rule">Rule: ' . $cscrule . '</div>'; + $rule = $cscs['SubClassRule'][$cscrule]; + + $inputGlyphs = []; + + $inputGlyphs[0] = $Lookup[$i]['Subtable'][$c]['InputClasses'][$inputClass]; + + if ($rule['InputGlyphCount'] > 1) { + // NB starts at 1 + for ($gcl = 1; $gcl < $rule['InputGlyphCount']; $gcl++) { + $classindex = $rule['Input'][$gcl]; + $inputGlyphs[$gcl] = $Lookup[$i]['Subtable'][$c]['InputClasses'][$classindex]; + } + } + + // Class 0 contains all the glyphs NOT in the other classes + $class0excl = implode('|', $Lookup[$i]['Subtable'][$c]['InputClasses']); + + $exampleI = []; + $html .= '<div class="context">CONTEXT: '; + for ($ff = 0; $ff < count($inputGlyphs); $ff++) { + if (!$inputGlyphs[$ff]) { + $html .= '<div>Input #' . $ff . ': <span class="unchanged"> [NOT ' . $this->formatEntityStr($class0excl) . '] </span></div>'; + $exampleI[] = '[NOT ' . $this->formatEntityFirst($class0excl) . ']'; + } else { + $html .= '<div>Input #' . $ff . ': <span class="unchanged"> ' . $this->formatEntityStr($inputGlyphs[$ff]) . ' </span></div>'; + $exampleI[] = $this->formatEntityFirst($inputGlyphs[$ff]); + } + } + $html .= '</div>'; + + for ($b = 0; $b < $rule['SubstCount']; $b++) { + $lup = $rule['LookupListIndex'][$b]; + $seqIndex = $rule['SequenceIndex'][$b]; + + // GENERATE exampleI[<seqIndex] .... exampleI[>seqIndex] + $exB = ''; + $exL = ''; + + if ($seqIndex > 0) { + $exB .= '<span class="inputother">'; + for ($ip = 0; $ip < $seqIndex; $ip++) { + if (!$inputGlyphs[$ip]) { + $exB .= '[*]'; + } else { + $exB .= $this->formatEntityFirst($inputGlyphs[$ip]) . '‍'; + } + } + $exB .= '</span>'; + } + + if (count($inputGlyphs) > ($seqIndex + 1)) { + $exL .= '<span class="inputother">'; + for ($ip = $seqIndex + 1; $ip < count($inputGlyphs); $ip++) { + if (!$inputGlyphs[$ip]) { + $exL .= '[*]'; + } else { + $exL .= $this->formatEntityFirst($inputGlyphs[$ip]) . '‍'; + } + } + $exL .= '</span>'; + } + + $html .= '<div class="sequenceIndex">Substitution Position: ' . $seqIndex . '</div>'; + + $lul2 = [$lup => $tag]; + + // Only apply if the (first) 'Replace' glyph from the + // Lookup list is in the [inputGlyphs] at ['SequenceIndex'] + // Pass $inputGlyphs[$seqIndex] e.g. 00636|00645|00656 + // to level 2 and only apply if first Replace glyph is in this list + $html .= $this->_getGSUBarray($Lookup, $lul2, $scripttag, 2, $inputGlyphs[$seqIndex], $exB, $exL); + } + if (count($subRule['rules'])) { + $volt[] = $subRule; + } + } + } + } // Format 3: Coverage-based Context Glyph Substitution p259 + else { + if ($SubstFormat == 3) { + $html .= '<div class="lookuptypesub">Format 3: Coverage-based Context Glyph Substitution </div>'; + // IgnoreMarks flag set on main Lookup table + $inputGlyphs = $Lookup[$i]['Subtable'][$c]['CoverageInputGlyphs']; + $CoverageInputGlyphs = implode('|', $inputGlyphs); + $nInput = $Lookup[$i]['Subtable'][$c]['InputGlyphCount']; + + $exampleI = []; + $html .= '<div class="context">CONTEXT: '; + for ($ff = 0; $ff < count($inputGlyphs); $ff++) { + $html .= '<div>Input #' . $ff . ': <span class="unchanged"> ' . $this->formatEntityStr($inputGlyphs[$ff]) . ' </span></div>'; + $exampleI[] = $this->formatEntityFirst($inputGlyphs[$ff]); + } + $html .= '</div>'; + + for ($b = 0; $b < $Lookup[$i]['Subtable'][$c]['SubstCount']; $b++) { + $lup = $Lookup[$i]['Subtable'][$c]['SubstLookupRecord'][$b]['LookupListIndex']; + $seqIndex = $Lookup[$i]['Subtable'][$c]['SubstLookupRecord'][$b]['SequenceIndex']; + // GENERATE exampleI[<seqIndex] .... exampleI[>seqIndex] + $exB = ''; + $exL = ''; + if ($seqIndex > 0) { + $exB .= '<span class="inputother">'; + for ($ip = 0; $ip < $seqIndex; $ip++) { + $exB .= $exampleI[$ip] . '‍'; + } + $exB .= '</span>'; + } + + if (count($inputGlyphs) > ($seqIndex + 1)) { + $exL .= '<span class="inputother">'; + for ($ip = $seqIndex + 1; $ip < count($inputGlyphs); $ip++) { + $exL .= $exampleI[$ip] . '‍'; + } + $exL .= '</span>'; + } + + $html .= '<div class="sequenceIndex">Substitution Position: ' . $seqIndex . '</div>'; + + $lul2 = [$lup => $tag]; + + // Only apply if the (first) 'Replace' glyph from the + // Lookup list is in the [inputGlyphs] at ['SequenceIndex'] + // Pass $inputGlyphs[$seqIndex] e.g. 00636|00645|00656 + // to level 2 and only apply if first Replace glyph is in this list + $html .= $this->_getGSUBarray($Lookup, $lul2, $scripttag, 2, $inputGlyphs[$seqIndex], $exB, $exL); + } + if (count($subRule['rules'])) { + $volt[] = $subRule; + } + } + } + } + +//print_r($Lookup[$i]); +//print_r($volt[(count($volt)-1)]); exit; + } // LookupType 6: Chaining Contextual Substitution Subtable + else { + if ($Lookup[$i]['Type'] == 6) { + $html .= '<div class="lookuptype">LookupType 6: Chaining Contextual Substitution Subtable</div>'; + // Format 1: Simple Chaining Context Glyph Substitution p255 + if ($SubstFormat == 1) { + $html .= '<div class="lookuptypesub">Format 1: Simple Chaining Context Glyph Substitution </div>'; + for ($s = 0; $s < $Lookup[$i]['Subtable'][$c]['ChainSubRuleSetCount']; $s++) { + // ChainSubRuleSet + $subRule = []; + $html .= '<div class="rule">Subrule Set: ' . $s . '</div>'; + $firstInputGlyph = $Lookup[$i]['Subtable'][$c]['CoverageGlyphs'][$s]; // First input gyyph + foreach ($Lookup[$i]['Subtable'][$c]['ChainSubRuleSet'][$s]['ChainSubRule'] as $rctr => $rule) { + $html .= '<div class="rule">SubRule: ' . $rctr . '</div>'; + // ChainSubRule + $inputGlyphs = []; + if ($rule['InputGlyphCount'] > 1) { + $inputGlyphs = $rule['InputGlyphs']; + } + $inputGlyphs[0] = $firstInputGlyph; + ksort($inputGlyphs); + $nInput = count($inputGlyphs); + + if ($rule['BacktrackGlyphCount']) { + $backtrackGlyphs = $rule['BacktrackGlyphs']; + } else { + $backtrackGlyphs = []; + } + + if ($rule['LookaheadGlyphCount']) { + $lookaheadGlyphs = $rule['LookaheadGlyphs']; + } else { + $lookaheadGlyphs = []; + } + + $exampleB = []; + $exampleI = []; + $exampleL = []; + $html .= '<div class="context">CONTEXT: '; + for ($ff = count($backtrackGlyphs) - 1; $ff >= 0; $ff--) { + $html .= '<div>Backtrack #' . $ff . ': <span class="unicode">' . $this->formatUniStr($backtrackGlyphs[$ff]) . '</span></div>'; + $exampleB[] = $this->formatEntityFirst($backtrackGlyphs[$ff]); + } + for ($ff = 0; $ff < count($inputGlyphs); $ff++) { + $html .= '<div>Input #' . $ff . ': <span class="unchanged"> ' . $this->formatEntityStr($inputGlyphs[$ff]) . ' </span></div>'; + $exampleI[] = $this->formatEntityFirst($inputGlyphs[$ff]); + } + for ($ff = 0; $ff < count($lookaheadGlyphs); $ff++) { + $html .= '<div>Lookahead #' . $ff . ': <span class="unicode">' . $this->formatUniStr($lookaheadGlyphs[$ff]) . '</span></div>'; + $exampleL[] = $this->formatEntityFirst($lookaheadGlyphs[$ff]); + } + $html .= '</div>'; + + for ($b = 0; $b < $rule['SubstCount']; $b++) { + $lup = $rule['LookupListIndex'][$b]; + $seqIndex = $rule['SequenceIndex'][$b]; + + // GENERATE exampleB[n] exampleI[<seqIndex] .... exampleI[>seqIndex] exampleL[n] + $exB = ''; + $exL = ''; + if (count($exampleB)) { + $exB .= '<span class="backtrack">' . implode('‍', $exampleB) . '</span>'; + } + + if ($seqIndex > 0) { + $exB .= '<span class="inputother">'; + for ($ip = 0; $ip < $seqIndex; $ip++) { + $exB .= $this->formatEntity($inputGlyphs[$ip]) . '‍'; + } + $exB .= '</span>'; + } + + if (count($inputGlyphs) > ($seqIndex + 1)) { + $exL .= '<span class="inputother">'; + for ($ip = $seqIndex + 1; $ip < count($inputGlyphs); $ip++) { + $exL .= $this->formatEntity($inputGlyphs[$ip]) . '‍'; + } + $exL .= '</span>'; + } + + if (count($exampleL)) { + $exL .= '<span class="lookahead">' . implode('‍', $exampleL) . '</span>'; + } + + $html .= '<div class="sequenceIndex">Substitution Position: ' . $seqIndex . '</div>'; + + $lul2 = [$lup => $tag]; + + // Only apply if the (first) 'Replace' glyph from the + // Lookup list is in the [inputGlyphs] at ['SequenceIndex'] + // Pass $inputGlyphs[$seqIndex] e.g. 00636|00645|00656 + // to level 2 and only apply if first Replace glyph is in this list + $html .= $this->_getGSUBarray($Lookup, $lul2, $scripttag, 2, $inputGlyphs[$seqIndex], $exB, $exL); + } + + if (count($subRule['rules'])) { + $volt[] = $subRule; + } + } + } + } // Format 2: Class-based Chaining Context Glyph Substitution p257 + else { + if ($SubstFormat == 2) { + $html .= '<div class="lookuptypesub">Format 2: Class-based Chaining Context Glyph Substitution </div>'; + foreach ($Lookup[$i]['Subtable'][$c]['ChainSubClassSet'] as $inputClass => $cscs) { + $html .= '<div class="rule">Input Class: ' . $inputClass . '</div>'; + for ($cscrule = 0; $cscrule < $cscs['ChainSubClassRuleCnt']; $cscrule++) { + $html .= '<div class="rule">Rule: ' . $cscrule . '</div>'; + $rule = $cscs['ChainSubClassRule'][$cscrule]; + + // These contain classes of glyphs as strings + // $Lookup[$i]['Subtable'][$c]['InputClasses'][(class)] e.g. 02E6|02E7|02E8 + // $Lookup[$i]['Subtable'][$c]['LookaheadClasses'][(class)] + // $Lookup[$i]['Subtable'][$c]['BacktrackClasses'][(class)] + // These contain arrays of classIndexes + // [Backtrack] [Lookahead] and [Input] (Input is from the second position only) + + $inputGlyphs = []; + + $inputGlyphs[0] = $Lookup[$i]['Subtable'][$c]['InputClasses'][$inputClass]; + if ($rule['InputGlyphCount'] > 1) { + // NB starts at 1 + for ($gcl = 1; $gcl < $rule['InputGlyphCount']; $gcl++) { + $classindex = $rule['Input'][$gcl]; + $inputGlyphs[$gcl] = $Lookup[$i]['Subtable'][$c]['InputClasses'][$classindex]; + } + } + // Class 0 contains all the glyphs NOT in the other classes + $class0excl = implode('|', $Lookup[$i]['Subtable'][$c]['InputClasses']); + + $nInput = $rule['InputGlyphCount']; + + if ($rule['BacktrackGlyphCount']) { + for ($gcl = 0; $gcl < $rule['BacktrackGlyphCount']; $gcl++) { + $classindex = $rule['Backtrack'][$gcl]; + $backtrackGlyphs[$gcl] = $Lookup[$i]['Subtable'][$c]['BacktrackClasses'][$classindex]; + } + } else { + $backtrackGlyphs = []; + } + + if ($rule['LookaheadGlyphCount']) { + for ($gcl = 0; $gcl < $rule['LookaheadGlyphCount']; $gcl++) { + $classindex = $rule['Lookahead'][$gcl]; + $lookaheadGlyphs[$gcl] = $Lookup[$i]['Subtable'][$c]['LookaheadClasses'][$classindex]; + } + } else { + $lookaheadGlyphs = []; + } + + $exampleB = []; + $exampleI = []; + $exampleL = []; + $html .= '<div class="context">CONTEXT: '; + for ($ff = count($backtrackGlyphs) - 1; $ff >= 0; $ff--) { + if (!$backtrackGlyphs[$ff]) { + $html .= '<div>Backtrack #' . $ff . ': <span class="unchanged"> [NOT ' . $this->formatEntityStr($class0excl) . '] </span></div>'; + $exampleB[] = '[NOT ' . $this->formatEntityFirst($class0excl) . ']'; + } else { + $html .= '<div>Backtrack #' . $ff . ': <span class="unicode">' . $this->formatUniStr($backtrackGlyphs[$ff]) . '</span></div>'; + $exampleB[] = $this->formatEntityFirst($backtrackGlyphs[$ff]); + } + } + for ($ff = 0; $ff < count($inputGlyphs); $ff++) { + if (!$inputGlyphs[$ff]) { + $html .= '<div>Input #' . $ff . ': <span class="unchanged"> [NOT ' . $this->formatEntityStr($class0excl) . '] </span></div>'; + $exampleI[] = '[NOT ' . $this->formatEntityFirst($class0excl) . ']'; + } else { + $html .= '<div>Input #' . $ff . ': <span class="unchanged"> ' . $this->formatEntityStr($inputGlyphs[$ff]) . ' </span></div>'; + $exampleI[] = $this->formatEntityFirst($inputGlyphs[$ff]); + } + } + for ($ff = 0; $ff < count($lookaheadGlyphs); $ff++) { + if (!$lookaheadGlyphs[$ff]) { + $html .= '<div>Lookahead #' . $ff . ': <span class="unchanged"> [NOT ' . $this->formatEntityStr($class0excl) . '] </span></div>'; + $exampleL[] = '[NOT ' . $this->formatEntityFirst($class0excl) . ']'; + } else { + $html .= '<div>Lookahead #' . $ff . ': <span class="unicode">' . $this->formatUniStr($lookaheadGlyphs[$ff]) . '</span></div>'; + $exampleL[] = $this->formatEntityFirst($lookaheadGlyphs[$ff]); + } + } + $html .= '</div>'; + + for ($b = 0; $b < $rule['SubstCount']; $b++) { + $lup = $rule['LookupListIndex'][$b]; + $seqIndex = $rule['SequenceIndex'][$b]; + + // GENERATE exampleB[n] exampleI[<seqIndex] .... exampleI[>seqIndex] exampleL[n] + $exB = ''; + $exL = ''; + if (count($exampleB)) { + $exB .= '<span class="backtrack">' . implode('‍', $exampleB) . '</span>'; + } + + if ($seqIndex > 0) { + $exB .= '<span class="inputother">'; + for ($ip = 0; $ip < $seqIndex; $ip++) { + if (!$inputGlyphs[$ip]) { + $exB .= '[*]'; + } else { + $exB .= $this->formatEntityFirst($inputGlyphs[$ip]) . '‍'; + } + } + $exB .= '</span>'; + } + + if (count($inputGlyphs) > ($seqIndex + 1)) { + $exL .= '<span class="inputother">'; + for ($ip = $seqIndex + 1; $ip < count($inputGlyphs); $ip++) { + if (!$inputGlyphs[$ip]) { + $exL .= '[*]'; + } else { + $exL .= $this->formatEntityFirst($inputGlyphs[$ip]) . '‍'; + } + } + $exL .= '</span>'; + } + + if (count($exampleL)) { + $exL .= '<span class="lookahead">' . implode('‍', $exampleL) . '</span>'; + } + + $html .= '<div class="sequenceIndex">Substitution Position: ' . $seqIndex . '</div>'; + + $lul2 = [$lup => $tag]; + + // Only apply if the (first) 'Replace' glyph from the + // Lookup list is in the [inputGlyphs] at ['SequenceIndex'] + // Pass $inputGlyphs[$seqIndex] e.g. 00636|00645|00656 + // to level 2 and only apply if first Replace glyph is in this list + $html .= $this->_getGSUBarray($Lookup, $lul2, $scripttag, 2, $inputGlyphs[$seqIndex], $exB, $exL); + } + } + } + +//print_r($Lookup[$i]['Subtable'][$c]); exit; + } // Format 3: Coverage-based Chaining Context Glyph Substitution p259 + else { + if ($SubstFormat == 3) { + $html .= '<div class="lookuptypesub">Format 3: Coverage-based Chaining Context Glyph Substitution </div>'; + // IgnoreMarks flag set on main Lookup table + $inputGlyphs = $Lookup[$i]['Subtable'][$c]['CoverageInputGlyphs']; + $CoverageInputGlyphs = implode('|', $inputGlyphs); + $nInput = $Lookup[$i]['Subtable'][$c]['InputGlyphCount']; + + if ($Lookup[$i]['Subtable'][$c]['BacktrackGlyphCount']) { + $backtrackGlyphs = $Lookup[$i]['Subtable'][$c]['CoverageBacktrackGlyphs']; + } else { + $backtrackGlyphs = []; + } + + if ($Lookup[$i]['Subtable'][$c]['LookaheadGlyphCount']) { + $lookaheadGlyphs = $Lookup[$i]['Subtable'][$c]['CoverageLookaheadGlyphs']; + } else { + $lookaheadGlyphs = []; + } + + $exampleB = []; + $exampleI = []; + $exampleL = []; + $html .= '<div class="context">CONTEXT: '; + for ($ff = count($backtrackGlyphs) - 1; $ff >= 0; $ff--) { + $html .= '<div>Backtrack #' . $ff . ': <span class="unicode">' . $this->formatUniStr($backtrackGlyphs[$ff]) . '</span></div>'; + $exampleB[] = $this->formatEntityFirst($backtrackGlyphs[$ff]); + } + for ($ff = 0; $ff < count($inputGlyphs); $ff++) { + $html .= '<div>Input #' . $ff . ': <span class="unchanged"> ' . $this->formatEntityStr($inputGlyphs[$ff]) . ' </span></div>'; + $exampleI[] = $this->formatEntityFirst($inputGlyphs[$ff]); + } + for ($ff = 0; $ff < count($lookaheadGlyphs); $ff++) { + $html .= '<div>Lookahead #' . $ff . ': <span class="unicode">' . $this->formatUniStr($lookaheadGlyphs[$ff]) . '</span></div>'; + $exampleL[] = $this->formatEntityFirst($lookaheadGlyphs[$ff]); + } + $html .= '</div>'; + + for ($b = 0; $b < $Lookup[$i]['Subtable'][$c]['SubstCount']; $b++) { + $lup = $Lookup[$i]['Subtable'][$c]['SubstLookupRecord'][$b]['LookupListIndex']; + $seqIndex = $Lookup[$i]['Subtable'][$c]['SubstLookupRecord'][$b]['SequenceIndex']; + + // GENERATE exampleB[n] exampleI[<seqIndex] .... exampleI[>seqIndex] exampleL[n] + $exB = ''; + $exL = ''; + if (count($exampleB)) { + $exB .= '<span class="backtrack">' . implode('‍', $exampleB) . '</span>'; + } + + if ($seqIndex > 0) { + $exB .= '<span class="inputother">'; + for ($ip = 0; $ip < $seqIndex; $ip++) { + $exB .= $exampleI[$ip] . '‍'; + } + $exB .= '</span>'; + } + + if (count($inputGlyphs) > ($seqIndex + 1)) { + $exL .= '<span class="inputother">'; + for ($ip = $seqIndex + 1; $ip < count($inputGlyphs); $ip++) { + $exL .= $exampleI[$ip] . '‍'; + } + $exL .= '</span>'; + } + + if (count($exampleL)) { + $exL .= '<span class="lookahead">' . implode('‍', $exampleL) . '</span>'; + } + + $html .= '<div class="sequenceIndex">Substitution Position: ' . $seqIndex . '</div>'; + + $lul2 = [$lup => $tag]; + + // Only apply if the (first) 'Replace' glyph from the + // Lookup list is in the [inputGlyphs] at ['SequenceIndex'] + // Pass $inputGlyphs[$seqIndex] e.g. 00636|00645|00656 + // to level 2 and only apply if first Replace glyph is in this list + $html .= $this->_getGSUBarray($Lookup, $lul2, $scripttag, 2, $inputGlyphs[$seqIndex], $exB, $exL); + } + } + } + } + } + } + } + } + } + } + } + $html .= '</div>'; + } + if ($level == 1) { + $this->mpdf->WriteHTML($html); + } else { + return $html; + } +//print_r($Lookup); exit; + } + + //===================================================================================== + //===================================================================================== + // mPDF 5.7.1 + function _checkGSUBignore($flag, $glyph, $MarkFilteringSet) + { + $ignore = false; + // Flag & 0x0008 = Ignore Marks + if ((($flag & 0x0008) == 0x0008) && strpos($this->GlyphClassMarks, $glyph)) { + $ignore = true; + } + if ((($flag & 0x0004) == 0x0004) && strpos($this->GlyphClassLigatures, $glyph)) { + $ignore = true; + } + if ((($flag & 0x0002) == 0x0002) && strpos($this->GlyphClassBases, $glyph)) { + $ignore = true; + } + // Flag & 0xFF?? = MarkAttachmentType + if (($flag & 0xFF00) && strpos($this->MarkAttachmentType[($flag >> 8)], $glyph)) { + $ignore = true; + } + // Flag & 0x0010 = UseMarkFilteringSet + if (($flag & 0x0010) && strpos($this->MarkGlyphSets[$MarkFilteringSet], $glyph)) { + $ignore = true; + } + + return $ignore; + } + + function _getGSUBignoreString($flag, $MarkFilteringSet) + { + // If ignoreFlag set, combine all ignore glyphs into -> "((?:(?: FBA1| FBA2| FBA3))*)" + // else "()" + // for Input - set on secondary Lookup table if in Context, and set Backtrack and Lookahead on Context Lookup + $str = ""; + $ignoreflag = 0; + + // Flag & 0xFF?? = MarkAttachmentType + if ($flag & 0xFF00) { + $MarkAttachmentType = $flag >> 8; + $ignoreflag = $flag; + //$str = $this->MarkAttachmentType[$MarkAttachmentType]; + $str = "MarkAttachmentType[" . $MarkAttachmentType . "] "; + } + + // Flag & 0x0010 = UseMarkFilteringSet + if ($flag & 0x0010) { + throw new \Mpdf\Exception\FontException("This font " . $this->fontkey . " contains MarkGlyphSets"); + $str = "Mark Glyph Set: "; + $str .= $this->MarkGlyphSets[$MarkFilteringSet]; + } + + // If Ignore Marks set, supercedes any above + // Flag & 0x0008 = Ignore Marks + if (($flag & 0x0008) == 0x0008) { + $ignoreflag = 8; + //$str = $this->GlyphClassMarks; + $str = "Mark Glyphs "; + } + + // Flag & 0x0004 = Ignore Ligatures + if (($flag & 0x0004) == 0x0004) { + $ignoreflag += 4; + if ($str) { + $str .= "|"; + } + //$str .= $this->GlyphClassLigatures; + $str .= "Ligature Glyphs "; + } + // Flag & 0x0002 = Ignore BaseGlyphs + if (($flag & 0x0002) == 0x0002) { + $ignoreflag += 2; + if ($str) { + $str .= "|"; + } + //$str .= $this->GlyphClassBases; + $str .= "Base Glyphs "; + } + if ($str) { + return $str; + } else { + return ""; + } + } + + // GSUB Patterns + + /* + BACKTRACK INPUT LOOKAHEAD + ================================== ================== ================================== + (FEEB|FEEC)(ign) ¦(FD12|FD13)(ign) ¦(0612)¦(ign) (0613)¦(ign) (FD12|FD13)¦(ign) (FEEB|FEEC) + ---------------- ---------------- ----- ------------ --------------- --------------- + Backtrack 1 Backtrack 2 Input 1 Input 2 Lookahead 1 Lookahead 2 + -------- --- --------- --- ---- --- ---- --- --------- --- ------- + \${1} \${2} \${3} \${4} \${5+} \${6+} \${7+} \${8+} + + nBacktrack = 2 nInput = 2 nLookahead = 2 + + nBsubs = 2xnBack nIsubs = (nBsubs+) nLsubs = (nBsubs+nIsubs+) 2xnLookahead + "\${1}\${2} " (nInput*2)-1 "\${5+} \${6+}" + "REPL" + + ¦\${1}\${2} ¦\${3}\${4} ¦REPL¦\${5+} \${6+}¦\${7+} \${8+}¦ + + + INPUT nInput = 5 + ============================================================ + ¦(0612)¦(ign) (0613)¦(ign) (0614)¦(ign) (0615)¦(ign) (0615)¦ + \${1} \${2} \${3} \${4} \${5} \${6} \${7} \${8} \${9} (All backreference numbers are + nBsubs) + ----- ------------ ------------ ------------ ------------ + Input 1 Input 2 Input 3 Input 4 Input 5 + + A====== SequenceIndex=1 ; Lookup match nGlyphs=1 + B=================== SequenceIndex=1 ; Lookup match nGlyphs=2 + C=============================== SequenceIndex=1 ; Lookup match nGlyphs=3 + D======================= SequenceIndex=2 ; Lookup match nGlyphs=2 + E===================================== SequenceIndex=2 ; Lookup match nGlyphs=3 + F====================== SequenceIndex=4 ; Lookup match nGlyphs=2 + + All backreference numbers are + nBsubs + A - "REPL\${2} \${3}\${4} \${5}\${6} \${7}\${8} \${9}" + B - "REPL\${2}\${4} \${5}\${6} \${7}\${8} \${9}" + C - "REPL\${2}\${4}\${6} \${7}\${8} \${9}" + D - "\${1} REPL\${2}\${4}\${6} \${7}\${8} \${9}" + E - "\${1} REPL\${2}\${4}\${6}\${8} \${9}" + F - "\${1}\${2} \${3}\${4} \${5} REPL\${6}\${8}" + */ + + function _makeGSUBcontextInputMatch($inputGlyphs, $ignore, $lookupGlyphs, $seqIndex) + { + // $ignore = "((?:(?: FBA1| FBA2| FBA3))*)" or "()" + // Returns e.g. ¦(0612)¦(ignore) (0613)¦(ignore) (0614)¦ + // $inputGlyphs = array of glyphs(glyphstrings) making up Input sequence in Context + // $lookupGlyphs = array of glyphs (single Glyphs) making up Lookup Input sequence + $mLen = count($lookupGlyphs); // nGlyphs in the secondary Lookup match + $nInput = count($inputGlyphs); // nGlyphs in the Primary Input sequence + $str = ""; + for ($i = 0; $i < $nInput; $i++) { + if ($i > 0) { + $str .= $ignore . " "; + } + if ($i >= $seqIndex && $i < ($seqIndex + $mLen)) { + $str .= "" . $lookupGlyphs[($i - $seqIndex)] . ""; + } else { + $str .= "" . $inputGlyphs[($i)] . ""; + } + } + + return $str; + } + + function _makeGSUBinputMatch($inputGlyphs, $ignore) + { + // $ignore = "((?:(?: FBA1| FBA2| FBA3))*)" or "()" + // Returns e.g. ¦(0612)¦(ignore) (0613)¦(ignore) (0614)¦ + // $inputGlyphs = array of glyphs(glyphstrings) making up Input sequence in Context + // $lookupGlyphs = array of glyphs making up Lookup Input sequence - if applicable + $str = ""; + for ($i = 1; $i <= count($inputGlyphs); $i++) { + if ($i > 1) { + $str .= $ignore . " "; + } + $str .= "" . $inputGlyphs[($i - 1)] . ""; + } + + return $str; + } + + function _makeGSUBbacktrackMatch($backtrackGlyphs, $ignore) + { + // $ignore = "((?:(?: FBA1| FBA2| FBA3))*)" or "()" + // Returns e.g. ¦(FEEB|FEEC)(ignore) ¦(FD12|FD13)(ignore) ¦ + // $backtrackGlyphs = array of glyphstrings making up Backtrack sequence + // 3 2 1 0 + // each item being e.g. E0AD|E0AF|F1FD + $str = ""; + for ($i = (count($backtrackGlyphs) - 1); $i >= 0; $i--) { + $str .= "" . $backtrackGlyphs[$i] . " " . $ignore . " "; + } + + return $str; + } + + function _makeGSUBlookaheadMatch($lookaheadGlyphs, $ignore) + { + // $ignore = "((?:(?: FBA1| FBA2| FBA3))*)" or "()" + // Returns e.g. ¦(ignore) (FD12|FD13)¦(ignore) (FEEB|FEEC)¦ + // $lookaheadGlyphs = array of glyphstrings making up Lookahead sequence + // 0 1 2 3 + // each item being e.g. E0AD|E0AF|F1FD + $str = ""; + for ($i = 0; $i < count($lookaheadGlyphs); $i++) { + $str .= $ignore . " " . $lookaheadGlyphs[$i] . ""; + } + + return $str; + } + + function _makeGSUBinputReplacement($nInput, $REPL, $ignore, $nBsubs, $mLen, $seqIndex) + { + // Returns e.g. "REPL\${6}\${8}" or "\${1}\${2} \${3} REPL\${4}\${6}\${8} \${9}" + // $nInput nGlyphs in the Primary Input sequence + // $REPL replacement glyphs from secondary lookup + // $ignore = "((?:(?: FBA1| FBA2| FBA3))*)" or "()" + // $nBsubs Number of Backtrack substitutions (= 2x Number of Backtrack glyphs) + // $mLen nGlyphs in the secondary Lookup match - if no secondary lookup, should=$nInput + // $seqIndex Sequence Index to apply the secondary match + if ($ignore == "()") { + $ign = false; + } else { + $ign = true; + } + $str = ""; + if ($nInput == 1) { + $str = $REPL; + } else { + if ($nInput > 1) { + if ($mLen == $nInput) { // whole string replaced + $str = $REPL; + if ($ign) { + // for every nInput over 1, add another replacement backreference, to move IGNORES after replacement + for ($x = 2; $x <= $nInput; $x++) { + $str .= '\\' . ($nBsubs + (2 * ($x - 1))); + } + } + } else { // if only part of string replaced: + for ($x = 1; $x < ($seqIndex + 1); $x++) { + if ($x == 1) { + $str .= '\\' . ($nBsubs + 1); + } else { + if ($ign) { + $str .= '\\' . ($nBsubs + (2 * ($x - 1))); + } + $str .= ' \\' . ($nBsubs + 1 + (2 * ($x - 1))); + } + } + if ($seqIndex > 0) { + $str .= " "; + } + $str .= $REPL; + if ($ign) { + for ($x = (max(($seqIndex + 1), 2)); $x < ($seqIndex + 1 + $mLen); $x++) { // move IGNORES after replacement + $str .= '\\' . ($nBsubs + (2 * ($x - 1))); + } + } + for ($x = ($seqIndex + 1 + $mLen); $x <= $nInput; $x++) { + if ($ign) { + $str .= '\\' . ($nBsubs + (2 * ($x - 1))); + } + $str .= ' \\' . ($nBsubs + 1 + (2 * ($x - 1))); + } + } + } + } + + return $str; + } + + ////////////////////////////////////////////////////////////////////////////////// + function _getCoverage($convert2hex = true) + { + $g = []; + $CoverageFormat = $this->read_ushort(); + if ($CoverageFormat == 1) { + $CoverageGlyphCount = $this->read_ushort(); + for ($gid = 0; $gid < $CoverageGlyphCount; $gid++) { + $glyphID = $this->read_ushort(); + if ($convert2hex) { + $g[] = unicode_hex($this->glyphToChar[$glyphID][0]); + } else { + $g[] = $glyphID; + } + } + } + if ($CoverageFormat == 2) { + $RangeCount = $this->read_ushort(); + for ($r = 0; $r < $RangeCount; $r++) { + $start = $this->read_ushort(); + $end = $this->read_ushort(); + $StartCoverageIndex = $this->read_ushort(); // n/a + for ($gid = $start; $gid <= $end; $gid++) { + $glyphID = $gid; + if ($convert2hex) { + $g[] = unicode_hex($this->glyphToChar[$glyphID][0]); + } else { + $g[] = $glyphID; + } + } + } + } + + return $g; + } + + ////////////////////////////////////////////////////////////////////////////////// + function _getClasses($offset) + { + $this->seek($offset); + $ClassFormat = $this->read_ushort(); + $GlyphByClass = []; + if ($ClassFormat == 1) { + $StartGlyph = $this->read_ushort(); + $GlyphCount = $this->read_ushort(); + for ($i = 0; $i < $GlyphCount; $i++) { + $startGlyphID = $StartGlyph + $i; + $endGlyphID = $StartGlyph + $i; + $class = $this->read_ushort(); + for ($g = $startGlyphID; $g <= $endGlyphID; $g++) { + if ($this->glyphToChar[$g][0]) { + $GlyphByClass[$class][] = unicode_hex($this->glyphToChar[$g][0]); + } + } + } + } else { + if ($ClassFormat == 2) { + $tableCount = $this->read_ushort(); + for ($i = 0; $i < $tableCount; $i++) { + $startGlyphID = $this->read_ushort(); + $endGlyphID = $this->read_ushort(); + $class = $this->read_ushort(); + for ($g = $startGlyphID; $g <= $endGlyphID; $g++) { + if ($this->glyphToChar[$g][0]) { + $GlyphByClass[$class][] = unicode_hex($this->glyphToChar[$g][0]); + } + } + } + } + } + $gbc = []; + foreach ($GlyphByClass as $class => $garr) { + $gbc[$class] = implode('|', $garr); + } + + return $gbc; + } + + ////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////// + function _getGPOStables() + { + /////////////////////////////////// + // GPOS - Glyph Positioning + /////////////////////////////////// + if (isset($this->tables["GPOS"])) { + $this->mpdf->WriteHTML('<h1>GPOS Tables</h1>'); + $ffeats = []; + $gpos_offset = $this->seek_table("GPOS"); + $this->skip(4); + $ScriptList_offset = $gpos_offset + $this->read_ushort(); + $FeatureList_offset = $gpos_offset + $this->read_ushort(); + $LookupList_offset = $gpos_offset + $this->read_ushort(); + + // ScriptList + $this->seek($ScriptList_offset); + $ScriptCount = $this->read_ushort(); + for ($i = 0; $i < $ScriptCount; $i++) { + $ScriptTag = $this->read_tag(); // = "beng", "deva" etc. + $ScriptTableOffset = $this->read_ushort(); + $ffeats[$ScriptTag] = $ScriptList_offset + $ScriptTableOffset; + } + + // Script Table + foreach ($ffeats as $t => $o) { + $ls = []; + $this->seek($o); + $DefLangSys_offset = $this->read_ushort(); + if ($DefLangSys_offset > 0) { + $ls['DFLT'] = $DefLangSys_offset + $o; + } + $LangSysCount = $this->read_ushort(); + for ($i = 0; $i < $LangSysCount; $i++) { + $LangTag = $this->read_tag(); // = + $LangTableOffset = $this->read_ushort(); + $ls[$LangTag] = $o + $LangTableOffset; + } + $ffeats[$t] = $ls; + } + + // Get FeatureIndexList + // LangSys Table - from first listed langsys + foreach ($ffeats as $st => $scripts) { + foreach ($scripts as $t => $o) { + $FeatureIndex = []; + $langsystable_offset = $o; + $this->seek($langsystable_offset); + $LookUpOrder = $this->read_ushort(); //==NULL + $ReqFeatureIndex = $this->read_ushort(); + if ($ReqFeatureIndex != 0xFFFF) { + $FeatureIndex[] = $ReqFeatureIndex; + } + $FeatureCount = $this->read_ushort(); + for ($i = 0; $i < $FeatureCount; $i++) { + $FeatureIndex[] = $this->read_ushort(); // = index of feature + } + $ffeats[$st][$t] = $FeatureIndex; + } + } +//print_r($ffeats); exit; + // Feauture List => LookupListIndex es + $this->seek($FeatureList_offset); + $FeatureCount = $this->read_ushort(); + $Feature = []; + for ($i = 0; $i < $FeatureCount; $i++) { + $Feature[$i] = ['tag' => $this->read_tag()]; + $Feature[$i]['offset'] = $FeatureList_offset + $this->read_ushort(); + } + for ($i = 0; $i < $FeatureCount; $i++) { + $this->seek($Feature[$i]['offset']); + $this->read_ushort(); // null + $Feature[$i]['LookupCount'] = $Lookupcount = $this->read_ushort(); + $Feature[$i]['LookupListIndex'] = []; + for ($c = 0; $c < $Lookupcount; $c++) { + $Feature[$i]['LookupListIndex'][] = $this->read_ushort(); + } + } + + foreach ($ffeats as $st => $scripts) { + foreach ($scripts as $t => $o) { + $FeatureIndex = $ffeats[$st][$t]; + foreach ($FeatureIndex as $k => $fi) { + $ffeats[$st][$t][$k] = $Feature[$fi]; + } + } + } +//print_r($ffeats); exit; + //===================================================================================== + $gpos = []; + $GPOSScriptLang = []; + foreach ($ffeats as $st => $scripts) { + foreach ($scripts as $t => $langsys) { + $lg = []; + foreach ($langsys as $ft) { + $lg[$ft['LookupListIndex'][0]] = $ft; + } + // list of Lookups in order they need to be run i.e. order listed in Lookup table + ksort($lg); + foreach ($lg as $ft) { + $gpos[$st][$t][$ft['tag']] = $ft['LookupListIndex']; + } + if (!isset($GPOSScriptLang[$st])) { + $GPOSScriptLang[$st] = ''; + } + $GPOSScriptLang[$st] .= $t . ' '; + } + } + if ($this->mode == 'summary') { + $this->mpdf->WriteHTML('<h3>GPOS Scripts & Languages</h3>'); + $html = ''; + if (count($gpos)) { + foreach ($gpos as $st => $g) { + $html .= '<h5>' . $st . '</h5>'; + foreach ($g as $l => $t) { + $html .= '<div><a href="font_dump_OTL.php?script=' . $st . '&lang=' . $l . '">' . $l . '</a></b>: '; + foreach ($t as $tag => $o) { + $html .= $tag . ' '; + } + $html .= '</div>'; + } + } + } else { + $html .= '<div>No entries in GPOS table.</div>'; + } + $this->mpdf->WriteHTML($html); + $this->mpdf->WriteHTML('</div>'); + + return 0; + } + + //===================================================================================== + // Get metadata and offsets for whole Lookup List table + $this->seek($LookupList_offset); + $LookupCount = $this->read_ushort(); + $Lookup = []; + $Offsets = []; + $SubtableCount = []; + for ($i = 0; $i < $LookupCount; $i++) { + $Offsets[$i] = $LookupList_offset + $this->read_ushort(); + } + for ($i = 0; $i < $LookupCount; $i++) { + $this->seek($Offsets[$i]); + $Lookup[$i]['Type'] = $this->read_ushort(); + $Lookup[$i]['Flag'] = $flag = $this->read_ushort(); + $Lookup[$i]['SubtableCount'] = $SubtableCount[$i] = $this->read_ushort(); + for ($c = 0; $c < $SubtableCount[$i]; $c++) { + $Lookup[$i]['Subtables'][$c] = $Offsets[$i] + $this->read_ushort(); + } + // MarkFilteringSet = Index (base 0) into GDEF mark glyph sets structure + if (($flag & 0x0010) == 0x0010) { + $Lookup[$i]['MarkFilteringSet'] = $this->read_ushort(); + } + // else { $Lookup[$i]['MarkFilteringSet'] = ''; } + // Lookup Type 9: Extension + if ($Lookup[$i]['Type'] == 9) { + // Overwrites new offset (32-bit) for each subtable, and a new lookup Type + for ($c = 0; $c < $SubtableCount[$i]; $c++) { + $this->seek($Lookup[$i]['Subtables'][$c]); + $ExtensionPosFormat = $this->read_ushort(); + $type = $this->read_ushort(); + $Lookup[$i]['Subtables'][$c] = $Lookup[$i]['Subtables'][$c] + $this->read_ulong(); + } + $Lookup[$i]['Type'] = $type; + } + } + + //===================================================================================== + + $st = $this->mpdf->OTLscript; + $t = $this->mpdf->OTLlang; + $langsys = $gpos[$st][$t]; + + $lul = []; // array of LookupListIndexes + $tags = []; // corresponding array of feature tags e.g. 'ccmp' + if (count($langsys)) { + foreach ($langsys as $tag => $ft) { + foreach ($ft as $ll) { + $lul[$ll] = $tag; + } + } + } + ksort($lul); // Order the Lookups in the order they are in the GUSB table, regardless of Feature order + $this->_getGPOSarray($Lookup, $lul, $st); + +//print_r($lul); exit; + + return [$GPOSScriptLang, $gpos, $Lookup]; + } // end if GPOS + } + + ////////////////////////////////////////////////////////////////////////////////// + //===================================================================================== + //===================================================================================== + //===================================================================================== +///////////////////////////////////////////////////////////////////////////////////////// + // GPOS functions + function _getGPOSarray(&$Lookup, $lul, $scripttag, $level = 1, $lcoverage = '', $exB = '', $exL = '') + { + // Process (3) LookupList for specific Script-LangSys + $html = ''; + if ($level == 1) { + $html .= '<bookmark level="0" content="GPOS features">'; + } + foreach ($lul as $luli => $tag) { + $html .= '<div class="level' . $level . '">'; + $html .= '<h5 class="level' . $level . '">'; + if ($level == 1) { + $html .= '<bookmark level="1" content="' . $tag . ' [#' . $luli . ']">'; + } + $html .= 'Lookup #' . $luli . ' [tag: <span style="color:#000066;">' . $tag . '</span>]</h5>'; + $ignore = $this->_getGSUBignoreString($Lookup[$luli]['Flag'], $Lookup[$luli]['MarkFilteringSet']); + if ($ignore) { + $html .= '<div class="ignore">Ignoring: ' . $ignore . '</div> '; + } + + $Type = $Lookup[$luli]['Type']; + $Flag = $Lookup[$luli]['Flag']; + if (($Flag & 0x0001) == 1) { + $dir = 'RTL'; + } else { + $dir = 'LTR'; + } + + for ($c = 0; $c < $Lookup[$luli]['SubtableCount']; $c++) { + $html .= '<div class="subtable">Subtable #' . $c; + if ($level == 1) { + $html .= '<bookmark level="2" content="Subtable #' . $c . '">'; + } + $html .= '</div>'; + + // Lets start + $subtable_offset = $Lookup[$luli]['Subtables'][$c]; + $this->seek($subtable_offset); + $PosFormat = $this->read_ushort(); + + //////////////////////////////////////////////////////////////////////////////// + // LookupType 1: Single adjustment Adjust position of a single glyph (e.g. SmallCaps/Sups/Subs) + //////////////////////////////////////////////////////////////////////////////// + if ($Lookup[$luli]['Type'] == 1) { + $html .= '<div class="lookuptype">LookupType 1: Single adjustment [Format ' . $PosFormat . ']</div>'; + //=========== + // Format 1: + //=========== + if ($PosFormat == 1) { + $Coverage = $subtable_offset + $this->read_ushort(); + $ValueFormat = $this->read_ushort(); + $Value = $this->_getValueRecord($ValueFormat); + + $this->seek($Coverage); + $glyphs = $this->_getCoverage(); // Array of Hex Glyphs + for ($g = 0; $g < count($glyphs); $g++) { + if ($level == 2 && strpos($lcoverage, $glyphs[$g]) === false) { + continue; + } + + $html .= '<div class="substitution">'; + $html .= '<span class="unicode">' . $this->formatUni($glyphs[$g]) . ' </span> '; + if ($level == 2 && $exB) { + $html .= $exB; + } + $html .= '<span class="unchanged"> ' . $this->formatEntity($glyphs[$g]) . '</span>'; + if ($level == 2 && $exL) { + $html .= $exL; + } + $html .= '  » »  '; + if ($level == 2 && $exB) { + $html .= $exB; + } + $html .= '<span class="changed" style="font-feature-settings:\'' . $tag . '\' 1;"> ' . $this->formatEntity($glyphs[$g]) . '</span>'; + if ($level == 2 && $exL) { + $html .= $exL; + } + $html .= ' <span class="unicode">'; + if ($Value['XPlacement']) { + $html .= ' Xpl: ' . $Value['XPlacement'] . ';'; + } + if ($Value['YPlacement']) { + $html .= ' YPl: ' . $Value['YPlacement'] . ';'; + } + if ($Value['XAdvance']) { + $html .= ' Xadv: ' . $Value['XAdvance']; + } + $html .= '</span>'; + $html .= '</div>'; + } + } //=========== + // Format 2: + //=========== + else { + if ($PosFormat == 2) { + $Coverage = $subtable_offset + $this->read_ushort(); + $ValueFormat = $this->read_ushort(); + $ValueCount = $this->read_ushort(); + $Values = []; + for ($v = 0; $v < $ValueCount; $v++) { + $Values[] = $this->_getValueRecord($ValueFormat); + } + + $this->seek($Coverage); + $glyphs = $this->_getCoverage(); // Array of Hex Glyphs + + for ($g = 0; $g < count($glyphs); $g++) { + if ($level == 2 && strpos($lcoverage, $glyphs[$g]) === false) { + continue; + } + $Value = $Values[$g]; + + $html .= '<div class="substitution">'; + $html .= '<span class="unicode">' . $this->formatUni($glyphs[$g]) . ' </span> '; + if ($level == 2 && $exB) { + $html .= $exB; + } + $html .= '<span class="unchanged"> ' . $this->formatEntity($glyphs[$g]) . '</span>'; + if ($level == 2 && $exL) { + $html .= $exL; + } + $html .= '  » »  '; + if ($level == 2 && $exB) { + $html .= $exB; + } + $html .= '<span class="changed" style="font-feature-settings:\'' . $tag . '\' 1;"> ' . $this->formatEntity($glyphs[$g]) . '</span>'; + if ($level == 2 && $exL) { + $html .= $exL; + } + $html .= ' <span class="unicode">'; + if ($Value['XPlacement']) { + $html .= ' Xpl: ' . $Value['XPlacement'] . ';'; + } + if ($Value['YPlacement']) { + $html .= ' YPl: ' . $Value['YPlacement'] . ';'; + } + if ($Value['XAdvance']) { + $html .= ' Xadv: ' . $Value['XAdvance']; + } + $html .= '</span>'; + $html .= '</div>'; + } + } + } + } //////////////////////////////////////////////////////////////////////////////// + // LookupType 2: Pair adjustment Adjust position of a pair of glyphs (Kerning) + //////////////////////////////////////////////////////////////////////////////// + else { + if ($Lookup[$luli]['Type'] == 2) { + $html .= '<div class="lookuptype">LookupType 2: Pair adjustment e.g. Kerning [Format ' . $PosFormat . ']</div>'; + $Coverage = $subtable_offset + $this->read_ushort(); + $ValueFormat1 = $this->read_ushort(); + $ValueFormat2 = $this->read_ushort(); + //=========== + // Format 1: + //=========== + if ($PosFormat == 1) { + $PairSetCount = $this->read_ushort(); + $PairSetOffset = []; + for ($p = 0; $p < $PairSetCount; $p++) { + $PairSetOffset[] = $subtable_offset + $this->read_ushort(); + } + $this->seek($Coverage); + $glyphs = $this->_getCoverage(); // Array of Hex Glyphs + for ($p = 0; $p < $PairSetCount; $p++) { + if ($level == 2 && strpos($lcoverage, $glyphs[$p]) === false) { + continue; + } + $this->seek($PairSetOffset[$p]); + // First Glyph = $glyphs[$p] +// Takes too long e.g. Calibri font - just list kerning pairs with this: + $html .= '<div class="glyphs">'; + $html .= '<span class="unchanged"> ' . $this->formatEntity($glyphs[$p]) . ' </span>'; + + //PairSet table + $PairValueCount = $this->read_ushort(); + for ($pv = 0; $pv < $PairValueCount; $pv++) { + //PairValueRecord + $gid = $this->read_ushort(); + $SecondGlyph = unicode_hex($this->glyphToChar[$gid][0]); + $Value1 = $this->_getValueRecord($ValueFormat1); + $Value2 = $this->_getValueRecord($ValueFormat2); + + // If RTL pairs, GPOS declares a XPlacement e.g. -180 for an XAdvance of -180 to take + // account of direction. mPDF does not need the XPlacement adjustment + if ($dir == 'RTL' && $Value1['XPlacement']) { + $Value1['XPlacement'] -= $Value1['XAdvance']; + } + + if ($ValueFormat2) { + // If RTL pairs, GPOS declares a XPlacement e.g. -180 for an XAdvance of -180 to take + // account of direction. mPDF does not need the XPlacement adjustment + if ($dir == 'RTL' && $Value2['XPlacement'] && $Value2['XAdvance']) { + $Value2['XPlacement'] -= $Value2['XAdvance']; + } + } + + $html .= ' ' . $this->formatEntity($SecondGlyph) . ' '; + + /* + $html .= '<div class="substitution">'; + $html .= '<span class="unicode">'.$this->formatUni($glyphs[$p]).' </span> '; + if ($level==2 && $exB) { $html .= $exB; } + $html .= '<span class="unchanged"> '.$this->formatEntity($glyphs[$p]).$this->formatEntity($SecondGlyph).'</span>'; + if ($level==2 && $exL) { $html .= $exL; } + $html .= '  » »  '; + if ($level==2 && $exB) { $html .= $exB; } + $html .= '<span class="changed" style="font-feature-settings:\''.$tag.'\' 1;"> '.$this->formatEntity($glyphs[$p]).$this->formatEntity($SecondGlyph).'</span>'; + if ($level==2 && $exL) { $html .= $exL; } + $html .= ' <span class="unicode">'; + if ($Value1['XPlacement']) { $html .= ' Xpl[1]: '.$Value1['XPlacement'].';'; } + if ($Value1['YPlacement']) { $html .= ' YPl[1]: '.$Value1['YPlacement'].';'; } + if ($Value1['XAdvance']) { $html .= ' Xadv[1]: '.$Value1['XAdvance']; } + if ($Value2['XPlacement']) { $html .= ' Xpl[2]: '.$Value2['XPlacement'].';'; } + if ($Value2['YPlacement']) { $html .= ' YPl[2]: '.$Value2['YPlacement'].';'; } + if ($Value2['XAdvance']) { $html .= ' Xadv[2]: '.$Value2['XAdvance']; } + $html .= '</span>'; + $html .= '</div>'; + */ + } + $html .= '</div>'; + } + } //=========== + // Format 2: + //=========== + else { + if ($PosFormat == 2) { + $ClassDef1 = $subtable_offset + $this->read_ushort(); + $ClassDef2 = $subtable_offset + $this->read_ushort(); + $Class1Count = $this->read_ushort(); + $Class2Count = $this->read_ushort(); + + $sizeOfPair = (2 * $this->count_bits($ValueFormat1)) + (2 * $this->count_bits($ValueFormat2)); + $sizeOfValueRecords = $Class1Count * $Class2Count * $sizeOfPair; + + // NB Class1Count includes Class 0 even though it is not defined by $ClassDef1 + // i.e. Class1Count = 5; Class1 will contain array(indices 1-4); + $Class1 = $this->_getClassDefinitionTable($ClassDef1); + $Class2 = $this->_getClassDefinitionTable($ClassDef2); + + $this->seek($subtable_offset + 16); + + for ($i = 0; $i < $Class1Count; $i++) { + for ($j = 0; $j < $Class2Count; $j++) { + $Value1 = $this->_getValueRecord($ValueFormat1); + $Value2 = $this->_getValueRecord($ValueFormat2); + + // If RTL pairs, GPOS declares a XPlacement e.g. -180 for an XAdvance of -180 + // of direction. mPDF does not need the XPlacement adjustment + if ($dir == 'RTL' && $Value1['XPlacement'] && $Value1['XAdvance']) { + $Value1['XPlacement'] -= $Value1['XAdvance']; + } + if ($ValueFormat2) { + if ($dir == 'RTL' && $Value2['XPlacement'] && $Value2['XAdvance']) { + $Value2['XPlacement'] -= $Value2['XAdvance']; + } + } + + for ($c1 = 0; $c1 < count($Class1[$i]); $c1++) { + $FirstGlyph = $Class1[$i][$c1]; + if ($level == 2 && strpos($lcoverage, $FirstGlyph) === false) { + continue; + } + + for ($c2 = 0; $c2 < count($Class2[$j]); $c2++) { + $SecondGlyph = $Class2[$j][$c2]; + + if (!$Value1['XPlacement'] && !$Value1['YPlacement'] && !$Value1['XAdvance'] && !$Value2['XPlacement'] && !$Value2['YPlacement'] && !$Value2['XAdvance']) { + continue; + } + + $html .= '<div class="substitution">'; + $html .= '<span class="unicode">' . $this->formatUni($FirstGlyph) . ' </span> '; + if ($level == 2 && $exB) { + $html .= $exB; + } + $html .= '<span class="unchanged"> ' . $this->formatEntity($FirstGlyph) . $this->formatEntity($SecondGlyph) . '</span>'; + if ($level == 2 && $exL) { + $html .= $exL; + } + $html .= '  » »  '; + if ($level == 2 && $exB) { + $html .= $exB; + } + $html .= '<span class="changed" style="font-feature-settings:\'' . $tag . '\' 1;"> ' . $this->formatEntity($FirstGlyph) . $this->formatEntity($SecondGlyph) . '</span>'; + if ($level == 2 && $exL) { + $html .= $exL; + } + $html .= ' <span class="unicode">'; + if ($Value1['XPlacement']) { + $html .= ' Xpl[1]: ' . $Value1['XPlacement'] . ';'; + } + if ($Value1['YPlacement']) { + $html .= ' YPl[1]: ' . $Value1['YPlacement'] . ';'; + } + if ($Value1['XAdvance']) { + $html .= ' Xadv[1]: ' . $Value1['XAdvance']; + } + if ($Value2['XPlacement']) { + $html .= ' Xpl[2]: ' . $Value2['XPlacement'] . ';'; + } + if ($Value2['YPlacement']) { + $html .= ' YPl[2]: ' . $Value2['YPlacement'] . ';'; + } + if ($Value2['XAdvance']) { + $html .= ' Xadv[2]: ' . $Value2['XAdvance']; + } + $html .= '</span>'; + $html .= '</div>'; + } + } + } + } + } + } + } //////////////////////////////////////////////////////////////////////////////// + // LookupType 3: Cursive attachment Attach cursive glyphs + //////////////////////////////////////////////////////////////////////////////// + else { + if ($Lookup[$luli]['Type'] == 3) { + $html .= '<div class="lookuptype">LookupType 3: Cursive attachment </div>'; + $Coverage = $subtable_offset + $this->read_ushort(); + $EntryExitCount = $this->read_ushort(); + $EntryAnchors = []; + $ExitAnchors = []; + for ($i = 0; $i < $EntryExitCount; $i++) { + $EntryAnchors[$i] = $this->read_ushort(); + $ExitAnchors[$i] = $this->read_ushort(); + } + + $this->seek($Coverage); + $Glyphs = $this->_getCoverage(); + for ($i = 0; $i < $EntryExitCount; $i++) { + // Need default XAdvance for glyph + $pdfWidth = $this->mpdf->_getCharWidth($this->mpdf->fonts[$this->fontkey]['cw'], hexdec($Glyphs[$i])); + $EntryAnchor = $EntryAnchors[$i]; + $ExitAnchor = $ExitAnchors[$i]; + $html .= '<div class="glyphs">'; + $html .= '<span class="unchanged">' . $this->formatEntity($Glyphs[$i]) . ' </span> '; + $html .= '<span class="unicode"> ' . $this->formatUni($Glyphs[$i]) . ' => '; + + if ($EntryAnchor != 0) { + $EntryAnchor += $subtable_offset; + list($x, $y) = $this->_getAnchorTable($EntryAnchor); + if ($dir == 'RTL') { + if (round($pdfWidth) == round($x * 1000 / $this->mpdf->fonts[$this->fontkey]['desc']['unitsPerEm'])) { + $x = 0; + } else { + $x = $x - ($pdfWidth * $this->mpdf->fonts[$this->fontkey]['desc']['unitsPerEm'] / 1000); + } + } + $html .= " Entry X: " . $x . " Y: " . $y . "; "; + } + if ($ExitAnchor != 0) { + $ExitAnchor += $subtable_offset; + list($x, $y) = $this->_getAnchorTable($ExitAnchor); + if ($dir == 'LTR') { + if (round($pdfWidth) == round($x * 1000 / $this->mpdf->fonts[$this->fontkey]['desc']['unitsPerEm'])) { + $x = 0; + } else { + $x = $x - ($pdfWidth * $this->mpdf->fonts[$this->fontkey]['desc']['unitsPerEm'] / 1000); + } + } + $html .= " Exit X: " . $x . " Y: " . $y . "; "; + } + + $html .= '</span></div>'; + } + } //////////////////////////////////////////////////////////////////////////////// + // LookupType 4: MarkToBase attachment Attach a combining mark to a base glyph + //////////////////////////////////////////////////////////////////////////////// + else { + if ($Lookup[$luli]['Type'] == 4) { + $html .= '<div class="lookuptype">LookupType 4: MarkToBase attachment </div>'; + $MarkCoverage = $subtable_offset + $this->read_ushort(); + $BaseCoverage = $subtable_offset + $this->read_ushort(); + + $this->seek($MarkCoverage); + $MarkGlyphs = $this->_getCoverage(); + + $this->seek($BaseCoverage); + $BaseGlyphs = $this->_getCoverage(); + + $firstMark = ''; + $html .= '<div class="glyphs">Marks: '; + for ($i = 0; $i < count($MarkGlyphs); $i++) { + if ($level == 2 && strpos($lcoverage, $MarkGlyphs[$i]) === false) { + continue; + } else { + if (!$firstMark) { + $firstMark = $MarkGlyphs[$i]; + } + } + $html .= ' ' . $this->formatEntity($MarkGlyphs[$i]) . ' '; + } + $html .= '</div>'; + if (!$firstMark) { + return; + } + + $html .= '<div class="glyphs">Bases: '; + for ($j = 0; $j < count($BaseGlyphs); $j++) { + $html .= ' ' . $this->formatEntity($BaseGlyphs[$j]) . ' '; + } + $html .= '</div>'; + + // Example + $html .= '<div class="glyphs" style="font-feature-settings:\'' . $tag . '\' 1;">Example(s): '; + for ($j = 0; $j < min(count($BaseGlyphs), 20); $j++) { + $html .= ' ' . $this->formatEntity($BaseGlyphs[$j]) . $this->formatEntity($firstMark, true) . '   '; + } + $html .= '</div>'; + } //////////////////////////////////////////////////////////////////////////////// + // LookupType 5: MarkToLigature attachment Attach a combining mark to a ligature + //////////////////////////////////////////////////////////////////////////////// + else { + if ($Lookup[$luli]['Type'] == 5) { + $html .= '<div class="lookuptype">LookupType 5: MarkToLigature attachment </div>'; + $MarkCoverage = $subtable_offset + $this->read_ushort(); + //$MarkCoverage is already set in $lcoverage 00065|00073 etc + $LigatureCoverage = $subtable_offset + $this->read_ushort(); + $ClassCount = $this->read_ushort(); // Number of classes defined for marks = Number of mark glyphs in the MarkCoverage table + $MarkArray = $subtable_offset + $this->read_ushort(); // Offset to MarkArray table + $LigatureArray = $subtable_offset + $this->read_ushort(); // Offset to LigatureArray table + + $this->seek($MarkCoverage); + $MarkGlyphs = $this->_getCoverage(); + $this->seek($LigatureCoverage); + $LigatureGlyphs = $this->_getCoverage(); + + $firstMark = ''; + $html .= '<div class="glyphs">Marks: <span class="unchanged">'; + $MarkRecord = []; + for ($i = 0; $i < count($MarkGlyphs); $i++) { + if ($level == 2 && strpos($lcoverage, $MarkGlyphs[$i]) === false) { + continue; + } else { + if (!$firstMark) { + $firstMark = $MarkGlyphs[$i]; + } + } + // Get the relevant MarkRecord + $MarkRecord[$i] = $this->_getMarkRecord($MarkArray, $i); + //Mark Class is = $MarkRecord[$i]['Class'] + $html .= ' ' . $this->formatEntity($MarkGlyphs[$i]) . ' '; + } + $html .= '</span></div>'; + if (!$firstMark) { + return; + } + + $this->seek($LigatureArray); + $LigatureCount = $this->read_ushort(); + $LigatureAttach = []; + $html .= '<div class="glyphs">Ligatures: <span class="unchanged">'; + for ($j = 0; $j < count($LigatureGlyphs); $j++) { + // Get the relevant LigatureRecord + $LigatureAttach[$j] = $LigatureArray + $this->read_ushort(); + $html .= ' ' . $this->formatEntity($LigatureGlyphs[$j]) . ' '; + } + $html .= '</span></div>'; + + /* + for ($i=0;$i<count($MarkGlyphs);$i++) { + $html .= '<div class="glyphs">'; + $html .= '<span class="unchanged">'.$this->formatEntity($MarkGlyphs[$i]).'</span>'; + + for ($j=0;$j<count($LigatureGlyphs);$j++) { + $this->seek($LigatureAttach[$j]); + $ComponentCount = $this->read_ushort(); + $html .= '<span class="unchanged">'.$this->formatEntity($LigatureGlyphs[$j]).'</span>'; + $offsets = array(); + for ($comp=0;$comp<$ComponentCount;$comp++) { + // ComponentRecords + for ($class=0;$class<$ClassCount;$class++) { + $offset = $this->read_ushort(); + if ($offset!= 0 && $class == $MarkRecord[$i]['Class']) { + + $html .= ' ['.$comp.'] '; + + } + } + } + } + $html .= '</span></div>'; + } + */ + } //////////////////////////////////////////////////////////////////////////////// + // LookupType 6: MarkToMark attachment Attach a combining mark to another mark + //////////////////////////////////////////////////////////////////////////////// + else { + if ($Lookup[$luli]['Type'] == 6) { + $html .= '<div class="lookuptype">LookupType 6: MarkToMark attachment </div>'; + $Mark1Coverage = $subtable_offset + $this->read_ushort(); // Combining Mark + //$Mark1Coverage is already set in $LuCoverage 0065|0073 etc + $Mark2Coverage = $subtable_offset + $this->read_ushort(); // Base Mark + $ClassCount = $this->read_ushort(); // Number of classes defined for marks = No. of Combining mark1 glyphs in the MarkCoverage table + $this->seek($Mark1Coverage); + $Mark1Glyphs = $this->_getCoverage(); + $this->seek($Mark2Coverage); + $Mark2Glyphs = $this->_getCoverage(); + + $firstMark = ''; + $html .= '<div class="glyphs">Marks: <span class="unchanged">'; + for ($i = 0; $i < count($Mark1Glyphs); $i++) { + if ($level == 2 && strpos($lcoverage, $Mark1Glyphs[$i]) === false) { + continue; + } else { + if (!$firstMark) { + $firstMark = $Mark1Glyphs[$i]; + } + } + $html .= ' ' . $this->formatEntity($Mark1Glyphs[$i]) . ' '; + } + $html .= '</span></div>'; + + if ($firstMark) { + $html .= '<div class="glyphs">Bases: <span class="unchanged">'; + for ($j = 0; $j < count($Mark2Glyphs); $j++) { + $html .= ' ' . $this->formatEntity($Mark2Glyphs[$j]) . ' '; + } + $html .= '</span></div>'; + + // Example + $html .= '<div class="glyphs" style="font-feature-settings:\'' . $tag . '\' 1;">Example(s): <span class="changed">'; + for ($j = 0; $j < min(count($Mark2Glyphs), 20); $j++) { + $html .= ' ' . $this->formatEntity($Mark2Glyphs[$j]) . $this->formatEntity($firstMark, true) . '   '; + } + $html .= '</span></div>'; + } + } //////////////////////////////////////////////////////////////////////////////// + // LookupType 7: Context positioning Position one or more glyphs in context + //////////////////////////////////////////////////////////////////////////////// + else { + if ($Lookup[$luli]['Type'] == 7) { + $html .= '<div class="lookuptype">LookupType 7: Context positioning [Format ' . $PosFormat . ']</div>'; + //=========== + // Format 1: + //=========== + if ($PosFormat == 1) { + throw new \Mpdf\Exception\FontException("GPOS Lookup Type " . $Type . " Format " . $PosFormat . " not YET TESTED."); + } //=========== + // Format 2: + //=========== + else { + if ($PosFormat == 2) { + throw new \Mpdf\Exception\FontException("GPOS Lookup Type " . $Type . " Format " . $PosFormat . " not YET TESTED."); + } //=========== + // Format 3: + //=========== + else { + if ($PosFormat == 3) { + throw new \Mpdf\Exception\FontException("GPOS Lookup Type " . $Type . " Format " . $PosFormat . " not YET TESTED."); + } else { + throw new \Mpdf\Exception\FontException("GPOS Lookup Type " . $Type . ", Format " . $PosFormat . " not supported."); + } + } + } + } //////////////////////////////////////////////////////////////////////////////// + // LookupType 8: Chained Context positioning Position one or more glyphs in chained context + //////////////////////////////////////////////////////////////////////////////// + else { + if ($Lookup[$luli]['Type'] == 8) { + $html .= '<div class="lookuptype">LookupType 8: Chained Context positioning [Format ' . $PosFormat . ']</div>'; + //=========== + // Format 1: + //=========== + if ($PosFormat == 1) { + throw new \Mpdf\Exception\FontException("GPOS Lookup Type " . $Type . " Format " . $PosFormat . " not TESTED YET."); + } //=========== + // Format 2: + //=========== + else { + if ($PosFormat == 2) { + $html .= '<div>GPOS Lookup Type 8: Format 2 not yet supported in OTL dump</div>'; + continue; + /* NB When developing - cf. GSUB 6.2 */ + throw new \Mpdf\Exception\FontException("GPOS Lookup Type " . $Type . " Format " . $PosFormat . " not TESTED YET."); + } //=========== + // Format 3: + //=========== + else { + if ($PosFormat == 3) { + $BacktrackGlyphCount = $this->read_ushort(); + $CoverageBacktrackOffset = []; + for ($b = 0; $b < $BacktrackGlyphCount; $b++) { + $CoverageBacktrackOffset[] = $subtable_offset + $this->read_ushort(); // in glyph sequence order + } + $InputGlyphCount = $this->read_ushort(); + $CoverageInputOffset = []; + for ($b = 0; $b < $InputGlyphCount; $b++) { + $CoverageInputOffset[] = $subtable_offset + $this->read_ushort(); // in glyph sequence order + } + $LookaheadGlyphCount = $this->read_ushort(); + $CoverageLookaheadOffset = []; + for ($b = 0; $b < $LookaheadGlyphCount; $b++) { + $CoverageLookaheadOffset[] = $subtable_offset + $this->read_ushort(); // in glyph sequence order + } + $PosCount = $this->read_ushort(); + + $PosLookupRecord = []; + for ($p = 0; $p < $PosCount; $p++) { + // PosLookupRecord + $PosLookupRecord[$p]['SequenceIndex'] = $this->read_ushort(); + $PosLookupRecord[$p]['LookupListIndex'] = $this->read_ushort(); + } + + $backtrackGlyphs = []; + for ($b = 0; $b < $BacktrackGlyphCount; $b++) { + $this->seek($CoverageBacktrackOffset[$b]); + $backtrackGlyphs[$b] = implode('|', $this->_getCoverage()); + } + $inputGlyphs = []; + for ($b = 0; $b < $InputGlyphCount; $b++) { + $this->seek($CoverageInputOffset[$b]); + $inputGlyphs[$b] = implode('|', $this->_getCoverage()); + } + $lookaheadGlyphs = []; + for ($b = 0; $b < $LookaheadGlyphCount; $b++) { + $this->seek($CoverageLookaheadOffset[$b]); + $lookaheadGlyphs[$b] = implode('|', $this->_getCoverage()); + } + + $exampleB = []; + $exampleI = []; + $exampleL = []; + $html .= '<div class="context">CONTEXT: '; + for ($ff = count($backtrackGlyphs) - 1; $ff >= 0; $ff--) { + $html .= '<div>Backtrack #' . $ff . ': <span class="unicode">' . $this->formatUniStr($backtrackGlyphs[$ff]) . '</span></div>'; + $exampleB[] = $this->formatEntityFirst($backtrackGlyphs[$ff]); + } + for ($ff = 0; $ff < count($inputGlyphs); $ff++) { + $html .= '<div>Input #' . $ff . ': <span class="unchanged"> ' . $this->formatEntityStr($inputGlyphs[$ff]) . ' </span></div>'; + $exampleI[] = $this->formatEntityFirst($inputGlyphs[$ff]); + } + for ($ff = 0; $ff < count($lookaheadGlyphs); $ff++) { + $html .= '<div>Lookahead #' . $ff . ': <span class="unicode">' . $this->formatUniStr($lookaheadGlyphs[$ff]) . '</span></div>'; + $exampleL[] = $this->formatEntityFirst($lookaheadGlyphs[$ff]); + } + $html .= '</div>'; + + for ($p = 0; $p < $PosCount; $p++) { + $lup = $PosLookupRecord[$p]['LookupListIndex']; + $seqIndex = $PosLookupRecord[$p]['SequenceIndex']; + + // GENERATE exampleB[n] exampleI[<seqIndex] .... exampleI[>seqIndex] exampleL[n] + $exB = ''; + $exL = ''; + if (count($exampleB)) { + $exB .= '<span class="backtrack">' . implode('‍', $exampleB) . '</span>'; + } + + if ($seqIndex > 0) { + $exB .= '<span class="inputother">'; + for ($ip = 0; $ip < $seqIndex; $ip++) { + $exB .= $exampleI[$ip] . '‍'; + } + $exB .= '</span>'; + } + + if (count($inputGlyphs) > ($seqIndex + 1)) { + $exL .= '<span class="inputother">'; + for ($ip = $seqIndex + 1; $ip < count($inputGlyphs); $ip++) { + $exL .= '‍' . $exampleI[$ip]; + } + $exL .= '</span>'; + } + + if (count($exampleL)) { + $exL .= '<span class="lookahead">' . implode('‍', $exampleL) . '</span>'; + } + + $html .= '<div class="sequenceIndex">Substitution Position: ' . $seqIndex . '</div>'; + + $lul2 = [$lup => $tag]; + + // Only apply if the (first) 'Replace' glyph from the + // Lookup list is in the [inputGlyphs] at ['SequenceIndex'] + // Pass $inputGlyphs[$seqIndex] e.g. 00636|00645|00656 + // to level 2 and only apply if first Replace glyph is in this list + $html .= $this->_getGPOSarray($Lookup, $lul2, $scripttag, 2, $inputGlyphs[$seqIndex], $exB, $exL); + } + } + } + } + } + } + } + } + } + } + } + } + } + $html .= '</div>'; + } + if ($level == 1) { + $this->mpdf->WriteHTML($html); + } else { + return $html; + } +//print_r($Lookup); exit; + } + + //===================================================================================== + //===================================================================================== + // GPOS FUNCTIONS + //===================================================================================== + + function count_bits($n) + { + for ($c = 0; $n; $c++) { + $n &= $n - 1; // clear the least significant bit set + } + + return $c; + } + + function _getValueRecord($ValueFormat) + { + // Common ValueRecord for GPOS + // Only returns 3 possible: $vra['XPlacement'] $vra['YPlacement'] $vra['XAdvance'] + $vra = []; + // Horizontal adjustment for placement-in design units + if (($ValueFormat & 0x0001) == 0x0001) { + $vra['XPlacement'] = $this->read_short(); + } + // Vertical adjustment for placement-in design units + if (($ValueFormat & 0x0002) == 0x0002) { + $vra['YPlacement'] = $this->read_short(); + } + // Horizontal adjustment for advance-in design units (only used for horizontal writing) + if (($ValueFormat & 0x0004) == 0x0004) { + $vra['XAdvance'] = $this->read_short(); + } + // Vertical adjustment for advance-in design units (only used for vertical writing) + if (($ValueFormat & 0x0008) == 0x0008) { + $this->read_short(); + } + // Offset to Device table for horizontal placement-measured from beginning of PosTable (may be NULL) + if (($ValueFormat & 0x0010) == 0x0010) { + $this->read_ushort(); + } + // Offset to Device table for vertical placement-measured from beginning of PosTable (may be NULL) + if (($ValueFormat & 0x0020) == 0x0020) { + $this->read_ushort(); + } + // Offset to Device table for horizontal advance-measured from beginning of PosTable (may be NULL) + if (($ValueFormat & 0x0040) == 0x0040) { + $this->read_ushort(); + } + // Offset to Device table for vertical advance-measured from beginning of PosTable (may be NULL) + if (($ValueFormat & 0x0080) == 0x0080) { + $this->read_ushort(); + } + + return $vra; + } + + function _getAnchorTable($offset = 0) + { + if ($offset) { + $this->seek($offset); + } + $AnchorFormat = $this->read_ushort(); + $XCoordinate = $this->read_short(); + $YCoordinate = $this->read_short(); + + // Format 2 specifies additional link to contour point; Format 3 additional Device table + return [$XCoordinate, $YCoordinate]; + } + + function _getMarkRecord($offset, $MarkPos) + { + $this->seek($offset); + $MarkCount = $this->read_ushort(); + $this->skip($MarkPos * 4); + $Class = $this->read_ushort(); + $MarkAnchor = $offset + $this->read_ushort(); // = Offset to anchor table + list($x, $y) = $this->_getAnchorTable($MarkAnchor); + $MarkRecord = ['Class' => $Class, 'AnchorX' => $x, 'AnchorY' => $y]; + + return $MarkRecord; + } + + ////////////////////////////////////////////////////////////////////////////////// + // Recursively get composite glyph data + function getGlyphData($originalGlyphIdx, &$maxdepth, &$depth, &$points, &$contours) + { + $depth++; + $maxdepth = max($maxdepth, $depth); + if (count($this->glyphdata[$originalGlyphIdx]['compGlyphs'])) { + foreach ($this->glyphdata[$originalGlyphIdx]['compGlyphs'] as $glyphIdx) { + $this->getGlyphData($glyphIdx, $maxdepth, $depth, $points, $contours); + } + } else { + if (($this->glyphdata[$originalGlyphIdx]['nContours'] > 0) && $depth > 0) { // simple + $contours += $this->glyphdata[$originalGlyphIdx]['nContours']; + $points += $this->glyphdata[$originalGlyphIdx]['nPoints']; + } + } + $depth--; + } + + ////////////////////////////////////////////////////////////////////////////////// + // Recursively get composite glyphs + function getGlyphs($originalGlyphIdx, &$start, &$glyphSet, &$subsetglyphs) + { + $glyphPos = $this->glyphPos[$originalGlyphIdx]; + $glyphLen = $this->glyphPos[$originalGlyphIdx + 1] - $glyphPos; + if (!$glyphLen) { + return; + } + $this->seek($start + $glyphPos); + $numberOfContours = $this->read_short(); + if ($numberOfContours < 0) { + $this->skip(8); + $flags = GlyphOperator::MORE; + while ($flags & GlyphOperator::MORE) { + $flags = $this->read_ushort(); + } + $glyphIdx = $this->read_ushort(); + if (!isset($glyphSet[$glyphIdx])) { + $glyphSet[$glyphIdx] = count($subsetglyphs); // old glyphID to new glyphID + $subsetglyphs[$glyphIdx] = true; + } + $savepos = ftell($this->fh); + $this->getGlyphs($glyphIdx, $start, $glyphSet, $subsetglyphs); + $this->seek($savepos); + if ($flags & GlyphOperator::WORDS) { + $this->skip(4); + } else { + $this->skip(2); + } + if ($flags & GlyphOperator::SCALE) { + $this->skip(2); + } else { + if ($flags & GlyphOperator::XYSCALE) { + $this->skip(4); + } else { + if ($flags & GlyphOperator::TWOBYTWO) { + $this->skip(8); + } + } + } + } + } + + + ////////////////////////////////////////////////////////////////////////////////// + + function getHMTX($numberOfHMetrics, $numGlyphs, &$glyphToChar, $scale) + { + $start = $this->seek_table("hmtx"); + $aw = 0; + $this->charWidths = str_pad('', 256 * 256 * 2, "\x00"); + if ($this->maxUniChar > 65536) { + $this->charWidths .= str_pad('', 256 * 256 * 2, "\x00"); + } // Plane 1 SMP + if ($this->maxUniChar > 131072) { + $this->charWidths .= str_pad('', 256 * 256 * 2, "\x00"); + } // Plane 2 SMP + $nCharWidths = 0; + if (($numberOfHMetrics * 4) < $this->maxStrLenRead) { + $data = $this->get_chunk($start, ($numberOfHMetrics * 4)); + $arr = unpack("n*", $data); + } else { + $this->seek($start); + } + for ($glyph = 0; $glyph < $numberOfHMetrics; $glyph++) { + if (($numberOfHMetrics * 4) < $this->maxStrLenRead) { + $aw = $arr[($glyph * 2) + 1]; + } else { + $aw = $this->read_ushort(); + $lsb = $this->read_ushort(); + } + if (isset($glyphToChar[$glyph]) || $glyph == 0) { + if ($aw >= (1 << 15)) { + $aw = 0; + } // 1.03 Some (arabic) fonts have -ve values for width + // although should be unsigned value - comes out as e.g. 65108 (intended -50) + if ($glyph == 0) { + $this->defaultWidth = $scale * $aw; + continue; + } + foreach ($glyphToChar[$glyph] as $char) { + //$this->charWidths[$char] = intval(round($scale*$aw)); + if ($char != 0 && $char != 65535) { + $w = intval(round($scale * $aw)); + if ($w == 0) { + $w = 65535; + } + if ($char < 196608) { + $this->charWidths[$char * 2] = chr($w >> 8); + $this->charWidths[$char * 2 + 1] = chr($w & 0xFF); + $nCharWidths++; + } + } + } + } + } + $data = $this->get_chunk(($start + $numberOfHMetrics * 4), ($numGlyphs * 2)); + $arr = unpack("n*", $data); + $diff = $numGlyphs - $numberOfHMetrics; + $w = intval(round($scale * $aw)); + if ($w == 0) { + $w = 65535; + } + for ($pos = 0; $pos < $diff; $pos++) { + $glyph = $pos + $numberOfHMetrics; + if (isset($glyphToChar[$glyph])) { + foreach ($glyphToChar[$glyph] as $char) { + if ($char != 0 && $char != 65535) { + if ($char < 196608) { + $this->charWidths[$char * 2] = chr($w >> 8); + $this->charWidths[$char * 2 + 1] = chr($w & 0xFF); + $nCharWidths++; + } + } + } + } + } + // NB 65535 is a set width of 0 + // First bytes define number of chars in font + $this->charWidths[0] = chr($nCharWidths >> 8); + $this->charWidths[1] = chr($nCharWidths & 0xFF); + } + + function getHMetric($numberOfHMetrics, $gid) + { + $start = $this->seek_table("hmtx"); + if ($gid < $numberOfHMetrics) { + $this->seek($start + ($gid * 4)); + $hm = fread($this->fh, 4); + } else { + $this->seek($start + (($numberOfHMetrics - 1) * 4)); + $hm = fread($this->fh, 2); + $this->seek($start + ($numberOfHMetrics * 2) + ($gid * 2)); + $hm .= fread($this->fh, 2); + } + + return $hm; + } + + function getLOCA($indexToLocFormat, $numGlyphs) + { + $start = $this->seek_table('loca'); + $this->glyphPos = []; + if ($indexToLocFormat == 0) { + $data = $this->get_chunk($start, ($numGlyphs * 2) + 2); + $arr = unpack("n*", $data); + for ($n = 0; $n <= $numGlyphs; $n++) { + $this->glyphPos[] = ($arr[$n + 1] * 2); + } + } else { + if ($indexToLocFormat == 1) { + $data = $this->get_chunk($start, ($numGlyphs * 4) + 4); + $arr = unpack("N*", $data); + for ($n = 0; $n <= $numGlyphs; $n++) { + $this->glyphPos[] = ($arr[$n + 1]); + } + } else { + throw new \Mpdf\Exception\FontException('Unknown location table format ' . $indexToLocFormat); + } + } + } + + // CMAP Format 4 + function getCMAP4($unicode_cmap_offset, &$glyphToChar, &$charToGlyph) + { + $this->maxUniChar = 0; + $this->seek($unicode_cmap_offset + 2); + $length = $this->read_ushort(); + $limit = $unicode_cmap_offset + $length; + $this->skip(2); + + $segCount = $this->read_ushort() / 2; + $this->skip(6); + $endCount = []; + for ($i = 0; $i < $segCount; $i++) { + $endCount[] = $this->read_ushort(); + } + $this->skip(2); + $startCount = []; + for ($i = 0; $i < $segCount; $i++) { + $startCount[] = $this->read_ushort(); + } + $idDelta = []; + for ($i = 0; $i < $segCount; $i++) { + $idDelta[] = $this->read_short(); + } // ???? was unsigned short + $idRangeOffset_start = $this->_pos; + $idRangeOffset = []; + for ($i = 0; $i < $segCount; $i++) { + $idRangeOffset[] = $this->read_ushort(); + } + + for ($n = 0; $n < $segCount; $n++) { + $endpoint = ($endCount[$n] + 1); + for ($unichar = $startCount[$n]; $unichar < $endpoint; $unichar++) { + if ($idRangeOffset[$n] == 0) { + $glyph = ($unichar + $idDelta[$n]) & 0xFFFF; + } else { + $offset = ($unichar - $startCount[$n]) * 2 + $idRangeOffset[$n]; + $offset = $idRangeOffset_start + 2 * $n + $offset; + if ($offset >= $limit) { + $glyph = 0; + } else { + $glyph = $this->get_ushort($offset); + if ($glyph != 0) { + $glyph = ($glyph + $idDelta[$n]) & 0xFFFF; + } + } + } + $charToGlyph[$unichar] = $glyph; + if ($unichar < 196608) { + $this->maxUniChar = max($unichar, $this->maxUniChar); + } + $glyphToChar[$glyph][] = $unichar; + } + } + } + + function formatUni($char) + { + $x = preg_replace('/^[0]*/', '', $char); + $x = str_pad($x, 4, '0', STR_PAD_LEFT); + $d = hexdec($x); + if (($d > 57343 && $d < 63744) || ($d > 122879 && $d < 126977)) { + $id = 'M'; + } // E000 - F8FF, 1E000-1F000 + else { + $id = 'U'; + } + + return $id . '+' . $x; + } + + function formatEntity($char, $allowjoining = false) + { + $char = preg_replace('/^[0]/', '', $char); + $x = '&#x' . $char . ';'; + if (strpos($this->GlyphClassMarks, $char) !== false) { + if (!$allowjoining) { + $x = '◌' . $x; + } + } + + return $x; + } + + function formatUniArr($arr) + { + $s = []; + foreach ($arr as $c) { + $x = preg_replace('/^[0]*/', '', $c); + $d = hexdec($x); + if (($d > 57343 && $d < 63744) || ($d > 122879 && $d < 126977)) { + $id = 'M'; + } // E000 - F8FF, 1E000-1F000 + else { + $id = 'U'; + } + $s[] = $id . '+' . str_pad($x, 4, '0', STR_PAD_LEFT); + } + + return implode(', ', $s); + } + + function formatEntityArr($arr) + { + $s = []; + foreach ($arr as $c) { + $c = preg_replace('/^[0]/', '', $c); + $x = '&#x' . $c . ';'; + if (strpos($this->GlyphClassMarks, $c) !== false) { + $x = '◌' . $x; + } + $s[] = $x; + } + + return implode(' ', $s); // ZWNJ? ‍ + } + + function formatClassArr($arr) + { + $s = []; + foreach ($arr as $c) { + $x = preg_replace('/^[0]*/', '', $c); + $d = hexdec($x); + if (($d > 57343 && $d < 63744) || ($d > 122879 && $d < 126977)) { + $id = 'M'; + } // E000 - F8FF, 1E000-1F000 + else { + $id = 'U'; + } + $s[] = $id . '+' . str_pad($x, 4, '0', STR_PAD_LEFT); + } + + return implode(', ', $s); + } + + function formatUniStr($str) + { + $s = []; + $arr = explode('|', $str); + foreach ($arr as $c) { + $x = preg_replace('/^[0]*/', '', $c); + $d = hexdec($x); + if (($d > 57343 && $d < 63744) || ($d > 122879 && $d < 126977)) { + $id = 'M'; + } // E000 - F8FF, 1E000-1F000 + else { + $id = 'U'; + } + $s[] = $id . '+' . str_pad($x, 4, '0', STR_PAD_LEFT); + } + + return implode(', ', $s); + } + + function formatEntityStr($str) + { + $s = []; + $arr = explode('|', $str); + foreach ($arr as $c) { + $c = preg_replace('/^[0]/', '', $c); + $x = '&#x' . $c . ';'; + if (strpos($this->GlyphClassMarks, $c) !== false) { + $x = '◌' . $x; + } + $s[] = $x; + } + + return implode(' ', $s); // ZWNJ? ‍ + } + + function formatEntityFirst($str) + { + $arr = explode('|', $str); + $char = preg_replace('/^[0]/', '', $arr[0]); + $x = '&#x' . $char . ';'; + if (strpos($this->GlyphClassMarks, $char) !== false) { + $x = '◌' . $x; + } + + return $x; + } + +} diff --git a/Mpdf/Output/Destination.php b/Mpdf/Output/Destination.php new file mode 100644 index 0000000..25b46d6 --- /dev/null +++ b/Mpdf/Output/Destination.php @@ -0,0 +1,15 @@ +<?php + +namespace Mpdf\Output; + +class Destination +{ + + const FILE = 'F'; + + const DOWNLOAD = 'D'; + + const STRING_RETURN = 'S'; + + const INLINE = 'I'; +} diff --git a/Mpdf/PageFormat.php b/Mpdf/PageFormat.php new file mode 100644 index 0000000..57a534e --- /dev/null +++ b/Mpdf/PageFormat.php @@ -0,0 +1,83 @@ +<?php + +namespace Mpdf; + +class PageFormat +{ + + /** + * This method returns an array of width and height of given named format. + * + * Returned values are milimeters multiplied by scale factor of 72 / 25.4 + * + * @param string $name + * @return float[] Width and height of given format + */ + public static function getSizeFromName($name) + { + $format = strtoupper($name); + $formats = [ + '4A0' => [4767.87, 6740.79], + '2A0' => [3370.39, 4767.87], + 'A0' => [2383.94, 3370.39], + 'A1' => [1683.78, 2383.94], + 'A2' => [1190.55, 1683.78], + 'A3' => [841.89, 1190.55], + 'A4' => [595.28, 841.89], + 'A5' => [419.53, 595.28], + 'A6' => [297.64, 419.53], + 'A7' => [209.76, 297.64], + 'A8' => [147.40, 209.76], + 'A9' => [104.88, 147.40], + 'A10' => [73.70, 104.88], + 'B0' => [2834.65, 4008.19], + 'B1' => [2004.09, 2834.65], + 'B2' => [1417.32, 2004.09], + 'B3' => [1000.63, 1417.32], + 'B4' => [708.66, 1000.63], + 'B5' => [498.90, 708.66], + 'B6' => [354.33, 498.90], + 'B7' => [249.45, 354.33], + 'B8' => [175.75, 249.45], + 'B9' => [124.72, 175.75], + 'B10' => [87.87, 124.72], + 'C0' => [2599.37, 3676.54], + 'C1' => [1836.85, 2599.37], + 'C2' => [1298.27, 1836.85], + 'C3' => [918.43, 1298.27], + 'C4' => [649.13, 918.43], + 'C5' => [459.21, 649.13], + 'C6' => [323.15, 459.21], + 'C7' => [229.61, 323.15], + 'C8' => [161.57, 229.61], + 'C9' => [113.39, 161.57], + 'C10' => [79.37, 113.39], + 'RA0' => [2437.80, 3458.27], + 'RA1' => [1729.13, 2437.80], + 'RA2' => [1218.90, 1729.13], + 'RA3' => [864.57, 1218.90], + 'RA4' => [609.45, 864.57], + 'SRA0' => [2551.18, 3628.35], + 'SRA1' => [1814.17, 2551.18], + 'SRA2' => [1275.59, 1814.17], + 'SRA3' => [907.09, 1275.59], + 'SRA4' => [637.80, 907.09], + 'LETTER' => [612.00, 792.00], + 'LEGAL' => [612.00, 1008.00], + 'LEDGER' => [1224.00, 792.00], + 'TABLOID' => [792.00, 1224.00], + 'EXECUTIVE' => [521.86, 756.00], + 'FOLIO' => [612.00, 936.00], + 'B' => [362.83, 561.26], // 'B' format paperback size 128x198mm + 'A' => [314.65, 504.57], // 'A' format paperback size 111x178mm + 'DEMY' => [382.68, 612.28], // 'Demy' format paperback size 135x216mm + 'ROYAL' => [433.70, 663.30], // 'Royal' format paperback size 153x234mm + ]; + + if (!isset($formats[$format])) { + throw new \Mpdf\MpdfException(sprintf('Unknown page format %s', $format)); + } + + return $formats[$format]; + } +} diff --git a/Mpdf/Pdf/Protection.php b/Mpdf/Pdf/Protection.php new file mode 100644 index 0000000..8a63da9 --- /dev/null +++ b/Mpdf/Pdf/Protection.php @@ -0,0 +1,360 @@ +<?php + +namespace Mpdf\Pdf; + +use Mpdf\Pdf\Protection\UniqidGenerator; + +class Protection +{ + + /** + * @var string + */ + private $lastRc4Key; + + /** + * @var string + */ + private $lastRc4KeyC; + + /** + * @var bool + */ + private $useRC128Encryption; + + /** + * @var string + */ + private $encryptionKey; + + /** + * @var string + */ + private $padding; + + /** + * @var string + */ + private $uniqid; + + /** + * @var string + */ + private $oValue; + + /** + * @var string + */ + private $uValue; + + /** + * @var string + */ + private $pValue; + + /** + * @var int[] Array of permission => byte representation + */ + private $options; + + /** + * @var \Mpdf\Pdf\Protection\UniqidGenerator + */ + private $uniqidGenerator; + + public function __construct(UniqidGenerator $uniqidGenerator) + { + if (!function_exists('random_int') || !function_exists('random_bytes')) { + throw new \Mpdf\MpdfException( + 'Unable to set PDF file protection, CSPRNG Functions are not available. ' + . 'Use paragonie/random_compat polyfill or upgrade to PHP 7.' + ); + } + + $this->uniqidGenerator = $uniqidGenerator; + + $this->lastRc4Key = ''; + + $this->padding = "\x28\xBF\x4E\x5E\x4E\x75\x8A\x41\x64\x00\x4E\x56\xFF\xFA\x01\x08" . + "\x2E\x2E\x00\xB6\xD0\x68\x3E\x80\x2F\x0C\xA9\xFE\x64\x53\x69\x7A"; + + $this->useRC128Encryption = false; + + $this->options = [ + 'print' => 4, // bit 3 + 'modify' => 8, // bit 4 + 'copy' => 16, // bit 5 + 'annot-forms' => 32, // bit 6 + 'fill-forms' => 256, // bit 9 + 'extract' => 512, // bit 10 + 'assemble' => 1024, // bit 11 + 'print-highres' => 2048 // bit 12 + ]; + } + + /** + * @param array $permissions + * @param string $user_pass + * @param string $owner_pass + * @param int $length + * + * @return bool + */ + public function setProtection($permissions = [], $user_pass = '', $owner_pass = null, $length = 40) + { + if (is_string($permissions) && strlen($permissions) > 0) { + $permissions = [$permissions]; + } elseif (!is_array($permissions)) { + return false; + } + + $protection = $this->getProtectionBitsFromOptions($permissions); + + if ($length === 128) { + $this->useRC128Encryption = true; + } elseif ($length !== 40) { + throw new \Mpdf\MpdfException('PDF protection only allows lenghts of 40 or 128'); + } + + if ($owner_pass === null) { + $owner_pass = bin2hex(random_bytes(23)); + } + + $this->generateEncryptionKey($user_pass, $owner_pass, $protection); + + return true; + } + + /** + * Compute key depending on object number where the encrypted data is stored + * + * @param int $n + * + * @return string + */ + public function objectKey($n) + { + if ($this->useRC128Encryption) { + $len = 16; + } else { + $len = 10; + } + + return substr($this->md5toBinary($this->encryptionKey . pack('VXxx', $n)), 0, $len); + } + + /** + * RC4 is the standard encryption algorithm used in PDF format + * + * @param string $key + * @param string $text + * + * @return string + */ + public function rc4($key, $text) + { + if ($this->lastRc4Key != $key) { + $k = str_repeat($key, 256 / strlen($key) + 1); + $rc4 = range(0, 255); + $j = 0; + for ($i = 0; $i < 256; $i++) { + $t = $rc4[$i]; + $j = ($j + $t + ord($k[$i])) % 256; + $rc4[$i] = $rc4[$j]; + $rc4[$j] = $t; + } + $this->lastRc4Key = $key; + $this->lastRc4KeyC = $rc4; + } else { + $rc4 = $this->lastRc4KeyC; + } + + $len = strlen($text); + $a = 0; + $b = 0; + $out = ''; + for ($i = 0; $i < $len; $i++) { + $a = ($a + 1) % 256; + $t = $rc4[$a]; + $b = ($b + $t) % 256; + $rc4[$a] = $rc4[$b]; + $rc4[$b] = $t; + $k = $rc4[($rc4[$a] + $rc4[$b]) % 256]; + $out .= chr(ord($text[$i]) ^ $k); + } + + return $out; + } + + /** + * @return mixed + */ + public function getUseRC128Encryption() + { + return $this->useRC128Encryption; + } + + /** + * @return mixed + */ + public function getUniqid() + { + return $this->uniqid; + } + + /** + * @return mixed + */ + public function getOValue() + { + return $this->oValue; + } + + /** + * @return mixed + */ + public function getUValue() + { + return $this->uValue; + } + + /** + * @return mixed + */ + public function getPValue() + { + return $this->pValue; + } + + private function getProtectionBitsFromOptions($permissions) + { + // bit 31 = 1073741824 + // bit 32 = 2147483648 + // bits 13-31 = 2147479552 + // bits 13-32 = 4294963200 + 192 = 4294963392 + + $protection = 4294963392; // bits 7, 8, 13-32 + + foreach ($permissions as $permission) { + if (!isset($this->options[$permission])) { + throw new \Mpdf\MpdfException(sprintf('Invalid permission type "%s"', $permission)); + } + if ($this->options[$permission] > 32) { + $this->useRC128Encryption = true; + } + if (isset($this->options[$permission])) { + $protection += $this->options[$permission]; + } + } + + return $protection; + } + + private function oValue($user_pass, $owner_pass) + { + $tmp = $this->md5toBinary($owner_pass); + if ($this->useRC128Encryption) { + for ($i = 0; $i < 50; ++$i) { + $tmp = $this->md5toBinary($tmp); + } + } + if ($this->useRC128Encryption) { + $keybytelen = (128 / 8); + } else { + $keybytelen = (40 / 8); + } + $owner_rc4_key = substr($tmp, 0, $keybytelen); + $enc = $this->rc4($owner_rc4_key, $user_pass); + if ($this->useRC128Encryption) { + $len = strlen($owner_rc4_key); + for ($i = 1; $i <= 19; ++$i) { + $key = ''; + for ($j = 0; $j < $len; ++$j) { + $key .= chr(ord($owner_rc4_key[$j]) ^ $i); + } + $enc = $this->rc4($key, $enc); + } + } + + return $enc; + } + + private function uValue() + { + if ($this->useRC128Encryption) { + $tmp = $this->md5toBinary($this->padding . $this->hexToString($this->uniqid)); + $enc = $this->rc4($this->encryptionKey, $tmp); + $len = strlen($tmp); + for ($i = 1; $i <= 19; ++$i) { + $key = ''; + for ($j = 0; $j < $len; ++$j) { + $key .= chr(ord($this->encryptionKey[$j]) ^ $i); + } + $enc = $this->rc4($key, $enc); + } + $enc .= str_repeat("\x00", 16); + + return substr($enc, 0, 32); + } else { + return $this->rc4($this->encryptionKey, $this->padding); + } + } + + private function generateEncryptionKey($user_pass, $owner_pass, $protection) + { + // Pad passwords + $user_pass = substr($user_pass . $this->padding, 0, 32); + $owner_pass = substr($owner_pass . $this->padding, 0, 32); + + $this->oValue = $this->oValue($user_pass, $owner_pass); + + $this->uniqid = $this->uniqidGenerator->generate(); + + // Compute encyption key + if ($this->useRC128Encryption) { + $keybytelen = (128 / 8); + } else { + $keybytelen = (40 / 8); + } + + $prot = sprintf('%032b', $protection); + + $perms = chr(bindec(substr($prot, 24, 8))); + $perms .= chr(bindec(substr($prot, 16, 8))); + $perms .= chr(bindec(substr($prot, 8, 8))); + $perms .= chr(bindec(substr($prot, 0, 8))); + + $tmp = $this->md5toBinary($user_pass . $this->oValue . $perms . $this->hexToString($this->uniqid)); + + if ($this->useRC128Encryption) { + for ($i = 0; $i < 50; ++$i) { + $tmp = $this->md5toBinary(substr($tmp, 0, $keybytelen)); + } + } + + $this->encryptionKey = substr($tmp, 0, $keybytelen); + + $this->uValue = $this->uValue(); + $this->pValue = $protection; + } + + private function md5toBinary($string) + { + return pack('H*', md5($string)); + } + + private function hexToString($hs) + { + $s = ''; + $len = strlen($hs); + if (($len % 2) != 0) { + $hs .= '0'; + ++$len; + } + for ($i = 0; $i < $len; $i += 2) { + $s .= chr(hexdec($hs[$i] . $hs[($i + 1)])); + } + + return $s; + } +} diff --git a/Mpdf/Pdf/Protection/UniqidGenerator.php b/Mpdf/Pdf/Protection/UniqidGenerator.php new file mode 100644 index 0000000..54753d4 --- /dev/null +++ b/Mpdf/Pdf/Protection/UniqidGenerator.php @@ -0,0 +1,32 @@ +<?php + +namespace Mpdf\Pdf\Protection; + +class UniqidGenerator +{ + + public function __construct() + { + if (!function_exists('random_int') || !function_exists('random_bytes')) { + throw new \Mpdf\MpdfException( + 'Unable to set PDF file protection, CSPRNG Functions are not available. ' + . 'Use paragonie/random_compat polyfill or upgrade to PHP 7.' + ); + } + } + + /** + * @return string + */ + public function generate() + { + $chars = 'ABCDEF1234567890'; + $id = ''; + + for ($i = 0; $i < 32; $i++) { + $id .= $chars[random_int(0, 15)]; + } + + return md5($id); + } +} diff --git a/Mpdf/RemoteContentFetcher.php b/Mpdf/RemoteContentFetcher.php new file mode 100644 index 0000000..c2d74a8 --- /dev/null +++ b/Mpdf/RemoteContentFetcher.php @@ -0,0 +1,148 @@ +<?php + +namespace Mpdf; + +use Mpdf\Utils\Arrays; +use Psr\Log\LoggerInterface; +use Mpdf\Log\Context as LogContext; + +class RemoteContentFetcher implements \Psr\Log\LoggerAwareInterface +{ + + /** + * @var \Mpdf\Mpdf + */ + private $mpdf; + + /** + * @var \Psr\Log\LoggerInterface + */ + private $logger; + + public function __construct(Mpdf $mpdf, LoggerInterface $logger) + { + $this->mpdf = $mpdf; + $this->logger = $logger; + } + + public function getFileContentsByCurl($url) + { + $this->logger->debug(sprintf('Fetching (cURL) content of remote URL "%s"', $url), ['context' => LogContext::REMOTE_CONTENT]); + + $ch = curl_init($url); + + curl_setopt($ch, CURLOPT_USERAGENT, $this->mpdf->curlUserAgent); + curl_setopt($ch, CURLOPT_HEADER, 0); + curl_setopt($ch, CURLOPT_NOBODY, 0); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->mpdf->curlTimeout); + + if ($this->mpdf->curlFollowLocation) { + curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); + } + + if ($this->mpdf->curlAllowUnsafeSslRequests) { + curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); + } + + if (is_file($this->mpdf->curlCaCertificate)) { + curl_setopt($ch, CURLOPT_CAINFO, $this->mpdf->curlCaCertificate); + } + + if ($this->mpdf->curlProxy) { + curl_setopt($ch, CURLOPT_PROXY, $this->mpdf->curlProxy); + if ($this->mpdf->curlProxyAuth) { + curl_setopt($ch, CURLOPT_PROXYUSERPWD, $this->mpdf->curlProxyAuth); + } + } + + $data = curl_exec($ch); + + if (curl_error($ch)) { + $message = sprintf('cURL error: "%s"', curl_error($ch)); + $this->logger->error($message, ['context' => LogContext::REMOTE_CONTENT]); + + if ($this->mpdf->debug) { + throw new \Mpdf\MpdfException($message); + } + } + + $info = curl_getinfo($ch); + if (isset($info['http_code']) && $info['http_code'] !== 200) { + $message = sprintf('HTTP error: %d', $info['http_code']); + $this->logger->error($message, ['context' => LogContext::REMOTE_CONTENT]); + + if ($this->mpdf->debug) { + throw new \Mpdf\MpdfException($message); + } + } + + curl_close($ch); + + return $data; + } + + public function getFileContentsBySocket($url) + { + $this->logger->debug(sprintf('Fetching (socket) content of remote URL "%s"', $url), ['context' => LogContext::REMOTE_CONTENT]); + // mPDF 5.7.3 + + $timeout = 1; + $p = parse_url($url); + + $file = Arrays::get($p, 'path', ''); + $scheme = Arrays::get($p, 'scheme', ''); + $port = Arrays::get($p, 'port', 80); + $prefix = ''; + + if ($scheme === 'https') { + $prefix = 'ssl://'; + $port = Arrays::get($p, 'port', 443); + } + + $query = Arrays::get($p, 'query', null); + if ($query) { + $file .= '?' . $query; + } + + if (!($fh = @fsockopen($prefix . $p['host'], $port, $errno, $errstr, $timeout))) { + $this->logger->error(sprintf('Socket error "%s": "%s"', $errno, $errstr), ['context' => LogContext::REMOTE_CONTENT]); + return false; + } + + $getstring = 'GET ' . $file . " HTTP/1.0 \r\n" . + 'Host: ' . $p['host'] . " \r\n" . + "Connection: close\r\n\r\n"; + + fwrite($fh, $getstring); + + // Get rid of HTTP header + $s = fgets($fh, 1024); + if (!$s) { + return false; + } + + while (!feof($fh)) { + $s = fgets($fh, 1024); + if ($s === "\r\n") { + break; + } + } + + $data = ''; + + while (!feof($fh)) { + $data .= fgets($fh, 1024); + } + + fclose($fh); + + return $data; + } + + public function setLogger(LoggerInterface $logger) + { + $this->logger = $logger; + } +} diff --git a/Mpdf/ServiceFactory.php b/Mpdf/ServiceFactory.php new file mode 100644 index 0000000..f81e6f7 --- /dev/null +++ b/Mpdf/ServiceFactory.php @@ -0,0 +1,173 @@ +<?php + +namespace Mpdf; + +use Mpdf\Color\ColorConverter; +use Mpdf\Color\ColorModeConverter; +use Mpdf\Color\ColorSpaceRestrictor; + +use Mpdf\Fonts\FontCache; +use Mpdf\Fonts\FontFileFinder; + +use Mpdf\Image\ImageProcessor; + +use Mpdf\Pdf\Protection; +use Mpdf\Pdf\Protection\UniqidGenerator; + +use Mpdf\Writer\BaseWriter; +use Mpdf\Writer\BackgroundWriter; +use Mpdf\Writer\ColorWriter; +use Mpdf\Writer\BookmarkWriter; +use Mpdf\Writer\FontWriter; +use Mpdf\Writer\FormWriter; +use Mpdf\Writer\ImageWriter; +use Mpdf\Writer\JavaScriptWriter; +use Mpdf\Writer\MetadataWriter; +use Mpdf\Writer\OptionalContentWriter; +use Mpdf\Writer\PageWriter; + +use Mpdf\Writer\ResourceWriter; +use Psr\Log\LoggerInterface; + +class ServiceFactory +{ + + public function getServices( + Mpdf $mpdf, + LoggerInterface $logger, + $config, + $restrictColorSpace, + $languageToFont, + $scriptToLanguage, + $fontDescriptor, + $bmp, + $directWrite, + $wmf + ) { + $sizeConverter = new SizeConverter($mpdf->dpi, $mpdf->default_font_size, $mpdf, $logger); + + $colorModeConverter = new ColorModeConverter(); + $colorSpaceRestrictor = new ColorSpaceRestrictor( + $mpdf, + $colorModeConverter, + $restrictColorSpace + ); + $colorConverter = new ColorConverter($mpdf, $colorModeConverter, $colorSpaceRestrictor); + + $tableOfContents = new TableOfContents($mpdf, $sizeConverter); + + $cache = new Cache($config['tempDir']); + $fontCache = new FontCache(new Cache($config['tempDir'] . '/ttfontdata')); + + $fontFileFinder = new FontFileFinder($config['fontDir']); + + $cssManager = new CssManager($mpdf, $cache, $sizeConverter, $colorConverter); + + $otl = new Otl($mpdf, $fontCache); + + $protection = new Protection(new UniqidGenerator()); + + $writer = new BaseWriter($mpdf, $protection); + + $gradient = new Gradient($mpdf, $sizeConverter, $colorConverter, $writer); + + $formWriter = new FormWriter($mpdf, $writer); + + $form = new Form($mpdf, $otl, $colorConverter, $writer, $formWriter); + + $hyphenator = new Hyphenator($mpdf); + + $remoteContentFetcher = new RemoteContentFetcher($mpdf, $logger); + + $imageProcessor = new ImageProcessor( + $mpdf, + $otl, + $cssManager, + $sizeConverter, + $colorConverter, + $colorModeConverter, + $cache, + $languageToFont, + $scriptToLanguage, + $remoteContentFetcher, + $logger + ); + + $tag = new Tag( + $mpdf, + $cache, + $cssManager, + $form, + $otl, + $tableOfContents, + $sizeConverter, + $colorConverter, + $imageProcessor, + $languageToFont + ); + + $fontWriter = new FontWriter($mpdf, $writer, $fontCache, $fontDescriptor); + $metadataWriter = new MetadataWriter($mpdf, $writer, $form, $protection, $logger); + $imageWriter = new ImageWriter($mpdf, $writer); + $pageWriter = new PageWriter($mpdf, $form, $writer, $metadataWriter); + $bookmarkWriter = new BookmarkWriter($mpdf, $writer); + $optionalContentWriter = new OptionalContentWriter($mpdf, $writer); + $colorWriter = new ColorWriter($mpdf, $writer); + $backgroundWriter = new BackgroundWriter($mpdf, $writer); + $javaScriptWriter = new JavaScriptWriter($mpdf, $writer); + + $resourceWriter = new ResourceWriter( + $mpdf, + $writer, + $colorWriter, + $fontWriter, + $imageWriter, + $formWriter, + $optionalContentWriter, + $backgroundWriter, + $bookmarkWriter, + $metadataWriter, + $javaScriptWriter, + $logger + ); + + return [ + 'otl' => $otl, + 'bmp' => $bmp, + 'cache' => $cache, + 'cssManager' => $cssManager, + 'directWrite' => $directWrite, + 'fontCache' => $fontCache, + 'fontFileFinder' => $fontFileFinder, + 'form' => $form, + 'gradient' => $gradient, + 'tableOfContents' => $tableOfContents, + 'tag' => $tag, + 'wmf' => $wmf, + 'sizeConverter' => $sizeConverter, + 'colorConverter' => $colorConverter, + 'hyphenator' => $hyphenator, + 'remoteContentFetcher' => $remoteContentFetcher, + 'imageProcessor' => $imageProcessor, + 'protection' => $protection, + + 'languageToFont' => $languageToFont, + 'scriptToLanguage' => $scriptToLanguage, + + 'writer' => $writer, + 'fontWriter' => $fontWriter, + 'metadataWriter' => $metadataWriter, + 'imageWriter' => $imageWriter, + 'formWriter' => $formWriter, + 'pageWriter' => $pageWriter, + 'bookmarkWriter' => $bookmarkWriter, + 'optionalContentWriter' => $optionalContentWriter, + 'colorWriter' => $colorWriter, + 'backgroundWriter' => $backgroundWriter, + 'javaScriptWriter' => $javaScriptWriter, + + 'resourceWriter' => $resourceWriter + ]; + } + +} diff --git a/Mpdf/Shaper/Indic.php b/Mpdf/Shaper/Indic.php new file mode 100644 index 0000000..ab1d4bb --- /dev/null +++ b/Mpdf/Shaper/Indic.php @@ -0,0 +1,1945 @@ +<?php + +namespace Mpdf\Shaper; + +use Mpdf\Ucdn; + +class Indic +{ + /* FROM hb-ot-shape-complex-indic-private.hh */ + + // indic_category + const OT_X = 0; + const OT_C = 1; + const OT_V = 2; + const OT_N = 3; + const OT_H = 4; + const OT_ZWNJ = 5; + const OT_ZWJ = 6; + const OT_M = 7; /* Matra or Dependent Vowel */ + const OT_SM = 8; + const OT_VD = 9; + const OT_A = 10; + const OT_NBSP = 11; + const OT_DOTTEDCIRCLE = 12; /* Not in the spec, but special in Uniscribe. /Very very/ special! */ + const OT_RS = 13; /* Register Shifter, used in Khmer OT spec */ + const OT_COENG = 14; + const OT_REPHA = 15; + + const OT_RA = 16; /* Not explicitly listed in the OT spec, but used in the grammar. */ + const OT_CM = 17; + + /* Visual positions in a syllable from left to right. */ + /* FROM hb-ot-shape-complex-indic-private.hh */ + + // indic_position + const POS_START = 0; + + const POS_RA_TO_BECOME_REPH = 1; + const POS_PRE_M = 2; + const POS_PRE_C = 3; + + const POS_BASE_C = 4; + const POS_AFTER_MAIN = 5; + + const POS_ABOVE_C = 6; + + const POS_BEFORE_SUB = 7; + const POS_BELOW_C = 8; + const POS_AFTER_SUB = 9; + + const POS_BEFORE_POST = 10; + const POS_POST_C = 11; + const POS_AFTER_POST = 12; + + const POS_FINAL_C = 13; + const POS_SMVD = 14; + + const POS_END = 15; + + /* + * Basic features. + * These features are applied in order, one at a time, after initial_reordering. + */ + + /* + * Must be in the same order as the indic_features array. Ones starting with _ are F_GLOBAL + * Ones without the _ are only applied where the mask says! + */ + + const _NUKT = 0; + const _AKHN = 1; + const RPHF = 2; + const _RKRF = 3; + const PREF = 4; + const BLWF = 5; + const HALF = 6; + const ABVF = 7; + const PSTF = 8; + const CFAR = 9; // Khmer only + const _VATU = 10; + const _CJCT = 11; + const INIT = 12; + + // Based on indic_category used to make string to find syllables + // OT_ to string character (using e.g. OT_C from INDIC) hb-ot-shape-complex-indic-private.hh + public static $indic_category_char = [ + 'x', + 'C', + 'V', + 'N', + 'H', + 'Z', + 'J', + 'M', + 'S', + 'v', + 'A', /* Spec gives Andutta U+0952 as OT_A. However, testing shows that Uniscribe + * treats U+0951..U+0952 all as OT_VD - see set_indic_properties */ + 's', + 'D', + 'F', /* Register shift Khmer only */ + 'G', /* Khmer only */ + 'r', /* 0D4E (dot reph) only one in Malayalam */ + 'R', + 'm', /* Consonant medial only used in Indic 0A75 in Gurmukhi (0A00..0A7F) : also in Lao, Myanmar, Tai Tham, Javanese & Cham */ + ]; + + public static function set_indic_properties(&$info, $scriptblock) + { + $u = $info['uni']; + $type = self::indic_get_categories($u); + $cat = ($type & 0x7F); + $pos = ($type >> 8); + + /* + * Re-assign category + */ + + if ($u == 0x17D1) { + $cat = self::OT_X; + } + + if ($cat == self::OT_X && self::in_range($u, 0x17CB, 0x17D3)) { /* Khmer Various signs */ + /* These are like Top Matras. */ + $cat = self::OT_M; + $pos = self::POS_ABOVE_C; + } + + if ($u == 0x17C6) { + $cat = self::OT_N; + } /* Khmer Bindu doesn't like to be repositioned. */ + + if ($u == 0x17D2) { + $cat = self::OT_COENG; + } /* Khmer coeng */ + + /* The spec says U+0952 is OT_A. However, testing shows that Uniscribe + * treats U+0951..U+0952 all as OT_VD. + * TESTS: + * U+092E,U+0947,U+0952 + * U+092E,U+0952,U+0947 + * U+092E,U+0947,U+0951 + * U+092E,U+0951,U+0947 + * */ + //if ($u == 0x0952) $cat = self::OT_A; + if (self::in_range($u, 0x0951, 0x0954)) { + $cat = self::OT_VD; + } + + if ($u == 0x200C) { + $cat = self::OT_ZWNJ; + } elseif ($u == 0x200D) { + $cat = self::OT_ZWJ; + } elseif ($u == 0x25CC) { + $cat = self::OT_DOTTEDCIRCLE; + } elseif ($u == 0x0A71) { + $cat = self::OT_SM; + } /* GURMUKHI ADDAK. More like consonant medial. like 0A75. */ + + if ($cat == self::OT_REPHA) { + /* There are two kinds of characters marked as Repha: + * - The ones that are GenCat=Mn are already positioned visually, ie. after base. (eg. Khmer) + * - The ones that are GenCat=Lo is encoded logically, ie. beginning of syllable. (eg. Malayalam) + * + * We recategorize the first kind to look like a Nukta and attached to the base directly. + */ + if ($info['general_category'] == Ucdn::UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK) { + $cat = self::OT_N; + } + } + + /* + * Re-assign position. + */ + + if ((self::FLAG($cat) & (self::FLAG(self::OT_C) | self::FLAG(self::OT_CM) | self::FLAG(self::OT_RA) | self::FLAG(self::OT_V) | self::FLAG(self::OT_NBSP) | self::FLAG(self::OT_DOTTEDCIRCLE)))) { // = CONSONANT_FLAGS like is_consonant + if ($scriptblock == Ucdn::SCRIPT_KHMER) { + $pos = self::POS_BELOW_C; + } /* Khmer differs from Indic here. */ + else { + $pos = self::POS_BASE_C; + } /* Will recategorize later based on font lookups. */ + + if (self::is_ra($u)) { + $cat = self::OT_RA; + } + } elseif ($cat == self::OT_M) { + $pos = self::matra_position($u, $pos); + } elseif ($cat == self::OT_SM || $cat == self::OT_VD) { + $pos = self::POS_SMVD; + } + + if ($u == 0x0B01) { + $pos = self::POS_BEFORE_SUB; + } /* Oriya Bindu is BeforeSub in the spec. */ + + $info['indic_category'] = $cat; + $info['indic_position'] = $pos; + } + + // syllable_type + const CONSONANT_SYLLABLE = 0; + const VOWEL_SYLLABLE = 1; + const STANDALONE_CLUSTER = 2; + const BROKEN_CLUSTER = 3; + const NON_INDIC_CLUSTER = 4; + + public static function set_syllables(&$o, $s, &$broken_syllables) + { + $ptr = 0; + $syllable_serial = 1; + $broken_syllables = false; + + while ($ptr < strlen($s)) { + $match = ''; + $syllable_length = 1; + $syllable_type = self::NON_INDIC_CLUSTER; + // CONSONANT_SYLLABLE Consonant syllable + // From OT spec: + if (preg_match('/^([CR]m*[N]?(H[ZJ]?|[ZJ]H))*[CR]m*[N]?[A]?(H[ZJ]?|[M]*[N]?[H]?)?[S]?[v]{0,2}/', substr($s, $ptr), $ma)) { + // From HarfBuzz: + //if (preg_match('/^r?([CR]J?(Z?[N]{0,2})?[ZJ]?H(J[N]?)?){0,4}[CR]J?(Z?[N]{0,2})?A?((([ZJ]?H(J[N]?)?)|HZ)|(HJ)?([ZJ]{0,3}M[N]?(H|JHJR)?){0,4})?(S[Z]?)?[v]{0,2}/', substr($s,$ptr), $ma)) { + $syllable_length = strlen($ma[0]); + $syllable_type = self::CONSONANT_SYLLABLE; + } // VOWEL_SYLLABLE Vowel-based syllable + // From OT spec: + elseif (preg_match('/^(RH|r)?V[N]?([ZJ]?H[CR]m*|J[CR]m*)?([M]*[N]?[H]?)?[S]?[v]{0,2}/', substr($s, $ptr), $ma)) { + // From HarfBuzz: + //else if (preg_match('/^(RH|r)?V(Z?[N]{0,2})?(J|([ZJ]?H(J[N]?)?[CR]J?(Z?[N]{0,2})?){0,4}((([ZJ]?H(J[N]?)?)|HZ)|(HJ)?([ZJ]{0,3}M[N]?(H|JHJR)?){0,4})?(S[Z]?)?[v]{0,2})/', substr($s,$ptr), $ma)) { + $syllable_length = strlen($ma[0]); + $syllable_type = self::VOWEL_SYLLABLE; + } /* Apply only if it's a word start. */ + // STANDALONE_CLUSTER Stand Alone syllable at start of word + // From OT spec: + elseif (($ptr == 0 || + $o[$ptr - 1]['general_category'] < Ucdn::UNICODE_GENERAL_CATEGORY_LOWERCASE_LETTER || + $o[$ptr - 1]['general_category'] > Ucdn::UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK + ) && (preg_match('/^(RH|r)?[sD][N]?([ZJ]?H[CR]m*)?([M]*[N]?[H]?)?[S]?[v]{0,2}/', substr($s, $ptr), $ma))) { + // From HarfBuzz: + // && (preg_match('/^(RH|r)?[sD](Z?[N]{0,2})?(([ZJ]?H(J[N]?)?)[CR]J?(Z?[N]{0,2})?){0,4}((([ZJ]?H(J[N]?)?)|HZ)|(HJ)?([ZJ]{0,3}M[N]?(H|JHJR)?){0,4})?(S[Z]?)?[v]{0,2}/', substr($s,$ptr), $ma)) { + $syllable_length = strlen($ma[0]); + $syllable_type = self::STANDALONE_CLUSTER; + } // BROKEN_CLUSTER syllable + elseif (preg_match('/^(RH|r)?[N]?([ZJ]?H[CR])?([M]*[N]?[H]?)?[S]?[v]{0,2}/', substr($s, $ptr), $ma)) { + // From HarfBuzz: + //else if (preg_match('/^(RH|r)?(Z?[N]{0,2})?(([ZJ]?H(J[N]?)?)[CR]J?(Z?[N]{0,2})?){0,4}((([ZJ]?H(J[N]?)?)|HZ)|(HJ)?([ZJ]{0,3}M[N]?(H|JHJR)?){0,4})(S[Z]?)?[v]{0,2}/', substr($s,$ptr), $ma)) { + if (strlen($ma[0])) { // May match blank + $syllable_length = strlen($ma[0]); + $syllable_type = self::BROKEN_CLUSTER; + $broken_syllables = true; + } + } + + for ($i = $ptr; $i < $ptr + $syllable_length; $i++) { + $o[$i]['syllable'] = ($syllable_serial << 4) | $syllable_type; + } + $ptr += $syllable_length; + $syllable_serial++; + if ($syllable_serial == 16) { + $syllable_serial = 1; + } + } + } + + public static function set_syllables_sinhala(&$o, $s, &$broken_syllables) + { + $ptr = 0; + $syllable_serial = 1; + $broken_syllables = false; + + while ($ptr < strlen($s)) { + $match = ''; + $syllable_length = 1; + $syllable_type = self::NON_INDIC_CLUSTER; + // CONSONANT_SYLLABLE Consonant syllable + // From OT spec: + if (preg_match('/^([CR]HJ|[CR]JH){0,8}[CR][HM]{0,3}[S]{0,1}/', substr($s, $ptr), $ma)) { + $syllable_length = strlen($ma[0]); + $syllable_type = self::CONSONANT_SYLLABLE; + } // VOWEL_SYLLABLE Vowel-based syllable + // From OT spec: + elseif (preg_match('/^V[S]{0,1}/', substr($s, $ptr), $ma)) { + $syllable_length = strlen($ma[0]); + $syllable_type = self::VOWEL_SYLLABLE; + } + + for ($i = $ptr; $i < $ptr + $syllable_length; $i++) { + $o[$i]['syllable'] = ($syllable_serial << 4) | $syllable_type; + } + $ptr += $syllable_length; + $syllable_serial++; + if ($syllable_serial == 16) { + $syllable_serial = 1; + } + } + } + + public static function set_syllables_khmer(&$o, $s, &$broken_syllables) + { + $ptr = 0; + $syllable_serial = 1; + $broken_syllables = false; + + while ($ptr < strlen($s)) { + $match = ''; + $syllable_length = 1; + $syllable_type = self::NON_INDIC_CLUSTER; + // CONSONANT_SYLLABLE Consonant syllable + if (preg_match('/^r?([CR]J?((Z?F)?[N]{0,2})?[ZJ]?G(JN?)?){0,4}[CR]J?((Z?F)?[N]{0,2})?A?((([ZJ]?G(JN?)?)|GZ)|(GJ)?([ZJ]{0,3}MN?(H|JHJR)?){0,4})?(G([CR]J?((Z?F)?[N]{0,2})?|V))?(SZ?)?[v]{0,2}/', substr($s, $ptr), $ma)) { + $syllable_length = strlen($ma[0]); + $syllable_type = self::CONSONANT_SYLLABLE; + } // VOWEL_SYLLABLE Vowel-based syllable + elseif (preg_match('/^(RH|r)?V((Z?F)?[N]{0,2})?(J|([ZJ]?G(JN?)?[CR]J?((Z?F)?[N]{0,2})?){0,4}((([ZJ]?G(JN?)?)|GZ)|(GJ)?([ZJ]{0,3}MN?(H|JHJR)?){0,4})?(G([CR]J?((Z?F)?[N]{0,2})?|V))?(SZ?)?[v]{0,2})/', substr($s, $ptr), $ma)) { + $syllable_length = strlen($ma[0]); + $syllable_type = self::VOWEL_SYLLABLE; + } // BROKEN_CLUSTER syllable + elseif (preg_match('/^(RH|r)?((Z?F)?[N]{0,2})?(([ZJ]?G(JN?)?)[CR]J?((Z?F)?[N]{0,2})?){0,4}((([ZJ]?G(JN?)?)|GZ)|(GJ)?([ZJ]{0,3}MN?(H|JHJR)?){0,4})(G([CR]J?((Z?F)?[N]{0,2})?|V))?(SZ?)?[v]{0,2}/', substr($s, $ptr), $ma)) { + if (strlen($ma[0])) { // May match blank + $syllable_length = strlen($ma[0]); + $syllable_type = self::BROKEN_CLUSTER; + $broken_syllables = true; + } + } + + for ($i = $ptr; $i < $ptr + $syllable_length; $i++) { + $o[$i]['syllable'] = ($syllable_serial << 4) | $syllable_type; + } + $ptr += $syllable_length; + $syllable_serial++; + if ($syllable_serial == 16) { + $syllable_serial = 1; + } + } + } + + public static function initial_reordering(&$info, $GSUBdata, $broken_syllables, $indic_config, $scriptblock, $is_old_spec, $dottedcircle) + { + + self::update_consonant_positions($info, $GSUBdata); + + if ($broken_syllables && $dottedcircle) { + self::insert_dotted_circles($info, $dottedcircle); + } + + $count = count($info); + if (!$count) { + return; + } + $last = 0; + $last_syllable = $info[0]['syllable']; + for ($i = 1; $i < $count; $i++) { + if ($last_syllable != $info[$i]['syllable']) { + self::initial_reordering_syllable($info, $GSUBdata, $indic_config, $scriptblock, $is_old_spec, $last, $i); + $last = $i; + $last_syllable = $info[$last]['syllable']; + } + } + self::initial_reordering_syllable($info, $GSUBdata, $indic_config, $scriptblock, $is_old_spec, $last, $count); + } + + public static function update_consonant_positions(&$info, $GSUBdata) + { + $count = count($info); + for ($i = 0; $i < $count; $i++) { + if ($info[$i]['indic_position'] == self::POS_BASE_C) { + $c = $info[$i]['uni']; + // If would substitute... + if (isset($GSUBdata['pref'][$c])) { + $info[$i]['indic_position'] = self::POS_POST_C; + } elseif (isset($GSUBdata['blwf'][$c])) { + $info[$i]['indic_position'] = self::POS_BELOW_C; + } elseif (isset($GSUBdata['pstf'][$c])) { + $info[$i]['indic_position'] = self::POS_POST_C; + } + } + } + } + + public static function insert_dotted_circles(&$info, $dottedcircle) + { + $idx = 0; + $last_syllable = 0; + while ($idx < count($info)) { + $syllable = $info[$idx]['syllable']; + $syllable_type = ($syllable & 0x0F); + if ($last_syllable != $syllable && $syllable_type == self::BROKEN_CLUSTER) { + $last_syllable = $syllable; + + $dottedcircle[0]['syllable'] = $info[$idx]['syllable']; + + /* Insert dottedcircle after possible Repha. */ + while ($idx < count($info) && $last_syllable == $info[$idx]['syllable'] && $info[$idx]['indic_category'] == self::OT_REPHA) { + $idx++; + } + array_splice($info, $idx, 0, $dottedcircle); + } else { + $idx++; + } + } + + // I am not sue how this code below got in here, since $idx should now be > count($info) and thus invalid. + // In case I am missing something(!) I'll leave a warning here for now: + if (isset($info[$idx])) { + throw new \Mpdf\MpdfException('Unexpected error occurred in Indic processing'); + } + // In case of final bloken cluster... + //$syllable = $info[$idx]['syllable']; + //$syllable_type = ($syllable & 0x0F); + //if ($last_syllable != $syllable && $syllable_type == self::BROKEN_CLUSTER) { + // $dottedcircle[0]['syllable'] = $info[$idx]['syllable']; + // array_splice($info, $idx, 0, $dottedcircle); + //} + } + + /* Rules from: + * https://www.microsoft.com/typography/otfntdev/devanot/shaping.aspx */ + + public static function initial_reordering_syllable(&$info, $GSUBdata, $indic_config, $scriptblock, $is_old_spec, $start, $end) + { + /* vowel_syllable: We made the vowels look like consonants. So uses the consonant logic! */ + /* broken_cluster: We already inserted dotted-circles, so just call the standalone_cluster. */ + /* standalone_cluster: We treat NBSP/dotted-circle as if they are consonants, so we should just chain. */ + + $syllable_type = ($info[$start]['syllable'] & 0x0F); + if ($syllable_type == self::NON_INDIC_CLUSTER) { + return; + } + if ($syllable_type == self::BROKEN_CLUSTER || $syllable_type == self::STANDALONE_CLUSTER) { + //if ($uniscribe_bug_compatible) { + /* For dotted-circle, this is what Uniscribe does: + * If dotted-circle is the last glyph, it just does nothing. + * i.e. It doesn't form Reph. */ + if ($info[$end - 1]['indic_category'] == self::OT_DOTTEDCIRCLE) { + return; + } + } + + /* 1. Find base consonant: + * + * The shaping engine finds the base consonant of the syllable, using the + * following algorithm: starting from the end of the syllable, move backwards + * until a consonant is found that does not have a below-base or post-base + * form (post-base forms have to follow below-base forms), or that is not a + * pre-base reordering Ra, or arrive at the first consonant. The consonant + * stopped at will be the base. + * + * o If the syllable starts with Ra + Halant (in a script that has Reph) + * and has more than one consonant, Ra is excluded from candidates for + * base consonants. + */ + + $base = $end; + $has_reph = false; + $limit = $start; + + if ($scriptblock != Ucdn::SCRIPT_KHMER) { + /* -> If the syllable starts with Ra + Halant (in a script that has Reph) + * and has more than one consonant, Ra is excluded from candidates for + * base consonants. */ + if (count($GSUBdata['rphf']) /* ?? $indic_plan->mask_array[RPHF] */ && $start + 3 <= $end && + ( + ($indic_config[4] == self::REPH_MODE_IMPLICIT && !self::is_joiner($info[$start + 2])) || + ($indic_config[4] == self::REPH_MODE_EXPLICIT && $info[$start + 2]['indic_category'] == self::OT_ZWJ) + )) { + /* See if it matches the 'rphf' feature. */ + //$glyphs = array($info[$start]['uni'], $info[$start + 1]['uni']); + //if ($indic_plan->rphf->would_substitute ($glyphs, count($glyphs), true, face)) { + if (isset($GSUBdata['rphf'][$info[$start]['uni']]) && self::is_halant_or_coeng($info[$start + 1])) { + $limit += 2; + while ($limit < $end && self::is_joiner($info[$limit])) { + $limit++; + } + $base = $start; + $has_reph = true; + } + } elseif ($indic_config[4] == self::REPH_MODE_LOG_REPHA && $info[$start]['indic_category'] == self::OT_REPHA) { + $limit += 1; + while ($limit < $end && self::is_joiner($info[$limit])) { + $limit++; + } + $base = $start; + $has_reph = true; + } + } + + switch ($indic_config[2]) { // base_pos + case self::BASE_POS_LAST: + /* -> starting from the end of the syllable, move backwards */ + $i = $end; + $seen_below = false; + do { + $i--; + /* -> until a consonant is found */ + if (self::is_consonant($info[$i])) { + /* -> that does not have a below-base or post-base form + * (post-base forms have to follow below-base forms), */ + if ($info[$i]['indic_position'] != self::POS_BELOW_C && ($info[$i]['indic_position'] != self::POS_POST_C || $seen_below)) { + $base = $i; + break; + } + if ($info[$i]['indic_position'] == self::POS_BELOW_C) { + $seen_below = true; + } + + /* -> or that is not a pre-base reordering Ra, + * + * IMPLEMENTATION NOTES: + * + * Our pre-base reordering Ra's are marked POS_POST_C, so will be skipped + * by the logic above already. + */ + + /* -> or arrive at the first consonant. The consonant stopped at will + * be the base. */ + $base = $i; + } else { + /* A ZWJ after a Halant stops the base search, and requests an explicit + * half form. + * [A ZWJ before a Halant, requests a subjoined form instead, and hence + * search continues. This is particularly important for Bengali + * sequence Ra,H,Ya that should form Ya-Phalaa by subjoining Ya] */ + if ($start < $i && $info[$i]['indic_category'] == self::OT_ZWJ && $info[$i - 1]['indic_category'] == self::OT_H) { + if (!defined("OMIT_INDIC_FIX_1") || OMIT_INDIC_FIX_1 != 1) { + $base = $i; + } // INDIC_FIX_1 + break; + } + // ZKI8 + if ($start < $i && $info[$i]['indic_category'] == self::OT_ZWNJ) { + break; + } + } + } while ($i > $limit); + break; + + case self::BASE_POS_FIRST: + /* In scripts without half forms (eg. Khmer), the first consonant is always the base. */ + + if (!$has_reph) { + $base = $limit; + } + + /* Find the last base consonant that is not blocked by ZWJ. If there is + * a ZWJ right before a base consonant, that would request a subjoined form. */ + for ($i = $limit; $i < $end; $i++) { + if (self::is_consonant($info[$i]) && $info[$i]['indic_position'] == self::POS_BASE_C) { + if ($limit < $i && $info[$i - 1]['indic_category'] == self::OT_ZWJ) { + break; + } else { + $base = $i; + } + } + } + + /* Mark all subsequent consonants as below. */ + for ($i = $base + 1; $i < $end; $i++) { + if (self::is_consonant($info[$i]) && $info[$i]['indic_position'] == self::POS_BASE_C) { + $info[$i]['indic_position'] = self::POS_BELOW_C; + } + } + break; + //default: + //assert (false); + /* fallthrough */ + } + + /* -> If the syllable starts with Ra + Halant (in a script that has Reph) + * and has more than one consonant, Ra is excluded from candidates for + * base consonants. + * + * Only do this for unforced Reph. (ie. not for Ra,H,ZWJ. */ + if ($scriptblock != Ucdn::SCRIPT_KHMER) { + if ($has_reph && $base == $start && $limit - $base <= 2) { + /* Have no other consonant, so Reph is not formed and Ra becomes base. */ + $has_reph = false; + } + } + + /* 2. Decompose and reorder Matras: + * + * Each matra and any syllable modifier sign in the cluster are moved to the + * appropriate position relative to the consonant(s) in the cluster. The + * shaping engine decomposes two- or three-part matras into their constituent + * parts before any repositioning. Matra characters are classified by which + * consonant in a conjunct they have affinity for and are reordered to the + * following positions: + * + * o Before first half form in the syllable + * o After subjoined consonants + * o After post-form consonant + * o After main consonant (for above marks) + * + * IMPLEMENTATION NOTES: + * + * The normalize() routine has already decomposed matras for us, so we don't + * need to worry about that. + */ + + + /* 3. Reorder marks to canonical order: + * + * Adjacent nukta and halant or nukta and vedic sign are always repositioned + * if necessary, so that the nukta is first. + * + * IMPLEMENTATION NOTES: + * + * Use the combining Class from Unicode categories? to bubble_sort. + */ + + /* Reorder characters */ + + for ($i = $start; $i < $base; $i++) { + $info[$i]['indic_position'] = min(self::POS_PRE_C, $info[$i]['indic_position']); + } + + if ($base < $end) { + $info[$base]['indic_position'] = self::POS_BASE_C; + } + + /* Mark final consonants. A final consonant is one appearing after a matra, + * ? only in Khmer. */ + for ($i = $base + 1; $i < $end; $i++) { + if ($info[$i]['indic_category'] == self::OT_M) { + for ($j = $i + 1; $j < $end; $j++) { + if (self::is_consonant($info[$j])) { + $info[$j]['indic_position'] = self::POS_FINAL_C; + break; + } + } + break; + } + } + + /* Handle beginning Ra */ + if ($scriptblock != Ucdn::SCRIPT_KHMER) { + if ($has_reph) { + $info[$start]['indic_position'] = self::POS_RA_TO_BECOME_REPH; + } + } + + + /* For old-style Indic script tags, move the first post-base Halant after + * last consonant. Only do this if there is *not* a Halant after last + * consonant. Otherwise it becomes messy. */ + if ($is_old_spec) { + for ($i = $base + 1; $i < $end; $i++) { + if ($info[$i]['indic_category'] == self::OT_H) { + for ($j = $end - 1; $j > $i; $j--) { + if (self::is_consonant($info[$j]) || $info[$j]['indic_category'] == self::OT_H) { + break; + } + } + if ($info[$j]['indic_category'] != self::OT_H && $j > $i) { + /* Move Halant to after last consonant. */ + self::_move_info_pos($info, $i, $j + 1); + } + break; + } + } + } + + /* Attach misc marks to previous char to move with them. */ + $last_pos = self::POS_START; + for ($i = $start; $i < $end; $i++) { + if ((self::FLAG($info[$i]['indic_category']) & (self::FLAG(self::OT_ZWJ) | self::FLAG(self::OT_ZWNJ) | self::FLAG(self::OT_N) | self::FLAG(self::OT_RS) | self::FLAG(self::OT_H) | self::FLAG(self::OT_COENG) ))) { + $info[$i]['indic_position'] = $last_pos; + if ($info[$i]['indic_category'] == self::OT_H && $info[$i]['indic_position'] == self::POS_PRE_M) { + /* + * Uniscribe doesn't move the Halant with Left Matra. + * TEST: U+092B,U+093F,U+094DE + * We follow. This is important for the Sinhala + * U+0DDA split matra since it decomposes to U+0DD9,U+0DCA + * where U+0DD9 is a left matra and U+0DCA is the virama. + * We don't want to move the virama with the left matra. + * TEST: U+0D9A,U+0DDA + */ + for ($j = $i; $j > $start; $j--) { + if ($info[$j - 1]['indic_position'] != self::POS_PRE_M) { + $info[$i]['indic_position'] = $info[$j - 1]['indic_position']; + break; + } + } + } + } elseif ($info[$i]['indic_position'] != self::POS_SMVD) { + $last_pos = $info[$i]['indic_position']; + } + } + + /* Re-attach ZWJ, ZWNJ, and halant to next char, for after-base consonants. */ + $last_halant = $end; + for ($i = $base + 1; $i < $end; $i++) { + if (self::is_halant_or_coeng($info[$i])) { + $last_halant = $i; + } elseif (self::is_consonant($info[$i])) { + for ($j = $last_halant; $j < $i; $j++) { + if ($info[$j]['indic_position'] != self::POS_SMVD) { + $info[$j]['indic_position'] = $info[$i]['indic_position']; + } + } + } + } + + + if ($scriptblock == Ucdn::SCRIPT_KHMER) { + /* KHMER_FIX_2 */ + /* Move Coeng+RO (Halant,Ra) sequence before base consonant. */ + for ($i = $base + 1; $i < $end; $i++) { + if (self::is_halant_or_coeng($info[$i]) && self::is_ra($info[$i + 1]['uni'])) { + $info[$i]['indic_position'] = self::POS_PRE_C; + $info[$i + 1]['indic_position'] = self::POS_PRE_C; + break; + } + } + } + + + /* + if (!defined("OMIT_INDIC_FIX_2") || OMIT_INDIC_FIX_2 != 1) { + // INDIC_FIX_2 + $ZWNJ_found = false; + $POST_ZWNJ_c_found = false; + for ($i = $base + 1; $i < $end; $i++) { + if ($info[$i]['indic_category'] == self::OT_ZWNJ) { $ZWNJ_found = true; } + else if ($ZWNJ_found && $info[$i]['indic_category'] == self::OT_C) { $POST_ZWNJ_c_found = true; } + else if ($POST_ZWNJ_c_found && $info[$i]['indic_position'] == self::POS_BEFORE_SUB) { $info[$i]['indic_position'] = self::POS_AFTER_SUB; } + } + } + */ + + /* Setup masks now */ + for ($i = $start; $i < $end; $i++) { + $info[$i]['mask'] = 0; + } + + + if ($scriptblock == Ucdn::SCRIPT_KHMER) { + /* Find a Coeng+RO (Halant,Ra) sequence and mark it for pre-base processing. */ + $mask = self::FLAG(self::PREF); + for ($i = $base; $i < $end - 1; $i++) { /* KHMER_FIX_1 From $start (not base) */ + if (self::is_halant_or_coeng($info[$i]) && self::is_ra($info[$i + 1]['uni'])) { + $info[$i]['mask'] |= self::FLAG(self::PREF); + $info[$i + 1]['mask'] |= self::FLAG(self::PREF); + + /* Mark the subsequent stuff with 'cfar'. Used in Khmer. + * Read the feature spec. + * This allows distinguishing the following cases with MS Khmer fonts: + * U+1784,U+17D2,U+179A,U+17D2,U+1782 [C+Coeng+RO+Coeng+C] => Should activate CFAR + * U+1784,U+17D2,U+1782,U+17D2,U+179A [C+Coeng+C+Coeng+RO] => Should NOT activate CFAR + */ + for ($j = ($i + 2); $j < $end; $j++) { + $info[$j]['mask'] |= self::FLAG(self::CFAR); + } + + break; + } + } + } + + + + /* Sit tight, rock 'n roll! */ + self::bubble_sort($info, $start, $end - $start); + + /* Find base again */ + $base = $end; + for ($i = $start; $i < $end; $i++) { + if ($info[$i]['indic_position'] == self::POS_BASE_C) { + $base = $i; + break; + } + } + + if ($scriptblock != Ucdn::SCRIPT_KHMER) { + /* Reph */ + for ($i = $start; $i < $end; $i++) { + if ($info[$i]['indic_position'] == self::POS_RA_TO_BECOME_REPH) { + $info[$i]['mask'] |= self::FLAG(self::RPHF); + } + } + + /* Pre-base */ + $mask = self::FLAG(self::HALF); + for ($i = $start; $i < $base; $i++) { + $info[$i]['mask'] |= $mask; + } + } + + /* Post-base */ + $mask = (self::FLAG(self::BLWF) | self::FLAG(self::ABVF) | self::FLAG(self::PSTF)); + for ($i = $base + 1; $i < $end; $i++) { + $info[$i]['mask'] |= $mask; + } + + + if ($scriptblock != Ucdn::SCRIPT_KHMER) { + if (!defined("OMIT_INDIC_FIX_3") || OMIT_INDIC_FIX_3 != 1) { + /* INDIC_FIX_3 */ + /* Find a (pre-base) Consonant, Halant,Ra sequence and mark Halant|Ra for below-base BLWF processing. */ + // TEST CASE ক্র্ক in FreeSans versus Vrinda + if (($base - $start) >= 3) { + for ($i = $start; $i < ($base - 2); $i++) { + if (self::is_consonant($info[$i])) { + if (self::is_halant_or_coeng($info[$i + 1]) && self::is_ra($info[$i + 2]['uni'])) { + // If would substitute Halant+Ra...BLWF + if (isset($GSUBdata['blwf'][$info[$i + 2]['uni']])) { + $info[$i + 1]['mask'] |= self::FLAG(self::BLWF); + $info[$i + 2]['mask'] |= self::FLAG(self::BLWF); + } /* If would not substitute as blwf, mark Ra+Halant for RPHF using following Halant (if present) */ elseif (self::is_halant_or_coeng($info[$i + 3])) { + $info[$i + 2]['mask'] |= self::FLAG(self::RPHF); + $info[$i + 3]['mask'] |= self::FLAG(self::RPHF); + } + break; + } + } + } + } + } + } + + + + if ($is_old_spec && $scriptblock == Ucdn::SCRIPT_DEVANAGARI) { + /* Old-spec eye-lash Ra needs special handling. From the spec: + * "The feature 'below-base form' is applied to consonants + * having below-base forms and following the base consonant. + * The exception is vattu, which may appear below half forms + * as well as below the base glyph. The feature 'below-base + * form' will be applied to all such occurrences of Ra as well." + * + * Test case: U+0924,U+094D,U+0930,U+094d,U+0915 + * with Sanskrit 2003 font. + * + * However, note that Ra,Halant,ZWJ is the correct way to + * request eyelash form of Ra, so we wouldbn't inhibit it + * in that sequence. + * + * Test case: U+0924,U+094D,U+0930,U+094d,U+200D,U+0915 + */ + for ($i = $start; ($i + 1) < $base; $i++) { + if ($info[$i]['indic_category'] == self::OT_RA && $info[$i + 1]['indic_category'] == self::OT_H && + ($i + 2 == $base || $info[$i + 2]['indic_category'] != self::OT_ZWJ)) { + $info[$i]['mask'] |= self::FLAG(self::BLWF); + $info[$i + 1]['mask'] |= self::FLAG(self::BLWF); + } + } + } + + if ($scriptblock != Ucdn::SCRIPT_KHMER) { + if (count($GSUBdata['pref']) && $base + 2 < $end) { + /* Find a Halant,Ra sequence and mark it for pre-base processing. */ + for ($i = $base + 1; $i + 1 < $end; $i++) { + // If old_spec find Ra-Halant... + if ((isset($GSUBdata['pref'][$info[$i + 1]['uni']]) && self::is_halant_or_coeng($info[$i]) && self::is_ra($info[$i + 1]['uni']) ) || + ($is_old_spec && isset($GSUBdata['pref'][$info[$i]['uni']]) && self::is_halant_or_coeng($info[$i + 1]) && self::is_ra($info[$i]['uni']) ) + ) { + $info[$i++]['mask'] |= self::FLAG(self::PREF); + $info[$i++]['mask'] |= self::FLAG(self::PREF); + break; + } + } + } + } + + + /* Apply ZWJ/ZWNJ effects */ + for ($i = $start + 1; $i < $end; $i++) { + if (self::is_joiner($info[$i])) { + $non_joiner = ($info[$i]['indic_category'] == self::OT_ZWNJ); + $j = $i; + while ($j > $start) { + if (defined("OMIT_INDIC_FIX_4") && OMIT_INDIC_FIX_4 == 1) { + // INDIC_FIX_4 = do nothing - carry on // + // ZWNJ should block H C from forming blwf post-base - need to unmask backwards beyond first consonant arrived at // + if (!self::is_consonant($info[$j])) { + break; + } + } + $j--; + + /* ZWJ/ZWNJ should disable CJCT. They do that by simply + * being there, since we don't skip them for the CJCT + * feature (ie. F_MANUAL_ZWJ) */ + + /* A ZWNJ disables HALF. */ + if ($non_joiner) { + $info[$j]['mask'] &= ~(self::FLAG(self::HALF) | self::FLAG(self::BLWF)); + } + } + } + } + } + + public static function final_reordering(&$info, $GSUBdata, $indic_config, $scriptblock, $is_old_spec) + { + $count = count($info); + if (!$count) { + return; + } + $last = 0; + $last_syllable = $info[0]['syllable']; + for ($i = 1; $i < $count; $i++) { + if ($last_syllable != $info[$i]['syllable']) { + self::final_reordering_syllable($info, $GSUBdata, $indic_config, $scriptblock, $is_old_spec, $last, $i); + $last = $i; + $last_syllable = $info[$last]['syllable']; + } + } + self::final_reordering_syllable($info, $GSUBdata, $indic_config, $scriptblock, $is_old_spec, $last, $count); + } + + public static function final_reordering_syllable(&$info, $GSUBdata, $indic_config, $scriptblock, $is_old_spec, $start, $end) + { + + /* 4. Final reordering: + * + * After the localized forms and basic shaping forms GSUB features have been + * applied (see below), the shaping engine performs some final glyph + * reordering before applying all the remaining font features to the entire + * cluster. + */ + + /* Find base again */ + for ($base = $start; $base < $end; $base++) { + if ($info[$base]['indic_position'] >= self::POS_BASE_C) { + if ($start < $base && $info[$base]['indic_position'] > self::POS_BASE_C) { + $base--; + } + break; + } + } + if ($base == $end && $start < $base && $info[$base - 1]['indic_category'] != self::OT_ZWJ) { + $base--; + } + while ($start < $base && isset($info[$base]) && ($info[$base]['indic_category'] == self::OT_H || $info[$base]['indic_category'] == self::OT_N)) { + $base--; + } + + + /* o Reorder matras: + * + * If a pre-base matra character had been reordered before applying basic + * features, the glyph can be moved closer to the main consonant based on + * whether half-forms had been formed. Actual position for the matra is + * defined as "after last standalone halant glyph, after initial matra + * position and before the main consonant". If ZWJ or ZWNJ follow this + * halant, position is moved after it. + */ + + + if ($start + 1 < $end && $start < $base) { /* Otherwise there can't be any pre-base matra characters. */ + /* If we lost track of base, alas, position before last thingy. */ + $new_pos = ($base == $end) ? $base - 2 : $base - 1; + + /* Malayalam / Tamil do not have "half" forms or explicit virama forms. + * The glyphs formed by 'half' are Chillus or ligated explicit viramas. + * We want to position matra after them. + */ + if ($scriptblock != Ucdn::SCRIPT_MALAYALAM && $scriptblock != Ucdn::SCRIPT_TAMIL) { + while ($new_pos > $start && !(self::is_one_of($info[$new_pos], (self::FLAG(self::OT_M) | self::FLAG(self::OT_H) | self::FLAG(self::OT_COENG))))) { + $new_pos--; + } + + /* If we found no Halant we are done. + * Otherwise only proceed if the Halant does + * not belong to the Matra itself! */ + if (self::is_halant_or_coeng($info[$new_pos]) && $info[$new_pos]['indic_position'] != self::POS_PRE_M) { + /* -> If ZWJ or ZWNJ follow this halant, position is moved after it. */ + if ($new_pos + 1 < $end && self::is_joiner($info[$new_pos + 1])) { + $new_pos++; + } + } else { + $new_pos = $start; + } /* No move. */ + } + + if ($start < $new_pos && $info[$new_pos]['indic_position'] != self::POS_PRE_M) { + /* Now go see if there's actually any matras... */ + for ($i = $new_pos; $i > $start; $i--) { + if ($info[$i - 1]['indic_position'] == self::POS_PRE_M) { + $old_pos = $i - 1; + //memmove (&info[$old_pos], &info[$old_pos + 1], ($new_pos - $old_pos) * sizeof ($info[0])); + self::_move_info_pos($info, $old_pos, $new_pos + 1); + + if ($old_pos < $base && $base <= $new_pos) { /* Shouldn't actually happen. */ + $base--; + } + $new_pos--; + } + } + } + } + + + /* o Reorder reph: + * + * Reph's original position is always at the beginning of the syllable, + * (i.e. it is not reordered at the character reordering stage). However, + * it will be reordered according to the basic-forms shaping results. + * Possible positions for reph, depending on the script, are; after main, + * before post-base consonant forms, and after post-base consonant forms. + */ + + /* If there's anything after the Ra that has the REPH pos, it ought to be halant. + * Which means that the font has failed to ligate the Reph. In which case, we + * shouldn't move. */ + if ($start + 1 < $end && + $info[$start]['indic_position'] == self::POS_RA_TO_BECOME_REPH && $info[$start + 1]['indic_position'] != self::POS_RA_TO_BECOME_REPH) { + $reph_pos = $indic_config[3]; + $skip_to_reph_step_5 = false; + $skip_to_reph_move = false; + + /* 1. If reph should be positioned after post-base consonant forms, + * proceed to step 5. + */ + if ($reph_pos == self::REPH_POS_AFTER_POST) { + $skip_to_reph_step_5 = true; + } + + /* 2. If the reph repositioning class is not after post-base: target + * position is after the first explicit halant glyph between the + * first post-reph consonant and last main consonant. If ZWJ or ZWNJ + * are following this halant, position is moved after it. If such + * position is found, this is the target position. Otherwise, + * proceed to the next step. + * + * Note: in old-implementation fonts, where classifications were + * fixed in shaping engine, there was no case where reph position + * will be found on this step. + */ + + if (!$skip_to_reph_step_5) { + $new_reph_pos = $start + 1; + + while ($new_reph_pos < $base && !self::is_halant_or_coeng($info[$new_reph_pos])) { + $new_reph_pos++; + } + + if ($new_reph_pos < $base && self::is_halant_or_coeng($info[$new_reph_pos])) { + /* ->If ZWJ or ZWNJ are following this halant, position is moved after it. */ + if ($new_reph_pos + 1 < $base && self::is_joiner($info[$new_reph_pos + 1])) { + $new_reph_pos++; + } + $skip_to_reph_move = true; + } + } + + /* 3. If reph should be repositioned after the main consonant: find the + * first consonant not ligated with main, or find the first + * consonant that is not a potential pre-base reordering Ra. + */ + if ($reph_pos == self::REPH_POS_AFTER_MAIN && !$skip_to_reph_move && !$skip_to_reph_step_5) { + $new_reph_pos = $base; + /* XXX Skip potential pre-base reordering Ra. */ + while ($new_reph_pos + 1 < $end && $info[$new_reph_pos + 1]['indic_position'] <= self::POS_AFTER_MAIN) { + $new_reph_pos++; + } + if ($new_reph_pos < $end) { + $skip_to_reph_move = true; + } + } + + /* 4. If reph should be positioned before post-base consonant, find + * first post-base classified consonant not ligated with main. If no + * consonant is found, the target position should be before the + * first matra, syllable modifier sign or vedic sign. + */ + /* This is our take on what step 4 is trying to say (and failing, BADLY). */ + if ($reph_pos == self::REPH_POS_AFTER_SUB && !$skip_to_reph_move && !$skip_to_reph_step_5) { + $new_reph_pos = $base; + while ($new_reph_pos < $end && isset($info[$new_reph_pos + 1]['indic_position']) && + !( self::FLAG($info[$new_reph_pos + 1]['indic_position']) & (self::FLAG(self::POS_POST_C) | self::FLAG(self::POS_AFTER_POST) | self::FLAG(self::POS_SMVD)))) { + $new_reph_pos++; + } + if ($new_reph_pos < $end) { + $skip_to_reph_move = true; + } + } + + /* 5. If no consonant is found in steps 3 or 4, move reph to a position + * immediately before the first post-base matra, syllable modifier + * sign or vedic sign that has a reordering class after the intended + * reph position. For example, if the reordering position for reph + * is post-main, it will skip above-base matras that also have a + * post-main position. + */ + if (!$skip_to_reph_move) { + /* Copied from step 2. */ + $new_reph_pos = $start + 1; + while ($new_reph_pos < $base && !self::is_halant_or_coeng($info[$new_reph_pos])) { + $new_reph_pos++; + } + + if ($new_reph_pos < $base && self::is_halant_or_coeng($info[$new_reph_pos])) { + /* ->If ZWJ or ZWNJ are following this halant, position is moved after it. */ + if ($new_reph_pos + 1 < $base && self::is_joiner($info[$new_reph_pos + 1])) { + $new_reph_pos++; + } + $skip_to_reph_move = true; + } + } + + + /* 6. Otherwise, reorder reph to the end of the syllable. + */ + if (!$skip_to_reph_move) { + $new_reph_pos = $end - 1; + while ($new_reph_pos > $start && $info[$new_reph_pos]['indic_position'] == self::POS_SMVD) { + $new_reph_pos--; + } + + /* + * If the Reph is to be ending up after a Matra,Halant sequence, + * position it before that Halant so it can interact with the Matra. + * However, if it's a plain Consonant,Halant we shouldn't do that. + * Uniscribe doesn't do this. + * TEST: U+0930,U+094D,U+0915,U+094B,U+094D + */ + //if (!$hb_options.uniscribe_bug_compatible && self::is_halant_or_coeng($info[$new_reph_pos])) { + if (self::is_halant_or_coeng($info[$new_reph_pos])) { + for ($i = $base + 1; $i < $new_reph_pos; $i++) { + if ($info[$i]['indic_category'] == self::OT_M) { + /* Ok, got it. */ + $new_reph_pos--; + } + } + } + } + + + /* Move */ + self::_move_info_pos($info, $start, $new_reph_pos + 1); + + if ($start < $base && $base <= $new_reph_pos) { + $base--; + } + } + + + /* o Reorder pre-base reordering consonants: + * + * If a pre-base reordering consonant is found, reorder it according to + * the following rules: + */ + + + if (count($GSUBdata['pref']) && $base + 1 < $end) { /* Otherwise there can't be any pre-base reordering Ra. */ + for ($i = $base + 1; $i < $end; $i++) { + if ($info[$i]['mask'] & self::FLAG(self::PREF)) { + /* 1. Only reorder a glyph produced by substitution during application + * of the <pref> feature. (Note that a font may shape a Ra consonant with + * the feature generally but block it in certain contexts.) + */ + // ??? Need to TEST if actual substitution has occurred + if ($i + 1 == $end || ($info[$i + 1]['mask'] & self::FLAG(self::PREF)) == 0) { + /* + * 2. Try to find a target position the same way as for pre-base matra. + * If it is found, reorder pre-base consonant glyph. + * + * 3. If position is not found, reorder immediately before main + * consonant. + */ + $new_pos = $base; + /* Malayalam / Tamil do not have "half" forms or explicit virama forms. + * The glyphs formed by 'half' are Chillus or ligated explicit viramas. + * We want to position matra after them. + */ + if ($scriptblock != Ucdn::SCRIPT_MALAYALAM && $scriptblock != Ucdn::SCRIPT_TAMIL) { + while ($new_pos > $start && + !(self::is_one_of($info[$new_pos - 1], self::FLAG(self::OT_M) | self::FLAG(self::OT_H) | self::FLAG(self::OT_COENG)))) { + $new_pos--; + } + + /* In Khmer coeng model, a V,Ra can go *after* matras. If it goes after a + * split matra, it should be reordered to *before* the left part of such matra. */ + if ($new_pos > $start && $info[$new_pos - 1]['indic_category'] == self::OT_M) { + $old_pos = $i; + for ($i = $base + 1; $i < $old_pos; $i++) { + if ($info[$i]['indic_category'] == self::OT_M) { + $new_pos--; + break; + } + } + } + } + + if ($new_pos > $start && self::is_halant_or_coeng($info[$new_pos - 1])) { + /* -> If ZWJ or ZWNJ follow this halant, position is moved after it. */ + if ($new_pos < $end && self::is_joiner($info[$new_pos])) { + $new_pos++; + } + } + + $old_pos = $i; + self::_move_info_pos($info, $old_pos, $new_pos); + + if ($new_pos <= $base && $base < $old_pos) { + $base++; + } + } + + break; + } + } + } + + + /* Apply 'init' to the Left Matra if it's a word start. */ + if ($info[$start]['indic_position'] == self::POS_PRE_M && + ($start == 0 || + ($info[$start - 1]['general_category'] < Ucdn::UNICODE_GENERAL_CATEGORY_FORMAT || $info[$start - 1]['general_category'] > Ucdn::UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK) + )) { + $info[$start]['mask'] |= self::FLAG(self::INIT); + } + + + /* + * Finish off and go home! + */ + } + + public static function _move_info_pos(&$info, $from, $to) + { + $t = []; + $t[0] = $info[$from]; + if ($from > $to) { + array_splice($info, $from, 1); + array_splice($info, $to, 0, $t); + } else { + array_splice($info, $to, 0, $t); + array_splice($info, $from, 1); + } + } + + public static $ra_chars = [ + 0x0930 => 1, /* Devanagari */ + 0x09B0 => 1, /* Bengali */ + 0x09F0 => 1, /* Bengali (Assamese) */ + 0x0A30 => 1, /* Gurmukhi */ /* No Reph */ + 0x0AB0 => 1, /* Gujarati */ + 0x0B30 => 1, /* Oriya */ + 0x0BB0 => 1, /* Tamil */ /* No Reph */ + 0x0C30 => 1, /* Telugu */ /* Reph formed only with ZWJ */ + 0x0CB0 => 1, /* Kannada */ + 0x0D30 => 1, /* Malayalam */ /* No Reph, Logical Repha */ + 0x0DBB => 1, /* Sinhala */ /* Reph formed only with ZWJ */ + 0x179A => 1, /* Khmer */ /* No Reph, Visual Repha */ + ]; + + public static function is_ra($u) + { + return isset(self::$ra_chars[$u]); + } + + public static function is_one_of($info, $flags) + { + if (isset($info['is_ligature']) && $info['is_ligature']) { + return false; + } /* If it ligated, all bets are off. */ + return !!(self::FLAG($info['indic_category']) & $flags); + } + + public static function is_joiner($info) + { + return self::is_one_of($info, (self::FLAG(self::OT_ZWJ) | self::FLAG(self::OT_ZWNJ))); + } + + /* Vowels and placeholders treated as if they were consonants. */ + + public static function is_consonant($info) + { + return self::is_one_of($info, (self::FLAG(self::OT_C) | self::FLAG(self::OT_CM) | self::FLAG(self::OT_RA) | self::FLAG(self::OT_V) | self::FLAG(self::OT_NBSP) | self::FLAG(self::OT_DOTTEDCIRCLE))); + } + + public static function is_halant_or_coeng($info) + { + return self::is_one_of($info, (self::FLAG(self::OT_H) | self::FLAG(self::OT_COENG))); + } + + // From hb-private.hh + public static function in_range($u, $lo, $hi) + { + if ((($lo ^ $hi) & $lo) == 0 && (($lo ^ $hi) & $hi) == ($lo ^ $hi) && (($lo ^ $hi) & (($lo ^ $hi) + 1)) == 0) { + return ($u & ~($lo ^ $hi)) == $lo; + } else { + return $lo <= $u && $u <= $hi; + } + } + + // From hb-private.hh + public static function FLAG($x) + { + return (1 << ($x)); + } + + // BELOW from hb-ot-shape-complex-indic.cc + + /* + * Indic configurations. + */ + + // base_position + const BASE_POS_FIRST = 0; + const BASE_POS_LAST = 1; + + // reph_position + const REPH_POS_DEFAULT = 10; // POS_BEFORE_POST, + + const REPH_POS_AFTER_MAIN = 5; // POS_AFTER_MAIN, + + const REPH_POS_BEFORE_SUB = 7; // POS_BEFORE_SUB, + const REPH_POS_AFTER_SUB = 9; // POS_AFTER_SUB, + const REPH_POS_BEFORE_POST = 10; // POS_BEFORE_POST, + const REPH_POS_AFTER_POST = 12; // POS_AFTER_POST + + // reph_mode + const REPH_MODE_IMPLICIT = 0; /* Reph formed out of initial Ra,H sequence. */ + const REPH_MODE_EXPLICIT = 1; /* Reph formed out of initial Ra,H,ZWJ sequence. */ + const REPH_MODE_VIS_REPHA = 2; /* Encoded Repha character, no reordering needed. */ + const REPH_MODE_LOG_REPHA = 3; /* Encoded Repha character, needs reordering. */ + + /* + struct of indic_configs{ + KEY - script; + 0 - has_old_spec; + 1 - virama; + 2 - base_pos; + 3 - reph_pos; + 4 - reph_mode; + }; + */ + + public static $indic_configs = [/* index is SCRIPT_number from UCDN */ + 9 => [true, 0x094D, 1, 10, 0], + 10 => [true, 0x09CD, 1, 9, 0], + 11 => [true, 0x0A4D, 1, 7, 0], + 12 => [true, 0x0ACD, 1, 10, 0], + 13 => [true, 0x0B4D, 1, 5, 0], + 14 => [true, 0x0BCD, 1, 12, 0], + 15 => [true, 0x0C4D, 1, 12, 1], + 16 => [true, 0x0CCD, 1, 12, 0], + 17 => [true, 0x0D4D, 1, 5, 3], + 18 => [false, 0x0DCA, 0, 5, 1], /* Sinhala */ + 30 => [false, 0x17D2, 0, 10, 2], /* Khmer */ + 84 => [false, 0xA9C0, 1, 10, 0], /* Javanese */ + ]; + + + + /* + + // from "hb-ot-shape-complex-indic-table.cc" + + + const ISC_A = 0; // INDIC_SYLLABIC_CATEGORY_AVAGRAHA Avagraha + const ISC_Bi = 8; // INDIC_SYLLABIC_CATEGORY_BINDU Bindu + const ISC_C = 1; // INDIC_SYLLABIC_CATEGORY_CONSONANT Consonant + const ISC_CD = 1; // INDIC_SYLLABIC_CATEGORY_CONSONANT_DEAD Consonant_Dead + const ISC_CF = 17; // INDIC_SYLLABIC_CATEGORY_CONSONANT_FINAL Consonant_Final + const ISC_CHL = 1; // INDIC_SYLLABIC_CATEGORY_CONSONANT_HEAD_LETTER Consonant_Head_Letter + const ISC_CM = 17; // INDIC_SYLLABIC_CATEGORY_CONSONANT_MEDIAL Consonant_Medial + const ISC_CP = 11; // INDIC_SYLLABIC_CATEGORY_CONSONANT_PLACEHOLDER Consonant_Placeholder + const ISC_CR = 15; // INDIC_SYLLABIC_CATEGORY_CONSONANT_REPHA Consonant_Repha + const ISC_CS = 1; // INDIC_SYLLABIC_CATEGORY_CONSONANT_SUBJOINED Consonant_Subjoined + const ISC_ML = 0; // INDIC_SYLLABIC_CATEGORY_MODIFYING_LETTER Modifying_Letter + const ISC_N = 3; // INDIC_SYLLABIC_CATEGORY_NUKTA Nukta + const ISC_x = 0; // INDIC_SYLLABIC_CATEGORY_OTHER Other + const ISC_RS = 13; // INDIC_SYLLABIC_CATEGORY_REGISTER_SHIFTER Register_Shifter + const ISC_TL = 0; // INDIC_SYLLABIC_CATEGORY_TONE_LETTER Tone_Letter + const ISC_TM = 3; // INDIC_SYLLABIC_CATEGORY_TONE_MARK Tone_Mark + const ISC_V = 4; // INDIC_SYLLABIC_CATEGORY_VIRAMA Virama + const ISC_Vs = 8; // INDIC_SYLLABIC_CATEGORY_VISARGA Visarga + const ISC_Vo = 2; // INDIC_SYLLABIC_CATEGORY_VOWEL Vowel + const ISC_M = 7; // INDIC_SYLLABIC_CATEGORY_VOWEL_DEPENDENT Vowel_Dependent + const ISC_VI = 2; // INDIC_SYLLABIC_CATEGORY_VOWEL_INDEPENDENT Vowel_Independent + + const IMC_B = 8; // INDIC_MATRA_CATEGORY_BOTTOM Bottom + const IMC_BR = 11; // INDIC_MATRA_CATEGORY_BOTTOM_AND_RIGHT Bottom_And_Right + const IMC_I = 15; // INDIC_MATRA_CATEGORY_INVISIBLE Invisible + const IMC_L = 3; // INDIC_MATRA_CATEGORY_LEFT Left + const IMC_LR = 11; // INDIC_MATRA_CATEGORY_LEFT_AND_RIGHT Left_And_Right + const IMC_x = 15; // INDIC_MATRA_CATEGORY_NOT_APPLICABLE Not_Applicable + const IMC_O = 5; // INDIC_MATRA_CATEGORY_OVERSTRUCK Overstruck + const IMC_R = 11; // INDIC_MATRA_CATEGORY_RIGHT Right + const IMC_T = 6; // INDIC_MATRA_CATEGORY_TOP Top + const IMC_TB = 8; // INDIC_MATRA_CATEGORY_TOP_AND_BOTTOM Top_And_Bottom + const IMC_TBR = 11; // INDIC_MATRA_CATEGORY_TOP_AND_BOTTOM_AND_RIGHT Top_And_Bottom_And_Right + const IMC_TL = 6; // INDIC_MATRA_CATEGORY_TOP_AND_LEFT Top_And_Left + const IMC_TLR = 11; // INDIC_MATRA_CATEGORY_TOP_AND_LEFT_AND_RIGHT Top_And_Left_And_Right + const IMC_TR = 11; // INDIC_MATRA_CATEGORY_TOP_AND_RIGHT Top_And_Right + const IMC_VOL = 2; // INDIC_MATRA_CATEGORY_VISUAL_ORDER_LEFT Visual_Order_Left + + If in original table = _(C,x), that = ISC_C,IMC_x + Value is IMC_x << 8 (or IMC_x * 256) = 3840 + plus ISC_C = 1, so = 3841 + + */ + + public static $indic_table = [ + /* Devanagari (0900..097F) */ + + /* 0900 */ 3848, 3848, 3848, 3848, 3842, 3842, 3842, 3842, + /* 0908 */ 3842, 3842, 3842, 3842, 3842, 3842, 3842, 3842, + /* 0910 */ 3842, 3842, 3842, 3842, 3842, 3841, 3841, 3841, + /* 0918 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* 0920 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* 0928 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* 0930 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* 0938 */ 3841, 3841, 1543, 2823, 3843, 3840, 2823, 775, + /* 0940 */ 2823, 2055, 2055, 2055, 2055, 1543, 1543, 1543, + /* 0948 */ 1543, 2823, 2823, 2823, 2823, 2052, 775, 2823, + /* 0950 */ 3840, 3840, 3840, 3840, 3840, 1543, 2055, 2055, + /* 0958 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* 0960 */ 3842, 3842, 2055, 2055, 3840, 3840, 3840, 3840, + /* 0968 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* 0970 */ 3840, 3840, 3842, 3842, 3842, 3842, 3842, 3842, + /* 0978 */ 3840, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* Bengali (0980..09FF) */ + + /* 0980 */ 3840, 3848, 3848, 3848, 3840, 3842, 3842, 3842, + /* 0988 */ 3842, 3842, 3842, 3842, 3842, 3840, 3840, 3842, + /* 0990 */ 3842, 3840, 3840, 3842, 3842, 3841, 3841, 3841, + /* 0998 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* 09A0 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* 09A8 */ 3841, 3840, 3841, 3841, 3841, 3841, 3841, 3841, + /* 09B0 */ 3841, 3840, 3841, 3840, 3840, 3840, 3841, 3841, + /* 09B8 */ 3841, 3841, 3840, 3840, 3843, 3840, 2823, 775, + /* 09C0 */ 2823, 2055, 2055, 2055, 2055, 3840, 3840, 775, + /* 09C8 */ 775, 3840, 3840, 2823, 2823, 2052, 3841, 3840, + /* 09D0 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 2823, + /* 09D8 */ 3840, 3840, 3840, 3840, 3841, 3841, 3840, 3841, + /* 09E0 */ 3842, 3842, 2055, 2055, 3840, 3840, 3840, 3840, + /* 09E8 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* 09F0 */ 3841, 3841, 3840, 3840, 3840, 3840, 3840, 3840, + /* 09F8 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* Gurmukhi (0A00..0A7F) */ + + /* 0A00 */ 3840, 3848, 3848, 3848, 3840, 3842, 3842, 3842, + /* 0A08 */ 3842, 3842, 3842, 3840, 3840, 3840, 3840, 3842, + /* 0A10 */ 3842, 3840, 3840, 3842, 3842, 3841, 3841, 3841, + /* 0A18 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* 0A20 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* 0A28 */ 3841, 3840, 3841, 3841, 3841, 3841, 3841, 3841, + /* 0A30 */ 3841, 3840, 3841, 3841, 3840, 3841, 3841, 3840, + /* 0A38 */ 3841, 3841, 3840, 3840, 3843, 3840, 2823, 775, + /* 0A40 */ 2823, 2055, 2055, 3840, 3840, 3840, 3840, 1543, + /* 0A48 */ 1543, 3840, 3840, 1543, 1543, 2052, 3840, 3840, + /* 0A50 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* 0A58 */ 3840, 3841, 3841, 3841, 3841, 3840, 3841, 3840, + /* 0A60 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* 0A68 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* 0A70 */ 3848, 3840, 13841, 13841, 3840, 3857, 3840, 3840, + /* 0A78 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* Gujarati (0A80..0AFF) */ + + /* 0A80 */ 3840, 3848, 3848, 3848, 3840, 3842, 3842, 3842, + /* 0A88 */ 3842, 3842, 3842, 3842, 3842, 3842, 3840, 3842, + /* 0A90 */ 3842, 3842, 3840, 3842, 3842, 3841, 3841, 3841, + /* 0A98 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* 0AA0 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* 0AA8 */ 3841, 3840, 3841, 3841, 3841, 3841, 3841, 3841, + /* 0AB0 */ 3841, 3840, 3841, 3841, 3840, 3841, 3841, 3841, + /* 0AB8 */ 3841, 3841, 3840, 3840, 3843, 3840, 2823, 775, + /* 0AC0 */ 2823, 2055, 2055, 2055, 2055, 1543, 3840, 1543, + /* 0AC8 */ 1543, 2823, 3840, 2823, 2823, 2052, 3840, 3840, + /* 0AD0 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* 0AD8 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* 0AE0 */ 3842, 3842, 2055, 2055, 3840, 3840, 3840, 3840, + /* 0AE8 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* 0AF0 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* 0AF8 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* Oriya (0B00..0B7F) */ + + /* 0B00 */ 3840, 3848, 3848, 3848, 3840, 3842, 3842, 3842, + /* 0B08 */ 3842, 3842, 3842, 3842, 3842, 3840, 3840, 3842, + /* 0B10 */ 3842, 3840, 3840, 3842, 3842, 3841, 3841, 3841, + /* 0B18 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* 0B20 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* 0B28 */ 3841, 3840, 3841, 3841, 3841, 3841, 3841, 3841, + /* 0B30 */ 3841, 3840, 3841, 3841, 3840, 3841, 3841, 3841, + /* 0B38 */ 3841, 3841, 3840, 3840, 3843, 3840, 2823, 1543, + /* 0B40 */ 2823, 2055, 2055, 2055, 2055, 3840, 3840, 775, + /* 0B48 */ 1543, 3840, 3840, 2823, 2823, 2052, 3840, 3840, + /* 0B50 */ 3840, 3840, 3840, 3840, 3840, 3840, 1543, 2823, + /* 0B58 */ 3840, 3840, 3840, 3840, 3841, 3841, 3840, 3841, + /* 0B60 */ 3842, 3842, 2055, 2055, 3840, 3840, 3840, 3840, + /* 0B68 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* 0B70 */ 3840, 3841, 3840, 3840, 3840, 3840, 3840, 3840, + /* 0B78 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* Tamil (0B80..0BFF) */ + + /* 0B80 */ 3840, 3840, 3848, 3840, 3840, 3842, 3842, 3842, + /* 0B88 */ 3842, 3842, 3842, 3840, 3840, 3840, 3842, 3842, + /* 0B90 */ 3842, 3840, 3842, 3842, 3842, 3841, 3840, 3840, + /* 0B98 */ 3840, 3841, 3841, 3840, 3841, 3840, 3841, 3841, + /* 0BA0 */ 3840, 3840, 3840, 3841, 3841, 3840, 3840, 3840, + /* 0BA8 */ 3841, 3841, 3841, 3840, 3840, 3840, 3841, 3841, + /* 0BB0 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* 0BB8 */ 3841, 3841, 3840, 3840, 3840, 3840, 2823, 2823, + /* 0BC0 */ 1543, 2055, 2055, 3840, 3840, 3840, 775, 775, + /* 0BC8 */ 775, 3840, 2823, 2823, 2823, 1540, 3840, 3840, + /* 0BD0 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 2823, + /* 0BD8 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* 0BE0 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* 0BE8 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* 0BF0 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* 0BF8 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* Telugu (0C00..0C7F) */ + + /* 0C00 */ 3840, 3848, 3848, 3848, 3840, 3842, 3842, 3842, + /* 0C08 */ 3842, 3842, 3842, 3842, 3842, 3840, 3842, 3842, + /* 0C10 */ 3842, 3840, 3842, 3842, 3842, 3841, 3841, 3841, + /* 0C18 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* 0C20 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* 0C28 */ 3841, 3840, 3841, 3841, 3841, 3841, 3841, 3841, + /* 0C30 */ 3841, 3841, 3841, 3841, 3840, 3841, 3841, 3841, + /* 0C38 */ 3841, 3841, 3840, 3840, 3840, 3840, 1543, 1543, + /* 0C40 */ 1543, 2823, 2823, 2823, 2823, 3840, 1543, 1543, + /* 0C48 */ 2055, 3840, 1543, 1543, 1543, 1540, 3840, 3840, + /* 0C50 */ 3840, 3840, 3840, 3840, 3840, 1543, 2055, 3840, + /* 0C58 */ 3841, 3841, 3840, 3840, 3840, 3840, 3840, 3840, + /* 0C60 */ 3842, 3842, 2055, 2055, 3840, 3840, 3840, 3840, + /* 0C68 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* 0C70 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* 0C78 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* Kannada (0C80..0CFF) */ + + /* 0C80 */ 3840, 3840, 3848, 3848, 3840, 3842, 3842, 3842, + /* 0C88 */ 3842, 3842, 3842, 3842, 3842, 3840, 3842, 3842, + /* 0C90 */ 3842, 3840, 3842, 3842, 3842, 3841, 3841, 3841, + /* 0C98 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* 0CA0 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* 0CA8 */ 3841, 3840, 3841, 3841, 3841, 3841, 3841, 3841, + /* 0CB0 */ 3841, 3841, 3841, 3841, 3840, 3841, 3841, 3841, + /* 0CB8 */ 3841, 3841, 3840, 3840, 3843, 3840, 2823, 1543, + /* 0CC0 */ 2823, 2823, 2823, 2823, 2823, 3840, 1543, 2823, + /* 0CC8 */ 2823, 3840, 2823, 2823, 1543, 1540, 3840, 3840, + /* 0CD0 */ 3840, 3840, 3840, 3840, 3840, 2823, 2823, 3840, + /* 0CD8 */ 3840, 3840, 3840, 3840, 3840, 3840, 3841, 3840, + /* 0CE0 */ 3842, 3842, 2055, 2055, 3840, 3840, 3840, 3840, + /* 0CE8 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* 0CF0 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* 0CF8 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* Malayalam (0D00..0D7F) */ + + /* 0D00 */ 3840, 3840, 3848, 3848, 3840, 3842, 3842, 3842, + /* 0D08 */ 3842, 3842, 3842, 3842, 3842, 3840, 3842, 3842, + /* 0D10 */ 3842, 3840, 3842, 3842, 3842, 3841, 3841, 3841, + /* 0D18 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* 0D20 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* 0D28 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* 0D30 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* 0D38 */ 3841, 3841, 3841, 3840, 3840, 3840, 2823, 2823, + /* 0D40 */ 2823, 2823, 2823, 2055, 2055, 3840, 775, 775, + /* 0D48 */ 775, 3840, 2823, 2823, 2823, 1540, 3855, 3840, + /* 0D50 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 2823, + /* 0D58 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* 0D60 */ 3842, 3842, 2055, 2055, 3840, 3840, 3840, 3840, + /* 0D68 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* 0D70 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* 0D78 */ 3840, 3840, 3841, 3841, 3841, 3841, 3841, 3841, + /* Sinhala (0D80..0DFF) */ + + /* 0D80 */ 3840, 3840, 3848, 3848, 3840, 3842, 3842, 3842, + /* 0D88 */ 3842, 3842, 3842, 3842, 3842, 3842, 3842, 3842, + /* 0D90 */ 3842, 3842, 3842, 3842, 3842, 3842, 3842, 3840, + /* 0D98 */ 3840, 3840, 3841, 3841, 3841, 3841, 3841, 3841, + /* 0DA0 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* 0DA8 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* 0DB0 */ 3841, 3841, 3840, 3841, 3841, 3841, 3841, 3841, + /* 0DB8 */ 3841, 3841, 3841, 3841, 3840, 3841, 3840, 3840, + /* 0DC0 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3840, + /* 0DC8 */ 3840, 3840, 1540, 3840, 3840, 3840, 3840, 2823, + /* 0DD0 */ 2823, 2823, 1543, 1543, 2055, 3840, 2055, 3840, + /* 0DD8 */ 2823, 775, 1543, 775, 2823, 2823, 2823, 2823, + /* 0DE0 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* 0DE8 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* 0DF0 */ 3840, 3840, 2823, 2823, 3840, 3840, 3840, 3840, + /* 0DF8 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* Vedic Extensions (1CD0..1CFF) */ + + /* 1CD0 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* 1CD8 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* 1CE0 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* 1CE8 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* 1CF0 */ 3840, 3840, 3848, 3848, 3840, 3840, 3840, 3840, + /* 1CF8 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + ]; + + public static $khmer_table = [ + /* Khmer (1780..17FF) */ + + /* 1780 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* 1788 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* 1790 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* 1798 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* 17A0 */ 3841, 3841, 3841, 3842, 3842, 3842, 3842, 3842, + /* 17A8 */ 3842, 3842, 3842, 3842, 3842, 3842, 3842, 3842, + /* 17B0 */ 3842, 3842, 3842, 3842, 3840, 3840, 2823, 1543, + /* 17B8 */ 1543, 1543, 1543, 2055, 2055, 2055, 1543, 2823, + /* 17C0 */ 2823, 775, 775, 775, 2823, 2823, 3848, 3848, + /* 17C8 */ 2823, 3853, 3853, 3840, 3855, 3840, 3840, 3840, + /* 17D0 */ 3840, 1540, 3844, 3840, 3840, 3840, 3840, 3840, + /* 17D8 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* 17E0 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* 17E8 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* 17F0 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* 17F8 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + ]; + + // from "hb-ot-shape-complex-indic-table.cc" + public static function indic_get_categories($u) + { + if (0x0900 <= $u && $u <= 0x0DFF) { + return self::$indic_table[$u - 0x0900 + 0]; // offset 0 for Most "indic" + } + if (0x1CD0 <= $u && $u <= 0x1D00) { + return self::$indic_table[$u - 0x1CD0 + 1152]; // offset for Vedic extensions + } + if (0x1780 <= $u && $u <= 0x17FF) { + return self::$khmer_table[$u - 0x1780]; // Khmer + } + if ($u == 0x00A0) { + return 3851; // (ISC_CP | (IMC_x << 8)) + } + if ($u == 0x25CC) { + return 3851; // (ISC_CP | (IMC_x << 8)) + } + return 3840; // (ISC_x | (IMC_x << 8)) + } + + // BELOW from hb-ot-shape-complex-indic.cc + /* + * Indic shaper. + */ + + public static function IN_HALF_BLOCK($u, $Base) + { + return (($u & ~0x7F) == $Base); + } + + public static function IS_DEVA($u) + { + return self::IN_HALF_BLOCK($u, 0x0900); + } + + public static function IS_BENG($u) + { + return self::IN_HALF_BLOCK($u, 0x0980); + } + + public static function IS_GURU($u) + { + return self::IN_HALF_BLOCK($u, 0x0A00); + } + + public static function IS_GUJR($u) + { + return self::IN_HALF_BLOCK($u, 0x0A80); + } + + public static function IS_ORYA($u) + { + return self::IN_HALF_BLOCK($u, 0x0B00); + } + + public static function IS_TAML($u) + { + return self::IN_HALF_BLOCK($u, 0x0B80); + } + + public static function IS_TELU($u) + { + return self::IN_HALF_BLOCK($u, 0x0C00); + } + + public static function IS_KNDA($u) + { + return self::IN_HALF_BLOCK($u, 0x0C80); + } + + public static function IS_MLYM($u) + { + return self::IN_HALF_BLOCK($u, 0x0D00); + } + + public static function IS_SINH($u) + { + return self::IN_HALF_BLOCK($u, 0x0D80); + } + + public static function IS_KHMR($u) + { + return self::IN_HALF_BLOCK($u, 0x1780); + } + + public static function MATRA_POS_LEFT($u) + { + return self::POS_PRE_M; + } + + public static function MATRA_POS_RIGHT($u) + { + return + (self::IS_DEVA($u) ? self::POS_AFTER_SUB : + (self::IS_BENG($u) ? self::POS_AFTER_POST : + (self::IS_GURU($u) ? self::POS_AFTER_POST : + (self::IS_GUJR($u) ? self::POS_AFTER_POST : + (self::IS_ORYA($u) ? self::POS_AFTER_POST : + (self::IS_TAML($u) ? self::POS_AFTER_POST : + (self::IS_TELU($u) ? ($u <= 0x0C42 ? self::POS_BEFORE_SUB : self::POS_AFTER_SUB) : + (self::IS_KNDA($u) ? ($u < 0x0CC3 || $u > 0xCD6 ? self::POS_BEFORE_SUB : self::POS_AFTER_SUB) : + (self::IS_MLYM($u) ? self::POS_AFTER_POST : + (self::IS_SINH($u) ? self::POS_AFTER_SUB : + (self::IS_KHMR($u) ? self::POS_AFTER_POST : + self::POS_AFTER_SUB))))))))))); /* default */ + } + + public static function MATRA_POS_TOP($u) + { + return /* BENG and MLYM don't have top matras. */ + (self::IS_DEVA($u) ? self::POS_AFTER_SUB : + (self::IS_GURU($u) ? self::POS_AFTER_POST : /* Deviate from spec */ + (self::IS_GUJR($u) ? self::POS_AFTER_SUB : + (self::IS_ORYA($u) ? self::POS_AFTER_MAIN : + (self::IS_TAML($u) ? self::POS_AFTER_SUB : + (self::IS_TELU($u) ? self::POS_BEFORE_SUB : + (self::IS_KNDA($u) ? self::POS_BEFORE_SUB : + (self::IS_SINH($u) ? self::POS_AFTER_SUB : + (self::IS_KHMR($u) ? self::POS_AFTER_POST : + self::POS_AFTER_SUB))))))))); /* default */ + } + + public static function MATRA_POS_BOTTOM($u) + { + return + (self::IS_DEVA($u) ? self::POS_AFTER_SUB : + (self::IS_BENG($u) ? self::POS_AFTER_SUB : + (self::IS_GURU($u) ? self::POS_AFTER_POST : + (self::IS_GUJR($u) ? self::POS_AFTER_POST : + (self::IS_ORYA($u) ? self::POS_AFTER_SUB : + (self::IS_TAML($u) ? self::POS_AFTER_POST : + (self::IS_TELU($u) ? self::POS_BEFORE_SUB : + (self::IS_KNDA($u) ? self::POS_BEFORE_SUB : + (self::IS_MLYM($u) ? self::POS_AFTER_POST : + (self::IS_SINH($u) ? self::POS_AFTER_SUB : + (self::IS_KHMR($u) ? self::POS_AFTER_POST : + self::POS_AFTER_SUB))))))))))); /* default */ + } + + public static function matra_position($u, $side) + { + switch ($side) { + case self::POS_PRE_C: + return self::MATRA_POS_LEFT($u); + case self::POS_POST_C: + return self::MATRA_POS_RIGHT($u); + case self::POS_ABOVE_C: + return self::MATRA_POS_TOP($u); + case self::POS_BELOW_C: + return self::MATRA_POS_BOTTOM($u); + } + return $side; + } + + // vowel matras that have to be split into two parts. + // From Harfbuzz (old) + // New HarfBuzz uses /src/hb-ucdn/ucdn.c and unicodedata_db.h for full method of decomposition for all characters + // Should always fully decompose and then recompose back, but we will just do the split matras + public static function decompose_indic($ab) + { + $sub = []; + switch ($ab) { + /* + * Decompose split matras. + */ + /* bengali */ + case 0x9cb: + $sub[0] = 0x9c7; + $sub[1] = 0x9be; + return $sub; + case 0x9cc: + $sub[0] = 0x9c7; + $sub[1] = 0x9d7; + return $sub; + /* oriya */ + case 0xb48: + $sub[0] = 0xb47; + $sub[1] = 0xb56; + return $sub; + case 0xb4b: + $sub[0] = 0xb47; + $sub[1] = 0xb3e; + return $sub; + case 0xb4c: + $sub[0] = 0xb47; + $sub[1] = 0xb57; + return $sub; + /* tamil */ + case 0xbca: + $sub[0] = 0xbc6; + $sub[1] = 0xbbe; + return $sub; + case 0xbcb: + $sub[0] = 0xbc7; + $sub[1] = 0xbbe; + return $sub; + case 0xbcc: + $sub[0] = 0xbc6; + $sub[1] = 0xbd7; + return $sub; + /* telugu */ + case 0xc48: + $sub[0] = 0xc46; + $sub[1] = 0xc56; + return $sub; + /* kannada */ + case 0xcc0: + $sub[0] = 0xcbf; + $sub[1] = 0xcd5; + return $sub; + case 0xcc7: + $sub[0] = 0xcc6; + $sub[1] = 0xcd5; + return $sub; + case 0xcc8: + $sub[0] = 0xcc6; + $sub[1] = 0xcd6; + return $sub; + case 0xcca: + $sub[0] = 0xcc6; + $sub[1] = 0xcc2; + return $sub; + case 0xccb: + $sub[0] = 0xcc6; + $sub[1] = 0xcc2; + $sub[2] = 0xcd5; + return $sub; + /* malayalam */ + case 0xd4a: + $sub[0] = 0xd46; + $sub[1] = 0xd3e; + return $sub; + case 0xd4b: + $sub[0] = 0xd47; + $sub[1] = 0xd3e; + return $sub; + case 0xd4c: + $sub[0] = 0xd46; + $sub[1] = 0xd57; + return $sub; + /* sinhala */ + // NB Some fonts break with these Sinhala decomps (although this is Uniscribe spec) + // Can check if character would be substituted by pstf and only decompose if true + // e.g. if (isset($GSUBdata['pstf'][$ab])) - would need to pass $GSUBdata as parameter to this function + case 0xdda: + $sub[0] = 0xdd9; + $sub[1] = 0xdca; + return $sub; + case 0xddc: + $sub[0] = 0xdd9; + $sub[1] = 0xdcf; + return $sub; + case 0xddd: + $sub[0] = 0xdd9; + $sub[1] = 0xdcf; + $sub[2] = 0xdca; + return $sub; + case 0xdde: + $sub[0] = 0xdd9; + $sub[1] = 0xddf; + return $sub; + /* khmer */ + case 0x17be: + $sub[0] = 0x17c1; + $sub[1] = 0x17be; + return $sub; + case 0x17bf: + $sub[0] = 0x17c1; + $sub[1] = 0x17bf; + return $sub; + case 0x17c0: + $sub[0] = 0x17c1; + $sub[1] = 0x17c0; + return $sub; + + case 0x17c4: + $sub[0] = 0x17c1; + $sub[1] = 0x17c4; + return $sub; + case 0x17c5: + $sub[0] = 0x17c1; + $sub[1] = 0x17c5; + return $sub; + /* tibetan - included here although does not use Inidc shaper in other ways */ + case 0xf73: + $sub[0] = 0xf71; + $sub[1] = 0xf72; + return $sub; + case 0xf75: + $sub[0] = 0xf71; + $sub[1] = 0xf74; + return $sub; + case 0xf76: + $sub[0] = 0xfb2; + $sub[1] = 0xf80; + return $sub; + case 0xf77: + $sub[0] = 0xfb2; + $sub[1] = 0xf81; + return $sub; + case 0xf78: + $sub[0] = 0xfb3; + $sub[1] = 0xf80; + return $sub; + case 0xf79: + $sub[0] = 0xfb3; + $sub[1] = 0xf71; + $sub[2] = 0xf80; + return $sub; + case 0xf81: + $sub[0] = 0xf71; + $sub[1] = 0xf80; + return $sub; + } + return false; + } + + public static function bubble_sort(&$arr, $start, $len) + { + if ($len < 2) { + return; + } + $k = $start + $len - 2; + while ($k >= $start) { + for ($j = $start; $j <= $k; $j++) { + if ($arr[$j]['indic_position'] > $arr[$j + 1]['indic_position']) { + $t = $arr[$j]; + $arr[$j] = $arr[$j + 1]; + $arr[$j + 1] = $t; + } + } + $k--; + } + } +} diff --git a/Mpdf/Shaper/Myanmar.php b/Mpdf/Shaper/Myanmar.php new file mode 100644 index 0000000..9a68eda --- /dev/null +++ b/Mpdf/Shaper/Myanmar.php @@ -0,0 +1,543 @@ +<?php + +namespace Mpdf\Shaper; + +class Myanmar +{ + /* FROM hb-ot-shape-complex-indic-private.hh */ + + // indic_category + const OT_X = 0; + const OT_C = 1; + const OT_V = 2; + const OT_N = 3; + const OT_H = 4; + const OT_ZWNJ = 5; + const OT_ZWJ = 6; + const OT_M = 7; /* Matra or Dependent Vowel */ + const OT_SM = 8; + const OT_VD = 9; + const OT_A = 10; + const OT_NBSP = 11; + const OT_DOTTEDCIRCLE = 12; /* Not in the spec, but special in Uniscribe. /Very very/ special! */ + const OT_RS = 13; /* Register Shifter, used in Khmer OT spec */ + const OT_COENG = 14; + const OT_REPHA = 15; + const OT_RA = 16; /* Not explicitly listed in the OT spec, but used in the grammar. */ + const OT_CM = 17; + + /* FROM hb-ot-shape-complex-myanmar.hh */ + + // myanmar_category + const OT_DB = 3; // same as Indic::OT_N; /* Dot below */ + const OT_GB = 12; // same as Indic::OT_DOTTEDCIRCLE; + const OT_AS = 18; /* Asat */ + const OT_D = 19; /* Digits except zero */ + const OT_D0 = 20; /* Digit zero */ + const OT_MH = 21; /* Various consonant medial types */ + const OT_MR = 22; /* Various consonant medial types */ + const OT_MW = 23; /* Various consonant medial types */ + const OT_MY = 24; /* Various consonant medial types */ + const OT_PT = 25; /* Pwo and other tones */ + + const OT_VABV = 26; + const OT_VBLW = 27; + const OT_VPRE = 28; + const OT_VPST = 29; + const OT_VS = 30; /* Variation selectors */ + + /* Visual positions in a syllable from left to right. */ + /* FROM hb-ot-shape-complex-myanmar-private.hh */ + + // myanmar_position + const POS_START = 0; + + const POS_RA_TO_BECOME_REPH = 1; + const POS_PRE_M = 2; + const POS_PRE_C = 3; + + const POS_BASE_C = 4; + const POS_AFTER_MAIN = 5; + + const POS_ABOVE_C = 6; + + const POS_BEFORE_SUB = 7; + const POS_BELOW_C = 8; + const POS_AFTER_SUB = 9; + + const POS_BEFORE_POST = 10; + const POS_POST_C = 11; + const POS_AFTER_POST = 12; + + const POS_FINAL_C = 13; + const POS_SMVD = 14; + + const POS_END = 15; + + // Based on myanmar_category used to make string to find syllables + // OT_ to string character (using e.g. OT_C from MYANMAR) hb-ot-shape-complex-myanmar-private.hh + public static $myanmar_category_char = [ + 'x', + 'C', + 'V', + 'N', + 'H', + 'Z', + 'J', + 'x', + 'S', + 'x', + 'A', + 'x', + 'D', + 'x', + 'x', + 'x', + 'R', + 'x', + 'a', /* As Asat */ + 'd', /* Digits except zero */ + 'o', /* Digit zero */ + 'k', /* Medial types */ + 'l', /* Medial types */ + 'm', /* Medial types */ + 'n', /* Medial types */ + 'p', /* Pwo and other tones */ + 'v', /* Vowel aboVe */ + 'b', /* Vowel Below */ + 'e', /* Vowel prE */ + 't', /* Vowel posT */ + 's', /* variation Selector */ + ]; + + public static function set_myanmar_properties(&$info) + { + $u = $info['uni']; + $type = self::myanmar_get_categories($u); + $cat = ($type & 0x7F); + $pos = ($type >> 8); + /* + * Re-assign category + * http://www.microsoft.com/typography/OpenTypeDev/myanmar/intro.htm#analyze + */ + if (self::in_range($u, 0xFE00, 0xFE0F)) { + $cat = self::OT_VS; + } elseif ($u == 0x200C) { + $cat = self::OT_ZWNJ; + } elseif ($u == 0x200D) { + $cat = self::OT_ZWJ; + } + + switch ($u) { + case 0x002D: + case 0x00A0: + case 0x00D7: + case 0x2012: + case 0x2013: + case 0x2014: + case 0x2015: + case 0x2022: + case 0x25CC: + case 0x25FB: + case 0x25FC: + case 0x25FD: + case 0x25FE: + $cat = self::OT_GB; + break; + + case 0x1004: + case 0x101B: + case 0x105A: + $cat = self::OT_RA; + break; + + case 0x1032: + case 0x1036: + $cat = self::OT_A; + break; + + case 0x103A: + $cat = self::OT_AS; + break; + + case 0x1041: + case 0x1042: + case 0x1043: + case 0x1044: + case 0x1045: + case 0x1046: + case 0x1047: + case 0x1048: + case 0x1049: + case 0x1090: + case 0x1091: + case 0x1092: + case 0x1093: + case 0x1094: + case 0x1095: + case 0x1096: + case 0x1097: + case 0x1098: + case 0x1099: + $cat = self::OT_D; + break; + + case 0x1040: + $cat = self::OT_D; /* XXX The spec says D0, but Uniscribe doesn't seem to do. */ + break; + + case 0x103E: + case 0x1060: + $cat = self::OT_MH; + break; + + case 0x103C: + $cat = self::OT_MR; + break; + + case 0x103D: + case 0x1082: + $cat = self::OT_MW; + break; + + case 0x103B: + case 0x105E: + case 0x105F: + $cat = self::OT_MY; + break; + + case 0x1063: + case 0x1064: + case 0x1069: + case 0x106A: + case 0x106B: + case 0x106C: + case 0x106D: + case 0xAA7B: + $cat = self::OT_PT; + break; + + case 0x1038: + case 0x1087: + case 0x1088: + case 0x1089: + case 0x108A: + case 0x108B: + case 0x108C: + case 0x108D: + case 0x108F: + case 0x109A: + case 0x109B: + case 0x109C: + $cat = self::OT_SM; + break; + } + + if ($cat == self::OT_M) { + switch ($pos) { + case self::POS_PRE_C: + $cat = self::OT_VPRE; + $pos = self::POS_PRE_M; + break; + case self::POS_ABOVE_C: + $cat = self::OT_VABV; + break; + case self::POS_BELOW_C: + $cat = self::OT_VBLW; + break; + case self::POS_POST_C: + $cat = self::OT_VPST; + break; + } + } + $info['myanmar_category'] = $cat; + $info['myanmar_position'] = $pos; + } + + // syllable_type + const CONSONANT_SYLLABLE = 0; + const BROKEN_CLUSTER = 3; + const NON_MYANMAR_CLUSTER = 4; + + public static function set_syllables(&$o, $s, &$broken_syllables) + { + $ptr = 0; + $syllable_serial = 1; + $broken_syllables = false; + + while ($ptr < strlen($s)) { + $match = ''; + $syllable_length = 1; + $syllable_type = self::NON_MYANMAR_CLUSTER; + // CONSONANT_SYLLABLE Consonant syllable + // From OT spec: + if (preg_match('/^(RaH)?([C|R]|V|d|D)[s]?(H([C|R|V])[s]?)*(H|[a]*[n]?[l]?((m[k]?|k)[a]?)?[e]*[v]*[b]*[A]*(N[a]?)?(t[k]?[a]*[v]*[A]*(N[a]?)?)*(p[A]*(N[a]?)?)*S*[J|Z]?)/', substr($s, $ptr), $ma)) { + $syllable_length = strlen($ma[0]); + $syllable_type = self::CONSONANT_SYLLABLE; + } // BROKEN_CLUSTER syllable + elseif (preg_match('/^(RaH)?s?(H|[a]*[n]?[l]?((m[k]?|k)[a]?)?[e]*[v]*[b]*[A]*(N[a]?)?(t[k]?[a]*[v]*[A]*(N[a]?)?)*(p[A]*(N[a]?)?)*S*[J|Z]?)/', substr($s, $ptr), $ma)) { + if (strlen($ma[0])) { // May match blank + $syllable_length = strlen($ma[0]); + $syllable_type = self::BROKEN_CLUSTER; + $broken_syllables = true; + } + } + for ($i = $ptr; $i < $ptr + $syllable_length; $i++) { + $o[$i]['syllable'] = ($syllable_serial << 4) | $syllable_type; + } + $ptr += $syllable_length; + $syllable_serial++; + if ($syllable_serial == 16) { + $syllable_serial = 1; + } + } + } + + public static function reordering(&$info, $GSUBdata, $broken_syllables, $dottedcircle) + { + if ($broken_syllables && $dottedcircle) { + self::insert_dotted_circles($info, $dottedcircle); + } + $count = count($info); + if (!$count) { + return; + } + $last = 0; + $last_syllable = $info[0]['syllable']; + for ($i = 1; $i < $count; $i++) { + if ($last_syllable != $info[$i]['syllable']) { + self::reordering_syllable($info, $GSUBdata, $last, $i); + $last = $i; + $last_syllable = $info[$last]['syllable']; + } + } + self::reordering_syllable($info, $GSUBdata, $last, $count); + } + + public static function insert_dotted_circles(&$info, $dottedcircle) + { + $idx = 0; + $last_syllable = 0; + while ($idx < count($info)) { + $syllable = $info[$idx]['syllable']; + $syllable_type = ($syllable & 0x0F); + if ($last_syllable != $syllable && $syllable_type == self::BROKEN_CLUSTER) { + $last_syllable = $syllable; + $dottedcircle[0]['syllable'] = $info[$idx]['syllable']; + array_splice($info, $idx, 0, $dottedcircle); + } else { + $idx++; + } + } + // In case of final bloken cluster... + $syllable = $info[$idx]['syllable']; + $syllable_type = ($syllable & 0x0F); + if ($last_syllable != $syllable && $syllable_type == self::BROKEN_CLUSTER) { + $dottedcircle[0]['syllable'] = $info[$idx]['syllable']; + array_splice($info, $idx, 0, $dottedcircle); + } + } + + /* Rules from: + * https://www.microsoft.com/typography/otfntdev/devanot/shaping.aspx */ + + public static function reordering_syllable(&$info, $GSUBdata, $start, $end) + { + /* vowel_syllable: We made the vowels look like consonants. So uses the consonant logic! */ + /* broken_cluster: We already inserted dotted-circles, so just call the standalone_cluster. */ + + $syllable_type = ($info[$start]['syllable'] & 0x0F); + if ($syllable_type == self::NON_MYANMAR_CLUSTER) { + return; + } + if ($syllable_type == self::BROKEN_CLUSTER) { + //if ($uniscribe_bug_compatible) { + /* For dotted-circle, this is what Uniscribe does: + * If dotted-circle is the last glyph, it just does nothing. + * i.e. It doesn't form Reph. */ + if ($info[$end - 1]['myanmar_category'] == self::OT_DOTTEDCIRCLE) { + return; + } + } + + $base = $end; + $has_reph = false; + $limit = $start; + + if (($start + 3 <= $end) && + $info[$start]['myanmar_category'] == self::OT_RA && + $info[$start + 1]['myanmar_category'] == self::OT_AS && + $info[$start + 2]['myanmar_category'] == self::OT_H) { + $limit += 3; + $base = $start; + $has_reph = true; + } + + if (!$has_reph) { + $base = $limit; + } + + for ($i = $limit; $i < $end; $i++) { + if (self::is_consonant($info[$i])) { + $base = $i; + break; + } + } + + + /* Reorder! */ + $i = $start; + for (; $i < $start + ($has_reph ? 3 : 0); $i++) { + $info[$i]['myanmar_position'] = self::POS_AFTER_MAIN; + } + for (; $i < $base; $i++) { + $info[$i]['myanmar_position'] = self::POS_PRE_C; + } + if ($i < $end) { + $info[$i]['myanmar_position'] = self::POS_BASE_C; + $i++; + } + $pos = self::POS_AFTER_MAIN; + /* The following loop may be ugly, but it implements all of + * Myanmar reordering! */ + for (; $i < $end; $i++) { + if ($info[$i]['myanmar_category'] == self::OT_MR) { /* Pre-base reordering */ + $info[$i]['myanmar_position'] = self::POS_PRE_C; + continue; + } + if ($info[$i]['myanmar_position'] < self::POS_BASE_C) { /* Left matra */ + continue; + } + + if ($pos == self::POS_AFTER_MAIN && $info[$i]['myanmar_category'] == self::OT_VBLW) { + $pos = self::POS_BELOW_C; + $info[$i]['myanmar_position'] = $pos; + continue; + } + + if ($pos == self::POS_BELOW_C && $info[$i]['myanmar_category'] == self::OT_A) { + $info[$i]['myanmar_position'] = self::POS_BEFORE_SUB; + continue; + } + if ($pos == self::POS_BELOW_C && $info[$i]['myanmar_category'] == self::OT_VBLW) { + $info[$i]['myanmar_position'] = $pos; + continue; + } + if ($pos == self::POS_BELOW_C && $info[$i]['myanmar_category'] != self::OT_A) { + $pos = self::POS_AFTER_SUB; + $info[$i]['myanmar_position'] = $pos; + continue; + } + $info[$i]['myanmar_position'] = $pos; + } + + + /* Sit tight, rock 'n roll! */ + self::bubble_sort($info, $start, $end - $start); + } + + public static function is_one_of($info, $flags) + { + if (isset($info['is_ligature']) && $info['is_ligature']) { + return false; + } /* If it ligated, all bets are off. */ + return !!(self::FLAG($info['myanmar_category']) & $flags); + } + + /* Vowels and placeholders treated as if they were consonants. */ + + public static function is_consonant($info) + { + return self::is_one_of($info, (self::FLAG(self::OT_C) | self::FLAG(self::OT_CM) | self::FLAG(self::OT_RA) | self::FLAG(self::OT_V) | self::FLAG(self::OT_NBSP) | self::FLAG(self::OT_GB))); + } + +// From hb-private.hh + public static function in_range($u, $lo, $hi) + { + if ((($lo ^ $hi) & $lo) == 0 && (($lo ^ $hi) & $hi) == ($lo ^ $hi) && (($lo ^ $hi) & (($lo ^ $hi) + 1)) == 0) { + return ($u & ~($lo ^ $hi)) == $lo; + } else { + return $lo <= $u && $u <= $hi; + } + } + + // From hb-private.hh + public static function FLAG($x) + { + return (1 << ($x)); + } + + public static function FLAG_RANGE($x, $y) + { + return self::FLAG($y + 1) - self::FLAG($x); + } + + // BELOW from hb-ot-shape-complex-indic.cc + // see INDIC for details + public static $myanmar_table = [ + /* Myanmar (1000..109F) */ + + /* 1000 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* 1008 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* 1010 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* 1018 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* 1020 */ 3841, 3842, 3842, 3842, 3842, 3842, 3842, 3842, + /* 1028 */ 3842, 3842, 3842, 2823, 2823, 1543, 1543, 2055, + /* 1030 */ 2055, 775, 1543, 1543, 1543, 1543, 3848, 3843, + /* 1038 */ 3848, 3844, 1540, 3857, 3857, 3857, 3857, 3841, + /* 1040 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* 1048 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* 1050 */ 3841, 3841, 3842, 3842, 3842, 3842, 2823, 2823, + /* 1058 */ 2055, 2055, 3841, 3841, 3841, 3841, 3857, 3857, + /* 1060 */ 3857, 3841, 2823, 3843, 3843, 3841, 3841, 2823, + /* 1068 */ 2823, 3843, 3843, 3843, 3843, 3843, 3841, 3841, + /* 1070 */ 3841, 1543, 1543, 1543, 1543, 3841, 3841, 3841, + /* 1078 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* 1080 */ 3841, 3841, 3857, 2823, 775, 1543, 1543, 3843, + /* 1088 */ 3843, 3843, 3843, 3843, 3843, 3843, 3841, 3843, + /* 1090 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* 1098 */ 3840, 3840, 3843, 3843, 2823, 1543, 3840, 3840, + /* Myanmar Extended-A (AA60..AA7F) */ + + /* AA60 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* AA68 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* AA70 */ 3840, 3841, 3841, 3841, 3840, 3840, 3840, 3840, + /* AA78 */ 3840, 3840, 3841, 3843, 3840, 3840, 3840, 3840, + ]; + + // from "hb-ot-shape-complex-indic-table.cc" + public static function myanmar_get_categories($u) + { + if (0x1000 <= $u && $u <= 0x109F) { + return self::$myanmar_table[$u - 0x1000 + 0]; // offset 0 for Most "myanmar" + } + if (0xAA60 <= $u && $u <= 0xAA7F) { + return self::$myanmar_table[$u - 0xAA60 + 160]; // offset for extensions + } + if ($u == 0x00A0) { + return 3851; // (ISC_CP | (IMC_x << 8)) + } + if ($u == 0x25CC) { + return 3851; // (ISC_CP | (IMC_x << 8)) + } + return 3840; // (ISC_x | (IMC_x << 8)) + } + + public static function bubble_sort(&$arr, $start, $len) + { + if ($len < 2) { + return; + } + $k = $start + $len - 2; + while ($k >= $start) { + for ($j = $start; $j <= $k; $j++) { + if ($arr[$j]['myanmar_position'] > $arr[$j + 1]['myanmar_position']) { + $t = $arr[$j]; + $arr[$j] = $arr[$j + 1]; + $arr[$j + 1] = $t; + } + } + $k--; + } + } +} diff --git a/Mpdf/Shaper/Sea.php b/Mpdf/Shaper/Sea.php new file mode 100644 index 0000000..40adacc --- /dev/null +++ b/Mpdf/Shaper/Sea.php @@ -0,0 +1,397 @@ +<?php + +namespace Mpdf\Shaper; + +class Sea +{ + // South East Asian shaper + // sea_category + const OT_X = 0; + + const OT_C = 1; + + const OT_IV = 2; # Independent Vowel + + const OT_T = 3; # Tone Marks + + const OT_H = 4; # Halant + + const OT_A = 10; # Anusvara + + const OT_GB = 12; # Generic Base (OT_DOTTEDCIRCLE in Indic) + + const OT_CM = 17; # Consonant Medial + + const OT_MR = 22; # Medial Ra + + const OT_VABV = 26; + + const OT_VBLW = 27; + + const OT_VPRE = 28; + + const OT_VPST = 29; + + // ? From Indic categories + const OT_ZWNJ = 5; + + const OT_ZWJ = 6; + + const OT_M = 7; + + const OT_SM = 8; + + const OT_VD = 9; + + const OT_NBSP = 11; + + const OT_RS = 13; + + const OT_COENG = 14; + + const OT_REPHA = 15; + + const OT_RA = 16; + + /* Visual positions in a syllable from left to right. */ + // sea_position + const POS_START = 0; + + const POS_RA_TO_BECOME_REPH = 1; + + const POS_PRE_M = 2; + + const POS_PRE_C = 3; + + const POS_BASE_C = 4; + + const POS_AFTER_MAIN = 5; + + const POS_ABOVE_C = 6; + + const POS_BEFORE_SUB = 7; + + const POS_BELOW_C = 8; + + const POS_AFTER_SUB = 9; + + const POS_BEFORE_POST = 10; + + const POS_POST_C = 11; + + const POS_AFTER_POST = 12; + + const POS_FINAL_C = 13; + + const POS_SMVD = 14; + + const POS_END = 15; + + // Based on sea_category used to make string to find syllables + // OT_ to string character (using e.g. OT_C from INDIC) hb-ot-shape-complex-sea-private.hh + public static $sea_category_char = [ + 'x', + 'C', + 'V', + 'T', + 'H', + 'x', + 'x', + 'x', + 'x', + 'x', + 'A', + 'x', + 'G', + 'x', + 'x', + 'x', + 'x', + 'M', + 'x', + 'x', + 'x', + 'x', + 'R', + 'x', + 'x', + 'x', + 'a', + 'b', + 'p', + 't', + ]; + + public static function set_sea_properties(&$info, $scriptblock) + { + $u = $info['uni']; + $type = self::sea_get_categories($u); + $cat = ($type & 0x7F); + $pos = ($type >> 8); + + /* + * Re-assign category + */ + // Medial Ra + if ($u == 0x1A55 || $u == 0xAA34) { + $cat = self::OT_MR; + } + + /* + * Re-assign position. + */ + if ($cat == self::OT_M) { // definitely "OT_M" in HarfBuzz - although this does not seem to have been defined ? should be OT_MR + switch ($pos) { + case self::POS_PRE_C: + $cat = self::OT_VPRE; + break; + case self::POS_ABOVE_C: + $cat = self::OT_VABV; + break; + case self::POS_BELOW_C: + $cat = self::OT_VBLW; + break; + case self::POS_POST_C: + $cat = self::OT_VPST; + break; + } + } + + $info['sea_category'] = $cat; + $info['sea_position'] = $pos; + } + + // syllable_type + const CONSONANT_SYLLABLE = 0; + + const BROKEN_CLUSTER = 1; + + const NON_SEA_CLUSTER = 2; + + public static function set_syllables(&$o, $s, &$broken_syllables) + { + $ptr = 0; + $syllable_serial = 1; + $broken_syllables = false; + while ($ptr < strlen($s)) { + $match = ''; + $syllable_length = 1; + $syllable_type = self::NON_SEA_CLUSTER; + + // CONSONANT_SYLLABLE Consonant syllable + if (preg_match('/^(C|V|G)(p|a|b|t|HC|M|R|T|A)*/', substr($s, $ptr), $ma)) { + $syllable_length = strlen($ma[0]); + $syllable_type = self::CONSONANT_SYLLABLE; + } // BROKEN_CLUSTER syllable + elseif (preg_match('/^(p|a|b|t|HC|M|R|T|A)+/', substr($s, $ptr), $ma)) { + $syllable_length = strlen($ma[0]); + $syllable_type = self::BROKEN_CLUSTER; + $broken_syllables = true; + } + + for ($i = $ptr; $i < $ptr + $syllable_length; $i++) { + $o[$i]['syllable'] = ($syllable_serial << 4) | $syllable_type; + } + $ptr += $syllable_length; + $syllable_serial++; + if ($syllable_serial == 16) { + $syllable_serial = 1; + } + } + } + + public static function initial_reordering(&$info, $GSUBdata, $broken_syllables, $scriptblock, $dottedcircle) + { + + if ($broken_syllables && $dottedcircle) { + self::insert_dotted_circles($info, $dottedcircle); + } + + $count = count($info); + if (!$count) { + return; + } + $last = 0; + $last_syllable = $info[0]['syllable']; + for ($i = 1; $i < $count; $i++) { + if ($last_syllable != $info[$i]['syllable']) { + self::initial_reordering_syllable($info, $GSUBdata, $scriptblock, $last, $i); + $last = $i; + $last_syllable = $info[$last]['syllable']; + } + } + self::initial_reordering_syllable($info, $GSUBdata, $scriptblock, $last, $count); + } + + public static function insert_dotted_circles(&$info, $dottedcircle) + { + $idx = 0; + $last_syllable = 0; + while ($idx < count($info)) { + $syllable = $info[$idx]['syllable']; + $syllable_type = ($syllable & 0x0F); + if ($last_syllable != $syllable && $syllable_type == self::BROKEN_CLUSTER) { + $last_syllable = $syllable; + $dottedcircle[0]['syllable'] = $info[$idx]['syllable']; + array_splice($info, $idx, 0, $dottedcircle); + } else { + $idx++; + } + } + } + + public static function initial_reordering_syllable(&$info, $GSUBdata, $scriptblock, $start, $end) + { + /* broken_cluster: We already inserted dotted-circles, so just call the standalone_cluster. */ + + $syllable_type = ($info[$start]['syllable'] & 0x0F); + if ($syllable_type == self::NON_SEA_CLUSTER) { + return; + } + if ($syllable_type == self::BROKEN_CLUSTER) { + /* For dotted-circle, this is what Uniscribe does: + * If dotted-circle is the last glyph, it just does nothing. */ + if ($info[$end - 1]['sea_category'] == self::OT_GB) { + return; + } + } + + $base = $start; + $i = $start; + for (; $i < $base; $i++) { + $info[$i]['sea_position'] = self::POS_PRE_C; + } + if ($i < $end) { + $info[$i]['sea_position'] = self::POS_BASE_C; + $i++; + } + for (; $i < $end; $i++) { + if (isset($info[$i]['sea_category']) && $info[$i]['sea_category'] == self::OT_MR) { /* Pre-base reordering */ + $info[$i]['sea_position'] = self::POS_PRE_C; + continue; + } + if (isset($info[$i]['sea_category']) && $info[$i]['sea_category'] == self::OT_VPRE) { /* Left matra */ + $info[$i]['sea_position'] = self::POS_PRE_M; + continue; + } + $info[$i]['sea_position'] = self::POS_AFTER_MAIN; + } + + /* Sit tight, rock 'n roll! */ + self::bubble_sort($info, $start, $end - $start); + } + + public static function final_reordering(&$info, $GSUBdata, $scriptblock) + { + $count = count($info); + if (!$count) { + return; + } + $last = 0; + $last_syllable = $info[0]['syllable']; + for ($i = 1; $i < $count; $i++) { + if ($last_syllable != $info[$i]['syllable']) { + self::final_reordering_syllable($info, $GSUBdata, $scriptblock, $last, $i); + $last = $i; + $last_syllable = $info[$last]['syllable']; + } + } + self::final_reordering_syllable($info, $GSUBdata, $scriptblock, $last, $count); + } + + public static function final_reordering_syllable(&$info, $GSUBdata, $scriptblock, $start, $end) + { + /* + * Nothing to do here at present! + */ + } + + public static $sea_table = [ + /* New Tai Lue (1980..19DF) */ + + /* 1980 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* 1988 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* 1990 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* 1998 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* 19A0 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* 19A8 */ 3841, 3841, 3841, 3841, 3840, 3840, 3840, 3840, + /* 19B0 */ 2823, 2823, 2823, 2823, 2823, 775, 775, 775, + /* 19B8 */ 2823, 2823, 775, 2823, 2823, 2823, 2823, 2823, + /* 19C0 */ 2823, 3857, 3857, 3857, 3857, 3857, 3857, 3857, + /* 19C8 */ 3843, 3843, 3840, 3840, 3840, 3840, 3840, 3840, + /* 19D0 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* 19D8 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* Tai Tham (1A20..1AAF) */ + + /* 1A20 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* 1A28 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* 1A30 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* 1A38 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* 1A40 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* 1A48 */ 3841, 3841, 3841, 3841, 3841, 3842, 3842, 3842, + /* 1A50 */ 3842, 3842, 3842, 3841, 3841, 3857, 3857, 3857, + /* 1A58 */ 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3840, + /* 1A60 */ 3844, 2823, 1543, 2823, 2823, 1543, 1543, 1543, + /* 1A68 */ 1543, 2055, 2055, 1543, 2055, 2823, 775, 775, + /* 1A70 */ 775, 775, 775, 1543, 1543, 3843, 3843, 3843, + /* 1A78 */ 3843, 3843, 3840, 3840, 3840, 3840, 3840, 3840, + /* 1A80 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* 1A88 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* 1A90 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* 1A98 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* 1AA0 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* 1AA8 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* Cham (AA00..AA5F) */ + + /* AA00 */ 3842, 3842, 3842, 3842, 3842, 3842, 3841, 3841, + /* AA08 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* AA10 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* AA18 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* AA20 */ 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, + /* AA28 */ 3841, 1543, 1543, 1543, 1543, 2055, 1543, 775, + /* AA30 */ 775, 1543, 2055, 3857, 3857, 3857, 3857, 3840, + /* AA38 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* AA40 */ 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, + /* AA48 */ 3857, 3857, 3857, 3857, 3857, 3857, 3840, 3840, + /* AA50 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + /* AA58 */ 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, + ]; + + public static function sea_get_categories($u) + { + if (0x1980 <= $u && $u <= 0x19DF) { + return self::$sea_table[$u - 0x1980]; // offset 0 for New Tai Lue + } + if (0x1A20 <= $u && $u <= 0x1AAF) { + return self::$sea_table[$u - 0x1A20 + 96]; // offset for Tai Tham + } + if (0xAA00 <= $u && $u <= 0xAA5F) { + return self::$sea_table[$u - 0xAA00 + 96 + 144]; // Cham + } + if ($u == 0x00A0) { + return 3851; // (ISC_CP | (IMC_x << 8)) + } + if ($u == 0x25CC) { + return 3851; // (ISC_CP | (IMC_x << 8)) + } + return 3840; // (ISC_x | (IMC_x << 8)) + } + + public static function bubble_sort(&$arr, $start, $len) + { + if ($len < 2) { + return; + } + $k = $start + $len - 2; + while ($k >= $start) { + for ($j = $start; $j <= $k; $j++) { + if ($arr[$j]['sea_position'] > $arr[$j + 1]['sea_position']) { + $t = $arr[$j]; + $arr[$j] = $arr[$j + 1]; + $arr[$j + 1] = $t; + } + } + $k--; + } + } +} diff --git a/Mpdf/SizeConverter.php b/Mpdf/SizeConverter.php new file mode 100644 index 0000000..9ec93fd --- /dev/null +++ b/Mpdf/SizeConverter.php @@ -0,0 +1,161 @@ +<?php + +namespace Mpdf; + +use Psr\Log\LoggerInterface; +use Mpdf\Log\Context as LogContext; + +class SizeConverter implements \Psr\Log\LoggerAwareInterface +{ + + private $dpi; + + private $defaultFontSize; + + /** + * @var \Mpdf\Mpdf + */ + private $mpdf; + + /** + * @var \Psr\Log\LoggerInterface + */ + private $logger; + + public function __construct($dpi, $defaultFontSize, Mpdf $mpdf, LoggerInterface $logger) + { + $this->dpi = $dpi; + $this->defaultFontSize = $defaultFontSize; + $this->mpdf = $mpdf; + $this->logger = $logger; + } + + public function setLogger(LoggerInterface $logger) + { + $this->logger = $logger; + } + + /** + * Depends of maxsize value to make % work properly. Usually maxsize == pagewidth + * For text $maxsize = $fontsize + * Setting e.g. margin % will use maxsize (pagewidth) and em will use fontsize + * + * @param mixed $size + * @param mixed $maxsize + * @param mixed $fontsize + * @param mixed $usefontsize Set false for e.g. margins - will ignore fontsize for % values + * + * @return float Final size in mm + */ + public function convert($size = 5, $maxsize = 0, $fontsize = false, $usefontsize = true) + { + $size = trim(strtolower($size)); + $res = preg_match('/^(?P<size>[-0-9.,]+([eE]\-?[0-9]+)?)?(?P<unit>[%a-z-]+)?$/', $size, $parts); + if (!$res) { + // ignore definition + $this->logger->warning(sprintf('Invalid size representation "%s"', $size), ['context' => LogContext::CSS_SIZE_CONVERSION]); + } + + $unit = !empty($parts['unit']) ? $parts['unit'] : null; + $size = !empty($parts['size']) ? (float) $parts['size'] : 0.0; + + switch ($unit) { + case 'mm': + // do nothing + break; + + case 'cm': + $size *= 10; + break; + + case 'pt': + $size *= 1 / Mpdf::SCALE; + break; + + case 'rem': + $size *= $this->mpdf->default_font_size / Mpdf::SCALE; + break; + + case '%': + if ($fontsize && $usefontsize) { + $size *= $fontsize / 100; + } else { + $size *= $maxsize / 100; + } + break; + + case 'in': + // mm in an inch + $size *= 25.4; + break; + + case 'pc': + // PostScript picas + $size *= 38.1 / 9; + break; + + case 'ex': + // Approximates "ex" as half of font height + $size *= $this->multiplyFontSize($fontsize, $maxsize, 0.5); + break; + + case 'em': + $size *= $this->multiplyFontSize($fontsize, $maxsize, 1); + break; + + case 'thin': + $size = 1 * (25.4 / $this->dpi); + break; + + case 'medium': + $size = 3 * (25.4 / $this->dpi); + // Commented-out dead code from legacy method + // $size *= $this->multiplyFontSize($fontsize, $maxsize, 1); + break; + + case 'thick': + $size = 5 * (25.4 / $this->dpi); // 5 pixel width for table borders + break; + + case 'xx-small': + $size *= $this->multiplyFontSize($fontsize, $maxsize, 0.7); + break; + + case 'x-small': + $size *= $this->multiplyFontSize($fontsize, $maxsize, 0.77); + break; + + case 'small': + $size *= $this->multiplyFontSize($fontsize, $maxsize, 0.86); + break; + + case 'large': + $size *= $this->multiplyFontSize($fontsize, $maxsize, 1.2); + break; + + case 'x-large': + $size *= $this->multiplyFontSize($fontsize, $maxsize, 1.5); + break; + + case 'xx-large': + $size *= $this->multiplyFontSize($fontsize, $maxsize, 2); + break; + + case 'px': + default: + $size *= (25.4 / $this->dpi); + break; + } + + return $size; + } + + private function multiplyFontSize($fontsize, $maxsize, $ratio) + { + if ($fontsize) { + return $fontsize * $ratio; + } + + return $maxsize * $ratio; + } +} diff --git a/Mpdf/Strict.php b/Mpdf/Strict.php new file mode 100644 index 0000000..bab863d --- /dev/null +++ b/Mpdf/Strict.php @@ -0,0 +1,67 @@ +<?php + +namespace Mpdf; + +trait Strict +{ + + /** + * @param string $name method name + * @param array $args arguments + */ + public function __call($name, $args) + { + $class = method_exists($this, $name) ? 'parent' : get_class($this); + throw new \Mpdf\MpdfException("Call to undefined method $class::$name()"); + } + + /** + * @param string $name lowercase method name + * @param array $args arguments + */ + public static function __callStatic($name, $args) + { + $class = get_called_class(); + throw new \Mpdf\MpdfException("Call to undefined static function $class::$name()"); + } + + /** + * @param string $name property name + */ + public function &__get($name) + { + $class = get_class($this); + throw new \Mpdf\MpdfException("Cannot read an undeclared property $class::\$$name"); + } + + /** + * @param string $name property name + * @param mixed $value property value + */ + public function __set($name, $value) + { + $class = get_class($this); + throw new \Mpdf\MpdfException("Cannot write to an undeclared property $class::\$$name"); + } + + /** + * @param string $name property name + * @throws \Kdyby\StrictObjects\\Mpdf\MpdfException + */ + public function __isset($name) + { + $class = get_class($this); + throw new \Mpdf\MpdfException("Cannot read an undeclared property $class::\$$name"); + } + + /** + * @param string $name property name + * @throws \Kdyby\StrictObjects\\Mpdf\MpdfException + */ + public function __unset($name) + { + $class = get_class($this); + throw new \Mpdf\MpdfException("Cannot unset the property $class::\$$name."); + } + +} diff --git a/Mpdf/TTFontFile.php b/Mpdf/TTFontFile.php new file mode 100644 index 0000000..fb5ad1e --- /dev/null +++ b/Mpdf/TTFontFile.php @@ -0,0 +1,4947 @@ +<?php + +namespace Mpdf; + +use Mpdf\Fonts\FontCache; +use Mpdf\Fonts\GlyphOperator; + +// NOTE*** If you change the defined constants below, be sure to delete all temporary font data files in /ttfontdata/ +// to force mPDF to regenerate cached font files. +if (!defined('_OTL_OLD_SPEC_COMPAT_2')) { + define('_OTL_OLD_SPEC_COMPAT_2', true); +} + +// Define the value used in the "head" table of a created TTF file +// 0x74727565 "true" for Mac +// 0x00010000 for Windows +// Either seems to work for a font embedded in a PDF file +// when read by Adobe Reader on a Windows PC(!) +if (!defined('_TTF_MAC_HEADER')) { + define('_TTF_MAC_HEADER', false); +} + +// Recalculate correct metadata/profiles when making subset fonts (not SIP/SMP) +// e.g. xMin, xMax, maxNContours +if (!defined('_RECALC_PROFILE')) { + define('_RECALC_PROFILE', false); +} + +// mPDF 5.7.1 +if (!function_exists('\Mpdf\unicode_hex')) { + function unicode_hex($unicode_dec) + { + return sprintf("%05s", strtoupper(dechex($unicode_dec))); + } +} + +/** + * TTFontFile class + * + * This class is based on The ReportLab Open Source PDF library + * written in Python - http://www.reportlab.com/software/opensource/ + * together with ideas from the OpenOffice source code and others. + * This header must be retained in any redistribution or + * modification of the file. + * + * @author Ian Back <ianb@bpm1.com> + * @license LGPL + */ +class TTFontFile +{ + + use Strict; + + private $fontCache; + + private $fontDescriptor; + + var $GPOSFeatures; + + var $GPOSLookups; + + var $GPOSScriptLang; + + var $MarkAttachmentType; + + var $MarkGlyphSets; + + var $GlyphClassMarks; + + var $GlyphClassLigatures; + + var $GlyphClassBases; + + var $GlyphClassComponents; + + var $GSUBScriptLang; + + var $rtlPUAstr; + + var $fontkey; + + var $useOTL; + + var $maxUni; + + var $sFamilyClass; + + var $sFamilySubClass; + + var $sipset; + + var $smpset; + + var $_pos; + + var $numTables; + + var $searchRange; + + var $entrySelector; + + var $rangeShift; + + var $tables; + + var $otables; + + var $filename; + + var $fh; + + var $glyphPos; + + var $charToGlyph; + + var $ascent; + + var $descent; + + var $lineGap; + + var $hheaascent; + + var $hheadescent; + + var $hhealineGap; + + var $advanceWidthMax; + + var $typoAscender; + + var $typoDescender; + + var $typoLineGap; + + var $usWinAscent; + + var $usWinDescent; + + var $strikeoutSize; + + var $strikeoutPosition; + + var $name; + + var $familyName; + + var $styleName; + + var $fullName; + + var $uniqueFontID; + + var $unitsPerEm; + + var $bbox; + + var $capHeight; + + var $xHeight; + + var $stemV; + + var $italicAngle; + + var $flags; + + var $underlinePosition; + + var $underlineThickness; + + var $charWidths; + + var $defaultWidth; + + var $maxStrLenRead; + + var $numTTCFonts; + + var $TTCFonts; + + var $maxUniChar; + + var $kerninfo; + + var $haskernGPOS; + + var $hassmallcapsGSUB; + + var $codeToGlyph; + + var $glyphdata; + + var $LuCoverage; + + public $panose; + + public $version; + + public $fontRevision; + + public $restrictedUse; + + public $glyphIDtoUni; + + public $glyphToChar; + + public $GSUBFeatures; + + public $GSUBLookups; + + public $GSLuCoverage; + + public function __construct(FontCache $fontCache, $fontDescriptor) + { + $this->fontCache = $fontCache; + $this->fontDescriptor = $fontDescriptor; + + // Maximum size of glyf table to read in as string (otherwise reads each glyph from file) + $this->maxStrLenRead = 200000; + } + + public function getMetrics($file, $fontkey, $TTCfontID = 0, $debug = false, $BMPonly = false, $useOTL = 0) + { + $this->useOTL = $useOTL; + $this->fontkey = $fontkey; + $this->filename = $file; + $this->fh = fopen($file, 'rb'); + + if (!$this->fh) { + throw new \Mpdf\Exception\FontException(sprintf('Unable to open font file "%s"', $file)); + } + + $this->_pos = 0; + $this->charWidths = ''; + $this->glyphPos = []; + $this->charToGlyph = []; + $this->tables = []; + $this->otables = []; + $this->kerninfo = []; + $this->haskernGPOS = []; + $this->hassmallcapsGSUB = []; + $this->ascent = 0; + $this->descent = 0; + $this->lineGap = 0; + $this->hheaascent = 0; + $this->hheadescent = 0; + $this->hhealineGap = 0; + $this->xHeight = 0; + $this->capHeight = 0; + $this->panose = []; + $this->sFamilyClass = 0; + $this->sFamilySubClass = 0; + $this->typoAscender = 0; + $this->typoDescender = 0; + $this->typoLineGap = 0; + $this->usWinAscent = 0; + $this->usWinDescent = 0; + $this->advanceWidthMax = 0; + $this->strikeoutSize = 0; + $this->strikeoutPosition = 0; + $this->numTTCFonts = 0; + $this->TTCFonts = []; + $this->version = $version = $this->read_ulong(); + $this->panose = []; + + if ($version === 0x4F54544F) { + throw new \Mpdf\Exception\FontException('Postscript outlines are not supported'); + } + + if ($version === 0x74746366 && !$TTCfontID) { + throw new \Mpdf\Exception\FontException(sprintf('TTCfontID for a TrueType Collection is not defined in mPDF "fontdata" configuration (%s)', $file)); + } + + if (!in_array($version, [0x00010000, 0x74727565], true) && !$TTCfontID) { + throw new \Mpdf\Exception\FontException(sprintf('Not a TrueType font: version=%s)', $version)); + } + + if ($TTCfontID > 0) { + $this->version = $version = $this->read_ulong(); // TTC Header version now + if (!in_array($version, [0x00010000, 0x00020000], true)) { + throw new \Mpdf\Exception\FontException(sprintf('Error parsing TrueType Collection: version=%s - (%s)', $version, $file)); + } + $this->numTTCFonts = $this->read_ulong(); + for ($i = 1; $i <= $this->numTTCFonts; $i++) { + $this->TTCFonts[$i]['offset'] = $this->read_ulong(); + } + $this->seek($this->TTCFonts[$TTCfontID]['offset']); + $this->version = $version = $this->read_ulong(); // TTFont version again now + } + + $this->readTableDirectory($debug); + $this->extractInfo($debug, $BMPonly, $useOTL); + + fclose($this->fh); + } + + function readTableDirectory($debug = false) + { + $this->numTables = $this->read_ushort(); + $this->searchRange = $this->read_ushort(); + $this->entrySelector = $this->read_ushort(); + $this->rangeShift = $this->read_ushort(); + $this->tables = []; + + for ($i = 0; $i < $this->numTables; $i++) { + $record = []; + $record['tag'] = $this->read_tag(); + $record['checksum'] = [$this->read_ushort(), $this->read_ushort()]; + $record['offset'] = $this->read_ulong(); + $record['length'] = $this->read_ulong(); + $this->tables[$record['tag']] = $record; + } + + if ($debug) { + $this->checksumTables(); + } + } + + function checksumTables() + { + // Check the checksums for all tables + foreach ($this->tables as $t) { + if ($t['length'] > 0 && $t['length'] < $this->maxStrLenRead) { // 1.02 + $table = $this->get_chunk($t['offset'], $t['length']); + $checksum = $this->calcChecksum($table); + if ($t['tag'] === 'head') { + $up = unpack('n*', substr($table, 8, 4)); + $adjustment[0] = $up[1]; + $adjustment[1] = $up[2]; + $checksum = $this->sub32($checksum, $adjustment); + } + $xchecksum = $t['checksum']; + if ($xchecksum != $checksum) { + throw new \Mpdf\Exception\FontException(sprintf('TTF file "%s": invalid checksum %s table: %s (expected %s)', $this->filename, dechex($checksum[0]) . dechex($checksum[1]), $t['tag'], dechex($xchecksum[0]) . dechex($xchecksum[1]))); + } + } + } + } + + function sub32($x, $y) + { + $xlo = $x[1]; + $xhi = $x[0]; + $ylo = $y[1]; + $yhi = $y[0]; + + if ($ylo > $xlo) { + $xlo += 1 << 16; + ++$yhi; + } + $reslo = $xlo - $ylo; + if ($yhi > $xhi) { + $xhi += 1 << 16; + } + $reshi = $xhi - $yhi; + $reshi &= 0xFFFF; + + return [$reshi, $reslo]; + } + + function calcChecksum($data) + { + if (strlen($data) % 4) { + $data .= str_repeat("\0", 4 - (strlen($data) % 4)); + } + + $len = strlen($data); + $hi = 0x0000; + $lo = 0x0000; + + for ($i = 0; $i < $len; $i += 4) { + $hi += (ord($data[$i]) << 8) + ord($data[$i + 1]); + $lo += (ord($data[$i + 2]) << 8) + ord($data[$i + 3]); + $hi += ($lo >> 16) & 0xFFFF; + $lo &= 0xFFFF; + } + + $hi &= 0xFFFF; + + return [$hi, $lo]; + } + + function get_table_pos($tag) + { + if (!isset($this->tables[$tag])) { + return [0, 0]; + } + $offset = $this->tables[$tag]['offset']; + $length = $this->tables[$tag]['length']; + + return [$offset, $length]; + } + + function seek($pos) + { + $this->_pos = $pos; + fseek($this->fh, $this->_pos); + } + + function skip($delta) + { + $this->_pos = $this->_pos + $delta; + fseek($this->fh, $delta, SEEK_CUR); + } + + function seek_table($tag, $offset_in_table = 0) + { + $tpos = $this->get_table_pos($tag); + $this->_pos = $tpos[0] + $offset_in_table; + fseek($this->fh, $this->_pos); + + return $this->_pos; + } + + function read_tag() + { + $this->_pos += 4; + + return fread($this->fh, 4); + } + + function read_short() + { + $this->_pos += 2; + $s = fread($this->fh, 2); + $a = (ord($s[0]) << 8) + ord($s[1]); + if ($a & (1 << 15)) { + $a = ($a - (1 << 16)); + } + + return $a; + } + + function unpack_short($s) + { + $a = (ord($s[0]) << 8) + ord($s[1]); + if ($a & (1 << 15)) { + $a = ($a - (1 << 16)); + } + + return $a; + } + + function read_ushort() + { + $this->_pos += 2; + $s = fread($this->fh, 2); + + return (ord($s[0]) << 8) + ord($s[1]); + } + + function read_ulong() + { + $this->_pos += 4; + $s = fread($this->fh, 4); + + // if large uInt32 as an integer, PHP converts it to -ve + return (ord($s[0]) * 16777216) + (ord($s[1]) << 16) + (ord($s[2]) << 8) + ord($s[3]); // 16777216 = 1<<24 + } + + function get_ushort($pos) + { + fseek($this->fh, $pos); + $s = fread($this->fh, 2); + + return (ord($s[0]) << 8) + ord($s[1]); + } + + function get_ulong($pos) + { + fseek($this->fh, $pos); + $s = fread($this->fh, 4); + + // iF large uInt32 as an integer, PHP converts it to -ve + return (ord($s[0]) * 16777216) + (ord($s[1]) << 16) + (ord($s[2]) << 8) + ord($s[3]); // 16777216 = 1<<24 + } + + function pack_short($val) + { + if ($val < 0) { + $val = abs($val); + $val = ~$val; + ++$val; + } + + return pack('n', $val); + } + + function splice($stream, $offset, $value) + { + return substr($stream, 0, $offset) . $value . substr($stream, $offset + strlen($value)); + } + + function _set_ushort($stream, $offset, $value) + { + $up = pack("n", $value); + + return $this->splice($stream, $offset, $up); + } + + function _set_short($stream, $offset, $val) + { + if ($val < 0) { + $val = abs($val); + $val = ~$val; + $val += 1; + } + $up = pack("n", $val); + + return $this->splice($stream, $offset, $up); + } + + function get_chunk($pos, $length) + { + fseek($this->fh, $pos); + if ($length < 1) { + return ''; + } + + return (fread($this->fh, $length)); + } + + function get_table($tag) + { + list($pos, $length) = $this->get_table_pos($tag); + if ($length == 0) { + return ''; + } + fseek($this->fh, $pos); + + return (fread($this->fh, $length)); + } + + function add($tag, $data) + { + if ($tag === 'head') { + $data = $this->splice($data, 8, "\0\0\0\0"); + } + $this->otables[$tag] = $data; + } + + function getCTG($file, $TTCfontID = 0, $debug = false, $useOTL = false) + { + // Only called if font is not to be used as embedded subset i.e. NOT called for SIP/SMP fonts + $this->useOTL = $useOTL; // mPDF 5.7.1 + $this->filename = $file; + $this->fh = fopen($file, 'rb'); + + if (!$this->fh) { + throw new \Mpdf\Exception\FontException(sprintf('Unable to open file "%s"', $file)); + } + + $this->_pos = 0; + $this->charWidths = ''; + $this->glyphPos = []; + $this->charToGlyph = []; + $this->tables = []; + $this->numTTCFonts = 0; + $this->TTCFonts = []; + $this->skip(4); + + if ($TTCfontID > 0) { + $this->version = $version = $this->read_ulong(); // TTC Header version now + if (!in_array($version, [0x00010000, 0x00020000], true)) { + throw new \Mpdf\Exception\FontException(sprintf("Error parsing TrueType Collection: version=%s (%s)", $version, $file)); + } + $this->numTTCFonts = $this->read_ulong(); + for ($i = 1; $i <= $this->numTTCFonts; $i++) { + $this->TTCFonts[$i]['offset'] = $this->read_ulong(); + } + $this->seek($this->TTCFonts[$TTCfontID]['offset']); + $this->version = $version = $this->read_ulong(); // TTFont version again now + } + $this->readTableDirectory($debug); + + // cmap - Character to glyph index mapping table + $cmap_offset = $this->seek_table('cmap'); + $this->skip(2); + $cmapTableCount = $this->read_ushort(); + $unicode_cmap_offset = 0; + for ($i = 0; $i < $cmapTableCount; $i++) { + $platformID = $this->read_ushort(); + $encodingID = $this->read_ushort(); + $offset = $this->read_ulong(); + $save_pos = $this->_pos; + if ($platformID == 3 && $encodingID == 1) { // Microsoft, Unicode + $format = $this->get_ushort($cmap_offset + $offset); + if ($format == 4) { + $unicode_cmap_offset = $cmap_offset + $offset; + break; + } + } elseif ($platformID == 0) { // Unicode -- assume all encodings are compatible + $format = $this->get_ushort($cmap_offset + $offset); + if ($format == 4) { + $unicode_cmap_offset = $cmap_offset + $offset; + break; + } + } + $this->seek($save_pos); + } + + $glyphToChar = []; + $charToGlyph = []; + $this->getCMAP4($unicode_cmap_offset, $glyphToChar, $charToGlyph); + + // Map Unmapped glyphs - from $numGlyphs + if ($useOTL) { + $this->seek_table("maxp"); + $this->skip(4); + $numGlyphs = $this->read_ushort(); + $bctr = 0xE000; + for ($gid = 1; $gid < $numGlyphs; $gid++) { + if (!isset($glyphToChar[$gid])) { + while (isset($charToGlyph[$bctr])) { + $bctr++; + } // Avoid overwriting a glyph already mapped in PUA + if ($bctr > 0xF8FF) { + throw new \Mpdf\Exception\FontException(sprintf('Font "%s" cannot map all included glyphs into Private Use Area U+E000-U+F8FF; cannot use useOTL on this font', $file)); + } + $glyphToChar[$gid][] = $bctr; + $charToGlyph[$bctr] = $gid; + $bctr++; + } + } + } + + fclose($this->fh); + + return $charToGlyph; + } + + function getTTCFonts($file) + { + $this->filename = $file; + + $this->fh = fopen($file, 'rb'); + if (!$this->fh) { + throw new \Mpdf\Exception\FontException(sprintf('Unable to open file "%s"', $file)); + } + + $this->numTTCFonts = 0; + $this->TTCFonts = []; + $this->version = $version = $this->read_ulong(); + if ($version === 0x74746366) { + $this->version = $version = $this->read_ulong(); // TTC Header version now + if (!in_array($version, [0x00010000, 0x00020000], true)) { + throw new \Mpdf\Exception\FontException(sprintf("Error parsing TrueType Collection: version=%s (%s)", $version, $file)); + } + } else { + throw new \Mpdf\Exception\FontException(sprintf("Not a TrueType Collection: version=%s (%s)", $version, $file)); + } + + $this->numTTCFonts = $this->read_ulong(); + for ($i = 1; $i <= $this->numTTCFonts; $i++) { + $this->TTCFonts[$i]['offset'] = $this->read_ulong(); + } + } + + function extractInfo($debug = false, $BMPonly = false, $useOTL = 0) + { + // Values are all set to 0 or blank at start of getMetrics + // name - Naming table + $name_offset = $this->seek_table("name"); + $format = $this->read_ushort(); + if ($format != 0 && $format != 1) { + throw new \Mpdf\Exception\FontException("Error loading font: Unknown name table format $format for font $this->filename"); + } + + $numRecords = $this->read_ushort(); + $string_data_offset = $name_offset + $this->read_ushort(); + $names = [1 => '', 2 => '', 3 => '', 4 => '', 6 => '']; + $K = array_keys($names); + $nameCount = count($names); + + for ($i = 0; $i < $numRecords; $i++) { + + $platformId = $this->read_ushort(); + $encodingId = $this->read_ushort(); + $languageId = $this->read_ushort(); + $nameId = $this->read_ushort(); + $length = $this->read_ushort(); + $offset = $this->read_ushort(); + + if (!in_array($nameId, $K)) { + continue; + } + + $N = ''; + if ($platformId == 3 && $encodingId == 1 && $languageId == 0x409) { // Microsoft, Unicode, US English, PS Name + $opos = $this->_pos; + $this->seek($string_data_offset + $offset); + if ($length % 2 != 0) { + throw new \Mpdf\Exception\FontException("Error loading font: PostScript name is UTF-16BE string of odd length for font $this->filename"); + } + $length /= 2; + $N = ''; + while ($length > 0) { + $char = $this->read_ushort(); + $N .= (chr($char)); + $length -= 1; + } + $this->_pos = $opos; + $this->seek($opos); + } elseif ($platformId == 1 && $encodingId == 0 && $languageId == 0) { // Macintosh, Roman, English, PS Name + $opos = $this->_pos; + $N = $this->get_chunk($string_data_offset + $offset, $length); + $this->_pos = $opos; + $this->seek($opos); + } + if ($N && $names[$nameId] == '') { + $names[$nameId] = $N; + $nameCount -= 1; + if ($nameCount == 0) { + break; + } + } + } + + if ($names[6]) { + $psName = $names[6]; + } elseif ($names[4]) { + $psName = preg_replace('/ /', '-', $names[4]); + } elseif ($names[1]) { + $psName = preg_replace('/ /', '-', $names[1]); + } else { + $psName = ''; + } + + if (!$psName) { + throw new \Mpdf\Exception\FontException("Error loading font: Could not find PostScript font name '$this->filename'"); + } + + // CHECK IF psName valid (PadaukBook contains illegal characters in Name ID 6 i.e. Postscript Name) + $psNameInvalid = false; + $nameLength = strlen($psName); + for ($i = 0; $i < $nameLength; $i++) { + $c = $psName[$i]; + $oc = ord($c); + if ($oc > 126 || strpos(' [](){}<>/%', $c) !== false) { + //throw new \Mpdf\Exception\FontException("psName=".$psName." contains invalid character ".$c." ie U+".ord(c)); + $psNameInvalid = true; + break; + } + } + + if ($psNameInvalid && $names[4]) { + $psName = preg_replace('/ /', '-', $names[4]); + } + + $this->name = $psName; + if ($names[1]) { + $this->familyName = $names[1]; + } else { + $this->familyName = $psName; + } + if ($names[2]) { + $this->styleName = $names[2]; + } else { + $this->styleName = 'Regular'; + } + if ($names[4]) { + $this->fullName = $names[4]; + } else { + $this->fullName = $psName; + } + if ($names[3]) { + $this->uniqueFontID = $names[3]; + } else { + $this->uniqueFontID = $psName; + } + + if (!$psNameInvalid && $names[6]) { + $this->fullName = $names[6]; + } + + // head - Font header table + $this->seek_table('head'); + if ($debug) { + $ver_maj = $this->read_ushort(); + $ver_min = $this->read_ushort(); + if ($ver_maj != 1) { + throw new \Mpdf\Exception\FontException('Error loading font: Unknown head table version ' . $ver_maj . '.' . $ver_min); + } + $this->fontRevision = $this->read_ushort() . $this->read_ushort(); + + $this->skip(4); + $magic = $this->read_ulong(); + if ($magic !== 0x5F0F3CF5) { + throw new \Mpdf\Exception\FontException('Error loading font: Invalid head table magic ' . $magic); + } + $this->skip(2); + } else { + $this->skip(18); + } + $this->unitsPerEm = $unitsPerEm = $this->read_ushort(); + $scale = 1000 / $unitsPerEm; + $this->skip(16); + $xMin = $this->read_short(); + $yMin = $this->read_short(); + $xMax = $this->read_short(); + $yMax = $this->read_short(); + $this->bbox = [($xMin * $scale), ($yMin * $scale), ($xMax * $scale), ($yMax * $scale)]; + + $this->skip(3 * 2); + $indexToLocFormat = $this->read_ushort(); + $glyphDataFormat = $this->read_ushort(); + if ($glyphDataFormat != 0) { + throw new \Mpdf\Exception\FontException(sprintf('Error loading font: Unknown glyph data format %s', $glyphDataFormat)); + } + + // hhea metrics table + if (isset($this->tables["hhea"])) { + $this->seek_table("hhea"); + $this->skip(4); + $hheaAscender = $this->read_short(); + $hheaDescender = $this->read_short(); + $hheaLineGap = $this->read_short(); + $hheaAdvanceWidthMax = $this->read_ushort(); + $this->hheaascent = ($hheaAscender * $scale); + $this->hheadescent = ($hheaDescender * $scale); + $this->hhealineGap = ($hheaLineGap * $scale); + $this->advanceWidthMax = ($hheaAdvanceWidthMax * $scale); + } + + // OS/2 - OS/2 and Windows metrics table + $use_typo_metrics = false; + if (isset($this->tables["OS/2"])) { + $this->seek_table("OS/2"); + $version = $this->read_ushort(); + $this->skip(2); + $usWeightClass = $this->read_ushort(); + $this->skip(2); + $fsType = $this->read_ushort(); + if ($fsType == 0x0002 || ($fsType & 0x0300) != 0) { + $this->restrictedUse = true; + } + + $this->skip(16); + $yStrikeoutSize = $this->read_short(); + $yStrikeoutPosition = $this->read_short(); + $this->strikeoutSize = ($yStrikeoutSize * $scale); + $this->strikeoutPosition = ($yStrikeoutPosition * $scale); + + $sF = $this->read_short(); + $this->sFamilyClass = ($sF >> 8); + $this->sFamilySubClass = ($sF & 0xFF); + $this->_pos += 10; //PANOSE = 10 byte length + $panose = fread($this->fh, 10); + $this->panose = []; + $panoseLenght = strlen($panose); + for ($p = 0; $p < $panoseLenght; $p++) { + $this->panose[] = ord($panose[$p]); + } + + $this->skip(20); + $fsSelection = $this->read_ushort(); + $use_typo_metrics = (($fsSelection & 0x80) === 0x80); // bit#7 = USE_TYPO_METRICS + $this->skip(4); + + $sTypoAscender = $this->read_short(); + $sTypoDescender = $this->read_short(); + $sTypoLineGap = $this->read_short(); + + if ($sTypoAscender) { + $this->typoAscender = ($sTypoAscender * $scale); + } + if ($sTypoDescender) { + $this->typoDescender = ($sTypoDescender * $scale); + } + if ($sTypoLineGap) { + $this->typoLineGap = ($sTypoLineGap * $scale); + } + + $usWinAscent = $this->read_ushort(); + $usWinDescent = $this->read_ushort(); + if ($usWinAscent) { + $this->usWinAscent = ($usWinAscent * $scale); + } + if ($usWinDescent) { + $this->usWinDescent = ($usWinDescent * $scale); + } + + if ($version > 1) { + $this->skip(8); + $sxHeight = $this->read_short(); + $this->xHeight = ($sxHeight * $scale); + $sCapHeight = $this->read_short(); + $this->capHeight = ($sCapHeight * $scale); + } + } else { + $usWeightClass = 400; + } + $this->stemV = 50 + (int) (($usWeightClass / 65.0) ** 2); + + // FONT DESCRIPTOR METRICS + if ($this->fontDescriptor === 'winTypo') { + $this->ascent = $this->typoAscender; + $this->descent = $this->typoDescender; + $this->lineGap = $this->typoLineGap; + } elseif ($this->fontDescriptor === 'mac') { + $this->ascent = $this->hheaascent; + $this->descent = $this->hheadescent; + $this->lineGap = $this->hhealineGap; + } else { // $this->fontDescriptor === 'win' + $this->ascent = $this->usWinAscent; + $this->descent = -$this->usWinDescent; + $this->lineGap = 0; + + // Special case - if either the winAscent or winDescent are greater than the + // font bounding box yMin yMax, then reduce them accordingly. + // This works with Myanmar Text (Windows 8 version) to give a + // line-height normal that is equivalent to that produced in browsers. + // Also Khmer OS = compatible with MSWord, Wordpad and browser. + if ($this->ascent > $this->bbox[3]) { + $this->ascent = $this->bbox[3]; + } + + if ($this->descent < $this->bbox[1]) { + $this->descent = $this->bbox[1]; + } + + // Override case - if the USE_TYPO_METRICS bit is set on OS/2 fsSelection + // this is telling the font to use the sTypo values and not the usWinAscent values. + // This works as a fix with Cambria Math to give a normal line-height; + // at present, this is the only font I have found with this bit set; + // although note that MS WordPad and windows FF browser uses the big line-height from winAscent + // but Word 2007 get it right + if ($use_typo_metrics && $this->typoAscender) { + $this->ascent = $this->typoAscender; + $this->descent = $this->typoDescender; + $this->lineGap = $this->typoLineGap; + } + } + + // post - PostScript table + $this->seek_table('post'); + if ($debug) { + $ver_maj = $this->read_ushort(); + if ($ver_maj < 1 || $ver_maj > 4) { + throw new \Mpdf\Exception\FontException(sprintf('Error loading font: Unknown post table version %s', $ver_maj)); + } + } else { + $this->skip(4); + } + + $this->italicAngle = $this->read_short() + $this->read_ushort() / 65536.0; + $this->underlinePosition = $this->read_short() * $scale; + $this->underlineThickness = $this->read_short() * $scale; + $isFixedPitch = $this->read_ulong(); + + $this->flags = 4; + + if ($this->italicAngle != 0) { + $this->flags |= 64; + } + if ($usWeightClass >= 600) { + $this->flags |= 262144; + } + if ($isFixedPitch) { + $this->flags |= 1; + } + + // hhea - Horizontal header table + $this->seek_table('hhea'); + if ($debug) { + $ver_maj = $this->read_ushort(); + if ($ver_maj != 1) { + throw new \Mpdf\Exception\FontException(sprintf('Error loading font: Unknown hhea table version %s', $ver_maj)); + } + $this->skip(28); + } else { + $this->skip(32); + } + + $metricDataFormat = $this->read_ushort(); + + if ($metricDataFormat != 0) { + throw new \Mpdf\Exception\FontException(sprintf('Error loading font: Unknown horizontal metric data format "%s"', $metricDataFormat)); + } + + $numberOfHMetrics = $this->read_ushort(); + + if ($numberOfHMetrics == 0) { + throw new \Mpdf\Exception\FontException('Error loading font: Number of horizontal metrics is 0'); + } + + // maxp - Maximum profile table + $this->seek_table('maxp'); + if ($debug) { + $ver_maj = $this->read_ushort(); + if ($ver_maj != 1) { + throw new \Mpdf\Exception\FontException(sprintf('Error loading font: Unknown maxp table version %s', $ver_maj)); + } + } else { + $this->skip(4); + } + $numGlyphs = $this->read_ushort(); + + // cmap - Character to glyph index mapping table + $cmap_offset = $this->seek_table('cmap'); + $this->skip(2); + $cmapTableCount = $this->read_ushort(); + $unicode_cmap_offset = 0; + for ($i = 0; $i < $cmapTableCount; $i++) { + $platformID = $this->read_ushort(); + $encodingID = $this->read_ushort(); + $offset = $this->read_ulong(); + $save_pos = $this->_pos; + if (($platformID == 3 && $encodingID == 1) || $platformID == 0) { // Microsoft, Unicode + $format = $this->get_ushort($cmap_offset + $offset); + if ($format == 4) { + if (!$unicode_cmap_offset) { + $unicode_cmap_offset = $cmap_offset + $offset; + } + if ($BMPonly) { + break; + } + } + } elseif ((($platformID == 3 && $encodingID == 10) || $platformID == 0) && !$BMPonly) { // Microsoft, Unicode Format 12 table HKCS + $format = $this->get_ushort($cmap_offset + $offset); + if ($format == 12) { + $unicode_cmap_offset = $cmap_offset + $offset; + break; + } + } + $this->seek($save_pos); + } + + if (!$unicode_cmap_offset) { + throw new \Mpdf\Exception\FontException(sprintf('Font "%s" does not have cmap for Unicode (platform 3, encoding 1, format 4, or platform 0, any encoding, format 4)', $this->filename)); + } + + $sipset = false; + $smpset = false; + + $this->rtlPUAstr = ''; + $this->GSUBScriptLang = []; + $this->GSUBFeatures = []; + $this->GSUBLookups = []; + $this->GPOSScriptLang = []; + $this->GPOSFeatures = []; + $this->GPOSLookups = []; + $this->glyphIDtoUni = ''; + + // Format 12 CMAP does characters above Unicode BMP i.e. some HKCS characters U+20000 and above + if ($format == 12 && !$BMPonly) { + $this->maxUniChar = 0; + $this->seek($unicode_cmap_offset + 4); + $length = $this->read_ulong(); + $limit = $unicode_cmap_offset + $length; + $this->skip(4); + + $nGroups = $this->read_ulong(); + + $glyphToChar = []; + $charToGlyph = []; + for ($i = 0; $i < $nGroups; $i++) { + $startCharCode = $this->read_ulong(); + $endCharCode = $this->read_ulong(); + $startGlyphCode = $this->read_ulong(); + // ZZZ98 + if ($endCharCode > 0x20000 && $endCharCode < 0x2FFFF) { + $sipset = true; + } elseif ($endCharCode > 0x10000 && $endCharCode < 0x1FFFF) { + $smpset = true; + } + $offset = 0; + for ($unichar = $startCharCode; $unichar <= $endCharCode; $unichar++) { + $glyph = $startGlyphCode + $offset; + $offset++; + // ZZZ98 + if ($unichar < 0x30000) { + $charToGlyph[$unichar] = $glyph; + $this->maxUniChar = max($unichar, $this->maxUniChar); + $glyphToChar[$glyph][] = $unichar; + } + } + } + } else { + $glyphToChar = []; + $charToGlyph = []; + $this->getCMAP4($unicode_cmap_offset, $glyphToChar, $charToGlyph); + } + $this->sipset = $sipset; + $this->smpset = $smpset; + + // Map Unmapped glyphs (or glyphs mapped to upper PUA U+F00000 onwards i.e. > U+2FFFF) - from $numGlyphs + if ($this->useOTL) { + + $bctr = 0xE000; + + for ($gid = 1; $gid < $numGlyphs; $gid++) { + + if (!isset($glyphToChar[$gid])) { + + while (isset($charToGlyph[$bctr])) { + $bctr++; + } + + // Avoid overwriting a glyph already mapped in PUA + // ZZZ98 + if (($bctr > 0xF8FF) && ($bctr < 0x2CEB0)) { + if (!$BMPonly) { + $bctr = 0x2CEB0; // Use unassigned area 0x2CEB0 to 0x2F7FF (space for 10,000 characters) + $this->sipset = $sipset = true; // forces subsetting; also ensure charwidths are saved + while (isset($charToGlyph[$bctr])) { + $bctr++; + } + } else { + throw new \Mpdf\Exception\FontException(sprintf('The font "%s" does not have enough space to map all (unmapped) included glyphs into Private Use Area U+E000-U+F8FF', $names[1])); + } + } + + $glyphToChar[$gid][] = $bctr; + $charToGlyph[$bctr] = $gid; + $this->maxUniChar = max($bctr, $this->maxUniChar); + $bctr++; + } + } + } + + $this->glyphToChar = $glyphToChar; + + $this->GSUBScriptLang = []; + $this->rtlPUAstr = ''; + if ($useOTL) { + $this->_getGDEFtables(); + list($this->GSUBScriptLang, $this->GSUBFeatures, $this->GSUBLookups, $this->rtlPUAstr) = $this->_getGSUBtables(); + list($this->GPOSScriptLang, $this->GPOSFeatures, $this->GPOSLookups) = $this->_getGPOStables(); + $this->glyphIDtoUni = str_pad('', 256 * 256 * 3, "\x00"); + foreach ($glyphToChar as $gid => $arr) { + if (isset($glyphToChar[$gid][0])) { + $char = $glyphToChar[$gid][0]; + + if ($char != 0 && $char != 65535) { + $this->glyphIDtoUni[$gid * 3] = chr($char >> 16); + $this->glyphIDtoUni[$gid * 3 + 1] = chr(($char >> 8) & 0xFF); + $this->glyphIDtoUni[$gid * 3 + 2] = chr($char & 0xFF); + } + } + } + } + + // if xHeight and/or CapHeight are not available from OS/2 (e.g. eraly versions) + // Calculate from yMax of 'x' or 'H' Glyphs... + if ($this->xHeight == 0) { + if (isset($charToGlyph[0x78])) { + $gidx = $charToGlyph[0x78]; // U+0078 (LATIN SMALL LETTER X) + $start = $this->seek_table('loca'); + if ($indexToLocFormat == 0) { + $this->skip($gidx * 2); + $locax = $this->read_ushort() * 2; + } elseif ($indexToLocFormat == 1) { + $this->skip($gidx * 4); + $locax = $this->read_ulong(); + } + $start = $this->seek_table('glyf'); + $this->skip($locax); + $this->skip(8); + $yMaxx = $this->read_short(); + $this->xHeight = $yMaxx * $scale; + } + } + + if ($this->capHeight == 0) { + if (isset($charToGlyph[0x48])) { + $gidH = $charToGlyph[0x48]; // U+0048 (LATIN CAPITAL LETTER H) + $start = $this->seek_table('loca'); + if ($indexToLocFormat == 0) { + $this->skip($gidH * 2); + $locaH = $this->read_ushort() * 2; + } elseif ($indexToLocFormat == 1) { + $this->skip($gidH * 4); + $locaH = $this->read_ulong(); + } + $start = $this->seek_table('glyf'); + $this->skip($locaH); + $this->skip(8); + $yMaxH = $this->read_short(); + $this->capHeight = $yMaxH * $scale; + } else { + $this->capHeight = $this->ascent; + } + // final default is to set it = to Ascent + } + + // hmtx - Horizontal metrics table + $this->getHMTX($numberOfHMetrics, $numGlyphs, $glyphToChar, $scale); + + // kern - Kerning pair table + // Recognises old form of Kerning table - as required by Windows - Format 0 only + $kern_offset = $this->seek_table("kern"); + $version = $this->read_ushort(); + $nTables = $this->read_ushort(); + + // subtable header + $sversion = $this->read_ushort(); + $slength = $this->read_ushort(); + $scoverage = $this->read_ushort(); + $format = $scoverage >> 8; + if ($kern_offset && $version == 0 && $format == 0) { + // Format 0 + $nPairs = $this->read_ushort(); + $this->skip(6); + for ($i = 0; $i < $nPairs; $i++) { + $left = $this->read_ushort(); + $right = $this->read_ushort(); + $val = $this->read_short(); + if (isset($glyphToChar[$left]) && count($glyphToChar[$left]) == 1 && isset($glyphToChar[$right]) && count($glyphToChar[$right]) == 1) { + if ($left != 32 && $right != 32) { + $this->kerninfo[$glyphToChar[$left][0]][$glyphToChar[$right][0]] = intval($val * $scale); + } + } + } + } + } + + function _getGDEFtables() + { + // http://www.microsoft.com/typography/otspec/gdef.htm + if (isset($this->tables["GDEF"])) { + $gdef_offset = $this->seek_table("GDEF"); + + // ULONG Version of the GDEF table-currently 0x00010000 + $ver_maj = $this->read_ushort(); + $ver_min = $this->read_ushort(); + $GlyphClassDef_offset = $this->read_ushort(); + $AttachList_offset = $this->read_ushort(); + $LigCaretList_offset = $this->read_ushort(); + $MarkAttachClassDef_offset = $this->read_ushort(); + + // Version 0x00010002 of GDEF header contains additional Offset to a list defining mark glyph set definitions (MarkGlyphSetDef) + if ($ver_min == 2) { + $MarkGlyphSetsDef_offset = $this->read_ushort(); + } + + // GlyphClassDef + if ($GlyphClassDef_offset) { + + $this->seek($gdef_offset + $GlyphClassDef_offset); + // 1 Base glyph (single character, spacing glyph) + // 2 Ligature glyph (multiple character, spacing glyph) + // 3 Mark glyph (non-spacing combining glyph) + // 4 Component glyph (part of single character, spacing glyph) + $GlyphByClass = $this->_getClassDefinitionTable(); + } else { + $GlyphByClass = []; + } + + if (isset($GlyphByClass[1]) && count($GlyphByClass[1]) > 0) { + $this->GlyphClassBases = ' ' . implode('| ', $GlyphByClass[1]); + } else { + $this->GlyphClassBases = ''; + } + if (isset($GlyphByClass[2]) && count($GlyphByClass[2]) > 0) { + $this->GlyphClassLigatures = ' ' . implode('| ', $GlyphByClass[2]); + } else { + $this->GlyphClassLigatures = ''; + } + if (isset($GlyphByClass[3]) && count($GlyphByClass[3]) > 0) { + $this->GlyphClassMarks = ' ' . implode('| ', $GlyphByClass[3]); + } else { + $this->GlyphClassMarks = ''; + } + if (isset($GlyphByClass[4]) && count($GlyphByClass[4]) > 0) { + $this->GlyphClassComponents = ' ' . implode('| ', $GlyphByClass[4]); + } else { + $this->GlyphClassComponents = ''; + } + + if (isset($GlyphByClass[3]) && count($GlyphByClass[3]) > 0) { + $Marks = $GlyphByClass[3]; + } else { // to use for MarkAttachmentType + $Marks = []; + } + + /* Required for GPOS + // Attachment List + if ($AttachList_offset) { + $this->seek($gdef_offset+$AttachList_offset ); + } + The Attachment Point List table (AttachmentList) identifies all the attachment points defined in the GPOS table and their associated glyphs so a client can quickly access coordinates for each glyph's attachment points. As a result, the client can cache coordinates for attachment points along with glyph bitmaps and avoid recalculating the attachment points each time it displays a glyph. Without this table, processing speed would be slower because the client would have to decode the GPOS lookups that define attachment points and compile the points in a list. + + The Attachment List table (AttachList) may be used to cache attachment point coordinates along with glyph bitmaps. + + The table consists of an offset to a Coverage table (Coverage) listing all glyphs that define attachment points in the GPOS table, a count of the glyphs with attachment points (GlyphCount), and an array of offsets to AttachPoint tables (AttachPoint). The array lists the AttachPoint tables, one for each glyph in the Coverage table, in the same order as the Coverage Index. + AttachList table + Type Name Description + Offset Coverage Offset to Coverage table - from beginning of AttachList table + uint16 GlyphCount Number of glyphs with attachment points + Offset AttachPoint[GlyphCount] Array of offsets to AttachPoint tables-from beginning of AttachList table-in Coverage Index order + + An AttachPoint table consists of a count of the attachment points on a single glyph (PointCount) and an array of contour indices of those points (PointIndex), listed in increasing numerical order. + + AttachPoint table + Type Name Description + uint16 PointCount Number of attachment points on this glyph + uint16 PointIndex[PointCount] Array of contour point indices -in increasing numerical order + + See Example 3 - http://www.microsoft.com/typography/otspec/gdef.htm + */ + + // Ligature Caret List + // The Ligature Caret List table (LigCaretList) defines caret positions for all the ligatures in a font. + // Not required for mDPF + // MarkAttachmentType + if ($MarkAttachClassDef_offset) { + $this->seek($gdef_offset + $MarkAttachClassDef_offset); + $MarkAttachmentTypes = $this->_getClassDefinitionTable(); + foreach ($MarkAttachmentTypes as $class => $glyphs) { + if (is_array($Marks) && count($Marks)) { + $mat = array_diff($Marks, $MarkAttachmentTypes[$class]); + sort($mat, SORT_STRING); + } else { + $mat = []; + } + + $this->MarkAttachmentType[$class] = ' ' . implode('| ', $mat); + } + } else { + $this->MarkAttachmentType = []; + } + + // MarkGlyphSets only in Version 0x00010002 of GDEF + if ($ver_min == 2 && $MarkGlyphSetsDef_offset) { + $this->seek($gdef_offset + $MarkGlyphSetsDef_offset); + $MarkSetTableFormat = $this->read_ushort(); + $MarkSetCount = $this->read_ushort(); + $MarkSetOffset = []; + for ($i = 0; $i < $MarkSetCount; $i++) { + $MarkSetOffset[] = $this->read_ulong(); + } + for ($i = 0; $i < $MarkSetCount; $i++) { + $this->seek($MarkSetOffset[$i]); + $glyphs = $this->_getCoverage(); + $this->MarkGlyphSets[$i] = ' ' . implode('| ', $glyphs); + } + } else { + $this->MarkGlyphSets = []; + } + } else { + throw new \Mpdf\Exception\FontException(sprintf('Unable to set font "%s" to use OTL as it does not include OTL tables (or at least not a GDEF table).', $this->filename)); + } + + $GSUB_offset = 0; + $GPOS_offset = 0; + $GSUB_length = 0; + + $s = ''; + + if (isset($this->tables['GSUB'])) { + $GSUB_offset = $this->seek_table('GSUB'); + $GSUB_length = $this->tables['GSUB']['length']; + $s .= fread($this->fh, $this->tables['GSUB']['length']); + } + + if (isset($this->tables['GPOS'])) { + $GPOS_offset = $this->seek_table('GPOS'); + $s .= fread($this->fh, $this->tables['GPOS']['length']); + } + + if ($s) { + $this->fontCache->write($this->fontkey . '.GSUBGPOStables.dat', $s); + } + + $font = [ + 'GSUB_offset' => $GSUB_offset, + 'GPOS_offset' => $GPOS_offset, + 'GSUB_length' => $GSUB_length, + 'GlyphClassBases' => $this->GlyphClassBases, + 'GlyphClassMarks' => $this->GlyphClassMarks, + 'GlyphClassLigatures' => $this->GlyphClassLigatures, + 'GlyphClassComponents' => $this->GlyphClassComponents, + 'MarkGlyphSets' => $this->MarkGlyphSets, + 'MarkAttachmentType' => $this->MarkAttachmentType, + ]; + + $this->fontCache->jsonWrite($this->fontkey . '.GDEFdata.json', $font); + } + + function _getClassDefinitionTable() + { + // NB Any glyph not included in the range of covered GlyphIDs automatically belongs to Class 0. This is not returned by this function + $ClassFormat = $this->read_ushort(); + $GlyphByClass = []; + + if ($ClassFormat == 1) { + $StartGlyph = $this->read_ushort(); + $GlyphCount = $this->read_ushort(); + for ($i = 0; $i < $GlyphCount; $i++) { + $gid = $StartGlyph + $i; + $class = $this->read_ushort(); + // Several fonts (mainly dejavu.../Freeserif etc) have a MarkAttachClassDef Format 1, where StartGlyph is 0 and GlyphCount is 1 + // This doesn't seem to do anything useful? + // Freeserif does not have $this->glyphToChar[0] allocated and would throw an error, so check if isset: + if (isset($this->glyphToChar[$gid][0])) { + $GlyphByClass[$class][] = unicode_hex($this->glyphToChar[$gid][0]); + } + } + } elseif ($ClassFormat == 2) { + $tableCount = $this->read_ushort(); + for ($i = 0; $i < $tableCount; $i++) { + $startGlyphID = $this->read_ushort(); + $endGlyphID = $this->read_ushort(); + $class = $this->read_ushort(); + for ($gid = $startGlyphID; $gid <= $endGlyphID; $gid++) { + if (isset($this->glyphToChar[$gid][0])) { + $GlyphByClass[$class][] = unicode_hex($this->glyphToChar[$gid][0]); + } + } + } + } + foreach ($GlyphByClass as $class => $glyphs) { + sort($GlyphByClass[$class], SORT_STRING); // SORT makes it easier to read in development ? order not important ??? + } + ksort($GlyphByClass); + + return $GlyphByClass; + } + + /** + * GSUB - Glyph Substitution + */ + function _getGSUBtables() + { + if (!isset($this->tables['GSUB'])) { + return [[], [], [], '']; + } + + $ffeats = []; + $gsub_offset = $this->seek_table('GSUB'); + $this->skip(4); + $ScriptList_offset = $gsub_offset + $this->read_ushort(); + $FeatureList_offset = $gsub_offset + $this->read_ushort(); + $LookupList_offset = $gsub_offset + $this->read_ushort(); + + // ScriptList + $this->seek($ScriptList_offset); + $ScriptCount = $this->read_ushort(); + for ($i = 0; $i < $ScriptCount; $i++) { + $ScriptTag = $this->read_tag(); // = "beng", "deva" etc. + $ScriptTableOffset = $this->read_ushort(); + $ffeats[$ScriptTag] = $ScriptList_offset + $ScriptTableOffset; + } + + // Script Table + foreach ($ffeats as $t => $o) { + $ls = []; + $this->seek($o); + $DefLangSys_offset = $this->read_ushort(); + if ($DefLangSys_offset > 0) { + $ls['DFLT'] = $DefLangSys_offset + $o; + } + $LangSysCount = $this->read_ushort(); + for ($i = 0; $i < $LangSysCount; $i++) { + $LangTag = $this->read_tag(); // = + $LangTableOffset = $this->read_ushort(); + $ls[$LangTag] = $o + $LangTableOffset; + } + $ffeats[$t] = $ls; + } + + // Get FeatureIndexList + // LangSys Table - from first listed langsys + foreach ($ffeats as $st => $scripts) { + foreach ($scripts as $t => $o) { + $FeatureIndex = []; + $langsystable_offset = $o; + $this->seek($langsystable_offset); + $LookUpOrder = $this->read_ushort(); //==NULL + $ReqFeatureIndex = $this->read_ushort(); + if ($ReqFeatureIndex != 0xFFFF) { + $FeatureIndex[] = $ReqFeatureIndex; + } + $FeatureCount = $this->read_ushort(); + for ($i = 0; $i < $FeatureCount; $i++) { + $FeatureIndex[] = $this->read_ushort(); // = index of feature + } + $ffeats[$st][$t] = $FeatureIndex; + } + } + + // Feauture List => LookupListIndex es + $this->seek($FeatureList_offset); + $FeatureCount = $this->read_ushort(); + $Feature = []; + + for ($i = 0; $i < $FeatureCount; $i++) { + $tag = $this->read_tag(); + if ($tag == 'smcp') { + $this->hassmallcapsGSUB = true; + } + $Feature[$i] = ['tag' => $tag]; + $Feature[$i]['offset'] = $FeatureList_offset + $this->read_ushort(); + } + + for ($i = 0; $i < $FeatureCount; $i++) { + $this->seek($Feature[$i]['offset']); + $this->read_ushort(); // null [FeatureParams] + $Feature[$i]['LookupCount'] = $Lookupcount = $this->read_ushort(); + $Feature[$i]['LookupListIndex'] = []; + for ($c = 0; $c < $Lookupcount; $c++) { + $Feature[$i]['LookupListIndex'][] = $this->read_ushort(); + } + } + + foreach ($ffeats as $st => $scripts) { + foreach ($scripts as $t => $o) { + $FeatureIndex = $ffeats[$st][$t]; + foreach ($FeatureIndex as $k => $fi) { + $ffeats[$st][$t][$k] = $Feature[$fi]; + } + } + } + + $gsub = []; + $GSUBScriptLang = []; + foreach ($ffeats as $st => $scripts) { + foreach ($scripts as $t => $langsys) { + $lg = []; + foreach ($langsys as $ft) { + $lg[$ft['LookupListIndex'][0]] = $ft; + } + // list of Lookups in order they need to be run i.e. order listed in Lookup table + ksort($lg); + foreach ($lg as $ft) { + $gsub[$st][$t][$ft['tag']] = $ft['LookupListIndex']; + } + if (!isset($GSUBScriptLang[$st])) { + $GSUBScriptLang[$st] = ''; + } + $GSUBScriptLang[$st] .= $t . ' '; + } + } + + // Get metadata and offsets for whole Lookup List table + $this->seek($LookupList_offset); + $LookupCount = $this->read_ushort(); + $GSLookup = []; + $Offsets = []; + $SubtableCount = []; + + for ($i = 0; $i < $LookupCount; $i++) { + $Offsets[$i] = $LookupList_offset + $this->read_ushort(); + } + + for ($i = 0; $i < $LookupCount; $i++) { + + $this->seek($Offsets[$i]); + + $GSLookup[$i]['Type'] = $this->read_ushort(); + $GSLookup[$i]['Flag'] = $flag = $this->read_ushort(); + $GSLookup[$i]['SubtableCount'] = $SubtableCount[$i] = $this->read_ushort(); + + for ($c = 0; $c < $SubtableCount[$i]; $c++) { + $GSLookup[$i]['Subtables'][$c] = $Offsets[$i] + $this->read_ushort(); + } + + // MarkFilteringSet = Index (base 0) into GDEF mark glyph sets structure + if (($flag & 0x0010) == 0x0010) { + $GSLookup[$i]['MarkFilteringSet'] = $this->read_ushort(); + } else { + $GSLookup[$i]['MarkFilteringSet'] = ''; + } + + // Lookup Type 7: Extension + if ($GSLookup[$i]['Type'] == 7) { + // Overwrites new offset (32-bit) for each subtable, and a new lookup Type + for ($c = 0; $c < $SubtableCount[$i]; $c++) { + $this->seek($GSLookup[$i]['Subtables'][$c]); + $ExtensionPosFormat = $this->read_ushort(); + $type = $this->read_ushort(); + $ext_offset = $this->read_ulong(); + $GSLookup[$i]['Subtables'][$c] = $GSLookup[$i]['Subtables'][$c] + $ext_offset; + } + $GSLookup[$i]['Type'] = $type; + } + } + + // Process Whole LookupList - Get LuCoverage = Lookup coverage just for first glyph + $this->GSLuCoverage = []; + for ($i = 0; $i < $LookupCount; $i++) { + for ($c = 0; $c < $GSLookup[$i]['SubtableCount']; $c++) { + $this->seek($GSLookup[$i]['Subtables'][$c]); + $PosFormat = $this->read_ushort(); + + if ($GSLookup[$i]['Type'] == 5 && $PosFormat == 3) { + $this->skip(4); + } elseif ($GSLookup[$i]['Type'] == 6 && $PosFormat == 3) { + $BacktrackGlyphCount = $this->read_ushort(); + $this->skip(2 * $BacktrackGlyphCount + 2); + } + + // NB Coverage only looks at glyphs for position 1 (i.e. 5.3 and 6.3) // NEEDS TO READ ALL ******************** + $Coverage = $GSLookup[$i]['Subtables'][$c] + $this->read_ushort(); + $this->seek($Coverage); + $glyphs = $this->_getCoverage(false, 2); + $this->GSLuCoverage[$i][$c] = $glyphs; + } + } + + // $this->GSLuCoverage and $GSLookup + $this->fontCache->jsonWrite($this->fontkey . '.GSUBdata.json', $this->GSLuCoverage); + + // Now repeats as original to get Substitution rules + // Get metadata and offsets for whole Lookup List table + $this->seek($LookupList_offset); + $LookupCount = $this->read_ushort(); + $Lookup = []; + + for ($i = 0; $i < $LookupCount; $i++) { + $Lookup[$i]['offset'] = $LookupList_offset + $this->read_ushort(); + } + + for ($i = 0; $i < $LookupCount; $i++) { + $this->seek($Lookup[$i]['offset']); + $Lookup[$i]['Type'] = $this->read_ushort(); + $Lookup[$i]['Flag'] = $flag = $this->read_ushort(); + $Lookup[$i]['SubtableCount'] = $this->read_ushort(); + for ($c = 0; $c < $Lookup[$i]['SubtableCount']; $c++) { + $Lookup[$i]['Subtable'][$c]['Offset'] = $Lookup[$i]['offset'] + $this->read_ushort(); + } + // MarkFilteringSet = Index (base 0) into GDEF mark glyph sets structure + if (($flag & 0x0010) == 0x0010) { + $Lookup[$i]['MarkFilteringSet'] = $this->read_ushort(); + } else { + $Lookup[$i]['MarkFilteringSet'] = ''; + } + + // Lookup Type 7: Extension + if ($Lookup[$i]['Type'] == 7) { + // Overwrites new offset (32-bit) for each subtable, and a new lookup Type + for ($c = 0; $c < $Lookup[$i]['SubtableCount']; $c++) { + $this->seek($Lookup[$i]['Subtable'][$c]['Offset']); + $ExtensionPosFormat = $this->read_ushort(); + $type = $this->read_ushort(); + $Lookup[$i]['Subtable'][$c]['Offset'] = $Lookup[$i]['Subtable'][$c]['Offset'] + $this->read_ulong(); + } + $Lookup[$i]['Type'] = $type; + } + } + + // Process (1) Whole LookupList + for ($i = 0; $i < $LookupCount; $i++) { + for ($c = 0; $c < $Lookup[$i]['SubtableCount']; $c++) { + $this->seek($Lookup[$i]['Subtable'][$c]['Offset']); + $SubstFormat = $this->read_ushort(); + $Lookup[$i]['Subtable'][$c]['Format'] = $SubstFormat; + + /* + Lookup['Type'] Enumeration table for glyph substitution + Value Type Description + 1 Single Replace one glyph with one glyph + 2 Multiple Replace one glyph with more than one glyph + 3 Alternate Replace one glyph with one of many glyphs + 4 Ligature Replace multiple glyphs with one glyph + 5 Context Replace one or more glyphs in context + 6 Chaining Context Replace one or more glyphs in chained context + 7 Extension Substitution Extension mechanism for other substitutions (i.e. this excludes the Extension type substitution itself) + 8 Reverse chaining context single Applied in reverse order, replace single glyph in chaining context + */ + + // LookupType 1: Single Substitution Subtable + if ($Lookup[$i]['Type'] == 1) { + $Lookup[$i]['Subtable'][$c]['CoverageTableOffset'] = $Lookup[$i]['Subtable'][$c]['Offset'] + $this->read_ushort(); + if ($SubstFormat == 1) { // Calculated output glyph indices + $Lookup[$i]['Subtable'][$c]['DeltaGlyphID'] = $this->read_short(); + } elseif ($SubstFormat == 2) { // Specified output glyph indices + $GlyphCount = $this->read_ushort(); + for ($g = 0; $g < $GlyphCount; $g++) { + $Lookup[$i]['Subtable'][$c]['Glyphs'][] = $this->read_ushort(); + } + } + } // LookupType 2: Multiple Substitution Subtable + elseif ($Lookup[$i]['Type'] == 2) { + $Lookup[$i]['Subtable'][$c]['CoverageTableOffset'] = $Lookup[$i]['Subtable'][$c]['Offset'] + $this->read_ushort(); + $Lookup[$i]['Subtable'][$c]['SequenceCount'] = $SequenceCount = $this->read_short(); + for ($s = 0; $s < $SequenceCount; $s++) { + $Lookup[$i]['Subtable'][$c]['Sequences'][$s]['Offset'] = $Lookup[$i]['Subtable'][$c]['Offset'] + $this->read_short(); + } + for ($s = 0; $s < $SequenceCount; $s++) { + // Sequence Tables + $this->seek($Lookup[$i]['Subtable'][$c]['Sequences'][$s]['Offset']); + $Lookup[$i]['Subtable'][$c]['Sequences'][$s]['GlyphCount'] = $this->read_short(); + for ($g = 0; $g < $Lookup[$i]['Subtable'][$c]['Sequences'][$s]['GlyphCount']; $g++) { + $Lookup[$i]['Subtable'][$c]['Sequences'][$s]['SubstituteGlyphID'][] = $this->read_ushort(); + } + } + } // LookupType 3: Alternate Forms + elseif ($Lookup[$i]['Type'] == 3) { + $Lookup[$i]['Subtable'][$c]['CoverageTableOffset'] = $Lookup[$i]['Subtable'][$c]['Offset'] + $this->read_ushort(); + $Lookup[$i]['Subtable'][$c]['AlternateSetCount'] = $AlternateSetCount = $this->read_short(); + for ($s = 0; $s < $AlternateSetCount; $s++) { + $Lookup[$i]['Subtable'][$c]['AlternateSets'][$s]['Offset'] = $Lookup[$i]['Subtable'][$c]['Offset'] + $this->read_short(); + } + + for ($s = 0; $s < $AlternateSetCount; $s++) { + // AlternateSet Tables + $this->seek($Lookup[$i]['Subtable'][$c]['AlternateSets'][$s]['Offset']); + $Lookup[$i]['Subtable'][$c]['AlternateSets'][$s]['GlyphCount'] = $this->read_short(); + for ($g = 0; $g < $Lookup[$i]['Subtable'][$c]['AlternateSets'][$s]['GlyphCount']; $g++) { + $Lookup[$i]['Subtable'][$c]['AlternateSets'][$s]['SubstituteGlyphID'][] = $this->read_ushort(); + } + } + } // LookupType 4: Ligature Substitution Subtable + elseif ($Lookup[$i]['Type'] == 4) { + $Lookup[$i]['Subtable'][$c]['CoverageTableOffset'] = $Lookup[$i]['Subtable'][$c]['Offset'] + $this->read_ushort(); + $Lookup[$i]['Subtable'][$c]['LigSetCount'] = $LigSetCount = $this->read_short(); + for ($s = 0; $s < $LigSetCount; $s++) { + $Lookup[$i]['Subtable'][$c]['LigSet'][$s]['Offset'] = $Lookup[$i]['Subtable'][$c]['Offset'] + $this->read_short(); + } + for ($s = 0; $s < $LigSetCount; $s++) { + // LigatureSet Tables + $this->seek($Lookup[$i]['Subtable'][$c]['LigSet'][$s]['Offset']); + $Lookup[$i]['Subtable'][$c]['LigSet'][$s]['LigCount'] = $this->read_short(); + for ($g = 0; $g < $Lookup[$i]['Subtable'][$c]['LigSet'][$s]['LigCount']; $g++) { + $Lookup[$i]['Subtable'][$c]['LigSet'][$s]['LigatureOffset'][$g] = $Lookup[$i]['Subtable'][$c]['LigSet'][$s]['Offset'] + $this->read_ushort(); + } + } + for ($s = 0; $s < $LigSetCount; $s++) { + for ($g = 0; $g < $Lookup[$i]['Subtable'][$c]['LigSet'][$s]['LigCount']; $g++) { + // Ligature tables + $this->seek($Lookup[$i]['Subtable'][$c]['LigSet'][$s]['LigatureOffset'][$g]); + $Lookup[$i]['Subtable'][$c]['LigSet'][$s]['Ligature'][$g]['LigGlyph'] = $this->read_ushort(); + $Lookup[$i]['Subtable'][$c]['LigSet'][$s]['Ligature'][$g]['CompCount'] = $this->read_ushort(); + for ($l = 1; $l < $Lookup[$i]['Subtable'][$c]['LigSet'][$s]['Ligature'][$g]['CompCount']; $l++) { + $Lookup[$i]['Subtable'][$c]['LigSet'][$s]['Ligature'][$g]['GlyphID'][$l] = $this->read_ushort(); + } + } + } + } // LookupType 5: Contextual Substitution Subtable + elseif ($Lookup[$i]['Type'] == 5) { + // Format 1: Context Substitution + if ($SubstFormat == 1) { + $Lookup[$i]['Subtable'][$c]['CoverageTableOffset'] = $Lookup[$i]['Subtable'][$c]['Offset'] + $this->read_ushort(); + $Lookup[$i]['Subtable'][$c]['SubRuleSetCount'] = $SubRuleSetCount = $this->read_short(); + for ($s = 0; $s < $SubRuleSetCount; $s++) { + $Lookup[$i]['Subtable'][$c]['SubRuleSet'][$s]['Offset'] = $Lookup[$i]['Subtable'][$c]['Offset'] + $this->read_short(); + } + for ($s = 0; $s < $SubRuleSetCount; $s++) { + // SubRuleSet Tables + $this->seek($Lookup[$i]['Subtable'][$c]['SubRuleSet'][$s]['Offset']); + $Lookup[$i]['Subtable'][$c]['SubRuleSet'][$s]['SubRuleCount'] = $this->read_short(); + for ($g = 0; $g < $Lookup[$i]['Subtable'][$c]['SubRuleSet'][$s]['SubRuleCount']; $g++) { + $Lookup[$i]['Subtable'][$c]['SubRuleSet'][$s]['SubRuleOffset'][$g] = $Lookup[$i]['Subtable'][$c]['SubRuleSet'][$s]['Offset'] + $this->read_ushort(); + } + } + for ($s = 0; $s < $SubRuleSetCount; $s++) { + // SubRule Tables + for ($g = 0; $g < $Lookup[$i]['Subtable'][$c]['SubRuleSet'][$s]['SubRuleCount']; $g++) { + // Ligature tables + $this->seek($Lookup[$i]['Subtable'][$c]['SubRuleSet'][$s]['SubRuleOffset'][$g]); + + $Lookup[$i]['Subtable'][$c]['SubRuleSet'][$s]['SubRule'][$g]['GlyphCount'] = $this->read_ushort(); + $Lookup[$i]['Subtable'][$c]['SubRuleSet'][$s]['SubRule'][$g]['SubstCount'] = $this->read_ushort(); + // "Input"::[GlyphCount - 1]::Array of input GlyphIDs-start with second glyph + for ($l = 1; $l < $Lookup[$i]['Subtable'][$c]['SubRuleSet'][$s]['SubRule'][$g]['GlyphCount']; $l++) { + $Lookup[$i]['Subtable'][$c]['SubRuleSet'][$s]['SubRule'][$g]['Input'][$l] = $this->read_ushort(); + } + // "SubstLookupRecord"::[SubstCount]::Array of SubstLookupRecords-in design order + for ($l = 0; $l < $Lookup[$i]['Subtable'][$c]['SubRuleSet'][$s]['SubRule'][$g]['SubstCount']; $l++) { + $Lookup[$i]['Subtable'][$c]['SubRuleSet'][$s]['SubRule'][$g]['SubstLookupRecord'][$l]['SequenceIndex'] = $this->read_ushort(); + $Lookup[$i]['Subtable'][$c]['SubRuleSet'][$s]['SubRule'][$g]['SubstLookupRecord'][$l]['LookupListIndex'] = $this->read_ushort(); + } + } + } + } // Format 2: Class-based Context Glyph Substitution + elseif ($SubstFormat == 2) { + $Lookup[$i]['Subtable'][$c]['CoverageTableOffset'] = $Lookup[$i]['Subtable'][$c]['Offset'] + $this->read_ushort(); + $Lookup[$i]['Subtable'][$c]['ClassDefOffset'] = $Lookup[$i]['Subtable'][$c]['Offset'] + $this->read_ushort(); + $Lookup[$i]['Subtable'][$c]['SubClassSetCnt'] = $this->read_ushort(); + for ($b = 0; $b < $Lookup[$i]['Subtable'][$c]['SubClassSetCnt']; $b++) { + $offset = $this->read_ushort(); + if ($offset == 0x0000) { + $Lookup[$i]['Subtable'][$c]['SubClassSetOffset'][] = 0; + } else { + $Lookup[$i]['Subtable'][$c]['SubClassSetOffset'][] = $Lookup[$i]['Subtable'][$c]['Offset'] + $offset; + } + } + } else { + throw new \Mpdf\Exception\FontException("GPOS Lookup Type " . $Lookup[$i]['Type'] . ", Format " . $SubstFormat . " not supported (ttfontsuni.php)."); + } + } // LookupType 6: Chaining Contextual Substitution Subtable + elseif ($Lookup[$i]['Type'] == 6) { + // Format 1: Simple Chaining Context Glyph Substitution p255 + if ($SubstFormat == 1) { + $Lookup[$i]['Subtable'][$c]['CoverageTableOffset'] = $Lookup[$i]['Subtable'][$c]['Offset'] + $this->read_ushort(); + $Lookup[$i]['Subtable'][$c]['ChainSubRuleSetCount'] = $this->read_ushort(); + for ($b = 0; $b < $Lookup[$i]['Subtable'][$c]['ChainSubRuleSetCount']; $b++) { + $Lookup[$i]['Subtable'][$c]['ChainSubRuleSetOffset'][] = $Lookup[$i]['Subtable'][$c]['Offset'] + $this->read_ushort(); + } + } // Format 2: Class-based Chaining Context Glyph Substitution p257 + elseif ($SubstFormat == 2) { + $Lookup[$i]['Subtable'][$c]['CoverageTableOffset'] = $Lookup[$i]['Subtable'][$c]['Offset'] + $this->read_ushort(); + $Lookup[$i]['Subtable'][$c]['BacktrackClassDefOffset'] = $Lookup[$i]['Subtable'][$c]['Offset'] + $this->read_ushort(); + $Lookup[$i]['Subtable'][$c]['InputClassDefOffset'] = $Lookup[$i]['Subtable'][$c]['Offset'] + $this->read_ushort(); + $Lookup[$i]['Subtable'][$c]['LookaheadClassDefOffset'] = $Lookup[$i]['Subtable'][$c]['Offset'] + $this->read_ushort(); + $Lookup[$i]['Subtable'][$c]['ChainSubClassSetCnt'] = $this->read_ushort(); + for ($b = 0; $b < $Lookup[$i]['Subtable'][$c]['ChainSubClassSetCnt']; $b++) { + $offset = $this->read_ushort(); + if ($offset == 0x0000) { + $Lookup[$i]['Subtable'][$c]['ChainSubClassSetOffset'][] = $offset; + } else { + $Lookup[$i]['Subtable'][$c]['ChainSubClassSetOffset'][] = $Lookup[$i]['Subtable'][$c]['Offset'] + $offset; + } + } + } // Format 3: Coverage-based Chaining Context Glyph Substitution p259 + elseif ($SubstFormat == 3) { + $Lookup[$i]['Subtable'][$c]['BacktrackGlyphCount'] = $this->read_ushort(); + for ($b = 0; $b < $Lookup[$i]['Subtable'][$c]['BacktrackGlyphCount']; $b++) { + $Lookup[$i]['Subtable'][$c]['CoverageBacktrack'][] = $Lookup[$i]['Subtable'][$c]['Offset'] + $this->read_ushort(); + } + $Lookup[$i]['Subtable'][$c]['InputGlyphCount'] = $this->read_ushort(); + for ($b = 0; $b < $Lookup[$i]['Subtable'][$c]['InputGlyphCount']; $b++) { + $Lookup[$i]['Subtable'][$c]['CoverageInput'][] = $Lookup[$i]['Subtable'][$c]['Offset'] + $this->read_ushort(); + } + $Lookup[$i]['Subtable'][$c]['LookaheadGlyphCount'] = $this->read_ushort(); + for ($b = 0; $b < $Lookup[$i]['Subtable'][$c]['LookaheadGlyphCount']; $b++) { + $Lookup[$i]['Subtable'][$c]['CoverageLookahead'][] = $Lookup[$i]['Subtable'][$c]['Offset'] + $this->read_ushort(); + } + $Lookup[$i]['Subtable'][$c]['SubstCount'] = $this->read_ushort(); + for ($b = 0; $b < $Lookup[$i]['Subtable'][$c]['SubstCount']; $b++) { + $Lookup[$i]['Subtable'][$c]['SubstLookupRecord'][$b]['SequenceIndex'] = $this->read_ushort(); + $Lookup[$i]['Subtable'][$c]['SubstLookupRecord'][$b]['LookupListIndex'] = $this->read_ushort(); + // Substitution Lookup Record + // All contextual substitution subtables specify the substitution data in a Substitution Lookup Record + // (SubstLookupRecord). Each record contains a SequenceIndex, which indicates the position where the substitution + // will occur in the glyph sequence. In addition, a LookupListIndex identifies the lookup to be applied at the + // glyph position specified by the SequenceIndex. + } + } + } else { + throw new \Mpdf\Exception\FontException(sprintf('Lookup Type "%s" not supported.', $Lookup[$i]['Type'])); + } + } + } + + // Process (2) Whole LookupList + // Get Coverage tables and prepare preg_replace + for ($i = 0; $i < $LookupCount; $i++) { + for ($c = 0; $c < $Lookup[$i]['SubtableCount']; $c++) { + $SubstFormat = $Lookup[$i]['Subtable'][$c]['Format']; + + // LookupType 1: Single Substitution Subtable 1 => 1 + if ($Lookup[$i]['Type'] == 1) { + $this->seek($Lookup[$i]['Subtable'][$c]['CoverageTableOffset']); + $glyphs = $this->_getCoverage(false); + for ($g = 0; $g < count($glyphs); $g++) { + $replace = []; + $substitute = []; + $replace[] = unicode_hex($this->glyphToChar[$glyphs[$g]][0]); + // Flag = Ignore + if ($this->_checkGSUBignore($Lookup[$i]['Flag'], $replace[0], $Lookup[$i]['MarkFilteringSet'])) { + continue; + } + if (isset($Lookup[$i]['Subtable'][$c]['DeltaGlyphID'])) { // Format 1 + $substitute[] = unicode_hex($this->glyphToChar[($glyphs[$g] + $Lookup[$i]['Subtable'][$c]['DeltaGlyphID'])][0]); + } else { // Format 2 + $substitute[] = unicode_hex($this->glyphToChar[($Lookup[$i]['Subtable'][$c]['Glyphs'][$g])][0]); + } + $Lookup[$i]['Subtable'][$c]['subs'][] = ['Replace' => $replace, 'substitute' => $substitute]; + } + } // LookupType 2: Multiple Substitution Subtable 1 => n + elseif ($Lookup[$i]['Type'] == 2) { + $this->seek($Lookup[$i]['Subtable'][$c]['CoverageTableOffset']); + $glyphs = $this->_getCoverage(); + for ($g = 0; $g < count($glyphs); $g++) { + $replace = []; + $substitute = []; + $replace[] = $glyphs[$g]; + // Flag = Ignore + if ($this->_checkGSUBignore($Lookup[$i]['Flag'], $replace[0], $Lookup[$i]['MarkFilteringSet'])) { + continue; + } + if (!isset($Lookup[$i]['Subtable'][$c]['Sequences'][$g]['SubstituteGlyphID']) || count($Lookup[$i]['Subtable'][$c]['Sequences'][$g]['SubstituteGlyphID']) == 0) { + continue; + } // Illegal for GlyphCount to be 0; either error in font, or something has gone wrong - lets carry on for now! + foreach ($Lookup[$i]['Subtable'][$c]['Sequences'][$g]['SubstituteGlyphID'] as $sub) { + $substitute[] = unicode_hex($this->glyphToChar[$sub][0]); + } + $Lookup[$i]['Subtable'][$c]['subs'][] = ['Replace' => $replace, 'substitute' => $substitute]; + } + } // LookupType 3: Alternate Forms 1 => 1 (only first alternate form is used) + elseif ($Lookup[$i]['Type'] == 3) { + $this->seek($Lookup[$i]['Subtable'][$c]['CoverageTableOffset']); + $glyphs = $this->_getCoverage(); + for ($g = 0; $g < count($glyphs); $g++) { + $replace = []; + $substitute = []; + $replace[] = $glyphs[$g]; + // Flag = Ignore + if ($this->_checkGSUBignore($Lookup[$i]['Flag'], $replace[0], $Lookup[$i]['MarkFilteringSet'])) { + continue; + } + $gid = $Lookup[$i]['Subtable'][$c]['AlternateSets'][$g]['SubstituteGlyphID'][0]; + if (!isset($this->glyphToChar[$gid][0])) { + continue; + } + $substitute[] = unicode_hex($this->glyphToChar[$gid][0]); + $Lookup[$i]['Subtable'][$c]['subs'][] = ['Replace' => $replace, 'substitute' => $substitute]; + } + } // LookupType 4: Ligature Substitution Subtable n => 1 + elseif ($Lookup[$i]['Type'] == 4) { + $this->seek($Lookup[$i]['Subtable'][$c]['CoverageTableOffset']); + $glyphs = $this->_getCoverage(); + $LigSetCount = $Lookup[$i]['Subtable'][$c]['LigSetCount']; + for ($s = 0; $s < $LigSetCount; $s++) { + for ($g = 0; $g < $Lookup[$i]['Subtable'][$c]['LigSet'][$s]['LigCount']; $g++) { + $replace = []; + $substitute = []; + $replace[] = $glyphs[$s]; + // Flag = Ignore + if ($this->_checkGSUBignore($Lookup[$i]['Flag'], $replace[0], $Lookup[$i]['MarkFilteringSet'])) { + continue; + } + for ($l = 1; $l < $Lookup[$i]['Subtable'][$c]['LigSet'][$s]['Ligature'][$g]['CompCount']; $l++) { + $gid = $Lookup[$i]['Subtable'][$c]['LigSet'][$s]['Ligature'][$g]['GlyphID'][$l]; + $rpl = unicode_hex($this->glyphToChar[$gid][0]); + // Flag = Ignore + if ($this->_checkGSUBignore($Lookup[$i]['Flag'], $rpl, $Lookup[$i]['MarkFilteringSet'])) { + continue 2; + } + $replace[] = $rpl; + } + $gid = $Lookup[$i]['Subtable'][$c]['LigSet'][$s]['Ligature'][$g]['LigGlyph']; + if (!isset($this->glyphToChar[$gid][0])) { + continue; + } + $substitute[] = unicode_hex($this->glyphToChar[$gid][0]); + $Lookup[$i]['Subtable'][$c]['subs'][] = ['Replace' => $replace, 'substitute' => $substitute, 'CompCount' => $Lookup[$i]['Subtable'][$c]['LigSet'][$s]['Ligature'][$g]['CompCount']]; + } + } + } // LookupType 5: Contextual Substitution Subtable + elseif ($Lookup[$i]['Type'] == 5) { + // Format 1: Context Substitution + if ($SubstFormat == 1) { + $this->seek($Lookup[$i]['Subtable'][$c]['CoverageTableOffset']); + $Lookup[$i]['Subtable'][$c]['CoverageGlyphs'] = $CoverageGlyphs = $this->_getCoverage(); + + for ($s = 0; $s < $Lookup[$i]['Subtable'][$c]['SubRuleSetCount']; $s++) { + $SubRuleSet = $Lookup[$i]['Subtable'][$c]['SubRuleSet'][$s]; + $Lookup[$i]['Subtable'][$c]['SubRuleSet'][$s]['FirstGlyph'] = $CoverageGlyphs[$s]; + for ($r = 0; $r < $Lookup[$i]['Subtable'][$c]['SubRuleSet'][$s]['SubRuleCount']; $r++) { + $GlyphCount = $Lookup[$i]['Subtable'][$c]['SubRuleSet'][$s]['SubRule'][$r]['GlyphCount']; + for ($g = 1; $g < $GlyphCount; $g++) { + $glyphID = $Lookup[$i]['Subtable'][$c]['SubRuleSet'][$s]['SubRule'][$r]['Input'][$g]; + $Lookup[$i]['Subtable'][$c]['SubRuleSet'][$s]['SubRule'][$r]['InputGlyphs'][$g] = unicode_hex($this->glyphToChar[$glyphID][0]); + } + } + } + } // Format 2: Class-based Context Glyph Substitution + elseif ($SubstFormat == 2) { + $this->seek($Lookup[$i]['Subtable'][$c]['CoverageTableOffset']); + $Lookup[$i]['Subtable'][$c]['CoverageGlyphs'] = $CoverageGlyphs = $this->_getCoverage(); + + $InputClasses = $this->_getClasses($Lookup[$i]['Subtable'][$c]['ClassDefOffset']); + $Lookup[$i]['Subtable'][$c]['InputClasses'] = $InputClasses; + for ($s = 0; $s < $Lookup[$i]['Subtable'][$c]['SubClassSetCnt']; $s++) { + if ($Lookup[$i]['Subtable'][$c]['SubClassSetOffset'][$s] > 0) { + $this->seek($Lookup[$i]['Subtable'][$c]['SubClassSetOffset'][$s]); + $Lookup[$i]['Subtable'][$c]['SubClassSet'][$s]['SubClassRuleCnt'] = $SubClassRuleCnt = $this->read_ushort(); + $SubClassRule = []; + for ($b = 0; $b < $SubClassRuleCnt; $b++) { + $SubClassRule[$b] = $Lookup[$i]['Subtable'][$c]['SubClassSetOffset'][$s] + $this->read_ushort(); + $Lookup[$i]['Subtable'][$c]['SubClassSet'][$s]['SubClassRule'][$b] = $SubClassRule[$b]; + } + } + } + + for ($s = 0; $s < $Lookup[$i]['Subtable'][$c]['SubClassSetCnt']; $s++) { + if ($Lookup[$i]['Subtable'][$c]['SubClassSetOffset'][$s] > 0) { + $SubClassRuleCnt = $Lookup[$i]['Subtable'][$c]['SubClassSet'][$s]['SubClassRuleCnt']; + for ($b = 0; $b < $SubClassRuleCnt; $b++) { + $this->seek($Lookup[$i]['Subtable'][$c]['SubClassSet'][$s]['SubClassRule'][$b]); + $Rule = []; + $Rule['InputGlyphCount'] = $this->read_ushort(); + $Rule['SubstCount'] = $this->read_ushort(); + for ($r = 1; $r < $Rule['InputGlyphCount']; $r++) { + $Rule['Input'][$r] = $this->read_ushort(); + } + for ($r = 0; $r < $Rule['SubstCount']; $r++) { + $Rule['SequenceIndex'][$r] = $this->read_ushort(); + $Rule['LookupListIndex'][$r] = $this->read_ushort(); + } + + $Lookup[$i]['Subtable'][$c]['SubClassSet'][$s]['SubClassRule'][$b] = $Rule; + } + } + } + } // Format 3: Coverage-based Context Glyph Substitution + elseif ($SubstFormat == 3) { + for ($b = 0; $b < $Lookup[$i]['Subtable'][$c]['InputGlyphCount']; $b++) { + $this->seek($Lookup[$i]['Subtable'][$c]['CoverageInput'][$b]); + $glyphs = $this->_getCoverage(); + $Lookup[$i]['Subtable'][$c]['CoverageInputGlyphs'][] = implode("|", $glyphs); + } + throw new \Mpdf\Exception\FontException("Lookup Type 5, SubstFormat 3 not tested. Please report this with the name of font used - " . $this->fontkey); + } + } // LookupType 6: Chaining Contextual Substitution Subtable + elseif ($Lookup[$i]['Type'] == 6) { + // Format 1: Simple Chaining Context Glyph Substitution p255 + if ($SubstFormat == 1) { + $this->seek($Lookup[$i]['Subtable'][$c]['CoverageTableOffset']); + $Lookup[$i]['Subtable'][$c]['CoverageGlyphs'] = $CoverageGlyphs = $this->_getCoverage(); + + $ChainSubRuleSetCnt = $Lookup[$i]['Subtable'][$c]['ChainSubRuleSetCount']; + + for ($s = 0; $s < $ChainSubRuleSetCnt; $s++) { + $this->seek($Lookup[$i]['Subtable'][$c]['ChainSubRuleSetOffset'][$s]); + $ChainSubRuleCnt = $Lookup[$i]['Subtable'][$c]['ChainSubRuleSet'][$s]['ChainSubRuleCount'] = $this->read_ushort(); + for ($r = 0; $r < $ChainSubRuleCnt; $r++) { + $Lookup[$i]['Subtable'][$c]['ChainSubRuleSet'][$s]['ChainSubRuleOffset'][$r] = $Lookup[$i]['Subtable'][$c]['ChainSubRuleSetOffset'][$s] + $this->read_ushort(); + } + } + for ($s = 0; $s < $ChainSubRuleSetCnt; $s++) { + $ChainSubRuleCnt = $Lookup[$i]['Subtable'][$c]['ChainSubRuleSet'][$s]['ChainSubRuleCount']; + for ($r = 0; $r < $ChainSubRuleCnt; $r++) { + // ChainSubRule + $this->seek($Lookup[$i]['Subtable'][$c]['ChainSubRuleSet'][$s]['ChainSubRuleOffset'][$r]); + + $BacktrackGlyphCount = $Lookup[$i]['Subtable'][$c]['ChainSubRuleSet'][$s]['ChainSubRule'][$r]['BacktrackGlyphCount'] = $this->read_ushort(); + for ($g = 0; $g < $BacktrackGlyphCount; $g++) { + $glyphID = $this->read_ushort(); + $Lookup[$i]['Subtable'][$c]['ChainSubRuleSet'][$s]['ChainSubRule'][$r]['BacktrackGlyphs'][$g] = unicode_hex($this->glyphToChar[$glyphID][0]); + } + + $InputGlyphCount = $Lookup[$i]['Subtable'][$c]['ChainSubRuleSet'][$s]['ChainSubRule'][$r]['InputGlyphCount'] = $this->read_ushort(); + for ($g = 1; $g < $InputGlyphCount; $g++) { + $glyphID = $this->read_ushort(); + $Lookup[$i]['Subtable'][$c]['ChainSubRuleSet'][$s]['ChainSubRule'][$r]['InputGlyphs'][$g] = unicode_hex($this->glyphToChar[$glyphID][0]); + } + + $LookaheadGlyphCount = $Lookup[$i]['Subtable'][$c]['ChainSubRuleSet'][$s]['ChainSubRule'][$r]['LookaheadGlyphCount'] = $this->read_ushort(); + for ($g = 0; $g < $LookaheadGlyphCount; $g++) { + $glyphID = $this->read_ushort(); + $Lookup[$i]['Subtable'][$c]['ChainSubRuleSet'][$s]['ChainSubRule'][$r]['LookaheadGlyphs'][$g] = unicode_hex($this->glyphToChar[$glyphID][0]); + } + + $SubstCount = $Lookup[$i]['Subtable'][$c]['ChainSubRuleSet'][$s]['ChainSubRule'][$r]['SubstCount'] = $this->read_ushort(); + for ($lu = 0; $lu < $SubstCount; $lu++) { + $Lookup[$i]['Subtable'][$c]['ChainSubRuleSet'][$s]['ChainSubRule'][$r]['SequenceIndex'][$lu] = $this->read_ushort(); + $Lookup[$i]['Subtable'][$c]['ChainSubRuleSet'][$s]['ChainSubRule'][$r]['LookupListIndex'][$lu] = $this->read_ushort(); + } + } + } + } // Format 2: Class-based Chaining Context Glyph Substitution p257 + elseif ($SubstFormat == 2) { + $this->seek($Lookup[$i]['Subtable'][$c]['CoverageTableOffset']); + $Lookup[$i]['Subtable'][$c]['CoverageGlyphs'] = $CoverageGlyphs = $this->_getCoverage(); + + $BacktrackClasses = $this->_getClasses($Lookup[$i]['Subtable'][$c]['BacktrackClassDefOffset']); + $Lookup[$i]['Subtable'][$c]['BacktrackClasses'] = $BacktrackClasses; + + $InputClasses = $this->_getClasses($Lookup[$i]['Subtable'][$c]['InputClassDefOffset']); + $Lookup[$i]['Subtable'][$c]['InputClasses'] = $InputClasses; + + $LookaheadClasses = $this->_getClasses($Lookup[$i]['Subtable'][$c]['LookaheadClassDefOffset']); + $Lookup[$i]['Subtable'][$c]['LookaheadClasses'] = $LookaheadClasses; + + for ($s = 0; $s < $Lookup[$i]['Subtable'][$c]['ChainSubClassSetCnt']; $s++) { + if ($Lookup[$i]['Subtable'][$c]['ChainSubClassSetOffset'][$s] > 0) { + $this->seek($Lookup[$i]['Subtable'][$c]['ChainSubClassSetOffset'][$s]); + $Lookup[$i]['Subtable'][$c]['ChainSubClassSet'][$s]['ChainSubClassRuleCnt'] = $ChainSubClassRuleCnt = $this->read_ushort(); + $ChainSubClassRule = []; + for ($b = 0; $b < $ChainSubClassRuleCnt; $b++) { + $ChainSubClassRule[$b] = $Lookup[$i]['Subtable'][$c]['ChainSubClassSetOffset'][$s] + $this->read_ushort(); + $Lookup[$i]['Subtable'][$c]['ChainSubClassSet'][$s]['ChainSubClassRule'][$b] = $ChainSubClassRule[$b]; + } + } + } + + for ($s = 0; $s < $Lookup[$i]['Subtable'][$c]['ChainSubClassSetCnt']; $s++) { + if (isset($Lookup[$i]['Subtable'][$c]['ChainSubClassSet'][$s]['ChainSubClassRuleCnt'])) { + $ChainSubClassRuleCnt = $Lookup[$i]['Subtable'][$c]['ChainSubClassSet'][$s]['ChainSubClassRuleCnt']; + } else { + $ChainSubClassRuleCnt = 0; + } + for ($b = 0; $b < $ChainSubClassRuleCnt; $b++) { + if ($Lookup[$i]['Subtable'][$c]['ChainSubClassSetOffset'][$s] > 0) { + $this->seek($Lookup[$i]['Subtable'][$c]['ChainSubClassSet'][$s]['ChainSubClassRule'][$b]); + $Rule = []; + $Rule['BacktrackGlyphCount'] = $this->read_ushort(); + for ($r = 0; $r < $Rule['BacktrackGlyphCount']; $r++) { + $Rule['Backtrack'][$r] = $this->read_ushort(); + } + $Rule['InputGlyphCount'] = $this->read_ushort(); + for ($r = 1; $r < $Rule['InputGlyphCount']; $r++) { + $Rule['Input'][$r] = $this->read_ushort(); + } + $Rule['LookaheadGlyphCount'] = $this->read_ushort(); + for ($r = 0; $r < $Rule['LookaheadGlyphCount']; $r++) { + $Rule['Lookahead'][$r] = $this->read_ushort(); + } + $Rule['SubstCount'] = $this->read_ushort(); + for ($r = 0; $r < $Rule['SubstCount']; $r++) { + $Rule['SequenceIndex'][$r] = $this->read_ushort(); + $Rule['LookupListIndex'][$r] = $this->read_ushort(); + } + + $Lookup[$i]['Subtable'][$c]['ChainSubClassSet'][$s]['ChainSubClassRule'][$b] = $Rule; + } + } + } + } // Format 3: Coverage-based Chaining Context Glyph Substitution p259 + elseif ($SubstFormat == 3) { + for ($b = 0; $b < $Lookup[$i]['Subtable'][$c]['BacktrackGlyphCount']; $b++) { + $this->seek($Lookup[$i]['Subtable'][$c]['CoverageBacktrack'][$b]); + $glyphs = $this->_getCoverage(); + $Lookup[$i]['Subtable'][$c]['CoverageBacktrackGlyphs'][] = implode("|", $glyphs); + } + for ($b = 0; $b < $Lookup[$i]['Subtable'][$c]['InputGlyphCount']; $b++) { + $this->seek($Lookup[$i]['Subtable'][$c]['CoverageInput'][$b]); + $glyphs = $this->_getCoverage(); + $Lookup[$i]['Subtable'][$c]['CoverageInputGlyphs'][] = implode("|", $glyphs); + // Don't use above value as these are ordered numerically not as need to process + } + for ($b = 0; $b < $Lookup[$i]['Subtable'][$c]['LookaheadGlyphCount']; $b++) { + $this->seek($Lookup[$i]['Subtable'][$c]['CoverageLookahead'][$b]); + $glyphs = $this->_getCoverage(); + $Lookup[$i]['Subtable'][$c]['CoverageLookaheadGlyphs'][] = implode("|", $glyphs); + } + } + } + } + } + + $GSUBScriptLang = []; + $rtlpua = []; // All glyphs added to PUA [for magic_reverse] + foreach ($gsub as $st => $scripts) { + foreach ($scripts as $t => $langsys) { + $lul = []; // array of LookupListIndexes + $tags = []; // corresponding array of feature tags e.g. 'ccmp' + + foreach ($langsys as $tag => $ft) { + foreach ($ft as $ll) { + $lul[$ll] = $tag; + } + } + ksort($lul); // Order the Lookups in the order they are in the GUSB table, regardless of Feature order + $volt = $this->_getGSUBarray($Lookup, $lul, $st); + + // Interrogate $volt + // isol, fin, medi, init(arab syrc) into $rtlSUB for use in ArabJoin + // but also identify all RTL chars in PUA for magic_reverse (arab syrc hebr thaa nko samr) + // identify reph, matras, vatu, half forms etc for Indic for final re-ordering + $rtl = []; + $rtlSUB = []; + $finals = ''; + + if (strpos('arab syrc hebr thaa nko samr', $st) !== false) { // all RTL scripts [any/all languages] ? Mandaic + + foreach ($volt as $v) { + // isol fina fin2 fin3 medi med2 for Syriac + // ISOLATED FORM :: FINAL :: INITIAL :: MEDIAL :: MED2 :: FIN2 :: FIN3 + if (strpos('isol fina init medi fin2 fin3 med2', $v['tag']) !== false) { + + $key = $v['match']; + $key = preg_replace('/[\(\)]*/', '', $key); + $sub = $v['replace']; + if ($v['tag'] === 'isol') { + $kk = 0; + } elseif ($v['tag'] === 'fina') { + $kk = 1; + } elseif ($v['tag'] === 'init') { + $kk = 2; + } elseif ($v['tag'] === 'medi') { + $kk = 3; + } elseif ($v['tag'] === 'med2') { + $kk = 4; + } elseif ($v['tag'] === 'fin2') { + $kk = 5; + } elseif ($v['tag'] === 'fin3') { + $kk = 6; + } + + $rtl[$key][$kk] = $sub; + if (isset($v['prel']) && count($v['prel'])) { + $rtl[$key]['prel'][$kk] = $v['prel']; + } + if (isset($v['postl']) && count($v['postl'])) { + $rtl[$key]['postl'][$kk] = $v['postl']; + } + if (isset($v['ignore']) && $v['ignore']) { + $rtl[$key]['ignore'][$kk] = $v['ignore']; + } + $rtlpua[] = $sub; + + } else { // Add any other glyphs which are in PUA + if (isset($v['context']) && $v['context']) { + foreach ($v['rules'] as $vs) { + $matchCount = count($vs['match']); + for ($i = 0; $i < $matchCount; $i++) { + if (isset($vs['replace'][$i]) && preg_match('/^0[A-F0-9]{4}$/', $vs['match'][$i])) { + if (preg_match('/^0[EF][A-F0-9]{3}$/', $vs['replace'][$i])) { + $rtlpua[] = $vs['replace'][$i]; + } + } + } + } + } else { + preg_match_all('/\((0[A-F0-9]{4})\)/', $v['match'], $m); + $matchCount = count($m[0]); + for ($i = 0; $i < $matchCount; $i++) { + $sb = explode(' ', $v['replace']); + foreach ($sb as $sbg) { + if (preg_match('/(0[EF][A-F0-9]{3})/', $sbg, $mr)) { + $rtlpua[] = $mr[1]; + } + } + } + } + } + } + + // For kashida, need to determine all final forms except ones already identified by kashida priority rules (see \Mpdf\Otl) + foreach ($rtl as $base => $variants) { + if (isset($variants[1])) { // i.e. final form + if (strpos('0FE8E 0FE94 0FEA2 0FEAA 0FEAE 0FEC2 0FEDA 0FEDE 0FB93 0FECA 0FED2 0FED6 0FEEE 0FEF0 0FEF2', $variants[1]) === false) { // not already included + // This version does not exclude RA (0631) FEAE; Ya (064A) FEF2; Alef Maqsurah (0649) FEF0 which + // are selected in priority if connected to a medial Bah + //if (strpos('0FE8E 0FE94 0FEA2 0FEAA 0FEC2 0FEDA 0FEDE 0FB93 0FECA 0FED2 0FED6 0FEEE', $variants[1])===false) { // not already included + $finals .= $variants[1] . ' '; + } + } + } + + ksort($rtl); + $rtlSUB = $rtl; + } + + // INDIC - Dynamic properties + $rphf = []; + $half = []; + $pref = []; + $blwf = []; + $pstf = []; + + if (strpos('dev2 bng2 gur2 gjr2 ory2 tml2 tel2 knd2 mlm2 deva beng guru gujr orya taml telu knda mlym', $st) !== false) { // all INDIC scripts [any/all languages] + if (strpos('deva beng guru gujr orya taml telu knda mlym', $st) !== false) { + $is_old_spec = true; + } else { + $is_old_spec = false; + } + + // First get 'locl' substitutions (reversed!) + $loclsubs = []; + foreach ($volt as $v) { + if (strpos('locl', $v['tag']) !== false) { + $key = $v['match']; + $key = preg_replace('/[\(\)]*/', '', $key); + $sub = $v['replace']; + if ($key && strlen(trim($key)) == 5 && $sub) { + $loclsubs[$sub] = $key; + } + } + } + + foreach ($volt as $v) { + // <rphf> <half> <pref> <blwf> <pstf> + // defines consonant types: + // Reph <rphf> + // Half forms <half> + // Pre-base-reordering forms of Ra/Rra <pref> + // Below-base forms <blwf> + // Post-base forms <pstf> + // applied together with <locl> feature to input sequences consisting of two characters + // This is done for each consonant + // for <rphf> and <half>, features are applied to Consonant + Halant combinations + // for <pref>, <blwf> and <pstf>, features are applied to Halant + Consonant combinations + // Old version eg 'deva' <pref>, <blwf> and <pstf>, features are applied to Consonant + Halant + // Some malformed fonts still do Consonant + Halant for these - so match both?? + // If these two glyphs form a ligature, with no additional glyphs in context + // this means the consonant has the corresponding form + // Currently set to cope with both + // See also classes/otl.php + + if (strpos('rphf half pref blwf pstf', $v['tag']) !== false) { + if (isset($v['context']) && $v['context'] && $v['nBacktrack'] == 0 && $v['nLookahead'] == 0) { + foreach ($v['rules'] as $vs) { + if (count($vs['match']) == 2 && count($vs['replace']) == 1) { + $sub = $vs['replace'][0]; + // If Halant Cons <pref>, <blwf> and <pstf> in New version only + if (strpos('0094D 009CD 00A4D 00ACD 00B4D 00BCD 00C4D 00CCD 00D4D', $vs['match'][0]) !== false && strpos('pref blwf pstf', $v['tag']) !== false && !$is_old_spec) { + $key = $vs['match'][1]; + $tag = $v['tag']; + if (isset($loclsubs[$key])) { + ${$tag[$loclsubs[$key]]} = $sub; + } + $tmp = &$$tag; + $tmp[hexdec($key)] = hexdec($sub); + } // If Cons Halant <rphf> and <half> always + // and <pref>, <blwf> and <pstf> in Old version + elseif (strpos('0094D 009CD 00A4D 00ACD 00B4D 00BCD 00C4D 00CCD 00D4D', $vs['match'][1]) !== false && (strpos('rphf half', $v['tag']) !== false || (strpos('pref blwf pstf', $v['tag']) !== false && ($is_old_spec || _OTL_OLD_SPEC_COMPAT_2)))) { + $key = $vs['match'][0]; + $tag = $v['tag']; + if (isset($loclsubs[$key])) { + ${$tag[$loclsubs[$key]]} = $sub; + } + $tmp = &$$tag; + $tmp[hexdec($key)] = hexdec($sub); + } + } + } + } elseif (!isset($v['context'])) { + $key = $v['match']; + $key = preg_replace('/[\(\)]*/', '', $key); + $sub = $v['replace']; + if ($key && strlen(trim($key)) == 11 && $sub) { + // If Cons Halant <rphf> and <half> always + // and <pref>, <blwf> and <pstf> in Old version + // If Halant Cons <pref>, <blwf> and <pstf> in New version only + if (strpos('0094D 009CD 00A4D 00ACD 00B4D 00BCD 00C4D 00CCD 00D4D', substr($key, 0, 5)) !== false && strpos('pref blwf pstf', $v['tag']) !== false && !$is_old_spec) { + $key = substr($key, 6, 5); + $tag = $v['tag']; + if (isset($loclsubs[$key])) { + ${$tag[$loclsubs[$key]]} = $sub; + } + $tmp = &$$tag; + $tmp[hexdec($key)] = hexdec($sub); + } elseif (strpos('0094D 009CD 00A4D 00ACD 00B4D 00BCD 00C4D 00CCD 00D4D', substr($key, 6, 5)) !== false && (strpos('rphf half', $v['tag']) !== false || (strpos('pref blwf pstf', $v['tag']) !== false && ($is_old_spec || _OTL_OLD_SPEC_COMPAT_2)))) { + $key = substr($key, 0, 5); + $tag = $v['tag']; + if (isset($loclsubs[$key])) { + ${$tag[$loclsubs[$key]]} = $sub; + } + $tmp = &$$tag; + $tmp[hexdec($key)] = hexdec($sub); + } + } + } + } + } + } + + if (count($rtl) || count($rphf) || count($half) || count($pref) || count($blwf) || count($pstf) || $finals) { + $font = [ + 'rtlSUB' => $rtlSUB, + 'finals' => $finals, + 'rphf' => $rphf, + 'half' => $half, + 'pref' => $pref, + 'blwf' => $blwf, + 'pstf' => $pstf, + ]; + + $this->fontCache->jsonWrite($this->fontkey . '.GSUB.' . $st . '.' . $t . '.json', $font); + } + + if (!isset($GSUBScriptLang[$st])) { + $GSUBScriptLang[$st] = ''; + } + $GSUBScriptLang[$st] .= $t . ' '; + } + } + + // All RTL glyphs from font added to (or already in) PUA [reqd for magic_reverse] + $rtlPUAstr = ''; + if (count($rtlpua)) { + $rtlpua = array_unique($rtlpua); + sort($rtlpua); + $n = count($rtlpua); + for ($i = 0; $i < $n; $i++) { + if (hexdec($rtlpua[$i]) < hexdec('E000') || hexdec($rtlpua[$i]) > hexdec('F8FF')) { + unset($rtlpua[$i]); + } + } + sort($rtlpua, SORT_STRING); + + $rangeid = -1; + $range = []; + $prevgid = -2; + + // for each character + foreach ($rtlpua as $gidhex) { + $gid = hexdec($gidhex); + if ($gid == ($prevgid + 1)) { + $range[$rangeid]['end'] = $gidhex; + $range[$rangeid]['count']++; + } else { + // new range + $rangeid++; + $range[$rangeid] = []; + $range[$rangeid]['start'] = $gidhex; + $range[$rangeid]['end'] = $gidhex; + $range[$rangeid]['count'] = 1; + } + $prevgid = $gid; + } + + foreach ($range as $rg) { + if ($rg['count'] == 1) { + $rtlPUAstr .= "\x{" . $rg['start'] . "}"; + } elseif ($rg['count'] == 2) { + $rtlPUAstr .= "\x{" . $rg['start'] . "}\x{" . $rg['end'] . "}"; + } else { + $rtlPUAstr .= "\x{" . $rg['start'] . "}-\x{" . $rg['end'] . "}"; + } + } + } + + return [$GSUBScriptLang, $gsub, $GSLookup, $rtlPUAstr]; + } + + // GSUB functions + function _getGSUBarray(&$Lookup, &$lul, $scripttag) + { + // Process (3) LookupList for specific Script-LangSys + // Generate preg_replace + $volt = []; + $reph = ''; + $matraE = ''; + $vatu = ''; + + foreach ($lul as $i => $tag) { + for ($c = 0; $c < $Lookup[$i]['SubtableCount']; $c++) { + $SubstFormat = $Lookup[$i]['Subtable'][$c]['Format']; + + // LookupType 1: Single Substitution Subtable + if ($Lookup[$i]['Type'] == 1) { + $subCount = count($Lookup[$i]['Subtable'][$c]['subs']); + for ($s = 0; $s < $subCount; $s++) { + $inputGlyphs = $Lookup[$i]['Subtable'][$c]['subs'][$s]['Replace']; + $substitute = $Lookup[$i]['Subtable'][$c]['subs'][$s]['substitute'][0]; + // Ignore has already been applied earlier on + $repl = $this->_makeGSUBinputMatch($inputGlyphs, "()"); + $subs = $this->_makeGSUBinputReplacement(1, $substitute, "()", 0, 1, 0); + $volt[] = ['match' => $repl, 'replace' => $subs, 'tag' => $tag, 'key' => $inputGlyphs[0], 'type' => 1]; + } + } // LookupType 2: Multiple Substitution Subtable + elseif ($Lookup[$i]['Type'] == 2) { + for ($s = 0; $s < count($Lookup[$i]['Subtable'][$c]['subs']); $s++) { + $inputGlyphs = $Lookup[$i]['Subtable'][$c]['subs'][$s]['Replace']; + $substitute = implode(" ", $Lookup[$i]['Subtable'][$c]['subs'][$s]['substitute']); + // Ignore has already been applied earlier on + $repl = $this->_makeGSUBinputMatch($inputGlyphs, "()"); + $subs = $this->_makeGSUBinputReplacement(1, $substitute, "()", 0, 1, 0); + $volt[] = ['match' => $repl, 'replace' => $subs, 'tag' => $tag, 'key' => $inputGlyphs[0], 'type' => 2]; + } + } // LookupType 3: Alternate Forms + elseif ($Lookup[$i]['Type'] == 3) { + for ($s = 0; $s < count($Lookup[$i]['Subtable'][$c]['subs']); $s++) { + $inputGlyphs = $Lookup[$i]['Subtable'][$c]['subs'][$s]['Replace']; + $substitute = $Lookup[$i]['Subtable'][$c]['subs'][$s]['substitute'][0]; + // Ignore has already been applied earlier on + $repl = $this->_makeGSUBinputMatch($inputGlyphs, "()"); + $subs = $this->_makeGSUBinputReplacement(1, $substitute, "()", 0, 1, 0); + $volt[] = ['match' => $repl, 'replace' => $subs, 'tag' => $tag, 'key' => $inputGlyphs[0], 'type' => 3]; + } + } // LookupType 4: Ligature Substitution Subtable + elseif ($Lookup[$i]['Type'] == 4) { + for ($s = 0; $s < count($Lookup[$i]['Subtable'][$c]['subs']); $s++) { + $inputGlyphs = $Lookup[$i]['Subtable'][$c]['subs'][$s]['Replace']; + $substitute = $Lookup[$i]['Subtable'][$c]['subs'][$s]['substitute'][0]; + // Ignore has already been applied earlier on + $ignore = $this->_getGSUBignoreString($Lookup[$i]['Flag'], $Lookup[$i]['MarkFilteringSet']); + $repl = $this->_makeGSUBinputMatch($inputGlyphs, $ignore); + $subs = $this->_makeGSUBinputReplacement(count($inputGlyphs), $substitute, $ignore, 0, count($inputGlyphs), 0); + $volt[] = ['match' => $repl, 'replace' => $subs, 'tag' => $tag, 'key' => $inputGlyphs[0], 'type' => 4, 'CompCount' => $Lookup[$i]['Subtable'][$c]['subs'][$s]['CompCount'], 'Lig' => $substitute]; + } + } // LookupType 5: Chaining Contextual Substitution Subtable + elseif ($Lookup[$i]['Type'] == 5) { + // Format 1: Context Substitution + if ($SubstFormat == 1) { + $ignore = $this->_getGSUBignoreString($Lookup[$i]['Flag'], $Lookup[$i]['MarkFilteringSet']); + for ($s = 0; $s < $Lookup[$i]['Subtable'][$c]['SubRuleSetCount']; $s++) { + // SubRuleSet + $subRule = []; + foreach ($Lookup[$i]['Subtable'][$c]['SubRuleSet'][$s]['SubRule'] as $rule) { + // SubRule + $inputGlyphs = []; + if ($rule['GlyphCount'] > 1) { + $inputGlyphs = $rule['InputGlyphs']; + } + $inputGlyphs[0] = $Lookup[$i]['Subtable'][$c]['SubRuleSet'][$s]['FirstGlyph']; + ksort($inputGlyphs); + $nInput = count($inputGlyphs); + + $contextInputMatch = $this->_makeGSUBcontextInputMatch($inputGlyphs, $ignore, [], 0); + $subRule = ['context' => 1, 'tag' => $tag, 'matchback' => '', 'match' => $contextInputMatch, 'nBacktrack' => 0, 'nInput' => $nInput, 'nLookahead' => 0, 'rules' => [],]; + + for ($b = 0; $b < $rule['SubstCount']; $b++) { + $lup = $rule['SubstLookupRecord'][$b]['LookupListIndex']; + $seqIndex = $rule['SubstLookupRecord'][$b]['SequenceIndex']; + + // $Lookup[$lup] = secondary Lookup + for ($lus = 0; $lus < $Lookup[$lup]['SubtableCount']; $lus++) { + if (count($Lookup[$lup]['Subtable'][$lus]['subs'])) { + foreach ($Lookup[$lup]['Subtable'][$lus]['subs'] as $luss) { + $lookupGlyphs = $luss['Replace']; + $mLen = count($lookupGlyphs); + + // Only apply if the (first) 'Replace' glyph from the + // Lookup list is in the [inputGlyphs] at ['SequenceIndex'] + // then apply the substitution + if (strpos($inputGlyphs[$seqIndex], $lookupGlyphs[0]) === false) { + continue; + } + $REPL = implode(" ", $luss['substitute']); + if (strpos("isol fina fin2 fin3 medi med2 init ", $tag) !== false && $scripttag == 'arab') { + $volt[] = ['match' => $lookupGlyphs[0], 'replace' => $REPL, 'tag' => $tag, 'prel' => $backtrackGlyphs, 'postl' => $lookaheadGlyphs, 'ignore' => $ignore]; + } else { + $subRule['rules'][] = ['type' => $Lookup[$lup]['Type'], 'match' => $lookupGlyphs, 'replace' => $luss['substitute'], 'seqIndex' => $seqIndex, 'key' => $lookupGlyphs[0],]; + } + } + } + } + } + + if (count($subRule['rules'])) { + $volt[] = $subRule; + } + } + } + } // Format 2: Class-based Context Glyph Substitution + elseif ($SubstFormat == 2) { + $ignore = $this->_getGSUBignoreString($Lookup[$i]['Flag'], $Lookup[$i]['MarkFilteringSet']); + foreach ($Lookup[$i]['Subtable'][$c]['SubClassSet'] as $inputClass => $cscs) { + for ($cscrule = 0; $cscrule < $cscs['SubClassRuleCnt']; $cscrule++) { + $rule = $cscs['SubClassRule'][$cscrule]; + + $inputGlyphs = []; + + $inputGlyphs[0] = $Lookup[$i]['Subtable'][$c]['InputClasses'][$inputClass]; + if ($rule['InputGlyphCount'] > 1) { + // NB starts at 1 + for ($gcl = 1; $gcl < $rule['InputGlyphCount']; $gcl++) { + $classindex = $rule['Input'][$gcl]; + if (isset($Lookup[$i]['Subtable'][$c]['InputClasses'][$classindex])) { + $inputGlyphs[$gcl] = $Lookup[$i]['Subtable'][$c]['InputClasses'][$classindex]; + } // if class[0] = all glyphs excluding those specified in all other classes + // set to blank '' for now + else { + $inputGlyphs[$gcl] = ''; + } + } + } + + $nInput = $rule['InputGlyphCount']; + $nIsubs = (2 * $nInput) - 1; + + $contextInputMatch = $this->_makeGSUBcontextInputMatch($inputGlyphs, $ignore, [], 0); + $subRule = ['context' => 1, 'tag' => $tag, 'matchback' => '', 'match' => $contextInputMatch, 'nBacktrack' => 0, 'nInput' => $nInput, 'nLookahead' => 0, 'rules' => [],]; + + for ($b = 0; $b < $rule['SubstCount']; $b++) { + $lup = $rule['LookupListIndex'][$b]; + $seqIndex = $rule['SequenceIndex'][$b]; + + // $Lookup[$lup] = secondary Lookup + for ($lus = 0; $lus < $Lookup[$lup]['SubtableCount']; $lus++) { + if (isset($Lookup[$lup]['Subtable'][$lus]['subs']) && count($Lookup[$lup]['Subtable'][$lus]['subs'])) { + foreach ($Lookup[$lup]['Subtable'][$lus]['subs'] as $luss) { + $lookupGlyphs = $luss['Replace']; + $mLen = count($lookupGlyphs); + + // Only apply if the (first) 'Replace' glyph from the + // Lookup list is in the [inputGlyphs] at ['SequenceIndex'] + // then apply the substitution + if (strpos($inputGlyphs[$seqIndex], $lookupGlyphs[0]) === false) { + continue; + } + + // Returns e.g. ¦(0612)¦(ignore) (0613)¦(ignore) (0614)¦ + $contextInputMatch = $this->_makeGSUBcontextInputMatch($inputGlyphs, $ignore, $lookupGlyphs, $seqIndex); + $REPL = implode(" ", $luss['substitute']); + // Returns e.g. "REPL\${6}\${8}" or "\${1}\${2} \${3} REPL\${4}\${6}\${8} \${9}" + + if (strpos("isol fina fin2 fin3 medi med2 init ", $tag) !== false && $scripttag == 'arab') { + $volt[] = ['match' => $lookupGlyphs[0], 'replace' => $REPL, 'tag' => $tag, 'prel' => $backtrackGlyphs, 'postl' => $lookaheadGlyphs, 'ignore' => $ignore]; + } else { + $subRule['rules'][] = ['type' => $Lookup[$lup]['Type'], 'match' => $lookupGlyphs, 'replace' => $luss['substitute'], 'seqIndex' => $seqIndex, 'key' => $lookupGlyphs[0],]; + } + } + } + } + } + if (count($subRule['rules'])) { + $volt[] = $subRule; + } + } + } + + } // Format 3: Coverage-based Context Glyph Substitution p259 + elseif ($SubstFormat == 3) { + + // IgnoreMarks flag set on main Lookup table + $ignore = $this->_getGSUBignoreString($Lookup[$i]['Flag'], $Lookup[$i]['MarkFilteringSet']); + $inputGlyphs = $Lookup[$i]['Subtable'][$c]['CoverageInputGlyphs']; + $CoverageInputGlyphs = implode('|', $inputGlyphs); + $nInput = $Lookup[$i]['Subtable'][$c]['InputGlyphCount']; + + if ($Lookup[$i]['Subtable'][$c]['BacktrackGlyphCount']) { + $backtrackGlyphs = $Lookup[$i]['Subtable'][$c]['CoverageBacktrackGlyphs']; + } else { + $backtrackGlyphs = []; + } + + // Returns e.g. ¦(FEEB|FEEC)(ignore) ¦(FD12|FD13)(ignore) ¦ + $backtrackMatch = $this->_makeGSUBbacktrackMatch($backtrackGlyphs, $ignore); + + if ($Lookup[$i]['Subtable'][$c]['LookaheadGlyphCount']) { + $lookaheadGlyphs = $Lookup[$i]['Subtable'][$c]['CoverageLookaheadGlyphs']; + } else { + $lookaheadGlyphs = []; + } + + // Returns e.g. ¦(ignore) (FD12|FD13)¦(ignore) (FEEB|FEEC)¦ + $lookaheadMatch = $this->_makeGSUBlookaheadMatch($lookaheadGlyphs, $ignore); + + $nBsubs = 2 * count($backtrackGlyphs); + $nIsubs = (2 * $nInput) - 1; + $contextInputMatch = $this->_makeGSUBcontextInputMatch($inputGlyphs, $ignore, [], 0); + $subRule = ['context' => 1, 'tag' => $tag, 'matchback' => $backtrackMatch, 'match' => ($contextInputMatch . $lookaheadMatch), 'nBacktrack' => count($backtrackGlyphs), 'nInput' => $nInput, 'nLookahead' => count($lookaheadGlyphs), 'rules' => [],]; + + for ($b = 0; $b < $Lookup[$i]['Subtable'][$c]['SubstCount']; $b++) { + $lup = $Lookup[$i]['Subtable'][$c]['SubstLookupRecord'][$b]['LookupListIndex']; + $seqIndex = $Lookup[$i]['Subtable'][$c]['SubstLookupRecord'][$b]['SequenceIndex']; + for ($lus = 0; $lus < $Lookup[$lup]['SubtableCount']; $lus++) { + if (count($Lookup[$lup]['Subtable'][$lus]['subs'])) { + foreach ($Lookup[$lup]['Subtable'][$lus]['subs'] as $luss) { + $lookupGlyphs = $luss['Replace']; + $mLen = count($lookupGlyphs); + + // Only apply if the (first) 'Replace' glyph from the + // Lookup list is in the [inputGlyphs] at ['SequenceIndex'] + // then apply the substitution + if (strpos($inputGlyphs[$seqIndex], $lookupGlyphs[0]) === false) { + continue; + } + + // Returns e.g. ¦(0612)¦(ignore) (0613)¦(ignore) (0614)¦ + $contextInputMatch = $this->_makeGSUBcontextInputMatch($inputGlyphs, $ignore, $lookupGlyphs, $seqIndex); + $REPL = implode(" ", $luss['substitute']); + + if (strpos("isol fina fin2 fin3 medi med2 init ", $tag) !== false && $scripttag == 'arab') { + $volt[] = ['match' => $lookupGlyphs[0], 'replace' => $REPL, 'tag' => $tag, 'prel' => $backtrackGlyphs, 'postl' => $lookaheadGlyphs, 'ignore' => $ignore]; + } else { + $subRule['rules'][] = ['type' => $Lookup[$lup]['Type'], 'match' => $lookupGlyphs, 'replace' => $luss['substitute'], 'seqIndex' => $seqIndex, 'key' => $lookupGlyphs[0],]; + } + } + } + } + } + if (count($subRule['rules'])) { + $volt[] = $subRule; + } + } + + } // LookupType 6: ing Contextual Substitution Subtable + elseif ($Lookup[$i]['Type'] == 6) { + + // Format 1: Simple Chaining Context Glyph Substitution p255 + if ($SubstFormat == 1) { + $ignore = $this->_getGSUBignoreString($Lookup[$i]['Flag'], $Lookup[$i]['MarkFilteringSet']); + for ($s = 0; $s < $Lookup[$i]['Subtable'][$c]['ChainSubRuleSetCount']; $s++) { + + // ChainSubRuleSet + $subRule = []; + $firstInputGlyph = $Lookup[$i]['Subtable'][$c]['CoverageGlyphs'][$s]; // First input gyyph + + foreach ($Lookup[$i]['Subtable'][$c]['ChainSubRuleSet'][$s]['ChainSubRule'] as $rule) { + // ChainSubRule + $inputGlyphs = []; + if ($rule['InputGlyphCount'] > 1) { + $inputGlyphs = $rule['InputGlyphs']; + } + $inputGlyphs[0] = $firstInputGlyph; + ksort($inputGlyphs); + $nInput = count($inputGlyphs); + + if ($rule['BacktrackGlyphCount']) { + $backtrackGlyphs = $rule['BacktrackGlyphs']; + } else { + $backtrackGlyphs = []; + } + $backtrackMatch = $this->_makeGSUBbacktrackMatch($backtrackGlyphs, $ignore); + + if ($rule['LookaheadGlyphCount']) { + $lookaheadGlyphs = $rule['LookaheadGlyphs']; + } else { + $lookaheadGlyphs = []; + } + + $lookaheadMatch = $this->_makeGSUBlookaheadMatch($lookaheadGlyphs, $ignore); + + $nBsubs = 2 * count($backtrackGlyphs); + $nIsubs = (2 * $nInput) - 1; + + $contextInputMatch = $this->_makeGSUBcontextInputMatch($inputGlyphs, $ignore, [], 0); + $subRule = ['context' => 1, 'tag' => $tag, 'matchback' => $backtrackMatch, 'match' => ($contextInputMatch . $lookaheadMatch), 'nBacktrack' => count($backtrackGlyphs), 'nInput' => $nInput, 'nLookahead' => count($lookaheadGlyphs), 'rules' => [],]; + + for ($b = 0; $b < $rule['SubstCount']; $b++) { + $lup = $rule['LookupListIndex'][$b]; + $seqIndex = $rule['SequenceIndex'][$b]; + + // $Lookup[$lup] = secondary Lookup + for ($lus = 0; $lus < $Lookup[$lup]['SubtableCount']; $lus++) { + if (count($Lookup[$lup]['Subtable'][$lus]['subs'])) { + foreach ($Lookup[$lup]['Subtable'][$lus]['subs'] as $luss) { + $lookupGlyphs = $luss['Replace']; + $mLen = count($lookupGlyphs); + + // Only apply if the (first) 'Replace' glyph from the + // Lookup list is in the [inputGlyphs] at ['SequenceIndex'] + // then apply the substitution + if (strpos($inputGlyphs[$seqIndex], $lookupGlyphs[0]) === false) { + continue; + } + + // Returns e.g. ¦(0612)¦(ignore) (0613)¦(ignore) (0614)¦ + $contextInputMatch = $this->_makeGSUBcontextInputMatch($inputGlyphs, $ignore, $lookupGlyphs, $seqIndex); + + $REPL = implode(" ", $luss['substitute']); + + if (strpos("isol fina fin2 fin3 medi med2 init ", $tag) !== false && $scripttag == 'arab') { + $volt[] = ['match' => $lookupGlyphs[0], 'replace' => $REPL, 'tag' => $tag, 'prel' => $backtrackGlyphs, 'postl' => $lookaheadGlyphs, 'ignore' => $ignore]; + } else { + $subRule['rules'][] = ['type' => $Lookup[$lup]['Type'], 'match' => $lookupGlyphs, 'replace' => $luss['substitute'], 'seqIndex' => $seqIndex, 'key' => $lookupGlyphs[0],]; + } + } + } + } + } + + if (count($subRule['rules'])) { + $volt[] = $subRule; + } + } + } + + } // Format 2: Class-based Chaining Context Glyph Substitution p257 + elseif ($SubstFormat == 2) { + $ignore = $this->_getGSUBignoreString($Lookup[$i]['Flag'], $Lookup[$i]['MarkFilteringSet']); + foreach ($Lookup[$i]['Subtable'][$c]['ChainSubClassSet'] as $inputClass => $cscs) { + for ($cscrule = 0; $cscrule < $cscs['ChainSubClassRuleCnt']; $cscrule++) { + $rule = $cscs['ChainSubClassRule'][$cscrule]; + + // These contain classes of glyphs as strings + // $Lookup[$i]['Subtable'][$c]['InputClasses'][(class)] e.g. 02E6|02E7|02E8 + // $Lookup[$i]['Subtable'][$c]['LookaheadClasses'][(class)] + // $Lookup[$i]['Subtable'][$c]['BacktrackClasses'][(class)] + // These contain arrays of classIndexes + // [Backtrack] [Lookahead] and [Input] (Input is from the second position only) + + $inputGlyphs = []; + + if (isset($Lookup[$i]['Subtable'][$c]['InputClasses'][$inputClass])) { + $inputGlyphs[0] = $Lookup[$i]['Subtable'][$c]['InputClasses'][$inputClass]; + } else { + $inputGlyphs[0] = ''; + } + if ($rule['InputGlyphCount'] > 1) { + // NB starts at 1 + for ($gcl = 1; $gcl < $rule['InputGlyphCount']; $gcl++) { + $classindex = $rule['Input'][$gcl]; + if (isset($Lookup[$i]['Subtable'][$c]['InputClasses'][$classindex])) { + $inputGlyphs[$gcl] = $Lookup[$i]['Subtable'][$c]['InputClasses'][$classindex]; + } // if class[0] = all glyphs excluding those specified in all other classes + // set to blank '' for now + else { + $inputGlyphs[$gcl] = ''; + } + } + } + + $nInput = $rule['InputGlyphCount']; + + if ($rule['BacktrackGlyphCount']) { + for ($gcl = 0; $gcl < $rule['BacktrackGlyphCount']; $gcl++) { + $classindex = $rule['Backtrack'][$gcl]; + if (isset($Lookup[$i]['Subtable'][$c]['BacktrackClasses'][$classindex])) { + $backtrackGlyphs[$gcl] = $Lookup[$i]['Subtable'][$c]['BacktrackClasses'][$classindex]; + } // if class[0] = all glyphs excluding those specified in all other classes + // set to blank '' for now + else { + $backtrackGlyphs[$gcl] = ''; + } + } + } else { + $backtrackGlyphs = []; + } + // Returns e.g. ¦(FEEB|FEEC)(ignore) ¦(FD12|FD13)(ignore) ¦ + $backtrackMatch = $this->_makeGSUBbacktrackMatch($backtrackGlyphs, $ignore); + + if ($rule['LookaheadGlyphCount']) { + for ($gcl = 0; $gcl < $rule['LookaheadGlyphCount']; $gcl++) { + $classindex = $rule['Lookahead'][$gcl]; + if (isset($Lookup[$i]['Subtable'][$c]['LookaheadClasses'][$classindex])) { + $lookaheadGlyphs[$gcl] = $Lookup[$i]['Subtable'][$c]['LookaheadClasses'][$classindex]; + } // if class[0] = all glyphs excluding those specified in all other classes + // set to blank '' for now + else { + $lookaheadGlyphs[$gcl] = ''; + } + } + } else { + $lookaheadGlyphs = []; + } + // Returns e.g. ¦(ignore) (FD12|FD13)¦(ignore) (FEEB|FEEC)¦ + $lookaheadMatch = $this->_makeGSUBlookaheadMatch($lookaheadGlyphs, $ignore); + + $nBsubs = 2 * count($backtrackGlyphs); + $nIsubs = (2 * $nInput) - 1; + + $contextInputMatch = $this->_makeGSUBcontextInputMatch($inputGlyphs, $ignore, [], 0); + $subRule = ['context' => 1, 'tag' => $tag, 'matchback' => $backtrackMatch, 'match' => ($contextInputMatch . $lookaheadMatch), 'nBacktrack' => count($backtrackGlyphs), 'nInput' => $nInput, 'nLookahead' => count($lookaheadGlyphs), 'rules' => [],]; + + for ($b = 0; $b < $rule['SubstCount']; $b++) { + $lup = $rule['LookupListIndex'][$b]; + $seqIndex = $rule['SequenceIndex'][$b]; + + // $Lookup[$lup] = secondary Lookup + for ($lus = 0; $lus < $Lookup[$lup]['SubtableCount']; $lus++) { + if (count($Lookup[$lup]['Subtable'][$lus]['subs'])) { + foreach ($Lookup[$lup]['Subtable'][$lus]['subs'] as $luss) { + $lookupGlyphs = $luss['Replace']; + $mLen = count($lookupGlyphs); + + // Only apply if the (first) 'Replace' glyph from the + // Lookup list is in the [inputGlyphs] at ['SequenceIndex'] + // then apply the substitution + if (strpos($inputGlyphs[$seqIndex], $lookupGlyphs[0]) === false) { + continue; + } + + // Returns e.g. ¦(0612)¦(ignore) (0613)¦(ignore) (0614)¦ + $contextInputMatch = $this->_makeGSUBcontextInputMatch($inputGlyphs, $ignore, $lookupGlyphs, $seqIndex); + $REPL = implode(" ", $luss['substitute']); + // Returns e.g. "REPL\${6}\${8}" or "\${1}\${2} \${3} REPL\${4}\${6}\${8} \${9}" + + if (strpos("isol fina fin2 fin3 medi med2 init ", $tag) !== false && $scripttag == 'arab') { + $volt[] = ['match' => $lookupGlyphs[0], 'replace' => $REPL, 'tag' => $tag, 'prel' => $backtrackGlyphs, 'postl' => $lookaheadGlyphs, 'ignore' => $ignore]; + } else { + $subRule['rules'][] = ['type' => $Lookup[$lup]['Type'], 'match' => $lookupGlyphs, 'replace' => $luss['substitute'], 'seqIndex' => $seqIndex, 'key' => $lookupGlyphs[0],]; + } + } + } + } + } + if (count($subRule['rules'])) { + $volt[] = $subRule; + } + } + } + + } // Format 3: Coverage-based Chaining Context Glyph Substitution p259 + elseif ($SubstFormat == 3) { + // IgnoreMarks flag set on main Lookup table + $ignore = $this->_getGSUBignoreString($Lookup[$i]['Flag'], $Lookup[$i]['MarkFilteringSet']); + $inputGlyphs = $Lookup[$i]['Subtable'][$c]['CoverageInputGlyphs']; + $CoverageInputGlyphs = implode('|', $inputGlyphs); + $nInput = $Lookup[$i]['Subtable'][$c]['InputGlyphCount']; + + if ($Lookup[$i]['Subtable'][$c]['BacktrackGlyphCount']) { + $backtrackGlyphs = $Lookup[$i]['Subtable'][$c]['CoverageBacktrackGlyphs']; + } else { + $backtrackGlyphs = []; + } + // Returns e.g. ¦(FEEB|FEEC)(ignore) ¦(FD12|FD13)(ignore) ¦ + $backtrackMatch = $this->_makeGSUBbacktrackMatch($backtrackGlyphs, $ignore); + + if ($Lookup[$i]['Subtable'][$c]['LookaheadGlyphCount']) { + $lookaheadGlyphs = $Lookup[$i]['Subtable'][$c]['CoverageLookaheadGlyphs']; + } else { + $lookaheadGlyphs = []; + } + // Returns e.g. ¦(ignore) (FD12|FD13)¦(ignore) (FEEB|FEEC)¦ + $lookaheadMatch = $this->_makeGSUBlookaheadMatch($lookaheadGlyphs, $ignore); + + $nBsubs = 2 * count($backtrackGlyphs); + $nIsubs = (2 * $nInput) - 1; + $contextInputMatch = $this->_makeGSUBcontextInputMatch($inputGlyphs, $ignore, [], 0); + $subRule = ['context' => 1, 'tag' => $tag, 'matchback' => $backtrackMatch, 'match' => ($contextInputMatch . $lookaheadMatch), 'nBacktrack' => count($backtrackGlyphs), 'nInput' => $nInput, 'nLookahead' => count($lookaheadGlyphs), 'rules' => [],]; + + for ($b = 0; $b < $Lookup[$i]['Subtable'][$c]['SubstCount']; $b++) { + $lup = $Lookup[$i]['Subtable'][$c]['SubstLookupRecord'][$b]['LookupListIndex']; + $seqIndex = $Lookup[$i]['Subtable'][$c]['SubstLookupRecord'][$b]['SequenceIndex']; + for ($lus = 0; $lus < $Lookup[$lup]['SubtableCount']; $lus++) { + if (count($Lookup[$lup]['Subtable'][$lus]['subs'])) { + foreach ($Lookup[$lup]['Subtable'][$lus]['subs'] as $luss) { + $lookupGlyphs = $luss['Replace']; + $mLen = count($lookupGlyphs); + + // Only apply if the (first) 'Replace' glyph from the + // Lookup list is in the [inputGlyphs] at ['SequenceIndex'] + // then apply the substitution + if (strpos($inputGlyphs[$seqIndex], $lookupGlyphs[0]) === false) { + continue; + } + + // Returns e.g. ¦(0612)¦(ignore) (0613)¦(ignore) (0614)¦ + $contextInputMatch = $this->_makeGSUBcontextInputMatch($inputGlyphs, $ignore, $lookupGlyphs, $seqIndex); + $REPL = implode(" ", $luss['substitute']); + + if (strpos("isol fina fin2 fin3 medi med2 init ", $tag) !== false && $scripttag == 'arab') { + $volt[] = ['match' => $lookupGlyphs[0], 'replace' => $REPL, 'tag' => $tag, 'prel' => $backtrackGlyphs, 'postl' => $lookaheadGlyphs, 'ignore' => $ignore]; + } else { + $subRule['rules'][] = ['type' => $Lookup[$lup]['Type'], 'match' => $lookupGlyphs, 'replace' => $luss['substitute'], 'seqIndex' => $seqIndex, 'key' => $lookupGlyphs[0],]; + } + } + } + } + } + if (count($subRule['rules'])) { + $volt[] = $subRule; + } + } + } + } + } + + return $volt; + } + + function _checkGSUBignore($flag, $glyph, $MarkFilteringSet) + { + $ignore = false; + // Flag & 0x0008 = Ignore Marks - (unless already done with MarkAttachmentType) + if ((($flag & 0x0008) == 0x0008 && ($flag & 0xFF00) == 0) && strpos($this->GlyphClassMarks, $glyph)) { + $ignore = true; + } + if ((($flag & 0x0004) == 0x0004) && strpos($this->GlyphClassLigatures, $glyph)) { + $ignore = true; + } + if ((($flag & 0x0002) == 0x0002) && strpos($this->GlyphClassBases, $glyph)) { + $ignore = true; + } + // Flag & 0xFF?? = MarkAttachmentType + if ($flag & 0xFF00) { + // "a lookup must ignore any mark glyphs that are not in the specified mark attachment class" + // $this->MarkAttachmentType is already adjusted for this i.e. contains all Marks except those in the MarkAttachmentClassDef table + if (strpos($this->MarkAttachmentType[($flag >> 8)], $glyph)) { + $ignore = true; + } + } + // Flag & 0x0010 = UseMarkFilteringSet + if (($flag & 0x0010) && strpos($this->MarkGlyphSets[$MarkFilteringSet], $glyph)) { + $ignore = true; + } + + return $ignore; + } + + function _getGSUBignoreString($flag, $MarkFilteringSet) + { + // If ignoreFlag set, combine all ignore glyphs into -> "((?:(?: FBA1| FBA2| FBA3))*)" + // else "()" + // for Input - set on secondary Lookup table if in Context, and set Backtrack and Lookahead on Context Lookup + $str = ""; + $ignoreflag = 0; + + // Flag & 0xFF?? = MarkAttachmentType + if ($flag & 0xFF00) { + // "a lookup must ignore any mark glyphs that are not in the specified mark attachment class" + // $this->MarkAttachmentType is already adjusted for this i.e. contains all Marks except those in the MarkAttachmentClassDef table + $MarkAttachmentType = $flag >> 8; + $ignoreflag = $flag; + $str = $this->MarkAttachmentType[$MarkAttachmentType]; + } + + // Flag & 0x0010 = UseMarkFilteringSet + if ($flag & 0x0010) { + throw new \Mpdf\Exception\FontException("This font " . $this->fontkey . " contains MarkGlyphSets - Not tested yet"); + $str = $this->MarkGlyphSets[$MarkFilteringSet]; + } + + // If Ignore Marks set, supercedes any above + // Flag & 0x0008 = Ignore Marks - (unless already done with MarkAttachmentType) + if (($flag & 0x0008) == 0x0008 && ($flag & 0xFF00) == 0) { + $ignoreflag = 8; + $str = $this->GlyphClassMarks; + } + + // Flag & 0x0004 = Ignore Ligatures + if (($flag & 0x0004) == 0x0004) { + $ignoreflag += 4; + if ($str) { + $str .= "|"; + } + $str .= $this->GlyphClassLigatures; + } + // Flag & 0x0002 = Ignore BaseGlyphs + if (($flag & 0x0002) == 0x0002) { + $ignoreflag += 2; + if ($str) { + $str .= "|"; + } + $str .= $this->GlyphClassBases; + } + if ($str) { + // This originally returned e.g. ((?:(?:[IGNORE8]))*) when NOT specific to a Lookup e.g. rtlSub in + // arabictypesetting.GSUB.arab.DFLT.php + // This would save repeatedly saving long text strings if used multiple times + // When writing e.g. arabictypesetting.GSUB.arab.DFLT.php to file, included as $ignore[8] + // Would need to also write the $ignore array to that file + // // If UseMarkFilteringSet (specific to the Lookup) return the string + // if (($flag & 0x0010) && ($flag & 0x0008) != 0x0008) { + // return "((?:(?:" . $str . "))*)"; + // } + // else { return "((?:(?:" . "[IGNORE".$ignoreflag."]" . "))*)"; } + // // e.g. ((?:(?: 0031| 0032| 0033| 0034| 0045))*) + // But never finished coding it to add the $ignore array to the file, and it doesn't seem to occur often enough to be worth + // writing. So just output it as a string: + return "((?:(?:" . $str . "))*)"; + } else { + return "()"; + } + } + + // GSUB Patterns + + /* + BACKTRACK INPUT LOOKAHEAD + ================================== ================== ================================== + (FEEB|FEEC)(ign) ¦(FD12|FD13)(ign) ¦(0612)¦(ign) (0613)¦(ign) (FD12|FD13)¦(ign) (FEEB|FEEC) + ---------------- ---------------- ----- ------------ --------------- --------------- + Backtrack 1 Backtrack 2 Input 1 Input 2 Lookahead 1 Lookahead 2 + -------- --- --------- --- ---- --- ---- --- --------- --- ------- + \${1} \${2} \${3} \${4} \${5+} \${6+} \${7+} \${8+} + + nBacktrack = 2 nInput = 2 nLookahead = 2 + + nBsubs = 2xnBack nIsubs = (nBsubs+) nLsubs = (nBsubs+nIsubs+) 2xnLookahead + "\${1}\${2} " (nInput*2)-1 "\${5+} \${6+}" + "REPL" + + ¦\${1}\${2} ¦\${3}\${4} ¦REPL¦\${5+} \${6+}¦\${7+} \${8+}¦ + + + INPUT nInput = 5 + ============================================================ + ¦(0612)¦(ign) (0613)¦(ign) (0614)¦(ign) (0615)¦(ign) (0615)¦ + \${1} \${2} \${3} \${4} \${5} \${6} \${7} \${8} \${9} (All backreference numbers are + nBsubs) + ----- ------------ ------------ ------------ ------------ + Input 1 Input 2 Input 3 Input 4 Input 5 + + A====== SequenceIndex=1 ; Lookup match nGlyphs=1 + B=================== SequenceIndex=1 ; Lookup match nGlyphs=2 + C=============================== SequenceIndex=1 ; Lookup match nGlyphs=3 + D======================= SequenceIndex=2 ; Lookup match nGlyphs=2 + E===================================== SequenceIndex=2 ; Lookup match nGlyphs=3 + F====================== SequenceIndex=4 ; Lookup match nGlyphs=2 + + All backreference numbers are + nBsubs + A - "REPL\${2} \${3}\${4} \${5}\${6} \${7}\${8} \${9}" + B - "REPL\${2}\${4} \${5}\${6} \${7}\${8} \${9}" + C - "REPL\${2}\${4}\${6} \${7}\${8} \${9}" + D - "\${1} REPL\${2}\${4}\${6} \${7}\${8} \${9}" + E - "\${1} REPL\${2}\${4}\${6}\${8} \${9}" + F - "\${1}\${2} \${3}\${4} \${5} REPL\${6}\${8}" + */ + + function _makeGSUBcontextInputMatch($inputGlyphs, $ignore, $lookupGlyphs, $seqIndex) + { + // $ignore = "((?:(?: FBA1| FBA2| FBA3))*)" or "()" + // Returns e.g. ¦(0612)¦(ignore) (0613)¦(ignore) (0614)¦ + // $inputGlyphs = array of glyphs(glyphstrings) making up Input sequence in Context + // $lookupGlyphs = array of glyphs (single Glyphs) making up Lookup Input sequence + $mLen = count($lookupGlyphs); // nGlyphs in the secondary Lookup match + $nInput = count($inputGlyphs); // nGlyphs in the Primary Input sequence + $str = ""; + for ($i = 0; $i < $nInput; $i++) { + if ($i > 0) { + $str .= $ignore . " "; + } + if ($i >= $seqIndex && $i < ($seqIndex + $mLen)) { + $str .= "(" . $lookupGlyphs[($i - $seqIndex)] . ")"; + } else { + $str .= "(" . $inputGlyphs[($i)] . ")"; + } + } + + return $str; + } + + function _makeGSUBinputMatch($inputGlyphs, $ignore) + { + // $ignore = "((?:(?: FBA1| FBA2| FBA3))*)" or "()" + // Returns e.g. ¦(0612)¦(ignore) (0613)¦(ignore) (0614)¦ + // $inputGlyphs = array of glyphs(glyphstrings) making up Input sequence in Context + // $lookupGlyphs = array of glyphs making up Lookup Input sequence - if applicable + $str = ""; + for ($i = 1; $i <= count($inputGlyphs); $i++) { + if ($i > 1) { + $str .= $ignore . " "; + } + $str .= "(" . $inputGlyphs[($i - 1)] . ")"; + } + + return $str; + } + + function _makeGSUBbacktrackMatch($backtrackGlyphs, $ignore) + { + // $ignore = "((?:(?: FBA1| FBA2| FBA3))*)" or "()" + // Returns e.g. ¦(FEEB|FEEC)(ignore) ¦(FD12|FD13)(ignore) ¦ + // $backtrackGlyphs = array of glyphstrings making up Backtrack sequence + // 3 2 1 0 + // each item being e.g. E0AD|E0AF|F1FD + $str = ""; + for ($i = (count($backtrackGlyphs) - 1); $i >= 0; $i--) { + $str .= "(" . $backtrackGlyphs[$i] . ")" . $ignore . " "; + } + + return $str; + } + + function _makeGSUBlookaheadMatch($lookaheadGlyphs, $ignore) + { + // $ignore = "((?:(?: FBA1| FBA2| FBA3))*)" or "()" + // Returns e.g. ¦(ignore) (FD12|FD13)¦(ignore) (FEEB|FEEC)¦ + // $lookaheadGlyphs = array of glyphstrings making up Lookahead sequence + // 0 1 2 3 + // each item being e.g. E0AD|E0AF|F1FD + $str = ""; + for ($i = 0; $i < count($lookaheadGlyphs); $i++) { + $str .= $ignore . " (" . $lookaheadGlyphs[$i] . ")"; + } + + return $str; + } + + function _makeGSUBinputReplacement($nInput, $REPL, $ignore, $nBsubs, $mLen, $seqIndex) + { + // Returns e.g. "REPL\${6}\${8}" or "\${1}\${2} \${3} REPL\${4}\${6}\${8} \${9}" + // $nInput nGlyphs in the Primary Input sequence + // $REPL replacement glyphs from secondary lookup + // $ignore = "((?:(?: FBA1| FBA2| FBA3))*)" or "()" + // $nBsubs Number of Backtrack substitutions (= 2x Number of Backtrack glyphs) + // $mLen nGlyphs in the secondary Lookup match - if no secondary lookup, should=$nInput + // $seqIndex Sequence Index to apply the secondary match + if ($ignore == "()") { + $ign = false; + } else { + $ign = true; + } + $str = ""; + if ($nInput == 1) { + $str = $REPL; + } elseif ($nInput > 1) { + if ($mLen == $nInput) { // whole string replaced + $str = $REPL; + if ($ign) { + // for every nInput over 1, add another replacement backreference, to move IGNORES after replacement + for ($x = 2; $x <= $nInput; $x++) { + $str .= '\\' . ($nBsubs + (2 * ($x - 1))); + } + } + } else { // if only part of string replaced: + for ($x = 1; $x < ($seqIndex + 1); $x++) { + if ($x == 1) { + $str .= '\\' . ($nBsubs + 1); + } else { + if ($ign) { + $str .= '\\' . ($nBsubs + (2 * ($x - 1))); + } + $str .= ' \\' . ($nBsubs + 1 + (2 * ($x - 1))); + } + } + if ($seqIndex > 0) { + $str .= " "; + } + $str .= $REPL; + if ($ign) { + for ($x = (max(($seqIndex + 1), 2)); $x < ($seqIndex + 1 + $mLen); $x++) { // move IGNORES after replacement + $str .= '\\' . ($nBsubs + (2 * ($x - 1))); + } + } + for ($x = ($seqIndex + 1 + $mLen); $x <= $nInput; $x++) { + if ($ign) { + $str .= '\\' . ($nBsubs + (2 * ($x - 1))); + } + $str .= ' \\' . ($nBsubs + 1 + (2 * ($x - 1))); + } + } + } + + return $str; + } + + function _getCoverage($convert2hex = true, $mode = 1) + { + $g = []; + $ctr = 0; + $CoverageFormat = $this->read_ushort(); + if ($CoverageFormat == 1) { + $CoverageGlyphCount = $this->read_ushort(); + for ($gid = 0; $gid < $CoverageGlyphCount; $gid++) { + $glyphID = $this->read_ushort(); + $uni = $this->glyphToChar[$glyphID][0]; + if ($convert2hex) { + $g[] = unicode_hex($uni); + } elseif ($mode == 2) { + $g[$uni] = $ctr; + $ctr++; + } else { + $g[] = $glyphID; + } + } + } + if ($CoverageFormat == 2) { + $RangeCount = $this->read_ushort(); + for ($r = 0; $r < $RangeCount; $r++) { + $start = $this->read_ushort(); + $end = $this->read_ushort(); + $StartCoverageIndex = $this->read_ushort(); // n/a + for ($glyphID = $start; $glyphID <= $end; $glyphID++) { + $uni = $this->glyphToChar[$glyphID][0]; + if ($convert2hex) { + $g[] = unicode_hex($uni); + } elseif ($mode == 2) { + $uni = $g[$uni] = $ctr; + $ctr++; + } else { + $g[] = $glyphID; + } + } + } + } + + return $g; + } + + function _getClasses($offset) + { + $this->seek($offset); + $ClassFormat = $this->read_ushort(); + $GlyphByClass = []; + if ($ClassFormat == 1) { + $StartGlyph = $this->read_ushort(); + $GlyphCount = $this->read_ushort(); + for ($i = 0; $i < $GlyphCount; $i++) { + $startGlyphID = $StartGlyph + $i; + $endGlyphID = $StartGlyph + $i; + $class = $this->read_ushort(); + for ($g = $startGlyphID; $g <= $endGlyphID; $g++) { + if (isset($this->glyphToChar[$g][0])) { + $GlyphByClass[$class][] = unicode_hex($this->glyphToChar[$g][0]); + } + } + } + } elseif ($ClassFormat == 2) { + $tableCount = $this->read_ushort(); + for ($i = 0; $i < $tableCount; $i++) { + $startGlyphID = $this->read_ushort(); + $endGlyphID = $this->read_ushort(); + $class = $this->read_ushort(); + for ($g = $startGlyphID; $g <= $endGlyphID; $g++) { + if ($this->glyphToChar[$g][0]) { + $GlyphByClass[$class][] = unicode_hex($this->glyphToChar[$g][0]); + } + } + } + } + $gbc = []; + foreach ($GlyphByClass as $class => $garr) { + $gbc[$class] = implode('|', $garr); + } + + return $gbc; + } + + function _getGPOStables() + { + /////////////////////////////////// + // GPOS - Glyph Positioning + /////////////////////////////////// + if (!isset($this->tables["GPOS"])) { + return [[], [], []]; + } + + $ffeats = []; + $gpos_offset = $this->seek_table("GPOS"); + $this->skip(4); + $ScriptList_offset = $gpos_offset + $this->read_ushort(); + $FeatureList_offset = $gpos_offset + $this->read_ushort(); + $LookupList_offset = $gpos_offset + $this->read_ushort(); + + // ScriptList + $this->seek($ScriptList_offset); + $ScriptCount = $this->read_ushort(); + for ($i = 0; $i < $ScriptCount; $i++) { + $ScriptTag = $this->read_tag(); // = "beng", "deva" etc. + $ScriptTableOffset = $this->read_ushort(); + $ffeats[$ScriptTag] = $ScriptList_offset + $ScriptTableOffset; + } + + // Script Table + foreach ($ffeats as $t => $o) { + $ls = []; + $this->seek($o); + $DefLangSys_offset = $this->read_ushort(); + if ($DefLangSys_offset > 0) { + $ls['DFLT'] = $DefLangSys_offset + $o; + } + $LangSysCount = $this->read_ushort(); + for ($i = 0; $i < $LangSysCount; $i++) { + $LangTag = $this->read_tag(); // = + $LangTableOffset = $this->read_ushort(); + $ls[$LangTag] = $o + $LangTableOffset; + } + $ffeats[$t] = $ls; + } + + // Get FeatureIndexList + // LangSys Table - from first listed langsys + foreach ($ffeats as $st => $scripts) { + foreach ($scripts as $t => $o) { + $FeatureIndex = []; + $langsystable_offset = $o; + $this->seek($langsystable_offset); + $LookUpOrder = $this->read_ushort(); //==NULL + $ReqFeatureIndex = $this->read_ushort(); + if ($ReqFeatureIndex != 0xFFFF) { + $FeatureIndex[] = $ReqFeatureIndex; + } + $FeatureCount = $this->read_ushort(); + for ($i = 0; $i < $FeatureCount; $i++) { + $FeatureIndex[] = $this->read_ushort(); // = index of feature + } + $ffeats[$st][$t] = $FeatureIndex; + } + } + // Feauture List => LookupListIndex es + $this->seek($FeatureList_offset); + $FeatureCount = $this->read_ushort(); + $Feature = []; + for ($i = 0; $i < $FeatureCount; $i++) { + $tag = $this->read_tag(); + if ($tag === 'kern') { + $this->haskernGPOS = true; + } + $Feature[$i] = ['tag' => $tag]; + $Feature[$i]['offset'] = $FeatureList_offset + $this->read_ushort(); + } + + for ($i = 0; $i < $FeatureCount; $i++) { + $this->seek($Feature[$i]['offset']); + $this->read_ushort(); // null + $Feature[$i]['LookupCount'] = $Lookupcount = $this->read_ushort(); + $Feature[$i]['LookupListIndex'] = []; + for ($c = 0; $c < $Lookupcount; $c++) { + $Feature[$i]['LookupListIndex'][] = $this->read_ushort(); + } + } + + foreach ($ffeats as $st => $scripts) { + foreach ($scripts as $t => $o) { + $FeatureIndex = $ffeats[$st][$t]; + foreach ($FeatureIndex as $k => $fi) { + $ffeats[$st][$t][$k] = $Feature[$fi]; + } + } + } + + $gpos = []; + $GPOSScriptLang = []; + foreach ($ffeats as $st => $scripts) { + + foreach ($scripts as $t => $langsys) { + + $lg = []; + foreach ($langsys as $ft) { + $lg[$ft['LookupListIndex'][0]] = $ft; + } + + // list of Lookups in order they need to be run i.e. order listed in Lookup table + ksort($lg); + foreach ($lg as $ft) { + $gpos[$st][$t][$ft['tag']] = $ft['LookupListIndex']; + } + if (!isset($GPOSScriptLang[$st])) { + $GPOSScriptLang[$st] = ''; + } + $GPOSScriptLang[$st] .= $t . ' '; + } + } + + // Get metadata and offsets for whole Lookup List table + $this->seek($LookupList_offset); + $LookupCount = $this->read_ushort(); + $Lookup = []; + $Offsets = []; + $SubtableCount = []; + + for ($i = 0; $i < $LookupCount; $i++) { + $Offsets[$i] = $LookupList_offset + $this->read_ushort(); + } + + for ($i = 0; $i < $LookupCount; $i++) { + $this->seek($Offsets[$i]); + $Lookup[$i]['Type'] = $this->read_ushort(); + $Lookup[$i]['Flag'] = $flag = $this->read_ushort(); + $Lookup[$i]['SubtableCount'] = $SubtableCount[$i] = $this->read_ushort(); + for ($c = 0; $c < $SubtableCount[$i]; $c++) { + $Lookup[$i]['Subtables'][$c] = $Offsets[$i] + $this->read_ushort(); + } + // MarkFilteringSet = Index (base 0) into GDEF mark glyph sets structure + if (($flag & 0x0010) === 0x0010) { + $Lookup[$i]['MarkFilteringSet'] = $this->read_ushort(); + } else { + $Lookup[$i]['MarkFilteringSet'] = ''; + } + + // Lookup Type 9: Extension + if ($Lookup[$i]['Type'] == 9) { + // Overwrites new offset (32-bit) for each subtable, and a new lookup Type + for ($c = 0; $c < $SubtableCount[$i]; $c++) { + $this->seek($Lookup[$i]['Subtables'][$c]); + $ExtensionPosFormat = $this->read_ushort(); + $type = $this->read_ushort(); + $Lookup[$i]['Subtables'][$c] = $Lookup[$i]['Subtables'][$c] + $this->read_ulong(); + } + $Lookup[$i]['Type'] = $type; + } + } + + // Process Whole LookupList - Get LuCoverage = Lookup coverage just for first glyph + $this->LuCoverage = []; + for ($i = 0; $i < $LookupCount; $i++) { + for ($c = 0; $c < $Lookup[$i]['SubtableCount']; $c++) { + $this->seek($Lookup[$i]['Subtables'][$c]); + $PosFormat = $this->read_ushort(); + + if ($Lookup[$i]['Type'] == 7 && $PosFormat == 3) { + $this->skip(4); + } elseif ($Lookup[$i]['Type'] == 8 && $PosFormat == 3) { + $BacktrackGlyphCount = $this->read_ushort(); + $this->skip(2 * $BacktrackGlyphCount + 2); + } + // NB Coverage only looks at glyphs for position 1 (i.e. 7.3 and 8.3) // NEEDS TO READ ALL ******************** + // NB For e.g. Type 4, this may be the Coverage for the Mark + $Coverage = $Lookup[$i]['Subtables'][$c] + $this->read_ushort(); + $this->seek($Coverage); + $glyphs = $this->_getCoverage(false, 2); + $this->LuCoverage[$i][$c] = $glyphs; + } + } + + $this->fontCache->jsonWrite($this->fontkey . '.GPOSdata.json', $this->LuCoverage); + + return [$GPOSScriptLang, $gpos, $Lookup]; + } + + function makeSubset($file, &$subset, $TTCfontID = 0, $debug = false, $useOTL = false) + { + $this->useOTL = $useOTL; + $this->filename = $file; + $this->fh = fopen($file, 'rb'); + + if (!$this->fh) { + throw new \Mpdf\Exception\FontException(sprintf('Unable to open file %s', $file)); + } + + $this->_pos = 0; + $this->charWidths = ''; + $this->glyphPos = []; + $this->charToGlyph = []; + $this->tables = []; + $this->otables = []; + $this->ascent = 0; + $this->descent = 0; + $this->strikeoutSize = 0; + $this->strikeoutPosition = 0; + $this->numTTCFonts = 0; + $this->TTCFonts = []; + $this->skip(4); + $this->maxUni = 0; + + if ($TTCfontID > 0) { + $this->version = $version = $this->read_ulong(); // TTC Header version now + if (!in_array($version, [0x00010000, 0x00020000], true)) { + throw new \Mpdf\Exception\FontException(sprintf('Error parsing TrueType Collection: version=%s - %s', $version, $file)); + } + $this->numTTCFonts = $this->read_ulong(); + for ($i = 1; $i <= $this->numTTCFonts; $i++) { + $this->TTCFonts[$i]['offset'] = $this->read_ulong(); + } + $this->seek($this->TTCFonts[$TTCfontID]['offset']); + $this->version = $version = $this->read_ulong(); // TTFont version again now + } + $this->readTableDirectory($debug); + + // head - Font header table + $this->seek_table('head'); + $this->skip(50); + $indexToLocFormat = $this->read_ushort(); + $glyphDataFormat = $this->read_ushort(); + + // hhea - Horizontal header table + $this->seek_table('hhea'); + $this->skip(32); + $metricDataFormat = $this->read_ushort(); + $orignHmetrics = $numberOfHMetrics = $this->read_ushort(); + + // maxp - Maximum profile table + $this->seek_table('maxp'); + $this->skip(4); + $numGlyphs = $this->read_ushort(); + + // cmap - Character to glyph index mapping table + $cmap_offset = $this->seek_table('cmap'); + $this->skip(2); + $cmapTableCount = $this->read_ushort(); + $unicode_cmap_offset = 0; + for ($i = 0; $i < $cmapTableCount; $i++) { + $platformID = $this->read_ushort(); + $encodingID = $this->read_ushort(); + $offset = $this->read_ulong(); + $save_pos = $this->_pos; + if (($platformID == 3 && $encodingID == 1) || $platformID == 0) { // Microsoft, Unicode + $format = $this->get_ushort($cmap_offset + $offset); + if ($format == 4) { + $unicode_cmap_offset = $cmap_offset + $offset; + break; + } + } + $this->seek($save_pos); + } + + if (!$unicode_cmap_offset) { + throw new \Mpdf\Exception\FontException(sprintf('Font "%s" does not have Unicode cmap (platform 3, encoding 1, format 4, or platform 0 [any encoding] format 4)', $this->filename)); + } + + $glyphToChar = []; + $charToGlyph = []; + $this->getCMAP4($unicode_cmap_offset, $glyphToChar, $charToGlyph); + + // Map Unmapped glyphs - from $numGlyphs + if ($useOTL) { + $bctr = 0xE000; + for ($gid = 1; $gid < $numGlyphs; $gid++) { + if (!isset($glyphToChar[$gid])) { + while (isset($charToGlyph[$bctr])) { + $bctr++; + } // Avoid overwriting a glyph already mapped in PUA + if ($bctr > 0xF8FF) { + throw new \Mpdf\Exception\FontException($file . " : WARNING - Font cannot map all included glyphs into Private Use Area U+E000 - U+F8FF; cannot use useOTL on this font"); + } + $glyphToChar[$gid][] = $bctr; + $charToGlyph[$bctr] = $gid; + $bctr++; + } + } + } + + $this->charToGlyph = $charToGlyph; + $this->glyphToChar = $glyphToChar; + + // hmtx - Horizontal metrics table + $scale = 1; // not used + $this->getHMTX($numberOfHMetrics, $numGlyphs, $glyphToChar, $scale); + + // loca - Index to location + $this->getLOCA($indexToLocFormat, $numGlyphs); + + $subsetglyphs = [0 => 0, 1 => 1, 2 => 2]; + $subsetCharToGlyph = []; + foreach ($subset as $code) { + if (isset($this->charToGlyph[$code])) { + $subsetglyphs[$this->charToGlyph[$code]] = $code; // Old Glyph ID => Unicode + $subsetCharToGlyph[$code] = $this->charToGlyph[$code]; // Unicode to old GlyphID + } + $this->maxUni = max($this->maxUni, $code); + } + + list($start, $dummy) = $this->get_table_pos('glyf'); + + $glyphSet = []; + ksort($subsetglyphs); + $n = 0; + $fsLastCharIndex = 0; // maximum Unicode index (character code) in this font, according to the cmap subtable for platform ID 3 and platform- specific encoding ID 0 or 1. + foreach ($subsetglyphs as $originalGlyphIdx => $uni) { + $fsLastCharIndex = max($fsLastCharIndex, $uni); + $glyphSet[$originalGlyphIdx] = $n; // old glyphID to new glyphID + $n++; + } + + $codeToGlyph = []; + ksort($subsetCharToGlyph); + foreach ($subsetCharToGlyph as $uni => $originalGlyphIdx) { + $codeToGlyph[$uni] = $glyphSet[$originalGlyphIdx]; + } + $this->codeToGlyph = $codeToGlyph; + + ksort($subsetglyphs); + foreach ($subsetglyphs as $originalGlyphIdx => $uni) { + $this->getGlyphs($originalGlyphIdx, $start, $glyphSet, $subsetglyphs); + } + + $numGlyphs = $numberOfHMetrics = count($subsetglyphs); + + // name - table copied from the original + // MS spec says that "Platform and encoding ID's in the name table should be consistent with those in the cmap table. + // If they are not, the font will not load in Windows" + // Doesn't seem to be a problem? + $this->add('name', $this->get_table('name')); + + // tables copied from the original + $tags = ['cvt ', 'fpgm', 'prep', 'gasp']; + foreach ($tags as $tag) { + if (isset($this->tables[$tag])) { + $this->add($tag, $this->get_table($tag)); + } + } + + // post - PostScript + if (isset($this->tables['post'])) { + $opost = $this->get_table('post'); + $post = "\x00\x03\x00\x00" . substr($opost, 4, 12) . "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"; + $this->add('post', $post); + } + + // Sort CID2GID map into segments of contiguous codes + ksort($codeToGlyph); + unset($codeToGlyph[0]); + + $rangeid = 0; + $range = []; + $prevcid = -2; + $prevglidx = -1; + + // for each character + foreach ($codeToGlyph as $cid => $glidx) { + if ($cid == ($prevcid + 1) && $glidx == ($prevglidx + 1)) { + $range[$rangeid][] = $glidx; + } else { + // new range + $rangeid = $cid; + $range[$rangeid] = []; + $range[$rangeid][] = $glidx; + } + $prevcid = $cid; + $prevglidx = $glidx; + } + + // cmap - Character to glyph mapping + $segCount = count($range) + 1; // + 1 Last segment has missing character 0xFFFF + $searchRange = 1; + $entrySelector = 0; + + while ($searchRange * 2 <= $segCount) { + $searchRange *= 2; + ++$entrySelector; + } + + $searchRange *= 2; + $rangeShift = $segCount * 2 - $searchRange; + $length = 16 + (8 * $segCount) + ($numGlyphs + 1); + $cmap = [ + 0, 3, // Index : version, number of encoding subtables + 0, 0, // Encoding Subtable : platform (UNI=0), encoding 0 + 0, 28, // Encoding Subtable : offset (hi,lo) + 0, 3, // Encoding Subtable : platform (UNI=0), encoding 3 + 0, 28, // Encoding Subtable : offset (hi,lo) + 3, 1, // Encoding Subtable : platform (MS=3), encoding 1 + 0, 28, // Encoding Subtable : offset (hi,lo) + 4, $length, 0, // Format 4 Mapping subtable: format, length, language + $segCount * 2, + $searchRange, + $entrySelector, + $rangeShift, + ]; + + // endCode(s) + foreach ($range as $start => $subrange) { + $endCode = $start + (count($subrange) - 1); + $cmap[] = $endCode; // endCode(s) + } + + $cmap[] = 0xFFFF; // endCode of last Segment + $cmap[] = 0; // reservedPad + + // startCode(s) + foreach ($range as $start => $subrange) { + $cmap[] = $start; // startCode(s) + } + + $cmap[] = 0xFFFF; // startCode of last Segment + + // idDelta(s) + foreach ($range as $start => $subrange) { + $idDelta = -($start - $subrange[0]); + $n += count($subrange); + $cmap[] = $idDelta; // idDelta(s) + } + + $cmap[] = 1; // idDelta of last Segment + // idRangeOffset(s) + + foreach ($range as $subrange) { + $cmap[] = 0; // idRangeOffset[segCount] Offset in bytes to glyph indexArray, or 0 + } + + $cmap[] = 0; // idRangeOffset of last Segment + foreach ($range as $subrange) { + foreach ($subrange as $glidx) { + $cmap[] = $glidx; + } + } + + $cmap[] = 0; // Mapping for last character + $cmapstr = ''; + + foreach ($cmap as $cm) { + $cmapstr .= pack('n', $cm); + } + $this->add('cmap', $cmapstr); + + // glyf - Glyph data + list($glyfOffset, $glyfLength) = $this->get_table_pos('glyf'); + if ($glyfLength < $this->maxStrLenRead) { + $glyphData = $this->get_table('glyf'); + } + + $offsets = []; + $glyf = ''; + $pos = 0; + $hmtxstr = ''; + $xMinT = 0; + $yMinT = 0; + $xMaxT = 0; + $yMaxT = 0; + $advanceWidthMax = 0; + $minLeftSideBearing = 0; + $minRightSideBearing = 0; + $xMaxExtent = 0; + $maxPoints = 0; // points in non-compound glyph + $maxContours = 0; // contours in non-compound glyph + $maxComponentPoints = 0; // points in compound glyph + $maxComponentContours = 0; // contours in compound glyph + $maxComponentElements = 0; // number of glyphs referenced at top level + $maxComponentDepth = 0; // levels of recursion, set to 0 if font has only simple glyphs + $this->glyphdata = []; + + foreach ($subsetglyphs as $originalGlyphIdx => $uni) { + // hmtx - Horizontal Metrics + $hm = $this->getHMetric($orignHmetrics, $originalGlyphIdx); + $hmtxstr .= $hm; + + $offsets[] = $pos; + $glyphPos = $this->glyphPos[$originalGlyphIdx]; + $glyphLen = $this->glyphPos[$originalGlyphIdx + 1] - $glyphPos; + if ($glyfLength < $this->maxStrLenRead) { + $data = substr($glyphData, $glyphPos, $glyphLen); + } else { + if ($glyphLen > 0) { + $data = $this->get_chunk($glyfOffset + $glyphPos, $glyphLen); + } else { + $data = ''; + } + } + + if ($glyphLen > 0) { + if (_RECALC_PROFILE) { + $xMin = $this->unpack_short(substr($data, 2, 2)); + $yMin = $this->unpack_short(substr($data, 4, 2)); + $xMax = $this->unpack_short(substr($data, 6, 2)); + $yMax = $this->unpack_short(substr($data, 8, 2)); + $xMinT = min($xMinT, $xMin); + $yMinT = min($yMinT, $yMin); + $xMaxT = max($xMaxT, $xMax); + $yMaxT = max($yMaxT, $yMax); + $aw = $this->unpack_short(substr($hm, 0, 2)); + $lsb = $this->unpack_short(substr($hm, 2, 2)); + $advanceWidthMax = max($advanceWidthMax, $aw); + $minLeftSideBearing = min($minLeftSideBearing, $lsb); + $minRightSideBearing = min($minRightSideBearing, ($aw - $lsb - ($xMax - $xMin))); + $xMaxExtent = max($xMaxExtent, ($lsb + ($xMax - $xMin))); + } + $up = unpack("n", substr($data, 0, 2)); + } + if ($glyphLen > 2 && ($up[1] & (1 << 15))) { // If number of contours <= -1 i.e. composiste glyph + $pos_in_glyph = 10; + $flags = GlyphOperator::MORE; + $nComponentElements = 0; + while ($flags & GlyphOperator::MORE) { + $nComponentElements += 1; // number of glyphs referenced at top level + $up = unpack("n", substr($data, $pos_in_glyph, 2)); + $flags = $up[1]; + $up = unpack("n", substr($data, $pos_in_glyph + 2, 2)); + $glyphIdx = $up[1]; + $this->glyphdata[$originalGlyphIdx]['compGlyphs'][] = $glyphIdx; + $data = $this->_set_ushort($data, $pos_in_glyph + 2, $glyphSet[$glyphIdx]); + $pos_in_glyph += 4; + if ($flags & GlyphOperator::WORDS) { + $pos_in_glyph += 4; + } else { + $pos_in_glyph += 2; + } + if ($flags & GlyphOperator::SCALE) { + $pos_in_glyph += 2; + } elseif ($flags & GlyphOperator::XYSCALE) { + $pos_in_glyph += 4; + } elseif ($flags & GlyphOperator::TWOBYTWO) { + $pos_in_glyph += 8; + } + } + $maxComponentElements = max($maxComponentElements, $nComponentElements); + + } // Simple Glyph + elseif (_RECALC_PROFILE && $glyphLen > 2 && $up[1] < (1 << 15) && $up[1] > 0) { // Number of contours > 0 simple glyph + $nContours = $up[1]; + $this->glyphdata[$originalGlyphIdx]['nContours'] = $nContours; + $maxContours = max($maxContours, $nContours); + + // Count number of points in simple glyph + $pos_in_glyph = 10 + ($nContours * 2) - 2; // Last endContourPoint + $up = unpack("n", substr($data, $pos_in_glyph, 2)); + $points = $up[1] + 1; + $this->glyphdata[$originalGlyphIdx]['nPoints'] = $points; + $maxPoints = max($maxPoints, $points); + } + + $glyf .= $data; + $pos += $glyphLen; + if ($pos % 4 != 0) { + $padding = 4 - ($pos % 4); + $glyf .= str_repeat("\0", $padding); + $pos += $padding; + } + } + + if (_RECALC_PROFILE) { + foreach ($this->glyphdata as $originalGlyphIdx => $val) { + $maxdepth = $depth = -1; + $points = 0; + $contours = 0; + $this->getGlyphData($originalGlyphIdx, $maxdepth, $depth, $points, $contours); + $maxComponentDepth = max($maxComponentDepth, $maxdepth); + $maxComponentPoints = max($maxComponentPoints, $points); + $maxComponentContours = max($maxComponentContours, $contours); + } + } + + $offsets[] = $pos; + $this->add('glyf', $glyf); + + // hmtx - Horizontal Metrics + $this->add('hmtx', $hmtxstr); + + // loca - Index to location + $locastr = ''; + if ((($pos + 1) >> 1) > 0xFFFF) { + $indexToLocFormat = 1; // long format + foreach ($offsets as $offset) { + $locastr .= pack("N", $offset); + } + } else { + $indexToLocFormat = 0; // short format + foreach ($offsets as $offset) { + $locastr .= pack("n", ($offset / 2)); + } + } + $this->add('loca', $locastr); + + // head - Font header + $head = $this->get_table('head'); + $head = $this->_set_ushort($head, 50, $indexToLocFormat); + + if (_RECALC_PROFILE) { + $head = $this->_set_short($head, 36, $xMinT); // for all glyph bounding boxes + $head = $this->_set_short($head, 38, $yMinT); // for all glyph bounding boxes + $head = $this->_set_short($head, 40, $xMaxT); // for all glyph bounding boxes + $head = $this->_set_short($head, 42, $yMaxT); // for all glyph bounding boxes + $head[17] = chr($head[17] & ~(1 << 4)); // Unset Bit 4 (as hdmx/LTSH tables not included) + } + + $this->add('head', $head); + + // hhea - Horizontal Header + $hhea = $this->get_table('hhea'); + $hhea = $this->_set_ushort($hhea, 34, $numberOfHMetrics); + if (_RECALC_PROFILE) { + $hhea = $this->_set_ushort($hhea, 10, $advanceWidthMax); + $hhea = $this->_set_short($hhea, 12, $minLeftSideBearing); + $hhea = $this->_set_short($hhea, 14, $minRightSideBearing); + $hhea = $this->_set_short($hhea, 16, $xMaxExtent); + } + $this->add('hhea', $hhea); + + // maxp - Maximum Profile + $maxp = $this->get_table('maxp'); + $maxp = $this->_set_ushort($maxp, 4, $numGlyphs); + if (_RECALC_PROFILE) { + $maxp = $this->_set_ushort($maxp, 6, $maxPoints); // points in non-compound glyph + $maxp = $this->_set_ushort($maxp, 8, $maxContours); // contours in non-compound glyph + $maxp = $this->_set_ushort($maxp, 10, $maxComponentPoints); // points in compound glyph + $maxp = $this->_set_ushort($maxp, 12, $maxComponentContours); // contours in compound glyph + $maxp = $this->_set_ushort($maxp, 28, $maxComponentElements); // number of glyphs referenced at top level + $maxp = $this->_set_ushort($maxp, 30, $maxComponentDepth); // levels of recursion, set to 0 if font has only simple glyphs + } + $this->add('maxp', $maxp); + + // OS/2 - OS/2 + if (isset($this->tables['OS/2'])) { + $os2_offset = $this->seek_table("OS/2"); + if (_RECALC_PROFILE) { + $fsSelection = $this->get_ushort($os2_offset + 62); + $fsSelection = ($fsSelection & ~(1 << 6)); // 2-byte bit field containing information concerning the nature of the font patterns + // bit#0 = Italic; bit#5=Bold + // Match name table's font subfamily string + // Clear bit#6 used for 'Regular' and optional + } + + // NB Currently this method never subsets characters above BMP + // Could set nonBMP bit according to $this->maxUni + $nonBMP = $this->get_ushort($os2_offset + 46); + $nonBMP = ($nonBMP & ~(1 << 9)); // Unset Bit 57 (indicates non-BMP) - for interactive forms + + $os2 = $this->get_table('OS/2'); + if (_RECALC_PROFILE) { + $os2 = $this->_set_ushort($os2, 62, $fsSelection); + $os2 = $this->_set_ushort($os2, 66, $fsLastCharIndex); + $os2 = $this->_set_ushort($os2, 42, 0x0000); // ulCharRange (ulUnicodeRange) bits 24-31 | 16-23 + $os2 = $this->_set_ushort($os2, 44, 0x0000); // ulCharRange (Unicode ranges) bits 8-15 | 0-7 + $os2 = $this->_set_ushort($os2, 46, $nonBMP); // ulCharRange (Unicode ranges) bits 56-63 | 48-55 + $os2 = $this->_set_ushort($os2, 48, 0x0000); // ulCharRange (Unicode ranges) bits 40-47 | 32-39 + $os2 = $this->_set_ushort($os2, 50, 0x0000); // ulCharRange (Unicode ranges) bits 88-95 | 80-87 + $os2 = $this->_set_ushort($os2, 52, 0x0000); // ulCharRange (Unicode ranges) bits 72-79 | 64-71 + $os2 = $this->_set_ushort($os2, 54, 0x0000); // ulCharRange (Unicode ranges) bits 120-127 | 112-119 + $os2 = $this->_set_ushort($os2, 56, 0x0000); // ulCharRange (Unicode ranges) bits 104-111 | 96-103 + } + $os2 = $this->_set_ushort($os2, 46, $nonBMP); // Unset Bit 57 (indicates non-BMP) - for interactive forms + + $this->add('OS/2', $os2); + } + + fclose($this->fh); + + // Put the TTF file together + $stm = ''; + $this->endTTFile($stm); + + return $stm; + } + + function makeSubsetSIP($file, &$subset, $TTCfontID = 0, $debug = false, $useOTL = 0) + { + $this->fh = fopen($file, 'rb'); + + if (!$this->fh) { + throw new \Mpdf\Exception\FontException(sprintf('Unable to open file "%s"', $file)); + } + + $this->filename = $file; + $this->_pos = 0; + $this->useOTL = $useOTL; // mPDF 5.7.1 + $this->charWidths = ''; + $this->glyphPos = []; + $this->charToGlyph = []; + $this->tables = []; + $this->otables = []; + $this->ascent = 0; + $this->descent = 0; + $this->strikeoutSize = 0; + $this->strikeoutPosition = 0; + $this->numTTCFonts = 0; + $this->TTCFonts = []; + $this->skip(4); + + if ($TTCfontID > 0) { + $this->version = $version = $this->read_ulong(); // TTC Header version now + if (!in_array($version, [0x00010000, 0x00020000])) { + throw new \Mpdf\Exception\FontException("ERROR - Error parsing TrueType Collection: version=" . $version . " - " . $file); + } + $this->numTTCFonts = $this->read_ulong(); + for ($i = 1; $i <= $this->numTTCFonts; $i++) { + $this->TTCFonts[$i]['offset'] = $this->read_ulong(); + } + $this->seek($this->TTCFonts[$TTCfontID]['offset']); + $this->version = $version = $this->read_ulong(); // TTFont version again now + } + $this->readTableDirectory($debug); + + // head - Font header table + $this->seek_table('head'); + $this->skip(50); + $indexToLocFormat = $this->read_ushort(); + $glyphDataFormat = $this->read_ushort(); + + // hhea - Horizontal header table + $this->seek_table('hhea'); + $this->skip(32); + $metricDataFormat = $this->read_ushort(); + $orignHmetrics = $numberOfHMetrics = $this->read_ushort(); + + // maxp - Maximum profile table + $this->seek_table('maxp'); + $this->skip(4); + $numGlyphs = $this->read_ushort(); + + // cmap - Character to glyph index mapping table + $cmap_offset = $this->seek_table('cmap'); + $this->skip(2); + $cmapTableCount = $this->read_ushort(); + $unicode_cmap_offset = 0; + for ($i = 0; $i < $cmapTableCount; $i++) { + + $platformID = $this->read_ushort(); + $encodingID = $this->read_ushort(); + $offset = $this->read_ulong(); + $save_pos = $this->_pos; + + if (($platformID == 3 && $encodingID == 10) || $platformID == 0) { // Microsoft, Unicode Format 12 table HKCS + $format = $this->get_ushort($cmap_offset + $offset); + if ($format == 12) { + $unicode_cmap_offset = $cmap_offset + $offset; + break; + } + } + + if (($platformID == 3 && $encodingID == 1) || $platformID == 0) { // Microsoft, Unicode + $format = $this->get_ushort($cmap_offset + $offset); + if ($format == 4) { + $unicode_cmap_offset = $cmap_offset + $offset; + } + } + + $this->seek($save_pos); + } + + if (!$unicode_cmap_offset) { + throw new \Mpdf\Exception\FontException(sprintf('Font "%s" does not have cmap for Unicode (platform 3, encoding 1, format 4, or platform 0, any encoding, format 4)', $file)); + } + + // Format 12 CMAP does characters above Unicode BMP i.e. some HKCS characters U+20000 and above + if ($format == 12) { + $this->maxUniChar = 0; + $this->seek($unicode_cmap_offset + 4); + $length = $this->read_ulong(); + $limit = $unicode_cmap_offset + $length; + $this->skip(4); + + $nGroups = $this->read_ulong(); + + $glyphToChar = []; + $charToGlyph = []; + for ($i = 0; $i < $nGroups; $i++) { + $startCharCode = $this->read_ulong(); + $endCharCode = $this->read_ulong(); + $startGlyphCode = $this->read_ulong(); + $offset = 0; + for ($unichar = $startCharCode; $unichar <= $endCharCode; $unichar++) { + $glyph = $startGlyphCode + $offset; + $offset++; + // ZZZ98 + if ($unichar < 0x30000) { + $charToGlyph[$unichar] = $glyph; + $this->maxUniChar = max($unichar, $this->maxUniChar); + $glyphToChar[$glyph][] = $unichar; + } + } + } + } else { + $glyphToChar = []; + $charToGlyph = []; + $this->getCMAP4($unicode_cmap_offset, $glyphToChar, $charToGlyph); + } + + // Map Unmapped glyphs - from $numGlyphs + if ($useOTL) { + $bctr = 0xE000; + for ($gid = 1; $gid < $numGlyphs; $gid++) { + if (!isset($glyphToChar[$gid])) { + while (isset($charToGlyph[$bctr])) { + $bctr++; + } // Avoid overwriting a glyph already mapped in PUA + // ZZZ98 + if ($bctr > 0xF8FF && $bctr < 0x2CEB0) { + $bctr = 0x2CEB0; + while (isset($charToGlyph[$bctr])) { + $bctr++; + } + } + $glyphToChar[$gid][] = $bctr; + $charToGlyph[$bctr] = $gid; + $this->maxUniChar = max($bctr, $this->maxUniChar); + $bctr++; + } + } + } + + // hmtx - Horizontal metrics table + $scale = 1; // not used here + $this->getHMTX($numberOfHMetrics, $numGlyphs, $glyphToChar, $scale); + + // loca - Index to location + $this->getLOCA($indexToLocFormat, $numGlyphs); + + $glyphMap = [0 => 0]; + $glyphSet = [0 => 0]; + $codeToGlyph = []; + + // Set a substitute if ASCII characters do not have glyphs + if (isset($charToGlyph[0x3F])) { + $subs = $charToGlyph[0x3F]; + } else { // Question mark + $subs = $charToGlyph[32]; + } + + foreach ($subset as $code) { + if (isset($charToGlyph[$code])) { + $originalGlyphIdx = $charToGlyph[$code]; + } elseif ($code < 128) { + $originalGlyphIdx = $subs; + } else { + $originalGlyphIdx = 0; + } + if (!isset($glyphSet[$originalGlyphIdx])) { + $glyphSet[$originalGlyphIdx] = count($glyphMap); + $glyphMap[] = $originalGlyphIdx; + } + $codeToGlyph[$code] = $glyphSet[$originalGlyphIdx]; + } + + list($start, $dummy) = $this->get_table_pos('glyf'); + + $n = 0; + while ($n < count($glyphMap)) { + $originalGlyphIdx = $glyphMap[$n]; + $glyphPos = $this->glyphPos[$originalGlyphIdx]; + $glyphLen = $this->glyphPos[$originalGlyphIdx + 1] - $glyphPos; + ++$n; + if (!$glyphLen) { + continue; + } + $this->seek($start + $glyphPos); + $numberOfContours = $this->read_short(); + if ($numberOfContours < 0) { + $this->skip(8); + $flags = GlyphOperator::MORE; + while ($flags & GlyphOperator::MORE) { + $flags = $this->read_ushort(); + $glyphIdx = $this->read_ushort(); + if (!isset($glyphSet[$glyphIdx])) { + $glyphSet[$glyphIdx] = count($glyphMap); + $glyphMap[] = $glyphIdx; + } + if ($flags & GlyphOperator::WORDS) { + $this->skip(4); + } else { + $this->skip(2); + } + if ($flags & GlyphOperator::SCALE) { + $this->skip(2); + } elseif ($flags & GlyphOperator::XYSCALE) { + $this->skip(4); + } elseif ($flags & GlyphOperator::TWOBYTWO) { + $this->skip(8); + } + } + } + } + + $numGlyphs = $n = count($glyphMap); + $numberOfHMetrics = $n; + + // MS spec says that "Platform and encoding ID's in the name table should be consistent with those in the cmap table. + // If they are not, the font will not load in Windows" + // Doesn't seem to be a problem? + // Needs to have a name entry in 3,0 (e.g. symbol) - original font will be 3,1 (i.e. Unicode) + $name = $this->get_table('name'); + $name_offset = $this->seek_table("name"); + $format = $this->read_ushort(); + $numRecords = $this->read_ushort(); + $string_data_offset = $name_offset + $this->read_ushort(); + for ($i = 0; $i < $numRecords; $i++) { + $platformId = $this->read_ushort(); + $encodingId = $this->read_ushort(); + if ($platformId == 3 && $encodingId == 1) { + $pos = 6 + ($i * 12) + 2; + $name = $this->_set_ushort($name, $pos, 0x00); // Change encoding to 3,0 rather than 3,1 + } + $this->skip(8); + } + $this->add('name', $name); + + // OS/2 + if (isset($this->tables['OS/2'])) { + $os2 = $this->get_table('OS/2'); + $os2 = $this->_set_ushort($os2, 42, 0x00); // ulCharRange (Unicode ranges) + $os2 = $this->_set_ushort($os2, 44, 0x00); // ulCharRange (Unicode ranges) + $os2 = $this->_set_ushort($os2, 46, 0x00); // ulCharRange (Unicode ranges) + $os2 = $this->_set_ushort($os2, 48, 0x00); // ulCharRange (Unicode ranges) + + $os2 = $this->_set_ushort($os2, 50, 0x00); // ulCharRange (Unicode ranges) + $os2 = $this->_set_ushort($os2, 52, 0x00); // ulCharRange (Unicode ranges) + $os2 = $this->_set_ushort($os2, 54, 0x00); // ulCharRange (Unicode ranges) + $os2 = $this->_set_ushort($os2, 56, 0x00); // ulCharRange (Unicode ranges) + // Set Symbol character only in ulCodePageRange + $os2 = $this->_set_ushort($os2, 78, 0x8000); // ulCodePageRange = Bit #31 Symbol **** 78 = Bit 16-31 + $os2 = $this->_set_ushort($os2, 80, 0x0000); // ulCodePageRange = Bit #31 Symbol **** 80 = Bit 0-15 + $os2 = $this->_set_ushort($os2, 82, 0x0000); // ulCodePageRange = Bit #32- Symbol **** 82 = Bits 48-63 + $os2 = $this->_set_ushort($os2, 84, 0x0000); // ulCodePageRange = Bit #32- Symbol **** 84 = Bits 32-47 + + $os2 = $this->_set_ushort($os2, 64, 0x01); // FirstCharIndex + $os2 = $this->_set_ushort($os2, 66, count($subset)); // LastCharIndex + // Set PANOSE first bit to 5 for Symbol + $os2 = $this->splice($os2, 32, chr(5) . chr(0) . chr(1) . chr(0) . chr(1) . chr(0) . chr(0) . chr(0) . chr(0) . chr(0)); + $this->add('OS/2', $os2); + } + + //tables copied from the original + $tags = ['cvt ', 'fpgm', 'prep', 'gasp']; + foreach ($tags as $tag) { // 1.02 + if (isset($this->tables[$tag])) { + $this->add($tag, $this->get_table($tag)); + } + } + + // post - PostScript + if (isset($this->tables['post'])) { + $opost = $this->get_table('post'); + $post = "\x00\x03\x00\x00" . substr($opost, 4, 12) . "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"; + } + $this->add('post', $post); + + // hhea - Horizontal Header + $hhea = $this->get_table('hhea'); + $hhea = $this->_set_ushort($hhea, 34, $numberOfHMetrics); + $this->add('hhea', $hhea); + + // maxp - Maximum Profile + $maxp = $this->get_table('maxp'); + $maxp = $this->_set_ushort($maxp, 4, $numGlyphs); + $this->add('maxp', $maxp); + + // CMap table Formats [1,0,]6 and [3,0,]4 + // Sort CID2GID map into segments of contiguous codes + $rangeid = 0; + $range = []; + $prevcid = -2; + $prevglidx = -1; + + // for each character + foreach ($subset as $cid => $code) { + $glidx = $codeToGlyph[$code]; + if ($cid == ($prevcid + 1) && $glidx == ($prevglidx + 1)) { + $range[$rangeid][] = $glidx; + } else { + // new range + $rangeid = $cid; + $range[$rangeid] = []; + $range[$rangeid][] = $glidx; + } + $prevcid = $cid; + $prevglidx = $glidx; + } + + // cmap - Character to glyph mapping + $segCount = count($range) + 1; // + 1 Last segment has missing character 0xFFFF + $searchRange = 1; + $entrySelector = 0; + + while ($searchRange * 2 <= $segCount) { + $searchRange = $searchRange * 2; + $entrySelector = $entrySelector + 1; + } + + $searchRange = $searchRange * 2; + $rangeShift = $segCount * 2 - $searchRange; + $length = 16 + (8 * $segCount) + ($numGlyphs + 1); + $cmap = [ + 4, $length, 0, // Format 4 Mapping subtable: format, length, language + $segCount * 2, + $searchRange, + $entrySelector, + $rangeShift, + ]; + + // endCode(s) + foreach ($range as $start => $subrange) { + $endCode = $start + (count($subrange) - 1); + $cmap[] = $endCode; // endCode(s) + } + $cmap[] = 0xFFFF; // endCode of last Segment + $cmap[] = 0; // reservedPad + + // startCode(s) + foreach ($range as $start => $subrange) { + $cmap[] = $start; // startCode(s) + } + $cmap[] = 0xFFFF; // startCode of last Segment + + // idDelta(s) + foreach ($range as $start => $subrange) { + $idDelta = -($start - $subrange[0]); + $n += count($subrange); + $cmap[] = $idDelta; // idDelta(s) + } + $cmap[] = 1; // idDelta of last Segment + + // idRangeOffset(s) + foreach ($range as $subrange) { + $cmap[] = 0; // idRangeOffset[segCount] Offset in bytes to glyph indexArray, or 0 + } + + $cmap[] = 0; // idRangeOffset of last Segment + foreach ($range as $subrange) { + foreach ($subrange as $glidx) { + $cmap[] = $glidx; + } + } + + $cmap[] = 0; // Mapping for last character + $cmapstr4 = ''; + foreach ($cmap as $cm) { + $cmapstr4 .= pack("n", $cm); + } + + // cmap - Character to glyph mapping + $entryCount = count($subset); + $length = 10 + $entryCount * 2; + + $off = 20 + $length; + $hoff = $off >> 16; + $loff = $off & 0xFFFF; + + $cmap = [ + 0, 2, // Index : version, number of subtables + 1, 0, // Subtable : platform, encoding + 0, 20, // offset (hi,lo) + 3, 0, // Subtable : platform, encoding // See note above for 'name' + $hoff, $loff, // offset (hi,lo) + 6, $length, // Format 6 Mapping table: format, length + 0, 1, // language, First char code + $entryCount, + ]; + + $cmapstr = ''; + foreach ($subset as $code) { + $cmap[] = $codeToGlyph[$code]; + } + + foreach ($cmap as $cm) { + $cmapstr .= pack("n", $cm); + } + + $cmapstr .= $cmapstr4; + $this->add('cmap', $cmapstr); + + // hmtx - Horizontal Metrics + $hmtxstr = ''; + for ($n = 0; $n < $numGlyphs; $n++) { + $originalGlyphIdx = $glyphMap[$n]; + $hm = $this->getHMetric($orignHmetrics, $originalGlyphIdx); + $hmtxstr .= $hm; + } + $this->add('hmtx', $hmtxstr); + + // glyf - Glyph data + list($glyfOffset, $glyfLength) = $this->get_table_pos('glyf'); + if ($glyfLength < $this->maxStrLenRead) { + $glyphData = $this->get_table('glyf'); + } + + $offsets = []; + $glyf = ''; + $pos = 0; + for ($n = 0; $n < $numGlyphs; $n++) { + + $offsets[] = $pos; + $originalGlyphIdx = $glyphMap[$n]; + $glyphPos = $this->glyphPos[$originalGlyphIdx]; + $glyphLen = $this->glyphPos[$originalGlyphIdx + 1] - $glyphPos; + + if ($glyfLength < $this->maxStrLenRead) { + $data = substr($glyphData, $glyphPos, $glyphLen); + } else { + if ($glyphLen > 0) { + $data = $this->get_chunk($glyfOffset + $glyphPos, $glyphLen); + } else { + $data = ''; + } + } + + if ($glyphLen > 0) { + $up = unpack('n', substr($data, 0, 2)); + } + + if ($glyphLen > 2 && ($up[1] & (1 << 15))) { + + $pos_in_glyph = 10; + $flags = GlyphOperator::MORE; + + while ($flags & GlyphOperator::MORE) { + $up = unpack('n', substr($data, $pos_in_glyph, 2)); + $flags = $up[1]; + $up = unpack('n', substr($data, $pos_in_glyph + 2, 2)); + $glyphIdx = $up[1]; + $data = $this->_set_ushort($data, $pos_in_glyph + 2, $glyphSet[$glyphIdx]); + $pos_in_glyph += 4; + + if ($flags & GlyphOperator::WORDS) { + $pos_in_glyph += 4; + } else { + $pos_in_glyph += 2; + } + + if ($flags & GlyphOperator::SCALE) { + $pos_in_glyph += 2; + } elseif ($flags & GlyphOperator::XYSCALE) { + $pos_in_glyph += 4; + } elseif ($flags & GlyphOperator::TWOBYTWO) { + $pos_in_glyph += 8; + } + } + } + + $glyf .= $data; + $pos += $glyphLen; + + if ($pos % 4 != 0) { + $padding = 4 - ($pos % 4); + $glyf .= str_repeat("\0", $padding); + $pos += $padding; + } + } + + $offsets[] = $pos; + $this->add('glyf', $glyf); + + // loca - Index to location + $locastr = ''; + if ((($pos + 1) >> 1) > 0xFFFF) { + $indexToLocFormat = 1; // long format + foreach ($offsets as $offset) { + $locastr .= pack("N", $offset); + } + } else { + $indexToLocFormat = 0; // short format + foreach ($offsets as $offset) { + $locastr .= pack("n", ($offset / 2)); + } + } + + $this->add('loca', $locastr); + + // head - Font header + $head = $this->get_table('head'); + $head = $this->_set_ushort($head, 50, $indexToLocFormat); + $this->add('head', $head); + + fclose($this->fh); + + $stm = ''; + $this->endTTFile($stm); + + return $stm; + } + + function getGlyphData($originalGlyphIdx, &$maxdepth, &$depth, &$points, &$contours) + { + $depth++; + $maxdepth = max($maxdepth, $depth); + + if (count($this->glyphdata[$originalGlyphIdx]['compGlyphs'])) { + foreach ($this->glyphdata[$originalGlyphIdx]['compGlyphs'] as $glyphIdx) { + $this->getGlyphData($glyphIdx, $maxdepth, $depth, $points, $contours); + } + } elseif (($this->glyphdata[$originalGlyphIdx]['nContours'] > 0) && $depth > 0) { // simple + $contours += $this->glyphdata[$originalGlyphIdx]['nContours']; + $points += $this->glyphdata[$originalGlyphIdx]['nPoints']; + } + + $depth--; + } + + function getGlyphs($originalGlyphIdx, &$start, &$glyphSet, &$subsetglyphs) + { + $glyphPos = $this->glyphPos[$originalGlyphIdx]; + $glyphLen = $this->glyphPos[$originalGlyphIdx + 1] - $glyphPos; + + if (!$glyphLen) { + return; + } + + $this->seek($start + $glyphPos); + $numberOfContours = $this->read_short(); + + if ($numberOfContours < 0) { + $this->skip(8); + $flags = GlyphOperator::MORE; + while ($flags & GlyphOperator::MORE) { + $flags = $this->read_ushort(); + $glyphIdx = $this->read_ushort(); + if (!isset($glyphSet[$glyphIdx])) { + $glyphSet[$glyphIdx] = count($subsetglyphs); // old glyphID to new glyphID + $subsetglyphs[$glyphIdx] = true; + } + $savepos = ftell($this->fh); + $this->getGlyphs($glyphIdx, $start, $glyphSet, $subsetglyphs); + $this->seek($savepos); + if ($flags & GlyphOperator::WORDS) { + $this->skip(4); + } else { + $this->skip(2); + } + if ($flags & GlyphOperator::SCALE) { + $this->skip(2); + } elseif ($flags & GlyphOperator::XYSCALE) { + $this->skip(4); + } elseif ($flags & GlyphOperator::TWOBYTWO) { + $this->skip(8); + } + } + } + } + + function getHMTX($numberOfHMetrics, $numGlyphs, &$glyphToChar, $scale) + { + $start = $this->seek_table('hmtx'); + $aw = 0; + $this->charWidths = str_pad('', 256 * 256 * 2, "\x00"); + + if ($this->maxUniChar > 65536) { + $this->charWidths .= str_pad('', 256 * 256 * 2, "\x00"); + } // Plane 1 SMP + + if ($this->maxUniChar > 131072) { + $this->charWidths .= str_pad('', 256 * 256 * 2, "\x00"); + } // Plane 2 SMP + + $nCharWidths = 0; + if (($numberOfHMetrics * 4) < $this->maxStrLenRead) { + $data = $this->get_chunk($start, $numberOfHMetrics * 4); + $arr = unpack('n*', $data); + } else { + $this->seek($start); + } + + for ($glyph = 0; $glyph < $numberOfHMetrics; $glyph++) { + + if (($numberOfHMetrics * 4) < $this->maxStrLenRead) { + $aw = $arr[($glyph * 2) + 1]; + } else { + $aw = $this->read_ushort(); + $lsb = $this->read_ushort(); + } + if (isset($glyphToChar[$glyph]) || $glyph == 0) { + if ($aw >= (1 << 15)) { + $aw = 0; + } + + // 1.03 Some (arabic) fonts have -ve values for width + // although should be unsigned value - comes out as e.g. 65108 (intended -50) + if ($glyph === 0) { + $this->defaultWidth = $scale * $aw; + continue; + } + + foreach ($glyphToChar[$glyph] as $char) { + if ($char != 0 && $char != 65535) { + $w = (int) round($scale * $aw); + if ($w === 0) { + $w = 65535; + } + if ($char < 196608) { + $this->charWidths[$char * 2] = chr($w >> 8); + $this->charWidths[$char * 2 + 1] = chr($w & 0xFF); + $nCharWidths++; + } + } + } + } + } + + $data = $this->get_chunk(($start + $numberOfHMetrics * 4), ($numGlyphs * 2)); + $arr = unpack("n*", $data); + $diff = $numGlyphs - $numberOfHMetrics; + $w = (int) round($scale * $aw); + if ($w === 0) { + $w = 65535; + } + for ($pos = 0; $pos < $diff; $pos++) { + $glyph = $pos + $numberOfHMetrics; + if (isset($glyphToChar[$glyph])) { + foreach ($glyphToChar[$glyph] as $char) { + if ($char != 0 && $char != 65535) { + if ($char < 196608) { + $this->charWidths[$char * 2] = chr($w >> 8); + $this->charWidths[$char * 2 + 1] = chr($w & 0xFF); + $nCharWidths++; + } + } + } + } + } + + // NB 65535 is a set width of 0 + // First bytes define number of chars in font + $this->charWidths[0] = chr($nCharWidths >> 8); + $this->charWidths[1] = chr($nCharWidths & 0xFF); + } + + function getHMetric($numberOfHMetrics, $gid) + { + $start = $this->seek_table("hmtx"); + if ($gid < $numberOfHMetrics) { + $this->seek($start + ($gid * 4)); + $hm = fread($this->fh, 4); + } else { + $this->seek($start + (($numberOfHMetrics - 1) * 4)); + $hm = fread($this->fh, 2); + $this->seek($start + ($numberOfHMetrics * 2) + ($gid * 2)); + $hm .= fread($this->fh, 2); + } + + return $hm; + } + + function getLOCA($indexToLocFormat, $numGlyphs) + { + $start = $this->seek_table('loca'); + $this->glyphPos = []; + if ($indexToLocFormat == 0) { + $data = $this->get_chunk($start, ($numGlyphs * 2) + 2); + $arr = unpack("n*", $data); + for ($n = 0; $n <= $numGlyphs; $n++) { + $this->glyphPos[] = ($arr[$n + 1] * 2); + } + } elseif ($indexToLocFormat == 1) { + $data = $this->get_chunk($start, ($numGlyphs * 4) + 4); + $arr = unpack("N*", $data); + for ($n = 0; $n <= $numGlyphs; $n++) { + $this->glyphPos[] = ($arr[$n + 1]); + } + } else { + throw new \Mpdf\Exception\FontException('Unknown location table format ' . $indexToLocFormat); + } + } + + /** + * CMAP Format 4 + */ + function getCMAP4($unicode_cmap_offset, &$glyphToChar, &$charToGlyph) + { + $this->maxUniChar = 0; + $this->seek($unicode_cmap_offset + 2); + $length = $this->read_ushort(); + $limit = $unicode_cmap_offset + $length; + $this->skip(2); + + $segCount = $this->read_ushort() / 2; + $this->skip(6); + $endCount = []; + + for ($i = 0; $i < $segCount; $i++) { + $endCount[] = $this->read_ushort(); + } + + $this->skip(2); + $startCount = []; + + for ($i = 0; $i < $segCount; $i++) { + $startCount[] = $this->read_ushort(); + } + + $idDelta = []; + + for ($i = 0; $i < $segCount; $i++) { + $idDelta[] = $this->read_short(); + } // ???? was unsigned short + + $idRangeOffset_start = $this->_pos; + $idRangeOffset = []; + + for ($i = 0; $i < $segCount; $i++) { + $idRangeOffset[] = $this->read_ushort(); + } + + for ($n = 0; $n < $segCount; $n++) { + $endpoint = ($endCount[$n] + 1); + for ($unichar = $startCount[$n]; $unichar < $endpoint; $unichar++) { + if ($idRangeOffset[$n] == 0) { + $glyph = ($unichar + $idDelta[$n]) & 0xFFFF; + } else { + $offset = ($unichar - $startCount[$n]) * 2 + $idRangeOffset[$n]; + $offset = $idRangeOffset_start + 2 * $n + $offset; + if ($offset >= $limit) { + $glyph = 0; + } else { + $glyph = $this->get_ushort($offset); + if ($glyph != 0) { + $glyph = ($glyph + $idDelta[$n]) & 0xFFFF; + } + } + } + $charToGlyph[$unichar] = $glyph; + if ($unichar < 196608) { + $this->maxUniChar = max($unichar, $this->maxUniChar); + } + $glyphToChar[$glyph][] = $unichar; + } + } + } + + function endTTFile(&$stm) + { + $stm = ''; + $numTables = count($this->otables); + $searchRange = 1; + $entrySelector = 0; + while ($searchRange * 2 <= $numTables) { + $searchRange *= 2; + $entrySelector += 1; + } + $searchRange *= 16; + $rangeShift = $numTables * 16 - $searchRange; + + // Header + if (_TTF_MAC_HEADER) { + $stm .= pack('Nnnnn', 0x74727565, $numTables, $searchRange, $entrySelector, $rangeShift); // Mac + } else { + $stm .= pack('Nnnnn', 0x00010000, $numTables, $searchRange, $entrySelector, $rangeShift); // Windows + } + + // Table directory + $tables = $this->otables; + ksort($tables); + $offset = 12 + $numTables * 16; + foreach ($tables as $tag => $data) { + if ($tag === 'head') { + $head_start = $offset; + } + $stm .= $tag; + $checksum = $this->calcChecksum($data); + $stm .= pack('nn', $checksum[0], $checksum[1]); + $stm .= pack('NN', $offset, strlen($data)); + $paddedLength = (strlen($data) + 3) & ~3; + $offset += $paddedLength; + } + + // Table data + foreach ($tables as $tag => $data) { + $data .= "\0\0\0"; + $stm .= substr($data, 0, (strlen($data) & ~3)); + } + + $checksum = $this->calcChecksum($stm); + $checksum = $this->sub32([0xB1B0, 0xAFBA], $checksum); + $chk = pack("nn", $checksum[0], $checksum[1]); + $stm = $this->splice($stm, ($head_start + 8), $chk); + + return $stm; + } + + function repackageTTF($file, $TTCfontID = 0, $debug = false, $useOTL = false) + { + $this->useOTL = $useOTL; + $this->filename = $file; + $this->fh = fopen($file, 'rb'); + + if (!$this->fh) { + throw new \Mpdf\Exception\FontException(sprintf('Unable to open file "%s"', $file)); + } + + $this->_pos = 0; + $this->charWidths = ''; + $this->glyphPos = []; + $this->charToGlyph = []; + $this->tables = []; + $this->otables = []; + $this->ascent = 0; + $this->descent = 0; + $this->strikeoutSize = 0; + $this->strikeoutPosition = 0; + $this->numTTCFonts = 0; + $this->TTCFonts = []; + $this->skip(4); + $this->maxUni = 0; + + if ($TTCfontID > 0) { + $this->version = $version = $this->read_ulong(); // TTC Header version now + if (!in_array($version, [0x00010000, 0x00020000], true)) { + throw new \Mpdf\Exception\FontException(sprintf('Error parsing TrueType Collection: version=%s - %s', $version, $file)); + } + $this->numTTCFonts = $this->read_ulong(); + for ($i = 1; $i <= $this->numTTCFonts; $i++) { + $this->TTCFonts[$i]['offset'] = $this->read_ulong(); + } + $this->seek($this->TTCFonts[$TTCfontID]['offset']); + $this->version = $version = $this->read_ulong(); // TTFont version again now + } + + $this->readTableDirectory($debug); + $tags = ['OS/2', 'glyf', 'head', 'hhea', 'hmtx', 'loca', 'maxp', 'name', 'post', 'cvt ', 'fpgm', 'gasp', 'prep']; + + foreach ($tags as $tag) { + if (isset($this->tables[$tag])) { + $this->add($tag, $this->get_table($tag)); + } + } + + if ($useOTL) { + + // maxp - Maximum profile table + $this->seek_table('maxp'); + $this->skip(4); + $numGlyphs = $this->read_ushort(); + + // cmap - Character to glyph index mapping table + $cmap_offset = $this->seek_table('cmap'); + $this->skip(2); + $cmapTableCount = $this->read_ushort(); + $unicode_cmap_offset = 0; + for ($i = 0; $i < $cmapTableCount; $i++) { + $platformID = $this->read_ushort(); + $encodingID = $this->read_ushort(); + $offset = $this->read_ulong(); + $save_pos = $this->_pos; + if (($platformID == 3 && $encodingID == 1) || $platformID == 0) { // Microsoft, Unicode + $format = $this->get_ushort($cmap_offset + $offset); + if ($format == 4) { + $unicode_cmap_offset = $cmap_offset + $offset; + break; + } + } + $this->seek($save_pos); + } + + if (!$unicode_cmap_offset) { + throw new \Mpdf\Exception\FontException(sprintf('Font "%s" does not have cmap for Unicode (platform 3, encoding 1, format 4, or platform 0, any encoding, format 4)', $this->filename)); + } + + $glyphToChar = []; + $charToGlyph = []; + $this->getCMAP4($unicode_cmap_offset, $glyphToChar, $charToGlyph); + + // Map Unmapped glyphs - from $numGlyphs + $bctr = 0xE000; + for ($gid = 1; $gid < $numGlyphs; $gid++) { + if (!isset($glyphToChar[$gid])) { + while (isset($charToGlyph[$bctr])) { + $bctr++; + } // Avoid overwriting a glyph already mapped in PUA (6,400) + if ($bctr > 0xF8FF) { + throw new \Mpdf\Exception\FontException("Problem. Trying to repackage TF file; not enough space for unmapped glyphs"); + } + $glyphToChar[$gid][] = $bctr; + $charToGlyph[$bctr] = $gid; + $bctr++; + } + } + + // Sort CID2GID map into segments of contiguous codes + unset($charToGlyph[65535]); + unset($charToGlyph[0]); + + ksort($charToGlyph); + $rangeid = 0; + $range = []; + $prevcid = -2; + $prevglidx = -1; + + // for each character + foreach ($charToGlyph as $cid => $glidx) { + if ($cid == ($prevcid + 1) && $glidx == ($prevglidx + 1)) { + $range[$rangeid][] = $glidx; + } else { + // new range + $rangeid = $cid; + $range[$rangeid] = []; + $range[$rangeid][] = $glidx; + } + $prevcid = $cid; + $prevglidx = $glidx; + } + + // CMap table + // cmap - Character to glyph mapping + $segCount = count($range) + 1; // + 1 Last segment has missing character 0xFFFF + $searchRange = 1; + $entrySelector = 0; + + while ($searchRange * 2 <= $segCount) { + $searchRange *= 2; + ++$entrySelector; + } + + $searchRange *= 2; + $rangeShift = $segCount * 2 - $searchRange; + $length = 16 + (8 * $segCount) + ($numGlyphs + 1); + $cmap = [0, 3, // Index : version, number of encoding subtables + 0, 0, // Encoding Subtable : platform (UNI=0), encoding 0 + 0, 28, // Encoding Subtable : offset (hi,lo) + 0, 3, // Encoding Subtable : platform (UNI=0), encoding 3 + 0, 28, // Encoding Subtable : offset (hi,lo) + 3, 1, // Encoding Subtable : platform (MS=3), encoding 1 + 0, 28, // Encoding Subtable : offset (hi,lo) + 4, $length, 0, // Format 4 Mapping subtable: format, length, language + $segCount * 2, + $searchRange, + $entrySelector, + $rangeShift]; + + // endCode(s) + foreach ($range as $start => $subrange) { + $endCode = $start + (count($subrange) - 1); + $cmap[] = $endCode; // endCode(s) + } + $cmap[] = 0xFFFF; // endCode of last Segment + $cmap[] = 0; // reservedPad + + // startCode(s) + foreach ($range as $start => $subrange) { + $cmap[] = $start; // startCode(s) + } + $cmap[] = 0xFFFF; // startCode of last Segment + + // idDelta(s) + foreach ($range as $start => $subrange) { + $idDelta = -($start - $subrange[0]); + $cmap[] = $idDelta; // idDelta(s) + } + + $cmap[] = 1; // idDelta of last Segment + // idRangeOffset(s) + foreach ($range as $subrange) { + $cmap[] = 0; // idRangeOffset[segCount] Offset in bytes to glyph indexArray, or 0 + } + + $cmap[] = 0; // idRangeOffset of last Segment + foreach ($range as $subrange) { + foreach ($subrange as $glidx) { + $cmap[] = $glidx; + } + } + $cmap[] = 0; // Mapping for last character + $cmapstr = ''; + foreach ($cmap as $cm) { + $cmapstr .= pack('n', $cm); + } + + $this->add('cmap', $cmapstr); + } else { + $this->add('cmap', $this->get_table('cmap')); + } + + fclose($this->fh); + $stm = ''; + $this->endTTFile($stm); + + return $stm; + } +} diff --git a/Mpdf/TTFontFileAnalysis.php b/Mpdf/TTFontFileAnalysis.php new file mode 100644 index 0000000..2851ea0 --- /dev/null +++ b/Mpdf/TTFontFileAnalysis.php @@ -0,0 +1,454 @@ +<?php + +namespace Mpdf; + +class TTFontFileAnalysis extends TTFontFile +{ + + // Used to get font information from files in directory + function extractCoreInfo($file, $TTCfontID = 0) + { + $this->filename = $file; + $this->fh = fopen($file, 'rb'); + if (!$this->fh) { + throw new \Mpdf\MpdfException('ERROR - Can\'t open file ' . $file); + } + $this->_pos = 0; + $this->charWidths = ''; + $this->glyphPos = []; + $this->charToGlyph = []; + $this->tables = []; + $this->otables = []; + $this->ascent = 0; + $this->descent = 0; + $this->numTTCFonts = 0; + $this->TTCFonts = []; + $this->version = $version = $this->read_ulong(); + $this->panose = []; // mPDF 5.0 + + if ($version == 0x4F54544F) { + throw new \Mpdf\MpdfException('ERROR - NOT ADDED as Postscript outlines are not supported - ' . $file); + } + + if ($version == 0x74746366) { + if ($TTCfontID > 0) { + $this->version = $version = $this->read_ulong(); // TTC Header version now + if (!in_array($version, [0x00010000, 0x00020000])) { + throw new \Mpdf\MpdfException("ERROR - NOT ADDED as Error parsing TrueType Collection: version=" . $version . " - " . $file); + } + } else { + throw new \Mpdf\MpdfException("ERROR - Error parsing TrueType Collection - " . $file); + } + $this->numTTCFonts = $this->read_ulong(); + for ($i = 1; $i <= $this->numTTCFonts; $i++) { + $this->TTCFonts[$i]['offset'] = $this->read_ulong(); + } + $this->seek($this->TTCFonts[$TTCfontID]['offset']); + $this->version = $version = $this->read_ulong(); // TTFont version again now + $this->readTableDirectory(false); + } else { + if (!in_array($version, [0x00010000, 0x74727565])) { + throw new \Mpdf\MpdfException("ERROR - NOT ADDED as Not a TrueType font: version=" . $version . " - " . $file); + } + $this->readTableDirectory(false); + } + + /* Included for testing... + $cmap_offset = $this->seek_table("cmap"); + $this->skip(2); + $cmapTableCount = $this->read_ushort(); + $unicode_cmap_offset = 0; + for ($i=0;$i<$cmapTableCount;$i++) { + $x[$i]['platformId'] = $this->read_ushort(); + $x[$i]['encodingId'] = $this->read_ushort(); + $x[$i]['offset'] = $this->read_ulong(); + $save_pos = $this->_pos; + $x[$i]['format'] = $this->get_ushort($cmap_offset + $x[$i]['offset'] ); + $this->seek($save_pos ); + } + print_r($x); exit; + */ + /////////////////////////////////// + // name - Naming table + /////////////////////////////////// + + /* Test purposes - displays table of names + $name_offset = $this->seek_table("name"); + $format = $this->read_ushort(); + if ($format != 0 && $format != 1) // mPDF 5.3.73 + die("Unknown name table format ".$format); + $numRecords = $this->read_ushort(); + $string_data_offset = $name_offset + $this->read_ushort(); + for ($i=0;$i<$numRecords; $i++) { + $x[$i]['platformId'] = $this->read_ushort(); + $x[$i]['encodingId'] = $this->read_ushort(); + $x[$i]['languageId'] = $this->read_ushort(); + $x[$i]['nameId'] = $this->read_ushort(); + $x[$i]['length'] = $this->read_ushort(); + $x[$i]['offset'] = $this->read_ushort(); + + $N = ''; + if ($x[$i]['platformId'] == 1 && $x[$i]['encodingId'] == 0 && $x[$i]['languageId'] == 0) { // Roman + $opos = $this->_pos; + $N = $this->get_chunk($string_data_offset + $x[$i]['offset'] , $x[$i]['length'] ); + $this->_pos = $opos; + $this->seek($opos); + } + else { // Unicode + $opos = $this->_pos; + $this->seek($string_data_offset + $x[$i]['offset'] ); + $length = $x[$i]['length'] ; + if ($length % 2 != 0) + $length -= 1; + // die("PostScript name is UTF-16BE string of odd length"); + $length /= 2; + $N = ''; + while ($length > 0) { + $char = $this->read_ushort(); + $N .= (chr($char)); + $length -= 1; + } + $this->_pos = $opos; + $this->seek($opos); + } + $x[$i]['names'][$nameId] = $N; + } + print_r($x); exit; + */ + + $name_offset = $this->seek_table("name"); + $format = $this->read_ushort(); + if ($format != 0 && $format != 1) { // mPDF 5.3.73 + throw new \Mpdf\MpdfException("ERROR - NOT ADDED as Unknown name table format " . $format . " - " . $file); + } + $numRecords = $this->read_ushort(); + $string_data_offset = $name_offset + $this->read_ushort(); + $names = [1 => '', 2 => '', 3 => '', 4 => '', 6 => '']; + $K = array_keys($names); + $nameCount = count($names); + for ($i = 0; $i < $numRecords; $i++) { + $platformId = $this->read_ushort(); + $encodingId = $this->read_ushort(); + $languageId = $this->read_ushort(); + $nameId = $this->read_ushort(); + $length = $this->read_ushort(); + $offset = $this->read_ushort(); + if (!in_array($nameId, $K)) { + continue; + } + $N = ''; + if ($platformId == 3 && $encodingId == 1 && $languageId == 0x409) { // Microsoft, Unicode, US English, PS Name + $opos = $this->_pos; + $this->seek($string_data_offset + $offset); + if ($length % 2 != 0) { + $length += 1; + } + $length /= 2; + $N = ''; + while ($length > 0) { + $char = $this->read_ushort(); + $N .= (chr($char)); + $length -= 1; + } + $this->_pos = $opos; + $this->seek($opos); + } elseif ($platformId == 1 && $encodingId == 0 && $languageId == 0) { // Macintosh, Roman, English, PS Name + $opos = $this->_pos; + $N = $this->get_chunk($string_data_offset + $offset, $length); + $this->_pos = $opos; + $this->seek($opos); + } + if ($N && $names[$nameId] == '') { + $names[$nameId] = $N; + $nameCount -= 1; + if ($nameCount == 0) { + break; + } + } + } + if ($names[6]) { + $psName = preg_replace('/ /', '-', $names[6]); + } elseif ($names[4]) { + $psName = preg_replace('/ /', '-', $names[4]); + } elseif ($names[1]) { + $psName = preg_replace('/ /', '-', $names[1]); + } else { + $psName = ''; + } + if (!$names[1] && !$psName) { + throw new \Mpdf\MpdfException("ERROR - NOT ADDED as Could not find valid font name - " . $file); + } + $this->name = $psName; + if ($names[1]) { + $this->familyName = $names[1]; + } else { + $this->familyName = $psName; + } + if ($names[2]) { + $this->styleName = $names[2]; + } else { + $this->styleName = 'Regular'; + } + + /////////////////////////////////// + // head - Font header table + /////////////////////////////////// + $this->seek_table("head"); + $ver_maj = $this->read_ushort(); + $ver_min = $this->read_ushort(); + if ($ver_maj != 1) { + throw new \Mpdf\MpdfException('ERROR - NOT ADDED as Unknown head table version ' . $ver_maj . '.' . $ver_min . " - " . $file); + } + $this->fontRevision = $this->read_ushort() . $this->read_ushort(); + $this->skip(4); + $magic = $this->read_ulong(); + if ($magic != 0x5F0F3CF5) { + throw new \Mpdf\MpdfException('ERROR - NOT ADDED as Invalid head table magic ' . $magic . " - " . $file); + } + $this->skip(2); + $this->unitsPerEm = $unitsPerEm = $this->read_ushort(); + $scale = 1000 / $unitsPerEm; + $this->skip(24); + $macStyle = $this->read_short(); + $this->skip(4); + $indexLocFormat = $this->read_short(); + + /////////////////////////////////// + // OS/2 - OS/2 and Windows metrics table + /////////////////////////////////// + $sFamily = ''; + $panose = ''; + $fsSelection = ''; + if (isset($this->tables["OS/2"])) { + $this->seek_table("OS/2"); + $this->skip(30); + $sF = $this->read_short(); + $sFamily = ($sF >> 8); + $this->_pos += 10; //PANOSE = 10 byte length + $panose = fread($this->fh, 10); + $this->panose = []; + for ($p = 0; $p < strlen($panose); $p++) { + $this->panose[] = ord($panose[$p]); + } + $this->skip(20); + $fsSelection = $this->read_short(); + } + + /////////////////////////////////// + // post - PostScript table + /////////////////////////////////// + $this->seek_table("post"); + $this->skip(4); + $this->italicAngle = $this->read_short() + $this->read_ushort() / 65536.0; + $this->skip(4); + $isFixedPitch = $this->read_ulong(); + + + + /////////////////////////////////// + // cmap - Character to glyph index mapping table + /////////////////////////////////// + $cmap_offset = $this->seek_table("cmap"); + $this->skip(2); + $cmapTableCount = $this->read_ushort(); + $unicode_cmap_offset = 0; + for ($i = 0; $i < $cmapTableCount; $i++) { + $platformID = $this->read_ushort(); + $encodingID = $this->read_ushort(); + $offset = $this->read_ulong(); + $save_pos = $this->_pos; + if (($platformID == 3 && $encodingID == 1) || $platformID == 0) { // Microsoft, Unicode + $format = $this->get_ushort($cmap_offset + $offset); + if ($format == 4) { + if (!$unicode_cmap_offset) { + $unicode_cmap_offset = $cmap_offset + $offset; + } + } + } elseif ((($platformID == 3 && $encodingID == 10) || $platformID == 0)) { // Microsoft, Unicode Format 12 table HKCS + $format = $this->get_ushort($cmap_offset + $offset); + if ($format == 12) { + $unicode_cmap_offset = $cmap_offset + $offset; + break; + } + } + $this->seek($save_pos); + } + + if (!$unicode_cmap_offset) { + throw new \Mpdf\MpdfException('ERROR - Font (' . $this->filename . ') NOT ADDED as it is not Unicode encoded, and cannot be used by mPDF'); + } + + $rtl = false; + $indic = false; + $cjk = false; + $sip = false; + $smp = false; + $pua = false; + $puaag = false; + $glyphToChar = []; + $unAGlyphs = ''; + // Format 12 CMAP does characters above Unicode BMP i.e. some HKCS characters U+20000 and above + if ($format == 12) { + $this->seek($unicode_cmap_offset + 4); + $length = $this->read_ulong(); + $limit = $unicode_cmap_offset + $length; + $this->skip(4); + $nGroups = $this->read_ulong(); + for ($i = 0; $i < $nGroups; $i++) { + $startCharCode = $this->read_ulong(); + $endCharCode = $this->read_ulong(); + $startGlyphCode = $this->read_ulong(); + if (($endCharCode > 0x20000 && $endCharCode < 0x2A6DF) || ($endCharCode > 0x2F800 && $endCharCode < 0x2FA1F)) { + $sip = true; + } + if ($endCharCode > 0x10000 && $endCharCode < 0x1FFFF) { + $smp = true; + } + if (($endCharCode > 0x0590 && $endCharCode < 0x077F) || ($endCharCode > 0xFE70 && $endCharCode < 0xFEFF) || ($endCharCode > 0xFB50 && $endCharCode < 0xFDFF)) { + $rtl = true; + } + if ($endCharCode > 0x0900 && $endCharCode < 0x0DFF) { + $indic = true; + } + if ($endCharCode > 0xE000 && $endCharCode < 0xF8FF) { + $pua = true; + if ($endCharCode > 0xF500 && $endCharCode < 0xF7FF) { + $puaag = true; + } + } + if (($endCharCode > 0x2E80 && $endCharCode < 0x4DC0) || ($endCharCode > 0x4E00 && $endCharCode < 0xA4CF) || ($endCharCode > 0xAC00 && $endCharCode < 0xD7AF) || ($endCharCode > 0xF900 && $endCharCode < 0xFAFF) || ($endCharCode > 0xFE30 && $endCharCode < 0xFE4F)) { + $cjk = true; + } + + $offset = 0; + // Get each glyphToChar - only point if going to analyse un-mapped Arabic Glyphs + if (isset($this->tables['post'])) { + for ($unichar = $startCharCode; $unichar <= $endCharCode; $unichar++) { + $glyph = $startGlyphCode + $offset; + $offset++; + $glyphToChar[$glyph][] = $unichar; + } + } + } + } else { // Format 4 CMap + $this->seek($unicode_cmap_offset + 2); + $length = $this->read_ushort(); + $limit = $unicode_cmap_offset + $length; + $this->skip(2); + + $segCount = $this->read_ushort() / 2; + $this->skip(6); + $endCount = []; + for ($i = 0; $i < $segCount; $i++) { + $endCount[] = $this->read_ushort(); + } + $this->skip(2); + $startCount = []; + for ($i = 0; $i < $segCount; $i++) { + $startCount[] = $this->read_ushort(); + } + $idDelta = []; + for ($i = 0; $i < $segCount; $i++) { + $idDelta[] = $this->read_short(); + } + $idRangeOffset_start = $this->_pos; + $idRangeOffset = []; + for ($i = 0; $i < $segCount; $i++) { + $idRangeOffset[] = $this->read_ushort(); + } + + for ($n = 0; $n < $segCount; $n++) { + if (($endCount[$n] > 0x0590 && $endCount[$n] < 0x077F) || ($endCount[$n] > 0xFE70 && $endCount[$n] < 0xFEFF) || ($endCount[$n] > 0xFB50 && $endCount[$n] < 0xFDFF)) { + $rtl = true; + } + if ($endCount[$n] > 0x0900 && $endCount[$n] < 0x0DFF) { + $indic = true; + } + if (($endCount[$n] > 0x2E80 && $endCount[$n] < 0x4DC0) || ($endCount[$n] > 0x4E00 && $endCount[$n] < 0xA4CF) || ($endCount[$n] > 0xAC00 && $endCount[$n] < 0xD7AF) || ($endCount[$n] > 0xF900 && $endCount[$n] < 0xFAFF) || ($endCount[$n] > 0xFE30 && $endCount[$n] < 0xFE4F)) { + $cjk = true; + } + if ($endCount[$n] > 0xE000 && $endCount[$n] < 0xF8FF) { + $pua = true; + if ($endCount[$n] > 0xF500 && $endCount[$n] < 0xF7FF) { + $puaag = true; + } + } + // Get each glyphToChar - only point if going to analyse un-mapped Arabic Glyphs + if (isset($this->tables['post'])) { + $endpoint = ($endCount[$n] + 1); + for ($unichar = $startCount[$n]; $unichar < $endpoint; $unichar++) { + if ($idRangeOffset[$n] == 0) { + $glyph = ($unichar + $idDelta[$n]) & 0xFFFF; + } else { + $offset = ($unichar - $startCount[$n]) * 2 + $idRangeOffset[$n]; + $offset = $idRangeOffset_start + 2 * $n + $offset; + if ($offset >= $limit) { + $glyph = 0; + } else { + $glyph = $this->get_ushort($offset); + if ($glyph != 0) { + $glyph = ($glyph + $idDelta[$n]) & 0xFFFF; + } + } + } + $glyphToChar[$glyph][] = $unichar; + } + } + } + } + + + $bold = false; + $italic = false; + $ftype = ''; + if ($macStyle & (1 << 0)) { + $bold = true; + } // bit 0 bold + elseif ($fsSelection & (1 << 5)) { + $bold = true; + } // 5 BOLD Characters are emboldened + + if ($macStyle & (1 << 1)) { + $italic = true; + } // bit 1 italic + elseif ($fsSelection & (1 << 0)) { + $italic = true; + } // 0 ITALIC Font contains Italic characters, otherwise they are upright + elseif ($this->italicAngle <> 0) { + $italic = true; + } + + if ($isFixedPitch) { + $ftype = 'mono'; + } elseif ($sFamily > 0 && $sFamily < 8) { + $ftype = 'serif'; + } elseif ($sFamily == 8) { + $ftype = 'sans'; + } elseif ($sFamily == 10) { + $ftype = 'cursive'; + } + // Use PANOSE + if ($panose) { + $bFamilyType = ord($panose[0]); + if ($bFamilyType == 2) { + $bSerifStyle = ord($panose[1]); + if (!$ftype) { + if ($bSerifStyle > 1 && $bSerifStyle < 11) { + $ftype = 'serif'; + } elseif ($bSerifStyle > 10) { + $ftype = 'sans'; + } + } + $bProportion = ord($panose[3]); + if ($bProportion == 9 || $bProportion == 1) { + $ftype = 'mono'; + } // ==1 i.e. No Fit needed for OCR-a and -b + } elseif ($bFamilyType == 3) { + $ftype = 'cursive'; + } + } + + fclose($this->fh); + return [$this->familyName, $bold, $italic, $ftype, $TTCfontID, $rtl, $indic, $cjk, $sip, $smp, $puaag, $pua, $unAGlyphs]; + } +} diff --git a/Mpdf/TableOfContents.php b/Mpdf/TableOfContents.php new file mode 100644 index 0000000..82ce748 --- /dev/null +++ b/Mpdf/TableOfContents.php @@ -0,0 +1,908 @@ +<?php + +namespace Mpdf; + +use Mpdf\Utils\Arrays; +use DeepCopy\DeepCopy; + +class TableOfContents +{ + + private $mpdf; + + private $sizeConverter; + + var $_toc; + + var $TOCmark; + + var $TOCoutdent; // mPDF 5.6.31 + + var $TOCpreHTML; + + var $TOCpostHTML; + + var $TOCbookmarkText; + + var $TOCusePaging; + + var $TOCuseLinking; + + var $TOCorientation; + + var $TOC_margin_left; + + var $TOC_margin_right; + + var $TOC_margin_top; + + var $TOC_margin_bottom; + + var $TOC_margin_header; + + var $TOC_margin_footer; + + var $TOC_odd_header_name; + + var $TOC_even_header_name; + + var $TOC_odd_footer_name; + + var $TOC_even_footer_name; + + var $TOC_odd_header_value; + + var $TOC_even_header_value; + + var $TOC_odd_footer_value; + + var $TOC_even_footer_value; + + var $TOC_page_selector; + + var $TOC_resetpagenum; // mPDF 6 + + var $TOC_pagenumstyle; // mPDF 6 + + var $TOC_suppress; // mPDF 6 + + var $TOCsheetsize; + + var $m_TOC; + + /** + * @var bool Determine if the TOC should be cloned to calculate the correct page numbers + */ + protected $tocTocPaintBegun = false; + + public function __construct(Mpdf $mpdf, SizeConverter $sizeConverter) + { + $this->mpdf = $mpdf; + $this->sizeConverter = $sizeConverter; + + $this->_toc = []; + $this->TOCmark = 0; + $this->m_TOC = []; + } + + /** + * Mark the TOC Paint as having begun + */ + public function beginTocPaint() + { + $this->tocTocPaintBegun = true; + } + + public function TOCpagebreak( + $tocfont = '', + $tocfontsize = '', + $tocindent = '', + $TOCusePaging = true, + $TOCuseLinking = '', + $toc_orientation = '', + $toc_mgl = '', + $toc_mgr = '', + $toc_mgt = '', + $toc_mgb = '', + $toc_mgh = '', + $toc_mgf = '', + $toc_ohname = '', + $toc_ehname = '', + $toc_ofname = '', + $toc_efname = '', + $toc_ohvalue = 0, + $toc_ehvalue = 0, + $toc_ofvalue = 0, + $toc_efvalue = 0, + $toc_preHTML = '', + $toc_postHTML = '', + $toc_bookmarkText = '', + $resetpagenum = '', + $pagenumstyle = '', + $suppress = '', + $orientation = '', + $mgl = '', + $mgr = '', + $mgt = '', + $mgb = '', + $mgh = '', + $mgf = '', + $ohname = '', + $ehname = '', + $ofname = '', + $efname = '', + $ohvalue = 0, + $ehvalue = 0, + $ofvalue = 0, + $efvalue = 0, + $toc_id = 0, + $pagesel = '', + $toc_pagesel = '', + $sheetsize = '', + $toc_sheetsize = '', + $tocoutdent = '', + $toc_resetpagenum = '', + $toc_pagenumstyle = '', + $toc_suppress = '' + ) { + + if (strtoupper($toc_id) == 'ALL') { + $toc_id = '_mpdf_all'; + } elseif (!$toc_id) { + $toc_id = 0; + } else { + $toc_id = strtolower($toc_id); + } + + if ($TOCusePaging === false || strtolower($TOCusePaging) == "off" || $TOCusePaging === 0 || $TOCusePaging === "0" || $TOCusePaging === "") { + $TOCusePaging = false; + } else { + $TOCusePaging = true; + } + if (!$TOCuseLinking) { + $TOCuseLinking = false; + } + if ($toc_id) { + $this->m_TOC[$toc_id]['TOCmark'] = $this->mpdf->page; + $this->m_TOC[$toc_id]['TOCoutdent'] = $tocoutdent; + $this->m_TOC[$toc_id]['TOCorientation'] = $toc_orientation; + $this->m_TOC[$toc_id]['TOCuseLinking'] = $TOCuseLinking; + $this->m_TOC[$toc_id]['TOCusePaging'] = $TOCusePaging; + + if ($toc_preHTML) { + $this->m_TOC[$toc_id]['TOCpreHTML'] = $toc_preHTML; + } + if ($toc_postHTML) { + $this->m_TOC[$toc_id]['TOCpostHTML'] = $toc_postHTML; + } + if ($toc_bookmarkText) { + $this->m_TOC[$toc_id]['TOCbookmarkText'] = $toc_bookmarkText; + } + + $this->m_TOC[$toc_id]['TOC_margin_left'] = $toc_mgl; + $this->m_TOC[$toc_id]['TOC_margin_right'] = $toc_mgr; + $this->m_TOC[$toc_id]['TOC_margin_top'] = $toc_mgt; + $this->m_TOC[$toc_id]['TOC_margin_bottom'] = $toc_mgb; + $this->m_TOC[$toc_id]['TOC_margin_header'] = $toc_mgh; + $this->m_TOC[$toc_id]['TOC_margin_footer'] = $toc_mgf; + $this->m_TOC[$toc_id]['TOC_odd_header_name'] = $toc_ohname; + $this->m_TOC[$toc_id]['TOC_even_header_name'] = $toc_ehname; + $this->m_TOC[$toc_id]['TOC_odd_footer_name'] = $toc_ofname; + $this->m_TOC[$toc_id]['TOC_even_footer_name'] = $toc_efname; + $this->m_TOC[$toc_id]['TOC_odd_header_value'] = $toc_ohvalue; + $this->m_TOC[$toc_id]['TOC_even_header_value'] = $toc_ehvalue; + $this->m_TOC[$toc_id]['TOC_odd_footer_value'] = $toc_ofvalue; + $this->m_TOC[$toc_id]['TOC_even_footer_value'] = $toc_efvalue; + $this->m_TOC[$toc_id]['TOC_page_selector'] = $toc_pagesel; + $this->m_TOC[$toc_id]['TOC_resetpagenum'] = $toc_resetpagenum; // mPDF 6 + $this->m_TOC[$toc_id]['TOC_pagenumstyle'] = $toc_pagenumstyle; // mPDF 6 + $this->m_TOC[$toc_id]['TOC_suppress'] = $toc_suppress; // mPDF 6 + $this->m_TOC[$toc_id]['TOCsheetsize'] = $toc_sheetsize; + } else { + $this->TOCmark = $this->mpdf->page; + $this->TOCoutdent = $tocoutdent; + $this->TOCorientation = $toc_orientation; + $this->TOCuseLinking = $TOCuseLinking; + $this->TOCusePaging = $TOCusePaging; + + if ($toc_preHTML) { + $this->TOCpreHTML = $toc_preHTML; + } + if ($toc_postHTML) { + $this->TOCpostHTML = $toc_postHTML; + } + if ($toc_bookmarkText) { + $this->TOCbookmarkText = $toc_bookmarkText; + } + + $this->TOC_margin_left = $toc_mgl; + $this->TOC_margin_right = $toc_mgr; + $this->TOC_margin_top = $toc_mgt; + $this->TOC_margin_bottom = $toc_mgb; + $this->TOC_margin_header = $toc_mgh; + $this->TOC_margin_footer = $toc_mgf; + $this->TOC_odd_header_name = $toc_ohname; + $this->TOC_even_header_name = $toc_ehname; + $this->TOC_odd_footer_name = $toc_ofname; + $this->TOC_even_footer_name = $toc_efname; + $this->TOC_odd_header_value = $toc_ohvalue; + $this->TOC_even_header_value = $toc_ehvalue; + $this->TOC_odd_footer_value = $toc_ofvalue; + $this->TOC_even_footer_value = $toc_efvalue; + $this->TOC_page_selector = $toc_pagesel; + $this->TOC_resetpagenum = $toc_resetpagenum; // mPDF 6 + $this->TOC_pagenumstyle = $toc_pagenumstyle; // mPDF 6 + $this->TOC_suppress = $toc_suppress; // mPDF 6 + $this->TOCsheetsize = $toc_sheetsize; + } + } + + /** + * Initiate, and Mark a place for the Table of Contents to be inserted + */ + public function TOC( + $tocfont = '', + $tocfontsize = 0, + $tocindent = 0, + $resetpagenum = '', + $pagenumstyle = '', + $suppress = '', + $toc_orientation = '', + $TOCusePaging = true, + $TOCuseLinking = false, + $toc_id = 0, + $tocoutdent = '', + $toc_resetpagenum = '', + $toc_pagenumstyle = '', + $toc_suppress = '' + ) { + + if (strtoupper($toc_id) == 'ALL') { + $toc_id = '_mpdf_all'; + } elseif (!$toc_id) { + $toc_id = 0; + } else { + $toc_id = strtolower($toc_id); + } + // To use odd and even pages + // Cannot start table of contents on an even page + if (($this->mpdf->mirrorMargins) && (($this->mpdf->page) % 2 == 0)) { // EVEN + if ($this->mpdf->ColActive) { + if (count($this->mpdf->columnbuffer)) { + $this->mpdf->printcolumnbuffer(); + } + } + $this->mpdf->AddPage($this->mpdf->CurOrientation, '', $resetpagenum, $pagenumstyle, $suppress); + } else { + $this->mpdf->PageNumSubstitutions[] = ['from' => $this->mpdf->page, 'reset' => $resetpagenum, 'type' => $pagenumstyle, 'suppress' => $suppress]; + } + if ($toc_id) { + $this->m_TOC[$toc_id]['TOCmark'] = $this->mpdf->page; + $this->m_TOC[$toc_id]['TOCoutdent'] = $tocoutdent; + $this->m_TOC[$toc_id]['TOCorientation'] = $toc_orientation; + $this->m_TOC[$toc_id]['TOCuseLinking'] = $TOCuseLinking; + $this->m_TOC[$toc_id]['TOCusePaging'] = $TOCusePaging; + $this->m_TOC[$toc_id]['TOC_resetpagenum'] = $toc_resetpagenum; // mPDF 6 + $this->m_TOC[$toc_id]['TOC_pagenumstyle'] = $toc_pagenumstyle; // mPDF 6 + $this->m_TOC[$toc_id]['TOC_suppress'] = $toc_suppress; // mPDF 6 + } else { + $this->TOCmark = $this->mpdf->page; + $this->TOCoutdent = $tocoutdent; + $this->TOCorientation = $toc_orientation; + $this->TOCuseLinking = $TOCuseLinking; + $this->TOCusePaging = $TOCusePaging; + $this->TOC_resetpagenum = $toc_resetpagenum; // mPDF 6 + $this->TOC_pagenumstyle = $toc_pagenumstyle; // mPDF 6 + $this->TOC_suppress = $toc_suppress; // mPDF 6 + } + } + + public function insertTOC() + { + /* + * Fix the TOC page numbering problem + * + * To do this, the current class is deep cloned and then the TOC functionality run. The correct page + * numbers are calculated when the TOC pages are moved into position in the cloned object (see Mpdf::MovePages). + * It's then a matter of copying the correct page numbers to the original object and letting the TOC functionality + * run as per normal. + * + * See https://github.com/mpdf/mpdf/issues/642 + */ + if (!$this->tocTocPaintBegun) { + $copier = new DeepCopy(true); + $tocClassClone = $copier->copy($this); + $tocClassClone->beginTocPaint(); + $tocClassClone->insertTOC(); + $this->_toc = $tocClassClone->_toc; + } + + $notocs = 0; + if ($this->TOCmark) { + $notocs = 1; + } + $notocs += count($this->m_TOC); + + if ($notocs == 0) { + return; + } + + if (count($this->m_TOC)) { + reset($this->m_TOC); + } + $added_toc_pages = 0; + + if ($this->mpdf->ColActive) { + $this->mpdf->SetColumns(0); + } + if (($this->mpdf->mirrorMargins) && (($this->mpdf->page) % 2 == 1)) { // ODD + $this->mpdf->AddPage($this->mpdf->CurOrientation); + $extrapage = true; + } else { + $extrapage = false; + } + + for ($toci = 0; $toci < $notocs; $toci++) { + if ($toci == 0 && $this->TOCmark) { + $toc_id = 0; + $toc_page = $this->TOCmark; + $tocoutdent = $this->TOCoutdent; + $toc_orientation = $this->TOCorientation; + $TOCuseLinking = $this->TOCuseLinking; + $TOCusePaging = $this->TOCusePaging; + $toc_preHTML = $this->TOCpreHTML; + $toc_postHTML = $this->TOCpostHTML; + $toc_bookmarkText = $this->TOCbookmarkText; + $toc_mgl = $this->TOC_margin_left; + $toc_mgr = $this->TOC_margin_right; + $toc_mgt = $this->TOC_margin_top; + $toc_mgb = $this->TOC_margin_bottom; + $toc_mgh = $this->TOC_margin_header; + $toc_mgf = $this->TOC_margin_footer; + $toc_ohname = $this->TOC_odd_header_name; + $toc_ehname = $this->TOC_even_header_name; + $toc_ofname = $this->TOC_odd_footer_name; + $toc_efname = $this->TOC_even_footer_name; + $toc_ohvalue = $this->TOC_odd_header_value; + $toc_ehvalue = $this->TOC_even_header_value; + $toc_ofvalue = $this->TOC_odd_footer_value; + $toc_efvalue = $this->TOC_even_footer_value; + $toc_page_selector = $this->TOC_page_selector; + $toc_resetpagenum = $this->TOC_resetpagenum; // mPDF 6 + $toc_pagenumstyle = $this->TOC_pagenumstyle; // mPDF 6 + $toc_suppress = $this->TOC_suppress; // mPDF 6 + $toc_sheet_size = (isset($this->TOCsheetsize) ? $this->TOCsheetsize : ''); + } else { + $arr = current($this->m_TOC); + + $toc_id = key($this->m_TOC); + $toc_page = $this->m_TOC[$toc_id]['TOCmark']; + $tocoutdent = $this->m_TOC[$toc_id]['TOCoutdent']; + $toc_orientation = $this->m_TOC[$toc_id]['TOCorientation']; + $TOCuseLinking = $this->m_TOC[$toc_id]['TOCuseLinking']; + $TOCusePaging = $this->m_TOC[$toc_id]['TOCusePaging']; + if (isset($this->m_TOC[$toc_id]['TOCpreHTML'])) { + $toc_preHTML = $this->m_TOC[$toc_id]['TOCpreHTML']; + } else { + $toc_preHTML = ''; + } + if (isset($this->m_TOC[$toc_id]['TOCpostHTML'])) { + $toc_postHTML = $this->m_TOC[$toc_id]['TOCpostHTML']; + } else { + $toc_postHTML = ''; + } + if (isset($this->m_TOC[$toc_id]['TOCbookmarkText'])) { + $toc_bookmarkText = $this->m_TOC[$toc_id]['TOCbookmarkText']; + } else { + $toc_bookmarkText = ''; + } // *BOOKMARKS* + $toc_mgl = $this->m_TOC[$toc_id]['TOC_margin_left']; + $toc_mgr = $this->m_TOC[$toc_id]['TOC_margin_right']; + $toc_mgt = $this->m_TOC[$toc_id]['TOC_margin_top']; + $toc_mgb = $this->m_TOC[$toc_id]['TOC_margin_bottom']; + $toc_mgh = $this->m_TOC[$toc_id]['TOC_margin_header']; + $toc_mgf = $this->m_TOC[$toc_id]['TOC_margin_footer']; + $toc_ohname = $this->m_TOC[$toc_id]['TOC_odd_header_name']; + $toc_ehname = $this->m_TOC[$toc_id]['TOC_even_header_name']; + $toc_ofname = $this->m_TOC[$toc_id]['TOC_odd_footer_name']; + $toc_efname = $this->m_TOC[$toc_id]['TOC_even_footer_name']; + $toc_ohvalue = $this->m_TOC[$toc_id]['TOC_odd_header_value']; + $toc_ehvalue = $this->m_TOC[$toc_id]['TOC_even_header_value']; + $toc_ofvalue = $this->m_TOC[$toc_id]['TOC_odd_footer_value']; + $toc_efvalue = $this->m_TOC[$toc_id]['TOC_even_footer_value']; + $toc_page_selector = $this->m_TOC[$toc_id]['TOC_page_selector']; + $toc_resetpagenum = $this->m_TOC[$toc_id]['TOC_resetpagenum']; // mPDF 6 + $toc_pagenumstyle = $this->m_TOC[$toc_id]['TOC_pagenumstyle']; // mPDF 6 + $toc_suppress = $this->m_TOC[$toc_id]['TOC_suppress']; // mPDF 6 + $toc_sheet_size = (isset($this->m_TOC[$toc_id]['TOCsheetsize']) ? $this->m_TOC[$toc_id]['TOCsheetsize'] : ''); + next($this->m_TOC); + } + + // mPDF 5.6.31 + if (!$toc_orientation) { + $toc_orientation = $this->mpdf->DefOrientation; + } + + // mPDF 6 number style and suppress now picked up from section preceding ToC + list($tp_pagenumstyle, $tp_suppress, $tp_reset) = $this->mpdf->docPageSettings($toc_page - 1); + + if ($toc_resetpagenum) { + $tp_reset = $toc_resetpagenum; // mPDF 6 + } + if ($toc_pagenumstyle) { + $tp_pagenumstyle = $toc_pagenumstyle; // mPDF 6 + } + if ($toc_suppress || $toc_suppress === '0') { + $tp_suppress = $toc_suppress; // mPDF 6 + } + + $this->mpdf->AddPage($toc_orientation, '', $tp_reset, $tp_pagenumstyle, $tp_suppress, $toc_mgl, $toc_mgr, $toc_mgt, $toc_mgb, $toc_mgh, $toc_mgf, $toc_ohname, $toc_ehname, $toc_ofname, $toc_efname, $toc_ohvalue, $toc_ehvalue, $toc_ofvalue, $toc_efvalue, $toc_page_selector, $toc_sheet_size); // mPDF 6 + + $this->mpdf->writingToC = true; // mPDF 5.6.38 + + /* + * Ensure the TOC Page Number Style doesn't effect the TOC Numbering (added automatically in `AddPage()` above) + * Ensure the page numbers show in the TOC when the 'suppress' setting is enabled + * @see https://github.com/mpdf/mpdf/issues/792 + * @see https://github.com/mpdf/mpdf/issues/777 + */ + if (isset($tocClassClone)) { + $this->mpdf->PageNumSubstitutions = array_map(function ($sub) { + $sub['suppress'] = ''; + return $sub; + }, $tocClassClone->mpdf->PageNumSubstitutions); + } + + // mPDF 5.6.31 + $tocstart = count($this->mpdf->pages); + if (isset($toc_preHTML) && $toc_preHTML) { + $this->mpdf->WriteHTML($toc_preHTML); + } + + // mPDF 5.6.19 + $html = '<div class="mpdf_toc" id="mpdf_toc_' . $toc_id . '">'; + foreach ($this->_toc as $t) { + if ($t['toc_id'] === '_mpdf_all' || $t['toc_id'] === $toc_id) { + $html .= '<div class="mpdf_toc_level_' . $t['l'] . '">'; + if ($TOCuseLinking) { + $html .= '<a class="mpdf_toc_a" href="#__mpdfinternallink_' . $t['link'] . '">'; + } + $html .= '<span class="mpdf_toc_t_level_' . $t['l'] . '">' . $t['t'] . '</span>'; + if ($TOCuseLinking) { + $html .= '</a>'; + } + if (!$tocoutdent) { + $tocoutdent = '0'; + } + if ($TOCusePaging) { + $html .= ' <dottab outdent="' . $tocoutdent . '" /> '; + if ($TOCuseLinking) { + $html .= '<a class="mpdf_toc_a" href="#__mpdfinternallink_' . $t['link'] . '">'; + } + $html .= '<span class="mpdf_toc_p_level_' . $t['l'] . '">' . $this->mpdf->docPageNum($t['p']) . '</span>'; + if ($TOCuseLinking) { + $html .= '</a>'; + } + } + $html .= '</div>'; + } + } + $html .= '</div>'; + $this->mpdf->WriteHTML($html); + + if (isset($toc_postHTML) && $toc_postHTML) { + $this->mpdf->WriteHTML($toc_postHTML); + } + $this->mpdf->writingToC = false; // mPDF 5.6.38 + $this->mpdf->AddPage($toc_orientation, 'E'); + + $n_toc = $this->mpdf->page - $tocstart + 1; + + if ($toci == 0 && $this->TOCmark) { + $TOC_start = $tocstart; + $TOC_end = $this->mpdf->page; + $TOC_npages = $n_toc; + } else { + $this->m_TOC[$toc_id]['start'] = $tocstart; + $this->m_TOC[$toc_id]['end'] = $this->mpdf->page; + $this->m_TOC[$toc_id]['npages'] = $n_toc; + } + } + + $s = ''; + + $s .= $this->mpdf->PrintBodyBackgrounds(); + + $s .= $this->mpdf->PrintPageBackgrounds(); + $this->mpdf->pages[$this->mpdf->page] = preg_replace('/(___BACKGROUND___PATTERNS' . $this->mpdf->uniqstr . ')/', "\n" . $s . "\n" . '\\1', $this->mpdf->pages[$this->mpdf->page]); + $this->mpdf->pageBackgrounds = []; + + //Page footer + $this->mpdf->InFooter = true; + $this->mpdf->Footer(); + $this->mpdf->InFooter = false; + + // 2nd time through to move pages etc. + $added_toc_pages = 0; + if (count($this->m_TOC)) { + reset($this->m_TOC); + } + + for ($toci = 0; $toci < $notocs; $toci++) { + if ($toci == 0 && $this->TOCmark) { + $toc_id = 0; + $toc_page = $this->TOCmark + $added_toc_pages; + $toc_orientation = $this->TOCorientation; + $TOCuseLinking = $this->TOCuseLinking; + $TOCusePaging = $this->TOCusePaging; + $toc_bookmarkText = $this->TOCbookmarkText; // *BOOKMARKS* + + $tocstart = $TOC_start; + $tocend = $n = $TOC_end; + $n_toc = $TOC_npages; + } else { + $arr = current($this->m_TOC); + + $toc_id = key($this->m_TOC); + $toc_page = $this->m_TOC[$toc_id]['TOCmark'] + $added_toc_pages; + $toc_orientation = $this->m_TOC[$toc_id]['TOCorientation']; + $TOCuseLinking = $this->m_TOC[$toc_id]['TOCuseLinking']; + $TOCusePaging = $this->m_TOC[$toc_id]['TOCusePaging']; + $toc_bookmarkText = Arrays::get($this->m_TOC[$toc_id], 'TOCbookmarkText', null); // *BOOKMARKS* + + $tocstart = $this->m_TOC[$toc_id]['start']; + $tocend = $n = $this->m_TOC[$toc_id]['end']; + $n_toc = $this->m_TOC[$toc_id]['npages']; + + next($this->m_TOC); + } + + // Now pages moved + $added_toc_pages += $n_toc; + + $this->mpdf->MovePages($toc_page, $tocstart, $tocend); + $this->mpdf->pgsIns[$toc_page] = $tocend - $tocstart + 1; + + /* -- BOOKMARKS -- */ + // Insert new Bookmark for Bookmark + if ($toc_bookmarkText) { + $insert = -1; + foreach ($this->mpdf->BMoutlines as $i => $o) { + if ($o['p'] < $toc_page) { // i.e. before point of insertion + $insert = $i; + } + } + $txt = $this->mpdf->purify_utf8_text($toc_bookmarkText); + if ($this->mpdf->text_input_as_HTML) { + $txt = $this->mpdf->all_entities_to_utf8($txt); + } + $newBookmark[0] = ['t' => $txt, 'l' => 0, 'y' => 0, 'p' => $toc_page]; + array_splice($this->mpdf->BMoutlines, ($insert + 1), 0, $newBookmark); + } + /* -- END BOOKMARKS -- */ + } + + // Delete empty page that was inserted earlier + if ($extrapage) { + unset($this->mpdf->pages[count($this->mpdf->pages)]); + $this->mpdf->page--; // Reset page pointer + } + + /* Fix the over adjustment of the TOC and Page Substitutions values */ + if (isset($tocClassClone)) { + $this->_toc = $tocClassClone->_toc; + $this->mpdf->PageNumSubstitutions = $tocClassClone->mpdf->PageNumSubstitutions; + unset($tocClassClone); + } + } + + public function openTagTOC($attr) + { + if (isset($attr['OUTDENT']) && $attr['OUTDENT']) { + $tocoutdent = $attr['OUTDENT']; + } else { + $tocoutdent = ''; + } // mPDF 5.6.19 + if (isset($attr['RESETPAGENUM']) && $attr['RESETPAGENUM']) { + $resetpagenum = $attr['RESETPAGENUM']; + } else { + $resetpagenum = ''; + } + if (isset($attr['PAGENUMSTYLE']) && $attr['PAGENUMSTYLE']) { + $pagenumstyle = $attr['PAGENUMSTYLE']; + } else { + $pagenumstyle = ''; + } + if (isset($attr['SUPPRESS']) && $attr['SUPPRESS']) { + $suppress = $attr['SUPPRESS']; + } else { + $suppress = ''; + } + if (isset($attr['TOC-ORIENTATION']) && $attr['TOC-ORIENTATION']) { + $toc_orientation = $attr['TOC-ORIENTATION']; + } else { + $toc_orientation = ''; + } + if (isset($attr['PAGING']) && (strtoupper($attr['PAGING']) == 'OFF' || $attr['PAGING'] === '0')) { + $paging = false; + } else { + $paging = true; + } + if (isset($attr['LINKS']) && (strtoupper($attr['LINKS']) == 'ON' || $attr['LINKS'] == 1)) { + $links = true; + } else { + $links = false; + } + if (isset($attr['NAME']) && $attr['NAME']) { + $toc_id = strtolower($attr['NAME']); + } else { + $toc_id = 0; + } + $this->TOC('', 0, 0, $resetpagenum, $pagenumstyle, $suppress, $toc_orientation, $paging, $links, $toc_id, $tocoutdent); // mPDF 5.6.19 5.6.31 + } + + public function openTagTOCPAGEBREAK($attr) + { + if (isset($attr['NAME']) && $attr['NAME']) { + $toc_id = strtolower($attr['NAME']); + } else { + $toc_id = 0; + } + if ($toc_id) { + if (isset($attr['OUTDENT']) && $attr['OUTDENT']) { + $this->m_TOC[$toc_id]['TOCoutdent'] = $attr['OUTDENT']; + } else { + $this->m_TOC[$toc_id]['TOCoutdent'] = ''; + } // mPDF 5.6.19 + if (isset($attr['TOC-ORIENTATION']) && $attr['TOC-ORIENTATION']) { + $this->m_TOC[$toc_id]['TOCorientation'] = $attr['TOC-ORIENTATION']; + } else { + $this->m_TOC[$toc_id]['TOCorientation'] = ''; + } + if (isset($attr['PAGING']) && (strtoupper($attr['PAGING']) == 'OFF' || $attr['PAGING'] === '0')) { + $this->m_TOC[$toc_id]['TOCusePaging'] = false; + } else { + $this->m_TOC[$toc_id]['TOCusePaging'] = true; + } + if (isset($attr['LINKS']) && (strtoupper($attr['LINKS']) == 'ON' || $attr['LINKS'] == 1)) { + $this->m_TOC[$toc_id]['TOCuseLinking'] = true; + } else { + $this->m_TOC[$toc_id]['TOCuseLinking'] = false; + } + + $this->m_TOC[$toc_id]['TOC_margin_left'] = $this->m_TOC[$toc_id]['TOC_margin_right'] = $this->m_TOC[$toc_id]['TOC_margin_top'] = $this->m_TOC[$toc_id]['TOC_margin_bottom'] = $this->m_TOC[$toc_id]['TOC_margin_header'] = $this->m_TOC[$toc_id]['TOC_margin_footer'] = ''; + if (isset($attr['TOC-MARGIN-RIGHT'])) { + $this->m_TOC[$toc_id]['TOC_margin_right'] = $this->sizeConverter->convert($attr['TOC-MARGIN-RIGHT'], $this->mpdf->w, $this->mpdf->FontSize, false); + } + if (isset($attr['TOC-MARGIN-LEFT'])) { + $this->m_TOC[$toc_id]['TOC_margin_left'] = $this->sizeConverter->convert($attr['TOC-MARGIN-LEFT'], $this->mpdf->w, $this->mpdf->FontSize, false); + } + if (isset($attr['TOC-MARGIN-TOP'])) { + $this->m_TOC[$toc_id]['TOC_margin_top'] = $this->sizeConverter->convert($attr['TOC-MARGIN-TOP'], $this->mpdf->w, $this->mpdf->FontSize, false); + } + if (isset($attr['TOC-MARGIN-BOTTOM'])) { + $this->m_TOC[$toc_id]['TOC_margin_bottom'] = $this->sizeConverter->convert($attr['TOC-MARGIN-BOTTOM'], $this->mpdf->w, $this->mpdf->FontSize, false); + } + if (isset($attr['TOC-MARGIN-HEADER'])) { + $this->m_TOC[$toc_id]['TOC_margin_header'] = $this->sizeConverter->convert($attr['TOC-MARGIN-HEADER'], $this->mpdf->w, $this->mpdf->FontSize, false); + } + if (isset($attr['TOC-MARGIN-FOOTER'])) { + $this->m_TOC[$toc_id]['TOC_margin_footer'] = $this->sizeConverter->convert($attr['TOC-MARGIN-FOOTER'], $this->mpdf->w, $this->mpdf->FontSize, false); + } + $this->m_TOC[$toc_id]['TOC_odd_header_name'] = $this->m_TOC[$toc_id]['TOC_even_header_name'] = $this->m_TOC[$toc_id]['TOC_odd_footer_name'] = $this->m_TOC[$toc_id]['TOC_even_footer_name'] = ''; + if (isset($attr['TOC-ODD-HEADER-NAME']) && $attr['TOC-ODD-HEADER-NAME']) { + $this->m_TOC[$toc_id]['TOC_odd_header_name'] = $attr['TOC-ODD-HEADER-NAME']; + } + if (isset($attr['TOC-EVEN-HEADER-NAME']) && $attr['TOC-EVEN-HEADER-NAME']) { + $this->m_TOC[$toc_id]['TOC_even_header_name'] = $attr['TOC-EVEN-HEADER-NAME']; + } + if (isset($attr['TOC-ODD-FOOTER-NAME']) && $attr['TOC-ODD-FOOTER-NAME']) { + $this->m_TOC[$toc_id]['TOC_odd_footer_name'] = $attr['TOC-ODD-FOOTER-NAME']; + } + if (isset($attr['TOC-EVEN-FOOTER-NAME']) && $attr['TOC-EVEN-FOOTER-NAME']) { + $this->m_TOC[$toc_id]['TOC_even_footer_name'] = $attr['TOC-EVEN-FOOTER-NAME']; + } + $this->m_TOC[$toc_id]['TOC_odd_header_value'] = $this->m_TOC[$toc_id]['TOC_even_header_value'] = $this->m_TOC[$toc_id]['TOC_odd_footer_value'] = $this->m_TOC[$toc_id]['TOC_even_footer_value'] = 0; + if (isset($attr['TOC-ODD-HEADER-VALUE']) && ($attr['TOC-ODD-HEADER-VALUE'] == '1' || strtoupper($attr['TOC-ODD-HEADER-VALUE']) == 'ON')) { + $this->m_TOC[$toc_id]['TOC_odd_header_value'] = 1; + } elseif (isset($attr['TOC-ODD-HEADER-VALUE']) && ($attr['TOC-ODD-HEADER-VALUE'] == '-1' || strtoupper($attr['TOC-ODD-HEADER-VALUE']) == 'OFF')) { + $this->m_TOC[$toc_id]['TOC_odd_header_value'] = -1; + } + if (isset($attr['TOC-EVEN-HEADER-VALUE']) && ($attr['TOC-EVEN-HEADER-VALUE'] == '1' || strtoupper($attr['TOC-EVEN-HEADER-VALUE']) == 'ON')) { + $this->m_TOC[$toc_id]['TOC_even_header_value'] = 1; + } elseif (isset($attr['TOC-EVEN-HEADER-VALUE']) && ($attr['TOC-EVEN-HEADER-VALUE'] == '-1' || strtoupper($attr['TOC-EVEN-HEADER-VALUE']) == 'OFF')) { + $this->m_TOC[$toc_id]['TOC_even_header_value'] = -1; + } + if (isset($attr['TOC-ODD-FOOTER-VALUE']) && ($attr['TOC-ODD-FOOTER-VALUE'] == '1' || strtoupper($attr['TOC-ODD-FOOTER-VALUE']) == 'ON')) { + $this->m_TOC[$toc_id]['TOC_odd_footer_value'] = 1; + } elseif (isset($attr['TOC-ODD-FOOTER-VALUE']) && ($attr['TOC-ODD-FOOTER-VALUE'] == '-1' || strtoupper($attr['TOC-ODD-FOOTER-VALUE']) == 'OFF')) { + $this->m_TOC[$toc_id]['TOC_odd_footer_value'] = -1; + } + if (isset($attr['TOC-EVEN-FOOTER-VALUE']) && ($attr['TOC-EVEN-FOOTER-VALUE'] == '1' || strtoupper($attr['TOC-EVEN-FOOTER-VALUE']) == 'ON')) { + $this->m_TOC[$toc_id]['TOC_even_footer_value'] = 1; + } elseif (isset($attr['TOC-EVEN-FOOTER-VALUE']) && ($attr['TOC-EVEN-FOOTER-VALUE'] == '-1' || strtoupper($attr['TOC-EVEN-FOOTER-VALUE']) == 'OFF')) { + $this->m_TOC[$toc_id]['TOC_even_footer_value'] = -1; + } + if (isset($attr['TOC-RESETPAGENUM']) && $attr['TOC-RESETPAGENUM']) { + $this->m_TOC[$toc_id]['TOC_resetpagenum'] = $attr['TOC-RESETPAGENUM']; + } else { + $this->m_TOC[$toc_id]['TOC_resetpagenum'] = ''; + } // mPDF 6 + if (isset($attr['TOC-PAGENUMSTYLE']) && $attr['TOC-PAGENUMSTYLE']) { + $this->m_TOC[$toc_id]['TOC_pagenumstyle'] = $attr['TOC-PAGENUMSTYLE']; + } else { + $this->m_TOC[$toc_id]['TOC_pagenumstyle'] = ''; + } // mPDF 6 + if (isset($attr['TOC-SUPPRESS']) && ($attr['TOC-SUPPRESS'] || $attr['TOC-SUPPRESS'] === '0')) { + $this->m_TOC[$toc_id]['TOC_suppress'] = $attr['TOC-SUPPRESS']; + } else { + $this->m_TOC[$toc_id]['TOC_suppress'] = ''; + } // mPDF 6 + if (isset($attr['TOC-PAGE-SELECTOR']) && $attr['TOC-PAGE-SELECTOR']) { + $this->m_TOC[$toc_id]['TOC_page_selector'] = $attr['TOC-PAGE-SELECTOR']; + } else { + $this->m_TOC[$toc_id]['TOC_page_selector'] = ''; + } + if (isset($attr['TOC-SHEET-SIZE']) && $attr['TOC-SHEET-SIZE']) { + $this->m_TOC[$toc_id]['TOCsheetsize'] = $attr['TOC-SHEET-SIZE']; + } else { + $this->m_TOC[$toc_id]['TOCsheetsize'] = ''; + } + + + if (isset($attr['TOC-PREHTML']) && $attr['TOC-PREHTML']) { + $this->m_TOC[$toc_id]['TOCpreHTML'] = htmlspecialchars_decode($attr['TOC-PREHTML'], ENT_QUOTES); + } + if (isset($attr['TOC-POSTHTML']) && $attr['TOC-POSTHTML']) { + $this->m_TOC[$toc_id]['TOCpostHTML'] = htmlspecialchars_decode($attr['TOC-POSTHTML'], ENT_QUOTES); + } + + if (isset($attr['TOC-BOOKMARKTEXT']) && $attr['TOC-BOOKMARKTEXT']) { + $this->m_TOC[$toc_id]['TOCbookmarkText'] = htmlspecialchars_decode($attr['TOC-BOOKMARKTEXT'], ENT_QUOTES); + } // *BOOKMARKS* + } else { + if (isset($attr['OUTDENT']) && $attr['OUTDENT']) { + $this->TOCoutdent = $attr['OUTDENT']; + } else { + $this->TOCoutdent = ''; + } // mPDF 5.6.19 + if (isset($attr['TOC-ORIENTATION']) && $attr['TOC-ORIENTATION']) { + $this->TOCorientation = $attr['TOC-ORIENTATION']; + } else { + $this->TOCorientation = ''; + } + if (isset($attr['PAGING']) && (strtoupper($attr['PAGING']) == 'OFF' || $attr['PAGING'] === '0')) { + $this->TOCusePaging = false; + } else { + $this->TOCusePaging = true; + } + if (isset($attr['LINKS']) && (strtoupper($attr['LINKS']) == 'ON' || $attr['LINKS'] == 1)) { + $this->TOCuseLinking = true; + } else { + $this->TOCuseLinking = false; + } + + $this->TOC_margin_left = $this->TOC_margin_right = $this->TOC_margin_top = $this->TOC_margin_bottom = $this->TOC_margin_header = $this->TOC_margin_footer = ''; + if (isset($attr['TOC-MARGIN-RIGHT'])) { + $this->TOC_margin_right = $this->sizeConverter->convert($attr['TOC-MARGIN-RIGHT'], $this->mpdf->w, $this->mpdf->FontSize, false); + } + if (isset($attr['TOC-MARGIN-LEFT'])) { + $this->TOC_margin_left = $this->sizeConverter->convert($attr['TOC-MARGIN-LEFT'], $this->mpdf->w, $this->mpdf->FontSize, false); + } + if (isset($attr['TOC-MARGIN-TOP'])) { + $this->TOC_margin_top = $this->sizeConverter->convert($attr['TOC-MARGIN-TOP'], $this->mpdf->w, $this->mpdf->FontSize, false); + } + if (isset($attr['TOC-MARGIN-BOTTOM'])) { + $this->TOC_margin_bottom = $this->sizeConverter->convert($attr['TOC-MARGIN-BOTTOM'], $this->mpdf->w, $this->mpdf->FontSize, false); + } + if (isset($attr['TOC-MARGIN-HEADER'])) { + $this->TOC_margin_header = $this->sizeConverter->convert($attr['TOC-MARGIN-HEADER'], $this->mpdf->w, $this->mpdf->FontSize, false); + } + if (isset($attr['TOC-MARGIN-FOOTER'])) { + $this->TOC_margin_footer = $this->sizeConverter->convert($attr['TOC-MARGIN-FOOTER'], $this->mpdf->w, $this->mpdf->FontSize, false); + } + $this->TOC_odd_header_name = $this->TOC_even_header_name = $this->TOC_odd_footer_name = $this->TOC_even_footer_name = ''; + if (isset($attr['TOC-ODD-HEADER-NAME']) && $attr['TOC-ODD-HEADER-NAME']) { + $this->TOC_odd_header_name = $attr['TOC-ODD-HEADER-NAME']; + } + if (isset($attr['TOC-EVEN-HEADER-NAME']) && $attr['TOC-EVEN-HEADER-NAME']) { + $this->TOC_even_header_name = $attr['TOC-EVEN-HEADER-NAME']; + } + if (isset($attr['TOC-ODD-FOOTER-NAME']) && $attr['TOC-ODD-FOOTER-NAME']) { + $this->TOC_odd_footer_name = $attr['TOC-ODD-FOOTER-NAME']; + } + if (isset($attr['TOC-EVEN-FOOTER-NAME']) && $attr['TOC-EVEN-FOOTER-NAME']) { + $this->TOC_even_footer_name = $attr['TOC-EVEN-FOOTER-NAME']; + } + $this->TOC_odd_header_value = $this->TOC_even_header_value = $this->TOC_odd_footer_value = $this->TOC_even_footer_value = 0; + if (isset($attr['TOC-ODD-HEADER-VALUE']) && ($attr['TOC-ODD-HEADER-VALUE'] == '1' || strtoupper($attr['TOC-ODD-HEADER-VALUE']) == 'ON')) { + $this->TOC_odd_header_value = 1; + } elseif (isset($attr['TOC-ODD-HEADER-VALUE']) && ($attr['TOC-ODD-HEADER-VALUE'] == '-1' || strtoupper($attr['TOC-ODD-HEADER-VALUE']) == 'OFF')) { + $this->TOC_odd_header_value = -1; + } + if (isset($attr['TOC-EVEN-HEADER-VALUE']) && ($attr['TOC-EVEN-HEADER-VALUE'] == '1' || strtoupper($attr['TOC-EVEN-HEADER-VALUE']) == 'ON')) { + $this->TOC_even_header_value = 1; + } elseif (isset($attr['TOC-EVEN-HEADER-VALUE']) && ($attr['TOC-EVEN-HEADER-VALUE'] == '-1' || strtoupper($attr['TOC-EVEN-HEADER-VALUE']) == 'OFF')) { + $this->TOC_even_header_value = -1; + } + + if (isset($attr['TOC-ODD-FOOTER-VALUE']) && ($attr['TOC-ODD-FOOTER-VALUE'] == '1' || strtoupper($attr['TOC-ODD-FOOTER-VALUE']) == 'ON')) { + $this->TOC_odd_footer_value = 1; + } elseif (isset($attr['TOC-ODD-FOOTER-VALUE']) && ($attr['TOC-ODD-FOOTER-VALUE'] == '-1' || strtoupper($attr['TOC-ODD-FOOTER-VALUE']) == 'OFF')) { + $this->TOC_odd_footer_value = -1; + } + if (isset($attr['TOC-EVEN-FOOTER-VALUE']) && ($attr['TOC-EVEN-FOOTER-VALUE'] == '1' || strtoupper($attr['TOC-EVEN-FOOTER-VALUE']) == 'ON')) { + $this->TOC_even_footer_value = 1; + } elseif (isset($attr['TOC-EVEN-FOOTER-VALUE']) && ($attr['TOC-EVEN-FOOTER-VALUE'] == '-1' || strtoupper($attr['TOC-EVEN-FOOTER-VALUE']) == 'OFF')) { + $this->TOC_even_footer_value = -1; + } + if (isset($attr['TOC-PAGE-SELECTOR']) && $attr['TOC-PAGE-SELECTOR']) { + $this->TOC_page_selector = $attr['TOC-PAGE-SELECTOR']; + } else { + $this->TOC_page_selector = ''; + } + if (isset($attr['TOC-RESETPAGENUM']) && $attr['TOC-RESETPAGENUM']) { + $this->TOC_resetpagenum = $attr['TOC-RESETPAGENUM']; + } else { + $this->TOC_resetpagenum = ''; + } // mPDF 6 + if (isset($attr['TOC-PAGENUMSTYLE']) && $attr['TOC-PAGENUMSTYLE']) { + $this->TOC_pagenumstyle = $attr['TOC-PAGENUMSTYLE']; + } else { + $this->TOC_pagenumstyle = ''; + } // mPDF 6 + if (isset($attr['TOC-SUPPRESS']) && ($attr['TOC-SUPPRESS'] || $attr['TOC-SUPPRESS'] === '0')) { + $this->TOC_suppress = $attr['TOC-SUPPRESS']; + } else { + $this->TOC_suppress = ''; + } // mPDF 6 + if (isset($attr['TOC-SHEET-SIZE']) && $attr['TOC-SHEET-SIZE']) { + $this->TOCsheetsize = $attr['TOC-SHEET-SIZE']; + } else { + $this->TOCsheetsize = ''; + } + + if (isset($attr['TOC-PREHTML']) && $attr['TOC-PREHTML']) { + $this->TOCpreHTML = htmlspecialchars_decode($attr['TOC-PREHTML'], ENT_QUOTES); + } + if (isset($attr['TOC-POSTHTML']) && $attr['TOC-POSTHTML']) { + $this->TOCpostHTML = htmlspecialchars_decode($attr['TOC-POSTHTML'], ENT_QUOTES); + } + if (isset($attr['TOC-BOOKMARKTEXT']) && $attr['TOC-BOOKMARKTEXT']) { + $this->TOCbookmarkText = htmlspecialchars_decode($attr['TOC-BOOKMARKTEXT'], ENT_QUOTES); + } + } + + if ($this->mpdf->y == $this->mpdf->tMargin && (!$this->mpdf->mirrorMargins || ($this->mpdf->mirrorMargins && $this->mpdf->page % 2 == 1))) { + if ($toc_id) { + $this->m_TOC[$toc_id]['TOCmark'] = $this->mpdf->page; + } else { + $this->TOCmark = $this->mpdf->page; + } + // Don't add a page + if ($this->mpdf->page == 1 && count($this->mpdf->PageNumSubstitutions) == 0) { + $resetpagenum = ''; + $pagenumstyle = ''; + $suppress = ''; + if (isset($attr['RESETPAGENUM'])) { + $resetpagenum = $attr['RESETPAGENUM']; + } + if (isset($attr['PAGENUMSTYLE'])) { + $pagenumstyle = $attr['PAGENUMSTYLE']; + } + if (isset($attr['SUPPRESS'])) { + $suppress = $attr['SUPPRESS']; + } + if (!$suppress) { + $suppress = 'off'; + } + $this->mpdf->PageNumSubstitutions[] = ['from' => 1, 'reset' => $resetpagenum, 'type' => $pagenumstyle, 'suppress' => $suppress]; + } + return [true, $toc_id]; + } + + // No break - continues as PAGEBREAK... + return [false, $toc_id]; + } + +} diff --git a/Mpdf/Tag.php b/Mpdf/Tag.php new file mode 100644 index 0000000..6886d1c --- /dev/null +++ b/Mpdf/Tag.php @@ -0,0 +1,253 @@ +<?php + +namespace Mpdf; + +use Mpdf\Strict; + +use Mpdf\Color\ColorConverter; + +use Mpdf\Image\ImageProcessor; + +use Mpdf\Language\LanguageToFontInterface; + +class Tag +{ + + use Strict; + + /** + * @var \Mpdf\Mpdf + */ + private $mpdf; + + /** + * @var \Mpdf\Cache + */ + private $cache; + + /** + * @var \Mpdf\CssManager + */ + private $cssManager; + + /** + * @var \Mpdf\Form + */ + private $form; + + /** + * @var \Mpdf\Otl + */ + private $otl; + + /** + * @var \Mpdf\TableOfContents + */ + private $tableOfContents; + + /** + * @var \Mpdf\SizeConverter + */ + private $sizeConverter; + + /** + * @var \Mpdf\Color\ColorConverter + */ + private $colorConverter; + + /** + * @var \Mpdf\Image\ImageProcessor + */ + private $imageProcessor; + + /** + * @var \Mpdf\Language\LanguageToFontInterface + */ + private $languageToFont; + + /** + * @param \Mpdf\Mpdf $mpdf + * @param \Mpdf\Cache $cache + * @param \Mpdf\CssManager $cssManager + * @param \Mpdf\Form $form + * @param \Mpdf\Otl $otl + * @param \Mpdf\TableOfContents $tableOfContents + * @param \Mpdf\SizeConverter $sizeConverter + * @param \Mpdf\Color\ColorConverter $colorConverter + * @param \Mpdf\Image\ImageProcessor $imageProcessor + * @param \Mpdf\Language\LanguageToFontInterface $languageToFont + */ + public function __construct( + Mpdf $mpdf, + Cache $cache, + CssManager $cssManager, + Form $form, + Otl $otl, + TableOfContents $tableOfContents, + SizeConverter $sizeConverter, + ColorConverter $colorConverter, + ImageProcessor $imageProcessor, + LanguageToFontInterface $languageToFont + ) { + + $this->mpdf = $mpdf; + $this->cache = $cache; + $this->cssManager = $cssManager; + $this->form = $form; + $this->otl = $otl; + $this->tableOfContents = $tableOfContents; + $this->sizeConverter = $sizeConverter; + $this->colorConverter = $colorConverter; + $this->imageProcessor = $imageProcessor; + $this->languageToFont = $languageToFont; + } + + /** + * @param string $tag The tag name + * @return \Mpdf\Tag\Tag + */ + private function getTagInstance($tag) + { + $className = self::getTagClassName($tag); + if (class_exists($className)) { + return new $className( + $this->mpdf, + $this->cache, + $this->cssManager, + $this->form, + $this->otl, + $this->tableOfContents, + $this->sizeConverter, + $this->colorConverter, + $this->imageProcessor, + $this->languageToFont + ); + } + } + + /** + * Returns the fully qualified name of the class handling the rendering of the given tag + * + * @param string $tag The tag name + * @return string The fully qualified name + */ + public static function getTagClassName($tag) + { + static $map = [ + 'BARCODE' => 'BarCode', + 'BLOCKQUOTE' => 'BlockQuote', + 'COLUMN_BREAK' => 'ColumnBreak', + 'COLUMNBREAK' => 'ColumnBreak', + 'DOTTAB' => 'DotTab', + 'FIELDSET' => 'FieldSet', + 'FIGCAPTION' => 'FigCaption', + 'FORMFEED' => 'FormFeed', + 'HGROUP' => 'HGroup', + 'INDEXENTRY' => 'IndexEntry', + 'INDEXINSERT' => 'IndexInsert', + 'NEWCOLUMN' => 'NewColumn', + 'NEWPAGE' => 'NewPage', + 'PAGEFOOTER' => 'PageFooter', + 'PAGEHEADER' => 'PageHeader', + 'PAGE_BREAK' => 'PageBreak', + 'PAGEBREAK' => 'PageBreak', + 'SETHTMLPAGEFOOTER' => 'SetHtmlPageFooter', + 'SETHTMLPAGEHEADER' => 'SetHtmlPageHeader', + 'SETPAGEFOOTER' => 'SetPageFooter', + 'SETPAGEHEADER' => 'SetPageHeader', + 'TBODY' => 'TBody', + 'TFOOT' => 'TFoot', + 'THEAD' => 'THead', + 'TEXTAREA' => 'TextArea', + 'TEXTCIRCLE' => 'TextCircle', + 'TOCENTRY' => 'TocEntry', + 'TOCPAGEBREAK' => 'TocPageBreak', + 'VAR' => 'VarTag', + 'WATERMARKIMAGE' => 'WatermarkImage', + 'WATERMARKTEXT' => 'WatermarkText', + ]; + + $className = 'Mpdf\Tag\\'; + $className .= isset($map[$tag]) ? $map[$tag] : ucfirst(strtolower($tag)); + + return $className; + } + + public function OpenTag($tag, $attr, &$ahtml, &$ihtml) + { + // Correct for tags where HTML5 specifies optional end tags excluding table elements (cf WriteHTML() ) + if ($this->mpdf->allow_html_optional_endtags) { + if (isset($this->mpdf->blk[$this->mpdf->blklvl]['tag'])) { + $closed = false; + // li end tag may be omitted if immediately followed by another li element + if (!$closed && $this->mpdf->blk[$this->mpdf->blklvl]['tag'] == 'LI' && $tag == 'LI') { + $this->CloseTag('LI', $ahtml, $ihtml); + $closed = true; + } + // dt end tag may be omitted if immediately followed by another dt element or a dd element + if (!$closed && $this->mpdf->blk[$this->mpdf->blklvl]['tag'] == 'DT' && ($tag == 'DT' || $tag == 'DD')) { + $this->CloseTag('DT', $ahtml, $ihtml); + $closed = true; + } + // dd end tag may be omitted if immediately followed by another dd element or a dt element + if (!$closed && $this->mpdf->blk[$this->mpdf->blklvl]['tag'] == 'DD' && ($tag == 'DT' || $tag == 'DD')) { + $this->CloseTag('DD', $ahtml, $ihtml); + $closed = true; + } + // p end tag may be omitted if immediately followed by an address, article, aside, blockquote, div, dl, + // fieldset, form, h1, h2, h3, h4, h5, h6, hgroup, hr, main, nav, ol, p, pre, section, table, ul + if (!$closed && $this->mpdf->blk[$this->mpdf->blklvl]['tag'] == 'P' + && ($tag == 'P' || $tag == 'DIV' || $tag == 'H1' || $tag == 'H2' || $tag == 'H3' + || $tag == 'H4' || $tag == 'H5' || $tag == 'H6' || $tag == 'UL' || $tag == 'OL' + || $tag == 'TABLE' || $tag == 'PRE' || $tag == 'FORM' || $tag == 'ADDRESS' || $tag == 'BLOCKQUOTE' + || $tag == 'CENTER' || $tag == 'DL' || $tag == 'HR' || $tag == 'ARTICLE' || $tag == 'ASIDE' + || $tag == 'FIELDSET' || $tag == 'HGROUP' || $tag == 'MAIN' || $tag == 'NAV' || $tag == 'SECTION')) { + $this->CloseTag('P', $ahtml, $ihtml); + $closed = true; + } + // option end tag may be omitted if immediately followed by another option element + // (or if it is immediately followed by an optgroup element) + if (!$closed && $this->mpdf->blk[$this->mpdf->blklvl]['tag'] == 'OPTION' && $tag == 'OPTION') { + $this->CloseTag('OPTION', $ahtml, $ihtml); + $closed = true; + } + // Table elements - see also WriteHTML() + if (!$closed && ($tag == 'TD' || $tag == 'TH') && $this->mpdf->lastoptionaltag == 'TD') { + $this->CloseTag($this->mpdf->lastoptionaltag, $ahtml, $ihtml); + $closed = true; + } // *TABLES* + if (!$closed && ($tag == 'TD' || $tag == 'TH') && $this->mpdf->lastoptionaltag == 'TH') { + $this->CloseTag($this->mpdf->lastoptionaltag, $ahtml, $ihtml); + $closed = true; + } // *TABLES* + if (!$closed && $tag == 'TR' && $this->mpdf->lastoptionaltag == 'TR') { + $this->CloseTag($this->mpdf->lastoptionaltag, $ahtml, $ihtml); + $closed = true; + } // *TABLES* + if (!$closed && $tag == 'TR' && $this->mpdf->lastoptionaltag == 'TD') { + $this->CloseTag($this->mpdf->lastoptionaltag, $ahtml, $ihtml); + $this->CloseTag('TR', $ahtml, $ihtml); + $this->CloseTag('THEAD', $ahtml, $ihtml); + $closed = true; + } // *TABLES* + if (!$closed && $tag == 'TR' && $this->mpdf->lastoptionaltag == 'TH') { + $this->CloseTag($this->mpdf->lastoptionaltag, $ahtml, $ihtml); + $this->CloseTag('TR', $ahtml, $ihtml); + $this->CloseTag('THEAD', $ahtml, $ihtml); + $closed = true; + } // *TABLES* + } + } + + if ($object = $this->getTagInstance($tag)) { + return $object->open($attr, $ahtml, $ihtml); + } + } + + public function CloseTag($tag, &$ahtml, &$ihtml) + { + if ($object = $this->getTagInstance($tag)) { + return $object->close($ahtml, $ihtml); + } + } +} diff --git a/Mpdf/Tag/A.php b/Mpdf/Tag/A.php new file mode 100644 index 0000000..6a6488b --- /dev/null +++ b/Mpdf/Tag/A.php @@ -0,0 +1,50 @@ +<?php + +namespace Mpdf\Tag; + +class A extends Tag +{ + + public function open($attr, &$ahtml, &$ihtml) + { + if (isset($attr['NAME']) && $attr['NAME'] != '') { + $e = ''; + /* -- BOOKMARKS -- */ + if ($this->mpdf->anchor2Bookmark) { + $objattr = []; + $objattr['CONTENT'] = htmlspecialchars_decode($attr['NAME'], ENT_QUOTES); + $objattr['type'] = 'bookmark'; + if (!empty($attr['LEVEL'])) { + $objattr['bklevel'] = $attr['LEVEL']; + } else { + $objattr['bklevel'] = 0; + } + $e = "\xbb\xa4\xactype=bookmark,objattr=" . serialize($objattr) . "\xbb\xa4\xac"; + } + /* -- END BOOKMARKS -- */ + if ($this->mpdf->tableLevel) { // *TABLES* + $this->mpdf->_saveCellTextBuffer($e, '', $attr['NAME']); // *TABLES* + } // *TABLES* + else { // *TABLES* + $this->mpdf->_saveTextBuffer($e, '', $attr['NAME']); //an internal link (adds a space for recognition) + } // *TABLES* + } + if (isset($attr['HREF'])) { + $this->mpdf->InlineProperties['A'] = $this->mpdf->saveInlineProperties(); + $properties = $this->cssManager->MergeCSS('INLINE', 'A', $attr); + if (!empty($properties)) { + $this->mpdf->setCSS($properties, 'INLINE'); + } + $this->mpdf->HREF = $attr['HREF']; // mPDF 5.7.4 URLs + } + } + + public function close(&$ahtml, &$ihtml) + { + $this->mpdf->HREF = ''; + if (isset($this->mpdf->InlineProperties['A'])) { + $this->mpdf->restoreInlineProperties($this->mpdf->InlineProperties['A']); + } + unset($this->mpdf->InlineProperties['A']); + } +} diff --git a/Mpdf/Tag/Acronym.php b/Mpdf/Tag/Acronym.php new file mode 100644 index 0000000..e33eea5 --- /dev/null +++ b/Mpdf/Tag/Acronym.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class Acronym extends InlineTag +{ + + +} diff --git a/Mpdf/Tag/Address.php b/Mpdf/Tag/Address.php new file mode 100644 index 0000000..44b5b3c --- /dev/null +++ b/Mpdf/Tag/Address.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class Address extends BlockTag +{ + + +} diff --git a/Mpdf/Tag/Annotation.php b/Mpdf/Tag/Annotation.php new file mode 100644 index 0000000..6ed5e0e --- /dev/null +++ b/Mpdf/Tag/Annotation.php @@ -0,0 +1,99 @@ +<?php + +namespace Mpdf\Tag; + +class Annotation extends Tag +{ + + public function open($attr, &$ahtml, &$ihtml) + { + //if (isset($attr['CONTENT']) && !$this->mpdf->writingHTMLheader && !$this->mpdf->writingHTMLfooter) { // Stops annotations in FixedPos + if (isset($attr['CONTENT'])) { + $objattr = []; + $objattr['margin_top'] = 0; + $objattr['margin_bottom'] = 0; + $objattr['margin_left'] = 0; + $objattr['margin_right'] = 0; + $objattr['width'] = 0; + $objattr['height'] = 0; + $objattr['border_top']['w'] = 0; + $objattr['border_bottom']['w'] = 0; + $objattr['border_left']['w'] = 0; + $objattr['border_right']['w'] = 0; + $objattr['CONTENT'] = htmlspecialchars_decode($attr['CONTENT'], ENT_QUOTES); + $objattr['type'] = 'annot'; + $objattr['POPUP'] = ''; + } else { + return; + } + if (isset($attr['POS-X'])) { + $objattr['POS-X'] = $attr['POS-X']; + } else { + $objattr['POS-X'] = 0; + } + if (isset($attr['POS-Y'])) { + $objattr['POS-Y'] = $attr['POS-Y']; + } else { + $objattr['POS-Y'] = 0; + } + if (isset($attr['ICON'])) { + $objattr['ICON'] = $attr['ICON']; + } else { + $objattr['ICON'] = 'Note'; + } + if (isset($attr['AUTHOR'])) { + $objattr['AUTHOR'] = $attr['AUTHOR']; + } elseif (isset($attr['TITLE'])) { + $objattr['AUTHOR'] = $attr['TITLE']; + } else { + $objattr['AUTHOR'] = ''; + } + if (isset($attr['FILE'])) { + $objattr['FILE'] = $attr['FILE']; + } else { + $objattr['FILE'] = ''; + } + if (isset($attr['SUBJECT'])) { + $objattr['SUBJECT'] = $attr['SUBJECT']; + } else { + $objattr['SUBJECT'] = ''; + } + if (isset($attr['OPACITY']) && $attr['OPACITY'] > 0 && $attr['OPACITY'] <= 1) { + $objattr['OPACITY'] = $attr['OPACITY']; + } elseif ($this->mpdf->annotMargin) { + $objattr['OPACITY'] = 1; + } else { + $objattr['OPACITY'] = $this->mpdf->annotOpacity; + } + if (isset($attr['COLOR'])) { + $cor = $this->colorConverter->convert($attr['COLOR'], $this->mpdf->PDFAXwarnings); + if ($cor) { + $objattr['COLOR'] = $cor; + } else { + $objattr['COLOR'] = $this->colorConverter->convert('yellow', $this->mpdf->PDFAXwarnings); + } + } else { + $objattr['COLOR'] = $this->colorConverter->convert('yellow', $this->mpdf->PDFAXwarnings); + } + + if (isset($attr['POPUP']) && !empty($attr['POPUP'])) { + $pop = preg_split('/\s+/', trim($attr['POPUP'])); + if (count($pop) > 1) { + $objattr['POPUP'] = $pop; + } else { + $objattr['POPUP'] = true; + } + } + $e = "\xbb\xa4\xactype=annot,objattr=" . serialize($objattr) . "\xbb\xa4\xac"; + if ($this->mpdf->tableLevel) { + $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['textbuffer'][] = [$e]; + } // *TABLES* + else { // *TABLES* + $this->mpdf->textbuffer[] = [$e]; + } // *TABLES* + } + + public function close(&$ahtml, &$ihtml) + { + } +} diff --git a/Mpdf/Tag/Article.php b/Mpdf/Tag/Article.php new file mode 100644 index 0000000..180d69d --- /dev/null +++ b/Mpdf/Tag/Article.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class Article extends BlockTag +{ + + +} diff --git a/Mpdf/Tag/Aside.php b/Mpdf/Tag/Aside.php new file mode 100644 index 0000000..fa7e697 --- /dev/null +++ b/Mpdf/Tag/Aside.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class Aside extends BlockTag +{ + + +} diff --git a/Mpdf/Tag/B.php b/Mpdf/Tag/B.php new file mode 100644 index 0000000..15e2eb3 --- /dev/null +++ b/Mpdf/Tag/B.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class B extends InlineTag +{ + + +} diff --git a/Mpdf/Tag/BarCode.php b/Mpdf/Tag/BarCode.php new file mode 100644 index 0000000..65edb2a --- /dev/null +++ b/Mpdf/Tag/BarCode.php @@ -0,0 +1,256 @@ +<?php + +namespace Mpdf\Tag; + +class BarCode extends Tag +{ + + /** + * @var \Mpdf\Barcode + */ + protected $barcode; + + public function open($attr, &$ahtml, &$ihtml) + { + $this->mpdf->ignorefollowingspaces = false; + if (!empty($attr['CODE'])) { + $objattr = []; + $objattr['margin_top'] = 0; + $objattr['margin_bottom'] = 0; + $objattr['margin_left'] = 0; + $objattr['margin_right'] = 0; + $objattr['padding_top'] = 0; + $objattr['padding_bottom'] = 0; + $objattr['padding_left'] = 0; + $objattr['padding_right'] = 0; + $objattr['width'] = 0; + $objattr['height'] = 0; + $objattr['border_top']['w'] = 0; + $objattr['border_bottom']['w'] = 0; + $objattr['border_left']['w'] = 0; + $objattr['border_right']['w'] = 0; + $objattr['code'] = $attr['CODE']; + + if (isset($attr['TYPE'])) { + $objattr['btype'] = strtoupper(trim($attr['TYPE'])); + } else { + $objattr['btype'] = 'EAN13'; + } // default + if (preg_match('/^(EAN13|ISBN|ISSN|EAN8|UPCA|UPCE)P([25])$/', $objattr['btype'], $m)) { + $objattr['btype'] = $m[1]; + $objattr['bsupp'] = $m[2]; + if (preg_match('/^(\S+)\s+(.*)$/', $objattr['code'], $mm)) { + $objattr['code'] = $mm[1]; + $objattr['bsupp_code'] = $mm[2]; + } + } else { + $objattr['bsupp'] = 0; + } + + if (isset($attr['TEXT']) && $attr['TEXT'] == 1) { + $objattr['showtext'] = 1; + } else { + $objattr['showtext'] = 0; + } + if (isset($attr['SIZE']) && $attr['SIZE'] > 0) { + $objattr['bsize'] = $attr['SIZE']; + } else { + $objattr['bsize'] = 1; + } + if (isset($attr['HEIGHT']) && $attr['HEIGHT'] > 0) { + $objattr['bheight'] = $attr['HEIGHT']; + } else { + $objattr['bheight'] = 1; + } + if (isset($attr['PR']) && $attr['PR'] > 0) { + $objattr['pr_ratio'] = $attr['PR']; + } else { + $objattr['pr_ratio'] = ''; + } + $properties = $this->cssManager->MergeCSS('', 'BARCODE', $attr); + if (isset($properties ['DISPLAY']) && strtolower($properties ['DISPLAY']) === 'none') { + return; + } + if (isset($properties['MARGIN-TOP'])) { + $objattr['margin_top'] = $this->sizeConverter->convert( + $properties['MARGIN-TOP'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + if (isset($properties['MARGIN-BOTTOM'])) { + $objattr['margin_bottom'] = $this->sizeConverter->convert( + $properties['MARGIN-BOTTOM'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + if (isset($properties['MARGIN-LEFT'])) { + $objattr['margin_left'] = $this->sizeConverter->convert( + $properties['MARGIN-LEFT'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + if (isset($properties['MARGIN-RIGHT'])) { + $objattr['margin_right'] = $this->sizeConverter->convert( + $properties['MARGIN-RIGHT'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + + if (isset($properties['PADDING-TOP'])) { + $objattr['padding_top'] = $this->sizeConverter->convert( + $properties['PADDING-TOP'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + if (isset($properties['PADDING-BOTTOM'])) { + $objattr['padding_bottom'] = $this->sizeConverter->convert( + $properties['PADDING-BOTTOM'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + if (isset($properties['PADDING-LEFT'])) { + $objattr['padding_left'] = $this->sizeConverter->convert( + $properties['PADDING-LEFT'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + if (isset($properties['PADDING-RIGHT'])) { + $objattr['padding_right'] = $this->sizeConverter->convert( + $properties['PADDING-RIGHT'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + + if (isset($properties['BORDER-TOP'])) { + $objattr['border_top'] = $this->mpdf->border_details($properties['BORDER-TOP']); + } + if (isset($properties['BORDER-BOTTOM'])) { + $objattr['border_bottom'] = $this->mpdf->border_details($properties['BORDER-BOTTOM']); + } + if (isset($properties['BORDER-LEFT'])) { + $objattr['border_left'] = $this->mpdf->border_details($properties['BORDER-LEFT']); + } + if (isset($properties['BORDER-RIGHT'])) { + $objattr['border_right'] = $this->mpdf->border_details($properties['BORDER-RIGHT']); + } + + if (isset($properties['VERTICAL-ALIGN'])) { + $objattr['vertical-align'] = $this->getAlign($properties['VERTICAL-ALIGN']); + } + if (isset($properties['COLOR']) && $properties['COLOR'] != '') { + $objattr['color'] = $this->colorConverter->convert($properties['COLOR'], $this->mpdf->PDFAXwarnings); + } else { + $objattr['color'] = false; + } + if (isset($properties['BACKGROUND-COLOR']) && $properties['BACKGROUND-COLOR'] != '') { + $objattr['bgcolor'] = $this->colorConverter->convert($properties['BACKGROUND-COLOR'], $this->mpdf->PDFAXwarnings); + } else { + $objattr['bgcolor'] = false; + } + + $this->barcode = new \Mpdf\Barcode(); + + if (in_array($objattr['btype'], ['EAN13', 'ISBN', 'ISSN', 'UPCA', 'UPCE', 'EAN8'])) { + + $code = preg_replace('/\-/', '', $objattr['code']); + $arrcode = $this->barcode->getBarcodeArray($code, $objattr['btype']); + + if ($objattr['bsupp'] == 2 || $objattr['bsupp'] == 5) { // EAN-2 or -5 Supplement + $supparrcode = $this->barcode->getBarcodeArray($objattr['bsupp_code'], 'EAN' . $objattr['bsupp']); + $w = ($arrcode['maxw'] + $arrcode['lightmL'] + $arrcode['lightmR'] + + $supparrcode['maxw'] + $supparrcode['sepM']) * $arrcode['nom-X'] * $objattr['bsize']; + } else { + $w = ($arrcode['maxw'] + $arrcode['lightmL'] + $arrcode['lightmR']) * $arrcode['nom-X'] * $objattr['bsize']; + } + + $h = $arrcode['nom-H'] * $objattr['bsize'] * $objattr['bheight']; + // Add height for ISBN string + margin from top of bars + if (($objattr['showtext'] && $objattr['btype'] === 'EAN13') || $objattr['btype'] === 'ISBN' || $objattr['btype'] === 'ISSN') { + $tisbnm = 1.5 * $objattr['bsize']; // Top margin between TOP TEXT (isbn - if shown) & bars + $isbn_fontsize = 2.1 * $objattr['bsize']; + $h += $isbn_fontsize + $tisbnm; + } + + } elseif ($objattr['btype'] === 'QR') { // QR-code + $w = $h = $objattr['bsize'] * 25; // Factor of 25mm (default) + $objattr['errorlevel'] = 'L'; + if (isset($attr['ERROR'])) { + $objattr['errorlevel'] = $attr['ERROR']; + } + $objattr['disableborder'] = false; + if (isset($attr['DISABLEBORDER'])) { + $objattr['disableborder'] = (bool) $attr['DISABLEBORDER']; + } + + } elseif (in_array($objattr['btype'], ['IMB', 'RM4SCC', 'KIX', 'POSTNET', 'PLANET'])) { + + $arrcode = $this->barcode->getBarcodeArray($objattr['code'], $objattr['btype']); + + $w = ($arrcode['maxw'] * $arrcode['nom-X'] * $objattr['bsize']) + $arrcode['quietL'] + $arrcode['quietR']; + $h = ($arrcode['nom-H'] * $objattr['bsize']) + (2 * $arrcode['quietTB']); + + } elseif (in_array($objattr['btype'], ['C128A', 'C128B', 'C128C', 'C128RAW', 'EAN128A', 'EAN128B', 'EAN128C', + 'C39', 'C39+', 'C39E', 'C39E+', 'S25', 'S25+', 'I25', 'I25+', 'I25B', + 'I25B+', 'C93', 'MSI', 'MSI+', 'CODABAR', 'CODE11'])) { + + $arrcode = $this->barcode->getBarcodeArray($objattr['code'], $objattr['btype'], $objattr['pr_ratio']); + $w = ($arrcode['maxw'] + $arrcode['lightmL'] + $arrcode['lightmR']) * $arrcode['nom-X'] * $objattr['bsize']; + $h = ((2 * $arrcode['lightTB'] * $arrcode['nom-X']) + $arrcode['nom-H']) * $objattr['bsize'] * $objattr['bheight']; + + } else { + return; + } + + $extraheight = $objattr['padding_top'] + $objattr['padding_bottom'] + $objattr['margin_top'] + + $objattr['margin_bottom'] + $objattr['border_top']['w'] + $objattr['border_bottom']['w']; + $extrawidth = $objattr['padding_left'] + $objattr['padding_right'] + $objattr['margin_left'] + + $objattr['margin_right'] + $objattr['border_left']['w'] + $objattr['border_right']['w']; + + $objattr['type'] = 'barcode'; + $objattr['height'] = $h + $extraheight; + $objattr['width'] = $w + $extrawidth; + $objattr['barcode_height'] = $h; + $objattr['barcode_width'] = $w; + + /* -- CSS-IMAGE-FLOAT -- */ + if (!$this->mpdf->ColActive && !$this->mpdf->tableLevel && !$this->mpdf->listlvl && !$this->mpdf->kwt) { + if (isset($properties['FLOAT']) && (strtoupper($properties['FLOAT']) === 'RIGHT' || strtoupper($properties['FLOAT']) === 'LEFT')) { + $objattr['float'] = strtoupper(substr($properties['FLOAT'], 0, 1)); + } + } + /* -- END CSS-IMAGE-FLOAT -- */ + + $e = "\xbb\xa4\xactype=barcode,objattr=" . serialize($objattr) . "\xbb\xa4\xac"; + + /* -- TABLES -- */ + // Output it to buffers + if ($this->mpdf->tableLevel) { + $this->mpdf->_saveCellTextBuffer($e, $this->mpdf->HREF); + $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['s'] += $objattr['width']; + } else { + /* -- END TABLES -- */ + $this->mpdf->_saveTextBuffer($e, $this->mpdf->HREF); + } // *TABLES* + } + } + + public function close(&$ahtml, &$ihtml) + { + } +} diff --git a/Mpdf/Tag/Bdi.php b/Mpdf/Tag/Bdi.php new file mode 100644 index 0000000..3de3ec5 --- /dev/null +++ b/Mpdf/Tag/Bdi.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class Bdi extends InlineTag +{ + + +} diff --git a/Mpdf/Tag/Bdo.php b/Mpdf/Tag/Bdo.php new file mode 100644 index 0000000..6435d3f --- /dev/null +++ b/Mpdf/Tag/Bdo.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class Bdo extends InlineTag +{ + + +} diff --git a/Mpdf/Tag/Big.php b/Mpdf/Tag/Big.php new file mode 100644 index 0000000..fffd893 --- /dev/null +++ b/Mpdf/Tag/Big.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class Big extends InlineTag +{ + + +} diff --git a/Mpdf/Tag/BlockQuote.php b/Mpdf/Tag/BlockQuote.php new file mode 100644 index 0000000..44287ca --- /dev/null +++ b/Mpdf/Tag/BlockQuote.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class BlockQuote extends BlockTag +{ + + +} diff --git a/Mpdf/Tag/BlockTag.php b/Mpdf/Tag/BlockTag.php new file mode 100644 index 0000000..14e6a64 --- /dev/null +++ b/Mpdf/Tag/BlockTag.php @@ -0,0 +1,1353 @@ +<?php + +namespace Mpdf\Tag; + +use Mpdf\Conversion\DecToAlpha; +use Mpdf\Conversion\DecToRoman; + +use Mpdf\Utils\Arrays; +use Mpdf\Utils\UtfString; + +abstract class BlockTag extends Tag +{ + + public function open($attr, &$ahtml, &$ihtml) + { + $tag = $this->getTagName(); + + // mPDF 6 Lists + $this->mpdf->lastoptionaltag = ''; + + // mPDF 6 bidi + // Block + // If unicode-bidi set on current clock, any embedding levels, isolates, or overrides are closed (not inherited) + if (isset($this->mpdf->blk[$this->mpdf->blklvl]['bidicode'])) { + $blockpost = $this->mpdf->_setBidiCodes('end', $this->mpdf->blk[$this->mpdf->blklvl]['bidicode']); + if ($blockpost) { + $this->mpdf->OTLdata = []; + if ($this->mpdf->tableLevel) { + $this->mpdf->_saveCellTextBuffer($blockpost); + } else { + $this->mpdf->_saveTextBuffer($blockpost); + } + } + } + + + $p = $this->cssManager->PreviewBlockCSS($tag, $attr); + if (isset($p['DISPLAY']) && strtolower($p['DISPLAY']) === 'none') { + $this->mpdf->blklvl++; + $this->mpdf->blk[$this->mpdf->blklvl]['hide'] = true; + $this->mpdf->blk[$this->mpdf->blklvl]['tag'] = $tag; // mPDF 6 + return; + } + if ($tag === 'CAPTION') { + // position is written in AdjstHTML + $divpos = 'T'; + if (isset($attr['POSITION']) && strtolower($attr['POSITION']) === 'bottom') { + $divpos = 'B'; + } + + $cappos = 'T'; + if (isset($attr['ALIGN']) && strtolower($attr['ALIGN']) === 'bottom') { + $cappos = 'B'; + } elseif (isset($p['CAPTION-SIDE']) && strtolower($p['CAPTION-SIDE']) === 'bottom') { + $cappos = 'B'; + } + if (isset($attr['ALIGN'])) { + unset($attr['ALIGN']); + } + if ($cappos != $divpos) { + $this->mpdf->blklvl++; + $this->mpdf->blk[$this->mpdf->blklvl]['hide'] = true; + $this->mpdf->blk[$this->mpdf->blklvl]['tag'] = $tag; // mPDF 6 + return; + } + } + + /* -- FORMS -- */ + if ($tag === 'FORM') { + $this->form->formMethod = 'POST'; + if (isset($attr['METHOD']) && strtolower($attr['METHOD']) === 'get') { + $this->form->formMethod = 'GET'; + } + + $this->form->formAction = ''; + if (isset($attr['ACTION'])) { + $this->form->formAction = $attr['ACTION']; + } + } + /* -- END FORMS -- */ + + + /* -- CSS-POSITION -- */ + if ((isset($p['POSITION']) + && (strtolower($p['POSITION']) === 'fixed' + || strtolower($p['POSITION']) === 'absolute')) + && $this->mpdf->blklvl == 0) { + if ($this->mpdf->inFixedPosBlock) { + throw new \Mpdf\MpdfException('Cannot nest block with position:fixed or position:absolute'); + } + $this->mpdf->inFixedPosBlock = true; + return; + } + /* -- END CSS-POSITION -- */ + // Start Block + $this->mpdf->ignorefollowingspaces = true; + + $lastbottommargin = 0; + if ($this->mpdf->blockjustfinished && !count($this->mpdf->textbuffer) + && $this->mpdf->y != $this->mpdf->tMargin + && $this->mpdf->collapseBlockMargins) { + $lastbottommargin = $this->mpdf->lastblockbottommargin; + } + $this->mpdf->lastblockbottommargin = 0; + $this->mpdf->blockjustfinished = false; + + + $this->mpdf->InlineBDF = []; // mPDF 6 + $this->mpdf->InlineBDFctr = 0; // mPDF 6 + $this->mpdf->InlineProperties = []; + $this->mpdf->divbegin = true; + + $this->mpdf->linebreakjustfinished = false; + + /* -- TABLES -- */ + if ($this->mpdf->tableLevel) { + // If already something on the line + if ($this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['s'] > 0 && !$this->mpdf->nestedtablejustfinished) { + $this->mpdf->_saveCellTextBuffer("\n"); + if (!isset($this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['maxs'])) { + $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['maxs'] = $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['s']; + } elseif ($this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['maxs'] < $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['s']) { + $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['maxs'] = $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['s']; + } + $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['s'] = 0; // reset + } + // Cannot set block properties inside table - use Bold to indicate h1-h6 + if ($tag === 'CENTER' && $this->mpdf->tdbegin) { + $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['a'] = $this->getAlign('center'); + } + + $this->mpdf->InlineProperties['BLOCKINTABLE'] = $this->mpdf->saveInlineProperties(); + $properties = $this->cssManager->MergeCSS('', $tag, $attr); + if (!empty($properties)) { + $this->mpdf->setCSS($properties, 'INLINE'); + } + + // mPDF 6 Lists + if ($tag === 'UL' || $tag === 'OL') { + $this->mpdf->listlvl++; + if (isset($attr['START'])) { + $this->mpdf->listcounter[$this->mpdf->listlvl] = (int) $attr['START'] - 1; + } else { + $this->mpdf->listcounter[$this->mpdf->listlvl] = 0; + } + $this->mpdf->listitem = []; + if ($tag === 'OL') { + $this->mpdf->listtype[$this->mpdf->listlvl] = 'decimal'; + } elseif ($tag === 'UL') { + if ($this->mpdf->listlvl % 3 == 1) { + $this->mpdf->listtype[$this->mpdf->listlvl] = 'disc'; + } elseif ($this->mpdf->listlvl % 3 == 2) { + $this->mpdf->listtype[$this->mpdf->listlvl] = 'circle'; + } else { + $this->mpdf->listtype[$this->mpdf->listlvl] = 'square'; + } + } + } + + // mPDF 6 Lists - in Tables + if ($tag === 'LI') { + + if ($this->mpdf->listlvl == 0) { //in case of malformed HTML code. Example:(...)</p><li>Content</li><p>Paragraph1</p>(...) + $this->mpdf->listlvl++; // first depth level + $this->mpdf->listcounter[$this->mpdf->listlvl] = 0; + } + + $this->mpdf->listcounter[$this->mpdf->listlvl]++; + $this->mpdf->listitem = []; + //if in table - output here as a tabletextbuffer + //position:inside OR position:outside (always output in table as position:inside) + + $decToAlpha = new DecToAlpha(); + $decToRoman = new DecToRoman(); + + switch ($this->mpdf->listtype[$this->mpdf->listlvl]) { + case 'upper-alpha': + case 'upper-latin': + case 'A': + $blt = $decToAlpha->convert($this->mpdf->listcounter[$this->mpdf->listlvl]) . $this->mpdf->list_number_suffix; + break; + case 'lower-alpha': + case 'lower-latin': + case 'a': + $blt = $decToAlpha->convert($this->mpdf->listcounter[$this->mpdf->listlvl], false) . $this->mpdf->list_number_suffix; + break; + case 'upper-roman': + case 'I': + $blt = $decToRoman->convert($this->mpdf->listcounter[$this->mpdf->listlvl]) . $this->mpdf->list_number_suffix; + break; + case 'lower-roman': + case 'i': + $blt = $decToRoman->convert($this->mpdf->listcounter[$this->mpdf->listlvl]) . $this->mpdf->list_number_suffix; + break; + case 'decimal': + case '1': + $blt = $this->mpdf->listcounter[$this->mpdf->listlvl] . $this->mpdf->list_number_suffix; + break; + default: + $blt = '-'; + if ($this->mpdf->listlvl % 3 == 1 && $this->mpdf->_charDefined($this->mpdf->CurrentFont['cw'], 8226)) { + $blt = "\xe2\x80\xa2"; + } // • + elseif ($this->mpdf->listlvl % 3 == 2 && $this->mpdf->_charDefined($this->mpdf->CurrentFont['cw'], 9900)) { + $blt = "\xe2\x9a\xac"; + } // ⚬ + elseif ($this->mpdf->listlvl % 3 == 0 && $this->mpdf->_charDefined($this->mpdf->CurrentFont['cw'], 9642)) { + $blt = "\xe2\x96\xaa"; + } // ▪ + break; + } + + // change to   spaces + if ($this->mpdf->usingCoreFont) { + $ls = str_repeat(chr(160) . chr(160), ($this->mpdf->listlvl - 1) * 2) . $blt . ' '; + } else { + $ls = str_repeat("\xc2\xa0\xc2\xa0", ($this->mpdf->listlvl - 1) * 2) . $blt . ' '; + } + $this->mpdf->_saveCellTextBuffer($ls); + $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['s'] += $this->mpdf->GetStringWidth($ls); + } + + return; + } + /* -- END TABLES -- */ + + if ($this->mpdf->lastblocklevelchange == 1) { + $blockstate = 1; + } // Top margins/padding only + elseif ($this->mpdf->lastblocklevelchange < 1) { + $blockstate = 0; + } // NO margins/padding + + $this->mpdf->printbuffer($this->mpdf->textbuffer, $blockstate); + $this->mpdf->textbuffer = []; + + $save_blklvl = $this->mpdf->blklvl; + $save_blk = $this->mpdf->blk; + + $this->mpdf->Reset(); + + $pagesel = ''; + /* -- CSS-PAGE -- */ + if (isset($p['PAGE'])) { + $pagesel = $p['PAGE']; + } // mPDF 6 (uses $p - preview of properties so blklvl can be incremented after page-break) + /* -- END CSS-PAGE -- */ + + // If page-box has changed AND/OR PAGE-BREAK-BEFORE + // mPDF 6 (uses $p - preview of properties so blklvl can be imcremented after page-break) + if (!$this->mpdf->tableLevel && (($pagesel && (!isset($this->mpdf->page_box['current']) + || $pagesel != $this->mpdf->page_box['current'])) + || (isset($p['PAGE-BREAK-BEFORE']) + && $p['PAGE-BREAK-BEFORE']))) { + // mPDF 6 pagebreaktype + $startpage = $this->mpdf->page; + $pagebreaktype = $this->mpdf->defaultPagebreakType; + $this->mpdf->lastblocklevelchange = -1; + if ($this->mpdf->ColActive) { + $pagebreaktype = 'cloneall'; + } + if ($pagesel && (!isset($this->mpdf->page_box['current']) || $pagesel != $this->mpdf->page_box['current'])) { + $pagebreaktype = 'cloneall'; + } + $this->mpdf->_preForcedPagebreak($pagebreaktype); + + if (isset($p['PAGE-BREAK-BEFORE'])) { + if (strtoupper($p['PAGE-BREAK-BEFORE']) === 'RIGHT') { + $this->mpdf->AddPage( + $this->mpdf->CurOrientation, + 'NEXT-ODD', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + 0, + 0, + 0, + 0, + $pagesel + ); + } elseif (strtoupper($p['PAGE-BREAK-BEFORE']) === 'LEFT') { + $this->mpdf->AddPage( + $this->mpdf->CurOrientation, + 'NEXT-EVEN', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + 0, + 0, + 0, + 0, + $pagesel + ); + } elseif (strtoupper($p['PAGE-BREAK-BEFORE']) === 'ALWAYS') { + $this->mpdf->AddPage($this->mpdf->CurOrientation, '', '', '', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, $pagesel); + } elseif ($this->mpdf->page_box['current'] != $pagesel) { + $this->mpdf->AddPage($this->mpdf->CurOrientation, '', '', '', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, $pagesel); + } // *CSS-PAGE* + } /* -- CSS-PAGE -- */ + // Must Add new page if changed page properties + elseif (!isset($this->mpdf->page_box['current']) || $pagesel != $this->mpdf->page_box['current']) { + $this->mpdf->AddPage($this->mpdf->CurOrientation, '', '', '', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, $pagesel); + } + /* -- END CSS-PAGE -- */ + + // mPDF 6 pagebreaktype + $this->mpdf->_postForcedPagebreak($pagebreaktype, $startpage, $save_blk, $save_blklvl); + } + + // mPDF 6 pagebreaktype - moved after pagebreak + $this->mpdf->blklvl++; + $currblk = & $this->mpdf->blk[$this->mpdf->blklvl]; + $this->mpdf->initialiseBlock($currblk); + $prevblk = & $this->mpdf->blk[$this->mpdf->blklvl - 1]; + $currblk['tag'] = $tag; + $currblk['attr'] = $attr; + + $properties = $this->cssManager->MergeCSS('BLOCK', $tag, $attr); // mPDF 6 - moved to after page-break-before + // mPDF 6 page-break-inside:avoid + if (isset($properties['PAGE-BREAK-INSIDE']) && strtoupper($properties['PAGE-BREAK-INSIDE']) === 'AVOID' + && !$this->mpdf->ColActive && !$this->mpdf->keep_block_together && !isset($attr['PAGEBREAKAVOIDCHECKED'])) { + // avoid re-iterating using PAGEBREAKAVOIDCHECKED; set in CloseTag + $currblk['keep_block_together'] = 1; + $currblk['array_i'] = $ihtml; // mPDF 6 + $this->mpdf->kt_y00 = $this->mpdf->y; + $this->mpdf->kt_p00 = $this->mpdf->page; + $this->mpdf->keep_block_together = 1; + } + if ($lastbottommargin && !empty($properties['MARGIN-TOP']) && empty($properties['FLOAT'])) { + $currblk['lastbottommargin'] = $lastbottommargin; + } + + if (isset($properties['Z-INDEX']) && $this->mpdf->current_layer == 0) { + $v = (int) $properties['Z-INDEX']; + if ($v > 0) { + $currblk['z-index'] = $v; + $this->mpdf->BeginLayer($v); + } + } + + + // mPDF 6 Lists + // List-type set by attribute + if ($tag === 'OL' || $tag === 'UL' || $tag === 'LI') { + if (!empty($attr['TYPE'])) { + $listtype = $attr['TYPE']; + switch ($listtype) { + case 'A': + $listtype = 'upper-latin'; + break; + case 'a': + $listtype = 'lower-latin'; + break; + case 'I': + $listtype = 'upper-roman'; + break; + case 'i': + $listtype = 'lower-roman'; + break; + case '1': + $listtype = 'decimal'; + break; + } + $currblk['list_style_type'] = $listtype; + } + } + + $this->mpdf->setCSS($properties, 'BLOCK', $tag); //name(id/class/style) found in the CSS array! + $currblk['InlineProperties'] = $this->mpdf->saveInlineProperties(); + + if (isset($properties['VISIBILITY'])) { + $v = strtolower($properties['VISIBILITY']); + if (($v === 'hidden' || $v === 'printonly' || $v === 'screenonly') && $this->mpdf->visibility === 'visible' && !$this->mpdf->tableLevel) { + $currblk['visibility'] = $v; + $this->mpdf->SetVisibility($v); + } + } + + // mPDF 6 + if (!empty($attr['ALIGN'])) { + $currblk['block-align'] = $this->getAlign($attr['ALIGN']); + } + + + if (isset($properties['HEIGHT'])) { + $currblk['css_set_height'] = $this->sizeConverter->convert( + $properties['HEIGHT'], + $this->mpdf->h - $this->mpdf->tMargin - $this->mpdf->bMargin, + $this->mpdf->FontSize, + false + ); + if (($currblk['css_set_height'] + $this->mpdf->y) > $this->mpdf->PageBreakTrigger + && $this->mpdf->y > $this->mpdf->tMargin + 5 + && $currblk['css_set_height'] < ($this->mpdf->h - ($this->mpdf->tMargin + $this->mpdf->bMargin))) { + $this->mpdf->AddPage($this->mpdf->CurOrientation); + } + } else { + $currblk['css_set_height'] = false; + } + + + // Added mPDF 3.0 Float DIV + if (isset($prevblk['blockContext'])) { + $currblk['blockContext'] = $prevblk['blockContext']; + } // *CSS-FLOAT* + + if (isset($properties['CLEAR'])) { + $this->mpdf->ClearFloats(strtoupper($properties['CLEAR']), $this->mpdf->blklvl - 1); + } // *CSS-FLOAT* + + $currblk['padding_left'] = is_numeric($currblk['padding_left']) ? $currblk['padding_left'] : 0; + $currblk['padding_right'] = is_numeric($currblk['padding_right']) ? $currblk['padding_right'] : 0; + + $container_w = $prevblk['inner_width']; + $bdr = $currblk['border_right']['w']; + $bdl = $currblk['border_left']['w']; + $pdr = $currblk['padding_right']; + $pdl = $currblk['padding_left']; + + $setwidth = 0; + if (isset($currblk['css_set_width'])) { + $setwidth = $currblk['css_set_width']; + } + + /* -- CSS-FLOAT -- */ + if (isset($properties['FLOAT']) && strtoupper($properties['FLOAT']) === 'RIGHT' && !$this->mpdf->ColActive) { + + // Cancel Keep-Block-together + $currblk['keep_block_together'] = false; + $this->mpdf->kt_y00 = 0; + $this->mpdf->keep_block_together = 0; + + $this->mpdf->blockContext++; + $currblk['blockContext'] = $this->mpdf->blockContext; + + list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->mpdf->GetFloatDivInfo($this->mpdf->blklvl - 1); + + // DIV is too narrow for text to fit! + $maxw = $container_w - $l_width - $r_width; + $doubleCharWidth = (2 * $this->mpdf->GetCharWidth('W', false)); + if (($setwidth + $currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr) > $maxw + || ($maxw - ($currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr)) < (2 * $this->mpdf->GetCharWidth('W', false))) { + // Too narrow to fit - try to move down past L or R float + if ($l_max < $r_max && ($setwidth + $currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr) <= ($container_w - $r_width) + && (($container_w - $r_width) - ($currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr)) > $doubleCharWidth) { + $this->mpdf->ClearFloats('LEFT', $this->mpdf->blklvl - 1); + } elseif ($r_max < $l_max && ($setwidth + $currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr) <= ($container_w - $l_width) + && (($container_w - $l_width) - ($currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr)) > $doubleCharWidth) { + $this->mpdf->ClearFloats('RIGHT', $this->mpdf->blklvl - 1); + } else { + $this->mpdf->ClearFloats('BOTH', $this->mpdf->blklvl - 1); + } + list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->mpdf->GetFloatDivInfo($this->mpdf->blklvl - 1); + } + + if ($r_exists) { + $currblk['margin_right'] += $r_width; + } + + $currblk['float'] = 'R'; + $currblk['float_start_y'] = $this->mpdf->y; + + if (isset($currblk['css_set_width'])) { + $currblk['margin_left'] = $container_w - ($setwidth + $bdl + $pdl + $bdr + $pdr + $currblk['margin_right']); + $currblk['float_width'] = ($setwidth + $bdl + $pdl + $bdr + $pdr + $currblk['margin_right']); + } else { + // *** If no width set - would need to buffer and keep track of max width, then Right-align if not full width + // and do borders and backgrounds - For now - just set to maximum width left + + if ($l_exists) { + $currblk['margin_left'] += $l_width; + } + $currblk['css_set_width'] = $container_w - ($currblk['margin_left'] + $currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr); + + $currblk['float_width'] = ($currblk['css_set_width'] + $bdl + $pdl + $bdr + $pdr + $currblk['margin_right']); + } + + } elseif (isset($properties['FLOAT']) && strtoupper($properties['FLOAT']) === 'LEFT' && !$this->mpdf->ColActive) { + // Cancel Keep-Block-together + $currblk['keep_block_together'] = false; + $this->mpdf->kt_y00 = 0; + $this->mpdf->keep_block_together = 0; + + $this->mpdf->blockContext++; + $currblk['blockContext'] = $this->mpdf->blockContext; + + list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->mpdf->GetFloatDivInfo($this->mpdf->blklvl - 1); + + // DIV is too narrow for text to fit! + $maxw = $container_w - $l_width - $r_width; + $doubleCharWidth = (2 * $this->mpdf->GetCharWidth('W', false)); + if (($setwidth + $currblk['margin_left'] + $bdl + $pdl + $bdr + $pdr) > $maxw + || ($maxw - ($currblk['margin_left'] + $bdl + $pdl + $bdr + $pdr)) < (2 * $this->mpdf->GetCharWidth('W', false))) { + // Too narrow to fit - try to move down past L or R float + if ($l_max < $r_max && ($setwidth + $currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr) <= ($container_w - $r_width) + && (($container_w - $r_width) - ($currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr)) > $doubleCharWidth) { + $this->mpdf->ClearFloats('LEFT', $this->mpdf->blklvl - 1); + } elseif ($r_max < $l_max && ($setwidth + $currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr) <= ($container_w - $l_width) + && (($container_w - $l_width) - ($currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr)) > $doubleCharWidth) { + $this->mpdf->ClearFloats('RIGHT', $this->mpdf->blklvl - 1); + } else { + $this->mpdf->ClearFloats('BOTH', $this->mpdf->blklvl - 1); + } + list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->mpdf->GetFloatDivInfo($this->mpdf->blklvl - 1); + } + + if ($l_exists) { + $currblk['margin_left'] += $l_width; + } + + $currblk['float'] = 'L'; + $currblk['float_start_y'] = $this->mpdf->y; + if ($setwidth) { + $currblk['margin_right'] = $container_w - ($setwidth + $bdl + $pdl + $bdr + $pdr + $currblk['margin_left']); + $currblk['float_width'] = ($setwidth + $bdl + $pdl + $bdr + $pdr + $currblk['margin_left']); + } else { + // *** If no width set - would need to buffer and keep track of max width, then Right-align if not full width + // and do borders and backgrounds - For now - just set to maximum width left + + if ($r_exists) { + $currblk['margin_right'] += $r_width; + } + $currblk['css_set_width'] = $container_w - ($currblk['margin_left'] + $currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr); + + $currblk['float_width'] = ($currblk['css_set_width'] + $bdl + $pdl + $bdr + $pdr + $currblk['margin_left']); + } + } else { + // Don't allow overlap - if floats present - adjust padding to avoid overlap with Floats + list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->mpdf->GetFloatDivInfo($this->mpdf->blklvl - 1); + $maxw = $container_w - $l_width - $r_width; + + $pdl = is_numeric($pdl) ? $pdl : 0; + $pdr = is_numeric($pdr) ? $pdr : 0; + + $doubleCharWidth = (2 * $this->mpdf->GetCharWidth('W', false)); + if (($setwidth + $currblk['margin_left'] + $currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr) > $maxw + || ($maxw - ($currblk['margin_right'] + $currblk['margin_left'] + $bdl + $pdl + $bdr + $pdr)) < $doubleCharWidth) { + // Too narrow to fit - try to move down past L or R float + if ($l_max < $r_max && ($setwidth + $currblk['margin_left'] + $currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr) <= ($container_w - $r_width) + && (($container_w - $r_width) - ($currblk['margin_right'] + $currblk['margin_left'] + $bdl + $pdl + $bdr + $pdr)) > $doubleCharWidth) { + $this->mpdf->ClearFloats('LEFT', $this->mpdf->blklvl - 1); + } elseif ($r_max < $l_max && ($setwidth + $currblk['margin_left'] + $currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr) <= ($container_w - $l_width) + && (($container_w - $l_width) - ($currblk['margin_right'] + $currblk['margin_left'] + $bdl + $pdl + $bdr + $pdr)) > $doubleCharWidth) { + $this->mpdf->ClearFloats('RIGHT', $this->mpdf->blklvl - 1); + } else { + $this->mpdf->ClearFloats('BOTH', $this->mpdf->blklvl - 1); + } + list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->mpdf->GetFloatDivInfo($this->mpdf->blklvl - 1); + } + if ($r_exists) { + $currblk['padding_right'] = max($r_width - $currblk['margin_right'] - $bdr, $pdr); + } + if ($l_exists) { + $currblk['padding_left'] = max($l_width - $currblk['margin_left'] - $bdl, $pdl); + } + } + /* -- END CSS-FLOAT -- */ + + + /* -- BORDER-RADIUS -- */ + // Automatically increase padding if required for border-radius + if ($this->mpdf->autoPadding && !$this->mpdf->ColActive) { + $currblk['border_radius_TL_H'] = Arrays::get($currblk, 'border_radius_TL_H', 0); + $currblk['border_radius_TL_V'] = Arrays::get($currblk, 'border_radius_TL_V', 0); + $currblk['border_radius_TR_H'] = Arrays::get($currblk, 'border_radius_TR_H', 0); + $currblk['border_radius_TR_V'] = Arrays::get($currblk, 'border_radius_TR_V', 0); + $currblk['border_radius_BL_H'] = Arrays::get($currblk, 'border_radius_BL_H', 0); + $currblk['border_radius_BL_V'] = Arrays::get($currblk, 'border_radius_BL_V', 0); + $currblk['border_radius_BR_H'] = Arrays::get($currblk, 'border_radius_BR_H', 0); + $currblk['border_radius_BR_V'] = Arrays::get($currblk, 'border_radius_BR_V', 0); + + if ($currblk['border_radius_TL_H'] > $currblk['padding_left'] && $currblk['border_radius_TL_V'] > $currblk['padding_top']) { + if ($currblk['border_radius_TL_H'] > $currblk['border_radius_TL_V']) { + $this->mpdf->_borderPadding( + $currblk['border_radius_TL_H'], + $currblk['border_radius_TL_V'], + $currblk['padding_left'], + $currblk['padding_top'] + ); + } else { + $this->mpdf->_borderPadding( + $currblk['border_radius_TL_V'], + $currblk['border_radius_TL_H'], + $currblk['padding_top'], + $currblk['padding_left'] + ); + } + } + if ($currblk['border_radius_TR_H'] > $currblk['padding_right'] && $currblk['border_radius_TR_V'] > $currblk['padding_top']) { + if ($currblk['border_radius_TR_H'] > $currblk['border_radius_TR_V']) { + $this->mpdf->_borderPadding( + $currblk['border_radius_TR_H'], + $currblk['border_radius_TR_V'], + $currblk['padding_right'], + $currblk['padding_top'] + ); + } else { + $this->mpdf->_borderPadding( + $currblk['border_radius_TR_V'], + $currblk['border_radius_TR_H'], + $currblk['padding_top'], + $currblk['padding_right'] + ); + } + } + if ($currblk['border_radius_BL_H'] > $currblk['padding_left'] && $currblk['border_radius_BL_V'] > $currblk['padding_bottom']) { + if ($currblk['border_radius_BL_H'] > $currblk['border_radius_BL_V']) { + $this->mpdf->_borderPadding( + $currblk['border_radius_BL_H'], + $currblk['border_radius_BL_V'], + $currblk['padding_left'], + $currblk['padding_bottom'] + ); + } else { + $this->mpdf->_borderPadding( + $currblk['border_radius_BL_V'], + $currblk['border_radius_BL_H'], + $currblk['padding_bottom'], + $currblk['padding_left'] + ); + } + } + if ($currblk['border_radius_BR_H'] > $currblk['padding_right'] && $currblk['border_radius_BR_V'] > $currblk['padding_bottom']) { + if ($currblk['border_radius_BR_H'] > $currblk['border_radius_BR_V']) { + $this->mpdf->_borderPadding( + $currblk['border_radius_BR_H'], + $currblk['border_radius_BR_V'], + $currblk['padding_right'], + $currblk['padding_bottom'] + ); + } else { + $this->mpdf->_borderPadding( + $currblk['border_radius_BR_V'], + $currblk['border_radius_BR_H'], + $currblk['padding_bottom'], + $currblk['padding_right'] + ); + } + } + } + /* -- END BORDER-RADIUS -- */ + + // Hanging indent - if negative indent: ensure padding is >= indent + if (!isset($currblk['text_indent'])) { + $currblk['text_indent'] = null; + } + if (!isset($currblk['inner_width'])) { + $currblk['inner_width'] = null; + } + $cbti = $this->sizeConverter->convert( + $currblk['text_indent'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + if ($cbti < 0) { + $hangind = -$cbti; + if (isset($currblk['direction']) && $currblk['direction'] === 'rtl') { // *OTL* + $currblk['padding_right'] = max($currblk['padding_right'], $hangind); // *OTL* + } // *OTL* + else { // *OTL* + $currblk['padding_left'] = max($currblk['padding_left'], $hangind); + } // *OTL* + } + + if (isset($currblk['css_set_width'])) { + if (isset($properties['MARGIN-LEFT'], $properties['MARGIN-RIGHT']) + && strtolower($properties['MARGIN-LEFT']) === 'auto' && strtolower($properties['MARGIN-RIGHT']) === 'auto') { + // Try to reduce margins to accomodate - if still too wide, set margin-right/left=0 (reduces width) + $anyextra = $prevblk['inner_width'] - ($currblk['css_set_width'] + $currblk['border_left']['w'] + + $currblk['padding_left'] + $currblk['border_right']['w'] + $currblk['padding_right']); + if ($anyextra > 0) { + $currblk['margin_left'] = $currblk['margin_right'] = $anyextra / 2; + } else { + $currblk['margin_left'] = $currblk['margin_right'] = 0; + } + } elseif (isset($properties['MARGIN-LEFT']) && strtolower($properties['MARGIN-LEFT']) === 'auto') { + // Try to reduce margin-left to accomodate - if still too wide, set margin-left=0 (reduces width) + $currblk['margin_left'] = $prevblk['inner_width'] - ($currblk['css_set_width'] + + $currblk['border_left']['w'] + $currblk['padding_left'] + $currblk['border_right']['w'] + + $currblk['padding_right'] + $currblk['margin_right']); + if ($currblk['margin_left'] < 0) { + $currblk['margin_left'] = 0; + } + } elseif (isset($properties['MARGIN-RIGHT']) && strtolower($properties['MARGIN-RIGHT']) === 'auto') { + // Try to reduce margin-right to accomodate - if still too wide, set margin-right=0 (reduces width) + $currblk['margin_right'] = $prevblk['inner_width'] - ($currblk['css_set_width'] + + $currblk['border_left']['w'] + $currblk['padding_left'] + + $currblk['border_right']['w'] + $currblk['padding_right'] + $currblk['margin_left']); + if ($currblk['margin_right'] < 0) { + $currblk['margin_right'] = 0; + } + } else { + if ($currblk['direction'] === 'rtl') { // *OTL* + // Try to reduce margin-left to accomodate - if still too wide, set margin-left=0 (reduces width) + $currblk['margin_left'] = $prevblk['inner_width'] - ($currblk['css_set_width'] + + $currblk['border_left']['w'] + $currblk['padding_left'] + $currblk['border_right']['w'] + + $currblk['padding_right'] + $currblk['margin_right']); // *OTL* + if ($currblk['margin_left'] < 0) { // *OTL* + $currblk['margin_left'] = 0; // *OTL* + } // *OTL* + } // *OTL* + else { // *OTL* + // Try to reduce margin-right to accomodate - if still too wide, set margin-right=0 (reduces width) + $currblk['margin_right'] = $prevblk['inner_width'] - ($currblk['css_set_width'] + + $currblk['border_left']['w'] + $currblk['padding_left'] + $currblk['border_right']['w'] + + $currblk['padding_right'] + $currblk['margin_left']); + if ($currblk['margin_right'] < 0) { + $currblk['margin_right'] = 0; + } + } // *OTL* + } + } + + $currblk['outer_left_margin'] = $prevblk['outer_left_margin'] + $currblk['margin_left'] + + $prevblk['border_left']['w'] + $prevblk['padding_left']; + + $currblk['outer_right_margin'] = $prevblk['outer_right_margin'] + $currblk['margin_right'] + + $prevblk['border_right']['w'] + $prevblk['padding_right']; + + $currblk['width'] = $this->mpdf->pgwidth - ($currblk['outer_right_margin'] + $currblk['outer_left_margin']); + + $currblk['inner_width'] = $currblk['width'] + - ($currblk['border_left']['w'] + $currblk['padding_left'] + $currblk['border_right']['w'] + $currblk['padding_right']); + + // Check DIV is not now too narrow to fit text + $mw = 2 * $this->mpdf->GetCharWidth('W', false); + if ($currblk['inner_width'] < $mw) { + $currblk['padding_left'] = 0; + $currblk['padding_right'] = 0; + $currblk['border_left']['w'] = 0.2; + $currblk['border_right']['w'] = 0.2; + $currblk['margin_left'] = 0; + $currblk['margin_right'] = 0; + $currblk['outer_left_margin'] = $prevblk['outer_left_margin'] + $currblk['margin_left'] + + $prevblk['border_left']['w'] + $prevblk['padding_left']; + $currblk['outer_right_margin'] = $prevblk['outer_right_margin'] + $currblk['margin_right'] + + $prevblk['border_right']['w'] + $prevblk['padding_right']; + $currblk['width'] = $this->mpdf->pgwidth - ($currblk['outer_right_margin'] + $currblk['outer_left_margin']); + $currblk['inner_width'] = $this->mpdf->pgwidth - ($currblk['outer_right_margin'] + + $currblk['outer_left_margin'] + $currblk['border_left']['w'] + $currblk['padding_left'] + + $currblk['border_right']['w'] + $currblk['padding_right']); + // if ($currblk['inner_width'] < $mw) { throw new \Mpdf\MpdfException("DIV is too narrow for text to fit!"); } + } + + $this->mpdf->x = $this->mpdf->lMargin + $currblk['outer_left_margin']; + + /* -- BACKGROUNDS -- */ + if (!empty($properties['BACKGROUND-IMAGE']) && !$this->mpdf->kwt && !$this->mpdf->ColActive && !$this->mpdf->keep_block_together) { + $ret = $this->mpdf->SetBackground($properties, $currblk['inner_width']); + if ($ret) { + $currblk['background-image'] = $ret; + } + } + /* -- END BACKGROUNDS -- */ + + /* -- TABLES -- */ + if ($this->mpdf->use_kwt && isset($attr['KEEP-WITH-TABLE']) && !$this->mpdf->ColActive && !$this->mpdf->keep_block_together) { + $this->mpdf->kwt = true; + $this->mpdf->kwt_y0 = $this->mpdf->y; + //$this->mpdf->kwt_x0 = $this->mpdf->x; + $this->mpdf->kwt_x0 = $this->mpdf->lMargin; // mPDF 6 + $this->mpdf->kwt_height = 0; + $this->mpdf->kwt_buffer = []; + $this->mpdf->kwt_Links = []; + $this->mpdf->kwt_Annots = []; + $this->mpdf->kwt_moved = false; + $this->mpdf->kwt_saved = false; + $this->mpdf->kwt_Reference = []; + $this->mpdf->kwt_BMoutlines = []; + $this->mpdf->kwt_toc = []; + } else { + /* -- END TABLES -- */ + $this->mpdf->kwt = false; + } // *TABLES* + + // Save x,y coords in case we need to print borders... + $currblk['y0'] = $this->mpdf->y; + $currblk['initial_y0'] = $this->mpdf->y; // mPDF 6 + $currblk['x0'] = $this->mpdf->x; + $currblk['initial_x0'] = $this->mpdf->x; // mPDF 6 + $currblk['initial_startpage'] = $this->mpdf->page; + $currblk['startpage'] = $this->mpdf->page; // mPDF 6 + $this->mpdf->oldy = $this->mpdf->y; + + $this->mpdf->lastblocklevelchange = 1; + + // mPDF 6 Lists + if ($tag === 'OL' || $tag === 'UL') { + $this->mpdf->listlvl++; + if (!empty($attr['START'])) { + $this->mpdf->listcounter[$this->mpdf->listlvl] = (int) $attr['START'] - 1; + } else { + $this->mpdf->listcounter[$this->mpdf->listlvl] = 0; + } + $this->mpdf->listitem = []; + + // List-type + if (empty($currblk['list_style_type'])) { + if ($tag === 'OL') { + $currblk['list_style_type'] = 'decimal'; + } elseif ($tag === 'UL') { + if ($this->mpdf->listlvl % 3 == 1) { + $currblk['list_style_type'] = 'disc'; + } elseif ($this->mpdf->listlvl % 3 == 2) { + $currblk['list_style_type'] = 'circle'; + } else { + $currblk['list_style_type'] = 'square'; + } + } + } + + // List-image + if (empty($currblk['list_style_image'])) { + $currblk['list_style_image'] = 'none'; + } + + // List-position + if (empty($currblk['list_style_position'])) { + $currblk['list_style_position'] = 'outside'; + } + + // Default indentation using padding + if (strtolower($this->mpdf->list_auto_mode) === 'mpdf' && isset($currblk['list_style_position']) + && $currblk['list_style_position'] === 'outside' && isset($currblk['list_style_image']) + && $currblk['list_style_image'] === 'none' && (!isset($currblk['list_style_type']) + || !preg_match('/U\+([a-fA-F0-9]+)/i', $currblk['list_style_type']))) { + $autopadding = $this->mpdf->_getListMarkerWidth($currblk, $ahtml, $ihtml); + if ($this->mpdf->listlvl > 1 || $this->mpdf->list_indent_first_level) { + $autopadding += $this->sizeConverter->convert( + $this->mpdf->list_indent_default, + $currblk['inner_width'], + $this->mpdf->FontSize, + false + ); + } + // autopadding value is applied to left or right according + // to dir of block. Once a CSS value is set for padding it overrides this default value. + if (isset($properties['PADDING-RIGHT']) && $properties['PADDING-RIGHT'] === 'auto' + && isset($currblk['direction']) && $currblk['direction'] === 'rtl') { + $currblk['padding_right'] = $autopadding; + } elseif (isset($properties['PADDING-LEFT']) && $properties['PADDING-LEFT'] === 'auto') { + $currblk['padding_left'] = $autopadding; + } + } else { + // Initial default value is set by $this->mpdf->list_indent_default in config.php; this value is applied to left or right according + // to dir of block. Once a CSS value is set for padding it overrides this default value. + if (isset($properties['PADDING-RIGHT']) && $properties['PADDING-RIGHT'] === 'auto' + && isset($currblk['direction']) && $currblk['direction'] === 'rtl') { + $currblk['padding_right'] = $this->sizeConverter->convert( + $this->mpdf->list_indent_default, + $currblk['inner_width'], + $this->mpdf->FontSize, + false + ); + } elseif (isset($properties['PADDING-LEFT']) && $properties['PADDING-LEFT'] === 'auto') { + $currblk['padding_left'] = $this->sizeConverter->convert( + $this->mpdf->list_indent_default, + $currblk['inner_width'], + $this->mpdf->FontSize, + false + ); + } + } + } + + // mPDF 6 Lists + if ($tag === 'LI') { + if ($this->mpdf->listlvl == 0) { // in case of malformed HTML code. Example:(...)</p><li>Content</li><p>Paragraph1</p>(...) + $this->mpdf->listlvl++; // first depth level + $this->mpdf->listcounter[$this->mpdf->listlvl] = 0; + } + + if (!isset($attr['PAGEBREAKAVOIDCHECKED']) || !$attr['PAGEBREAKAVOIDCHECKED']) { + $this->mpdf->listcounter[$this->mpdf->listlvl]++; + } + + $this->mpdf->listitem = []; + + // Listitem-type + $this->mpdf->_setListMarker($currblk['list_style_type'], $currblk['list_style_image'], $currblk['list_style_position']); + } + + // mPDF 6 Bidirectional formatting for block elements + $bdf = false; + $bdf2 = ''; + $popd = ''; + + // Get current direction + $currdir = 'ltr'; + if (isset($currblk['direction'])) { + $currdir = $currblk['direction']; + } + if (isset($attr['DIR']) && $attr['DIR'] != '') { + $currdir = strtolower($attr['DIR']); + } + if (isset($properties['DIRECTION'])) { + $currdir = strtolower($properties['DIRECTION']); + } + + // mPDF 6 bidi + // cf. http://www.w3.org/TR/css3-writing-modes/#unicode-bidi + if (isset($properties ['UNICODE-BIDI']) + && (strtolower($properties ['UNICODE-BIDI']) === 'bidi-override' || strtolower($properties ['UNICODE-BIDI']) === 'isolate-override')) { + if ($currdir === 'rtl') { + $bdf = 0x202E; + $popd = 'RLOPDF'; + } // U+202E RLO + else { + $bdf = 0x202D; + $popd = 'LROPDF'; + } // U+202D LRO + } elseif (isset($properties ['UNICODE-BIDI']) && strtolower($properties ['UNICODE-BIDI']) === 'plaintext') { + $bdf = 0x2068; + $popd = 'FSIPDI'; // U+2068 FSI + } + if ($bdf) { + if ($bdf2) { + $bdf2 = UtfString::code2utf($bdf); + } + $this->mpdf->OTLdata = []; + if ($this->mpdf->tableLevel) { + $this->mpdf->_saveCellTextBuffer(UtfString::code2utf($bdf) . $bdf2); + } else { + $this->mpdf->_saveTextBuffer(UtfString::code2utf($bdf) . $bdf2); + } + $this->mpdf->biDirectional = true; + $currblk['bidicode'] = $popd; + } + } + + public function close(&$ahtml, &$ihtml) + { + $tag = $this->getTagName(); + + // mPDF 6 bidi + // Block + // If unicode-bidi set, any embedding levels, isolates, or overrides started by this box are closed + if (isset($this->mpdf->blk[$this->mpdf->blklvl]['bidicode'])) { + $blockpost = $this->mpdf->_setBidiCodes('end', $this->mpdf->blk[$this->mpdf->blklvl]['bidicode']); + if ($blockpost) { + $this->mpdf->OTLdata = []; + if ($this->mpdf->tableLevel) { + $this->mpdf->_saveCellTextBuffer($blockpost); + } else { + $this->mpdf->_saveTextBuffer($blockpost); + } + } + } + + $this->mpdf->ignorefollowingspaces = true; //Eliminate exceeding left-side spaces + $this->mpdf->blockjustfinished = true; + + $this->mpdf->lastblockbottommargin = $this->mpdf->blk[$this->mpdf->blklvl]['margin_bottom']; + // mPDF 6 Lists + if ($tag === 'UL' || $tag === 'OL') { + if ($this->mpdf->listlvl > 0 && $this->mpdf->tableLevel) { + if (isset($this->mpdf->listtype[$this->mpdf->listlvl])) { + unset($this->mpdf->listtype[$this->mpdf->listlvl]); + } + } + $this->mpdf->listlvl--; + $this->mpdf->listitem = []; + } + if ($tag === 'LI') { + $this->mpdf->listitem = []; + } + + if (preg_match('/^H\d/', $tag) && !$this->mpdf->tableLevel && !$this->mpdf->writingToC) { + if (isset($this->mpdf->h2toc[$tag]) || isset($this->mpdf->h2bookmarks[$tag])) { + $content = ''; + if (count($this->mpdf->textbuffer) == 1) { + $content = $this->mpdf->textbuffer[0][0]; + } else { + for ($i = 0; $i < count($this->mpdf->textbuffer); $i++) { + if (0 !== strpos($this->mpdf->textbuffer[$i][0], "\xbb\xa4\xac")) { //inline object + $content .= $this->mpdf->textbuffer[$i][0]; + } + } + } + /* -- TOC -- */ + if (isset($this->mpdf->h2toc[$tag])) { + $objattr = []; + $objattr['type'] = 'toc'; + $objattr['toclevel'] = $this->mpdf->h2toc[$tag]; + $objattr['CONTENT'] = htmlspecialchars($content); + $e = "\xbb\xa4\xactype=toc,objattr=" . serialize($objattr) . "\xbb\xa4\xac"; + array_unshift($this->mpdf->textbuffer, [$e]); + } + /* -- END TOC -- */ + /* -- BOOKMARKS -- */ + if (isset($this->mpdf->h2bookmarks[$tag])) { + $objattr = []; + $objattr['type'] = 'bookmark'; + $objattr['bklevel'] = $this->mpdf->h2bookmarks[$tag]; + $objattr['CONTENT'] = $content; + $e = "\xbb\xa4\xactype=toc,objattr=" . serialize($objattr) . "\xbb\xa4\xac"; + array_unshift($this->mpdf->textbuffer, [$e]); + } + /* -- END BOOKMARKS -- */ + } + } + + /* -- TABLES -- */ + if ($this->mpdf->tableLevel) { + if ($this->mpdf->linebreakjustfinished) { + $this->mpdf->blockjustfinished = false; + } + if (isset($this->mpdf->InlineProperties['BLOCKINTABLE'])) { + if ($this->mpdf->InlineProperties['BLOCKINTABLE']) { + $this->mpdf->restoreInlineProperties($this->mpdf->InlineProperties['BLOCKINTABLE']); + } + unset($this->mpdf->InlineProperties['BLOCKINTABLE']); + } + if ($tag === 'PRE') { + $this->mpdf->ispre = false; + } + return; + } + /* -- END TABLES -- */ + $this->mpdf->lastoptionaltag = ''; + $this->mpdf->divbegin = false; + + $this->mpdf->linebreakjustfinished = false; + + $this->mpdf->x = $this->mpdf->lMargin + $this->mpdf->blk[$this->mpdf->blklvl]['outer_left_margin']; + + /* -- CSS-FLOAT -- */ + // If float contained in a float, need to extend bottom to allow for it + $currpos = $this->mpdf->page * 1000 + $this->mpdf->y; + if (isset($this->mpdf->blk[$this->mpdf->blklvl]['float_endpos']) && $this->mpdf->blk[$this->mpdf->blklvl]['float_endpos'] > $currpos) { + $old_page = $this->mpdf->page; + $new_page = (int) ($this->mpdf->blk[$this->mpdf->blklvl]['float_endpos'] / 1000); + if ($old_page != $new_page) { + $s = $this->mpdf->PrintPageBackgrounds(); + // Writes after the marker so not overwritten later by page background etc. + $this->mpdf->pages[$this->mpdf->page] = preg_replace( + '/(___BACKGROUND___PATTERNS' . $this->mpdf->uniqstr . ')/', + '\\1' . "\n" . $s . "\n", + $this->mpdf->pages[$this->mpdf->page] + ); + $this->mpdf->pageBackgrounds = []; + $this->mpdf->page = $new_page; + $this->mpdf->ResetMargins(); + $this->mpdf->Reset(); + $this->mpdf->pageoutput[$this->mpdf->page] = []; + } + // mod changes operands to integers before processing + $this->mpdf->y = (($this->mpdf->blk[$this->mpdf->blklvl]['float_endpos'] * 1000) % 1000000) / 1000; + } + /* -- END CSS-FLOAT -- */ + + + //Print content + $blockstate = 0; + if ($this->mpdf->lastblocklevelchange == 1) { + $blockstate = 3; + } // Top & bottom margins/padding + elseif ($this->mpdf->lastblocklevelchange == -1) { + $blockstate = 2; + } // Bottom margins/padding only + + // called from after e.g. </table> </div> </div> ... Outputs block margin/border and padding + if (count($this->mpdf->textbuffer) && $this->mpdf->textbuffer[count($this->mpdf->textbuffer) - 1]) { + if (0 !== strpos($this->mpdf->textbuffer[count($this->mpdf->textbuffer) - 1][0], "\xbb\xa4\xac")) { // not special content + // Right trim last content and adjust OTLdata + if (preg_match('/[ ]+$/', $this->mpdf->textbuffer[count($this->mpdf->textbuffer) - 1][0], $m)) { + $strip = strlen($m[0]); + $this->mpdf->textbuffer[count($this->mpdf->textbuffer) - 1][0] = substr( + $this->mpdf->textbuffer[count($this->mpdf->textbuffer) - 1][0], + 0, + strlen($this->mpdf->textbuffer[count($this->mpdf->textbuffer) - 1][0]) - $strip + ); + /* -- OTL -- */ + if (!empty($this->mpdf->CurrentFont['useOTL'])) { + $this->otl->trimOTLdata($this->mpdf->textbuffer[count($this->mpdf->textbuffer) - 1][18], false); // mPDF 6 ZZZ99K + } + /* -- END OTL -- */ + } + } + } + + if (count($this->mpdf->textbuffer) == 0 && $this->mpdf->lastblocklevelchange != 0) { + /*$this->mpdf->newFlowingBlock( + $this->mpdf->blk[$this->mpdf->blklvl]['width'], + $this->mpdf->lineheight, + '', + false, + 2, + true, + (isset($this->mpdf->blk[$this->mpdf->blklvl]['direction']) ? $this->mpdf->blk[$this->mpdf->blklvl]['direction'] : 'ltr') + );*/ + + $this->mpdf->newFlowingBlock( + $this->mpdf->blk[$this->mpdf->blklvl]['width'], + $this->mpdf->lineheight, + '', + false, + $blockstate, + true, + (isset($this->mpdf->blk[$this->mpdf->blklvl]['direction']) ? $this->mpdf->blk[$this->mpdf->blklvl]['direction'] : 'ltr') + ); + + $this->mpdf->finishFlowingBlock(true); // true = END of flowing block + $this->mpdf->PaintDivBB('', $blockstate); + } else { + $this->mpdf->printbuffer($this->mpdf->textbuffer, $blockstate); + } + + + $this->mpdf->textbuffer = []; + + if ($this->mpdf->kwt) { + $this->mpdf->kwt_height = $this->mpdf->y - $this->mpdf->kwt_y0; + } + + /* -- CSS-IMAGE-FLOAT -- */ + $this->mpdf->printfloatbuffer(); + /* -- END CSS-IMAGE-FLOAT -- */ + + if ($tag === 'PRE') { + $this->mpdf->ispre = false; + } + + /* -- CSS-FLOAT -- */ + if ($this->mpdf->blk[$this->mpdf->blklvl]['float'] === 'R') { + // If width not set, here would need to adjust and output buffer + $s = $this->mpdf->PrintPageBackgrounds(); + // Writes after the marker so not overwritten later by page background etc. + $this->mpdf->pages[$this->mpdf->page] = preg_replace('/(___BACKGROUND___PATTERNS' . $this->mpdf->uniqstr . ')/', '\\1' . "\n" . $s . "\n", $this->mpdf->pages[$this->mpdf->page]); + $this->mpdf->pageBackgrounds = []; + $this->mpdf->Reset(); + $this->mpdf->pageoutput[$this->mpdf->page] = []; + + for ($i = ($this->mpdf->blklvl - 1); $i >= 0; $i--) { + if (isset($this->mpdf->blk[$i]['float_endpos'])) { + $this->mpdf->blk[$i]['float_endpos'] = max($this->mpdf->blk[$i]['float_endpos'], $this->mpdf->page * 1000 + $this->mpdf->y); + } else { + $this->mpdf->blk[$i]['float_endpos'] = $this->mpdf->page * 1000 + $this->mpdf->y; + } + } + + $this->mpdf->floatDivs[] = [ + 'side' => 'R', + 'startpage' => $this->mpdf->blk[$this->mpdf->blklvl]['startpage'], + 'y0' => $this->mpdf->blk[$this->mpdf->blklvl]['float_start_y'], + 'startpos' => $this->mpdf->blk[$this->mpdf->blklvl]['startpage'] * 1000 + $this->mpdf->blk[$this->mpdf->blklvl]['float_start_y'], + 'endpage' => $this->mpdf->page, + 'y1' => $this->mpdf->y, + 'endpos' => $this->mpdf->page * 1000 + $this->mpdf->y, + 'w' => $this->mpdf->blk[$this->mpdf->blklvl]['float_width'], + 'blklvl' => $this->mpdf->blklvl, + 'blockContext' => $this->mpdf->blk[$this->mpdf->blklvl - 1]['blockContext'] + ]; + + $this->mpdf->y = $this->mpdf->blk[$this->mpdf->blklvl]['float_start_y']; + $this->mpdf->page = $this->mpdf->blk[$this->mpdf->blklvl]['startpage']; + $this->mpdf->ResetMargins(); + $this->mpdf->pageoutput[$this->mpdf->page] = []; + } + if ($this->mpdf->blk[$this->mpdf->blklvl]['float'] === 'L') { + // If width not set, here would need to adjust and output buffer + $s = $this->mpdf->PrintPageBackgrounds(); + // Writes after the marker so not overwritten later by page background etc. + $this->mpdf->pages[$this->mpdf->page] = preg_replace('/(___BACKGROUND___PATTERNS' . $this->mpdf->uniqstr . ')/', '\\1' . "\n" . $s . "\n", $this->mpdf->pages[$this->mpdf->page]); + $this->mpdf->pageBackgrounds = []; + $this->mpdf->Reset(); + $this->mpdf->pageoutput[$this->mpdf->page] = []; + + for ($i = ($this->mpdf->blklvl - 1); $i >= 0; $i--) { + if (isset($this->mpdf->blk[$i]['float_endpos'])) { + $this->mpdf->blk[$i]['float_endpos'] = max($this->mpdf->blk[$i]['float_endpos'], $this->mpdf->page * 1000 + $this->mpdf->y); + } else { + $this->mpdf->blk[$i]['float_endpos'] = $this->mpdf->page * 1000 + $this->mpdf->y; + } + } + + $this->mpdf->floatDivs[] = [ + 'side' => 'L', + 'startpage' => $this->mpdf->blk[$this->mpdf->blklvl]['startpage'], + 'y0' => $this->mpdf->blk[$this->mpdf->blklvl]['float_start_y'], + 'startpos' => $this->mpdf->blk[$this->mpdf->blklvl]['startpage'] * 1000 + $this->mpdf->blk[$this->mpdf->blklvl]['float_start_y'], + 'endpage' => $this->mpdf->page, + 'y1' => $this->mpdf->y, + 'endpos' => $this->mpdf->page * 1000 + $this->mpdf->y, + 'w' => $this->mpdf->blk[$this->mpdf->blklvl]['float_width'], + 'blklvl' => $this->mpdf->blklvl, + 'blockContext' => $this->mpdf->blk[$this->mpdf->blklvl - 1]['blockContext'] + ]; + + $this->mpdf->y = $this->mpdf->blk[$this->mpdf->blklvl]['float_start_y']; + $this->mpdf->page = $this->mpdf->blk[$this->mpdf->blklvl]['startpage']; + $this->mpdf->ResetMargins(); + $this->mpdf->pageoutput[$this->mpdf->page] = []; + } + /* -- END CSS-FLOAT -- */ + + if (isset($this->mpdf->blk[$this->mpdf->blklvl]['visibility']) && $this->mpdf->blk[$this->mpdf->blklvl]['visibility'] !== 'visible') { + $this->mpdf->SetVisibility('visible'); + } + + $page_break_after = ''; + if (isset($this->mpdf->blk[$this->mpdf->blklvl]['page_break_after'])) { + $page_break_after = $this->mpdf->blk[$this->mpdf->blklvl]['page_break_after']; + } + + // Reset values + $this->mpdf->Reset(); + + if (isset($this->mpdf->blk[$this->mpdf->blklvl]['z-index']) && $this->mpdf->blk[$this->mpdf->blklvl]['z-index'] > 0) { + $this->mpdf->EndLayer(); + } + + // mPDF 6 page-break-inside:avoid + if ($this->mpdf->blk[$this->mpdf->blklvl]['keep_block_together']) { + $movepage = false; + // If page-break-inside:avoid section has broken to new page but fits on one side - then move: + if (($this->mpdf->page - $this->mpdf->kt_p00) == 1 && $this->mpdf->y < $this->mpdf->kt_y00) { + $movepage = true; + } + if (($this->mpdf->page - $this->mpdf->kt_p00) > 0) { + for ($i = $this->mpdf->page; $i > $this->mpdf->kt_p00; $i--) { + unset($this->mpdf->pages[$i]); + if (isset($this->mpdf->blk[$this->mpdf->blklvl]['bb_painted'][$i])) { + unset($this->mpdf->blk[$this->mpdf->blklvl]['bb_painted'][$i]); + } + if (isset($this->mpdf->blk[$this->mpdf->blklvl]['marginCorrected'][$i])) { + unset($this->mpdf->blk[$this->mpdf->blklvl]['marginCorrected'][$i]); + } + if (isset($this->mpdf->pageoutput[$i])) { + unset($this->mpdf->pageoutput[$i]); + } + } + $this->mpdf->page = $this->mpdf->kt_p00; + } + $this->mpdf->keep_block_together = 0; + $this->mpdf->pageoutput[$this->mpdf->page] = []; + + $this->mpdf->y = $this->mpdf->kt_y00; + + $ihtml = $this->mpdf->blk[$this->mpdf->blklvl]['array_i'] - 1; + + $ahtml[$ihtml + 1] .= ' pagebreakavoidchecked="true";'; // avoid re-iterating; read in OpenTag() + + unset($this->mpdf->blk[$this->mpdf->blklvl]); + $this->mpdf->blklvl--; + + for ($blklvl = 1; $blklvl <= $this->mpdf->blklvl; $blklvl++) { + $this->mpdf->blk[$blklvl]['y0'] = $this->mpdf->blk[$blklvl]['initial_y0']; + $this->mpdf->blk[$blklvl]['x0'] = $this->mpdf->blk[$blklvl]['initial_x0']; + $this->mpdf->blk[$blklvl]['startpage'] = $this->mpdf->blk[$blklvl]['initial_startpage']; + } + + if (isset($this->mpdf->blk[$this->mpdf->blklvl]['x0'])) { + $this->mpdf->x = $this->mpdf->blk[$this->mpdf->blklvl]['x0']; + } else { + $this->mpdf->x = $this->mpdf->lMargin; + } + + $this->mpdf->lastblocklevelchange = 0; + $this->mpdf->ResetMargins(); + if ($movepage) { + $this->mpdf->AddPage(); + } + return; + } + + if ($this->mpdf->blklvl > 0) { // ==0 SHOULDN'T HAPPEN - NOT XHTML + if ($this->mpdf->blk[$this->mpdf->blklvl]['tag'] == $tag) { + unset($this->mpdf->blk[$this->mpdf->blklvl]); + $this->mpdf->blklvl--; + } + //else { echo $tag; exit; } // debug - forces error if incorrectly nested html tags + } + + $this->mpdf->lastblocklevelchange = -1; + // Reset Inline-type properties + if (isset($this->mpdf->blk[$this->mpdf->blklvl]['InlineProperties'])) { + $this->mpdf->restoreInlineProperties($this->mpdf->blk[$this->mpdf->blklvl]['InlineProperties']); + } + + $this->mpdf->x = $this->mpdf->lMargin + $this->mpdf->blk[$this->mpdf->blklvl]['outer_left_margin']; + + if (!$this->mpdf->tableLevel && $page_break_after) { + $save_blklvl = $this->mpdf->blklvl; + $save_blk = $this->mpdf->blk; + $save_silp = $this->mpdf->saveInlineProperties(); + $save_ilp = $this->mpdf->InlineProperties; + $save_bflp = $this->mpdf->InlineBDF; + $save_bflpc = $this->mpdf->InlineBDFctr; // mPDF 6 + // mPDF 6 pagebreaktype + $startpage = $this->mpdf->page; + $pagebreaktype = $this->mpdf->defaultPagebreakType; + if ($this->mpdf->ColActive) { + $pagebreaktype = 'cloneall'; + } + + // mPDF 6 pagebreaktype + $this->mpdf->_preForcedPagebreak($pagebreaktype); + + if ($page_break_after === 'RIGHT') { + $this->mpdf->AddPage($this->mpdf->CurOrientation, 'NEXT-ODD'); + } elseif ($page_break_after === 'LEFT') { + $this->mpdf->AddPage($this->mpdf->CurOrientation, 'NEXT-EVEN'); + } else { + $this->mpdf->AddPage($this->mpdf->CurOrientation); + } + + // mPDF 6 pagebreaktype + $this->mpdf->_postForcedPagebreak($pagebreaktype, $startpage, $save_blk, $save_blklvl); + + $this->mpdf->InlineProperties = $save_ilp; + $this->mpdf->InlineBDF = $save_bflp; + $this->mpdf->InlineBDFctr = $save_bflpc; // mPDF 6 + $this->mpdf->restoreInlineProperties($save_silp); + } + // mPDF 6 bidi + // Block + // If unicode-bidi set, any embedding levels, isolates, or overrides reopened in the continuing block + if (isset($this->mpdf->blk[$this->mpdf->blklvl]['bidicode'])) { + $blockpre = $this->mpdf->_setBidiCodes('start', $this->mpdf->blk[$this->mpdf->blklvl]['bidicode']); + if ($blockpre) { + $this->mpdf->OTLdata = []; + if ($this->mpdf->tableLevel) { + $this->mpdf->_saveCellTextBuffer($blockpre); + } else { + $this->mpdf->_saveTextBuffer($blockpre); + } + } + } + } + +} diff --git a/Mpdf/Tag/Bookmark.php b/Mpdf/Tag/Bookmark.php new file mode 100644 index 0000000..b414cf4 --- /dev/null +++ b/Mpdf/Tag/Bookmark.php @@ -0,0 +1,32 @@ +<?php + +namespace Mpdf\Tag; + +class Bookmark extends Tag +{ + + public function open($attr, &$ahtml, &$ihtml) + { + if (isset($attr['CONTENT'])) { + $objattr = []; + $objattr['CONTENT'] = htmlspecialchars_decode($attr['CONTENT'], ENT_QUOTES); + $objattr['type'] = 'bookmark'; + if (!empty($attr['LEVEL'])) { + $objattr['bklevel'] = $attr['LEVEL']; + } else { + $objattr['bklevel'] = 0; + } + $e = "\xbb\xa4\xactype=bookmark,objattr=" . serialize($objattr) . "\xbb\xa4\xac"; + if ($this->mpdf->tableLevel) { + $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['textbuffer'][] = [$e]; + } // *TABLES* + else { // *TABLES* + $this->mpdf->textbuffer[] = [$e]; + } // *TABLES* + } + } + + public function close(&$ahtml, &$ihtml) + { + } +} diff --git a/Mpdf/Tag/Br.php b/Mpdf/Tag/Br.php new file mode 100644 index 0000000..125a18a --- /dev/null +++ b/Mpdf/Tag/Br.php @@ -0,0 +1,88 @@ +<?php + +namespace Mpdf\Tag; + +class Br extends Tag +{ + + public function open($attr, &$ahtml, &$ihtml) + { + // Added mPDF 3.0 Float DIV - CLEAR + if (isset($attr['STYLE'])) { + $properties = $this->cssManager->readInlineCSS($attr['STYLE']); + if (isset($properties['CLEAR'])) { + $this->mpdf->ClearFloats(strtoupper($properties['CLEAR']), $this->mpdf->blklvl); + } // *CSS-FLOAT* + } + + // mPDF 6 bidi + // Inline + // If unicode-bidi set, any embedding levels, isolates, or overrides started by + // the inline box are closed at the br and reopened on the other side + $blockpre = ''; + $blockpost = ''; + if (isset($this->mpdf->blk[$this->mpdf->blklvl]['bidicode'])) { + $blockpre = $this->mpdf->_setBidiCodes('end', $this->mpdf->blk[$this->mpdf->blklvl]['bidicode']); + $blockpost = $this->mpdf->_setBidiCodes('start', $this->mpdf->blk[$this->mpdf->blklvl]['bidicode']); + } + + // Inline + // If unicode-bidi set, any embedding levels, isolates, or overrides started by + // the inline box are closed at the br and reopened on the other side + $inlinepre = ''; + $inlinepost = ''; + $iBDF = []; + if (count($this->mpdf->InlineBDF)) { + foreach ($this->mpdf->InlineBDF as $k => $ib) { + foreach ($ib as $ib2) { + $iBDF[$ib2[1]] = $ib2[0]; + } + } + if (count($iBDF)) { + ksort($iBDF); + for ($i = count($iBDF) - 1; $i >= 0; $i--) { + $inlinepre .= $this->mpdf->_setBidiCodes('end', $iBDF[$i]); + } + for ($i = 0; $i < count($iBDF); $i++) { + $inlinepost .= $this->mpdf->_setBidiCodes('start', $iBDF[$i]); + } + } + } + + /* -- TABLES -- */ + if ($this->mpdf->tableLevel) { + if ($this->mpdf->blockjustfinished) { + $this->mpdf->_saveCellTextBuffer($blockpre . $inlinepre . "\n" . $inlinepost . $blockpost); + } + + $this->mpdf->_saveCellTextBuffer($blockpre . $inlinepre . "\n" . $inlinepost . $blockpost); + if (!isset($this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['maxs'])) { + $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['maxs'] = $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['s']; + } elseif ($this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['maxs'] < $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['s']) { + $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['maxs'] = $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['s']; + } + $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['s'] = 0; // reset + } else { + /* -- END TABLES -- */ + if (count($this->mpdf->textbuffer)) { + $this->mpdf->textbuffer[count($this->mpdf->textbuffer) - 1][0] = preg_replace( + '/ $/', + '', + $this->mpdf->textbuffer[count($this->mpdf->textbuffer) - 1][0] + ); + if (!empty($this->mpdf->textbuffer[count($this->mpdf->textbuffer) - 1][18])) { + $this->otl->trimOTLdata($this->mpdf->textbuffer[count($this->mpdf->textbuffer) - 1][18], false); + } // *OTL* + } + $this->mpdf->_saveTextBuffer($blockpre . $inlinepre . "\n" . $inlinepost . $blockpost); + } // *TABLES* + $this->mpdf->ignorefollowingspaces = true; + $this->mpdf->blockjustfinished = false; + + $this->mpdf->linebreakjustfinished = true; + } + + public function close(&$ahtml, &$ihtml) + { + } +} diff --git a/Mpdf/Tag/Caption.php b/Mpdf/Tag/Caption.php new file mode 100644 index 0000000..ffcb99a --- /dev/null +++ b/Mpdf/Tag/Caption.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class Caption extends BlockTag +{ + + +} diff --git a/Mpdf/Tag/Center.php b/Mpdf/Tag/Center.php new file mode 100644 index 0000000..36fbe77 --- /dev/null +++ b/Mpdf/Tag/Center.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class Center extends BlockTag +{ + + +} diff --git a/Mpdf/Tag/Cite.php b/Mpdf/Tag/Cite.php new file mode 100644 index 0000000..869cfc4 --- /dev/null +++ b/Mpdf/Tag/Cite.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class Cite extends InlineTag +{ + + +} diff --git a/Mpdf/Tag/Code.php b/Mpdf/Tag/Code.php new file mode 100644 index 0000000..47776e7 --- /dev/null +++ b/Mpdf/Tag/Code.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class Code extends InlineTag +{ + + +} diff --git a/Mpdf/Tag/ColumnBreak.php b/Mpdf/Tag/ColumnBreak.php new file mode 100644 index 0000000..5b2ff05 --- /dev/null +++ b/Mpdf/Tag/ColumnBreak.php @@ -0,0 +1,8 @@ +<?php + +namespace Mpdf\Tag; + +class ColumnBreak extends NewColumn +{ + +} diff --git a/Mpdf/Tag/Columns.php b/Mpdf/Tag/Columns.php new file mode 100644 index 0000000..c8c883a --- /dev/null +++ b/Mpdf/Tag/Columns.php @@ -0,0 +1,67 @@ +<?php + +namespace Mpdf\Tag; + +class Columns extends Tag +{ + /** + * @param string $tag + * @return \Mpdf\Tag\Tag + */ + private function getTagInstance($tag) + { + $className = \Mpdf\Tag::getTagClassName($tag); + if (class_exists($className)) { + return new $className( + $this->mpdf, + $this->cache, + $this->cssManager, + $this->form, + $this->otl, + $this->tableOfContents, + $this->sizeConverter, + $this->colorConverter, + $this->imageProcessor, + $this->languageToFont + ); + } + + return null; + } + + public function open($attr, &$ahtml, &$ihtml) + { + if (isset($attr['COLUMN-COUNT']) && ($attr['COLUMN-COUNT'] || $attr['COLUMN-COUNT'] === '0')) { + // Close any open block tags + for ($b = $this->mpdf->blklvl; $b > 0; $b--) { + if ($t = $this->getTagInstance($this->mpdf->blk[$b]['tag'])) { + $t->close($ahtml, $ihtml); + } + } + if (!empty($this->mpdf->textbuffer)) { //Output previously buffered content + $this->mpdf->printbuffer($this->mpdf->textbuffer); + $this->mpdf->textbuffer = []; + } + + if (!empty($attr['VALIGN'])) { + if ($attr['VALIGN'] === 'J') { + $valign = 'J'; + } else { + $valign = $this->getAlign($attr['VALIGN']); + } + } else { + $valign = ''; + } + if (!empty($attr['COLUMN-GAP'])) { + $this->mpdf->SetColumns($attr['COLUMN-COUNT'], $valign, $attr['COLUMN-GAP']); + } else { + $this->mpdf->SetColumns($attr['COLUMN-COUNT'], $valign); + } + } + $this->mpdf->ignorefollowingspaces = true; + } + + public function close(&$ahtml, &$ihtml) + { + } +} diff --git a/Mpdf/Tag/Dd.php b/Mpdf/Tag/Dd.php new file mode 100644 index 0000000..ce0ccfb --- /dev/null +++ b/Mpdf/Tag/Dd.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class Dd extends BlockTag +{ + + +} diff --git a/Mpdf/Tag/Del.php b/Mpdf/Tag/Del.php new file mode 100644 index 0000000..8af9cd0 --- /dev/null +++ b/Mpdf/Tag/Del.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class Del extends InlineTag +{ + + +} diff --git a/Mpdf/Tag/Details.php b/Mpdf/Tag/Details.php new file mode 100644 index 0000000..bd81da0 --- /dev/null +++ b/Mpdf/Tag/Details.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class Details extends BlockTag +{ + + +} diff --git a/Mpdf/Tag/Div.php b/Mpdf/Tag/Div.php new file mode 100644 index 0000000..30fb2b7 --- /dev/null +++ b/Mpdf/Tag/Div.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class Div extends BlockTag +{ + + +} diff --git a/Mpdf/Tag/Dl.php b/Mpdf/Tag/Dl.php new file mode 100644 index 0000000..80bafc2 --- /dev/null +++ b/Mpdf/Tag/Dl.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class Dl extends BlockTag +{ + + +} diff --git a/Mpdf/Tag/DotTab.php b/Mpdf/Tag/DotTab.php new file mode 100644 index 0000000..278ce38 --- /dev/null +++ b/Mpdf/Tag/DotTab.php @@ -0,0 +1,68 @@ +<?php + +namespace Mpdf\Tag; + +class DotTab extends Tag +{ + + public function open($attr, &$ahtml, &$ihtml) + { + $objattr = []; + $objattr['type'] = 'dottab'; + $dots = str_repeat('.', 3) . ' '; // minimum number of dots + $objattr['width'] = $this->mpdf->GetStringWidth($dots); + $objattr['margin_top'] = 0; + $objattr['margin_bottom'] = 0; + $objattr['margin_left'] = 0; + $objattr['margin_right'] = 0; + $objattr['height'] = 0; + $objattr['colorarray'] = $this->mpdf->colorarray; + $objattr['border_top']['w'] = 0; + $objattr['border_bottom']['w'] = 0; + $objattr['border_left']['w'] = 0; + $objattr['border_right']['w'] = 0; + $objattr['vertical_align'] = 'BS'; // mPDF 6 DOTTAB + + $properties = $this->cssManager->MergeCSS('INLINE', 'DOTTAB', $attr); + if (isset($properties['OUTDENT'])) { + $objattr['outdent'] = $this->sizeConverter->convert( + $properties['OUTDENT'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } elseif (isset($attr['OUTDENT'])) { + $objattr['outdent'] = $this->sizeConverter->convert( + $attr['OUTDENT'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } else { + $objattr['outdent'] = 0; + } + + $objattr['fontfamily'] = $this->mpdf->FontFamily; + $objattr['fontsize'] = $this->mpdf->FontSizePt; + + $e = "\xbb\xa4\xactype=dottab,objattr=" . serialize($objattr) . "\xbb\xa4\xac"; + /* -- TABLES -- */ + // Output it to buffers + if ($this->mpdf->tableLevel) { + if (!isset($this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['maxs'])) { + $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['maxs'] = $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['s']; + } elseif ($this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['maxs'] < $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['s']) { + $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['maxs'] = $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['s']; + } + $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['s'] = 0; // reset + $this->mpdf->_saveCellTextBuffer($e); + } else { + /* -- END TABLES -- */ + $this->mpdf->_saveTextBuffer($e); + } // *TABLES* + } + + public function close(&$ahtml, &$ihtml) + { + } +} diff --git a/Mpdf/Tag/Dt.php b/Mpdf/Tag/Dt.php new file mode 100644 index 0000000..22492fb --- /dev/null +++ b/Mpdf/Tag/Dt.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class Dt extends BlockTag +{ + + +} diff --git a/Mpdf/Tag/Em.php b/Mpdf/Tag/Em.php new file mode 100644 index 0000000..a353bd2 --- /dev/null +++ b/Mpdf/Tag/Em.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class Em extends InlineTag +{ + + +} diff --git a/Mpdf/Tag/FieldSet.php b/Mpdf/Tag/FieldSet.php new file mode 100644 index 0000000..33356f1 --- /dev/null +++ b/Mpdf/Tag/FieldSet.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class FieldSet extends BlockTag +{ + + +} diff --git a/Mpdf/Tag/FigCaption.php b/Mpdf/Tag/FigCaption.php new file mode 100644 index 0000000..1e738a5 --- /dev/null +++ b/Mpdf/Tag/FigCaption.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class FigCaption extends BlockTag +{ + + +} diff --git a/Mpdf/Tag/Figure.php b/Mpdf/Tag/Figure.php new file mode 100644 index 0000000..1074a63 --- /dev/null +++ b/Mpdf/Tag/Figure.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class Figure extends BlockTag +{ + + +} diff --git a/Mpdf/Tag/Font.php b/Mpdf/Tag/Font.php new file mode 100644 index 0000000..e290414 --- /dev/null +++ b/Mpdf/Tag/Font.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class Font extends InlineTag +{ + + +} diff --git a/Mpdf/Tag/Footer.php b/Mpdf/Tag/Footer.php new file mode 100644 index 0000000..46abbc4 --- /dev/null +++ b/Mpdf/Tag/Footer.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class Footer extends BlockTag +{ + + +} diff --git a/Mpdf/Tag/Form.php b/Mpdf/Tag/Form.php new file mode 100644 index 0000000..588000e --- /dev/null +++ b/Mpdf/Tag/Form.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class Form extends BlockTag +{ + + +} diff --git a/Mpdf/Tag/FormFeed.php b/Mpdf/Tag/FormFeed.php new file mode 100644 index 0000000..6b2f46b --- /dev/null +++ b/Mpdf/Tag/FormFeed.php @@ -0,0 +1,293 @@ +<?php + +namespace Mpdf\Tag; + +class FormFeed extends Tag +{ + public $toc_id; + + public function open($attr, &$ahtml, &$ihtml) + { + $tag = $this->getTagName(); + if (isset($attr['SHEET-SIZE'])) { + // Convert to same types as accepted in initial mPDF() A4, A4-L, or array(w,h) + $prop = preg_split('/\s+/', trim($attr['SHEET-SIZE'])); + if (count($prop) == 2) { + $newformat = [$this->sizeConverter->convert($prop[0]), $this->sizeConverter->convert($prop[1])]; + } else { + $newformat = $attr['SHEET-SIZE']; + } + } else { + $newformat = ''; + } + + $save_blklvl = $this->mpdf->blklvl; + $save_blk = $this->mpdf->blk; + $save_silp = $this->mpdf->saveInlineProperties(); + $save_ilp = $this->mpdf->InlineProperties; + $save_bflp = $this->mpdf->InlineBDF; + $save_bflpc = $this->mpdf->InlineBDFctr; // mPDF 6 + + $mgr = $mgl = $mgt = $mgb = $mgh = $mgf = ''; + if (isset($attr['MARGIN-RIGHT'])) { + $mgr = $this->sizeConverter->convert($attr['MARGIN-RIGHT'], $this->mpdf->w, $this->mpdf->FontSize, false); + } + if (isset($attr['MARGIN-LEFT'])) { + $mgl = $this->sizeConverter->convert($attr['MARGIN-LEFT'], $this->mpdf->w, $this->mpdf->FontSize, false); + } + if (isset($attr['MARGIN-TOP'])) { + $mgt = $this->sizeConverter->convert($attr['MARGIN-TOP'], $this->mpdf->w, $this->mpdf->FontSize, false); + } + if (isset($attr['MARGIN-BOTTOM'])) { + $mgb = $this->sizeConverter->convert($attr['MARGIN-BOTTOM'], $this->mpdf->w, $this->mpdf->FontSize, false); + } + if (isset($attr['MARGIN-HEADER'])) { + $mgh = $this->sizeConverter->convert($attr['MARGIN-HEADER'], $this->mpdf->w, $this->mpdf->FontSize, false); + } + if (isset($attr['MARGIN-FOOTER'])) { + $mgf = $this->sizeConverter->convert($attr['MARGIN-FOOTER'], $this->mpdf->w, $this->mpdf->FontSize, false); + } + $ohname = $ehname = $ofname = $efname = ''; + if (isset($attr['ODD-HEADER-NAME'])) { + $ohname = $attr['ODD-HEADER-NAME']; + } + if (isset($attr['EVEN-HEADER-NAME'])) { + $ehname = $attr['EVEN-HEADER-NAME']; + } + if (isset($attr['ODD-FOOTER-NAME'])) { + $ofname = $attr['ODD-FOOTER-NAME']; + } + if (isset($attr['EVEN-FOOTER-NAME'])) { + $efname = $attr['EVEN-FOOTER-NAME']; + } + $ohvalue = $ehvalue = $ofvalue = $efvalue = 0; + if (isset($attr['ODD-HEADER-VALUE']) && ($attr['ODD-HEADER-VALUE'] == '1' || strtoupper($attr['ODD-HEADER-VALUE']) === 'ON')) { + $ohvalue = 1; + } elseif (isset($attr['ODD-HEADER-VALUE']) && ($attr['ODD-HEADER-VALUE'] == '-1' || strtoupper($attr['ODD-HEADER-VALUE']) === 'OFF')) { + $ohvalue = -1; + } + if (isset($attr['EVEN-HEADER-VALUE']) && ($attr['EVEN-HEADER-VALUE'] == '1' || strtoupper($attr['EVEN-HEADER-VALUE']) === 'ON')) { + $ehvalue = 1; + } elseif (isset($attr['EVEN-HEADER-VALUE']) && ($attr['EVEN-HEADER-VALUE'] == '-1' || strtoupper($attr['EVEN-HEADER-VALUE']) === 'OFF')) { + $ehvalue = -1; + } + if (isset($attr['ODD-FOOTER-VALUE']) && ($attr['ODD-FOOTER-VALUE'] == '1' || strtoupper($attr['ODD-FOOTER-VALUE']) === 'ON')) { + $ofvalue = 1; + } elseif (isset($attr['ODD-FOOTER-VALUE']) && ($attr['ODD-FOOTER-VALUE'] == '-1' || strtoupper($attr['ODD-FOOTER-VALUE']) === 'OFF')) { + $ofvalue = -1; + } + if (isset($attr['EVEN-FOOTER-VALUE']) && ($attr['EVEN-FOOTER-VALUE'] == '1' || strtoupper($attr['EVEN-FOOTER-VALUE']) === 'ON')) { + $efvalue = 1; + } elseif (isset($attr['EVEN-FOOTER-VALUE']) && ($attr['EVEN-FOOTER-VALUE'] == '-1' || strtoupper($attr['EVEN-FOOTER-VALUE']) === 'OFF')) { + $efvalue = -1; + } + + if (isset($attr['ORIENTATION']) && (strtoupper($attr['ORIENTATION']) === 'L' || strtoupper($attr['ORIENTATION']) === 'LANDSCAPE')) { + $orient = 'L'; + } elseif (isset($attr['ORIENTATION']) && (strtoupper($attr['ORIENTATION']) === 'P' || strtoupper($attr['ORIENTATION']) === 'PORTRAIT')) { + $orient = 'P'; + } else { + $orient = $this->mpdf->CurOrientation; + } + + $pagesel = ''; + if (!empty($attr['PAGE-SELECTOR'])) { + $pagesel = $attr['PAGE-SELECTOR']; + } + + // mPDF 6 pagebreaktype + $pagebreaktype = $this->mpdf->defaultPagebreakType; + if ($tag === 'FORMFEED') { + $pagebreaktype = 'slice'; + } // can be overridden by PAGE-BREAK-TYPE + $startpage = $this->mpdf->page; + if (isset($attr['PAGE-BREAK-TYPE'])) { + if (strtolower($attr['PAGE-BREAK-TYPE']) === 'cloneall' + || strtolower($attr['PAGE-BREAK-TYPE']) === 'clonebycss' + || strtolower($attr['PAGE-BREAK-TYPE']) === 'slice') { + $pagebreaktype = strtolower($attr['PAGE-BREAK-TYPE']); + } + } + if ($tag === 'TOCPAGEBREAK') { + $pagebreaktype = 'cloneall'; + } elseif ($this->mpdf->ColActive) { + $pagebreaktype = 'cloneall'; + } // Any change in headers/footers (may need to _getHtmlHeight), or page size/orientation, @page selector, or margins - force cloneall + elseif ($mgr !== '' || $mgl !== '' || $mgt !== '' || $mgb !== '' || $mgh !== '' || $mgf !== '' || + $ohname !== '' || $ehname !== '' || $ofname !== '' || $efname !== '' || + $ohvalue || $ehvalue || $ofvalue || $efvalue || + $orient != $this->mpdf->CurOrientation || $newformat || $pagesel) { + $pagebreaktype = 'cloneall'; + } + + // mPDF 6 pagebreaktype + $this->mpdf->_preForcedPagebreak($pagebreaktype); + + $this->mpdf->ignorefollowingspaces = true; + + + $resetpagenum = ''; + $pagenumstyle = ''; + $suppress = ''; + if (isset($attr['RESETPAGENUM'])) { + $resetpagenum = $attr['RESETPAGENUM']; + } + if (isset($attr['PAGENUMSTYLE'])) { + $pagenumstyle = $attr['PAGENUMSTYLE']; + } + if (isset($attr['SUPPRESS'])) { + $suppress = $attr['SUPPRESS']; + } + + $type = ''; + if ($tag === 'TOCPAGEBREAK') { + $type = 'NEXT-ODD'; + } elseif (isset($attr['TYPE'])) { + $type = strtoupper($attr['TYPE']); + } + + if ($type === 'E' || $type === 'EVEN') { + $this->mpdf->AddPage( + $orient, + 'E', + $resetpagenum, + $pagenumstyle, + $suppress, + $mgl, + $mgr, + $mgt, + $mgb, + $mgh, + $mgf, + $ohname, + $ehname, + $ofname, + $efname, + $ohvalue, + $ehvalue, + $ofvalue, + $efvalue, + $pagesel, + $newformat + ); + } elseif ($type === 'O' || $type === 'ODD') { + $this->mpdf->AddPage( + $orient, + 'O', + $resetpagenum, + $pagenumstyle, + $suppress, + $mgl, + $mgr, + $mgt, + $mgb, + $mgh, + $mgf, + $ohname, + $ehname, + $ofname, + $efname, + $ohvalue, + $ehvalue, + $ofvalue, + $efvalue, + $pagesel, + $newformat + ); + } elseif ($type === 'NEXT-ODD') { + $this->mpdf->AddPage( + $orient, + 'NEXT-ODD', + $resetpagenum, + $pagenumstyle, + $suppress, + $mgl, + $mgr, + $mgt, + $mgb, + $mgh, + $mgf, + $ohname, + $ehname, + $ofname, + $efname, + $ohvalue, + $ehvalue, + $ofvalue, + $efvalue, + $pagesel, + $newformat + ); + } elseif ($type === 'NEXT-EVEN') { + $this->mpdf->AddPage( + $orient, + 'NEXT-EVEN', + $resetpagenum, + $pagenumstyle, + $suppress, + $mgl, + $mgr, + $mgt, + $mgb, + $mgh, + $mgf, + $ohname, + $ehname, + $ofname, + $efname, + $ohvalue, + $ehvalue, + $ofvalue, + $efvalue, + $pagesel, + $newformat + ); + } else { + $this->mpdf->AddPage( + $orient, + '', + $resetpagenum, + $pagenumstyle, + $suppress, + $mgl, + $mgr, + $mgt, + $mgb, + $mgh, + $mgf, + $ohname, + $ehname, + $ofname, + $efname, + $ohvalue, + $ehvalue, + $ofvalue, + $efvalue, + $pagesel, + $newformat + ); + } + + /* -- TOC -- */ + if ($tag === 'TOCPAGEBREAK') { + if ($this->toc_id) { + $this->tableOfContents->m_TOC[$this->toc_id]['TOCmark'] = $this->mpdf->page; + } else { + $this->tableOfContents->TOCmark = $this->mpdf->page; + } + } + /* -- END TOC -- */ + + // mPDF 6 pagebreaktype + $this->mpdf->_postForcedPagebreak($pagebreaktype, $startpage, $save_blk, $save_blklvl); + + $this->mpdf->InlineProperties = $save_ilp; + $this->mpdf->InlineBDF = $save_bflp; + $this->mpdf->InlineBDFctr = $save_bflpc; // mPDF 6 + $this->mpdf->restoreInlineProperties($save_silp); + } + + public function close(&$ahtml, &$ihtml) + { + } +} diff --git a/Mpdf/Tag/H1.php b/Mpdf/Tag/H1.php new file mode 100644 index 0000000..5174afb --- /dev/null +++ b/Mpdf/Tag/H1.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class H1 extends BlockTag +{ + + +} diff --git a/Mpdf/Tag/H2.php b/Mpdf/Tag/H2.php new file mode 100644 index 0000000..199bb55 --- /dev/null +++ b/Mpdf/Tag/H2.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class H2 extends BlockTag +{ + + +} diff --git a/Mpdf/Tag/H3.php b/Mpdf/Tag/H3.php new file mode 100644 index 0000000..b9db924 --- /dev/null +++ b/Mpdf/Tag/H3.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class H3 extends BlockTag +{ + + +} diff --git a/Mpdf/Tag/H4.php b/Mpdf/Tag/H4.php new file mode 100644 index 0000000..3083ba1 --- /dev/null +++ b/Mpdf/Tag/H4.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class H4 extends BlockTag +{ + + +} diff --git a/Mpdf/Tag/H5.php b/Mpdf/Tag/H5.php new file mode 100644 index 0000000..50b78d7 --- /dev/null +++ b/Mpdf/Tag/H5.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class H5 extends BlockTag +{ + + +} diff --git a/Mpdf/Tag/H6.php b/Mpdf/Tag/H6.php new file mode 100644 index 0000000..f33dacf --- /dev/null +++ b/Mpdf/Tag/H6.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class H6 extends BlockTag +{ + + +} diff --git a/Mpdf/Tag/HGroup.php b/Mpdf/Tag/HGroup.php new file mode 100644 index 0000000..e519b93 --- /dev/null +++ b/Mpdf/Tag/HGroup.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class HGroup extends BlockTag +{ + + +} diff --git a/Mpdf/Tag/Header.php b/Mpdf/Tag/Header.php new file mode 100644 index 0000000..f948559 --- /dev/null +++ b/Mpdf/Tag/Header.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class Header extends BlockTag +{ + + +} diff --git a/Mpdf/Tag/Hr.php b/Mpdf/Tag/Hr.php new file mode 100644 index 0000000..89c880b --- /dev/null +++ b/Mpdf/Tag/Hr.php @@ -0,0 +1,126 @@ +<?php + +namespace Mpdf\Tag; + +use Mpdf\Utils\NumericString; + +class Hr extends Tag +{ + + public function open($attr, &$ahtml, &$ihtml) + { + + // Added mPDF 3.0 Float DIV - CLEAR + if (isset($attr['STYLE'])) { + $properties = $this->cssManager->readInlineCSS($attr['STYLE']); + if (isset($properties['CLEAR'])) { + $this->mpdf->ClearFloats(strtoupper($properties['CLEAR']), $this->mpdf->blklvl); + } // *CSS-FLOAT* + } + + $this->mpdf->ignorefollowingspaces = true; + + $objattr = []; + $objattr['margin_top'] = 0; + $objattr['margin_bottom'] = 0; + $objattr['margin_left'] = 0; + $objattr['margin_right'] = 0; + $objattr['width'] = 0; + $objattr['height'] = 0; + $objattr['border_top']['w'] = 0; + $objattr['border_bottom']['w'] = 0; + $objattr['border_left']['w'] = 0; + $objattr['border_right']['w'] = 0; + $properties = $this->cssManager->MergeCSS('', 'HR', $attr); + if (isset($properties['MARGIN-TOP'])) { + $objattr['margin_top'] = $this->sizeConverter->convert( + $properties['MARGIN-TOP'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + if (isset($properties['MARGIN-BOTTOM'])) { + $objattr['margin_bottom'] = $this->sizeConverter->convert( + $properties['MARGIN-BOTTOM'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + if (isset($properties['WIDTH'])) { + $objattr['width'] = $this->sizeConverter->convert($properties['WIDTH'], $this->mpdf->blk[$this->mpdf->blklvl]['inner_width']); + } elseif (isset($attr['WIDTH']) && $attr['WIDTH'] != '') { + $objattr['width'] = $this->sizeConverter->convert($attr['WIDTH'], $this->mpdf->blk[$this->mpdf->blklvl]['inner_width']); + } + if (isset($properties['TEXT-ALIGN'])) { + $objattr['align'] = $this->getAlign($properties['TEXT-ALIGN']); + } elseif (isset($attr['ALIGN']) && $attr['ALIGN'] != '') { + $objattr['align'] = $this->getAlign($attr['ALIGN']); + } + + if (isset($properties['MARGIN-LEFT']) && strtolower($properties['MARGIN-LEFT']) === 'auto') { + $objattr['align'] = 'R'; + } + if (isset($properties['MARGIN-RIGHT']) && strtolower($properties['MARGIN-RIGHT']) === 'auto') { + $objattr['align'] = 'L'; + if (isset($properties['MARGIN-RIGHT']) && strtolower($properties['MARGIN-RIGHT']) === 'auto' + && isset($properties['MARGIN-LEFT']) && strtolower($properties['MARGIN-LEFT']) === 'auto') { + $objattr['align'] = 'C'; + } + } + if (isset($properties['COLOR'])) { + $objattr['color'] = $this->colorConverter->convert($properties['COLOR'], $this->mpdf->PDFAXwarnings); + } elseif (isset($attr['COLOR']) && $attr['COLOR'] != '') { + $objattr['color'] = $this->colorConverter->convert($attr['COLOR'], $this->mpdf->PDFAXwarnings); + } + if (isset($properties['HEIGHT'])) { + $objattr['linewidth'] = $this->sizeConverter->convert( + $properties['HEIGHT'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + + + /* -- TABLES -- */ + if ($this->mpdf->tableLevel) { + $objattr['W-PERCENT'] = 100; + if (isset($properties['WIDTH']) && NumericString::containsPercentChar($properties['WIDTH'])) { + $properties['WIDTH'] = NumericString::removePercentChar($properties['WIDTH']); // make "90%" become simply "90" + $objattr['W-PERCENT'] = $properties['WIDTH']; + } + if (isset($attr['WIDTH']) && NumericString::containsPercentChar($attr['WIDTH'])) { + $attr['WIDTH'] = NumericString::removePercentChar($attr['WIDTH']); // make "90%" become simply "90" + $objattr['W-PERCENT'] = $attr['WIDTH']; + } + } + /* -- END TABLES -- */ + + $objattr['type'] = 'hr'; + $objattr['height'] = $objattr['linewidth'] + $objattr['margin_top'] + $objattr['margin_bottom']; + $e = "\xbb\xa4\xactype=image,objattr=" . serialize($objattr) . "\xbb\xa4\xac"; + + /* -- TABLES -- */ + // Output it to buffers + if ($this->mpdf->tableLevel) { + if ($this->mpdf->cell) { + if (!isset($this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['maxs'])) { + $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['maxs'] = $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['s']; + } elseif ($this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['maxs'] < $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['s']) { + $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['maxs'] = $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['s']; + } + $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['s'] = 0; // reset + $this->mpdf->_saveCellTextBuffer($e, $this->mpdf->HREF); + } + } else { + /* -- END TABLES -- */ + $this->mpdf->_saveTextBuffer($e, $this->mpdf->HREF); + } // *TABLES* + } + + public function close(&$ahtml, &$ihtml) + { + } +} diff --git a/Mpdf/Tag/I.php b/Mpdf/Tag/I.php new file mode 100644 index 0000000..8c03c2d --- /dev/null +++ b/Mpdf/Tag/I.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class I extends InlineTag +{ + + +} diff --git a/Mpdf/Tag/Img.php b/Mpdf/Tag/Img.php new file mode 100644 index 0000000..5c68099 --- /dev/null +++ b/Mpdf/Tag/Img.php @@ -0,0 +1,458 @@ +<?php + +namespace Mpdf\Tag; + +use Mpdf\Mpdf; + +class Img extends Tag +{ + + public function open($attr, &$ahtml, &$ihtml) + { + $this->mpdf->ignorefollowingspaces = false; + $objattr = []; + $objattr['margin_top'] = 0; + $objattr['margin_bottom'] = 0; + $objattr['margin_left'] = 0; + $objattr['margin_right'] = 0; + $objattr['padding_top'] = 0; + $objattr['padding_bottom'] = 0; + $objattr['padding_left'] = 0; + $objattr['padding_right'] = 0; + $objattr['width'] = 0; + $objattr['height'] = 0; + $objattr['border_top']['w'] = 0; + $objattr['border_bottom']['w'] = 0; + $objattr['border_left']['w'] = 0; + $objattr['border_right']['w'] = 0; + if (isset($attr['SRC'])) { + $srcpath = $attr['SRC']; + $orig_srcpath = (isset($attr['ORIG_SRC']) ? $attr['ORIG_SRC'] : ''); + $properties = $this->cssManager->MergeCSS('', 'IMG', $attr); + if (isset($properties ['DISPLAY']) && strtolower($properties ['DISPLAY']) === 'none') { + return; + } + if (isset($properties['Z-INDEX']) && $this->mpdf->current_layer == 0) { + $v = (int) $properties['Z-INDEX']; + if ($v > 0) { + $objattr['z-index'] = $v; + } + } + + $objattr['visibility'] = 'visible'; + if (isset($properties['VISIBILITY'])) { + $v = strtolower($properties['VISIBILITY']); + if (($v === 'hidden' || $v === 'printonly' || $v === 'screenonly') && $this->mpdf->visibility === 'visible') { + $objattr['visibility'] = $v; + } + } + + // VSPACE and HSPACE converted to margins in MergeCSS + if (isset($properties['MARGIN-TOP'])) { + $objattr['margin_top'] = $this->sizeConverter->convert( + $properties['MARGIN-TOP'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + if (isset($properties['MARGIN-BOTTOM'])) { + $objattr['margin_bottom'] = $this->sizeConverter->convert( + $properties['MARGIN-BOTTOM'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + if (isset($properties['MARGIN-LEFT'])) { + $objattr['margin_left'] = $this->sizeConverter->convert( + $properties['MARGIN-LEFT'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + if (isset($properties['MARGIN-RIGHT'])) { + $objattr['margin_right'] = $this->sizeConverter->convert( + $properties['MARGIN-RIGHT'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + + if (isset($properties['PADDING-TOP'])) { + $objattr['padding_top'] = $this->sizeConverter->convert( + $properties['PADDING-TOP'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + if (isset($properties['PADDING-BOTTOM'])) { + $objattr['padding_bottom'] = $this->sizeConverter->convert( + $properties['PADDING-BOTTOM'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + if (isset($properties['PADDING-LEFT'])) { + $objattr['padding_left'] = $this->sizeConverter->convert( + $properties['PADDING-LEFT'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + if (isset($properties['PADDING-RIGHT'])) { + $objattr['padding_right'] = $this->sizeConverter->convert( + $properties['PADDING-RIGHT'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + + if (isset($properties['BORDER-TOP'])) { + $objattr['border_top'] = $this->mpdf->border_details($properties['BORDER-TOP']); + } + if (isset($properties['BORDER-BOTTOM'])) { + $objattr['border_bottom'] = $this->mpdf->border_details($properties['BORDER-BOTTOM']); + } + if (isset($properties['BORDER-LEFT'])) { + $objattr['border_left'] = $this->mpdf->border_details($properties['BORDER-LEFT']); + } + if (isset($properties['BORDER-RIGHT'])) { + $objattr['border_right'] = $this->mpdf->border_details($properties['BORDER-RIGHT']); + } + + if (isset($properties['VERTICAL-ALIGN'])) { + $objattr['vertical-align'] = $this->getAlign($properties['VERTICAL-ALIGN']); + } + $w = 0; + $h = 0; + if (isset($properties['WIDTH'])) { + $w = $this->sizeConverter->convert( + $properties['WIDTH'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } elseif (isset($attr['WIDTH'])) { + $w = $this->sizeConverter->convert( + $attr['WIDTH'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + if (isset($properties['HEIGHT'])) { + $h = $this->sizeConverter->convert( + $properties['HEIGHT'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } elseif (isset($attr['HEIGHT'])) { + $h = $this->sizeConverter->convert( + $attr['HEIGHT'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + $maxw = $maxh = $minw = $minh = false; + if (isset($properties['MAX-WIDTH'])) { + $maxw = $this->sizeConverter->convert( + $properties['MAX-WIDTH'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } elseif (isset($attr['MAX-WIDTH'])) { + $maxw = $this->sizeConverter->convert( + $attr['MAX-WIDTH'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + if (isset($properties['MAX-HEIGHT'])) { + $maxh = $this->sizeConverter->convert( + $properties['MAX-HEIGHT'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } elseif (isset($attr['MAX-HEIGHT'])) { + $maxh = $this->sizeConverter->convert( + $attr['MAX-HEIGHT'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + if (isset($properties['MIN-WIDTH'])) { + $minw = $this->sizeConverter->convert( + $properties['MIN-WIDTH'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } elseif (isset($attr['MIN-WIDTH'])) { + $minw = $this->sizeConverter->convert( + $attr['MIN-WIDTH'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + if (isset($properties['MIN-HEIGHT'])) { + $minh = $this->sizeConverter->convert( + $properties['MIN-HEIGHT'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } elseif (isset($attr['MIN-HEIGHT'])) { + $minh = $this->sizeConverter->convert( + $attr['MIN-HEIGHT'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + + if (isset($properties['OPACITY']) && $properties['OPACITY'] > 0 && $properties['OPACITY'] <= 1) { + $objattr['opacity'] = $properties['OPACITY']; + } + if ($this->mpdf->HREF) { + if (strpos($this->mpdf->HREF, '.') === false && strpos($this->mpdf->HREF, '@') !== 0) { + $href = $this->mpdf->HREF; + while (array_key_exists($href, $this->mpdf->internallink)) { + $href = '#' . $href; + } + $this->mpdf->internallink[$href] = $this->mpdf->AddLink(); + $objattr['link'] = $this->mpdf->internallink[$href]; + } else { + $objattr['link'] = $this->mpdf->HREF; + } + } + $extraheight = $objattr['padding_top'] + $objattr['padding_bottom'] + $objattr['margin_top'] + + $objattr['margin_bottom'] + $objattr['border_top']['w'] + $objattr['border_bottom']['w']; + + $extrawidth = $objattr['padding_left'] + $objattr['padding_right'] + $objattr['margin_left'] + + $objattr['margin_right'] + $objattr['border_left']['w'] + $objattr['border_right']['w']; + + // mPDF 5.7.3 TRANSFORMS + if (isset($properties['BACKGROUND-COLOR']) && $properties['BACKGROUND-COLOR'] != '') { + $objattr['bgcolor'] = $this->colorConverter->convert($properties['BACKGROUND-COLOR'], $this->mpdf->PDFAXwarnings); + } + + /* -- BACKGROUNDS -- */ + if (isset($properties['GRADIENT-MASK']) && preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient/', $properties['GRADIENT-MASK'])) { + $objattr['GRADIENT-MASK'] = $properties['GRADIENT-MASK']; + } + /* -- END BACKGROUNDS -- */ + + // mPDF 6 + $interpolation = false; + if (!empty($properties['IMAGE-RENDERING'])) { + $interpolation = false; + if (strtolower($properties['IMAGE-RENDERING']) === 'crisp-edges') { + $interpolation = false; + } elseif (strtolower($properties['IMAGE-RENDERING']) === 'optimizequality') { + $interpolation = true; + } elseif (strtolower($properties['IMAGE-RENDERING']) === 'smooth') { + $interpolation = true; + } elseif (strtolower($properties['IMAGE-RENDERING']) === 'auto') { + $interpolation = $this->mpdf->interpolateImages; + } + $info['interpolation'] = $interpolation; + } + + // Image file + $info = $this->imageProcessor->getImage($srcpath, true, true, $orig_srcpath, $interpolation); // mPDF 6 + if (!$info) { + $info = $this->imageProcessor->getImage($this->mpdf->noImageFile); + if ($info) { + $srcpath = $this->mpdf->noImageFile; + $w = ($info['w'] * (25.4 / $this->mpdf->img_dpi)); + $h = ($info['h'] * (25.4 / $this->mpdf->img_dpi)); + } + } + if (!$info) { + return; + } + + $image_orientation = 0; + if (isset($attr['ROTATE'])) { + $image_orientation = $attr['ROTATE']; + } elseif (isset($properties['IMAGE-ORIENTATION'])) { + $image_orientation = $properties['IMAGE-ORIENTATION']; + } + if ($image_orientation) { + if ($image_orientation == 90 || $image_orientation == -90 || $image_orientation == 270) { + $tmpw = $info['w']; + $info['w'] = $info['h']; + $info['h'] = $tmpw; + } + $objattr['ROTATE'] = $image_orientation; + } + + $objattr['file'] = $srcpath; + //Default width and height calculation if needed + if ($w == 0 && $h == 0) { + /* -- IMAGES-WMF -- */ + if ($info['type'] === 'wmf') { + // WMF units are twips (1/20pt) + // divide by 20 to get points + // divide by k to get user units + $w = abs($info['w']) / (20 * Mpdf::SCALE); + $h = abs($info['h']) / (20 * Mpdf::SCALE); + } else { /* -- END IMAGES-WMF -- */ + if ($info['type'] === 'svg') { + // SVG units are pixels + $w = abs($info['w']) / Mpdf::SCALE; + $h = abs($info['h']) / Mpdf::SCALE; + } else { + //Put image at default image dpi + $w = ($info['w'] / Mpdf::SCALE) * (72 / $this->mpdf->img_dpi); + $h = ($info['h'] / Mpdf::SCALE) * (72 / $this->mpdf->img_dpi); + } + } + if (isset($properties['IMAGE-RESOLUTION'])) { + if (preg_match('/from-image/i', $properties['IMAGE-RESOLUTION']) && isset($info['set-dpi']) && $info['set-dpi'] > 0) { + $w *= $this->mpdf->img_dpi / $info['set-dpi']; + $h *= $this->mpdf->img_dpi / $info['set-dpi']; + } elseif (preg_match('/(\d+)dpi/i', $properties['IMAGE-RESOLUTION'], $m)) { + $dpi = $m[1]; + if ($dpi > 0) { + $w *= $this->mpdf->img_dpi / $dpi; + $h *= $this->mpdf->img_dpi / $dpi; + } + } + } + } + // IF WIDTH OR HEIGHT SPECIFIED + if ($w == 0) { + $w = $info['h'] ? abs($h * $info['w'] / $info['h']) : INF; + } + + if ($h == 0) { + $h = $info['w'] ? abs($w * $info['h'] / $info['w']) : INF; + } + + if ($minw && $w < $minw) { + $w = $minw; + $h = $info['w'] ? abs($w * $info['h'] / $info['w']) : INF; + } + if ($maxw && $w > $maxw) { + $w = $maxw; + $h = $info['w'] ? abs($w * $info['h'] / $info['w']) : INF; + } + if ($minh && $h < $minh) { + $h = $minh; + $w = $info['h'] ? abs($h * $info['w'] / $info['h']) : INF; + } + if ($maxh && $h > $maxh) { + $h = $maxh; + $w = $info['h'] ? abs($h * $info['w'] / $info['h']) : INF; + } + + // Resize to maximum dimensions of page + $maxWidth = $this->mpdf->blk[$this->mpdf->blklvl]['inner_width']; + $maxHeight = $this->mpdf->h - ($this->mpdf->tMargin + $this->mpdf->bMargin + 1); + if ($this->mpdf->fullImageHeight) { + $maxHeight = $this->mpdf->fullImageHeight; + } + if (($w + $extrawidth) > ($maxWidth + 0.0001)) { // mPDF 5.7.4 0.0001 to allow for rounding errors when w==maxWidth + $w = $maxWidth - $extrawidth; + $h = abs($w * $info['h'] / $info['w']); + } + + if ($h + $extraheight > $maxHeight) { + $h = $maxHeight - $extraheight; + $w = abs($h * $info['w'] / $info['h']); + } + $objattr['type'] = 'image'; + $objattr['itype'] = $info['type']; + + $objattr['orig_h'] = $info['h']; + $objattr['orig_w'] = $info['w']; + /* -- IMAGES-WMF -- */ + if ($info['type'] === 'wmf') { + $objattr['wmf_x'] = $info['x']; + $objattr['wmf_y'] = $info['y']; + } else { /* -- END IMAGES-WMF -- */ + if ($info['type'] === 'svg') { + $objattr['wmf_x'] = $info['x']; + $objattr['wmf_y'] = $info['y']; + } + } + $objattr['height'] = $h + $extraheight; + $objattr['width'] = $w + $extrawidth; + $objattr['image_height'] = $h; + $objattr['image_width'] = $w; + /* -- CSS-IMAGE-FLOAT -- */ + if (!$this->mpdf->ColActive && !$this->mpdf->tableLevel && !$this->mpdf->listlvl && !$this->mpdf->kwt) { + if (isset($properties['FLOAT']) && (strtoupper($properties['FLOAT']) === 'RIGHT' || strtoupper($properties['FLOAT']) === 'LEFT')) { + $objattr['float'] = strtoupper(substr($properties['FLOAT'], 0, 1)); + } + } + /* -- END CSS-IMAGE-FLOAT -- */ + // mPDF 5.7.3 TRANSFORMS + if (isset($properties['TRANSFORM']) && !$this->mpdf->ColActive && !$this->mpdf->kwt) { + $objattr['transform'] = $properties['TRANSFORM']; + } + + $e = "\xbb\xa4\xactype=image,objattr=" . serialize($objattr) . "\xbb\xa4\xac"; + + /* -- TABLES -- */ + // Output it to buffers + if ($this->mpdf->tableLevel) { + $this->mpdf->_saveCellTextBuffer($e, $this->mpdf->HREF); + $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['s'] += $objattr['width']; + } else { + /* -- END TABLES -- */ + $this->mpdf->_saveTextBuffer($e, $this->mpdf->HREF); + } // *TABLES* + /* -- ANNOTATIONS -- */ + if ($this->mpdf->title2annots && isset($attr['TITLE'])) { + $objattr = []; + $objattr['margin_top'] = 0; + $objattr['margin_bottom'] = 0; + $objattr['margin_left'] = 0; + $objattr['margin_right'] = 0; + $objattr['width'] = 0; + $objattr['height'] = 0; + $objattr['border_top']['w'] = 0; + $objattr['border_bottom']['w'] = 0; + $objattr['border_left']['w'] = 0; + $objattr['border_right']['w'] = 0; + $objattr['CONTENT'] = $attr['TITLE']; + $objattr['type'] = 'annot'; + $objattr['POS-X'] = 0; + $objattr['POS-Y'] = 0; + $objattr['ICON'] = 'Comment'; + $objattr['AUTHOR'] = ''; + $objattr['SUBJECT'] = ''; + $objattr['OPACITY'] = $this->mpdf->annotOpacity; + $objattr['COLOR'] = $this->colorConverter->convert('yellow', $this->mpdf->PDFAXwarnings); + $e = "\xbb\xa4\xactype=annot,objattr=" . serialize($objattr) . "\xbb\xa4\xac"; + if ($this->mpdf->tableLevel) { // *TABLES* + $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['textbuffer'][] = [$e]; // *TABLES* + } // *TABLES* + else { // *TABLES* + $this->mpdf->textbuffer[] = [$e]; + } // *TABLES* + } + /* -- END ANNOTATIONS -- */ + } + } + + public function close(&$ahtml, &$ihtml) + { + } +} diff --git a/Mpdf/Tag/IndexEntry.php b/Mpdf/Tag/IndexEntry.php new file mode 100644 index 0000000..2ca06a4 --- /dev/null +++ b/Mpdf/Tag/IndexEntry.php @@ -0,0 +1,32 @@ +<?php + +namespace Mpdf\Tag; + +class IndexEntry extends Tag +{ + + public function open($attr, &$ahtml, &$ihtml) + { + if (!empty($attr['CONTENT'])) { + if (!empty($attr['XREF'])) { + $this->mpdf->IndexEntry(htmlspecialchars_decode($attr['CONTENT'], ENT_QUOTES), $attr['XREF']); + return; + } + $objattr = []; + $objattr['CONTENT'] = htmlspecialchars_decode($attr['CONTENT'], ENT_QUOTES); + $objattr['type'] = 'indexentry'; + $objattr['vertical-align'] = 'T'; + $e = "\xbb\xa4\xactype=indexentry,objattr=" . serialize($objattr) . "\xbb\xa4\xac"; + if ($this->mpdf->tableLevel) { + $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['textbuffer'][] = [$e]; + } // *TABLES* + else { // *TABLES* + $this->mpdf->textbuffer[] = [$e]; + } // *TABLES* + } + } + + public function close(&$ahtml, &$ihtml) + { + } +} diff --git a/Mpdf/Tag/IndexInsert.php b/Mpdf/Tag/IndexInsert.php new file mode 100644 index 0000000..2704b4f --- /dev/null +++ b/Mpdf/Tag/IndexInsert.php @@ -0,0 +1,33 @@ +<?php + +namespace Mpdf\Tag; + +class IndexInsert extends Tag +{ + + public function open($attr, &$ahtml, &$ihtml) + { + $indexCollationLocale = ''; + if (isset($attr['COLLATION'])) { + $indexCollationLocale = $attr['COLLATION']; + } + + $indexCollationGroup = ''; + if (isset($attr['COLLATION-GROUP'])) { + $indexCollationGroup = $attr['COLLATION-GROUP']; + } + + $usedivletters = 1; + if (isset($attr['USEDIVLETTERS']) && (strtoupper($attr['USEDIVLETTERS']) === 'OFF' + || $attr['USEDIVLETTERS'] == -1 + || $attr['USEDIVLETTERS'] === '0')) { + $usedivletters = 0; + } + $links = isset($attr['LINKS']) && (strtoupper($attr['LINKS']) === 'ON' || $attr['LINKS'] == 1); + $this->mpdf->InsertIndex($usedivletters, $links, $indexCollationLocale, $indexCollationGroup); + } + + public function close(&$ahtml, &$ihtml) + { + } +} diff --git a/Mpdf/Tag/InlineTag.php b/Mpdf/Tag/InlineTag.php new file mode 100644 index 0000000..69ea5f5 --- /dev/null +++ b/Mpdf/Tag/InlineTag.php @@ -0,0 +1,232 @@ +<?php + +namespace Mpdf\Tag; + +use Mpdf\Utils\UtfString; + +abstract class InlineTag extends Tag +{ + + public function open($attr, &$ahtml, &$ihtml) + { + $tag = $this->getTagName(); + + /* -- ANNOTATIONS -- */ + if ($this->mpdf->title2annots && isset($attr['TITLE'])) { + $objattr = []; + $objattr['margin_top'] = 0; + $objattr['margin_bottom'] = 0; + $objattr['margin_left'] = 0; + $objattr['margin_right'] = 0; + $objattr['width'] = 0; + $objattr['height'] = 0; + $objattr['border_top']['w'] = 0; + $objattr['border_bottom']['w'] = 0; + $objattr['border_left']['w'] = 0; + $objattr['border_right']['w'] = 0; + + $objattr['CONTENT'] = $attr['TITLE']; + $objattr['type'] = 'annot'; + $objattr['POS-X'] = 0; + $objattr['POS-Y'] = 0; + $objattr['ICON'] = 'Comment'; + $objattr['AUTHOR'] = ''; + $objattr['SUBJECT'] = ''; + $objattr['OPACITY'] = $this->mpdf->annotOpacity; + $objattr['COLOR'] = $this->colorConverter->convert('yellow', $this->mpdf->PDFAXwarnings); + $annot = "\xbb\xa4\xactype=annot,objattr=" . serialize($objattr) . "\xbb\xa4\xac"; + } + /* -- END ANNOTATIONS -- */ + + // mPDF 5.7.3 Inline tags + if (!isset($this->mpdf->InlineProperties[$tag])) { + $this->mpdf->InlineProperties[$tag] = [$this->mpdf->saveInlineProperties()]; + } else { + $this->mpdf->InlineProperties[$tag][] = $this->mpdf->saveInlineProperties(); + } + if (isset($annot)) { // *ANNOTATIONS* + if (!isset($this->mpdf->InlineAnnots[$tag])) { + $this->mpdf->InlineAnnots[$tag] = []; + } // *ANNOTATIONS* + $this->mpdf->InlineAnnots[$tag][] = $annot; + } // *ANNOTATIONS* + + $properties = $this->cssManager->MergeCSS('INLINE', $tag, $attr); + if (!empty($properties)) { + $this->mpdf->setCSS($properties, 'INLINE'); + } + + // mPDF 6 Bidirectional formatting for inline elements + $bdf = false; + $bdf2 = ''; + $popd = ''; + + // Get current direction + $currdir = 'ltr'; + if (isset($this->mpdf->blk[$this->mpdf->blklvl]['direction'])) { + $currdir = $this->mpdf->blk[$this->mpdf->blklvl]['direction']; + } + if ($this->mpdf->tableLevel + && isset($this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['direction']) + && $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['direction'] === 'rtl') { + $currdir = 'rtl'; + } + if (isset($attr['DIR']) && $attr['DIR'] != '') { + $currdir = strtolower($attr['DIR']); + } + if (isset($properties['DIRECTION'])) { + $currdir = strtolower($properties['DIRECTION']); + } + + // mPDF 6 bidi + // cf. http://www.w3.org/TR/css3-writing-modes/#unicode-bidi + if ($tag === 'BDO') { + if (isset($attr['DIR']) && strtolower($attr['DIR']) === 'rtl') { + $bdf = 0x202E; + $popd = 'RLOPDF'; + } // U+202E RLO + elseif (isset($attr['DIR']) && strtolower($attr['DIR']) === 'ltr') { + $bdf = 0x202D; + $popd = 'LROPDF'; + } // U+202D LRO + } elseif ($tag === 'BDI') { + if (isset($attr['DIR']) && strtolower($attr['DIR']) === 'rtl') { + $bdf = 0x2067; + $popd = 'RLIPDI'; + } // U+2067 RLI + elseif (isset($attr['DIR']) && strtolower($attr['DIR']) === 'ltr') { + $bdf = 0x2066; + $popd = 'LRIPDI'; + } // U+2066 LRI + else { + $bdf = 0x2068; + $popd = 'FSIPDI'; + } // U+2068 FSI + } elseif (isset($properties ['UNICODE-BIDI']) && strtolower($properties ['UNICODE-BIDI']) === 'bidi-override') { + if ($currdir === 'rtl') { + $bdf = 0x202E; + $popd = 'RLOPDF'; + } // U+202E RLO + else { + $bdf = 0x202D; + $popd = 'LROPDF'; + } // U+202D LRO + } elseif (isset($properties ['UNICODE-BIDI']) && strtolower($properties ['UNICODE-BIDI']) === 'embed') { + if ($currdir === 'rtl') { + $bdf = 0x202B; + $popd = 'RLEPDF'; + } // U+202B RLE + else { + $bdf = 0x202A; + $popd = 'LREPDF'; + } // U+202A LRE + } elseif (isset($properties ['UNICODE-BIDI']) && strtolower($properties ['UNICODE-BIDI']) === 'isolate') { + if ($currdir === 'rtl') { + $bdf = 0x2067; + $popd = 'RLIPDI'; + } // U+2067 RLI + else { + $bdf = 0x2066; + $popd = 'LRIPDI'; + } // U+2066 LRI + } elseif (isset($properties ['UNICODE-BIDI']) && strtolower($properties ['UNICODE-BIDI']) === 'isolate-override') { + if ($currdir === 'rtl') { + $bdf = 0x2067; + $bdf2 = 0x202E; + $popd = 'RLIRLOPDFPDI'; + } // U+2067 RLI // U+202E RLO + else { + $bdf = 0x2066; + $bdf2 = 0x202D; + $popd = 'LRILROPDFPDI'; + } // U+2066 LRI // U+202D LRO + } elseif (isset($properties ['UNICODE-BIDI']) && strtolower($properties ['UNICODE-BIDI']) === 'plaintext') { + $bdf = 0x2068; + $popd = 'FSIPDI'; // U+2068 FSI + } else { + if (isset($attr['DIR']) && strtolower($attr['DIR']) === 'rtl') { + $bdf = 0x202B; + $popd = 'RLEPDF'; + } // U+202B RLE + elseif (isset($attr['DIR']) && strtolower($attr['DIR']) === 'ltr') { + $bdf = 0x202A; + $popd = 'LREPDF'; + } // U+202A LRE + } + + if ($bdf) { + // mPDF 5.7.3 Inline tags + if (!isset($this->mpdf->InlineBDF[$tag])) { + $this->mpdf->InlineBDF[$tag] = [[$popd, $this->mpdf->InlineBDFctr]]; + } else { + $this->mpdf->InlineBDF[$tag][] = [$popd, $this->mpdf->InlineBDFctr]; + } + $this->mpdf->InlineBDFctr++; + if ($bdf2) { + $bdf2 = UtfString::code2utf($bdf); + } + $this->mpdf->OTLdata = []; + if ($this->mpdf->tableLevel) { + $this->mpdf->_saveCellTextBuffer(UtfString::code2utf($bdf) . $bdf2); + } else { + $this->mpdf->_saveTextBuffer(UtfString::code2utf($bdf) . $bdf2); + } + $this->mpdf->biDirectional = true; + } + } + + public function close(&$ahtml, &$ihtml) + { + $tag = $this->getTagName(); + + $annot = false; // mPDF 6 + $bdf = false; // mPDF 6 + + // mPDF 5.7.3 Inline tags + if ($tag === 'PROGRESS' || $tag === 'METER') { + if (!empty($this->mpdf->InlineProperties[$tag])) { + $this->mpdf->restoreInlineProperties($this->mpdf->InlineProperties[$tag]); + } + unset($this->mpdf->InlineProperties[$tag]); + if (!empty($this->mpdf->InlineAnnots[$tag])) { + $annot = $this->mpdf->InlineAnnots[$tag]; + } // *ANNOTATIONS* + unset($this->mpdf->InlineAnnots[$tag]); // *ANNOTATIONS* + } else { + if (isset($this->mpdf->InlineProperties[$tag]) && count($this->mpdf->InlineProperties[$tag])) { + $tmpProps = array_pop($this->mpdf->InlineProperties[$tag]); // mPDF 5.7.4 + $this->mpdf->restoreInlineProperties($tmpProps); + } + if (isset($this->mpdf->InlineAnnots[$tag]) && count($this->mpdf->InlineAnnots[$tag])) { // *ANNOTATIONS* + $annot = array_pop($this->mpdf->InlineAnnots[$tag]); // *ANNOTATIONS* + } // *ANNOTATIONS* + if (isset($this->mpdf->InlineBDF[$tag]) && count($this->mpdf->InlineBDF[$tag])) { // mPDF 6 + $bdfarr = array_pop($this->mpdf->InlineBDF[$tag]); + $bdf = $bdfarr[0]; + } + } + + /* -- ANNOTATIONS -- */ + if ($annot) { // mPDF 6 + if ($this->mpdf->tableLevel) { // *TABLES* + $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['textbuffer'][] = [$annot]; // *TABLES* + } // *TABLES* + else { // *TABLES* + $this->mpdf->textbuffer[] = [$annot]; + } // *TABLES* + } + /* -- END ANNOTATIONS -- */ + + // mPDF 6 bidi + // mPDF 6 Bidirectional formatting for inline elements + if ($bdf) { + $popf = $this->mpdf->_setBidiCodes('end', $bdf); + $this->mpdf->OTLdata = []; + if ($this->mpdf->tableLevel) { + $this->mpdf->_saveCellTextBuffer($popf); + } else { + $this->mpdf->_saveTextBuffer($popf); + } + } + } +} diff --git a/Mpdf/Tag/Input.php b/Mpdf/Tag/Input.php new file mode 100644 index 0000000..d98039c --- /dev/null +++ b/Mpdf/Tag/Input.php @@ -0,0 +1,425 @@ +<?php + +namespace Mpdf\Tag; + +use Mpdf\Mpdf; +use Mpdf\Utils\UtfString; + +class Input extends Tag +{ + + public function open($attr, &$ahtml, &$ihtml) + { + $tag = $this->getTagName(); + $this->mpdf->ignorefollowingspaces = false; + if (!isset($attr['TYPE'])) { + $attr['TYPE'] = 'TEXT'; + } + $objattr = []; + $objattr['margin_top'] = 0; + $objattr['margin_bottom'] = 0; + $objattr['margin_left'] = 0; + $objattr['margin_right'] = 0; + $objattr['width'] = 0; + $objattr['height'] = 0; + $objattr['border_top']['w'] = 0; + $objattr['border_bottom']['w'] = 0; + $objattr['border_left']['w'] = 0; + $objattr['border_right']['w'] = 0; + $objattr['type'] = 'input'; + if (isset($attr['DISABLED'])) { + $objattr['disabled'] = true; + } + if (isset($attr['READONLY'])) { + $objattr['readonly'] = true; + } + if (isset($attr['REQUIRED'])) { + $objattr['required'] = true; + } + if (isset($attr['SPELLCHECK']) && strtolower($attr['SPELLCHECK']) === 'true') { + $objattr['spellcheck'] = true; + } + if (isset($attr['TITLE'])) { + $objattr['title'] = $attr['TITLE']; + } elseif (isset($attr['ALT'])) { + $objattr['title'] = $attr['ALT']; + } else { + $objattr['title'] = ''; + } + $objattr['title'] = UtfString::strcode2utf($objattr['title']); + $objattr['title'] = $this->mpdf->lesser_entity_decode($objattr['title']); + if ($this->mpdf->onlyCoreFonts) { + $objattr['title'] = mb_convert_encoding($objattr['title'], $this->mpdf->mb_enc, 'UTF-8'); + } + if ($this->mpdf->useActiveForms && isset($attr['NAME'])) { + $objattr['fieldname'] = $attr['NAME']; + } + if (isset($attr['VALUE'])) { + $attr['VALUE'] = UtfString::strcode2utf($attr['VALUE']); + $attr['VALUE'] = $this->mpdf->lesser_entity_decode($attr['VALUE']); + if ($this->mpdf->onlyCoreFonts) { + $attr['VALUE'] = mb_convert_encoding($attr['VALUE'], $this->mpdf->mb_enc, 'UTF-8'); + } + $objattr['value'] = $attr['VALUE']; + } + + $this->mpdf->InlineProperties['INPUT'] = $this->mpdf->saveInlineProperties(); + $properties = $this->cssManager->MergeCSS('', 'INPUT', $attr); + $objattr['vertical-align'] = ''; + + if (isset($properties['FONT-FAMILY'])) { + $this->mpdf->SetFont($properties['FONT-FAMILY'], $this->mpdf->FontStyle, 0, false); + } + if (isset($properties['FONT-SIZE'])) { + $mmsize = $this->sizeConverter->convert($properties['FONT-SIZE'], $this->mpdf->default_font_size / Mpdf::SCALE); + $this->mpdf->SetFontSize($mmsize * Mpdf::SCALE, false); + } + if (isset($properties['COLOR'])) { + $objattr['color'] = $this->colorConverter->convert($properties['COLOR'], $this->mpdf->PDFAXwarnings); + } + $objattr['fontfamily'] = $this->mpdf->FontFamily; + $objattr['fontsize'] = $this->mpdf->FontSizePt; + if ($this->mpdf->useActiveForms) { + if (isset($attr['ALIGN'])) { + $objattr['text_align'] = $this->getAlign($attr['ALIGN']); + } elseif (isset($properties['TEXT-ALIGN'])) { + $objattr['text_align'] = $this->getAlign($properties['TEXT-ALIGN']); + } + if (isset($properties['BORDER-TOP-COLOR'])) { + $objattr['border-col'] = $this->colorConverter->convert($properties['BORDER-TOP-COLOR'], $this->mpdf->PDFAXwarnings); + } + if (isset($properties['BACKGROUND-COLOR'])) { + $objattr['background-col'] = $this->colorConverter->convert($properties['BACKGROUND-COLOR'], $this->mpdf->PDFAXwarnings); + } + } + + $type = ''; + $texto = ''; + $height = $this->mpdf->FontSize; + $width = 0; + $spacesize = $this->mpdf->GetCharWidth(' ', false); + + $w = 0; + if (isset($properties['WIDTH'])) { + $w = $this->sizeConverter->convert($properties['WIDTH'], $this->mpdf->blk[$this->mpdf->blklvl]['inner_width']); + } + + if ($properties['VERTICAL-ALIGN']) { + $objattr['vertical-align'] = $this->getAlign($properties['VERTICAL-ALIGN']); + } + + switch (strtoupper($attr['TYPE'])) { + case 'HIDDEN': + $this->mpdf->ignorefollowingspaces = true; //Eliminate exceeding left-side spaces + if ($this->mpdf->useActiveForms) { + $this->form->SetFormText(0, 0, $objattr['fieldname'], $objattr['value'], $objattr['value'], '', 0, '', true); + } + if ($this->mpdf->InlineProperties[$tag]) { + $this->mpdf->restoreInlineProperties($this->mpdf->InlineProperties[$tag]); + } + unset($this->mpdf->InlineProperties[$tag]); + return; + + case 'CHECKBOX': //Draw Checkbox + $type = 'CHECKBOX'; + if (isset($attr['CHECKED'])) { + $objattr['checked'] = true; + } else { + $objattr['checked'] = false; + } + $width = $this->mpdf->FontSize; + $height = $this->mpdf->FontSize; + break; + + case 'RADIO': //Draw Radio button + $type = 'RADIO'; + if (isset($attr['CHECKED'])) { + $objattr['checked'] = true; + } + $width = $this->mpdf->FontSize; + $height = $this->mpdf->FontSize; + break; + + /* -- IMAGES-CORE -- */ + case 'IMAGE': // Draw an Image button + if (isset($attr['SRC'])) { + $type = 'IMAGE'; + $srcpath = $attr['SRC']; + $orig_srcpath = $attr['ORIG_SRC']; + // VSPACE and HSPACE converted to margins in MergeCSS + if (isset($properties['MARGIN-TOP'])) { + $objattr['margin_top'] = $this->sizeConverter->convert( + $properties['MARGIN-TOP'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + if (isset($properties['MARGIN-BOTTOM'])) { + $objattr['margin_bottom'] = $this->sizeConverter->convert( + $properties['MARGIN-BOTTOM'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + if (isset($properties['MARGIN-LEFT'])) { + $objattr['margin_left'] = $this->sizeConverter->convert( + $properties['MARGIN-LEFT'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + if (isset($properties['MARGIN-RIGHT'])) { + $objattr['margin_right'] = $this->sizeConverter->convert( + $properties['MARGIN-RIGHT'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + + if (isset($properties['BORDER-TOP'])) { + $objattr['border_top'] = $this->mpdf->border_details($properties['BORDER-TOP']); + } + if (isset($properties['BORDER-BOTTOM'])) { + $objattr['border_bottom'] = $this->mpdf->border_details($properties['BORDER-BOTTOM']); + } + if (isset($properties['BORDER-LEFT'])) { + $objattr['border_left'] = $this->mpdf->border_details($properties['BORDER-LEFT']); + } + if (isset($properties['BORDER-RIGHT'])) { + $objattr['border_right'] = $this->mpdf->border_details($properties['BORDER-RIGHT']); + } + + $objattr['padding_top'] = 0; + $objattr['padding_bottom'] = 0; + $objattr['padding_left'] = 0; + $objattr['padding_right'] = 0; + + if (isset($properties['VERTICAL-ALIGN'])) { + $objattr['vertical-align'] = $this->getAlign($properties['VERTICAL-ALIGN']); + } + + $w = 0; + $h = 0; + if (isset($properties['WIDTH'])) { + $w = $this->sizeConverter->convert($properties['WIDTH'], $this->mpdf->blk[$this->mpdf->blklvl]['inner_width']); + } + if (isset($properties['HEIGHT'])) { + $h = $this->sizeConverter->convert($properties['HEIGHT'], $this->mpdf->blk[$this->mpdf->blklvl]['inner_width']); + } + + $extraheight = $objattr['margin_top'] + $objattr['margin_bottom'] + $objattr['border_top']['w'] + $objattr['border_bottom']['w']; + $extrawidth = $objattr['margin_left'] + $objattr['margin_right'] + $objattr['border_left']['w'] + $objattr['border_right']['w']; + + // Image file + $info = $this->imageProcessor->getImage($srcpath, true, true, $orig_srcpath); + if (!$info) { + $info = $this->imageProcessor->getImage($this->mpdf->noImageFile); + if ($info) { + $srcpath = $this->mpdf->noImageFile; + $w = ($info['w'] * (25.4 / $this->mpdf->img_dpi)); + $h = ($info['h'] * (25.4 / $this->mpdf->img_dpi)); + } + } + if (!$info) { + break; + } + if ($info['cs'] === 'Indexed') { + $objattr['Indexed'] = true; + } + $objattr['file'] = $srcpath; + //Default width and height calculation if needed + if ($w == 0 && $h == 0) { + /* -- IMAGES-WMF -- */ + if ($info['type'] === 'wmf') { + // WMF units are twips (1/20pt) + // divide by 20 to get points + // divide by k to get user units + $w = abs($info['w']) / (20 * Mpdf::SCALE); + $h = abs($info['h']) / (20 * Mpdf::SCALE); + } else { /* -- END IMAGES-WMF -- */ + if ($info['type'] === 'svg') { + // SVG units are pixels + $w = abs($info['w']) / Mpdf::SCALE; + $h = abs($info['h']) / Mpdf::SCALE; + } else { + //Put image at default image dpi + $w = ($info['w'] / Mpdf::SCALE) * (72 / $this->mpdf->img_dpi); + $h = ($info['h'] / Mpdf::SCALE) * (72 / $this->mpdf->img_dpi); + } + } + if (isset($properties['IMAGE-RESOLUTION'])) { + if (preg_match('/from-image/i', $properties['IMAGE-RESOLUTION']) && isset($info['set-dpi']) && $info['set-dpi'] > 0) { + $w *= $this->mpdf->img_dpi / $info['set-dpi']; + $h *= $this->mpdf->img_dpi / $info['set-dpi']; + } elseif (preg_match('/(\d+)dpi/i', $properties['IMAGE-RESOLUTION'], $m)) { + $dpi = $m[1]; + if ($dpi > 0) { + $w *= $this->mpdf->img_dpi / $dpi; + $h *= $this->mpdf->img_dpi / $dpi; + } + } + } + } + // IF WIDTH OR HEIGHT SPECIFIED + if ($w == 0) { + $w = $h * $info['w'] / $info['h']; + } + if ($h == 0) { + $h = $w * $info['h'] / $info['w']; + } + // Resize to maximum dimensions of page + $maxWidth = $this->mpdf->blk[$this->mpdf->blklvl]['inner_width']; + $maxHeight = $this->mpdf->h - ($this->mpdf->tMargin + $this->mpdf->bMargin + 10); + if ($this->mpdf->fullImageHeight) { + $maxHeight = $this->mpdf->fullImageHeight; + } + if (($w + $extrawidth) > ($maxWidth + 0.0001)) { // mPDF 5.7.4 0.0001 to allow for rounding errors when w==maxWidth + $w = $maxWidth - $extrawidth; + $h = $w * $info['h'] / $info['w']; + } + if ($h + $extraheight > $maxHeight) { + $h = $maxHeight - $extraheight; + $w = $h * $info['w'] / $info['h']; + } + $height = $h + $extraheight; + $width = $w + $extrawidth; + $objattr['type'] = 'image'; + $objattr['itype'] = $info['type']; + $objattr['orig_h'] = $info['h']; + $objattr['orig_w'] = $info['w']; + /* -- IMAGES-WMF -- */ + if ($info['type'] === 'wmf') { + $objattr['wmf_x'] = $info['x']; + $objattr['wmf_y'] = $info['y']; + /* -- END IMAGES-WMF -- */ + } else { + if ($info['type'] === 'svg') { + $objattr['wmf_x'] = $info['x']; + $objattr['wmf_y'] = $info['y']; + } + } + $objattr['height'] = $h + $extraheight; + $objattr['width'] = $w + $extrawidth; + + $objattr['image_height'] = $h; + $objattr['image_width'] = $w; + $objattr['ID'] = $info['i']; + $texto = 'X'; + if ($this->mpdf->useActiveForms) { + if (isset($attr['ONCLICK'])) { + $objattr['onClick'] = $attr['ONCLICK']; + } + $objattr['type'] = 'input'; + $type = 'IMAGE'; + } + break; + } + /* -- END IMAGES-CORE -- */ + + case 'BUTTON': // Draw a button + case 'SUBMIT': + case 'RESET': + $type = strtoupper($attr['TYPE']); + if ($type === 'IMAGE') { + $type = 'BUTTON'; + } // src path not found + if (isset($attr['NOPRINT'])) { + $objattr['noprint'] = true; + } + if (!isset($attr['VALUE'])) { + $objattr['value'] = ucfirst(strtolower($type)); + } + + $texto = ' ' . $objattr['value'] . ' '; + + $width = $this->mpdf->GetStringWidth($texto) + ($this->form->form_element_spacing['button']['outer']['h'] * 2) + + ($this->form->form_element_spacing['button']['inner']['h'] * 2); + + $height = $this->mpdf->FontSize + ($this->form->form_element_spacing['button']['outer']['v'] * 2) + + ($this->form->form_element_spacing['button']['inner']['v'] * 2); + + if ($this->mpdf->useActiveForms && isset($attr['ONCLICK'])) { + $objattr['onClick'] = $attr['ONCLICK']; + } + break; + + case 'PASSWORD': + case 'TEXT': + default: + if ($type == '') { + $type = 'TEXT'; + } + if (strtoupper($attr['TYPE']) === 'PASSWORD') { + $type = 'PASSWORD'; + } + if (isset($attr['VALUE'])) { + if ($type === 'PASSWORD') { + $num_stars = mb_strlen($attr['VALUE'], $this->mpdf->mb_enc); + $texto = str_repeat('*', $num_stars); + } else { + $texto = $attr['VALUE']; + } + } + $xw = ($this->form->form_element_spacing['input']['outer']['h'] * 2) + ($this->form->form_element_spacing['input']['inner']['h'] * 2); + $xh = ($this->form->form_element_spacing['input']['outer']['v'] * 2) + ($this->form->form_element_spacing['input']['inner']['v'] * 2); + if ($w) { + $width = $w + $xw; + } else { + $width = (20 * $spacesize) + $xw; + } // Default width in chars + if (isset($attr['SIZE']) && ctype_digit($attr['SIZE'])) { + $width = ($attr['SIZE'] * $spacesize) + $xw; + } + $height = $this->mpdf->FontSize + $xh; + if (isset($attr['MAXLENGTH']) && ctype_digit($attr['MAXLENGTH'])) { + $objattr['maxlength'] = $attr['MAXLENGTH']; + } + if ($this->mpdf->useActiveForms) { + if (isset($attr['ONCALCULATE'])) { + $objattr['onCalculate'] = $attr['ONCALCULATE']; + } elseif (isset($attr['ONCHANGE'])) { + $objattr['onCalculate'] = $attr['ONCHANGE']; + } + if (isset($attr['ONVALIDATE'])) { + $objattr['onValidate'] = $attr['ONVALIDATE']; + } + if (isset($attr['ONKEYSTROKE'])) { + $objattr['onKeystroke'] = $attr['ONKEYSTROKE']; + } + if (isset($attr['ONFORMAT'])) { + $objattr['onFormat'] = $attr['ONFORMAT']; + } + } + break; + } + + $objattr['subtype'] = $type; + $objattr['text'] = $texto; + $objattr['width'] = $width; + $objattr['height'] = $height; + $e = "\xbb\xa4\xactype=input,objattr=" . serialize($objattr) . "\xbb\xa4\xac"; + + /* -- TABLES -- */ + // Output it to buffers + if ($this->mpdf->tableLevel) { + $this->mpdf->_saveCellTextBuffer($e, $this->mpdf->HREF); + $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['s'] += $objattr['width']; + } else { + /* -- END TABLES -- */ + $this->mpdf->_saveTextBuffer($e, $this->mpdf->HREF); + } // *TABLES* + + if ($this->mpdf->InlineProperties[$tag]) { + $this->mpdf->restoreInlineProperties($this->mpdf->InlineProperties[$tag]); + } + unset($this->mpdf->InlineProperties[$tag]); + } + + public function close(&$ahtml, &$ihtml) + { + } +} diff --git a/Mpdf/Tag/Ins.php b/Mpdf/Tag/Ins.php new file mode 100644 index 0000000..03ec244 --- /dev/null +++ b/Mpdf/Tag/Ins.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class Ins extends InlineTag +{ + + +} diff --git a/Mpdf/Tag/Kbd.php b/Mpdf/Tag/Kbd.php new file mode 100644 index 0000000..10b7880 --- /dev/null +++ b/Mpdf/Tag/Kbd.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class Kbd extends InlineTag +{ + + +} diff --git a/Mpdf/Tag/Legend.php b/Mpdf/Tag/Legend.php new file mode 100644 index 0000000..90308d4 --- /dev/null +++ b/Mpdf/Tag/Legend.php @@ -0,0 +1,35 @@ +<?php + +namespace Mpdf\Tag; + +use Mpdf\Mpdf; + +class Legend extends Tag +{ + + public function open($attr, &$ahtml, &$ihtml) + { + $this->mpdf->InlineProperties['LEGEND'] = $this->mpdf->saveInlineProperties(); + $properties = $this->cssManager->MergeCSS('INLINE', 'LEGEND', $attr); + if (!empty($properties)) { + $this->mpdf->setCSS($properties, 'INLINE'); + } + } + + public function close(&$ahtml, &$ihtml) + { + if (count($this->mpdf->textbuffer) && !$this->mpdf->tableLevel) { + $leg = $this->mpdf->textbuffer[count($this->mpdf->textbuffer) - 1]; + unset($this->mpdf->textbuffer[count($this->mpdf->textbuffer) - 1]); + $this->mpdf->textbuffer = array_values($this->mpdf->textbuffer); + $this->mpdf->blk[$this->mpdf->blklvl]['border_legend'] = $leg; + $this->mpdf->blk[$this->mpdf->blklvl]['margin_top'] += ($leg[11] / 2) / Mpdf::SCALE; + $this->mpdf->blk[$this->mpdf->blklvl]['padding_top'] += ($leg[11] / 2) / Mpdf::SCALE; + } + if (isset($this->mpdf->InlineProperties['LEGEND'])) { + $this->mpdf->restoreInlineProperties($this->mpdf->InlineProperties['LEGEND']); + } + unset($this->mpdf->InlineProperties['LEGEND']); + $this->mpdf->ignorefollowingspaces = true; //Eliminate exceeding left-side spaces + } +} diff --git a/Mpdf/Tag/Li.php b/Mpdf/Tag/Li.php new file mode 100644 index 0000000..361af06 --- /dev/null +++ b/Mpdf/Tag/Li.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class Li extends BlockTag +{ + + +} diff --git a/Mpdf/Tag/Main.php b/Mpdf/Tag/Main.php new file mode 100644 index 0000000..2e2fe39 --- /dev/null +++ b/Mpdf/Tag/Main.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class Main extends BlockTag +{ + + +} diff --git a/Mpdf/Tag/Mark.php b/Mpdf/Tag/Mark.php new file mode 100644 index 0000000..38c14a4 --- /dev/null +++ b/Mpdf/Tag/Mark.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class Mark extends InlineTag +{ + + +} diff --git a/Mpdf/Tag/Meter.php b/Mpdf/Tag/Meter.php new file mode 100644 index 0000000..2ffff3d --- /dev/null +++ b/Mpdf/Tag/Meter.php @@ -0,0 +1,517 @@ +<?php + +namespace Mpdf\Tag; + +use Mpdf\Mpdf; + +class Meter extends InlineTag +{ + + public function open($attr, &$ahtml, &$ihtml) + { + $tag = $this->getTagName(); + $this->mpdf->inMeter = true; + + $max = 1; + if (!empty($attr['MAX'])) { + $max = $attr['MAX']; + } + + $min = 0; + if (!empty($attr['MIN']) && $tag === 'METER') { + $min = $attr['MIN']; + } + + if ($max < $min) { + $max = $min; + } + + $value = ''; + if (isset($attr['VALUE']) && ($attr['VALUE'] || $attr['VALUE'] === '0')) { + $value = $attr['VALUE']; + if ($value < $min) { + $value = $min; + } elseif ($value > $max) { + $value = $max; + } + } + + $low = $min; + if (!empty($attr['LOW'])) { + $low = $attr['LOW']; + } + if ($low < $min) { + $low = $min; + } elseif ($low > $max) { + $low = $max; + } + $high = $max; + if (!empty($attr['HIGH'])) { + $high = $attr['HIGH']; + } + if ($high < $low) { + $high = $low; + } elseif ($high > $max) { + $high = $max; + } + if (!empty($attr['OPTIMUM'])) { + $optimum = $attr['OPTIMUM']; + } else { + $optimum = $min + (($max - $min) / 2); + } + if ($optimum < $min) { + $optimum = $min; + } elseif ($optimum > $max) { + $optimum = $max; + } + $type = ''; + if (!empty($attr['TYPE'])) { + $type = $attr['TYPE']; + } + $objattr = []; + $objattr['margin_top'] = 0; + $objattr['margin_bottom'] = 0; + $objattr['margin_left'] = 0; + $objattr['margin_right'] = 0; + $objattr['padding_top'] = 0; + $objattr['padding_bottom'] = 0; + $objattr['padding_left'] = 0; + $objattr['padding_right'] = 0; + $objattr['width'] = 0; + $objattr['height'] = 0; + $objattr['border_top']['w'] = 0; + $objattr['border_bottom']['w'] = 0; + $objattr['border_left']['w'] = 0; + $objattr['border_right']['w'] = 0; + + $properties = $this->cssManager->MergeCSS('INLINE', $tag, $attr); + if (isset($properties ['DISPLAY']) && strtolower($properties ['DISPLAY']) === 'none') { + return; + } + $objattr['visibility'] = 'visible'; + if (isset($properties['VISIBILITY'])) { + $v = strtolower($properties['VISIBILITY']); + if (($v === 'hidden' || $v === 'printonly' || $v === 'screenonly') && $this->mpdf->visibility === 'visible') { + $objattr['visibility'] = $v; + } + } + + if (isset($properties['MARGIN-TOP'])) { + $objattr['margin_top'] = $this->sizeConverter->convert( + $properties['MARGIN-TOP'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + if (isset($properties['MARGIN-BOTTOM'])) { + $objattr['margin_bottom'] = $this->sizeConverter->convert( + $properties['MARGIN-BOTTOM'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + if (isset($properties['MARGIN-LEFT'])) { + $objattr['margin_left'] = $this->sizeConverter->convert( + $properties['MARGIN-LEFT'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + if (isset($properties['MARGIN-RIGHT'])) { + $objattr['margin_right'] = $this->sizeConverter->convert( + $properties['MARGIN-RIGHT'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + + if (isset($properties['PADDING-TOP'])) { + $objattr['padding_top'] = $this->sizeConverter->convert( + $properties['PADDING-TOP'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + if (isset($properties['PADDING-BOTTOM'])) { + $objattr['padding_bottom'] = $this->sizeConverter->convert( + $properties['PADDING-BOTTOM'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + if (isset($properties['PADDING-LEFT'])) { + $objattr['padding_left'] = $this->sizeConverter->convert( + $properties['PADDING-LEFT'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + if (isset($properties['PADDING-RIGHT'])) { + $objattr['padding_right'] = $this->sizeConverter->convert( + $properties['PADDING-RIGHT'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + + if (isset($properties['BORDER-TOP'])) { + $objattr['border_top'] = $this->mpdf->border_details($properties['BORDER-TOP']); + } + if (isset($properties['BORDER-BOTTOM'])) { + $objattr['border_bottom'] = $this->mpdf->border_details($properties['BORDER-BOTTOM']); + } + if (isset($properties['BORDER-LEFT'])) { + $objattr['border_left'] = $this->mpdf->border_details($properties['BORDER-LEFT']); + } + if (isset($properties['BORDER-RIGHT'])) { + $objattr['border_right'] = $this->mpdf->border_details($properties['BORDER-RIGHT']); + } + + if (isset($properties['VERTICAL-ALIGN'])) { + $objattr['vertical-align'] = $this->getAlign($properties['VERTICAL-ALIGN']); + } + $w = 0; + $h = 0; + if (isset($properties['WIDTH'])) { + $w = $this->sizeConverter->convert( + $properties['WIDTH'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } elseif (isset($attr['WIDTH'])) { + $w = $this->sizeConverter->convert($attr['WIDTH'], $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], $this->mpdf->FontSize, false); + } + + if (isset($properties['HEIGHT'])) { + $h = $this->sizeConverter->convert( + $properties['HEIGHT'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } elseif (isset($attr['HEIGHT'])) { + $h = $this->sizeConverter->convert($attr['HEIGHT'], $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], $this->mpdf->FontSize, false); + } + + if (isset($properties['OPACITY']) && $properties['OPACITY'] > 0 && $properties['OPACITY'] <= 1) { + $objattr['opacity'] = $properties['OPACITY']; + } + if ($this->mpdf->HREF) { + if (strpos($this->mpdf->HREF, '.') === false && strpos($this->mpdf->HREF, '@') !== 0) { + $href = $this->mpdf->HREF; + while (array_key_exists($href, $this->mpdf->internallink)) { + $href = '#' . $href; + } + $this->mpdf->internallink[$href] = $this->mpdf->AddLink(); + $objattr['link'] = $this->mpdf->internallink[$href]; + } else { + $objattr['link'] = $this->mpdf->HREF; + } + } + $extraheight = $objattr['padding_top'] + $objattr['padding_bottom'] + $objattr['margin_top'] + + $objattr['margin_bottom'] + $objattr['border_top']['w'] + $objattr['border_bottom']['w']; + + $extrawidth = $objattr['padding_left'] + $objattr['padding_right'] + $objattr['margin_left'] + + $objattr['margin_right'] + $objattr['border_left']['w'] + $objattr['border_right']['w']; + + $svg = $this->makeSVG($type, $value, $max, $min, $optimum, $low, $high); + //Save to local file + $srcpath = $this->cache->write('/_tempSVG' . uniqid(random_int(1, 100000), true) . '_' . strtolower($tag) . '.svg', $svg); + $orig_srcpath = $srcpath; + $this->mpdf->GetFullPath($srcpath); + + $info = $this->imageProcessor->getImage($srcpath, true, true, $orig_srcpath); + if (!$info) { + $info = $this->imageProcessor->getImage($this->mpdf->noImageFile); + if ($info) { + $srcpath = $this->mpdf->noImageFile; + $w = ($info['w'] * (25.4 / $this->mpdf->img_dpi)); + $h = ($info['h'] * (25.4 / $this->mpdf->img_dpi)); + } + } + if (!$info) { + return; + } + + $objattr['file'] = $srcpath; + + // Default width and height calculation if needed + if ($w == 0 && $h == 0) { + // SVG units are pixels + $w = $this->mpdf->FontSize / (10 / Mpdf::SCALE) * abs($info['w']) / Mpdf::SCALE; + $h = $this->mpdf->FontSize / (10 / Mpdf::SCALE) * abs($info['h']) / Mpdf::SCALE; + } + + // IF WIDTH OR HEIGHT SPECIFIED + if ($w == 0) { + $w = $info['h'] ? abs($h * $info['w'] / $info['h']) : INF; + } + if ($h == 0) { + $h = $info['w'] ? abs($w * $info['h'] / $info['w']) : INF; + } + + // Resize to maximum dimensions of page + $maxWidth = $this->mpdf->blk[$this->mpdf->blklvl]['inner_width']; + $maxHeight = $this->mpdf->h - ($this->mpdf->tMargin + $this->mpdf->bMargin + 1); + if ($this->mpdf->fullImageHeight) { + $maxHeight = $this->mpdf->fullImageHeight; + } + if (($w + $extrawidth) > ($maxWidth + 0.0001)) { // mPDF 5.7.4 0.0001 to allow for rounding errors when w==maxWidth + $w = $maxWidth - $extrawidth; + $h = abs($w * $info['h'] / $info['w']); + } + + if ($h + $extraheight > $maxHeight) { + $h = $maxHeight - $extraheight; + $w = abs($h * $info['w'] / $info['h']); + } + $objattr['type'] = 'image'; + $objattr['itype'] = $info['type']; + + $objattr['orig_h'] = $info['h']; + $objattr['orig_w'] = $info['w']; + $objattr['wmf_x'] = $info['x']; + $objattr['wmf_y'] = $info['y']; + $objattr['height'] = $h + $extraheight; + $objattr['width'] = $w + $extrawidth; + $objattr['image_height'] = $h; + $objattr['image_width'] = $w; + $e = "\xbb\xa4\xactype=image,objattr=" . serialize($objattr) . "\xbb\xa4\xac"; + if ($this->mpdf->tableLevel) { + $this->mpdf->_saveCellTextBuffer($e, $this->mpdf->HREF); + $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['s'] += $objattr['width']; + } else { + $this->mpdf->_saveTextBuffer($e, $this->mpdf->HREF); + } + } + + public function close(&$ahtml, &$ihtml) + { + parent::close($ahtml, $ihtml); + $this->mpdf->ignorefollowingspaces = false; + $this->mpdf->inMeter = false; + } + + protected function makeSVG($type, $value, $max, $min, $optimum, $low, $high) + { + if ($type == '2') { + ///////////////////////////////////////////////////////////////////////////////////// + ///////// CUSTOM <meter type="2"> + ///////////////////////////////////////////////////////////////////////////////////// + $h = 10; + $w = 160; + $border_radius = 0.143; // Factor of Height + + $svg = '<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg width="' . $w . 'px" height="' . $h . 'px" viewBox="0 0 ' . $w . ' ' . $h . '" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" ><g> + + +<defs> +<linearGradient id="GrGRAY" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox"> +<stop offset="0%" stop-color="rgb(222, 222, 222)" /> +<stop offset="20%" stop-color="rgb(232, 232, 232)" /> +<stop offset="25%" stop-color="rgb(232, 232, 232)" /> +<stop offset="100%" stop-color="rgb(182, 182, 182)" /> +</linearGradient> + +</defs> +'; + $svg .= '<rect x="0" y="0" width="' . $w . '" height="' . $h . '" fill="#f4f4f4" stroke="none" />'; + + // LOW to HIGH region + //if ($low && $high && ($low != $min || $high != $max)) { + if ($low && $high) { + $barx = (($low - $min) / ($max - $min) ) * $w; + $barw = (($high - $low) / ($max - $min) ) * $w; + $svg .= '<rect x="' . $barx . '" y="0" width="' . $barw . '" height="' . $h . '" fill="url(#GrGRAY)" stroke="#888888" stroke-width="0.5px" />'; + } + + // OPTIMUM Marker (? AVERAGE) + if ($optimum) { + $barx = (($optimum - $min) / ($max - $min) ) * $w; + $barw = $h / 2; + $barcol = '#888888'; + $svg .= '<rect x="' . $barx . '" y="0" rx="' . ($h * $border_radius) . 'px" ry="' . ($h * $border_radius) . 'px" width="' . $barw . '" height="' . $h . '" fill="' . $barcol . '" stroke="none" />'; + } + + // VALUE Marker + if ($value) { + if ($min != $low && $value < $low) { + $col = 'orange'; + } elseif ($max != $high && $value > $high) { + $col = 'orange'; + } else { + $col = '#008800'; + } + $cx = (($value - $min) / ($max - $min) ) * $w; + $cy = $h / 2; + $rx = $h / 3.5; + $ry = $h / 2.2; + $svg .= '<ellipse fill="' . $col . '" stroke="#000000" stroke-width="0.5px" cx="' . $cx . '" cy="' . $cy . '" rx="' . $rx . '" ry="' . $ry . '"/>'; + } + + // BoRDER + $svg .= '<rect x="0" y="0" width="' . $w . '" height="' . $h . '" fill="none" stroke="#888888" stroke-width="0.5px" />'; + + $svg .= '</g></svg>'; + } elseif ($type == '3') { + ///////////////////////////////////////////////////////////////////////////////////// + ///////// CUSTOM <meter type="2"> + ///////////////////////////////////////////////////////////////////////////////////// + $h = 10; + $w = 100; + $border_radius = 0.143; // Factor of Height + + $svg = '<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg width="' . $w . 'px" height="' . $h . 'px" viewBox="0 0 ' . $w . ' ' . $h . '" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" ><g> + + +<defs> +<linearGradient id="GrGRAY" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox"> +<stop offset="0%" stop-color="rgb(222, 222, 222)" /> +<stop offset="20%" stop-color="rgb(232, 232, 232)" /> +<stop offset="25%" stop-color="rgb(232, 232, 232)" /> +<stop offset="100%" stop-color="rgb(182, 182, 182)" /> +</linearGradient> + +</defs> +'; + $svg .= '<rect x="0" y="0" width="' . $w . '" height="' . $h . '" fill="#f4f4f4" stroke="none" />'; + + // LOW to HIGH region + if ($low && $high && ($low != $min || $high != $max)) { + //if ($low && $high) { + $barx = (($low - $min) / ($max - $min) ) * $w; + $barw = (($high - $low) / ($max - $min) ) * $w; + $svg .= '<rect x="' . $barx . '" y="0" width="' . $barw . '" height="' . $h . '" fill="url(#GrGRAY)" stroke="#888888" stroke-width="0.5px" />'; + } + + // OPTIMUM Marker (? AVERAGE) + if ($optimum) { + $barx = (($optimum - $min) / ($max - $min) ) * $w; + $barw = $h / 2; + $barcol = '#888888'; + $svg .= '<rect x="' . $barx . '" y="0" rx="' . ($h * $border_radius) . 'px" ry="' . ($h * $border_radius) . 'px" width="' . $barw . '" height="' . $h . '" fill="' . $barcol . '" stroke="none" />'; + } + + // VALUE Marker + if ($value) { + if ($min != $low && $value < $low) { + $col = 'orange'; + } elseif ($max != $high && $value > $high) { + $col = 'orange'; + } else { + $col = 'orange'; + } + $cx = (($value - $min) / ($max - $min) ) * $w; + $cy = $h / 2; + $rx = $h / 2.2; + $ry = $h / 2.2; + $svg .= '<ellipse fill="' . $col . '" stroke="#000000" stroke-width="0.5px" cx="' . $cx . '" cy="' . $cy . '" rx="' . $rx . '" ry="' . $ry . '"/>'; + } + + // BoRDER + $svg .= '<rect x="0" y="0" width="' . $w . '" height="' . $h . '" fill="none" stroke="#888888" stroke-width="0.5px" />'; + + $svg .= '</g></svg>'; + } else { + ///////////////////////////////////////////////////////////////////////////////////// + ///////// DEFAULT <meter> + ///////////////////////////////////////////////////////////////////////////////////// + $h = 10; + $w = 50; + $border_radius = 0.143; // Factor of Height + + $svg = '<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg width="' . $w . 'px" height="' . $h . 'px" viewBox="0 0 ' . $w . ' ' . $h . '" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" ><g> + +<defs> +<linearGradient id="GrGRAY" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox"> +<stop offset="0%" stop-color="rgb(222, 222, 222)" /> +<stop offset="20%" stop-color="rgb(232, 232, 232)" /> +<stop offset="25%" stop-color="rgb(232, 232, 232)" /> +<stop offset="100%" stop-color="rgb(182, 182, 182)" /> +</linearGradient> + +<linearGradient id="GrRED" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox"> +<stop offset="0%" stop-color="rgb(255, 162, 162)" /> +<stop offset="20%" stop-color="rgb(255, 218, 218)" /> +<stop offset="25%" stop-color="rgb(255, 218, 218)" /> +<stop offset="100%" stop-color="rgb(255, 0, 0)" /> +</linearGradient> + +<linearGradient id="GrGREEN" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox"> +<stop offset="0%" stop-color="rgb(102, 230, 102)" /> +<stop offset="20%" stop-color="rgb(218, 255, 218)" /> +<stop offset="25%" stop-color="rgb(218, 255, 218)" /> +<stop offset="100%" stop-color="rgb(0, 148, 0)" /> +</linearGradient> + +<linearGradient id="GrBLUE" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox"> +<stop offset="0%" stop-color="rgb(102, 102, 230)" /> +<stop offset="20%" stop-color="rgb(238, 238, 238)" /> +<stop offset="25%" stop-color="rgb(238, 238, 238)" /> +<stop offset="100%" stop-color="rgb(0, 0, 128)" /> +</linearGradient> + +<linearGradient id="GrORANGE" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox"> +<stop offset="0%" stop-color="rgb(255, 186, 0)" /> +<stop offset="20%" stop-color="rgb(255, 238, 168)" /> +<stop offset="25%" stop-color="rgb(255, 238, 168)" /> +<stop offset="100%" stop-color="rgb(255, 155, 0)" /> +</linearGradient> +</defs> + +<rect x="0" y="0" rx="' . ($h * $border_radius) . 'px" ry="' . ($h * $border_radius) . 'px" width="' . $w . '" height="' . $h . '" fill="url(#GrGRAY)" stroke="none" /> +'; + + if ($value) { + $barw = (($value - $min) / ($max - $min) ) * $w; + if ($optimum < $low) { + if ($value < $low) { + $barcol = 'url(#GrGREEN)'; + } elseif ($value > $high) { + $barcol = 'url(#GrRED)'; + } else { + $barcol = 'url(#GrORANGE)'; + } + } elseif ($optimum > $high) { + if ($value < $low) { + $barcol = 'url(#GrRED)'; + } elseif ($value > $high) { + $barcol = 'url(#GrGREEN)'; + } else { + $barcol = 'url(#GrORANGE)'; + } + } else { + if ($value < $low) { + $barcol = 'url(#GrORANGE)'; + } elseif ($value > $high) { + $barcol = 'url(#GrORANGE)'; + } else { + $barcol = 'url(#GrGREEN)'; + } + } + $svg .= '<rect x="0" y="0" rx="' . ($h * $border_radius) . 'px" ry="' . ($h * $border_radius) . 'px" width="' . $barw . '" height="' . $h . '" fill="' . $barcol . '" stroke="none" />'; + } + + $svg .= '</g></svg>'; + } + + + return $svg; + } + +} diff --git a/Mpdf/Tag/Nav.php b/Mpdf/Tag/Nav.php new file mode 100644 index 0000000..7845cfa --- /dev/null +++ b/Mpdf/Tag/Nav.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class Nav extends BlockTag +{ + + +} diff --git a/Mpdf/Tag/NewColumn.php b/Mpdf/Tag/NewColumn.php new file mode 100644 index 0000000..a9ff5a1 --- /dev/null +++ b/Mpdf/Tag/NewColumn.php @@ -0,0 +1,18 @@ +<?php + +namespace Mpdf\Tag; + +class NewColumn extends Tag +{ + + public function open($attr, &$ahtml, &$ihtml) + { + $this->mpdf->ignorefollowingspaces = true; + $this->mpdf->NewColumn(); + $this->mpdf->ColumnAdjust = false; // disables all column height adjustment for the page. + } + + public function close(&$ahtml, &$ihtml) + { + } +} diff --git a/Mpdf/Tag/NewPage.php b/Mpdf/Tag/NewPage.php new file mode 100644 index 0000000..3a7f50f --- /dev/null +++ b/Mpdf/Tag/NewPage.php @@ -0,0 +1,8 @@ +<?php + +namespace Mpdf\Tag; + +class NewPage extends FormFeed +{ + +} diff --git a/Mpdf/Tag/Ol.php b/Mpdf/Tag/Ol.php new file mode 100644 index 0000000..75deba9 --- /dev/null +++ b/Mpdf/Tag/Ol.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class Ol extends BlockTag +{ + + +} diff --git a/Mpdf/Tag/Option.php b/Mpdf/Tag/Option.php new file mode 100644 index 0000000..c5233d1 --- /dev/null +++ b/Mpdf/Tag/Option.php @@ -0,0 +1,38 @@ +<?php + +namespace Mpdf\Tag; + +use Mpdf\Utils\UtfString; + +class Option extends Tag +{ + + public function open($attr, &$ahtml, &$ihtml) + { + $this->mpdf->lastoptionaltag = ''; + $this->mpdf->selectoption['ACTIVE'] = true; + $this->mpdf->selectoption['currentSEL'] = false; + if (empty($this->mpdf->selectoption)) { + $this->mpdf->selectoption['MAXWIDTH'] = ''; + $this->mpdf->selectoption['SELECTED'] = ''; + } + if (isset($attr['SELECTED'])) { + $this->mpdf->selectoption['SELECTED'] = ''; + $this->mpdf->selectoption['currentSEL'] = true; + } + if (isset($attr['VALUE'])) { + $attr['VALUE'] = UtfString::strcode2utf($attr['VALUE']); + $attr['VALUE'] = $this->mpdf->lesser_entity_decode($attr['VALUE']); + if ($this->mpdf->onlyCoreFonts) { + $attr['VALUE'] = mb_convert_encoding($attr['VALUE'], $this->mpdf->mb_enc, 'UTF-8'); + } + } + $this->mpdf->selectoption['currentVAL'] = $attr['VALUE']; + } + + public function close(&$ahtml, &$ihtml) + { + $this->mpdf->selectoption['ACTIVE'] = false; + $this->mpdf->lastoptionaltag = ''; + } +} diff --git a/Mpdf/Tag/P.php b/Mpdf/Tag/P.php new file mode 100644 index 0000000..61b2a80 --- /dev/null +++ b/Mpdf/Tag/P.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class P extends BlockTag +{ + + +} diff --git a/Mpdf/Tag/PageBreak.php b/Mpdf/Tag/PageBreak.php new file mode 100644 index 0000000..9f721c4 --- /dev/null +++ b/Mpdf/Tag/PageBreak.php @@ -0,0 +1,8 @@ +<?php + +namespace Mpdf\Tag; + +class PageBreak extends FormFeed +{ + +} diff --git a/Mpdf/Tag/PageFooter.php b/Mpdf/Tag/PageFooter.php new file mode 100644 index 0000000..7b18a61 --- /dev/null +++ b/Mpdf/Tag/PageFooter.php @@ -0,0 +1,153 @@ +<?php + +namespace Mpdf\Tag; + +use Mpdf\Mpdf; + +class PageFooter extends Tag +{ + + public function open($attr, &$ahtml, &$ihtml) + { + $tag = $this->getTagName(); + $this->mpdf->ignorefollowingspaces = true; + $pname = '_nonhtmldefault'; + if ($attr['NAME']) { + $pname = $attr['NAME']; + } // mPDF 6 + + $p = []; // mPDF 6 + $p['L'] = []; + $p['C'] = []; + $p['R'] = []; + $p['L']['font-style'] = ''; + $p['C']['font-style'] = ''; + $p['R']['font-style'] = ''; + + if (isset($attr['CONTENT-LEFT'])) { + $p['L']['content'] = $attr['CONTENT-LEFT']; + } + if (isset($attr['CONTENT-CENTER'])) { + $p['C']['content'] = $attr['CONTENT-CENTER']; + } + if (isset($attr['CONTENT-RIGHT'])) { + $p['R']['content'] = $attr['CONTENT-RIGHT']; + } + + if (isset($attr['HEADER-STYLE']) || isset($attr['FOOTER-STYLE'])) { // font-family,size,weight,style,color + if ($tag === 'PAGEHEADER') { + $properties = $this->cssManager->readInlineCSS($attr['HEADER-STYLE']); + } else { + $properties = $this->cssManager->readInlineCSS($attr['FOOTER-STYLE']); + } + if (isset($properties['FONT-FAMILY'])) { + $p['L']['font-family'] = $properties['FONT-FAMILY']; + $p['C']['font-family'] = $properties['FONT-FAMILY']; + $p['R']['font-family'] = $properties['FONT-FAMILY']; + } + if (isset($properties['FONT-SIZE'])) { + $p['L']['font-size'] = $this->sizeConverter->convert($properties['FONT-SIZE']) * Mpdf::SCALE; + $p['C']['font-size'] = $this->sizeConverter->convert($properties['FONT-SIZE']) * Mpdf::SCALE; + $p['R']['font-size'] = $this->sizeConverter->convert($properties['FONT-SIZE']) * Mpdf::SCALE; + } + if (isset($properties['FONT-WEIGHT']) && $properties['FONT-WEIGHT'] === 'bold') { + $p['L']['font-style'] = 'B'; + $p['C']['font-style'] = 'B'; + $p['R']['font-style'] = 'B'; + } + if (isset($properties['FONT-STYLE']) && $properties['FONT-STYLE'] === 'italic') { + $p['L']['font-style'] .= 'I'; + $p['C']['font-style'] .= 'I'; + $p['R']['font-style'] .= 'I'; + } + if (isset($properties['COLOR'])) { + $p['L']['color'] = $properties['COLOR']; + $p['C']['color'] = $properties['COLOR']; + $p['R']['color'] = $properties['COLOR']; + } + } + if (isset($attr['HEADER-STYLE-LEFT']) || isset($attr['FOOTER-STYLE-LEFT'])) { + if ($tag === 'PAGEHEADER') { + $properties = $this->cssManager->readInlineCSS($attr['HEADER-STYLE-LEFT']); + } else { + $properties = $this->cssManager->readInlineCSS($attr['FOOTER-STYLE-LEFT']); + } + if (isset($properties['FONT-FAMILY'])) { + $p['L']['font-family'] = $properties['FONT-FAMILY']; + } + if (isset($properties['FONT-SIZE'])) { + $p['L']['font-size'] = $this->sizeConverter->convert($properties['FONT-SIZE']) * Mpdf::SCALE; + } + if (isset($properties['FONT-WEIGHT']) && $properties['FONT-WEIGHT'] === 'bold') { + $p['L']['font-style'] = 'B'; + } + if (isset($properties['FONT-STYLE']) && $properties['FONT-STYLE'] === 'italic') { + $p['L']['font-style'] .='I'; + } + if (isset($properties['COLOR'])) { + $p['L']['color'] = $properties['COLOR']; + } + } + if (isset($attr['HEADER-STYLE-CENTER']) || isset($attr['FOOTER-STYLE-CENTER'])) { + if ($tag === 'PAGEHEADER') { + $properties = $this->cssManager->readInlineCSS($attr['HEADER-STYLE-CENTER']); + } else { + $properties = $this->cssManager->readInlineCSS($attr['FOOTER-STYLE-CENTER']); + } + if (isset($properties['FONT-FAMILY'])) { + $p['C']['font-family'] = $properties['FONT-FAMILY']; + } + if (isset($properties['FONT-SIZE'])) { + $p['C']['font-size'] = $this->sizeConverter->convert($properties['FONT-SIZE']) * Mpdf::SCALE; + } + if (isset($properties['FONT-WEIGHT']) && $properties['FONT-WEIGHT'] === 'bold') { + $p['C']['font-style'] = 'B'; + } + if (isset($properties['FONT-STYLE']) && $properties['FONT-STYLE'] === 'italic') { + $p['C']['font-style'] .= 'I'; + } + if (isset($properties['COLOR'])) { + $p['C']['color'] = $properties['COLOR']; + } + } + if (isset($attr['HEADER-STYLE-RIGHT']) || isset($attr['FOOTER-STYLE-RIGHT'])) { + if ($tag === 'PAGEHEADER') { + $properties = $this->cssManager->readInlineCSS($attr['HEADER-STYLE-RIGHT']); + } else { + $properties = $this->cssManager->readInlineCSS($attr['FOOTER-STYLE-RIGHT']); + } + if (isset($properties['FONT-FAMILY'])) { + $p['R']['font-family'] = $properties['FONT-FAMILY']; + } + if (isset($properties['FONT-SIZE'])) { + $p['R']['font-size'] = $this->sizeConverter->convert($properties['FONT-SIZE']) * Mpdf::SCALE; + } + if (isset($properties['FONT-WEIGHT']) && $properties['FONT-WEIGHT'] === 'bold') { + $p['R']['font-style'] = 'B'; + } + if (isset($properties['FONT-STYLE']) && $properties['FONT-STYLE'] === 'italic') { + $p['R']['font-style'] .= 'I'; + } + if (isset($properties['COLOR'])) { + $p['R']['color'] = $properties['COLOR']; + } + } + if (!empty($attr['LINE'])) { // 0|1|on|off + $lineset = 0; + if ($attr['LINE'] == '1' || strtoupper($attr['LINE']) === 'ON') { + $lineset = 1; + } + $p['line'] = $lineset; + } + // mPDF 6 + if ($tag === 'PAGEHEADER') { + $this->mpdf->DefHeaderByName($pname, $p); + } else { + $this->mpdf->DefFooterByName($pname, $p); + } + } + + public function close(&$ahtml, &$ihtml) + { + } +} diff --git a/Mpdf/Tag/PageHeader.php b/Mpdf/Tag/PageHeader.php new file mode 100644 index 0000000..9920ee7 --- /dev/null +++ b/Mpdf/Tag/PageHeader.php @@ -0,0 +1,8 @@ +<?php + +namespace Mpdf\Tag; + +class PageHeader extends PageFooter +{ + +} diff --git a/Mpdf/Tag/Pre.php b/Mpdf/Tag/Pre.php new file mode 100644 index 0000000..ef21606 --- /dev/null +++ b/Mpdf/Tag/Pre.php @@ -0,0 +1,13 @@ +<?php + +namespace Mpdf\Tag; + +class Pre extends BlockTag +{ + + public function open($attr, &$ahtml, &$ihtml) + { + $this->mpdf->ispre = true; // ADDED - Prevents left trim of textbuffer in printbuffer() + parent::open($attr, $ahtml, $ihtml); // TODO: Change the autogenerated stub + } +} diff --git a/Mpdf/Tag/Progress.php b/Mpdf/Tag/Progress.php new file mode 100644 index 0000000..32e22da --- /dev/null +++ b/Mpdf/Tag/Progress.php @@ -0,0 +1,72 @@ +<?php + +namespace Mpdf\Tag; + +class Progress extends Meter +{ + protected function makeSVG($type, $value, $max, $min, $optimum, $low, $high) + { + $svg = ''; + + if ($type == '2') { + ///////////////////////////////////////////////////////////////////////////////////// + ///////// CUSTOM <progress type="2"> + ///////////////////////////////////////////////////////////////////////////////////// + } else { + ///////////////////////////////////////////////////////////////////////////////////// + ///////// DEFAULT <progress> + ///////////////////////////////////////////////////////////////////////////////////// + $h = 10; + $w = 100; + $border_radius = 0.143; // Factor of Height + + if ($value or $value === '0') { + $fill = 'url(#GrGRAY)'; + } else { + $fill = '#f8f8f8'; + } + + $svg = '<svg width="' . $w . 'px" height="' . $h . 'px" viewBox="0 0 ' . $w . ' ' . $h . '"><g> + +<defs> +<linearGradient id="GrGRAY" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox"> +<stop offset="0%" stop-color="rgb(222, 222, 222)" /> +<stop offset="20%" stop-color="rgb(232, 232, 232)" /> +<stop offset="25%" stop-color="rgb(232, 232, 232)" /> +<stop offset="100%" stop-color="rgb(182, 182, 182)" /> +</linearGradient> + +<linearGradient id="GrGREEN" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox"> +<stop offset="0%" stop-color="rgb(102, 230, 102)" /> +<stop offset="20%" stop-color="rgb(218, 255, 218)" /> +<stop offset="25%" stop-color="rgb(218, 255, 218)" /> +<stop offset="100%" stop-color="rgb(0, 148, 0)" /> +</linearGradient> + +</defs> + +<rect x="0" y="0" rx="' . ($h * $border_radius) . 'px" ry="' . ($h * $border_radius) . 'px" width="' . $w . '" height="' . $h . '" fill="' . $fill . '" stroke="none" /> +'; + + if ($value) { + $barw = (($value - $min) / ($max - $min) ) * $w; + $barcol = 'url(#GrGREEN)'; + $svg .= '<rect x="0" y="0" rx="' . ($h * $border_radius) . 'px" ry="' . ($h * $border_radius) . 'px" width="' . $barw . '" height="' . $h . '" fill="' . $barcol . '" stroke="none" />'; + } + + + // Borders + $svg .= '<rect x="0" y="0" rx="' . ($h * $border_radius) . 'px" ry="' . ($h * $border_radius) . 'px" width="' . $w . '" height="' . $h . '" fill="none" stroke="#888888" stroke-width="0.5px" />'; + if ($value) { + // $svg .= '<rect x="0" y="0" rx="'.($h*$border_radius).'px" ry="'.($h*$border_radius).'px" width="'.$barw.'" height="'.$h.'" fill="none" stroke="#888888" stroke-width="0.5px" />'; + } + + + $svg .= '</g></svg>'; + } + + + return $svg; + } + +} diff --git a/Mpdf/Tag/Q.php b/Mpdf/Tag/Q.php new file mode 100644 index 0000000..3e05674 --- /dev/null +++ b/Mpdf/Tag/Q.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class Q extends InlineTag +{ + + +} diff --git a/Mpdf/Tag/S.php b/Mpdf/Tag/S.php new file mode 100644 index 0000000..37aa832 --- /dev/null +++ b/Mpdf/Tag/S.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class S extends InlineTag +{ + + +} diff --git a/Mpdf/Tag/Samp.php b/Mpdf/Tag/Samp.php new file mode 100644 index 0000000..c541cdd --- /dev/null +++ b/Mpdf/Tag/Samp.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class Samp extends InlineTag +{ + + +} diff --git a/Mpdf/Tag/Section.php b/Mpdf/Tag/Section.php new file mode 100644 index 0000000..1c41a7b --- /dev/null +++ b/Mpdf/Tag/Section.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class Section extends BlockTag +{ + + +} diff --git a/Mpdf/Tag/Select.php b/Mpdf/Tag/Select.php new file mode 100644 index 0000000..1d3c131 --- /dev/null +++ b/Mpdf/Tag/Select.php @@ -0,0 +1,154 @@ +<?php + +namespace Mpdf\Tag; + +use Mpdf\Mpdf; + +class Select extends Tag +{ + + public function open($attr, &$ahtml, &$ihtml) + { + $this->mpdf->lastoptionaltag = ''; // Save current HTML specified optional endtag + $this->mpdf->InlineProperties['SELECT'] = $this->mpdf->saveInlineProperties(); + $properties = $this->cssManager->MergeCSS('', 'SELECT', $attr); + if (isset($properties['FONT-FAMILY'])) { + $this->mpdf->SetFont($properties['FONT-FAMILY'], $this->mpdf->FontStyle, 0, false); + } + if (isset($properties['FONT-SIZE'])) { + $mmsize = $this->sizeConverter->convert($properties['FONT-SIZE'], $this->mpdf->default_font_size / Mpdf::SCALE); + $this->mpdf->SetFontSize($mmsize * Mpdf::SCALE, false); + } + if (isset($attr['SPELLCHECK']) && strtolower($attr['SPELLCHECK']) === 'true') { + $this->mpdf->selectoption['SPELLCHECK'] = true; + } + + if (isset($properties['COLOR'])) { + $this->mpdf->selectoption['COLOR'] = $this->colorConverter->convert($properties['COLOR'], $this->mpdf->PDFAXwarnings); + } + $this->mpdf->specialcontent = 'type=select'; + if (isset($attr['DISABLED'])) { + $this->mpdf->selectoption['DISABLED'] = $attr['DISABLED']; + } + if (isset($attr['READONLY'])) { + $this->mpdf->selectoption['READONLY'] = $attr['READONLY']; + } + if (isset($attr['REQUIRED'])) { + $this->mpdf->selectoption['REQUIRED'] = $attr['REQUIRED']; + } + if (isset($attr['EDITABLE'])) { + $this->mpdf->selectoption['EDITABLE'] = $attr['EDITABLE']; + } + if (isset($attr['TITLE'])) { + $this->mpdf->selectoption['TITLE'] = $attr['TITLE']; + } + if (isset($attr['MULTIPLE'])) { + $this->mpdf->selectoption['MULTIPLE'] = $attr['MULTIPLE']; + } + if (isset($attr['SIZE']) && $attr['SIZE'] > 1) { + $this->mpdf->selectoption['SIZE'] = $attr['SIZE']; + } + if ($this->mpdf->useActiveForms) { + if (isset($attr['NAME'])) { + $this->mpdf->selectoption['NAME'] = $attr['NAME']; + } + if (isset($attr['ONCHANGE'])) { + $this->mpdf->selectoption['ONCHANGE'] = $attr['ONCHANGE']; + } + } + } + + public function close(&$ahtml, &$ihtml) + { + $this->mpdf->ignorefollowingspaces = false; + $this->mpdf->lastoptionaltag = ''; + $texto = ''; + $OTLdata = false; + if (isset($this->mpdf->selectoption['SELECTED'])) { + $texto = $this->mpdf->selectoption['SELECTED']; + } + if (isset($this->mpdf->selectoption['SELECTED-OTLDATA'])) { + $OTLdata = $this->mpdf->selectoption['SELECTED-OTLDATA']; + } + + if ($this->mpdf->useActiveForms) { + $w = $this->mpdf->selectoption['MAXWIDTH']; + } else { + $w = $this->mpdf->GetStringWidth($texto, true, $OTLdata); + } + if ($w == 0) { + $w = 5; + } + $objattr['type'] = 'select'; + $objattr['text'] = $texto; + $objattr['OTLdata'] = $OTLdata; + if (isset($this->mpdf->selectoption['NAME'])) { + $objattr['fieldname'] = $this->mpdf->selectoption['NAME']; + } + if (isset($this->mpdf->selectoption['READONLY'])) { + $objattr['readonly'] = true; + } + if (isset($this->mpdf->selectoption['REQUIRED'])) { + $objattr['required'] = true; + } + if (isset($this->mpdf->selectoption['SPELLCHECK'])) { + $objattr['spellcheck'] = true; + } + if (isset($this->mpdf->selectoption['EDITABLE'])) { + $objattr['editable'] = true; + } + if (isset($this->mpdf->selectoption['ONCHANGE'])) { + $objattr['onChange'] = $this->mpdf->selectoption['ONCHANGE']; + } + if (isset($this->mpdf->selectoption['ITEMS'])) { + $objattr['items'] = $this->mpdf->selectoption['ITEMS']; + } + if (isset($this->mpdf->selectoption['MULTIPLE'])) { + $objattr['multiple'] = $this->mpdf->selectoption['MULTIPLE']; + } + if (isset($this->mpdf->selectoption['DISABLED'])) { + $objattr['disabled'] = $this->mpdf->selectoption['DISABLED']; + } + if (isset($this->mpdf->selectoption['TITLE'])) { + $objattr['title'] = $this->mpdf->selectoption['TITLE']; + } + if (isset($this->mpdf->selectoption['COLOR'])) { + $objattr['color'] = $this->mpdf->selectoption['COLOR']; + } + if (isset($this->mpdf->selectoption['SIZE'])) { + $objattr['size'] = $this->mpdf->selectoption['SIZE']; + } + $rows = 1; + if (isset($objattr['size']) && $objattr['size'] > 1) { + $rows = $objattr['size']; + } + + $objattr['fontfamily'] = $this->mpdf->FontFamily; + $objattr['fontsize'] = $this->mpdf->FontSizePt; + + $objattr['width'] = $w + ($this->form->form_element_spacing['select']['outer']['h'] * 2) + + ($this->form->form_element_spacing['select']['inner']['h'] * 2) + ($this->mpdf->FontSize * 1.4); + + $objattr['height'] = ($this->mpdf->FontSize * $rows) + ($this->form->form_element_spacing['select']['outer']['v'] * 2) + + ($this->form->form_element_spacing['select']['inner']['v'] * 2); + + $e = "\xbb\xa4\xactype=select,objattr=" . serialize($objattr) . "\xbb\xa4\xac"; + + // Output it to buffers + if ($this->mpdf->tableLevel) { // *TABLES* + $this->mpdf->_saveCellTextBuffer($e, $this->mpdf->HREF); + $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['s'] += $objattr['width']; // *TABLES* + } // *TABLES* + else { // *TABLES* + $this->mpdf->_saveTextBuffer($e, $this->mpdf->HREF); + } // *TABLES* + + $this->mpdf->selectoption = []; + $this->mpdf->specialcontent = ''; + + if ($this->mpdf->InlineProperties['SELECT']) { + $this->mpdf->restoreInlineProperties($this->mpdf->InlineProperties['SELECT']); + } + unset($this->mpdf->InlineProperties['SELECT']); + } +} diff --git a/Mpdf/Tag/SetHtmlPageFooter.php b/Mpdf/Tag/SetHtmlPageFooter.php new file mode 100644 index 0000000..6cb5242 --- /dev/null +++ b/Mpdf/Tag/SetHtmlPageFooter.php @@ -0,0 +1,73 @@ +<?php + +namespace Mpdf\Tag; + +class SetHtmlPageFooter extends Tag +{ + + public function open($attr, &$ahtml, &$ihtml) + { + $tag = $this->getTagName(); + $this->mpdf->ignorefollowingspaces = true; + + $pname = '_default'; + if (!empty($attr['NAME'])) { + $pname = $attr['NAME']; + } elseif ($tag === 'SETPAGEHEADER' || $tag === 'SETPAGEFOOTER') { + $pname = '_nonhtmldefault'; + } // mPDF 6 + + if (!empty($attr['PAGE'])) { // O|odd|even|E|ALL|[blank] + $side = 'odd'; + if (strtoupper($attr['PAGE']) === 'O' || strtoupper($attr['PAGE']) === 'ODD') { + $side = 'odd'; + } elseif (strtoupper($attr['PAGE']) === 'E' || strtoupper($attr['PAGE']) === 'EVEN') { + $side = 'even'; + } elseif (strtoupper($attr['PAGE']) === 'ALL') { + $side = 'both'; + } + } else { + $side = 'odd'; + } + if (!empty($attr['VALUE'])) { // -1|1|on|off + $set = 1; + if ($attr['VALUE'] == '1' || strtoupper($attr['VALUE']) === 'ON') { + $set = 1; + } elseif ($attr['VALUE'] == '-1' || strtoupper($attr['VALUE']) === 'OFF') { + $set = 0; + } + } else { + $set = 1; + } + $write = 0; + if (!empty($attr['SHOW-THIS-PAGE']) && ($tag === 'SETHTMLPAGEHEADER' || $tag === 'SETPAGEHEADER')) { + $write = 1; + } + if ($side === 'odd' || $side === 'both') { + if ($set && ($tag === 'SETHTMLPAGEHEADER' || $tag === 'SETPAGEHEADER')) { + $this->mpdf->SetHTMLHeader($this->mpdf->pageHTMLheaders[$pname], 'O', $write); + } elseif ($set && ($tag === 'SETHTMLPAGEFOOTER' || $tag === 'SETPAGEFOOTER')) { + $this->mpdf->SetHTMLFooter($this->mpdf->pageHTMLfooters[$pname], 'O'); + } elseif ($tag === 'SETHTMLPAGEHEADER' || $tag === 'SETPAGEHEADER') { + $this->mpdf->SetHTMLHeader('', 'O'); + } else { + $this->mpdf->SetHTMLFooter('', 'O'); + } + } + if ($side === 'even' || $side === 'both') { + if ($set && ($tag === 'SETHTMLPAGEHEADER' || $tag === 'SETPAGEHEADER')) { + $this->mpdf->SetHTMLHeader($this->mpdf->pageHTMLheaders[$pname], 'E', $write); + } elseif ($set && ($tag === 'SETHTMLPAGEFOOTER' || $tag === 'SETPAGEFOOTER')) { + $this->mpdf->SetHTMLFooter($this->mpdf->pageHTMLfooters[$pname], 'E'); + } elseif ($tag === 'SETHTMLPAGEHEADER' || $tag === 'SETPAGEHEADER') { + $this->mpdf->SetHTMLHeader('', 'E'); + } else { + $this->mpdf->SetHTMLFooter('', 'E'); + } + } + } + + public function close(&$ahtml, &$ihtml) + { + } +} diff --git a/Mpdf/Tag/SetHtmlPageHeader.php b/Mpdf/Tag/SetHtmlPageHeader.php new file mode 100644 index 0000000..ea98783 --- /dev/null +++ b/Mpdf/Tag/SetHtmlPageHeader.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class SetHtmlPageHeader extends SetHtmlPageFooter +{ + + +} diff --git a/Mpdf/Tag/SetPageFooter.php b/Mpdf/Tag/SetPageFooter.php new file mode 100644 index 0000000..7596c80 --- /dev/null +++ b/Mpdf/Tag/SetPageFooter.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class SetPageFooter extends SetHtmlPageFooter +{ + + +} diff --git a/Mpdf/Tag/SetPageHeader.php b/Mpdf/Tag/SetPageHeader.php new file mode 100644 index 0000000..ff83dbc --- /dev/null +++ b/Mpdf/Tag/SetPageHeader.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class SetPageHeader extends SetHtmlPageFooter +{ + + +} diff --git a/Mpdf/Tag/Small.php b/Mpdf/Tag/Small.php new file mode 100644 index 0000000..686c1eb --- /dev/null +++ b/Mpdf/Tag/Small.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class Small extends InlineTag +{ + + +} diff --git a/Mpdf/Tag/Span.php b/Mpdf/Tag/Span.php new file mode 100644 index 0000000..eaa3c6a --- /dev/null +++ b/Mpdf/Tag/Span.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class Span extends InlineTag +{ + + +} diff --git a/Mpdf/Tag/Strike.php b/Mpdf/Tag/Strike.php new file mode 100644 index 0000000..65ae0f8 --- /dev/null +++ b/Mpdf/Tag/Strike.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class Strike extends InlineTag +{ + + +} diff --git a/Mpdf/Tag/Strong.php b/Mpdf/Tag/Strong.php new file mode 100644 index 0000000..5592c3d --- /dev/null +++ b/Mpdf/Tag/Strong.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class Strong extends InlineTag +{ + + +} diff --git a/Mpdf/Tag/Sub.php b/Mpdf/Tag/Sub.php new file mode 100644 index 0000000..66a99e1 --- /dev/null +++ b/Mpdf/Tag/Sub.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class Sub extends InlineTag +{ + + +} diff --git a/Mpdf/Tag/SubstituteTag.php b/Mpdf/Tag/SubstituteTag.php new file mode 100644 index 0000000..602aa51 --- /dev/null +++ b/Mpdf/Tag/SubstituteTag.php @@ -0,0 +1,18 @@ +<?php + +namespace Mpdf\Tag; + +abstract class SubstituteTag extends Tag +{ + + public function close(&$ahtml, &$ihtml) + { + $tag = $this->getTagName(); + if ($this->mpdf->InlineProperties[$tag]) { + $this->mpdf->restoreInlineProperties($this->mpdf->InlineProperties[$tag]); + } + unset($this->mpdf->InlineProperties[$tag]); + $ltag = strtolower($tag); + $this->mpdf->$ltag = false; + } +} diff --git a/Mpdf/Tag/Summary.php b/Mpdf/Tag/Summary.php new file mode 100644 index 0000000..977cc44 --- /dev/null +++ b/Mpdf/Tag/Summary.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class Summary extends BlockTag +{ + + +} diff --git a/Mpdf/Tag/Sup.php b/Mpdf/Tag/Sup.php new file mode 100644 index 0000000..9722165 --- /dev/null +++ b/Mpdf/Tag/Sup.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class Sup extends InlineTag +{ + + +} diff --git a/Mpdf/Tag/TBody.php b/Mpdf/Tag/TBody.php new file mode 100644 index 0000000..25b4c45 --- /dev/null +++ b/Mpdf/Tag/TBody.php @@ -0,0 +1,23 @@ +<?php + +namespace Mpdf\Tag; + +class TBody extends Tag +{ + + public function open($attr, &$ahtml, &$ihtml) + { + $this->mpdf->tablethead = 0; + $this->mpdf->tabletfoot = 0; + $this->mpdf->lastoptionaltag = 'TBODY'; // Save current HTML specified optional endtag + $this->cssManager->tbCSSlvl++; + $this->cssManager->MergeCSS('TABLE', 'TBODY', $attr); + } + + public function close(&$ahtml, &$ihtml) + { + $this->mpdf->lastoptionaltag = ''; + unset($this->cssManager->tablecascadeCSS[$this->cssManager->tbCSSlvl]); + $this->cssManager->tbCSSlvl--; + } +} diff --git a/Mpdf/Tag/TFoot.php b/Mpdf/Tag/TFoot.php new file mode 100644 index 0000000..d3bd8e8 --- /dev/null +++ b/Mpdf/Tag/TFoot.php @@ -0,0 +1,59 @@ +<?php + +namespace Mpdf\Tag; + +// TODO: Extend THEAD instead? + +class TFoot extends Tag +{ + + public function open($attr, &$ahtml, &$ihtml) + { + $this->mpdf->lastoptionaltag = 'TFOOT'; // Save current HTML specified optional endtag + $this->cssManager->tbCSSlvl++; + $this->mpdf->tabletfoot = 1; + $this->mpdf->tablethead = 0; + $properties = $this->cssManager->MergeCSS('TABLE', 'TFOOT', $attr); + if (isset($properties['FONT-WEIGHT'])) { + $this->mpdf->tfoot_font_weight = ''; + if (strtoupper($properties['FONT-WEIGHT']) === 'BOLD') { + $this->mpdf->tfoot_font_weight = 'B'; + } + } + + if (isset($properties['FONT-STYLE'])) { + $this->mpdf->tfoot_font_style = ''; + if (strtoupper($properties['FONT-STYLE']) === 'ITALIC') { + $this->mpdf->tfoot_font_style = 'I'; + } + } + if (isset($properties['FONT-VARIANT'])) { + $this->mpdf->tfoot_font_smCaps = ''; + if (strtoupper($properties['FONT-VARIANT']) === 'SMALL-CAPS') { + $this->mpdf->tfoot_font_smCaps = 'S'; + } + } + + if (isset($properties['VERTICAL-ALIGN'])) { + $this->mpdf->tfoot_valign_default = $properties['VERTICAL-ALIGN']; + } + if (isset($properties['TEXT-ALIGN'])) { + $this->mpdf->tfoot_textalign_default = $properties['TEXT-ALIGN']; + } + } + + public function close(&$ahtml, &$ihtml) + { + $this->mpdf->lastoptionaltag = ''; + unset($this->cssManager->tablecascadeCSS[$this->cssManager->tbCSSlvl]); + $this->cssManager->tbCSSlvl--; + $this->mpdf->tabletfoot = 0; + $this->mpdf->ResetStyles(); + $this->mpdf->tfoot_font_weight = ''; + $this->mpdf->tfoot_font_style = ''; + $this->mpdf->tfoot_font_smCaps = ''; + + $this->mpdf->tfoot_valign_default = ''; + $this->mpdf->tfoot_textalign_default = ''; + } +} diff --git a/Mpdf/Tag/THead.php b/Mpdf/Tag/THead.php new file mode 100644 index 0000000..acd8015 --- /dev/null +++ b/Mpdf/Tag/THead.php @@ -0,0 +1,58 @@ +<?php + +namespace Mpdf\Tag; + +class THead extends Tag +{ + + public function open($attr, &$ahtml, &$ihtml) + { + $this->mpdf->lastoptionaltag = 'THEAD'; // Save current HTML specified optional endtag + $this->cssManager->tbCSSlvl++; + $this->mpdf->tablethead = 1; + $this->mpdf->tabletfoot = 0; + $properties = $this->cssManager->MergeCSS('TABLE', 'THEAD', $attr); + if (isset($properties['FONT-WEIGHT'])) { + $this->mpdf->thead_font_weight = ''; + if (strtoupper($properties['FONT-WEIGHT']) === 'BOLD') { + $this->mpdf->thead_font_weight = 'B'; + } + } + + if (isset($properties['FONT-STYLE'])) { + $this->mpdf->thead_font_style = ''; + if (strtoupper($properties['FONT-STYLE']) === 'ITALIC') { + $this->mpdf->thead_font_style = 'I'; + } + } + if (isset($properties['FONT-VARIANT'])) { + $this->mpdf->thead_font_smCaps = ''; + if (strtoupper($properties['FONT-VARIANT']) === 'SMALL-CAPS') { + $this->mpdf->thead_font_smCaps = 'S'; + } + } + + if (isset($properties['VERTICAL-ALIGN'])) { + $this->mpdf->thead_valign_default = $properties['VERTICAL-ALIGN']; + } + if (isset($properties['TEXT-ALIGN'])) { + $this->mpdf->thead_textalign_default = $properties['TEXT-ALIGN']; + } + } + + public function close(&$ahtml, &$ihtml) + { + $this->mpdf->lastoptionaltag = ''; + unset($this->cssManager->tablecascadeCSS[$this->cssManager->tbCSSlvl]); + $this->cssManager->tbCSSlvl--; + $this->mpdf->tablethead = 0; + $this->mpdf->tabletheadjustfinished = true; + $this->mpdf->ResetStyles(); + $this->mpdf->thead_font_weight = ''; + $this->mpdf->thead_font_style = ''; + $this->mpdf->thead_font_smCaps = ''; + + $this->mpdf->thead_valign_default = ''; + $this->mpdf->thead_textalign_default = ''; + } +} diff --git a/Mpdf/Tag/Table.php b/Mpdf/Tag/Table.php new file mode 100644 index 0000000..8504e51 --- /dev/null +++ b/Mpdf/Tag/Table.php @@ -0,0 +1,1272 @@ +<?php + +namespace Mpdf\Tag; + +use Mpdf\Css\Border; +use Mpdf\Mpdf; + +class Table extends Tag +{ + + public function open($attr, &$ahtml, &$ihtml) + { + $this->mpdf->tdbegin = false; + $this->mpdf->lastoptionaltag = ''; + // Disable vertical justification in columns + if ($this->mpdf->ColActive) { + $this->mpdf->colvAlign = ''; + } // *COLUMNS* + if ($this->mpdf->lastblocklevelchange == 1) { + $blockstate = 1; + } // Top margins/padding only + elseif ($this->mpdf->lastblocklevelchange < 1) { + $blockstate = 0; + } // NO margins/padding + // called from block after new div e.g. <div> ... <table> ... Outputs block top margin/border and padding + if (count($this->mpdf->textbuffer) == 0 && $this->mpdf->lastblocklevelchange == 1 && !$this->mpdf->tableLevel && !$this->mpdf->kwt) { + $this->mpdf->newFlowingBlock($this->mpdf->blk[$this->mpdf->blklvl]['width'], $this->mpdf->lineheight, '', false, 1, true, $this->mpdf->blk[$this->mpdf->blklvl]['direction']); + $this->mpdf->finishFlowingBlock(true); // true = END of flowing block + } elseif (!$this->mpdf->tableLevel && count($this->mpdf->textbuffer)) { + $this->mpdf->printbuffer($this->mpdf->textbuffer, $blockstate); + } + + $this->mpdf->textbuffer = []; + $this->mpdf->lastblocklevelchange = -1; + + + + if ($this->mpdf->tableLevel) { // i.e. now a nested table coming... + // Save current level table + $this->mpdf->cell['PARENTCELL'] = $this->mpdf->saveInlineProperties(); + $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['baseProperties'] = $this->mpdf->base_table_properties; + $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['cells'] = $this->mpdf->cell; + $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['currrow'] = $this->mpdf->row; + $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['currcol'] = $this->mpdf->col; + } + $this->mpdf->tableLevel++; + $this->cssManager->tbCSSlvl++; + + if ($this->mpdf->tableLevel > 1) { // inherit table properties from cell in which nested + //$this->mpdf->base_table_properties['FONT-KERNING'] = ($this->mpdf->textvar & TextVars::FC_KERNING); // mPDF 6 + $this->mpdf->base_table_properties['LETTER-SPACING'] = $this->mpdf->lSpacingCSS; + $this->mpdf->base_table_properties['WORD-SPACING'] = $this->mpdf->wSpacingCSS; + // mPDF 6 + $direction = $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['direction']; + $txta = $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['a']; + $cellLineHeight = $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['cellLineHeight']; + $cellLineStackingStrategy = $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['cellLineStackingStrategy']; + $cellLineStackingShift = $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['cellLineStackingShift']; + } + + if (isset($this->mpdf->tbctr[$this->mpdf->tableLevel])) { + $this->mpdf->tbctr[$this->mpdf->tableLevel] ++; + } else { + $this->mpdf->tbctr[$this->mpdf->tableLevel] = 1; + } + + $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['level'] = $this->mpdf->tableLevel; + $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['levelid'] = $this->mpdf->tbctr[$this->mpdf->tableLevel]; + + if ($this->mpdf->tableLevel > $this->mpdf->innermostTableLevel) { + $this->mpdf->innermostTableLevel = $this->mpdf->tableLevel; + } + if ($this->mpdf->tableLevel > 1) { + $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['nestedpos'] = [ + $this->mpdf->row, + $this->mpdf->col, + $this->mpdf->tbctr[$this->mpdf->tableLevel - 1], + ]; + } + //++++++++++++++++++++++++++++ + + $this->mpdf->cell = []; + $this->mpdf->col = -1; //int + $this->mpdf->row = -1; //int + $table = &$this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]; + + // New table - any level + $table['direction'] = $this->mpdf->directionality; + $table['bgcolor'] = false; + $table['va'] = false; + $table['txta'] = false; + $table['topntail'] = false; + $table['thead-underline'] = false; + $table['border'] = false; + $table['border_details']['R']['w'] = 0; + $table['border_details']['L']['w'] = 0; + $table['border_details']['T']['w'] = 0; + $table['border_details']['B']['w'] = 0; + $table['border_details']['R']['style'] = ''; + $table['border_details']['L']['style'] = ''; + $table['border_details']['T']['style'] = ''; + $table['border_details']['B']['style'] = ''; + $table['max_cell_border_width']['R'] = 0; + $table['max_cell_border_width']['L'] = 0; + $table['max_cell_border_width']['T'] = 0; + $table['max_cell_border_width']['B'] = 0; + $table['padding']['L'] = false; + $table['padding']['R'] = false; + $table['padding']['T'] = false; + $table['padding']['B'] = false; + $table['margin']['L'] = false; + $table['margin']['R'] = false; + $table['margin']['T'] = false; + $table['margin']['B'] = false; + $table['a'] = false; + $table['border_spacing_H'] = false; + $table['border_spacing_V'] = false; + $table['decimal_align'] = false; + $this->mpdf->Reset(); + $this->mpdf->InlineProperties = []; + $this->mpdf->InlineBDF = []; // mPDF 6 + $this->mpdf->InlineBDFctr = 0; // mPDF 6 + $table['nc'] = $table['nr'] = 0; + $this->mpdf->tablethead = 0; + $this->mpdf->tabletfoot = 0; + $this->mpdf->tabletheadjustfinished = false; + + // mPDF 6 + if ($this->mpdf->tableLevel > 1) { // inherit table properties from cell in which nested + $table['direction'] = $direction; + $table['txta'] = $txta; + $table['cellLineHeight'] = $cellLineHeight; + $table['cellLineStackingStrategy'] = $cellLineStackingStrategy; + $table['cellLineStackingShift'] = $cellLineStackingShift; + } + + + $lastbottommargin = 0; + if ($this->mpdf->blockjustfinished && !count($this->mpdf->textbuffer) && $this->mpdf->y != $this->mpdf->tMargin && $this->mpdf->collapseBlockMargins && $this->mpdf->tableLevel == 1) { + $lastbottommargin = $this->mpdf->lastblockbottommargin; + } + $this->mpdf->lastblockbottommargin = 0; + $this->mpdf->blockjustfinished = false; + + if ($this->mpdf->tableLevel == 1) { + $table['headernrows'] = 0; + $table['footernrows'] = 0; + $this->mpdf->base_table_properties = []; + } + + // ADDED CSS FUNCIONS FOR TABLE + if ($this->cssManager->tbCSSlvl == 1) { + $properties = $this->cssManager->MergeCSS('TOPTABLE', 'TABLE', $attr); + } else { + $properties = $this->cssManager->MergeCSS('TABLE', 'TABLE', $attr); + } + + $w = ''; + if (isset($properties['WIDTH'])) { + $w = $properties['WIDTH']; + } elseif (!empty($attr['WIDTH'])) { + $w = $attr['WIDTH']; + } + + if (isset($attr['ALIGN']) && array_key_exists(strtolower($attr['ALIGN']), self::ALIGN)) { + $table['a'] = $this->getAlign($attr['ALIGN']); + } + if (!$table['a']) { + if ($table['direction'] === 'rtl') { + $table['a'] = 'R'; + } else { + $table['a'] = 'L'; + } + } + + if (!empty($properties['DIRECTION'])) { + $table['direction'] = strtolower($properties['DIRECTION']); + } elseif (!empty($attr['DIR'])) { + $table['direction'] = strtolower($attr['DIR']); + } elseif ($this->mpdf->tableLevel == 1) { + $table['direction'] = $this->mpdf->blk[$this->mpdf->blklvl]['direction']; + } + + if (isset($properties['BACKGROUND-COLOR'])) { + $table['bgcolor'][-1] = $properties['BACKGROUND-COLOR']; + } elseif (isset($properties['BACKGROUND'])) { + $table['bgcolor'][-1] = $properties['BACKGROUND']; + } elseif (isset($attr['BGCOLOR'])) { + $table['bgcolor'][-1] = $attr['BGCOLOR']; + } + + if (isset($properties['VERTICAL-ALIGN']) && array_key_exists(strtolower($properties['VERTICAL-ALIGN']), self::ALIGN)) { + $table['va'] = $this->getAlign($properties['VERTICAL-ALIGN']); + } + if (isset($properties['TEXT-ALIGN']) && array_key_exists(strtolower($properties['TEXT-ALIGN']), self::ALIGN)) { + $table['txta'] = $this->getAlign($properties['TEXT-ALIGN']); + } + + if (!empty($properties['AUTOSIZE']) && $this->mpdf->tableLevel == 1) { + $this->mpdf->shrink_this_table_to_fit = $properties['AUTOSIZE']; + if ($this->mpdf->shrink_this_table_to_fit < 1) { + $this->mpdf->shrink_this_table_to_fit = 0; + } + } + if (!empty($properties['ROTATE']) && $this->mpdf->tableLevel == 1) { + $this->mpdf->table_rotate = $properties['ROTATE']; + } + if (isset($properties['TOPNTAIL'])) { + $table['topntail'] = $properties['TOPNTAIL']; + } + if (isset($properties['THEAD-UNDERLINE'])) { + $table['thead-underline'] = $properties['THEAD-UNDERLINE']; + } + + if (isset($properties['BORDER'])) { + $bord = $this->mpdf->border_details($properties['BORDER']); + if ($bord['s']) { + $table['border'] = Border::ALL; + $table['border_details']['R'] = $bord; + $table['border_details']['L'] = $bord; + $table['border_details']['T'] = $bord; + $table['border_details']['B'] = $bord; + } + } + if (isset($properties['BORDER-RIGHT'])) { + if ($table['direction'] === 'rtl') { // *OTL* + $table['border_details']['R'] = $this->mpdf->border_details($properties['BORDER-LEFT']); // *OTL* + } // *OTL* + else { // *OTL* + $table['border_details']['R'] = $this->mpdf->border_details($properties['BORDER-RIGHT']); + } // *OTL* + $this->mpdf->setBorder($table['border'], Border::RIGHT, $table['border_details']['R']['s']); + } + if (isset($properties['BORDER-LEFT'])) { + if ($table['direction'] === 'rtl') { // *OTL* + $table['border_details']['L'] = $this->mpdf->border_details($properties['BORDER-RIGHT']); // *OTL* + } // *OTL* + else { // *OTL* + $table['border_details']['L'] = $this->mpdf->border_details($properties['BORDER-LEFT']); + } // *OTL* + $this->mpdf->setBorder($table['border'], Border::LEFT, $table['border_details']['L']['s']); + } + if (isset($properties['BORDER-BOTTOM'])) { + $table['border_details']['B'] = $this->mpdf->border_details($properties['BORDER-BOTTOM']); + $this->mpdf->setBorder($table['border'], Border::BOTTOM, $table['border_details']['B']['s']); + } + if (isset($properties['BORDER-TOP'])) { + $table['border_details']['T'] = $this->mpdf->border_details($properties['BORDER-TOP']); + $this->mpdf->setBorder($table['border'], Border::TOP, $table['border_details']['T']['s']); + } + + $this->mpdf->table_border_css_set = 0; + if ($table['border']) { + $this->mpdf->table_border_css_set = 1; + } + + // mPDF 6 + if (!empty($properties['LANG'])) { + if ($this->mpdf->autoLangToFont && !$this->mpdf->usingCoreFont) { + if ($properties['LANG'] != $this->mpdf->default_lang && $properties['LANG'] !== 'UTF-8') { + list ($coreSuitable, $mpdf_pdf_unifont) = $this->languageToFont->getLanguageOptions($properties['LANG'], $this->mpdf->useAdobeCJK); + if ($mpdf_pdf_unifont) { + $properties['FONT-FAMILY'] = $mpdf_pdf_unifont; + } + } + } + $this->mpdf->currentLang = $properties['LANG']; + } + + + if (isset($properties['FONT-FAMILY'])) { + $this->mpdf->default_font = $properties['FONT-FAMILY']; + $this->mpdf->SetFont($this->mpdf->default_font, '', 0, false); + } + $this->mpdf->base_table_properties['FONT-FAMILY'] = $this->mpdf->FontFamily; + + if (isset($properties['FONT-SIZE'])) { + if ($this->mpdf->tableLevel > 1) { + $tableFontSize = $this->sizeConverter->convert($this->mpdf->base_table_properties['FONT-SIZE']); + $mmsize = $this->sizeConverter->convert($properties['FONT-SIZE'], $tableFontSize); + } else { + $mmsize = $this->sizeConverter->convert($properties['FONT-SIZE'], $this->mpdf->default_font_size / Mpdf::SCALE); + } + if ($mmsize) { + $this->mpdf->default_font_size = $mmsize * Mpdf::SCALE; + $this->mpdf->SetFontSize($this->mpdf->default_font_size, false); + } + } + $this->mpdf->base_table_properties['FONT-SIZE'] = $this->mpdf->FontSize . 'mm'; + + if (isset($properties['FONT-WEIGHT'])) { + if (strtoupper($properties['FONT-WEIGHT']) === 'BOLD') { + $this->mpdf->base_table_properties['FONT-WEIGHT'] = 'BOLD'; + } + } + if (isset($properties['FONT-STYLE'])) { + if (strtoupper($properties['FONT-STYLE']) === 'ITALIC') { + $this->mpdf->base_table_properties['FONT-STYLE'] = 'ITALIC'; + } + } + if (isset($properties['COLOR'])) { + $this->mpdf->base_table_properties['COLOR'] = $properties['COLOR']; + } + if (isset($properties['FONT-KERNING'])) { + $this->mpdf->base_table_properties['FONT-KERNING'] = $properties['FONT-KERNING']; + } + if (isset($properties['LETTER-SPACING'])) { + $this->mpdf->base_table_properties['LETTER-SPACING'] = $properties['LETTER-SPACING']; + } + if (isset($properties['WORD-SPACING'])) { + $this->mpdf->base_table_properties['WORD-SPACING'] = $properties['WORD-SPACING']; + } + // mPDF 6 + if (isset($properties['HYPHENS'])) { + $this->mpdf->base_table_properties['HYPHENS'] = $properties['HYPHENS']; + } + if (!empty($properties['LINE-HEIGHT'])) { + $table['cellLineHeight'] = $this->mpdf->fixLineheight($properties['LINE-HEIGHT']); + } elseif ($this->mpdf->tableLevel == 1) { + $table['cellLineHeight'] = $this->mpdf->blk[$this->mpdf->blklvl]['line_height']; + } + + if (!empty($properties['LINE-STACKING-STRATEGY'])) { + $table['cellLineStackingStrategy'] = strtolower($properties['LINE-STACKING-STRATEGY']); + } elseif ($this->mpdf->tableLevel == 1 && isset($this->mpdf->blk[$this->mpdf->blklvl]['line_stacking_strategy'])) { + $table['cellLineStackingStrategy'] = $this->mpdf->blk[$this->mpdf->blklvl]['line_stacking_strategy']; + } else { + $table['cellLineStackingStrategy'] = 'inline-line-height'; + } + + if (!empty($properties['LINE-STACKING-SHIFT'])) { + $table['cellLineStackingShift'] = strtolower($properties['LINE-STACKING-SHIFT']); + } elseif ($this->mpdf->tableLevel == 1 && isset($this->mpdf->blk[$this->mpdf->blklvl]['line_stacking_shift'])) { + $table['cellLineStackingShift'] = $this->mpdf->blk[$this->mpdf->blklvl]['line_stacking_shift']; + } else { + $table['cellLineStackingShift'] = 'consider-shifts'; + } + + if (isset($properties['PADDING-LEFT'])) { + $table['padding']['L'] = $this->sizeConverter->convert($properties['PADDING-LEFT'], $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], $this->mpdf->FontSize, false); + } + if (isset($properties['PADDING-RIGHT'])) { + $table['padding']['R'] = $this->sizeConverter->convert($properties['PADDING-RIGHT'], $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], $this->mpdf->FontSize, false); + } + if (isset($properties['PADDING-TOP'])) { + $table['padding']['T'] = $this->sizeConverter->convert($properties['PADDING-TOP'], $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], $this->mpdf->FontSize, false); + } + if (isset($properties['PADDING-BOTTOM'])) { + $table['padding']['B'] = $this->sizeConverter->convert($properties['PADDING-BOTTOM'], $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], $this->mpdf->FontSize, false); + } + + if (isset($properties['MARGIN-TOP'])) { + if ($lastbottommargin) { + $tmp = $this->sizeConverter->convert($properties['MARGIN-TOP'], $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], $this->mpdf->FontSize, false); + if ($tmp > $lastbottommargin) { + $properties['MARGIN-TOP'] = (int) $properties['MARGIN-TOP'] - $lastbottommargin; + } else { + $properties['MARGIN-TOP'] = 0; + } + } + $table['margin']['T'] = $this->sizeConverter->convert($properties['MARGIN-TOP'], $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], $this->mpdf->FontSize, false); + } + + if (isset($properties['MARGIN-BOTTOM'])) { + $table['margin']['B'] = $this->sizeConverter->convert($properties['MARGIN-BOTTOM'], $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], $this->mpdf->FontSize, false); + } + if (isset($properties['MARGIN-LEFT'])) { + $table['margin']['L'] = $this->sizeConverter->convert($properties['MARGIN-LEFT'], $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], $this->mpdf->FontSize, false); + } + + if (isset($properties['MARGIN-RIGHT'])) { + $table['margin']['R'] = $this->sizeConverter->convert($properties['MARGIN-RIGHT'], $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], $this->mpdf->FontSize, false); + } + if (isset($properties['MARGIN-LEFT'], $properties['MARGIN-RIGHT']) && strtolower($properties['MARGIN-LEFT']) === 'auto' && strtolower($properties['MARGIN-RIGHT']) === 'auto') { + $table['a'] = 'C'; + } elseif (isset($properties['MARGIN-LEFT']) && strtolower($properties['MARGIN-LEFT']) === 'auto') { + $table['a'] = 'R'; + } elseif (isset($properties['MARGIN-RIGHT']) && strtolower($properties['MARGIN-RIGHT']) === 'auto') { + $table['a'] = 'L'; + } + + if (isset($properties['BORDER-COLLAPSE']) && strtoupper($properties['BORDER-COLLAPSE']) === 'SEPARATE') { + $table['borders_separate'] = true; + } else { + $table['borders_separate'] = false; + } + + // mPDF 5.7.3 + + if (isset($properties['BORDER-SPACING-H'])) { + $table['border_spacing_H'] = $this->sizeConverter->convert($properties['BORDER-SPACING-H'], $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], $this->mpdf->FontSize, false); + } + if (isset($properties['BORDER-SPACING-V'])) { + $table['border_spacing_V'] = $this->sizeConverter->convert($properties['BORDER-SPACING-V'], $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], $this->mpdf->FontSize, false); + } + // mPDF 5.7.3 + if (!$table['borders_separate']) { + $table['border_spacing_H'] = $table['border_spacing_V'] = 0; + } + + if (isset($properties['EMPTY-CELLS'])) { + $table['empty_cells'] = strtolower($properties['EMPTY-CELLS']); // 'hide' or 'show' + } else { + $table['empty_cells'] = ''; + } + + if (isset($properties['PAGE-BREAK-INSIDE']) && strtoupper($properties['PAGE-BREAK-INSIDE']) === 'AVOID' && $this->mpdf->tableLevel == 1 && !$this->mpdf->writingHTMLfooter) { + $this->mpdf->table_keep_together = true; + } elseif ($this->mpdf->tableLevel == 1) { + $this->mpdf->table_keep_together = false; + } + if (isset($properties['PAGE-BREAK-AFTER']) && $this->mpdf->tableLevel == 1) { + $table['page_break_after'] = strtoupper($properties['PAGE-BREAK-AFTER']); + } + + /* -- BACKGROUNDS -- */ + if (isset($properties['BACKGROUND-GRADIENT']) && !$this->mpdf->kwt && !$this->mpdf->ColActive) { + $table['gradient'] = $properties['BACKGROUND-GRADIENT']; + } + + if (!empty($properties['BACKGROUND-IMAGE']) && !$this->mpdf->kwt && !$this->mpdf->ColActive) { + $ret = $this->mpdf->SetBackground($properties, $this->mpdf->blk[$this->mpdf->blklvl]['inner_width']); + if ($ret) { + $table['background-image'] = $ret; + } + } + /* -- END BACKGROUNDS -- */ + + if (isset($properties['OVERFLOW'])) { + $table['overflow'] = strtolower($properties['OVERFLOW']); // 'hidden' 'wrap' or 'visible' or 'auto' + if (($this->mpdf->ColActive || $this->mpdf->tableLevel > 1) && $table['overflow'] === 'visible') { + unset($table['overflow']); + } + } + + if (isset($attr['CELLPADDING'])) { + $table['cell_padding'] = $attr['CELLPADDING']; + } else { + $table['cell_padding'] = false; + } + + if (isset($attr['BORDER']) && $attr['BORDER'] == '1') { + $this->mpdf->table_border_attr_set = 1; + $bord = $this->mpdf->border_details('#000000 1px solid'); + if ($bord['s']) { + $table['border'] = Border::ALL; + $table['border_details']['R'] = $bord; + $table['border_details']['L'] = $bord; + $table['border_details']['T'] = $bord; + $table['border_details']['B'] = $bord; + } + } else { + $this->mpdf->table_border_attr_set = 0; + } + + if ($w) { + $maxwidth = $this->mpdf->blk[$this->mpdf->blklvl]['inner_width']; + if ($table['borders_separate']) { + $tblblw = $table['margin']['L'] + $table['margin']['R'] + $table['border_details']['L']['w'] / 2 + $table['border_details']['R']['w'] / 2; + } else { + $tblblw = $table['margin']['L'] + $table['margin']['R'] + $table['max_cell_border_width']['L'] / 2 + $table['max_cell_border_width']['R'] / 2; + } + if (strpos($w, '%') && $this->mpdf->tableLevel == 1 && !$this->mpdf->ignore_table_percents) { + // % needs to be of inner box without table margins etc. + $maxwidth -= $tblblw; + $wmm = $this->sizeConverter->convert($w, $maxwidth, $this->mpdf->FontSize, false); + $table['w'] = $wmm + $tblblw; + } + if (strpos($w, '%') && $this->mpdf->tableLevel > 1 && !$this->mpdf->ignore_table_percents && $this->mpdf->keep_table_proportions) { + $table['wpercent'] = (int) $w; // makes 80% -> 80 + } + if (!strpos($w, '%') && !$this->mpdf->ignore_table_widths) { + $wmm = $this->sizeConverter->convert($w, $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], $this->mpdf->FontSize, false); + $table['w'] = $wmm + $tblblw; + } + if (!$this->mpdf->keep_table_proportions) { + if (isset($table['w']) && $table['w'] > $this->mpdf->blk[$this->mpdf->blklvl]['inner_width']) { + $table['w'] = $this->mpdf->blk[$this->mpdf->blklvl]['inner_width']; + } + } + } + + if (isset($attr['AUTOSIZE']) && $this->mpdf->tableLevel == 1) { + $this->mpdf->shrink_this_table_to_fit = $attr['AUTOSIZE']; + if ($this->mpdf->shrink_this_table_to_fit < 1) { + $this->mpdf->shrink_this_table_to_fit = 1; + } + } + if (isset($attr['ROTATE']) && $this->mpdf->tableLevel == 1) { + $this->mpdf->table_rotate = $attr['ROTATE']; + } + + //++++++++++++++++++++++++++++ + if ($this->mpdf->table_rotate) { + $this->mpdf->tbrot_Links = []; + $this->mpdf->tbrot_Annots = []; + $this->mpdf->tbrotForms = []; + $this->mpdf->tbrot_BMoutlines = []; + $this->mpdf->tbrot_toc = []; + } + + if ($this->mpdf->kwt) { + if ($this->mpdf->table_rotate) { + $this->mpdf->table_keep_together = true; + } + $this->mpdf->kwt = false; + $this->mpdf->kwt_saved = true; + } + + //++++++++++++++++++++++++++++ + $this->mpdf->plainCell_properties = []; + unset($table); + } + + public function close(&$ahtml, &$ihtml) + { + + $this->mpdf->lastoptionaltag = ''; + unset($this->cssManager->tablecascadeCSS[$this->cssManager->tbCSSlvl]); + $this->cssManager->tbCSSlvl--; + $this->mpdf->ignorefollowingspaces = true; //Eliminate exceeding left-side spaces + // mPDF 5.7.3 + // In case a colspan (on a row after first row) exceeded number of columns in table + for ($k = 0; $k < $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['nr']; $k++) { + for ($l = 0; $l < $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['nc']; $l++) { + if (!isset($this->mpdf->cell[$k][$l])) { + for ($n = $l - 1; $n >= 0; $n--) { + if (isset($this->mpdf->cell[$k][$n]) && $this->mpdf->cell[$k][$n] != 0) { + break; + } + } + $this->mpdf->cell[$k][$l] = [ + 'a' => 'C', + 'va' => 'M', + 'R' => false, + 'nowrap' => false, + 'bgcolor' => false, + 'padding' => ['L' => false, 'R' => false, 'T' => false, 'B' => false], + 'gradient' => false, + 's' => 0, + 'maxs' => 0, + 'textbuffer' => [], + 'dfs' => $this->mpdf->FontSize, + ]; + + if (!$this->mpdf->simpleTables) { + $this->mpdf->cell[$k][$l]['border'] = 0; + $this->mpdf->cell[$k][$l]['border_details']['R'] = ['s' => 0, 'w' => 0, 'c' => false, 'style' => 'none', 'dom' => 0]; + $this->mpdf->cell[$k][$l]['border_details']['L'] = ['s' => 0, 'w' => 0, 'c' => false, 'style' => 'none', 'dom' => 0]; + $this->mpdf->cell[$k][$l]['border_details']['T'] = ['s' => 0, 'w' => 0, 'c' => false, 'style' => 'none', 'dom' => 0]; + $this->mpdf->cell[$k][$l]['border_details']['B'] = ['s' => 0, 'w' => 0, 'c' => false, 'style' => 'none', 'dom' => 0]; + $this->mpdf->cell[$k][$l]['border_details']['mbw'] = ['BL' => 0, 'BR' => 0, 'RT' => 0, 'RB' => 0, 'TL' => 0, 'TR' => 0, 'LT' => 0, 'LB' => 0]; + if ($this->mpdf->packTableData) { + $this->mpdf->cell[$k][$l]['borderbin'] = $this->mpdf->_packCellBorder($this->mpdf->cell[$k][$l]); + unset($this->mpdf->cell[$k][$l]['border'], $this->mpdf->cell[$k][$l]['border_details']); + } + } + } + } + } + $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['cells'] = $this->mpdf->cell; + $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['wc'] = array_pad( + [], + $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['nc'], + ['miw' => 0, 'maw' => 0] + ); + $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['hr'] = array_pad( + [], + $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['nr'], + 0 + ); + + // Move table footer <tfoot> row to end of table + if (isset($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['is_tfoot']) + && count($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['is_tfoot'])) { + $tfrows = []; + foreach ($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['is_tfoot'] as $r => $val) { + if ($val) { + $tfrows[] = $r; + } + } + $temp = []; + $temptf = []; + foreach ($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['cells'] as $k => $row) { + if (in_array($k, $tfrows)) { + $temptf[] = $row; + } else { + $temp[] = $row; + } + } + $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['is_tfoot'] = []; + for ($i = count($temp); $i < (count($temp) + count($temptf)); $i++) { + $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['is_tfoot'][$i] = true; + } + // Update nestedpos row references + if (isset($this->mpdf->table[$this->mpdf->tableLevel + 1]) && count($this->mpdf->table[$this->mpdf->tableLevel + 1])) { + foreach ($this->mpdf->table[$this->mpdf->tableLevel + 1] as $nid => $nested) { + $this->mpdf->table[$this->mpdf->tableLevel + 1][$nid]['nestedpos'][0] -= count($temptf); + } + } + $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['cells'] = array_merge($temp, $temptf); + + // Update other arays set on row number + // [trbackground-images] [trgradients] + $temptrbgi = []; + $temptrbgg = []; + $temptrbgc = []; + if (isset($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['bgcolor'][-1])) { + $temptrbgc[-1] = $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['bgcolor'][-1]; + } + for ($k = 0; $k < $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['nr']; $k++) { + if (!in_array($k, $tfrows)) { + $temptrbgi[] = isset($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['trbackground-images'][$k]) + ? $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['trbackground-images'][$k] + : null; + $temptrbgg[] = isset($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['trgradients'][$k]) + ? $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['trgradients'][$k] + : null; + $temptrbgc[] = isset($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['bgcolor'][$k]) + ? $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['bgcolor'][$k] + : null; + } + } + for ($k = 0; $k < $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['nr']; $k++) { + if (in_array($k, $tfrows)) { + $temptrbgi[] = isset($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['trbackground-images'][$k]) + ? $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['trbackground-images'][$k] + : null; + $temptrbgg[] = isset($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['trgradients'][$k]) + ? $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['trgradients'][$k] + : null; + $temptrbgc[] = isset($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['bgcolor'][$k]) + ? $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['bgcolor'][$k] + : null; + } + } + $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['trbackground-images'] = $temptrbgi; + $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['trgradients'] = $temptrbgg; + $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['bgcolor'] = $temptrbgc; + // Should Update all other arays set on row number, but cell properties have been set so not needed + // [bgcolor] [trborder-left] [trborder-right] [trborder-top] [trborder-bottom] + } + + if ($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['direction'] === 'rtl') { + $this->mpdf->_reverseTableDir($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]); + } + + // Fix Borders ********************************************* + $this->mpdf->_fixTableBorders($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]); + + if ($this->mpdf->ColActive) { + $this->mpdf->table_rotate = 0; + } // *COLUMNS* + if ($this->mpdf->table_rotate <> 0) { + $this->mpdf->tablebuffer = ''; + // Max width for rotated table + $this->mpdf->tbrot_maxw = $this->mpdf->h - ($this->mpdf->y + $this->mpdf->bMargin + 1); + $this->mpdf->tbrot_maxh = $this->mpdf->blk[$this->mpdf->blklvl]['inner_width']; // Max width for rotated table + $this->mpdf->tbrot_align = $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['a']; + } + $this->mpdf->shrin_k = 1; + + if ($this->mpdf->shrink_tables_to_fit < 1) { + $this->mpdf->shrink_tables_to_fit = 1; + } + if (!$this->mpdf->shrink_this_table_to_fit) { + $this->mpdf->shrink_this_table_to_fit = $this->mpdf->shrink_tables_to_fit; + } + + if ($this->mpdf->tableLevel > 1) { + // deal with nested table + + $this->mpdf->_tableColumnWidth($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]], true); + + $tmiw = $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['miw']; + $tmaw = $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['maw']; + $tl = $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['tl']; + + // Go down to lower table level + $this->mpdf->tableLevel--; + + // Reset lower level table + $this->mpdf->base_table_properties = $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['baseProperties']; + // mPDF 5.7.3 + $this->mpdf->default_font = $this->mpdf->base_table_properties['FONT-FAMILY']; + $this->mpdf->SetFont($this->mpdf->default_font, '', 0, false); + $this->mpdf->default_font_size = $this->sizeConverter->convert($this->mpdf->base_table_properties['FONT-SIZE']) * Mpdf::SCALE; + $this->mpdf->SetFontSize($this->mpdf->default_font_size, false); + + $this->mpdf->cell = $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['cells']; + if (isset($this->mpdf->cell['PARENTCELL'])) { + if ($this->mpdf->cell['PARENTCELL']) { + $this->mpdf->restoreInlineProperties($this->mpdf->cell['PARENTCELL']); + } + unset($this->mpdf->cell['PARENTCELL']); + } + $this->mpdf->row = $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['currrow']; + $this->mpdf->col = $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['currcol']; + $objattr = []; + $objattr['type'] = 'nestedtable'; + $objattr['nestedcontent'] = $this->mpdf->tbctr[$this->mpdf->tableLevel + 1]; + $objattr['table'] = $this->mpdf->tbctr[$this->mpdf->tableLevel]; + $objattr['row'] = $this->mpdf->row; + $objattr['col'] = $this->mpdf->col; + $objattr['level'] = $this->mpdf->tableLevel; + $e = "\xbb\xa4\xactype=nestedtable,objattr=" . serialize($objattr) . "\xbb\xa4\xac"; + $this->mpdf->_saveCellTextBuffer($e); + $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['s'] += $tl; + if (!isset($this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['maxs'])) { + $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['maxs'] = $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['s']; + } elseif ($this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['maxs'] < $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['s']) { + $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['maxs'] = $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['s']; + } + $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['s'] = 0; // reset + if ((isset($this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['nestedmaw']) && $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['nestedmaw'] < $tmaw) + || !isset($this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['nestedmaw'])) { + $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['nestedmaw'] = $tmaw; + } + if ((isset($this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['nestedmiw']) && $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['nestedmiw'] < $tmiw) + || !isset($this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['nestedmiw'])) { + $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['nestedmiw'] = $tmiw; + } + $this->mpdf->tdbegin = true; + $this->mpdf->nestedtablejustfinished = true; + $this->mpdf->ignorefollowingspaces = true; + return; + } + $this->mpdf->cMarginL = 0; + $this->mpdf->cMarginR = 0; + $this->mpdf->cMarginT = 0; + $this->mpdf->cMarginB = 0; + $this->mpdf->cellPaddingL = 0; + $this->mpdf->cellPaddingR = 0; + $this->mpdf->cellPaddingT = 0; + $this->mpdf->cellPaddingB = 0; + + if (isset($this->mpdf->table[1][1]['overflow']) && $this->mpdf->table[1][1]['overflow'] === 'visible') { + if ($this->mpdf->kwt || $this->mpdf->table_rotate || $this->mpdf->table_keep_together || $this->mpdf->ColActive) { + $this->mpdf->kwt = false; + $this->mpdf->table_rotate = 0; + $this->mpdf->table_keep_together = false; + //throw new \Mpdf\MpdfException("mPDF Warning: You cannot use CSS overflow:visible together with any of these functions: + // 'Keep-with-table', rotated tables, page-break-inside:avoid, or columns"); + } + $this->mpdf->_tableColumnWidth($this->mpdf->table[1][1], true); + $this->mpdf->_tableWidth($this->mpdf->table[1][1]); + } else { + if (!$this->mpdf->kwt_saved) { + $this->mpdf->kwt_height = 0; + } + + list($check, $tablemiw) = $this->mpdf->_tableColumnWidth($this->mpdf->table[1][1], true); + $save_table = $this->mpdf->table; + $reset_to_minimum_width = false; + $added_page = false; + + if ($check > 1) { + if ($check > $this->mpdf->shrink_this_table_to_fit && $this->mpdf->table_rotate) { + if ($this->mpdf->y != $this->mpdf->tMargin) { + $this->mpdf->AddPage($this->mpdf->CurOrientation); + $this->mpdf->kwt_moved = true; + } + $added_page = true; + $this->mpdf->tbrot_maxw = $this->mpdf->h - ($this->mpdf->y + $this->mpdf->bMargin + 5) - $this->mpdf->kwt_height; + //$check = $tablemiw/$this->mpdf->tbrot_maxw; // undo any shrink + $check = 1; // undo any shrink + } + $reset_to_minimum_width = true; + } + + if ($reset_to_minimum_width) { + $this->mpdf->shrin_k = $check; + + $this->mpdf->default_font_size /= $this->mpdf->shrin_k; + $this->mpdf->SetFontSize($this->mpdf->default_font_size, false); + + $this->mpdf->shrinkTable($this->mpdf->table[1][1], $this->mpdf->shrin_k); + + $this->mpdf->_tableColumnWidth($this->mpdf->table[1][1]); // repeat + // Starting at $this->mpdf->innermostTableLevel + // Shrink table values - and redo columnWidth + for ($lvl = 2; $lvl <= $this->mpdf->innermostTableLevel; $lvl++) { + for ($nid = 1; $nid <= $this->mpdf->tbctr[$lvl]; $nid++) { + $this->mpdf->shrinkTable($this->mpdf->table[$lvl][$nid], $this->mpdf->shrin_k); + $this->mpdf->_tableColumnWidth($this->mpdf->table[$lvl][$nid]); + } + } + } + + // Set table cell widths for top level table + // Use $shrin_k to resize but don't change again + $this->mpdf->SetLineHeight('', $this->mpdf->table[1][1]['cellLineHeight']); + + // Top level table + $this->mpdf->_tableWidth($this->mpdf->table[1][1]); + } + + // Now work through any nested tables setting child table[w'] = parent cell['w'] + // Now do nested tables _tableWidth + for ($lvl = 2; $lvl <= $this->mpdf->innermostTableLevel; $lvl++) { + for ($nid = 1; $nid <= $this->mpdf->tbctr[$lvl]; $nid++) { + // HERE set child table width = cell width + + list($parentrow, $parentcol, $parentnid) = $this->mpdf->table[$lvl][$nid]['nestedpos']; + + $c = & $this->mpdf->table[$lvl - 1][$parentnid]['cells'][$parentrow][$parentcol]; + + if (isset($c['colspan']) && $c['colspan'] > 1) { + $parentwidth = 0; + for ($cs = 0; $cs < $c['colspan']; $cs++) { + $parentwidth += $this->mpdf->table[$lvl - 1][$parentnid]['wc'][$parentcol + $cs]; + } + } else { + $parentwidth = $this->mpdf->table[$lvl - 1][$parentnid]['wc'][$parentcol]; + } + + //$parentwidth -= ALLOW FOR PADDING ETC. in parent cell + if (!$this->mpdf->simpleTables) { + if ($this->mpdf->packTableData) { + list($bt, $br, $bb, $bl) = $this->mpdf->_getBorderWidths($c['borderbin']); + } else { + $br = $c['border_details']['R']['w']; + $bl = $c['border_details']['L']['w']; + } + if ($this->mpdf->table[$lvl - 1][$parentnid]['borders_separate']) { + $parentwidth -= $br + $bl + $c['padding']['L'] + $c['padding']['R'] + $this->mpdf->table[$lvl - 1][$parentnid]['border_spacing_H']; + } else { + $parentwidth -= $br / 2 + $bl / 2 + $c['padding']['L'] + $c['padding']['R']; + } + } elseif ($this->mpdf->simpleTables) { + if ($this->mpdf->table[$lvl - 1][$parentnid]['borders_separate']) { + $parentwidth -= $this->mpdf->table[$lvl - 1][$parentnid]['simple']['border_details']['L']['w'] + + $this->mpdf->table[$lvl - 1][$parentnid]['simple']['border_details']['R']['w'] + $c['padding']['L'] + + $c['padding']['R'] + $this->mpdf->table[$lvl - 1][$parentnid]['border_spacing_H']; + } else { + $parentwidth -= $this->mpdf->table[$lvl - 1][$parentnid]['simple']['border_details']['L']['w'] / 2 + + $this->mpdf->table[$lvl - 1][$parentnid]['simple']['border_details']['R']['w'] / 2 + $c['padding']['L'] + $c['padding']['R']; + } + } + if (!empty($this->mpdf->table[$lvl][$nid]['wpercent']) && $lvl > 1) { + $this->mpdf->table[$lvl][$nid]['w'] = $parentwidth; + } elseif ($parentwidth > $this->mpdf->table[$lvl][$nid]['maw']) { + $this->mpdf->table[$lvl][$nid]['w'] = $this->mpdf->table[$lvl][$nid]['maw']; + } else { + $this->mpdf->table[$lvl][$nid]['w'] = $parentwidth; + } + unset($c); + $this->mpdf->_tableWidth($this->mpdf->table[$lvl][$nid]); + } + } + + // Starting at $this->mpdf->innermostTableLevel + // Cascade back up nested tables: setting heights back up the tree + for ($lvl = $this->mpdf->innermostTableLevel; $lvl > 0; $lvl--) { + for ($nid = 1; $nid <= $this->mpdf->tbctr[$lvl]; $nid++) { + list($tableheight, $maxrowheight, $fullpage, $remainingpage, $maxfirstrowheight) = $this->mpdf->_tableHeight($this->mpdf->table[$lvl][$nid]); + } + } + + if ($this->mpdf->table[1][1]['overflow'] === 'visible') { + if ($maxrowheight > $fullpage) { + throw new \Mpdf\MpdfException('mPDF Warning: A Table row is greater than available height. You cannot use CSS overflow:visible'); + } + if ($maxfirstrowheight > $remainingpage) { + $this->mpdf->AddPage($this->mpdf->CurOrientation); + } + $r = 0; + $c = 0; + $p = 0; + $y = 0; + $finished = false; + while (!$finished) { + list($finished, $r, $c, $p, $y, $y0) = $this->mpdf->_tableWrite($this->mpdf->table[1][1], true, $r, $c, $p, $y); + if (!$finished) { + $this->mpdf->AddPage($this->mpdf->CurOrientation); + // If printed something on first spread, set same y + if ($r == 0 && $y0 > -1) { + $this->mpdf->y = $y0; + } + } + } + } else { + $recalculate = 1; + $forcerecalc = false; + // RESIZING ALGORITHM + if ($maxrowheight > $fullpage) { + $recalculate = $this->tbsqrt($maxrowheight / $fullpage, 1); + $forcerecalc = true; + } elseif ($this->mpdf->table_rotate) { // NB $remainingpage == $fullpage == the width of the page + if ($tableheight > $remainingpage) { + // If can fit on remainder of page whilst respecting autsize value.. + if (($this->mpdf->shrin_k * $this->tbsqrt($tableheight / $remainingpage, 1)) <= $this->mpdf->shrink_this_table_to_fit) { + $recalculate = $this->tbsqrt($tableheight / $remainingpage, 1); + } elseif (!$added_page) { + if ($this->mpdf->y != $this->mpdf->tMargin) { + $this->mpdf->AddPage($this->mpdf->CurOrientation); + $this->mpdf->kwt_moved = true; + } + $added_page = true; + $this->mpdf->tbrot_maxw = $this->mpdf->h - ($this->mpdf->y + $this->mpdf->bMargin + 5) - $this->mpdf->kwt_height; + // 0.001 to force it to recalculate + $recalculate = (1 / $this->mpdf->shrin_k) + 0.001; // undo any shrink + } + } else { + $recalculate = 1; + } + } elseif ($this->mpdf->table_keep_together || ($this->mpdf->table[1][1]['nr'] == 1 && !$this->mpdf->writingHTMLfooter)) { + if ($tableheight > $fullpage) { + if (($this->mpdf->shrin_k * $this->tbsqrt($tableheight / $fullpage, 1)) <= $this->mpdf->shrink_this_table_to_fit) { + $recalculate = $this->tbsqrt($tableheight / $fullpage, 1); + } elseif ($this->mpdf->tableMinSizePriority) { + $this->mpdf->table_keep_together = false; + $recalculate = 1.001; + } else { + if ($this->mpdf->y != $this->mpdf->tMargin) { + $this->mpdf->AddPage($this->mpdf->CurOrientation); + $this->mpdf->kwt_moved = true; + } + $added_page = true; + $this->mpdf->tbrot_maxw = $this->mpdf->h - ($this->mpdf->y + $this->mpdf->bMargin + 5) - $this->mpdf->kwt_height; + $recalculate = $this->tbsqrt($tableheight / $fullpage, 1); + } + } elseif ($tableheight > $remainingpage) { + // If can fit on remainder of page whilst respecting autsize value.. + if (($this->mpdf->shrin_k * $this->tbsqrt($tableheight / $remainingpage, 1)) <= $this->mpdf->shrink_this_table_to_fit) { + $recalculate = $this->tbsqrt($tableheight / $remainingpage, 1); + } else { + if ($this->mpdf->y != $this->mpdf->tMargin) { + // mPDF 6 + if ($this->mpdf->AcceptPageBreak()) { + $this->mpdf->AddPage($this->mpdf->CurOrientation); + } elseif ($this->mpdf->ColActive && $tableheight > (($this->mpdf->h - $this->mpdf->bMargin) - $this->mpdf->y0)) { + $this->mpdf->AddPage($this->mpdf->CurOrientation); + } + $this->mpdf->kwt_moved = true; + } + $added_page = true; + $this->mpdf->tbrot_maxw = $this->mpdf->h - ($this->mpdf->y + $this->mpdf->bMargin + 5) - $this->mpdf->kwt_height; + $recalculate = 1.001; + } + } else { + $recalculate = 1; + } + } else { + $recalculate = 1; + } + + if ($recalculate > $this->mpdf->shrink_this_table_to_fit && !$forcerecalc) { + $recalculate = $this->mpdf->shrink_this_table_to_fit; + } + + $iteration = 1; + + // RECALCULATE + while ($recalculate <> 1) { + $this->mpdf->shrin_k1 = $recalculate; + $this->mpdf->shrin_k *= $recalculate; + $this->mpdf->default_font_size /= $this->mpdf->shrin_k1; + $this->mpdf->SetFontSize($this->mpdf->default_font_size, false); + $this->mpdf->SetLineHeight('', $this->mpdf->table[1][1]['cellLineHeight']); + $this->mpdf->table = $save_table; + if ($this->mpdf->shrin_k <> 1) { + $this->mpdf->shrinkTable($this->mpdf->table[1][1], $this->mpdf->shrin_k); + } + $this->mpdf->_tableColumnWidth($this->mpdf->table[1][1]); // repeat + // Starting at $this->mpdf->innermostTableLevel + // Shrink table values - and redo columnWidth + for ($lvl = 2; $lvl <= $this->mpdf->innermostTableLevel; $lvl++) { + for ($nid = 1; $nid <= $this->mpdf->tbctr[$lvl]; $nid++) { + if ($this->mpdf->shrin_k <> 1) { + $this->mpdf->shrinkTable($this->mpdf->table[$lvl][$nid], $this->mpdf->shrin_k); + } + $this->mpdf->_tableColumnWidth($this->mpdf->table[$lvl][$nid]); + } + } + // Set table cell widths for top level table + // Top level table + $this->mpdf->_tableWidth($this->mpdf->table[1][1]); + + // Now work through any nested tables setting child table[w'] = parent cell['w'] + // Now do nested tables _tableWidth + for ($lvl = 2; $lvl <= $this->mpdf->innermostTableLevel; $lvl++) { + for ($nid = 1; $nid <= $this->mpdf->tbctr[$lvl]; $nid++) { + // HERE set child table width = cell width + + list($parentrow, $parentcol, $parentnid) = $this->mpdf->table[$lvl][$nid]['nestedpos']; + $c = & $this->mpdf->table[$lvl - 1][$parentnid]['cells'][$parentrow][$parentcol]; + + if (isset($c['colspan']) && $c['colspan'] > 1) { + $parentwidth = 0; + for ($cs = 0; $cs < $c['colspan']; $cs++) { + $parentwidth += $this->mpdf->table[$lvl - 1][$parentnid]['wc'][$parentcol + $cs]; + } + } else { + $parentwidth = $this->mpdf->table[$lvl - 1][$parentnid]['wc'][$parentcol]; + } + + //$parentwidth -= ALLOW FOR PADDING ETC.in parent cell + if (!$this->mpdf->simpleTables) { + if ($this->mpdf->packTableData) { + list($bt, $br, $bb, $bl) = $this->mpdf->_getBorderWidths($c['borderbin']); + } else { + $br = $c['border_details']['R']['w']; + $bl = $c['border_details']['L']['w']; + } + if ($this->mpdf->table[$lvl - 1][$parentnid]['borders_separate']) { + $parentwidth -= $br + $bl + $c['padding']['L'] + $c['padding']['R'] + $this->mpdf->table[$lvl - 1][$parentnid]['border_spacing_H']; + } else { + $parentwidth -= $br / 2 + $bl / 2 + $c['padding']['L'] + $c['padding']['R']; + } + } elseif ($this->mpdf->simpleTables) { + if ($this->mpdf->table[$lvl - 1][$parentnid]['borders_separate']) { + $parentwidth -= $this->mpdf->table[$lvl - 1][$parentnid]['simple']['border_details']['L']['w'] + + $this->mpdf->table[$lvl - 1][$parentnid]['simple']['border_details']['R']['w'] + $c['padding']['L'] + $c['padding']['R'] + + $this->mpdf->table[$lvl - 1][$parentnid]['border_spacing_H']; + } else { + $parentwidth -= ($this->mpdf->table[$lvl - 1][$parentnid]['simple']['border_details']['L']['w'] + + $this->mpdf->table[$lvl - 1][$parentnid]['simple']['border_details']['R']['w']) / 2 + $c['padding']['L'] + $c['padding']['R']; + } + } + if (!empty($this->mpdf->table[$lvl][$nid]['wpercent']) && $lvl > 1) { + $this->mpdf->table[$lvl][$nid]['w'] = $parentwidth; + } elseif ($parentwidth > $this->mpdf->table[$lvl][$nid]['maw']) { + $this->mpdf->table[$lvl][$nid]['w'] = $this->mpdf->table[$lvl][$nid]['maw']; + } else { + $this->mpdf->table[$lvl][$nid]['w'] = $parentwidth; + } + unset($c); + $this->mpdf->_tableWidth($this->mpdf->table[$lvl][$nid]); + } + } + + // Starting at $this->mpdf->innermostTableLevel + // Cascade back up nested tables: setting heights back up the tree + for ($lvl = $this->mpdf->innermostTableLevel; $lvl > 0; $lvl--) { + for ($nid = 1; $nid <= $this->mpdf->tbctr[$lvl]; $nid++) { + list($tableheight, $maxrowheight, $fullpage, $remainingpage, $maxfirstrowheight) = $this->mpdf->_tableHeight($this->mpdf->table[$lvl][$nid]); + } + } + + // RESIZING ALGORITHM + + if ($maxrowheight > $fullpage) { + $recalculate = $this->tbsqrt($maxrowheight / $fullpage, $iteration); + $iteration++; + } elseif ($this->mpdf->table_rotate && $tableheight > $remainingpage && !$added_page) { + // If can fit on remainder of page whilst respecting autosize value.. + if (($this->mpdf->shrin_k * $this->tbsqrt($tableheight / $remainingpage, $iteration)) <= $this->mpdf->shrink_this_table_to_fit) { + $recalculate = $this->tbsqrt($tableheight / $remainingpage, $iteration); + $iteration++; + } else { + if (!$added_page) { + $this->mpdf->AddPage($this->mpdf->CurOrientation); + $added_page = true; + $this->mpdf->kwt_moved = true; + $this->mpdf->tbrot_maxw = $this->mpdf->h - ($this->mpdf->y + $this->mpdf->bMargin + 5) - $this->mpdf->kwt_height; + } + // 0.001 to force it to recalculate + $recalculate = (1 / $this->mpdf->shrin_k) + 0.001; // undo any shrink + } + } elseif ($this->mpdf->table_keep_together || ($this->mpdf->table[1][1]['nr'] == 1 && !$this->mpdf->writingHTMLfooter)) { + if ($tableheight > $fullpage) { + if (($this->mpdf->shrin_k * $this->tbsqrt($tableheight / $fullpage, $iteration)) <= $this->mpdf->shrink_this_table_to_fit) { + $recalculate = $this->tbsqrt($tableheight / $fullpage, $iteration); + $iteration++; + } elseif ($this->mpdf->tableMinSizePriority) { + $this->mpdf->table_keep_together = false; + $recalculate = (1 / $this->mpdf->shrin_k) + 0.001; + } else { + if (!$added_page && $this->mpdf->y != $this->mpdf->tMargin) { + $this->mpdf->AddPage($this->mpdf->CurOrientation); + $added_page = true; + $this->mpdf->kwt_moved = true; + $this->mpdf->tbrot_maxw = $this->mpdf->h - ($this->mpdf->y + $this->mpdf->bMargin + 5) - $this->mpdf->kwt_height; + } + $recalculate = $this->tbsqrt($tableheight / $fullpage, $iteration); + $iteration++; + } + } elseif ($tableheight > $remainingpage) { + // If can fit on remainder of page whilst respecting autosize value.. + if (($this->mpdf->shrin_k * $this->tbsqrt($tableheight / $remainingpage, $iteration)) <= $this->mpdf->shrink_this_table_to_fit) { + $recalculate = $this->tbsqrt($tableheight / $remainingpage, $iteration); + $iteration++; + } else { + if (!$added_page) { + // mPDF 6 + if ($this->mpdf->AcceptPageBreak()) { + $this->mpdf->AddPage($this->mpdf->CurOrientation); + } elseif ($this->mpdf->ColActive && $tableheight > (($this->mpdf->h - $this->mpdf->bMargin) - $this->mpdf->y0)) { + $this->mpdf->AddPage($this->mpdf->CurOrientation); + } + $added_page = true; + $this->mpdf->kwt_moved = true; + $this->mpdf->tbrot_maxw = $this->mpdf->h - ($this->mpdf->y + $this->mpdf->bMargin + 5) - $this->mpdf->kwt_height; + } + + //$recalculate = $this->tbsqrt($tableheight / $fullpage, $iteration); $iteration++; + $recalculate = (1 / $this->mpdf->shrin_k) + 0.001; // undo any shrink + } + } else { + $recalculate = 1; + } + } else { + $recalculate = 1; + } + } + + if ($maxfirstrowheight > $remainingpage && !$added_page && !$this->mpdf->table_rotate && !$this->mpdf->ColActive + && !$this->mpdf->table_keep_together && !$this->mpdf->writingHTMLheader && !$this->mpdf->writingHTMLfooter) { + $this->mpdf->AddPage($this->mpdf->CurOrientation); + $this->mpdf->kwt_moved = true; + } + + // keep-with-table: if page has advanced, print out buffer now, else done in fn. _Tablewrite() + if ($this->mpdf->kwt_saved && $this->mpdf->kwt_moved) { + $this->mpdf->printkwtbuffer(); + $this->mpdf->kwt_moved = false; + $this->mpdf->kwt_saved = false; + } + + // Recursively writes all tables starting at top level + $this->mpdf->_tableWrite($this->mpdf->table[1][1]); + + if ($this->mpdf->table_rotate && $this->mpdf->tablebuffer) { + $this->mpdf->PageBreakTrigger = $this->mpdf->h - $this->mpdf->bMargin; + $save_tr = $this->mpdf->table_rotate; + $save_y = $this->mpdf->y; + $this->mpdf->table_rotate = 0; + $this->mpdf->y = $this->mpdf->tbrot_y0; + $h = $this->mpdf->tbrot_w; + $this->mpdf->DivLn($h, $this->mpdf->blklvl); + + $this->mpdf->table_rotate = $save_tr; + $this->mpdf->y = $save_y; + + $this->mpdf->printtablebuffer(); + } + $this->mpdf->table_rotate = 0; + } + + + $this->mpdf->x = $this->mpdf->lMargin + $this->mpdf->blk[$this->mpdf->blklvl]['outer_left_margin']; + + $this->mpdf->maxPosR = max($this->mpdf->maxPosR, $this->mpdf->x + $this->mpdf->table[1][1]['w']); + + $this->mpdf->blockjustfinished = true; + $this->mpdf->lastblockbottommargin = $this->mpdf->table[1][1]['margin']['B']; + //Reset values + + $page_break_after = ''; + if (isset($this->mpdf->table[1][1]['page_break_after'])) { + $page_break_after = $this->mpdf->table[1][1]['page_break_after']; + } + + // Keep-with-table + $this->mpdf->kwt = false; + $this->mpdf->kwt_y0 = 0; + $this->mpdf->kwt_x0 = 0; + $this->mpdf->kwt_height = 0; + $this->mpdf->kwt_buffer = []; + $this->mpdf->kwt_Links = []; + $this->mpdf->kwt_Annots = []; + $this->mpdf->kwt_moved = false; + $this->mpdf->kwt_saved = false; + + $this->mpdf->kwt_Reference = []; + $this->mpdf->kwt_BMoutlines = []; + $this->mpdf->kwt_toc = []; + + $this->mpdf->shrin_k = 1; + $this->mpdf->shrink_this_table_to_fit = 0; + + $this->mpdf->table = []; //array + $this->mpdf->tableLevel = 0; + $this->mpdf->tbctr = []; + $this->mpdf->innermostTableLevel = 0; + $this->cssManager->tbCSSlvl = 0; + $this->cssManager->tablecascadeCSS = []; + + $this->mpdf->cell = []; //array + + $this->mpdf->col = -1; //int + $this->mpdf->row = -1; //int + + $this->mpdf->Reset(); + + $this->mpdf->cellPaddingL = 0; + $this->mpdf->cellPaddingT = 0; + $this->mpdf->cellPaddingR = 0; + $this->mpdf->cellPaddingB = 0; + $this->mpdf->cMarginL = 0; + $this->mpdf->cMarginT = 0; + $this->mpdf->cMarginR = 0; + $this->mpdf->cMarginB = 0; + $this->mpdf->default_font_size = $this->mpdf->original_default_font_size; + $this->mpdf->default_font = $this->mpdf->original_default_font; + $this->mpdf->SetFontSize($this->mpdf->default_font_size, false); + $this->mpdf->SetFont($this->mpdf->default_font, '', 0, false); + $this->mpdf->SetLineHeight(); + + if (isset($this->mpdf->blk[$this->mpdf->blklvl]['InlineProperties'])) { + $this->mpdf->restoreInlineProperties($this->mpdf->blk[$this->mpdf->blklvl]['InlineProperties']); + } + + if ($page_break_after) { + $save_blklvl = $this->mpdf->blklvl; + $save_blk = $this->mpdf->blk; + $save_silp = $this->mpdf->saveInlineProperties(); + $save_ilp = $this->mpdf->InlineProperties; + $save_bflp = $this->mpdf->InlineBDF; + $save_bflpc = $this->mpdf->InlineBDFctr; // mPDF 6 + // mPDF 6 pagebreaktype + $startpage = $this->mpdf->page; + $pagebreaktype = $this->mpdf->defaultPagebreakType; + if ($this->mpdf->ColActive) { + $pagebreaktype = 'cloneall'; + } + + // mPDF 6 pagebreaktype + $this->mpdf->_preForcedPagebreak($pagebreaktype); + + if ($page_break_after === 'RIGHT') { + $this->mpdf->AddPage($this->mpdf->CurOrientation, 'NEXT-ODD'); + } elseif ($page_break_after === 'LEFT') { + $this->mpdf->AddPage($this->mpdf->CurOrientation, 'NEXT-EVEN'); + } else { + $this->mpdf->AddPage($this->mpdf->CurOrientation); + } + + // mPDF 6 pagebreaktype + $this->mpdf->_postForcedPagebreak($pagebreaktype, $startpage, $save_blk, $save_blklvl); + + $this->mpdf->InlineProperties = $save_ilp; + $this->mpdf->InlineBDF = $save_bflp; + $this->mpdf->InlineBDFctr = $save_bflpc; // mPDF 6 + $this->mpdf->restoreInlineProperties($save_silp); + } + } + + /** + * This function determines the shrink factor when resizing tables + * val is the table_height / page_height_available + * returns a scaling factor used as $shrin_k to resize the table + * Overcompensating will be quicker but may unnecessarily shrink table too much + * Undercompensating means it will reiterate more times (taking more processing time) + */ + private function tbsqrt($val, $iteration = 3) + { + // Alters number of iterations until it returns $val itself - Must be > 2 + $k = 4; + + // Probably best guess and most accurate + if ($iteration === 1) { + return sqrt($val); + } + + // Faster than using sqrt (because it won't undercompensate), and gives reasonable results + // return 1 + (($val - 1) / 2); + $x = 2 - (($iteration - 2) / ($k - 2)); + + if ($x === 0) { + $ret = $val + 0.00001; + } elseif ($x < 0) { + $ret = 1 + ( pow(2, ($iteration - 2 - $k)) / 1000 ); + } else { + $ret = 1 + (($val - 1) / $x); + } + + return $ret; + } + +} diff --git a/Mpdf/Tag/Tag.php b/Mpdf/Tag/Tag.php new file mode 100644 index 0000000..094b2a4 --- /dev/null +++ b/Mpdf/Tag/Tag.php @@ -0,0 +1,127 @@ +<?php + +namespace Mpdf\Tag; + +use Mpdf\Strict; + +use Mpdf\Cache; +use Mpdf\Color\ColorConverter; +use Mpdf\CssManager; +use Mpdf\Form; +use Mpdf\Image\ImageProcessor; +use Mpdf\Language\LanguageToFontInterface; +use Mpdf\Mpdf; +use Mpdf\Otl; +use Mpdf\SizeConverter; +use Mpdf\TableOfContents; + +abstract class Tag +{ + + use Strict; + + /** + * @var \Mpdf\Mpdf + */ + protected $mpdf; + + /** + * @var \Mpdf\Cache + */ + protected $cache; + + /** + * @var \Mpdf\CssManager + */ + protected $cssManager; + + /** + * @var \Mpdf\Form + */ + protected $form; + + /** + * @var \Mpdf\Otl + */ + protected $otl; + + /** + * @var \Mpdf\TableOfContents + */ + protected $tableOfContents; + + /** + * @var \Mpdf\SizeConverter + */ + protected $sizeConverter; + + /** + * @var \Mpdf\Color\ColorConverter + */ + protected $colorConverter; + + /** + * @var \Mpdf\Image\ImageProcessor + */ + protected $imageProcessor; + + /** + * @var \Mpdf\Language\LanguageToFontInterface + */ + protected $languageToFont; + + const ALIGN = [ + 'left' => 'L', + 'center' => 'C', + 'right' => 'R', + 'top' => 'T', + 'text-top' => 'TT', + 'middle' => 'M', + 'baseline' => 'BS', + 'bottom' => 'B', + 'text-bottom' => 'TB', + 'justify' => 'J' + ]; + + public function __construct( + Mpdf $mpdf, + Cache $cache, + CssManager $cssManager, + Form $form, + Otl $otl, + TableOfContents $tableOfContents, + SizeConverter $sizeConverter, + ColorConverter $colorConverter, + ImageProcessor $imageProcessor, + LanguageToFontInterface $languageToFont + ) { + + $this->mpdf = $mpdf; + $this->cache = $cache; + $this->cssManager = $cssManager; + $this->form = $form; + $this->otl = $otl; + $this->tableOfContents = $tableOfContents; + $this->sizeConverter = $sizeConverter; + $this->colorConverter = $colorConverter; + $this->imageProcessor = $imageProcessor; + $this->languageToFont = $languageToFont; + } + + public function getTagName() + { + $tag = get_class($this); + return strtoupper(str_replace('Mpdf\Tag\\', '', $tag)); + } + + protected function getAlign($property) + { + $property = strtolower($property); + return array_key_exists($property, self::ALIGN) ? self::ALIGN[$property] : ''; + } + + abstract public function open($attr, &$ahtml, &$ihtml); + + abstract public function close(&$ahtml, &$ihtml); + +} diff --git a/Mpdf/Tag/Td.php b/Mpdf/Tag/Td.php new file mode 100644 index 0000000..47fb978 --- /dev/null +++ b/Mpdf/Tag/Td.php @@ -0,0 +1,473 @@ +<?php + +namespace Mpdf\Tag; + +use Mpdf\Css\Border; +use Mpdf\Css\TextVars; +use Mpdf\Utils\UtfString; + +class Td extends Tag +{ + + public function open($attr, &$ahtml, &$ihtml) + { + $tag = $this->getTagName(); + + $this->mpdf->ignorefollowingspaces = true; + $this->mpdf->lastoptionaltag = $tag; // Save current HTML specified optional endtag + + $this->cssManager->tbCSSlvl++; + + $this->mpdf->InlineProperties = []; + $this->mpdf->InlineBDF = []; // mPDF 6 + $this->mpdf->InlineBDFctr = 0; // mPDF 6 + $this->mpdf->tdbegin = true; + $this->mpdf->col++; + + while (isset($this->mpdf->cell[$this->mpdf->row][$this->mpdf->col])) { + $this->mpdf->col++; + } + + // Update number column + if ($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['nc'] < $this->mpdf->col + 1) { + $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['nc'] = $this->mpdf->col + 1; + } + + $table = &$this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]; + + $c = ['a' => false, + 'R' => false, + 'nowrap' => false, + 'bgcolor' => false, + 'padding' => ['L' => false, + 'R' => false, + 'T' => false, + 'B' => false + ] + ]; + + if ($this->mpdf->simpleTables && $this->mpdf->row == 0 && $this->mpdf->col == 0) { + $table['simple']['border'] = false; + $table['simple']['border_details']['R']['w'] = 0; + $table['simple']['border_details']['L']['w'] = 0; + $table['simple']['border_details']['T']['w'] = 0; + $table['simple']['border_details']['B']['w'] = 0; + $table['simple']['border_details']['R']['style'] = ''; + $table['simple']['border_details']['L']['style'] = ''; + $table['simple']['border_details']['T']['style'] = ''; + $table['simple']['border_details']['B']['style'] = ''; + } elseif (!$this->mpdf->simpleTables) { + $c['border'] = false; + $c['border_details']['R']['w'] = 0; + $c['border_details']['L']['w'] = 0; + $c['border_details']['T']['w'] = 0; + $c['border_details']['B']['w'] = 0; + $c['border_details']['mbw']['BL'] = 0; + $c['border_details']['mbw']['BR'] = 0; + $c['border_details']['mbw']['RT'] = 0; + $c['border_details']['mbw']['RB'] = 0; + $c['border_details']['mbw']['TL'] = 0; + $c['border_details']['mbw']['TR'] = 0; + $c['border_details']['mbw']['LT'] = 0; + $c['border_details']['mbw']['LB'] = 0; + $c['border_details']['R']['style'] = ''; + $c['border_details']['L']['style'] = ''; + $c['border_details']['T']['style'] = ''; + $c['border_details']['B']['style'] = ''; + $c['border_details']['R']['s'] = 0; + $c['border_details']['L']['s'] = 0; + $c['border_details']['T']['s'] = 0; + $c['border_details']['B']['s'] = 0; + $c['border_details']['R']['c'] = $this->colorConverter->convert(0, $this->mpdf->PDFAXwarnings); + $c['border_details']['L']['c'] = $this->colorConverter->convert(0, $this->mpdf->PDFAXwarnings); + $c['border_details']['T']['c'] = $this->colorConverter->convert(0, $this->mpdf->PDFAXwarnings); + $c['border_details']['B']['c'] = $this->colorConverter->convert(0, $this->mpdf->PDFAXwarnings); + $c['border_details']['R']['dom'] = 0; + $c['border_details']['L']['dom'] = 0; + $c['border_details']['T']['dom'] = 0; + $c['border_details']['B']['dom'] = 0; + $c['border_details']['cellposdom'] = 0; + } + + + if ($table['va']) { + $c['va'] = $table['va']; + } + if ($table['txta']) { + $c['a'] = $table['txta']; + } + if ($this->mpdf->table_border_attr_set && $table['border_details']) { + if (!$this->mpdf->simpleTables) { + $c['border_details']['R'] = $table['border_details']['R']; + $c['border_details']['L'] = $table['border_details']['L']; + $c['border_details']['T'] = $table['border_details']['T']; + $c['border_details']['B'] = $table['border_details']['B']; + $c['border'] = $table['border']; + $c['border_details']['L']['dom'] = 1; + $c['border_details']['R']['dom'] = 1; + $c['border_details']['T']['dom'] = 1; + $c['border_details']['B']['dom'] = 1; + } elseif ($this->mpdf->simpleTables && $this->mpdf->row == 0 && $this->mpdf->col == 0) { + $table['simple']['border_details']['R'] = $table['border_details']['R']; + $table['simple']['border_details']['L'] = $table['border_details']['L']; + $table['simple']['border_details']['T'] = $table['border_details']['T']; + $table['simple']['border_details']['B'] = $table['border_details']['B']; + $table['simple']['border'] = $table['border']; + } + } + // INHERITED THEAD CSS Properties + if ($this->mpdf->tablethead) { + if ($this->mpdf->thead_valign_default) { + $c['va'] = $this->getAlign($this->mpdf->thead_valign_default); + } + if ($this->mpdf->thead_textalign_default) { + $c['a'] = $this->getAlign($this->mpdf->thead_textalign_default); + } + if ($this->mpdf->thead_font_weight === 'B') { + $this->mpdf->SetStyle('B', true); + } + if ($this->mpdf->thead_font_style === 'I') { + $this->mpdf->SetStyle('I', true); + } + if ($this->mpdf->thead_font_smCaps === 'S') { + $this->mpdf->textvar |= TextVars::FC_SMALLCAPS; + } // mPDF 5.7.1 + } + + // INHERITED TFOOT CSS Properties + if ($this->mpdf->tabletfoot) { + if ($this->mpdf->tfoot_valign_default) { + $c['va'] = $this->getAlign($this->mpdf->tfoot_valign_default); + } + if ($this->mpdf->tfoot_textalign_default) { + $c['a'] = $this->getAlign($this->mpdf->tfoot_textalign_default); + } + if ($this->mpdf->tfoot_font_weight === 'B') { + $this->mpdf->SetStyle('B', true); + } + if ($this->mpdf->tfoot_font_style === 'I') { + $this->mpdf->SetStyle('I', true); + } + if ($this->mpdf->tfoot_font_style === 'S') { + $this->mpdf->textvar |= TextVars::FC_SMALLCAPS; + } // mPDF 5.7.1 + } + + + if ($this->mpdf->trow_text_rotate) { + $c['R'] = $this->mpdf->trow_text_rotate; + } + + $this->mpdf->cell_border_dominance_L = 0; + $this->mpdf->cell_border_dominance_R = 0; + $this->mpdf->cell_border_dominance_T = 0; + $this->mpdf->cell_border_dominance_B = 0; + + $properties = $this->cssManager->MergeCSS('TABLE', $tag, $attr); + + $properties = $this->cssManager->array_merge_recursive_unique($this->mpdf->base_table_properties, $properties); + + $this->mpdf->Reset(); // mPDF 6 ????????????????????? + + $this->mpdf->setCSS($properties, 'TABLECELL', $tag); + + $c['dfs'] = $this->mpdf->FontSize; // Default Font size + + + if (isset($properties['BACKGROUND-COLOR'])) { + $c['bgcolor'] = $properties['BACKGROUND-COLOR']; + } elseif (isset($properties['BACKGROUND'])) { + $c['bgcolor'] = $properties['BACKGROUND']; + } elseif (isset($attr['BGCOLOR'])) { + $c['bgcolor'] = $attr['BGCOLOR']; + } + + + + /* -- BACKGROUNDS -- */ + if (isset($properties['BACKGROUND-GRADIENT'])) { + $c['gradient'] = $properties['BACKGROUND-GRADIENT']; + } else { + $c['gradient'] = false; + } + + if (!empty($properties['BACKGROUND-IMAGE']) && !$this->mpdf->keep_block_together) { + $ret = $this->mpdf->SetBackground($properties, $this->mpdf->blk[$this->mpdf->blklvl]['inner_width']); + if ($ret) { + $c['background-image'] = $ret; + } + } + /* -- END BACKGROUNDS -- */ + if (isset($properties['VERTICAL-ALIGN'])) { + $c['va'] = $this->getAlign($properties['VERTICAL-ALIGN']); + } elseif (isset($attr['VALIGN'])) { + $c['va'] = $this->getAlign($attr['VALIGN']); + } + + + if (!empty($properties['TEXT-ALIGN'])) { + if (0 === strpos($properties['TEXT-ALIGN'], 'D')) { + $c['a'] = $properties['TEXT-ALIGN']; + } else { + $c['a'] = $this->getAlign($properties['TEXT-ALIGN']); + } + } + if (!empty($attr['ALIGN'])) { + if (strtolower($attr['ALIGN']) === 'char') { + if (!empty($attr['CHAR'])) { + $char = html_entity_decode($attr['CHAR']); + $char = UtfString::strcode2utf($char); + $d = array_search($char, $this->mpdf->decimal_align); + if ($d !== false) { + $c['a'] = $d . 'R'; + } + } else { + $c['a'] = 'DPR'; + } + } else { + $c['a'] = $this->getAlign($attr['ALIGN']); + } + } + + // mPDF 6 + $c['direction'] = $table['direction']; + if (isset($attr['DIR']) && $attr['DIR'] != '') { + $c['direction'] = strtolower($attr['DIR']); + } + if (isset($properties['DIRECTION'])) { + $c['direction'] = strtolower($properties['DIRECTION']); + } + + if (!$c['a']) { + if (isset($c['direction']) && $c['direction'] === 'rtl') { + $c['a'] = 'R'; + } else { + $c['a'] = 'L'; + } + } + + $c['cellLineHeight'] = $table['cellLineHeight']; + if (isset($properties['LINE-HEIGHT'])) { + $c['cellLineHeight'] = $this->mpdf->fixLineheight($properties['LINE-HEIGHT']); + } + + $c['cellLineStackingStrategy'] = $table['cellLineStackingStrategy']; + if (isset($properties['LINE-STACKING-STRATEGY'])) { + $c['cellLineStackingStrategy'] = strtolower($properties['LINE-STACKING-STRATEGY']); + } + + $c['cellLineStackingShift'] = $table['cellLineStackingShift']; + if (isset($properties['LINE-STACKING-SHIFT'])) { + $c['cellLineStackingShift'] = strtolower($properties['LINE-STACKING-SHIFT']); + } + + if (isset($properties['TEXT-ROTATE']) && ($properties['TEXT-ROTATE'] || $properties['TEXT-ROTATE'] === '0')) { + $c['R'] = $properties['TEXT-ROTATE']; + } + if (isset($properties['BORDER'])) { + $bord = $this->mpdf->border_details($properties['BORDER']); + if ($bord['s']) { + if (!$this->mpdf->simpleTables) { + $c['border'] = Border::ALL; + $c['border_details']['R'] = $bord; + $c['border_details']['L'] = $bord; + $c['border_details']['T'] = $bord; + $c['border_details']['B'] = $bord; + $c['border_details']['L']['dom'] = $this->mpdf->cell_border_dominance_L; + $c['border_details']['R']['dom'] = $this->mpdf->cell_border_dominance_R; + $c['border_details']['T']['dom'] = $this->mpdf->cell_border_dominance_T; + $c['border_details']['B']['dom'] = $this->mpdf->cell_border_dominance_B; + } elseif ($this->mpdf->simpleTables && $this->mpdf->row == 0 && $this->mpdf->col == 0) { + $table['simple']['border'] = Border::ALL; + $table['simple']['border_details']['R'] = $bord; + $table['simple']['border_details']['L'] = $bord; + $table['simple']['border_details']['T'] = $bord; + $table['simple']['border_details']['B'] = $bord; + } + } + } + if (!$this->mpdf->simpleTables) { + if (!empty($properties['BORDER-RIGHT'])) { + $c['border_details']['R'] = $this->mpdf->border_details($properties['BORDER-RIGHT']); + $this->mpdf->setBorder($c['border'], Border::RIGHT, $c['border_details']['R']['s']); + $c['border_details']['R']['dom'] = $this->mpdf->cell_border_dominance_R; + } + if (!empty($properties['BORDER-LEFT'])) { + $c['border_details']['L'] = $this->mpdf->border_details($properties['BORDER-LEFT']); + $this->mpdf->setBorder($c['border'], Border::LEFT, $c['border_details']['L']['s']); + $c['border_details']['L']['dom'] = $this->mpdf->cell_border_dominance_L; + } + if (!empty($properties['BORDER-BOTTOM'])) { + $c['border_details']['B'] = $this->mpdf->border_details($properties['BORDER-BOTTOM']); + $this->mpdf->setBorder($c['border'], Border::BOTTOM, $c['border_details']['B']['s']); + $c['border_details']['B']['dom'] = $this->mpdf->cell_border_dominance_B; + } + if (!empty($properties['BORDER-TOP'])) { + $c['border_details']['T'] = $this->mpdf->border_details($properties['BORDER-TOP']); + $this->mpdf->setBorder($c['border'], Border::TOP, $c['border_details']['T']['s']); + $c['border_details']['T']['dom'] = $this->mpdf->cell_border_dominance_T; + } + } elseif ($this->mpdf->simpleTables && $this->mpdf->row == 0 && $this->mpdf->col == 0) { + if (!empty($properties['BORDER-LEFT'])) { + $bord = $this->mpdf->border_details($properties['BORDER-LEFT']); + if ($bord['s']) { + $table['simple']['border'] = Border::ALL; + } else { + $table['simple']['border'] = 0; + } + $table['simple']['border_details']['R'] = $bord; + $table['simple']['border_details']['L'] = $bord; + $table['simple']['border_details']['T'] = $bord; + $table['simple']['border_details']['B'] = $bord; + } + } + + if ($this->mpdf->simpleTables && $this->mpdf->row == 0 && $this->mpdf->col == 0 && !$table['borders_separate'] && $table['simple']['border']) { + $table['border_details'] = $table['simple']['border_details']; + $table['border'] = $table['simple']['border']; + } + + // Border set on TR (if collapsed only) + if (!$table['borders_separate'] && !$this->mpdf->simpleTables && isset($table['trborder-left'][$this->mpdf->row])) { + if ($this->mpdf->col == 0) { + $left = $this->mpdf->border_details($table['trborder-left'][$this->mpdf->row]); + $c['border_details']['L'] = $left; + $this->mpdf->setBorder($c['border'], Border::LEFT, $c['border_details']['L']['s']); + } + $c['border_details']['B'] = $this->mpdf->border_details($table['trborder-bottom'][$this->mpdf->row]); + $this->mpdf->setBorder($c['border'], Border::BOTTOM, $c['border_details']['B']['s']); + $c['border_details']['T'] = $this->mpdf->border_details($table['trborder-top'][$this->mpdf->row]); + $this->mpdf->setBorder($c['border'], Border::TOP, $c['border_details']['T']['s']); + } + + if ($this->mpdf->packTableData && !$this->mpdf->simpleTables) { + $c['borderbin'] = $this->mpdf->_packCellBorder($c); + unset($c['border'], $c['border_details']); + } + + if (isset($properties['PADDING-LEFT'])) { + $c['padding']['L'] = $this->sizeConverter->convert($properties['PADDING-LEFT'], $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], $this->mpdf->FontSize, false); + } + if (isset($properties['PADDING-RIGHT'])) { + $c['padding']['R'] = $this->sizeConverter->convert($properties['PADDING-RIGHT'], $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], $this->mpdf->FontSize, false); + } + if (isset($properties['PADDING-BOTTOM'])) { + $c['padding']['B'] = $this->sizeConverter->convert($properties['PADDING-BOTTOM'], $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], $this->mpdf->FontSize, false); + } + if (isset($properties['PADDING-TOP'])) { + $c['padding']['T'] = $this->sizeConverter->convert($properties['PADDING-TOP'], $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], $this->mpdf->FontSize, false); + } + + $w = ''; + if (isset($properties['WIDTH'])) { + $w = $properties['WIDTH']; + } elseif (isset($attr['WIDTH'])) { + $w = $attr['WIDTH']; + } + if ($w) { + if (strpos($w, '%') && !$this->mpdf->ignore_table_percents) { + $c['wpercent'] = (float) $w; + } // makes 80% -> 80 + elseif (!strpos($w, '%') && !$this->mpdf->ignore_table_widths) { + $c['w'] = $this->sizeConverter->convert($w, $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], $this->mpdf->FontSize, false); + } + } + + if (isset($properties['HEIGHT']) && !strpos($properties['HEIGHT'], '%')) { + $c['h'] = $this->sizeConverter->convert($properties['HEIGHT'], $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], $this->mpdf->FontSize, false); + } elseif (isset($attr['HEIGHT']) && !strpos($attr['HEIGHT'], '%')) { + $c['h'] = $this->sizeConverter->convert($attr['HEIGHT'], $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], $this->mpdf->FontSize, false); + } + + if (isset($properties['WHITE-SPACE'])) { + if (strtoupper($properties['WHITE-SPACE']) === 'NOWRAP') { + $c['nowrap'] = 1; + } + } + + if (isset($attr['TEXT-ROTATE'])) { + $c['R'] = $attr['TEXT-ROTATE']; + } + if (!empty($attr['NOWRAP'])) { + $c['nowrap'] = 1; + } + + $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col] = $c; + unset($c); + $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['s'] = 0; + + $cs = $rs = 1; + if (isset($attr['COLSPAN']) && $attr['COLSPAN'] > 1) { + $cs = $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['colspan'] = $attr['COLSPAN']; + } + if ($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['nc'] < $this->mpdf->col + $cs) { + $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['nc'] = $this->mpdf->col + $cs; + } // following code moved outside if... + for ($l = $this->mpdf->col; $l < $this->mpdf->col + $cs; $l++) { + if ($l - $this->mpdf->col) { + $this->mpdf->cell[$this->mpdf->row][$l] = 0; + } + } + if (isset($attr['ROWSPAN']) && $attr['ROWSPAN'] > 1) { + $rs = $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['rowspan'] = $attr['ROWSPAN']; + } + for ($k = $this->mpdf->row; $k < $this->mpdf->row + $rs; $k++) { + for ($l = $this->mpdf->col; $l < $this->mpdf->col + $cs; $l++) { + if ($k - $this->mpdf->row || $l - $this->mpdf->col) { + $this->mpdf->cell[$k][$l] = 0; + } + } + } + unset($table); + } + + public function close(&$ahtml, &$ihtml) + { + if ($this->mpdf->tableLevel) { + $this->mpdf->lastoptionaltag = 'TR'; + unset($this->cssManager->tablecascadeCSS[$this->cssManager->tbCSSlvl]); + $this->cssManager->tbCSSlvl--; + if (!$this->mpdf->tdbegin) { + return; + } + $this->mpdf->tdbegin = false; + // Added for correct calculation of cell column width - otherwise misses the last line if not end </p> etc. + if (!isset($this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['maxs'])) { + if (!is_array($this->mpdf->cell[$this->mpdf->row][$this->mpdf->col])) { + throw new \Mpdf\MpdfException('You may have an error in your HTML code e.g. </td></td>'); + } + $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['maxs'] = $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['s']; + } elseif ($this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['maxs'] < $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['s']) { + $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['maxs'] = $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['s']; + } + + // Remove last <br> if at end of cell + $ntb = 0; + if (isset($this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['textbuffer'])) { + $ntb = count($this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['textbuffer']); + } + if ($ntb > 1 && $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['textbuffer'][$ntb - 1][0] === "\n") { + unset($this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['textbuffer'][$ntb - 1]); + } + + if ($this->mpdf->tablethead) { + $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['is_thead'][$this->mpdf->row] = true; + if ($this->mpdf->tableLevel == 1) { + $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['headernrows'] + = max($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['headernrows'], $this->mpdf->row + 1); + } + } + if ($this->mpdf->tabletfoot) { + $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['is_tfoot'][$this->mpdf->row] = true; + if ($this->mpdf->tableLevel == 1) { + $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['footernrows'] + = max( + $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['footernrows'], + $this->mpdf->row + 1 - $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['headernrows'] + ); + } + } + $this->mpdf->Reset(); + } + } +} diff --git a/Mpdf/Tag/TextArea.php b/Mpdf/Tag/TextArea.php new file mode 100644 index 0000000..017c548 --- /dev/null +++ b/Mpdf/Tag/TextArea.php @@ -0,0 +1,162 @@ +<?php + +namespace Mpdf\Tag; + +use Mpdf\Mpdf; + +class TextArea extends Tag +{ + + public function open($attr, &$ahtml, &$ihtml) + { + $objattr = []; + $objattr['margin_top'] = 0; + $objattr['margin_bottom'] = 0; + $objattr['margin_left'] = 0; + $objattr['margin_right'] = 0; + $objattr['width'] = 0; + $objattr['height'] = 0; + $objattr['border_top']['w'] = 0; + $objattr['border_bottom']['w'] = 0; + $objattr['border_left']['w'] = 0; + $objattr['border_right']['w'] = 0; + if (isset($attr['DISABLED'])) { + $objattr['disabled'] = true; + } + if (isset($attr['READONLY'])) { + $objattr['readonly'] = true; + } + if (isset($attr['REQUIRED'])) { + $objattr['required'] = true; + } + if (isset($attr['SPELLCHECK']) && strtolower($attr['SPELLCHECK']) === 'true') { + $objattr['spellcheck'] = true; + } + if (isset($attr['TITLE'])) { + $objattr['title'] = $attr['TITLE']; + if ($this->mpdf->onlyCoreFonts) { + $objattr['title'] = mb_convert_encoding($objattr['title'], $this->mpdf->mb_enc, 'UTF-8'); + } + } + if ($this->mpdf->useActiveForms) { + if (isset($attr['NAME'])) { + $objattr['fieldname'] = $attr['NAME']; + } + $this->form->form_element_spacing['textarea']['outer']['v'] = 0; + $this->form->form_element_spacing['textarea']['inner']['v'] = 0; + if (isset($attr['ONCALCULATE'])) { + $objattr['onCalculate'] = $attr['ONCALCULATE']; + } elseif (isset($attr['ONCHANGE'])) { + $objattr['onCalculate'] = $attr['ONCHANGE']; + } + if (isset($attr['ONVALIDATE'])) { + $objattr['onValidate'] = $attr['ONVALIDATE']; + } + if (isset($attr['ONKEYSTROKE'])) { + $objattr['onKeystroke'] = $attr['ONKEYSTROKE']; + } + if (isset($attr['ONFORMAT'])) { + $objattr['onFormat'] = $attr['ONFORMAT']; + } + } + $this->mpdf->InlineProperties['TEXTAREA'] = $this->mpdf->saveInlineProperties(); + $properties = $this->cssManager->MergeCSS('', 'TEXTAREA', $attr); + if (isset($properties['FONT-FAMILY'])) { + $this->mpdf->SetFont($properties['FONT-FAMILY'], '', 0, false); + } + if (isset($properties['FONT-SIZE'])) { + $mmsize = $this->sizeConverter->convert($properties['FONT-SIZE'], $this->mpdf->default_font_size / Mpdf::SCALE); + $this->mpdf->SetFontSize($mmsize * Mpdf::SCALE, false); + } + if (isset($properties['COLOR'])) { + $objattr['color'] = $this->colorConverter->convert($properties['COLOR'], $this->mpdf->PDFAXwarnings); + } + $objattr['fontfamily'] = $this->mpdf->FontFamily; + $objattr['fontsize'] = $this->mpdf->FontSizePt; + if ($this->mpdf->useActiveForms) { + if (isset($properties['TEXT-ALIGN'])) { + $objattr['text_align'] = $this->getAlign($properties['TEXT-ALIGN']); + } elseif (isset($attr['ALIGN'])) { + $objattr['text_align'] = $this->getAlign($attr['ALIGN']); + } + if (isset($properties['OVERFLOW']) && strtolower($properties['OVERFLOW']) === 'hidden') { + $objattr['donotscroll'] = true; + } + if (isset($properties['BORDER-TOP-COLOR'])) { + $objattr['border-col'] = $this->colorConverter->convert($properties['BORDER-TOP-COLOR'], $this->mpdf->PDFAXwarnings); + } + if (isset($properties['BACKGROUND-COLOR'])) { + $objattr['background-col'] = $this->colorConverter->convert($properties['BACKGROUND-COLOR'], $this->mpdf->PDFAXwarnings); + } + } + $this->mpdf->SetLineHeight('', $this->form->textarea_lineheight); + + $w = 0; + $h = 0; + if (isset($properties['WIDTH'])) { + $w = $this->sizeConverter->convert( + $properties['WIDTH'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + if (isset($properties['HEIGHT'])) { + $h = $this->sizeConverter->convert( + $properties['HEIGHT'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + if (isset($properties['VERTICAL-ALIGN'])) { + $objattr['vertical-align'] = $this->getAlign($properties['VERTICAL-ALIGN']); + } + + $colsize = 20; //HTML default value + $rowsize = 2; //HTML default value + if (isset($attr['COLS'])) { + $colsize = (int) $attr['COLS']; + } + if (isset($attr['ROWS'])) { + $rowsize = (int) $attr['ROWS']; + } + + $charsize = $this->mpdf->GetCharWidth('w', false); + if ($w) { + $colsize = round(($w - ($this->form->form_element_spacing['textarea']['outer']['h'] * 2) + - ($this->form->form_element_spacing['textarea']['inner']['h'] * 2)) / $charsize); + } + if ($h) { + $rowsize = round(($h - ($this->form->form_element_spacing['textarea']['outer']['v'] * 2) + - ($this->form->form_element_spacing['textarea']['inner']['v'] * 2)) / $this->mpdf->lineheight); + } + + $objattr['type'] = 'textarea'; + $objattr['width'] = ($colsize * $charsize) + ($this->form->form_element_spacing['textarea']['outer']['h'] * 2) + + ($this->form->form_element_spacing['textarea']['inner']['h'] * 2); + + $objattr['height'] = ($rowsize * $this->mpdf->lineheight) + + ($this->form->form_element_spacing['textarea']['outer']['v'] * 2) + + ($this->form->form_element_spacing['textarea']['inner']['v'] * 2); + + $objattr['rows'] = $rowsize; + $objattr['cols'] = $colsize; + + $this->mpdf->specialcontent = serialize($objattr); + + if ($this->mpdf->tableLevel) { // *TABLES* + $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['s'] += $objattr['width']; // *TABLES* + } // *TABLES* + } + + public function close(&$ahtml, &$ihtml) + { + $this->mpdf->ignorefollowingspaces = false; + $this->mpdf->specialcontent = ''; + if ($this->mpdf->InlineProperties['TEXTAREA']) { + $this->mpdf->restoreInlineProperties($this->mpdf->InlineProperties['TEXTAREA']); + } + unset($this->mpdf->InlineProperties['TEXTAREA']); + } +} diff --git a/Mpdf/Tag/TextCircle.php b/Mpdf/Tag/TextCircle.php new file mode 100644 index 0000000..6bd5313 --- /dev/null +++ b/Mpdf/Tag/TextCircle.php @@ -0,0 +1,250 @@ +<?php + +namespace Mpdf\Tag; + +use Mpdf\Mpdf; +use Mpdf\Utils\UtfString; + +class TextCircle extends Tag +{ + + public function open($attr, &$ahtml, &$ihtml) + { + $objattr = []; + $objattr['margin_top'] = 0; + $objattr['margin_bottom'] = 0; + $objattr['margin_left'] = 0; + $objattr['margin_right'] = 0; + $objattr['padding_top'] = 0; + $objattr['padding_bottom'] = 0; + $objattr['padding_left'] = 0; + $objattr['padding_right'] = 0; + $objattr['width'] = 0; + $objattr['height'] = 0; + $objattr['border_top']['w'] = 0; + $objattr['border_bottom']['w'] = 0; + $objattr['border_left']['w'] = 0; + $objattr['border_right']['w'] = 0; + $objattr['top-text'] = ''; + $objattr['bottom-text'] = ''; + $objattr['r'] = 20; // radius (default value here for safety) + $objattr['space-width'] = 120; + $objattr['char-width'] = 100; + + $this->mpdf->InlineProperties['TEXTCIRCLE'] = $this->mpdf->saveInlineProperties(); + $properties = $this->cssManager->MergeCSS('INLINE', 'TEXTCIRCLE', $attr); + + if (isset($properties ['DISPLAY']) && strtolower($properties ['DISPLAY']) === 'none') { + return; + } + if (isset($attr['R'])) { + $objattr['r'] = $this->sizeConverter->convert( + $attr['R'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + if (isset($attr['TOP-TEXT'])) { + $objattr['top-text'] = UtfString::strcode2utf($attr['TOP-TEXT']); + $objattr['top-text'] = $this->mpdf->lesser_entity_decode($objattr['top-text']); + if ($this->mpdf->onlyCoreFonts) { + $objattr['top-text'] = mb_convert_encoding($objattr['top-text'], $this->mpdf->mb_enc, 'UTF-8'); + } + } + if (isset($attr['BOTTOM-TEXT'])) { + $objattr['bottom-text'] = UtfString::strcode2utf($attr['BOTTOM-TEXT']); + $objattr['bottom-text'] = $this->mpdf->lesser_entity_decode($objattr['bottom-text']); + if ($this->mpdf->onlyCoreFonts) { + $objattr['bottom-text'] = mb_convert_encoding($objattr['bottom-text'], $this->mpdf->mb_enc, 'UTF-8'); + } + } + if (!empty($attr['SPACE-WIDTH'])) { + $objattr['space-width'] = $attr['SPACE-WIDTH']; + } + if (!empty($attr['CHAR-WIDTH'])) { + $objattr['char-width'] = $attr['CHAR-WIDTH']; + } + + // VISIBILITY + $objattr['visibility'] = 'visible'; + if (isset($properties['VISIBILITY'])) { + $v = strtolower($properties['VISIBILITY']); + if (($v === 'hidden' || $v === 'printonly' || $v === 'screenonly') && $this->mpdf->visibility === 'visible') { + $objattr['visibility'] = $v; + } + } + if (isset($properties['FONT-SIZE'])) { + if (strtolower($properties['FONT-SIZE']) === 'auto') { + if ($objattr['top-text'] && $objattr['bottom-text']) { + $objattr['fontsize'] = -2; + } else { + $objattr['fontsize'] = -1; + } + } else { + $mmsize = $this->sizeConverter->convert($properties['FONT-SIZE'], $this->mpdf->default_font_size / Mpdf::SCALE); + $this->mpdf->SetFontSize($mmsize * Mpdf::SCALE, false); + $objattr['fontsize'] = $this->mpdf->FontSizePt; + } + } + if (isset($attr['DIVIDER'])) { + $objattr['divider'] = UtfString::strcode2utf($attr['DIVIDER']); + $objattr['divider'] = $this->mpdf->lesser_entity_decode($objattr['divider']); + if ($this->mpdf->onlyCoreFonts) { + $objattr['divider'] = mb_convert_encoding($objattr['divider'], $this->mpdf->mb_enc, 'UTF-8'); + } + } + + if (isset($properties['COLOR'])) { + $objattr['color'] = $this->colorConverter->convert($properties['COLOR'], $this->mpdf->PDFAXwarnings); + } + + $objattr['fontstyle'] = ''; + if (isset($properties['FONT-WEIGHT'])) { + if (strtoupper($properties['FONT-WEIGHT']) === 'BOLD') { + $objattr['fontstyle'] .= 'B'; + } + } + if (isset($properties['FONT-STYLE'])) { + if (strtoupper($properties['FONT-STYLE']) === 'ITALIC') { + $objattr['fontstyle'] .= 'I'; + } + } + + if (isset($properties['FONT-FAMILY'])) { + $this->mpdf->SetFont($properties['FONT-FAMILY'], $this->mpdf->FontStyle, 0, false); + } + $objattr['fontfamily'] = $this->mpdf->FontFamily; + + // VSPACE and HSPACE converted to margins in MergeCSS + if (isset($properties['MARGIN-TOP'])) { + $objattr['margin_top'] = $this->sizeConverter->convert( + $properties['MARGIN-TOP'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + if (isset($properties['MARGIN-BOTTOM'])) { + $objattr['margin_bottom'] = $this->sizeConverter->convert( + $properties['MARGIN-BOTTOM'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + if (isset($properties['MARGIN-LEFT'])) { + $objattr['margin_left'] = $this->sizeConverter->convert( + $properties['MARGIN-LEFT'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + if (isset($properties['MARGIN-RIGHT'])) { + $objattr['margin_right'] = $this->sizeConverter->convert( + $properties['MARGIN-RIGHT'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + + if (isset($properties['PADDING-TOP'])) { + $objattr['padding_top'] = $this->sizeConverter->convert( + $properties['PADDING-TOP'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + if (isset($properties['PADDING-BOTTOM'])) { + $objattr['padding_bottom'] = $this->sizeConverter->convert( + $properties['PADDING-BOTTOM'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + if (isset($properties['PADDING-LEFT'])) { + $objattr['padding_left'] = $this->sizeConverter->convert( + $properties['PADDING-LEFT'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + if (isset($properties['PADDING-RIGHT'])) { + $objattr['padding_right'] = $this->sizeConverter->convert( + $properties['PADDING-RIGHT'], + $this->mpdf->blk[$this->mpdf->blklvl]['inner_width'], + $this->mpdf->FontSize, + false + ); + } + + if (isset($properties['BORDER-TOP'])) { + $objattr['border_top'] = $this->mpdf->border_details($properties['BORDER-TOP']); + } + if (isset($properties['BORDER-BOTTOM'])) { + $objattr['border_bottom'] = $this->mpdf->border_details($properties['BORDER-BOTTOM']); + } + if (isset($properties['BORDER-LEFT'])) { + $objattr['border_left'] = $this->mpdf->border_details($properties['BORDER-LEFT']); + } + if (isset($properties['BORDER-RIGHT'])) { + $objattr['border_right'] = $this->mpdf->border_details($properties['BORDER-RIGHT']); + } + + if (isset($properties['OPACITY']) && $properties['OPACITY'] > 0 && $properties['OPACITY'] <= 1) { + $objattr['opacity'] = $properties['OPACITY']; + } + if (isset($properties['BACKGROUND-COLOR']) && $properties['BACKGROUND-COLOR'] != '') { + $objattr['bgcolor'] = $this->colorConverter->convert($properties['BACKGROUND-COLOR'], $this->mpdf->PDFAXwarnings); + } else { + $objattr['bgcolor'] = false; + } + if ($this->mpdf->HREF) { + if (strpos($this->mpdf->HREF, '.') === false && strpos($this->mpdf->HREF, '@') !== 0) { + $href = $this->mpdf->HREF; + while (array_key_exists($href, $this->mpdf->internallink)) { + $href = '#' . $href; + } + $this->mpdf->internallink[$href] = $this->mpdf->AddLink(); + $objattr['link'] = $this->mpdf->internallink[$href]; + } else { + $objattr['link'] = $this->mpdf->HREF; + } + } + $extraheight = $objattr['padding_top'] + $objattr['padding_bottom'] + $objattr['margin_top'] + $objattr['margin_bottom'] + $objattr['border_top']['w'] + $objattr['border_bottom']['w']; + $extrawidth = $objattr['padding_left'] + $objattr['padding_right'] + $objattr['margin_left'] + $objattr['margin_right'] + $objattr['border_left']['w'] + $objattr['border_right']['w']; + + + $w = $objattr['r'] * 2; + $h = $w; + $objattr['height'] = $h + $extraheight; + $objattr['width'] = $w + $extrawidth; + $objattr['type'] = 'textcircle'; + + $e = "\xbb\xa4\xactype=image,objattr=" . serialize($objattr) . "\xbb\xa4\xac"; + + /* -- TABLES -- */ + // Output it to buffers + if ($this->mpdf->tableLevel) { + $this->mpdf->_saveCellTextBuffer($e, $this->mpdf->HREF); + $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['s'] += $objattr['width']; + } else { + /* -- END TABLES -- */ + $this->mpdf->_saveTextBuffer($e, $this->mpdf->HREF); + } // *TABLES* + + if ($this->mpdf->InlineProperties['TEXTCIRCLE']) { + $this->mpdf->restoreInlineProperties($this->mpdf->InlineProperties['TEXTCIRCLE']); + } + unset($this->mpdf->InlineProperties['TEXTCIRCLE']); + } + + public function close(&$ahtml, &$ihtml) + { + } +} diff --git a/Mpdf/Tag/Th.php b/Mpdf/Tag/Th.php new file mode 100644 index 0000000..c0df792 --- /dev/null +++ b/Mpdf/Tag/Th.php @@ -0,0 +1,13 @@ +<?php + +namespace Mpdf\Tag; + +class Th extends Td +{ + + public function close(&$ahtml, &$ihtml) + { + $this->mpdf->SetStyle('B', false); + parent::close($ahtml, $ihtml); + } +} diff --git a/Mpdf/Tag/Time.php b/Mpdf/Tag/Time.php new file mode 100644 index 0000000..04ffb6e --- /dev/null +++ b/Mpdf/Tag/Time.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class Time extends InlineTag +{ + + +} diff --git a/Mpdf/Tag/Toc.php b/Mpdf/Tag/Toc.php new file mode 100644 index 0000000..1afeae8 --- /dev/null +++ b/Mpdf/Tag/Toc.php @@ -0,0 +1,17 @@ +<?php + +namespace Mpdf\Tag; + +class Toc extends Tag +{ + + public function open($attr, &$ahtml, &$ihtml) + { + //added custom-tag - set Marker for insertion later of ToC + $this->tableOfContents->openTagTOC($attr); + } + + public function close(&$ahtml, &$ihtml) + { + } +} diff --git a/Mpdf/Tag/TocEntry.php b/Mpdf/Tag/TocEntry.php new file mode 100644 index 0000000..1b315ab --- /dev/null +++ b/Mpdf/Tag/TocEntry.php @@ -0,0 +1,38 @@ +<?php + +namespace Mpdf\Tag; + +class TocEntry extends Tag +{ + + public function open($attr, &$ahtml, &$ihtml) + { + if (!empty($attr['CONTENT'])) { + $objattr = []; + $objattr['CONTENT'] = htmlspecialchars_decode($attr['CONTENT'], ENT_QUOTES); + $objattr['type'] = 'toc'; + $objattr['vertical-align'] = 'T'; + if (!empty($attr['LEVEL'])) { + $objattr['toclevel'] = $attr['LEVEL']; + } else { + $objattr['toclevel'] = 0; + } + if (!empty($attr['NAME'])) { + $objattr['toc_id'] = $attr['NAME']; + } else { + $objattr['toc_id'] = 0; + } + $e = "\xbb\xa4\xactype=toc,objattr=" . serialize($objattr) . "\xbb\xa4\xac"; + if ($this->mpdf->tableLevel) { + $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]['textbuffer'][] = [$e]; + } // *TABLES* + else { // *TABLES* + $this->mpdf->textbuffer[] = [$e]; + } // *TABLES* + } + } + + public function close(&$ahtml, &$ihtml) + { + } +} diff --git a/Mpdf/Tag/TocPageBreak.php b/Mpdf/Tag/TocPageBreak.php new file mode 100644 index 0000000..19c5167 --- /dev/null +++ b/Mpdf/Tag/TocPageBreak.php @@ -0,0 +1,16 @@ +<?php + +namespace Mpdf\Tag; + +class TocPageBreak extends FormFeed +{ + public function open($attr, &$ahtml, &$ihtml) + { + list($isbreak, $toc_id) = $this->tableOfContents->openTagTOCPAGEBREAK($attr); + $this->toc_id = $toc_id; + if ($isbreak) { + return; + } + parent::open($attr, $ahtml, $ihtml); + } +} diff --git a/Mpdf/Tag/Tr.php b/Mpdf/Tag/Tr.php new file mode 100644 index 0000000..f891df9 --- /dev/null +++ b/Mpdf/Tag/Tr.php @@ -0,0 +1,102 @@ +<?php + +namespace Mpdf\Tag; + +use Mpdf\Css\Border; + +class Tr extends Tag +{ + + public function open($attr, &$ahtml, &$ihtml) + { + + $this->mpdf->lastoptionaltag = 'TR'; // Save current HTML specified optional endtag + $this->cssManager->tbCSSlvl++; + $this->mpdf->row++; + $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['nr'] ++; + $this->mpdf->col = -1; + $properties = $this->cssManager->MergeCSS('TABLE', 'TR', $attr); + + if (!$this->mpdf->simpleTables && (!isset($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['borders_separate']) + || !$this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['borders_separate'])) { + if (!empty($properties['BORDER-LEFT'])) { + $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['trborder-left'][$this->mpdf->row] = $properties['BORDER-LEFT']; + } + if (!empty($properties['BORDER-RIGHT'])) { + $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['trborder-right'][$this->mpdf->row] = $properties['BORDER-RIGHT']; + } + if (!empty($properties['BORDER-TOP'])) { + $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['trborder-top'][$this->mpdf->row] = $properties['BORDER-TOP']; + } + if (!empty($properties['BORDER-BOTTOM'])) { + $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['trborder-bottom'][$this->mpdf->row] = $properties['BORDER-BOTTOM']; + } + } + + if (isset($properties['BACKGROUND-COLOR'])) { + $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['bgcolor'][$this->mpdf->row] = $properties['BACKGROUND-COLOR']; + } elseif (isset($attr['BGCOLOR'])) { + $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['bgcolor'][$this->mpdf->row] = $attr['BGCOLOR']; + } + + /* -- BACKGROUNDS -- */ + if (isset($properties['BACKGROUND-GRADIENT']) && !$this->mpdf->kwt && !$this->mpdf->ColActive) { + $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['trgradients'][$this->mpdf->row] = $properties['BACKGROUND-GRADIENT']; + } + + // FIXME: undefined variable $currblk + if (!empty($properties['BACKGROUND-IMAGE']) && !$this->mpdf->kwt && !$this->mpdf->ColActive) { + $ret = $this->mpdf->SetBackground($properties, $currblk['inner_width']); + if ($ret) { + $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['trbackground-images'][$this->mpdf->row] = $ret; + } + } + /* -- END BACKGROUNDS -- */ + + if (isset($properties['TEXT-ROTATE'])) { + $this->mpdf->trow_text_rotate = $properties['TEXT-ROTATE']; + } + if (isset($attr['TEXT-ROTATE'])) { + $this->mpdf->trow_text_rotate = $attr['TEXT-ROTATE']; + } + + if ($this->mpdf->tablethead) { + $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['is_thead'][$this->mpdf->row] = true; + } + if ($this->mpdf->tabletfoot) { + $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['is_tfoot'][$this->mpdf->row] = true; + } + } + + public function close(&$ahtml, &$ihtml) + { + if ($this->mpdf->tableLevel) { + // If Border set on TR - Update right border + if (isset($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['trborder-left'][$this->mpdf->row])) { + $c = & $this->mpdf->cell[$this->mpdf->row][$this->mpdf->col]; + if ($c) { + if ($this->mpdf->packTableData) { + $cell = $this->mpdf->_unpackCellBorder($c['borderbin']); + } else { + $cell = $c; + } + $cell['border_details']['R'] = $this->mpdf->border_details( + $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['trborder-right'][$this->mpdf->row] + ); + $this->mpdf->setBorder($cell['border'], Border::RIGHT, $cell['border_details']['R']['s']); + if ($this->mpdf->packTableData) { + $c['borderbin'] = $this->mpdf->_packCellBorder($cell); + unset($c['border'], $c['border_details']); + } else { + $c = $cell; + } + } + } + $this->mpdf->lastoptionaltag = ''; + unset($this->cssManager->tablecascadeCSS[$this->cssManager->tbCSSlvl]); + $this->cssManager->tbCSSlvl--; + $this->mpdf->trow_text_rotate = ''; + $this->mpdf->tabletheadjustfinished = false; + } + } +} diff --git a/Mpdf/Tag/Tt.php b/Mpdf/Tag/Tt.php new file mode 100644 index 0000000..078277a --- /dev/null +++ b/Mpdf/Tag/Tt.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class Tt extends InlineTag +{ + + +} diff --git a/Mpdf/Tag/Tta.php b/Mpdf/Tag/Tta.php new file mode 100644 index 0000000..bac9fb5 --- /dev/null +++ b/Mpdf/Tag/Tta.php @@ -0,0 +1,22 @@ +<?php + +namespace Mpdf\Tag; + +class Tta extends SubstituteTag +{ + + public function open($attr, &$ahtml, &$ihtml) + { + $this->mpdf->tta = true; + $this->mpdf->InlineProperties['TTA'] = $this->mpdf->saveInlineProperties(); + + if (in_array($this->mpdf->FontFamily, $this->mpdf->mono_fonts)) { + $this->mpdf->setCSS(['FONT-FAMILY' => 'ccourier'], 'INLINE'); + } elseif (in_array($this->mpdf->FontFamily, $this->mpdf->serif_fonts)) { + $this->mpdf->setCSS(['FONT-FAMILY' => 'ctimes'], 'INLINE'); + } else { + $this->mpdf->setCSS(['FONT-FAMILY' => 'chelvetica'], 'INLINE'); + } + } + +} diff --git a/Mpdf/Tag/Tts.php b/Mpdf/Tag/Tts.php new file mode 100644 index 0000000..f24d722 --- /dev/null +++ b/Mpdf/Tag/Tts.php @@ -0,0 +1,15 @@ +<?php + +namespace Mpdf\Tag; + +class Tts extends SubstituteTag +{ + + public function open($attr, &$ahtml, &$ihtml) + { + $this->mpdf->tts = true; + $this->mpdf->InlineProperties['TTS'] = $this->mpdf->saveInlineProperties(); + $this->mpdf->setCSS(['FONT-FAMILY' => 'csymbol', 'FONT-WEIGHT' => 'normal', 'FONT-STYLE' => 'normal'], 'INLINE'); + } + +} diff --git a/Mpdf/Tag/Ttz.php b/Mpdf/Tag/Ttz.php new file mode 100644 index 0000000..d76d4c5 --- /dev/null +++ b/Mpdf/Tag/Ttz.php @@ -0,0 +1,15 @@ +<?php + +namespace Mpdf\Tag; + +class Ttz extends SubstituteTag +{ + + public function open($attr, &$ahtml, &$ihtml) + { + $this->mpdf->ttz = true; + $this->mpdf->InlineProperties['TTZ'] = $this->mpdf->saveInlineProperties(); + $this->mpdf->setCSS(['FONT-FAMILY' => 'czapfdingbats', 'FONT-WEIGHT' => 'normal', 'FONT-STYLE' => 'normal'], 'INLINE'); + } + +} diff --git a/Mpdf/Tag/U.php b/Mpdf/Tag/U.php new file mode 100644 index 0000000..513298d --- /dev/null +++ b/Mpdf/Tag/U.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class U extends InlineTag +{ + + +} diff --git a/Mpdf/Tag/Ul.php b/Mpdf/Tag/Ul.php new file mode 100644 index 0000000..6efa4d6 --- /dev/null +++ b/Mpdf/Tag/Ul.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class Ul extends BlockTag +{ + + +} diff --git a/Mpdf/Tag/VarTag.php b/Mpdf/Tag/VarTag.php new file mode 100644 index 0000000..556dd40 --- /dev/null +++ b/Mpdf/Tag/VarTag.php @@ -0,0 +1,9 @@ +<?php + +namespace Mpdf\Tag; + +class VarTag extends InlineTag +{ + + +} diff --git a/Mpdf/Tag/WatermarkImage.php b/Mpdf/Tag/WatermarkImage.php new file mode 100644 index 0000000..21f8c48 --- /dev/null +++ b/Mpdf/Tag/WatermarkImage.php @@ -0,0 +1,41 @@ +<?php + +namespace Mpdf\Tag; + +class WatermarkImage extends Tag +{ + + public function open($attr, &$ahtml, &$ihtml) + { + $src = ''; + if (isset($attr['SRC'])) { + $src = $attr['SRC']; + } + + $alpha = -1; + if (isset($attr['ALPHA']) && $attr['ALPHA'] > 0) { + $alpha = $attr['ALPHA']; + } + + $size = 'D'; + if (!empty($attr['SIZE'])) { + $size = $attr['SIZE']; + if (strpos($size, ',')) { + $size = explode(',', $size); + } + } + + $pos = 'P'; + if (!empty($attr['POSITION'])) { // mPDF 5.7.2 + $pos = $attr['POSITION']; + if (strpos($pos, ',')) { + $pos = explode(',', $pos); + } + } + $this->mpdf->SetWatermarkImage($src, $alpha, $size, $pos); + } + + public function close(&$ahtml, &$ihtml) + { + } +} diff --git a/Mpdf/Tag/WatermarkText.php b/Mpdf/Tag/WatermarkText.php new file mode 100644 index 0000000..8d6dcc2 --- /dev/null +++ b/Mpdf/Tag/WatermarkText.php @@ -0,0 +1,25 @@ +<?php + +namespace Mpdf\Tag; + +class WatermarkText extends Tag +{ + + public function open($attr, &$ahtml, &$ihtml) + { + $txt = ''; + if (!empty($attr['CONTENT'])) { + $txt = htmlspecialchars_decode($attr['CONTENT'], ENT_QUOTES); + } + + $alpha = -1; + if (isset($attr['ALPHA']) && $attr['ALPHA'] > 0) { + $alpha = $attr['ALPHA']; + } + $this->mpdf->SetWatermarkText($txt, $alpha); + } + + public function close(&$ahtml, &$ihtml) + { + } +} diff --git a/Mpdf/Ucdn.php b/Mpdf/Ucdn.php new file mode 100644 index 0000000..dbf7caa --- /dev/null +++ b/Mpdf/Ucdn.php @@ -0,0 +1,2921 @@ +<?php + +namespace Mpdf; + +class Ucdn +{ + + /* HarfBuzz ucdn/unicodedata_db.h */ + /* HarfBuzz ucdn/ucdn.c */ + /* HarfBuzz ucdn/ucdn.h */ + + const SCRIPT_COMMON = 0; + const SCRIPT_LATIN = 1; + const SCRIPT_GREEK = 2; + const SCRIPT_CYRILLIC = 3; + const SCRIPT_ARMENIAN = 4; + const SCRIPT_HEBREW = 5; + const SCRIPT_ARABIC = 6; + const SCRIPT_SYRIAC = 7; + const SCRIPT_THAANA = 8; + const SCRIPT_DEVANAGARI = 9; + const SCRIPT_BENGALI = 10; + const SCRIPT_GURMUKHI = 11; + const SCRIPT_GUJARATI = 12; + const SCRIPT_ORIYA = 13; + const SCRIPT_TAMIL = 14; + const SCRIPT_TELUGU = 15; + const SCRIPT_KANNADA = 16; + const SCRIPT_MALAYALAM = 17; + const SCRIPT_SINHALA = 18; + const SCRIPT_THAI = 19; + const SCRIPT_LAO = 20; + const SCRIPT_TIBETAN = 21; + const SCRIPT_MYANMAR = 22; + const SCRIPT_GEORGIAN = 23; + const SCRIPT_HANGUL = 24; + const SCRIPT_ETHIOPIC = 25; + const SCRIPT_CHEROKEE = 26; + const SCRIPT_CANADIAN_ABORIGINAL = 27; + const SCRIPT_OGHAM = 28; + const SCRIPT_RUNIC = 29; + const SCRIPT_KHMER = 30; + const SCRIPT_MONGOLIAN = 31; + const SCRIPT_HIRAGANA = 32; + const SCRIPT_KATAKANA = 33; + const SCRIPT_BOPOMOFO = 34; + const SCRIPT_HAN = 35; + const SCRIPT_YI = 36; + const SCRIPT_OLD_ITALIC = 37; + const SCRIPT_GOTHIC = 38; + const SCRIPT_DESERET = 39; + const SCRIPT_INHERITED = 40; + const SCRIPT_TAGALOG = 41; + const SCRIPT_HANUNOO = 42; + const SCRIPT_BUHID = 43; + const SCRIPT_TAGBANWA = 44; + const SCRIPT_LIMBU = 45; + const SCRIPT_TAI_LE = 46; + const SCRIPT_LINEAR_B = 47; + const SCRIPT_UGARITIC = 48; + const SCRIPT_SHAVIAN = 49; + const SCRIPT_OSMANYA = 50; + const SCRIPT_CYPRIOT = 51; + const SCRIPT_BRAILLE = 52; + const SCRIPT_BUGINESE = 53; + const SCRIPT_COPTIC = 54; + const SCRIPT_NEW_TAI_LUE = 55; + const SCRIPT_GLAGOLITIC = 56; + const SCRIPT_TIFINAGH = 57; + const SCRIPT_SYLOTI_NAGRI = 58; + const SCRIPT_OLD_PERSIAN = 59; + const SCRIPT_KHAROSHTHI = 60; + const SCRIPT_BALINESE = 61; + const SCRIPT_CUNEIFORM = 62; + const SCRIPT_PHOENICIAN = 63; + const SCRIPT_PHAGS_PA = 64; + const SCRIPT_NKO = 65; + const SCRIPT_SUNDANESE = 66; + const SCRIPT_LEPCHA = 67; + const SCRIPT_OL_CHIKI = 68; + const SCRIPT_VAI = 69; + const SCRIPT_SAURASHTRA = 70; + const SCRIPT_KAYAH_LI = 71; + const SCRIPT_REJANG = 72; + const SCRIPT_LYCIAN = 73; + const SCRIPT_CARIAN = 74; + const SCRIPT_LYDIAN = 75; + const SCRIPT_CHAM = 76; + const SCRIPT_TAI_THAM = 77; + const SCRIPT_TAI_VIET = 78; + const SCRIPT_AVESTAN = 79; + const SCRIPT_EGYPTIAN_HIEROGLYPHS = 80; + const SCRIPT_SAMARITAN = 81; + const SCRIPT_LISU = 82; + const SCRIPT_BAMUM = 83; + const SCRIPT_JAVANESE = 84; + const SCRIPT_MEETEI_MAYEK = 85; + const SCRIPT_IMPERIAL_ARAMAIC = 86; + const SCRIPT_OLD_SOUTH_ARABIAN = 87; + const SCRIPT_INSCRIPTIONAL_PARTHIAN = 88; + const SCRIPT_INSCRIPTIONAL_PAHLAVI = 89; + const SCRIPT_OLD_TURKIC = 90; + const SCRIPT_KAITHI = 91; + const SCRIPT_BATAK = 92; + const SCRIPT_BRAHMI = 93; + const SCRIPT_MANDAIC = 94; + const SCRIPT_CHAKMA = 95; + const SCRIPT_MEROITIC_CURSIVE = 96; + const SCRIPT_MEROITIC_HIEROGLYPHS = 97; + const SCRIPT_MIAO = 98; + const SCRIPT_SHARADA = 99; + const SCRIPT_SORA_SOMPENG = 100; + const SCRIPT_TAKRI = 101; + const SCRIPT_UNKNOWN = 102; + + public static function get_ucd_record($code) + { + if ($code >= 0x110000) { + $index = 0; + } else { + $index = self::$index0[$code >> (8)] << 5; + $offset = ($code >> 3) & ((1 << 5) - 1); + $index = self::$index1[$index + $offset] << 3; + $offset = $code & ((1 << 3) - 1); + $index = self::$index2[$index + $offset]; + } + return self::$ucd_records[$index]; + } + + public static function get_general_category($code) + { + $ucd_record = self::get_ucd_record($code); + return $ucd_record[0]; + } + + public static function get_combining_class($code) + { + $ucd_record = self::get_ucd_record($code); + return $ucd_record[1]; + } + + public static function get_bidi_class($code) + { + $ucd_record = self::get_ucd_record($code); + return $ucd_record[2]; + } + + public static function get_mirrored($code) + { + $ucd_record = self::get_ucd_record($code); + return $ucd_record[3]; + } + + public static function get_east_asian_width($code) + { + $ucd_record = self::get_ucd_record($code); + return $ucd_record[4]; + } + + public static function get_normalization_check($code) + { + $ucd_record = self::get_ucd_record($code); + return $ucd_record[5]; + } + + public static function get_script($code) + { + $ucd_record = self::get_ucd_record($code); + return $ucd_record[6]; + } + + // mPDF added + public static $uni_scriptblock = [ + /* SCRIPT_COMMON */ 0 => '', + /* SCRIPT_LATIN */ 1 => 'latn', + /* SCRIPT_GREEK */ 2 => 'grek', + /* SCRIPT_CYRILLIC */ 3 => 'cyrl', + /* SCRIPT_ARMENIAN */ 4 => 'armn', + /* SCRIPT_HEBREW */ 5 => 'hebr', + /* SCRIPT_ARABIC */ 6 => 'arab', + /* SCRIPT_SYRIAC */ 7 => 'syrc', + /* SCRIPT_THAANA */ 8 => 'thaa', + /* SCRIPT_DEVANAGARI */ 9 => 'dev2', + /* SCRIPT_BENGALI */ 10 => 'bng2', + /* SCRIPT_GURMUKHI */ 11 => 'gur2', + /* SCRIPT_GUJARATI */ 12 => 'gjr2', + /* SCRIPT_ORIYA */ 13 => 'ory2', + /* SCRIPT_TAMIL */ 14 => 'tml2', + /* SCRIPT_TELUGU */ 15 => 'tel2', + /* SCRIPT_KANNADA */ 16 => 'knd2', + /* SCRIPT_MALAYALAM */ 17 => 'mlm2', + /* SCRIPT_SINHALA */ 18 => 'sinh', + /* SCRIPT_THAI */ 19 => 'thai', + /* SCRIPT_LAO */ 20 => 'lao ', + /* SCRIPT_TIBETAN */ 21 => 'tibt', + /* SCRIPT_MYANMAR */ 22 => 'mym2', + /* SCRIPT_GEORGIAN */ 23 => 'geor', + /* SCRIPT_HANGUL */ 24 => 'jamo', /* there is also a hang tag, but we want to activate jamo features if present */ + /* SCRIPT_ETHIOPIC */ 25 => 'ethi', + /* SCRIPT_CHEROKEE */ 26 => 'cher', + /* SCRIPT_CANADIAN_ABORIGINAL */ 27 => 'cans', + /* SCRIPT_OGHAM */ 28 => 'ogam', + /* SCRIPT_RUNIC */ 29 => 'runr', + /* SCRIPT_KHMER */ 30 => 'khmr', + /* SCRIPT_MONGOLIAN */ 31 => 'mong', + /* SCRIPT_HIRAGANA */ 32 => 'kana', + /* SCRIPT_KATAKANA */ 33 => 'kana', + /* SCRIPT_BOPOMOFO */ 34 => 'bopo', + /* SCRIPT_HAN */ 35 => 'hani', + /* SCRIPT_YI */ 36 => 'yi ', + /* SCRIPT_OLD_ITALIC */ 37 => 'ital', + /* SCRIPT_GOTHIC */ 38 => 'goth', + /* SCRIPT_DESERET */ 39 => 'dsrt', + /* SCRIPT_INHERITED */ 40 => '', + /* SCRIPT_TAGALOG */ 41 => 'tglg', + /* SCRIPT_HANUNOO */ 42 => 'hano', + /* SCRIPT_BUHID */ 43 => 'buhd', + /* SCRIPT_TAGBANWA */ 44 => 'tagb', + /* SCRIPT_LIMBU */ 45 => 'limb', + /* SCRIPT_TAI_LE */ 46 => 'tale', + /* SCRIPT_LINEAR_B */ 47 => 'linb', + /* SCRIPT_UGARITIC */ 48 => 'ugar', + /* SCRIPT_SHAVIAN */ 49 => 'shaw', + /* SCRIPT_OSMANYA */ 50 => 'osma', + /* SCRIPT_CYPRIOT */ 51 => 'cprt', + /* SCRIPT_BRAILLE */ 52 => 'brai', + /* SCRIPT_BUGINESE */ 53 => 'bugi', + /* SCRIPT_COPTIC */ 54 => 'copt', + /* SCRIPT_NEW_TAI_LUE */ 55 => 'talu', + /* SCRIPT_GLAGOLITIC */ 56 => 'glag', + /* SCRIPT_TIFINAGH */ 57 => 'tfng', + /* SCRIPT_SYLOTI_NAGRI */ 58 => 'sylo', + /* SCRIPT_OLD_PERSIAN */ 59 => 'xpeo', + /* SCRIPT_KHAROSHTHI */ 60 => 'khar', + /* SCRIPT_BALINESE */ 61 => 'bali', + /* SCRIPT_CUNEIFORM */ 62 => 'xsux', + /* SCRIPT_PHOENICIAN */ 63 => 'phnx', + /* SCRIPT_PHAGS_PA */ 64 => 'phag', + /* SCRIPT_NKO */ 65 => 'nko ', + /* SCRIPT_SUNDANESE */ 66 => 'sund', + /* SCRIPT_LEPCHA */ 67 => 'lepc', + /* SCRIPT_OL_CHIKI */ 68 => 'olck', + /* SCRIPT_VAI */ 69 => 'vai ', + /* SCRIPT_SAURASHTRA */ 70 => 'saur', + /* SCRIPT_KAYAH_LI */ 71 => 'kali', + /* SCRIPT_REJANG */ 72 => 'rjng', + /* SCRIPT_LYCIAN */ 73 => 'lyci', + /* SCRIPT_CARIAN */ 74 => 'cari', + /* SCRIPT_LYDIAN */ 75 => 'lydi', + /* SCRIPT_CHAM */ 76 => 'cham', + /* SCRIPT_TAI_THAM */ 77 => 'lana', + /* SCRIPT_TAI_VIET */ 78 => 'tavt', + /* SCRIPT_AVESTAN */ 79 => 'avst', + /* SCRIPT_EGYPTIAN_HIEROGLYPHS */ 80 => 'egyp', + /* SCRIPT_SAMARITAN */ 81 => 'samr', + /* SCRIPT_LISU */ 82 => 'lisu', + /* SCRIPT_BAMUM */ 83 => 'bamu', + /* SCRIPT_JAVANESE */ 84 => 'java', + /* SCRIPT_MEETEI_MAYEK */ 85 => 'mtei', + /* SCRIPT_IMPERIAL_ARAMAIC */ 86 => 'armi', + /* SCRIPT_OLD_SOUTH_ARABIAN */ 87 => 'sarb', + /* SCRIPT_INSCRIPTIONAL_PARTHIAN */ 88 => 'prti', + /* SCRIPT_INSCRIPTIONAL_PAHLAVI */ 89 => 'phli', + /* SCRIPT_OLD_TURKIC */ 90 => 'orkh', + /* SCRIPT_KAITHI */ 91 => 'kthi', + /* SCRIPT_BATAK */ 92 => 'batk', + /* SCRIPT_BRAHMI */ 93 => 'brah', + /* SCRIPT_MANDAIC */ 94 => 'mand', + /* SCRIPT_CHAKMA */ 95 => 'cakm', + /* SCRIPT_MEROITIC_CURSIVE */ 96 => 'merc', + /* SCRIPT_MEROITIC_HIEROGLYPHS */ 97 => 'mero', + /* SCRIPT_MIAO */ 98 => 'plrd', + /* SCRIPT_SHARADA */ 99 => 'shrd', + /* SCRIPT_SORA_SOMPENG */ 100 => 'sora', + /* SCRIPT_TAKRI */ 101 => 'takr', + /* SCRIPT_UNKNOWN */ 102 => '', + ]; + + public static $ot_languages = [ + 'aa' => 'AFR ', /* Afar */ + 'ab' => 'ABK ', /* Abkhazian */ + 'abq' => 'ABA ', /* Abaza */ + 'ada' => 'DNG ', /* Dangme */ + 'ady' => 'ADY ', /* Adyghe */ + 'af' => 'AFK ', /* Afrikaans */ + 'aii' => 'SWA ', /* Swadaya Aramaic */ + 'aiw' => 'ARI ', /* Aari */ + 'alt' => 'ALT ', /* [Southern] Altai */ + 'am' => 'AMH ', /* Amharic */ + 'amf' => 'HBN ', /* Hammer-Banna */ + 'ar' => 'ARA ', /* Arabic */ + 'arn' => 'MAP ', /* Mapudungun */ + 'as' => 'ASM ', /* Assamese */ + 'ath' => 'ATH ', /* Athapaskan [family] */ + 'atv' => 'ALT ', /* [Northern] Altai */ + 'av' => 'AVR ', /* Avaric */ + 'awa' => 'AWA ', /* Awadhi */ + 'ay' => 'AYM ', /* Aymara */ + 'az' => 'AZE ', /* Azerbaijani */ + 'ba' => 'BSH ', /* Bashkir */ + 'bai' => 'BML ', /* Bamileke [family] */ + 'bal' => 'BLI ', /* Baluchi */ + 'bci' => 'BAU ', /* Baule */ + 'bcq' => 'BCH ', /* Bench */ + 'be' => 'BEL ', /* Belarussian */ + 'bem' => 'BEM ', /* Bemba (Zambia) */ + 'ber' => 'BER ', /* Berber [family] */ + 'bfq' => 'BAD ', /* Badaga */ + 'bft' => 'BLT ', /* Balti */ + 'bfy' => 'BAG ', /* Baghelkhandi */ + 'bg' => 'BGR ', /* Bulgarian */ + 'bhb' => 'BHI ', /* Bhili */ + 'bho' => 'BHO ', /* Bhojpuri */ + 'bik' => 'BIK ', /* Bikol */ + 'bin' => 'EDO ', /* Bini */ + 'bjt' => 'BLN ', /* Balanta-Ganja */ + 'bla' => 'BKF ', /* Blackfoot */ + 'ble' => 'BLN ', /* Balanta-Kentohe */ + 'bm' => 'BMB ', /* Bambara */ + 'bn' => 'BEN ', /* Bengali */ + 'bo' => 'TIB ', /* Tibetan */ + 'br' => 'BRE ', /* Breton */ + 'bra' => 'BRI ', /* Braj Bhasha */ + 'brh' => 'BRH ', /* Brahui */ + 'bs' => 'BOS ', /* Bosnian */ + 'btb' => 'BTI ', /* Beti (Cameroon) */ + 'bxr' => 'RBU ', /* Russian Buriat */ + 'byn' => 'BIL ', /* Bilen */ + 'ca' => 'CAT ', /* Catalan */ + 'ce' => 'CHE ', /* Chechen */ + 'ceb' => 'CEB ', /* Cebuano */ + 'chp' => 'CHP ', /* Chipewyan */ + 'chr' => 'CHR ', /* Cherokee */ + 'ckt' => 'CHK ', /* Chukchi */ + 'cop' => 'COP ', /* Coptic */ + 'cr' => 'CRE ', /* Cree */ + 'crh' => 'CRT ', /* Crimean Tatar */ + 'crj' => 'ECR ', /* [Southern] East Cree */ + 'crl' => 'ECR ', /* [Northern] East Cree */ + 'crm' => 'MCR ', /* Moose Cree */ + 'crx' => 'CRR ', /* Carrier */ + 'cs' => 'CSY ', /* Czech */ + 'cu' => 'CSL ', /* Church Slavic */ + 'cv' => 'CHU ', /* Chuvash */ + 'cwd' => 'DCR ', /* Woods Cree */ + 'cy' => 'WEL ', /* Welsh */ + 'da' => 'DAN ', /* Danish */ + 'dap' => 'NIS ', /* Nisi (India) */ + 'dar' => 'DAR ', /* Dargwa */ + 'de' => 'DEU ', /* German */ + 'din' => 'DNK ', /* Dinka */ + 'dje' => 'DJR ', /* Djerma */ + 'dng' => 'DUN ', /* Dungan */ + 'doi' => 'DGR ', /* Dogri */ + 'dsb' => 'LSB ', /* Lower Sorbian */ + 'dv' => 'DIV ', /* Dhivehi */ + 'dyu' => 'JUL ', /* Jula */ + 'dz' => 'DZN ', /* Dzongkha */ + 'ee' => 'EWE ', /* Ewe */ + 'efi' => 'EFI ', /* Efik */ + 'el' => 'ELL ', /* Modern Greek (1453-) */ + 'grc' => 'PGR ', /* Polytonic Greek */ + 'en' => 'ENG ', /* English */ + 'eo' => 'NTO ', /* Esperanto */ + 'eot' => 'BTI ', /* Beti (Côte d'Ivoire) */ + 'es' => 'ESP ', /* Spanish */ + 'et' => 'ETI ', /* Estonian */ + 'eu' => 'EUQ ', /* Basque */ + 'eve' => 'EVN ', /* Even */ + 'evn' => 'EVK ', /* Evenki */ + 'fa' => 'FAR ', /* Persian */ + 'ff' => 'FUL ', /* Fulah */ + 'fi' => 'FIN ', /* Finnish */ + 'fil' => 'PIL ', /* Filipino */ + 'fj' => 'FJI ', /* Fijian */ + 'fo' => 'FOS ', /* Faroese */ + 'fon' => 'FON ', /* Fon */ + 'fr' => 'FRA ', /* French */ + 'fur' => 'FRL ', /* Friulian */ + 'fy' => 'FRI ', /* Western Frisian */ + 'ga' => 'IRI ', /* Irish */ + 'gaa' => 'GAD ', /* Ga */ + 'gag' => 'GAG ', /* Gagauz */ + 'gbm' => 'GAW ', /* Garhwali */ + 'gd' => 'GAE ', /* Scottish Gaelic */ + 'gez' => 'GEZ ', /* Ge'ez */ + 'gl' => 'GAL ', /* Galician */ + 'gld' => 'NAN ', /* Nanai */ + 'gn' => 'GUA ', /* Guarani */ + 'gon' => 'GON ', /* Gondi */ + 'grt' => 'GRO ', /* Garo */ + 'gru' => 'SOG ', /* Sodo Gurage */ + 'gu' => 'GUJ ', /* Gujarati */ + 'guk' => 'GMZ ', /* Gumuz */ + 'gv' => 'MNX ', /* Manx Gaelic */ + 'ha' => 'HAU ', /* Hausa */ + 'har' => 'HRI ', /* Harari */ + 'haw' => 'HAW ', /* Hawaiin */ + 'he' => 'IWR ', /* Hebrew */ + 'hi' => 'HIN ', /* Hindi */ + 'hil' => 'HIL ', /* Hiligaynon */ + 'hnd' => 'HND ', /* [Southern] Hindko */ + 'hne' => 'CHH ', /* Chattisgarhi */ + 'hno' => 'HND ', /* [Northern] Hindko */ + 'hoc' => 'HO ', /* Ho */ + 'hoj' => 'HAR ', /* Harauti */ + 'hr' => 'HRV ', /* Croatian */ + 'hsb' => 'USB ', /* Upper Sorbian */ + 'ht' => 'HAI ', /* Haitian */ + 'hu' => 'HUN ', /* Hungarian */ + 'hy' => 'HYE ', /* Armenian */ + 'id' => 'IND ', /* Indonesian */ + 'ig' => 'IBO ', /* Igbo */ + 'igb' => 'EBI ', /* Ebira */ + 'ijo' => 'IJO ', /* Ijo [family] */ + 'ilo' => 'ILO ', /* Ilokano */ + 'inh' => 'ING ', /* Ingush */ + 'is' => 'ISL ', /* Icelandic */ + 'it' => 'ITA ', /* Italian */ + 'iu' => 'INU ', /* Inuktitut */ + 'ja' => 'JAN ', /* Japanese */ + 'jv' => 'JAV ', /* Javanese */ + 'ka' => 'KAT ', /* Georgian */ + 'kaa' => 'KRK ', /* Karakalpak */ + 'kam' => 'KMB ', /* Kamba (Kenya) */ + 'kar' => 'KRN ', /* Karen [family] */ + 'kbd' => 'KAB ', /* Kabardian */ + 'kdr' => 'KRM ', /* Karaim */ + 'kdt' => 'KUY ', /* Kuy */ + 'kex' => 'KKN ', /* Kokni */ + 'kfr' => 'KAC ', /* Kachchi */ + 'kfy' => 'KMN ', /* Kumaoni */ + 'kha' => 'KSI ', /* Khasi */ + 'khb' => 'XBD ', /* Tai Lue */ + 'khw' => 'KHW ', /* Khowar */ + 'ki' => 'KIK ', /* Kikuyu */ + 'kjh' => 'KHA ', /* Khakass */ + 'kk' => 'KAZ ', /* Kazakh */ + 'kl' => 'GRN ', /* Kalaallisut */ + 'kln' => 'KAL ', /* Kalenjin */ + 'km' => 'KHM ', /* Central Khmer */ + 'kmb' => 'MBN ', /* [North] Mbundu */ + 'kmw' => 'KMO ', /* Komo (Democratic Republic of Congo) */ + 'kn' => 'KAN ', /* Kannada */ + 'ko' => 'KOR ', /* Korean */ + 'koi' => 'KOP ', /* Komi-Permyak */ + 'kok' => 'KOK ', /* Konkani */ + 'kpe' => 'KPL ', /* Kpelle */ + 'kpv' => 'KOZ ', /* Komi-Zyrian */ + 'kpy' => 'KYK ', /* Koryak */ + 'kqy' => 'KRT ', /* Koorete */ + 'kr' => 'KNR ', /* Kanuri */ + 'kri' => 'KRI ', /* Krio */ + 'krl' => 'KRL ', /* Karelian */ + 'kru' => 'KUU ', /* Kurukh */ + 'ks' => 'KSH ', /* Kashmiri */ + 'ku' => 'KUR ', /* Kurdish */ + 'kum' => 'KUM ', /* Kumyk */ + 'kvd' => 'KUI ', /* Kui (Indonesia) */ + 'kxc' => 'KMS ', /* Komso */ + 'kxu' => 'KUI ', /* Kui (India) */ + 'ky' => 'KIR ', /* Kirghiz */ + 'la' => 'LAT ', /* Latin */ + 'lad' => 'JUD ', /* Ladino */ + 'lb' => 'LTZ ', /* Luxembourgish */ + 'lbe' => 'LAK ', /* Lak */ + 'lbj' => 'LDK ', /* Ladakhi */ + 'lez' => 'LEZ ', /* Lezgi */ + 'lg' => 'LUG ', /* Luganda */ + 'lif' => 'LMB ', /* Limbu */ + 'lld' => 'LAD ', /* Ladin */ + 'lmn' => 'LAM ', /* Lambani */ + 'ln' => 'LIN ', /* Lingala */ + 'lo' => 'LAO ', /* Lao */ + 'lt' => 'LTH ', /* Lithuanian */ + 'lu' => 'LUB ', /* Luba-Katanga */ + 'lua' => 'LUB ', /* Luba-Kasai */ + 'luo' => 'LUO ', /* Luo (Kenya and Tanzania) */ + 'lus' => 'MIZ ', /* Mizo */ + 'luy' => 'LUH ', /* Luhya [macrolanguage] */ + 'lv' => 'LVI ', /* Latvian */ + 'lzz' => 'LAZ ', /* Laz */ + 'mai' => 'MTH ', /* Maithili */ + 'mdc' => 'MLE ', /* Male (Papua New Guinea) */ + 'mdf' => 'MOK ', /* Moksha */ + 'mdy' => 'MLE ', /* Male (Ethiopia) */ + 'men' => 'MDE ', /* Mende (Sierra Leone) */ + 'mg' => 'MLG ', /* Malagasy */ + 'mhr' => 'LMA ', /* Low Mari */ + 'mi' => 'MRI ', /* Maori */ + 'mk' => 'MKD ', /* Macedonian */ + 'ml' => 'MLR ', /* Malayalam reformed (MAL is Malayalam Traditional) */ + 'mn' => 'MNG ', /* Mongolian */ + 'mnc' => 'MCH ', /* Manchu */ + 'mni' => 'MNI ', /* Manipuri */ + 'mnk' => 'MND ', /* Mandinka */ + 'mns' => 'MAN ', /* Mansi */ + 'mnw' => 'MON ', /* Mon */ + 'mo' => 'MOL ', /* Moldavian */ + 'moh' => 'MOH ', /* Mohawk */ + 'mpe' => 'MAJ ', /* Majang */ + 'mr' => 'MAR ', /* Marathi */ + 'mrj' => 'HMA ', /* High Mari */ + 'ms' => 'MLY ', /* Malay */ + 'mt' => 'MTS ', /* Maltese */ + 'mwr' => 'MAW ', /* Marwari */ + 'my' => 'BRM ', /* Burmese */ + 'mym' => 'MEN ', /* Me'en */ + 'myv' => 'ERZ ', /* Erzya */ + 'nag' => 'NAG ', /* Naga-Assamese */ + 'nb' => 'NOR ', /* Norwegian Bokmål */ + 'nco' => 'SIB ', /* Sibe */ + 'nd' => 'NDB ', /* [North] Ndebele */ + 'ne' => 'NEP ', /* Nepali */ + 'new' => 'NEW ', /* Newari */ + 'ng' => 'NDG ', /* Ndonga */ + 'ngl' => 'LMW ', /* Lomwe */ + 'niu' => 'NIU ', /* Niuean */ + 'niv' => 'GIL ', /* Gilyak */ + 'nl' => 'NLD ', /* Dutch */ + 'nn' => 'NYN ', /* Norwegian Nynorsk */ + 'no' => 'NOR ', /* Norwegian (deprecated) */ + 'nod' => 'NTA ', /* Northern Tai */ + 'nog' => 'NOG ', /* Nogai */ + 'nqo' => 'NKO ', /* N'Ko */ + 'nr' => 'NDB ', /* [South] Ndebele */ + 'nsk' => 'NAS ', /* Naskapi */ + 'nso' => 'SOT ', /* [Northern] Sotho */ + 'ny' => 'CHI ', /* Nyanja */ + 'nyn' => 'NKL ', /* Nkole */ + 'oc' => 'OCI ', /* Occitan (post 1500) */ + 'oj' => 'OJB ', /* Ojibwa */ + 'ojs' => 'OCR ', /* Oji-Cree */ + 'om' => 'ORO ', /* Oromo */ + 'or' => 'ORI ', /* Oriya */ + 'os' => 'OSS ', /* Ossetian */ + 'pa' => 'PAN ', /* Panjabi */ + 'pce' => 'PLG ', /* [Ruching] Palaung */ + 'pi' => 'PAL ', /* Pali */ + 'pl' => 'PLK ', /* Polish */ + 'pll' => 'PLG ', /* [Shwe] Palaung */ + 'plp' => 'PAP ', /* Palpa */ + 'prs' => 'DRI ', /* Dari */ + 'ps' => 'PAS ', /* Pushto */ + 'pt' => 'PTG ', /* Portuguese */ + 'raj' => 'RAJ ', /* Rajasthani */ + 'rbb' => 'PLG ', /* [Rumai] Palaung */ + 'ria' => 'RIA ', /* Riang (India) */ + 'ril' => 'RIA ', /* Riang (Myanmar) */ + 'rki' => 'ARK ', /* Arakanese */ + 'rm' => 'RMS ', /* Rhaeto-Romanic */ + 'ro' => 'ROM ', /* Romanian */ + 'rom' => 'ROY ', /* Romany */ + 'ru' => 'RUS ', /* Russian */ + 'rue' => 'RSY ', /* Rusyn */ + 'rw' => 'RUA ', /* Ruanda */ + 'sa' => 'SAN ', /* Sanskrit */ + 'sah' => 'YAK ', /* Yakut */ + 'sat' => 'SAT ', /* Santali */ + 'sck' => 'SAD ', /* Sadri */ + 'scs' => 'SLA ', /* [North] Slavey */ + 'sd' => 'SND ', /* Sindhi */ + 'se' => 'NSM ', /* Northern Sami */ + 'seh' => 'SNA ', /* Sena */ + 'sel' => 'SEL ', /* Selkup */ + 'sg' => 'SGO ', /* Sango */ + 'shn' => 'SHN ', /* Shan */ + 'si' => 'SNH ', /* Sinhala */ + 'sid' => 'SID ', /* Sidamo */ + 'sjd' => 'KSM ', /* Kildin Sami */ + 'sk' => 'SKY ', /* Slovak */ + 'skr' => 'SRK ', /* Seraiki */ + 'sl' => 'SLV ', /* Slovenian */ + 'sm' => 'SMO ', /* Samoan */ + 'sma' => 'SSM ', /* Southern Sami */ + 'smj' => 'LSM ', /* Lule Sami */ + 'smn' => 'ISM ', /* Inari Sami */ + 'sms' => 'SKS ', /* Skolt Sami */ + 'snk' => 'SNK ', /* Soninke */ + 'so' => 'SML ', /* Somali */ + 'sq' => 'SQI ', /* Albanian */ + 'sr' => 'SRB ', /* Serbian */ + 'srr' => 'SRR ', /* Serer */ + 'ss' => 'SWZ ', /* Swazi */ + 'st' => 'SOT ', /* [Southern] Sotho */ + 'suq' => 'SUR ', /* Suri */ + 'sv' => 'SVE ', /* Swedish */ + 'sva' => 'SVA ', /* Svan */ + 'sw' => 'SWK ', /* Swahili */ + 'swb' => 'CMR ', /* Comorian */ + 'syr' => 'SYR ', /* Syriac */ + 'ta' => 'TAM ', /* Tamil */ + 'tab' => 'TAB ', /* Tabasaran */ + 'tcy' => 'TUL ', /* Tulu */ + 'te' => 'TEL ', /* Telugu */ + 'tem' => 'TMN ', /* Temne */ + 'tg' => 'TAJ ', /* Tajik */ + 'th' => 'THA ', /* Thai */ + 'ti' => 'TGY ', /* Tigrinya */ + 'tig' => 'TGR ', /* Tigre */ + 'tk' => 'TKM ', /* Turkmen */ + 'tn' => 'TNA ', /* Tswana */ + 'to' => 'TGN ', /* Tonga (Tonga Islands) */ + 'tr' => 'TRK ', /* Turkish */ + 'tru' => 'TUA ', /* Turoyo Aramaic */ + 'ts' => 'TSG ', /* Tsonga */ + 'tt' => 'TAT ', /* Tatar */ + 'tw' => 'TWI ', /* Twi */ + 'ty' => 'THT ', /* Tahitian */ + 'tyv' => 'TUV ', /* Tuvin */ + 'udm' => 'UDM ', /* Udmurt */ + 'ug' => 'UYG ', /* Uighur */ + 'uk' => 'UKR ', /* Ukrainian */ + 'umb' => 'MBN ', /* [South] Mbundu */ + 'unr' => 'MUN ', /* Mundari */ + 'ur' => 'URD ', /* Urdu */ + 'uz' => 'UZB ', /* Uzbek */ + 've' => 'VEN ', /* Venda */ + 'vi' => 'VIT ', /* Vietnamese */ + 'vmw' => 'MAK ', /* Makua */ + 'wbm' => 'WA ', /* Wa */ + 'wbr' => 'WAG ', /* Wagdi */ + 'wo' => 'WLF ', /* Wolof */ + 'xal' => 'KLM ', /* Kalmyk */ + 'xh' => 'XHS ', /* Xhosa */ + 'xom' => 'KMO ', /* Komo (Sudan) */ + 'xsl' => 'SSL ', /* South Slavey */ + 'yi' => 'JII ', /* Yiddish */ + 'yid' => 'JII ', /* Yiddish */ + 'yo' => 'YBA ', /* Yoruba */ + 'yso' => 'NIS ', /* Nisi (China) */ + 'zne' => 'ZND ', /* Zande */ + 'zu' => 'ZUL ', /* Zulu */ + 'zh-cn' => 'ZHS ', /* Chinese (China) */ + 'zh-hk' => 'ZHH ', /* Chinese (Hong Kong) */ + 'zh-mo' => 'ZHT ', /* Chinese (Macao) */ + 'zh-sg' => 'ZHS ', /* Chinese (Singapore) */ + 'zh-tw' => 'ZHT ', /* Chinese (Taiwan) */ + ]; + + // hb-unicode.h + const UNICODE_GENERAL_CATEGORY_CONTROL = 0; /* Cc */ + const UNICODE_GENERAL_CATEGORY_FORMAT = 1; /* Cf */ + const UNICODE_GENERAL_CATEGORY_UNASSIGNED = 2; /* Cn */ + const UNICODE_GENERAL_CATEGORY_PRIVATE_USE = 3; /* Co */ + const UNICODE_GENERAL_CATEGORY_SURROGATE = 4; /* Cs */ + const UNICODE_GENERAL_CATEGORY_LOWERCASE_LETTER = 5; /* Ll */ + const UNICODE_GENERAL_CATEGORY_MODIFIER_LETTER = 6; /* Lm */ + const UNICODE_GENERAL_CATEGORY_OTHER_LETTER = 7; /* Lo */ + const UNICODE_GENERAL_CATEGORY_TITLECASE_LETTER = 8; /* Lt */ + const UNICODE_GENERAL_CATEGORY_UPPERCASE_LETTER = 9; /* Lu */ + const UNICODE_GENERAL_CATEGORY_SPACING_MARK = 10; /* Mc */ + const UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK = 11; /* Me */ + const UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK = 12; /* Mn */ + const UNICODE_GENERAL_CATEGORY_DECIMAL_NUMBER = 13; /* Nd */ + const UNICODE_GENERAL_CATEGORY_LETTER_NUMBER = 14; /* Nl */ + const UNICODE_GENERAL_CATEGORY_OTHER_NUMBER = 15; /* No */ + const UNICODE_GENERAL_CATEGORY_CONNECT_PUNCTUATION = 16; /* Pc */ + const UNICODE_GENERAL_CATEGORY_DASH_PUNCTUATION = 17; /* Pd */ + const UNICODE_GENERAL_CATEGORY_CLOSE_PUNCTUATION = 18; /* Pe */ + const UNICODE_GENERAL_CATEGORY_FINAL_PUNCTUATION = 19; /* Pf */ + const UNICODE_GENERAL_CATEGORY_INITIAL_PUNCTUATION = 20; /* Pi */ + const UNICODE_GENERAL_CATEGORY_OTHER_PUNCTUATION = 21; /* Po */ + const UNICODE_GENERAL_CATEGORY_OPEN_PUNCTUATION = 22; /* Ps */ + const UNICODE_GENERAL_CATEGORY_CURRENCY_SYMBOL = 23; /* Sc */ + const UNICODE_GENERAL_CATEGORY_MODIFIER_SYMBOL = 24; /* Sk */ + const UNICODE_GENERAL_CATEGORY_MATH_SYMBOL = 25; /* Sm */ + const UNICODE_GENERAL_CATEGORY_OTHER_SYMBOL = 26; /* So */ + const UNICODE_GENERAL_CATEGORY_LINE_SEPARATOR = 27; /* Zl */ + const UNICODE_GENERAL_CATEGORY_PARAGRAPH_SEPARATOR = 28; /* Zp */ + const UNICODE_GENERAL_CATEGORY_SPACE_SEPARATOR = 29; /* Zs */ + + function general_category_is_mark($gen_cat) + { + return $gen_cat == self::UNICODE_GENERAL_CATEGORY_SPACING_MARK || $gen_cat == self::UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK || + $gen_cat == self::UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK; + // define UNICODE_GENERAL_CATEGORY_IS_MARK(gen_cat) + //if (FLAG(gen_cat) & (FLAG(UNICODE_GENERAL_CATEGORY_SPACING_MARK) | FLAG(UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK) | FLAG(UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK))) { return true; } + } + + const BIDI_CLASS_L = 0; + const BIDI_CLASS_LRE = 1; + const BIDI_CLASS_LRO = 2; + const BIDI_CLASS_R = 3; + const BIDI_CLASS_AL = 4; + const BIDI_CLASS_RLE = 5; + const BIDI_CLASS_RLO = 6; + const BIDI_CLASS_PDF = 7; + const BIDI_CLASS_EN = 8; + const BIDI_CLASS_ES = 9; + const BIDI_CLASS_ET = 10; + const BIDI_CLASS_AN = 11; + const BIDI_CLASS_CS = 12; + const BIDI_CLASS_NSM = 13; + const BIDI_CLASS_BN = 14; + const BIDI_CLASS_B = 15; + const BIDI_CLASS_S = 16; + const BIDI_CLASS_WS = 17; + const BIDI_CLASS_ON = 18; + + // UNIDATA_VERSION 6.2.0 + /* a list of unique database records */ + /* struct { + category; + combining; + bidi_class; + mirrored; + east_asian_width; + normalization_check; + script; + } + */ + private static $ucd_records = [ + [2, 0, 18, 0, 5, 0, 102], + [0, 0, 14, 0, 5, 0, 0], + [0, 0, 16, 0, 5, 0, 0], + [0, 0, 15, 0, 5, 0, 0], + [0, 0, 17, 0, 5, 0, 0], + [29, 0, 17, 0, 3, 0, 0], + [21, 0, 18, 0, 3, 0, 0], + [21, 0, 10, 0, 3, 0, 0], + [23, 0, 10, 0, 3, 0, 0], + [22, 0, 18, 1, 3, 0, 0], + [18, 0, 18, 1, 3, 0, 0], + [25, 0, 9, 0, 3, 0, 0], + [21, 0, 12, 0, 3, 0, 0], + [17, 0, 9, 0, 3, 0, 0], + [13, 0, 8, 0, 3, 0, 0], + [25, 0, 18, 1, 3, 0, 0], + [25, 0, 18, 0, 3, 0, 0], + [9, 0, 0, 0, 3, 0, 1], + [24, 0, 18, 0, 3, 0, 0], + [16, 0, 18, 0, 3, 0, 0], + [5, 0, 0, 0, 3, 0, 1], + [29, 0, 12, 0, 5, 0, 0], + [21, 0, 18, 0, 4, 0, 0], + [23, 0, 10, 0, 4, 0, 0], + [26, 0, 18, 0, 3, 0, 0], + [24, 0, 18, 0, 4, 0, 0], + [26, 0, 18, 0, 5, 0, 0], + [7, 0, 0, 0, 4, 0, 1], + [20, 0, 18, 1, 5, 0, 0], + [1, 0, 14, 0, 4, 0, 0], + [26, 0, 18, 0, 4, 0, 0], + [26, 0, 10, 0, 4, 0, 0], + [25, 0, 10, 0, 4, 0, 0], + [15, 0, 8, 0, 4, 0, 0], + [5, 0, 0, 0, 5, 0, 0], + [19, 0, 18, 1, 5, 0, 0], + [15, 0, 18, 0, 4, 0, 0], + [9, 0, 0, 0, 5, 0, 1], + [9, 0, 0, 0, 4, 0, 1], + [25, 0, 18, 0, 4, 0, 0], + [5, 0, 0, 0, 4, 0, 1], + [5, 0, 0, 0, 5, 0, 1], + [7, 0, 0, 0, 5, 0, 1], + [8, 0, 0, 0, 5, 0, 1], + [6, 0, 0, 0, 5, 0, 1], + [6, 0, 18, 0, 5, 0, 0], + [6, 0, 0, 0, 5, 0, 0], + [24, 0, 18, 0, 5, 0, 0], + [6, 0, 18, 0, 4, 0, 0], + [6, 0, 0, 0, 4, 0, 0], + [24, 0, 18, 0, 5, 0, 34], + [12, 230, 13, 0, 4, 0, 40], + [12, 232, 13, 0, 4, 0, 40], + [12, 220, 13, 0, 4, 0, 40], + [12, 216, 13, 0, 4, 0, 40], + [12, 202, 13, 0, 4, 0, 40], + [12, 1, 13, 0, 4, 0, 40], + [12, 240, 13, 0, 4, 0, 40], + [12, 0, 13, 0, 4, 0, 40], + [12, 233, 13, 0, 4, 0, 40], + [12, 234, 13, 0, 4, 0, 40], + [9, 0, 0, 0, 5, 0, 2], + [5, 0, 0, 0, 5, 0, 2], + [24, 0, 18, 0, 5, 0, 2], + [2, 0, 18, 0, 5, 0, 102], + [6, 0, 0, 0, 5, 0, 2], + [21, 0, 18, 0, 5, 0, 0], + [9, 0, 0, 0, 4, 0, 2], + [5, 0, 0, 0, 4, 0, 2], + [9, 0, 0, 0, 5, 0, 54], + [5, 0, 0, 0, 5, 0, 54], + [25, 0, 18, 0, 5, 0, 2], + [9, 0, 0, 0, 5, 0, 3], + [9, 0, 0, 0, 4, 0, 3], + [5, 0, 0, 0, 4, 0, 3], + [5, 0, 0, 0, 5, 0, 3], + [26, 0, 0, 0, 5, 0, 3], + [12, 230, 13, 0, 5, 0, 3], + [12, 230, 13, 0, 5, 0, 40], + [11, 0, 13, 0, 5, 0, 3], + [9, 0, 0, 0, 5, 0, 4], + [6, 0, 0, 0, 5, 0, 4], + [21, 0, 0, 0, 5, 0, 4], + [5, 0, 0, 0, 5, 0, 4], + [21, 0, 0, 0, 5, 0, 0], + [17, 0, 18, 0, 5, 0, 4], + [23, 0, 10, 0, 5, 0, 4], + [12, 220, 13, 0, 5, 0, 5], + [12, 230, 13, 0, 5, 0, 5], + [12, 222, 13, 0, 5, 0, 5], + [12, 228, 13, 0, 5, 0, 5], + [12, 10, 13, 0, 5, 0, 5], + [12, 11, 13, 0, 5, 0, 5], + [12, 12, 13, 0, 5, 0, 5], + [12, 13, 13, 0, 5, 0, 5], + [12, 14, 13, 0, 5, 0, 5], + [12, 15, 13, 0, 5, 0, 5], + [12, 16, 13, 0, 5, 0, 5], + [12, 17, 13, 0, 5, 0, 5], + [12, 18, 13, 0, 5, 0, 5], + [12, 19, 13, 0, 5, 0, 5], + [12, 20, 13, 0, 5, 0, 5], + [12, 21, 13, 0, 5, 0, 5], + [12, 22, 13, 0, 5, 0, 5], + [17, 0, 3, 0, 5, 0, 5], + [12, 23, 13, 0, 5, 0, 5], + [21, 0, 3, 0, 5, 0, 5], + [12, 24, 13, 0, 5, 0, 5], + [12, 25, 13, 0, 5, 0, 5], + [7, 0, 3, 0, 5, 0, 5], + [1, 0, 11, 0, 5, 0, 6], + [25, 0, 18, 0, 5, 0, 6], + [25, 0, 4, 0, 5, 0, 6], + [21, 0, 10, 0, 5, 0, 6], + [23, 0, 4, 0, 5, 0, 6], + [21, 0, 12, 0, 5, 0, 0], + [21, 0, 4, 0, 5, 0, 6], + [26, 0, 18, 0, 5, 0, 6], + [12, 230, 13, 0, 5, 0, 6], + [12, 30, 13, 0, 5, 0, 6], + [12, 31, 13, 0, 5, 0, 6], + [12, 32, 13, 0, 5, 0, 6], + [21, 0, 4, 0, 5, 0, 0], + [7, 0, 4, 0, 5, 0, 6], + [6, 0, 4, 0, 5, 0, 0], + [12, 27, 13, 0, 5, 0, 40], + [12, 28, 13, 0, 5, 0, 40], + [12, 29, 13, 0, 5, 0, 40], + [12, 30, 13, 0, 5, 0, 40], + [12, 31, 13, 0, 5, 0, 40], + [12, 32, 13, 0, 5, 0, 40], + [12, 33, 13, 0, 5, 0, 40], + [12, 34, 13, 0, 5, 0, 40], + [12, 220, 13, 0, 5, 0, 40], + [12, 220, 13, 0, 5, 0, 6], + [13, 0, 11, 0, 5, 0, 0], + [21, 0, 11, 0, 5, 0, 6], + [12, 35, 13, 0, 5, 0, 40], + [1, 0, 11, 0, 5, 0, 0], + [6, 0, 4, 0, 5, 0, 6], + [13, 0, 8, 0, 5, 0, 6], + [26, 0, 4, 0, 5, 0, 6], + [21, 0, 4, 0, 5, 0, 7], + [1, 0, 4, 0, 5, 0, 7], + [7, 0, 4, 0, 5, 0, 7], + [12, 36, 13, 0, 5, 0, 7], + [12, 230, 13, 0, 5, 0, 7], + [12, 220, 13, 0, 5, 0, 7], + [7, 0, 4, 0, 5, 0, 8], + [12, 0, 13, 0, 5, 0, 8], + [13, 0, 3, 0, 5, 0, 65], + [7, 0, 3, 0, 5, 0, 65], + [12, 230, 13, 0, 5, 0, 65], + [12, 220, 13, 0, 5, 0, 65], + [6, 0, 3, 0, 5, 0, 65], + [26, 0, 18, 0, 5, 0, 65], + [21, 0, 18, 0, 5, 0, 65], + [7, 0, 3, 0, 5, 0, 81], + [12, 230, 13, 0, 5, 0, 81], + [6, 0, 3, 0, 5, 0, 81], + [21, 0, 3, 0, 5, 0, 81], + [7, 0, 3, 0, 5, 0, 94], + [12, 220, 13, 0, 5, 0, 94], + [21, 0, 3, 0, 5, 0, 94], + [12, 27, 13, 0, 5, 0, 6], + [12, 28, 13, 0, 5, 0, 6], + [12, 29, 13, 0, 5, 0, 6], + [12, 0, 13, 0, 5, 0, 9], + [10, 0, 0, 0, 5, 0, 9], + [7, 0, 0, 0, 5, 0, 9], + [12, 7, 13, 0, 5, 0, 9], + [12, 9, 13, 0, 5, 0, 9], + [12, 230, 13, 0, 5, 0, 9], + [13, 0, 0, 0, 5, 0, 9], + [21, 0, 0, 0, 5, 0, 9], + [6, 0, 0, 0, 5, 0, 9], + [12, 0, 13, 0, 5, 0, 10], + [10, 0, 0, 0, 5, 0, 10], + [7, 0, 0, 0, 5, 0, 10], + [12, 7, 13, 0, 5, 0, 10], + [12, 9, 13, 0, 5, 0, 10], + [13, 0, 0, 0, 5, 0, 10], + [23, 0, 10, 0, 5, 0, 10], + [15, 0, 0, 0, 5, 0, 10], + [26, 0, 0, 0, 5, 0, 10], + [12, 0, 13, 0, 5, 0, 11], + [10, 0, 0, 0, 5, 0, 11], + [7, 0, 0, 0, 5, 0, 11], + [12, 7, 13, 0, 5, 0, 11], + [12, 9, 13, 0, 5, 0, 11], + [13, 0, 0, 0, 5, 0, 11], + [12, 0, 13, 0, 5, 0, 12], + [10, 0, 0, 0, 5, 0, 12], + [7, 0, 0, 0, 5, 0, 12], + [12, 7, 13, 0, 5, 0, 12], + [12, 9, 13, 0, 5, 0, 12], + [13, 0, 0, 0, 5, 0, 12], + [21, 0, 0, 0, 5, 0, 12], + [23, 0, 10, 0, 5, 0, 12], + [12, 0, 13, 0, 5, 0, 13], + [10, 0, 0, 0, 5, 0, 13], + [7, 0, 0, 0, 5, 0, 13], + [12, 7, 13, 0, 5, 0, 13], + [12, 9, 13, 0, 5, 0, 13], + [13, 0, 0, 0, 5, 0, 13], + [26, 0, 0, 0, 5, 0, 13], + [15, 0, 0, 0, 5, 0, 13], + [12, 0, 13, 0, 5, 0, 14], + [7, 0, 0, 0, 5, 0, 14], + [10, 0, 0, 0, 5, 0, 14], + [12, 9, 13, 0, 5, 0, 14], + [13, 0, 0, 0, 5, 0, 14], + [15, 0, 0, 0, 5, 0, 14], + [26, 0, 18, 0, 5, 0, 14], + [23, 0, 10, 0, 5, 0, 14], + [10, 0, 0, 0, 5, 0, 15], + [7, 0, 0, 0, 5, 0, 15], + [12, 0, 13, 0, 5, 0, 15], + [12, 9, 13, 0, 5, 0, 15], + [12, 84, 13, 0, 5, 0, 15], + [12, 91, 13, 0, 5, 0, 15], + [13, 0, 0, 0, 5, 0, 15], + [15, 0, 18, 0, 5, 0, 15], + [26, 0, 0, 0, 5, 0, 15], + [10, 0, 0, 0, 5, 0, 16], + [7, 0, 0, 0, 5, 0, 16], + [12, 7, 13, 0, 5, 0, 16], + [12, 0, 0, 0, 5, 0, 16], + [12, 0, 13, 0, 5, 0, 16], + [12, 9, 13, 0, 5, 0, 16], + [13, 0, 0, 0, 5, 0, 16], + [10, 0, 0, 0, 5, 0, 17], + [7, 0, 0, 0, 5, 0, 17], + [12, 0, 13, 0, 5, 0, 17], + [12, 9, 13, 0, 5, 0, 17], + [13, 0, 0, 0, 5, 0, 17], + [15, 0, 0, 0, 5, 0, 17], + [26, 0, 0, 0, 5, 0, 17], + [10, 0, 0, 0, 5, 0, 18], + [7, 0, 0, 0, 5, 0, 18], + [12, 9, 13, 0, 5, 0, 18], + [12, 0, 13, 0, 5, 0, 18], + [21, 0, 0, 0, 5, 0, 18], + [7, 0, 0, 0, 5, 0, 19], + [12, 0, 13, 0, 5, 0, 19], + [12, 103, 13, 0, 5, 0, 19], + [12, 9, 13, 0, 5, 0, 19], + [23, 0, 10, 0, 5, 0, 0], + [6, 0, 0, 0, 5, 0, 19], + [12, 107, 13, 0, 5, 0, 19], + [21, 0, 0, 0, 5, 0, 19], + [13, 0, 0, 0, 5, 0, 19], + [7, 0, 0, 0, 5, 0, 20], + [12, 0, 13, 0, 5, 0, 20], + [12, 118, 13, 0, 5, 0, 20], + [6, 0, 0, 0, 5, 0, 20], + [12, 122, 13, 0, 5, 0, 20], + [13, 0, 0, 0, 5, 0, 20], + [7, 0, 0, 0, 5, 0, 21], + [26, 0, 0, 0, 5, 0, 21], + [21, 0, 0, 0, 5, 0, 21], + [12, 220, 13, 0, 5, 0, 21], + [13, 0, 0, 0, 5, 0, 21], + [15, 0, 0, 0, 5, 0, 21], + [12, 216, 13, 0, 5, 0, 21], + [22, 0, 18, 1, 5, 0, 21], + [18, 0, 18, 1, 5, 0, 21], + [10, 0, 0, 0, 5, 0, 21], + [12, 129, 13, 0, 5, 0, 21], + [12, 130, 13, 0, 5, 0, 21], + [12, 0, 13, 0, 5, 0, 21], + [12, 132, 13, 0, 5, 0, 21], + [12, 230, 13, 0, 5, 0, 21], + [12, 9, 13, 0, 5, 0, 21], + [26, 0, 0, 0, 5, 0, 0], + [7, 0, 0, 0, 5, 0, 22], + [10, 0, 0, 0, 5, 0, 22], + [12, 0, 13, 0, 5, 0, 22], + [12, 7, 13, 0, 5, 0, 22], + [12, 9, 13, 0, 5, 0, 22], + [13, 0, 0, 0, 5, 0, 22], + [21, 0, 0, 0, 5, 0, 22], + [12, 220, 13, 0, 5, 0, 22], + [26, 0, 0, 0, 5, 0, 22], + [9, 0, 0, 0, 5, 0, 23], + [7, 0, 0, 0, 5, 0, 23], + [6, 0, 0, 0, 5, 0, 23], + [7, 0, 0, 0, 2, 0, 24], + [7, 0, 0, 0, 5, 0, 24], + [7, 0, 0, 0, 5, 0, 25], + [12, 230, 13, 0, 5, 0, 25], + [21, 0, 0, 0, 5, 0, 25], + [15, 0, 0, 0, 5, 0, 25], + [26, 0, 18, 0, 5, 0, 25], + [7, 0, 0, 0, 5, 0, 26], + [17, 0, 18, 0, 5, 0, 27], + [7, 0, 0, 0, 5, 0, 27], + [21, 0, 0, 0, 5, 0, 27], + [29, 0, 17, 0, 5, 0, 28], + [7, 0, 0, 0, 5, 0, 28], + [22, 0, 18, 1, 5, 0, 28], + [18, 0, 18, 1, 5, 0, 28], + [7, 0, 0, 0, 5, 0, 29], + [14, 0, 0, 0, 5, 0, 29], + [7, 0, 0, 0, 5, 0, 41], + [12, 0, 13, 0, 5, 0, 41], + [12, 9, 13, 0, 5, 0, 41], + [7, 0, 0, 0, 5, 0, 42], + [12, 0, 13, 0, 5, 0, 42], + [12, 9, 13, 0, 5, 0, 42], + [7, 0, 0, 0, 5, 0, 43], + [12, 0, 13, 0, 5, 0, 43], + [7, 0, 0, 0, 5, 0, 44], + [12, 0, 13, 0, 5, 0, 44], + [7, 0, 0, 0, 5, 0, 30], + [12, 0, 13, 0, 5, 0, 30], + [10, 0, 0, 0, 5, 0, 30], + [12, 9, 13, 0, 5, 0, 30], + [21, 0, 0, 0, 5, 0, 30], + [6, 0, 0, 0, 5, 0, 30], + [23, 0, 10, 0, 5, 0, 30], + [12, 230, 13, 0, 5, 0, 30], + [13, 0, 0, 0, 5, 0, 30], + [15, 0, 18, 0, 5, 0, 30], + [21, 0, 18, 0, 5, 0, 31], + [17, 0, 18, 0, 5, 0, 31], + [12, 0, 13, 0, 5, 0, 31], + [29, 0, 17, 0, 5, 0, 31], + [13, 0, 0, 0, 5, 0, 31], + [7, 0, 0, 0, 5, 0, 31], + [6, 0, 0, 0, 5, 0, 31], + [12, 228, 13, 0, 5, 0, 31], + [7, 0, 0, 0, 5, 0, 45], + [12, 0, 13, 0, 5, 0, 45], + [10, 0, 0, 0, 5, 0, 45], + [12, 222, 13, 0, 5, 0, 45], + [12, 230, 13, 0, 5, 0, 45], + [12, 220, 13, 0, 5, 0, 45], + [26, 0, 18, 0, 5, 0, 45], + [21, 0, 18, 0, 5, 0, 45], + [13, 0, 0, 0, 5, 0, 45], + [7, 0, 0, 0, 5, 0, 46], + [7, 0, 0, 0, 5, 0, 55], + [10, 0, 0, 0, 5, 0, 55], + [13, 0, 0, 0, 5, 0, 55], + [15, 0, 0, 0, 5, 0, 55], + [26, 0, 18, 0, 5, 0, 55], + [26, 0, 18, 0, 5, 0, 30], + [7, 0, 0, 0, 5, 0, 53], + [12, 230, 13, 0, 5, 0, 53], + [12, 220, 13, 0, 5, 0, 53], + [10, 0, 0, 0, 5, 0, 53], + [21, 0, 0, 0, 5, 0, 53], + [7, 0, 0, 0, 5, 0, 77], + [10, 0, 0, 0, 5, 0, 77], + [12, 0, 13, 0, 5, 0, 77], + [12, 9, 13, 0, 5, 0, 77], + [12, 230, 13, 0, 5, 0, 77], + [12, 220, 13, 0, 5, 0, 77], + [13, 0, 0, 0, 5, 0, 77], + [21, 0, 0, 0, 5, 0, 77], + [6, 0, 0, 0, 5, 0, 77], + [12, 0, 13, 0, 5, 0, 61], + [10, 0, 0, 0, 5, 0, 61], + [7, 0, 0, 0, 5, 0, 61], + [12, 7, 13, 0, 5, 0, 61], + [10, 9, 0, 0, 5, 0, 61], + [13, 0, 0, 0, 5, 0, 61], + [21, 0, 0, 0, 5, 0, 61], + [26, 0, 0, 0, 5, 0, 61], + [12, 230, 13, 0, 5, 0, 61], + [12, 220, 13, 0, 5, 0, 61], + [12, 0, 13, 0, 5, 0, 66], + [10, 0, 0, 0, 5, 0, 66], + [7, 0, 0, 0, 5, 0, 66], + [10, 9, 0, 0, 5, 0, 66], + [12, 9, 13, 0, 5, 0, 66], + [13, 0, 0, 0, 5, 0, 66], + [7, 0, 0, 0, 5, 0, 92], + [12, 7, 13, 0, 5, 0, 92], + [10, 0, 0, 0, 5, 0, 92], + [12, 0, 13, 0, 5, 0, 92], + [10, 9, 0, 0, 5, 0, 92], + [21, 0, 0, 0, 5, 0, 92], + [7, 0, 0, 0, 5, 0, 67], + [10, 0, 0, 0, 5, 0, 67], + [12, 0, 13, 0, 5, 0, 67], + [12, 7, 13, 0, 5, 0, 67], + [21, 0, 0, 0, 5, 0, 67], + [13, 0, 0, 0, 5, 0, 67], + [13, 0, 0, 0, 5, 0, 68], + [7, 0, 0, 0, 5, 0, 68], + [6, 0, 0, 0, 5, 0, 68], + [21, 0, 0, 0, 5, 0, 68], + [21, 0, 0, 0, 5, 0, 66], + [12, 1, 13, 0, 5, 0, 40], + [10, 0, 0, 0, 5, 0, 0], + [7, 0, 0, 0, 5, 0, 0], + [6, 0, 0, 0, 5, 0, 3], + [12, 234, 13, 0, 5, 0, 40], + [12, 214, 13, 0, 5, 0, 40], + [12, 202, 13, 0, 5, 0, 40], + [12, 233, 13, 0, 5, 0, 40], + [8, 0, 0, 0, 5, 0, 2], + [29, 0, 17, 0, 5, 0, 0], + [1, 0, 14, 0, 5, 0, 0], + [1, 0, 14, 0, 5, 0, 40], + [1, 0, 0, 0, 5, 0, 0], + [1, 0, 3, 0, 5, 0, 0], + [17, 0, 18, 0, 4, 0, 0], + [17, 0, 18, 0, 5, 0, 0], + [20, 0, 18, 0, 4, 0, 0], + [19, 0, 18, 0, 4, 0, 0], + [22, 0, 18, 0, 5, 0, 0], + [20, 0, 18, 0, 5, 0, 0], + [27, 0, 17, 0, 5, 0, 0], + [28, 0, 15, 0, 5, 0, 0], + [1, 0, 1, 0, 5, 0, 0], + [1, 0, 5, 0, 5, 0, 0], + [1, 0, 7, 0, 5, 0, 0], + [1, 0, 2, 0, 5, 0, 0], + [1, 0, 6, 0, 5, 0, 0], + [21, 0, 10, 0, 4, 0, 0], + [21, 0, 10, 0, 5, 0, 0], + [16, 0, 18, 0, 5, 0, 0], + [25, 0, 12, 0, 5, 0, 0], + [22, 0, 18, 1, 5, 0, 0], + [18, 0, 18, 1, 5, 0, 0], + [25, 0, 18, 0, 5, 0, 0], + [15, 0, 8, 0, 5, 0, 0], + [25, 0, 9, 0, 5, 0, 0], + [6, 0, 0, 0, 4, 0, 1], + [23, 0, 10, 0, 1, 0, 0], + [11, 0, 13, 0, 5, 0, 40], + [9, 0, 0, 0, 5, 0, 0], + [5, 0, 0, 0, 4, 0, 0], + [26, 0, 10, 0, 5, 0, 0], + [25, 0, 18, 1, 5, 0, 0], + [15, 0, 18, 0, 5, 0, 0], + [14, 0, 0, 0, 4, 0, 1], + [14, 0, 0, 0, 5, 0, 1], + [25, 0, 18, 1, 4, 0, 0], + [25, 0, 10, 0, 5, 0, 0], + [22, 0, 18, 1, 2, 0, 0], + [18, 0, 18, 1, 2, 0, 0], + [26, 0, 0, 0, 4, 0, 0], + [26, 0, 0, 0, 5, 0, 52], + [9, 0, 0, 0, 5, 0, 56], + [5, 0, 0, 0, 5, 0, 56], + [26, 0, 18, 0, 5, 0, 54], + [12, 230, 13, 0, 5, 0, 54], + [21, 0, 18, 0, 5, 0, 54], + [15, 0, 18, 0, 5, 0, 54], + [5, 0, 0, 0, 5, 0, 23], + [7, 0, 0, 0, 5, 0, 57], + [6, 0, 0, 0, 5, 0, 57], + [21, 0, 0, 0, 5, 0, 57], + [12, 9, 13, 0, 5, 0, 57], + [26, 0, 18, 0, 2, 0, 35], + [26, 0, 18, 0, 2, 0, 0], + [29, 0, 17, 0, 0, 0, 0], + [21, 0, 18, 0, 2, 0, 0], + [6, 0, 0, 0, 2, 0, 35], + [7, 0, 0, 0, 2, 0, 0], + [14, 0, 0, 0, 2, 0, 35], + [17, 0, 18, 0, 2, 0, 0], + [22, 0, 18, 0, 2, 0, 0], + [18, 0, 18, 0, 2, 0, 0], + [12, 218, 13, 0, 2, 0, 40], + [12, 228, 13, 0, 2, 0, 40], + [12, 232, 13, 0, 2, 0, 40], + [12, 222, 13, 0, 2, 0, 40], + [10, 224, 0, 0, 2, 0, 24], + [6, 0, 0, 0, 2, 0, 0], + [7, 0, 0, 0, 2, 0, 32], + [12, 8, 13, 0, 2, 0, 40], + [24, 0, 18, 0, 2, 0, 0], + [6, 0, 0, 0, 2, 0, 32], + [7, 0, 0, 0, 2, 0, 33], + [6, 0, 0, 0, 2, 0, 33], + [7, 0, 0, 0, 2, 0, 34], + [26, 0, 0, 0, 2, 0, 0], + [15, 0, 0, 0, 2, 0, 0], + [26, 0, 0, 0, 2, 0, 24], + [26, 0, 18, 0, 2, 0, 24], + [15, 0, 0, 0, 4, 0, 0], + [15, 0, 18, 0, 2, 0, 0], + [26, 0, 0, 0, 2, 0, 33], + [7, 0, 0, 0, 2, 0, 35], + [2, 0, 18, 0, 2, 0, 35], + [2, 0, 18, 0, 2, 0, 102], + [7, 0, 0, 0, 2, 0, 36], + [6, 0, 0, 0, 2, 0, 36], + [26, 0, 18, 0, 2, 0, 36], + [7, 0, 0, 0, 5, 0, 82], + [6, 0, 0, 0, 5, 0, 82], + [21, 0, 0, 0, 5, 0, 82], + [7, 0, 0, 0, 5, 0, 69], + [6, 0, 0, 0, 5, 0, 69], + [21, 0, 18, 0, 5, 0, 69], + [13, 0, 0, 0, 5, 0, 69], + [7, 0, 0, 0, 5, 0, 3], + [21, 0, 18, 0, 5, 0, 3], + [6, 0, 18, 0, 5, 0, 3], + [7, 0, 0, 0, 5, 0, 83], + [14, 0, 0, 0, 5, 0, 83], + [12, 230, 13, 0, 5, 0, 83], + [21, 0, 0, 0, 5, 0, 83], + [24, 0, 0, 0, 5, 0, 0], + [7, 0, 0, 0, 5, 0, 58], + [12, 0, 13, 0, 5, 0, 58], + [12, 9, 13, 0, 5, 0, 58], + [10, 0, 0, 0, 5, 0, 58], + [26, 0, 18, 0, 5, 0, 58], + [15, 0, 0, 0, 5, 0, 0], + [7, 0, 0, 0, 5, 0, 64], + [21, 0, 18, 0, 5, 0, 64], + [10, 0, 0, 0, 5, 0, 70], + [7, 0, 0, 0, 5, 0, 70], + [12, 9, 13, 0, 5, 0, 70], + [21, 0, 0, 0, 5, 0, 70], + [13, 0, 0, 0, 5, 0, 70], + [13, 0, 0, 0, 5, 0, 71], + [7, 0, 0, 0, 5, 0, 71], + [12, 0, 13, 0, 5, 0, 71], + [12, 220, 13, 0, 5, 0, 71], + [21, 0, 0, 0, 5, 0, 71], + [7, 0, 0, 0, 5, 0, 72], + [12, 0, 13, 0, 5, 0, 72], + [10, 0, 0, 0, 5, 0, 72], + [10, 9, 0, 0, 5, 0, 72], + [21, 0, 0, 0, 5, 0, 72], + [12, 0, 13, 0, 5, 0, 84], + [10, 0, 0, 0, 5, 0, 84], + [7, 0, 0, 0, 5, 0, 84], + [12, 7, 13, 0, 5, 0, 84], + [10, 9, 0, 0, 5, 0, 84], + [21, 0, 0, 0, 5, 0, 84], + [6, 0, 0, 0, 5, 0, 84], + [13, 0, 0, 0, 5, 0, 84], + [7, 0, 0, 0, 5, 0, 76], + [12, 0, 13, 0, 5, 0, 76], + [10, 0, 0, 0, 5, 0, 76], + [13, 0, 0, 0, 5, 0, 76], + [21, 0, 0, 0, 5, 0, 76], + [6, 0, 0, 0, 5, 0, 22], + [7, 0, 0, 0, 5, 0, 78], + [12, 230, 13, 0, 5, 0, 78], + [12, 220, 13, 0, 5, 0, 78], + [6, 0, 0, 0, 5, 0, 78], + [21, 0, 0, 0, 5, 0, 78], + [7, 0, 0, 0, 5, 0, 85], + [10, 0, 0, 0, 5, 0, 85], + [12, 0, 13, 0, 5, 0, 85], + [21, 0, 0, 0, 5, 0, 85], + [6, 0, 0, 0, 5, 0, 85], + [12, 9, 13, 0, 5, 0, 85], + [13, 0, 0, 0, 5, 0, 85], + [2, 0, 18, 0, 2, 0, 24], + [4, 0, 0, 0, 5, 0, 102], + [3, 0, 0, 0, 4, 0, 102], + [2, 0, 18, 0, 4, 0, 102], + [12, 26, 13, 0, 5, 0, 5], + [25, 0, 9, 0, 5, 0, 5], + [24, 0, 4, 0, 5, 0, 6], + [18, 0, 18, 0, 5, 0, 0], + [16, 0, 18, 0, 2, 0, 0], + [21, 0, 12, 0, 2, 0, 0], + [21, 0, 10, 0, 2, 0, 0], + [25, 0, 9, 0, 2, 0, 0], + [17, 0, 9, 0, 2, 0, 0], + [25, 0, 18, 1, 2, 0, 0], + [25, 0, 18, 0, 2, 0, 0], + [23, 0, 10, 0, 2, 0, 0], + [21, 0, 18, 0, 0, 0, 0], + [21, 0, 10, 0, 0, 0, 0], + [23, 0, 10, 0, 0, 0, 0], + [22, 0, 18, 1, 0, 0, 0], + [18, 0, 18, 1, 0, 0, 0], + [25, 0, 9, 0, 0, 0, 0], + [21, 0, 12, 0, 0, 0, 0], + [17, 0, 9, 0, 0, 0, 0], + [13, 0, 8, 0, 0, 0, 0], + [25, 0, 18, 1, 0, 0, 0], + [25, 0, 18, 0, 0, 0, 0], + [9, 0, 0, 0, 0, 0, 1], + [24, 0, 18, 0, 0, 0, 0], + [16, 0, 18, 0, 0, 0, 0], + [5, 0, 0, 0, 0, 0, 1], + [21, 0, 18, 0, 1, 0, 0], + [22, 0, 18, 1, 1, 0, 0], + [18, 0, 18, 1, 1, 0, 0], + [7, 0, 0, 0, 1, 0, 33], + [6, 0, 0, 0, 1, 0, 0], + [7, 0, 0, 0, 1, 0, 24], + [26, 0, 18, 0, 0, 0, 0], + [26, 0, 18, 0, 1, 0, 0], + [25, 0, 18, 0, 1, 0, 0], + [1, 0, 18, 0, 5, 0, 0], + [7, 0, 0, 0, 5, 0, 47], + [14, 0, 18, 0, 5, 0, 2], + [15, 0, 18, 0, 5, 0, 2], + [26, 0, 18, 0, 5, 0, 2], + [7, 0, 0, 0, 5, 0, 73], + [7, 0, 0, 0, 5, 0, 74], + [7, 0, 0, 0, 5, 0, 37], + [15, 0, 0, 0, 5, 0, 37], + [7, 0, 0, 0, 5, 0, 38], + [14, 0, 0, 0, 5, 0, 38], + [7, 0, 0, 0, 5, 0, 48], + [21, 0, 0, 0, 5, 0, 48], + [7, 0, 0, 0, 5, 0, 59], + [21, 0, 0, 0, 5, 0, 59], + [14, 0, 0, 0, 5, 0, 59], + [9, 0, 0, 0, 5, 0, 39], + [5, 0, 0, 0, 5, 0, 39], + [7, 0, 0, 0, 5, 0, 49], + [7, 0, 0, 0, 5, 0, 50], + [13, 0, 0, 0, 5, 0, 50], + [7, 0, 3, 0, 5, 0, 51], + [7, 0, 3, 0, 5, 0, 86], + [21, 0, 3, 0, 5, 0, 86], + [15, 0, 3, 0, 5, 0, 86], + [7, 0, 3, 0, 5, 0, 63], + [15, 0, 3, 0, 5, 0, 63], + [21, 0, 18, 0, 5, 0, 63], + [7, 0, 3, 0, 5, 0, 75], + [21, 0, 3, 0, 5, 0, 75], + [7, 0, 3, 0, 5, 0, 97], + [7, 0, 3, 0, 5, 0, 96], + [7, 0, 3, 0, 5, 0, 60], + [12, 0, 13, 0, 5, 0, 60], + [12, 220, 13, 0, 5, 0, 60], + [12, 230, 13, 0, 5, 0, 60], + [12, 1, 13, 0, 5, 0, 60], + [12, 9, 13, 0, 5, 0, 60], + [15, 0, 3, 0, 5, 0, 60], + [21, 0, 3, 0, 5, 0, 60], + [7, 0, 3, 0, 5, 0, 87], + [15, 0, 3, 0, 5, 0, 87], + [21, 0, 3, 0, 5, 0, 87], + [7, 0, 3, 0, 5, 0, 79], + [21, 0, 18, 0, 5, 0, 79], + [7, 0, 3, 0, 5, 0, 88], + [15, 0, 3, 0, 5, 0, 88], + [7, 0, 3, 0, 5, 0, 89], + [15, 0, 3, 0, 5, 0, 89], + [7, 0, 3, 0, 5, 0, 90], + [15, 0, 11, 0, 5, 0, 6], + [10, 0, 0, 0, 5, 0, 93], + [12, 0, 13, 0, 5, 0, 93], + [7, 0, 0, 0, 5, 0, 93], + [12, 9, 13, 0, 5, 0, 93], + [21, 0, 0, 0, 5, 0, 93], + [15, 0, 18, 0, 5, 0, 93], + [13, 0, 0, 0, 5, 0, 93], + [12, 0, 13, 0, 5, 0, 91], + [10, 0, 0, 0, 5, 0, 91], + [7, 0, 0, 0, 5, 0, 91], + [12, 9, 13, 0, 5, 0, 91], + [12, 7, 13, 0, 5, 0, 91], + [21, 0, 0, 0, 5, 0, 91], + [1, 0, 0, 0, 5, 0, 91], + [7, 0, 0, 0, 5, 0, 100], + [13, 0, 0, 0, 5, 0, 100], + [12, 230, 13, 0, 5, 0, 95], + [7, 0, 0, 0, 5, 0, 95], + [12, 0, 13, 0, 5, 0, 95], + [10, 0, 0, 0, 5, 0, 95], + [12, 9, 13, 0, 5, 0, 95], + [13, 0, 0, 0, 5, 0, 95], + [21, 0, 0, 0, 5, 0, 95], + [12, 0, 13, 0, 5, 0, 99], + [10, 0, 0, 0, 5, 0, 99], + [7, 0, 0, 0, 5, 0, 99], + [10, 9, 0, 0, 5, 0, 99], + [21, 0, 0, 0, 5, 0, 99], + [13, 0, 0, 0, 5, 0, 99], + [7, 0, 0, 0, 5, 0, 101], + [12, 0, 13, 0, 5, 0, 101], + [10, 0, 0, 0, 5, 0, 101], + [10, 9, 0, 0, 5, 0, 101], + [12, 7, 13, 0, 5, 0, 101], + [13, 0, 0, 0, 5, 0, 101], + [7, 0, 0, 0, 5, 0, 62], + [14, 0, 0, 0, 5, 0, 62], + [21, 0, 0, 0, 5, 0, 62], + [7, 0, 0, 0, 5, 0, 80], + [7, 0, 0, 0, 5, 0, 98], + [10, 0, 0, 0, 5, 0, 98], + [12, 0, 13, 0, 5, 0, 98], + [6, 0, 0, 0, 5, 0, 98], + [10, 216, 0, 0, 5, 0, 0], + [10, 226, 0, 0, 5, 0, 0], + [12, 230, 13, 0, 5, 0, 2], + [25, 0, 0, 0, 5, 0, 0], + [13, 0, 8, 0, 5, 0, 0], + [26, 0, 0, 0, 2, 0, 32], + ]; + + /* Mirror unicode characters. Bidirectional Algorithm, at http://www.unicode.org/unicode/reports/tr9/ */ + + public static $mirror_pairs = [ + 40 => 41, + 41 => 40, + 60 => 62, + 62 => 60, + 91 => 93, + 93 => 91, + 123 => 125, + 125 => 123, + 171 => 187, + 187 => 171, + 3898 => 3899, + 3899 => 3898, + 3900 => 3901, + 3901 => 3900, + 5787 => 5788, + 5788 => 5787, + 8249 => 8250, + 8250 => 8249, + 8261 => 8262, + 8262 => 8261, + 8317 => 8318, + 8318 => 8317, + 8333 => 8334, + 8334 => 8333, + 8712 => 8715, + 8713 => 8716, + 8714 => 8717, + 8715 => 8712, + 8716 => 8713, + 8717 => 8714, + 8725 => 10741, + 8764 => 8765, + 8765 => 8764, + 8771 => 8909, + 8786 => 8787, + 8787 => 8786, + 8788 => 8789, + 8789 => 8788, + 8804 => 8805, + 8805 => 8804, + 8806 => 8807, + 8807 => 8806, + 8808 => 8809, + 8809 => 8808, + 8810 => 8811, + 8811 => 8810, + 8814 => 8815, + 8815 => 8814, + 8816 => 8817, + 8817 => 8816, + 8818 => 8819, + 8819 => 8818, + 8820 => 8821, + 8821 => 8820, + 8822 => 8823, + 8823 => 8822, + 8824 => 8825, + 8825 => 8824, + 8826 => 8827, + 8827 => 8826, + 8828 => 8829, + 8829 => 8828, + 8830 => 8831, + 8831 => 8830, + 8832 => 8833, + 8833 => 8832, + 8834 => 8835, + 8835 => 8834, + 8836 => 8837, + 8837 => 8836, + 8838 => 8839, + 8839 => 8838, + 8840 => 8841, + 8841 => 8840, + 8842 => 8843, + 8843 => 8842, + 8847 => 8848, + 8848 => 8847, + 8849 => 8850, + 8850 => 8849, + 8856 => 10680, + 8866 => 8867, + 8867 => 8866, + 8870 => 10974, + 8872 => 10980, + 8873 => 10979, + 8875 => 10981, + 8880 => 8881, + 8881 => 8880, + 8882 => 8883, + 8883 => 8882, + 8884 => 8885, + 8885 => 8884, + 8886 => 8887, + 8887 => 8886, + 8905 => 8906, + 8906 => 8905, + 8907 => 8908, + 8908 => 8907, + 8909 => 8771, + 8912 => 8913, + 8913 => 8912, + 8918 => 8919, + 8919 => 8918, + 8920 => 8921, + 8921 => 8920, + 8922 => 8923, + 8923 => 8922, + 8924 => 8925, + 8925 => 8924, + 8926 => 8927, + 8927 => 8926, + 8928 => 8929, + 8929 => 8928, + 8930 => 8931, + 8931 => 8930, + 8932 => 8933, + 8933 => 8932, + 8934 => 8935, + 8935 => 8934, + 8936 => 8937, + 8937 => 8936, + 8938 => 8939, + 8939 => 8938, + 8940 => 8941, + 8941 => 8940, + 8944 => 8945, + 8945 => 8944, + 8946 => 8954, + 8947 => 8955, + 8948 => 8956, + 8950 => 8957, + 8951 => 8958, + 8954 => 8946, + 8955 => 8947, + 8956 => 8948, + 8957 => 8950, + 8958 => 8951, + 8968 => 8969, + 8969 => 8968, + 8970 => 8971, + 8971 => 8970, + 9001 => 9002, + 9002 => 9001, + 10088 => 10089, + 10089 => 10088, + 10090 => 10091, + 10091 => 10090, + 10092 => 10093, + 10093 => 10092, + 10094 => 10095, + 10095 => 10094, + 10096 => 10097, + 10097 => 10096, + 10098 => 10099, + 10099 => 10098, + 10100 => 10101, + 10101 => 10100, + 10179 => 10180, + 10180 => 10179, + 10181 => 10182, + 10182 => 10181, + 10184 => 10185, + 10185 => 10184, + 10187 => 10189, + 10189 => 10187, + 10197 => 10198, + 10198 => 10197, + 10205 => 10206, + 10206 => 10205, + 10210 => 10211, + 10211 => 10210, + 10212 => 10213, + 10213 => 10212, + 10214 => 10215, + 10215 => 10214, + 10216 => 10217, + 10217 => 10216, + 10218 => 10219, + 10219 => 10218, + 10220 => 10221, + 10221 => 10220, + 10222 => 10223, + 10223 => 10222, + 10627 => 10628, + 10628 => 10627, + 10629 => 10630, + 10630 => 10629, + 10631 => 10632, + 10632 => 10631, + 10633 => 10634, + 10634 => 10633, + 10635 => 10636, + 10636 => 10635, + 10637 => 10640, + 10638 => 10639, + 10639 => 10638, + 10640 => 10637, + 10641 => 10642, + 10642 => 10641, + 10643 => 10644, + 10644 => 10643, + 10645 => 10646, + 10646 => 10645, + 10647 => 10648, + 10648 => 10647, + 10680 => 8856, + 10688 => 10689, + 10689 => 10688, + 10692 => 10693, + 10693 => 10692, + 10703 => 10704, + 10704 => 10703, + 10705 => 10706, + 10706 => 10705, + 10708 => 10709, + 10709 => 10708, + 10712 => 10713, + 10713 => 10712, + 10714 => 10715, + 10715 => 10714, + 10741 => 8725, + 10744 => 10745, + 10745 => 10744, + 10748 => 10749, + 10749 => 10748, + 10795 => 10796, + 10796 => 10795, + 10797 => 10798, + 10798 => 10797, + 10804 => 10805, + 10805 => 10804, + 10812 => 10813, + 10813 => 10812, + 10852 => 10853, + 10853 => 10852, + 10873 => 10874, + 10874 => 10873, + 10877 => 10878, + 10878 => 10877, + 10879 => 10880, + 10880 => 10879, + 10881 => 10882, + 10882 => 10881, + 10883 => 10884, + 10884 => 10883, + 10891 => 10892, + 10892 => 10891, + 10897 => 10898, + 10898 => 10897, + 10899 => 10900, + 10900 => 10899, + 10901 => 10902, + 10902 => 10901, + 10903 => 10904, + 10904 => 10903, + 10905 => 10906, + 10906 => 10905, + 10907 => 10908, + 10908 => 10907, + 10913 => 10914, + 10914 => 10913, + 10918 => 10919, + 10919 => 10918, + 10920 => 10921, + 10921 => 10920, + 10922 => 10923, + 10923 => 10922, + 10924 => 10925, + 10925 => 10924, + 10927 => 10928, + 10928 => 10927, + 10931 => 10932, + 10932 => 10931, + 10939 => 10940, + 10940 => 10939, + 10941 => 10942, + 10942 => 10941, + 10943 => 10944, + 10944 => 10943, + 10945 => 10946, + 10946 => 10945, + 10947 => 10948, + 10948 => 10947, + 10949 => 10950, + 10950 => 10949, + 10957 => 10958, + 10958 => 10957, + 10959 => 10960, + 10960 => 10959, + 10961 => 10962, + 10962 => 10961, + 10963 => 10964, + 10964 => 10963, + 10965 => 10966, + 10966 => 10965, + 10974 => 8870, + 10979 => 8873, + 10980 => 8872, + 10981 => 8875, + 10988 => 10989, + 10989 => 10988, + 10999 => 11000, + 11000 => 10999, + 11001 => 11002, + 11002 => 11001, + 11778 => 11779, + 11779 => 11778, + 11780 => 11781, + 11781 => 11780, + 11785 => 11786, + 11786 => 11785, + 11788 => 11789, + 11789 => 11788, + 11804 => 11805, + 11805 => 11804, + 11808 => 11809, + 11809 => 11808, + 11810 => 11811, + 11811 => 11810, + 11812 => 11813, + 11813 => 11812, + 11814 => 11815, + 11815 => 11814, + 11816 => 11817, + 11817 => 11816, + 12296 => 12297, + 12297 => 12296, + 12298 => 12299, + 12299 => 12298, + 12300 => 12301, + 12301 => 12300, + 12302 => 12303, + 12303 => 12302, + 12304 => 12305, + 12305 => 12304, + 12308 => 12309, + 12309 => 12308, + 12310 => 12311, + 12311 => 12310, + 12312 => 12313, + 12313 => 12312, + 12314 => 12315, + 12315 => 12314, + 65113 => 65114, + 65114 => 65113, + 65115 => 65116, + 65116 => 65115, + 65117 => 65118, + 65118 => 65117, + 65124 => 65125, + 65125 => 65124, + 65288 => 65289, + 65289 => 65288, + 65308 => 65310, + 65310 => 65308, + 65339 => 65341, + 65341 => 65339, + 65371 => 65373, + 65373 => 65371, + 65375 => 65376, + 65376 => 65375, + 65378 => 65379, + 65379 => 65378, + ]; + + + /* index tables for the database records */ + + private static $index0 = [ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 53, 53, 53, + 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, + 53, 53, 54, 52, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, + 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, + 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, + 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, + 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 55, 56, 57, 57, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 68, 69, 70, 70, + 71, 69, 70, 70, 72, 73, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 70, 70, 70, 88, 89, 90, 91, 92, 70, 93, 70, 94, + 95, 70, 70, 70, 70, 96, 70, 70, 70, 70, 70, 70, 70, 70, 70, 97, 97, 97, + 98, 99, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 100, 100, 100, 100, + 101, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 102, 102, + 103, 70, 70, 70, 70, 104, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 105, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 106, 107, 108, 109, 110, + 111, 112, 113, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 114, 70, 115, 116, 117, 118, 119, 120, + 121, 122, 70, 70, 70, 70, 70, 70, 70, 70, 52, 53, 53, 53, 53, 53, 53, 53, + 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, + 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, + 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, + 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, + 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, + 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, + 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, + 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, + 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 123, 52, 53, 53, + 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 124, 125, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 76, 76, 127, 126, 126, 126, 126, 128, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 128, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 129, 130, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 73, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 131, 73, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 131, + ]; + + private static $index1 = [ + 0, 1, 0, 2, 3, 4, 5, 6, 7, 8, 8, 9, 10, 11, 11, 12, 13, 0, 0, 0, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 29, 31, 32, + 33, 34, 35, 27, 30, 29, 27, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 27, 27, 49, 27, 27, 27, 27, 27, 27, 27, 50, 51, 52, 27, 53, 54, + 53, 54, 54, 54, 54, 54, 55, 54, 54, 54, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 64, 65, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 65, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 97, 97, 97, 98, 98, 98, 98, 99, 100, 101, 101, 101, 101, 102, 103, + 101, 101, 101, 101, 101, 101, 104, 105, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 106, 107, 108, 108, 108, 109, 110, 111, 112, + 112, 112, 112, 113, 114, 115, 116, 117, 118, 119, 120, 106, 121, 121, + 121, 122, 123, 106, 124, 125, 126, 127, 128, 128, 128, 128, 129, 130, + 131, 132, 133, 134, 135, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 145, 145, + 146, 147, 148, 149, 128, 128, 128, 128, 128, 128, 150, 150, 150, 150, + 151, 152, 153, 106, 154, 155, 156, 156, 156, 157, 158, 159, 160, 160, + 161, 162, 163, 164, 165, 166, 167, 167, 167, 168, 106, 106, 106, 106, + 106, 106, 106, 106, 169, 170, 106, 106, 106, 106, 106, 106, 171, 172, + 173, 174, 175, 176, 176, 176, 176, 176, 176, 177, 178, 179, 180, 176, + 181, 182, 183, 184, 185, 186, 187, 188, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 106, 214, 215, 216, 217, 217, 218, + 219, 220, 221, 222, 223, 106, 224, 225, 226, 106, 227, 228, 229, 230, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 106, 241, 242, + 243, 244, 245, 242, 246, 247, 248, 249, 250, 106, 251, 252, 253, 254, + 255, 256, 257, 258, 258, 257, 259, 260, 261, 262, 263, 264, 265, 266, + 106, 267, 268, 269, 270, 271, 271, 270, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 106, 281, 282, 283, 284, 284, 284, 284, 285, 286, 287, + 288, 106, 289, 290, 291, 292, 293, 294, 295, 296, 294, 294, 297, 298, + 295, 299, 300, 301, 106, 106, 302, 106, 303, 304, 304, 304, 304, 304, + 305, 306, 307, 308, 309, 310, 106, 106, 106, 106, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 106, 106, 106, 106, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 331, 331, 331, 333, 334, 335, + 336, 337, 338, 339, 338, 338, 338, 340, 341, 342, 343, 344, 106, 106, + 106, 106, 345, 345, 345, 345, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 345, 356, 357, 349, 358, 359, 359, 359, 359, 360, 361, + 362, 362, 362, 362, 362, 363, 364, 364, 364, 364, 364, 364, 364, 364, + 364, 364, 364, 364, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, + 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 366, 366, 366, 366, + 366, 366, 366, 366, 366, 367, 368, 367, 366, 366, 366, 366, 366, 367, + 366, 366, 366, 366, 367, 368, 367, 366, 368, 366, 366, 366, 366, 366, + 366, 366, 367, 366, 366, 366, 366, 366, 366, 366, 366, 369, 370, 371, + 372, 373, 366, 366, 374, 375, 376, 376, 376, 376, 376, 376, 376, 376, + 376, 376, 377, 106, 378, 379, 379, 379, 379, 379, 379, 379, 379, 379, + 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, + 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, + 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, + 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, + 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 380, 379, 379, + 381, 382, 382, 383, 384, 384, 384, 384, 384, 384, 384, 384, 384, 385, + 386, 106, 387, 388, 389, 106, 390, 390, 391, 106, 392, 392, 393, 106, + 394, 395, 396, 106, 397, 397, 397, 397, 397, 397, 398, 399, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 412, 412, 412, + 413, 412, 412, 412, 412, 412, 412, 106, 412, 412, 412, 412, 412, 414, + 379, 379, 379, 379, 379, 379, 379, 379, 415, 106, 416, 416, 416, 417, + 418, 419, 420, 421, 422, 423, 424, 424, 424, 425, 426, 106, 427, 427, + 427, 427, 427, 428, 429, 429, 430, 431, 432, 433, 434, 434, 434, 434, + 435, 435, 436, 437, 438, 438, 438, 438, 438, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 445, 446, 447, 448, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 449, 450, 450, 450, 450, 450, 451, 452, 453, 454, + 455, 456, 457, 458, 459, 460, 461, 462, 462, 462, 463, 464, 465, 466, + 467, 467, 467, 467, 468, 469, 470, 471, 472, 472, 472, 472, 473, 474, + 475, 476, 477, 478, 479, 480, 481, 481, 481, 482, 106, 106, 106, 106, + 106, 106, 106, 106, 483, 106, 484, 485, 486, 487, 488, 106, 54, 54, 54, + 54, 489, 490, 56, 56, 56, 56, 56, 491, 492, 493, 54, 494, 54, 54, 54, + 495, 56, 56, 56, 496, 497, 498, 499, 500, 501, 106, 106, 502, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 503, 504, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 505, 506, 507, 508, 505, 506, + 505, 506, 507, 508, 505, 509, 505, 506, 505, 507, 505, 510, 505, 510, + 505, 510, 511, 512, 513, 514, 515, 516, 505, 517, 518, 519, 520, 521, + 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, + 536, 537, 56, 538, 539, 540, 539, 541, 106, 106, 542, 543, 544, 545, 546, + 106, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, + 560, 559, 561, 562, 563, 564, 565, 566, 567, 568, 569, 568, 570, 571, + 568, 572, 568, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, + 584, 585, 586, 587, 588, 583, 583, 589, 590, 591, 592, 593, 583, 583, + 594, 574, 595, 596, 583, 583, 597, 583, 583, 568, 598, 599, 568, 600, + 601, 602, 603, 603, 603, 603, 603, 603, 603, 603, 604, 568, 568, 605, + 606, 574, 574, 607, 568, 568, 568, 568, 573, 608, 568, 609, 106, 568, + 568, 568, 568, 610, 106, 106, 106, 568, 611, 106, 106, 612, 612, 612, + 612, 612, 613, 613, 614, 615, 615, 615, 615, 615, 615, 615, 615, 615, + 616, 612, 612, 617, 617, 617, 617, 617, 617, 617, 617, 617, 618, 617, + 617, 617, 617, 618, 568, 617, 617, 619, 568, 620, 569, 621, 622, 623, + 624, 569, 568, 619, 572, 568, 574, 625, 626, 622, 627, 568, 568, 568, + 568, 628, 568, 568, 568, 629, 630, 568, 568, 568, 568, 568, 631, 568, + 632, 568, 631, 633, 634, 617, 617, 635, 617, 617, 617, 636, 568, 568, + 568, 568, 568, 568, 637, 568, 568, 572, 568, 568, 638, 639, 612, 640, + 640, 641, 568, 568, 568, 568, 568, 642, 643, 644, 645, 646, 647, 574, + 574, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, + 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, + 648, 648, 648, 648, 648, 574, 574, 574, 574, 574, 574, 574, 574, 574, + 574, 574, 574, 574, 574, 574, 574, 649, 650, 650, 651, 583, 583, 574, + 652, 597, 653, 654, 655, 656, 657, 658, 659, 574, 660, 583, 661, 662, + 663, 664, 645, 574, 574, 586, 652, 664, 665, 666, 667, 583, 583, 583, + 583, 668, 669, 583, 583, 583, 583, 670, 671, 672, 645, 673, 674, 568, + 568, 568, 568, 568, 568, 574, 574, 675, 676, 677, 678, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 679, 679, 679, 679, 679, 680, 681, 681, 681, 681, 681, + 682, 683, 684, 685, 686, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 687, 688, 689, 690, 691, 691, 691, 691, 692, 693, 694, 694, 694, 694, + 694, 694, 694, 695, 696, 697, 366, 366, 368, 106, 368, 368, 368, 368, + 368, 368, 368, 368, 698, 698, 698, 698, 699, 700, 701, 702, 703, 704, + 529, 705, 106, 106, 106, 106, 106, 106, 106, 106, 706, 706, 706, 707, + 706, 706, 706, 706, 706, 706, 706, 706, 706, 706, 708, 106, 706, 706, + 706, 706, 706, 706, 706, 706, 706, 706, 706, 706, 706, 706, 706, 706, + 706, 706, 706, 706, 706, 706, 706, 706, 706, 706, 709, 106, 106, 106, + 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 721, 721, + 721, 721, 721, 721, 721, 721, 722, 723, 724, 725, 725, 725, 725, 725, + 725, 725, 725, 725, 725, 726, 727, 728, 728, 728, 728, 729, 730, 364, + 364, 364, 364, 364, 364, 364, 364, 364, 364, 731, 732, 733, 728, 728, + 728, 734, 710, 710, 710, 710, 711, 106, 725, 725, 735, 735, 735, 736, + 737, 738, 733, 733, 733, 739, 740, 741, 735, 735, 735, 742, 737, 738, + 733, 733, 733, 733, 743, 741, 733, 744, 745, 745, 745, 745, 745, 746, + 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 745, 733, 733, 733, + 747, 748, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 733, 749, + 733, 733, 733, 747, 750, 751, 751, 751, 751, 751, 751, 751, 751, 751, + 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, + 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, + 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, + 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, + 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, + 751, 751, 751, 751, 751, 751, 752, 753, 568, 568, 568, 568, 568, 568, + 568, 568, 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, + 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, 754, + 753, 753, 753, 753, 753, 753, 755, 755, 756, 755, 755, 755, 755, 755, + 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, + 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, + 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, + 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, + 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, + 755, 755, 755, 757, 758, 758, 758, 758, 758, 758, 759, 106, 760, 760, + 760, 760, 760, 761, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, + 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, + 762, 762, 762, 762, 762, 762, 762, 762, 762, 763, 762, 762, 764, 765, + 106, 106, 101, 101, 101, 101, 101, 766, 767, 768, 101, 101, 101, 769, + 770, 770, 770, 770, 770, 770, 770, 770, 771, 772, 773, 106, 64, 64, 774, + 775, 776, 27, 777, 27, 27, 27, 27, 27, 27, 27, 778, 779, 27, 780, 781, + 106, 27, 782, 106, 106, 106, 106, 106, 106, 106, 106, 106, 783, 784, 785, + 786, 786, 787, 788, 789, 790, 791, 791, 791, 791, 791, 791, 792, 106, + 793, 794, 794, 794, 794, 794, 795, 796, 797, 798, 799, 800, 801, 801, + 802, 803, 804, 805, 806, 806, 807, 808, 809, 809, 810, 811, 812, 813, + 364, 364, 364, 814, 815, 816, 816, 816, 816, 816, 817, 818, 819, 820, + 821, 822, 106, 106, 106, 106, 823, 823, 823, 823, 823, 824, 825, 106, + 826, 827, 828, 829, 345, 345, 830, 831, 832, 832, 832, 832, 832, 832, + 833, 834, 835, 106, 106, 836, 837, 838, 839, 106, 840, 840, 840, 106, + 368, 368, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 837, 837, 837, 837, 841, 842, 843, 844, + 845, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, + 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, + 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, + 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, + 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, + 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, 846, + 847, 106, 365, 365, 848, 849, 365, 365, 365, 365, 365, 850, 851, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 852, 851, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 852, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 852, + 853, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, + 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, + 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, + 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, + 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, + 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, + 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 855, 856, 856, + 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, + 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, + 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, + 856, 857, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, + 856, 858, 753, 753, 753, 753, 859, 106, 860, 861, 121, 862, 863, 864, + 865, 121, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 866, 867, 868, 106, 869, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 870, 106, 106, 128, 128, 128, 128, + 128, 128, 128, 128, 871, 128, 128, 128, 128, 128, 128, 106, 106, 106, + 106, 106, 128, 872, 873, 873, 874, 875, 501, 106, 876, 877, 878, 879, + 880, 881, 882, 883, 884, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 885, 886, 887, 888, 889, 890, 891, + 891, 892, 893, 894, 894, 895, 896, 897, 898, 897, 897, 897, 897, 899, + 900, 900, 900, 901, 902, 902, 902, 903, 904, 905, 106, 906, 907, 908, + 907, 907, 909, 907, 907, 910, 907, 911, 907, 911, 106, 106, 106, 106, + 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, + 907, 912, 913, 914, 914, 914, 914, 914, 915, 603, 916, 916, 916, 916, + 916, 916, 917, 918, 919, 920, 568, 609, 106, 106, 106, 106, 106, 106, + 603, 603, 603, 603, 603, 921, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 922, 922, 922, 923, 924, 924, + 924, 924, 924, 924, 925, 106, 106, 106, 106, 106, 926, 926, 926, 927, + 928, 106, 929, 929, 930, 931, 106, 106, 106, 106, 106, 106, 932, 932, + 932, 933, 934, 934, 934, 934, 935, 934, 936, 106, 106, 106, 106, 106, + 937, 937, 937, 937, 937, 938, 938, 938, 938, 938, 939, 939, 939, 939, + 939, 939, 940, 940, 940, 941, 942, 943, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 944, 945, 946, 946, 946, 946, 947, 948, 949, 949, + 950, 951, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 952, 952, 953, 954, 955, 955, + 955, 956, 106, 106, 106, 106, 106, 106, 106, 106, 957, 957, 957, 957, + 958, 958, 958, 959, 106, 106, 106, 106, 106, 106, 106, 106, 960, 961, + 962, 963, 964, 964, 965, 966, 967, 106, 968, 969, 970, 970, 970, 971, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 972, 972, 972, 972, 972, 972, 973, 974, 975, 975, 976, 977, + 978, 978, 979, 980, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 981, 981, 981, 981, 981, 981, 981, 981, + 981, 982, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 983, 983, 983, 984, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 985, 986, 986, 986, 986, 986, 986, 987, 988, 989, 990, 991, 992, 993, + 106, 106, 994, 995, 995, 995, 995, 995, 996, 997, 998, 106, 999, 999, + 999, 1000, 1001, 1002, 1003, 1004, 1004, 1004, 1005, 1006, 1007, 1008, + 1009, 106, 106, 106, 106, 106, 106, 106, 1010, 1011, 1011, 1011, 1011, + 1011, 1012, 1013, 1014, 1015, 1016, 1017, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 1018, 1018, 1018, 1018, 1018, 1019, 1020, 106, 1021, 1022, 106, 106, 106, + 106, 106, 106, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, + 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, + 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, + 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, + 1024, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, + 1025, 1025, 1025, 1025, 1026, 106, 1027, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1029, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 770, 770, 770, + 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, + 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, 770, + 770, 770, 770, 770, 770, 770, 770, 770, 1030, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1032, 106, 1033, 1034, 1034, 1034, 1034, 1035, 106, 1036, 1037, 1038, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 1039, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, + 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, + 603, 603, 603, 603, 1040, 106, 603, 603, 603, 603, 1041, 1042, 603, 603, + 603, 603, 603, 603, 1043, 1044, 1045, 1046, 1047, 1048, 603, 603, 603, + 1049, 603, 603, 603, 603, 603, 1040, 106, 106, 106, 106, 919, 919, 919, + 919, 919, 919, 919, 919, 1050, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 610, 106, 914, + 914, 1051, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 1052, 1052, 1052, 1053, 1054, 1054, 1055, 1052, + 1052, 1056, 1057, 1054, 1054, 1052, 1052, 1052, 1053, 1054, 1054, 1058, + 1059, 1060, 1056, 1061, 1062, 1054, 1052, 1052, 1052, 1053, 1054, 1054, + 1063, 1064, 1065, 1066, 1054, 1054, 1054, 1067, 1068, 1069, 1070, 1054, + 1054, 1055, 1052, 1052, 1056, 1054, 1054, 1054, 1052, 1052, 1052, 1053, + 1054, 1054, 1055, 1052, 1052, 1056, 1054, 1054, 1054, 1052, 1052, 1052, + 1053, 1054, 1054, 1055, 1052, 1052, 1056, 1054, 1054, 1054, 1052, 1052, + 1052, 1053, 1054, 1054, 1071, 1052, 1052, 1052, 1072, 1054, 1054, 1073, + 1074, 1052, 1052, 1075, 1054, 1054, 1076, 1055, 1052, 1052, 1077, 1054, + 1054, 1078, 1079, 1052, 1052, 1080, 1054, 1054, 1054, 1081, 1052, 1052, + 1052, 1072, 1054, 1054, 1073, 1082, 1083, 1083, 1083, 1083, 1083, 1083, + 1084, 128, 128, 128, 1085, 1086, 1087, 1088, 1089, 1090, 1085, 1091, + 1085, 1087, 1087, 1092, 128, 1093, 128, 1094, 1095, 1093, 128, 1094, 106, + 106, 106, 106, 106, 106, 1096, 106, 568, 568, 568, 568, 568, 609, 568, + 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 609, 106, 568, + 610, 636, 610, 636, 568, 636, 568, 106, 106, 106, 106, 613, 1097, 615, + 615, 615, 1098, 615, 615, 615, 615, 615, 615, 615, 1099, 615, 615, 615, + 615, 615, 1100, 106, 106, 106, 106, 106, 106, 106, 106, 1101, 603, 603, + 603, 1102, 106, 733, 733, 733, 733, 733, 1103, 733, 1104, 1105, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 568, 568, 568, 568, 1106, 106, 1107, 568, 568, + 568, 568, 568, 568, 568, 568, 1108, 568, 568, 609, 106, 568, 568, 568, + 568, 1109, 611, 106, 106, 568, 568, 1106, 106, 568, 568, 568, 568, 568, + 568, 568, 610, 1110, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, + 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, 1111, 568, + 568, 568, 568, 568, 568, 568, 1112, 609, 106, 568, 568, 568, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 1113, 568, 568, 568, 568, 568, 568, 568, 568, 1114, 568, 106, + 106, 106, 106, 106, 106, 568, 568, 568, 568, 568, 568, 568, 568, 1112, + 106, 106, 106, 106, 106, 106, 106, 568, 568, 568, 568, 568, 568, 568, + 568, 568, 568, 568, 568, 568, 568, 609, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 751, 751, 751, + 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, + 751, 751, 751, 751, 751, 751, 751, 751, 751, 1115, 753, 753, 753, 753, + 753, 751, 751, 751, 751, 751, 751, 754, 753, 750, 751, 751, 751, 751, + 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, + 751, 751, 751, 751, 751, 751, 751, 751, 752, 753, 753, 753, 753, 753, + 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, + 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, + 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, + 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 856, + 856, 856, 857, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, + 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, + 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, + 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, 753, + 753, 753, 753, 753, 753, 753, 1116, 1117, 106, 106, 106, 1118, 1118, + 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, + 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, + 873, 873, 106, 106, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, + 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, + 854, 854, 854, 854, 854, 854, 854, 1119, + ]; + + private static $index2 = [ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 2, 4, 3, 1, 1, 1, 1, 1, 1, 3, 3, 3, 2, + 5, 6, 6, 7, 8, 7, 6, 6, 9, 10, 6, 11, 12, 13, 12, 12, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 12, 6, 15, 16, 15, 6, 6, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 9, 6, 10, 18, 19, 18, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 9, 16, + 10, 16, 1, 1, 1, 1, 1, 1, 3, 1, 1, 21, 22, 8, 8, 23, 8, 24, 22, 25, 26, + 27, 28, 16, 29, 30, 18, 31, 32, 33, 33, 25, 34, 22, 22, 25, 33, 27, 35, + 36, 36, 36, 22, 37, 37, 37, 37, 37, 37, 38, 37, 37, 37, 37, 37, 37, 37, + 37, 37, 38, 37, 37, 37, 37, 37, 37, 39, 38, 37, 37, 37, 37, 37, 38, 40, + 40, 40, 41, 41, 41, 41, 40, 41, 40, 40, 40, 41, 40, 40, 41, 41, 40, 41, + 40, 40, 41, 41, 41, 39, 40, 40, 40, 41, 40, 41, 40, 41, 37, 40, 37, 41, + 37, 41, 37, 41, 37, 41, 37, 41, 37, 41, 37, 41, 37, 40, 37, 40, 37, 41, + 37, 41, 37, 41, 37, 40, 37, 41, 37, 41, 37, 41, 37, 41, 37, 41, 38, 40, + 37, 40, 38, 40, 37, 41, 37, 41, 40, 37, 41, 37, 41, 37, 41, 38, 40, 38, + 40, 37, 40, 37, 41, 37, 40, 40, 38, 40, 37, 40, 37, 41, 37, 41, 38, 40, + 37, 41, 37, 41, 37, 37, 41, 37, 41, 37, 41, 41, 41, 37, 37, 41, 37, 41, + 37, 37, 41, 37, 37, 37, 41, 41, 37, 37, 37, 37, 41, 37, 37, 41, 37, 37, + 37, 41, 41, 41, 37, 37, 41, 37, 37, 41, 37, 41, 37, 41, 37, 37, 41, 37, + 41, 41, 37, 41, 37, 37, 41, 37, 37, 37, 41, 37, 41, 37, 37, 41, 41, 42, + 37, 41, 41, 41, 42, 42, 42, 42, 37, 43, 41, 37, 43, 41, 37, 43, 41, 37, + 40, 37, 40, 37, 40, 37, 40, 37, 40, 37, 40, 37, 40, 37, 40, 41, 37, 41, + 41, 37, 43, 41, 37, 41, 37, 37, 37, 41, 37, 41, 41, 41, 41, 41, 41, 41, + 37, 37, 41, 37, 37, 41, 41, 37, 41, 37, 37, 37, 37, 41, 41, 40, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, 41, + 41, 41, 44, 44, 44, 44, 44, 44, 44, 44, 44, 45, 45, 46, 46, 46, 46, 46, + 46, 46, 47, 47, 25, 47, 45, 48, 45, 48, 48, 48, 45, 48, 45, 45, 49, 46, + 47, 47, 47, 47, 47, 47, 25, 25, 25, 25, 47, 25, 47, 25, 44, 44, 44, 44, + 44, 47, 47, 47, 47, 47, 50, 50, 45, 47, 46, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 52, 53, 53, + 53, 53, 52, 54, 53, 53, 53, 53, 53, 55, 55, 53, 53, 53, 53, 55, 55, 53, + 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 56, 56, 56, 56, 56, 53, 53, 53, + 53, 51, 51, 51, 51, 51, 51, 51, 51, 57, 51, 53, 53, 53, 51, 51, 51, 53, + 53, 58, 51, 51, 51, 53, 53, 53, 53, 51, 52, 53, 53, 51, 59, 60, 60, 59, + 60, 60, 59, 51, 51, 51, 51, 51, 61, 62, 61, 62, 45, 63, 61, 62, 64, 64, + 65, 62, 62, 62, 66, 64, 64, 64, 64, 64, 63, 47, 61, 66, 61, 61, 61, 64, + 61, 64, 61, 61, 62, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 64, 67, 67, 67, 67, 67, 67, 67, 61, 61, 62, 62, 62, 62, + 62, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, + 62, 68, 68, 68, 68, 68, 68, 68, 62, 62, 62, 62, 62, 61, 62, 62, 61, 61, + 61, 62, 62, 62, 61, 62, 61, 62, 61, 62, 61, 62, 61, 62, 69, 70, 69, 70, + 69, 70, 69, 70, 69, 70, 69, 70, 69, 70, 62, 62, 62, 62, 61, 62, 71, 61, + 62, 61, 61, 62, 62, 61, 61, 61, 72, 73, 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 73, 73, 73, 73, 73, 73, 73, 73, 74, 74, 74, 74, + 74, 74, 74, 74, 75, 74, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 72, 75, 72, 75, 72, 75, 72, 75, 72, 75, 76, 77, 77, 78, 78, 77, + 79, 79, 72, 75, 72, 75, 72, 75, 72, 72, 75, 72, 75, 72, 75, 72, 75, 72, + 75, 72, 75, 72, 75, 75, 64, 64, 64, 64, 64, 64, 64, 64, 64, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 64, 64, 81, 82, 82, 82, 82, 82, 82, 64, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 64, 84, 85, 64, 64, 64, 64, 86, 64, 87, + 88, 88, 88, 88, 87, 88, 88, 88, 89, 87, 88, 88, 88, 88, 88, 88, 87, 87, + 87, 87, 87, 87, 88, 88, 87, 88, 88, 89, 90, 88, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 100, 101, 102, 103, 104, 105, 106, 107, 108, 106, 88, + 87, 106, 99, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 64, + 64, 64, 64, 64, 109, 109, 109, 106, 106, 64, 64, 64, 110, 110, 110, 110, + 110, 64, 111, 111, 112, 113, 113, 114, 115, 116, 117, 117, 118, 118, 118, + 118, 118, 118, 118, 118, 119, 120, 121, 122, 64, 64, 116, 122, 123, 123, + 123, 123, 123, 123, 123, 123, 124, 123, 123, 123, 123, 123, 123, 123, + 123, 123, 123, 125, 126, 127, 128, 129, 130, 131, 132, 78, 78, 133, 134, + 118, 118, 118, 118, 118, 134, 118, 118, 134, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 113, 136, 136, 116, 123, 123, 137, 123, 123, + 123, 123, 123, 123, 123, 123, 123, 123, 123, 116, 123, 118, 118, 118, + 118, 118, 118, 118, 138, 117, 118, 118, 118, 118, 134, 118, 139, 139, + 118, 118, 117, 134, 118, 118, 134, 123, 123, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 123, 123, 123, 141, 141, 123, 142, 142, 142, + 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 64, 143, 144, 145, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 146, 147, 146, 146, 147, 146, 146, 147, 147, 147, 146, 147, 147, 146, + 147, 146, 146, 146, 147, 146, 147, 146, 147, 146, 147, 146, 146, 64, 64, + 144, 144, 144, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, + 148, 148, 148, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, + 148, 64, 64, 64, 64, 64, 64, 150, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 152, 152, 152, 152, 152, 152, 152, 153, 152, 154, + 154, 155, 156, 156, 156, 154, 64, 64, 64, 64, 64, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 158, 158, 158, 158, + 159, 158, 158, 158, 158, 158, 158, 158, 158, 158, 159, 158, 158, 158, + 159, 158, 158, 158, 158, 158, 64, 64, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 64, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 162, 162, 162, 64, 64, 163, 64, 123, 64, 123, 123, 123, + 123, 123, 123, 123, 123, 123, 123, 123, 64, 64, 64, 64, 64, 64, 64, 118, + 118, 134, 118, 118, 134, 118, 118, 118, 134, 134, 134, 164, 165, 166, + 118, 118, 118, 134, 118, 118, 134, 134, 118, 118, 118, 118, 64, 167, 167, + 167, 168, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, + 169, 169, 167, 168, 170, 169, 168, 168, 168, 167, 167, 167, 167, 167, + 167, 167, 167, 168, 168, 168, 168, 171, 168, 168, 169, 78, 133, 172, 172, + 167, 167, 167, 169, 169, 167, 167, 84, 84, 173, 173, 173, 173, 173, 173, + 173, 173, 173, 173, 174, 175, 169, 169, 169, 169, 169, 169, 64, 169, 169, + 169, 169, 169, 169, 169, 64, 176, 177, 177, 64, 178, 178, 178, 178, 178, + 178, 178, 178, 64, 64, 178, 178, 64, 64, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 64, 178, 178, 178, 178, 178, 178, + 178, 64, 178, 64, 64, 64, 178, 178, 178, 178, 64, 64, 179, 178, 177, 177, + 177, 176, 176, 176, 176, 64, 64, 177, 177, 64, 64, 177, 177, 180, 178, + 64, 64, 64, 64, 64, 64, 64, 64, 177, 64, 64, 64, 64, 178, 178, 64, 178, + 178, 178, 176, 176, 64, 64, 181, 181, 181, 181, 181, 181, 181, 181, 181, + 181, 178, 178, 182, 182, 183, 183, 183, 183, 183, 183, 184, 182, 64, 64, + 64, 64, 64, 185, 185, 186, 64, 187, 187, 187, 187, 187, 187, 64, 64, 64, + 64, 187, 187, 64, 64, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 64, 187, 187, 187, 187, 187, 187, 187, 64, 187, 187, + 64, 187, 187, 64, 187, 187, 64, 64, 188, 64, 186, 186, 186, 185, 185, 64, + 64, 64, 64, 185, 185, 64, 64, 185, 185, 189, 64, 64, 64, 185, 64, 64, 64, + 64, 64, 64, 64, 187, 187, 187, 187, 64, 187, 64, 64, 64, 64, 64, 64, 64, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 185, 185, 187, 187, + 187, 185, 64, 64, 64, 191, 191, 192, 64, 193, 193, 193, 193, 193, 193, + 193, 193, 193, 64, 193, 193, 193, 64, 193, 193, 193, 193, 193, 193, 193, + 193, 193, 193, 193, 193, 193, 193, 64, 193, 193, 193, 193, 193, 193, 193, + 64, 193, 193, 64, 193, 193, 193, 193, 193, 64, 64, 194, 193, 192, 192, + 192, 191, 191, 191, 191, 191, 64, 191, 191, 192, 64, 192, 192, 195, 64, + 64, 193, 64, 64, 64, 64, 64, 64, 64, 193, 193, 191, 191, 64, 64, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 197, 198, 64, 64, 64, 64, + 64, 64, 64, 199, 200, 200, 64, 201, 201, 201, 201, 201, 201, 201, 201, + 64, 64, 201, 201, 64, 64, 201, 201, 201, 201, 201, 201, 201, 201, 201, + 201, 201, 201, 201, 201, 64, 201, 201, 201, 201, 201, 201, 201, 64, 201, + 201, 64, 201, 201, 201, 201, 201, 64, 64, 202, 201, 200, 199, 200, 199, + 199, 199, 199, 64, 64, 200, 200, 64, 64, 200, 200, 203, 64, 64, 64, 64, + 64, 64, 64, 64, 199, 200, 64, 64, 64, 64, 201, 201, 64, 201, 201, 201, + 199, 199, 64, 64, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 205, + 201, 206, 206, 206, 206, 206, 206, 64, 64, 207, 208, 64, 208, 208, 208, + 208, 208, 208, 64, 64, 64, 208, 208, 208, 64, 208, 208, 208, 208, 64, 64, + 64, 208, 208, 64, 208, 64, 208, 208, 64, 64, 64, 208, 208, 64, 64, 64, + 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 64, 64, 64, 64, 209, + 209, 207, 209, 209, 64, 64, 64, 209, 209, 209, 64, 209, 209, 209, 210, + 64, 64, 208, 64, 64, 64, 64, 64, 64, 209, 64, 64, 64, 64, 64, 64, 211, + 211, 211, 211, 211, 211, 211, 211, 211, 211, 212, 212, 212, 213, 213, + 213, 213, 213, 213, 214, 213, 64, 64, 64, 64, 64, 64, 215, 215, 215, 64, + 216, 216, 216, 216, 216, 216, 216, 216, 64, 216, 216, 216, 64, 216, 216, + 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, + 216, 216, 64, 216, 216, 216, 216, 216, 64, 64, 64, 216, 217, 217, 217, + 215, 215, 215, 215, 64, 217, 217, 217, 64, 217, 217, 217, 218, 64, 64, + 64, 64, 64, 64, 64, 219, 220, 64, 216, 216, 64, 64, 64, 64, 64, 64, 216, + 216, 217, 217, 64, 64, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 222, 222, 222, 222, 222, 222, 222, 223, 64, 64, 224, 224, 64, 225, 225, + 225, 225, 225, 225, 225, 225, 64, 225, 225, 225, 64, 225, 225, 225, 225, + 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 64, + 225, 225, 225, 225, 225, 64, 64, 226, 225, 224, 227, 224, 224, 224, 224, + 224, 64, 227, 224, 224, 64, 224, 224, 228, 229, 64, 64, 64, 64, 64, 64, + 64, 224, 224, 64, 64, 64, 64, 64, 64, 64, 225, 64, 225, 225, 228, 228, + 64, 64, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 64, 225, 225, + 64, 64, 64, 64, 64, 64, 64, 231, 231, 64, 232, 232, 232, 232, 232, 232, + 232, 232, 64, 232, 232, 232, 64, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 64, 64, 232, 231, 231, 231, + 233, 233, 233, 233, 64, 231, 231, 231, 64, 231, 231, 231, 234, 232, 64, + 64, 64, 64, 64, 64, 64, 64, 231, 232, 232, 233, 233, 64, 64, 235, 235, + 235, 235, 235, 235, 235, 235, 235, 235, 236, 236, 236, 236, 236, 236, 64, + 64, 64, 237, 232, 232, 232, 232, 232, 232, 64, 64, 238, 238, 64, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 64, 64, 64, 239, 239, 239, 239, 239, 239, 239, 239, 64, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 64, 239, 64, 64, 64, 64, + 240, 64, 64, 64, 64, 238, 238, 238, 241, 241, 241, 64, 241, 64, 238, 238, + 238, 238, 238, 238, 238, 238, 64, 64, 238, 238, 242, 64, 64, 64, 64, 243, + 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, + 243, 244, 243, 243, 244, 244, 244, 244, 245, 245, 246, 64, 64, 64, 64, + 247, 243, 243, 243, 243, 243, 243, 248, 244, 249, 249, 249, 249, 244, + 244, 244, 250, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 250, + 250, 64, 64, 64, 64, 64, 252, 252, 64, 252, 64, 64, 252, 252, 64, 252, + 64, 64, 252, 64, 64, 64, 64, 64, 64, 252, 252, 252, 252, 64, 252, 252, + 252, 252, 252, 252, 252, 64, 252, 252, 252, 64, 252, 64, 252, 64, 64, + 252, 252, 64, 252, 252, 252, 252, 253, 252, 252, 253, 253, 253, 253, 254, + 254, 64, 253, 253, 252, 64, 64, 252, 252, 252, 252, 252, 64, 255, 64, + 256, 256, 256, 256, 253, 253, 64, 64, 257, 257, 257, 257, 257, 257, 257, + 257, 257, 257, 64, 64, 252, 252, 252, 252, 258, 259, 259, 259, 260, 260, + 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 259, + 260, 259, 259, 259, 261, 261, 259, 259, 259, 259, 259, 259, 262, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 263, 263, 263, 263, 263, 263, + 263, 263, 263, 263, 259, 261, 259, 261, 259, 264, 265, 266, 265, 266, + 267, 267, 258, 258, 258, 258, 258, 258, 258, 258, 64, 258, 258, 258, 258, + 258, 258, 258, 258, 258, 258, 258, 258, 64, 64, 64, 64, 268, 269, 270, + 271, 270, 270, 270, 270, 270, 269, 269, 269, 269, 270, 267, 269, 270, + 272, 272, 273, 260, 272, 272, 258, 258, 258, 258, 258, 270, 270, 270, + 270, 270, 270, 270, 270, 270, 270, 270, 64, 270, 270, 270, 270, 270, 270, + 270, 270, 270, 270, 270, 270, 64, 259, 259, 259, 259, 259, 259, 259, 259, + 261, 259, 259, 259, 259, 259, 259, 64, 259, 259, 260, 260, 260, 260, 260, + 274, 274, 274, 274, 260, 260, 64, 64, 64, 64, 64, 275, 275, 275, 275, + 275, 275, 275, 275, 275, 275, 275, 276, 276, 277, 277, 277, 277, 276, + 277, 277, 277, 277, 277, 278, 276, 279, 279, 276, 276, 277, 277, 275, + 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 281, 281, 281, 281, + 281, 281, 275, 275, 275, 275, 275, 275, 276, 276, 277, 277, 275, 275, + 275, 275, 277, 277, 277, 275, 276, 276, 276, 275, 275, 276, 276, 276, + 276, 276, 276, 276, 275, 275, 275, 277, 277, 277, 277, 275, 275, 275, + 275, 275, 277, 276, 276, 277, 277, 276, 276, 276, 276, 276, 276, 282, + 275, 276, 280, 280, 276, 276, 276, 277, 283, 283, 284, 284, 284, 284, + 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 64, 284, 64, 64, 64, + 64, 64, 284, 64, 64, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, + 285, 84, 286, 285, 285, 285, 287, 287, 287, 287, 287, 287, 287, 287, 288, + 288, 288, 288, 288, 288, 288, 288, 289, 289, 289, 289, 289, 289, 289, + 289, 289, 64, 289, 289, 289, 289, 64, 64, 289, 289, 289, 289, 289, 289, + 289, 64, 289, 289, 289, 64, 64, 290, 290, 290, 291, 291, 291, 291, 291, + 291, 291, 291, 291, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 64, 64, 64, 293, 293, + 293, 293, 293, 293, 293, 293, 293, 293, 64, 64, 64, 64, 64, 64, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 64, 64, 64, 295, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 297, 297, 296, 298, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 300, 301, 64, 64, 64, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, + 302, 84, 84, 84, 303, 303, 303, 64, 64, 64, 64, 64, 64, 64, 304, 304, + 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 64, 304, 304, 304, + 304, 305, 305, 306, 64, 64, 64, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 308, 308, 309, 84, 84, 64, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 311, 311, 64, 64, 64, 64, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 64, 312, 312, 312, 64, 313, 313, 64, + 64, 64, 64, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 315, 315, 316, 315, 315, 315, 315, 315, 315, 315, 316, 316, 316, 316, + 316, 316, 316, 316, 315, 316, 316, 315, 315, 315, 315, 315, 315, 315, + 315, 315, 317, 315, 318, 318, 318, 319, 318, 318, 318, 320, 314, 321, 64, + 64, 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, 64, 64, 64, 64, 64, + 64, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 64, 64, 64, 64, 64, + 64, 324, 324, 66, 66, 324, 66, 325, 324, 324, 324, 324, 326, 326, 326, + 327, 64, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 64, 64, 64, + 64, 64, 64, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, 330, + 329, 329, 329, 329, 329, 331, 329, 64, 64, 64, 64, 64, 296, 296, 296, + 296, 296, 296, 64, 64, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 64, 64, 64, 333, 333, 333, 334, 334, 334, 334, 333, 333, + 334, 334, 334, 64, 64, 64, 64, 334, 334, 333, 334, 334, 334, 334, 334, + 334, 335, 336, 337, 64, 64, 64, 64, 338, 64, 64, 64, 339, 339, 340, 340, + 340, 340, 340, 340, 340, 340, 340, 340, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 64, 64, 341, 341, 341, 341, 341, + 64, 64, 64, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, 342, + 64, 64, 64, 64, 343, 343, 343, 343, 343, 343, 343, 343, 343, 342, 342, + 342, 342, 342, 342, 342, 343, 343, 64, 64, 64, 64, 64, 64, 344, 344, 344, + 344, 344, 344, 344, 344, 344, 344, 345, 64, 64, 64, 346, 346, 347, 347, + 347, 347, 347, 347, 347, 347, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 349, 350, 351, 351, 351, 64, 64, 352, + 352, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, + 354, 355, 354, 355, 355, 355, 355, 355, 355, 355, 64, 356, 354, 355, 354, + 354, 355, 355, 355, 355, 355, 355, 355, 355, 354, 354, 354, 354, 354, + 354, 355, 355, 357, 357, 357, 357, 357, 357, 357, 357, 64, 64, 358, 359, + 359, 359, 359, 359, 359, 359, 359, 359, 359, 64, 64, 64, 64, 64, 64, 360, + 360, 360, 360, 360, 360, 360, 361, 360, 360, 360, 360, 360, 360, 64, 64, + 362, 362, 362, 362, 363, 364, 364, 364, 364, 364, 364, 364, 364, 364, + 364, 364, 364, 364, 364, 364, 365, 363, 362, 362, 362, 362, 362, 363, + 362, 363, 363, 363, 363, 363, 362, 363, 366, 364, 364, 364, 364, 364, + 364, 364, 64, 64, 64, 64, 367, 367, 367, 367, 367, 367, 367, 367, 367, + 367, 368, 368, 368, 368, 368, 368, 368, 369, 369, 369, 369, 369, 369, + 369, 369, 369, 369, 370, 371, 370, 370, 370, 370, 370, 370, 370, 369, + 369, 369, 369, 369, 369, 369, 369, 369, 64, 64, 64, 372, 372, 373, 374, + 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 373, + 372, 372, 372, 372, 373, 373, 372, 372, 375, 376, 373, 373, 374, 374, + 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, 374, 374, 374, 374, + 374, 374, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, + 378, 378, 379, 380, 381, 381, 380, 380, 380, 381, 380, 381, 381, 381, + 382, 382, 64, 64, 64, 64, 64, 64, 64, 64, 383, 383, 383, 383, 384, 384, + 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 385, 385, 385, 385, + 385, 385, 385, 385, 386, 386, 386, 386, 386, 386, 386, 386, 385, 385, + 386, 387, 64, 64, 64, 388, 388, 388, 388, 388, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 64, 64, 64, 384, 384, 384, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 392, 392, 392, 392, 392, 392, 393, 393, + 394, 394, 394, 394, 394, 394, 394, 394, 78, 78, 78, 84, 395, 133, 133, + 133, 133, 133, 78, 78, 133, 133, 133, 133, 78, 396, 395, 395, 395, 395, + 395, 395, 395, 397, 397, 397, 397, 133, 397, 397, 397, 397, 396, 396, 78, + 397, 397, 64, 41, 41, 41, 41, 41, 41, 62, 62, 62, 62, 62, 75, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 65, 65, 65, 65, 65, 44, 44, 44, 44, 65, 65, 65, + 65, 65, 41, 41, 41, 41, 41, 398, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 65, 78, 78, 133, 78, 78, + 78, 78, 78, 78, 78, 133, 78, 78, 399, 400, 133, 401, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 64, + 64, 64, 64, 64, 402, 133, 78, 133, 37, 41, 37, 41, 37, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 37, 41, 62, 62, 62, 62, 62, 62, 62, 62, 61, 61, 61, + 61, 61, 61, 61, 61, 62, 62, 62, 62, 62, 62, 64, 64, 61, 61, 61, 61, 61, + 61, 64, 64, 64, 61, 64, 61, 64, 61, 64, 61, 403, 403, 403, 403, 403, 403, + 403, 403, 62, 62, 62, 62, 62, 64, 62, 62, 61, 61, 61, 61, 403, 63, 62, + 63, 63, 63, 62, 62, 62, 64, 62, 62, 61, 61, 61, 61, 403, 63, 63, 63, 62, + 62, 62, 62, 64, 64, 62, 62, 61, 61, 61, 61, 64, 63, 63, 63, 61, 61, 61, + 61, 61, 63, 63, 63, 64, 64, 62, 62, 62, 64, 62, 62, 61, 61, 61, 61, 403, + 63, 63, 64, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, 405, + 406, 406, 407, 408, 409, 410, 410, 409, 409, 409, 22, 66, 411, 412, 413, + 414, 411, 412, 413, 414, 22, 22, 22, 66, 22, 22, 22, 22, 415, 416, 417, + 418, 419, 420, 421, 21, 422, 423, 422, 422, 423, 22, 66, 66, 66, 28, 35, + 22, 66, 66, 22, 424, 424, 66, 66, 66, 425, 426, 427, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 428, 66, 424, 66, 66, 66, 66, 66, 66, 66, 66, 66, + 66, 404, 405, 405, 405, 405, 405, 64, 64, 64, 64, 64, 405, 405, 405, 405, + 405, 405, 429, 44, 64, 64, 33, 429, 429, 429, 429, 429, 430, 430, 428, + 426, 427, 431, 429, 33, 33, 33, 33, 429, 429, 429, 429, 429, 430, 430, + 428, 426, 427, 64, 44, 44, 44, 44, 44, 64, 64, 64, 247, 247, 247, 247, + 247, 247, 247, 247, 247, 432, 247, 247, 23, 247, 247, 247, 247, 247, 247, + 64, 64, 64, 64, 64, 78, 78, 395, 395, 78, 78, 78, 78, 395, 395, 395, 78, + 78, 433, 433, 433, 433, 78, 433, 433, 433, 395, 395, 78, 133, 78, 395, + 395, 133, 133, 133, 133, 78, 64, 64, 64, 64, 64, 64, 64, 26, 26, 434, 30, + 26, 30, 26, 434, 26, 30, 34, 434, 434, 434, 34, 34, 434, 434, 434, 435, + 26, 434, 30, 26, 428, 434, 434, 434, 434, 434, 26, 26, 26, 30, 30, 26, + 434, 26, 67, 26, 434, 26, 37, 38, 434, 434, 436, 34, 434, 434, 37, 434, + 34, 397, 397, 397, 397, 34, 26, 26, 34, 34, 434, 434, 437, 428, 428, 428, + 428, 434, 34, 34, 34, 34, 26, 428, 26, 26, 41, 274, 438, 438, 438, 36, + 36, 438, 438, 438, 438, 438, 438, 36, 36, 36, 36, 438, 439, 439, 439, + 439, 439, 439, 439, 439, 439, 439, 439, 439, 440, 440, 440, 440, 439, + 439, 440, 440, 440, 440, 440, 440, 440, 440, 440, 37, 41, 440, 440, 440, + 440, 36, 64, 64, 64, 64, 64, 64, 39, 39, 39, 39, 39, 30, 30, 30, 30, 30, + 428, 428, 26, 26, 26, 26, 428, 26, 26, 428, 26, 26, 428, 26, 26, 26, 26, + 26, 26, 26, 428, 26, 26, 26, 26, 26, 26, 26, 26, 26, 30, 30, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 428, 428, 26, 26, 39, 26, 39, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 30, 26, 26, 26, 26, 428, 428, 428, 428, + 428, 428, 428, 428, 428, 428, 428, 428, 39, 437, 441, 441, 437, 428, 428, + 39, 441, 437, 437, 441, 437, 437, 428, 39, 428, 441, 430, 442, 428, 441, + 437, 428, 428, 428, 441, 437, 437, 441, 39, 441, 441, 437, 437, 39, 437, + 39, 437, 39, 39, 39, 39, 441, 441, 437, 441, 437, 437, 437, 437, 437, 39, + 39, 39, 39, 428, 437, 428, 437, 441, 441, 437, 437, 437, 437, 437, 437, + 437, 437, 437, 437, 441, 437, 437, 437, 441, 428, 428, 428, 428, 428, + 441, 437, 437, 437, 428, 428, 428, 428, 428, 428, 428, 428, 428, 437, + 441, 39, 437, 428, 441, 441, 441, 441, 437, 437, 441, 441, 428, 428, 441, + 441, 437, 437, 441, 441, 437, 437, 441, 441, 437, 437, 437, 437, 437, + 428, 428, 437, 437, 437, 437, 428, 428, 39, 428, 428, 437, 39, 428, 428, + 428, 428, 428, 428, 428, 428, 437, 437, 428, 39, 437, 437, 437, 428, 428, + 428, 428, 428, 437, 441, 428, 437, 437, 437, 437, 437, 428, 428, 437, + 437, 428, 428, 428, 428, 437, 437, 437, 437, 437, 437, 437, 437, 428, + 428, 437, 437, 437, 437, 26, 26, 26, 26, 26, 26, 30, 26, 26, 26, 26, 26, + 437, 437, 26, 26, 26, 26, 26, 26, 26, 443, 444, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, + 274, 274, 274, 26, 428, 26, 26, 26, 26, 26, 26, 26, 26, 274, 26, 26, 26, + 26, 26, 428, 428, 428, 428, 428, 428, 428, 428, 428, 26, 26, 26, 26, 428, + 428, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 64, 64, 64, 64, 26, 26, 26, + 26, 26, 26, 26, 64, 26, 26, 26, 64, 64, 64, 64, 64, 36, 36, 36, 36, 36, + 36, 36, 36, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 445, 445, + 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 438, 36, 36, + 36, 36, 36, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 26, 26, 26, + 26, 26, 26, 30, 30, 30, 30, 26, 26, 30, 30, 26, 30, 30, 30, 30, 30, 26, + 26, 30, 30, 26, 26, 30, 39, 26, 26, 26, 26, 30, 30, 26, 26, 30, 39, 26, + 26, 26, 26, 30, 30, 30, 26, 26, 30, 26, 26, 30, 30, 26, 26, 26, 26, 26, + 30, 30, 26, 26, 30, 26, 26, 26, 26, 30, 30, 26, 26, 26, 26, 30, 26, 30, + 26, 30, 26, 30, 26, 26, 26, 26, 26, 30, 30, 26, 30, 30, 30, 26, 30, 30, + 30, 30, 26, 30, 30, 26, 39, 26, 26, 26, 26, 26, 26, 30, 30, 26, 26, 26, + 26, 274, 26, 26, 26, 26, 26, 26, 26, 30, 30, 30, 30, 30, 30, 30, 30, 30, + 30, 26, 30, 30, 30, 26, 30, 26, 26, 26, 26, 64, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 30, 26, 26, 426, 427, 426, 427, 426, 427, 426, + 427, 426, 427, 426, 427, 426, 427, 36, 36, 438, 438, 438, 438, 438, 438, + 438, 438, 438, 438, 438, 438, 26, 26, 26, 26, 437, 428, 428, 437, 437, + 426, 427, 428, 437, 437, 428, 437, 437, 437, 428, 428, 428, 428, 428, + 437, 437, 437, 437, 428, 428, 428, 428, 428, 437, 437, 437, 428, 428, + 428, 437, 437, 437, 437, 9, 10, 9, 10, 9, 10, 9, 10, 426, 427, 446, 446, + 446, 446, 446, 446, 446, 446, 428, 428, 428, 426, 427, 9, 10, 426, 427, + 426, 427, 426, 427, 426, 427, 426, 427, 428, 428, 437, 437, 437, 437, + 437, 437, 428, 428, 428, 428, 428, 428, 428, 428, 437, 428, 428, 428, + 428, 437, 437, 437, 437, 437, 428, 437, 437, 428, 428, 426, 427, 426, + 427, 437, 428, 428, 428, 428, 437, 428, 437, 437, 437, 428, 428, 437, + 437, 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, 437, 437, 437, + 437, 437, 437, 428, 428, 426, 427, 428, 428, 428, 428, 437, 437, 437, + 437, 437, 437, 437, 437, 437, 437, 437, 428, 437, 437, 437, 437, 428, + 428, 437, 428, 437, 428, 428, 437, 428, 437, 437, 437, 437, 428, 428, + 428, 428, 428, 437, 437, 428, 428, 428, 428, 437, 437, 437, 437, 428, + 437, 437, 428, 428, 437, 437, 428, 428, 428, 428, 437, 437, 437, 437, + 437, 437, 437, 437, 437, 437, 437, 428, 428, 437, 437, 437, 437, 437, + 437, 437, 437, 428, 437, 437, 437, 437, 437, 437, 437, 437, 428, 428, + 428, 428, 428, 437, 428, 437, 428, 428, 428, 437, 437, 437, 437, 437, + 428, 428, 428, 428, 437, 428, 428, 428, 437, 437, 437, 437, 437, 428, + 437, 428, 428, 428, 428, 428, 428, 428, 26, 26, 428, 428, 428, 428, 428, + 428, 64, 64, 64, 26, 26, 26, 26, 26, 30, 30, 30, 30, 30, 64, 64, 64, 64, + 64, 64, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, + 447, 447, 64, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, + 448, 448, 448, 64, 37, 41, 37, 37, 37, 41, 41, 37, 41, 37, 41, 37, 41, + 37, 37, 37, 37, 41, 37, 41, 41, 37, 41, 41, 41, 41, 41, 41, 44, 44, 37, + 37, 69, 70, 69, 70, 70, 449, 449, 449, 449, 449, 449, 69, 70, 69, 70, + 450, 450, 450, 69, 70, 64, 64, 64, 64, 64, 451, 451, 451, 451, 452, 451, + 451, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, + 453, 64, 453, 64, 64, 64, 64, 64, 453, 64, 64, 454, 454, 454, 454, 454, + 454, 454, 454, 64, 64, 64, 64, 64, 64, 64, 455, 456, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 457, 77, 77, 77, 77, 77, 77, 77, 77, + 66, 66, 28, 35, 28, 35, 66, 66, 66, 28, 35, 66, 28, 35, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 410, 66, 66, 410, 66, 28, 35, 66, 66, 28, 35, 426, + 427, 426, 427, 426, 427, 426, 427, 66, 66, 66, 66, 66, 45, 66, 66, 410, + 410, 64, 64, 64, 64, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, + 64, 458, 458, 458, 458, 458, 458, 458, 458, 458, 64, 64, 64, 64, 458, + 458, 458, 458, 458, 458, 64, 64, 459, 459, 459, 459, 459, 459, 459, 459, + 459, 459, 459, 459, 64, 64, 64, 64, 460, 461, 461, 461, 459, 462, 463, + 464, 443, 444, 443, 444, 443, 444, 443, 444, 443, 444, 459, 459, 443, + 444, 443, 444, 443, 444, 443, 444, 465, 466, 467, 467, 459, 464, 464, + 464, 464, 464, 464, 464, 464, 464, 468, 469, 470, 471, 472, 472, 465, + 473, 473, 473, 473, 473, 459, 459, 464, 464, 464, 462, 463, 461, 459, 26, + 64, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, + 474, 474, 474, 474, 474, 474, 474, 474, 64, 64, 475, 475, 476, 476, 477, + 477, 474, 465, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 478, 478, 478, 478, 478, 461, 473, 479, 479, 478, 64, 64, 64, + 64, 64, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, 480, + 480, 480, 480, 480, 64, 64, 64, 287, 287, 287, 287, 287, 287, 287, 287, + 287, 287, 287, 287, 287, 287, 64, 481, 481, 482, 482, 482, 482, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 480, 480, 480, 64, 64, 64, 64, + 64, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 484, + 484, 64, 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, 481, 481, 481, + 481, 481, 481, 485, 485, 485, 485, 485, 485, 485, 485, 459, 486, 486, + 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, 483, + 483, 483, 483, 484, 484, 484, 481, 481, 486, 486, 486, 486, 486, 486, + 486, 481, 481, 481, 481, 459, 459, 459, 459, 487, 487, 487, 487, 487, + 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, 64, 481, 481, 481, 481, + 481, 481, 481, 459, 459, 459, 459, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 459, 459, 488, 489, 489, 489, 489, 489, 489, 489, + 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, 488, + 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 489, 489, 489, 489, + 488, 490, 490, 490, 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, + 491, 491, 491, 492, 491, 491, 491, 491, 491, 491, 491, 64, 64, 64, 493, + 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 64, + 494, 494, 494, 494, 494, 494, 494, 494, 495, 495, 495, 495, 495, 495, + 496, 496, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, + 498, 499, 499, 499, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 497, 497, 64, 64, 64, 64, 72, 75, 72, 75, 72, 75, 501, 77, 79, 79, 79, + 502, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 502, 503, 64, 64, 64, 64, + 64, 64, 64, 77, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, + 504, 504, 504, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 506, + 506, 507, 507, 507, 507, 507, 507, 47, 47, 47, 47, 47, 47, 47, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 47, 47, 37, 41, 37, 41, 37, 41, 41, 41, 37, + 41, 37, 41, 37, 41, 44, 41, 41, 41, 41, 41, 41, 41, 41, 37, 41, 37, 41, + 37, 37, 41, 45, 508, 508, 37, 41, 37, 41, 64, 37, 41, 37, 41, 64, 64, 64, + 64, 37, 41, 37, 64, 64, 64, 64, 64, 44, 44, 41, 42, 42, 42, 42, 42, 509, + 509, 510, 509, 509, 509, 511, 509, 509, 509, 509, 510, 509, 509, 509, + 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 512, 512, + 510, 510, 512, 513, 513, 513, 513, 64, 64, 64, 64, 514, 514, 514, 514, + 514, 514, 274, 274, 247, 436, 64, 64, 64, 64, 64, 64, 515, 515, 515, 515, + 515, 515, 515, 515, 515, 515, 515, 515, 516, 516, 516, 516, 517, 517, + 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, + 518, 518, 518, 518, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 517, 517, 517, 517, 517, 517, 519, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 520, 520, 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, 64, 64, 64, + 64, 64, 64, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 169, 169, + 169, 169, 169, 169, 174, 174, 174, 169, 64, 64, 64, 64, 522, 522, 522, + 522, 522, 522, 522, 522, 522, 522, 523, 523, 523, 523, 523, 523, 523, + 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, 524, + 524, 524, 524, 524, 525, 525, 525, 526, 526, 527, 527, 527, 527, 527, + 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 528, 528, 528, 528, + 528, 528, 528, 528, 528, 528, 528, 529, 530, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 531, 287, 287, 287, 287, 287, 64, 64, 64, 532, 532, 532, + 533, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, + 534, 534, 535, 533, 533, 532, 532, 532, 532, 533, 533, 532, 533, 533, + 533, 536, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, + 537, 64, 538, 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, 64, 64, + 64, 64, 537, 537, 540, 540, 540, 540, 540, 540, 540, 540, 540, 541, 541, + 541, 541, 541, 541, 542, 542, 541, 541, 542, 542, 541, 541, 64, 540, 540, + 540, 541, 540, 540, 540, 540, 540, 540, 540, 540, 541, 542, 64, 64, 543, + 543, 543, 543, 543, 543, 543, 543, 543, 543, 64, 64, 544, 544, 544, 544, + 545, 275, 275, 275, 275, 275, 275, 283, 283, 283, 275, 276, 64, 64, 64, + 64, 546, 546, 546, 546, 546, 546, 546, 546, 547, 546, 547, 547, 548, 546, + 546, 547, 547, 546, 546, 546, 546, 546, 547, 547, 546, 547, 546, 64, 64, + 64, 64, 64, 64, 64, 64, 546, 546, 549, 550, 550, 551, 551, 551, 551, 551, + 551, 551, 551, 551, 551, 551, 552, 553, 553, 552, 552, 554, 554, 551, + 555, 555, 552, 556, 64, 64, 289, 289, 289, 289, 289, 289, 64, 551, 551, + 551, 552, 552, 553, 552, 552, 553, 552, 552, 554, 552, 556, 64, 64, 557, + 557, 557, 557, 557, 557, 557, 557, 557, 557, 64, 64, 64, 64, 64, 64, 287, + 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, + 558, 558, 558, 558, 287, 64, 64, 64, 64, 288, 288, 288, 288, 288, 288, + 288, 64, 64, 64, 64, 288, 288, 288, 288, 288, 288, 288, 288, 288, 64, 64, + 64, 64, 559, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 559, + 560, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, + 561, 561, 561, 561, 561, 561, 561, 561, 561, 560, 488, 488, 488, 488, + 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, 490, 490, 488, 488, + 490, 490, 490, 490, 490, 490, 41, 41, 41, 41, 41, 41, 41, 64, 64, 64, 64, + 83, 83, 83, 83, 83, 64, 64, 64, 64, 64, 109, 562, 109, 109, 563, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 64, 109, 109, + 109, 109, 109, 64, 109, 64, 109, 109, 64, 109, 109, 64, 109, 109, 123, + 123, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, 564, + 564, 564, 564, 64, 64, 64, 64, 64, 64, 64, 64, 64, 123, 123, 123, 123, + 123, 123, 123, 123, 123, 123, 123, 413, 565, 64, 64, 123, 123, 123, 123, + 123, 123, 123, 123, 123, 123, 114, 26, 64, 64, 58, 58, 58, 58, 58, 58, + 58, 58, 461, 461, 461, 461, 461, 461, 461, 466, 467, 461, 64, 64, 64, 64, + 64, 64, 461, 465, 465, 566, 566, 466, 467, 466, 467, 466, 467, 466, 467, + 466, 467, 466, 467, 466, 467, 466, 467, 461, 461, 466, 467, 461, 461, + 461, 461, 566, 566, 566, 567, 461, 567, 64, 461, 567, 461, 461, 465, 443, + 444, 443, 444, 443, 444, 568, 461, 461, 569, 570, 571, 571, 572, 64, 461, + 573, 568, 461, 64, 64, 64, 64, 123, 123, 123, 123, 123, 64, 123, 123, + 123, 123, 123, 123, 123, 64, 64, 405, 64, 574, 574, 575, 576, 575, 574, + 574, 577, 578, 574, 579, 580, 581, 580, 580, 582, 582, 582, 582, 582, + 582, 582, 582, 582, 582, 580, 574, 583, 584, 583, 574, 574, 585, 585, + 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, + 585, 585, 577, 574, 578, 586, 587, 586, 588, 588, 588, 588, 588, 588, + 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 577, 584, + 578, 584, 577, 578, 589, 590, 591, 589, 589, 592, 592, 592, 592, 592, + 592, 592, 592, 592, 592, 593, 592, 592, 592, 592, 592, 592, 592, 592, + 592, 592, 592, 592, 592, 593, 593, 594, 594, 594, 594, 594, 594, 594, + 594, 594, 594, 594, 594, 594, 594, 594, 64, 64, 64, 594, 594, 594, 594, + 594, 594, 64, 64, 594, 594, 594, 64, 64, 64, 576, 576, 584, 586, 595, + 576, 576, 64, 596, 597, 597, 597, 597, 596, 596, 64, 64, 598, 598, 598, + 26, 30, 64, 64, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, + 599, 64, 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, 64, 599, 599, + 599, 64, 599, 599, 64, 599, 599, 599, 599, 599, 599, 599, 64, 64, 599, + 599, 599, 64, 64, 64, 64, 64, 84, 66, 84, 64, 64, 64, 64, 514, 514, 514, + 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, 64, 64, 64, 274, 600, + 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 601, 601, + 601, 601, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, + 602, 602, 602, 602, 602, 601, 64, 64, 64, 64, 64, 274, 274, 274, 274, + 274, 133, 64, 64, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, + 603, 603, 64, 64, 64, 604, 604, 604, 604, 604, 604, 604, 604, 604, 64, + 64, 64, 64, 64, 64, 64, 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, + 605, 605, 605, 605, 605, 64, 606, 606, 606, 606, 64, 64, 64, 64, 607, + 607, 607, 607, 607, 607, 607, 607, 607, 608, 607, 607, 607, 607, 607, + 607, 607, 607, 608, 64, 64, 64, 64, 64, 609, 609, 609, 609, 609, 609, + 609, 609, 609, 609, 609, 609, 609, 609, 64, 610, 611, 611, 611, 611, 611, + 611, 611, 611, 611, 611, 611, 611, 64, 64, 64, 64, 612, 613, 613, 613, + 613, 613, 64, 64, 614, 614, 614, 614, 614, 614, 614, 614, 615, 615, 615, + 615, 615, 615, 615, 615, 616, 616, 616, 616, 616, 616, 616, 616, 617, + 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, 64, 64, + 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 64, 64, 64, 64, 64, 64, + 619, 619, 619, 619, 619, 619, 64, 64, 619, 64, 619, 619, 619, 619, 619, + 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, + 619, 64, 619, 619, 64, 64, 64, 619, 64, 64, 619, 620, 620, 620, 620, 620, + 620, 620, 620, 620, 620, 620, 620, 620, 620, 64, 621, 622, 622, 622, 622, + 622, 622, 622, 622, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, + 623, 623, 623, 623, 624, 624, 624, 624, 624, 624, 64, 64, 64, 625, 626, + 626, 626, 626, 626, 626, 626, 626, 626, 626, 64, 64, 64, 64, 64, 627, + 628, 628, 628, 628, 628, 628, 628, 628, 629, 629, 629, 629, 629, 629, + 629, 629, 64, 64, 64, 64, 64, 64, 629, 629, 630, 631, 631, 631, 64, 631, + 631, 64, 64, 64, 64, 64, 631, 632, 631, 633, 630, 630, 630, 630, 64, 630, + 630, 630, 64, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, + 630, 630, 630, 630, 630, 630, 630, 64, 64, 64, 64, 633, 634, 632, 64, 64, + 64, 64, 635, 636, 636, 636, 636, 636, 636, 636, 636, 637, 637, 637, 637, + 637, 637, 637, 637, 637, 64, 64, 64, 64, 64, 64, 64, 638, 638, 638, 638, + 638, 638, 638, 638, 638, 638, 638, 638, 638, 639, 639, 640, 641, 641, + 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 64, 64, 64, + 642, 642, 642, 642, 642, 642, 642, 643, 643, 643, 643, 643, 643, 643, + 643, 643, 643, 643, 643, 643, 643, 64, 64, 644, 644, 644, 644, 644, 644, + 644, 644, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 645, 64, 64, + 64, 64, 64, 646, 646, 646, 646, 646, 646, 646, 646, 647, 647, 647, 647, + 647, 647, 647, 647, 647, 64, 64, 64, 64, 64, 64, 64, 648, 648, 648, 648, + 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 64, 649, 650, 649, + 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, 650, + 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, 652, + 653, 653, 653, 653, 653, 653, 653, 64, 64, 64, 64, 654, 654, 654, 654, + 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, + 654, 654, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 656, 656, + 657, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, 658, + 657, 657, 657, 656, 656, 656, 656, 657, 657, 659, 660, 661, 661, 662, + 661, 661, 661, 661, 64, 64, 64, 64, 64, 64, 663, 663, 663, 663, 663, 663, + 663, 663, 663, 64, 64, 64, 64, 64, 64, 64, 664, 664, 664, 664, 664, 664, + 664, 664, 664, 664, 64, 64, 64, 64, 64, 64, 665, 665, 665, 666, 666, 666, + 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, + 666, 666, 666, 667, 667, 667, 667, 667, 668, 667, 667, 667, 667, 667, + 667, 669, 669, 64, 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, 671, + 671, 671, 671, 64, 64, 64, 64, 672, 672, 673, 674, 674, 674, 674, 674, + 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, 673, 673, 673, + 672, 672, 672, 672, 672, 672, 672, 672, 672, 673, 675, 674, 674, 674, + 674, 676, 676, 676, 676, 64, 64, 64, 64, 64, 64, 64, 677, 677, 677, 677, + 677, 677, 677, 677, 677, 677, 64, 64, 64, 64, 64, 64, 678, 678, 678, 678, + 678, 678, 678, 678, 678, 678, 678, 679, 680, 679, 680, 680, 679, 679, + 679, 679, 679, 679, 681, 682, 683, 683, 683, 683, 683, 683, 683, 683, + 683, 683, 64, 64, 64, 64, 64, 64, 684, 684, 684, 684, 684, 684, 684, 684, + 684, 684, 684, 684, 684, 684, 684, 64, 685, 685, 685, 685, 685, 685, 685, + 685, 685, 685, 685, 64, 64, 64, 64, 64, 686, 686, 686, 686, 64, 64, 64, + 64, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, 687, + 687, 64, 504, 64, 64, 64, 64, 64, 64, 64, 688, 688, 688, 688, 688, 688, + 688, 688, 688, 688, 688, 688, 688, 64, 64, 64, 688, 689, 689, 689, 689, + 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, + 689, 689, 689, 689, 64, 64, 64, 64, 64, 64, 64, 64, 690, 690, 690, 690, + 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, 478, + 474, 64, 64, 64, 64, 64, 64, 274, 274, 274, 274, 274, 274, 64, 64, 274, + 274, 274, 274, 274, 274, 274, 64, 64, 274, 274, 274, 274, 274, 274, 274, + 274, 274, 274, 274, 274, 692, 692, 395, 395, 395, 274, 274, 274, 693, + 692, 692, 692, 692, 692, 405, 405, 405, 405, 405, 405, 405, 405, 133, + 133, 133, 133, 133, 133, 133, 133, 274, 274, 78, 78, 78, 78, 78, 133, + 133, 274, 274, 274, 274, 274, 274, 78, 78, 78, 78, 274, 274, 602, 602, + 694, 694, 694, 602, 64, 64, 514, 514, 64, 64, 64, 64, 64, 64, 434, 434, + 434, 434, 434, 434, 434, 434, 434, 434, 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 434, 434, 434, 434, 434, 434, + 434, 434, 434, 434, 34, 34, 34, 34, 34, 34, 34, 64, 34, 34, 34, 34, 34, + 34, 434, 64, 434, 434, 64, 64, 434, 64, 64, 434, 434, 64, 64, 434, 434, + 434, 434, 64, 434, 434, 34, 34, 64, 34, 64, 34, 34, 34, 34, 34, 34, 34, + 64, 34, 34, 34, 34, 34, 34, 34, 434, 434, 64, 434, 434, 434, 434, 64, 64, + 434, 434, 434, 434, 434, 434, 434, 434, 64, 434, 434, 434, 434, 434, 434, + 434, 64, 34, 34, 434, 434, 64, 434, 434, 434, 434, 64, 434, 434, 434, + 434, 434, 64, 434, 64, 64, 64, 434, 434, 434, 434, 434, 434, 434, 64, 34, + 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 64, 64, 434, 695, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 437, 34, 34, 34, 34, 34, 34, 434, 434, 434, 434, + 434, 434, 434, 434, 434, 695, 34, 34, 34, 34, 34, 34, 34, 34, 34, 437, + 34, 34, 434, 434, 434, 434, 434, 695, 34, 34, 34, 34, 34, 34, 34, 34, 34, + 437, 34, 34, 34, 34, 34, 34, 434, 434, 434, 434, 434, 434, 434, 434, 434, + 695, 34, 437, 34, 34, 34, 34, 34, 34, 34, 34, 434, 34, 64, 64, 696, 696, + 696, 696, 696, 696, 696, 696, 696, 696, 123, 123, 123, 123, 64, 123, 123, + 123, 64, 123, 123, 64, 123, 64, 64, 123, 64, 123, 123, 123, 123, 123, + 123, 123, 123, 123, 123, 64, 123, 123, 123, 123, 64, 123, 64, 123, 64, + 64, 64, 64, 64, 64, 123, 64, 64, 64, 64, 123, 64, 123, 64, 123, 64, 123, + 123, 123, 64, 123, 64, 123, 64, 123, 64, 123, 64, 123, 123, 123, 123, 64, + 123, 64, 123, 123, 64, 123, 123, 123, 123, 123, 123, 123, 123, 123, 64, + 64, 64, 64, 64, 123, 123, 123, 64, 123, 123, 123, 111, 111, 64, 64, 64, + 64, 64, 64, 33, 33, 33, 64, 64, 64, 64, 64, 445, 445, 445, 445, 445, 445, + 274, 64, 445, 445, 26, 26, 64, 64, 64, 64, 445, 445, 445, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 274, 274, 697, 481, 481, 64, 64, 64, 64, 64, + 481, 481, 481, 64, 64, 64, 64, 64, 481, 64, 64, 64, 64, 64, 64, 64, 481, + 481, 64, 64, 64, 64, 64, 64, 26, 64, 64, 64, 64, 64, 64, 64, 26, 26, 26, + 26, 26, 26, 64, 26, 26, 26, 26, 26, 26, 64, 64, 64, 26, 26, 26, 26, 26, + 64, 26, 26, 26, 64, 26, 26, 26, 26, 26, 26, 64, 26, 26, 26, 26, 64, 64, + 64, 26, 26, 26, 26, 26, 26, 64, 64, 64, 64, 64, 26, 26, 26, 26, 26, 26, + 64, 64, 64, 64, 26, 26, 26, 489, 489, 489, 489, 489, 489, 488, 490, 490, + 490, 490, 490, 490, 490, 64, 64, 64, 405, 64, 64, 64, 64, 64, 64, 405, + 405, 405, 405, 405, 405, 405, 405, 561, 561, 561, 561, 561, 560, 64, 64, + ]; +} diff --git a/Mpdf/Utils/Arrays.php b/Mpdf/Utils/Arrays.php new file mode 100644 index 0000000..f27c83a --- /dev/null +++ b/Mpdf/Utils/Arrays.php @@ -0,0 +1,92 @@ +<?php + +namespace Mpdf\Utils; + +class Arrays +{ + + public static function get($array, $key, $default = null) + { + if (is_array($array) && array_key_exists($key, $array)) { + return $array[$key]; + } + + if (func_num_args() < 3) { + throw new \InvalidArgumentException(sprintf('Array does not contain key "%s"', $key)); + } + + return $default; + } + + /** + * Returns an array of all k-combinations from an input array of n elements, where k equals 1..n. + * Elements will be sorted and unique in every combination. + * + * Example: array[one, two] will give: + * [ + * [one], + * [two], + * [one, two] + * ] + * @param array $array + * @return array + */ + public static function allUniqueSortedCombinations($array) + { + $input = array_unique($array); + if (count($input) <= 1) { + return [$input]; + } + + sort($input); + $combinations = []; + foreach ($input as $value) { + $combinations[] = [$value]; + } + + $n = count($input); + for ($k = 2; $k <= $n; $k++) { + $combinations = array_merge($combinations, self::combinations($input, $k)); + } + + return $combinations; + } + + /** + * Returns an array of unique k-combinations from an input array. + * + * Example: array=[one, two, three] and k=2 will give: + * [ + * [one, two], + * [one, three] + * ] + * @param array $array + * @param int $k + * @return array + */ + public static function combinations($array, $k) + { + $n = count($array); + $combinations = []; + $indexes = range(0, $k - 1); + $maxIndexes = range($n - $k, $n - 1); + do { + $combination = []; + foreach ($indexes as $index) { + $combination[] = $array[$index]; + } + $combinations[] = $combination; + + $anotherCombination = false; + for ($i = $k - 1; $i >= 0; $i--) { + if ($indexes[$i] < $maxIndexes[$i]) { + $indexes[$i]++; + $anotherCombination = true; + break; + } + } + } while ($anotherCombination); + + return $combinations; + } +} diff --git a/Mpdf/Utils/NumericString.php b/Mpdf/Utils/NumericString.php new file mode 100644 index 0000000..db10287 --- /dev/null +++ b/Mpdf/Utils/NumericString.php @@ -0,0 +1,18 @@ +<?php + +namespace Mpdf\Utils; + +class NumericString +{ + + public static function containsPercentChar($string) + { + return strstr($string, '%'); + } + + public static function removePercentChar($string) + { + return str_replace('%', '', $string); + } + +} diff --git a/Mpdf/Utils/PdfDate.php b/Mpdf/Utils/PdfDate.php new file mode 100644 index 0000000..1fc3900 --- /dev/null +++ b/Mpdf/Utils/PdfDate.php @@ -0,0 +1,30 @@ +<?php + +namespace Mpdf\Utils; + +class PdfDate +{ + + /** + * PDF documents use the internal date format: (D:YYYYMMDDHHmmSSOHH'mm'). The date format has these parts: + * + * YYYY The full four-digit year. (For example, 2004) + * MM The month from 01 to 12. + * DD The day from 01 to 31. + * HH The hour from 00 to 23. + * mm The minute from 00 to 59. + * SS The seconds from 00 to 59. + * O The relationship of local time to Universal Time (UT), as denoted by one of the characters +, -, or Z. + * HH The absolute value of the offset from UT in hours specified as 00 to 23. + * mm The absolute value of the offset from UT in minutes specified as 00 to 59. + * + * @return string + */ + public static function format($date) + { + $z = date('O'); // +0200 + $offset = substr($z, 0, 3) . "'" . substr($z, 3, 2) . "'"; // +02'00' + return date('YmdHis', $date) . $offset; + } + +} diff --git a/Mpdf/Utils/UtfString.php b/Mpdf/Utils/UtfString.php new file mode 100644 index 0000000..8b5c8c9 --- /dev/null +++ b/Mpdf/Utils/UtfString.php @@ -0,0 +1,67 @@ +<?php + +namespace Mpdf\Utils; + +class UtfString +{ + + /** + * Converts all the &#nnn; and &#xhhh; in a string to Unicode + * + * @since mPDF 5.7 + * @param string $str + * @param bool $lo + * + * @return string + */ + public static function strcode2utf($str, $lo = true) + { + $str = preg_replace_callback('/\&\#(\d+)\;/m', function ($matches) use ($lo) { + return static::code2utf($matches[1], $lo ? 1 : 0); + }, $str); + $str = preg_replace_callback('/\&\#x([0-9a-fA-F]+)\;/m', function ($matches) use ($lo) { + return static::codeHex2utf($matches[1], $lo ? 1 : 0); + }, $str); + + return $str; + } + + /** + * @param int $num + * @param bool $lo + * + * @return string + */ + public static function code2utf($num, $lo = true) + { + // Returns the utf string corresponding to the unicode value + if ($num < 128) { + if ($lo) { + return chr($num); + } + return '&#' . $num . ';'; + } + if ($num < 2048) { + return chr(($num >> 6) + 192) . chr(($num & 63) + 128); + } + if ($num < 65536) { + return chr(($num >> 12) + 224) . chr((($num >> 6) & 63) + 128) . chr(($num & 63) + 128); + } + if ($num < 2097152) { + return chr(($num >> 18) + 240) . chr((($num >> 12) & 63) + 128) . chr((($num >> 6) & 63) + 128) . chr(($num & 63) + 128); + } + + return '?'; + } + + public static function codeHex2utf($hex, $lo = true) + { + $num = hexdec($hex); + if (($num < 128) && !$lo) { + return '&#x' . $hex . ';'; + } + + return static::code2utf($num, $lo); + } + +} diff --git a/Mpdf/Writer/BackgroundWriter.php b/Mpdf/Writer/BackgroundWriter.php new file mode 100644 index 0000000..6dbce84 --- /dev/null +++ b/Mpdf/Writer/BackgroundWriter.php @@ -0,0 +1,451 @@ +<?php + +namespace Mpdf\Writer; + +use Mpdf\Strict; +use Mpdf\Mpdf; + +final class BackgroundWriter +{ + + use Strict; + + /** + * @var \Mpdf\Mpdf + */ + private $mpdf; + + /** + * @var \Mpdf\Writer\BaseWriter + */ + private $writer; + + public function __construct(Mpdf $mpdf, BaseWriter $writer) + { + $this->mpdf = $mpdf; + $this->writer = $writer; + } + + public function writePatterns() // _putpatterns + { + $patternCount = count($this->mpdf->patterns); + + for ($i = 1; $i <= $patternCount; $i++) { + + $x = $this->mpdf->patterns[$i]['x']; + $y = $this->mpdf->patterns[$i]['y']; + $w = $this->mpdf->patterns[$i]['w']; + $h = $this->mpdf->patterns[$i]['h']; + $pgh = $this->mpdf->patterns[$i]['pgh']; + $orig_w = $this->mpdf->patterns[$i]['orig_w']; + $orig_h = $this->mpdf->patterns[$i]['orig_h']; + $image_id = $this->mpdf->patterns[$i]['image_id']; + $itype = $this->mpdf->patterns[$i]['itype']; + + if (isset($this->mpdf->patterns[$i]['bpa'])) { + $bpa = $this->mpdf->patterns[$i]['bpa']; + } else { + $bpa = []; // background positioning area + } + + if ($this->mpdf->patterns[$i]['x_repeat']) { + $x_repeat = true; + } else { + $x_repeat = false; + } + + if ($this->mpdf->patterns[$i]['y_repeat']) { + $y_repeat = true; + } else { + $y_repeat = false; + } + + $x_pos = $this->mpdf->patterns[$i]['x_pos']; + + if (false !== strpos($x_pos, '%')) { + $x_pos = (float) $x_pos; + $x_pos /= 100; + + if (isset($bpa['w']) && $bpa['w']) { + $x_pos = ($bpa['w'] * $x_pos) - ($orig_w / Mpdf::SCALE * $x_pos); + } else { + $x_pos = ($w * $x_pos) - ($orig_w / Mpdf::SCALE * $x_pos); + } + } + + $y_pos = $this->mpdf->patterns[$i]['y_pos']; + + if (false !== strpos($y_pos, '%')) { + $y_pos = (float) $y_pos; + $y_pos /= 100; + + if (isset($bpa['h']) && $bpa['h']) { + $y_pos = ($bpa['h'] * $y_pos) - ($orig_h / Mpdf::SCALE * $y_pos); + } else { + $y_pos = ($h * $y_pos) - ($orig_h / Mpdf::SCALE * $y_pos); + } + } + + if (isset($bpa['x']) && $bpa['x']) { + $adj_x = ($x_pos + $bpa['x']) * Mpdf::SCALE; + } else { + $adj_x = ($x_pos + $x) * Mpdf::SCALE; + } + + if (isset($bpa['y']) && $bpa['y']) { + $adj_y = (($pgh - $y_pos - $bpa['y']) * Mpdf::SCALE) - $orig_h; + } else { + $adj_y = (($pgh - $y_pos - $y) * Mpdf::SCALE) - $orig_h; + } + + $img_obj = false; + + if ($itype === 'svg' || $itype === 'wmf') { + foreach ($this->mpdf->formobjects as $fo) { + if ($fo['i'] == $image_id) { + $img_obj = $fo['n']; + $fo_w = $fo['w']; + $fo_h = -$fo['h']; + $wmf_x = $fo['x']; + $wmf_y = $fo['y']; + break; + } + } + } else { + foreach ($this->mpdf->images as $img) { + if ($img['i'] == $image_id) { + $img_obj = $img['n']; + break; + } + } + } + + if (!$img_obj) { + throw new \Mpdf\MpdfException('Problem: Image object not found for background pattern ' . $img['i']); + } + + $this->writer->object(); + $this->writer->write('<</ProcSet [/PDF /Text /ImageB /ImageC /ImageI]'); + + if ($itype === 'svg' || $itype === 'wmf') { + $this->writer->write('/XObject <</FO' . $image_id . ' ' . $img_obj . ' 0 R >>'); + + // ******* ADD ANY ExtGStates, Shading AND Fonts needed for the FormObject + // Set in classes/svg array['fo'] = true + // Required that _putshaders comes before _putpatterns in _putresources + // This adds any resources associated with any FormObject to every Formobject - overkill but works! + if (count($this->mpdf->extgstates)) { + $this->writer->write('/ExtGState <<'); + foreach ($this->mpdf->extgstates as $k => $extgstate) { + if (isset($extgstate['fo']) && $extgstate['fo']) { + if (isset($extgstate['trans'])) { + $this->writer->write('/' . $extgstate['trans'] . ' ' . $extgstate['n'] . ' 0 R'); + } else { + $this->writer->write('/GS' . $k . ' ' . $extgstate['n'] . ' 0 R'); + } + } + } + $this->writer->write('>>'); + } + + /* -- BACKGROUNDS -- */ + if (isset($this->mpdf->gradients) && ( count($this->mpdf->gradients) > 0)) { + $this->writer->write('/Shading <<'); + foreach ($this->mpdf->gradients as $id => $grad) { + if (isset($grad['fo']) && $grad['fo']) { + $this->writer->write('/Sh' . $id . ' ' . $grad['id'] . ' 0 R'); + } + } + $this->writer->write('>>'); + } + + /* -- END BACKGROUNDS -- */ + $this->writer->write('/Font <<'); + + foreach ($this->mpdf->fonts as $font) { + if (!$font['used'] && $font['type'] === 'TTF') { + continue; + } + if (isset($font['fo']) && $font['fo']) { + if ($font['type'] === 'TTF' && ($font['sip'] || $font['smp'])) { + foreach ($font['n'] as $k => $fid) { + $this->writer->write('/F' . $font['subsetfontids'][$k] . ' ' . $font['n'][$k] . ' 0 R'); + } + } else { + $this->writer->write('/F' . $font['i'] . ' ' . $font['n'] . ' 0 R'); + } + } + } + $this->writer->write('>>'); + } else { + $this->writer->write('/XObject <</I' . $image_id . ' ' . $img_obj . ' 0 R >>'); + } + + $this->writer->write('>>'); + $this->writer->write('endobj'); + + $this->writer->object(); + $this->mpdf->patterns[$i]['n'] = $this->mpdf->n; + $this->writer->write('<< /Type /Pattern /PatternType 1 /PaintType 1 /TilingType 2'); + $this->writer->write('/Resources ' . ($this->mpdf->n - 1) . ' 0 R'); + + $this->writer->write(sprintf('/BBox [0 0 %.3F %.3F]', $orig_w, $orig_h)); + + if ($x_repeat) { + $this->writer->write(sprintf('/XStep %.3F', $orig_w)); + } else { + $this->writer->write(sprintf('/XStep %d', 99999)); + } + + if ($y_repeat) { + $this->writer->write(sprintf('/YStep %.3F', $orig_h)); + } else { + $this->writer->write(sprintf('/YStep %d', 99999)); + } + + if ($itype === 'svg' || $itype === 'wmf') { + $this->writer->write(sprintf('/Matrix [1 0 0 -1 %.3F %.3F]', $adj_x, $adj_y + $orig_h)); + $s = sprintf('q %.3F 0 0 %.3F %.3F %.3F cm /FO%d Do Q', $orig_w / $fo_w, -$orig_h / $fo_h, -($orig_w / $fo_w) * $wmf_x, ($orig_w / $fo_w) * $wmf_y, $image_id); + } else { + $this->writer->write(sprintf('/Matrix [1 0 0 1 %.3F %.3F]', $adj_x, $adj_y)); + $s = sprintf('q %.3F 0 0 %.3F 0 0 cm /I%d Do Q', $orig_w, $orig_h, $image_id); + } + + if ($this->mpdf->compress) { + $this->writer->write('/Filter /FlateDecode'); + $s = gzcompress($s); + } + $this->writer->write('/Length ' . strlen($s) . '>>'); + $this->writer->stream($s); + $this->writer->write('endobj'); + } + } + + public function writeShaders() // _putshaders + { + $maxid = count($this->mpdf->gradients); // index for transparency gradients + + foreach ($this->mpdf->gradients as $id => $grad) { + + if (empty($grad['is_mask']) && ($grad['type'] == 2 || $grad['type'] == 3)) { + + $this->writer->object(); + $this->writer->write('<<'); + $this->writer->write('/FunctionType 3'); + $this->writer->write('/Domain [0 1]'); + + $fn = []; + $bd = []; + $en = []; + + for ($i = 0; $i < (count($grad['stops']) - 1); $i++) { + $fn[] = ($this->mpdf->n + 1 + $i) . ' 0 R'; + $en[] = '0 1'; + if ($i > 0) { + $bd[] = sprintf('%.3F', $grad['stops'][$i]['offset']); + } + } + + $this->writer->write('/Functions [' . implode(' ', $fn) . ']'); + $this->writer->write('/Bounds [' . implode(' ', $bd) . ']'); + $this->writer->write('/Encode [' . implode(' ', $en) . ']'); + $this->writer->write('>>'); + $this->writer->write('endobj'); + + $f1 = $this->mpdf->n; + + for ($i = 0; $i < (count($grad['stops']) - 1); $i++) { + $this->writer->object(); + $this->writer->write('<<'); + $this->writer->write('/FunctionType 2'); + $this->writer->write('/Domain [0 1]'); + $this->writer->write('/C0 [' . $grad['stops'][$i]['col'] . ']'); + $this->writer->write('/C1 [' . $grad['stops'][$i + 1]['col'] . ']'); + $this->writer->write('/N 1'); + $this->writer->write('>>'); + $this->writer->write('endobj'); + } + } + + if ($grad['type'] == 2 || $grad['type'] == 3) { + + if (isset($grad['trans']) && $grad['trans']) { + + $this->writer->object(); + $this->writer->write('<<'); + $this->writer->write('/FunctionType 3'); + $this->writer->write('/Domain [0 1]'); + + $fn = []; + $bd = []; + $en = []; + + for ($i = 0; $i < (count($grad['stops']) - 1); $i++) { + $fn[] = ($this->mpdf->n + 1 + $i) . ' 0 R'; + $en[] = '0 1'; + if ($i > 0) { + $bd[] = sprintf('%.3F', $grad['stops'][$i]['offset']); + } + } + + $this->writer->write('/Functions [' . implode(' ', $fn) . ']'); + $this->writer->write('/Bounds [' . implode(' ', $bd) . ']'); + $this->writer->write('/Encode [' . implode(' ', $en) . ']'); + $this->writer->write('>>'); + $this->writer->write('endobj'); + + $f2 = $this->mpdf->n; + + for ($i = 0; $i < (count($grad['stops']) - 1); $i++) { + $this->writer->object(); + $this->writer->write('<<'); + $this->writer->write('/FunctionType 2'); + $this->writer->write('/Domain [0 1]'); + $this->writer->write(sprintf('/C0 [%.3F]', $grad['stops'][$i]['opacity'])); + $this->writer->write(sprintf('/C1 [%.3F]', $grad['stops'][$i + 1]['opacity'])); + $this->writer->write('/N 1'); + $this->writer->write('>>'); + $this->writer->write('endobj'); + } + } + } + + if (empty($grad['is_mask'])) { + + $this->writer->object(); + $this->writer->write('<<'); + $this->writer->write('/ShadingType ' . $grad['type']); + + if (isset($grad['colorspace'])) { + $this->writer->write('/ColorSpace /Device' . $grad['colorspace']); // Can use CMYK if all C0 and C1 above have 4 values + } else { + $this->writer->write('/ColorSpace /DeviceRGB'); + } + + if ($grad['type'] == 2) { + $this->writer->write(sprintf('/Coords [%.3F %.3F %.3F %.3F]', $grad['coords'][0], $grad['coords'][1], $grad['coords'][2], $grad['coords'][3])); + $this->writer->write('/Function ' . $f1 . ' 0 R'); + $this->writer->write('/Extend [' . $grad['extend'][0] . ' ' . $grad['extend'][1] . '] '); + $this->writer->write('>>'); + } elseif ($grad['type'] == 3) { + // x0, y0, r0, x1, y1, r1 + // at this this time radius of inner circle is 0 + $ir = 0; + if (isset($grad['coords'][5]) && $grad['coords'][5]) { + $ir = $grad['coords'][5]; + } + $this->writer->write(sprintf('/Coords [%.3F %.3F %.3F %.3F %.3F %.3F]', $grad['coords'][0], $grad['coords'][1], $ir, $grad['coords'][2], $grad['coords'][3], $grad['coords'][4])); + $this->writer->write('/Function ' . $f1 . ' 0 R'); + $this->writer->write('/Extend [' . $grad['extend'][0] . ' ' . $grad['extend'][1] . '] '); + $this->writer->write('>>'); + } elseif ($grad['type'] == 6) { + $this->writer->write('/BitsPerCoordinate 16'); + $this->writer->write('/BitsPerComponent 8'); + if ($grad['colorspace'] === 'CMYK') { + $this->writer->write('/Decode[0 1 0 1 0 1 0 1 0 1 0 1]'); + } elseif ($grad['colorspace'] === 'Gray') { + $this->writer->write('/Decode[0 1 0 1 0 1]'); + } else { + $this->writer->write('/Decode[0 1 0 1 0 1 0 1 0 1]'); + } + $this->writer->write('/BitsPerFlag 8'); + $this->writer->write('/Length ' . strlen($grad['stream'])); + $this->writer->write('>>'); + $this->writer->stream($grad['stream']); + } + + $this->writer->write('endobj'); + } + + $this->mpdf->gradients[$id]['id'] = $this->mpdf->n; + + // set pattern object + $this->writer->object(); + $out = '<< /Type /Pattern /PatternType 2'; + $out .= ' /Shading ' . $this->mpdf->gradients[$id]['id'] . ' 0 R'; + $out .= ' >>'; + $out .= "\n" . 'endobj'; + $this->writer->write($out); + + + $this->mpdf->gradients[$id]['pattern'] = $this->mpdf->n; + + if (isset($grad['trans']) && $grad['trans']) { + + // luminosity pattern + $transid = $id + $maxid; + + $this->writer->object(); + $this->writer->write('<<'); + $this->writer->write('/ShadingType ' . $grad['type']); + $this->writer->write('/ColorSpace /DeviceGray'); + + if ($grad['type'] == 2) { + $this->writer->write(sprintf('/Coords [%.3F %.3F %.3F %.3F]', $grad['coords'][0], $grad['coords'][1], $grad['coords'][2], $grad['coords'][3])); + $this->writer->write('/Function ' . $f2 . ' 0 R'); + $this->writer->write('/Extend [' . $grad['extend'][0] . ' ' . $grad['extend'][1] . '] '); + $this->writer->write('>>'); + } elseif ($grad['type'] == 3) { + // x0, y0, r0, x1, y1, r1 + // at this this time radius of inner circle is 0 + $ir = 0; + if (isset($grad['coords'][5]) && $grad['coords'][5]) { + $ir = $grad['coords'][5]; + } + $this->writer->write(sprintf('/Coords [%.3F %.3F %.3F %.3F %.3F %.3F]', $grad['coords'][0], $grad['coords'][1], $ir, $grad['coords'][2], $grad['coords'][3], $grad['coords'][4])); + $this->writer->write('/Function ' . $f2 . ' 0 R'); + $this->writer->write('/Extend [' . $grad['extend'][0] . ' ' . $grad['extend'][1] . '] '); + $this->writer->write('>>'); + } elseif ($grad['type'] == 6) { + $this->writer->write('/BitsPerCoordinate 16'); + $this->writer->write('/BitsPerComponent 8'); + $this->writer->write('/Decode[0 1 0 1 0 1]'); + $this->writer->write('/BitsPerFlag 8'); + $this->writer->write('/Length ' . strlen($grad['stream_trans'])); + $this->writer->write('>>'); + $this->writer->stream($grad['stream_trans']); + } + $this->writer->write('endobj'); + + $this->mpdf->gradients[$transid]['id'] = $this->mpdf->n; + + $this->writer->object(); + $this->writer->write('<< /Type /Pattern /PatternType 2'); + $this->writer->write('/Shading ' . $this->mpdf->gradients[$transid]['id'] . ' 0 R'); + $this->writer->write('>>'); + $this->writer->write('endobj'); + + $this->mpdf->gradients[$transid]['pattern'] = $this->mpdf->n; + $this->writer->object(); + + // Need to extend size of viewing box in case of transformations + $str = 'q /a0 gs /Pattern cs /p' . $transid . ' scn -' . ($this->mpdf->wPt / 2) . ' -' . ($this->mpdf->hPt / 2) . ' ' . (2 * $this->mpdf->wPt) . ' ' . (2 * $this->mpdf->hPt) . ' re f Q'; + $filter = ($this->mpdf->compress) ? '/Filter /FlateDecode ' : ''; + $p = ($this->mpdf->compress) ? gzcompress($str) : $str; + + $this->writer->write('<< /Type /XObject /Subtype /Form /FormType 1 ' . $filter); + $this->writer->write('/Length ' . strlen($p)); + $this->writer->write('/BBox [-' . ($this->mpdf->wPt / 2) . ' -' . ($this->mpdf->hPt / 2) . ' ' . (2 * $this->mpdf->wPt) . ' ' . (2 * $this->mpdf->hPt) . ']'); + $this->writer->write('/Group << /Type /Group /S /Transparency /CS /DeviceGray >>'); + $this->writer->write('/Resources <<'); + $this->writer->write('/ExtGState << /a0 << /ca 1 /CA 1 >> >>'); + $this->writer->write('/Pattern << /p' . $transid . ' ' . $this->mpdf->gradients[$transid]['pattern'] . ' 0 R >>'); + $this->writer->write('>>'); + $this->writer->write('>>'); + $this->writer->stream($p); + $this->writer->write('endobj'); + $this->writer->object(); + $this->writer->write('<< /Type /Mask /S /Luminosity /G ' . ($this->mpdf->n - 1) . ' 0 R >>' . "\n" . 'endobj'); + $this->writer->object(); + $this->writer->write('<< /Type /ExtGState /SMask ' . ($this->mpdf->n - 1) . ' 0 R /AIS false >>' . "\n" . 'endobj'); + + if (isset($grad['fo']) && $grad['fo']) { + $this->mpdf->extgstates[] = ['n' => $this->mpdf->n, 'trans' => 'TGS' . $id, 'fo' => true]; + } else { + $this->mpdf->extgstates[] = ['n' => $this->mpdf->n, 'trans' => 'TGS' . $id]; + } + } + } + } + +} diff --git a/Mpdf/Writer/BaseWriter.php b/Mpdf/Writer/BaseWriter.php new file mode 100644 index 0000000..8abff91 --- /dev/null +++ b/Mpdf/Writer/BaseWriter.php @@ -0,0 +1,250 @@ +<?php + +namespace Mpdf\Writer; + +use Mpdf\Strict; + +use Mpdf\Mpdf; +use Mpdf\Pdf\Protection; + +final class BaseWriter +{ + + use Strict; + + /** + * @var \Mpdf\Mpdf + */ + private $mpdf; + + /** + * @var \Mpdf\Pdf\Protection + */ + private $protection; + + public function __construct(Mpdf $mpdf, Protection $protection) + { + $this->mpdf = $mpdf; + $this->protection = $protection; + } + + public function write($s, $ln = true) + { + if ($this->mpdf->state === 2) { + $this->endPage($s, $ln); + } else { + $this->mpdf->buffer .= $s . ($ln ? "\n" : ''); + } + } + + public function string($s) + { + if ($this->mpdf->encrypted) { + $s = $this->protection->rc4($this->protection->objectKey($this->mpdf->currentObjectNumber), $s); + } + + return '(' . $this->escape($s) . ')'; + } + + public function object($obj_id = false, $onlynewobj = false) + { + if (!$obj_id) { + $obj_id = ++$this->mpdf->n; + } + + // Begin a new object + if (!$onlynewobj) { + $this->mpdf->offsets[$obj_id] = strlen($this->mpdf->buffer); + $this->write($obj_id . ' 0 obj'); + $this->mpdf->currentObjectNumber = $obj_id; // for later use with encryption + } + } + + public function stream($s) + { + if ($this->mpdf->encrypted) { + $s = $this->protection->rc4($this->protection->objectKey($this->mpdf->currentObjectNumber), $s); + } + + $this->write('stream'); + $this->write($s); + $this->write('endstream'); + } + + public function utf16BigEndianTextString($s) // _UTF16BEtextstring + { + $s = $this->utf8ToUtf16BigEndian($s, true); + if ($this->mpdf->encrypted) { + $s = $this->protection->rc4($this->protection->objectKey($this->mpdf->currentObjectNumber), $s); + } + + return '(' . $this->escape($s) . ')'; + } + + // Converts UTF-8 strings to UTF16-BE. + public function utf8ToUtf16BigEndian($str, $setbom = true) // UTF8ToUTF16BE + { + if ($this->mpdf->checkSIP && preg_match("/([\x{20000}-\x{2FFFF}])/u", $str)) { + if (!in_array($this->mpdf->currentfontfamily, ['gb', 'big5', 'sjis', 'uhc', 'gbB', 'big5B', 'sjisB', 'uhcB', 'gbI', 'big5I', 'sjisI', 'uhcI', + 'gbBI', 'big5BI', 'sjisBI', 'uhcBI'])) { + $str = preg_replace("/[\x{20000}-\x{2FFFF}]/u", chr(0), $str); + } + } + if ($this->mpdf->checkSMP && preg_match("/([\x{10000}-\x{1FFFF}])/u", $str)) { + $str = preg_replace("/[\x{10000}-\x{1FFFF}]/u", chr(0), $str); + } + + $outstr = ''; // string to be returned + if ($setbom) { + $outstr .= "\xFE\xFF"; // Byte Order Mark (BOM) + } + + $outstr .= mb_convert_encoding($str, 'UTF-16BE', 'UTF-8'); + + return $outstr; + } + + public function escape($s) // _escape + { + return strtr($s, [')' => '\\)', '(' => '\\(', '\\' => '\\\\', chr(13) => '\r']); + } + + public function escapeSlashes($s) // _escapeName + { + return strtr($s, ['/' => '#2F']); + } + + /** + * Un-escapes a PDF string + * + * @param string $s + * @return string + */ + public function unescape($s) + { + $out = ''; + for ($count = 0, $n = strlen($s); $count < $n; $count++) { + if ($count === $n - 1 || $s[$count] !== '\\') { + $out .= $s[$count]; + } else { + switch ($s[++$count]) { + case ')': + case '(': + case '\\': + $out .= $s[$count]; + break; + case 'f': + $out .= chr(0x0C); + break; + case 'b': + $out .= chr(0x08); + break; + case 't': + $out .= chr(0x09); + break; + case 'r': + $out .= chr(0x0D); + break; + case 'n': + $out .= chr(0x0A); + break; + case "\r": + if ($count !== $n - 1 && $s[$count + 1] === "\n") { + $count++; + } + break; + case "\n": + break; + default: + // Octal-Values + $ord = ord($s[$count]); + if ($ord >= ord('0') && $ord <= ord('9')) { + $oct = ''. $s[$count]; + $ord = ord($s[$count + 1]); + if ($ord >= ord('0') && $ord <= ord('9')) { + $oct .= $s[++$count]; + $ord = ord($s[$count + 1]); + if ($ord >= ord('0') && $ord <= ord('9')) { + $oct .= $s[++$count]; + } + } + $out .= chr(octdec($oct)); + } else { + $out .= $s[$count]; + } + } + } + } + + return $out; + } + + private function endPage($s, $ln) + { + if ($this->mpdf->bufferoutput) { + + $this->mpdf->headerbuffer.= $s . "\n"; + + } elseif ($this->mpdf->ColActive && !$this->mpdf->processingHeader && !$this->mpdf->processingFooter) { + + // Captures everything in buffer for columns; Almost everything is sent from fn. Cell() except: + // Images sent from Image() or + // later sent as write($textto) in printbuffer + // Line() + + if (preg_match('/q \d+\.\d\d+ 0 0 (\d+\.\d\d+) \d+\.\d\d+ \d+\.\d\d+ cm \/(I|FO)\d+ Do Q/', $s, $m)) { // Image data + + $h = ($m[1] / Mpdf::SCALE); + // Update/overwrite the lowest bottom of printing y value for a column + $this->mpdf->ColDetails[$this->mpdf->CurrCol]['bottom_margin'] = $this->mpdf->y + $h; + + } elseif ($this->mpdf->tableLevel > 0 && preg_match('/\d+\.\d\d+ \d+\.\d\d+ \d+\.\d\d+ ([\-]{0,1}\d+\.\d\d+) re/', $s, $m)) { // Rect in table + + $h = ($m[1] / Mpdf::SCALE); + // Update/overwrite the lowest bottom of printing y value for a column + $this->mpdf->ColDetails[$this->mpdf->CurrCol]['bottom_margin'] = max($this->mpdf->ColDetails[$this->mpdf->CurrCol]['bottom_margin'], $this->mpdf->y + $h); + + } elseif (isset($this->mpdf->ColDetails[$this->mpdf->CurrCol]['bottom_margin'])) { + + $h = $this->mpdf->ColDetails[$this->mpdf->CurrCol]['bottom_margin'] - $this->mpdf->y; + + } else { + + $h = 0; + + } + + if ($h < 0) { + $h = -$h; + } + + $this->mpdf->columnbuffer[] = [ + 's' => $s, // Text string to output + 'col' => $this->mpdf->CurrCol, // Column when printed + 'x' => $this->mpdf->x, // x when printed + 'y' => $this->mpdf->y, // this->y when printed (after column break) + 'h' => $h // actual y at bottom when printed = y+h + ]; + + } elseif ($this->mpdf->table_rotate && !$this->mpdf->processingHeader && !$this->mpdf->processingFooter) { + + // Captures eveything in buffer for rotated tables; + $this->mpdf->tablebuffer .= $s . "\n"; + + } elseif ($this->mpdf->kwt && !$this->mpdf->processingHeader && !$this->mpdf->processingFooter) { + + // Captures eveything in buffer for keep-with-table (h1-6); + $this->mpdf->kwt_buffer[] = [ + 's' => $s, // Text string to output + 'x' => $this->mpdf->x, // x when printed + 'y' => $this->mpdf->y, // y when printed + ]; + + } elseif ($this->mpdf->keep_block_together && !$this->mpdf->processingHeader && !$this->mpdf->processingFooter) { + // do nothing + } else { + $this->mpdf->pages[$this->mpdf->page] .= $s . ($ln ? "\n" : ''); + } + } + +} diff --git a/Mpdf/Writer/BookmarkWriter.php b/Mpdf/Writer/BookmarkWriter.php new file mode 100644 index 0000000..bbec0d7 --- /dev/null +++ b/Mpdf/Writer/BookmarkWriter.php @@ -0,0 +1,138 @@ +<?php + +namespace Mpdf\Writer; + +use Mpdf\Strict; +use Mpdf\Mpdf; + +final class BookmarkWriter +{ + + use Strict; + + /** + * @var \Mpdf\Mpdf + */ + private $mpdf; + + /** + * @var \Mpdf\Writer\BaseWriter + */ + private $writer; + + public function __construct(Mpdf $mpdf, BaseWriter $writer) + { + $this->mpdf = $mpdf; + $this->writer = $writer; + } + + public function writeBookmarks() // _putbookmarks + { + $nb = count($this->mpdf->BMoutlines); + if ($nb === 0) { + return; + } + + $bmo = $this->mpdf->BMoutlines; + $this->mpdf->BMoutlines = []; + $lastlevel = -1; + for ($i = 0; $i < count($bmo); $i++) { + if ($bmo[$i]['l'] > 0) { + while ($bmo[$i]['l'] - $lastlevel > 1) { // If jump down more than one level, insert a new entry + $new = $bmo[$i]; + $new['t'] = "[" . $new['t'] . "]"; // Put [] around text/title to highlight + $new['l'] = $lastlevel + 1; + $lastlevel++; + $this->mpdf->BMoutlines[] = $new; + } + } + $this->mpdf->BMoutlines[] = $bmo[$i]; + $lastlevel = $bmo[$i]['l']; + } + $nb = count($this->mpdf->BMoutlines); + + $lru = []; + $level = 0; + foreach ($this->mpdf->BMoutlines as $i => $o) { + if ($o['l'] > 0) { + $parent = $lru[$o['l'] - 1]; + // Set parent and last pointers + $this->mpdf->BMoutlines[$i]['parent'] = $parent; + $this->mpdf->BMoutlines[$parent]['last'] = $i; + if ($o['l'] > $level) { + // Level increasing: set first pointer + $this->mpdf->BMoutlines[$parent]['first'] = $i; + } + } else { + $this->mpdf->BMoutlines[$i]['parent'] = $nb; + } + if ($o['l'] <= $level and $i > 0) { + // Set prev and next pointers + $prev = $lru[$o['l']]; + $this->mpdf->BMoutlines[$prev]['next'] = $i; + $this->mpdf->BMoutlines[$i]['prev'] = $prev; + } + $lru[$o['l']] = $i; + $level = $o['l']; + } + + + // Outline items + $n = $this->mpdf->n + 1; + foreach ($this->mpdf->BMoutlines as $i => $o) { + $this->writer->object(); + $this->writer->write('<writer->utf16BigEndianTextString($o['t'])); + $this->writer->write('/Parent ' . ($n + $o['parent']) . ' 0 R'); + if (isset($o['prev'])) { + $this->writer->write('/Prev ' . ($n + $o['prev']) . ' 0 R'); + } + if (isset($o['next'])) { + $this->writer->write('/Next ' . ($n + $o['next']) . ' 0 R'); + } + if (isset($o['first'])) { + $this->writer->write('/First ' . ($n + $o['first']) . ' 0 R'); + } + if (isset($o['last'])) { + $this->writer->write('/Last ' . ($n + $o['last']) . ' 0 R'); + } + + + if (isset($this->mpdf->pageDim[$o['p']]['h'])) { + $h = $this->mpdf->pageDim[$o['p']]['h']; + } else { + $h = 0; + } + + $this->writer->write(sprintf('/Dest [%d 0 R /XYZ 0 %.3F null]', 1 + 2 * ($o['p']), ($h - $o['y']) * Mpdf::SCALE)); + if (isset($this->mpdf->bookmarkStyles) && isset($this->mpdf->bookmarkStyles[$o['l']])) { + // font style + $bms = $this->mpdf->bookmarkStyles[$o['l']]['style']; + $style = 0; + if (strpos($bms, 'B') !== false) { + $style += 2; + } + if (strpos($bms, 'I') !== false) { + $style += 1; + } + $this->writer->write(sprintf('/F %d', $style)); + // Colour + $col = $this->mpdf->bookmarkStyles[$o['l']]['color']; + if (isset($col) && is_array($col) && count($col) == 3) { + $this->writer->write(sprintf('/C [%.3F %.3F %.3F]', ($col[0] / 255), ($col[1] / 255), ($col[2] / 255))); + } + } + + $this->writer->write('/Count 0>>'); + $this->writer->write('endobj'); + } + // Outline root + $this->writer->object(); + + $this->mpdf->OutlineRoot = $this->mpdf->n; + + $this->writer->write('<writer->write('/Last ' . ($n + $lru[0]) . ' 0 R>>'); + $this->writer->write('endobj'); + } + +} diff --git a/Mpdf/Writer/ColorWriter.php b/Mpdf/Writer/ColorWriter.php new file mode 100644 index 0000000..c6ece98 --- /dev/null +++ b/Mpdf/Writer/ColorWriter.php @@ -0,0 +1,46 @@ +mpdf = $mpdf; + $this->writer = $writer; + } + + public function writeSpotColors() // _putspotcolors + { + foreach ($this->mpdf->spotColors as $name => $color) { + + $this->writer->object(); + + $this->writer->write('[/Separation /' . str_replace(' ', '#20', $name)); + $this->writer->write('/DeviceCMYK <<'); + $this->writer->write('/Range [0 1 0 1 0 1 0 1] /C0 [0 0 0 0] '); + $this->writer->write(sprintf('/C1 [%.3F %.3F %.3F %.3F] ', $color['c'] / 100, $color['m'] / 100, $color['y'] / 100, $color['k'] / 100)); + $this->writer->write('/FunctionType 2 /Domain [0 1] /N 1>>]'); + $this->writer->write('endobj'); + + $this->mpdf->spotColors[$name]['n'] = $this->mpdf->n; + } + } + +} diff --git a/Mpdf/Writer/FontWriter.php b/Mpdf/Writer/FontWriter.php new file mode 100644 index 0000000..8d6b2cf --- /dev/null +++ b/Mpdf/Writer/FontWriter.php @@ -0,0 +1,680 @@ +mpdf = $mpdf; + $this->writer = $writer; + $this->fontCache = $fontCache; + $this->fontDescriptor = $fontDescriptor; + } + + public function writeFonts() + { + foreach ($this->mpdf->FontFiles as $fontkey => $info) { + // TrueType embedded + if (isset($info['type']) && $info['type'] === 'TTF' && !$info['sip'] && !$info['smp']) { + $used = true; + $asSubset = false; + foreach ($this->mpdf->fonts as $k => $f) { + if (isset($f['fontkey']) && $f['fontkey'] === $fontkey && $f['type'] === 'TTF') { + $used = $f['used']; + if ($used) { + $nChars = (ord($f['cw'][0]) << 8) + ord($f['cw'][1]); + $usage = (int) (count($f['subset']) * 100 / $nChars); + $fsize = $info['length1']; + // Always subset the very large TTF files + if ($fsize > ($this->mpdf->maxTTFFilesize * 1024)) { + $asSubset = true; + } elseif ($usage < $this->mpdf->percentSubset) { + $asSubset = true; + } + } + if ($this->mpdf->PDFA || $this->mpdf->PDFX) { + $asSubset = false; + } + $this->mpdf->fonts[$k]['asSubset'] = $asSubset; + break; + } + } + if ($used && !$asSubset) { + // Font file embedding + $this->writer->object(); + $this->mpdf->FontFiles[$fontkey]['n'] = $this->mpdf->n; + $originalsize = $info['length1']; + if ($this->mpdf->repackageTTF || $this->mpdf->fonts[$fontkey]['TTCfontID'] > 0 || $this->mpdf->fonts[$fontkey]['useOTL'] > 0) { // mPDF 5.7.1 + // First see if there is a cached compressed file + if ($this->fontCache->has($fontkey . '.ps.z') && $this->fontCache->jsonHas($fontkey . '.ps.json')) { + $font = $this->fontCache->load($fontkey . '.ps.z'); + $originalsize = $this->fontCache->jsonLoad($fontkey . '.ps.json'); // sets $originalsize (of repackaged font) + } else { + $ttf = new TTFontFile($this->fontCache, $this->fontDescriptor); + $font = $ttf->repackageTTF($this->mpdf->FontFiles[$fontkey]['ttffile'], $this->mpdf->fonts[$fontkey]['TTCfontID'], $this->mpdf->debugfonts, $this->mpdf->fonts[$fontkey]['useOTL']); // mPDF 5.7.1 + + $originalsize = strlen($font); + $font = gzcompress($font); + unset($ttf); + + $this->fontCache->binaryWrite($fontkey . '.ps.z', $font); + $this->fontCache->jsonWrite($fontkey . '.ps.json', $originalsize); + } + } elseif ($this->fontCache->has($fontkey . '.z')) { + $font = $this->fontCache->load($fontkey . '.z'); + } else { + $font = file_get_contents($this->mpdf->FontFiles[$fontkey]['ttffile']); + $font = gzcompress($font); + $this->fontCache->binaryWrite($fontkey . '.z', $font); + } + + $this->writer->write('<writer->write('/Filter /FlateDecode'); + $this->writer->write('/Length1 ' . $originalsize); + $this->writer->write('>>'); + $this->writer->stream($font); + $this->writer->write('endobj'); + } + } + } + + foreach ($this->mpdf->fonts as $k => $font) { + + // Font objects + $type = $font['type']; + $name = $font['name']; + + if ($type === 'TTF' && (!isset($font['used']) || !$font['used'])) { + continue; + } + + // @log Writing fonts + + if (isset($font['asSubset'])) { + $asSubset = $font['asSubset']; + } else { + $asSubset = ''; + } + + if ($type === 'Type0') { // Adobe CJK Fonts + + $this->mpdf->fonts[$k]['n'] = $this->mpdf->n + 1; + $this->writer->object(); + $this->writer->write('<writeType0($font); + + } elseif ($type === 'core') { + + // Standard font + $this->mpdf->fonts[$k]['n'] = $this->mpdf->n + 1; + + if ($this->mpdf->PDFA || $this->mpdf->PDFX) { + throw new \Mpdf\MpdfException('Core fonts are not allowed in PDF/A1-b or PDFX/1-a files (Times, Helvetica, Courier etc.)'); + } + + $this->writer->object(); + $this->writer->write('<writer->write('/BaseFont /' . $name); + $this->writer->write('/Subtype /Type1'); + + if ($name !== 'Symbol' && $name !== 'ZapfDingbats') { + $this->writer->write('/Encoding /WinAnsiEncoding'); + } + + $this->writer->write('>>'); + $this->writer->write('endobj'); + + } elseif ($type === 'TTF' && ($font['sip'] || $font['smp'])) { + + // TrueType embedded SUBSETS for SIP (CJK extB containing Supplementary Ideographic Plane 2) + // Or Unicode Plane 1 - Supplementary Multilingual Plane + + if (!$font['used']) { + continue; + } + + $ssfaid = 'AA'; + $ttf = new TTFontFile($this->fontCache, $this->fontDescriptor); + $subsetCount = count($font['subsetfontids']); + for ($sfid = 0; $sfid < $subsetCount; $sfid++) { + $this->mpdf->fonts[$k]['n'][$sfid] = $this->mpdf->n + 1; // NB an array for subset + $subsetname = 'MPDF' . $ssfaid . '+' . $font['name']; + $ssfaid++; + + /* For some strange reason a subset ($sfid > 0) containing less than 97 characters causes an error + so fill up the array */ + for ($j = count($font['subsets'][$sfid]); $j < 98; $j++) { + $font['subsets'][$sfid][$j] = 0; + } + + $subset = $font['subsets'][$sfid]; + unset($subset[0]); + $ttfontstream = $ttf->makeSubsetSIP($font['ttffile'], $subset, $font['TTCfontID'], $this->mpdf->debugfonts, $font['useOTL']); // mPDF 5.7.1 + $ttfontsize = strlen($ttfontstream); + $fontstream = gzcompress($ttfontstream); + $widthstring = ''; + $toUnistring = ''; + + foreach ($font['subsets'][$sfid] as $cp => $u) { + $w = $this->mpdf->_getCharWidth($font['cw'], $u); + if ($w !== false) { + $widthstring .= $w . ' '; + } else { + $widthstring .= round($ttf->defaultWidth) . ' '; + } + if ($u > 65535) { + $utf8 = chr(($u >> 18) + 240) . chr((($u >> 12) & 63) + 128) . chr((($u >> 6) & 63) + 128) . chr(($u & 63) + 128); + $utf16 = mb_convert_encoding($utf8, 'UTF-16BE', 'UTF-8'); + $l1 = ord($utf16[0]); + $h1 = ord($utf16[1]); + $l2 = ord($utf16[2]); + $h2 = ord($utf16[3]); + $toUnistring .= sprintf("<%02s> <%02s%02s%02s%02s>\n", strtoupper(dechex($cp)), strtoupper(dechex($l1)), strtoupper(dechex($h1)), strtoupper(dechex($l2)), strtoupper(dechex($h2))); + } else { + $toUnistring .= sprintf("<%02s> <%04s>\n", strtoupper(dechex($cp)), strtoupper(dechex($u))); + } + } + + // Additional Type1 or TrueType font + $this->writer->object(); + $this->writer->write('<writer->write('/BaseFont /' . $subsetname); + $this->writer->write('/Subtype /TrueType'); + $this->writer->write('/FirstChar 0 /LastChar ' . (count($font['subsets'][$sfid]) - 1)); + $this->writer->write('/Widths ' . ($this->mpdf->n + 1) . ' 0 R'); + $this->writer->write('/FontDescriptor ' . ($this->mpdf->n + 2) . ' 0 R'); + $this->writer->write('/ToUnicode ' . ($this->mpdf->n + 3) . ' 0 R'); + $this->writer->write('>>'); + $this->writer->write('endobj'); + + // Widths + $this->writer->object(); + $this->writer->write('[' . $widthstring . ']'); + $this->writer->write('endobj'); + + // Descriptor + $this->writer->object(); + $s = '< $v) { + if ($kd === 'Flags') { + $v |= 4; + $v &= ~32; + } // SYMBOLIC font flag + $s .= ' /' . $kd . ' ' . $v . "\n"; + } + $s .= '/FontFile2 ' . ($this->mpdf->n + 2) . ' 0 R'; + $this->writer->write($s . '>>'); + $this->writer->write('endobj'); + + // ToUnicode + $this->writer->object(); + $toUni = "/CIDInit /ProcSet findresource begin\n"; + $toUni .= "12 dict begin\n"; + $toUni .= "begincmap\n"; + $toUni .= "/CIDSystemInfo\n"; + $toUni .= "< <%02s>\n", strtoupper(dechex(count($font['subsets'][$sfid])-1))); + $toUni .= "endcodespacerange\n"; + $toUni .= count($font['subsets'][$sfid]) . " beginbfchar\n"; + $toUni .= $toUnistring; + $toUni .= "endbfchar\n"; + $toUni .= "endcmap\n"; + $toUni .= "CMapName currentdict /CMap defineresource pop\n"; + $toUni .= "end\n"; + $toUni .= "end\n"; + $this->writer->write('<>'); + $this->writer->stream($toUni); + $this->writer->write('endobj'); + + // Font file + $this->writer->object(); + $this->writer->write('<writer->write('/Filter /FlateDecode'); + $this->writer->write('/Length1 ' . $ttfontsize); + $this->writer->write('>>'); + $this->writer->stream($fontstream); + $this->writer->write('endobj'); + } // foreach subset + unset($ttf); + + } elseif ($type === 'TTF') { // TrueType embedded SUBSETS or FULL + + $this->mpdf->fonts[$k]['n'] = $this->mpdf->n + 1; + + if ($asSubset) { + $ssfaid = 'A'; + $ttf = new TTFontFile($this->fontCache, $this->fontDescriptor); + $fontname = 'MPDFA' . $ssfaid . '+' . $font['name']; + $subset = $font['subset']; + unset($subset[0]); + $ttfontstream = $ttf->makeSubset($font['ttffile'], $subset, $font['TTCfontID'], $this->mpdf->debugfonts, $font['useOTL']); + $ttfontsize = strlen($ttfontstream); + $fontstream = gzcompress($ttfontstream); + $codeToGlyph = $ttf->codeToGlyph; + unset($codeToGlyph[0]); + } else { + $fontname = $font['name']; + } + + // Type0 Font + // A composite font - a font composed of other fonts, organized hierarchically + $this->writer->object(); + $this->writer->write('<writer->write('/Subtype /Type0'); + $this->writer->write('/BaseFont /' . $fontname . ''); + $this->writer->write('/Encoding /Identity-H'); + $this->writer->write('/DescendantFonts [' . ($this->mpdf->n + 1) . ' 0 R]'); + $this->writer->write('/ToUnicode ' . ($this->mpdf->n + 2) . ' 0 R'); + $this->writer->write('>>'); + $this->writer->write('endobj'); + + // CIDFontType2 + // A CIDFont whose glyph descriptions are based on TrueType font technology + $this->writer->object(); + $this->writer->write('<writer->write('/Subtype /CIDFontType2'); + $this->writer->write('/BaseFont /' . $fontname . ''); + $this->writer->write('/CIDSystemInfo ' . ($this->mpdf->n + 2) . ' 0 R'); + $this->writer->write('/FontDescriptor ' . ($this->mpdf->n + 3) . ' 0 R'); + + if (isset($font['desc']['MissingWidth'])) { + $this->writer->write('/DW ' . $font['desc']['MissingWidth'] . ''); + } + + if (!$asSubset && $this->fontCache->has($font['fontkey'] . '.cw')) { + $w = $this->fontCache->load($font['fontkey'] . '.cw'); + $this->writer->write($w); + } else { + $this->writeTTFontWidths($font, $asSubset, ($asSubset ? $ttf->maxUni : 0)); + } + + $this->writer->write('/CIDToGIDMap ' . ($this->mpdf->n + 4) . ' 0 R'); + $this->writer->write('>>'); + $this->writer->write('endobj'); + + // ToUnicode + $this->writer->object(); + $toUni = "/CIDInit /ProcSet findresource begin\n"; + $toUni .= "12 dict begin\n"; + $toUni .= "begincmap\n"; + $toUni .= "/CIDSystemInfo\n"; + $toUni .= "<writer->write('<>'); + $this->writer->stream($toUni); + $this->writer->write('endobj'); + + // CIDSystemInfo dictionary + $this->writer->object(); + $this->writer->write('<writer->write('/Ordering (UCS)'); + $this->writer->write('/Supplement 0'); + $this->writer->write('>>'); + $this->writer->write('endobj'); + + // Font descriptor + $this->writer->object(); + $this->writer->write('<writer->write('/FontName /' . $fontname); + + foreach ($font['desc'] as $kd => $v) { + if ($asSubset && $kd === 'Flags') { + $v |= 4; + $v &= ~32; + } // SYMBOLIC font flag + $this->writer->write(' /' . $kd . ' ' . $v); + } + + if ($font['panose']) { + $this->writer->write(' /Style << /Panose <' . $font['panose'] . '> >>'); + } + + if ($asSubset) { + $this->writer->write('/FontFile2 ' . ($this->mpdf->n + 2) . ' 0 R'); + } elseif ($font['fontkey']) { + // obj ID of a stream containing a TrueType font program + $this->writer->write('/FontFile2 ' . $this->mpdf->FontFiles[$font['fontkey']]['n'] . ' 0 R'); + } + + $this->writer->write('>>'); + $this->writer->write('endobj'); + + // Embed CIDToGIDMap + // A specification of the mapping from CIDs to glyph indices + if ($asSubset) { + $cidtogidmap = str_pad('', 256 * 256 * 2, "\x00"); + foreach ($codeToGlyph as $cc => $glyph) { + $cidtogidmap[$cc * 2] = chr($glyph >> 8); + $cidtogidmap[$cc * 2 + 1] = chr($glyph & 0xFF); + } + $cidtogidmap = gzcompress($cidtogidmap); + } else { + // First see if there is a cached CIDToGIDMapfile + if ($this->fontCache->has($font['fontkey'] . '.cgm')) { + $cidtogidmap = $this->fontCache->load($font['fontkey'] . '.cgm'); + } else { + $ttf = new TTFontFile($this->fontCache, $this->fontDescriptor); + $charToGlyph = $ttf->getCTG($font['ttffile'], $font['TTCfontID'], $this->mpdf->debugfonts, $font['useOTL']); + $cidtogidmap = str_pad('', 256 * 256 * 2, "\x00"); + foreach ($charToGlyph as $cc => $glyph) { + $cidtogidmap[$cc * 2] = chr($glyph >> 8); + $cidtogidmap[$cc * 2 + 1] = chr($glyph & 0xFF); + } + unset($ttf); + $cidtogidmap = gzcompress($cidtogidmap); + $this->fontCache->binaryWrite($font['fontkey'] . '.cgm', $cidtogidmap); + } + } + $this->writer->object(); + $this->writer->write('<writer->write('/Filter /FlateDecode'); + $this->writer->write('>>'); + $this->writer->stream($cidtogidmap); + $this->writer->write('endobj'); + + // Font file + if ($asSubset) { + $this->writer->object(); + $this->writer->write('<writer->write('/Filter /FlateDecode'); + $this->writer->write('/Length1 ' . $ttfontsize); + $this->writer->write('>>'); + $this->writer->stream($fontstream); + $this->writer->write('endobj'); + unset($ttf); + } + } else { + throw new \Mpdf\MpdfException(sprintf('Unsupported font type: %s (%s)', $type, $name)); + } + } + } + + private function writeTTFontWidths(&$font, $asSubset, $maxUni) // _putTTfontwidths + { + $character = [ + 'startcid' => 1, + 'rangeid' => 0, + 'prevcid' => -2, + 'prevwidth' => -1, + 'interval' => false, + 'range' => [], + ]; + + $fontCacheFilename = $font['fontkey'] . '.cw127.json'; + if ($asSubset && $this->fontCache->jsonHas($fontCacheFilename)) { + $character = $this->fontCache->jsonLoad($fontCacheFilename); + $character['startcid'] = 128; + } + + // for each character + $cwlen = ($asSubset) ? $maxUni + 1 : (strlen($font['cw']) / 2); + for ($cid = $character['startcid']; $cid < $cwlen; $cid++) { + if ($cid == 128 && $asSubset && (!$this->fontCache->has($fontCacheFilename))) { + $character = [ + 'rangeid' => $character['rangeid'], + 'prevcid' => $character['prevcid'], + 'prevwidth' => $character['prevwidth'], + 'interval' => $character['interval'], + 'range' => $character['range'], + ]; + + $this->fontCache->jsonWrite($fontCacheFilename, $character); + } + + $character1 = isset($font['cw'][$cid * 2]) ? $font['cw'][$cid * 2] : ''; + $character2 = isset($font['cw'][$cid * 2 + 1]) ? $font['cw'][$cid * 2 + 1] : ''; + + if ($character1 === "\00" && $character2 === "\00") { + continue; + } + + $width = (ord($character1) << 8) + ord($character2); + + if ($width === 65535) { + $width = 0; + } + + if ($asSubset && $cid > 255 && (!isset($font['subset'][$cid]) || !$font['subset'][$cid])) { + continue; + } + + if ($asSubset && $cid > 0xFFFF) { + continue; + } // mPDF 6 + + if (!isset($font['dw']) || (isset($font['dw']) && $width != $font['dw'])) { + if ($cid === ($character['prevcid'] + 1)) { + // consecutive CID + if ($width === $character['prevwidth']) { + if (isset($character['range'][$character['rangeid']][0]) && $width === $character['range'][$character['rangeid']][0]) { + $character['range'][$character['rangeid']][] = $width; + } else { + array_pop($character['range'][$character['rangeid']]); + // new range + $character['rangeid'] = $character['prevcid']; + $character['range'][$character['rangeid']] = []; + $character['range'][$character['rangeid']][] = $character['prevwidth']; + $character['range'][$character['rangeid']][] = $width; + } + $character['interval'] = true; + $character['range'][$character['rangeid']]['interval'] = true; + } else { + if ($character['interval']) { + // new range + $character['rangeid'] = $cid; + $character['range'][$character['rangeid']] = []; + $character['range'][$character['rangeid']][] = $width; + } else { + $character['range'][$character['rangeid']][] = $width; + } + $character['interval'] = false; + } + } else { + // new range + $character['rangeid'] = $cid; + $character['range'][$character['rangeid']] = []; + $character['range'][$character['rangeid']][] = $width; + $character['interval'] = false; + } + $character['prevcid'] = $cid; + $character['prevwidth'] = $width; + } + } + $w = $this->writeFontRanges($character['range']); + $this->writer->write($w); + if (!$asSubset) { + $this->fontCache->binaryWrite($font['fontkey'] . '.cw', $w); + } + } + + private function writeFontRanges(&$range) // _putfontranges + { + // optimize ranges + $prevk = -1; + $nextk = -1; + $prevint = false; + foreach ($range as $k => $ws) { + $cws = count($ws); + if (($k == $nextk) and ( !$prevint) and ( (!isset($ws['interval'])) or ( $cws < 4))) { + if (isset($range[$k]['interval'])) { + unset($range[$k]['interval']); + } + $range[$prevk] = array_merge($range[$prevk], $range[$k]); + unset($range[$k]); + } else { + $prevk = $k; + } + $nextk = $k + $cws; + if (isset($ws['interval'])) { + if ($cws > 3) { + $prevint = true; + } else { + $prevint = false; + } + unset($range[$k]['interval']); + --$nextk; + } else { + $prevint = false; + } + } + // output data + $w = ''; + foreach ($range as $k => $ws) { + if (count(array_count_values($ws)) === 1) { + // interval mode is more compact + $w .= ' ' . $k . ' ' . ($k + count($ws) - 1) . ' ' . $ws[0]; + } else { + // range mode + $w .= ' ' . $k . ' [ ' . implode(' ', $ws) . ' ]' . "\n"; + } + } + return '/W [' . $w . ' ]'; + } + + private function writeFontWidths(&$font, $cidoffset = 0) // _putfontwidths + { + ksort($font['cw']); + unset($font['cw'][65535]); + $rangeid = 0; + $range = []; + $prevcid = -2; + $prevwidth = -1; + $interval = false; + // for each character + foreach ($font['cw'] as $cid => $width) { + $cid -= $cidoffset; + if (!isset($font['dw']) || (isset($font['dw']) && $width != $font['dw'])) { + if ($cid === ($prevcid + 1)) { + // consecutive CID + if ($width === $prevwidth) { + if ($width === $range[$rangeid][0]) { + $range[$rangeid][] = $width; + } else { + array_pop($range[$rangeid]); + // new range + $rangeid = $prevcid; + $range[$rangeid] = []; + $range[$rangeid][] = $prevwidth; + $range[$rangeid][] = $width; + } + $interval = true; + $range[$rangeid]['interval'] = true; + } else { + if ($interval) { + // new range + $rangeid = $cid; + $range[$rangeid] = []; + $range[$rangeid][] = $width; + } else { + $range[$rangeid][] = $width; + } + $interval = false; + } + } else { + // new range + $rangeid = $cid; + $range[$rangeid] = []; + $range[$rangeid][] = $width; + $interval = false; + } + $prevcid = $cid; + $prevwidth = $width; + } + } + $this->writer->write($this->writeFontRanges($range)); + } + + // from class PDF_Chinese CJK EXTENSIONS + public function writeType0(&$font) // _putType0 + { + // Type0 + $this->writer->write('/Subtype /Type0'); + $this->writer->write('/BaseFont /' . $font['name'] . '-' . $font['CMap']); + $this->writer->write('/Encoding /' . $font['CMap']); + $this->writer->write('/DescendantFonts [' . ($this->mpdf->n + 1) . ' 0 R]'); + $this->writer->write('>>'); + $this->writer->write('endobj'); + // CIDFont + $this->writer->object(); + $this->writer->write('<writer->write('/Subtype /CIDFontType0'); + $this->writer->write('/BaseFont /' . $font['name']); + + $cidinfo = '/Registry ' . $this->writer->string('Adobe'); + $cidinfo .= ' /Ordering ' . $this->writer->string($font['registry']['ordering']); + $cidinfo .= ' /Supplement ' . $font['registry']['supplement']; + $this->writer->write('/CIDSystemInfo <<' . $cidinfo . '>>'); + + $this->writer->write('/FontDescriptor ' . ($this->mpdf->n + 1) . ' 0 R'); + if (isset($font['MissingWidth'])) { + $this->writer->write('/DW ' . $font['MissingWidth'] . ''); + } + $this->writeFontWidths($font, 31); + $this->writer->write('>>'); + $this->writer->write('endobj'); + + // Font descriptor + $this->writer->object(); + $s = '< $v) { + if ($k !== 'Style') { + $s .= ' /' . $k . ' ' . $v . ''; + } + } + $this->writer->write($s . '>>'); + $this->writer->write('endobj'); + } + +} diff --git a/Mpdf/Writer/FormWriter.php b/Mpdf/Writer/FormWriter.php new file mode 100644 index 0000000..609aac5 --- /dev/null +++ b/Mpdf/Writer/FormWriter.php @@ -0,0 +1,63 @@ +mpdf = $mpdf; + $this->writer = $writer; + } + + public function writeFormObjects() // _putformobjects + { + foreach ($this->mpdf->formobjects as $file => $info) { + + $this->writer->object(); + + $this->mpdf->formobjects[$file]['n'] = $this->mpdf->n; + + $this->writer->write('<writer->write('/Subtype /Form'); + $this->writer->write('/Group ' . ($this->mpdf->n + 1) . ' 0 R'); + $this->writer->write('/BBox [' . $info['x'] . ' ' . $info['y'] . ' ' . ($info['w'] + $info['x']) . ' ' . ($info['h'] + $info['y']) . ']'); + + if ($this->mpdf->compress) { + $this->writer->write('/Filter /FlateDecode'); + } + + $data = $this->mpdf->compress ? gzcompress($info['data']) : $info['data']; + $this->writer->write('/Length ' . strlen($data) . '>>'); + $this->writer->stream($data); + + unset($this->mpdf->formobjects[$file]['data']); + + $this->writer->write('endobj'); + + // Required for SVG transparency (opacity) to work + $this->writer->object(); + $this->writer->write('<writer->write('/S /Transparency'); + $this->writer->write('>>'); + $this->writer->write('endobj'); + } + } +} diff --git a/Mpdf/Writer/ImageWriter.php b/Mpdf/Writer/ImageWriter.php new file mode 100644 index 0000000..b4d3ac8 --- /dev/null +++ b/Mpdf/Writer/ImageWriter.php @@ -0,0 +1,119 @@ +mpdf = $mpdf; + $this->writer = $writer; + } + + public function writeImages() + { + $filter = $this->mpdf->compress ? '/Filter /FlateDecode ' : ''; + + foreach ($this->mpdf->images as $file => $info) { + + $this->writer->object(); + + $this->mpdf->images[$file]['n'] = $this->mpdf->n; + + $this->writer->write('<writer->write('/Subtype /Image'); + $this->writer->write('/Width ' . $info['w']); + $this->writer->write('/Height ' . $info['h']); + + if (isset($info['interpolation']) && $info['interpolation']) { + $this->writer->write('/Interpolate true'); // mPDF 6 - image interpolation shall be performed by a conforming reader + } + + if (isset($info['masked'])) { + $this->writer->write('/SMask ' . ($this->mpdf->n - 1) . ' 0 R'); + } + + // set color space + $icc = false; + if (isset($info['icc']) && ( $info['icc'] !== false)) { + // ICC Colour Space + $icc = true; + $this->writer->write('/ColorSpace [/ICCBased ' . ($this->mpdf->n + 1) . ' 0 R]'); + } elseif ($info['cs'] === 'Indexed') { + if ($this->mpdf->PDFX || ($this->mpdf->PDFA && $this->mpdf->restrictColorSpace === 3)) { + throw new \Mpdf\MpdfException('PDFA1-b and PDFX/1-a files do not permit using mixed colour space (' . $file . ').'); + } + $this->writer->write('/ColorSpace [/Indexed /DeviceRGB ' . (strlen($info['pal']) / 3 - 1) . ' ' . ($this->mpdf->n + 1) . ' 0 R]'); + } else { + $this->writer->write('/ColorSpace /' . $info['cs']); + if ($info['cs'] === 'DeviceCMYK') { + if ($this->mpdf->PDFA && $this->mpdf->restrictColorSpace !== 3) { + throw new \Mpdf\MpdfException('PDFA1-b does not permit Images using mixed colour space (' . $file . ').'); + } + if ($info['type'] === 'jpg') { + $this->writer->write('/Decode [1 0 1 0 1 0 1 0]'); + } + } elseif (($this->mpdf->PDFX || ($this->mpdf->PDFA && $this->mpdf->restrictColorSpace === 3)) && $info['cs'] === 'DeviceRGB') { + throw new \Mpdf\MpdfException('PDFA1-b and PDFX/1-a files do not permit using mixed colour space (' . $file . ').'); + } + } + + $this->writer->write('/BitsPerComponent ' . $info['bpc']); + + if (isset($info['f']) && $info['f']) { + $this->writer->write('/Filter /' . $info['f']); + } + + if (isset($info['parms'])) { + $this->writer->write($info['parms']); + } + + if (isset($info['trns']) && is_array($info['trns'])) { + $trns = ''; + $maskCount = count($info['trns']); + for ($i = 0; $i < $maskCount; $i++) { + $trns .= $info['trns'][$i] . ' ' . $info['trns'][$i] . ' '; + } + $this->writer->write('/Mask [' . $trns . ']'); + } + + $this->writer->write('/Length ' . strlen($info['data']) . '>>'); + $this->writer->stream($info['data']); + + unset($this->mpdf->images[$file]['data']); + + $this->writer->write('endobj'); + + if ($icc) { // ICC colour profile + $this->writer->object(); + $icc = $this->mpdf->compress ? gzcompress($info['icc']) : $info['icc']; + $this->writer->write('<>'); + $this->writer->stream($icc); + $this->writer->write('endobj'); + } elseif ($info['cs'] === 'Indexed') { // Palette + $this->writer->object(); + $pal = $this->mpdf->compress ? gzcompress($info['pal']) : $info['pal']; + $this->writer->write('<<' . $filter . '/Length ' . strlen($pal) . '>>'); + $this->writer->stream($pal); + $this->writer->write('endobj'); + } + } + } + +} diff --git a/Mpdf/Writer/JavaScriptWriter.php b/Mpdf/Writer/JavaScriptWriter.php new file mode 100644 index 0000000..f3bb290 --- /dev/null +++ b/Mpdf/Writer/JavaScriptWriter.php @@ -0,0 +1,46 @@ +mpdf = $mpdf; + $this->writer = $writer; + } + + public function writeJavascript() // _putjavascript + { + $this->writer->object(); + $this->mpdf->n_js = $this->mpdf->n; + $this->writer->write('<<'); + $this->writer->write('/Names [(EmbeddedJS) ' . (1 + $this->mpdf->n) . ' 0 R ]'); + $this->writer->write('>>'); + $this->writer->write('endobj'); + + $this->writer->object(); + $this->writer->write('<<'); + $this->writer->write('/S /JavaScript'); + $this->writer->write('/JS ' . $this->writer->string($this->mpdf->js)); + $this->writer->write('>>'); + $this->writer->write('endobj'); + } + +} diff --git a/Mpdf/Writer/MetadataWriter.php b/Mpdf/Writer/MetadataWriter.php new file mode 100644 index 0000000..e29b073 --- /dev/null +++ b/Mpdf/Writer/MetadataWriter.php @@ -0,0 +1,830 @@ +mpdf = $mpdf; + $this->writer = $writer; + $this->form = $form; + $this->protection = $protection; + $this->logger = $logger; + } + + public function writeMetadata() // _putmetadata + { + $this->writer->object(); + $this->mpdf->MetadataRoot = $this->mpdf->n; + $Producer = 'mPDF' . ($this->mpdf->exposeVersion ? (' ' . Mpdf::VERSION) : ''); + $z = date('O'); // +0200 + $offset = substr($z, 0, 3) . ':' . substr($z, 3, 2); + $CreationDate = date('Y-m-d\TH:i:s') . $offset; // 2006-03-10T10:47:26-05:00 2006-06-19T09:05:17Z + $uuid = sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x', random_int(0, 0xffff), random_int(0, 0xffff), random_int(0, 0xffff), random_int(0, 0x0fff) | 0x4000, random_int(0, 0x3fff) | 0x8000, random_int(0, 0xffff), random_int(0, 0xffff), random_int(0, 0xffff)); + + + $m = '' . "\n"; // begin = FEFF BOM + $m .= ' ' . "\n"; + $m .= ' ' . "\n"; + $m .= ' ' . "\n"; + $m .= ' ' . $Producer . '' . "\n"; + if (!empty($this->mpdf->keywords)) { + $m .= ' ' . $this->mpdf->keywords . '' . "\n"; + } + $m .= ' ' . "\n"; + + $m .= ' ' . "\n"; + $m .= ' ' . $CreationDate . '' . "\n"; + $m .= ' ' . $CreationDate . '' . "\n"; + $m .= ' ' . $CreationDate . '' . "\n"; + if (!empty($this->mpdf->creator)) { + $m .= ' ' . $this->mpdf->creator . '' . "\n"; + } + $m .= ' ' . "\n"; + + // DC elements + $m .= ' ' . "\n"; + $m .= ' application/pdf' . "\n"; + if (!empty($this->mpdf->title)) { + $m .= ' + + ' . $this->mpdf->title . ' + + ' . "\n"; + } + if (!empty($this->mpdf->keywords)) { + $m .= ' + + ' . $this->mpdf->keywords . ' + + ' . "\n"; + } + if (!empty($this->mpdf->subject)) { + $m .= ' + + ' . $this->mpdf->subject . ' + + ' . "\n"; + } + if (!empty($this->mpdf->author)) { + $m .= ' + + ' . $this->mpdf->author . ' + + ' . "\n"; + } + $m .= ' ' . "\n"; + + if (!empty($this->mpdf->additionalXmpRdf)) { + $m .= $this->mpdf->additionalXmpRdf; + } + + // This bit is specific to PDFX-1a + if ($this->mpdf->PDFX) { + $m .= ' ' . "\n"; + } // This bit is specific to PDFA-1b + elseif ($this->mpdf->PDFA) { + + if (strpos($this->mpdf->PDFAversion, '-') === false) { + throw new \Mpdf\MpdfException(sprintf('PDFA version (%s) is not valid. (Use: 1-B, 3-B, etc.)', $this->mpdf->PDFAversion)); + } + + list($part, $conformance) = explode('-', strtoupper($this->mpdf->PDFAversion)); + $m .= ' ' . "\n"; + $m .= ' ' . $part . '' . "\n"; + $m .= ' ' . $conformance . '' . "\n"; + if ($part === '1' && $conformance === 'B') { + $m .= ' 2005' . "\n"; + } + $m .= ' ' . "\n"; + } + + $m .= ' ' . "\n"; + $m .= ' uuid:' . $uuid . '' . "\n"; + $m .= ' ' . "\n"; + $m .= ' ' . "\n"; + $m .= ' ' . "\n"; + $m .= str_repeat(str_repeat(' ', 100) . "\n", 20); // 2-4kB whitespace padding required + $m .= ''; // "r" read only + $this->writer->write('<>'); + $this->writer->stream($m); + $this->writer->write('endobj'); + } + + public function writeInfo() // _putinfo + { + $this->writer->write('/Producer ' . $this->writer->utf16BigEndianTextString('mPDF' . ($this->mpdf->exposeVersion ? (' ' . $this->getVersionString()) : ''))); + + if (!empty($this->mpdf->title)) { + $this->writer->write('/Title ' . $this->writer->utf16BigEndianTextString($this->mpdf->title)); + } + + if (!empty($this->mpdf->subject)) { + $this->writer->write('/Subject ' . $this->writer->utf16BigEndianTextString($this->mpdf->subject)); + } + + if (!empty($this->mpdf->author)) { + $this->writer->write('/Author ' . $this->writer->utf16BigEndianTextString($this->mpdf->author)); + } + + if (!empty($this->mpdf->keywords)) { + $this->writer->write('/Keywords ' . $this->writer->utf16BigEndianTextString($this->mpdf->keywords)); + } + + if (!empty($this->mpdf->creator)) { + $this->writer->write('/Creator ' . $this->writer->utf16BigEndianTextString($this->mpdf->creator)); + } + + foreach ($this->mpdf->customProperties as $key => $value) { + $this->writer->write('/' . $key . ' ' . $this->writer->utf16BigEndianTextString($value)); + } + + $now = PdfDate::format(time()); + $this->writer->write('/CreationDate ' . $this->writer->string('D:' . $now)); + $this->writer->write('/ModDate ' . $this->writer->string('D:' . $now)); + if ($this->mpdf->PDFX) { + $this->writer->write('/Trapped/False'); + $this->writer->write('/GTS_PDFXVersion(PDF/X-1a:2003)'); + } + } + + public function writeOutputIntent() // _putoutputintent + { + $this->writer->object(); + $this->mpdf->OutputIntentRoot = $this->mpdf->n; + $this->writer->write('<mpdf->ICCProfile, '.icc')); + + if ($this->mpdf->PDFA) { + $this->writer->write('/S /GTS_PDFA1'); + if ($this->mpdf->ICCProfile) { + $this->writer->write('/Info (' . $ICCProfile . ')'); + $this->writer->write('/OutputConditionIdentifier (Custom)'); + $this->writer->write('/OutputCondition ()'); + } else { + $this->writer->write('/Info (sRGB IEC61966-2.1)'); + $this->writer->write('/OutputConditionIdentifier (sRGB IEC61966-2.1)'); + $this->writer->write('/OutputCondition ()'); + } + $this->writer->write('/DestOutputProfile ' . ($this->mpdf->n + 1) . ' 0 R'); + } elseif ($this->mpdf->PDFX) { // always a CMYK profile + $this->writer->write('/S /GTS_PDFX'); + if ($this->mpdf->ICCProfile) { + $this->writer->write('/Info (' . $ICCProfile . ')'); + $this->writer->write('/OutputConditionIdentifier (Custom)'); + $this->writer->write('/OutputCondition ()'); + $this->writer->write('/DestOutputProfile ' . ($this->mpdf->n + 1) . ' 0 R'); + } else { + $this->writer->write('/Info (CGATS TR 001)'); + $this->writer->write('/OutputConditionIdentifier (CGATS TR 001)'); + $this->writer->write('/OutputCondition (CGATS TR 001 (SWOP))'); + $this->writer->write('/RegistryName (http://www.color.org)'); + } + } + $this->writer->write('>>'); + $this->writer->write('endobj'); + + if ($this->mpdf->PDFX && !$this->mpdf->ICCProfile) { + return; + } + + $this->writer->object(); + + if ($this->mpdf->ICCProfile) { + if (!file_exists($this->mpdf->ICCProfile)) { + throw new \Mpdf\MpdfException(sprintf('Unable to find ICC profile "%s"', $this->mpdf->ICCProfile)); + } + $s = file_get_contents($this->mpdf->ICCProfile); + } else { + $s = file_get_contents(__DIR__ . '/..//data/iccprofiles/sRGB_IEC61966-2-1.icc'); + } + + if ($this->mpdf->compress) { + $s = gzcompress($s); + } + + $this->writer->write('<<'); + + if ($this->mpdf->PDFX || ($this->mpdf->PDFA && $this->mpdf->restrictColorSpace === 3)) { + $this->writer->write('/N 4'); + } else { + $this->writer->write('/N 3'); + } + + if ($this->mpdf->compress) { + $this->writer->write('/Filter /FlateDecode '); + } + + $this->writer->write('/Length ' . strlen($s) . '>>'); + $this->writer->stream($s); + $this->writer->write('endobj'); + } + + public function writeAssociatedFiles() // _putAssociatedFiles + { + if (!function_exists('gzcompress')) { + throw new \Mpdf\MpdfException('ext-zlib is required for compression of associated files'); + } + + // for each file, we create the spec object + the stream object + foreach ($this->mpdf->associatedFiles as $k => $file) { + // spec + $this->writer->object(); + $this->mpdf->associatedFiles[$k]['_root'] = $this->mpdf->n; // we store the root ref of object for future reference (e.g. /EmbeddedFiles catalog) + $this->writer->write('<writer->string($file['name'])); + if ($file['description']) { + $this->writer->write('/Desc ' . $this->writer->string($file['description'])); + } + $this->writer->write('/Type /Filespec'); + $this->writer->write('/EF <<'); + $this->writer->write('/F ' . ($this->mpdf->n + 1) . ' 0 R'); + $this->writer->write('/UF ' . ($this->mpdf->n + 1) . ' 0 R'); + $this->writer->write('>>'); + if ($file['AFRelationship']) { + $this->writer->write('/AFRelationship /' . $file['AFRelationship']); + } + $this->writer->write('/UF ' . $this->writer->string($file['name'])); + $this->writer->write('>>'); + $this->writer->write('endobj'); + + $fileContent = null; + if (isset($file['path'])) { + $fileContent = @file_get_contents($file['path']); + } elseif (isset($file['content'])) { + $fileContent = $file['content']; + } + + if (!$fileContent) { + throw new \Mpdf\MpdfException(sprintf('Cannot access associated file - %s', $file['path'])); + } + + $filestream = gzcompress($fileContent); + $this->writer->object(); + $this->writer->write('<writer->write('/Subtype /' . $this->writer->escapeSlashes($file['mime'])); + } + $this->writer->write('/Length '.strlen($filestream)); + $this->writer->write('/Filter /FlateDecode'); + if (isset($file['path'])) { + $this->writer->write('/Params <writer->string('D:' . PdfDate::format(filemtime($file['path']))).' >>'); + } else { + $this->writer->write('/Params <writer->string('D:' . PdfDate::format(time())).' >>'); + } + + $this->writer->write('>>'); + $this->writer->stream($filestream); + $this->writer->write('endobj'); + } + + // AF array + $this->writer->object(); + $refs = []; + foreach ($this->mpdf->associatedFiles as $file) { + $refs[] = '' . $file['_root'] . ' 0 R'; + } + $this->writer->write('[' . implode(' ', $refs) . ']'); + $this->writer->write('endobj'); + + $this->mpdf->associatedFilesRoot = $this->mpdf->n; + } + + public function writeCatalog() //_putcatalog + { + $this->writer->write('/Type /Catalog'); + $this->writer->write('/Pages 1 0 R'); + + if ($this->mpdf->ZoomMode === 'fullpage') { + $this->writer->write('/OpenAction [3 0 R /Fit]'); + } elseif ($this->mpdf->ZoomMode === 'fullwidth') { + $this->writer->write('/OpenAction [3 0 R /FitH null]'); + } elseif ($this->mpdf->ZoomMode === 'real') { + $this->writer->write('/OpenAction [3 0 R /XYZ null null 1]'); + } elseif (!is_string($this->mpdf->ZoomMode)) { + $this->writer->write('/OpenAction [3 0 R /XYZ null null ' . ($this->mpdf->ZoomMode / 100) . ']'); + } elseif ($this->mpdf->ZoomMode === 'none') { + // do not write any zoom mode / OpenAction + } else { + $this->writer->write('/OpenAction [3 0 R /XYZ null null null]'); + } + + if ($this->mpdf->LayoutMode === 'single') { + $this->writer->write('/PageLayout /SinglePage'); + } elseif ($this->mpdf->LayoutMode === 'continuous') { + $this->writer->write('/PageLayout /OneColumn'); + } elseif ($this->mpdf->LayoutMode === 'twoleft') { + $this->writer->write('/PageLayout /TwoColumnLeft'); + } elseif ($this->mpdf->LayoutMode === 'tworight') { + $this->writer->write('/PageLayout /TwoColumnRight'); + } elseif ($this->mpdf->LayoutMode === 'two') { + if ($this->mpdf->mirrorMargins) { + $this->writer->write('/PageLayout /TwoColumnRight'); + } else { + $this->writer->write('/PageLayout /TwoColumnLeft'); + } + } + + // Bookmarks + if (count($this->mpdf->BMoutlines) > 0) { + $this->writer->write('/Outlines ' . $this->mpdf->OutlineRoot . ' 0 R'); + $this->writer->write('/PageMode /UseOutlines'); + } + + // Fullscreen + if (is_int(strpos($this->mpdf->DisplayPreferences, 'FullScreen'))) { + $this->writer->write('/PageMode /FullScreen'); + } + + // Metadata + if ($this->mpdf->PDFA || $this->mpdf->PDFX) { + $this->writer->write('/Metadata ' . $this->mpdf->MetadataRoot . ' 0 R'); + } + + // OutputIntents + if ($this->mpdf->PDFA || $this->mpdf->PDFX || $this->mpdf->ICCProfile) { + $this->writer->write('/OutputIntents [' . $this->mpdf->OutputIntentRoot . ' 0 R]'); + } + + // Associated files + if ($this->mpdf->associatedFilesRoot) { + $this->writer->write('/AF '. $this->mpdf->associatedFilesRoot .' 0 R'); + + $names = []; + foreach ($this->mpdf->associatedFiles as $file) { + $names[] = $this->writer->string($file['name']) . ' ' . $file['_root'] . ' 0 R'; + } + $this->writer->write('/Names << /EmbeddedFiles << /Names [' . implode(' ', $names) . '] >> >>'); + } + + // Forms + if (count($this->form->forms) > 0) { + $this->form->_putFormsCatalog(); + } + + if ($this->mpdf->js !== null) { + $this->writer->write('/Names << /JavaScript ' . $this->mpdf->n_js . ' 0 R >> '); + } + + if ($this->mpdf->DisplayPreferences || $this->mpdf->directionality === 'rtl' || $this->mpdf->mirrorMargins) { + + $this->writer->write('/ViewerPreferences<<'); + + if (is_int(strpos($this->mpdf->DisplayPreferences, 'HideMenubar'))) { + $this->writer->write('/HideMenubar true'); + } + + if (is_int(strpos($this->mpdf->DisplayPreferences, 'HideToolbar'))) { + $this->writer->write('/HideToolbar true'); + } + + if (is_int(strpos($this->mpdf->DisplayPreferences, 'HideWindowUI'))) { + $this->writer->write('/HideWindowUI true'); + } + + if (is_int(strpos($this->mpdf->DisplayPreferences, 'DisplayDocTitle'))) { + $this->writer->write('/DisplayDocTitle true'); + } + + if (is_int(strpos($this->mpdf->DisplayPreferences, 'CenterWindow'))) { + $this->writer->write('/CenterWindow true'); + } + + if (is_int(strpos($this->mpdf->DisplayPreferences, 'FitWindow'))) { + $this->writer->write('/FitWindow true'); + } + + // PrintScaling is PDF 1.6 spec. + if (!$this->mpdf->PDFA && !$this->mpdf->PDFX && is_int(strpos($this->mpdf->DisplayPreferences, 'NoPrintScaling'))) { + $this->writer->write('/PrintScaling /None'); + } + + if ($this->mpdf->directionality === 'rtl') { + $this->writer->write('/Direction /R2L'); + } + + // Duplex is PDF 1.7 spec. + if ($this->mpdf->mirrorMargins && !$this->mpdf->PDFA && !$this->mpdf->PDFX) { + // if ($this->mpdf->DefOrientation=='P') $this->writer->write('/Duplex /DuplexFlipShortEdge'); + $this->writer->write('/Duplex /DuplexFlipLongEdge'); // PDF v1.7+ + } + + $this->writer->write('>>'); + } + + if ($this->mpdf->open_layer_pane && ($this->mpdf->hasOC || count($this->mpdf->layers))) { + $this->writer->write('/PageMode /UseOC'); + } + + if ($this->mpdf->hasOC || count($this->mpdf->layers)) { + + $p = $v = $h = $l = $loff = $lall = $as = ''; + + if ($this->mpdf->hasOC) { + + if (($this->mpdf->hasOC & 1) === 1) { + $p = $this->mpdf->n_ocg_print . ' 0 R'; + } + + if (($this->mpdf->hasOC & 2) === 2) { + $v = $this->mpdf->n_ocg_view . ' 0 R'; + } + + if (($this->mpdf->hasOC & 4) === 4) { + $h = $this->mpdf->n_ocg_hidden . ' 0 R'; + } + + $as = "<> <>"; + } + + if (count($this->mpdf->layers)) { + foreach ($this->mpdf->layers as $k => $layer) { + if (isset($this->mpdf->layerDetails[$k]) && strtolower($this->mpdf->layerDetails[$k]['state']) === 'hidden') { + $loff .= $layer['n'] . ' 0 R '; + } else { + $l .= $layer['n'] . ' 0 R '; + } + $lall .= $layer['n'] . ' 0 R '; + } + } + + $this->writer->write("/OCProperties <writer->write("/Order [$v $p $h $lall] "); + + if ($as) { + $this->writer->write("/AS [$as] "); + } + + $this->writer->write('>>>>'); + } + } + + /** + * @since 5.7.2 + */ + public function writeAnnotations() // _putannots + { + $nb = $this->mpdf->page; + + for ($n = 1; $n <= $nb; $n++) { + + if (isset($this->mpdf->PageLinks[$n]) || isset($this->mpdf->PageAnnots[$n]) || count($this->form->forms) > 0) { + + $wPt = $this->mpdf->pageDim[$n]['w'] * Mpdf::SCALE; + $hPt = $this->mpdf->pageDim[$n]['h'] * Mpdf::SCALE; + + // Links + if (isset($this->mpdf->PageLinks[$n])) { + + foreach ($this->mpdf->PageLinks[$n] as $key => $pl) { + + $this->writer->object(); + $annot = ''; + + $rect = sprintf('%.3F %.3F %.3F %.3F', $pl[0], $pl[1], $pl[0] + $pl[2], $pl[1] - $pl[3]); + + $annot .= '<writer->utf16BigEndianTextString($pl[4]); + $annot .= ' /NM ' . $this->writer->string(sprintf('%04u-%04u', $n, $key)); + $annot .= ' /M ' . $this->writer->string('D:' . date('YmdHis')); + + $annot .= ' /Border [0 0 0]'; + + // Use this (instead of /Border) to specify border around link + + // $annot .= ' /BS <mpdf->PDFA || $this->mpdf->PDFX) { + $annot .= ' /F 28'; + } + + if (strpos($pl[4], '@') === 0) { + + $p = substr($pl[4], 1); + // $h=isset($this->mpdf->OrientationChanges[$p]) ? $wPt : $hPt; + $htarg = $this->mpdf->pageDim[$p]['h'] * Mpdf::SCALE; + $annot .= sprintf(' /Dest [%d 0 R /XYZ 0 %.3F null]>>', 1 + 2 * $p, $htarg); + + } elseif (is_string($pl[4])) { + + $annot .= ' /A <writer->string($pl[4]) . '>> >>'; + + } else { + + $l = $this->mpdf->links[$pl[4]]; + // may not be set if #link points to non-existent target + if (isset($this->mpdf->pageDim[$l[0]]['h'])) { + $htarg = $this->mpdf->pageDim[$l[0]]['h'] * Mpdf::SCALE; + } else { + $htarg = $this->mpdf->h * Mpdf::SCALE; + } // doesn't really matter + + $annot .= sprintf(' /Dest [%d 0 R /XYZ 0 %.3F null]>>', 1 + 2 * $l[0], $htarg - $l[1] * Mpdf::SCALE); + } + + $this->writer->write($annot); + $this->writer->write('endobj'); + + } + } + + /* -- ANNOTATIONS -- */ + if (isset($this->mpdf->PageAnnots[$n])) { + + foreach ($this->mpdf->PageAnnots[$n] as $key => $pl) { + + $fileAttachment = (bool) $pl['opt']['file']; + + if ($fileAttachment && !$this->mpdf->allowAnnotationFiles) { + $this->logger->warning('Embedded files for annotations have to be allowed explicitly with "allowAnnotationFiles" config key'); + $fileAttachment = false; + } + + $this->writer->object(); + + $annot = ''; + $pl['opt'] = array_change_key_case($pl['opt'], CASE_LOWER); + $x = $pl['x']; + + if ($this->mpdf->annotMargin != 0 || $x == 0 || $x < 0) { // Odd page, intentional non-strict comparison + $x = ($wPt / Mpdf::SCALE) - $this->mpdf->annotMargin; + } + + $w = $h = 0; + $a = $x * Mpdf::SCALE; + $b = $hPt - ($pl['y'] * Mpdf::SCALE); + + $annot .= '<mpdf->n + 1) . ' 0 R>>'; + $annot .= '>>'; + + } else { + $annot .= '/Subtype /Text'; + $w = 20; + $h = 20; // mPDF 6 + } + + $rect = sprintf('%.3F %.3F %.3F %.3F', $a, $b - $h, $a + $w, $b); + $annot .= ' /Rect [' . $rect . ']'; + + // contents = description of file in free text + $annot .= ' /Contents ' . $this->writer->utf16BigEndianTextString($pl['txt']); + + $annot .= ' /NM ' . $this->writer->string(sprintf('%04u-%04u', $n, 2000 + $key)); + $annot .= ' /M ' . $this->writer->string('D:' . date('YmdHis')); + $annot .= ' /CreationDate ' . $this->writer->string('D:' . date('YmdHis')); + $annot .= ' /Border [0 0 0]'; + + if ($this->mpdf->PDFA || $this->mpdf->PDFX) { + $annot .= ' /F 28'; + $annot .= ' /CA 1'; + } elseif ($pl['opt']['ca'] > 0) { + $annot .= ' /CA ' . $pl['opt']['ca']; + } + + $annotcolor = ' /C ['; + if (isset($pl['opt']['c']) && $pl['opt']['c']) { + $col = $pl['opt']['c']; + if ($col[0] == 3 || $col[0] == 5) { + $annotcolor .= sprintf('%.3F %.3F %.3F', ord($col[1]) / 255, ord($col[2]) / 255, ord($col[3]) / 255); + } elseif ($col[0] == 1) { + $annotcolor .= sprintf('%.3F', ord($col[1]) / 255); + } elseif ($col[0] == 4 || $col[0] == 6) { + $annotcolor .= sprintf('%.3F %.3F %.3F %.3F', ord($col[1]) / 100, ord($col[2]) / 100, ord($col[3]) / 100, ord($col[4]) / 100); + } else { + $annotcolor .= '1 1 0'; + } + } else { + $annotcolor .= '1 1 0'; + } + $annotcolor .= ']'; + $annot .= $annotcolor; + + // Usually Author + // Use as Title for fileattachment + if (isset($pl['opt']['t']) && is_string($pl['opt']['t'])) { + $annot .= ' /T ' . $this->writer->utf16BigEndianTextString($pl['opt']['t']); + } + + if ($fileAttachment) { + $iconsapp = ['Paperclip', 'Graph', 'PushPin', 'Tag']; + } else { + $iconsapp = ['Comment', 'Help', 'Insert', 'Key', 'NewParagraph', 'Note', 'Paragraph']; + } + + if (isset($pl['opt']['icon']) && in_array($pl['opt']['icon'], $iconsapp)) { + $annot .= ' /Name /' . $pl['opt']['icon']; + } elseif ($fileAttachment) { + $annot .= ' /Name /PushPin'; + } else { + $annot .= ' /Name /Note'; + } + + if (!$fileAttachment) { + // Subj is PDF 1.5 spec. + if (!$this->mpdf->PDFA && !$this->mpdf->PDFX && isset($pl['opt']['subj'])) { + $annot .= ' /Subj ' . $this->writer->utf16BigEndianTextString($pl['opt']['subj']); + } + if (!empty($pl['opt']['popup'])) { + $annot .= ' /Open true'; + $annot .= ' /Popup ' . ($this->mpdf->n + 1) . ' 0 R'; + } else { + $annot .= ' /Open false'; + } + } + + $annot .= ' /P ' . $pl['pageobj'] . ' 0 R'; + $annot .= '>>'; + $this->writer->write($annot); + $this->writer->write('endobj'); + + if ($fileAttachment) { + + $file = @file_get_contents($pl['opt']['file']); + if (!$file) { + throw new \Mpdf\MpdfException('mPDF Error: Cannot access file attachment - ' . $pl['opt']['file']); + } + + $filestream = gzcompress($file); + $this->writer->object(); + $this->writer->write('<writer->write('/Length ' . strlen($filestream)); + $this->writer->write('/Filter /FlateDecode'); + $this->writer->write('>>'); + $this->writer->stream($filestream); + $this->writer->write('endobj'); + + } elseif (!empty($pl['opt']['popup'])) { + $this->writer->object(); + $annot = ''; + if (is_array($pl['opt']['popup']) && isset($pl['opt']['popup'][0])) { + $x = $pl['opt']['popup'][0] * Mpdf::SCALE; + } else { + $x = $pl['x'] * Mpdf::SCALE; + } + if (is_array($pl['opt']['popup']) && isset($pl['opt']['popup'][1])) { + $y = $hPt - ($pl['opt']['popup'][1] * Mpdf::SCALE); + } else { + $y = $hPt - ($pl['y'] * Mpdf::SCALE); + } + if (is_array($pl['opt']['popup']) && isset($pl['opt']['popup'][2])) { + $w = $pl['opt']['popup'][2] * Mpdf::SCALE; + } else { + $w = 180; + } + if (is_array($pl['opt']['popup']) && isset($pl['opt']['popup'][3])) { + $h = $pl['opt']['popup'][3] * Mpdf::SCALE; + } else { + $h = 120; + } + $rect = sprintf('%.3F %.3F %.3F %.3F', $x, $y - $h, $x + $w, $y); + $annot .= '<writer->string('D:' . date('YmdHis')); + if ($this->mpdf->PDFA || $this->mpdf->PDFX) { + $annot .= ' /F 28'; + } + $annot .= ' /Parent ' . ($this->mpdf->n - 1) . ' 0 R'; + $annot .= '>>'; + $this->writer->write($annot); + $this->writer->write('endobj'); + } + } + } + + // Active Forms + if (count($this->form->forms) > 0) { + $this->form->_putFormItems($n, $hPt); + } + } + } + + // Active Forms - Radio Button Group entries + // Output Radio Button Group form entries (radio_on_obj_id already determined) + if (count($this->form->form_radio_groups)) { + $this->form->_putRadioItems($n); + } + } + + public function writeEncryption() // _putencryption + { + $this->writer->write('/Filter /Standard'); + if ($this->protection->getUseRC128Encryption()) { + $this->writer->write('/V 2'); + $this->writer->write('/R 3'); + $this->writer->write('/Length 128'); + } else { + $this->writer->write('/V 1'); + $this->writer->write('/R 2'); + } + $this->writer->write('/O (' . $this->writer->escape($this->protection->getOValue()) . ')'); + $this->writer->write('/U (' . $this->writer->escape($this->protection->getUValue()) . ')'); + $this->writer->write('/P ' . $this->protection->getPValue()); + } + + public function writeTrailer() // _puttrailer + { + $this->writer->write('/Size ' . ($this->mpdf->n + 1)); + $this->writer->write('/Root ' . $this->mpdf->n . ' 0 R'); + $this->writer->write('/Info ' . $this->mpdf->InfoRoot . ' 0 R'); + + if ($this->mpdf->encrypted) { + $this->writer->write('/Encrypt ' . $this->mpdf->enc_obj_id . ' 0 R'); + $this->writer->write('/ID [<' . $this->protection->getUniqid() . '> <' . $this->protection->getUniqid() . '>]'); + } else { + $uniqid = md5(time() . $this->mpdf->buffer); + $this->writer->write('/ID [<' . $uniqid . '> <' . $uniqid . '>]'); + } + } + + public function setLogger(LoggerInterface $logger) + { + $this->logger = $logger; + } + + private function getVersionString() + { + $return = Mpdf::VERSION; + $headFile = __DIR__ . '/../../.git/HEAD'; + if (file_exists($headFile)) { + $ref = file($headFile); + $path = explode('/', $ref[0], 3); + $branch = isset($path[2]) ? trim($path[2]) : ''; + $revFile = __DIR__ . '/../../.git/refs/heads/' . $branch; + if ($branch && file_exists($revFile)) { + $rev = file($revFile); + $rev = substr($rev[0], 0, 7); + $return .= ' (' . $rev . ')'; + } + } + + return $return; + } + +} diff --git a/Mpdf/Writer/ObjectWriter.php b/Mpdf/Writer/ObjectWriter.php new file mode 100644 index 0000000..2e0ad7d --- /dev/null +++ b/Mpdf/Writer/ObjectWriter.php @@ -0,0 +1,64 @@ +mpdf = $mpdf; + $this->writer = $writer; + } + + public function writeImportedObjects() + { + if (is_array($this->mpdf->parsers) && count($this->mpdf->parsers) > 0) { + + foreach ($this->mpdf->parsers as $filename => $p) { + + $this->mpdf->current_parser = $this->mpdf->parsers[$filename]; + + if (is_array($this->mpdf->_obj_stack[$filename])) { + + while ($n = key($this->mpdf->_obj_stack[$filename])) { + + $nObj = $this->mpdf->current_parser->resolveObject($this->mpdf->_obj_stack[$filename][$n][1]); + $this->writer->object($this->mpdf->_obj_stack[$filename][$n][0]); + + if ($nObj[0] == pdf_parser::TYPE_STREAM) { + $this->mpdf->pdf_write_value($nObj); + } else { + $this->mpdf->pdf_write_value($nObj[1]); + } + + $this->writer->write('endobj'); + + $this->mpdf->_obj_stack[$filename][$n] = null; // free memory + + unset($this->mpdf->_obj_stack[$filename][$n]); + + reset($this->mpdf->_obj_stack[$filename]); + } + } + } + } + } + +} diff --git a/Mpdf/Writer/OptionalContentWriter.php b/Mpdf/Writer/OptionalContentWriter.php new file mode 100644 index 0000000..499a77f --- /dev/null +++ b/Mpdf/Writer/OptionalContentWriter.php @@ -0,0 +1,71 @@ +mpdf = $mpdf; + $this->writer = $writer; + } + + public function writeOptionalContentGroups() // _putocg Optional Content Groups + { + if ($this->mpdf->hasOC) { + + $this->writer->object(); + $this->mpdf->n_ocg_print = $this->mpdf->n; + $this->writer->write('<writer->string('Print only')); + $this->writer->write('/Usage <> /View <>>>>>'); + $this->writer->write('endobj'); + + $this->writer->object(); + $this->mpdf->n_ocg_view = $this->mpdf->n; + $this->writer->write('<writer->string('Screen only')); + $this->writer->write('/Usage <> /View <>>>>>'); + $this->writer->write('endobj'); + + $this->writer->object(); + $this->mpdf->n_ocg_hidden = $this->mpdf->n; + $this->writer->write('<writer->string('Hidden')); + $this->writer->write('/Usage <> /View <>>>>>'); + $this->writer->write('endobj'); + } + + if (count($this->mpdf->layers)) { + + ksort($this->mpdf->layers); + foreach ($this->mpdf->layers as $id => $layer) { + $this->writer->object(); + $this->mpdf->layers[$id]['n'] = $this->mpdf->n; + + if (isset($this->mpdf->layerDetails[$id]['name']) && $this->mpdf->layerDetails[$id]['name']) { + $name = $this->mpdf->layerDetails[$id]['name']; + } else { + $name = $layer['name']; + } + + $this->writer->write('<writer->utf16BigEndianTextString($name) . '>>'); + $this->writer->write('endobj'); + } + } + } + +} diff --git a/Mpdf/Writer/PageWriter.php b/Mpdf/Writer/PageWriter.php new file mode 100644 index 0000000..7e4e21d --- /dev/null +++ b/Mpdf/Writer/PageWriter.php @@ -0,0 +1,285 @@ +mpdf = $mpdf; + $this->form = $form; + $this->writer = $writer; + $this->metadataWriter = $metadataWriter; + } + + public function writePages() // _putpages + { + $nb = $this->mpdf->page; + $filter = $this->mpdf->compress ? '/Filter /FlateDecode ' : ''; + + if ($this->mpdf->DefOrientation === 'P') { + $defwPt = $this->mpdf->fwPt; + $defhPt = $this->mpdf->fhPt; + } else { + $defwPt = $this->mpdf->fhPt; + $defhPt = $this->mpdf->fwPt; + } + + $annotid = (3 + 2 * $nb); + + // Active Forms + $totaladdnum = 0; + for ($n = 1; $n <= $nb; $n++) { + if (isset($this->mpdf->PageLinks[$n])) { + $totaladdnum += count($this->mpdf->PageLinks[$n]); + } + + /* -- ANNOTATIONS -- */ + if (isset($this->mpdf->PageAnnots[$n])) { + foreach ($this->mpdf->PageAnnots[$n] as $k => $pl) { + if (!empty($pl['opt']['popup']) || !empty($pl['opt']['file'])) { + $totaladdnum += 2; + } else { + $totaladdnum++; + } + } + } + /* -- END ANNOTATIONS -- */ + + /* -- FORMS -- */ + if (count($this->form->forms) > 0) { + $this->form->countPageForms($n, $totaladdnum); + } + /* -- END FORMS -- */ + } + + /* -- FORMS -- */ + // Make a note in the radio button group of the obj_id it will have + $ctr = 0; + if (count($this->form->form_radio_groups)) { + foreach ($this->form->form_radio_groups as $name => $frg) { + $this->form->form_radio_groups[$name]['obj_id'] = $annotid + $totaladdnum + $ctr; + $ctr++; + } + } + /* -- END FORMS -- */ + + // Select unused fonts (usually default font) + $unused = []; + foreach ($this->mpdf->fonts as $fk => $font) { + if (isset($font['type']) && $font['type'] === 'TTF' && !$font['used']) { + $unused[] = $fk; + } + } + + for ($n = 1; $n <= $nb; $n++) { + + $thispage = $this->mpdf->pages[$n]; + + if (isset($this->mpdf->OrientationChanges[$n])) { + $hPt = $this->mpdf->pageDim[$n]['w'] * Mpdf::SCALE; + $wPt = $this->mpdf->pageDim[$n]['h'] * Mpdf::SCALE; + $owidthPt_LR = $this->mpdf->pageDim[$n]['outer_width_TB'] * Mpdf::SCALE; + $owidthPt_TB = $this->mpdf->pageDim[$n]['outer_width_LR'] * Mpdf::SCALE; + } else { + $wPt = $this->mpdf->pageDim[$n]['w'] * Mpdf::SCALE; + $hPt = $this->mpdf->pageDim[$n]['h'] * Mpdf::SCALE; + $owidthPt_LR = $this->mpdf->pageDim[$n]['outer_width_LR'] * Mpdf::SCALE; + $owidthPt_TB = $this->mpdf->pageDim[$n]['outer_width_TB'] * Mpdf::SCALE; + } + + // Remove references to unused fonts (usually default font) + foreach ($unused as $fk) { + if ($this->mpdf->fonts[$fk]['sip'] || $this->mpdf->fonts[$fk]['smp']) { + foreach ($this->mpdf->fonts[$fk]['subsetfontids'] as $k => $fid) { + $thispage = preg_replace('/\s\/F' . $fid . ' \d[\d.]* Tf\s/is', ' ', $thispage); + } + } else { + $thispage = preg_replace('/\s\/F' . $this->mpdf->fonts[$fk]['i'] . ' \d[\d.]* Tf\s/is', ' ', $thispage); + } + } + + // Clean up repeated /GS1 gs statements + // For some reason using + for repetition instead of {2,20} crashes PHP Script Interpreter ??? + $thispage = preg_replace('/(\/GS1 gs\n){2,20}/', "/GS1 gs\n", $thispage); + + $thispage = preg_replace('/(\s*___BACKGROUND___PATTERNS' . $this->mpdf->uniqstr . '\s*)/', ' ', $thispage); + $thispage = preg_replace('/(\s*___HEADER___MARKER' . $this->mpdf->uniqstr . '\s*)/', ' ', $thispage); + $thispage = preg_replace('/(\s*___PAGE___START' . $this->mpdf->uniqstr . '\s*)/', ' ', $thispage); + $thispage = preg_replace('/(\s*___TABLE___BACKGROUNDS' . $this->mpdf->uniqstr . '\s*)/', ' ', $thispage); + + // mPDF 5.7.3 TRANSFORMS + while (preg_match('/(\% BTR(.*?)\% ETR)/is', $thispage, $m)) { + $thispage = preg_replace('/(\% BTR.*?\% ETR)/is', '', $thispage, 1) . "\n" . $m[2]; + } + + // Page + $this->writer->object(); + $this->writer->write('<writer->write('/Parent 1 0 R'); + + if (isset($this->mpdf->OrientationChanges[$n])) { + + $this->writer->write(sprintf('/MediaBox [0 0 %.3F %.3F]', $hPt, $wPt)); + + // If BleedBox is defined, it must be larger than the TrimBox, but smaller than the MediaBox + $bleedMargin = $this->mpdf->pageDim[$n]['bleedMargin'] * Mpdf::SCALE; + + if ($bleedMargin && ($owidthPt_TB || $owidthPt_LR)) { + $x0 = $owidthPt_TB - $bleedMargin; + $y0 = $owidthPt_LR - $bleedMargin; + $x1 = $hPt - $owidthPt_TB + $bleedMargin; + $y1 = $wPt - $owidthPt_LR + $bleedMargin; + $this->writer->write(sprintf('/BleedBox [%.3F %.3F %.3F %.3F]', $x0, $y0, $x1, $y1)); + } + + $this->writer->write(sprintf('/TrimBox [%.3F %.3F %.3F %.3F]', $owidthPt_TB, $owidthPt_LR, $hPt - $owidthPt_TB, $wPt - $owidthPt_LR)); + + if ($this->mpdf->displayDefaultOrientation) { + if ($this->mpdf->DefOrientation === 'P') { + $this->writer->write('/Rotate 270'); + } else { + $this->writer->write('/Rotate 90'); + } + } + + } else { // elseif($wPt != $defwPt || $hPt != $defhPt) { + + $this->writer->write(sprintf('/MediaBox [0 0 %.3F %.3F]', $wPt, $hPt)); + $bleedMargin = $this->mpdf->pageDim[$n]['bleedMargin'] * Mpdf::SCALE; + + if ($bleedMargin && ($owidthPt_TB || $owidthPt_LR)) { + $x0 = $owidthPt_LR - $bleedMargin; + $y0 = $owidthPt_TB - $bleedMargin; + $x1 = $wPt - $owidthPt_LR + $bleedMargin; + $y1 = $hPt - $owidthPt_TB + $bleedMargin; + $this->writer->write(sprintf('/BleedBox [%.3F %.3F %.3F %.3F]', $x0, $y0, $x1, $y1)); + } + + $this->writer->write(sprintf('/TrimBox [%.3F %.3F %.3F %.3F]', $owidthPt_LR, $owidthPt_TB, $wPt - $owidthPt_LR, $hPt - $owidthPt_TB)); + } + $this->writer->write('/Resources 2 0 R'); + + // Important to keep in RGB colorSpace when using transparency + if (!$this->mpdf->PDFA && !$this->mpdf->PDFX) { + if ($this->mpdf->restrictColorSpace === 3) { + $this->writer->write('/Group << /Type /Group /S /Transparency /CS /DeviceCMYK >> '); + } elseif ($this->mpdf->restrictColorSpace === 1) { + $this->writer->write('/Group << /Type /Group /S /Transparency /CS /DeviceGray >> '); + } else { + $this->writer->write('/Group << /Type /Group /S /Transparency /CS /DeviceRGB >> '); + } + } + + $annotsnum = 0; + $embeddedfiles = []; // mPDF 5.7.2 /EmbeddedFiles + + if (isset($this->mpdf->PageLinks[$n])) { + $annotsnum += count($this->mpdf->PageLinks[$n]); + } + + if (isset($this->mpdf->PageAnnots[$n])) { + foreach ($this->mpdf->PageAnnots[$n] as $k => $pl) { + if (!empty($pl['opt']['file'])) { + $embeddedfiles[$annotsnum + 1] = true; + } // mPDF 5.7.2 /EmbeddedFiles + if (!empty($pl['opt']['popup']) || !empty($pl['opt']['file'])) { + $annotsnum += 2; + } else { + $annotsnum++; + } + $this->mpdf->PageAnnots[$n][$k]['pageobj'] = $this->mpdf->n; + } + } + + // Active Forms + $formsnum = 0; + if (count($this->form->forms) > 0) { + foreach ($this->form->forms as $val) { + if ($val['page'] == $n) { + $formsnum++; + } + } + } + + if ($annotsnum || $formsnum) { + + $s = '/Annots [ '; + + for ($i = 0; $i < $annotsnum; $i++) { + if (!isset($embeddedfiles[$i])) { + $s .= ($annotid + $i) . ' 0 R '; + } // mPDF 5.7.2 /EmbeddedFiles + } + + $annotid += $annotsnum; + + /* -- FORMS -- */ + if (count($this->form->forms) > 0) { + $this->form->addFormIds($n, $s, $annotid); + } + /* -- END FORMS -- */ + + $s .= '] '; + $this->writer->write($s); + } + + $this->writer->write('/Contents ' . ($this->mpdf->n + 1) . ' 0 R>>'); + $this->writer->write('endobj'); + + // Page content + $this->writer->object(); + $p = $this->mpdf->compress ? gzcompress($thispage) : $thispage; + $this->writer->write('<<' . $filter . '/Length ' . strlen($p) . '>>'); + $this->writer->stream($p); + $this->writer->write('endobj'); + } + + $this->metadataWriter->writeAnnotations(); // mPDF 5.7.2 + + // Pages root + $this->mpdf->offsets[1] = strlen($this->mpdf->buffer); + $this->writer->write('1 0 obj'); + $this->writer->write('<writer->write($kids . ']'); + $this->writer->write('/Count ' . $nb); + $this->writer->write(sprintf('/MediaBox [0 0 %.3F %.3F]', $defwPt, $defhPt)); + $this->writer->write('>>'); + $this->writer->write('endobj'); + } + +} diff --git a/Mpdf/Writer/ResourceWriter.php b/Mpdf/Writer/ResourceWriter.php new file mode 100644 index 0000000..996b882 --- /dev/null +++ b/Mpdf/Writer/ResourceWriter.php @@ -0,0 +1,256 @@ +mpdf = $mpdf; + $this->writer = $writer; + $this->colorWriter = $colorWriter; + $this->fontWriter = $fontWriter; + $this->imageWriter = $imageWriter; + $this->formWriter = $formWriter; + $this->optionalContentWriter = $optionalContentWriter; + $this->backgroundWriter = $backgroundWriter; + $this->bookmarkWriter = $bookmarkWriter; + $this->metadataWriter = $metadataWriter; + $this->javaScriptWriter = $javaScriptWriter; + $this->logger = $logger; + } + + public function writeResources() // _putresources + { + if ($this->mpdf->hasOC || count($this->mpdf->layers)) { + $this->optionalContentWriter->writeOptionalContentGroups(); + } + + $this->mpdf->_putextgstates(); + $this->colorWriter->writeSpotColors(); + + // @log Compiling Fonts + + $this->fontWriter->writeFonts(); + + // @log Compiling Images + + $this->imageWriter->writeImages(); + + $this->formWriter->writeFormObjects(); + + $this->mpdf->writeImportedPagesAndResolvedObjects(); + + $this->backgroundWriter->writeShaders(); + $this->backgroundWriter->writePatterns(); + + // Resource dictionary + $this->mpdf->offsets[2] = strlen($this->mpdf->buffer); + $this->writer->write('2 0 obj'); + $this->writer->write('<writer->write('/Font <<'); + foreach ($this->mpdf->fonts as $font) { + if (isset($font['type']) && $font['type'] === 'TTF' && !$font['used']) { + continue; + } + if (isset($font['type']) && $font['type'] === 'TTF' && ($font['sip'] || $font['smp'])) { + foreach ($font['n'] as $k => $fid) { + $this->writer->write('/F' . $font['subsetfontids'][$k] . ' ' . $font['n'][$k] . ' 0 R'); + } + } else { + $this->writer->write('/F' . $font['i'] . ' ' . $font['n'] . ' 0 R'); + } + } + $this->writer->write('>>'); + + if (count($this->mpdf->spotColors)) { + $this->writer->write('/ColorSpace <<'); + foreach ($this->mpdf->spotColors as $color) { + $this->writer->write('/CS' . $color['i'] . ' ' . $color['n'] . ' 0 R'); + } + $this->writer->write('>>'); + } + + if (count($this->mpdf->extgstates)) { + $this->writer->write('/ExtGState <<'); + foreach ($this->mpdf->extgstates as $k => $extgstate) { + if (isset($extgstate['trans'])) { + $this->writer->write('/' . $extgstate['trans'] . ' ' . $extgstate['n'] . ' 0 R'); + } else { + $this->writer->write('/GS' . $k . ' ' . $extgstate['n'] . ' 0 R'); + } + } + $this->writer->write('>>'); + } + + /* -- BACKGROUNDS -- */ + if (($this->mpdf->gradients !== null && (count($this->mpdf->gradients) > 0))) { // mPDF 5.7.3 + + $this->writer->write('/Shading <<'); + + foreach ($this->mpdf->gradients as $id => $grad) { + $this->writer->write('/Sh' . $id . ' ' . $grad['id'] . ' 0 R'); + } + + $this->writer->write('>>'); + + /* + // ??? Not needed !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + $this->writer->write('/Pattern <<'); + foreach ($this->mpdf->gradients as $id => $grad) { + $this->writer->write('/P'.$id.' '.$grad['pattern'].' 0 R'); + } + $this->writer->write('>>'); + */ + } + /* -- END BACKGROUNDS -- */ + + if (count($this->mpdf->images) || count($this->mpdf->formobjects) || count($this->mpdf->getImportedPages())) { + $this->writer->write('/XObject <<'); + foreach ($this->mpdf->images as $image) { + $this->writer->write('/I' . $image['i'] . ' ' . $image['n'] . ' 0 R'); + } + foreach ($this->mpdf->formobjects as $formobject) { + $this->writer->write('/FO' . $formobject['i'] . ' ' . $formobject['n'] . ' 0 R'); + } + /* -- IMPORTS -- */ + foreach ($this->mpdf->getImportedPages() as $pageData) { + $this->writer->write('/' . $pageData['id'] . ' ' . $pageData['objectNumber'] . ' 0 R'); + } + /* -- END IMPORTS -- */ + $this->writer->write('>>'); + } + + /* -- BACKGROUNDS -- */ + + if (count($this->mpdf->patterns)) { + $this->writer->write('/Pattern <<'); + foreach ($this->mpdf->patterns as $k => $patterns) { + $this->writer->write('/P' . $k . ' ' . $patterns['n'] . ' 0 R'); + } + $this->writer->write('>>'); + } + /* -- END BACKGROUNDS -- */ + + if ($this->mpdf->hasOC || count($this->mpdf->layers)) { + $this->writer->write('/Properties <<'); + if ($this->mpdf->hasOC) { + $this->writer->write('/OC1 ' . $this->mpdf->n_ocg_print . ' 0 R /OC2 ' . $this->mpdf->n_ocg_view . ' 0 R /OC3 ' . $this->mpdf->n_ocg_hidden . ' 0 R '); + } + if (count($this->mpdf->layers)) { + foreach ($this->mpdf->layers as $id => $layer) { + $this->writer->write('/ZI' . $id . ' ' . $layer['n'] . ' 0 R'); + } + } + $this->writer->write('>>'); + } + + $this->writer->write('>>'); + $this->writer->write('endobj'); // end resource dictionary + + $this->bookmarkWriter->writeBookmarks(); + + if (!empty($this->mpdf->js)) { + $this->javaScriptWriter->writeJavascript(); + } + + if ($this->mpdf->encrypted) { + $this->writer->object(); + $this->mpdf->enc_obj_id = $this->mpdf->n; + $this->writer->write('<<'); + $this->metadataWriter->writeEncryption(); + $this->writer->write('>>'); + $this->writer->write('endobj'); + } + } + + /** + * @param \Psr\Log\LoggerInterface $logger + * + * @return void + */ + public function setLogger(LoggerInterface $logger) + { + $this->logger = $logger; + } +} diff --git a/mpdf/includes/CJKdata.php b/Mpdf/data/CJKdata.php similarity index 99% rename from mpdf/includes/CJKdata.php rename to Mpdf/data/CJKdata.php index 8423052..df6f3ea 100644 --- a/mpdf/includes/CJKdata.php +++ b/Mpdf/data/CJKdata.php @@ -97,5 +97,3 @@ foreach($_cr as $_r) { } } $this->UHC_widths=$cw; - -?> \ No newline at end of file diff --git a/mpdf/collations/Afrikaans_South_Africa.php b/Mpdf/data/collations/Afrikaans_South_Africa.php similarity index 98% rename from mpdf/collations/Afrikaans_South_Africa.php rename to Mpdf/data/collations/Afrikaans_South_Africa.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/Afrikaans_South_Africa.php +++ b/Mpdf/data/collations/Afrikaans_South_Africa.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Albanian_Albania.php b/Mpdf/data/collations/Albanian_Albania.php similarity index 98% rename from mpdf/collations/Albanian_Albania.php rename to Mpdf/data/collations/Albanian_Albania.php index 8f7c8d5..c3db622 100644 --- a/mpdf/collations/Albanian_Albania.php +++ b/Mpdf/data/collations/Albanian_Albania.php @@ -1,5 +1,5 @@ 711, 65 => 97, 225 => 97, @@ -107,5 +107,4 @@ $collation = array ( 379 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Alsatian_France.php b/Mpdf/data/collations/Alsatian_France.php similarity index 98% rename from mpdf/collations/Alsatian_France.php rename to Mpdf/data/collations/Alsatian_France.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/Alsatian_France.php +++ b/Mpdf/data/collations/Alsatian_France.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Arabic_Algeria.php b/Mpdf/data/collations/Arabic_Algeria.php similarity index 97% rename from mpdf/collations/Arabic_Algeria.php rename to Mpdf/data/collations/Arabic_Algeria.php index 884f85f..d69c939 100644 --- a/mpdf/collations/Arabic_Algeria.php +++ b/Mpdf/data/collations/Arabic_Algeria.php @@ -1,5 +1,5 @@ 8205, 1600 => 8205, 1611 => 8205, @@ -64,5 +64,4 @@ $collation = array ( 1572 => 1608, 1746 => 1610, 1574 => 1610, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Arabic_Bahrain.php b/Mpdf/data/collations/Arabic_Bahrain.php similarity index 97% rename from mpdf/collations/Arabic_Bahrain.php rename to Mpdf/data/collations/Arabic_Bahrain.php index 884f85f..d69c939 100644 --- a/mpdf/collations/Arabic_Bahrain.php +++ b/Mpdf/data/collations/Arabic_Bahrain.php @@ -1,5 +1,5 @@ 8205, 1600 => 8205, 1611 => 8205, @@ -64,5 +64,4 @@ $collation = array ( 1572 => 1608, 1746 => 1610, 1574 => 1610, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Arabic_Egypt.php b/Mpdf/data/collations/Arabic_Egypt.php similarity index 97% rename from mpdf/collations/Arabic_Egypt.php rename to Mpdf/data/collations/Arabic_Egypt.php index 884f85f..d69c939 100644 --- a/mpdf/collations/Arabic_Egypt.php +++ b/Mpdf/data/collations/Arabic_Egypt.php @@ -1,5 +1,5 @@ 8205, 1600 => 8205, 1611 => 8205, @@ -64,5 +64,4 @@ $collation = array ( 1572 => 1608, 1746 => 1610, 1574 => 1610, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Arabic_Iraq.php b/Mpdf/data/collations/Arabic_Iraq.php similarity index 97% rename from mpdf/collations/Arabic_Iraq.php rename to Mpdf/data/collations/Arabic_Iraq.php index 884f85f..d69c939 100644 --- a/mpdf/collations/Arabic_Iraq.php +++ b/Mpdf/data/collations/Arabic_Iraq.php @@ -1,5 +1,5 @@ 8205, 1600 => 8205, 1611 => 8205, @@ -64,5 +64,4 @@ $collation = array ( 1572 => 1608, 1746 => 1610, 1574 => 1610, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Arabic_Jordan.php b/Mpdf/data/collations/Arabic_Jordan.php similarity index 97% rename from mpdf/collations/Arabic_Jordan.php rename to Mpdf/data/collations/Arabic_Jordan.php index 884f85f..d69c939 100644 --- a/mpdf/collations/Arabic_Jordan.php +++ b/Mpdf/data/collations/Arabic_Jordan.php @@ -1,5 +1,5 @@ 8205, 1600 => 8205, 1611 => 8205, @@ -64,5 +64,4 @@ $collation = array ( 1572 => 1608, 1746 => 1610, 1574 => 1610, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Arabic_Kuwait.php b/Mpdf/data/collations/Arabic_Kuwait.php similarity index 97% rename from mpdf/collations/Arabic_Kuwait.php rename to Mpdf/data/collations/Arabic_Kuwait.php index 884f85f..d69c939 100644 --- a/mpdf/collations/Arabic_Kuwait.php +++ b/Mpdf/data/collations/Arabic_Kuwait.php @@ -1,5 +1,5 @@ 8205, 1600 => 8205, 1611 => 8205, @@ -64,5 +64,4 @@ $collation = array ( 1572 => 1608, 1746 => 1610, 1574 => 1610, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Arabic_Lebanon.php b/Mpdf/data/collations/Arabic_Lebanon.php similarity index 97% rename from mpdf/collations/Arabic_Lebanon.php rename to Mpdf/data/collations/Arabic_Lebanon.php index 884f85f..d69c939 100644 --- a/mpdf/collations/Arabic_Lebanon.php +++ b/Mpdf/data/collations/Arabic_Lebanon.php @@ -1,5 +1,5 @@ 8205, 1600 => 8205, 1611 => 8205, @@ -64,5 +64,4 @@ $collation = array ( 1572 => 1608, 1746 => 1610, 1574 => 1610, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Arabic_Libya.php b/Mpdf/data/collations/Arabic_Libya.php similarity index 97% rename from mpdf/collations/Arabic_Libya.php rename to Mpdf/data/collations/Arabic_Libya.php index 884f85f..d69c939 100644 --- a/mpdf/collations/Arabic_Libya.php +++ b/Mpdf/data/collations/Arabic_Libya.php @@ -1,5 +1,5 @@ 8205, 1600 => 8205, 1611 => 8205, @@ -64,5 +64,4 @@ $collation = array ( 1572 => 1608, 1746 => 1610, 1574 => 1610, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Arabic_Morocco.php b/Mpdf/data/collations/Arabic_Morocco.php similarity index 97% rename from mpdf/collations/Arabic_Morocco.php rename to Mpdf/data/collations/Arabic_Morocco.php index 884f85f..d69c939 100644 --- a/mpdf/collations/Arabic_Morocco.php +++ b/Mpdf/data/collations/Arabic_Morocco.php @@ -1,5 +1,5 @@ 8205, 1600 => 8205, 1611 => 8205, @@ -64,5 +64,4 @@ $collation = array ( 1572 => 1608, 1746 => 1610, 1574 => 1610, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Arabic_Oman.php b/Mpdf/data/collations/Arabic_Oman.php similarity index 97% rename from mpdf/collations/Arabic_Oman.php rename to Mpdf/data/collations/Arabic_Oman.php index 884f85f..d69c939 100644 --- a/mpdf/collations/Arabic_Oman.php +++ b/Mpdf/data/collations/Arabic_Oman.php @@ -1,5 +1,5 @@ 8205, 1600 => 8205, 1611 => 8205, @@ -64,5 +64,4 @@ $collation = array ( 1572 => 1608, 1746 => 1610, 1574 => 1610, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Arabic_Pseudo_RTL.php b/Mpdf/data/collations/Arabic_Pseudo_RTL.php similarity index 97% rename from mpdf/collations/Arabic_Pseudo_RTL.php rename to Mpdf/data/collations/Arabic_Pseudo_RTL.php index 884f85f..d69c939 100644 --- a/mpdf/collations/Arabic_Pseudo_RTL.php +++ b/Mpdf/data/collations/Arabic_Pseudo_RTL.php @@ -1,5 +1,5 @@ 8205, 1600 => 8205, 1611 => 8205, @@ -64,5 +64,4 @@ $collation = array ( 1572 => 1608, 1746 => 1610, 1574 => 1610, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Arabic_Qatar.php b/Mpdf/data/collations/Arabic_Qatar.php similarity index 97% rename from mpdf/collations/Arabic_Qatar.php rename to Mpdf/data/collations/Arabic_Qatar.php index 884f85f..d69c939 100644 --- a/mpdf/collations/Arabic_Qatar.php +++ b/Mpdf/data/collations/Arabic_Qatar.php @@ -1,5 +1,5 @@ 8205, 1600 => 8205, 1611 => 8205, @@ -64,5 +64,4 @@ $collation = array ( 1572 => 1608, 1746 => 1610, 1574 => 1610, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Arabic_Saudi_Arabia.php b/Mpdf/data/collations/Arabic_Saudi_Arabia.php similarity index 97% rename from mpdf/collations/Arabic_Saudi_Arabia.php rename to Mpdf/data/collations/Arabic_Saudi_Arabia.php index 884f85f..d69c939 100644 --- a/mpdf/collations/Arabic_Saudi_Arabia.php +++ b/Mpdf/data/collations/Arabic_Saudi_Arabia.php @@ -1,5 +1,5 @@ 8205, 1600 => 8205, 1611 => 8205, @@ -64,5 +64,4 @@ $collation = array ( 1572 => 1608, 1746 => 1610, 1574 => 1610, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Arabic_Syria.php b/Mpdf/data/collations/Arabic_Syria.php similarity index 97% rename from mpdf/collations/Arabic_Syria.php rename to Mpdf/data/collations/Arabic_Syria.php index 884f85f..d69c939 100644 --- a/mpdf/collations/Arabic_Syria.php +++ b/Mpdf/data/collations/Arabic_Syria.php @@ -1,5 +1,5 @@ 8205, 1600 => 8205, 1611 => 8205, @@ -64,5 +64,4 @@ $collation = array ( 1572 => 1608, 1746 => 1610, 1574 => 1610, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Arabic_Tunisia.php b/Mpdf/data/collations/Arabic_Tunisia.php similarity index 97% rename from mpdf/collations/Arabic_Tunisia.php rename to Mpdf/data/collations/Arabic_Tunisia.php index 884f85f..d69c939 100644 --- a/mpdf/collations/Arabic_Tunisia.php +++ b/Mpdf/data/collations/Arabic_Tunisia.php @@ -1,5 +1,5 @@ 8205, 1600 => 8205, 1611 => 8205, @@ -64,5 +64,4 @@ $collation = array ( 1572 => 1608, 1746 => 1610, 1574 => 1610, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Arabic_Yemen.php b/Mpdf/data/collations/Arabic_Yemen.php similarity index 97% rename from mpdf/collations/Arabic_Yemen.php rename to Mpdf/data/collations/Arabic_Yemen.php index 884f85f..d69c939 100644 --- a/mpdf/collations/Arabic_Yemen.php +++ b/Mpdf/data/collations/Arabic_Yemen.php @@ -1,5 +1,5 @@ 8205, 1600 => 8205, 1611 => 8205, @@ -64,5 +64,4 @@ $collation = array ( 1572 => 1608, 1746 => 1610, 1574 => 1610, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Azeri_(Cyrillic)_Azerbaijan.php b/Mpdf/data/collations/Azeri_(Cyrillic)_Azerbaijan.php similarity index 97% rename from mpdf/collations/Azeri_(Cyrillic)_Azerbaijan.php rename to Mpdf/data/collations/Azeri_(Cyrillic)_Azerbaijan.php index aa6893d..3fbd232 100644 --- a/mpdf/collations/Azeri_(Cyrillic)_Azerbaijan.php +++ b/Mpdf/data/collations/Azeri_(Cyrillic)_Azerbaijan.php @@ -1,5 +1,5 @@ 97, 66 => 98, 67 => 99, @@ -76,5 +76,4 @@ $collation = array ( 1069 => 1101, 1070 => 1102, 1071 => 1103, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Azeri_(Latin)_Azerbaijan.php b/Mpdf/data/collations/Azeri_(Latin)_Azerbaijan.php similarity index 98% rename from mpdf/collations/Azeri_(Latin)_Azerbaijan.php rename to Mpdf/data/collations/Azeri_(Latin)_Azerbaijan.php index 0c30b71..10cdfb9 100644 --- a/mpdf/collations/Azeri_(Latin)_Azerbaijan.php +++ b/Mpdf/data/collations/Azeri_(Latin)_Azerbaijan.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -94,5 +94,4 @@ $collation = array ( 255 => 121, 376 => 121, 90 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Bashkir_Russia.php b/Mpdf/data/collations/Bashkir_Russia.php similarity index 97% rename from mpdf/collations/Bashkir_Russia.php rename to Mpdf/data/collations/Bashkir_Russia.php index b6132bd..dd8bb03 100644 --- a/mpdf/collations/Bashkir_Russia.php +++ b/Mpdf/data/collations/Bashkir_Russia.php @@ -1,5 +1,5 @@ 97, 66 => 98, 67 => 99, @@ -76,5 +76,4 @@ $collation = array ( 1069 => 1101, 1070 => 1102, 1071 => 1103, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Basque_Spain.php b/Mpdf/data/collations/Basque_Spain.php similarity index 98% rename from mpdf/collations/Basque_Spain.php rename to Mpdf/data/collations/Basque_Spain.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/Basque_Spain.php +++ b/Mpdf/data/collations/Basque_Spain.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Belarusian_Belarus.php b/Mpdf/data/collations/Belarusian_Belarus.php similarity index 97% rename from mpdf/collations/Belarusian_Belarus.php rename to Mpdf/data/collations/Belarusian_Belarus.php index b6132bd..dd8bb03 100644 --- a/mpdf/collations/Belarusian_Belarus.php +++ b/Mpdf/data/collations/Belarusian_Belarus.php @@ -1,5 +1,5 @@ 97, 66 => 98, 67 => 99, @@ -76,5 +76,4 @@ $collation = array ( 1069 => 1101, 1070 => 1102, 1071 => 1103, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Bosnian_(Cyrillic)_Bosnia_and_Herzegovina.php b/Mpdf/data/collations/Bosnian_(Cyrillic)_Bosnia_and_Herzegovina.php similarity index 97% rename from mpdf/collations/Bosnian_(Cyrillic)_Bosnia_and_Herzegovina.php rename to Mpdf/data/collations/Bosnian_(Cyrillic)_Bosnia_and_Herzegovina.php index b6132bd..dd8bb03 100644 --- a/mpdf/collations/Bosnian_(Cyrillic)_Bosnia_and_Herzegovina.php +++ b/Mpdf/data/collations/Bosnian_(Cyrillic)_Bosnia_and_Herzegovina.php @@ -1,5 +1,5 @@ 97, 66 => 98, 67 => 99, @@ -76,5 +76,4 @@ $collation = array ( 1069 => 1101, 1070 => 1102, 1071 => 1103, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Bosnian_(Latin)_Bosnia_and_Herzegovina.php b/Mpdf/data/collations/Bosnian_(Latin)_Bosnia_and_Herzegovina.php similarity index 98% rename from mpdf/collations/Bosnian_(Latin)_Bosnia_and_Herzegovina.php rename to Mpdf/data/collations/Bosnian_(Latin)_Bosnia_and_Herzegovina.php index fa35c1d..7f73d4d 100644 --- a/mpdf/collations/Bosnian_(Latin)_Bosnia_and_Herzegovina.php +++ b/Mpdf/data/collations/Bosnian_(Latin)_Bosnia_and_Herzegovina.php @@ -1,5 +1,5 @@ 711, 65 => 97, 259 => 97, @@ -103,5 +103,4 @@ $collation = array ( 380 => 122, 379 => 122, 381 => 382, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Breton_France.php b/Mpdf/data/collations/Breton_France.php similarity index 98% rename from mpdf/collations/Breton_France.php rename to Mpdf/data/collations/Breton_France.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/Breton_France.php +++ b/Mpdf/data/collations/Breton_France.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Bulgarian_Bulgaria.php b/Mpdf/data/collations/Bulgarian_Bulgaria.php similarity index 97% rename from mpdf/collations/Bulgarian_Bulgaria.php rename to Mpdf/data/collations/Bulgarian_Bulgaria.php index b6132bd..dd8bb03 100644 --- a/mpdf/collations/Bulgarian_Bulgaria.php +++ b/Mpdf/data/collations/Bulgarian_Bulgaria.php @@ -1,5 +1,5 @@ 97, 66 => 98, 67 => 99, @@ -76,5 +76,4 @@ $collation = array ( 1069 => 1101, 1070 => 1102, 1071 => 1103, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Catalan_Spain.php b/Mpdf/data/collations/Catalan_Spain.php similarity index 98% rename from mpdf/collations/Catalan_Spain.php rename to Mpdf/data/collations/Catalan_Spain.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/Catalan_Spain.php +++ b/Mpdf/data/collations/Catalan_Spain.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Corsican_France.php b/Mpdf/data/collations/Corsican_France.php similarity index 98% rename from mpdf/collations/Corsican_France.php rename to Mpdf/data/collations/Corsican_France.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/Corsican_France.php +++ b/Mpdf/data/collations/Corsican_France.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Croatian_(Latin)_Bosnia_and_Herzegovina.php b/Mpdf/data/collations/Croatian_(Latin)_Bosnia_and_Herzegovina.php similarity index 98% rename from mpdf/collations/Croatian_(Latin)_Bosnia_and_Herzegovina.php rename to Mpdf/data/collations/Croatian_(Latin)_Bosnia_and_Herzegovina.php index fa35c1d..7f73d4d 100644 --- a/mpdf/collations/Croatian_(Latin)_Bosnia_and_Herzegovina.php +++ b/Mpdf/data/collations/Croatian_(Latin)_Bosnia_and_Herzegovina.php @@ -1,5 +1,5 @@ 711, 65 => 97, 259 => 97, @@ -103,5 +103,4 @@ $collation = array ( 380 => 122, 379 => 122, 381 => 382, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Croatian_Croatia.php b/Mpdf/data/collations/Croatian_Croatia.php similarity index 98% rename from mpdf/collations/Croatian_Croatia.php rename to Mpdf/data/collations/Croatian_Croatia.php index fa35c1d..7f73d4d 100644 --- a/mpdf/collations/Croatian_Croatia.php +++ b/Mpdf/data/collations/Croatian_Croatia.php @@ -1,5 +1,5 @@ 711, 65 => 97, 259 => 97, @@ -103,5 +103,4 @@ $collation = array ( 380 => 122, 379 => 122, 381 => 382, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Czech_Czech_Republic.php b/Mpdf/data/collations/Czech_Czech_Republic.php similarity index 98% rename from mpdf/collations/Czech_Czech_Republic.php rename to Mpdf/data/collations/Czech_Czech_Republic.php index 4969d4f..6875994 100644 --- a/mpdf/collations/Czech_Czech_Republic.php +++ b/Mpdf/data/collations/Czech_Czech_Republic.php @@ -1,5 +1,5 @@ 711, 65 => 97, 228 => 97, @@ -104,5 +104,4 @@ $collation = array ( 378 => 122, 377 => 122, 381 => 382, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Danish_Denmark.php b/Mpdf/data/collations/Danish_Denmark.php similarity index 98% rename from mpdf/collations/Danish_Denmark.php rename to Mpdf/data/collations/Danish_Denmark.php index ebedd7b..bd4b21f 100644 --- a/mpdf/collations/Danish_Denmark.php +++ b/Mpdf/data/collations/Danish_Denmark.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -98,5 +98,4 @@ $collation = array ( 246 => 248, 214 => 248, 197 => 229, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Dari_Afghanistan.php b/Mpdf/data/collations/Dari_Afghanistan.php similarity index 97% rename from mpdf/collations/Dari_Afghanistan.php rename to Mpdf/data/collations/Dari_Afghanistan.php index 752e6d0..42aa12e 100644 --- a/mpdf/collations/Dari_Afghanistan.php +++ b/Mpdf/data/collations/Dari_Afghanistan.php @@ -1,5 +1,5 @@ 8205, 1600 => 8205, 1611 => 8205, @@ -61,5 +61,4 @@ $collation = array ( 1726 => 1729, 1572 => 1608, 1574 => 1746, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Dutch_Belgium.php b/Mpdf/data/collations/Dutch_Belgium.php similarity index 98% rename from mpdf/collations/Dutch_Belgium.php rename to Mpdf/data/collations/Dutch_Belgium.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/Dutch_Belgium.php +++ b/Mpdf/data/collations/Dutch_Belgium.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Dutch_Netherlands.php b/Mpdf/data/collations/Dutch_Netherlands.php similarity index 98% rename from mpdf/collations/Dutch_Netherlands.php rename to Mpdf/data/collations/Dutch_Netherlands.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/Dutch_Netherlands.php +++ b/Mpdf/data/collations/Dutch_Netherlands.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/English_Australia.php b/Mpdf/data/collations/English_Australia.php similarity index 98% rename from mpdf/collations/English_Australia.php rename to Mpdf/data/collations/English_Australia.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/English_Australia.php +++ b/Mpdf/data/collations/English_Australia.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/English_Belize.php b/Mpdf/data/collations/English_Belize.php similarity index 98% rename from mpdf/collations/English_Belize.php rename to Mpdf/data/collations/English_Belize.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/English_Belize.php +++ b/Mpdf/data/collations/English_Belize.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/English_Canada.php b/Mpdf/data/collations/English_Canada.php similarity index 98% rename from mpdf/collations/English_Canada.php rename to Mpdf/data/collations/English_Canada.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/English_Canada.php +++ b/Mpdf/data/collations/English_Canada.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/English_Caribbean.php b/Mpdf/data/collations/English_Caribbean.php similarity index 98% rename from mpdf/collations/English_Caribbean.php rename to Mpdf/data/collations/English_Caribbean.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/English_Caribbean.php +++ b/Mpdf/data/collations/English_Caribbean.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/English_India.php b/Mpdf/data/collations/English_India.php similarity index 98% rename from mpdf/collations/English_India.php rename to Mpdf/data/collations/English_India.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/English_India.php +++ b/Mpdf/data/collations/English_India.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/English_Ireland.php b/Mpdf/data/collations/English_Ireland.php similarity index 98% rename from mpdf/collations/English_Ireland.php rename to Mpdf/data/collations/English_Ireland.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/English_Ireland.php +++ b/Mpdf/data/collations/English_Ireland.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/English_Jamaica.php b/Mpdf/data/collations/English_Jamaica.php similarity index 98% rename from mpdf/collations/English_Jamaica.php rename to Mpdf/data/collations/English_Jamaica.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/English_Jamaica.php +++ b/Mpdf/data/collations/English_Jamaica.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/English_Malaysia.php b/Mpdf/data/collations/English_Malaysia.php similarity index 98% rename from mpdf/collations/English_Malaysia.php rename to Mpdf/data/collations/English_Malaysia.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/English_Malaysia.php +++ b/Mpdf/data/collations/English_Malaysia.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/English_New_Zealand.php b/Mpdf/data/collations/English_New_Zealand.php similarity index 98% rename from mpdf/collations/English_New_Zealand.php rename to Mpdf/data/collations/English_New_Zealand.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/English_New_Zealand.php +++ b/Mpdf/data/collations/English_New_Zealand.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/English_Republic_of_the_Philippines.php b/Mpdf/data/collations/English_Republic_of_the_Philippines.php similarity index 98% rename from mpdf/collations/English_Republic_of_the_Philippines.php rename to Mpdf/data/collations/English_Republic_of_the_Philippines.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/English_Republic_of_the_Philippines.php +++ b/Mpdf/data/collations/English_Republic_of_the_Philippines.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/English_Singapore.php b/Mpdf/data/collations/English_Singapore.php similarity index 98% rename from mpdf/collations/English_Singapore.php rename to Mpdf/data/collations/English_Singapore.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/English_Singapore.php +++ b/Mpdf/data/collations/English_Singapore.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/English_South_Africa.php b/Mpdf/data/collations/English_South_Africa.php similarity index 98% rename from mpdf/collations/English_South_Africa.php rename to Mpdf/data/collations/English_South_Africa.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/English_South_Africa.php +++ b/Mpdf/data/collations/English_South_Africa.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/English_Trinidad_and_Tobago.php b/Mpdf/data/collations/English_Trinidad_and_Tobago.php similarity index 98% rename from mpdf/collations/English_Trinidad_and_Tobago.php rename to Mpdf/data/collations/English_Trinidad_and_Tobago.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/English_Trinidad_and_Tobago.php +++ b/Mpdf/data/collations/English_Trinidad_and_Tobago.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/English_United_Kingdom.php b/Mpdf/data/collations/English_United_Kingdom.php similarity index 98% rename from mpdf/collations/English_United_Kingdom.php rename to Mpdf/data/collations/English_United_Kingdom.php index 29a9b17..e228dff 100644 --- a/mpdf/collations/English_United_Kingdom.php +++ b/Mpdf/data/collations/English_United_Kingdom.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -100,5 +100,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/English_United_States.php b/Mpdf/data/collations/English_United_States.php similarity index 98% rename from mpdf/collations/English_United_States.php rename to Mpdf/data/collations/English_United_States.php index 29a9b17..e228dff 100644 --- a/mpdf/collations/English_United_States.php +++ b/Mpdf/data/collations/English_United_States.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -100,5 +100,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/English_Zimbabwe.php b/Mpdf/data/collations/English_Zimbabwe.php similarity index 98% rename from mpdf/collations/English_Zimbabwe.php rename to Mpdf/data/collations/English_Zimbabwe.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/English_Zimbabwe.php +++ b/Mpdf/data/collations/English_Zimbabwe.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Estonian_Estonia.php b/Mpdf/data/collations/Estonian_Estonia.php similarity index 97% rename from mpdf/collations/Estonian_Estonia.php rename to Mpdf/data/collations/Estonian_Estonia.php index dda62d7..c132b1a 100644 --- a/mpdf/collations/Estonian_Estonia.php +++ b/Mpdf/data/collations/Estonian_Estonia.php @@ -1,5 +1,5 @@ 188, 190 => 179, 65 => 97, @@ -90,5 +90,4 @@ $collation = array ( 220 => 252, 88 => 120, 89 => 121, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Faroese_Faroe_Islands.php b/Mpdf/data/collations/Faroese_Faroe_Islands.php similarity index 98% rename from mpdf/collations/Faroese_Faroe_Islands.php rename to Mpdf/data/collations/Faroese_Faroe_Islands.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/Faroese_Faroe_Islands.php +++ b/Mpdf/data/collations/Faroese_Faroe_Islands.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Filipino_Philippines.php b/Mpdf/data/collations/Filipino_Philippines.php similarity index 98% rename from mpdf/collations/Filipino_Philippines.php rename to Mpdf/data/collations/Filipino_Philippines.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/Filipino_Philippines.php +++ b/Mpdf/data/collations/Filipino_Philippines.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Finnish_Finland.php b/Mpdf/data/collations/Finnish_Finland.php similarity index 98% rename from mpdf/collations/Finnish_Finland.php rename to Mpdf/data/collations/Finnish_Finland.php index bc0f5b2..ecbc242 100644 --- a/mpdf/collations/Finnish_Finland.php +++ b/Mpdf/data/collations/Finnish_Finland.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -99,5 +99,4 @@ $collation = array ( 214 => 246, 248 => 246, 216 => 246, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/French_Belgium.php b/Mpdf/data/collations/French_Belgium.php similarity index 98% rename from mpdf/collations/French_Belgium.php rename to Mpdf/data/collations/French_Belgium.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/French_Belgium.php +++ b/Mpdf/data/collations/French_Belgium.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/French_Canada.php b/Mpdf/data/collations/French_Canada.php similarity index 98% rename from mpdf/collations/French_Canada.php rename to Mpdf/data/collations/French_Canada.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/French_Canada.php +++ b/Mpdf/data/collations/French_Canada.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/French_France.php b/Mpdf/data/collations/French_France.php similarity index 98% rename from mpdf/collations/French_France.php rename to Mpdf/data/collations/French_France.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/French_France.php +++ b/Mpdf/data/collations/French_France.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/French_Luxembourg.php b/Mpdf/data/collations/French_Luxembourg.php similarity index 98% rename from mpdf/collations/French_Luxembourg.php rename to Mpdf/data/collations/French_Luxembourg.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/French_Luxembourg.php +++ b/Mpdf/data/collations/French_Luxembourg.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/French_Principality_of_Monaco.php b/Mpdf/data/collations/French_Principality_of_Monaco.php similarity index 98% rename from mpdf/collations/French_Principality_of_Monaco.php rename to Mpdf/data/collations/French_Principality_of_Monaco.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/French_Principality_of_Monaco.php +++ b/Mpdf/data/collations/French_Principality_of_Monaco.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/French_Switzerland.php b/Mpdf/data/collations/French_Switzerland.php similarity index 98% rename from mpdf/collations/French_Switzerland.php rename to Mpdf/data/collations/French_Switzerland.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/French_Switzerland.php +++ b/Mpdf/data/collations/French_Switzerland.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Frisian_Netherlands.php b/Mpdf/data/collations/Frisian_Netherlands.php similarity index 98% rename from mpdf/collations/Frisian_Netherlands.php rename to Mpdf/data/collations/Frisian_Netherlands.php index 72944b8..71e5c33 100644 --- a/mpdf/collations/Frisian_Netherlands.php +++ b/Mpdf/data/collations/Frisian_Netherlands.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Galician_Spain.php b/Mpdf/data/collations/Galician_Spain.php similarity index 98% rename from mpdf/collations/Galician_Spain.php rename to Mpdf/data/collations/Galician_Spain.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/Galician_Spain.php +++ b/Mpdf/data/collations/Galician_Spain.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/German_Austria.php b/Mpdf/data/collations/German_Austria.php similarity index 98% rename from mpdf/collations/German_Austria.php rename to Mpdf/data/collations/German_Austria.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/German_Austria.php +++ b/Mpdf/data/collations/German_Austria.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/German_Germany.php b/Mpdf/data/collations/German_Germany.php similarity index 98% rename from mpdf/collations/German_Germany.php rename to Mpdf/data/collations/German_Germany.php index e976a01..9e90887 100644 --- a/mpdf/collations/German_Germany.php +++ b/Mpdf/data/collations/German_Germany.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/German_Liechtenstein.php b/Mpdf/data/collations/German_Liechtenstein.php similarity index 98% rename from mpdf/collations/German_Liechtenstein.php rename to Mpdf/data/collations/German_Liechtenstein.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/German_Liechtenstein.php +++ b/Mpdf/data/collations/German_Liechtenstein.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/German_Luxembourg.php b/Mpdf/data/collations/German_Luxembourg.php similarity index 98% rename from mpdf/collations/German_Luxembourg.php rename to Mpdf/data/collations/German_Luxembourg.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/German_Luxembourg.php +++ b/Mpdf/data/collations/German_Luxembourg.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/German_Switzerland.php b/Mpdf/data/collations/German_Switzerland.php similarity index 98% rename from mpdf/collations/German_Switzerland.php rename to Mpdf/data/collations/German_Switzerland.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/German_Switzerland.php +++ b/Mpdf/data/collations/German_Switzerland.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Greek_Greece.php b/Mpdf/data/collations/Greek_Greece.php similarity index 97% rename from mpdf/collations/Greek_Greece.php rename to Mpdf/data/collations/Greek_Greece.php index a373578..03a07cb 100644 --- a/mpdf/collations/Greek_Greece.php +++ b/Mpdf/data/collations/Greek_Greece.php @@ -1,5 +1,5 @@ 97, 66 => 98, 67 => 99, @@ -71,5 +71,4 @@ $collation = array ( 937 => 969, 974 => 969, 911 => 969, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Greenlandic_Greenland.php b/Mpdf/data/collations/Greenlandic_Greenland.php similarity index 98% rename from mpdf/collations/Greenlandic_Greenland.php rename to Mpdf/data/collations/Greenlandic_Greenland.php index ebedd7b..bd4b21f 100644 --- a/mpdf/collations/Greenlandic_Greenland.php +++ b/Mpdf/data/collations/Greenlandic_Greenland.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -98,5 +98,4 @@ $collation = array ( 246 => 248, 214 => 248, 197 => 229, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Hausa_(Latin)_Nigeria.php b/Mpdf/data/collations/Hausa_(Latin)_Nigeria.php similarity index 98% rename from mpdf/collations/Hausa_(Latin)_Nigeria.php rename to Mpdf/data/collations/Hausa_(Latin)_Nigeria.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/Hausa_(Latin)_Nigeria.php +++ b/Mpdf/data/collations/Hausa_(Latin)_Nigeria.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Hebrew_Israel.php b/Mpdf/data/collations/Hebrew_Israel.php similarity index 96% rename from mpdf/collations/Hebrew_Israel.php rename to Mpdf/data/collations/Hebrew_Israel.php index 4325095..24b5446 100644 --- a/mpdf/collations/Hebrew_Israel.php +++ b/Mpdf/data/collations/Hebrew_Israel.php @@ -1,5 +1,5 @@ 173, 1457 => 173, 1458 => 173, @@ -56,5 +56,4 @@ $collation = array ( 1504 => 1503, 1508 => 1507, 1510 => 1509, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Hungarian_Hungary.php b/Mpdf/data/collations/Hungarian_Hungary.php similarity index 97% rename from mpdf/collations/Hungarian_Hungary.php rename to Mpdf/data/collations/Hungarian_Hungary.php index 08ff4f8..c97bb73 100644 --- a/mpdf/collations/Hungarian_Hungary.php +++ b/Mpdf/data/collations/Hungarian_Hungary.php @@ -1,5 +1,5 @@ 711, 97 => 65, 225 => 193, @@ -67,5 +67,4 @@ $collation = array ( 378 => 377, 380 => 379, 382 => 381, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Icelandic_Iceland.php b/Mpdf/data/collations/Icelandic_Iceland.php similarity index 97% rename from mpdf/collations/Icelandic_Iceland.php rename to Mpdf/data/collations/Icelandic_Iceland.php index 12985b9..8d635bc 100644 --- a/mpdf/collations/Icelandic_Iceland.php +++ b/Mpdf/data/collations/Icelandic_Iceland.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -91,5 +91,4 @@ $collation = array ( 214 => 246, 248 => 246, 216 => 246, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Igbo_Nigeria.php b/Mpdf/data/collations/Igbo_Nigeria.php similarity index 98% rename from mpdf/collations/Igbo_Nigeria.php rename to Mpdf/data/collations/Igbo_Nigeria.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/Igbo_Nigeria.php +++ b/Mpdf/data/collations/Igbo_Nigeria.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Indonesian_Indonesia.php b/Mpdf/data/collations/Indonesian_Indonesia.php similarity index 98% rename from mpdf/collations/Indonesian_Indonesia.php rename to Mpdf/data/collations/Indonesian_Indonesia.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/Indonesian_Indonesia.php +++ b/Mpdf/data/collations/Indonesian_Indonesia.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Inuktitut_(Latin)_Canada.php b/Mpdf/data/collations/Inuktitut_(Latin)_Canada.php similarity index 98% rename from mpdf/collations/Inuktitut_(Latin)_Canada.php rename to Mpdf/data/collations/Inuktitut_(Latin)_Canada.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/Inuktitut_(Latin)_Canada.php +++ b/Mpdf/data/collations/Inuktitut_(Latin)_Canada.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Invariant_Language_Invariant_Country.php b/Mpdf/data/collations/Invariant_Language_Invariant_Country.php similarity index 98% rename from mpdf/collations/Invariant_Language_Invariant_Country.php rename to Mpdf/data/collations/Invariant_Language_Invariant_Country.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/Invariant_Language_Invariant_Country.php +++ b/Mpdf/data/collations/Invariant_Language_Invariant_Country.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Irish_Ireland.php b/Mpdf/data/collations/Irish_Ireland.php similarity index 98% rename from mpdf/collations/Irish_Ireland.php rename to Mpdf/data/collations/Irish_Ireland.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/Irish_Ireland.php +++ b/Mpdf/data/collations/Irish_Ireland.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Italian_Italy.php b/Mpdf/data/collations/Italian_Italy.php similarity index 98% rename from mpdf/collations/Italian_Italy.php rename to Mpdf/data/collations/Italian_Italy.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/Italian_Italy.php +++ b/Mpdf/data/collations/Italian_Italy.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Italian_Switzerland.php b/Mpdf/data/collations/Italian_Switzerland.php similarity index 98% rename from mpdf/collations/Italian_Switzerland.php rename to Mpdf/data/collations/Italian_Switzerland.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/Italian_Switzerland.php +++ b/Mpdf/data/collations/Italian_Switzerland.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Kinyarwanda_Rwanda.php b/Mpdf/data/collations/Kinyarwanda_Rwanda.php similarity index 98% rename from mpdf/collations/Kinyarwanda_Rwanda.php rename to Mpdf/data/collations/Kinyarwanda_Rwanda.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/Kinyarwanda_Rwanda.php +++ b/Mpdf/data/collations/Kinyarwanda_Rwanda.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Kiswahili_Kenya.php b/Mpdf/data/collations/Kiswahili_Kenya.php similarity index 98% rename from mpdf/collations/Kiswahili_Kenya.php rename to Mpdf/data/collations/Kiswahili_Kenya.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/Kiswahili_Kenya.php +++ b/Mpdf/data/collations/Kiswahili_Kenya.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Kyrgyz_Kyrgyzstan.php b/Mpdf/data/collations/Kyrgyz_Kyrgyzstan.php similarity index 97% rename from mpdf/collations/Kyrgyz_Kyrgyzstan.php rename to Mpdf/data/collations/Kyrgyz_Kyrgyzstan.php index b6132bd..dd8bb03 100644 --- a/mpdf/collations/Kyrgyz_Kyrgyzstan.php +++ b/Mpdf/data/collations/Kyrgyz_Kyrgyzstan.php @@ -1,5 +1,5 @@ 97, 66 => 98, 67 => 99, @@ -76,5 +76,4 @@ $collation = array ( 1069 => 1101, 1070 => 1102, 1071 => 1103, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Latvian_Latvia.php b/Mpdf/data/collations/Latvian_Latvia.php similarity index 97% rename from mpdf/collations/Latvian_Latvia.php rename to Mpdf/data/collations/Latvian_Latvia.php index 05d9697..b0b5d00 100644 --- a/mpdf/collations/Latvian_Latvia.php +++ b/Mpdf/data/collations/Latvian_Latvia.php @@ -1,5 +1,5 @@ 188, 190 => 179, 65 => 97, @@ -84,5 +84,4 @@ $collation = array ( 380 => 122, 379 => 122, 381 => 382, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Lithuanian_Lithuania.php b/Mpdf/data/collations/Lithuanian_Lithuania.php similarity index 97% rename from mpdf/collations/Lithuanian_Lithuania.php rename to Mpdf/data/collations/Lithuanian_Lithuania.php index 47bd372..efbdf0c 100644 --- a/mpdf/collations/Lithuanian_Lithuania.php +++ b/Mpdf/data/collations/Lithuanian_Lithuania.php @@ -1,5 +1,5 @@ 188, 190 => 179, 65 => 97, @@ -88,5 +88,4 @@ $collation = array ( 380 => 122, 379 => 122, 381 => 382, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Lower_Sorbian_Germany.php b/Mpdf/data/collations/Lower_Sorbian_Germany.php similarity index 98% rename from mpdf/collations/Lower_Sorbian_Germany.php rename to Mpdf/data/collations/Lower_Sorbian_Germany.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/Lower_Sorbian_Germany.php +++ b/Mpdf/data/collations/Lower_Sorbian_Germany.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Luxembourgish_Luxembourg.php b/Mpdf/data/collations/Luxembourgish_Luxembourg.php similarity index 98% rename from mpdf/collations/Luxembourgish_Luxembourg.php rename to Mpdf/data/collations/Luxembourgish_Luxembourg.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/Luxembourgish_Luxembourg.php +++ b/Mpdf/data/collations/Luxembourgish_Luxembourg.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Macedonian_(FYROM)_Macedonia_(FYROM).php b/Mpdf/data/collations/Macedonian_(FYROM)_Macedonia_(FYROM).php similarity index 97% rename from mpdf/collations/Macedonian_(FYROM)_Macedonia_(FYROM).php rename to Mpdf/data/collations/Macedonian_(FYROM)_Macedonia_(FYROM).php index 29dde0a..a4f2188 100644 --- a/mpdf/collations/Macedonian_(FYROM)_Macedonia_(FYROM).php +++ b/Mpdf/data/collations/Macedonian_(FYROM)_Macedonia_(FYROM).php @@ -1,5 +1,5 @@ 97, 66 => 98, 67 => 99, @@ -75,5 +75,4 @@ $collation = array ( 1069 => 1101, 1070 => 1102, 1071 => 1103, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Malay_Brunei_Darussalam.php b/Mpdf/data/collations/Malay_Brunei_Darussalam.php similarity index 98% rename from mpdf/collations/Malay_Brunei_Darussalam.php rename to Mpdf/data/collations/Malay_Brunei_Darussalam.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/Malay_Brunei_Darussalam.php +++ b/Mpdf/data/collations/Malay_Brunei_Darussalam.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Malay_Malaysia.php b/Mpdf/data/collations/Malay_Malaysia.php similarity index 98% rename from mpdf/collations/Malay_Malaysia.php rename to Mpdf/data/collations/Malay_Malaysia.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/Malay_Malaysia.php +++ b/Mpdf/data/collations/Malay_Malaysia.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Mapudungun_Chile.php b/Mpdf/data/collations/Mapudungun_Chile.php similarity index 98% rename from mpdf/collations/Mapudungun_Chile.php rename to Mpdf/data/collations/Mapudungun_Chile.php index afb4603..d4a4c1c 100644 --- a/mpdf/collations/Mapudungun_Chile.php +++ b/Mpdf/data/collations/Mapudungun_Chile.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -99,5 +99,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Mohawk_Canada.php b/Mpdf/data/collations/Mohawk_Canada.php similarity index 98% rename from mpdf/collations/Mohawk_Canada.php rename to Mpdf/data/collations/Mohawk_Canada.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/Mohawk_Canada.php +++ b/Mpdf/data/collations/Mohawk_Canada.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Mongolian_(Cyrillic)_Mongolia.php b/Mpdf/data/collations/Mongolian_(Cyrillic)_Mongolia.php similarity index 97% rename from mpdf/collations/Mongolian_(Cyrillic)_Mongolia.php rename to Mpdf/data/collations/Mongolian_(Cyrillic)_Mongolia.php index b6132bd..dd8bb03 100644 --- a/mpdf/collations/Mongolian_(Cyrillic)_Mongolia.php +++ b/Mpdf/data/collations/Mongolian_(Cyrillic)_Mongolia.php @@ -1,5 +1,5 @@ 97, 66 => 98, 67 => 99, @@ -76,5 +76,4 @@ $collation = array ( 1069 => 1101, 1070 => 1102, 1071 => 1103, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Norwegian_(Nynorsk)_Norway.php b/Mpdf/data/collations/Norwegian_(Nynorsk)_Norway.php similarity index 98% rename from mpdf/collations/Norwegian_(Nynorsk)_Norway.php rename to Mpdf/data/collations/Norwegian_(Nynorsk)_Norway.php index ebedd7b..bd4b21f 100644 --- a/mpdf/collations/Norwegian_(Nynorsk)_Norway.php +++ b/Mpdf/data/collations/Norwegian_(Nynorsk)_Norway.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -98,5 +98,4 @@ $collation = array ( 246 => 248, 214 => 248, 197 => 229, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Occitan_France.php b/Mpdf/data/collations/Occitan_France.php similarity index 98% rename from mpdf/collations/Occitan_France.php rename to Mpdf/data/collations/Occitan_France.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/Occitan_France.php +++ b/Mpdf/data/collations/Occitan_France.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Persian_Iran.php b/Mpdf/data/collations/Persian_Iran.php similarity index 97% rename from mpdf/collations/Persian_Iran.php rename to Mpdf/data/collations/Persian_Iran.php index 720c0b4..b56902d 100644 --- a/mpdf/collations/Persian_Iran.php +++ b/Mpdf/data/collations/Persian_Iran.php @@ -1,5 +1,5 @@ 8205, 1600 => 8205, 1611 => 8205, @@ -62,5 +62,4 @@ $collation = array ( 1726 => 1607, 1746 => 1610, 1574 => 1610, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Polish_Poland.php b/Mpdf/data/collations/Polish_Poland.php similarity index 98% rename from mpdf/collations/Polish_Poland.php rename to Mpdf/data/collations/Polish_Poland.php index 5d9a19f..3297077 100644 --- a/mpdf/collations/Polish_Poland.php +++ b/Mpdf/data/collations/Polish_Poland.php @@ -1,5 +1,5 @@ 711, 65 => 97, 225 => 97, @@ -99,5 +99,4 @@ $collation = array ( 381 => 122, 377 => 378, 379 => 380, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Portuguese_Brazil.php b/Mpdf/data/collations/Portuguese_Brazil.php similarity index 98% rename from mpdf/collations/Portuguese_Brazil.php rename to Mpdf/data/collations/Portuguese_Brazil.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/Portuguese_Brazil.php +++ b/Mpdf/data/collations/Portuguese_Brazil.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Portuguese_Portugal.php b/Mpdf/data/collations/Portuguese_Portugal.php similarity index 98% rename from mpdf/collations/Portuguese_Portugal.php rename to Mpdf/data/collations/Portuguese_Portugal.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/Portuguese_Portugal.php +++ b/Mpdf/data/collations/Portuguese_Portugal.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Quechua_Bolivia.php b/Mpdf/data/collations/Quechua_Bolivia.php similarity index 98% rename from mpdf/collations/Quechua_Bolivia.php rename to Mpdf/data/collations/Quechua_Bolivia.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/Quechua_Bolivia.php +++ b/Mpdf/data/collations/Quechua_Bolivia.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Quechua_Ecuador.php b/Mpdf/data/collations/Quechua_Ecuador.php similarity index 98% rename from mpdf/collations/Quechua_Ecuador.php rename to Mpdf/data/collations/Quechua_Ecuador.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/Quechua_Ecuador.php +++ b/Mpdf/data/collations/Quechua_Ecuador.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Quechua_Peru.php b/Mpdf/data/collations/Quechua_Peru.php similarity index 98% rename from mpdf/collations/Quechua_Peru.php rename to Mpdf/data/collations/Quechua_Peru.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/Quechua_Peru.php +++ b/Mpdf/data/collations/Quechua_Peru.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Romanian_Romania.php b/Mpdf/data/collations/Romanian_Romania.php similarity index 98% rename from mpdf/collations/Romanian_Romania.php rename to Mpdf/data/collations/Romanian_Romania.php index 76435d9..113d087 100644 --- a/mpdf/collations/Romanian_Romania.php +++ b/Mpdf/data/collations/Romanian_Romania.php @@ -1,5 +1,5 @@ 711, 65 => 97, 225 => 97, @@ -104,5 +104,4 @@ $collation = array ( 379 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Romansh_Switzerland.php b/Mpdf/data/collations/Romansh_Switzerland.php similarity index 97% rename from mpdf/collations/Romansh_Switzerland.php rename to Mpdf/data/collations/Romansh_Switzerland.php index 279ccd6..9412735 100644 --- a/mpdf/collations/Romansh_Switzerland.php +++ b/Mpdf/data/collations/Romansh_Switzerland.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -83,5 +83,4 @@ $collation = array ( 196 => 228, 214 => 246, 220 => 252, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Russian_Russia.php b/Mpdf/data/collations/Russian_Russia.php similarity index 97% rename from mpdf/collations/Russian_Russia.php rename to Mpdf/data/collations/Russian_Russia.php index b6132bd..dd8bb03 100644 --- a/mpdf/collations/Russian_Russia.php +++ b/Mpdf/data/collations/Russian_Russia.php @@ -1,5 +1,5 @@ 97, 66 => 98, 67 => 99, @@ -76,5 +76,4 @@ $collation = array ( 1069 => 1101, 1070 => 1102, 1071 => 1103, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Sami_(Inari)_Finland.php b/Mpdf/data/collations/Sami_(Inari)_Finland.php similarity index 97% rename from mpdf/collations/Sami_(Inari)_Finland.php rename to Mpdf/data/collations/Sami_(Inari)_Finland.php index fd63c3b..142888c 100644 --- a/mpdf/collations/Sami_(Inari)_Finland.php +++ b/Mpdf/data/collations/Sami_(Inari)_Finland.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -91,5 +91,4 @@ $collation = array ( 197 => 229, 196 => 228, 214 => 246, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Sami_(Lule)_Norway.php b/Mpdf/data/collations/Sami_(Lule)_Norway.php similarity index 97% rename from mpdf/collations/Sami_(Lule)_Norway.php rename to Mpdf/data/collations/Sami_(Lule)_Norway.php index 07d3ba1..e834386 100644 --- a/mpdf/collations/Sami_(Lule)_Norway.php +++ b/Mpdf/data/collations/Sami_(Lule)_Norway.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -91,5 +91,4 @@ $collation = array ( 216 => 248, 214 => 246, 197 => 229, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Sami_(Lule)_Sweden.php b/Mpdf/data/collations/Sami_(Lule)_Sweden.php similarity index 97% rename from mpdf/collations/Sami_(Lule)_Sweden.php rename to Mpdf/data/collations/Sami_(Lule)_Sweden.php index fd63c3b..142888c 100644 --- a/mpdf/collations/Sami_(Lule)_Sweden.php +++ b/Mpdf/data/collations/Sami_(Lule)_Sweden.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -91,5 +91,4 @@ $collation = array ( 197 => 229, 196 => 228, 214 => 246, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Sami_(Northern)_Finland.php b/Mpdf/data/collations/Sami_(Northern)_Finland.php similarity index 97% rename from mpdf/collations/Sami_(Northern)_Finland.php rename to Mpdf/data/collations/Sami_(Northern)_Finland.php index fd63c3b..142888c 100644 --- a/mpdf/collations/Sami_(Northern)_Finland.php +++ b/Mpdf/data/collations/Sami_(Northern)_Finland.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -91,5 +91,4 @@ $collation = array ( 197 => 229, 196 => 228, 214 => 246, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Sami_(Northern)_Norway.php b/Mpdf/data/collations/Sami_(Northern)_Norway.php similarity index 97% rename from mpdf/collations/Sami_(Northern)_Norway.php rename to Mpdf/data/collations/Sami_(Northern)_Norway.php index 07d3ba1..e834386 100644 --- a/mpdf/collations/Sami_(Northern)_Norway.php +++ b/Mpdf/data/collations/Sami_(Northern)_Norway.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -91,5 +91,4 @@ $collation = array ( 216 => 248, 214 => 246, 197 => 229, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Sami_(Northern)_Sweden.php b/Mpdf/data/collations/Sami_(Northern)_Sweden.php similarity index 97% rename from mpdf/collations/Sami_(Northern)_Sweden.php rename to Mpdf/data/collations/Sami_(Northern)_Sweden.php index fd63c3b..142888c 100644 --- a/mpdf/collations/Sami_(Northern)_Sweden.php +++ b/Mpdf/data/collations/Sami_(Northern)_Sweden.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -91,5 +91,4 @@ $collation = array ( 197 => 229, 196 => 228, 214 => 246, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Sami_(Skolt)_Finland.php b/Mpdf/data/collations/Sami_(Skolt)_Finland.php similarity index 97% rename from mpdf/collations/Sami_(Skolt)_Finland.php rename to Mpdf/data/collations/Sami_(Skolt)_Finland.php index fd63c3b..142888c 100644 --- a/mpdf/collations/Sami_(Skolt)_Finland.php +++ b/Mpdf/data/collations/Sami_(Skolt)_Finland.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -91,5 +91,4 @@ $collation = array ( 197 => 229, 196 => 228, 214 => 246, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Sami_(Southern)_Norway.php b/Mpdf/data/collations/Sami_(Southern)_Norway.php similarity index 97% rename from mpdf/collations/Sami_(Southern)_Norway.php rename to Mpdf/data/collations/Sami_(Southern)_Norway.php index 07d3ba1..e834386 100644 --- a/mpdf/collations/Sami_(Southern)_Norway.php +++ b/Mpdf/data/collations/Sami_(Southern)_Norway.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -91,5 +91,4 @@ $collation = array ( 216 => 248, 214 => 246, 197 => 229, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Sami_(Southern)_Sweden.php b/Mpdf/data/collations/Sami_(Southern)_Sweden.php similarity index 97% rename from mpdf/collations/Sami_(Southern)_Sweden.php rename to Mpdf/data/collations/Sami_(Southern)_Sweden.php index fd63c3b..142888c 100644 --- a/mpdf/collations/Sami_(Southern)_Sweden.php +++ b/Mpdf/data/collations/Sami_(Southern)_Sweden.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -91,5 +91,4 @@ $collation = array ( 197 => 229, 196 => 228, 214 => 246, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Serbian_(Cyrillic)_Bosnia_and_Herzegovina.php b/Mpdf/data/collations/Serbian_(Cyrillic)_Bosnia_and_Herzegovina.php similarity index 97% rename from mpdf/collations/Serbian_(Cyrillic)_Bosnia_and_Herzegovina.php rename to Mpdf/data/collations/Serbian_(Cyrillic)_Bosnia_and_Herzegovina.php index b6132bd..dd8bb03 100644 --- a/mpdf/collations/Serbian_(Cyrillic)_Bosnia_and_Herzegovina.php +++ b/Mpdf/data/collations/Serbian_(Cyrillic)_Bosnia_and_Herzegovina.php @@ -1,5 +1,5 @@ 97, 66 => 98, 67 => 99, @@ -76,5 +76,4 @@ $collation = array ( 1069 => 1101, 1070 => 1102, 1071 => 1103, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Serbian_(Cyrillic)_Serbia.php b/Mpdf/data/collations/Serbian_(Cyrillic)_Serbia.php similarity index 97% rename from mpdf/collations/Serbian_(Cyrillic)_Serbia.php rename to Mpdf/data/collations/Serbian_(Cyrillic)_Serbia.php index b6132bd..dd8bb03 100644 --- a/mpdf/collations/Serbian_(Cyrillic)_Serbia.php +++ b/Mpdf/data/collations/Serbian_(Cyrillic)_Serbia.php @@ -1,5 +1,5 @@ 97, 66 => 98, 67 => 99, @@ -76,5 +76,4 @@ $collation = array ( 1069 => 1101, 1070 => 1102, 1071 => 1103, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Serbian_(Latin)_Bosnia_and_Herzegovina.php b/Mpdf/data/collations/Serbian_(Latin)_Bosnia_and_Herzegovina.php similarity index 98% rename from mpdf/collations/Serbian_(Latin)_Bosnia_and_Herzegovina.php rename to Mpdf/data/collations/Serbian_(Latin)_Bosnia_and_Herzegovina.php index fa35c1d..7f73d4d 100644 --- a/mpdf/collations/Serbian_(Latin)_Bosnia_and_Herzegovina.php +++ b/Mpdf/data/collations/Serbian_(Latin)_Bosnia_and_Herzegovina.php @@ -1,5 +1,5 @@ 711, 65 => 97, 259 => 97, @@ -103,5 +103,4 @@ $collation = array ( 380 => 122, 379 => 122, 381 => 382, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Serbian_(Latin)_Serbia.php b/Mpdf/data/collations/Serbian_(Latin)_Serbia.php similarity index 98% rename from mpdf/collations/Serbian_(Latin)_Serbia.php rename to Mpdf/data/collations/Serbian_(Latin)_Serbia.php index fa35c1d..7f73d4d 100644 --- a/mpdf/collations/Serbian_(Latin)_Serbia.php +++ b/Mpdf/data/collations/Serbian_(Latin)_Serbia.php @@ -1,5 +1,5 @@ 711, 65 => 97, 259 => 97, @@ -103,5 +103,4 @@ $collation = array ( 380 => 122, 379 => 122, 381 => 382, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Sesotho_sa_Leboa_South_Africa.php b/Mpdf/data/collations/Sesotho_sa_Leboa_South_Africa.php similarity index 98% rename from mpdf/collations/Sesotho_sa_Leboa_South_Africa.php rename to Mpdf/data/collations/Sesotho_sa_Leboa_South_Africa.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/Sesotho_sa_Leboa_South_Africa.php +++ b/Mpdf/data/collations/Sesotho_sa_Leboa_South_Africa.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Setswana_South_Africa.php b/Mpdf/data/collations/Setswana_South_Africa.php similarity index 98% rename from mpdf/collations/Setswana_South_Africa.php rename to Mpdf/data/collations/Setswana_South_Africa.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/Setswana_South_Africa.php +++ b/Mpdf/data/collations/Setswana_South_Africa.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Slovak_Slovakia.php b/Mpdf/data/collations/Slovak_Slovakia.php similarity index 98% rename from mpdf/collations/Slovak_Slovakia.php rename to Mpdf/data/collations/Slovak_Slovakia.php index edc8c08..0a244d1 100644 --- a/mpdf/collations/Slovak_Slovakia.php +++ b/Mpdf/data/collations/Slovak_Slovakia.php @@ -1,5 +1,5 @@ 711, 65 => 97, 225 => 97, @@ -102,5 +102,4 @@ $collation = array ( 378 => 122, 377 => 122, 381 => 382, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Slovenian_Slovenia.php b/Mpdf/data/collations/Slovenian_Slovenia.php similarity index 98% rename from mpdf/collations/Slovenian_Slovenia.php rename to Mpdf/data/collations/Slovenian_Slovenia.php index 54c6d1f..ea6b10f 100644 --- a/mpdf/collations/Slovenian_Slovenia.php +++ b/Mpdf/data/collations/Slovenian_Slovenia.php @@ -1,5 +1,5 @@ 711, 65 => 97, 225 => 97, @@ -101,5 +101,4 @@ $collation = array ( 379 => 122, 381 => 382, 377 => 378, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Spanish_Argentina.php b/Mpdf/data/collations/Spanish_Argentina.php similarity index 98% rename from mpdf/collations/Spanish_Argentina.php rename to Mpdf/data/collations/Spanish_Argentina.php index acd961e..fc3a0f4 100644 --- a/mpdf/collations/Spanish_Argentina.php +++ b/Mpdf/data/collations/Spanish_Argentina.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -100,5 +100,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Spanish_Bolivia.php b/Mpdf/data/collations/Spanish_Bolivia.php similarity index 98% rename from mpdf/collations/Spanish_Bolivia.php rename to Mpdf/data/collations/Spanish_Bolivia.php index acd961e..fc3a0f4 100644 --- a/mpdf/collations/Spanish_Bolivia.php +++ b/Mpdf/data/collations/Spanish_Bolivia.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -100,5 +100,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Spanish_Chile.php b/Mpdf/data/collations/Spanish_Chile.php similarity index 98% rename from mpdf/collations/Spanish_Chile.php rename to Mpdf/data/collations/Spanish_Chile.php index acd961e..fc3a0f4 100644 --- a/mpdf/collations/Spanish_Chile.php +++ b/Mpdf/data/collations/Spanish_Chile.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -100,5 +100,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Spanish_Colombia.php b/Mpdf/data/collations/Spanish_Colombia.php similarity index 98% rename from mpdf/collations/Spanish_Colombia.php rename to Mpdf/data/collations/Spanish_Colombia.php index acd961e..fc3a0f4 100644 --- a/mpdf/collations/Spanish_Colombia.php +++ b/Mpdf/data/collations/Spanish_Colombia.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -100,5 +100,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Spanish_Costa_Rica.php b/Mpdf/data/collations/Spanish_Costa_Rica.php similarity index 98% rename from mpdf/collations/Spanish_Costa_Rica.php rename to Mpdf/data/collations/Spanish_Costa_Rica.php index acd961e..fc3a0f4 100644 --- a/mpdf/collations/Spanish_Costa_Rica.php +++ b/Mpdf/data/collations/Spanish_Costa_Rica.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -100,5 +100,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Spanish_Dominican_Republic.php b/Mpdf/data/collations/Spanish_Dominican_Republic.php similarity index 98% rename from mpdf/collations/Spanish_Dominican_Republic.php rename to Mpdf/data/collations/Spanish_Dominican_Republic.php index acd961e..fc3a0f4 100644 --- a/mpdf/collations/Spanish_Dominican_Republic.php +++ b/Mpdf/data/collations/Spanish_Dominican_Republic.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -100,5 +100,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Spanish_Ecuador.php b/Mpdf/data/collations/Spanish_Ecuador.php similarity index 98% rename from mpdf/collations/Spanish_Ecuador.php rename to Mpdf/data/collations/Spanish_Ecuador.php index acd961e..fc3a0f4 100644 --- a/mpdf/collations/Spanish_Ecuador.php +++ b/Mpdf/data/collations/Spanish_Ecuador.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -100,5 +100,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Spanish_El_Salvador.php b/Mpdf/data/collations/Spanish_El_Salvador.php similarity index 98% rename from mpdf/collations/Spanish_El_Salvador.php rename to Mpdf/data/collations/Spanish_El_Salvador.php index acd961e..fc3a0f4 100644 --- a/mpdf/collations/Spanish_El_Salvador.php +++ b/Mpdf/data/collations/Spanish_El_Salvador.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -100,5 +100,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Spanish_Guatemala.php b/Mpdf/data/collations/Spanish_Guatemala.php similarity index 98% rename from mpdf/collations/Spanish_Guatemala.php rename to Mpdf/data/collations/Spanish_Guatemala.php index acd961e..fc3a0f4 100644 --- a/mpdf/collations/Spanish_Guatemala.php +++ b/Mpdf/data/collations/Spanish_Guatemala.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -100,5 +100,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Spanish_Honduras.php b/Mpdf/data/collations/Spanish_Honduras.php similarity index 98% rename from mpdf/collations/Spanish_Honduras.php rename to Mpdf/data/collations/Spanish_Honduras.php index acd961e..fc3a0f4 100644 --- a/mpdf/collations/Spanish_Honduras.php +++ b/Mpdf/data/collations/Spanish_Honduras.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -100,5 +100,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Spanish_Mexico.php b/Mpdf/data/collations/Spanish_Mexico.php similarity index 98% rename from mpdf/collations/Spanish_Mexico.php rename to Mpdf/data/collations/Spanish_Mexico.php index acd961e..fc3a0f4 100644 --- a/mpdf/collations/Spanish_Mexico.php +++ b/Mpdf/data/collations/Spanish_Mexico.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -100,5 +100,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Spanish_Nicaragua.php b/Mpdf/data/collations/Spanish_Nicaragua.php similarity index 98% rename from mpdf/collations/Spanish_Nicaragua.php rename to Mpdf/data/collations/Spanish_Nicaragua.php index acd961e..fc3a0f4 100644 --- a/mpdf/collations/Spanish_Nicaragua.php +++ b/Mpdf/data/collations/Spanish_Nicaragua.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -100,5 +100,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Spanish_Panama.php b/Mpdf/data/collations/Spanish_Panama.php similarity index 98% rename from mpdf/collations/Spanish_Panama.php rename to Mpdf/data/collations/Spanish_Panama.php index acd961e..fc3a0f4 100644 --- a/mpdf/collations/Spanish_Panama.php +++ b/Mpdf/data/collations/Spanish_Panama.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -100,5 +100,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Spanish_Paraguay.php b/Mpdf/data/collations/Spanish_Paraguay.php similarity index 98% rename from mpdf/collations/Spanish_Paraguay.php rename to Mpdf/data/collations/Spanish_Paraguay.php index acd961e..fc3a0f4 100644 --- a/mpdf/collations/Spanish_Paraguay.php +++ b/Mpdf/data/collations/Spanish_Paraguay.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -100,5 +100,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Spanish_Peru.php b/Mpdf/data/collations/Spanish_Peru.php similarity index 98% rename from mpdf/collations/Spanish_Peru.php rename to Mpdf/data/collations/Spanish_Peru.php index acd961e..fc3a0f4 100644 --- a/mpdf/collations/Spanish_Peru.php +++ b/Mpdf/data/collations/Spanish_Peru.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -100,5 +100,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Spanish_Puerto_Rico.php b/Mpdf/data/collations/Spanish_Puerto_Rico.php similarity index 98% rename from mpdf/collations/Spanish_Puerto_Rico.php rename to Mpdf/data/collations/Spanish_Puerto_Rico.php index acd961e..fc3a0f4 100644 --- a/mpdf/collations/Spanish_Puerto_Rico.php +++ b/Mpdf/data/collations/Spanish_Puerto_Rico.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -100,5 +100,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Spanish_Spain.php b/Mpdf/data/collations/Spanish_Spain.php similarity index 98% rename from mpdf/collations/Spanish_Spain.php rename to Mpdf/data/collations/Spanish_Spain.php index acd961e..fc3a0f4 100644 --- a/mpdf/collations/Spanish_Spain.php +++ b/Mpdf/data/collations/Spanish_Spain.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -100,5 +100,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Spanish_United_States.php b/Mpdf/data/collations/Spanish_United_States.php similarity index 98% rename from mpdf/collations/Spanish_United_States.php rename to Mpdf/data/collations/Spanish_United_States.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/Spanish_United_States.php +++ b/Mpdf/data/collations/Spanish_United_States.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Spanish_Uruguay.php b/Mpdf/data/collations/Spanish_Uruguay.php similarity index 98% rename from mpdf/collations/Spanish_Uruguay.php rename to Mpdf/data/collations/Spanish_Uruguay.php index acd961e..fc3a0f4 100644 --- a/mpdf/collations/Spanish_Uruguay.php +++ b/Mpdf/data/collations/Spanish_Uruguay.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -100,5 +100,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Spanish_Venezuela.php b/Mpdf/data/collations/Spanish_Venezuela.php similarity index 98% rename from mpdf/collations/Spanish_Venezuela.php rename to Mpdf/data/collations/Spanish_Venezuela.php index acd961e..fc3a0f4 100644 --- a/mpdf/collations/Spanish_Venezuela.php +++ b/Mpdf/data/collations/Spanish_Venezuela.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -100,5 +100,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Swedish_Finland.php b/Mpdf/data/collations/Swedish_Finland.php similarity index 98% rename from mpdf/collations/Swedish_Finland.php rename to Mpdf/data/collations/Swedish_Finland.php index bc0f5b2..ecbc242 100644 --- a/mpdf/collations/Swedish_Finland.php +++ b/Mpdf/data/collations/Swedish_Finland.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -99,5 +99,4 @@ $collation = array ( 214 => 246, 248 => 246, 216 => 246, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Swedish_Sweden.php b/Mpdf/data/collations/Swedish_Sweden.php similarity index 98% rename from mpdf/collations/Swedish_Sweden.php rename to Mpdf/data/collations/Swedish_Sweden.php index bc0f5b2..ecbc242 100644 --- a/mpdf/collations/Swedish_Sweden.php +++ b/Mpdf/data/collations/Swedish_Sweden.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -99,5 +99,4 @@ $collation = array ( 214 => 246, 248 => 246, 216 => 246, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Tajik_(Cyrillic)_Tajikistan.php b/Mpdf/data/collations/Tajik_(Cyrillic)_Tajikistan.php similarity index 97% rename from mpdf/collations/Tajik_(Cyrillic)_Tajikistan.php rename to Mpdf/data/collations/Tajik_(Cyrillic)_Tajikistan.php index b6132bd..dd8bb03 100644 --- a/mpdf/collations/Tajik_(Cyrillic)_Tajikistan.php +++ b/Mpdf/data/collations/Tajik_(Cyrillic)_Tajikistan.php @@ -1,5 +1,5 @@ 97, 66 => 98, 67 => 99, @@ -76,5 +76,4 @@ $collation = array ( 1069 => 1101, 1070 => 1102, 1071 => 1103, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Tamazight_(Latin)_Algeria.php b/Mpdf/data/collations/Tamazight_(Latin)_Algeria.php similarity index 98% rename from mpdf/collations/Tamazight_(Latin)_Algeria.php rename to Mpdf/data/collations/Tamazight_(Latin)_Algeria.php index 0d6781f..f9e8e5c 100644 --- a/mpdf/collations/Tamazight_(Latin)_Algeria.php +++ b/Mpdf/data/collations/Tamazight_(Latin)_Algeria.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Tatar_Russia.php b/Mpdf/data/collations/Tatar_Russia.php similarity index 97% rename from mpdf/collations/Tatar_Russia.php rename to Mpdf/data/collations/Tatar_Russia.php index b6132bd..dd8bb03 100644 --- a/mpdf/collations/Tatar_Russia.php +++ b/Mpdf/data/collations/Tatar_Russia.php @@ -1,5 +1,5 @@ 97, 66 => 98, 67 => 99, @@ -76,5 +76,4 @@ $collation = array ( 1069 => 1101, 1070 => 1102, 1071 => 1103, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Turkish_Turkey.php b/Mpdf/data/collations/Turkish_Turkey.php similarity index 98% rename from mpdf/collations/Turkish_Turkey.php rename to Mpdf/data/collations/Turkish_Turkey.php index 1dd5aac..1684a38 100644 --- a/mpdf/collations/Turkish_Turkey.php +++ b/Mpdf/data/collations/Turkish_Turkey.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -94,5 +94,4 @@ $collation = array ( 255 => 121, 376 => 121, 90 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Turkmen_Turkmenistan.php b/Mpdf/data/collations/Turkmen_Turkmenistan.php similarity index 98% rename from mpdf/collations/Turkmen_Turkmenistan.php rename to Mpdf/data/collations/Turkmen_Turkmenistan.php index 376f940..27c178c 100644 --- a/mpdf/collations/Turkmen_Turkmenistan.php +++ b/Mpdf/data/collations/Turkmen_Turkmenistan.php @@ -1,5 +1,5 @@ 711, 65 => 97, 225 => 97, @@ -101,5 +101,4 @@ $collation = array ( 377 => 122, 380 => 122, 379 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Ukrainian_Ukraine.php b/Mpdf/data/collations/Ukrainian_Ukraine.php similarity index 97% rename from mpdf/collations/Ukrainian_Ukraine.php rename to Mpdf/data/collations/Ukrainian_Ukraine.php index c3d1115..970539c 100644 --- a/mpdf/collations/Ukrainian_Ukraine.php +++ b/Mpdf/data/collations/Ukrainian_Ukraine.php @@ -1,5 +1,5 @@ 97, 66 => 98, 67 => 99, @@ -75,5 +75,4 @@ $collation = array ( 1069 => 1101, 1070 => 1102, 1071 => 1103, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Upper_Sorbian_Germany.php b/Mpdf/data/collations/Upper_Sorbian_Germany.php similarity index 98% rename from mpdf/collations/Upper_Sorbian_Germany.php rename to Mpdf/data/collations/Upper_Sorbian_Germany.php index c3ba502..ed8fbe2 100644 --- a/mpdf/collations/Upper_Sorbian_Germany.php +++ b/Mpdf/data/collations/Upper_Sorbian_Germany.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -99,5 +99,4 @@ $collation = array ( 376 => 121, 90 => 122, 381 => 382, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Urdu_Islamic_Republic_of_Pakistan.php b/Mpdf/data/collations/Urdu_Islamic_Republic_of_Pakistan.php similarity index 97% rename from mpdf/collations/Urdu_Islamic_Republic_of_Pakistan.php rename to Mpdf/data/collations/Urdu_Islamic_Republic_of_Pakistan.php index d654434..c9fa347 100644 --- a/mpdf/collations/Urdu_Islamic_Republic_of_Pakistan.php +++ b/Mpdf/data/collations/Urdu_Islamic_Republic_of_Pakistan.php @@ -1,5 +1,5 @@ 8205, 1600 => 8205, 1611 => 8205, @@ -63,5 +63,4 @@ $collation = array ( 1572 => 1608, 1746 => 1610, 1574 => 1610, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Uzbek_(Cyrillic)_Uzbekistan.php b/Mpdf/data/collations/Uzbek_(Cyrillic)_Uzbekistan.php similarity index 97% rename from mpdf/collations/Uzbek_(Cyrillic)_Uzbekistan.php rename to Mpdf/data/collations/Uzbek_(Cyrillic)_Uzbekistan.php index b6132bd..dd8bb03 100644 --- a/mpdf/collations/Uzbek_(Cyrillic)_Uzbekistan.php +++ b/Mpdf/data/collations/Uzbek_(Cyrillic)_Uzbekistan.php @@ -1,5 +1,5 @@ 97, 66 => 98, 67 => 99, @@ -76,5 +76,4 @@ $collation = array ( 1069 => 1101, 1070 => 1102, 1071 => 1103, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Uzbek_(Latin)_Uzbekistan.php b/Mpdf/data/collations/Uzbek_(Latin)_Uzbekistan.php similarity index 98% rename from mpdf/collations/Uzbek_(Latin)_Uzbekistan.php rename to Mpdf/data/collations/Uzbek_(Latin)_Uzbekistan.php index 2362f91..56523d5 100644 --- a/mpdf/collations/Uzbek_(Latin)_Uzbekistan.php +++ b/Mpdf/data/collations/Uzbek_(Latin)_Uzbekistan.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -99,5 +99,4 @@ $collation = array ( 255 => 121, 376 => 121, 90 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Vietnamese_Vietnam.php b/Mpdf/data/collations/Vietnamese_Vietnam.php similarity index 97% rename from mpdf/collations/Vietnamese_Vietnam.php rename to Mpdf/data/collations/Vietnamese_Vietnam.php index b37fec4..146a7ee 100644 --- a/mpdf/collations/Vietnamese_Vietnam.php +++ b/Mpdf/data/collations/Vietnamese_Vietnam.php @@ -1,5 +1,5 @@ 173, 777 => 173, 771 => 173, @@ -87,5 +87,4 @@ $collation = array ( 255 => 121, 376 => 121, 90 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Welsh_United_Kingdom.php b/Mpdf/data/collations/Welsh_United_Kingdom.php similarity index 98% rename from mpdf/collations/Welsh_United_Kingdom.php rename to Mpdf/data/collations/Welsh_United_Kingdom.php index 70f2d0f..6416674 100644 --- a/mpdf/collations/Welsh_United_Kingdom.php +++ b/Mpdf/data/collations/Welsh_United_Kingdom.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Wolof_Senegal.php b/Mpdf/data/collations/Wolof_Senegal.php similarity index 98% rename from mpdf/collations/Wolof_Senegal.php rename to Mpdf/data/collations/Wolof_Senegal.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/Wolof_Senegal.php +++ b/Mpdf/data/collations/Wolof_Senegal.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Yakut_Russia.php b/Mpdf/data/collations/Yakut_Russia.php similarity index 97% rename from mpdf/collations/Yakut_Russia.php rename to Mpdf/data/collations/Yakut_Russia.php index 5328336..220b4a1 100644 --- a/mpdf/collations/Yakut_Russia.php +++ b/Mpdf/data/collations/Yakut_Russia.php @@ -1,5 +1,5 @@ 97, 66 => 98, 67 => 99, @@ -75,5 +75,4 @@ $collation = array ( 1069 => 1101, 1070 => 1102, 1071 => 1103, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/Yoruba_Nigeria.php b/Mpdf/data/collations/Yoruba_Nigeria.php similarity index 98% rename from mpdf/collations/Yoruba_Nigeria.php rename to Mpdf/data/collations/Yoruba_Nigeria.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/Yoruba_Nigeria.php +++ b/Mpdf/data/collations/Yoruba_Nigeria.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/isiXhosa_South_Africa.php b/Mpdf/data/collations/isiXhosa_South_Africa.php similarity index 98% rename from mpdf/collations/isiXhosa_South_Africa.php rename to Mpdf/data/collations/isiXhosa_South_Africa.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/isiXhosa_South_Africa.php +++ b/Mpdf/data/collations/isiXhosa_South_Africa.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/mpdf/collations/isiZulu_South_Africa.php b/Mpdf/data/collations/isiZulu_South_Africa.php similarity index 98% rename from mpdf/collations/isiZulu_South_Africa.php rename to Mpdf/data/collations/isiZulu_South_Africa.php index 339f66d..9207cc8 100644 --- a/mpdf/collations/isiZulu_South_Africa.php +++ b/Mpdf/data/collations/isiZulu_South_Africa.php @@ -1,5 +1,5 @@ 94, 189 => 188, 190 => 179, @@ -101,5 +101,4 @@ $collation = array ( 90 => 122, 382 => 122, 381 => 122, -); -?> \ No newline at end of file +]; diff --git a/Mpdf/data/entity_substitutions.php b/Mpdf/data/entity_substitutions.php new file mode 100644 index 0000000..81d01ae --- /dev/null +++ b/Mpdf/data/entity_substitutions.php @@ -0,0 +1,39 @@ + '160', 'iexcl' => '161', 'cent' => '162', 'pound' => '163', 'curren' => '164', 'yen' => '165', 'brvbar' => '166', 'sect' => '167', + 'uml' => '168', 'copy' => '169', 'ordf' => '170', 'laquo' => '171', 'not' => '172', 'shy' => '173', 'reg' => '174', 'macr' => '175', + 'deg' => '176', 'plusmn' => '177', 'sup2' => '178', 'sup3' => '179', 'acute' => '180', 'micro' => '181', 'para' => '182', 'middot' => '183', + 'cedil' => '184', 'sup1' => '185', 'ordm' => '186', 'raquo' => '187', 'frac14' => '188', 'frac12' => '189', 'frac34' => '190', + 'iquest' => '191', 'Agrave' => '192', 'Aacute' => '193', 'Acirc' => '194', 'Atilde' => '195', 'Auml' => '196', 'Aring' => '197', + 'AElig' => '198', 'Ccedil' => '199', 'Egrave' => '200', 'Eacute' => '201', 'Ecirc' => '202', 'Euml' => '203', 'Igrave' => '204', + 'Iacute' => '205', 'Icirc' => '206', 'Iuml' => '207', 'ETH' => '208', 'Ntilde' => '209', 'Ograve' => '210', 'Oacute' => '211', + 'Ocirc' => '212', 'Otilde' => '213', 'Ouml' => '214', 'times' => '215', 'Oslash' => '216', 'Ugrave' => '217', 'Uacute' => '218', + 'Ucirc' => '219', 'Uuml' => '220', 'Yacute' => '221', 'THORN' => '222', 'szlig' => '223', 'agrave' => '224', 'aacute' => '225', + 'acirc' => '226', 'atilde' => '227', 'auml' => '228', 'aring' => '229', 'aelig' => '230', 'ccedil' => '231', 'egrave' => '232', + 'eacute' => '233', 'ecirc' => '234', 'euml' => '235', 'igrave' => '236', 'iacute' => '237', 'icirc' => '238', 'iuml' => '239', + 'eth' => '240', 'ntilde' => '241', 'ograve' => '242', 'oacute' => '243', 'ocirc' => '244', 'otilde' => '245', 'ouml' => '246', + 'divide' => '247', 'oslash' => '248', 'ugrave' => '249', 'uacute' => '250', 'ucirc' => '251', 'uuml' => '252', 'yacute' => '253', + 'thorn' => '254', 'yuml' => '255', 'OElig' => '338', 'oelig' => '339', 'Scaron' => '352', 'scaron' => '353', 'Yuml' => '376', + 'fnof' => '402', 'circ' => '710', 'tilde' => '732', 'Alpha' => '913', 'Beta' => '914', 'Gamma' => '915', 'Delta' => '916', + 'Epsilon' => '917', 'Zeta' => '918', 'Eta' => '919', 'Theta' => '920', 'Iota' => '921', 'Kappa' => '922', 'Lambda' => '923', + 'Mu' => '924', 'Nu' => '925', 'Xi' => '926', 'Omicron' => '927', 'Pi' => '928', 'Rho' => '929', 'Sigma' => '931', 'Tau' => '932', + 'Upsilon' => '933', 'Phi' => '934', 'Chi' => '935', 'Psi' => '936', 'Omega' => '937', 'alpha' => '945', 'beta' => '946', 'gamma' => '947', + 'delta' => '948', 'epsilon' => '949', 'zeta' => '950', 'eta' => '951', 'theta' => '952', 'iota' => '953', 'kappa' => '954', + 'lambda' => '955', 'mu' => '956', 'nu' => '957', 'xi' => '958', 'omicron' => '959', 'pi' => '960', 'rho' => '961', 'sigmaf' => '962', + 'sigma' => '963', 'tau' => '964', 'upsilon' => '965', 'phi' => '966', 'chi' => '967', 'psi' => '968', 'omega' => '969', + 'thetasym' => '977', 'upsih' => '978', 'piv' => '982', 'ensp' => '8194', 'emsp' => '8195', 'thinsp' => '8201', 'zwnj' => '8204', + 'zwj' => '8205', 'lrm' => '8206', 'rlm' => '8207', 'ndash' => '8211', 'mdash' => '8212', 'lsquo' => '8216', 'rsquo' => '8217', + 'sbquo' => '8218', 'ldquo' => '8220', 'rdquo' => '8221', 'bdquo' => '8222', 'dagger' => '8224', 'Dagger' => '8225', 'bull' => '8226', + 'hellip' => '8230', 'permil' => '8240', 'prime' => '8242', 'Prime' => '8243', 'lsaquo' => '8249', 'rsaquo' => '8250', 'oline' => '8254', + 'frasl' => '8260', 'euro' => '8364', 'image' => '8465', 'weierp' => '8472', 'real' => '8476', 'trade' => '8482', 'alefsym' => '8501', + 'larr' => '8592', 'uarr' => '8593', 'rarr' => '8594', 'darr' => '8595', 'harr' => '8596', 'crarr' => '8629', 'lArr' => '8656', + 'uArr' => '8657', 'rArr' => '8658', 'dArr' => '8659', 'hArr' => '8660', 'forall' => '8704', 'part' => '8706', 'exist' => '8707', + 'empty' => '8709', 'nabla' => '8711', 'isin' => '8712', 'notin' => '8713', 'ni' => '8715', 'prod' => '8719', 'sum' => '8721', + 'minus' => '8722', 'lowast' => '8727', 'radic' => '8730', 'prop' => '8733', 'infin' => '8734', 'ang' => '8736', 'and' => '8743', + 'or' => '8744', 'cap' => '8745', 'cup' => '8746', 'int' => '8747', 'there4' => '8756', 'sim' => '8764', 'cong' => '8773', + 'asymp' => '8776', 'ne' => '8800', 'equiv' => '8801', 'le' => '8804', 'ge' => '8805', 'sub' => '8834', 'sup' => '8835', 'nsub' => '8836', + 'sube' => '8838', 'supe' => '8839', 'oplus' => '8853', 'otimes' => '8855', 'perp' => '8869', 'sdot' => '8901', 'lceil' => '8968', + 'rceil' => '8969', 'lfloor' => '8970', 'rfloor' => '8971', 'lang' => '9001', 'rang' => '9002', 'loz' => '9674', 'spades' => '9824', + 'clubs' => '9827', 'hearts' => '9829', 'diams' => '9830', +]; diff --git a/Mpdf/data/font/ccourier.php b/Mpdf/data/font/ccourier.php new file mode 100644 index 0000000..e6b71b2 --- /dev/null +++ b/Mpdf/data/font/ccourier.php @@ -0,0 +1,9 @@ +629,'Descent'=>-157,'CapHeight'=>562,'FontBBox'=>'[-23 -250 715 805]'); +$desc = array('Flags' => 33, 'FontBBox' => '[-23 -250 715 805]', 'ItalicAngle' => 0, 'Ascent' => 805, 'Descent' => -250, 'Leading' => 0, 'CapHeight' => 562, 'XHeight' => 426, 'StemV' => 51, 'StemH' => 51, 'AvgWidth' => 600, 'MaxWidth' => 600, 'MissingWidth' => 600); +$up = -100; +$ut = 50; diff --git a/Mpdf/data/font/ccourierb.php b/Mpdf/data/font/ccourierb.php new file mode 100644 index 0000000..e87629d --- /dev/null +++ b/Mpdf/data/font/ccourierb.php @@ -0,0 +1,9 @@ +629,'Descent'=>-157,'CapHeight'=>562,'FontBBox'=>'[-113 -250 749 801]'); +$desc = array('Flags' => 33, 'FontBBox' => '[-113 -250 749 801]', 'ItalicAngle' => 0, 'Ascent' => 801, 'Descent' => -250, 'Leading' => 0, 'CapHeight' => 562, 'XHeight' => 439, 'StemV' => 106, 'StemH' => 84, 'AvgWidth' => 600, 'MaxWidth' => 600, 'MissingWidth' => 600); +$up = -100; +$ut = 50; diff --git a/Mpdf/data/font/ccourierbi.php b/Mpdf/data/font/ccourierbi.php new file mode 100644 index 0000000..b309bf9 --- /dev/null +++ b/Mpdf/data/font/ccourierbi.php @@ -0,0 +1,9 @@ +629,'Descent'=>-157,'CapHeight'=>562,'FontBBox'=>'[-57 -250 869 801]'); +$desc = array('Flags' => 97, 'FontBBox' => '[-57 -250 869 801]', 'ItalicAngle' => -12, 'Ascent' => 801, 'Descent' => -250, 'Leading' => 0, 'CapHeight' => 562, 'XHeight' => 439, 'StemV' => 106, 'StemH' => 84, 'AvgWidth' => 600, 'MaxWidth' => 600, 'MissingWidth' => 600); +$up = -100; +$ut = 50; diff --git a/Mpdf/data/font/ccourieri.php b/Mpdf/data/font/ccourieri.php new file mode 100644 index 0000000..5482f22 --- /dev/null +++ b/Mpdf/data/font/ccourieri.php @@ -0,0 +1,9 @@ + 629, 'Descent' => -157, 'CapHeight' => 562, 'FontBBox' => '[-27 -250 849 805]'); +$desc = array('Flags' => 97, 'FontBBox' => '[-27 -250 849 805]', 'ItalicAngle' => -12, 'Ascent' => 805, 'Descent' => -250, 'Leading' => 0, 'CapHeight' => 562, 'XHeight' => 426, 'StemV' => 51, 'StemH' => 51, 'AvgWidth' => 600, 'MaxWidth' => 600, 'MissingWidth' => 600); +$up = -100; +$ut = 50; diff --git a/Mpdf/data/font/chelvetica.php b/Mpdf/data/font/chelvetica.php new file mode 100644 index 0000000..3d33a1e --- /dev/null +++ b/Mpdf/data/font/chelvetica.php @@ -0,0 +1,21 @@ + 278, chr(1) => 278, chr(2) => 278, chr(3) => 278, chr(4) => 278, chr(5) => 278, chr(6) => 278, chr(7) => 278, chr(8) => 278, chr(9) => 278, chr(10) => 278, chr(11) => 278, chr(12) => 278, chr(13) => 278, chr(14) => 278, chr(15) => 278, chr(16) => 278, chr(17) => 278, chr(18) => 278, chr(19) => 278, chr(20) => 278, chr(21) => 278, + chr(22) => 278, chr(23) => 278, chr(24) => 278, chr(25) => 278, chr(26) => 278, chr(27) => 278, chr(28) => 278, chr(29) => 278, chr(30) => 278, chr(31) => 278, ' ' => 278, '!' => 278, '"' => 355, '#' => 556, '$' => 556, '%' => 889, '&' => 667, '\'' => 191, '(' => 333, ')' => 333, '*' => 389, '+' => 584, + ',' => 278, '-' => 333, '.' => 278, '/' => 278, '0' => 556, '1' => 556, '2' => 556, '3' => 556, '4' => 556, '5' => 556, '6' => 556, '7' => 556, '8' => 556, '9' => 556, ':' => 278, ';' => 278, '<' => 584, '=' => 584, '>' => 584, '?' => 556, '@' => 1015, 'A' => 667, + 'B' => 667, 'C' => 722, 'D' => 722, 'E' => 667, 'F' => 611, 'G' => 778, 'H' => 722, 'I' => 278, 'J' => 500, 'K' => 667, 'L' => 556, 'M' => 833, 'N' => 722, 'O' => 778, 'P' => 667, 'Q' => 778, 'R' => 722, 'S' => 667, 'T' => 611, 'U' => 722, 'V' => 667, 'W' => 944, + 'X' => 667, 'Y' => 667, 'Z' => 611, '[' => 278, '\\' => 278, ']' => 278, '^' => 469, '_' => 556, '`' => 333, 'a' => 556, 'b' => 556, 'c' => 500, 'd' => 556, 'e' => 556, 'f' => 278, 'g' => 556, 'h' => 556, 'i' => 222, 'j' => 222, 'k' => 500, 'l' => 222, 'm' => 833, + 'n' => 556, 'o' => 556, 'p' => 556, 'q' => 556, 'r' => 333, 's' => 500, 't' => 278, 'u' => 556, 'v' => 500, 'w' => 722, 'x' => 500, 'y' => 500, 'z' => 500, '{' => 334, '|' => 260, '}' => 334, '~' => 584, chr(127) => 350, chr(128) => 556, chr(129) => 350, chr(130) => 222, chr(131) => 556, + chr(132) => 333, chr(133) => 1000, chr(134) => 556, chr(135) => 556, chr(136) => 333, chr(137) => 1000, chr(138) => 667, chr(139) => 333, chr(140) => 1000, chr(141) => 350, chr(142) => 611, chr(143) => 350, chr(144) => 350, chr(145) => 222, chr(146) => 222, chr(147) => 333, chr(148) => 333, chr(149) => 350, chr(150) => 556, chr(151) => 1000, chr(152) => 333, chr(153) => 1000, + chr(154) => 500, chr(155) => 333, chr(156) => 944, chr(157) => 350, chr(158) => 500, chr(159) => 667, chr(160) => 278, chr(161) => 333, chr(162) => 556, chr(163) => 556, chr(164) => 556, chr(165) => 556, chr(166) => 260, chr(167) => 556, chr(168) => 333, chr(169) => 737, chr(170) => 370, chr(171) => 556, chr(172) => 584, chr(173) => 333, chr(174) => 737, chr(175) => 333, + chr(176) => 400, chr(177) => 584, chr(178) => 333, chr(179) => 333, chr(180) => 333, chr(181) => 556, chr(182) => 537, chr(183) => 278, chr(184) => 333, chr(185) => 333, chr(186) => 365, chr(187) => 556, chr(188) => 834, chr(189) => 834, chr(190) => 834, chr(191) => 611, chr(192) => 667, chr(193) => 667, chr(194) => 667, chr(195) => 667, chr(196) => 667, chr(197) => 667, + chr(198) => 1000, chr(199) => 722, chr(200) => 667, chr(201) => 667, chr(202) => 667, chr(203) => 667, chr(204) => 278, chr(205) => 278, chr(206) => 278, chr(207) => 278, chr(208) => 722, chr(209) => 722, chr(210) => 778, chr(211) => 778, chr(212) => 778, chr(213) => 778, chr(214) => 778, chr(215) => 584, chr(216) => 778, chr(217) => 722, chr(218) => 722, chr(219) => 722, + chr(220) => 722, chr(221) => 667, chr(222) => 667, chr(223) => 611, chr(224) => 556, chr(225) => 556, chr(226) => 556, chr(227) => 556, chr(228) => 556, chr(229) => 556, chr(230) => 889, chr(231) => 500, chr(232) => 556, chr(233) => 556, chr(234) => 556, chr(235) => 556, chr(236) => 278, chr(237) => 278, chr(238) => 278, chr(239) => 278, chr(240) => 556, chr(241) => 556, + chr(242) => 556, chr(243) => 556, chr(244) => 556, chr(245) => 556, chr(246) => 556, chr(247) => 584, chr(248) => 611, chr(249) => 556, chr(250) => 556, chr(251) => 556, chr(252) => 556, chr(253) => 500, chr(254) => 556, chr(255) => 500); + +//$desc=array('Ascent'=>718,'Descent'=>-207,'CapHeight'=>718,'FontBBox'=>'[-166 -225 1000 931]'); +$desc = array('Flags' => 32, 'FontBBox' => '[-166 -225 1000 931]', 'ItalicAngle' => 0, 'Ascent' => 931, 'Descent' => -225, 'Leading' => 0, 'CapHeight' => 718, 'XHeight' => 523, 'StemV' => 88, 'StemH' => 76, 'AvgWidth' => 513, 'MaxWidth' => 1015, 'MissingWidth' => 513); +$up = -100; +$ut = 50; +$kerninfo = array(chr(49) => array(chr(49) => -74,), chr(65) => array(chr(84) => -74, chr(86) => -74, chr(87) => -37, chr(89) => -74, chr(118) => -18, chr(119) => -18, chr(121) => -18, chr(146) => -74,), chr(70) => array(chr(44) => -110, chr(46) => -110, chr(65) => -55,), chr(76) => array(chr(84) => -74, chr(86) => -74, chr(87) => -74, chr(89) => -74, chr(121) => -37, chr(146) => -55,), chr(80) => array(chr(44) => -128, chr(46) => -128, chr(65) => -74,), chr(82) => array(chr(84) => -18, chr(86) => -18, chr(87) => -18, chr(89) => -18,), chr(84) => array(chr(44) => -110, chr(46) => -110, chr(58) => -110, chr(65) => -74, chr(79) => -18, chr(97) => -110, chr(99) => -110, chr(101) => -110, chr(105) => -37, chr(111) => -110, chr(114) => -37, chr(115) => -110, chr(117) => -37, chr(119) => -55, chr(121) => -55,), chr(86) => array(chr(44) => -91, chr(46) => -91, chr(58) => -37, chr(65) => -74, chr(97) => -74, chr(101) => -55, chr(105) => -18, chr(111) => -55, chr(114) => -37, chr(117) => -37, chr(121) => -37,), chr(87) => array(chr(44) => -55, chr(46) => -55, chr(58) => -18, chr(65) => -37, chr(97) => -37, chr(101) => -18, chr(105) => 0, chr(111) => -18, chr(114) => -18, chr(117) => -18, chr(121) => -8,), chr(89) => array(chr(44) => -128, chr(46) => -128, chr(58) => -55, chr(65) => -74, chr(97) => -74, chr(101) => -91, chr(105) => -37, chr(111) => -91, chr(112) => -74, chr(113) => -91, chr(117) => -55, chr(118) => -55,), chr(102) => array(chr(102) => -18, chr(146) => 18,), chr(114) => array(chr(44) => -55, chr(46) => -55, chr(146) => 37,), chr(118) => array(chr(44) => -74, chr(46) => -74,), chr(119) => array(chr(44) => -55, chr(46) => -55,), chr(121) => array(chr(44) => -74, chr(46) => -74,), chr(145) => array(chr(145) => -18,), chr(146) => array(chr(115) => -18, chr(146) => -18,),); diff --git a/Mpdf/data/font/chelveticab.php b/Mpdf/data/font/chelveticab.php new file mode 100644 index 0000000..0c4a3ec --- /dev/null +++ b/Mpdf/data/font/chelveticab.php @@ -0,0 +1,21 @@ + 278, chr(1) => 278, chr(2) => 278, chr(3) => 278, chr(4) => 278, chr(5) => 278, chr(6) => 278, chr(7) => 278, chr(8) => 278, chr(9) => 278, chr(10) => 278, chr(11) => 278, chr(12) => 278, chr(13) => 278, chr(14) => 278, chr(15) => 278, chr(16) => 278, chr(17) => 278, chr(18) => 278, chr(19) => 278, chr(20) => 278, chr(21) => 278, + chr(22) => 278, chr(23) => 278, chr(24) => 278, chr(25) => 278, chr(26) => 278, chr(27) => 278, chr(28) => 278, chr(29) => 278, chr(30) => 278, chr(31) => 278, ' ' => 278, '!' => 333, '"' => 474, '#' => 556, '$' => 556, '%' => 889, '&' => 722, '\'' => 238, '(' => 333, ')' => 333, '*' => 389, '+' => 584, + ',' => 278, '-' => 333, '.' => 278, '/' => 278, '0' => 556, '1' => 556, '2' => 556, '3' => 556, '4' => 556, '5' => 556, '6' => 556, '7' => 556, '8' => 556, '9' => 556, ':' => 333, ';' => 333, '<' => 584, '=' => 584, '>' => 584, '?' => 611, '@' => 975, 'A' => 722, + 'B' => 722, 'C' => 722, 'D' => 722, 'E' => 667, 'F' => 611, 'G' => 778, 'H' => 722, 'I' => 278, 'J' => 556, 'K' => 722, 'L' => 611, 'M' => 833, 'N' => 722, 'O' => 778, 'P' => 667, 'Q' => 778, 'R' => 722, 'S' => 667, 'T' => 611, 'U' => 722, 'V' => 667, 'W' => 944, + 'X' => 667, 'Y' => 667, 'Z' => 611, '[' => 333, '\\' => 278, ']' => 333, '^' => 584, '_' => 556, '`' => 333, 'a' => 556, 'b' => 611, 'c' => 556, 'd' => 611, 'e' => 556, 'f' => 333, 'g' => 611, 'h' => 611, 'i' => 278, 'j' => 278, 'k' => 556, 'l' => 278, 'm' => 889, + 'n' => 611, 'o' => 611, 'p' => 611, 'q' => 611, 'r' => 389, 's' => 556, 't' => 333, 'u' => 611, 'v' => 556, 'w' => 778, 'x' => 556, 'y' => 556, 'z' => 500, '{' => 389, '|' => 280, '}' => 389, '~' => 584, chr(127) => 350, chr(128) => 556, chr(129) => 350, chr(130) => 278, chr(131) => 556, + chr(132) => 500, chr(133) => 1000, chr(134) => 556, chr(135) => 556, chr(136) => 333, chr(137) => 1000, chr(138) => 667, chr(139) => 333, chr(140) => 1000, chr(141) => 350, chr(142) => 611, chr(143) => 350, chr(144) => 350, chr(145) => 278, chr(146) => 278, chr(147) => 500, chr(148) => 500, chr(149) => 350, chr(150) => 556, chr(151) => 1000, chr(152) => 333, chr(153) => 1000, + chr(154) => 556, chr(155) => 333, chr(156) => 944, chr(157) => 350, chr(158) => 500, chr(159) => 667, chr(160) => 278, chr(161) => 333, chr(162) => 556, chr(163) => 556, chr(164) => 556, chr(165) => 556, chr(166) => 280, chr(167) => 556, chr(168) => 333, chr(169) => 737, chr(170) => 370, chr(171) => 556, chr(172) => 584, chr(173) => 333, chr(174) => 737, chr(175) => 333, + chr(176) => 400, chr(177) => 584, chr(178) => 333, chr(179) => 333, chr(180) => 333, chr(181) => 611, chr(182) => 556, chr(183) => 278, chr(184) => 333, chr(185) => 333, chr(186) => 365, chr(187) => 556, chr(188) => 834, chr(189) => 834, chr(190) => 834, chr(191) => 611, chr(192) => 722, chr(193) => 722, chr(194) => 722, chr(195) => 722, chr(196) => 722, chr(197) => 722, + chr(198) => 1000, chr(199) => 722, chr(200) => 667, chr(201) => 667, chr(202) => 667, chr(203) => 667, chr(204) => 278, chr(205) => 278, chr(206) => 278, chr(207) => 278, chr(208) => 722, chr(209) => 722, chr(210) => 778, chr(211) => 778, chr(212) => 778, chr(213) => 778, chr(214) => 778, chr(215) => 584, chr(216) => 778, chr(217) => 722, chr(218) => 722, chr(219) => 722, + chr(220) => 722, chr(221) => 667, chr(222) => 667, chr(223) => 611, chr(224) => 556, chr(225) => 556, chr(226) => 556, chr(227) => 556, chr(228) => 556, chr(229) => 556, chr(230) => 889, chr(231) => 556, chr(232) => 556, chr(233) => 556, chr(234) => 556, chr(235) => 556, chr(236) => 278, chr(237) => 278, chr(238) => 278, chr(239) => 278, chr(240) => 611, chr(241) => 611, + chr(242) => 611, chr(243) => 611, chr(244) => 611, chr(245) => 611, chr(246) => 611, chr(247) => 584, chr(248) => 611, chr(249) => 611, chr(250) => 611, chr(251) => 611, chr(252) => 611, chr(253) => 556, chr(254) => 611, chr(255) => 556); + +//$desc=array('Ascent'=>718,'Descent'=>-207,'CapHeight'=>718,'FontBBox'=>'[-170 -228 1003 962]'); +$desc = array('Flags' => 32, 'FontBBox' => '[-170 -228 1003 962]', 'ItalicAngle' => 0, 'Ascent' => 962, 'Descent' => -228, 'Leading' => 0, 'CapHeight' => 718, 'XHeight' => 532, 'StemV' => 140, 'StemH' => 118, 'AvgWidth' => 535, 'MaxWidth' => 1000, 'MissingWidth' => 535); +$up = -100; +$ut = 50; +$kerninfo = array(chr(49) => array(chr(49) => -55,), chr(65) => array(chr(84) => -74, chr(86) => -74, chr(87) => -55, chr(89) => -91, chr(118) => -37, chr(119) => -18, chr(121) => -37, chr(146) => -55,), chr(70) => array(chr(44) => -110, chr(46) => -110, chr(65) => -55,), chr(76) => array(chr(84) => -74, chr(86) => -74, chr(87) => -55, chr(89) => -91, chr(121) => -37, chr(146) => -55,), chr(80) => array(chr(44) => -128, chr(46) => -128, chr(65) => -74,), chr(82) => array(chr(86) => -18, chr(87) => -18, chr(89) => -37,), chr(84) => array(chr(44) => -110, chr(46) => -110, chr(58) => -110, chr(65) => -74, chr(79) => -18, chr(97) => -74, chr(99) => -74, chr(101) => -74, chr(105) => -18, chr(111) => -74, chr(114) => -55, chr(115) => -74, chr(117) => -74, chr(119) => -74, chr(121) => -74,), chr(86) => array(chr(44) => -91, chr(46) => -91, chr(58) => -55, chr(65) => -74, chr(97) => -55, chr(101) => -55, chr(105) => -18, chr(111) => -74, chr(114) => -55, chr(117) => -37, chr(121) => -37,), chr(87) => array(chr(44) => -55, chr(46) => -55, chr(58) => -18, chr(65) => -55, chr(97) => -37, chr(101) => -18, chr(105) => -8, chr(111) => -18, chr(114) => -18, chr(117) => -18, chr(121) => -18,), chr(89) => array(chr(44) => -110, chr(46) => -110, chr(58) => -74, chr(65) => -91, chr(97) => -55, chr(101) => -55, chr(105) => -37, chr(111) => -74, chr(112) => -55, chr(113) => -74, chr(117) => -55, chr(118) => -55,), chr(102) => array(chr(146) => 18,), chr(114) => array(chr(44) => -55, chr(46) => -55, chr(146) => 37,), chr(118) => array(chr(44) => -74, chr(46) => -74,), chr(119) => array(chr(44) => -37, chr(46) => -37,), chr(121) => array(chr(44) => -74, chr(46) => -74,), chr(145) => array(chr(145) => -37,), chr(146) => array(chr(115) => -37, chr(146) => -37,),); diff --git a/Mpdf/data/font/chelveticabi.php b/Mpdf/data/font/chelveticabi.php new file mode 100644 index 0000000..6df2205 --- /dev/null +++ b/Mpdf/data/font/chelveticabi.php @@ -0,0 +1,21 @@ + 278, chr(1) => 278, chr(2) => 278, chr(3) => 278, chr(4) => 278, chr(5) => 278, chr(6) => 278, chr(7) => 278, chr(8) => 278, chr(9) => 278, chr(10) => 278, chr(11) => 278, chr(12) => 278, chr(13) => 278, chr(14) => 278, chr(15) => 278, chr(16) => 278, chr(17) => 278, chr(18) => 278, chr(19) => 278, chr(20) => 278, chr(21) => 278, + chr(22) => 278, chr(23) => 278, chr(24) => 278, chr(25) => 278, chr(26) => 278, chr(27) => 278, chr(28) => 278, chr(29) => 278, chr(30) => 278, chr(31) => 278, ' ' => 278, '!' => 333, '"' => 474, '#' => 556, '$' => 556, '%' => 889, '&' => 722, '\'' => 238, '(' => 333, ')' => 333, '*' => 389, '+' => 584, + ',' => 278, '-' => 333, '.' => 278, '/' => 278, '0' => 556, '1' => 556, '2' => 556, '3' => 556, '4' => 556, '5' => 556, '6' => 556, '7' => 556, '8' => 556, '9' => 556, ':' => 333, ';' => 333, '<' => 584, '=' => 584, '>' => 584, '?' => 611, '@' => 975, 'A' => 722, + 'B' => 722, 'C' => 722, 'D' => 722, 'E' => 667, 'F' => 611, 'G' => 778, 'H' => 722, 'I' => 278, 'J' => 556, 'K' => 722, 'L' => 611, 'M' => 833, 'N' => 722, 'O' => 778, 'P' => 667, 'Q' => 778, 'R' => 722, 'S' => 667, 'T' => 611, 'U' => 722, 'V' => 667, 'W' => 944, + 'X' => 667, 'Y' => 667, 'Z' => 611, '[' => 333, '\\' => 278, ']' => 333, '^' => 584, '_' => 556, '`' => 333, 'a' => 556, 'b' => 611, 'c' => 556, 'd' => 611, 'e' => 556, 'f' => 333, 'g' => 611, 'h' => 611, 'i' => 278, 'j' => 278, 'k' => 556, 'l' => 278, 'm' => 889, + 'n' => 611, 'o' => 611, 'p' => 611, 'q' => 611, 'r' => 389, 's' => 556, 't' => 333, 'u' => 611, 'v' => 556, 'w' => 778, 'x' => 556, 'y' => 556, 'z' => 500, '{' => 389, '|' => 280, '}' => 389, '~' => 584, chr(127) => 350, chr(128) => 556, chr(129) => 350, chr(130) => 278, chr(131) => 556, + chr(132) => 500, chr(133) => 1000, chr(134) => 556, chr(135) => 556, chr(136) => 333, chr(137) => 1000, chr(138) => 667, chr(139) => 333, chr(140) => 1000, chr(141) => 350, chr(142) => 611, chr(143) => 350, chr(144) => 350, chr(145) => 278, chr(146) => 278, chr(147) => 500, chr(148) => 500, chr(149) => 350, chr(150) => 556, chr(151) => 1000, chr(152) => 333, chr(153) => 1000, + chr(154) => 556, chr(155) => 333, chr(156) => 944, chr(157) => 350, chr(158) => 500, chr(159) => 667, chr(160) => 278, chr(161) => 333, chr(162) => 556, chr(163) => 556, chr(164) => 556, chr(165) => 556, chr(166) => 280, chr(167) => 556, chr(168) => 333, chr(169) => 737, chr(170) => 370, chr(171) => 556, chr(172) => 584, chr(173) => 333, chr(174) => 737, chr(175) => 333, + chr(176) => 400, chr(177) => 584, chr(178) => 333, chr(179) => 333, chr(180) => 333, chr(181) => 611, chr(182) => 556, chr(183) => 278, chr(184) => 333, chr(185) => 333, chr(186) => 365, chr(187) => 556, chr(188) => 834, chr(189) => 834, chr(190) => 834, chr(191) => 611, chr(192) => 722, chr(193) => 722, chr(194) => 722, chr(195) => 722, chr(196) => 722, chr(197) => 722, + chr(198) => 1000, chr(199) => 722, chr(200) => 667, chr(201) => 667, chr(202) => 667, chr(203) => 667, chr(204) => 278, chr(205) => 278, chr(206) => 278, chr(207) => 278, chr(208) => 722, chr(209) => 722, chr(210) => 778, chr(211) => 778, chr(212) => 778, chr(213) => 778, chr(214) => 778, chr(215) => 584, chr(216) => 778, chr(217) => 722, chr(218) => 722, chr(219) => 722, + chr(220) => 722, chr(221) => 667, chr(222) => 667, chr(223) => 611, chr(224) => 556, chr(225) => 556, chr(226) => 556, chr(227) => 556, chr(228) => 556, chr(229) => 556, chr(230) => 889, chr(231) => 556, chr(232) => 556, chr(233) => 556, chr(234) => 556, chr(235) => 556, chr(236) => 278, chr(237) => 278, chr(238) => 278, chr(239) => 278, chr(240) => 611, chr(241) => 611, + chr(242) => 611, chr(243) => 611, chr(244) => 611, chr(245) => 611, chr(246) => 611, chr(247) => 584, chr(248) => 611, chr(249) => 611, chr(250) => 611, chr(251) => 611, chr(252) => 611, chr(253) => 556, chr(254) => 611, chr(255) => 556); + +//$desc=array('Ascent'=>718,'Descent'=>-207,'CapHeight'=>718,'FontBBox'=>'[-174 -228 1114 962]'); +$desc = array('Flags' => 96, 'FontBBox' => '[-174 -228 1114 962]', 'ItalicAngle' => -12, 'Ascent' => 962, 'Descent' => -228, 'Leading' => 0, 'CapHeight' => 718, 'XHeight' => 532, 'StemV' => 140, 'StemH' => 118, 'AvgWidth' => 535, 'MaxWidth' => 1000, 'MissingWidth' => 535); +$up = -100; +$ut = 50; +$kerninfo = array(chr(49) => array(chr(49) => -74,), chr(65) => array(chr(84) => -74, chr(86) => -74, chr(87) => -55, chr(89) => -74, chr(146) => -55,), chr(70) => array(chr(44) => -110, chr(46) => -110, chr(65) => -55,), chr(76) => array(chr(84) => -74, chr(86) => -55, chr(87) => -55, chr(89) => -74, chr(146) => -74,), chr(80) => array(chr(44) => -128, chr(46) => -128, chr(65) => -74,), chr(82) => array(chr(84) => -18, chr(87) => -18, chr(89) => -18,), chr(84) => array(chr(44) => -74, chr(46) => -74, chr(58) => -74, chr(65) => -74, chr(79) => -18, chr(97) => -37, chr(99) => -37, chr(101) => -37, chr(105) => -18, chr(111) => -37, chr(114) => -18, chr(115) => -37, chr(117) => -18, chr(119) => -37, chr(121) => -37,), chr(86) => array(chr(44) => -91, chr(46) => -91, chr(58) => -37, chr(65) => -74, chr(97) => -37, chr(101) => -37, chr(105) => -37, chr(111) => -37, chr(114) => -18, chr(117) => -18, chr(121) => -18,), chr(87) => array(chr(44) => -74, chr(46) => -74, chr(58) => -37, chr(65) => -55, chr(97) => -18, chr(101) => -18, chr(105) => -8, chr(111) => -18, chr(114) => -18, chr(117) => -18, chr(121) => -18,), chr(89) => array(chr(44) => -91, chr(46) => -91, chr(58) => -55, chr(65) => -74, chr(97) => -37, chr(101) => -37, chr(105) => -37, chr(111) => -37, chr(112) => -37, chr(113) => -37, chr(117) => -37, chr(118) => -37,), chr(102) => array(chr(102) => -18, chr(146) => 18,), chr(114) => array(chr(44) => -55, chr(46) => -55, chr(146) => 37,), chr(118) => array(chr(44) => -55, chr(46) => -55,), chr(119) => array(chr(44) => -37, chr(46) => -37,), chr(121) => array(chr(44) => -37, chr(46) => -37,), chr(145) => array(chr(145) => -37,), chr(146) => array(chr(115) => -18, chr(116) => 18, chr(146) => -37,),); diff --git a/Mpdf/data/font/chelveticai.php b/Mpdf/data/font/chelveticai.php new file mode 100644 index 0000000..d1ca1c2 --- /dev/null +++ b/Mpdf/data/font/chelveticai.php @@ -0,0 +1,21 @@ + 278, chr(1) => 278, chr(2) => 278, chr(3) => 278, chr(4) => 278, chr(5) => 278, chr(6) => 278, chr(7) => 278, chr(8) => 278, chr(9) => 278, chr(10) => 278, chr(11) => 278, chr(12) => 278, chr(13) => 278, chr(14) => 278, chr(15) => 278, chr(16) => 278, chr(17) => 278, chr(18) => 278, chr(19) => 278, chr(20) => 278, chr(21) => 278, + chr(22) => 278, chr(23) => 278, chr(24) => 278, chr(25) => 278, chr(26) => 278, chr(27) => 278, chr(28) => 278, chr(29) => 278, chr(30) => 278, chr(31) => 278, ' ' => 278, '!' => 278, '"' => 355, '#' => 556, '$' => 556, '%' => 889, '&' => 667, '\'' => 191, '(' => 333, ')' => 333, '*' => 389, '+' => 584, + ',' => 278, '-' => 333, '.' => 278, '/' => 278, '0' => 556, '1' => 556, '2' => 556, '3' => 556, '4' => 556, '5' => 556, '6' => 556, '7' => 556, '8' => 556, '9' => 556, ':' => 278, ';' => 278, '<' => 584, '=' => 584, '>' => 584, '?' => 556, '@' => 1015, 'A' => 667, + 'B' => 667, 'C' => 722, 'D' => 722, 'E' => 667, 'F' => 611, 'G' => 778, 'H' => 722, 'I' => 278, 'J' => 500, 'K' => 667, 'L' => 556, 'M' => 833, 'N' => 722, 'O' => 778, 'P' => 667, 'Q' => 778, 'R' => 722, 'S' => 667, 'T' => 611, 'U' => 722, 'V' => 667, 'W' => 944, + 'X' => 667, 'Y' => 667, 'Z' => 611, '[' => 278, '\\' => 278, ']' => 278, '^' => 469, '_' => 556, '`' => 333, 'a' => 556, 'b' => 556, 'c' => 500, 'd' => 556, 'e' => 556, 'f' => 278, 'g' => 556, 'h' => 556, 'i' => 222, 'j' => 222, 'k' => 500, 'l' => 222, 'm' => 833, + 'n' => 556, 'o' => 556, 'p' => 556, 'q' => 556, 'r' => 333, 's' => 500, 't' => 278, 'u' => 556, 'v' => 500, 'w' => 722, 'x' => 500, 'y' => 500, 'z' => 500, '{' => 334, '|' => 260, '}' => 334, '~' => 584, chr(127) => 350, chr(128) => 556, chr(129) => 350, chr(130) => 222, chr(131) => 556, + chr(132) => 333, chr(133) => 1000, chr(134) => 556, chr(135) => 556, chr(136) => 333, chr(137) => 1000, chr(138) => 667, chr(139) => 333, chr(140) => 1000, chr(141) => 350, chr(142) => 611, chr(143) => 350, chr(144) => 350, chr(145) => 222, chr(146) => 222, chr(147) => 333, chr(148) => 333, chr(149) => 350, chr(150) => 556, chr(151) => 1000, chr(152) => 333, chr(153) => 1000, + chr(154) => 500, chr(155) => 333, chr(156) => 944, chr(157) => 350, chr(158) => 500, chr(159) => 667, chr(160) => 278, chr(161) => 333, chr(162) => 556, chr(163) => 556, chr(164) => 556, chr(165) => 556, chr(166) => 260, chr(167) => 556, chr(168) => 333, chr(169) => 737, chr(170) => 370, chr(171) => 556, chr(172) => 584, chr(173) => 333, chr(174) => 737, chr(175) => 333, + chr(176) => 400, chr(177) => 584, chr(178) => 333, chr(179) => 333, chr(180) => 333, chr(181) => 556, chr(182) => 537, chr(183) => 278, chr(184) => 333, chr(185) => 333, chr(186) => 365, chr(187) => 556, chr(188) => 834, chr(189) => 834, chr(190) => 834, chr(191) => 611, chr(192) => 667, chr(193) => 667, chr(194) => 667, chr(195) => 667, chr(196) => 667, chr(197) => 667, + chr(198) => 1000, chr(199) => 722, chr(200) => 667, chr(201) => 667, chr(202) => 667, chr(203) => 667, chr(204) => 278, chr(205) => 278, chr(206) => 278, chr(207) => 278, chr(208) => 722, chr(209) => 722, chr(210) => 778, chr(211) => 778, chr(212) => 778, chr(213) => 778, chr(214) => 778, chr(215) => 584, chr(216) => 778, chr(217) => 722, chr(218) => 722, chr(219) => 722, + chr(220) => 722, chr(221) => 667, chr(222) => 667, chr(223) => 611, chr(224) => 556, chr(225) => 556, chr(226) => 556, chr(227) => 556, chr(228) => 556, chr(229) => 556, chr(230) => 889, chr(231) => 500, chr(232) => 556, chr(233) => 556, chr(234) => 556, chr(235) => 556, chr(236) => 278, chr(237) => 278, chr(238) => 278, chr(239) => 278, chr(240) => 556, chr(241) => 556, + chr(242) => 556, chr(243) => 556, chr(244) => 556, chr(245) => 556, chr(246) => 556, chr(247) => 584, chr(248) => 611, chr(249) => 556, chr(250) => 556, chr(251) => 556, chr(252) => 556, chr(253) => 500, chr(254) => 556, chr(255) => 500); + +//$desc=array('Ascent'=>718,'Descent'=>-207,'CapHeight'=>718,'FontBBox'=>'[-170 -225 1116 931]'); +$desc = array('Flags' => 96, 'FontBBox' => '[-170 -225 1116 931]', 'ItalicAngle' => -12, 'Ascent' => 931, 'Descent' => -225, 'Leading' => 0, 'CapHeight' => 718, 'XHeight' => 523, 'StemV' => 88, 'StemH' => 76, 'AvgWidth' => 513, 'MaxWidth' => 1015, 'MissingWidth' => 513); +$up = -100; +$ut = 50; +$kerninfo = array(chr(49) => array(chr(49) => -74,), chr(65) => array(chr(84) => -74, chr(86) => -55, chr(87) => -18, chr(89) => -74, chr(118) => -18, chr(119) => -18, chr(121) => -8, chr(146) => -37,), chr(70) => array(chr(44) => -128, chr(46) => -128, chr(65) => -74,), chr(76) => array(chr(84) => -74, chr(86) => -55, chr(87) => -37, chr(89) => -91, chr(121) => -18, chr(146) => -55,), chr(80) => array(chr(44) => -128, chr(46) => -128, chr(65) => -74,), chr(82) => array(chr(84) => -18, chr(86) => -18, chr(87) => -18, chr(89) => -37,), chr(84) => array(chr(44) => -91, chr(46) => -91, chr(58) => -74, chr(65) => -74, chr(79) => -18, chr(97) => -91, chr(99) => -91, chr(101) => -91, chr(105) => -8, chr(111) => -91, chr(114) => -74, chr(115) => -91, chr(117) => -74, chr(119) => -74, chr(121) => -74,), chr(86) => array(chr(44) => -74, chr(46) => -74, chr(58) => -18, chr(65) => -55, chr(97) => -37, chr(101) => -37, chr(105) => -18, chr(111) => -37, chr(114) => -18, chr(117) => -18, chr(121) => -18,), chr(87) => array(chr(44) => -37, chr(46) => -37, chr(65) => -18, chr(97) => -18, chr(101) => -18, chr(105) => -8,), chr(89) => array(chr(44) => -91, chr(46) => -91, chr(58) => -37, chr(65) => -55, chr(97) => -74, chr(101) => -55, chr(105) => -18, chr(111) => -55, chr(112) => -55, chr(113) => -55, chr(117) => -37, chr(118) => -37,), chr(102) => array(chr(146) => 37,), chr(114) => array(chr(44) => -55, chr(46) => -37, chr(146) => 37,), chr(118) => array(chr(44) => -74, chr(46) => -74,), chr(119) => array(chr(44) => -55, chr(46) => -55,), chr(121) => array(chr(44) => -74, chr(46) => -74,), chr(145) => array(chr(145) => -37,), chr(146) => array(chr(115) => -18, chr(146) => -37,),); diff --git a/Mpdf/data/font/csymbol.php b/Mpdf/data/font/csymbol.php new file mode 100644 index 0000000..76afad4 --- /dev/null +++ b/Mpdf/data/font/csymbol.php @@ -0,0 +1,20 @@ + 250, chr(1) => 250, chr(2) => 250, chr(3) => 250, chr(4) => 250, chr(5) => 250, chr(6) => 250, chr(7) => 250, chr(8) => 250, chr(9) => 250, chr(10) => 250, chr(11) => 250, chr(12) => 250, chr(13) => 250, chr(14) => 250, chr(15) => 250, chr(16) => 250, chr(17) => 250, chr(18) => 250, chr(19) => 250, chr(20) => 250, chr(21) => 250, + chr(22) => 250, chr(23) => 250, chr(24) => 250, chr(25) => 250, chr(26) => 250, chr(27) => 250, chr(28) => 250, chr(29) => 250, chr(30) => 250, chr(31) => 250, ' ' => 250, '!' => 333, '"' => 713, '#' => 500, '$' => 549, '%' => 833, '&' => 778, '\'' => 439, '(' => 333, ')' => 333, '*' => 500, '+' => 549, + ',' => 250, '-' => 549, '.' => 250, '/' => 278, '0' => 500, '1' => 500, '2' => 500, '3' => 500, '4' => 500, '5' => 500, '6' => 500, '7' => 500, '8' => 500, '9' => 500, ':' => 278, ';' => 278, '<' => 549, '=' => 549, '>' => 549, '?' => 444, '@' => 549, 'A' => 722, + 'B' => 667, 'C' => 722, 'D' => 612, 'E' => 611, 'F' => 763, 'G' => 603, 'H' => 722, 'I' => 333, 'J' => 631, 'K' => 722, 'L' => 686, 'M' => 889, 'N' => 722, 'O' => 722, 'P' => 768, 'Q' => 741, 'R' => 556, 'S' => 592, 'T' => 611, 'U' => 690, 'V' => 439, 'W' => 768, + 'X' => 645, 'Y' => 795, 'Z' => 611, '[' => 333, '\\' => 863, ']' => 333, '^' => 658, '_' => 500, '`' => 500, 'a' => 631, 'b' => 549, 'c' => 549, 'd' => 494, 'e' => 439, 'f' => 521, 'g' => 411, 'h' => 603, 'i' => 329, 'j' => 603, 'k' => 549, 'l' => 549, 'm' => 576, + 'n' => 521, 'o' => 549, 'p' => 549, 'q' => 521, 'r' => 549, 's' => 603, 't' => 439, 'u' => 576, 'v' => 713, 'w' => 686, 'x' => 493, 'y' => 686, 'z' => 494, '{' => 480, '|' => 200, '}' => 480, '~' => 549, chr(127) => 0, chr(128) => 0, chr(129) => 0, chr(130) => 0, chr(131) => 0, + chr(132) => 0, chr(133) => 0, chr(134) => 0, chr(135) => 0, chr(136) => 0, chr(137) => 0, chr(138) => 0, chr(139) => 0, chr(140) => 0, chr(141) => 0, chr(142) => 0, chr(143) => 0, chr(144) => 0, chr(145) => 0, chr(146) => 0, chr(147) => 0, chr(148) => 0, chr(149) => 0, chr(150) => 0, chr(151) => 0, chr(152) => 0, chr(153) => 0, + chr(154) => 0, chr(155) => 0, chr(156) => 0, chr(157) => 0, chr(158) => 0, chr(159) => 0, chr(160) => 750, chr(161) => 620, chr(162) => 247, chr(163) => 549, chr(164) => 167, chr(165) => 713, chr(166) => 500, chr(167) => 753, chr(168) => 753, chr(169) => 753, chr(170) => 753, chr(171) => 1042, chr(172) => 987, chr(173) => 603, chr(174) => 987, chr(175) => 603, + chr(176) => 400, chr(177) => 549, chr(178) => 411, chr(179) => 549, chr(180) => 549, chr(181) => 713, chr(182) => 494, chr(183) => 460, chr(184) => 549, chr(185) => 549, chr(186) => 549, chr(187) => 549, chr(188) => 1000, chr(189) => 603, chr(190) => 1000, chr(191) => 658, chr(192) => 823, chr(193) => 686, chr(194) => 795, chr(195) => 987, chr(196) => 768, chr(197) => 768, + chr(198) => 823, chr(199) => 768, chr(200) => 768, chr(201) => 713, chr(202) => 713, chr(203) => 713, chr(204) => 713, chr(205) => 713, chr(206) => 713, chr(207) => 713, chr(208) => 768, chr(209) => 713, chr(210) => 790, chr(211) => 790, chr(212) => 890, chr(213) => 823, chr(214) => 549, chr(215) => 250, chr(216) => 713, chr(217) => 603, chr(218) => 603, chr(219) => 1042, + chr(220) => 987, chr(221) => 603, chr(222) => 987, chr(223) => 603, chr(224) => 494, chr(225) => 329, chr(226) => 790, chr(227) => 790, chr(228) => 786, chr(229) => 713, chr(230) => 384, chr(231) => 384, chr(232) => 384, chr(233) => 384, chr(234) => 384, chr(235) => 384, chr(236) => 494, chr(237) => 494, chr(238) => 494, chr(239) => 494, chr(240) => 0, chr(241) => 329, + chr(242) => 274, chr(243) => 686, chr(244) => 686, chr(245) => 686, chr(246) => 384, chr(247) => 384, chr(248) => 384, chr(249) => 384, chr(250) => 384, chr(251) => 384, chr(252) => 494, chr(253) => 494, chr(254) => 494, chr(255) => 0); + +//$desc=array('FontBBox'=>'[-180 -293 1090 1010]'); +$desc = array('Flags' => 4, 'FontBBox' => '[-180 -293 1090 1010]', 'ItalicAngle' => 0, 'Ascent' => 1010, 'Descent' => -293, 'Leading' => 0, 'CapHeight' => 1010, 'StemV' => 85, 'StemH' => 92, 'AvgWidth' => 587, 'MaxWidth' => 1042, 'MissingWidth' => 587); +$up = -100; +$ut = 50; diff --git a/Mpdf/data/font/ctimes.php b/Mpdf/data/font/ctimes.php new file mode 100644 index 0000000..908696a --- /dev/null +++ b/Mpdf/data/font/ctimes.php @@ -0,0 +1,21 @@ + 250, chr(1) => 250, chr(2) => 250, chr(3) => 250, chr(4) => 250, chr(5) => 250, chr(6) => 250, chr(7) => 250, chr(8) => 250, chr(9) => 250, chr(10) => 250, chr(11) => 250, chr(12) => 250, chr(13) => 250, chr(14) => 250, chr(15) => 250, chr(16) => 250, chr(17) => 250, chr(18) => 250, chr(19) => 250, chr(20) => 250, chr(21) => 250, + chr(22) => 250, chr(23) => 250, chr(24) => 250, chr(25) => 250, chr(26) => 250, chr(27) => 250, chr(28) => 250, chr(29) => 250, chr(30) => 250, chr(31) => 250, ' ' => 250, '!' => 333, '"' => 408, '#' => 500, '$' => 500, '%' => 833, '&' => 778, '\'' => 180, '(' => 333, ')' => 333, '*' => 500, '+' => 564, + ',' => 250, '-' => 333, '.' => 250, '/' => 278, '0' => 500, '1' => 500, '2' => 500, '3' => 500, '4' => 500, '5' => 500, '6' => 500, '7' => 500, '8' => 500, '9' => 500, ':' => 278, ';' => 278, '<' => 564, '=' => 564, '>' => 564, '?' => 444, '@' => 921, 'A' => 722, + 'B' => 667, 'C' => 667, 'D' => 722, 'E' => 611, 'F' => 556, 'G' => 722, 'H' => 722, 'I' => 333, 'J' => 389, 'K' => 722, 'L' => 611, 'M' => 889, 'N' => 722, 'O' => 722, 'P' => 556, 'Q' => 722, 'R' => 667, 'S' => 556, 'T' => 611, 'U' => 722, 'V' => 722, 'W' => 944, + 'X' => 722, 'Y' => 722, 'Z' => 611, '[' => 333, '\\' => 278, ']' => 333, '^' => 469, '_' => 500, '`' => 333, 'a' => 444, 'b' => 500, 'c' => 444, 'd' => 500, 'e' => 444, 'f' => 333, 'g' => 500, 'h' => 500, 'i' => 278, 'j' => 278, 'k' => 500, 'l' => 278, 'm' => 778, + 'n' => 500, 'o' => 500, 'p' => 500, 'q' => 500, 'r' => 333, 's' => 389, 't' => 278, 'u' => 500, 'v' => 500, 'w' => 722, 'x' => 500, 'y' => 500, 'z' => 444, '{' => 480, '|' => 200, '}' => 480, '~' => 541, chr(127) => 350, chr(128) => 500, chr(129) => 350, chr(130) => 333, chr(131) => 500, + chr(132) => 444, chr(133) => 1000, chr(134) => 500, chr(135) => 500, chr(136) => 333, chr(137) => 1000, chr(138) => 556, chr(139) => 333, chr(140) => 889, chr(141) => 350, chr(142) => 611, chr(143) => 350, chr(144) => 350, chr(145) => 333, chr(146) => 333, chr(147) => 444, chr(148) => 444, chr(149) => 350, chr(150) => 500, chr(151) => 1000, chr(152) => 333, chr(153) => 980, + chr(154) => 389, chr(155) => 333, chr(156) => 722, chr(157) => 350, chr(158) => 444, chr(159) => 722, chr(160) => 250, chr(161) => 333, chr(162) => 500, chr(163) => 500, chr(164) => 500, chr(165) => 500, chr(166) => 200, chr(167) => 500, chr(168) => 333, chr(169) => 760, chr(170) => 276, chr(171) => 500, chr(172) => 564, chr(173) => 333, chr(174) => 760, chr(175) => 333, + chr(176) => 400, chr(177) => 564, chr(178) => 300, chr(179) => 300, chr(180) => 333, chr(181) => 500, chr(182) => 453, chr(183) => 250, chr(184) => 333, chr(185) => 300, chr(186) => 310, chr(187) => 500, chr(188) => 750, chr(189) => 750, chr(190) => 750, chr(191) => 444, chr(192) => 722, chr(193) => 722, chr(194) => 722, chr(195) => 722, chr(196) => 722, chr(197) => 722, + chr(198) => 889, chr(199) => 667, chr(200) => 611, chr(201) => 611, chr(202) => 611, chr(203) => 611, chr(204) => 333, chr(205) => 333, chr(206) => 333, chr(207) => 333, chr(208) => 722, chr(209) => 722, chr(210) => 722, chr(211) => 722, chr(212) => 722, chr(213) => 722, chr(214) => 722, chr(215) => 564, chr(216) => 722, chr(217) => 722, chr(218) => 722, chr(219) => 722, + chr(220) => 722, chr(221) => 722, chr(222) => 556, chr(223) => 500, chr(224) => 444, chr(225) => 444, chr(226) => 444, chr(227) => 444, chr(228) => 444, chr(229) => 444, chr(230) => 667, chr(231) => 444, chr(232) => 444, chr(233) => 444, chr(234) => 444, chr(235) => 444, chr(236) => 278, chr(237) => 278, chr(238) => 278, chr(239) => 278, chr(240) => 500, chr(241) => 500, + chr(242) => 500, chr(243) => 500, chr(244) => 500, chr(245) => 500, chr(246) => 500, chr(247) => 564, chr(248) => 500, chr(249) => 500, chr(250) => 500, chr(251) => 500, chr(252) => 500, chr(253) => 500, chr(254) => 500, chr(255) => 500); + +//$desc=array('Ascent'=>683,'Descent'=>-217,'CapHeight'=>662,'FontBBox'=>'[-168 -218 1000 898]'); +$desc = array('Flags' => 32, 'FontBBox' => '[-168 -218 1000 898]', 'ItalicAngle' => 0, 'Ascent' => 898, 'Descent' => -218, 'Leading' => 0, 'CapHeight' => 662, 'XHeight' => 450, 'StemV' => 84, 'StemH' => 28, 'AvgWidth' => 495, 'MaxWidth' => 1000, 'MissingWidth' => 495); +$up = -100; +$ut = 50; +$kerninfo = array(chr(49) => array(chr(49) => -37,), chr(65) => array(chr(84) => -110, chr(86) => -128, chr(87) => -80, chr(89) => -91, chr(118) => -74, chr(119) => -91, chr(121) => -91, chr(146) => -110,), chr(70) => array(chr(44) => -80, chr(46) => -80, chr(65) => -74,), chr(76) => array(chr(84) => -91, chr(86) => -91, chr(87) => -74, chr(89) => -100, chr(121) => -55, chr(146) => -91,), chr(80) => array(chr(44) => -110, chr(46) => -110, chr(65) => -91,), chr(82) => array(chr(84) => -60, chr(86) => -80, chr(87) => -55, chr(89) => -55, chr(121) => -40,), chr(84) => array(chr(44) => -74, chr(46) => -74, chr(58) => -49, chr(65) => -80, chr(79) => -18, chr(97) => -69, chr(99) => -69, chr(101) => -69, chr(105) => -35, chr(111) => -69, chr(114) => -35, chr(115) => -69, chr(117) => -35, chr(119) => -69, chr(121) => -69,), chr(86) => array(chr(44) => -128, chr(46) => -128, chr(58) => -74, chr(65) => -128, chr(97) => -110, chr(101) => -110, chr(105) => -60, chr(111) => -128, chr(114) => -60, chr(117) => -60, chr(121) => -110,), chr(87) => array(chr(44) => -91, chr(46) => -91, chr(58) => -37, chr(65) => -110, chr(97) => -80, chr(101) => -80, chr(105) => -40, chr(111) => -80, chr(114) => -40, chr(117) => -40, chr(121) => -60,), chr(89) => array(chr(44) => -128, chr(46) => -128, chr(58) => -91, chr(65) => -110, chr(97) => -100, chr(101) => -100, chr(105) => -55, chr(111) => -100, chr(112) => -91, chr(113) => -110, chr(117) => -110, chr(118) => -100,), chr(102) => array(chr(102) => -18, chr(146) => 55,), chr(114) => array(chr(44) => -40, chr(46) => -55, chr(103) => -18, chr(146) => 37,), chr(118) => array(chr(44) => -64, chr(46) => -64,), chr(119) => array(chr(44) => -64, chr(46) => -64,), chr(121) => array(chr(44) => -64, chr(46) => -64,), chr(145) => array(chr(145) => -74,), chr(146) => array(chr(115) => -55, chr(116) => -18, chr(146) => -74,),); diff --git a/Mpdf/data/font/ctimesb.php b/Mpdf/data/font/ctimesb.php new file mode 100644 index 0000000..0c28fad --- /dev/null +++ b/Mpdf/data/font/ctimesb.php @@ -0,0 +1,21 @@ + 250, chr(1) => 250, chr(2) => 250, chr(3) => 250, chr(4) => 250, chr(5) => 250, chr(6) => 250, chr(7) => 250, chr(8) => 250, chr(9) => 250, chr(10) => 250, chr(11) => 250, chr(12) => 250, chr(13) => 250, chr(14) => 250, chr(15) => 250, chr(16) => 250, chr(17) => 250, chr(18) => 250, chr(19) => 250, chr(20) => 250, chr(21) => 250, + chr(22) => 250, chr(23) => 250, chr(24) => 250, chr(25) => 250, chr(26) => 250, chr(27) => 250, chr(28) => 250, chr(29) => 250, chr(30) => 250, chr(31) => 250, ' ' => 250, '!' => 333, '"' => 555, '#' => 500, '$' => 500, '%' => 1000, '&' => 833, '\'' => 278, '(' => 333, ')' => 333, '*' => 500, '+' => 570, + ',' => 250, '-' => 333, '.' => 250, '/' => 278, '0' => 500, '1' => 500, '2' => 500, '3' => 500, '4' => 500, '5' => 500, '6' => 500, '7' => 500, '8' => 500, '9' => 500, ':' => 333, ';' => 333, '<' => 570, '=' => 570, '>' => 570, '?' => 500, '@' => 930, 'A' => 722, + 'B' => 667, 'C' => 722, 'D' => 722, 'E' => 667, 'F' => 611, 'G' => 778, 'H' => 778, 'I' => 389, 'J' => 500, 'K' => 778, 'L' => 667, 'M' => 944, 'N' => 722, 'O' => 778, 'P' => 611, 'Q' => 778, 'R' => 722, 'S' => 556, 'T' => 667, 'U' => 722, 'V' => 722, 'W' => 1000, + 'X' => 722, 'Y' => 722, 'Z' => 667, '[' => 333, '\\' => 278, ']' => 333, '^' => 581, '_' => 500, '`' => 333, 'a' => 500, 'b' => 556, 'c' => 444, 'd' => 556, 'e' => 444, 'f' => 333, 'g' => 500, 'h' => 556, 'i' => 278, 'j' => 333, 'k' => 556, 'l' => 278, 'm' => 833, + 'n' => 556, 'o' => 500, 'p' => 556, 'q' => 556, 'r' => 444, 's' => 389, 't' => 333, 'u' => 556, 'v' => 500, 'w' => 722, 'x' => 500, 'y' => 500, 'z' => 444, '{' => 394, '|' => 220, '}' => 394, '~' => 520, chr(127) => 350, chr(128) => 500, chr(129) => 350, chr(130) => 333, chr(131) => 500, + chr(132) => 500, chr(133) => 1000, chr(134) => 500, chr(135) => 500, chr(136) => 333, chr(137) => 1000, chr(138) => 556, chr(139) => 333, chr(140) => 1000, chr(141) => 350, chr(142) => 667, chr(143) => 350, chr(144) => 350, chr(145) => 333, chr(146) => 333, chr(147) => 500, chr(148) => 500, chr(149) => 350, chr(150) => 500, chr(151) => 1000, chr(152) => 333, chr(153) => 1000, + chr(154) => 389, chr(155) => 333, chr(156) => 722, chr(157) => 350, chr(158) => 444, chr(159) => 722, chr(160) => 250, chr(161) => 333, chr(162) => 500, chr(163) => 500, chr(164) => 500, chr(165) => 500, chr(166) => 220, chr(167) => 500, chr(168) => 333, chr(169) => 747, chr(170) => 300, chr(171) => 500, chr(172) => 570, chr(173) => 333, chr(174) => 747, chr(175) => 333, + chr(176) => 400, chr(177) => 570, chr(178) => 300, chr(179) => 300, chr(180) => 333, chr(181) => 556, chr(182) => 540, chr(183) => 250, chr(184) => 333, chr(185) => 300, chr(186) => 330, chr(187) => 500, chr(188) => 750, chr(189) => 750, chr(190) => 750, chr(191) => 500, chr(192) => 722, chr(193) => 722, chr(194) => 722, chr(195) => 722, chr(196) => 722, chr(197) => 722, + chr(198) => 1000, chr(199) => 722, chr(200) => 667, chr(201) => 667, chr(202) => 667, chr(203) => 667, chr(204) => 389, chr(205) => 389, chr(206) => 389, chr(207) => 389, chr(208) => 722, chr(209) => 722, chr(210) => 778, chr(211) => 778, chr(212) => 778, chr(213) => 778, chr(214) => 778, chr(215) => 570, chr(216) => 778, chr(217) => 722, chr(218) => 722, chr(219) => 722, + chr(220) => 722, chr(221) => 722, chr(222) => 611, chr(223) => 556, chr(224) => 500, chr(225) => 500, chr(226) => 500, chr(227) => 500, chr(228) => 500, chr(229) => 500, chr(230) => 722, chr(231) => 444, chr(232) => 444, chr(233) => 444, chr(234) => 444, chr(235) => 444, chr(236) => 278, chr(237) => 278, chr(238) => 278, chr(239) => 278, chr(240) => 500, chr(241) => 556, + chr(242) => 500, chr(243) => 500, chr(244) => 500, chr(245) => 500, chr(246) => 500, chr(247) => 570, chr(248) => 500, chr(249) => 556, chr(250) => 556, chr(251) => 556, chr(252) => 556, chr(253) => 500, chr(254) => 556, chr(255) => 500); + +//$desc=array('Ascent'=>683,'Descent'=>-217,'CapHeight'=>676,'FontBBox'=>'[-168 -218 1000 935]'); +$desc = array('Flags' => 32, 'FontBBox' => '[-168 -218 1000 935]', 'ItalicAngle' => 0, 'Ascent' => 935, 'Descent' => -218, 'Leading' => 0, 'CapHeight' => 676, 'XHeight' => 461, 'StemV' => 139, 'StemH' => 44, 'AvgWidth' => 516, 'MaxWidth' => 1000, 'MissingWidth' => 516); +$up = -100; +$ut = 50; +$kerninfo = array(chr(49) => array(chr(49) => -55,), chr(65) => array(chr(84) => -74, chr(86) => -128, chr(87) => -110, chr(89) => -91, chr(118) => -74, chr(119) => -74, chr(121) => -74, chr(146) => -74,), chr(70) => array(chr(44) => -91, chr(46) => -91, chr(65) => -74,), chr(76) => array(chr(84) => -91, chr(86) => -91, chr(87) => -91, chr(89) => -91, chr(121) => -55, chr(146) => -91,), chr(80) => array(chr(44) => -91, chr(46) => -91, chr(65) => -74,), chr(82) => array(chr(84) => -35, chr(86) => -35, chr(87) => -35, chr(89) => -35, chr(121) => -35,), chr(84) => array(chr(44) => -74, chr(46) => -74, chr(58) => -74, chr(65) => -74, chr(79) => -18, chr(97) => -91, chr(99) => -91, chr(101) => -91, chr(105) => -18, chr(111) => -91, chr(114) => -74, chr(115) => -91, chr(117) => -91, chr(119) => -74, chr(121) => -74,), chr(86) => array(chr(44) => -128, chr(46) => -128, chr(58) => -91, chr(65) => -128, chr(79) => -20, chr(97) => -91, chr(101) => -91, chr(105) => -37, chr(111) => -91, chr(114) => -74, chr(117) => -91, chr(121) => -91,), chr(87) => array(chr(44) => -91, chr(46) => -91, chr(58) => -55, chr(65) => -110, chr(97) => -55, chr(101) => -55, chr(105) => -18, chr(111) => -55, chr(114) => -18, chr(117) => -18, chr(121) => -37,), chr(89) => array(chr(44) => -91, chr(46) => -91, chr(58) => -91, chr(65) => -91, chr(97) => -110, chr(101) => -110, chr(105) => -37, chr(111) => -110, chr(112) => -91, chr(113) => -110, chr(117) => -91, chr(118) => -110,), chr(102) => array(chr(102) => 0, chr(146) => 55,), chr(114) => array(chr(44) => -91, chr(46) => -91, chr(99) => -18, chr(101) => -18, chr(104) => 0, chr(111) => -18, chr(113) => -18, chr(116) => 0, chr(119) => 0, chr(120) => 0, chr(121) => 0, chr(122) => 0, chr(146) => 18,), chr(118) => array(chr(44) => -55, chr(46) => -55,), chr(119) => array(chr(44) => -55, chr(46) => -55,), chr(121) => array(chr(44) => -55, chr(46) => -55,), chr(145) => array(chr(145) => -74,), chr(146) => array(chr(115) => -37, chr(146) => -74,),); diff --git a/Mpdf/data/font/ctimesbi.php b/Mpdf/data/font/ctimesbi.php new file mode 100644 index 0000000..d769c80 --- /dev/null +++ b/Mpdf/data/font/ctimesbi.php @@ -0,0 +1,21 @@ + 250, chr(1) => 250, chr(2) => 250, chr(3) => 250, chr(4) => 250, chr(5) => 250, chr(6) => 250, chr(7) => 250, chr(8) => 250, chr(9) => 250, chr(10) => 250, chr(11) => 250, chr(12) => 250, chr(13) => 250, chr(14) => 250, chr(15) => 250, chr(16) => 250, chr(17) => 250, chr(18) => 250, chr(19) => 250, chr(20) => 250, chr(21) => 250, + chr(22) => 250, chr(23) => 250, chr(24) => 250, chr(25) => 250, chr(26) => 250, chr(27) => 250, chr(28) => 250, chr(29) => 250, chr(30) => 250, chr(31) => 250, ' ' => 250, '!' => 389, '"' => 555, '#' => 500, '$' => 500, '%' => 833, '&' => 778, '\'' => 278, '(' => 333, ')' => 333, '*' => 500, '+' => 570, + ',' => 250, '-' => 333, '.' => 250, '/' => 278, '0' => 500, '1' => 500, '2' => 500, '3' => 500, '4' => 500, '5' => 500, '6' => 500, '7' => 500, '8' => 500, '9' => 500, ':' => 333, ';' => 333, '<' => 570, '=' => 570, '>' => 570, '?' => 500, '@' => 832, 'A' => 667, + 'B' => 667, 'C' => 667, 'D' => 722, 'E' => 667, 'F' => 667, 'G' => 722, 'H' => 778, 'I' => 389, 'J' => 500, 'K' => 667, 'L' => 611, 'M' => 889, 'N' => 722, 'O' => 722, 'P' => 611, 'Q' => 722, 'R' => 667, 'S' => 556, 'T' => 611, 'U' => 722, 'V' => 667, 'W' => 889, + 'X' => 667, 'Y' => 611, 'Z' => 611, '[' => 333, '\\' => 278, ']' => 333, '^' => 570, '_' => 500, '`' => 333, 'a' => 500, 'b' => 500, 'c' => 444, 'd' => 500, 'e' => 444, 'f' => 333, 'g' => 500, 'h' => 556, 'i' => 278, 'j' => 278, 'k' => 500, 'l' => 278, 'm' => 778, + 'n' => 556, 'o' => 500, 'p' => 500, 'q' => 500, 'r' => 389, 's' => 389, 't' => 278, 'u' => 556, 'v' => 444, 'w' => 667, 'x' => 500, 'y' => 444, 'z' => 389, '{' => 348, '|' => 220, '}' => 348, '~' => 570, chr(127) => 350, chr(128) => 500, chr(129) => 350, chr(130) => 333, chr(131) => 500, + chr(132) => 500, chr(133) => 1000, chr(134) => 500, chr(135) => 500, chr(136) => 333, chr(137) => 1000, chr(138) => 556, chr(139) => 333, chr(140) => 944, chr(141) => 350, chr(142) => 611, chr(143) => 350, chr(144) => 350, chr(145) => 333, chr(146) => 333, chr(147) => 500, chr(148) => 500, chr(149) => 350, chr(150) => 500, chr(151) => 1000, chr(152) => 333, chr(153) => 1000, + chr(154) => 389, chr(155) => 333, chr(156) => 722, chr(157) => 350, chr(158) => 389, chr(159) => 611, chr(160) => 250, chr(161) => 389, chr(162) => 500, chr(163) => 500, chr(164) => 500, chr(165) => 500, chr(166) => 220, chr(167) => 500, chr(168) => 333, chr(169) => 747, chr(170) => 266, chr(171) => 500, chr(172) => 606, chr(173) => 333, chr(174) => 747, chr(175) => 333, + chr(176) => 400, chr(177) => 570, chr(178) => 300, chr(179) => 300, chr(180) => 333, chr(181) => 576, chr(182) => 500, chr(183) => 250, chr(184) => 333, chr(185) => 300, chr(186) => 300, chr(187) => 500, chr(188) => 750, chr(189) => 750, chr(190) => 750, chr(191) => 500, chr(192) => 667, chr(193) => 667, chr(194) => 667, chr(195) => 667, chr(196) => 667, chr(197) => 667, + chr(198) => 944, chr(199) => 667, chr(200) => 667, chr(201) => 667, chr(202) => 667, chr(203) => 667, chr(204) => 389, chr(205) => 389, chr(206) => 389, chr(207) => 389, chr(208) => 722, chr(209) => 722, chr(210) => 722, chr(211) => 722, chr(212) => 722, chr(213) => 722, chr(214) => 722, chr(215) => 570, chr(216) => 722, chr(217) => 722, chr(218) => 722, chr(219) => 722, + chr(220) => 722, chr(221) => 611, chr(222) => 611, chr(223) => 500, chr(224) => 500, chr(225) => 500, chr(226) => 500, chr(227) => 500, chr(228) => 500, chr(229) => 500, chr(230) => 722, chr(231) => 444, chr(232) => 444, chr(233) => 444, chr(234) => 444, chr(235) => 444, chr(236) => 278, chr(237) => 278, chr(238) => 278, chr(239) => 278, chr(240) => 500, chr(241) => 556, + chr(242) => 500, chr(243) => 500, chr(244) => 500, chr(245) => 500, chr(246) => 500, chr(247) => 570, chr(248) => 500, chr(249) => 556, chr(250) => 556, chr(251) => 556, chr(252) => 556, chr(253) => 444, chr(254) => 500, chr(255) => 444); + +//$desc=array('Ascent'=>683,'Descent'=>-217,'CapHeight'=>669,'FontBBox'=>'[-200 -218 996 921]'); +$desc = array('Flags' => 96, 'FontBBox' => '[-200 -218 996 921]', 'ItalicAngle' => -15, 'Ascent' => 921, 'Descent' => -218, 'Leading' => 0, 'CapHeight' => 669, 'XHeight' => 462, 'StemV' => 121, 'StemH' => 42, 'AvgWidth' => 501, 'MaxWidth' => 1000, 'MissingWidth' => 501); +$up = -100; +$ut = 50; +$kerninfo = array(chr(49) => array(chr(49) => -55,), chr(65) => array(chr(84) => -55, chr(86) => -74, chr(87) => -91, chr(89) => -55, chr(118) => -74, chr(119) => -74, chr(121) => -74, chr(146) => -74,), chr(70) => array(chr(44) => -128, chr(46) => -128, chr(65) => -91,), chr(76) => array(chr(84) => -18, chr(86) => -37, chr(87) => -37, chr(89) => -37, chr(121) => -37, chr(146) => -55,), chr(80) => array(chr(44) => -128, chr(46) => -128, chr(65) => -74,), chr(82) => array(chr(86) => -18, chr(87) => -18, chr(89) => -18, chr(121) => -18,), chr(84) => array(chr(44) => -91, chr(46) => -91, chr(58) => -74, chr(65) => -55, chr(79) => -18, chr(97) => -91, chr(99) => -91, chr(101) => -91, chr(105) => -37, chr(111) => -91, chr(114) => -37, chr(115) => -91, chr(117) => -37, chr(119) => -37, chr(121) => -37,), chr(86) => array(chr(44) => -128, chr(46) => -128, chr(58) => -74, chr(65) => -74, chr(97) => -110, chr(101) => -110, chr(105) => -55, chr(111) => -110, chr(114) => -55, chr(117) => -55, chr(121) => -74,), chr(87) => array(chr(44) => -74, chr(46) => -74, chr(58) => -55, chr(65) => -74, chr(97) => -74, chr(101) => -74, chr(105) => -37, chr(111) => -74, chr(114) => -74, chr(117) => -55, chr(121) => -55,), chr(89) => array(chr(44) => -91, chr(46) => -74, chr(58) => -91, chr(65) => -74, chr(97) => -91, chr(101) => -110, chr(105) => -55, chr(111) => -110, chr(112) => -74, chr(113) => -110, chr(117) => -91, chr(118) => -91,), chr(102) => array(chr(102) => -18, chr(146) => 55,), chr(114) => array(chr(44) => -55, chr(46) => -55, chr(146) => 37,), chr(118) => array(chr(44) => -37, chr(46) => -37,), chr(119) => array(chr(44) => -37, chr(46) => -37,), chr(121) => array(chr(44) => -37, chr(46) => -37,), chr(145) => array(chr(145) => -74,), chr(146) => array(chr(115) => -74, chr(116) => -37, chr(146) => -74,),); diff --git a/Mpdf/data/font/ctimesi.php b/Mpdf/data/font/ctimesi.php new file mode 100644 index 0000000..8f5cafc --- /dev/null +++ b/Mpdf/data/font/ctimesi.php @@ -0,0 +1,21 @@ + 250, chr(1) => 250, chr(2) => 250, chr(3) => 250, chr(4) => 250, chr(5) => 250, chr(6) => 250, chr(7) => 250, chr(8) => 250, chr(9) => 250, chr(10) => 250, chr(11) => 250, chr(12) => 250, chr(13) => 250, chr(14) => 250, chr(15) => 250, chr(16) => 250, chr(17) => 250, chr(18) => 250, chr(19) => 250, chr(20) => 250, chr(21) => 250, + chr(22) => 250, chr(23) => 250, chr(24) => 250, chr(25) => 250, chr(26) => 250, chr(27) => 250, chr(28) => 250, chr(29) => 250, chr(30) => 250, chr(31) => 250, ' ' => 250, '!' => 333, '"' => 420, '#' => 500, '$' => 500, '%' => 833, '&' => 778, '\'' => 214, '(' => 333, ')' => 333, '*' => 500, '+' => 675, + ',' => 250, '-' => 333, '.' => 250, '/' => 278, '0' => 500, '1' => 500, '2' => 500, '3' => 500, '4' => 500, '5' => 500, '6' => 500, '7' => 500, '8' => 500, '9' => 500, ':' => 333, ';' => 333, '<' => 675, '=' => 675, '>' => 675, '?' => 500, '@' => 920, 'A' => 611, + 'B' => 611, 'C' => 667, 'D' => 722, 'E' => 611, 'F' => 611, 'G' => 722, 'H' => 722, 'I' => 333, 'J' => 444, 'K' => 667, 'L' => 556, 'M' => 833, 'N' => 667, 'O' => 722, 'P' => 611, 'Q' => 722, 'R' => 611, 'S' => 500, 'T' => 556, 'U' => 722, 'V' => 611, 'W' => 833, + 'X' => 611, 'Y' => 556, 'Z' => 556, '[' => 389, '\\' => 278, ']' => 389, '^' => 422, '_' => 500, '`' => 333, 'a' => 500, 'b' => 500, 'c' => 444, 'd' => 500, 'e' => 444, 'f' => 278, 'g' => 500, 'h' => 500, 'i' => 278, 'j' => 278, 'k' => 444, 'l' => 278, 'm' => 722, + 'n' => 500, 'o' => 500, 'p' => 500, 'q' => 500, 'r' => 389, 's' => 389, 't' => 278, 'u' => 500, 'v' => 444, 'w' => 667, 'x' => 444, 'y' => 444, 'z' => 389, '{' => 400, '|' => 275, '}' => 400, '~' => 541, chr(127) => 350, chr(128) => 500, chr(129) => 350, chr(130) => 333, chr(131) => 500, + chr(132) => 556, chr(133) => 889, chr(134) => 500, chr(135) => 500, chr(136) => 333, chr(137) => 1000, chr(138) => 500, chr(139) => 333, chr(140) => 944, chr(141) => 350, chr(142) => 556, chr(143) => 350, chr(144) => 350, chr(145) => 333, chr(146) => 333, chr(147) => 556, chr(148) => 556, chr(149) => 350, chr(150) => 500, chr(151) => 889, chr(152) => 333, chr(153) => 980, + chr(154) => 389, chr(155) => 333, chr(156) => 667, chr(157) => 350, chr(158) => 389, chr(159) => 556, chr(160) => 250, chr(161) => 389, chr(162) => 500, chr(163) => 500, chr(164) => 500, chr(165) => 500, chr(166) => 275, chr(167) => 500, chr(168) => 333, chr(169) => 760, chr(170) => 276, chr(171) => 500, chr(172) => 675, chr(173) => 333, chr(174) => 760, chr(175) => 333, + chr(176) => 400, chr(177) => 675, chr(178) => 300, chr(179) => 300, chr(180) => 333, chr(181) => 500, chr(182) => 523, chr(183) => 250, chr(184) => 333, chr(185) => 300, chr(186) => 310, chr(187) => 500, chr(188) => 750, chr(189) => 750, chr(190) => 750, chr(191) => 500, chr(192) => 611, chr(193) => 611, chr(194) => 611, chr(195) => 611, chr(196) => 611, chr(197) => 611, + chr(198) => 889, chr(199) => 667, chr(200) => 611, chr(201) => 611, chr(202) => 611, chr(203) => 611, chr(204) => 333, chr(205) => 333, chr(206) => 333, chr(207) => 333, chr(208) => 722, chr(209) => 667, chr(210) => 722, chr(211) => 722, chr(212) => 722, chr(213) => 722, chr(214) => 722, chr(215) => 675, chr(216) => 722, chr(217) => 722, chr(218) => 722, chr(219) => 722, + chr(220) => 722, chr(221) => 556, chr(222) => 611, chr(223) => 500, chr(224) => 500, chr(225) => 500, chr(226) => 500, chr(227) => 500, chr(228) => 500, chr(229) => 500, chr(230) => 667, chr(231) => 444, chr(232) => 444, chr(233) => 444, chr(234) => 444, chr(235) => 444, chr(236) => 278, chr(237) => 278, chr(238) => 278, chr(239) => 278, chr(240) => 500, chr(241) => 500, + chr(242) => 500, chr(243) => 500, chr(244) => 500, chr(245) => 500, chr(246) => 500, chr(247) => 675, chr(248) => 500, chr(249) => 500, chr(250) => 500, chr(251) => 500, chr(252) => 500, chr(253) => 444, chr(254) => 500, chr(255) => 444); + +//$desc=array('Ascent'=>683,'Descent'=>-217,'CapHeight'=>653,'FontBBox'=>'[-169 -217 1010 883]'); +$desc = array('Flags' => 96, 'FontBBox' => '[-169 -217 1010 883]', 'ItalicAngle' => -15.5, 'Ascent' => 883, 'Descent' => -217, 'Leading' => 0, 'CapHeight' => 653, 'XHeight' => 441, 'StemV' => 76, 'StemH' => 32, 'AvgWidth' => 491, 'MaxWidth' => 1000, 'MissingWidth' => 491); +$up = -100; +$ut = 50; +$kerninfo = array(chr(49) => array(chr(49) => -74,), chr(65) => array(chr(84) => -37, chr(86) => -49, chr(87) => -37, chr(89) => -55, chr(118) => -55, chr(119) => -55, chr(121) => -55, chr(146) => -37,), chr(70) => array(chr(44) => -128, chr(46) => -128, chr(65) => -128,), chr(76) => array(chr(84) => -20, chr(86) => -37, chr(87) => -37, chr(89) => -20, chr(121) => -29, chr(146) => -37,), chr(80) => array(chr(44) => -128, chr(46) => -128, chr(65) => -128,), chr(82) => array(chr(84) => 0, chr(86) => -18, chr(87) => -18, chr(89) => -18, chr(121) => -18,), chr(84) => array(chr(44) => -74, chr(46) => -74, chr(58) => -55, chr(65) => -74, chr(79) => -18, chr(97) => -91, chr(99) => -91, chr(101) => -91, chr(105) => -55, chr(111) => -91, chr(114) => -55, chr(115) => -91, chr(117) => -55, chr(119) => -74, chr(121) => -74,), chr(86) => array(chr(44) => -128, chr(46) => -128, chr(58) => -64, chr(65) => -74, chr(79) => -29, chr(97) => -110, chr(101) => -110, chr(105) => -74, chr(111) => -110, chr(114) => -74, chr(117) => -74, chr(121) => -91,), chr(87) => array(chr(44) => -91, chr(46) => -91, chr(58) => -64, chr(65) => -69, chr(97) => -91, chr(101) => -91, chr(105) => -55, chr(111) => -91, chr(114) => -55, chr(117) => -55, chr(121) => -91,), chr(89) => array(chr(44) => -91, chr(46) => -91, chr(58) => -64, chr(65) => -69, chr(97) => -91, chr(101) => -91, chr(105) => -74, chr(111) => -91, chr(112) => -91, chr(113) => -110, chr(117) => -91, chr(118) => -91,), chr(102) => array(chr(146) => 91,), chr(114) => array(chr(44) => -110, chr(46) => -110, chr(99) => -37, chr(100) => -37, chr(101) => -37, chr(103) => -37, chr(104) => -18, chr(111) => -37, chr(113) => -37, chr(114) => 0, chr(116) => 0, chr(117) => 0, chr(118) => 0, chr(119) => 0, chr(120) => 0, chr(121) => 0, chr(146) => 37,), chr(118) => array(chr(44) => -74, chr(46) => -74,), chr(119) => array(chr(44) => -74, chr(46) => -74,), chr(121) => array(chr(44) => -55, chr(46) => -55,), chr(145) => array(chr(145) => -110,), chr(146) => array(chr(115) => -128, chr(116) => -110, chr(146) => -110,),); diff --git a/Mpdf/data/font/czapfdingbats.php b/Mpdf/data/font/czapfdingbats.php new file mode 100644 index 0000000..9dd68c6 --- /dev/null +++ b/Mpdf/data/font/czapfdingbats.php @@ -0,0 +1,20 @@ + 0, chr(1) => 0, chr(2) => 0, chr(3) => 0, chr(4) => 0, chr(5) => 0, chr(6) => 0, chr(7) => 0, chr(8) => 0, chr(9) => 0, chr(10) => 0, chr(11) => 0, chr(12) => 0, chr(13) => 0, chr(14) => 0, chr(15) => 0, chr(16) => 0, chr(17) => 0, chr(18) => 0, chr(19) => 0, chr(20) => 0, chr(21) => 0, + chr(22) => 0, chr(23) => 0, chr(24) => 0, chr(25) => 0, chr(26) => 0, chr(27) => 0, chr(28) => 0, chr(29) => 0, chr(30) => 0, chr(31) => 0, ' ' => 278, '!' => 974, '"' => 961, '#' => 974, '$' => 980, '%' => 719, '&' => 789, '\'' => 790, '(' => 791, ')' => 690, '*' => 960, '+' => 939, + ',' => 549, '-' => 855, '.' => 911, '/' => 933, '0' => 911, '1' => 945, '2' => 974, '3' => 755, '4' => 846, '5' => 762, '6' => 761, '7' => 571, '8' => 677, '9' => 763, ':' => 760, ';' => 759, '<' => 754, '=' => 494, '>' => 552, '?' => 537, '@' => 577, 'A' => 692, + 'B' => 786, 'C' => 788, 'D' => 788, 'E' => 790, 'F' => 793, 'G' => 794, 'H' => 816, 'I' => 823, 'J' => 789, 'K' => 841, 'L' => 823, 'M' => 833, 'N' => 816, 'O' => 831, 'P' => 923, 'Q' => 744, 'R' => 723, 'S' => 749, 'T' => 790, 'U' => 792, 'V' => 695, 'W' => 776, + 'X' => 768, 'Y' => 792, 'Z' => 759, '[' => 707, '\\' => 708, ']' => 682, '^' => 701, '_' => 826, '`' => 815, 'a' => 789, 'b' => 789, 'c' => 707, 'd' => 687, 'e' => 696, 'f' => 689, 'g' => 786, 'h' => 787, 'i' => 713, 'j' => 791, 'k' => 785, 'l' => 791, 'm' => 873, + 'n' => 761, 'o' => 762, 'p' => 762, 'q' => 759, 'r' => 759, 's' => 892, 't' => 892, 'u' => 788, 'v' => 784, 'w' => 438, 'x' => 138, 'y' => 277, 'z' => 415, '{' => 392, '|' => 392, '}' => 668, '~' => 668, chr(127) => 0, chr(128) => 390, chr(129) => 390, chr(130) => 317, chr(131) => 317, + chr(132) => 276, chr(133) => 276, chr(134) => 509, chr(135) => 509, chr(136) => 410, chr(137) => 410, chr(138) => 234, chr(139) => 234, chr(140) => 334, chr(141) => 334, chr(142) => 0, chr(143) => 0, chr(144) => 0, chr(145) => 0, chr(146) => 0, chr(147) => 0, chr(148) => 0, chr(149) => 0, chr(150) => 0, chr(151) => 0, chr(152) => 0, chr(153) => 0, + chr(154) => 0, chr(155) => 0, chr(156) => 0, chr(157) => 0, chr(158) => 0, chr(159) => 0, chr(160) => 0, chr(161) => 732, chr(162) => 544, chr(163) => 544, chr(164) => 910, chr(165) => 667, chr(166) => 760, chr(167) => 760, chr(168) => 776, chr(169) => 595, chr(170) => 694, chr(171) => 626, chr(172) => 788, chr(173) => 788, chr(174) => 788, chr(175) => 788, + chr(176) => 788, chr(177) => 788, chr(178) => 788, chr(179) => 788, chr(180) => 788, chr(181) => 788, chr(182) => 788, chr(183) => 788, chr(184) => 788, chr(185) => 788, chr(186) => 788, chr(187) => 788, chr(188) => 788, chr(189) => 788, chr(190) => 788, chr(191) => 788, chr(192) => 788, chr(193) => 788, chr(194) => 788, chr(195) => 788, chr(196) => 788, chr(197) => 788, + chr(198) => 788, chr(199) => 788, chr(200) => 788, chr(201) => 788, chr(202) => 788, chr(203) => 788, chr(204) => 788, chr(205) => 788, chr(206) => 788, chr(207) => 788, chr(208) => 788, chr(209) => 788, chr(210) => 788, chr(211) => 788, chr(212) => 894, chr(213) => 838, chr(214) => 1016, chr(215) => 458, chr(216) => 748, chr(217) => 924, chr(218) => 748, chr(219) => 918, + chr(220) => 927, chr(221) => 928, chr(222) => 928, chr(223) => 834, chr(224) => 873, chr(225) => 828, chr(226) => 924, chr(227) => 924, chr(228) => 917, chr(229) => 930, chr(230) => 931, chr(231) => 463, chr(232) => 883, chr(233) => 836, chr(234) => 836, chr(235) => 867, chr(236) => 867, chr(237) => 696, chr(238) => 696, chr(239) => 874, chr(240) => 0, chr(241) => 874, + chr(242) => 760, chr(243) => 946, chr(244) => 771, chr(245) => 865, chr(246) => 771, chr(247) => 888, chr(248) => 967, chr(249) => 888, chr(250) => 831, chr(251) => 873, chr(252) => 927, chr(253) => 970, chr(254) => 918, chr(255) => 0); + +//$desc=array('FontBBox'=>'[-1 -143 981 820]'); +$desc = array('Flags' => 4, 'FontBBox' => '[-1 -143 981 820]', 'ItalicAngle' => 0, 'Ascent' => 820, 'Descent' => -143, 'Leading' => 0, 'CapHeight' => 820, 'StemV' => 90, 'StemH' => 28, 'AvgWidth' => 746, 'MaxWidth' => 1016, 'MissingWidth' => 746); +$up = -100; +$ut = 50; diff --git a/mpdf/iccprofiles/sRGB_IEC61966-2-1.icc b/Mpdf/data/iccprofiles/sRGB_IEC61966-2-1.icc similarity index 100% rename from mpdf/iccprofiles/sRGB_IEC61966-2-1.icc rename to Mpdf/data/iccprofiles/sRGB_IEC61966-2-1.icc diff --git a/mpdf/lang2fonts.css b/Mpdf/data/lang2fonts.css similarity index 100% rename from mpdf/lang2fonts.css rename to Mpdf/data/lang2fonts.css diff --git a/mpdf/includes/linebrdictK.dat b/Mpdf/data/linebrdictK.dat similarity index 100% rename from mpdf/includes/linebrdictK.dat rename to Mpdf/data/linebrdictK.dat diff --git a/mpdf/includes/linebrdictL.dat b/Mpdf/data/linebrdictL.dat similarity index 100% rename from mpdf/includes/linebrdictL.dat rename to Mpdf/data/linebrdictL.dat diff --git a/mpdf/includes/linebrdictT.dat b/Mpdf/data/linebrdictT.dat similarity index 100% rename from mpdf/includes/linebrdictT.dat rename to Mpdf/data/linebrdictT.dat diff --git a/Mpdf/data/mpdf.css b/Mpdf/data/mpdf.css new file mode 100644 index 0000000..596d70f --- /dev/null +++ b/Mpdf/data/mpdf.css @@ -0,0 +1,94 @@ +/* LISTS */ + +/* +A default margin-top/bottom for lists is NOT set in config.php - (standard browsers give outermost list a top and bottom margin). +[mPDF default CSS set in configuration only works on basic elements, cannot do selectors such as "ol ol"] +Need to add the following to do this, but also prevent margins in nested lists as per default HTML in most browsers: +*/ + +ul, ol { + margin-top: 0.83em; + margin-bottom: 0.83em; +} + +ul ul, ul ol, ol ul, ol ol { + margin-top: 0; + margin-bottom: 0; +} + +/* INDEXES */ +div.mpdf_index_main { + font-family: sans-serif; + line-height: normal; +} + +div.mpdf_index_entry { + line-height: normal; + text-indent: -1.5em; +} + +div.mpdf_index_letter { + font-family: sans-serif; + font-size: 1.8em; + font-weight: bold; + line-height: normal; + text-transform: uppercase; + page-break-after: avoid; + margin-top: 0.3em; + margin-collapse: collapse; +} + +a.mpdf_index_link { + color: #000000; + text-decoration: none; +} + +/* TABLE OF CONTENTS */ +div.mpdf_toc { + font-family: sans-serif; + line-height: normal; +} + +a.mpdf_toc_a { + text-decoration: none; + color: black; +} + +div.mpdf_toc_level_0 { /* Whole line level 0 */ + line-height: 1.5; + margin-left: 0; + padding-right: 0em; /* should match the outdent specified for ToC; 0 is default; suggested value 2em */ +} + +span.mpdf_toc_t_level_0 { /* Title level 0 - may be inside
*/ + font-weight: bold; +} + +span.mpdf_toc_p_level_0 { /* Page no. level 0 - may be inside */ +} + +div.mpdf_toc_level_1 { /* Whole line level 1 */ + margin-left: 2em; + text-indent: -2em; + padding-right: 0em; /* should match the outdent specified for ToC; 0 is default; suggested value 2em */ +} + +span.mpdf_toc_t_level_1 { /* Title level 1 */ + font-style: italic; + font-weight: bold; +} + +span.mpdf_toc_p_level_1 { /* Page no. level 1 - may be inside */ +} + +div.mpdf_toc_level_2 { /* Whole line level 2 */ + margin-left: 4em; + text-indent: -2em; + padding-right: 0em; /* should match the outdent specified for ToC; 0 is default; suggested value 2em */ +} + +span.mpdf_toc_t_level_2 { /* Title level 2 */ +} + +span.mpdf_toc_p_level_2 { /* Page no. level 2 - may be inside */ +} diff --git a/mpdf/includes/no_image.jpg b/Mpdf/data/no_image.jpg similarity index 100% rename from mpdf/includes/no_image.jpg rename to Mpdf/data/no_image.jpg diff --git a/Mpdf/data/out.php b/Mpdf/data/out.php new file mode 100644 index 0000000..3e3a074 --- /dev/null +++ b/Mpdf/data/out.php @@ -0,0 +1,68 @@ +24 hrs old + + $interval = 86400; + if ($handle = opendir(dirname($path.'dummy'))) { + while (false !== ($file = readdir($handle))) { + if (((filemtime($path.$file)+$interval) < time()) && ($file != "..") && ($file != ".") && substr($file, -3)=='pdf') { + unlink($path.$file); + } + } + closedir($handle); + } + exit; +} diff --git a/mpdf/patterns/NOTES.txt b/Mpdf/data/patterns/NOTES.txt similarity index 83% rename from mpdf/patterns/NOTES.txt rename to Mpdf/data/patterns/NOTES.txt index 7ba83e4..d169a57 100644 --- a/mpdf/patterns/NOTES.txt +++ b/Mpdf/data/patterns/NOTES.txt @@ -2,4 +2,4 @@ Alternative sources of Hyphenation programs or TEX files: OpenOffice: http://wiki.services.openoffice.org/wiki/Dictionaries -Hyphenator4PHP- alternative PHP hyphenator scripts: http://apps.sourceforge.net/trac/hyphenator4php/ \ No newline at end of file +Hyphenator4PHP- alternative PHP hyphenator scripts: http://apps.sourceforge.net/trac/hyphenator4php/ diff --git a/Mpdf/data/patterns/de.php b/Mpdf/data/patterns/de.php new file mode 100644 index 0000000..97d6167 --- /dev/null +++ b/Mpdf/data/patterns/de.php @@ -0,0 +1,8 @@ + 160, +161 => 161, +162 => 162, +163 => 163, +164 => 164, +165 => 165, +166 => 166, +167 => 167, +168 => 168, +169 => 169, +170 => 170, +171 => 171, +172 => 172, +173 => 173, +174 => 174, +175 => 175, +176 => 176, +177 => 177, +178 => 178, +179 => 179, +180 => 180, +181 => 181, +182 => 182, +183 => 183, +184 => 184, +185 => 185, +186 => 186, +187 => 187, +188 => 188, +189 => 189, +190 => 190, +191 => 191, +192 => 192, +193 => 193, +194 => 194, +195 => 195, +196 => 196, +197 => 197, +198 => 198, +199 => 199, +200 => 200, +201 => 201, +202 => 202, +203 => 203, +204 => 204, +205 => 205, +206 => 206, +207 => 207, +208 => 208, +209 => 209, +210 => 210, +211 => 211, +212 => 212, +213 => 213, +214 => 214, +215 => 215, +216 => 216, +217 => 217, +218 => 218, +219 => 219, +220 => 220, +221 => 221, +222 => 222, +223 => 223, +224 => 224, +225 => 225, +226 => 226, +227 => 227, +228 => 228, +229 => 229, +230 => 230, +231 => 231, +232 => 232, +233 => 233, +234 => 234, +235 => 235, +236 => 236, +237 => 237, +238 => 238, +239 => 239, +240 => 240, +241 => 241, +242 => 242, +243 => 243, +244 => 244, +245 => 245, +246 => 246, +247 => 247, +248 => 248, +249 => 249, +250 => 250, +251 => 251, +252 => 252, +253 => 253, +254 => 254, +255 => 255, +338 => 140, +339 => 156, +352 => 138, +353 => 154, +376 => 159, +381 => 142, +382 => 158, +402 => 131, +710 => 136, +732 => 152, +8211 => 150, +8212 => 151, +8216 => 145, +8217 => 146, +8218 => 130, +8220 => 147, +8221 => 148, +8222 => 132, +8224 => 134, +8225 => 135, +8226 => 149, +8230 => 133, +8240 => 137, +8249 => 139, +8250 => 155, +8364 => 128, +8482 => 153 +); + +$zarr = array( +8594 => 213, +8596 => 214, +8597 => 215, +9312 => 172, +9313 => 173, +9314 => 174, +9315 => 175, +9316 => 176, +9317 => 177, +9318 => 178, +9319 => 179, +9320 => 180, +9321 => 181, +9632 => 110, +9650 => 115, +9660 => 116, +9670 => 117, +9679 => 108, +9687 => 119, +9733 => 72, +9742 => 37, +9755 => 42, +9758 => 43, +9824 => 171, +9827 => 168, +9829 => 170, +9830 => 169, +9985 => 33, +9986 => 34, +9987 => 35, +9988 => 36, +9990 => 38, +9991 => 39, +9992 => 40, +9993 => 41, +9996 => 44, +9997 => 45, +9998 => 46, +9999 => 47, +10000 => 48, +10001 => 49, +10002 => 50, +10003 => 51, +10004 => 52, +10005 => 53, +10006 => 54, +10007 => 55, +10008 => 56, +10009 => 57, +10010 => 58, +10011 => 59, +10012 => 60, +10013 => 61, +10014 => 62, +10015 => 63, +10016 => 64, +10017 => 65, +10018 => 66, +10019 => 67, +10020 => 68, +10021 => 69, +10022 => 70, +10023 => 71, +10025 => 73, +10026 => 74, +10027 => 75, +10028 => 76, +10029 => 77, +10030 => 78, +10031 => 79, +10032 => 80, +10033 => 81, +10034 => 82, +10035 => 83, +10036 => 84, +10037 => 85, +10038 => 86, +10039 => 87, +10040 => 88, +10041 => 89, +10042 => 90, +10043 => 91, +10044 => 92, +10045 => 93, +10046 => 94, +10047 => 95, +10048 => 96, +10049 => 97, +10050 => 98, +10051 => 99, +10052 => 100, +10053 => 101, +10054 => 102, +10055 => 103, +10056 => 104, +10057 => 105, +10058 => 106, +10059 => 107, +10061 => 109, +10063 => 111, +10064 => 112, +10065 => 113, +10066 => 114, +10070 => 118, +10072 => 120, +10073 => 121, +10074 => 122, +10075 => 123, +10076 => 124, +10077 => 125, +10078 => 126, +10081 => 161, +10082 => 162, +10083 => 163, +10084 => 164, +10085 => 165, +10086 => 166, +10087 => 167, +10102 => 182, +10103 => 183, +10104 => 184, +10105 => 185, +10106 => 186, +10107 => 187, +10108 => 188, +10109 => 189, +10110 => 190, +10111 => 191, +10112 => 192, +10113 => 193, +10114 => 194, +10115 => 195, +10116 => 196, +10117 => 197, +10118 => 198, +10119 => 199, +10120 => 200, +10121 => 201, +10122 => 202, +10123 => 203, +10124 => 204, +10125 => 205, +10126 => 206, +10127 => 207, +10128 => 208, +10129 => 209, +10130 => 210, +10131 => 211, +10132 => 212, +10136 => 216, +10137 => 217, +10138 => 218, +10139 => 219, +10140 => 220, +10141 => 221, +10142 => 222, +10143 => 223, +10144 => 224, +10145 => 225, +10146 => 226, +10147 => 227, +10148 => 228, +10149 => 229, +10150 => 230, +10151 => 231, +10152 => 232, +10153 => 233, +10154 => 234, +10155 => 235, +10156 => 236, +10157 => 237, +10158 => 238, +10159 => 239, +10161 => 241, +10162 => 242, +10163 => 243, +10164 => 244, +10165 => 245, +10166 => 246, +10167 => 247, +10168 => 248, +10169 => 249, +10170 => 250, +10171 => 251, +10172 => 252, +10173 => 253, +10174 => 254 +); + +$sarr = array( +169 => 227, +172 => 216, +174 => 226, +176 => 176, +177 => 177, +181 => 109, +215 => 180, +247 => 184, +402 => 166, +913 => 65, +914 => 66, +915 => 71, +916 => 68, +917 => 69, +918 => 90, +919 => 72, +920 => 81, +921 => 73, +922 => 75, +923 => 76, +924 => 77, +925 => 78, +926 => 88, +927 => 79, +928 => 80, +929 => 82, +931 => 83, +932 => 84, +933 => 85, +934 => 70, +935 => 67, +936 => 89, +937 => 87, +945 => 97, +946 => 98, +947 => 103, +948 => 100, +949 => 101, +950 => 122, +951 => 104, +952 => 113, +953 => 105, +954 => 107, +955 => 108, +956 => 109, +957 => 110, +958 => 120, +959 => 111, +960 => 112, +961 => 114, +962 => 86, +963 => 115, +964 => 116, +965 => 117, +966 => 102, +967 => 99, +968 => 121, +969 => 119, +977 => 74, +978 => 161, +981 => 106, +982 => 118, +8226 => 183, +8230 => 188, +8242 => 162, +8243 => 178, +8260 => 164, +8465 => 193, +8472 => 195, +8476 => 194, +8482 => 228, +8486 => 87, +8501 => 192, +8592 => 172, +8593 => 173, +8594 => 174, +8595 => 175, +8596 => 171, +8629 => 191, +8656 => 220, +8657 => 221, +8658 => 222, +8659 => 223, +8660 => 219, +8704 => 34, +8706 => 182, +8707 => 36, +8709 => 198, +8710 => 68, +8711 => 209, +8712 => 206, +8713 => 207, +8715 => 39, +8719 => 213, +8721 => 229, +8722 => 45, +8725 => 164, +8727 => 42, +8730 => 214, +8733 => 181, +8734 => 165, +8736 => 208, +8743 => 217, +8744 => 218, +8745 => 199, +8746 => 200, +8747 => 242, +8756 => 92, +8764 => 126, +8773 => 64, +8776 => 187, +8800 => 185, +8801 => 186, +8804 => 163, +8805 => 179, +8834 => 204, +8835 => 201, +8836 => 203, +8838 => 205, +8839 => 202, +8853 => 197, +8855 => 196, +8869 => 94, +8901 => 215, +8992 => 243, +8993 => 245, +9001 => 225, +9002 => 241, +9674 => 224, +9824 => 170, +9827 => 167, +9829 => 169, +9830 => 168 +); diff --git a/mpdf/includes/subs_win-1252.php b/Mpdf/data/subs_win-1252.php similarity index 99% rename from mpdf/includes/subs_win-1252.php rename to Mpdf/data/subs_win-1252.php index 6658ff7..05ef21f 100644 --- a/mpdf/includes/subs_win-1252.php +++ b/Mpdf/data/subs_win-1252.php @@ -304,5 +304,3 @@ $subsarray = array ( 10173 => '253', 10174 => '254', ); - -?> \ No newline at end of file diff --git a/Mpdf/data/upperCase.php b/Mpdf/data/upperCase.php new file mode 100644 index 0000000..f3b8cb7 --- /dev/null +++ b/Mpdf/data/upperCase.php @@ -0,0 +1,3 @@ + 65, 98 => 66, 99 => 67, 100 => 68, 101 => 69, 102 => 70, 103 => 71, 104 => 72, 105 => 73, 106 => 74, 107 => 75, 108 => 76, 109 => 77, 110 => 78, 111 => 79, 112 => 80, 113 => 81, 114 => 82, 115 => 83, 116 => 84, 117 => 85, 118 => 86, 119 => 87, 120 => 88, 121 => 89, 122 => 90, 181 => 924, 224 => 192, 225 => 193, 226 => 194, 227 => 195, 228 => 196, 229 => 197, 230 => 198, 231 => 199, 232 => 200, 233 => 201, 234 => 202, 235 => 203, 236 => 204, 237 => 205, 238 => 206, 239 => 207, 240 => 208, 241 => 209, 242 => 210, 243 => 211, 244 => 212, 245 => 213, 246 => 214, 248 => 216, 249 => 217, 250 => 218, 251 => 219, 252 => 220, 253 => 221, 254 => 222, 255 => 376, 257 => 256, 259 => 258, 261 => 260, 263 => 262, 265 => 264, 267 => 266, 269 => 268, 271 => 270, 273 => 272, 275 => 274, 277 => 276, 279 => 278, 281 => 280, 283 => 282, 285 => 284, 287 => 286, 289 => 288, 291 => 290, 293 => 292, 295 => 294, 297 => 296, 299 => 298, 301 => 300, 303 => 302, 305 => 73, 307 => 306, 309 => 308, 311 => 310, 314 => 313, 316 => 315, 318 => 317, 320 => 319, 322 => 321, 324 => 323, 326 => 325, 328 => 327, 331 => 330, 333 => 332, 335 => 334, 337 => 336, 339 => 338, 341 => 340, 343 => 342, 345 => 344, 347 => 346, 349 => 348, 351 => 350, 353 => 352, 355 => 354, 357 => 356, 359 => 358, 361 => 360, 363 => 362, 365 => 364, 367 => 366, 369 => 368, 371 => 370, 373 => 372, 375 => 374, 378 => 377, 380 => 379, 382 => 381, 383 => 83, 384 => 579, 387 => 386, 389 => 388, 392 => 391, 396 => 395, 402 => 401, 405 => 502, 409 => 408, 410 => 573, 414 => 544, 417 => 416, 419 => 418, 421 => 420, 424 => 423, 429 => 428, 432 => 431, 436 => 435, 438 => 437, 441 => 440, 445 => 444, 447 => 503, 453 => 452, 454 => 452, 456 => 455, 457 => 455, 459 => 458, 460 => 458, 462 => 461, 464 => 463, 466 => 465, 468 => 467, 470 => 469, 472 => 471, 474 => 473, 476 => 475, 477 => 398, 479 => 478, 481 => 480, 483 => 482, 485 => 484, 487 => 486, 489 => 488, 491 => 490, 493 => 492, 495 => 494, 498 => 497, 499 => 497, 501 => 500, 505 => 504, 507 => 506, 509 => 508, 511 => 510, 513 => 512, 515 => 514, 517 => 516, 519 => 518, 521 => 520, 523 => 522, 525 => 524, 527 => 526, 529 => 528, 531 => 530, 533 => 532, 535 => 534, 537 => 536, 539 => 538, 541 => 540, 543 => 542, 547 => 546, 549 => 548, 551 => 550, 553 => 552, 555 => 554, 557 => 556, 559 => 558, 561 => 560, 563 => 562, 572 => 571, 575 => 11390, 576 => 11391, 578 => 577, 583 => 582, 585 => 584, 587 => 586, 589 => 588, 591 => 590, 592 => 11375, 593 => 11373, 594 => 11376, 595 => 385, 596 => 390, 598 => 393, 599 => 394, 601 => 399, 603 => 400, 608 => 403, 611 => 404, 616 => 407, 617 => 406, 619 => 11362, 623 => 412, 625 => 11374, 626 => 413, 629 => 415, 637 => 11364, 640 => 422, 643 => 425, 648 => 430, 649 => 580, 650 => 433, 651 => 434, 652 => 581, 658 => 439, 837 => 921, 881 => 880, 883 => 882, 887 => 886, 891 => 1021, 892 => 1022, 893 => 1023, 940 => 902, 941 => 904, 942 => 905, 943 => 906, 945 => 913, 946 => 914, 947 => 915, 948 => 916, 949 => 917, 950 => 918, 951 => 919, 952 => 920, 953 => 921, 954 => 922, 955 => 923, 956 => 924, 957 => 925, 958 => 926, 959 => 927, 960 => 928, 961 => 929, 962 => 931, 963 => 931, 964 => 932, 965 => 933, 966 => 934, 967 => 935, 968 => 936, 969 => 937, 970 => 938, 971 => 939, 972 => 908, 973 => 910, 974 => 911, 976 => 914, 977 => 920, 981 => 934, 982 => 928, 983 => 975, 985 => 984, 987 => 986, 989 => 988, 991 => 990, 993 => 992, 995 => 994, 997 => 996, 999 => 998, 1001 => 1000, 1003 => 1002, 1005 => 1004, 1007 => 1006, 1008 => 922, 1009 => 929, 1010 => 1017, 1013 => 917, 1016 => 1015, 1019 => 1018, 1072 => 1040, 1073 => 1041, 1074 => 1042, 1075 => 1043, 1076 => 1044, 1077 => 1045, 1078 => 1046, 1079 => 1047, 1080 => 1048, 1081 => 1049, 1082 => 1050, 1083 => 1051, 1084 => 1052, 1085 => 1053, 1086 => 1054, 1087 => 1055, 1088 => 1056, 1089 => 1057, 1090 => 1058, 1091 => 1059, 1092 => 1060, 1093 => 1061, 1094 => 1062, 1095 => 1063, 1096 => 1064, 1097 => 1065, 1098 => 1066, 1099 => 1067, 1100 => 1068, 1101 => 1069, 1102 => 1070, 1103 => 1071, 1104 => 1024, 1105 => 1025, 1106 => 1026, 1107 => 1027, 1108 => 1028, 1109 => 1029, 1110 => 1030, 1111 => 1031, 1112 => 1032, 1113 => 1033, 1114 => 1034, 1115 => 1035, 1116 => 1036, 1117 => 1037, 1118 => 1038, 1119 => 1039, 1121 => 1120, 1123 => 1122, 1125 => 1124, 1127 => 1126, 1129 => 1128, 1131 => 1130, 1133 => 1132, 1135 => 1134, 1137 => 1136, 1139 => 1138, 1141 => 1140, 1143 => 1142, 1145 => 1144, 1147 => 1146, 1149 => 1148, 1151 => 1150, 1153 => 1152, 1163 => 1162, 1165 => 1164, 1167 => 1166, 1169 => 1168, 1171 => 1170, 1173 => 1172, 1175 => 1174, 1177 => 1176, 1179 => 1178, 1181 => 1180, 1183 => 1182, 1185 => 1184, 1187 => 1186, 1189 => 1188, 1191 => 1190, 1193 => 1192, 1195 => 1194, 1197 => 1196, 1199 => 1198, 1201 => 1200, 1203 => 1202, 1205 => 1204, 1207 => 1206, 1209 => 1208, 1211 => 1210, 1213 => 1212, 1215 => 1214, 1218 => 1217, 1220 => 1219, 1222 => 1221, 1224 => 1223, 1226 => 1225, 1228 => 1227, 1230 => 1229, 1231 => 1216, 1233 => 1232, 1235 => 1234, 1237 => 1236, 1239 => 1238, 1241 => 1240, 1243 => 1242, 1245 => 1244, 1247 => 1246, 1249 => 1248, 1251 => 1250, 1253 => 1252, 1255 => 1254, 1257 => 1256, 1259 => 1258, 1261 => 1260, 1263 => 1262, 1265 => 1264, 1267 => 1266, 1269 => 1268, 1271 => 1270, 1273 => 1272, 1275 => 1274, 1277 => 1276, 1279 => 1278, 1281 => 1280, 1283 => 1282, 1285 => 1284, 1287 => 1286, 1289 => 1288, 1291 => 1290, 1293 => 1292, 1295 => 1294, 1297 => 1296, 1299 => 1298, 1301 => 1300, 1303 => 1302, 1305 => 1304, 1307 => 1306, 1309 => 1308, 1311 => 1310, 1313 => 1312, 1315 => 1314, 1317 => 1316, 1377 => 1329, 1378 => 1330, 1379 => 1331, 1380 => 1332, 1381 => 1333, 1382 => 1334, 1383 => 1335, 1384 => 1336, 1385 => 1337, 1386 => 1338, 1387 => 1339, 1388 => 1340, 1389 => 1341, 1390 => 1342, 1391 => 1343, 1392 => 1344, 1393 => 1345, 1394 => 1346, 1395 => 1347, 1396 => 1348, 1397 => 1349, 1398 => 1350, 1399 => 1351, 1400 => 1352, 1401 => 1353, 1402 => 1354, 1403 => 1355, 1404 => 1356, 1405 => 1357, 1406 => 1358, 1407 => 1359, 1408 => 1360, 1409 => 1361, 1410 => 1362, 1411 => 1363, 1412 => 1364, 1413 => 1365, 1414 => 1366, 7545 => 42877, 7549 => 11363, 7681 => 7680, 7683 => 7682, 7685 => 7684, 7687 => 7686, 7689 => 7688, 7691 => 7690, 7693 => 7692, 7695 => 7694, 7697 => 7696, 7699 => 7698, 7701 => 7700, 7703 => 7702, 7705 => 7704, 7707 => 7706, 7709 => 7708, 7711 => 7710, 7713 => 7712, 7715 => 7714, 7717 => 7716, 7719 => 7718, 7721 => 7720, 7723 => 7722, 7725 => 7724, 7727 => 7726, 7729 => 7728, 7731 => 7730, 7733 => 7732, 7735 => 7734, 7737 => 7736, 7739 => 7738, 7741 => 7740, 7743 => 7742, 7745 => 7744, 7747 => 7746, 7749 => 7748, 7751 => 7750, 7753 => 7752, 7755 => 7754, 7757 => 7756, 7759 => 7758, 7761 => 7760, 7763 => 7762, 7765 => 7764, 7767 => 7766, 7769 => 7768, 7771 => 7770, 7773 => 7772, 7775 => 7774, 7777 => 7776, 7779 => 7778, 7781 => 7780, 7783 => 7782, 7785 => 7784, 7787 => 7786, 7789 => 7788, 7791 => 7790, 7793 => 7792, 7795 => 7794, 7797 => 7796, 7799 => 7798, 7801 => 7800, 7803 => 7802, 7805 => 7804, 7807 => 7806, 7809 => 7808, 7811 => 7810, 7813 => 7812, 7815 => 7814, 7817 => 7816, 7819 => 7818, 7821 => 7820, 7823 => 7822, 7825 => 7824, 7827 => 7826, 7829 => 7828, 7835 => 7776, 7841 => 7840, 7843 => 7842, 7845 => 7844, 7847 => 7846, 7849 => 7848, 7851 => 7850, 7853 => 7852, 7855 => 7854, 7857 => 7856, 7859 => 7858, 7861 => 7860, 7863 => 7862, 7865 => 7864, 7867 => 7866, 7869 => 7868, 7871 => 7870, 7873 => 7872, 7875 => 7874, 7877 => 7876, 7879 => 7878, 7881 => 7880, 7883 => 7882, 7885 => 7884, 7887 => 7886, 7889 => 7888, 7891 => 7890, 7893 => 7892, 7895 => 7894, 7897 => 7896, 7899 => 7898, 7901 => 7900, 7903 => 7902, 7905 => 7904, 7907 => 7906, 7909 => 7908, 7911 => 7910, 7913 => 7912, 7915 => 7914, 7917 => 7916, 7919 => 7918, 7921 => 7920, 7923 => 7922, 7925 => 7924, 7927 => 7926, 7929 => 7928, 7931 => 7930, 7933 => 7932, 7935 => 7934, 7936 => 7944, 7937 => 7945, 7938 => 7946, 7939 => 7947, 7940 => 7948, 7941 => 7949, 7942 => 7950, 7943 => 7951, 7952 => 7960, 7953 => 7961, 7954 => 7962, 7955 => 7963, 7956 => 7964, 7957 => 7965, 7968 => 7976, 7969 => 7977, 7970 => 7978, 7971 => 7979, 7972 => 7980, 7973 => 7981, 7974 => 7982, 7975 => 7983, 7984 => 7992, 7985 => 7993, 7986 => 7994, 7987 => 7995, 7988 => 7996, 7989 => 7997, 7990 => 7998, 7991 => 7999, 8000 => 8008, 8001 => 8009, 8002 => 8010, 8003 => 8011, 8004 => 8012, 8005 => 8013, 8017 => 8025, 8019 => 8027, 8021 => 8029, 8023 => 8031, 8032 => 8040, 8033 => 8041, 8034 => 8042, 8035 => 8043, 8036 => 8044, 8037 => 8045, 8038 => 8046, 8039 => 8047, 8048 => 8122, 8049 => 8123, 8050 => 8136, 8051 => 8137, 8052 => 8138, 8053 => 8139, 8054 => 8154, 8055 => 8155, 8056 => 8184, 8057 => 8185, 8058 => 8170, 8059 => 8171, 8060 => 8186, 8061 => 8187, 8064 => 8072, 8065 => 8073, 8066 => 8074, 8067 => 8075, 8068 => 8076, 8069 => 8077, 8070 => 8078, 8071 => 8079, 8080 => 8088, 8081 => 8089, 8082 => 8090, 8083 => 8091, 8084 => 8092, 8085 => 8093, 8086 => 8094, 8087 => 8095, 8096 => 8104, 8097 => 8105, 8098 => 8106, 8099 => 8107, 8100 => 8108, 8101 => 8109, 8102 => 8110, 8103 => 8111, 8112 => 8120, 8113 => 8121, 8115 => 8124, 8126 => 921, 8131 => 8140, 8144 => 8152, 8145 => 8153, 8160 => 8168, 8161 => 8169, 8165 => 8172, 8179 => 8188, 8526 => 8498, 8560 => 8544, 8561 => 8545, 8562 => 8546, 8563 => 8547, 8564 => 8548, 8565 => 8549, 8566 => 8550, 8567 => 8551, 8568 => 8552, 8569 => 8553, 8570 => 8554, 8571 => 8555, 8572 => 8556, 8573 => 8557, 8574 => 8558, 8575 => 8559, 8580 => 8579, 9424 => 9398, 9425 => 9399, 9426 => 9400, 9427 => 9401, 9428 => 9402, 9429 => 9403, 9430 => 9404, 9431 => 9405, 9432 => 9406, 9433 => 9407, 9434 => 9408, 9435 => 9409, 9436 => 9410, 9437 => 9411, 9438 => 9412, 9439 => 9413, 9440 => 9414, 9441 => 9415, 9442 => 9416, 9443 => 9417, 9444 => 9418, 9445 => 9419, 9446 => 9420, 9447 => 9421, 9448 => 9422, 9449 => 9423, 11312 => 11264, 11313 => 11265, 11314 => 11266, 11315 => 11267, 11316 => 11268, 11317 => 11269, 11318 => 11270, 11319 => 11271, 11320 => 11272, 11321 => 11273, 11322 => 11274, 11323 => 11275, 11324 => 11276, 11325 => 11277, 11326 => 11278, 11327 => 11279, 11328 => 11280, 11329 => 11281, 11330 => 11282, 11331 => 11283, 11332 => 11284, 11333 => 11285, 11334 => 11286, 11335 => 11287, 11336 => 11288, 11337 => 11289, 11338 => 11290, 11339 => 11291, 11340 => 11292, 11341 => 11293, 11342 => 11294, 11343 => 11295, 11344 => 11296, 11345 => 11297, 11346 => 11298, 11347 => 11299, 11348 => 11300, 11349 => 11301, 11350 => 11302, 11351 => 11303, 11352 => 11304, 11353 => 11305, 11354 => 11306, 11355 => 11307, 11356 => 11308, 11357 => 11309, 11358 => 11310, 11361 => 11360, 11365 => 570, 11366 => 574, 11368 => 11367, 11370 => 11369, 11372 => 11371, 11379 => 11378, 11382 => 11381, 11393 => 11392, 11395 => 11394, 11397 => 11396, 11399 => 11398, 11401 => 11400, 11403 => 11402, 11405 => 11404, 11407 => 11406, 11409 => 11408, 11411 => 11410, 11413 => 11412, 11415 => 11414, 11417 => 11416, 11419 => 11418, 11421 => 11420, 11423 => 11422, 11425 => 11424, 11427 => 11426, 11429 => 11428, 11431 => 11430, 11433 => 11432, 11435 => 11434, 11437 => 11436, 11439 => 11438, 11441 => 11440, 11443 => 11442, 11445 => 11444, 11447 => 11446, 11449 => 11448, 11451 => 11450, 11453 => 11452, 11455 => 11454, 11457 => 11456, 11459 => 11458, 11461 => 11460, 11463 => 11462, 11465 => 11464, 11467 => 11466, 11469 => 11468, 11471 => 11470, 11473 => 11472, 11475 => 11474, 11477 => 11476, 11479 => 11478, 11481 => 11480, 11483 => 11482, 11485 => 11484, 11487 => 11486, 11489 => 11488, 11491 => 11490, 11500 => 11499, 11502 => 11501, 11520 => 4256, 11521 => 4257, 11522 => 4258, 11523 => 4259, 11524 => 4260, 11525 => 4261, 11526 => 4262, 11527 => 4263, 11528 => 4264, 11529 => 4265, 11530 => 4266, 11531 => 4267, 11532 => 4268, 11533 => 4269, 11534 => 4270, 11535 => 4271, 11536 => 4272, 11537 => 4273, 11538 => 4274, 11539 => 4275, 11540 => 4276, 11541 => 4277, 11542 => 4278, 11543 => 4279, 11544 => 4280, 11545 => 4281, 11546 => 4282, 11547 => 4283, 11548 => 4284, 11549 => 4285, 11550 => 4286, 11551 => 4287, 11552 => 4288, 11553 => 4289, 11554 => 4290, 11555 => 4291, 11556 => 4292, 11557 => 4293, 42561 => 42560, 42563 => 42562, 42565 => 42564, 42567 => 42566, 42569 => 42568, 42571 => 42570, 42573 => 42572, 42575 => 42574, 42577 => 42576, 42579 => 42578, 42581 => 42580, 42583 => 42582, 42585 => 42584, 42587 => 42586, 42589 => 42588, 42591 => 42590, 42595 => 42594, 42597 => 42596, 42599 => 42598, 42601 => 42600, 42603 => 42602, 42605 => 42604, 42625 => 42624, 42627 => 42626, 42629 => 42628, 42631 => 42630, 42633 => 42632, 42635 => 42634, 42637 => 42636, 42639 => 42638, 42641 => 42640, 42643 => 42642, 42645 => 42644, 42647 => 42646, 42787 => 42786, 42789 => 42788, 42791 => 42790, 42793 => 42792, 42795 => 42794, 42797 => 42796, 42799 => 42798, 42803 => 42802, 42805 => 42804, 42807 => 42806, 42809 => 42808, 42811 => 42810, 42813 => 42812, 42815 => 42814, 42817 => 42816, 42819 => 42818, 42821 => 42820, 42823 => 42822, 42825 => 42824, 42827 => 42826, 42829 => 42828, 42831 => 42830, 42833 => 42832, 42835 => 42834, 42837 => 42836, 42839 => 42838, 42841 => 42840, 42843 => 42842, 42845 => 42844, 42847 => 42846, 42849 => 42848, 42851 => 42850, 42853 => 42852, 42855 => 42854, 42857 => 42856, 42859 => 42858, 42861 => 42860, 42863 => 42862, 42874 => 42873, 42876 => 42875, 42879 => 42878, 42881 => 42880, 42883 => 42882, 42885 => 42884, 42887 => 42886, 42892 => 42891); diff --git a/Mpdf/functions-dev.php b/Mpdf/functions-dev.php new file mode 100644 index 0000000..355f3e3 --- /dev/null +++ b/Mpdf/functions-dev.php @@ -0,0 +1,13 @@ +log(LogLevel::EMERGENCY, $message, $context); + } + + /** + * Action must be taken immediately. + * + * Example: Entire website down, database unavailable, etc. This should + * trigger the SMS alerts and wake you up. + * + * @param string $message + * @param array $context + * + * @return void + */ + public function alert($message, array $context = array()) + { + $this->log(LogLevel::ALERT, $message, $context); + } + + /** + * Critical conditions. + * + * Example: Application component unavailable, unexpected exception. + * + * @param string $message + * @param array $context + * + * @return void + */ + public function critical($message, array $context = array()) + { + $this->log(LogLevel::CRITICAL, $message, $context); + } + + /** + * Runtime errors that do not require immediate action but should typically + * be logged and monitored. + * + * @param string $message + * @param array $context + * + * @return void + */ + public function error($message, array $context = array()) + { + $this->log(LogLevel::ERROR, $message, $context); + } + + /** + * Exceptional occurrences that are not errors. + * + * Example: Use of deprecated APIs, poor use of an API, undesirable things + * that are not necessarily wrong. + * + * @param string $message + * @param array $context + * + * @return void + */ + public function warning($message, array $context = array()) + { + $this->log(LogLevel::WARNING, $message, $context); + } + + /** + * Normal but significant events. + * + * @param string $message + * @param array $context + * + * @return void + */ + public function notice($message, array $context = array()) + { + $this->log(LogLevel::NOTICE, $message, $context); + } + + /** + * Interesting events. + * + * Example: User logs in, SQL logs. + * + * @param string $message + * @param array $context + * + * @return void + */ + public function info($message, array $context = array()) + { + $this->log(LogLevel::INFO, $message, $context); + } + + /** + * Detailed debug information. + * + * @param string $message + * @param array $context + * + * @return void + */ + public function debug($message, array $context = array()) + { + $this->log(LogLevel::DEBUG, $message, $context); + } +} diff --git a/Psr/Log/InvalidArgumentException.php b/Psr/Log/InvalidArgumentException.php new file mode 100644 index 0000000..67f852d --- /dev/null +++ b/Psr/Log/InvalidArgumentException.php @@ -0,0 +1,7 @@ +logger = $logger; + } +} diff --git a/Psr/Log/LoggerInterface.php b/Psr/Log/LoggerInterface.php new file mode 100644 index 0000000..2206cfd --- /dev/null +++ b/Psr/Log/LoggerInterface.php @@ -0,0 +1,125 @@ +log(LogLevel::EMERGENCY, $message, $context); + } + + /** + * Action must be taken immediately. + * + * Example: Entire website down, database unavailable, etc. This should + * trigger the SMS alerts and wake you up. + * + * @param string $message + * @param array $context + * + * @return void + */ + public function alert($message, array $context = array()) + { + $this->log(LogLevel::ALERT, $message, $context); + } + + /** + * Critical conditions. + * + * Example: Application component unavailable, unexpected exception. + * + * @param string $message + * @param array $context + * + * @return void + */ + public function critical($message, array $context = array()) + { + $this->log(LogLevel::CRITICAL, $message, $context); + } + + /** + * Runtime errors that do not require immediate action but should typically + * be logged and monitored. + * + * @param string $message + * @param array $context + * + * @return void + */ + public function error($message, array $context = array()) + { + $this->log(LogLevel::ERROR, $message, $context); + } + + /** + * Exceptional occurrences that are not errors. + * + * Example: Use of deprecated APIs, poor use of an API, undesirable things + * that are not necessarily wrong. + * + * @param string $message + * @param array $context + * + * @return void + */ + public function warning($message, array $context = array()) + { + $this->log(LogLevel::WARNING, $message, $context); + } + + /** + * Normal but significant events. + * + * @param string $message + * @param array $context + * + * @return void + */ + public function notice($message, array $context = array()) + { + $this->log(LogLevel::NOTICE, $message, $context); + } + + /** + * Interesting events. + * + * Example: User logs in, SQL logs. + * + * @param string $message + * @param array $context + * + * @return void + */ + public function info($message, array $context = array()) + { + $this->log(LogLevel::INFO, $message, $context); + } + + /** + * Detailed debug information. + * + * @param string $message + * @param array $context + * + * @return void + */ + public function debug($message, array $context = array()) + { + $this->log(LogLevel::DEBUG, $message, $context); + } + + /** + * Logs with an arbitrary level. + * + * @param mixed $level + * @param string $message + * @param array $context + * + * @return void + * + * @throws \Psr\Log\InvalidArgumentException + */ + abstract public function log($level, $message, array $context = array()); +} diff --git a/Psr/Log/NullLogger.php b/Psr/Log/NullLogger.php new file mode 100644 index 0000000..c8f7293 --- /dev/null +++ b/Psr/Log/NullLogger.php @@ -0,0 +1,30 @@ +logger) { }` + * blocks. + */ +class NullLogger extends AbstractLogger +{ + /** + * Logs with an arbitrary level. + * + * @param mixed $level + * @param string $message + * @param array $context + * + * @return void + * + * @throws \Psr\Log\InvalidArgumentException + */ + public function log($level, $message, array $context = array()) + { + // noop + } +} diff --git a/Psr/Log/Test/DummyTest.php b/Psr/Log/Test/DummyTest.php new file mode 100644 index 0000000..9638c11 --- /dev/null +++ b/Psr/Log/Test/DummyTest.php @@ -0,0 +1,18 @@ + ". + * + * Example ->error('Foo') would yield "error Foo". + * + * @return string[] + */ + abstract public function getLogs(); + + public function testImplements() + { + $this->assertInstanceOf('Psr\Log\LoggerInterface', $this->getLogger()); + } + + /** + * @dataProvider provideLevelsAndMessages + */ + public function testLogsAtAllLevels($level, $message) + { + $logger = $this->getLogger(); + $logger->{$level}($message, array('user' => 'Bob')); + $logger->log($level, $message, array('user' => 'Bob')); + + $expected = array( + $level.' message of level '.$level.' with context: Bob', + $level.' message of level '.$level.' with context: Bob', + ); + $this->assertEquals($expected, $this->getLogs()); + } + + public function provideLevelsAndMessages() + { + return array( + LogLevel::EMERGENCY => array(LogLevel::EMERGENCY, 'message of level emergency with context: {user}'), + LogLevel::ALERT => array(LogLevel::ALERT, 'message of level alert with context: {user}'), + LogLevel::CRITICAL => array(LogLevel::CRITICAL, 'message of level critical with context: {user}'), + LogLevel::ERROR => array(LogLevel::ERROR, 'message of level error with context: {user}'), + LogLevel::WARNING => array(LogLevel::WARNING, 'message of level warning with context: {user}'), + LogLevel::NOTICE => array(LogLevel::NOTICE, 'message of level notice with context: {user}'), + LogLevel::INFO => array(LogLevel::INFO, 'message of level info with context: {user}'), + LogLevel::DEBUG => array(LogLevel::DEBUG, 'message of level debug with context: {user}'), + ); + } + + /** + * @expectedException \Psr\Log\InvalidArgumentException + */ + public function testThrowsOnInvalidLevel() + { + $logger = $this->getLogger(); + $logger->log('invalid level', 'Foo'); + } + + public function testContextReplacement() + { + $logger = $this->getLogger(); + $logger->info('{Message {nothing} {user} {foo.bar} a}', array('user' => 'Bob', 'foo.bar' => 'Bar')); + + $expected = array('info {Message {nothing} Bob Bar a}'); + $this->assertEquals($expected, $this->getLogs()); + } + + public function testObjectCastToString() + { + if (method_exists($this, 'createPartialMock')) { + $dummy = $this->createPartialMock('Psr\Log\Test\DummyTest', array('__toString')); + } else { + $dummy = $this->getMock('Psr\Log\Test\DummyTest', array('__toString')); + } + $dummy->expects($this->once()) + ->method('__toString') + ->will($this->returnValue('DUMMY')); + + $this->getLogger()->warning($dummy); + + $expected = array('warning DUMMY'); + $this->assertEquals($expected, $this->getLogs()); + } + + public function testContextCanContainAnything() + { + $closed = fopen('php://memory', 'r'); + fclose($closed); + + $context = array( + 'bool' => true, + 'null' => null, + 'string' => 'Foo', + 'int' => 0, + 'float' => 0.5, + 'nested' => array('with object' => new DummyTest), + 'object' => new \DateTime, + 'resource' => fopen('php://memory', 'r'), + 'closed' => $closed, + ); + + $this->getLogger()->warning('Crazy context data', $context); + + $expected = array('warning Crazy context data'); + $this->assertEquals($expected, $this->getLogs()); + } + + public function testContextExceptionKeyCanBeExceptionOrOtherValues() + { + $logger = $this->getLogger(); + $logger->warning('Random message', array('exception' => 'oops')); + $logger->critical('Uncaught Exception!', array('exception' => new \LogicException('Fail'))); + + $expected = array( + 'warning Random message', + 'critical Uncaught Exception!' + ); + $this->assertEquals($expected, $this->getLogs()); + } +} diff --git a/Psr/Log/Test/TestLogger.php b/Psr/Log/Test/TestLogger.php new file mode 100644 index 0000000..1be3230 --- /dev/null +++ b/Psr/Log/Test/TestLogger.php @@ -0,0 +1,147 @@ + $level, + 'message' => $message, + 'context' => $context, + ]; + + $this->recordsByLevel[$record['level']][] = $record; + $this->records[] = $record; + } + + public function hasRecords($level) + { + return isset($this->recordsByLevel[$level]); + } + + public function hasRecord($record, $level) + { + if (is_string($record)) { + $record = ['message' => $record]; + } + return $this->hasRecordThatPasses(function ($rec) use ($record) { + if ($rec['message'] !== $record['message']) { + return false; + } + if (isset($record['context']) && $rec['context'] !== $record['context']) { + return false; + } + return true; + }, $level); + } + + public function hasRecordThatContains($message, $level) + { + return $this->hasRecordThatPasses(function ($rec) use ($message) { + return strpos($rec['message'], $message) !== false; + }, $level); + } + + public function hasRecordThatMatches($regex, $level) + { + return $this->hasRecordThatPasses(function ($rec) use ($regex) { + return preg_match($regex, $rec['message']) > 0; + }, $level); + } + + public function hasRecordThatPasses(callable $predicate, $level) + { + if (!isset($this->recordsByLevel[$level])) { + return false; + } + foreach ($this->recordsByLevel[$level] as $i => $rec) { + if (call_user_func($predicate, $rec, $i)) { + return true; + } + } + return false; + } + + public function __call($method, $args) + { + if (preg_match('/(.*)(Debug|Info|Notice|Warning|Error|Critical|Alert|Emergency)(.*)/', $method, $matches) > 0) { + $genericMethod = $matches[1] . ('Records' !== $matches[3] ? 'Record' : '') . $matches[3]; + $level = strtolower($matches[2]); + if (method_exists($this, $genericMethod)) { + $args[] = $level; + return call_user_func_array([$this, $genericMethod], $args); + } + } + throw new \BadMethodCallException('Call to undefined method ' . get_class($this) . '::' . $method . '()'); + } + + public function reset() + { + $this->records = []; + $this->recordsByLevel = []; + } +} diff --git a/info.md b/info.md new file mode 100644 index 0000000..ecdaa04 --- /dev/null +++ b/info.md @@ -0,0 +1,15 @@ + # Info + + ## mpdf + + ### Dependencies + + * Psr\Log + * setasign\Fpdi + * DeepCopy + + ### Changes + + * Replaced `../data` path with `/data` path. The problem is that the data is outside of the namespace path which causes problems. In order to fix this the path was changed and the data directory was copied into the namespace directory. + * Replaces `../ttfonts` path with `/ttfonts` path. Same reason as `data` path. + * Replaces `../tmp` path with `/tmp` path. Same reason as `data` path. diff --git a/mpdf/CHANGELOG.txt b/mpdf/CHANGELOG.txt deleted file mode 100644 index 98c2b90..0000000 --- a/mpdf/CHANGELOG.txt +++ /dev/null @@ -1,3110 +0,0 @@ -=========================== -mPDF 6.0 -20/12/2014 -=========================== -New features / Improvements ---------------------------- -Support for OpenTypeLayout tables / features for complex scripts and Advances Typography. -Improved bidirectional text handling. -Improved line-breaking, including for complex scripts e.g. Lao, Thai and Khmer. -Updated page-breaking options. -Automatic language mark-up and font selection using autoScriptToLang and autoLangToFont. -Kashida for text-justification in arabic scripts. -Index collation for non-ASCII characters. -Index mark-up allowing control over layout using CSS. -{PAGENO} and {nbpg} can use any of the number types as in list-style e.g. set in using pagenumstyle. -CSS support for lists. -Default stylesheet - mpdf.css - updated. - - -Added CSS support ------------------ -- lang attribute selector e.g. :lang(fr), [lang="fr"] -- font-variant-position -- font-variant-caps -- font-variant-ligatures -- font-variant-numeric -- font-variant-alternates - Only [normal | historical-forms] supported (i.e. most are NOT supported) -- font-variant - as above, and except for: east-asian-variant-values, east-asian-width-values, ruby -- font-language-override -- font-feature-settings -- text-outline is now supported on TD/TH tags -- hebrew, khmer, cambodian, lao, and cjk-decimal recognised as values for "list-style-type" in numbered lists and page numbering. -- list-style-image and list-style-position -- transform (on only) -- text-decoration:overline -- image-rendering -- unicode-bidi (also tag) -- vertical-align can use lengths e.g. 0.5em -- line-stacking-strategy -- line-stacking-shift - -================ -mPDF 5.7.4 -15/12/2014 -================ -Bug Fixes & Minor Additions ---------------------------- -- SVG images now support embedded images e.g. -- SVG images now supports element e.g. , and also -- SVG images now can use Autofont (see top of classes/svg.php file) -- SVG images now has limited support for CSS classes (see top of classes/svg.php file) -- SVG images - style inheritance improved -- SVG images - improved handling of comments and other extraneous code -- SVG images - fix to ensure opacity is reset before another element -- SVG images - font-size not resetting after a element -- SVG radial gradients bug (if the focus [fx,fy] lies outside circle defined by [cx,cy] and r) cf. pservers-grad-15-b.svg -- SVG allows spaces in attribute definitions in or e.g. -- SVG text which contains a < sign, it will break the text - now processed as < (despite the fact that this does not conform to XML spec) -- SVG images - support automatic font selection and (minimal) use of CSS classes - cf. the defined constants at top of svg.php file -- SVG images - text-anchor now supported as a CSS style, as well as an HTML attribute -- CSS support for :nth-child() selector improved to fully support the draft CSS3 spec - http://www.w3.org/TR/selectors/#nth-child-pseudo - [NB only works on table columns or rows] -- text-indent when set as "em" - incorrectly calculated if last text in line in different font size than for block -- CSS not applying cascaded styles on elements - [changed MergeCSS() type to INLINE for 'A', LEGEND, METER and PROGRESS] -- fix for underline/strikethrough/overline so that line position(s) are based correctly on font-size/font in nested situations -- Error: Strict warning: Only variables should be passed by reference - in PHP5.5.9 -- bug accessing images from some servers (HTTP 403 Forbidden whn accessed using fopen etc.) -- Setting page format incorrectly set default twice and missed some options -- bug fixed in Overwrite() when specifying replacement as a string -- barcode C93 - updated C93 code from TCPDF because of bug - incorrect checksum character for "153-2-4" -- Tables - bug when using colspan across columns which may have a cell width specified - cf. http://www.mpdf1.com/forum/discussion/2221/colspan-bug -- Tables - cell height (when specified) is not resized when table is shrunk -- Tables - if table width specified, but narrower than minimum cell wdith, and less than page width - table will expand to - minimum cell width(s) as long as $keep_table_proportions = true -- Tables - if using packTableData, and borders-collapse, wider border is overwriting content of adjacent cell - Test case: - - - -
Hallo world
Hallo world
-- Images - image height is reset proportional to original if width is set to maximum e.g. links, images and - CSS url() e.g background-image - - also to ignore "../" included as a query value -- Barcodes with bottom numerals e.g. EAN-13 - incorrect numeral size when using core fonts --------------------------------- -NB Spec. for embedded SVG images: -as per http://www.w3.org/TR/2003/REC-SVG11-20030114/struct.html#ImageElement -Attributes supported: -x -y -xlink:href (required) - can be jpeg, png or gif image - not vector (SVG or WMF) image -width (required) -height (required) -preserveAspectRatio - -Note: all attribute names and values are case-sensitive -width and height cannot be assigned by CSS - must be attributes ---------------------------------- -================ -mPDF 5.7.3 -24/8/2014 -================ -Bug Fixes & Minor Additions ---------------------------- -- Tables - cellSpacing and cellPadding taking preference over CSS stylesheet -- Tables - background images in table inside HTML Footer incorrectly positioned -- Tables - cell in a nested table with a specified width, should determine width of parent table cell - (cf. http://www.mpdf1.com/forum/discussion/1648/nested-table-bug-) -- Tables - colspan (on a row after first row) exceeds number of columns in table -- Gradients in Imported documents (mPDFI) causing error in some browsers -- Fatal error after page-break-after:always on root level block element -- Support for 'https/SSL' if file_get_contents_by_socket required (e.g. getting images with allow_url_fopen turned off) -- Improved support for specified ports when getting external CSS stylesheets e.g. www.domain.com:80 -- error accessing local .css files with dummy queries (cache-busting) e.g. mpdfstyleA4.css?v=2.0.18.9 -- start of end tag in PRE incorrectly changed to < -- error thrown when open.basedir restriction in effect (deleting temporary files) -- image which forces pagebreak incorrectly positioned at top of page -- [changes to avoid warning notices by checking if (isset(x)) before referencing it] -- text with letter-spacing set inside table which needs to be resixed (shrunk) - letter-spacing was not adjusted -- nested table incorrectly calculating width and unnecessarily wrapping text -- vertical-align:super|sub can be nested using elements -- inline elements can be nested e.g. text text13text text -- CSS vertical-align:0.5em (or %) now supported -- underline and strikethrough now use the parent inline block baseline/fontsize/color for child inline elements *** change in behaviour - (Adjusts line height to take account of superscript and subscript except in tables) -- nested table incorrectly calculating width and unnecessarily wrapping text -- tables - font size carrying over from one nested table to the next nested table -- tables - border set as attribute on overrides border set as CSS on not printing at all (since v5.7) -- list-style incorrectly overriding list-style-type in cascading CSS -- page-break-after:avoid not taking into account bottom padding and margin when estimating if next line can fit on page -- images not displayed when using "https://" if images are referenced by src="//domain.com/image" -- +aCJK incorrectly parsed when instantiating class e.g. new mpDF('ja+aCJK') -- line-breaking - zero-width object at end of line (e.g. index entry) causing a space left untrimmed at end of line -- ToC since v5.7 incorrectly handling non-ascii characters, entities or tags -- cell height miscalculated when using hard-hyphenate -- border colors set with transparency not working -- transparency settings for stroke and fill interfering with one another -- 'float' inside a HTML header/footer - not clearing the float before first line of text -- error if script run across date change at midnight -- temporary file name collisions (e.g. when processing images) if numerous users -- position attribute not working -- < (less-than sign) inside a PRE element, and NOT start of a valid tag, was incorrectly removed -- file attachments not opening in Reader XI -- JPG images not recognised if not containing JFIF or Exif markers -- instance of preg_replace with /e modifier causing error in PHP 5.5 -- correctly handle CSS URLs with no scheme -- Index entries causing errors when repeat entries are used within page-break-inside:avoid, rotated tables etc. -- table with fixed width column and long word in cell set to colspan across this column (adding spare width to all columns) -- incorrect hyphenation if multiple soft-hyphens on line before break -- SVG images - objects contained in being displayed -- SVG images - multiple, or quoted fonts e.g. style="font-family:'lucida grande', verdana" not recognised -- SVG images - line with opacity=0 still visible (only in some PDF viewers/browsers) -- text in an SVG image displaying with incorrect font in some PDF viewers/browsers -- SVG images - fill:RGB(0,0,0) not recognised when uppercase -- background images using data:image\/(jpeg|gif|png);base64 format - error when reading in stylesheet - -New CSS support ---------------- -- added support for style="opacity:0.6;" in SVG images - previously only supported style="fill-opacity:0.6; stroke-opacity: 0.6;" -- improved PNG image handling for some cases of alpha channel transparency -- khmer, cambodian and lao recognised as list-style-type for numbered lists - -SVG Images ----------- -Limited support for and - -================ -mPDF 5.7.1 -1/09/2013 -================ -1) FILES: mpdf.php -Bug fix; Dollar sign enclosed by
 tag causing error.
-Test e.g.: 
Test $1.00 Test
Test $2.00 Test
Test $3.00 Test
Test $4.00 Test
------------------------------ -2) FILES: includes/functions.php AND mpdf.php -Changes to preg_replace with /e modifier to use preg_replace_callback -(/e depracated from PHP 5.5) ------------------------------ -3) FILES: classes/barcode.php -Small change to function barcode_c128() which allows ASCII 0 - 31 to be used in C128A e.g. chr(13) in: - ------------------------------ -4) FILES: mpdf.php -Using $use_kwt ("keep-[heading]-with-table") if

before table is on 2 lines and pagebreak occurs after first line -the first line is displayed at the bottom of the 2nd page. -Edited so that $use_kwt only works if the HEADING is only one line. Else ignores (but prints correctly) ------------------------------ -5) FILES: mpdf.php -Clearing old temporary files from _MPDF_TEMP_PATH will now ignore "hidden" files e.g. starting with a "." .htaccess, .gitignore etc. -and also leave dummy.txt alone ------------------------------ - - -=========================== -mPDF 5.7 -14/07/2013 -=========================== - -Files changed -------------- -config.php -mpdf.php -classes/tocontents.php -classes/cssmgr.php -classes/svg.php -includes/functions.php -includes/out.php -examples/formsubmit.php [Important - Security update] - -Updated Example Files in /examples/ ------------------------------------ -All example files -mpdfstyleA4.css - - -config.php ----------- -Removed: - $this->hyphenateTables - $this->hyphenate - $this->orphansAllowed -Edited: - "hyphens: manual" - Added to $this->defaultCSS - $this->allowedCSStags now includes '|TEXTCIRCLE|DOTTAB' -New: - $this->decimal_align = array('DP'=>'.', 'DC'=>',', 'DM'=>"\xc2\xb7", 'DA'=>"\xd9\xab", 'DD'=>'-'); - $this->h2toc = array('H1'=>0, 'H2'=>1, 'H3'=>2); - $this->h2bookmarks = array('H1'=>0, 'H2'=>1, 'H3'=>2); - $this->CJKforceend = false; // Forces overflowng punctuation to hang outside right margin (used with CJK script) - - -Backwards compatability ------------------------ -Changes in mPDF 5.7 may cause some changes to the way your documents appear. There are two main differences: -1) Hyphenation. To retain appearance compatible with earlier versions, set the CSS property "hyphens: auto" whenever - you previously used $mpdf->hyphenate=true; -2) Table of Contents - appearance can now be controlled with CSS styles. By default, in mPDF 5.7, no styling is applied so you will get: - - No indent (previous default of 5mm) - ($tocindent is ignored) - - Any font, font-size set ($tocfont or $tocfontsize) will not work - - HyperLinks will appear with your default appearance - usually blue and underlined - - line spacing will be narrower (can use line-height or margin-top in CSS) - - -New features / Improvements ---------------------------- -Layout of Table of Content ToC now controlled using CSS styles -Text alignment on decimal mark inside tables -Automatically generated bookmarks and/or ToC entries from H1 - H6 tags -Support for unit of "rem" as size e.g. font-size: 1rem; -Origin and clipping for background images and gradients controlled by CSS i.e. background-origin, background-size, background-clip -Text-outline controlled by CSS (compatible with CSS3 spec.) -Use of enhanced by custom CSS "outdent" property -Image HTML attributes added: max-height, max-width, min-height and min-width -Spotcolor can now be defined as it is used e.g. color: spot(PANTONE 534 EC, 100%, 85, 65, 47, 9); -Lists - added support for "start" attribute in
    e.g.
      -Hyphenation controlled using CSS, consistent with CSS3 spec. -Line breaking improved to avoid breaks within words where HTML tags are used e.g. H20 -Line breaking in CJK scripts improved (and ability to force hanging punctuation) -Numerals in a CJK script are kept together -RTL improved support for phrases containing numerals and \ and / -Bidi override codes supported - Right-to-Left Embedding [RLE] U+202B, Left-to-Right Embedding [LRE] U+202A, - U+202C POP DIRECTIONAL FORMATTING (PDF) -Support for in HTML - uses it to SetBasePath for relative URLs. -HTML tag - added support for or - converted to a soft-hyphen -CSS now takes precedence over HTML attribute e.g.
-- tables - if table width set to 100% and one cell/column is empty with no padding/border, sizing incorrectly - (http://www.mpdf1.com/forum/discussion/1886/td-fontsize-in-nested-table-bug-#Item_5) --
added as recognised tag -- CSS style transform supported on element (only) - All transform functions are supported except matrix() i.e. translate(), translateX(), translateY(), skew(), skewX(), skewY(), - scale(), scaleX(), scaleY(), rotate() - NB When using Columns or Keep-with-table (use_kwt), cannot use transform -- CSS background-color now supported on element -- @page :first not recognised unless @page {} has styles set -- left/right margins not allowed on @page :first - - - -================ -mPDF 5.7.2 -28/12/2013 -================ -Bug Fixes ---------- --
- - - -Added CSS support ------------------ -- max-height, max-width, min-height and min-width for images -- "hyphens: none|manual|auto" as per CSS3 spec. -- Decimal mark alignment e.g. text-align: "." center; -- "rem" accepted as a valid (font)size in CSS e.g. font-size: 1.5rem -- text-outline, text-outline-width and text-outline-color supported everywhere except in tables (blur not supported) -- background-origin, background-size, background-clip are now supported everywhere except in tables -- "visibility: hidden|visible|printonly|screenonly" for inline elements e.g. -- Colors: device-cmyk(c,m,y,k) as per CSS3 spec. For consistency, device-cmyka also supported (not CSS3 spec) -- "z-index" can be used to utilise layers in the PDF document -- Custom CSS property added: "outdent" - opposite of indent - -The HTML elements and can now have CSS properties applied to them. - - -Bug fixes ---------- -- SVG images - path including e.g. 1.234E-15 incorrectly parsed (not recognising capital E) -- Tables - if a table starts when the Y position on page is below bottom margin caused endless loop -- Float-ing DIVs - starting a float at bottom of page and it causes page break before anything output, second new page is forced -- Tables - Warning notice now given in Table footer or header if placed after and table spans page -- Columns - block with border-width wider than the length of the border line, line overflows -- Columns - block with no padding containing a block with borders but no backgound colour, borders not printed -- Table in Columns - when background color set by surrounding block element - colour missing for height of half bottom border. -- TOCpagebreakByArray() when called by function was not adding the pagebreak -- Border around block element - dashed not showing correctly (not resetting linewidth between different edges) -- Double border in table - when background colour set in surrounding block element - shows as black line between the 2 bits of double -- Borders around DIVs - "double" border problem if not all 4 sides equally - fixed -- Borders around DIVs - solid (and double) borders overlap as in tables - now fixed so mitred joins as in browser - [Inadvertently improves borders in Columns because of change in LineCap] -- Page numbering - $mpdf->pagenumSuffix etc not suppressed in HTML headers/footers if number suppressed -- Page numbering - Page number total {nbpg} incorrect - e.g. showing decreasing numbers through document, when ToC present -- RTL numerals - incorrectly reversing a number followed by a comma -- Transform to uppercase/lowercase not working for chars > ASCII 128 when using core fonts -- TOCpagebreak - Not setting TOC-FOOTER -- TOCpagebreak - toc-even-header-name etc. not working -- Parsing some relative URLs incorrectly -- Textcircle - when moved to next page by "page-break-inside: avoid" -- Bookmarks will now work if jump more than one level e.g. 0,2,1 Inserts a new blank entry at level 1 -- Paths to img or stylesheets - incorrectly reading "//www.domain.com" i.e. when starting with two / -- data:image as background url() - incorrectly adjusting path on server if MPDF_PATH not specified (included in release mPDF 5.6.1) -- Image problem if spaces or commas in path using http:// URL (included in release mPDF 5.6.1) -- Image URL parsing rewritten to handle both urlencoded URLs and not urlencoded (included in release mPDF 5.6.1) -- fixed to allow color, font-size and font-family to be correctly used, avoid dots being moved to new page, and to work in RTL -- Table {colsum} summed figures in table header -- list-style-type (custom) colour not working -- toc-preHTML and toc-postHTML can now contain quotes - - - -=========================== -mPDF 5.6 -20/01/2013 -=========================== - -Files changed -------------- -mpdf.php -config.php -includes/functions.php -classes/meter.php -classes/directw.php - - -config.php changes ------------------- -$this->allowedCSStags - added HTML5 tags + textcircle AND -$this->outerblocktags - added HTML5 tags -$this->defaultCSS - added default CSS properties - - -New features / Improvements ---------------------------- -CSS support added for for min-height, min-width, max-height and max-width in - -Images embedded in CSS - improved to make it more robust, and - background: url(data:image... now added to work - -HTML5 tags supported -- as generic block elements:
- - - -CSS visibility: printonly, screenonly -------------------------------------- -Roughly based on CSS - -Works on Block elements P, DIV etc, or Image -Cannot nest / layer. -Inner blocks/image with set visibility are ignored if already set on enclosing block element. -(Block element) does not work inside table (image does) -So 'visible' does nothing but is set as default -(NB Changes output to PDF version 1.5) -Incompatible with PDFA / PDFX - -'visibility' - Value: visible | hidden | (collapse | inherit) - Initial: visible - Applies to: all elements - Inherited: yes - -The 'visibility' property specifies whether the boxes generated by an element are rendered. -Invisible boxes still affect layout (set the 'display' property to 'none' to suppress box generation altogether). -Values have the following meanings: - -visible - The generated box is visible. -hidden - The generated box is invisible (fully transparent, nothing is drawn), but still affects layout. - Furthermore, descendants of the element will be visible if they have 'visibility: visible'. -collapse | inherit - NOT supported in mPDF - -CUSTOM: -printonly | screenonly - - -Added VISIBILITY function -$mpdf->SetVisibility('screenonly'); or 'printonly' 'visible' or 'hidden' -(NB Changes output to PDF version 1.5) -Incompatible with PDFA / PDFX - -CircularText ------------- -function CircularText($x, $y, $r, $text, $align='top', $kerning=120, $fontwidth=100) { -x: abscissa of center -y: ordinate of center -r: radius of circle -text: text to be printed -align: text alignment: top or bottom. Default value: top -kerning: spacing between letters in percentage. Default value: 120. Zero is not allowed. -fontwidth: width of letters in percentage. Default value: 100. Zero is not allowed - -- now uses Kerning between letters if useKerning == true (set manually see example) - -BookMark styling ----------------- -New configurable variable to control appearance of Bookmarks e.g. -$this->bookmarkStyles = array( - 0 => array('color'=> array(0,64,128), 'style'=>'B'), - 1 => array('color'=> array(128,0,0), 'style'=>''), - 2 => array('color'=> array(0,128,0), 'style'=>'I'), -); - -Column sums ------------ -(Also changed some preg_replace to str_replace to improve performance) -To use: just add {colsum} to any cells of the table footer -Add a number to specify a fixed number of decimal points e.g. will give you 123.40 -The width of the column will be calculated using the actual string {colsum} as a placeholder. -If you need the column to be wider, use underscores "_" to pad it e.g. {colsum2_____} - - -Spread tables -------------- -i.e. can split table (columns) across several pages width. -CSS
Caption title here
{colsum2}
-Cannot use with: -$this->kwt - ignored -$this->table_rotate - ignored -$this->table_keep_together - ignored -$this->ColActive - cancels spread tables - -Messes up with: -$mpdf->forcePortraitHeaders = true; -$mpdf->forcePortraitMargins = true; -Problems with CJK, and RTL - -Will do no resizing of fonts at all. -Maximum width of column = page width i.e. will not split columns across pages - NB will keep colspan>1 on one page -If table row too high for page will die with error message. -Will override some specs for width if this creates conflicts -Recommended to specify absolute value of width on each column. - - - - -Bug fixes -========= -Dottab - if text after dottab is hyperlinked then dots are underlined - -page-break-before now respects $mpdf->restoreBlockPagebreaks = true; i.e. will make pagebreak act like formfeed -Annotation() function called directly with colorarray(r,g,b) - -Added urldecode to _getImage to cope with ../name%20of%20image.jpg -Added urldecode AND htmlspecials_decode to href in link e.g. https://www.google.com/search?hl=en&q=mpdf&filename=name%20of%20file -[barcode.php] Allow   in C39 codes - will be changed to spaces - -
inside a
not calculating table width correctly - - leading to either upside down table or error width less than 1 character - -Depracated magic_quotes_runtime() in compress.php - -DIRECTW included twice in compress.php -FORMS mark up for compress.php corrected - -double backslashes not preserved inside
 or 
-	$thereistextarea = preg_match_all('#(.*?)#si',$html,$temp2);
-	$html = preg_replace('/[\n]/',' ',$html); //replace linefeed by spaces
-	$html = preg_replace('/[\t]/',' ',$html); //replace tabs by spaces
-
-	// Converts < to < when not a tag
-	$html = preg_replace('/<([^!\/a-zA-Z_:])/i','<\\1',$html);	// mPDF 5.7.3
-	$html = preg_replace("/[ ]+/",' ',$html);
-
-	$html = preg_replace('/\/li>\s+<\/(u|o)l/i','/li>\s+<\/li/i','/\\1l>\s+<\/(u|o)l/i','/li>\s+
  • ]*)>[ ]+/i','<\\1l\\2>',$html); - $html = preg_replace('/[ ]+<(u|o)l/i','<\\1l',$html); - - // Make self closing tabs valid XHTML - // Tags which are self-closing: 1) Replaceable and 2) Non-replaced items - $selftabs = 'input|hr|img|br|jpgraph|barcode|dottab'; - $selftabs2 = 'indexentry|indexinsert|bookmark|watermarktext|watermarkimage|column_break|columnbreak|newcolumn|newpage|page_break|pagebreak|formfeed|columns|toc|tocpagebreak|setpageheader|setpagefooter|sethtmlpageheader|sethtmlpagefooter|annotation'; - $html = preg_replace('/(<('.$selftabs.'|'.$selftabs2.')[^>\/]*)>/i','\\1 />',$html); - - $iterator = 0; - while($thereispre) //Recover
    content
    - { - $temp[2][$iterator] = preg_replace('/<([^!\/a-zA-Z_:])/','<\\1',$temp[2][$iterator]); // mPDF 5.7.2 // mPDF 5.7.3 - - $temp[2][$iterator] = preg_replace_callback("/^([^\n\t]*?)\t/m", array($this, 'tabs2spaces_callback'), $temp[2][$iterator]); // mPDF 5.7+ - $temp[2][$iterator] = preg_replace('/\t/',str_repeat(" ",$tabSpaces),$temp[2][$iterator]); - - $temp[2][$iterator] = preg_replace('/\n/',"
    ",$temp[2][$iterator]); - $temp[2][$iterator] = str_replace('\\',"\\\\",$temp[2][$iterator]); - //$html = preg_replace('#(.*?)
  • #si',''.$temp[2][$iterator].'',$html,1); - $html = preg_replace('#(.*?)#si',''.str_replace('$','\$',$temp[2][$iterator]).'',$html,1); // mPDF 5.7+ - $thereispre--; - $iterator++; - } - $iterator = 0; - while($thereistextarea) //Recover - { - $temp2[2][$iterator] = preg_replace('/\t/',str_repeat(" ",$tabSpaces),$temp2[2][$iterator]); - $temp2[2][$iterator] = str_replace('\\',"\\\\",$temp2[2][$iterator]); - $html = preg_replace('#(.*?)#si',''.trim($temp2[2][$iterator]) .'',$html,1); - $thereistextarea--; - $iterator++; - } - //Restore original tag names - $html = str_replace("","",$html); - $html = str_replace("","",$html); - $html = str_replace("]*)><\/textarea>/si',' ',$html); - $html = preg_replace('/(]*>)\s*()(.*?<\/table>)/si','\\2 position="top"\\3\\1\\4\\2 position="bottom"\\3',$html); // *TABLES* - $html = preg_replace('/<(h[1-6])([^>]*)(>(?:(?!h[1-6]).)*?<\/\\1>\s*

    which browser copes with even though it is wrong! - $html = preg_replace("/(&#[x]{0,1}[0-9a-f]{1,5})tabSpaces - (mb_strlen(stripslashes($matches[1])) % $this->tabSpaces))); -} -// mPDF 5.7+ -function date_callback($matches) { - return date($matches[1]); -} - - -function dec2other($num, $cp, $check=true) { - // From printlistbuffer: font is set, so check if character is available - // From docPageNum: font is not set, so no check - $nstr = (string) $num; - $rnum = ''; - for ($i=0;$i_charDefined($this->CurrentFont['cw'],$cp+intval($nstr[$i]))) { - $rnum .= code2utf($cp+intval($nstr[$i])); - } - else { $rnum .= $nstr[$i]; } - } - return $rnum; -} - -function dec2cjk($num) { - $nstr = (string) $num; - $rnum = ''; - $glyphs = array(0x3007, 0x4E00, 0x4E8C, 0x4E09, 0x56DB, 0x4E94, 0x516D, 0x4E03, 0x516B, 0x4E5D); - for ($i=0;$i 18278)) return "?"; //supports 'only' up to 18278 - $c1 = $c2 = $c3 = ''; - if ($valor > 702) // 3 letters (up to 18278) - { - $c1 = 65 + floor(($valor-703)/676); - $c2 = 65 + floor((($valor-703)%676)/26); - $c3 = 65 + floor((($valor-703)%676)%26); - } - elseif ($valor > 26) // 2 letters (up to 702) - { - $c1 = (64 + (int)(($valor-1) / 26)); - $c2 = (64 + (int)($valor % 26)); - if ($c2 == 64) $c2 += 26; - } - else // 1 letter (up to 26) - { - $c1 = (64 + $valor); - } - $alpha = chr($c1); - if ($c2 != '') $alpha .= chr($c2); - if ($c3 != '') $alpha .= chr($c3); - if (!$toupper) $alpha = strtolower($alpha); - return $alpha; -} - -// mPDF 6 -function dec2hebrew($in, $reverse = false) { - // reverse is used when called from Lists, as these do not pass through bidi-algorithm - $i = intval( $in ); // I initially be the counter value - $s = ''; // S initially be the empty string - //and glyph list initially be the list of additive tuples. - $additive_nums = array(400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 19, 18, 17, 16, 15, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1); - $additive_glyphs = array(0x05EA, 0x05E9, 0x05E8, 0x05E7, 0x05E6, 0x05E4, 0x05E2, 0x05E1, 0x05E0, 0x05DE, 0x05DC, 0x05DB, - array(0x05D9,0x05D8), array(0x05D9,0x05D7), array(0x05D9,0x05D6), array(0x05D8,0x05D6), array(0x05D8,0x05D5), 0x05D9, - 0x05D8, 0x05D7, 0x05D6, 0x05D5, 0x05D4, 0x05D3, 0x05D2, 0x05D1, 0x05D0); - /* NB This system manually specifies the values for 19-15 to force the correct display of 15 and 16, which are commonly - rewritten to avoid a close resemblance to the Tetragrammaton. */ - // This function only works up to 1,000 - if ($i>999) { return $in; } // return as initial numeric string - - // If I is initially 0, and there is an additive tuple with a weight of 0, append that tuple's counter glyph to S and return S. - if ($i==0) { return '0'; } - - // Otherwise, while I is greater than 0 and there are elements left in the glyph list: - for ($t=0; $t= 5000) || ($valor < 1)) return "?"; //supports 'only' up to 4999 - $aux = (int)($valor/1000); - if ($aux!==0) - { - $valor %= 1000; - while($aux!==0) - { - $r1 .= "M"; - $aux--; - } - } - $aux = (int)($valor/100); - if ($aux!==0) - { - $valor %= 100; - switch($aux){ - case 3: $r2="C"; - case 2: $r2.="C"; - case 1: $r2.="C"; break; - case 9: $r2="CM"; break; - case 8: $r2="C"; - case 7: $r2.="C"; - case 6: $r2.="C"; - case 5: $r2="D".$r2; break; - case 4: $r2="CD"; break; - default: break; - } - } - $aux = (int)($valor/10); - if ($aux!==0) - { - $valor %= 10; - switch($aux){ - case 3: $r3="X"; - case 2: $r3.="X"; - case 1: $r3.="X"; break; - case 9: $r3="XC"; break; - case 8: $r3="X"; - case 7: $r3.="X"; - case 6: $r3.="X"; - case 5: $r3="L".$r3; break; - case 4: $r3="XL"; break; - default: break; - } - } - switch($valor){ - case 3: $r4="I"; - case 2: $r4.="I"; - case 1: $r4.="I"; break; - case 9: $r4="IX"; break; - case 8: $r4="I"; - case 7: $r4.="I"; - case 6: $r4.="I"; - case 5: $r4="V".$r4; break; - case 4: $r4="IV"; break; - default: break; - } - $roman = $r1.$r2.$r3.$r4; - if (!$toupper) $roman = strtolower($roman); - return $roman; -} - -//=========================== -/*-- IMPORTS --*/ -function SetImportUse() { - $this->enableImports = true; - ini_set('auto_detect_line_endings',1); - require_once(_MPDF_PATH."mpdfi/pdf_context.php"); - require_once(_MPDF_PATH."mpdfi/pdf_parser.php"); - require_once(_MPDF_PATH."mpdfi/fpdi_pdf_parser.php"); -} - -// from mPDFI -function hex2str($hex) { - return pack("H*", str_replace(array("\r","\n"," "),"", $hex)); -} - -function str2hex($str) { - return current(unpack("H*",$str)); -} - - -function pdf_write_value(&$value) { - switch ($value[0]) { - case PDF_TYPE_NUMERIC : - case PDF_TYPE_TOKEN : - // A numeric value or a token. - // Simply output them - $this->_out($value[1]." ", false); - break; - - case PDF_TYPE_ARRAY : - // An array. Output the proper - // structure and move on. - $this->_out("[",false); - for ($i = 0; $i < count($value[1]); $i++) { - $this->pdf_write_value($value[1][$i]); - } - $this->_out("]"); - break; - - case PDF_TYPE_DICTIONARY : - // A dictionary. - $this->_out("<<",false); - reset ($value[1]); - while (list($k, $v) = each($value[1])) { - $this->_out($k . " ",false); - $this->pdf_write_value($v); - } - $this->_out(">>"); - break; - - case PDF_TYPE_OBJREF : - // An indirect object reference - // Fill the object stack if needed - $cpfn =& $this->current_parser->filename; - if (!isset($this->_don_obj_stack[$cpfn][$value[1]])) { - $this->_newobj(false,true); - $this->_obj_stack[$cpfn][$value[1]] = array($this->n, $value); - $this->_don_obj_stack[$cpfn][$value[1]] = array($this->n, $value); - } - $objid = $this->_don_obj_stack[$cpfn][$value[1]][0]; - $this->_out("{$objid} 0 R"); //{$value[2]} - break; - - case PDF_TYPE_STRING : - if ($this->encrypted) { - $value[1] = $this->_RC4($this->_objectkey($this->_current_obj_id), $value[1]); - $value[1] = $this->_escape($value[1]); - } - // A string. - $this->_out('('.$value[1].')'); - break; - - case PDF_TYPE_STREAM : - // A stream. First, output the - // stream dictionary, then the - // stream data itself. - $this->pdf_write_value($value[1]); - if ($this->encrypted) { - $value[2][1] = $this->_RC4($this->_objectkey($this->_current_obj_id), $value[2][1]); - } - $this->_out("stream"); - $this->_out($value[2][1]); - $this->_out("endstream"); - break; - - case PDF_TYPE_HEX : - if ($this->encrypted) { - $value[1] = $this->hex2str($value[1]); - $value[1] = $this->_RC4($this->_objectkey($this->_current_obj_id), $value[1]); - // remake hexstring of encrypted string - $value[1] = $this->str2hex($value[1]); - } - $this->_out("<".$value[1].">"); - break; - - case PDF_TYPE_NULL : - // The null object. - $this->_out("null"); - break; - } -} - -// ========== OVERWRITE SEARCH STRING IN A PDF FILE ================ -function OverWrite($file_in, $search, $replacement, $dest="D", $file_out="mpdf" ) { - $pdf = file_get_contents($file_in); - - if (!is_array($search)) { - $x = $search; - $search = array($x); - } - if (!is_array($replacement)) { - $x = $replacement; - $replacement = array($x); // mPDF 5.7.4 - } - - if (!$this->onlyCoreFonts && !$this->usingCoreFont) { - foreach($search AS $k=>$val) { - $search[$k] = $this->UTF8ToUTF16BE($search[$k] , false); - $search[$k] = $this->_escape($search[$k]); - $replacement[$k] = $this->UTF8ToUTF16BE($replacement[$k], false); - $replacement[$k] = $this->_escape($replacement[$k]); - } - } - else { - foreach($replacement AS $k=>$val) { - $replacement[$k] = mb_convert_encoding($replacement[$k],$this->mb_enc,'utf-8'); - $replacement[$k] = $this->_escape($replacement[$k]); - } - } - - // Get xref into array - $xref = array(); - preg_match("/xref\n0 (\d+)\n(.*?)\ntrailer/s",$pdf,$m); - $xref_objid = $m[1]; - preg_match_all('/(\d{10}) (\d{5}) (f|n)/',$m[2],$x); - for($i=0; $icompress) { - preg_match("/".($obj+1)." 0 obj\n<<\s*\/Filter\s*\/FlateDecode\s*\/Length (\d+)>>\nstream\n(.*?)\nendstream\n/s",$pdf,$m); - } - else { - preg_match("/".($obj+1)." 0 obj\n<<\s*\/Length (\d+)>>\nstream\n(.*?)\nendstream\n/s",$pdf,$m); - } - $s = $m[2]; - if (!$s) { continue; } - $oldlen = $m[1]; - if ($this->encrypted) { - $s = $this->_RC4($this->_objectkey($obj+1), $s); - } - if ($this->compress) { - $s = gzuncompress($s); - } - foreach($search AS $k=>$val) { - $s = str_replace($search[$k],$replacement[$k],$s); - } - if ($this->compress) { - $s = gzcompress($s); - } - if ($this->encrypted) { - $s = $this->_RC4($this->_objectkey($obj+1), $s); - } - $newlen = strlen($s); - $changes[($xref[$obj+1][0])] = ($newlen - $oldlen) + (strlen($newlen) - strlen($oldlen )); - if ($this->compress) { - $newstr = ($obj+1) . " 0 obj\n<>\nstream\n".$s."\nendstream\n"; - } - else { - $newstr = ($obj+1) . " 0 obj\n<>\nstream\n".$s."\nendstream\n"; - } - $pdf = str_replace($m[0],$newstr,$pdf); - } - - // Update xref in PDF - krsort($changes); - $newxref = "xref\n0 ".$xref_objid."\n"; - foreach($xref AS $v) { - foreach($changes AS $ck => $cv) { - if ($v[0] > $ck) { $v[0] += $cv; } - } - $newxref .= sprintf('%010d',$v[0]) . ' ' . $v[1] . ' ' .$v[2] . " \n"; - } - $newxref .= "trailer"; - $pdf = preg_replace("/xref\n0 \d+\n.*?\ntrailer/s",$newxref,$pdf); - - // Update startxref in PDF - preg_match("/startxref\n(\d+)\n%%EOF/s", $pdf, $m); - $startxref = $m[1]; - $startxref += array_sum($changes); - $pdf = preg_replace("/startxref\n(\d+)\n%%EOF/s","startxref\n".$startxref."\n%%EOF",$pdf); - - // OUTPUT - switch($dest) { - case 'I': - //Send to standard output - if(isset($_SERVER['SERVER_NAME'])) - { - //We send to a browser - Header('Content-Type: application/pdf'); - Header('Content-Length: '.strlen($pdf)); - Header('Content-disposition: inline; filename='.$file_out); - } - echo $pdf; - break; - case 'F': - //Save to local file - if (!$file_out) { $file_out = 'mpdf.pdf'; } - $f=fopen($file_out,'wb'); - if(!$f) die('Unable to create output file: '.$file_out); - fwrite($f,$pdf,strlen($pdf)); - fclose($f); - break; - case 'S': - //Return as a string - return $pdf; - case 'D': - default: - //Download file - if(isset($_SERVER['HTTP_USER_AGENT']) and strpos($_SERVER['HTTP_USER_AGENT'],'MSIE')) - Header('Content-Type: application/force-download'); - else - Header('Content-Type: application/octet-stream'); - Header('Content-Length: '.strlen($pdf)); - Header('Content-disposition: attachment; filename='.$file_out); - echo $pdf; - break; - } -} - - -function GetTemplateSize($tplidx, $_w=0, $_h=0) { - if (!$this->tpls[$tplidx]) - return false; - $w = $this->tpls[$tplidx]['box']['w']; - $h = $this->tpls[$tplidx]['box']['h']; - if ($_w == 0 and $_h == 0) { - $_w = $w; - $_h = $h; - } - if($_w==0) - $_w=$_h*$w/$h; - if($_h==0) - $_h=$_w*$h/$w; - return array("w" => $_w, "h" => $_h); -} - -// Thumbnails -function Thumbnail($file, $npr=3, $spacing=10) { //$npr = number per row - $w = (($this->pgwidth + $spacing)/$npr) - $spacing; - $oldlinewidth = $this->LineWidth; - $this->SetLineWidth(0.02); - $this->SetDColor($this->ConvertColor(0)); - $h = 0; - $maxh = 0; - $x = $_x = $this->lMargin; - $_y = $this->tMargin; - if ($this->y==0) { $y = $_y; } else { $y = $this->y; } - $pagecount = $this->SetSourceFile($file); - for ($n = 1; $n <= $pagecount; $n++) { - $tplidx = $this->ImportPage($n); - $size = $this->useTemplate($tplidx, $x, $y, $w); - $this->Rect($x, $y, $size['w'], $size['h']); - $h = max($h, $size['h']); - $maxh = max($h, $maxh); - if ($n % $npr == 0) { - if (($y + $h + $spacing + $maxh)>$this->PageBreakTrigger && $n != $pagecount) { - $this->AddPage(); - $x = $_x; - $y = $_y; - } - else { - $y += $h+$spacing ; - $x = $_x; - $h = 0; - } - } - else { - $x += $w+$spacing ; - } - } - $this->SetLineWidth($oldlinewidth); -} - -function SetSourceFile($filename) { - $this->current_filename = $filename; - $fn =& $this->current_filename; - if (!isset($this->parsers[$fn])) - // $this->parsers[$fn] =& new fpdi_pdf_parser($fn,$this); - $this->parsers[$fn] = new fpdi_pdf_parser($fn,$this); - if (!$this->parsers[$fn]->success) { - $this->Error($this->parsers[$fn]->errormsg); // Delete this line to return false on fail - return false; - } - $this->current_parser =& $this->parsers[$fn]; - return $this->parsers[$fn]->getPageCount(); -} -function ImportPage($pageno=1, $crop_x=null, $crop_y=null, $crop_w=0, $crop_h=0, $boxName='/CropBox') { - $fn =& $this->current_filename; - $parser =& $this->parsers[$fn]; - $parser->setPageno($pageno); - - $this->tpl++; - $this->tpls[$this->tpl] = array(); - $tpl =& $this->tpls[$this->tpl]; - $tpl['parser'] =& $parser; - $tpl['resources'] = $parser->getPageResources(); - $tpl['buffer'] = $parser->getContent(); - if (!in_array($boxName, $parser->availableBoxes)) - return $this->Error(sprintf("Unknown box: %s", $boxName)); - $pageboxes = $parser->getPageBoxes($pageno); - /** - * MediaBox - * CropBox: Default -> MediaBox - * BleedBox: Default -> CropBox - * TrimBox: Default -> CropBox - * ArtBox: Default -> CropBox - */ - if (!isset($pageboxes[$boxName]) && ($boxName == "/BleedBox" || $boxName == "/TrimBox" || $boxName == "/ArtBox")) - $boxName = "/CropBox"; - if (!isset($pageboxes[$boxName]) && $boxName == "/CropBox") - $boxName = "/MediaBox"; - if (!isset($pageboxes[$boxName])) - return false; - $box = $pageboxes[$boxName]; - - $tpl['box'] = $box; - // To build an array that can be used by useTemplate() - $this->tpls[$this->tpl] = array_merge($this->tpls[$this->tpl],$box); - // An imported page will start at 0,0 everytime. Translation will be set in _putformxobjects() - $tpl['x'] = 0; - $tpl['y'] = 0; - $tpl['w'] = $tpl['box']['w'] ; - $tpl['h'] = $tpl['box']['h'] ; - if ($crop_w) { $tpl['box']['w'] = $crop_w; } - if ($crop_h) { $tpl['box']['h'] = $crop_h; } - if (isset($crop_x)) { $tpl['box']['x'] = $crop_x; } - if (isset($crop_y)) {$tpl['box']['y'] = $tpl['h'] - $crop_y - $crop_h ; } - - $page =& $parser->pages[$parser->pageno]; - // fix for rotated pages - $rotation = $parser->getPageRotation($pageno); - - if (isset($rotation[1]) && ($angle = $rotation[1] % 360) != 0 && $tpl['box']['w'] == $tpl['w']) { - $steps = $angle / 90; - - $_w = $tpl['w']; - $_h = $tpl['h']; - $tpl['w'] = $steps % 2 == 0 ? $_w : $_h; - $tpl['h'] = $steps % 2 == 0 ? $_h : $_w; - if ($steps % 2 != 0) { - $x = $y = ($steps == 1 || $steps == -3) ? $tpl['h'] : $tpl['w']; - } else { - $x = $tpl['w']; - $y = $tpl['h']; - } - $cx=($x/2+$tpl['box']['x'])*_MPDFK; - $cy=($y/2+$tpl['box']['y'])*_MPDFK; - $angle*=-1; - $angle*=M_PI/180; - $c=cos($angle); - $s=sin($angle); - $tpl['box']['w'] = $tpl['w'] ; - $tpl['box']['h'] = $tpl['h'] ; - $tpl['buffer'] = sprintf('q %.5F %.5F %.5F %.5F %.2F %.2F cm 1 0 0 1 %.2F %.2F cm %s Q',$c,$s,-$s,$c,$cx,$cy,-$cx,-$cy, $tpl['buffer']); - } - return $this->tpl; -} -function UseTemplate($tplidx, $_x=null, $_y=null, $_w=0, $_h=0) { - if (!isset($this->tpls[$tplidx])) - $this->Error("Template does not exist!"); - if($this->state==0) { $this->AddPage(); } - $out = 'q 0 J 1 w 0 j 0 G'."\n"; // reset standard values - $x = $this->tpls[$tplidx]['x']; - $y = $this->tpls[$tplidx]['y']; - $w = $this->tpls[$tplidx]['w']; - $h = $this->tpls[$tplidx]['h']; - if ($_x == null) { $_x = $x; } - if ($_y == null) { $_y = $y; } - if ($_x === -1) { $_x = $this->x; } - if ($_y === -1) { $_y = $this->y; } - - $wh = $this->getTemplateSize($tplidx,$_w,$_h); - $_w = $wh['w']; - $_h = $wh['h']; - $out .= sprintf("q %.4F 0 0 %.4F %.2F %.2F cm", ($_w/$this->tpls[$tplidx]['box']['w']), ($_h/$this->tpls[$tplidx]['box']['h']), $_x*_MPDFK, ($this->h-($_y+$_h))*_MPDFK)."\n"; - $out .= $this->tplprefix.$tplidx." Do Q\n"; - - $s = array("w" => $_w, "h" => $_h); - $out .= "Q\n"; - $this->pages[$this->page] = $out . $this->pages[$this->page]; - return $s; -} -function SetPageTemplate($tplidx='') { - if (!isset($this->tpls[$tplidx])) { - $this->pageTemplate = ''; - return false; - } - $this->pageTemplate = $tplidx; -} -function SetDocTemplate($file='', $continue=0) { - $this->docTemplate = $file; - $this->docTemplateContinue = $continue; -} -/*-- END IMPORTS --*/ - - -/* ---------------------------------------------- */ -/* ---------------------------------------------- */ -/* ---------------------------------------------- */ -/* ---------------------------------------------- */ -/* ---------------------------------------------- */ - -// JAVASCRIPT -function _set_object_javascript ($string) { - $this->_newobj(); - $this->_out('<<'); - $this->_out('/S /JavaScript '); - $this->_out('/JS '.$this->_textstring($string)); - $this->_out('>>'); - $this->_out('endobj'); -} - -function SetJS($script) { - $this->js = $script; -} - - - - -}//end of Class - - - - -?> \ No newline at end of file diff --git a/mpdf/mpdfi/filters/FilterASCII85.php b/mpdf/mpdfi/filters/FilterASCII85.php deleted file mode 100644 index fc42d57..0000000 --- a/mpdf/mpdfi/filters/FilterASCII85.php +++ /dev/null @@ -1,98 +0,0 @@ - ORD_u) { - $this->error('Illegal character in ASCII85Decode.'); - } - - $chn[$state++] = $ch - ORD_exclmark; - - if ($state == 5) { - $state = 0; - $r = 0; - for ($j = 0; $j < 5; ++$j) - $r = $r * 85 + $chn[$j]; - $out .= chr($r >> 24); - $out .= chr($r >> 16); - $out .= chr($r >> 8); - $out .= chr($r); - } - } - $r = 0; - - if ($state == 1) - $this->error('Illegal length in ASCII85Decode.'); - if ($state == 2) { - $r = $chn[0] * 85 * 85 * 85 * 85 + ($chn[1]+1) * 85 * 85 * 85; - $out .= chr($r >> 24); - } - else if ($state == 3) { - $r = $chn[0] * 85 * 85 * 85 * 85 + $chn[1] * 85 * 85 * 85 + ($chn[2]+1) * 85 * 85; - $out .= chr($r >> 24); - $out .= chr($r >> 16); - } - else if ($state == 4) { - $r = $chn[0] * 85 * 85 * 85 * 85 + $chn[1] * 85 * 85 * 85 + $chn[2] * 85 * 85 + ($chn[3]+1) * 85 ; - $out .= chr($r >> 24); - $out .= chr($r >> 16); - $out .= chr($r >> 8); - } - - return $out; - } - - function encode($in) { - $this->error("ASCII85 encoding not implemented."); - } -} \ No newline at end of file diff --git a/mpdf/mpdfi/filters/FilterLZW.php b/mpdf/mpdfi/filters/FilterLZW.php deleted file mode 100644 index 5867603..0000000 --- a/mpdf/mpdfi/filters/FilterLZW.php +++ /dev/null @@ -1,154 +0,0 @@ -error('LZW flavour not supported.'); - } - - $this->initsTable(); - - $this->data = $data; - $this->dataLength = strlen($data); - - // Initialize pointers - $this->bytePointer = 0; - $this->bitPointer = 0; - - $this->nextData = 0; - $this->nextBits = 0; - - $oldCode = 0; - - $string = ''; - $uncompData = ''; - - while (($code = $this->getNextCode()) != 257) { - if ($code == 256) { - $this->initsTable(); - $code = $this->getNextCode(); - - if ($code == 257) { - break; - } - - $uncompData .= $this->sTable[$code]; - $oldCode = $code; - - } else { - - if ($code < $this->tIdx) { - $string = $this->sTable[$code]; - $uncompData .= $string; - - $this->addStringToTable($this->sTable[$oldCode], $string[0]); - $oldCode = $code; - } else { - $string = $this->sTable[$oldCode]; - $string = $string.$string[0]; - $uncompData .= $string; - - $this->addStringToTable($string); - $oldCode = $code; - } - } - } - - return $uncompData; - } - - - /** - * Initialize the string table. - */ - function initsTable() { - $this->sTable = array(); - - for ($i = 0; $i < 256; $i++) - $this->sTable[$i] = chr($i); - - $this->tIdx = 258; - $this->bitsToGet = 9; - } - - /** - * Add a new string to the string table. - */ - function addStringToTable ($oldString, $newString='') { - $string = $oldString.$newString; - - // Add this new String to the table - $this->sTable[$this->tIdx++] = $string; - - if ($this->tIdx == 511) { - $this->bitsToGet = 10; - } else if ($this->tIdx == 1023) { - $this->bitsToGet = 11; - } else if ($this->tIdx == 2047) { - $this->bitsToGet = 12; - } - } - - // Returns the next 9, 10, 11 or 12 bits - function getNextCode() { - if ($this->bytePointer == $this->dataLength) { - return 257; - } - - $this->nextData = ($this->nextData << 8) | (ord($this->data[$this->bytePointer++]) & 0xff); - $this->nextBits += 8; - - if ($this->nextBits < $this->bitsToGet) { - $this->nextData = ($this->nextData << 8) | (ord($this->data[$this->bytePointer++]) & 0xff); - $this->nextBits += 8; - } - - $code = ($this->nextData >> ($this->nextBits - $this->bitsToGet)) & $this->andTable[$this->bitsToGet-9]; - $this->nextBits -= $this->bitsToGet; - - return $code; - } - - function encode($in) { - $this->error("LZW encoding not implemented."); - } -} \ No newline at end of file diff --git a/mpdf/mpdfi/fpdi_pdf_parser.php b/mpdf/mpdfi/fpdi_pdf_parser.php deleted file mode 100644 index e0f0239..0000000 --- a/mpdf/mpdfi/fpdi_pdf_parser.php +++ /dev/null @@ -1,363 +0,0 @@ -fpdi =& $fpdi; - $this->filename = $filename; - - parent::pdf_parser($filename); - if ($this->success == false) { return false; } - - // resolve Pages-Dictonary - $pages = $this->pdf_resolve_object($this->c, $this->root[1][1]['/Pages']); - if ($this->success == false) { return false; } - - // Read pages - $this->read_pages($this->c, $pages, $this->pages); - if ($this->success == false) { return false; } - - // count pages; - $this->page_count = count($this->pages); - } - - - /** - * Get pagecount from sourcefile - * - * @return int - */ - function getPageCount() { - return $this->page_count; - } - - - /** - * Set pageno - * - * @param int $pageno Pagenumber to use - */ - function setPageno($pageno) { - $pageno = ((int) $pageno) - 1; - - if ($pageno < 0 || $pageno >= $this->getPageCount()) { - $this->fpdi->error("Pagenumber is wrong!"); - } - - $this->pageno = $pageno; - } - - /** - * Get page-resources from current page - * - * @return array - */ - function getPageResources() { - return $this->_getPageResources($this->pages[$this->pageno]); - } - - /** - * Get page-resources from /Page - * - * @param array $obj Array of pdf-data - */ - function _getPageResources ($obj) { // $obj = /Page - $obj = $this->pdf_resolve_object($this->c, $obj); - - // If the current object has a resources - // dictionary associated with it, we use - // it. Otherwise, we move back to its - // parent object. - if (isset ($obj[1][1]['/Resources'])) { - $res = $this->pdf_resolve_object($this->c, $obj[1][1]['/Resources']); - if ($res[0] == PDF_TYPE_OBJECT) - return $res[1]; - return $res; - } else { - if (!isset ($obj[1][1]['/Parent'])) { - return false; - } else { - $res = $this->_getPageResources($obj[1][1]['/Parent']); - if ($res[0] == PDF_TYPE_OBJECT) - return $res[1]; - return $res; - } - } - } - - - /** - * Get content of current page - * - * If more /Contents is an array, the streams are concated - * - * @return string - */ - function getContent() { - $buffer = ""; - - if (isset($this->pages[$this->pageno][1][1]['/Contents'])) { - $contents = $this->_getPageContent($this->pages[$this->pageno][1][1]['/Contents']); - foreach($contents AS $tmp_content) { - $buffer .= $this->_rebuildContentStream($tmp_content).' '; - } - } - - return $buffer; - } - - - /** - * Resolve all content-objects - * - * @param array $content_ref - * @return array - */ - function _getPageContent($content_ref) { - $contents = array(); - - if ($content_ref[0] == PDF_TYPE_OBJREF) { - $content = $this->pdf_resolve_object($this->c, $content_ref); - if ($content[1][0] == PDF_TYPE_ARRAY) { - $contents = $this->_getPageContent($content[1]); - } else { - $contents[] = $content; - } - } else if ($content_ref[0] == PDF_TYPE_ARRAY) { - foreach ($content_ref[1] AS $tmp_content_ref) { - $contents = array_merge($contents,$this->_getPageContent($tmp_content_ref)); - } - } - - return $contents; - } - - - /** - * Rebuild content-streams - * - * @param array $obj - * @return string - */ - function _rebuildContentStream($obj) { - $filters = array(); - - if (isset($obj[1][1]['/Filter'])) { - $_filter = $obj[1][1]['/Filter']; - - if ($_filter[0] == PDF_TYPE_TOKEN) { - $filters[] = $_filter; - } else if ($_filter[0] == PDF_TYPE_ARRAY) { - $filters = $_filter[1]; - } - } - - $stream = $obj[2][1]; - - foreach ($filters AS $_filter) { - switch ($_filter[1]) { - case "/FlateDecode": - if (function_exists('gzuncompress')) { - $stream = (strlen($stream) > 0) ? @gzuncompress($stream) : ''; - } else { - $this->fpdi->error(sprintf("To handle %s filter, please compile php with zlib support.",$_filter[1])); - } - if ($stream === false) { - $this->fpdi->error("Error while decompressing stream."); - } - break; - // mPDF 4.2.003 - case '/LZWDecode': - include_once(_MPDF_PATH.'mpdfi/filters/FilterLZW.php'); - // mPDF 5.0 Removed pass by reference =& - $decoder = new FilterLZW(); - $stream = $decoder->decode($stream); - break; - case '/ASCII85Decode': - include_once(_MPDF_PATH.'mpdfi/filters/FilterASCII85.php'); - // mPDF 5.0 Removed pass by reference =& - $decoder = new FilterASCII85(); - $stream = $decoder->decode($stream); - break; - case null: - $stream = $stream; - break; - default: - $this->fpdi->error(sprintf("Unsupported Filter: %s",$_filter[1])); - } - } - - return $stream; - } - - - /** - * Get a Box from a page - * Arrayformat is same as used by fpdf_tpl - * - * @param array $page a /Page - * @param string $box_index Type of Box @see $availableBoxes - * @return array - */ - function getPageBox($page, $box_index) { - $page = $this->pdf_resolve_object($this->c,$page); - $box = null; - if (isset($page[1][1][$box_index])) - $box =& $page[1][1][$box_index]; - - if (!is_null($box) && $box[0] == PDF_TYPE_OBJREF) { - $tmp_box = $this->pdf_resolve_object($this->c,$box); - $box = $tmp_box[1]; - } - - if (!is_null($box) && $box[0] == PDF_TYPE_ARRAY) { - $b =& $box[1]; - return array("x" => $b[0][1]/_MPDFK, - "y" => $b[1][1]/_MPDFK, - "w" => abs($b[0][1]-$b[2][1])/_MPDFK, - "h" => abs($b[1][1]-$b[3][1])/_MPDFK); // mPDF 5.3.90 - } else if (!isset ($page[1][1]['/Parent'])) { - return false; - } else { - return $this->getPageBox($this->pdf_resolve_object($this->c, $page[1][1]['/Parent']), $box_index); - } - } - - function getPageBoxes($pageno) { - return $this->_getPageBoxes($this->pages[$pageno-1]); - } - - /** - * Get all Boxes from /Page - * - * @param array a /Page - * @return array - */ - function _getPageBoxes($page) { - $boxes = array(); - - foreach($this->availableBoxes AS $box) { - if ($_box = $this->getPageBox($page,$box)) { - $boxes[$box] = $_box; - } - } - - return $boxes; - } - - function getPageRotation($pageno) { - return $this->_getPageRotation($this->pages[$pageno-1]); - } - - function _getPageRotation ($obj) { // $obj = /Page - $obj = $this->pdf_resolve_object($this->c, $obj); - if (isset ($obj[1][1]['/Rotate'])) { - $res = $this->pdf_resolve_object($this->c, $obj[1][1]['/Rotate']); - if ($res[0] == PDF_TYPE_OBJECT) - return $res[1]; - return $res; - } else { - if (!isset ($obj[1][1]['/Parent'])) { - return false; - } else { - $res = $this->_getPageRotation($obj[1][1]['/Parent']); - if ($res[0] == PDF_TYPE_OBJECT) - return $res[1]; - return $res; - } - } - } - - /** - * Read all /Page(es) - * - * @param object pdf_context - * @param array /Pages - * @param array the result-array - */ - function read_pages (&$c, &$pages, &$result) { - // Get the kids dictionary - $kids = $this->pdf_resolve_object ($c, $pages[1][1]['/Kids']); - - if (!is_array($kids)) { - // mPDF 4.0 - $this->success = false; - $this->errormsg = sprintf("Cannot find /Kids in current /Page-Dictionary"); - return false; - } - foreach ($kids[1] as $v) { - $pg = $this->pdf_resolve_object ($c, $v); - if ($pg[1][1]['/Type'][1] === '/Pages') { - // If one of the kids is an embedded - // /Pages array, resolve it as well. - $this->read_pages ($c, $pg, $result); - } else { - $result[] = $pg; - } - } - } - - - - -} - -?> \ No newline at end of file diff --git a/mpdf/mpdfi/pdf_context.php b/mpdf/mpdfi/pdf_context.php deleted file mode 100644 index 6cf4bdc..0000000 --- a/mpdf/mpdfi/pdf_context.php +++ /dev/null @@ -1,78 +0,0 @@ -file = $f; - $this->reset(); - } - - // Optionally move the file - // pointer to a new location - // and reset the buffered data - - function reset($pos = null, $l = 100) { - if (!is_null ($pos)) { - fseek ($this->file, $pos); - } - - $this->buffer = $l > 0 ? fread($this->file, $l) : ''; - $this->offset = 0; - $this->length = strlen($this->buffer); - $this->stack = array(); - } - - // Make sure that there is at least one - // character beyond the current offset in - // the buffer to prevent the tokenizer - // from attempting to access data that does - // not exist - - function ensure_content() { - if ($this->offset >= $this->length - 1) { - return $this->increase_length(); - } else { - return true; - } - } - - // Forcefully read more data into the buffer - - function increase_length($l=100) { - if (feof($this->file)) { - return false; - } else { - $this->buffer .= fread($this->file, $l); - $this->length = strlen($this->buffer); - return true; - } - } - -} -?> \ No newline at end of file diff --git a/mpdf/mpdfi/pdf_parser.php b/mpdf/mpdfi/pdf_parser.php deleted file mode 100644 index c7d69e2..0000000 --- a/mpdf/mpdfi/pdf_parser.php +++ /dev/null @@ -1,690 +0,0 @@ -filename = $filename; - // mPDF 4.0 - $this->success = true; - - $this->f = @fopen($this->filename, "rb"); - - if (!$this->f) { - $this->success = false; - $this->errormsg = sprintf("Cannot open %s !", $filename); - return false; - } - // mPDF 5.0 Removed pass by reference =& - $this->c = new pdf_context($this->f); - // Read xref-Data - $offset = $this->pdf_find_xref(); - if ($offset===false) { - $this->success = false; - $this->errormsg = sprintf("Cannot open %s !", $filename); - return false; - } - $this->pdf_read_xref($this->xref, $offset); - if ($this->success == false) { return false; } - - // Check for Encryption - $this->getEncryption(); - if ($this->success == false) { return false; } - - // Read root - $this->pdf_read_root(); - if ($this->success == false) { return false; } - } - - /** - * Close the opened file - */ - function closeFile() { - if (isset($this->f)) { - fclose($this->f); - unset($this->f); - } - } - - /** - * Print Error and die - * - * @param string $msg Error-Message - */ - function error($msg) { - die("PDF-Parser Error: ".$msg); - } - - /** - * Check Trailer for Encryption - */ - function getEncryption() { - if (isset($this->xref['trailer'][1]['/Encrypt'])) { - // mPDF 4.0 - $this->success = false; - $this->errormsg = sprintf("File is encrypted!"); - return false; - } - } - - /** - * Find/Return /Root - * - * @return array - */ - function pdf_find_root() { - if ($this->xref['trailer'][1]['/Root'][0] != PDF_TYPE_OBJREF) { - // mPDF 4.0 - $this->success = false; - $this->errormsg = sprintf("Wrong Type of Root-Element! Must be an indirect reference"); - return false; - } - return $this->xref['trailer'][1]['/Root']; - } - - /** - * Read the /Root - */ - function pdf_read_root() { - // read root - $root = $this->pdf_find_root(); - if ($root ===false) { - $this->success = false; - return false; - } - $this->root = $this->pdf_resolve_object($this->c, $root); - } - - /** - * Find the xref-Table - */ - function pdf_find_xref() { - fseek ($this->f, -min(filesize($this->filename),1500), SEEK_END); - $data = fread($this->f, 1500); - - $pos = strlen($data) - strpos(strrev($data), strrev('startxref')); - $data = substr($data, $pos); - - if (!preg_match('/\s*(\d+).*$/s', $data, $matches)) { - // mPDF 4.0 - $this->success = false; - $this->errormsg = sprintf("Unable to find pointer to xref table"); - return false; - } - - return (int) $matches[1]; - } - - /** - * Read xref-table - * - * @param array $result Array of xref-table - * @param integer $offset of xref-table - * @param integer $start start-position in xref-table - * @param integer $end end-position in xref-table - */ - function pdf_read_xref(&$result, $offset, $start = null, $end = null) { - if (is_null ($start) || is_null ($end)) { - fseek($this->f, $o_pos = $offset); - $data = trim(fgets($this->f,1024)); - - if (strlen($data) == 0) - $data = trim(fgets($this->f,1024)); - - if ($data !== 'xref') { - fseek($this->f, $o_pos); - $data = trim(_fgets($this->f, true)); - if ($data !== 'xref') { - if (preg_match('/(.*xref)(.*)/m', $data, $m)) { // xref 0 128 - in one line - fseek($this->f, $o_pos+strlen($m[1])); - } elseif (preg_match('/(x|r|e|f)+/', $data, $m)) { // correct invalid xref-pointer - $tmpOffset = $offset-4+strlen($m[0]); - $this->pdf_read_xref($result, $tmpOffset, $start, $end); - return; - } else { - // mPDF 4.0 - $this->success = false; - $this->errormsg = sprintf("Unable to find xref table - Maybe a Problem with 'auto_detect_line_endings'"); - return; - } - } - } - - $o_pos = ftell($this->f); - $data = explode(' ', trim(fgets($this->f,1024))); - if (count($data) != 2) { - fseek($this->f, $o_pos); - $data = explode(' ', trim(_fgets($this->f, true))); - - if (count($data) != 2) { - if (count($data) > 2) { // no lineending - $n_pos = $o_pos+strlen($data[0])+strlen($data[1])+2; - fseek($this->f, $n_pos); - } else { - // mPDF 4.0 - $this->success = false; - $this->errormsg = sprintf("Unexpected header in xref table"); - return; - } - } - } - $start = $data[0]; - $end = $start + $data[1]; - } - - if (!isset($result['xref_location'])) { - $result['xref_location'] = $offset; - } - - if (!isset($result['max_object']) || $end > $result['max_object']) { - $result['max_object'] = $end; - } - - for (; $start < $end; $start++) { - $data = ltrim(fread($this->f, 20)); // Spezifications says: 20 bytes including newlines - $offset = substr($data, 0, 10); - $generation = substr($data, 11, 5); - - if (!isset ($result['xref'][$start][(int) $generation])) { - $result['xref'][$start][(int) $generation] = (int) $offset; - } - } - - $o_pos = ftell($this->f); - $data = fgets($this->f,1024); - if (strlen(trim($data)) == 0) - $data = fgets($this->f, 1024); - - if (preg_match("/trailer/",$data)) { - if (preg_match("/(.*trailer[ \n\r]*)/",$data,$m)) { - fseek($this->f, $o_pos+strlen($m[1])); - } - - // mPDF 5.0 Removed pass by reference =& - $c = new pdf_context($this->f); - $trailer = $this->pdf_read_value($c); - - if (isset($trailer[1]['/Prev'])) { - $this->pdf_read_xref($result, $trailer[1]['/Prev'][1]); - $result['trailer'][1] = array_merge($result['trailer'][1], $trailer[1]); - } else { - $result['trailer'] = $trailer; - } - } else { - $data = explode(' ', trim($data)); - - if (count($data) != 2) { - fseek($this->f, $o_pos); - $data = explode(' ', trim (_fgets ($this->f, true))); - - if (count($data) != 2) { - // mPDF 4.0 - $this->success = false; - $this->errormsg = sprintf("Unexpected data in xref table"); - return; - } - } - - $this->pdf_read_xref($result, null, (int) $data[0], (int) $data[0] + (int) $data[1]); - } - } - - - /** - * Reads an Value - * - * @param object $c pdf_context - * @param string $token a Token - * @return mixed - */ - function pdf_read_value(&$c, $token = null) { - if (is_null($token)) { - $token = $this->pdf_read_token($c); - } - - if ($token === false) { - return false; - } - - switch ($token) { - case '<': - // This is a hex string. - // Read the value, then the terminator - - $pos = $c->offset; - - while(1) { - - $match = strpos ($c->buffer, '>', $pos); - - // If you can't find it, try - // reading more data from the stream - - if ($match === false) { - if (!$c->increase_length()) { - return false; - } else { - continue; - } - } - - $result = substr ($c->buffer, $c->offset, $match - $c->offset); - $c->offset = $match+1; - - return array (PDF_TYPE_HEX, $result); - } - - break; - case '<<': - // This is a dictionary. - - $result = array(); - - // Recurse into this function until we reach - // the end of the dictionary. - while (($key = $this->pdf_read_token($c)) !== '>>') { - if ($key === false) { - return false; - } - - if (($value = $this->pdf_read_value($c)) === false) { - return false; - } - $result[$key] = $value; - } - - return array (PDF_TYPE_DICTIONARY, $result); - - case '[': - // This is an array. - - $result = array(); - - // Recurse into this function until we reach - // the end of the array. - while (($token = $this->pdf_read_token($c)) !== ']') { - if ($token === false) { - return false; - } - - if (($value = $this->pdf_read_value($c, $token)) === false) { - return false; - } - - $result[] = $value; - } - - return array (PDF_TYPE_ARRAY, $result); - - case '(' : - // This is a string - - $pos = $c->offset; - - while(1) { - - // Start by finding the next closed - // parenthesis - - $match = strpos ($c->buffer, ')', $pos); - - // If you can't find it, try - // reading more data from the stream - - if ($match === false) { - if (!$c->increase_length()) { - return false; - } else { - continue; - } - } - - // Make sure that there is no backslash - // before the parenthesis. If there is, - // move on. Otherwise, return the string. - $esc = preg_match('/([\\\\]+)$/', $tmpresult = substr($c->buffer, $c->offset, $match - $c->offset), $m); - - if ($esc === 0 || strlen($m[1]) % 2 == 0) { - $result = $tmpresult; - $c->offset = $match + 1; - return array (PDF_TYPE_STRING, $result); - } else { - $pos = $match + 1; - - if ($pos > $c->offset + $c->length) { - $c->increase_length(); - } - } - } - - case "stream": - $o_pos = ftell($c->file)-strlen($c->buffer); - $o_offset = $c->offset; - - $c->reset($startpos = $o_pos + $o_offset); - - $e = 0; // ensure line breaks in front of the stream - if ($c->buffer[0] == chr(10) || $c->buffer[0] == chr(13)) - $e++; - if ($c->buffer[1] == chr(10) && $c->buffer[0] != chr(10)) - $e++; - - if ($this->actual_obj[1][1]['/Length'][0] == PDF_TYPE_OBJREF) { - // mPDF 5.0 Removed pass by reference =& - $tmp_c = new pdf_context($this->f); - $tmp_length = $this->pdf_resolve_object($tmp_c,$this->actual_obj[1][1]['/Length']); - $length = $tmp_length[1][1]; - } else { - $length = $this->actual_obj[1][1]['/Length'][1]; - } - - if ($length > 0) { - $c->reset($startpos+$e,$length); - $v = $c->buffer; - } else { - $v = ''; - } - $c->reset($startpos+$e+$length+9); // 9 = strlen("endstream") - - return array(PDF_TYPE_STREAM, $v); - - default : - if (is_numeric ($token)) { - // A numeric token. Make sure that - // it is not part of something else. - if (($tok2 = $this->pdf_read_token ($c)) !== false) { - if (is_numeric ($tok2)) { - - // Two numeric tokens in a row. - // In this case, we're probably in - // front of either an object reference - // or an object specification. - // Determine the case and return the data - if (($tok3 = $this->pdf_read_token ($c)) !== false) { - switch ($tok3) { - case 'obj' : - return array (PDF_TYPE_OBJDEC, (int) $token, (int) $tok2); - case 'R' : - return array (PDF_TYPE_OBJREF, (int) $token, (int) $tok2); - } - // If we get to this point, that numeric value up - // there was just a numeric value. Push the extra - // tokens back into the stack and return the value. - array_push ($c->stack, $tok3); - } - } - - array_push ($c->stack, $tok2); - } - - return array (PDF_TYPE_NUMERIC, $token); - } else { - - // Just a token. Return it. - return array (PDF_TYPE_TOKEN, $token); - } - - } - } - - /** - * Resolve an object - * - * @param object $c pdf_context - * @param array $obj_spec The object-data - * @param boolean $encapsulate Must set to true, cause the parsing and fpdi use this method only without this para - */ - function pdf_resolve_object(&$c, $obj_spec, $encapsulate = true) { - // Exit if we get invalid data - if (!is_array($obj_spec)) { - return false; - } - - if ($obj_spec[0] == PDF_TYPE_OBJREF) { - - // This is a reference, resolve it - if (isset($this->xref['xref'][$obj_spec[1]][$obj_spec[2]])) { - - // Save current file position - // This is needed if you want to resolve - // references while you're reading another object - // (e.g.: if you need to determine the length - // of a stream) - - $old_pos = ftell($c->file); - - // Reposition the file pointer and - // load the object header. - - $c->reset($this->xref['xref'][$obj_spec[1]][$obj_spec[2]]); - - $header = $this->pdf_read_value($c,null,true); - - if ($header[0] != PDF_TYPE_OBJDEC || $header[1] != $obj_spec[1] || $header[2] != $obj_spec[2]) { - // mPDF 4.0 - $this->success = false; - $this->errormsg = sprintf("Unable to find object ({$obj_spec[1]}, {$obj_spec[2]}) at expected location"); - return false; - } - - // If we're being asked to store all the information - // about the object, we add the object ID and generation - // number for later use - $this->actual_obj =& $result; - if ($encapsulate) { - $result = array ( - PDF_TYPE_OBJECT, - 'obj' => $obj_spec[1], - 'gen' => $obj_spec[2] - ); - } else { - $result = array(); - } - - // Now simply read the object data until - // we encounter an end-of-object marker - while(1) { - $value = $this->pdf_read_value($c); - if ($value === false || count($result) > 4) { - // in this case the parser coudn't find an endobj so we break here - break; - } - - if ($value[0] == PDF_TYPE_TOKEN && $value[1] === 'endobj') { - break; - } - - $result[] = $value; - } - - $c->reset($old_pos); - - if (isset($result[2][0]) && $result[2][0] == PDF_TYPE_STREAM) { - $result[0] = PDF_TYPE_STREAM; - } - - return $result; - } - } else { - return $obj_spec; - } - } - - - - /** - * Reads a token from the file - * - * @param object $c pdf_context - * @return mixed - */ - function pdf_read_token(&$c) - { - // If there is a token available - // on the stack, pop it out and - // return it. - - if (count($c->stack)) { - return array_pop($c->stack); - } - - // Strip away any whitespace - - do { - if (!$c->ensure_content()) { - return false; - } - $c->offset += _strspn($c->buffer, " \n\r\t", $c->offset); - } while ($c->offset >= $c->length - 1); - - // Get the first character in the stream - - $char = $c->buffer[$c->offset++]; - - switch ($char) { - - case '[' : - case ']' : - case '(' : - case ')' : - - // This is either an array or literal string - // delimiter, Return it - - return $char; - - case '<' : - case '>' : - - // This could either be a hex string or - // dictionary delimiter. Determine the - // appropriate case and return the token - - if ($c->buffer[$c->offset] == $char) { - if (!$c->ensure_content()) { - return false; - } - $c->offset++; - return $char . $char; - } else { - return $char; - } - - default : - - // This is "another" type of token (probably - // a dictionary entry or a numeric value) - // Find the end and return it. - - if (!$c->ensure_content()) { - return false; - } - - while(1) { - - // Determine the length of the token - - $pos = _strcspn($c->buffer, " []<>()\r\n\t/", $c->offset); - if ($c->offset + $pos <= $c->length - 1) { - break; - } else { - // If the script reaches this point, - // the token may span beyond the end - // of the current buffer. Therefore, - // we increase the size of the buffer - // and try again--just to be safe. - - $c->increase_length(); - } - } - - $result = substr($c->buffer, $c->offset - 1, $pos + 1); - - $c->offset += $pos; - return $result; - } - } - - -} - -?> \ No newline at end of file diff --git a/mpdf/patterns/de.php b/mpdf/patterns/de.php deleted file mode 100644 index 2164340..0000000 --- a/mpdf/patterns/de.php +++ /dev/null @@ -1,9 +0,0 @@ - \ No newline at end of file diff --git a/mpdf/patterns/en.php b/mpdf/patterns/en.php deleted file mode 100644 index a02b63f..0000000 --- a/mpdf/patterns/en.php +++ /dev/null @@ -1,10 +0,0 @@ - \ No newline at end of file diff --git a/mpdf/patterns/es.php b/mpdf/patterns/es.php deleted file mode 100644 index da8f756..0000000 --- a/mpdf/patterns/es.php +++ /dev/null @@ -1,11 +0,0 @@ - \ No newline at end of file diff --git a/mpdf/patterns/fi.php b/mpdf/patterns/fi.php deleted file mode 100644 index 5be3124..0000000 --- a/mpdf/patterns/fi.php +++ /dev/null @@ -1,9 +0,0 @@ - \ No newline at end of file diff --git a/mpdf/patterns/fr.php b/mpdf/patterns/fr.php deleted file mode 100644 index 335f85b..0000000 --- a/mpdf/patterns/fr.php +++ /dev/null @@ -1,12 +0,0 @@ - \ No newline at end of file diff --git a/mpdf/patterns/it.php b/mpdf/patterns/it.php deleted file mode 100644 index bdda023..0000000 --- a/mpdf/patterns/it.php +++ /dev/null @@ -1,11 +0,0 @@ - \ No newline at end of file diff --git a/mpdf/patterns/nl.php b/mpdf/patterns/nl.php deleted file mode 100644 index 06a342d..0000000 --- a/mpdf/patterns/nl.php +++ /dev/null @@ -1,11 +0,0 @@ - \ No newline at end of file diff --git a/mpdf/patterns/pl.php b/mpdf/patterns/pl.php deleted file mode 100644 index f531105..0000000 --- a/mpdf/patterns/pl.php +++ /dev/null @@ -1,9 +0,0 @@ - diff --git a/mpdf/patterns/ru.php b/mpdf/patterns/ru.php deleted file mode 100644 index 6202773..0000000 --- a/mpdf/patterns/ru.php +++ /dev/null @@ -1,12 +0,0 @@ - \ No newline at end of file diff --git a/mpdf/patterns/sv.php b/mpdf/patterns/sv.php deleted file mode 100644 index b01ce72..0000000 --- a/mpdf/patterns/sv.php +++ /dev/null @@ -1,12 +0,0 @@ - \ No newline at end of file diff --git a/mpdf/progbar.css b/mpdf/progbar.css deleted file mode 100644 index 78afc31..0000000 --- a/mpdf/progbar.css +++ /dev/null @@ -1,66 +0,0 @@ -body { - margin : 0 auto; - width:100%; - font-family: "Verdana"; - color: #40454b; - font-size: 12px; - text-align:center; -} -.main { - width:540px; - margin: 0 auto; - text-align:left; -} -.heading { - font-size:14px; - font-weight:bold; - color:#CC0000; - padding:5px; - margin-left:10px; - border-bottom:solid; - border-bottom-width:1px; - border-bottom-color:#333333; - /* Use this to suppress the horizontal line under the heading */ - /* border-bottom: 0px solid #000000; */ -} -table { - font-family: "Verdana"; - color: #40454b; - font-size: 12px; -} -.demo { - margin : 0 auto; - width:100%; - margin:20px; - /* Use this to suppress all the bars and text */ - /* display: none; */ -} -td { - vertical-align: top; - padding: 0 0.5em 0 0; -} -.code { - font-family: "Courier New", Courier, monospace; - font-size: 10px; -} -.code2 { - font-family: "Courier New", Courier, monospace; - font-size: 11px; font-weight: bold; color: red; -} -.barheading { - color:#006600; - font-weight:bold; -} -.progressBar { - border: 1px solid #000000; - background-color: #EEEEEE; - width: 200px; - font-size: 6px; -} -.innerBar { - background-color:#00CC00; - width: 0%; -} -#box3 { - font-weight: bold; -} diff --git a/mpdf/qrcode/_LGPL.txt b/mpdf/qrcode/_LGPL.txt deleted file mode 100644 index cca7fc2..0000000 --- a/mpdf/qrcode/_LGPL.txt +++ /dev/null @@ -1,165 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - - This version of the GNU Lesser General Public License incorporates -the terms and conditions of version 3 of the GNU General Public -License, supplemented by the additional permissions listed below. - - 0. Additional Definitions. - - As used herein, "this License" refers to version 3 of the GNU Lesser -General Public License, and the "GNU GPL" refers to version 3 of the GNU -General Public License. - - "The Library" refers to a covered work governed by this License, -other than an Application or a Combined Work as defined below. - - An "Application" is any work that makes use of an interface provided -by the Library, but which is not otherwise based on the Library. -Defining a subclass of a class defined by the Library is deemed a mode -of using an interface provided by the Library. - - A "Combined Work" is a work produced by combining or linking an -Application with the Library. The particular version of the Library -with which the Combined Work was made is also called the "Linked -Version". - - The "Minimal Corresponding Source" for a Combined Work means the -Corresponding Source for the Combined Work, excluding any source code -for portions of the Combined Work that, considered in isolation, are -based on the Application, and not on the Linked Version. - - The "Corresponding Application Code" for a Combined Work means the -object code and/or source code for the Application, including any data -and utility programs needed for reproducing the Combined Work from the -Application, but excluding the System Libraries of the Combined Work. - - 1. Exception to Section 3 of the GNU GPL. - - You may convey a covered work under sections 3 and 4 of this License -without being bound by section 3 of the GNU GPL. - - 2. Conveying Modified Versions. - - If you modify a copy of the Library, and, in your modifications, a -facility refers to a function or data to be supplied by an Application -that uses the facility (other than as an argument passed when the -facility is invoked), then you may convey a copy of the modified -version: - - a) under this License, provided that you make a good faith effort to - ensure that, in the event an Application does not supply the - function or data, the facility still operates, and performs - whatever part of its purpose remains meaningful, or - - b) under the GNU GPL, with none of the additional permissions of - this License applicable to that copy. - - 3. Object Code Incorporating Material from Library Header Files. - - The object code form of an Application may incorporate material from -a header file that is part of the Library. You may convey such object -code under terms of your choice, provided that, if the incorporated -material is not limited to numerical parameters, data structure -layouts and accessors, or small macros, inline functions and templates -(ten or fewer lines in length), you do both of the following: - - a) Give prominent notice with each copy of the object code that the - Library is used in it and that the Library and its use are - covered by this License. - - b) Accompany the object code with a copy of the GNU GPL and this license - document. - - 4. Combined Works. - - You may convey a Combined Work under terms of your choice that, -taken together, effectively do not restrict modification of the -portions of the Library contained in the Combined Work and reverse -engineering for debugging such modifications, if you also do each of -the following: - - a) Give prominent notice with each copy of the Combined Work that - the Library is used in it and that the Library and its use are - covered by this License. - - b) Accompany the Combined Work with a copy of the GNU GPL and this license - document. - - c) For a Combined Work that displays copyright notices during - execution, include the copyright notice for the Library among - these notices, as well as a reference directing the user to the - copies of the GNU GPL and this license document. - - d) Do one of the following: - - 0) Convey the Minimal Corresponding Source under the terms of this - License, and the Corresponding Application Code in a form - suitable for, and under terms that permit, the user to - recombine or relink the Application with a modified version of - the Linked Version to produce a modified Combined Work, in the - manner specified by section 6 of the GNU GPL for conveying - Corresponding Source. - - 1) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (a) uses at run time - a copy of the Library already present on the user's computer - system, and (b) will operate properly with a modified version - of the Library that is interface-compatible with the Linked - Version. - - e) Provide Installation Information, but only if you would otherwise - be required to provide such information under section 6 of the - GNU GPL, and only to the extent that such information is - necessary to install and execute a modified version of the - Combined Work produced by recombining or relinking the - Application with a modified version of the Linked Version. (If - you use option 4d0, the Installation Information must accompany - the Minimal Corresponding Source and Corresponding Application - Code. If you use option 4d1, you must provide the Installation - Information in the manner specified by section 6 of the GNU GPL - for conveying Corresponding Source.) - - 5. Combined Libraries. - - You may place library facilities that are a work based on the -Library side by side in a single library together with other library -facilities that are not Applications and are not covered by this -License, and convey such a combined library under terms of your -choice, if you do both of the following: - - a) Accompany the combined library with a copy of the same work based - on the Library, uncombined with any other library facilities, - conveyed under the terms of this License. - - b) Give prominent notice with the combined library that part of it - is a work based on the Library, and explaining where to find the - accompanying uncombined form of the same work. - - 6. Revised Versions of the GNU Lesser General Public License. - - The Free Software Foundation may publish revised and/or new versions -of the GNU Lesser General Public License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. - - Each version is given a distinguishing version number. If the -Library as you received it specifies that a certain numbered version -of the GNU Lesser General Public License "or any later version" -applies to it, you have the option of following the terms and -conditions either of that published version or of any later version -published by the Free Software Foundation. If the Library as you -received it does not specify a version number of the GNU Lesser -General Public License, you may choose any version of the GNU Lesser -General Public License ever published by the Free Software Foundation. - - If the Library as you received it specifies that a proxy can decide -whether future versions of the GNU Lesser General Public License shall -apply, that proxy's public statement of acceptance of any version is -permanent authorization for you to choose that version for the -Library. diff --git a/mpdf/qrcode/_lisez_moi.txt b/mpdf/qrcode/_lisez_moi.txt deleted file mode 100644 index a14f4a3..0000000 --- a/mpdf/qrcode/_lisez_moi.txt +++ /dev/null @@ -1,49 +0,0 @@ -******************************************************* -** Ce programme est distribu sous la licence LGPL, ** -** reportez-vous au fichier _LGPL.txt ou ** -** http://www.gnu.org/licenses/lgpl.html ** -** pour en savoir plus. ** -** ** -** Copyright 2000-2010 par Laurent Minguet ** -******************************************************* -************************** -* QRCode generator v0.99 * -************************** - -Utilisation : ------------- - - necessite PHP5 - - - regardez le fichier index.php pour voir le fonctionnement. - - - voici un exemple : - require_once('qrcode.class.php'); - $qrcode = new QRcode('your message here', 'H'); // error level : L, M, Q, H - $qrcode->displayPNG(); - - - il existe la possibilit de dsactiver le border et la zone de scurit blanche entourant le code en utilisant : - $qrcode->disableBorder(); - - - il existe galement une methode de sortie spcifique pour FPDF : - $qrcode->displayFPDF($fpdf, $x, $y, $w, $background, $color); - - - il existe galement une methode de sortie spcifique pour crer un tableau HTML : - $qrcode->displayHTML(); - -Informations : -------------- - Generateur de QRCode - (QR Code is registered trademark of DENSO WAVE INCORPORATED | http://www.denso-wave.com/qrcode/) - Fortement inspir de "QRcode image PHP scripts version 0.50g (C)2000-2005,Y.Swetake" - - Programmation en PHP5 - - Programmeur : Spipu - email : webmaster@spipu.net - site : http://prgm.spipu.net/php_qrcode - -Remerciement : -------------- - * Y.Swetake pour "QRcode image PHP scripts version 0.50g" - * Josep S. pour l'ajout de displayPNG - \ No newline at end of file diff --git a/mpdf/qrcode/data/modele1.dat b/mpdf/qrcode/data/modele1.dat deleted file mode 100644 index c3b0f63..0000000 Binary files a/mpdf/qrcode/data/modele1.dat and /dev/null differ diff --git a/mpdf/qrcode/data/modele10.dat b/mpdf/qrcode/data/modele10.dat deleted file mode 100644 index bb6345d..0000000 Binary files a/mpdf/qrcode/data/modele10.dat and /dev/null differ diff --git a/mpdf/qrcode/data/modele11.dat b/mpdf/qrcode/data/modele11.dat deleted file mode 100644 index 3875f50..0000000 Binary files a/mpdf/qrcode/data/modele11.dat and /dev/null differ diff --git a/mpdf/qrcode/data/modele12.dat b/mpdf/qrcode/data/modele12.dat deleted file mode 100644 index 3dc822e..0000000 Binary files a/mpdf/qrcode/data/modele12.dat and /dev/null differ diff --git a/mpdf/qrcode/data/modele13.dat b/mpdf/qrcode/data/modele13.dat deleted file mode 100644 index 225b646..0000000 Binary files a/mpdf/qrcode/data/modele13.dat and /dev/null differ diff --git a/mpdf/qrcode/data/modele14.dat b/mpdf/qrcode/data/modele14.dat deleted file mode 100644 index 4960e7b..0000000 Binary files a/mpdf/qrcode/data/modele14.dat and /dev/null differ diff --git a/mpdf/qrcode/data/modele15.dat b/mpdf/qrcode/data/modele15.dat deleted file mode 100644 index 6f0612e..0000000 Binary files a/mpdf/qrcode/data/modele15.dat and /dev/null differ diff --git a/mpdf/qrcode/data/modele16.dat b/mpdf/qrcode/data/modele16.dat deleted file mode 100644 index 8bbd8a8..0000000 Binary files a/mpdf/qrcode/data/modele16.dat and /dev/null differ diff --git a/mpdf/qrcode/data/modele17.dat b/mpdf/qrcode/data/modele17.dat deleted file mode 100644 index 088acfc..0000000 Binary files a/mpdf/qrcode/data/modele17.dat and /dev/null differ diff --git a/mpdf/qrcode/data/modele18.dat b/mpdf/qrcode/data/modele18.dat deleted file mode 100644 index a33db89..0000000 Binary files a/mpdf/qrcode/data/modele18.dat and /dev/null differ diff --git a/mpdf/qrcode/data/modele19.dat b/mpdf/qrcode/data/modele19.dat deleted file mode 100644 index 4cdfd2a..0000000 Binary files a/mpdf/qrcode/data/modele19.dat and /dev/null differ diff --git a/mpdf/qrcode/data/modele2.dat b/mpdf/qrcode/data/modele2.dat deleted file mode 100644 index 8e9204c..0000000 Binary files a/mpdf/qrcode/data/modele2.dat and /dev/null differ diff --git a/mpdf/qrcode/data/modele20.dat b/mpdf/qrcode/data/modele20.dat deleted file mode 100644 index c86624f..0000000 Binary files a/mpdf/qrcode/data/modele20.dat and /dev/null differ diff --git a/mpdf/qrcode/data/modele21.dat b/mpdf/qrcode/data/modele21.dat deleted file mode 100644 index 6d72ff6..0000000 Binary files a/mpdf/qrcode/data/modele21.dat and /dev/null differ diff --git a/mpdf/qrcode/data/modele22.dat b/mpdf/qrcode/data/modele22.dat deleted file mode 100644 index e053360..0000000 Binary files a/mpdf/qrcode/data/modele22.dat and /dev/null differ diff --git a/mpdf/qrcode/data/modele23.dat b/mpdf/qrcode/data/modele23.dat deleted file mode 100644 index 166c700..0000000 Binary files a/mpdf/qrcode/data/modele23.dat and /dev/null differ diff --git a/mpdf/qrcode/data/modele24.dat b/mpdf/qrcode/data/modele24.dat deleted file mode 100644 index 14c6312..0000000 Binary files a/mpdf/qrcode/data/modele24.dat and /dev/null differ diff --git a/mpdf/qrcode/data/modele25.dat b/mpdf/qrcode/data/modele25.dat deleted file mode 100644 index 680a03b..0000000 Binary files a/mpdf/qrcode/data/modele25.dat and /dev/null differ diff --git a/mpdf/qrcode/data/modele26.dat b/mpdf/qrcode/data/modele26.dat deleted file mode 100644 index 7a850d2..0000000 Binary files a/mpdf/qrcode/data/modele26.dat and /dev/null differ diff --git a/mpdf/qrcode/data/modele27.dat b/mpdf/qrcode/data/modele27.dat deleted file mode 100644 index 8927d48..0000000 Binary files a/mpdf/qrcode/data/modele27.dat and /dev/null differ diff --git a/mpdf/qrcode/data/modele28.dat b/mpdf/qrcode/data/modele28.dat deleted file mode 100644 index d00bdf5..0000000 Binary files a/mpdf/qrcode/data/modele28.dat and /dev/null differ diff --git a/mpdf/qrcode/data/modele29.dat b/mpdf/qrcode/data/modele29.dat deleted file mode 100644 index f0712a4..0000000 Binary files a/mpdf/qrcode/data/modele29.dat and /dev/null differ diff --git a/mpdf/qrcode/data/modele3.dat b/mpdf/qrcode/data/modele3.dat deleted file mode 100644 index 7bcc26d..0000000 Binary files a/mpdf/qrcode/data/modele3.dat and /dev/null differ diff --git a/mpdf/qrcode/data/modele30.dat b/mpdf/qrcode/data/modele30.dat deleted file mode 100644 index 539d8f0..0000000 Binary files a/mpdf/qrcode/data/modele30.dat and /dev/null differ diff --git a/mpdf/qrcode/data/modele31.dat b/mpdf/qrcode/data/modele31.dat deleted file mode 100644 index e33a314..0000000 Binary files a/mpdf/qrcode/data/modele31.dat and /dev/null differ diff --git a/mpdf/qrcode/data/modele32.dat b/mpdf/qrcode/data/modele32.dat deleted file mode 100644 index 4939a70..0000000 Binary files a/mpdf/qrcode/data/modele32.dat and /dev/null differ diff --git a/mpdf/qrcode/data/modele33.dat b/mpdf/qrcode/data/modele33.dat deleted file mode 100644 index 8d0aa95..0000000 Binary files a/mpdf/qrcode/data/modele33.dat and /dev/null differ diff --git a/mpdf/qrcode/data/modele34.dat b/mpdf/qrcode/data/modele34.dat deleted file mode 100644 index d614421..0000000 Binary files a/mpdf/qrcode/data/modele34.dat and /dev/null differ diff --git a/mpdf/qrcode/data/modele35.dat b/mpdf/qrcode/data/modele35.dat deleted file mode 100644 index 58c83dc..0000000 Binary files a/mpdf/qrcode/data/modele35.dat and /dev/null differ diff --git a/mpdf/qrcode/data/modele36.dat b/mpdf/qrcode/data/modele36.dat deleted file mode 100644 index 2c04a01..0000000 Binary files a/mpdf/qrcode/data/modele36.dat and /dev/null differ diff --git a/mpdf/qrcode/data/modele37.dat b/mpdf/qrcode/data/modele37.dat deleted file mode 100644 index 1822966..0000000 Binary files a/mpdf/qrcode/data/modele37.dat and /dev/null differ diff --git a/mpdf/qrcode/data/modele38.dat b/mpdf/qrcode/data/modele38.dat deleted file mode 100644 index 927e32d..0000000 Binary files a/mpdf/qrcode/data/modele38.dat and /dev/null differ diff --git a/mpdf/qrcode/data/modele39.dat b/mpdf/qrcode/data/modele39.dat deleted file mode 100644 index 9b838fb..0000000 Binary files a/mpdf/qrcode/data/modele39.dat and /dev/null differ diff --git a/mpdf/qrcode/data/modele4.dat b/mpdf/qrcode/data/modele4.dat deleted file mode 100644 index 6570452..0000000 Binary files a/mpdf/qrcode/data/modele4.dat and /dev/null differ diff --git a/mpdf/qrcode/data/modele40.dat b/mpdf/qrcode/data/modele40.dat deleted file mode 100644 index 53fdf9b..0000000 Binary files a/mpdf/qrcode/data/modele40.dat and /dev/null differ diff --git a/mpdf/qrcode/data/modele5.dat b/mpdf/qrcode/data/modele5.dat deleted file mode 100644 index 503fff9..0000000 Binary files a/mpdf/qrcode/data/modele5.dat and /dev/null differ diff --git a/mpdf/qrcode/data/modele6.dat b/mpdf/qrcode/data/modele6.dat deleted file mode 100644 index e43a9c2..0000000 Binary files a/mpdf/qrcode/data/modele6.dat and /dev/null differ diff --git a/mpdf/qrcode/data/modele7.dat b/mpdf/qrcode/data/modele7.dat deleted file mode 100644 index 02e6777..0000000 Binary files a/mpdf/qrcode/data/modele7.dat and /dev/null differ diff --git a/mpdf/qrcode/data/modele8.dat b/mpdf/qrcode/data/modele8.dat deleted file mode 100644 index 7ff62ed..0000000 Binary files a/mpdf/qrcode/data/modele8.dat and /dev/null differ diff --git a/mpdf/qrcode/data/modele9.dat b/mpdf/qrcode/data/modele9.dat deleted file mode 100644 index cbe6f85..0000000 Binary files a/mpdf/qrcode/data/modele9.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv10_0.dat b/mpdf/qrcode/data/qrv10_0.dat deleted file mode 100644 index 8c073a8..0000000 Binary files a/mpdf/qrcode/data/qrv10_0.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv10_1.dat b/mpdf/qrcode/data/qrv10_1.dat deleted file mode 100644 index 9a3cf4d..0000000 Binary files a/mpdf/qrcode/data/qrv10_1.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv10_2.dat b/mpdf/qrcode/data/qrv10_2.dat deleted file mode 100644 index 4a57e8a..0000000 Binary files a/mpdf/qrcode/data/qrv10_2.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv10_3.dat b/mpdf/qrcode/data/qrv10_3.dat deleted file mode 100644 index e2de0ec..0000000 Binary files a/mpdf/qrcode/data/qrv10_3.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv11_0.dat b/mpdf/qrcode/data/qrv11_0.dat deleted file mode 100644 index 18853fe..0000000 Binary files a/mpdf/qrcode/data/qrv11_0.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv11_1.dat b/mpdf/qrcode/data/qrv11_1.dat deleted file mode 100644 index 365deb3..0000000 Binary files a/mpdf/qrcode/data/qrv11_1.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv11_2.dat b/mpdf/qrcode/data/qrv11_2.dat deleted file mode 100644 index 0357a64..0000000 Binary files a/mpdf/qrcode/data/qrv11_2.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv11_3.dat b/mpdf/qrcode/data/qrv11_3.dat deleted file mode 100644 index bb8621b..0000000 Binary files a/mpdf/qrcode/data/qrv11_3.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv12_0.dat b/mpdf/qrcode/data/qrv12_0.dat deleted file mode 100644 index 636f201..0000000 Binary files a/mpdf/qrcode/data/qrv12_0.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv12_1.dat b/mpdf/qrcode/data/qrv12_1.dat deleted file mode 100644 index c679648..0000000 Binary files a/mpdf/qrcode/data/qrv12_1.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv12_2.dat b/mpdf/qrcode/data/qrv12_2.dat deleted file mode 100644 index 4544e9d..0000000 Binary files a/mpdf/qrcode/data/qrv12_2.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv12_3.dat b/mpdf/qrcode/data/qrv12_3.dat deleted file mode 100644 index 9adba36..0000000 Binary files a/mpdf/qrcode/data/qrv12_3.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv13_0.dat b/mpdf/qrcode/data/qrv13_0.dat deleted file mode 100644 index 73d6117..0000000 Binary files a/mpdf/qrcode/data/qrv13_0.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv13_1.dat b/mpdf/qrcode/data/qrv13_1.dat deleted file mode 100644 index 9ae40dd..0000000 Binary files a/mpdf/qrcode/data/qrv13_1.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv13_2.dat b/mpdf/qrcode/data/qrv13_2.dat deleted file mode 100644 index c4d9997..0000000 Binary files a/mpdf/qrcode/data/qrv13_2.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv13_3.dat b/mpdf/qrcode/data/qrv13_3.dat deleted file mode 100644 index 2f33392..0000000 Binary files a/mpdf/qrcode/data/qrv13_3.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv14_0.dat b/mpdf/qrcode/data/qrv14_0.dat deleted file mode 100644 index 956dae4..0000000 Binary files a/mpdf/qrcode/data/qrv14_0.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv14_1.dat b/mpdf/qrcode/data/qrv14_1.dat deleted file mode 100644 index 5dd0e3e..0000000 Binary files a/mpdf/qrcode/data/qrv14_1.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv14_2.dat b/mpdf/qrcode/data/qrv14_2.dat deleted file mode 100644 index 466b94d..0000000 Binary files a/mpdf/qrcode/data/qrv14_2.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv14_3.dat b/mpdf/qrcode/data/qrv14_3.dat deleted file mode 100644 index cdd2b21..0000000 Binary files a/mpdf/qrcode/data/qrv14_3.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv15_0.dat b/mpdf/qrcode/data/qrv15_0.dat deleted file mode 100644 index fcbb644..0000000 Binary files a/mpdf/qrcode/data/qrv15_0.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv15_1.dat b/mpdf/qrcode/data/qrv15_1.dat deleted file mode 100644 index 59f7ed1..0000000 Binary files a/mpdf/qrcode/data/qrv15_1.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv15_2.dat b/mpdf/qrcode/data/qrv15_2.dat deleted file mode 100644 index 3b86117..0000000 Binary files a/mpdf/qrcode/data/qrv15_2.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv15_3.dat b/mpdf/qrcode/data/qrv15_3.dat deleted file mode 100644 index 4e9aa0e..0000000 Binary files a/mpdf/qrcode/data/qrv15_3.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv16_0.dat b/mpdf/qrcode/data/qrv16_0.dat deleted file mode 100644 index d835c66..0000000 Binary files a/mpdf/qrcode/data/qrv16_0.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv16_1.dat b/mpdf/qrcode/data/qrv16_1.dat deleted file mode 100644 index ab1be3b..0000000 Binary files a/mpdf/qrcode/data/qrv16_1.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv16_2.dat b/mpdf/qrcode/data/qrv16_2.dat deleted file mode 100644 index e34b2e3..0000000 Binary files a/mpdf/qrcode/data/qrv16_2.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv16_3.dat b/mpdf/qrcode/data/qrv16_3.dat deleted file mode 100644 index a91c7f7..0000000 Binary files a/mpdf/qrcode/data/qrv16_3.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv17_0.dat b/mpdf/qrcode/data/qrv17_0.dat deleted file mode 100644 index 48fd276..0000000 Binary files a/mpdf/qrcode/data/qrv17_0.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv17_1.dat b/mpdf/qrcode/data/qrv17_1.dat deleted file mode 100644 index 33f5411..0000000 Binary files a/mpdf/qrcode/data/qrv17_1.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv17_2.dat b/mpdf/qrcode/data/qrv17_2.dat deleted file mode 100644 index 0c3b80f..0000000 Binary files a/mpdf/qrcode/data/qrv17_2.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv17_3.dat b/mpdf/qrcode/data/qrv17_3.dat deleted file mode 100644 index c386c17..0000000 Binary files a/mpdf/qrcode/data/qrv17_3.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv18_0.dat b/mpdf/qrcode/data/qrv18_0.dat deleted file mode 100644 index f499e0e..0000000 Binary files a/mpdf/qrcode/data/qrv18_0.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv18_1.dat b/mpdf/qrcode/data/qrv18_1.dat deleted file mode 100644 index 8272c41..0000000 Binary files a/mpdf/qrcode/data/qrv18_1.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv18_2.dat b/mpdf/qrcode/data/qrv18_2.dat deleted file mode 100644 index 0074b18..0000000 Binary files a/mpdf/qrcode/data/qrv18_2.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv18_3.dat b/mpdf/qrcode/data/qrv18_3.dat deleted file mode 100644 index b8eaec6..0000000 Binary files a/mpdf/qrcode/data/qrv18_3.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv19_0.dat b/mpdf/qrcode/data/qrv19_0.dat deleted file mode 100644 index 28f6107..0000000 Binary files a/mpdf/qrcode/data/qrv19_0.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv19_1.dat b/mpdf/qrcode/data/qrv19_1.dat deleted file mode 100644 index 98af58b..0000000 Binary files a/mpdf/qrcode/data/qrv19_1.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv19_2.dat b/mpdf/qrcode/data/qrv19_2.dat deleted file mode 100644 index 60f41f2..0000000 Binary files a/mpdf/qrcode/data/qrv19_2.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv19_3.dat b/mpdf/qrcode/data/qrv19_3.dat deleted file mode 100644 index 7b98e51..0000000 Binary files a/mpdf/qrcode/data/qrv19_3.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv1_0.dat b/mpdf/qrcode/data/qrv1_0.dat deleted file mode 100644 index b941d48..0000000 Binary files a/mpdf/qrcode/data/qrv1_0.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv1_1.dat b/mpdf/qrcode/data/qrv1_1.dat deleted file mode 100644 index 11df757..0000000 Binary files a/mpdf/qrcode/data/qrv1_1.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv1_2.dat b/mpdf/qrcode/data/qrv1_2.dat deleted file mode 100644 index 851c3fa..0000000 Binary files a/mpdf/qrcode/data/qrv1_2.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv1_3.dat b/mpdf/qrcode/data/qrv1_3.dat deleted file mode 100644 index 1f300f5..0000000 Binary files a/mpdf/qrcode/data/qrv1_3.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv20_0.dat b/mpdf/qrcode/data/qrv20_0.dat deleted file mode 100644 index 12963c2..0000000 Binary files a/mpdf/qrcode/data/qrv20_0.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv20_1.dat b/mpdf/qrcode/data/qrv20_1.dat deleted file mode 100644 index 99d8afa..0000000 Binary files a/mpdf/qrcode/data/qrv20_1.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv20_2.dat b/mpdf/qrcode/data/qrv20_2.dat deleted file mode 100644 index e6074ea..0000000 Binary files a/mpdf/qrcode/data/qrv20_2.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv20_3.dat b/mpdf/qrcode/data/qrv20_3.dat deleted file mode 100644 index 60acb51..0000000 Binary files a/mpdf/qrcode/data/qrv20_3.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv21_0.dat b/mpdf/qrcode/data/qrv21_0.dat deleted file mode 100644 index 487b8f2..0000000 Binary files a/mpdf/qrcode/data/qrv21_0.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv21_1.dat b/mpdf/qrcode/data/qrv21_1.dat deleted file mode 100644 index 54003fc..0000000 Binary files a/mpdf/qrcode/data/qrv21_1.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv21_2.dat b/mpdf/qrcode/data/qrv21_2.dat deleted file mode 100644 index 3300331..0000000 Binary files a/mpdf/qrcode/data/qrv21_2.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv21_3.dat b/mpdf/qrcode/data/qrv21_3.dat deleted file mode 100644 index fa34452..0000000 Binary files a/mpdf/qrcode/data/qrv21_3.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv22_0.dat b/mpdf/qrcode/data/qrv22_0.dat deleted file mode 100644 index 444981c..0000000 Binary files a/mpdf/qrcode/data/qrv22_0.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv22_1.dat b/mpdf/qrcode/data/qrv22_1.dat deleted file mode 100644 index 690ff63..0000000 --- a/mpdf/qrcode/data/qrv22_1.dat +++ /dev/null @@ -1,209 +0,0 @@ -hghghghghghghghghghghghgfefefefefefefefefefefefedcdcdcdcdcdcdcdcbabababababababa_`_`_`_`_`_`_`_`]]]]]]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIGHGHGGGGGHGHGHGHFEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABABABABABA@?@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9:9:9:9:987878787878787878765656565656565656565654343434343434343434343432121212121212121/0/0/////0/0/0/0.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!         hghghghghghghghghghghghgfefefefefefefefefefefefedcdcdcdcdcdcdcdcbabababababababa_`_`_`_`_`_`_`_`^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIJIJIJIGGHGHGHGGHGHGHGHFEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABABABABABA@?@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9:987878787878787878787876565656565656565656565654343434343434343432121212121212121212121//0/0/0//0/0/0/0.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!           hghghghghghghghghghghghgfefefefefefefefefefefefedcdcdcdcdcdcdcdcbabababababababa_`_______`_`_`_`^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIJIJIJIJIHGHGHGHGGHGGGGGGFEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABABABABABA@?@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9:9:9:987878787878787878787878765656565656565656565656543434343434343432121212121212121212121210/0/0/0//0//////.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!            hghghghghghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcdcdcdcdcbabababababababa`_`_`_`__`_`_`_`^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABABABABABA@?@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9:9:9:9:987878787878787878787878765656565656565656565656543434343434343432121212121212121210/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!            hghghghghghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababababababa`_`_`_`_______`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGGGGGGHHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABABABABABA@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9:9:9:9:9878787878787878787878787656565656565656565656565434343434343434321212121212121210//////00/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!            hghghghghghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIGHGHGHGHHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABABA@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9:9:9:9:987878787878787878787878765656565656565656565656543434343434343432121212121212121/0/0/0/00/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)('('('('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!            hghghghghghghghgfefefefefefefefefefefefedcdcdcdcdcdcdcdcbabababababababa_____`_``_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIGHGHGHGHGGGGGHGHHGHGHGGGFEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCBABABABABABABABABABABA@?@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9:9:9:9:987878787878787878787878765656565656565656565656543434343434343432121212121212121/0/0/0/0/////0/00/0/0///.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!            hghghghghghghghgfefefefefefefefefefefefedcdcdcdcdcdcdcdcbabababababababa_`_`_`_``_`_`___`_`_`_`_^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIGHGHGHGHGHGHGHGHGGHGHGHGFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABABABABABA@?@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9:9:9:9:987878787878787878787878765656565656565656565656543434343434343432121212121212121/0/0/0/0/0/0/0/0//0/0/0/.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!            hghghghghghghghgfefefefefefefefefefefefedcdcdcdcdcdcdcdcbabababababababa_`_`_`_`___`_`_``_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIGHGHGHGHGHGHGHGHHGFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABABABABABA@?@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9:9:9:9:987878787878787878787878765656565656565656543434343434343434343432121212121212121/0/0/0/0/0/0/0/00/.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!                        - - - - - - - - - - - -             - - - - - - - - - - - -             - - - - - - - - - - - -             - - - - - - - - -             - - - - - - - - - - -          - - - - - - - - - - - -            - - - - - - - - - - - -             - - - - - - - - - - - -             - - - - - - - - - - - - hhggffeeDDCCBBAA 99::;;<<]]^^__``FFEEDDCC""##$$%%PPQQRRSSVUUTTSSR-,,++**)(())**++LLMMNNOOaa``__^^==<<;;:: 00112233TTUUVVWWYYXXWWVV554433228899::;;\\]]^^__QQPPOONN--,,++** @@AABBCCddeeffggIIHHGGFF%%$$##""$$%%&&''HHIIJJKKee__^^]]776655// ))**++,,WWXXYYZZONNMMLKJ&%%$$##"(())**++LLMMNNOOaa``__^^==<<;;:: 00112233TTUUVVWWYYXXWWVV554433228899::;;\\]]^^__QQPPOONN--,,++** @@AABBCCddeeffggIIHHGGFF%%$$##""$$%%&&''HHIIJJKKee__^^]]776655// ))**++,,WWXXYYZZONNMMLKJ&%%$$##"(())**++LLMMNNOOaa``__^^==<<;;:: 00112233TTUUVVWWYYXXWWVV554433228899::;;\\]]^^__QQPPOONN--,,++** @@AABBCCddeeffggIIHHGGFF%%$$##""$$%%&&''HHIIJJKKee__^^]]776655// ))**++,,WWXXYYZZONNMMLKJ&%%$$##"ddccbbaa@@??>>====>>??@@aabbccddBBAA@@??&&''(())TTUUVVWWRQQPPOON)((''&&% - - ,,--..//PPQQRRSS]]\\[[ZZ9988776644556677XXYYZZ[[UUTTSSRR1100//.. - -<<==>>??``aabbccMMLLKKJJ))((''&& !!""##DDEEFFGGhhhhggffEEDDCCBB!! (())**++LLMMNNOO\\[[ZZYY..--,,++--..//55[[\\]]^^IHGGFFEE"!!  - - ,,--..//PPQQRRSS]]\\[[ZZ9988776644556677XXYYZZ[[UUTTSSRR1100//.. - -<<==>>??``aabbccMMLLKKJJ))((''&& !!""##DDEEFFGGhhhhggffEEDDCCBB!! (())**++LLMMNNOO\\[[ZZYY..--,,++--..//55[[\\]]^^IHGGFFEE"!!  - - ,,--..//PPQQRRSS]]\\[[ZZ9988776644556677XXYYZZ[[UUTTSSRR1100//.. - -<<==>>??``aabbccMMLLKKJJ))((''&& !!""##DDEEFFGGhhhhggffEEDDCCBB!! (())**++LLMMNNOO\\[[ZZYY..--,,++--..//55[[\\]]^^IHGGFFEE"!! ``__^^]]<<;;::99 AABBCCDDeeffgghh>>==<<;; **++,,--XXYYZZ[[NMMLKJIH%$$##""! 00112233TTUUVVWWYYXXWWVV554433228899::;;\\]]^^__QQPPOONN--,,++** @@AABBCCddeeffggIIHHGGFF%%$$##""$$%%&&''HHIIJJKKeeddccbbAA@@??>> - - ,,--..//PPQQRRSSXXWWVVUU**))(('' - - 66778899__eeffggDDCCBBAA 00112233TTUUVVWWYYXXWWVV554433228899::;;\\]]^^__QQPPOONN--,,++** @@AABBCCddeeffggIIHHGGFF%%$$##""$$%%&&''HHIIJJKKeeddccbbAA@@??>> - - ,,--..//PPQQRRSSXXWWVVUU**))(('' - - 66778899__eeffggDDCCBBAA 00112233TTUUVVWWYYXXWWVV554433228899::;;\\]]^^__QQPPOONN--,,++** @@AABBCCddeeffggIIHHGGFF%%$$##""$$%%&&''HHIIJJKKeeddccbbAA@@??>> - - ,,--..//PPQQRRSSXXWWVVUU**))(('' - - 66778899__eeffggDDCCBBAA\\[[ZZYY88776655!!""##$$EEFFGGHHhhggffee::998877 - - ..//5566\\]]^^__GGFFEEDD! 44556677XXYYZZ[[UUTTSSRR1100//.. - -<<==>>??``aabbccMMLLKKJJ))((''&& !!""##DDEEFFGGhhhhggffEEDDCCBB!! (())**++LLMMNNOOaa``__^^==<<;;:: 00112233TTUUVVWWTTSSRRQQ&&%%$$## ::;;<<==hhhhggff@@??>>==44556677XXYYZZ[[UUTTSSRR1100//.. - -<<==>>??``aabbccMMLLKKJJ))((''&& !!""##DDEEFFGGhhhhggffEEDDCCBB!! (())**++LLMMNNOOaa``__^^==<<;;:: 00112233TTUUVVWWTTSSRRQQ&&%%$$## ::;;<<==hhhhggff@@??>>==44556677XXYYZZ[[UUTTSSRR1100//.. - -<<==>>??``aabbccMMLLKKJJ))((''&& !!""##DDEEFFGGhhhhggffEEDDCCBB!! (())**++LLMMNNOOaa``__^^==<<;;:: 00112233TTUUVVWWTTSSRRQQ&&%%$$## ::;;<<==hhhhggff@@??>>== - - XXWWVVUU44332211 %%&&''((IIJJKKLL__^^]]\\6655//.. - - 778899::eeffgghhCCBBAA@@8899::;;\\]]^^__QQPPOONN--,,++** @@AABBCCddeeffggIIHHGGFF%%$$##""$$%%&&''HHIIJJKKeeddccbbAA@@??>> - - ,,--..//PPQQRRSS]]\\[[ZZ9988776644556677XXYYZZ[[PPOONNMM""!! >>??@@AAeedcba`_<<;;::998899::;;\\]]^^__QQPPOONN--,,++** @@AABBCCddeeffggIIHHGGFF%%$$##""$$%%&&''HHIIJJKKeeddccbbAA@@??>> - - ,,--..//PPQQRRSS]]\\[[ZZ9988776644556677XXYYZZ[[PPOONNMM""!! >>??@@AAeedcba`_<<;;::998899::;;\\]]^^__QQPPOONN--,,++** @@AABBCCddeeffggIIHHGGFF%%$$##""$$%%&&''HHIIJJKKeeddccbbAA@@??>> - - ,,--..//PPQQRRSS]]\\[[ZZ9988776644556677XXYYZZ[[PPOONNMM""!! >>??@@AAeedcba`_<<;;::99 TTSSRRQQ00//..-- - - ))**++,,MMNNOOPP[[ZZYYXX--,,++** ;;<<==>>hhggffee??>>==<<<<==>>??``aabbccMMLLKKJJ))((''&& !!""##DDEEFFGGhhhhggffEEDDCCBB!! (())**++LLMMNNOOaa``__^^==<<;;:: 00112233TTUUVVWWYYXXWWVV554433228899::;;\\]]^^__GGFFEEDDBBCCDDEE_^^]]\\[88776655 <<==>>??``aabbccMMLLKKJJ))((''&& !!""##DDEEFFGGhhhhggffEEDDCCBB!! (())**++LLMMNNOOaa``__^^==<<;;:: 00112233TTUUVVWWYYXXWWVV554433228899::;;\\]]^^__GGFFEEDDBBCCDDEE_^^]]\\[88776655 <<==>>??``aabbccMMLLKKJJ))((''&& !!""##DDEEFFGGhhhhggffEEDDCCBB!! (())**++LLMMNNOOaa``__^^==<<;;:: 00112233TTUUVVWWYYXXWWVV554433228899::;;\\]]^^__GGFFEEDDBBCCDDEE_^^]]\\[88776655 PPOONNMM,,++**)) - - --..//00QQRRSSTTWWVVUUTT))((''&&??@@AABBdcba`__^;;::9988@@AABBCCddeeffggIIHHGGFF%%$$##""$$%%&&''HHIIJJKKeeddccbbAA@@??>> - - ,,--..//PPQQRRSS]]\\[[ZZ9988776644556677XXYYZZ[[UUTTSSRR1100//.. - -<<==>>??``aabbccCCBBAA@@ FFGGMMNN[ZZYYXXW43210//. - - @@AABBCCddeeffggIIHHGGFF%%$$##""$$%%&&''HHIIJJKKeeddccbbAA@@??>> - - ,,--..//PPQQRRSS]]\\[[ZZ9988776644556677XXYYZZ[[UUTTSSRR1100//.. - -<<==>>??``aabbccCCBBAA@@ FFGGMMNN[ZZYYXXW43210//. - - @@AABBCCddeeffggIIHHGGFF%%$$##""$$%%&&''HHIIJJKKeeddccbbAA@@??>> - - ,,--..//PPQQRRSS]]\\[[ZZ9988776644556677XXYYZZ[[UUTTSSRR1100//.. - -<<==>>??``aabbccCCBBAA@@ FFGGMMNN[ZZYYXXW43210//. - - LLKKJJII((''&&%% 11223344UUVVWWXXSSRRQQPP%%$$##""CCDDEEFF^]]\\[[Z77665543 !!""##DDEEFFGGhhhhggffEEDDCCBB!! (())**++LLMMNNOOaa``__^^==<<;;:: 00112233TTUUVVWWYYXXWWVV554433228899::;;\\]]^^__QQPPOONN--,,++** @@AABBCCddeeffgg??>>==<<!!""##$$OOPPQQRRWVVUUTTS.--,,++* !!""##DDEEFFGGhhhhggffEEDDCCBB!! (())**++LLMMNNOOaa``__^^==<<;;:: 00112233TTUUVVWWYYXXWWVV554433228899::;;\\]]^^__QQPPOONN--,,++** @@AABBCCddeeffgg??>>==<<!!""##$$OOPPQQRRWVVUUTTS.--,,++* !!""##DDEEFFGGhhhhggffEEDDCCBB!! (())**++LLMMNNOOaa``__^^==<<;;:: 00112233TTUUVVWWYYXXWWVV554433228899::;;\\]]^^__QQPPOONN--,,++** @@AABBCCddeeffgg??>>==<<!!""##$$OOPPQQRRWVVUUTTS.--,,++*HHGGFFEE$$##""!!55667788YYZZ[[\\OONNMMGG!!  !!GGMMNNOOZYYXXWWV210//..- - - $$%%&&''HHIIJJKKeeddccbbAA@@??>> - - ,,--..//PPQQRRSS]]\\[[ZZ9988776644556677XXYYZZ[[UUTTSSRR1100//.. - -<<==>>??``aabbccMMLLKKJJ))((''&& !!""##DDEEFFGGhhhhggff;;::9988 - -%%&&''((SSTTUUVVSRRQQPPO*))((''&$$%%&&''HHIIJJKKeeddccbbAA@@??>> - - ,,--..//PPQQRRSS]]\\[[ZZ9988776644556677XXYYZZ[[UUTTSSRR1100//.. - -<<==>>??``aabbccMMLLKKJJ))((''&& !!""##DDEEFFGGhhhhggff;;::9988 - -%%&&''((SSTTUUVVSRRQQPPO*))((''&$$%%&&''HHIIJJKKeeddccbbAA@@??>> - - ,,--..//PPQQRRSS]]\\[[ZZ9988776644556677XXYYZZ[[UUTTSSRR1100//.. - -<<==>>??``aabbccMMLLKKJJ))((''&& !!""##DDEEFFGGhhhhggff;;::9988 - -%%&&''((SSTTUUVVSRRQQPPO*))((''& !!""##DDEEFFGGhhhhggffEEDDCCBB!! (())**++LLMMNNOOaa``__^^==<<;;:: 00112233TTUUVVWWYYXXWWVV554433228899::;;\\]]^^__DDCCBBAA$$%%&&''RRSSTTUUEEDDCCBB!! 8899::;;$$%%&&''HHIIJJKKeeddccbbAA@@??>> - - ,,--..//PPQQRRSS]]\\[[ZZ9988776644556677XXYYZZ[[UUTTSSRR1100//.. - -<<==>>??``aabbcc@@??>>==(())**++VVWWXXYYAA@@??>><<==>>??(())**++LLMMNNOOaa``__^^==<<;;:: 00112233TTUUVVWWYYXXWWVV554433228899::;;\\]]^^__QQPPOONN--,,++** @@AABBCCddeeffgg<<;;::99 ,,--..//ZZ[[\\]]==<<;;::@@AABBCC,,--..//PPQQRRSS]]\\[[ZZ9988776644556677XXYYZZ[[UUTTSSRR1100//.. - -<<==>>??``aabbccMMLLKKJJ))((''&& !!""##DDEEFFGGhh``__^^88776655 - - - -55667788]]\\[[ZZ99887766 !!""##DDEEFFGG00112233TTUUVVWWYYXXWWVV554433228899::;;\\]]^^__QQPPOONN--,,++** @@AABBCCddeeffggIIHHGGFF%%$$##""$$%%&&''HHIIJJKK]]\\[[ZZ//..--,, 99::;;<>??``aabbccMMLLKKJJ))((''&& !!""##DDEEFFGGhhhhggffEEDDCCBB!! (())**++LLMMNNOOYYXXWWVV++**))((==>>??@@UUTTSSRR1100//.. - -(())**++LLMMNNOO8899::;;\\]]^^__QQPPOONN--,,++** @@AABBCCddeeffggIIHHGGFF%%$$##""$$%%&&''HHIIJJKKeeddccbbAA@@??>> - - ,,--..//PPQQRRSSUUTTSSRR''&&%%$$AABBCCDDQQPPOONN--,,++** - - ,,--..//PPQQRRSS<<==>>??``aabbccMMLLKKJJ))((''&& !!""##DDEEFFGGhhhhggffEEDDCCBB!! (())**++LLMMNNOOaa``__^^==<<;;:: 00112233TTUUVVWWQQPPOONN##""!! EEFFGGMMMMLLKKJJ))((''&& 00112233TTUUVVWW@@AABBCCddeeffggIIHHGGFF%%$$##""$$%%&&''HHIIJJKKeeddccbbAA@@??>> - - ,,--..//PPQQRRSS]]\\[[ZZ9988776644556677XXYYZZ[[MMGGFFEE !!""##NNOOPPQQIIHHGGFF%%$$##""44556677XXYYZZ[[\\]]ZHAbZHAbZHAb|ZdQb|ZdQb|ZdQbv`fHXv`˂rXQZp˂tbdQdrtnvffH~fH~XQr˂XQr˂XQr˂btlbtlbtlHfpvHfpvHfpvZp˂Zp˂Zp˂|dr|dr|dtAfH~fH~fH~XQr˂XQr˂rbtbtlbtlHXv`~HX`pvbHAZ`ےbrtAJtbdQpfHfH~fH~XQr˂XQr˂XQr˂btlbtlbtlHfpvHfpvHfpvZp˂Zp˂Zp˂|dr|dr|dtAfH~fH~fH~XQr˂XQr˂rbtbtlbtlHXv`~HX`pvbHAZ`ےbrtAJtbdQpfHfH~fH~XQr˂XQr˂XQr˂btlbtlbtlHfpvHfpvHfpvZp˂Zp˂Zp˂|dr|dr|dtAfH~fH~fH~XQr˂XQr˂rbtbtlbtlHXv`~HX`pvbHAZ`ےbrtAJtbdQے`JXQے`JXQے`JXQtlJtlJtlJ~Hfpf~HJ`ےrXQJ`Z|dAJltf`vXf`vXf`vXpZHAbpZHAbpZHAbJtArdJtArdJtArdnXvnXvnXvrXQJ`rXQJ`rXQJ`tAJltAJlJltf`vXf`vXfZHAbpZHAbpZHAblJtAdJtArdJtArdf~Hv`fnrXQJp˂HAZp˂bdQZ|Z|df`vXf`vXf`vXpZHAbpZHAbpZHAbJtArdJtArdJtArdnXvnXvnXvrXQJ`rXQJ`rXQJ`tAJltAJlJltf`vXf`vXfZHAbpZHAbpZHAblJtAdJtArdJtArdf~Hv`fnrXQJp˂HAZp˂bdQZ|Z|df`vXf`vXf`vXpZHAbpZHAbpZHAbJtArdJtArdJtArdnXvnXvnXvrXQJ`rXQJ`rXQJ`tAJltAJlJltf`vXf`vXfZHAbpZHAbpZHAblJtAdJtArdJtArdf~Hv`fnrXQJp˂HAZp˂bdQZ|Z|dr˂pr˂pr˂ptArdtArdtArdvnXfpvbHAZpےbHArtAJbbdQZ|nvpnvpnvpے`Jے`Jے`J|ZdQ|ZdQ|ZdQ`f~`f~`fHےbHAےbHAےbHAtbdQZtbdQZbnvnvpnvpے`Jے`Jے`J|ZdQ|ZdQ|ZdQfpv~Hfp`p˂bHAZpbHAdrtArtAJbnvpnvpnvpے`Jے`Jے`J|ZdQ|ZdQ|ZdQ`f~`f~`fHےbHAےbHAےbHAtbdQZtbdQZbnvnvpnvpے`Jے`Jے`J|ZdQ|ZdQ|ZdQfpv~Hfp`p˂bHAZpbHAdrtArtAJbnvpnvpnvpے`Jے`Jے`J|ZdQ|ZdQ|ZdQ`f~`f~`fHےbHAےbHAےbHAtbdQZtbdQZbnvnvpnvpے`Jے`Jے`J|ZdQ|ZdQ|ZdQfpv~Hfp`p˂bHAZpbHAdrtArtAJbpfHZHAbZHAbZHAb|ZdQb|ZdQbf~Hv`fnXv`˂bZp˂dQZ|drtfH~fH~fH~XQr˂XQr˂XQr˂btlbtlbtlHfpvHfpvfpvZp˂Zp˂Zdr|dr|drpfHfH~fH~XQr˂XQr˂XQr˂btlbtlbtlnXv`vnXrXQJ`˂rXQZdrJltdQZ|fH~fH~fH~XQr˂XQr˂XQr˂btlbtlbtlHfpvHfpvfpvZp˂Zp˂Zdr|dr|drpfHfH~fH~XQr˂XQr˂XQr˂btlbtlbtlnXv`vnXrXQJ`˂rXQZdrJltdQZ|fH~fH~fH~XQr˂XQr˂XQr˂btlbtlbtlHfpvHfpvfpvZp˂Zp˂Zdr|dr|drpfHfH~fH~XQr˂XQr˂XQr˂btlbtlbtlnXv`vnXrXQJ`˂rXQZdrJltdQZ|f`vXے`JXQے`JXQے`JXQtlJtlJXv`f~HXvp˂rHAZp˂bHAZdrtAJAJbdQf`vXf`vXf`vXpZHAbpZHAbpZHAJtArdJtArdJtArdnXvnXvnrXQJrXQJ`rXQJ`tAJltAJltAJlf`vXf`vXf`vXpZHAbpZHAbpZHAbJtArdJtArdJtArdf~Hv`fےbHAJ`ےtAJbdbdQZ|drtAJf`vXf`vXf`vXpZHAbpZHAbpZHAJtArdJtArdJtArdnXvnXvnrXQJrXQJ`rXQJ`tAJltAJltAJlf`vXf`vXf`vXpZHAbpZHAbpZHAbJtArdJtArdJtArdf~Hv`fےbHAJ`ےtAJbdbdQZ|drtAJf`vXf`vXf`vXpZHAbpZHAbpZHAJtArdJtArdJtArdnXvnXvnrXQJrXQJ`rXQJ`tAJltAJltAJlf`vXf`vXf`vXpZHAbpZHAbpZHAbJtArdJtArdJtArdf~Hv`fےbHAJ`ےtAJbdbdQZ|drtAJnvpr˂pr˂pr˂ptArdtArd~Hf`f~XQJ`ےrXQJdrtAltbZ|dnvpnvpnvpے`Jے`Jے`JXQ|ZdQ|ZdQf~`f~`f~`ےHAےbHAےbHAtbdQZtbdQZtbdQZnvpnvpnvpے`Jے`Jے`J|ZdQ|ZdQ|ZdQXv`f~HXvZp˂bHAZpQZ|ddrtAltbnvpnvpnvpے`Jے`Jے`JXQ|ZdQ|ZdQf~`f~`f~`ےHAےbHAےbHAtbdQZtbdQZtbdQZnvpnvpnvpے`Jے`Jے`J|ZdQ|ZdQ|ZdQXv`f~HXvZp˂bHAZpQZ|ddrtAltbnvpnvpnvpے`Jے`Jے`JXQ|ZdQ|ZdQf~`f~`f~`ےHAےbHAےbHAtbdQZtbdQZtbdQZnvpnvpnvpے`Jے`Jے`J|ZdQ|ZdQ|ZdQXv`f~HXvZp˂bHAZpQZ|ddrtAltbfH~ZHAbZHAb|ZdQb|ZdQb|ZdQbpvnHfpvbHAZ`ےbJbdQdQZ|rtAJlfH~fH~fH~XQr˂XQr˂rbtbtlbtlHfpvHfpvHfpvZp˂Zp˂Zp˂|dr|dr|drfH~fH~fH~XQr˂XQr˂XQr˂btlbtlbtl~Hf`f~bHAZ˂brtAJlJbdQdQZ|fH~fH~fH~XQr˂XQr˂rbtbtlbtlHfpvHfpvHfpvZp˂Zp˂Zp˂|dr|dr|drfH~fH~fH~XQr˂XQr˂XQr˂btlbtlbtl~Hf`f~bHAZ˂brtAJlJbdQdQZ|fH~fH~fH~XQr˂XQr˂rbtbtlbtlHfpvHfpvHfpvZp˂Zp˂Zp˂|dr|dr|drfH~fH~fH~XQr˂XQr˂XQr˂btlbtlbtl~Hf`f~bHAZ˂brtAJlJbdQdQZ|f`vXے`JXQے`JXQtlJtlJtlJXv`fnXvp˂HAZp˂Z|ddrtAJtbdQf`vXf`vXfZHAbpZHAbpZHAblJtAdJtArdJtArdnXvnXvnXvrXQJ`rXQJ`rXQJ`tAJltAJltAJlf`vXf`vXf`vXpZHAbpZHAbpZHAJtArdJtArdJtArdpvnHfpvp˂rHAZp˂tbdZ|dAJltf`vXf`vXfZHAbpZHAbpZHAblJtAdJtArdJtArdnXvnXvnXvrXQJ`rXQJ`rXQJ`tAJltAJltAJlf`vXf`vXf`vXpZHAbpZHAbpZHAJtArdJtArdJtArdpvnHfpvp˂rHAZp˂tbdZ|dAJltf`vXf`vXfZHAbpZHAbpZHAblJtAdJtArdJtArdnXvnXvnXvrXQJ`rXQJ`rXQJ`tAJltAJltAJlf`vXf`vXf`vXpZHAbpZHAbpZHAJtArdJtArdJtArdpvnHfpvp˂rHAZp˂tbdZ|dAJltnvpr˂pr˂ptArdtArdtArd~HX`f~bHAZpbHArtAJl璉bdQZ|Z|dnvpnvpے`Jے`Jے`J|ZdQ|ZdQ|ZdQ`f~`f~`f~ےbHAےbHAےbHAtbdQZtbdQZtbdQZnvpnvpnvpے`Jے`Jے`JXQ|ZdQ|ZdQf~Xv`fnXvXQJ`ےrXQJQZ|drtAJlbnvnvpnvpے`Jے`Jے`J|ZdQ|ZdQ|ZdQ`f~`f~`f~ےbHAےbHAےbHAtbdQZtbdQZtbdQZnvpnvpnvpے`Jے`Jے`JXQ|ZdQ|ZdQf~Xv`fnXvXQJ`ےrXQJQZ|drtAJlbnvnvpnvpے`Jے`Jے`J|ZdQ|ZdQ|ZdQ`f~`f~`f~ےbHAےbHAےbHAtbdQZtbdQZtbdQZnvpnvpnvpے`Jے`Jے`JXQ|ZdQ|ZdQf~Xv`fnXvXQJ`ےrXQJQZ|drtAJlbnvfH~f`vXf`vXfZHAbpZHAbpZHAblJtAdJtArdJtArdnXvnXvnXvrXQJ`rXQJ`rXQJ`tAJltAJltAJlf`vXf`vXf`vXZHAb˂pZHAb㉀ۑpZQXb㉀pfH~pfH~Z|dZ|dnvpnvpے`Jے`Jے`J|ZdQ|ZdQ|ZdQ`f~`f~`f~ےbHAےbHAےbHAtbdQZtbdQZtbdQZnvpnvpnvpے`JXQbے`JAHr󙐒ۑpJAHf۝`vf۝`vrQtJlrQtJlfH~fH~XQr˂XQr˂XQr˂btlbtlbtlHfpvHfpvHfpvZp˂Zp˂Zp˂|dr|dr|dtAfH~fH~fH~r˂pJXQrˁ`ZQXr󙐂ˁ`Xnv˅Xnv˒tbAdtbAdf`vXf`vXpZHAbpZHAbpZHAbJtArdJtArdJtArdnXvnXvnXvrXQJ`rXQJ`rXQJ`tAJltAJlJltf`vXf`vXfr˂ZHAb˂p`ZAHr󙐂ˍpfH~pfH~pfH~Z|dZ|dnvpnvpے`Jے`Jے`J|ZdQ|ZdQ|ZdQ`f~`f~`fHےbHAےbHAےbHAtbdQZtbdQZbnvnvpnvppZHAb˂pZQXb㉀ہ`ZQXbㅐf۝`vf۝`vf۝`vrQtJlrQtJlfH~fH~XQr˂XQr˂XQr˂btlbtlbtlHfpvHfpvfpvZp˂Zp˂Zdr|dr|drpfHfH~fH~ے`JHAbےpJAHr󉀒ۑpJXnv˅Xnv˅Xnv˒tbAdtbAdf`vXf`vXpZHAbpZHAbpZHAJtArdJtArdJtArdnXvnXvnrXQJrXQJ`rXQJ`tAJltAJltAJlf`vXf`vXf`vXXQr˂`JXQrˁ`ZAHr󙐂ˍpfH~pfH~p|dZ|dZ|dnvpnvpے`Jے`Jے`JXQ|ZdQ|ZdQf~`f~`f~`ےHAےbHAےbHAtbdQZtbdQZtbdQZnvpnvpnvppZHAb˂pZQXAHr󙐁`ZQXAHf۝`vf۝`vrQtJlrQtJlrQtJlfH~fH~XQr˂XQr˂rbtbtlbtlHfpvHfpvHfpvZp˂Zp˂Zp˂|dr|dr|drfH~fH~fH~˂pHAbˁ`ZQXr󙐂ˁ`Xnv˅Xnv˒tbAdtbAdtbAdZ|abcdefghhgfedcb \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv22_2.dat b/mpdf/qrcode/data/qrv22_2.dat deleted file mode 100644 index 3ea03b9..0000000 Binary files a/mpdf/qrcode/data/qrv22_2.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv22_3.dat b/mpdf/qrcode/data/qrv22_3.dat deleted file mode 100644 index b23d919..0000000 Binary files a/mpdf/qrcode/data/qrv22_3.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv23_0.dat b/mpdf/qrcode/data/qrv23_0.dat deleted file mode 100644 index 827fb6e..0000000 Binary files a/mpdf/qrcode/data/qrv23_0.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv23_1.dat b/mpdf/qrcode/data/qrv23_1.dat deleted file mode 100644 index 766946e..0000000 --- a/mpdf/qrcode/data/qrv23_1.dat +++ /dev/null @@ -1,217 +0,0 @@ -lklklklklklklklklklklklkjijijijijijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcdcdcdcdcbabababababababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMNMNMNMLKLKLKLKKLKKKKKKJIJIJIJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABABABABABA@?@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9:9:9:9:987878787878787878787878765656565656565653434343434343434334343432121212121212121212121210/0/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!        lklklklklklklklklklklklkjijijijijijijijijijijijihghghghghghghghgfefefefefefefefecccccdcddcdcdcdcdcdcdcdcbabababababababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABABABABABA@?@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9:9:9:9:987878787878787878765656565656565656565653434333334343434432121212121212121212121210/0/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!           lklklklklklklklklklklklkjijijijijijijijijijijijihghghghghghghghgfefefefefefefefecdcdcdcddcdcdcccdcdcdcdcbabababababababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKKKKKKLLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABABABABABA@?@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9:9:9:9:9878787878787878765656565656565656565656533434343343434342121212121212121212121210/0/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!            lklklklklklklklklklklklkjijijijijijijijijijijijihghghghghghghghgfefefefefefefefecdcdcdcdcccdcdcddcdcdcdcbabababababababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMKLKLKLKLLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABABABABABA@?@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9:9:9:9:9878787878787878765656565656565656565656543434343343333332121212121212121212121210/0/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!            lklklklklklklklklklklklkjijijijijijijijijijijijihghghghghghghghgfefefefefefefefecdcdcdcdcdcdcdcddcdcdcdcbababababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMKLKLKLKLKKKKKLKLLKLKLKLKJIJIJIJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABABABABABA@?@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9:9:9:9:9878787878787878765656565656565656543434343434343434343432121212121212121212121210/0/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!         lklklklklklklklklklklklkjijijijijijijijihghghghghghghghghghghghgfefefefefefefefecdcdcdcdcdcdcdcdaaaaaabababababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMKLKLKLKLKLKLKLKLLKLKLKKKJIJIJIJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABABABABABA@?@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9:9:9:9:9878787878787878765656565656565654333333443434343434343432121212121212121212121210/0/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!        lklklklklklklklklklklklkjijijijijijijijihghghghghghghghghghghghgfefefefefefefefecdcccccccdcdcdcdbabababababababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMKLKLKLKLKLKLKLKLKKLKLKLKJIJIJIJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABABABABABA@?@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9:9:9:9:9878787878787878765656565656565653434343443434343434343432121212121212121212121210/0/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!        lklklklklklklklkjijijijijijijijijijijijihghghghghghghghgfefefefefefefefefefefefedcdcdcdccdcdcdcdbabababababababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMNMNMKLKLKKKKKLKLKLKLLKJIJIJIJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABABABABABA@?@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9:9:9:9:9878787878787878787878765656565656565653434343433333434434343432121212121212121212121210/0/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!        lklklklklklklklkjijijijijijijijijijijijihghghghghghghghgfefefefefefefefefefefefedcdcdcdcccccccdcbabababababababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMNMNMNMKKLKLKLKKLKLKLKLJIJIJIJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABABABABABA@?@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9:9:9:9:987878787878787878787878765656565656565653434343434343434434343332121212121212121212121210/0/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!                    - - - - - - - - - - - -             - - - - - - - - - - - -             - - - - - - - - - - - -             - - - - - - - - - - - -             - - - - - - - - - - - -             - - - - - - - - - - - -             - - - - - - - - - - - -             - - - - - - - - - - - -             - - - - - - - - - - - - llkkjjiiHHGGFFEE$$##""!!55667788YYZZ[[\\WWVVUUTT))((''&&??@@AABBllkkjjiiCCBBAA@@8899::;;\\]]^^__YYXXWWVV554433228899::;;\\]]^^__YYXXWWVV554433228899::;;\\]]^^__YYXXWWVV554433228899::;;\\]]^^__YYXXWWVV554433228899::;;\\]]^^__TTSSRRQQ&&%%$$## ::;;<<==cciijjkkHHGGFFEE"!!  - - ,,--..//PPQQRRSSeeddccbbAA@@??>> - - ,,--..//PPQQRRSSeeddccbbAA@@??>> - - ,,--..//PPQQRRSSeeddccbbAA@@??>> - - ,,--..//PPQQRRSSeeddccbbAA@@??>> - - ,,--..//PPQQRRSS``__^^]]221100// ))**++,,WWXXYYZZWVVUUTTS.--,,++* !!""##DDEEFFGGhhiijjkkMMLLKKJJ))((''&& !!""##DDEEFFGGhhiijjkkMMLLKKJJ))((''&& !!""##DDEEFFGGhhiijjkkMMLLKKJJ))((''&& !!""##DDEEFFGGhhiijjkkMMLLKKJJ))((''&& !!""##DDEEFFGGhhiijjkkCCBBAA@@FFGGHHIIcbbaa``_<<;;::998899::;;\\]]^^__YYXXWWVV55443322hhggffeeDDCCBBAA 99::;;<<]]^^__``SSRRQQKK%%$$##""CCDDEEFFhgfedccb??>>==<<<<==>>??``aabbccUUTTSSRR1100//.. - -<<==>>??``aabbccUUTTSSRR1100//.. - -<<==>>??``aabbccUUTTSSRR1100//.. - -<<==>>??``aabbccUUTTSSRR1100//.. - -<<==>>??``aabbccKKJJIIHH""!!>>??@@AAllllkkjjDDCCBBAA 00112233TTUUVVWWaa``__^^==<<;;:: 00112233TTUUVVWWaa``__^^==<<;;:: 00112233TTUUVVWWaa``__^^==<<;;:: 00112233TTUUVVWWaa``__^^==<<;;:: 00112233TTUUVVWW\\[[ZZYY..--,,++--..//00[[\\]]^^SRRQQPON*))((''&$$%%&&''HHIIJJKKllllkkjjIIHHGGFF%%$$##""$$%%&&''HHIIJJKKllllkkjjIIHHGGFF%%$$##""$$%%&&''HHIIJJKKllllkkjjIIHHGGFF%%$$##""$$%%&&''HHIIJJKKllllkkjjIIHHGGFF%%$$##""$$%%&&''HHIIJJKKllllkkjj??>>==<<!!""##$$JJKKQQRR_^^]]\\[87654332 <<==>>??``aabbccUUTTSSRR1100//..ddccbbaa@@??>>====>>??@@aabbccddJJIIHHGG!!!!GGHHIIJJbaa``__^;;::9987@@AABBCCddeeffggQQPPOONN--,,++** @@AABBCCddeeffggQQPPOONN--,,++** @@AABBCCddeeffggQQPPOONN--,,++** @@AABBCCddeeffggQQPPOONN--,,++** @@AABBCCddeeffggGGFFEEDDBBCCDDEEiihgfedc@@??>>==44556677XXYYZZ[[]]\\[[ZZ9988776644556677XXYYZZ[[]]\\[[ZZ9988776644556677XXYYZZ[[]]\\[[ZZ9988776644556677XXYYZZ[[]]\\[[ZZ9988776644556677XXYYZZ[[XXWWVVUU**))(('' - - 11223399__``aabbMLKKJJII&%%$$##"(())**++LLMMNNOOiihhggffEEDDCCBB!! (())**++LLMMNNOOiihhggffEEDDCCBB!! (())**++LLMMNNOOiihhggffEEDDCCBB!! (())**++LLMMNNOOiihhggffEEDDCCBB!! (())**++LLMMNNOOiiccbbaa;;::9933 - -%%&&''((SSTTUUVV[ZZYYXXW21100//. - - @@AABBCCddeeffggQQPPOONN--,,++**``__^^]]<<;;::99 AABBCCDDeeffgghhFFEEDDCC""##$$%%KKQQRRSS^]]\\[[Z65433221 !!""##DDEEFFGGhhiijjkkMMLLKKJJ))((''&& !!""##DDEEFFGGhhiijjkkMMLLKKJJ))((''&& !!""##DDEEFFGGhhiijjkkMMLLKKJJ))((''&& !!""##DDEEFFGGhhiijjkkMMLLKKJJ))((''&& !!""##DDEEFFGGhhiijjkkCCBBAA@@FFGGHHIIcbbaa``_<<;;::998899::;;\\]]^^__YYXXWWVV554433228899::;;\\]]^^__YYXXWWVV554433228899::;;\\]]^^__YYXXWWVV554433228899::;;\\]]^^__YYXXWWVV554433228899::;;\\]]^^__TTSSRRQQ&&%%$$## ::;;<<==cciijjkkHHGGFFEE"!!  - - ,,--..//PPQQRRSSeeddccbbAA@@??>> - - ,,--..//PPQQRRSSeeddccbbAA@@??>> - - ,,--..//PPQQRRSSeeddccbbAA@@??>> - - ,,--..//PPQQRRSSeeddccbbAA@@??>> - - ,,--..//PPQQRRSS``__^^]]221100// ))**++,,WWXXYYZZWVVUUTTS.--,,++* !!""##DDEEFFGGhhiijjkkMMLLKKJJ))((''&&\\[[ZZYY88776655!!""##$$EEFFGGHHiijjkkllBBAA@@??&&''(())TTUUVVWWZYYXXWWV100//..- - - $$%%&&''HHIIJJKKllllkkjjIIHHGGFF%%$$##""$$%%&&''HHIIJJKKllllkkjjIIHHGGFF%%$$##""$$%%&&''HHIIJJKKllllkkjjIIHHGGFF%%$$##""$$%%&&''HHIIJJKKllllkkjjIIHHGGFF%%$$##""$$%%&&''HHIIJJKKllllkkjj??>>==<<!!""##$$JJKKQQRR_^^]]\\[87654332 <<==>>??``aabbccUUTTSSRR1100//.. - -<<==>>??``aabbccUUTTSSRR1100//.. - -<<==>>??``aabbccUUTTSSRR1100//.. - -<<==>>??``aabbccUUTTSSRR1100//.. - -<<==>>??``aabbccKKJJIIHH""!!>>??@@AAllllkkjjDDCCBBAA 00112233TTUUVVWWaa``__^^==<<;;:: 00112233TTUUVVWWaa``__^^==<<;;:: 00112233TTUUVVWWaa``__^^==<<;;:: 00112233TTUUVVWWaa``__^^==<<;;:: 00112233TTUUVVWW\\[[ZZYY..--,,++--..//00[[\\]]^^SRRQQPON*))((''&$$%%&&''HHIIJJKKllllkkjjIIHHGGFF%%$$##""XXWWVVUU44332211 %%&&''((IIJJKKLLllkkjjii>>==<<;; **++,,--XXYYZZ[[VUUTTSSR-,,++**)(())**++LLMMNNOOiihhggffEEDDCCBB!! (())**++LLMMNNOOiihhggffEEDDCCBB!! (())**++LLMMNNOOiihhggffEEDDCCBB!! (())**++LLMMNNOOiihhggffEEDDCCBB!! (())**++LLMMNNOOiiccbbaa;;::9933 - -%%&&''((SSTTUUVV[ZZYYXXW21100//. - - @@AABBCCddeeffggQQPPOONN--,,++** @@AABBCCddeeffggQQPPOONN--,,++** @@AABBCCddeeffggQQPPOONN--,,++** @@AABBCCddeeffggQQPPOONN--,,++** @@AABBCCddeeffggGGFFEEDDBBCCDDEEiihgfedc@@??>>==44556677XXYYZZ[[]]\\[[ZZ9988776644556677XXYYZZ[[]]\\[[ZZ9988776644556677XXYYZZ[[]]\\[[ZZ9988776644556677XXYYZZ[[]]\\[[ZZ9988776644556677XXYYZZ[[XXWWVVUU**))(('' - - 11223399__``aabbMLKKJJII&%%$$##"(())**++LLMMNNOOiihhggffEEDDCCBB!!  - -TTSSRRQQ00//..-- - - ))**++,,MMNNOOPPccbbaa``::993322 - - ..//0011\\]]^^__RQQPONML)((''&&% - - ,,--..//PPQQRRSSeeddccbbAA@@??>> - - ,,--..//PPQQRRSSeeddccbbAA@@??>> - - ,,--..//PPQQRRSSeeddccbbAA@@??>> - - ,,--..//PPQQRRSSeeddccbbAA@@??>> - - ,,--..//PPQQRRSS``__^^]]221100// ))**++,,WWXXYYZZWVVUUTTS.--,,++* !!""##DDEEFFGGhhiijjkkMMLLKKJJ))((''&& !!""##DDEEFFGGhhiijjkkMMLLKKJJ))((''&& !!""##DDEEFFGGhhiijjkkMMLLKKJJ))((''&& !!""##DDEEFFGGhhiijjkkMMLLKKJJ))((''&& !!""##DDEEFFGGhhiijjkkCCBBAA@@FFGGHHIIcbbaa``_<<;;::998899::;;\\]]^^__YYXXWWVV554433228899::;;\\]]^^__YYXXWWVV554433228899::;;\\]]^^__YYXXWWVV554433228899::;;\\]]^^__YYXXWWVV554433228899::;;\\]]^^__TTSSRRQQ&&%%$$## ::;;<<==cciijjkkHHGGFFEE"!!  - - ,,--..//PPQQRRSSeeddccbbAA@@??>> PPOONNMM,,++**)) - - --..//00QQRRSSTT__^^]]\\1100//.. - - 223399::``aabbccKKJJIIHH%$$##""! 00112233TTUUVVWWaa``__^^==<<;;:: 00112233TTUUVVWWaa``__^^==<<;;:: 00112233TTUUVVWWaa``__^^==<<;;:: 00112233TTUUVVWWaa``__^^==<<;;:: 00112233TTUUVVWW\\[[ZZYY..--,,++--..//00[[\\]]^^SRRQQPON*))((''&$$%%&&''HHIIJJKKllllkkjjIIHHGGFF%%$$##""$$%%&&''HHIIJJKKllllkkjjIIHHGGFF%%$$##""$$%%&&''HHIIJJKKllllkkjjIIHHGGFF%%$$##""$$%%&&''HHIIJJKKllllkkjjIIHHGGFF%%$$##""$$%%&&''HHIIJJKKllllkkjj??>>==<<!!""##$$JJKKQQRR_^^]]\\[87654332 <<==>>??``aabbccUUTTSSRR1100//.. - -<<==>>??``aabbccUUTTSSRR1100//.. - -<<==>>??``aabbccUUTTSSRR1100//.. - -<<==>>??``aabbccUUTTSSRR1100//.. - -<<==>>??``aabbccKKJJIIHH""!!>>??@@AAllllkkjjDDCCBBAA 00112233TTUUVVWWaa``__^^==<<;;::LLKKJJII((''&&%% 11223344UUVVWWXX[[ZZYYXX--,,++** ;;<<==>>iijjkkllGGFFEEDD! 44556677XXYYZZ[[]]\\[[ZZ9988776644556677XXYYZZ[[]]\\[[ZZ9988776644556677XXYYZZ[[]]\\[[ZZ9988776644556677XXYYZZ[[]]\\[[ZZ9988776644556677XXYYZZ[[XXWWVVUU**))(('' - - 11223399__``aabbMLKKJJII&%%$$##"(())**++LLMMNNOOiihhggffEEDDCCBB!! (())**++LLMMNNOOiihhggffEEDDCCBB!! (())**++LLMMNNOOiihhggffEEDDCCBB!! (())**++LLMMNNOOiihhggffEEDDCCBB!! (())**++LLMMNNOOiiccbbaa;;::9933 - -%%&&''((SSTTUUVV[ZZYYXXW21100//. - - @@AABBCCddeeffggQQPPOONN--,,++** @@AABBCCddeeffggQQPPOONN--,,++** @@AABBCCddeeffggQQPPOONN--,,++** @@AABBCCddeeffggQQPPOONN--,,++** @@AABBCCddeeffggGGFFEEDDBBCCDDEEiihgfedc@@??>>==44556677XXYYZZ[[]]\\[[ZZ99887766(())**++LLMMNNOOiihhggffEEDDCCBB!! (())**++LLMMNNOOiihhggffEEDDCCBB!! (())**++LLMMNNOOiihhggffEEDDCCBB!! (())**++LLMMNNOOaa``__^^33221100 - - - -00112233^^__``aaAA@@??>><<==>>?? - - ,,--..//PPQQRRSSeeddccbbAA@@??>> - - ,,--..//PPQQRRSSeeddccbbAA@@??>> - - ,,--..//PPQQRRSSeeddccbbAA@@??>> - - ,,--..//PPQQRRSS]]\\[[ZZ//..--,, 99::;;<>??@@]]\\[[ZZ99887766 !!""##DDEEFFGG44556677XXYYZZ[[]]\\[[ZZ9988776644556677XXYYZZ[[]]\\[[ZZ9988776644556677XXYYZZ[[]]\\[[ZZ9988776644556677XXYYZZ[[UUTTSSRR''&&%%$$AABBCCDDYYXXWWVV55443322$$%%&&''HHIIJJKK8899::;;\\]]^^__YYXXWWVV554433228899::;;\\]]^^__YYXXWWVV554433228899::;;\\]]^^__YYXXWWVV554433228899::;;\\]]^^__QQKKJJII##""!!EEFFGGHHUUTTSSRR1100//.. - -(())**++LLMMNNOO<<==>>??``aabbccUUTTSSRR1100//.. - -<<==>>??``aabbccUUTTSSRR1100//.. - -<<==>>??``aabbccUUTTSSRR1100//.. - -<<==>>??``aabbccHHGGFFEE!!""##IIJJKKQQQQPPOONN--,,++** - - ,,--..//PPQQRRSS@@AABBCCddeeffggQQPPOONN--,,++** @@AABBCCddeeffggQQPPOONN--,,++** @@AABBCCddeeffggQQPPOONN--,,++** @@AABBCCddeeffggDDCCBBAA$$%%&&''RRSSTTUUMMLLKKJJ))((''&& 00112233TTUUVVWW !!""##DDEEFFGGhhiijjkkMMLLKKJJ))((''&& !!""##DDEEFFGGhhiijjkkMMLLKKJJ))((''&& !!""##DDEEFFGGhhiijjkkMMLLKKJJ))((''&& !!""##DDEEFFGGhhiijjkk@@??>>==(())**++VVWWXXYYIIHHGGFF%%$$##""44556677XXYYZZ[[$$%%&&''HHIIJJKKllllkkjjIIHHGGFF%%$$##""$$%%&&''HHIIJJKKllllkkjjIIHHGGFF%%$$##""$$%%&&''HHIIJJKKllllkkjjIIHHGGFF%%$$##""$$%%&&''HHIIJJKKllddccbb<<;;::99 ,,--..//ZZ[[\\]]EEDDCCBB!! 8899::;;\\]]^^__``aabdQZ|bdQZ|bdQZ|H~fH~fH~f`JXQrے`JtArdlJtArnXv`~HfvnXZp˂Zp˂Zp˂tAJltAJltAJlf`vXf`vXf`vXے`Jے`Jے`J|ZdQ|ZdQ|ZdQHfpvHfpvHfpvZp˂Zp˂Zp˂tAJltAJltAJlf`vXf`vXf`vXr˂pJXQrbtlZdQbtl|ZdQnXv`v`f~fZp˂Zp˂Zp˂tAJltAJltAJlf`vXf`vXf`vXے`Jے`Jے`J|ZdQ|ZdQ|ZdQHfpvHfpvHfpvZp˂Zp˂Zp˂tAJltAJltAJlf`vXf`vXf`vXr˂pJXQrp`JXQtArdlJtArvnXv`ffpvZp˂Zp˂Zp˂tAJltAJlJltf`vXf`vXf`vXے`Jے`Jے`JXQ|ZdQ|ZdQ|ZdQHfpvHfpvfpvZp˂Zp˂Zp˂tAJltAJlJltf`vXf`vXf`vXHAbےpZHAbbtlZdQbtvnXnXv`~HfZp˂Zp˂Zp˂tAJltAJldrtAdrtAdrtA`vXn`vXn`vXn˂p`XQr˂|ZdQbd|Zf~fppvnv`frXQJ`rXQJ`rXQJ`tbdQZtbdQZtbdQZnvpnvpnvpXQr˂XQr˂XQr˂btlbtlbtlnXvnXvnXvrXQJ`rXQJ`rXQJ`tbdQZtbdQZtbdQZnvpnvpnvp`JXQr˂p`JJtArdlJtAbnXvf~HpvnrXQJ`rXQJ`rXQJ`tbdQZtbdQZtbdQZnvpnvpnvpXQr˂XQr˂XQr˂btlbtlbtlnXvnXvnXvrXQJ`rXQJ`rXQJ`tbdQZtbdQZtbdQZnvpnvpnvpZHAb˂pZHArbt|ZdQbd|Zv`f~~HfpnrXQJrXQJ`rXQJ`rbdQZtbdQZtbdQZbnvnvpnvpnr˂XQr˂XQr˂rbtbtlbtlbnXvnXvnXvnrXQJrXQJ`rXQJ`rbdQZtbdQZtbdQZbnvnvpnvpnr˂`JXQrے`J|ZdQbl|Zv`ff~fppvnrXQJ`rXQJ`rXQJ`tbdQZtbdQZJltJltJltvpfvpfvpfJXQrp`JXQtl|dQbtvnXXv`f~HfpےbHAےbHAےbHA|dr|dr|dtAfH~fH~fH~pZHAbpZHAbpZHAJtArdJtArdJtArd`f~`f~`fHےbHAےbHAےbHA|dr|dr|dtAfH~fH~fH~˂pZXQr˂|ZdQrd|`f~fpfpvXv`fےbHAےbHAےbHA|dr|dr|drfH~fH~fH~pZHAbpZHAbpZHAbJtArdJtArdJtArd`f~`f~`f~ےbHAےbHAےbHA|dr|dr|drfH~fH~fH~ے`JXQbے`l|ZdQtl|dQbt璅fpvvnX`ےHAےbHAےbHA|dr|dr|drpfHfH~fH~pZHAbpZHAbpZHAblJtAdJtArdJtArd`f~`f~`f~`ےHAےbHAےbHA|dr|dr|drpfHfH~fH~p`JXQ˂p`XQr˂tlJdQbt璕~HfpvnXXv`fےbHAےbHAےbHA|dr|drbdQZ|bdQZ|bdQZ|H~fH~fH~f˂pZHAr˂pZdQbtl|ZdQv`f~fpvvnXZp˂Zp˂Zp˂tAJltAJlJltf`vXf`vXf`vXے`Jے`Jے`JXQ|ZdQ|ZdQ|ZdQHfpvHfpvfpvZp˂Zp˂Zp˂tAJltAJlJltf`vXf`vXf`vXHAbےpZHAbbtlZdQbtvnXnXv`~HfZp˂Zp˂Zp˂tAJltAJltAJlf`vXf`vXf`vXے`Jے`Jے`J|ZdQ|ZdQ|ZdQHfpvHfpvHfpvZp˂Zp˂Zp˂tAJltAJltAJlf`vXf`vXf`vXr˂pJXQrbtlZdQbtl|ZdQnXv`v`f~fZp˂Zp˂Zp˂tAJltAJltAJlf`vXf`vXf`vXے`Jے`Jے`J|ZdQ|ZdQ|ZdQHfpvHfpvHfpvZp˂Zp˂Zp˂tAJltAJltAJlf`vXf`vXf`vXr˂pJXQrp`JXQtArdlJtArvnXv`ffpvZp˂Zp˂Zp˂tAJltAJldrtAdrtAdrtA`vXn`vXn`vXnbے`ZHAblJtAbtl~HfpۅnXv`v`frXQJ`rXQJ`rbdQZtbdQZtbdQZbnvnvpnvpnr˂XQr˂XQr˂rbtbtlbtlbnXvnXvnXvnrXQJrXQJ`rXQJ`rbdQZtbdQZtbdQZbnvnvpnvpnr˂`JXQrے`J|ZdQbl|Zv`ff~fppvnrXQJ`rXQJ`rXQJ`tbdQZtbdQZtbdQZnvpnvpnvpXQr˂XQr˂XQr˂btlbtlbtlnXvnXvnXvrXQJ`rXQJ`rXQJ`tbdQZtbdQZtbdQZnvpnvpnvp`JXQr˂p`JJtArdlJtAbnXvf~HpvnrXQJ`rXQJ`rXQJ`tbdQZtbdQZtbdQZnvpnvpnvpXQr˂XQr˂XQr˂btlbtlbtlnXvnXvnXvrXQJ`rXQJ`rXQJ`tbdQZtbdQZtbdQZnvpnvpnvpZHAb˂pZHArbt|ZdQbd|Zv`f~~HfpnrXQJrXQJ`rXQJ`rbdQZtbdQZtbdQZtAJlJltJltJltvpfvpfr˂pJXQrے`JXQrd|JtArdvnXf~HrQJHAےbHAےbHA|dr|dr|drpfHfH~fH~pZHAbpZHAbpZHAblJtAdJtArdJtArd`f~`f~`f~`ےHAےbHAےbHA|dr|dr|drpfHfH~fH~p`JXQ˂p`XQr˂tlJdQbt璕~HfpvnXXv`fےbHAےbHAےbHA|dr|dr|dtAfH~fH~fH~pZHAbpZHAbpZHAJtArdJtArdJtArd`f~`f~`fHےbHAےbHAےbHA|dr|dr|dtAfH~fH~fH~˂pZXQr˂|ZdQrd|`f~fpfpvXv`fےbHAےbHAےbHA|dr|dr|drfH~fH~fH~pZHAbpZHAbpZHAbJtArdJtArdJtArd`f~`f~`f~ےbHAےbHAےbHA|dr|dr|drfH~fH~fH~ے`JXQbے`l|ZdQtl|dQbt璅fpvvnX`ےHAےbHAےbHA|dr|dr|drtbdQZbdQZ|bdQZ|bdQZ|H~fH~f`JXQr˂p`Jr˂pZdQbt|ZdQv`f~ffpvZp˂Zp˂Zp˂tAJltAJltAJlf`vXf`vXf`vXے`Jے`Jے`J|ZdQ|ZdQ|ZdQHfpvHfpvHfpvZp˂Zp˂Zp˂tAJltAJltAJlf`vXf`vXf`vXr˂pJXQrp`JXQtArdlJtArvnXv`ffpvZp˂Zp˂Zp˂tAJltAJlJltf`vXf`vXf`vXے`Jے`Jے`JXQ|ZdQ|ZdQ|ZdQHfpvHfpvfpvZp˂Zp˂Zp˂tAJltAJlJltf`vXf`vXf`vXHAbےpZHAbbtlZdQbtvnXnXv`~HfZp˂Zp˂Zp˂tAJltAJltAJlf`vXf`vXf`vXے`Jے`Jے`J|ZdQ|ZdQ|ZdQHfpvHfpvHfpvZp˂Zp˂Zp˂tAJltAJltAJlf`vXf`vXf`vXr˂pJXQrbtlZdQbtl|ZdQnXv`v`f~fZp˂Zp˂Zp˂tAJltAJltAJl|dtAdrtAdrtA`vXn`vXn`vXn˂pZXQr˂|ZdQbl|ZbtlpvnnXv`rXQJ`rXQJ`rXQJ`tbdQZtbdQZtbdQZnvpnvpnvpXQr˂XQr˂XQr˂btlbtlbtlnXvnXvnXvrXQJ`rXQJ`rXQJ`tbdQZtbdQZtbdQZnvpnvpnvpZHAb˂pZHArbt|ZdQbd|Zv`f~~HfpnrXQJrXQJ`rXQJ`rbdQZtbdQZtbdQZbnvnvpnvpnr˂XQr˂XQr˂rbtbtlbtlbnXvnXvnXvnrXQJrXQJ`rXQJ`rbdQZtbdQZtbdQZbnvnvpnvpnr˂`JXQrے`J|ZdQbl|Zv`ff~fppvnrXQJ`rXQJ`rXQJ`tbdQZtbdQZtbdQZnvpnvpnvpXQr˂XQr˂XQr˂btlbtlbtlnXvnXvnXvrXQJ`rXQJ`rXQJ`tbdQZtbdQZtbdQZnvpnvpnvp`JXQr˂p`JJtArdlJtAbnXvf~HpvnrXQJ`rXQJ`rXQJ`tbdQZtbdQZtbdQZJltJltJltvpfvpfvpfHAbےpZHAbtlJdQbt|ZdQbXv`ff~fpےbHAےbHAےbHA|dr|dr|drfH~fH~fH~pZHAbpZHAbpZHAbJtArdJtArdJtArd`f~`f~`f~ےbHAےbHAےbHA|dr|dr|drfH~fH~fH~ے`JXQbے`l|ZdQtl|dQbt璅fpvvnX`ےHAےbHAےbHA|dr|dr|drpfHfH~fH~pZHAbpZHAbpZHAblJtAdJtArdJtArd`f~`f~`f~`ےHAےbHAےbHA|dr|dr|drpfHfH~fH~p`JXQ˂p`XQr˂tlJdQbt璕~HfpvnXXv`fےbHAےbHAےbHA|dr|dr|dtAfH~fH~fH~pZHAbpZHAbpZHAJtArdJtArdJtArd`f~`f~`fHےbHAےbHAےbHA|dr|dr|dtAfH~fH~fH~˂pZXQr˂|ZdQrd|`f~fpfpvXv`fےbHAےbHAےbHA|dr|dr|drbnvpfHfH~fH~pZHAbpZHAbpZHAblJtAdJtArdJtArd`f~`f~`f~`ےHAےbHAےbHA|dr|dr|drpfHfH~fH~XQr˂`JXQr˂p`Zb㉀ۑpZQXb㉀f۝`vf۝`vrQtJlrQtJlf`vXf`vXf`vXے`Jے`Jے`J|ZdQ|ZdQ|ZdQHfpvHfpvHfpvZp˂Zp˂Zp˂tAJltAJltAJlf`vXf`vXf`vXpZHAb˂pZQXb㉀ہ`ZQXbXnv˅Xnv˅Xnv˒tbAdtbAdnvpnvpnvpXQr˂XQr˂XQr˂btlbtlbtlnXvnXvnXvrXQJ`rXQJ`rXQJ`tbdQZtbdQZtbdQZnvpnvpnvpے`JHAbےpJAHr󉀒ۑpJpfH~pfH~pfH~Z|dZ|dfH~fH~fH~pZHAbpZHAbpZHAbJtArdJtArdJtArd`f~`f~`f~ےbHAےbHAےbHA|dr|dr|drfH~fH~fH~XQr˂`JXQrˁ`ZAHr󙐂˅f۝`vf۝`vf۝`vrQtJlrQtJlf`vXf`vXf`vXے`Jے`Jے`J|ZdQ|ZdQ|ZdQHfpvHfpvHfpvZp˂Zp˂Zp˂tAJltAJltAJlf`vXf`vXf`vXp`JXQ˂p`QXb㉀ہ`ZQXbXnv˅Xnv˅Xnv˒tbAdtbAdnvpnvpnvpXQr˂XQr˂XQr˂btlbtlbtlnXvnXvnXvrXQJ`rXQJ`rXQJ`tbdQZtbdQZtbdQZnvpnvpnvpr˂pJXQrp`ZQXۑp`pfH~pfH~p|dZ|dZ|dfH~fH~fH~pZHAbpZHAbpZHAJtArdJtArdJtArd`f~`f~`fHےbHAےbHAےbHA|dr|dr|dtAfH~fH~fH~ZHAb˂pZHAb㉀ۑpZQXb㉀f۝`vf۝`vrQtJlrQtJlrQtJlf`vXf`vXf`vXے`Jے`Jے`JXQ|ZdQ|ZdQ|ZdQHfpvHfpvfpvZp˂Zp˂Zp˂tAJltAJlJltf`vXf`vXf`vXے`JXQbے`JAHr󙐒ۑpJAHXnv˅Xnv˒tbAdtbAdtbAdnvpnvpnr˂XQr˂XQr˂rbtbtlbtlbnXvnXvnXvnrXQJrXQJ`rXQJ`rbdQZtbdQZtbdQZbnvnvpnvpnے`Jr˂pJXQrˁ`ZQXr󙐂ˁ`pfH~pfH~Z|dZ|dZ|drQtefghijkllkjihgf \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv23_2.dat b/mpdf/qrcode/data/qrv23_2.dat deleted file mode 100644 index 50e0b3e..0000000 Binary files a/mpdf/qrcode/data/qrv23_2.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv23_3.dat b/mpdf/qrcode/data/qrv23_3.dat deleted file mode 100644 index b073443..0000000 Binary files a/mpdf/qrcode/data/qrv23_3.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv24_0.dat b/mpdf/qrcode/data/qrv24_0.dat deleted file mode 100644 index fdae762..0000000 Binary files a/mpdf/qrcode/data/qrv24_0.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv24_1.dat b/mpdf/qrcode/data/qrv24_1.dat deleted file mode 100644 index fce059e..0000000 --- a/mpdf/qrcode/data/qrv24_1.dat +++ /dev/null @@ -1,225 +0,0 @@ -popopopopopopopopopopoponmnmnmnmnmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijighghghggghghghghfefefefefefefefefefefefedcdcdcdcdcdcdcdcdcdcdcdcbabababababababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPOPOPOPOMNMNMNMNMNMNMNMNLKLKLKLKLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABABABABABA@?@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9:9:9:9:9878787878787878765656565656565656543434343434343434343432121212121212121212121210/0/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!            popopopopopopopopopopoponmnmnmnmnmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijigggghghgghghghghfefefefefefefefefefefefedcdcdcdcdcdcdcdcdcdcdcdcbababababababababa`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPONMNMNMMNMNMNMNMNMNMNMNLKLKLKLKLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABABABABABA@?@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9:9:9:9:9878787878787878765656565656565654333333443434343434343432121212121212121212121210/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!            popopopopopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklklklklklkjijijijijijijijihghghghgghghggggfefefefefefefefefefefefedcdcdcdcdcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMMMMMNMMNMNMNMMMNMNMNMNLKLKLKLKLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABABABABABA@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9:9:9:9:9878787878787878765656565656565653434343443434343434343432121212121212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!            popopopopopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijijijijijihghghghggghghghgfefefefefefefefefefefefedcdcdcdcdcdcdcdcdcbababababababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMMMMMNMNMMNMNMNMNLKLKLKLKLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9:9:9:9:9878787878787878765656565656565653434343433333434434343332121212121212121210/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!            popopopopopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghghghghghgfefefefefefefefefefefefedcdcdcdcdcdcdcdcbabababababababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMMNMNMMMMLKLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABABA@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9:9:9:9:98787878787878787656565656565656534343434343434343343434321212121212121210/0/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!            popopopopopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijiggggghghhghghghghghghghgfefefefefefefefefedcdcdcdcdcdcdcdcdcdcdcbabababababababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMMMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9:9:9:9:98787878787878787656565656565656534343434343434344321212121212121212121210/0/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)('('('('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!         popopopopopopoponmnmnmnmnmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijighghghghhghghggghghghghgfefefefefefefefedcdcdcdcdcdcdcdcdcdcdcdcbabababababababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCBABABABABABABABABABABA@?@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9:98787878787878787878787656565656565656534343434343434342121212121212121212121210/0/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!        popopopopopopoponmnmnmnmnmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijighghghghggghghghhghghghgfefefefefefefefedcdcdcdcdcdcdcdcdcdcdcdcbabababababababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOMMMMMNMNNMNMNMNMLKLKLKLKLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABABABABABA@?@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9878787878787878787878787656565656565656533333343343434342121212121212121212121210/0/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!           popopopopopopoponmnmnmnmnmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijighghghghghghghgheeeeeefefefefefefefefefedcdcdcdcdcdcdcdcdcdcdcdcbabababababababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOMNMNMNMNNMNMNMMMLKLKLKLKLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABABABABABA@?@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9:9:9:9878787878787878787656565656565656565656543434343343434332121212121212121212121210/0/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!            popopopopopopoponmnmnmnmnmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijighghghghghghghghfefefefefefefefefefefefedcdcdcdcdcdcdcdcdcdcdcdcbabababababababababababa`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPOPOPOMNMNMNMNMMMNMNMNLKLKLKLKLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABABABABABA@?@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9:9:9:9:9878787878787878765656565656565656565656543434343333343432121212121212121212121210/0/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!                       - - - - - - - - - - - -             - - - - - - - - - - - -             - - - - - - - - - - - -             - - - - - - - - - - - -             - - - - - - - - -             - - - - - - - -             - - - - - - - - - - -             - - - - - - - - - - - -          - - - - - - - - - - - -         - - - - - - - - - - - - ppoonnmmHHGGFFEE AABBCCDDiijjkkllFFEEDDCC**++,,--\\]]^^__VUUTTSSR)((''&&% 44556677\\]]^^__]]\\[[ZZ55443322 - -DDEEFFGGllmmnnooMMLLKKJJ%%$$##"",,--..//TTUUVVWWeeddccbb==<<;;::<<==>>??ddeeffggUUTTSSRR--,,++**$$%%&&''LLMMNNOOmmllkkjjEEDDCCBBBBCCDDEEmmggffee;;::9933 ())**++,UVVWWXXYaa``__^^99887766@@AABBCChhiijjkkQQPPOONN))((''&&(())**++PPQQRRSSiihhggffAA@@??>>8899::;;``aabbccYYXXWWVV1100//..  !!""##HHIIJJKKppppoonnIIHHGGFF!!  - - 00112233XXYYZZ[[\\[[ZZYY**))(('' >>??@@AAppppoonnDDCCBBAA<<==>>??ddeeffggUUTTSSRR--,,++**$$%%&&''LLMMNNOOmmllkkjjEEDDCCBB 44556677\\]]^^__]]\\[[ZZ55443322 - -DDEEFFGGllmmnnooMMLLKKJJ%%$$##"",,--..//TTUUVVWWeeddccbb==<<;;:: JJKKLLMM``__^^]]..--,,++ 01122334]^^__``allkkjjiiDDCCBBAA EEFFGGHHmmnnooppBBAA@@?? ..//0011``aabbccQPONMMLL%$$##""!8899::;;``aabbccYYXXWWVV1100//..  !!""##HHIIJJKKppppoonnIIHHGGFF!!  - - 00112233XXYYZZ[[aa``__^^99887766@@AABBCChhiijjkkQQPPOONN))((''&&(())**++PPQQRRSSiihhggffAA@@??>>FFGGHHIIddccbbaa221100//,--..//0YZZ[[\\]]]\\[[ZZ55443322 - -DDEEFFGGllmmnnooMMLLKKJJ%%$$##"",,--..//TTUUVVWWeeddccbb==<<;;::<<==>>??ddeeffggUUTTSSRR--,,++**$$%%&&''LLMMNNOOmmllkkjjEEDDCCBB 44556677\\]]^^__XXWWVVUU&&%%$$##BBCCDDEEmmlkjihg@@??>>==@@AABBCChhiijjkkQQPPOONN))((''&&(())**++PPQQRRSSiihhggffAA@@??>>8899::;;``aabbccYYXXWWVV1100//..  !!""##HHIIJJKKppppoonnIIHHGGFF!!  - - 00112233XXYYZZ[[aa``__^^99887766!!""##$$SSTTUUVV\\[[ZZYY**))(('' - - 567899::abbccddehhggffee@@??>>==!!""##$$IIJJKKLLppoonnmm>>==<<;; - - 223399::ddeeffggKKJJIIHH! <<==>>??ddeeffggUUTTSSRR--,,++**$$%%&&''LLMMNNOOmmllkkjjEEDDCCBB 44556677\\]]^^__]]\\[[ZZ55443322 - -DDEEFFGGllmmnnooMMLLKKJJ%%$$##"",,--..//TTUUVVWWeeddccbb==<<;;:: JJKKLLMM``__^^]]..--,,++ 01122334]^^__``aYYXXWWVV1100//..  !!""##HHIIJJKKppppoonnIIHHGGFF!!  - - 00112233XXYYZZ[[aa``__^^99887766@@AABBCChhiijjkkQQPPOONN))((''&&(())**++PPQQRRSSiihhggffAA@@??>>8899::;;``aabbccTTSSMMLL""!! FFGGHHIIgffeeddc<<;;::99 DDEEFFGGllmmnnooMMLLKKJJ%%$$##"",,--..//TTUUVVWWeeddccbb==<<;;::<<==>>??ddeeffggUUTTSSRR--,,++**$$%%&&''LLMMNNOOmmllkkjjEEDDCCBB 44556677\\]]^^__]]\\[[ZZ55443322 - -%%&&''((WWXXYYZZXXWWVVUU&&%%$$##;;<<==>>effgghijddccbbaa<<;;::99%%&&''((MMNNOOPPggffeedd::993322 - - ;;<<==>>mmnnooppGGFFEEDD@@AABBCChhiijjkkQQPPOONN))((''&&(())**++PPQQRRSSiihhggffAA@@??>>8899::;;``aabbccYYXXWWVV1100//..  !!""##HHIIJJKKppppoonnIIHHGGFF!!  - - 00112233XXYYZZ[[aa``__^^99887766!!""##$$SSTTUUVV\\[[ZZYY**))(('' - - 567899::abbccddeUUTTSSRR--,,++**$$%%&&''LLMMNNOOmmllkkjjEEDDCCBB 44556677\\]]^^__]]\\[[ZZ55443322 - -DDEEFFGGllmmnnooMMLLKKJJ%%$$##"",,--..//TTUUVVWWeeddccbb==<<;;::<<==>>??ddeeffggKKJJIIHH JJKKLLMMcbbaa``_87654332 - -  !!""##HHIIJJKKppppoonnIIHHGGFF!!  - - 00112233XXYYZZ[[aa``__^^99887766@@AABBCChhiijjkkQQPPOONN))((''&&(())**++PPQQRRSSiihhggffAA@@??>>8899::;;``aabbccYYXXWWVV1100//.. ))**++,,[[\\]]^^TTSSMMLL""!! ??@@AABBklmmnnoo``__^^]]88776655 ))**++,,QQRRSSTTccbbaa``1100//.. ??@@AABBppoonnmmCCBBAA@@DDEEFFGGllmmnnooMMLLKKJJ%%$$##"",,--..//TTUUVVWWeeddccbb==<<;;::<<==>>??ddeeffggUUTTSSRR--,,++**$$%%&&''LLMMNNOOmmllkkjjEEDDCCBB 44556677\\]]^^__]]\\[[ZZ55443322 - -%%&&''((WWXXYYZZXXWWVVUU&&%%$$##;;<<==>>effgghijQQPPOONN))((''&&(())**++PPQQRRSSiihhggffAA@@??>>8899::;;``aabbccYYXXWWVV1100//..  !!""##HHIIJJKKppppoonnIIHHGGFF!!  - - 00112233XXYYZZ[[aa``__^^99887766@@AABBCChhiijjkkGGFFEEDD!!""##$$SSTTUUVV_^^]]\\[21100//.$$%%&&''LLMMNNOOmmllkkjjEEDDCCBB 44556677\\]]^^__]]\\[[ZZ55443322 - -DDEEFFGGllmmnnooMMLLKKJJ%%$$##"",,--..//TTUUVVWWeeddccbb==<<;;::<<==>>??ddeeffggUUTTSSRR--,,++**--..//00__``aabbKKJJIIHHCCDDEEFFppppoonn\\[[ZZYY44332211 - - --..//00UUVVWWXX__^^]]\\--,,++**CCDDEEFFlkjihggf??>>==<< !!""##HHIIJJKKppppoonnIIHHGGFF!!  - - 00112233XXYYZZ[[aa``__^^99887766@@AABBCChhiijjkkQQPPOONN))((''&&(())**++PPQQRRSSiihhggffAA@@??>>8899::;;``aabbccYYXXWWVV1100//.. ))**++,,[[\\]]^^TTSSMMLL""!! ??@@AABBklmmnnooMMLLKKJJ%%$$##"",,--..//TTUUVVWWeeddccbb==<<;;::<<==>>??ddeeffggUUTTSSRR--,,++**$$%%&&''LLMMNNOOmmllkkjjEEDDCCBB 44556677\\]]^^__]]\\[[ZZ55443322 - -DDEEFFGGllmmnnooCCBBAA@@%%&&''((WWXXYYZZ[ZZYYXXW.--,,++*(())**++PPQQRRSSiihhggffAA@@??>>8899::;;``aabbccYYXXWWVV1100//..  !!""##HHIIJJKKppppoonnIIHHGGFF!!  - - 00112233XXYYZZ[[aa``__^^99887766@@AABBCChhiijjkkQQPPOONN))((''&&11223399ccddeeffGGFFEEDD GGHHIIJJmmllkkjjXXWWVVUU00//..-- - - 11223344YYZZ[[\\[[ZZYYXX))((''&&GGHHIIJJfeeddccb;;::9987 $$%%&&''LLMMNNOOmmllkkjjEEDDCCBB 44556677\\]]^^__]]\\[[ZZ55443322 - -DDEEFFGGllmmnnooMMLLKKJJ%%$$##"",,--..//TTUUVVWWeeddccbb==<<;;::<<==>>??ddeeffggUUTTSSRR--,,++**--..//00__``aabbKKJJIIHHCCDDEEFFppppoonnIIHHGGFF!!  - - 00112233XXYYZZ[[aa``__^^99887766@@AABBCChhiijjkkQQPPOONN))((''&&(())**++PPQQRRSSiihhggffAA@@??>>8899::;;``aabbccYYXXWWVV1100//..  !!""##HHIIJJKKppppoonn??>>==<< - -))**++,,[[\\]]^^WVVUUTTS*))((''&,,--..//TTUUVVWWeeddccbb==<<;;::<<==>>??ddeeffggUUTTSSRR--,,++**$$%%&&''LLMMNNOOmmllkkjjEEDDCCBB 44556677\\]]^^__]]\\[[ZZ55443322 - -DDEEFFGGllmmnnooMMLLKKJJ%%$$##"" - - ::;;<<==ggmmnnooCCBBAA@@ !!""##$KKLLMMNOiihhggffYYXXWWVVTTSSRRQQ,,++**)) 55667788]]^^__``WWVVUUTT%%$$##"" !!KKLLMMSSbaa``__^65433221 - - (())**++PPQQRRSSiihhggffAA@@??>>8899::;;``aabbccYYXXWWVV1100//..  !!""##HHIIJJKKppppoonnIIHHGGFF!!  - - 00112233XXYYZZ[[aa``__^^99887766@@AABBCChhiijjkkQQPPOONN))((''&&11223399ccddeeffGGFFEEDD GGHHIIJJmmllkkjjEEDDCCBB 44556677\\]]^^__]]\\[[ZZ55443322 - -DDEEFFGGllmmnnooMMLLKKJJ%%$$##"",,--..//TTUUVVWWeeddccbb==<<;;::<<==>>??ddeeffggUUTTSSRR--,,++**$$%%&&''LLMMNNOOmmggffee;;::9933 --..//00__``aabbSRQPONMM&%%$$##" - - 00112233XXYYZZ[[aa``__^^99887766@@AABBCChhiijjkkQQPPOONN))((''&&(())**++PPQQRRSSiihhggffAA@@??>>8899::;;``aabbccYYXXWWVV1100//..  !!""##HHIIJJKKppppoonnIIHHGGFF!!  >>??@@AAppppoonn??>>==<< - -$%%&&''(PQRSSTTUeeddccbbUUTTSSRRPPOONNMM((''&&%%99::;;<>??ddeeffggUUTTSSRR--,,++**$$%%&&''LLMMNNOOmmllkkjjEEDDCCBB 44556677\\]]^^__]]\\[[ZZ55443322 - -DDEEFFGGllmmnnooMMLLKKJJ%%$$##"" - - ::;;<<==ggmmnnooCCBBAA@@ !!""##$KKLLMMNOiihhggffAA@@??>>8899::;;``aabbccYYXXWWVV1100//..  !!""##HHIIJJKKppppoonnIIHHGGFF!!  - - 00112233XXYYZZ[[aa``__^^99887766@@AABBCChhiijjkkQQPPOONN))((''&&(())**++PPQQRRSSddccbbaa221100//11223399ccddeeffLLKKJJII"!!  44556677\\]]^^__]]\\[[ZZ55443322 - -DDEEFFGGllmmnnooMMLLKKJJ%%$$##"",,--..//TTUUVVWWeeddccbb==<<;;::<<==>>??ddeeffggUUTTSSRR--,,++**$$%%&&''LLMMNNOOmmllkkjjEEDDCCBBBBCCDDEEmmggffee;;::9933 ())**++,UVVWWXXYaa``__^^QQPPOONNLLKKJJII$$##""!!==>>??@@eeffgghhJJIIHHGG&&''(())XXYYZZ[[ZYYXXWWV-,,++**) - - 00112233XXYYZZ[[aa``__^^99887766@@AABBCChhiijjkkQQPPOONN))((''&&(())**++PPQQRRSSiihhggffAA@@??>>8899::;;``aabbccYYXXWWVV1100//..  !!""##HHIIJJKKppppoonnIIHHGGFF!!  >>??@@AAppppoonn??>>==<< - -$%%&&''(PQRSSTTUeeddccbb==<<;;::<<==>>??ddeeffggUUTTSSRR--,,++**$$%%&&''LLMMNNOOmmllkkjjEEDDCCBB 44556677\\]]^^__]]\\[[ZZ55443322 - -DDEEFFGGllmmnnooMMLLKKJJ%%$$##"",,--..//TTUUVVWW``__^^]]..--,,++ - - ::;;<<==ggmmnnooHHGGFFEE8899::;;``aabbccYYXXWWVV1100//..  !!""##HHIIJJKKppppoonnIIHHGGFF!!  - - 00112233XXYYZZ[[aa``__^^99887766@@AABBCChhiijjkkQQPPOONN))((''&&(())**++PPQQRRSSiihhggffAA@@??>>FFGGHHIIddccbbaa221100//,--..//0YZZ[[\\]]]\\[[ZZMMLLKKJJIIHHGGFF!!  - - 00112233XXYYZZ[[aa``__^^99887766@@AABBCChhiijjkkQQPPOONN))((''&&(())**++PPQQRRSSiihhggffAA@@??>>8899::;;``aabbccLLKKJJII$$%%&&''VVWWXXYYMMLLKKJJ%%$$##""<<==>>??EEDDCCBB 44556677\\]]^^__]]\\[[ZZ55443322 - -DDEEFFGGllmmnnooMMLLKKJJ%%$$##"",,--..//TTUUVVWWeeddccbb==<<;;::<<==>>??ddeeffggHHGGFFEE(())**++ZZ[[\\]]IIHHGGFF!! @@AABBCCAA@@??>>8899::;;``aabbccYYXXWWVV1100//..  !!""##HHIIJJKKppppoonnIIHHGGFF!!  - - 00112233XXYYZZ[[aa``__^^99887766@@AABBCChhiijjkkDDCCBBAA,,--..//^^__``aaEEDDCCBBDDEEFFGG==<<;;::<<==>>??ddeeffggUUTTSSRR--,,++**$$%%&&''LLMMNNOOmmllkkjjEEDDCCBB 44556677\\]]^^__]]\\[[ZZ55443322 - -DDEEFFGGllmmnnoo@@??>>== 00112233bbccddeeAA@@??>> !!""##HHIIJJKK99887766@@AABBCChhiijjkkQQPPOONN))((''&&(())**++PPQQRRSSiihhggffAA@@??>>8899::;;``aabbccYYXXWWVV1100//..  !!""##HHIIJJKKpphhggff<<;;::99 - - - -99::;;<>??ddeeffggUUTTSSRR--,,++**$$%%&&''LLMMNNOOeeddccbb33221100 ==>>??@@aa``__^^99887766(())**++PPQQRRSS1100//..  !!""##HHIIJJKKppppoonnIIHHGGFF!!  - - 00112233XXYYZZ[[aa``__^^99887766@@AABBCChhiijjkkQQPPOONN))((''&&(())**++PPQQRRSSaa``__^^//..--,,AABBCCDD]]\\[[ZZ55443322 - -,,--..//TTUUVVWW--,,++**$$%%&&''LLMMNNOOmmllkkjjEEDDCCBB 44556677\\]]^^__]]\\[[ZZ55443322 - -DDEEFFGGllmmnnooMMLLKKJJ%%$$##"",,--..//TTUUVVWW]]\\[[ZZ++**))((EEFFGGHHYYXXWWVV1100//.. - - 00112233XXYYZZ[[))((''&&(())**++PPQQRRSSiihhggffAA@@??>>8899::;;``aabbccYYXXWWVV1100//..  !!""##HHIIJJKKppppoonnIIHHGGFF!!  - - 00112233XXYYZZ[[YYXXWWVV''&&%%$$IIJJKKLLUUTTSSRR--,,++** 44556677\\]]^^__%%$$##"",,--..//TTUUVVWWeeddccbb==<<;;::<<==>>??ddeeffggUUTTSSRR--,,++**$$%%&&''LLMMNNOOmmllkkjjEEDDCCBB 44556677\\]]^^__UUTTSSMM##""!! !!""##MMSSTTUUQQPPOONN))((''&&8899::;;``aabbccddeefpvnXv`f~HXQJ`ےbHAZp˂rZ|ddrtA~f`f`vXJXQrے`JXbtlJtArd|ZdQ`f~HfpvnXvےbHAZp˂rXQJ`tAJltbdQZpfHf`vXnvpے`JXQr˂pZHAb|ZdQbtlJtArdnXv`f~fpvrXQJ`ےbHAtbdQZ|drtAJlfH~~f`XQHAb˂p`p`JXQJtArdlJtnXv`f~HfpvrXQJ`ےbHAZp˂|drtAJlbnvfH~f`vXpZHAbے`JXQr˂JtArd|ZdQbtlHfpvnXv`fHZp˂rXQJ`ےJltbdQZ|drf`vXnvpfH~ZHAbbے`btllJtAJfpvf~HXv`fZp˂rXQJ`ےbHAtbdQZ|drJltnvpfH~XQr˂pZHAbے`JbtlJtArd|ZdQ`f~HfpvnXvےbHAZp˂rXQJ`tAJltbdQZpfHf`vXnvpے`JXQr˂pZHAbbtdlJtAnXv`v`f`AZprXQJ`˂rXnXv`f~HfpvbHAZp˂rXQJ`ےrtAJlJltvXnnvpZAbےQr˂pJtArd|ZdQbtlHfpvnXv`fHZp˂rXQJ`ےJltbdQZ|drf`vXnvpfH~XQr˂pZHAbے`JbtlJtArd|ZdQ`f~HfpvnrXQJےbHAZp˂|drtAJltbdQZf`vXvXnے`JXQJXQrrbt璂|ZdQArd|`f~HfpvnXvےbHAZp˂rXQJ`tAJltbdQZpfHf`vXnvpے`JXQr˂pZHAb|ZdQbtlJtArdnXv`f~fpvrXQJ`ےbHAtbdQZ|drtAJlnvpfH~f`vXے`JXQJXQrJtArdrd|nvffpv~HfrXQJ`ےbHAZp˂|drtAJlbnvfH~f`vXpZHAbے`JXQr˂JtArd|ZdQbtlHfpvnXv`fHZp˂rXQJ`ےJltbdQZ|drf`vXnvpfH~XQr˂pZHAbے`J|ZdQbdQbtf~H~Hfp˂rXQbAZp˂QJ`ےf~HfpvnXv`p˂rXQJ`ےJlttbdQbdQZ|vp`vfH~`JXQrZHAb|ZdQbtlJtArdnXv`f~fpvrXQJ`ےbHAtbdQZ|drtAJlnvpfH~f`vXpZHAbے`JXQr˂JtArd|ZdQbtlHfpvnXv`ےHAZp˂rXQJ`tAJltbdQZ|drnfvpfHr˂p˂pZHAlJA|btlJZdQbtHfpvnXv`fHZp˂rXQJ`ےJltbdQZ|drf`vXnvpfH~XQr˂pZHAbے`JbtlJtArd|ZdQ`f~HfpvnrXQJےbHAZp˂|drtAJltbdQZfH~f`vXnvprے˂pZHA|ZdQZdQbt~HfpnXv`pvnےbHAZp˂rXQJ`tAJltbdQZpfHf`vXnvpے`JXQr˂pZHAb|ZdQbtlJtArdnXv`f~fpvrXQJ`ےbHAtbdQZ|drtAJlnvpfH~f`vXpZHAbے`JXQr˂tlJlJtArfpvvnXJ`ےrXQJbHAZfpvnXv`f~HXQJ`ےbHAZdrtAJZ|l`vXnXnvvpf˂pZJXQrbtlJtArd|ZdQ`f~HfpvnrXQJےbHAZp˂|drtAJltbdQZfH~f`vXnvpے`JXQr˂pZHA|ZdQbtlJfpvnXv`f~Zp˂rXQJ`ےbHAtbdQZ|drtAJl`vXnXnvZHAbbے`ZdQbtAr|ZlJtnXv`f~fpvrXQJ`ےbHAtbdQZ|drtAJlnvpfH~f`vXpZHAbے`JXQr˂JtArd|ZdQbtlHfpvnXv`ےHAZp˂rXQJ`tAJltbdQZ|drf`vXnvpfH~`JXQrXQr˂btdlJtAvnXf~fpXv`fZp˂rXQJ`ےJltbdQZ|drf`vXnvpfH~XQr˂pZHAbے`JbtlJtArd|ZdQ`f~HfpvnrXQJےbHAZp˂|drtAJltbdQZfH~f`vXnvpے`JXQr˂pZHAtArdd|ZnXHfv`fbHAZp`ےbrXQJ`nXv`f~HfpvbHAZp˂rltbtbdQZvpfpfH~ے`JXQHAbے˂pZHAJtArd|ZdQbtlHfpvnXv`ےHAZp˂rXQJ`tAJltbdQZ|drf`vXnvpfH~XQr˂pZHAbے`JXQbtlJtArdnXv`f~HfpvrXQJ`ےbHAZp˂|drtAJltbdQZvpfpfH~ے`JXQJXQrlJtAdQbtArdZ`f~HfpvnrXQJےbHAZp˂|drtAJltbdQZfH~f`vXnvpے`JXQr˂pZHA|ZdQbtlJfpvnXv`f~Zp˂rXQJ`ےbHAtbdQZ|drtAJlnvpfH~f`vX˂pZpZHAb|ZdQbdQbt璕v`fvnXfpvrXQJ`ےbHAtbdQZ|drtAJlnvpfH~f`vXpZHAbے`JXQr˂JtArd|ZdQbtlHfpvnXv`ےHAZp˂rXQJ`tAJltbdQZ|drf`vXnvpfH~XQr˂pZHAbے`JXQ|ZdQbdQbtpvnnXv˂rXQHAZp˂ےJlf~HfpvnXv`p˂rXQJ`ےdQZ||drH~ff`vrZHA`JXQrbے`|ZdQbtlJfpvnXv`f~Zp˂rXQJ`ےbHAtbdQZ|drtAJlnvpfH~f`vXpZHAbے`JrbtJtArd|ZdQ`f~HfpvnXvےbHAZp˂rXQJ`tAJltbdQZ|dtAH~ff`vrے˂pZHArd|lJtArQbtlHfpvnXv`ےHAZp˂rXQJ`tAJltbdQZ|drf`vXnvpfH~XQr˂pZHAbے`JXQbtlJtArdnXv`f~HfpvrXQJ`ےbHAZp˂|drtAJltbdQZfH~f`vXnvpHAbےے`JtlJlJtAr~Hfpv`fnrXQJےbHAZp˂|drtAJltbdQZfH~f`vXnvpے`JXQr˂pZHA|ZdQbtlJfpvnXv`f~Zp˂rXQJ`ےbHAtbdQZ|drtAJlnvpfH~f`vXpZHAbے`Jrbttl|lJtArXv`f`f~JbHArXQJtbdQZfpvnXv`p˂rXQJ`ےbHAZdrtAJtAJl`vXnXnvbے`˂pZAJXQrbtlJtArdnXv`f~HfpvrXQJ`ےbHAZp˂|drtAJltbdQZfH~f`vXnvpے`JXQr˂lJtAd|ZdQbtlHfpvnXv`f~Zp˂rXQJ`ےbHAtbdQZ|drJlt`vXnXnv`JXQrXQr˂ZdQbtd|ZJfpvnXv`f~Zp˂rXQJ`ےbHAtbdQZ|drtAJlnvpfH~f`vXpZHAbے`JrbtJtArd|ZdQ`f~HfpvnXvےbHAZp˂rXQJ`tAJltbdQZ|dtAf`vXnvpfے`J`JXQrXQr˂tArdd|ZvnX~Hfp`ےHAZp˂rXQJ`tAJltbdQZ|drf`vXnvpfH~XQr˂pZHAbے`JXQbtlJtArdnXv`f~HfpvrXQJ`ےbHAZp˂|drtAJltbdQZfH~f`vXnvpے`JXQr˂l|ZdQZdQbtdtl~HfHfpvZp˂`ےbA|drtAJlnXv`f~HXQJ`ےbHAZp˂rltbtbdQZf`pfHXJXQrb`JX˂pZHAJtArd|ZdQ`f~HfpvnXvےbHAZp˂rXQJ`tAJltbdQZ|dtAf`vXnvpfے`JXQr˂pZHAb|ZdQbtlJtArdnXv`f~HfpvrXQJ`ےbHAZp˂|drtAJlbnvvp`pfH~˂pZpZHAbJArddQbt璀nXv`f~HfpvrXQJ`ےbHAZp˂|drtAJltbdQZfH~f`vXnvpے`JXQr˂lJtAd|ZdQbtlHfpvnXv`f~Zp˂rXQJ`ےbHAtbdQZ|drJltnvpfH~XQHAb˂p`p`JXQ|ZdQbdQbt璕vf~HvnXZp˂rXQJ`ےbHAtbdQZ|drtAJlnvpfH~f`vXpZHAbے`JrbtJtArd|ZdQ`f~HfpvnXvےbHAZp˂rXQJ`tAJltbdQZ|dtAf`vXnvpfے`JXQr˂pZHAbbtllJtAJfpvpvnnXvrXQJ`ZrXtAJltbdQZf~HfpvbHAZp˂rXQJ`ےdQtAJl|dtvXnnvppZHAQr˂pbJAd|ZdQbtlHfpvnXv`f~Zp˂rXQJ`ےbHAtbdQZ|drJltnvpfH~XQr˂pZHAbے`JbtlJtArd|ZdQ`f~HfpvnXvےbHAZp˂rXQJ`tAJltbdQZp`vXvXnvpHAbےے`J|ZdQlJtAr`f~HfpvnXvےbHAZp˂rXQJ`tAJltbdQZ|dtAf`vXnvpfے`JXQr˂pZHAb|ZdQbtlJtArdnXv`f~HfpvrXQJ`ےbHAZp˂|drtAJlbnvfH~f`vXے`JXQJXQrrbttl|lJtArfpvv`f~rXQJ`ےbHAZp˂|drtAJltbdQZfH~f`vXnvpے`JXQr˂lJtAd|ZdQbtlHfpvnXv`f~Zp˂rXQJ`ےbHAtbdQZ|drJltnvpfH~XQr˂pZHAbے`JJtArdrd|~HXv`p`pvbHAQJ`ےtbdQZ|drfpvnXv`p˂rXQJ`ےbHAZtbdQbdQZ|vpfHfH~bے`ZHAb|ZdQbtlJtArdnXv`f~HfpvrXQJ`ےbHAZp˂|drtAJlbnvfH~f`vXpZHAbے`JXQr˂JtArd|ZdQbtlHfpvnXv`fHZp˂rXQJ`ےJltbdQZ|drnvpvpfHfے`J`JXQrXQr˂btlZdQbtHfpvnXv`f~Zp˂rXQJ`ےbHAtbdQZ|drJltnvpfH~XQr˂pZHAbے`JbtlJtArd|ZdQ`f~HfpvnXvےbHAZp˂rXQJ`tAJltbdQZpfHf`vXnvpr˂p˂pZHAl|ZdQZdQbtdtlnXv`fvnےbHAZp˂rXQJ`tAJltbdQZ|dtAf`vXnvpfے`JXQr˂pZHAb|ZdQbtlJtArdnXv`f~HfpvrXQJ`ےbHAZp˂|drtAJlbnvfH~f`vXpZHAbے`JXQr˂|ZdQZdQbtfpvvnXnrXQJZp˂bHAZp|drtAJltbdQZ|drf`vXnvpfH~XQr˂pZHAbے`JbtlJtArd|ZdQ`f~HfpvnrXQJےbHAZp˂|drtAJltbdQZfH~f`vXnvpے`JXQHAXQrb㉀ۑpۑpJAHf۝`vXnvZ|drQtJl|drtAJlnvpfH~f`vXpZHAbے`JXQr˂JtArd|ZdQbtlHfpvnXv`ےHAZp˂rXQJ`tAJltbdQZ|drf`vXnvpfH~r˂p˂pZHAJAHrr󙐂ˁ`XnvˍpfH~rQtJltbAdtAJltbdQZfH~f`vXnvpے`JXQr˂pZHA|ZdQbtlJfpvnXv`f~Zp˂rXQJ`ےbHAtbdQZ|drtAJlnvpfH~f`vXZHAbbے`ˁ`ZQXZQXb㉀pfH~ㅐf۝`vtbAdZ|dtbdQZ|drf`vXnvpfH~XQr˂pZHAbے`JXQbtlJtArdnXv`f~HfpvrXQJ`ےbHAZp˂|drtAJltbdQZfH~f`vXnvpے`JXQJXQrb㉀ۑpۑpJAHf۝`vXnvZ|drQtJl|drtAJlnvpfH~f`vXpZHAbے`JrbtJtArd|ZdQ`f~HfpvnXvےbHAZp˂rXQJ`tAJltbdQZ|dtAf`vXnvpfZHAbr˂p˂p`Z`ZQXbㅐf۝`vXnvˍpfH~rQtJltbAdtAJltbdQZfH~f`vXnvpے`JXQr˂lJtAd|ZdQbtlHfpvnXv`f~Zp˂rXQJ`ےbHAtbdQZ|drJltnvpfH~ے`J`JXQrQXb㉀ۉۑpJXnvˍpfH~ㅐf۝`vtbAdZ|dtbdQZ|dtAf`vXnvpfے`JXQr˂pZHAb|ZdQbtlJtArdnXv`f~HfpvrXQJ`ےbHAZp˂|drtAJlbnvfH~f`vXXQr˂˂pZpJAHrAHr󙐂ˍpfH~ㅐf۝`vXnvZ|drQtJl|drJltnvpfH~XQr˂pZHAbے`JbtlJtArd|ZdQ`f~HfpvnXvےbHAZp˂rXQJ`tAJltbdQZpfHf`vXnvppZHAbHAbےˁ`Z`ZQXbㅐf۝`vXnvˍp|drQtJltbAdtAJlbnvfH~f`vXpZHAbے`JXQr˂JtArd|ZdQbtlHfpvnXv`fHZp˂rXQJ`ےJltbdQZ|drf`vXnvpfH~ے`J`JXQrQXb㉀ۑpJXnvˍpfH~rQtJltbAdZ|dtbdQZpfHf`vXnvpے`JXQr˂pZHAb|ZdQbtlJtArdnXv`f~fpvrXQJ`ےbHAtbdQZ|drtAJlnvpfH~f`vXXQr˂pZˁ`ZQXAHQXb㉀pfH~ㅐf۝`vtbAdZ|drQtJltijklmnopponmlkj \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv24_2.dat b/mpdf/qrcode/data/qrv24_2.dat deleted file mode 100644 index 405fb37..0000000 Binary files a/mpdf/qrcode/data/qrv24_2.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv24_3.dat b/mpdf/qrcode/data/qrv24_3.dat deleted file mode 100644 index f270bac..0000000 Binary files a/mpdf/qrcode/data/qrv24_3.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv25_0.dat b/mpdf/qrcode/data/qrv25_0.dat deleted file mode 100644 index 14b0760..0000000 --- a/mpdf/qrcode/data/qrv25_0.dat +++ /dev/null @@ -1,233 +0,0 @@ -tstststststststsrqrqrqrqpopopoponmnmnmnmkkkklklkjijijijijijijijihghghghgfefefefedcdcdcdcdcdcdcdcbabababa`_`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQQQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCBABABABABABABABA@?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:9:9:9:9:987878787656565654343434343434343212121210/0/0/0/.-.-.-.-tstststststststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijijijijijihghghghgfefefefedcdcdcdcdcdcdcdcbabababa`_`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQRQPOPOPOPOPOPOPONMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCBABABABABABABABA@?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:9:987878787878787656565654343434343212121212121210/0/0/0/.-.-.-.-tstststststststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijijijijijihghghghgfefefefedcdcdcdcdcdcdcdcbabababa`_`_`_`_`_^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCBABABABABA@?@?@?@?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:98777777887878787656565654343434321212121212121210/0/0/0/.-.-.-.-tstststststststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijijijijijihghghghgfefefefedcdcdcdcdcdcdcdcbabababa`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSQQQQQRQRPOPOPOPOPOPOPOPONMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCBABABABA@?@?@?@?@?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:97878787887878787656565654343434321212121212121210/0/0/0/.-.-.-.-tstststststststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijijihghghghghghghgfefefefedcdcdcdcdcdcdcdcbabababa`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSQRQRQRQRPOPOPOPOPOPOPOPONMNMNMNMLKLKLKLKLKJIJIJIJIJIJIJIHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCBABABABA@?@?@?@?@?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:97878787887878777656565654343434321212121212121210/0/0/0/.-.-.-.-tstststststststsrqrqrqrqpopopoponmnmnmnmlklklkkkjijijijihghghghghghghghgfefefefedcdcdcdcdcdcdcdcbabababa`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYZYXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSQRQRQRQRPOPOPOPOPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCBABABABA@?@?@?@?@?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:97878787877878787656565654343434321212121212121210/0/0/0/.-.-.-.-tstststsrqrqrqrqrqrqrqrqpopopoponmnmnmnmkkklklkljijijijihghghghghghghghgfefefefedcdcdcdcdcdcdcdcbabababa`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSQRQRQRQRPOPOPOPOPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCBABABABA@?@?@?@?@?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:97878787887656565656565654343434321212121212121210/0/0/0/.-.-.-.-tstststsrqrqrqrqrqrqrqrqpopopoponmnmnmnmklklklkljijijijihghghghghghghghgfefefefedcdcdcdcdcbababababababa`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSQRQRQRQRPOPOPOPOPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGFEFEFEFEFEDCDCDCDCDCDCDCBABABABA@?@?@?@?@?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:97878787865656565656565654343434321212121212121210/0/0/0/.-.-.-.-tstststsrqrqrqrqrqrqrqrqpopopoponmnmnmnmklklklkljijijijihghghghghghghghgfefefefedcdcdcdcbabababababababa`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSQRQRQRQQPOPOPOPOPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCDCDCDCDCBABABABA@?@?@?@?@?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:97777778765656565656565654343434321212121212121210/0/0/0/.-.-.-.-.-.-.-.-tstststsrqrqrqrqrqrqrqrqpopopoponmnmnmnmklklklkljijijijihghghghghghghghgfefefefedcdcdcdcbabababababababa`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSQQQQRQRQPOPOPOPOPONMNMNMNMNMNMNMLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCDCDCDCDCBABABABA@?@?@?@?@?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:98787878765656565656565654343434321212121210/0/0/0/0/0/0/.-.-.-.-.-.-.-.-tstststsrqrqrqrqrqrqrqrqpopopoponmnmnmnmklklklkljijijijihghghghghghghghgfefefefedcdcdcdcbabababababababa`_`_`_`_^]^]^]^]^]\[\[\[\[\[\[\[ZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCDCDCDCDCBABABABA@?@?@?@?@?>=>=>=>=>=>=>=<;<;<;<;:9:9:9:987878787656565656565656543434343212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-tstststsrqrqrqrqrqrqrqrqpopopoponmnmnmnmklklkkkkjijijijihghghghghghghghgfefefefedcdcdcdcbabababababababa`_`_`_`_^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCDCDCDCDCBABABABA@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;:9:9:9:987878787656565656565656543434343212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-tstststsrqrqrqrqpopopopopopopoponmnmnmnmkklklklkjijijijihghghghghgfefefefefefefedcdcdcdcbabababababababa`_`_`_`_^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKJIJIJIJIJIHGHGHGHGHGHGHGFEFEFEFEDCDCDCDCDCDCDCDCBABABABA@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;:9:9:9:987878787656565656565656543434343212121210/0/0/0/0/0/0/0/.-.-.-.-.-,+,+,+tstststsrqrqrqrqpopopoponmnmnmnmnmnmnmnmlklklklkjijijijihghghghgfefefefefefefefedcdcdcdcbabababababababa`_`_`_`_^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYXWXWXWXWXWVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEDCDCDCDCDCDCDCDCBABABABA@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;:9:9:9:987878787656565656565656543434343212121210/0/0/0/0/0/0/0/.-.-.-.-,+,+,+,+tstststsrqrqrqrqpopopoponmnmnmnmlklklklklklklklkjijijijihghghghgfefefefefefefefedcdcdcdcbabababababababa`_`_`_`_^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSRQRQRQQQPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEDCDCDCDCDCDCDCDCBABABABA@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;:9:9:9:977777878656565656543434343434343212121210/0/0/0/0/0/0/0/.-.-.-.-,+,+,+,+tstststsrqrqrqrqpopopoponmnmnmnmkkkkklkllklklklkjijijijihghghghgfefefefefefefefedcdcdcdcbababababa`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUVUTSTSTSTSTSTSTSQQQRQRQRPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEDCDCDCDCDCBABABABABABABA@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;:9:9:9:978787878656565654343434343434343212121210/0/0/0/0/0/0/0/.-.-.-.-,+,+,+,+tstststsrqrqrqrqpopopoponmnmnmnmklklklkllklklklkjijijijihghghghgfefefefefefefefedcdcdcdcbabababa`_`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSTSTSTSTSQRQRQRQRPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEDCDCDCDCBABABABABABABABA@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;:9:9:9:978787878656565654343434343434343212121210/0/0/0/0/0/0/0/.-.-.-.-,+,+,+,+tstststsrqrqrqrqpopopoponmnmnmnmklklklkllklklklkjijijijihghghghgfefefefefefefefedcdcdcdcbabababa`_`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSTSRQRQRQQRQRQRQRPOPOPOPONMNMNMNMNMLKLKLKLKLKLKLKJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEDCDCDCDCBABABABABABABABA@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;:9:9:9:978787878656565654343434343434343212121210/0/0/0/0/.-.-.-.-.-.-.-,+,+,+,+tstststsrqrqrqrqpopopoponmnmnmnmklklklkliiiiiijijijijijihghghghgfefefefefefefefedcdcdcdcbabababa`_`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[\[ZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQQQQQRQQRQRQRQRPOPOPOPONMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEDCDCDCDCBABABABABABABABA@?@?@?@?>=>=>=>=>=<;<;<;<;<;<;<;:9:9:9:978787878656565654343434343434343212121210/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+tstststsrqrqrqrqpopopoponmnmnmnmklklklkljijijijijijijijihghghghgfefefefefefefefedcdcdcdcbabababa`_`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQQRQRQRQRPOPOPOPONMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEDCDCDCDCBABABABABABABABA@?@?@?@?>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:978787877656565654343434343434343212121210/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+tstststsrqrqrqrqpopopoponmnmnmnmklklklkkjijijijijijijijihghghghgfefefefefedcdcdcdcdcdcdcbabababa`_`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQQRQRQQQQPOPOPOPONMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIHGHGHGHGHGFEFEFEFEFEFEFEDCDCDCDCBABABABABABABABA@?@?@?@?>=>=>=>=<;<;<;<;<;:9:9:9:9:9:9:977778787656565654343434343434343212121210/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!        - - - - ,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!        - - - - ,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%&%$#$#$#$#$#$#$#"!"!"!"!        - - - - ,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!        - - - - ,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!        - - - - ,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!        - - - - ,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!        - - - - ,+,+,+,+*)*)*)*)*)('('('('('('('&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!        - - - - - - - ,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!        - - - - - - - - ,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!        - - - - - - - - ,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%$#$#$#$#$#"!"!"!"!"!"!"!        - - - - - - - - ,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%$#$#$#$#"!"!"!"!"!"!"!"!        - - - - - - - - ,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%$#$#$#$#"!"!"!"!"!              - - - - - - - - ,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%$#$#$#$#"!"!"!"!                - - - - - - - - ,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%$#$#$#$#"!"!"!"!             - - - - - - - - ,+,+,+,+*)*)*)*)('('('('('&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!            - - - - - ,+,+,+,+*)*)*)*)('('('('&%&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!            - - - - ,+,+,+,+*)*)*)*)('('('('&%&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!            - - - - ,+,+,+,+*)*)*)*)('('('('&%&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!            - - - - ,+,+,+,+*)*)*)*)('('('('&%&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!            - - - - ,+*)*)*)*)*)*)*)('('('('&%&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!         - - - - ttssrrqq EEFFGGHHFFEEDDCC..//0011UTSRQQPPddeeffgg1100//..$$%%&&''qqppoonn8899::;;]]\\[[ZZ LLMMNNOOIIHHGGFF ``aabbcc55443322))**++,,XXWWQQPPopqqrrss%%$$##""00112233eeddccbbDDEEFFGGQQPPOONNXXYYZZ[[==<<;;::llmmnnoo))((''&&,,--..//ddccbbaa - - kkqqrrss<<==>>??YYXXWWVVPPQQRRSSEEDDCCBBppoonnmmIIJJKKLLBBAA@@??22334455OONNMMLLhhiijjkk--,,++**(())**++mmllkkjj<<==>>??YYXXWWVVPPQQRRSSEEDDCCBBddeeffgg1100//..--..//00OONNMMLLttttssrr!! 44556677aa``__^^ - -HHIIJJKKMMLLKKJJ - - \\]]^^__99887766ppqqrrss%%$$##""00112233``__^^]] ttttssrr@@AABBCCUUTTSSRRTTUUVVWWAA@@??>>llkkjjiiMMNNOOPP>>==77666677==>>KKJJIIHHllmmnnoo))((''&&,,--..//iihhggff@@AABBCCUUTTSSRRTTUUVVWWAA@@??>>hhiijjkk--,,++**11223344KKJJIIHHqqppoonn8899::;;]]\\[[ZZ LLMMNNOOIIHHGGFF ``aabbcc55443322 !!""##ttttssrr!! 44556677\\[[ZZYYqqponmlkDDEEFFGGQQPPOONNXXYYZZ[[==<<;;::hhggffeeQQRRSSTT55443322??@@AABBGGFFEEDDppqqrrss%%$$##""00112233eeddccbbDDEEFFGGQQPPOONNXXYYZZ[[==<<;;::llmmnnoo))((''&&556677==GGFFEEDD !"##$mmllkkjj<<==>>??YYXXWWVVPPQQRRSSEEDDCCBBddeeffgg1100//..$$%%&&''qqppoonn8899::;;XXWWQQPPkjjiihhg HHIIJJKKMMLLKKJJ - - \\]]^^__99887766ddccbbaa UUVVWWXX1100//..CCDDEEFFCCBBAA@@ !!""##ttttssrr!! 44556677aa``__^^ - -HHIIJJKKMMLLKKJJ - - \\]]^^__99887766ppqqrrss%%$$##"">>??@@AACCBBAA@@$%%&&''(iihhggff@@AABBCCUUTTSSRRTTUUVVWWAA@@??>>hhiijjkk--,,++**(())**++mmllkkjj<<==>>??OONNMMLLgffeeddc - - LLMMNNOOIIHHGGFF ``aabbcc55443322 !!""##``__^^]] - - YYZZ[[\\--,,++**GGHHIIJJ??>>==<;$$%%&&''qqppoonn8899::;;]]\\[[ZZ LLMMNNOOIIHHGGFF ``aabbcc55443322 !!""##ttttssrr!! BBCCDDEE??>>==77())**++,eeddccbbDDEEFFGGQQPPOONNXXYYZZ[[==<<;;::llmmnnoo))((''&&,,--..//iihhggff@@AABBCCKKJJIIHH##$$cbbaa``_PPQQRRSSEEDDCCBBddeeffgg1100//..$$%%&&''\\[[ZZYY - - ]]^^__``))((''&&KKLLMMNN:9877665(())**++mmllkkjj<<==>>??YYXXWWVVPPQQRRSSEEDDCCBBddeeffgg1100//..$$%%&&''qqppoonnFFGGHHII66554433,--..//0aa``__^^ - -HHIIJJKKMMLLKKJJ - - \\]]^^__99887766ppqqrrss%%$$##""00112233eeddccbbDDEEFFGGGGFFEEDD%%&&''((_^^]]\\[TTUUVVWWAA@@??>>hhiijjkk--,,++**(())**++XXWWVVUU aabbccdd%%$$##OOPPQQWW54433221,,--..//iihhggff@@AABBCCUUTTSSRRTTUUVVWWAA@@??>>hhiijjkk--,,++**(())**++mmllkkjjJJKKLLMM221100//01122334]]\\[[ZZ LLMMNNOOIIHHGGFF ``aabbcc55443322 !!""##ttttssrr!! 44556677aa``__^^ - -HHIIJJKKCCBBAA@@))**++,,[ZZYYXXWXXYYZZ[[==<<;;::llmmnnoo))((''&&,,--..//TTSSRRQQeeffgghhXXYYZZ[[100//..-00112233eeddccbbDDEEFFGGQQPPOONNXXYYZZ[[==<<;;::llmmnnoo))((''&&,,--..//iihhggffNNOOPPQQ..--,,++45566778YYXXWWVVPPQQRRSSEEDDCCBBddeeffgg1100//..$$%%&&''qqppoonn8899::;;]]\\[[ZZ LLMMNNOO??>>==77--..//00WVUTSRQQ - - \\]]^^__99887766ppqqrrss%%$$##""00112233ddeeffggPPOONNMMiijjkkll\\]]^^__-,,++**)44556677aa``__^^ - -HHIIJJKKMMLLKKJJ - - \\]]^^__99887766ppqqrrss%%$$##""00112233eeddccbbWWXXYYZZ**))((''9:;<==>>UUTTSSRRTTUUVVWWAA@@??>>hhiijjkk--,,++**(())**++mmllkkjj<<==>>??YYXXWWVVPPQQRRSS6655443311223344PPOONNMM ``aabbcc55443322 !!""##ttttssrr!! 44556677hhiijjkkLLKKJJIImmnnoopp``aabbcc)((''&&%8899::;;]]\\[[ZZ LLMMNNOOIIHHGGFF ``aabbcc55443322 !!""##ttttssrr!! 44556677aa``__^^ - -[[\\]]^^&&%%$$##??@@AABBQQPPOONNXXYYZZ[[==<<;;::llmmnnoo))((''&&,,--..//iihhggff@@AABBCCUUTTSSRRTTUUVVWW221100//556677==LLKKJJIIddeeffgg1100//..$$%%&&''qqppoonn8899::;;llmmnnooHHGGFFEE qqrrsstt ddeeffgg%$$##"! <<==>>??YYXXWWVVPPQQRRSSEEDDCCBBddeeffgg1100//..$$%%&&''qqppoonn8899::;;]]\\[[ZZ __``aabbCCDDEEFFMMLLKKJJ - - \\]]^^__99887766ppqqrrss%%$$##""00112233eeddccbbDDEEFFGGQQPPOONNXXYYZZ[[..--,,++>>??@@AAHHGGFFEEhhiijjkk--,,++**(())**++mmllkkjj<<==>>??ppqqrrssDDCCBBAA!!""##$$ttssrrqq - - hhiijjkk@@AABBCCUUTTSSRRTTUUVVWWAA@@??>>hhiijjkk--,,++**(())**++mmllkkjj<<==>>??YYXXWWVVccddeeffGGHHIIJJIIHHGGFF ``aabbcc55443322 !!""##ttttssrr!! 44556677aa``__^^ - -HHIIJJKKMMLLKKJJ - - \\]]^^__**))((''BBCCDDEEDDCCBBAAllmmnnoo))((''&&,,--..//iihhggff@@AABBCCttttssrr@@??>>==%%&&''((kkjjiihh - - qqrrssttDDEEFFGGQQPPOONNXXYYZZ[[==<<;;::llmmnnoo))((''&&,,--..//iihhggff@@AABBCCUUTTSSRRgghhiijjKKLLMMNNEEDDCCBBddeeffgg1100//..$$%%&&''qqppoonn8899::;;]]\\[[ZZ LLMMNNOOIIHHGGFF ``aabbcc&&%%$$##FFGGHHII@@??>>==ppqqrrss%%$$##""00112233eeddccbbDDEEFFGGqqppoonn<<;;::99))**++,,ggffeedd ttssrrqqHHIIJJKKMMLLKKJJ - - \\]]^^__99887766ppqqrrss%%$$##""00112233eeddccbbDDEEFFGGQQPPOONN - - kkqqrrssOOPPQQRSAA@@??>>hhiijjkk--,,++**(())**++mmllkkjj<<==>>??YYXXWWVVPPQQRRSSEEDDCCBBddeeffggJJKKLLMM<;:98776 !!""##ttttssrr!! 44556677aa``__^^ - -HHIIJJKKmmllkkjj88776655--..//00ccbbaa``ponmlkkjLLMMNNOOIIHHGGFF ``aabbcc55443322 !!""##ttttssrr!! 44556677aa``__^^ - -HHIIJJKKMMLLKKJJ ttttssrr - -TUVWWXXY==<<;;::llmmnnoo))((''&&,,--..//iihhggff@@AABBCCUUTTSSRRTTUUVVWWAA@@??>>hhiijjkkNNOOPPQQ65544332$$%%&&''qqppoonn8899::;;]]\\[[ZZ LLMMNNOOiihhggff4433221111223344__^^]]\\jiihhggf PPQQRRSSEEDDCCBBddeeffgg1100//..$$%%&&''qqppoonn8899::;;]]\\[[ZZ LLMMNNOOIIHHGGFFqqkkjjii YZZ[[\\]99887766ppqqrrss%%$$##""00112233eeddccbbDDEEFFGGQQPPOONNXXYYZZ[[==<<;;::llmmnnooWWXXYYZZ21100//.(())**++mmllkkjj<<==>>??YYXXWWVVPPQQRRSSeeddccbb00//..--55667788[[ZZYYXXfeeddccb - - TTUUVVWWAA@@??>>hhiijjkk--,,++**(())**++mmllkkjj<<==>>??YYXXWWVVPPQQRRSSEEDDCCBBhhggffee]^^__``a55443322 !!""##ttttssrr!! 44556677aa``__^^ - -HHIIJJKKMMLLKKJJ - - \\]]^^__99887766ppqqrrss[[\\]]^^.--,,++*,,--..//iihhggff@@AABBCCUUTTSSRRTTUUVVWWaa``__^^,,++**))99::;;<>ddccbbaa abbccdde1100//..$$%%&&''qqppoonn8899::;;]]\\[[ZZ LLMMNNOOIIHHGGFF ``aabbcc55443322 !!""##ttttssrr - -__``aabb*))((''&00112233eeddccbbDDEEFFGGQQPPOONNXXYYZZ[[]]\\[[ZZ((''&&%%==>>??@@NNMMLLKK&&''(())^]]\\[[Z - - \\]]^^__99887766ppqqrrss%%$$##""00112233eeddccbbDDEEFFGGQQPPOONNXXYYZZ[[==<<;;::##$$``__^^]] - - effgghhi--,,++**(())**++mmllkkjj<<==>>??YYXXWWVVPPQQRRSSEEDDCCBBddeeffgg1100//..$$%%&&''qqkkjjii ccddeeff&%%$$##"44556677aa``__^^ - -HHIIJJKKMMLLKKJJ - - \\]]^^__YYXXWWVV$$##""!!AABBCCDDJJIIHHGG**++,,--ZYYXXWWV ``aabbcc55443322 !!""##ttttssrr!! 44556677aa``__^^ - -HHIIJJKKMMLLKKJJ - - \\]]^^__99887766%%&&''((\\[[ZZYYijjkklmn))((''&&,,--..//iihhggff@@AABBCCUUTTSSRRTTUUVVWWAA@@??>>hhiijjkk--,,++**(())**++hhggffeegghhiijj! 8899::;;]]\\[[ZZ LLMMNNOOIIHHGGFF ``aabbccUUTTSSRRQQPPOONNXXYYZZ[[==<<;;::llmmnnoo))((''&&556677==GGFFEEDD !"##$mmllkkjj<<==>>??YYXXWWVVPPQQRRSSEEDDCCBBddeeffgg1100//..$$%%&&''qqppoonn8899::;;PPOONNMM$$%%&&''QQPPOONNMMLLKKJJ - - \\]]^^__99887766ppqqrrss%%$$##"">>??@@AACCBBAA@@$%%&&''(iihhggff@@AABBCCUUTTSSRRTTUUVVWWAA@@??>>hhiijjkk--,,++**(())**++mmllkkjj<<==>>??LLKKJJII(())**++MMLLKKJJIIHHGGFF ``aabbcc55443322 !!""##ttttssrr!! BBCCDDEE??>>==77())**++,eeddccbbDDEEFFGGQQPPOONNXXYYZZ[[==<<;;::llmmnnoo))((''&&,,--..//iihhggff@@AABBCCHHGGFFEE,,--..//IIHHGGFFEEDDCCBBddeeffgg1100//..$$%%&&''qqppoonnFFGGHHII66554433,--..//0aa``__^^ - -HHIIJJKKMMLLKKJJ - - \\]]^^__99887766ppqqrrss%%$$##""00112233eeddccbbDDEEFFGGDDCCBBAA00112233EEDDCCBB !!""##AA@@??>>hhiijjkk--,,++**(())**++mmllkkjjJJKKLLMM221100//01122334]]\\[[ZZ LLMMNNOOIIHHGGFF ``aabbcc55443322 !!""##ttttssrr!! 44556677aa``__^^ - -HHIIJJKK@@??>>==44556677AA@@??>>$$%%&&''==<<;;::llmmnnoo))((''&&,,--..//iihhggffNNOOPPQQ..--,,++45566778YYXXWWVVPPQQRRSSEEDDCCBBddeeffgg1100//..$$%%&&''qqppoonn8899::;;]]\\[[ZZ LLMMNNOO77665544==>>??@@==<<;;::(())**++99887766ppqqrrss%%$$##""00112233eeddccbbWWXXYYZZ**))((''9:;<==>>UUTTSSRRTTUUVVWWAA@@??>>hhiijjkk--,,++**(())**++mmllkkjj<<==>>??YYXXWWVVPPQQRRSS33221100AABBCCDD99887766,,--..//55443322 !!""##ttttssrr!! 44556677aa``__^^ - -[[\\]]^^&&%%$$##??@@AABBQQPPOONNXXYYZZ[[==<<;;::llmmnnoo))((''&&,,--..//iihhggff@@AABBCCUUTTSSRRTTUUVVWW//..--,,EEFFGGHH55443322001122331100//..$$%%&&''qqppoonn8899::;;]]\\[[ZZ __``aabbCCDDEEFFMMLLKKJJ - - \\]]^^__99887766ppqqrrss%%$$##""00112233eeddccbbDDEEFFGGQQPPOONNXXYYZZ[[++**))((IIJJKKLL1100//..44556677--,,++**(())**++mmllkkjj<<==>>??YYXXWWVVccddeeffGGHHIIJJIIHHGGFF ``aabbcc55443322 !!""##ttttssrr!! 44556677aa``__^^ - -HHIIJJKKMMLLKKJJ - - \\]]^^__''&&%%$$MMNNOOPP--,,++**8899::;;))((''&&,,--..//iihhggff@@AABBCCUUTTSSRRgghhiijjKKLLMMNNEEDDCCBBddeeffgg1100//..$$%%&&''qqppoonn8899::;;]]\\[[ZZ LLMMNNOOIIHHGGFF ``aabbcc##QQWWXXYY))((''&&<<==>>??%%$$##""00112233eeddccbbDDEEFFGGQQPPOONN - - kkqqrrssOOPPQQRSAA@@??>>hhiijjkk--,,++**(())**++mmllkkjj<<==>>??YYXXWWVVPPQQRRSSEEDDCCBBddeeffggZZ[[\\]]%%$$##""@@AABBCC!! 44556677aa``__^^ - -HHIIJJKKMMLLKKJJ ttttssrr - -TUVWWXXY==<<;;::llmmnnoo))((''&&,,--..//iihhggff@@AABBCCUUTTSSRRTTUUVVWWAA@@??>>hhiijjkk^^__``aa!! DDEEFFGG8899::;;]]\\[[ZZ LLMMNNOOIIHHGGFFqqkkjjii YZZ[[\\]99887766ppqqrrss%%$$##""00112233eeddccbbDDEEFFGGQQPPOONNXXYYZZ[[==<<;;::llmmnnoobbccddeeHHIIJJKK<<==>>??YYXXWWVVPPQQRRSSEEDDCCBBhhggffee]^^__``a55443322 !!""##ttttssrr!! 44556677aa``__^^ - -HHIIJJKKMMLLKKJJ - - \\]]^^__99887766ppqqrrss ffgghhiiLLMMNNOO@@AABBCCUUTTSSRRTTUUVVWWAA@@??>>ddccbbaa abbccdde1100//..$$%%&&''qqppoonn8899::;;]]\\[[ZZ LLMMNNOOIIHHGGFF ``aabbcc55443322 !!""##ttllkkjj - - - -iihhggffPPQQRRSSDDEEFFGGQQPPOONNXXYYZZ[[==<<;;::##$$``__^^]] - - effgghhi--,,++**(())**++mmllkkjj<<==>>??YYXXWWVVPPQQRRSSEEDDCCBBddeeffgg1100//..$$%%&&''iihhggff eeddccbbTTUUVVWW - -HHIIJJKKMMLLKKJJ - - \\]]^^__99887766%%&&''((\\[[ZZYYijjkklmn))((''&&,,--..//iihhggff@@AABBCCUUTTSSRRTTUUVVWWAA@@??>>hhiijjkk--,,++**(())**++eeddccbbaa``__^^ - -XXYYZZ[[ LLMMNNOOIIHHGGFF ``aabbcc55443322))**++,,XXWWQQPPopqqrrss%%$$##""00112233eeddccbbDDEEFFGGQQPPOONNXXYYZZ[[==<<;;::llmmnnoo))((''&&,,--..//aa``__^^]]\\[[ZZ - - \\]]^^__PPQQRRSSEEDDCCBBddeeffgg1100//..--..//00OONNMMLLttttssrr!! 44556677aa``__^^ - -HHIIJJKKMMLLKKJJ - - \\]]^^__99887766ppqqrrss%%$$##""00112233]]\\[[ZZYYXXWWVV ``aabbccTTUUVVWWAA@@??>>hhiijjkk--,,++**11223344KKJJIIHHqqppoonn8899::;;]]\\[[ZZ LLMMNNOOIIHHGGFF ``aabbcc55443322 !!""##ttttssrr!! 44556677YYXXWWQQ##UUTTSSRRddeeffgghhiiZHAbZHAb|ZdQbv`f˂rXQbQZ|fH~fH~XQr˂btlHfpvHfpvZp˂|dr|dtAfH~XQr˂btlbtlHfpvbHAZJl|~f`fH~XQr˂btlHfpvHfpvZp˂|drpfHfH~XQr˂btlbtlHfpvZp˂Jltp`vXXH~`JXQrbtlHfpvfpvZp˂|drfH~ے`JXQے`JXQtlJ~HfpJ`ےdrtAJf`vXf`vXpZHAbJtArdnXvnXvrXQJ`tAJlJltf`vXpZHAbJtArdJtArdnXvp˂rdrtAJvXnfZHAbpZHAbJtArdnXvnXvrXQJ`tAJlf`vXf`vXpZHAbJtArdJtArdnXvrXQJ`bdQZ|nvpfZHAb˂pZJtArdnXvnrXQJrXQJ`tAJlf`vXr˂pr˂ptArdv~bHAXQJltbnvpnvpے`J|ZdQ`f~`f~ےbHAtbdQZbnvnvpے`J|ZdQ|ZdQ`f~XQJ`ےltbvpfHے`Jے`J|ZdQ`f~`fHےbHAtbdQZnvpnvpے`J|ZdQf~`f~ےbHAdrtAfH~JQrHAbے|ZdQ`f~`ےHAےbHAtbdQZnvpZHAbZHAb|ZdQbHfpv`ےbdQZ|fH~fH~XQr˂btlHfpvHfpvZp˂|drpfHfH~XQr˂btlbtlHfpvbHAXQdQZ|~fvXXQr˂XQr˂btlHfpvfpvZp˂|drfH~fH~XQr˂btlHfpvHfpvZp˂Jl|f`vX˂pZH`JXQrbtlHfpvZp˂Zp˂|drfH~ے`JXQے`JXQtlJnXvHAZp˂drtAJf`vXfZHAbpZHAbJtArdnXvnXvrXQJ`tAJlf`vXf`vXpZHAbJtArdJtArdnXvJ`ےdrtAJnvppZHAbpZHAbJtArdnXvnrXQJrXQJ`tAJlf`vXf`vXpZHAbJtArdnXvnXvrXQJ`drtAJnvpAbے`˂pZAJtArdnXvrXQJ`rXQJ`tAJlf`vXr˂pr˂ptArd`f~rXQJltbQnvpے`Jے`J|ZdQ`f~`fHےbHAtbdQZnvpnvpے`J|ZdQf~`f~bHAZpltdfH~ːے`Jے`J|ZdQ`f~`ےHAےbHAtbdQZnvpnvpے`J|ZdQ`f~`f~ےbHAltbfHXnJXQr`JXQ|ZdQ`f~ےbHAےbHAtbdQZnvpZHAb|ZdQb|ZdQbHfpv`ےbZdrtfH~XQr˂XQr˂btlHfpvfpvZp˂|drfH~fH~XQr˂btlHfpvHfpv˂rXQrtAJlf`vXXQr˂XQr˂btlHfpvZp˂Zp˂|drfH~fH~XQr˂btlHfpvHfpvZp˂dQZ|vpf˂pZHrbtbtlHfpvZp˂Zp˂|drfH~ے`JXQtlJtlJnXHHAZp`AJltf`vXpZHAbpZHAbJtArdnXvnrXQJrXQJ`tAJlf`vXf`vXpZHAbJtArdnXvnXvJ`ےtbdQnvppZHAbpZHAJtArdnXvrXQJ`rXQJ`tAJlf`vXfZHAbpZHAbJtArdnXvnXvrXQJ`drtAJH~fAbے`lJtAdJtArdnXvrXQJ`rXQJ`tAJlf`vXr˂ptArdtArdfpvےbHAbdQZ|nvpے`Jے`J|ZdQ`f~`ےHAےbHAtbdQZnvpnvpے`J|ZdQ`f~`f~bHAZpZ|dfH~fے`Jے`JXQ|ZdQ`f~ےbHAےbHAtbdQZnvpے`Jے`J|ZdQ`f~`fHےbHAltd`vXnJQrp|ZdQ|ZdQ`f~ےbHAےbHAtbdQZnvpfH~ZHAb|ZdQb|ZdQbnXv`Zp˂drtfH~XQr˂XQr˂btlHfpvZp˂Zp˂|drfH~fH~XQr˂btlHfpvHfpv`ےbrtAJlvnvXQr˂rbtbtlHfpvZp˂Zp˂|drfH~XQr˂XQr˂btlHfpvfpvZp˂rtAJlvpfZHAbbtlbtlHfpvZp˂Zdr|drfH~f`vXے`JXQtlJtlJf~HrXQJ`AJltf`vXpZHAbpZHAJtArdnXvrXQJ`rXQJ`tAJlf`vXfZHAbpZHAbJtArdnXvnXvHAZp˂tbdQpfH~pZHAblJtAdJtArdnXvrXQJ`rXQJ`tAJlf`vXpZHAbpZHAbJtArdnXvnrXQJrXQJ`tbdQH~ے`JXQJtArdJtArdnXvrXQJ`tAJltAJlf`vXnvpr˂ptArdtArdfpvےbHAbdQZnvpے`Jے`JXQ|ZdQ`f~ےbHAےbHAtbdQZnvpے`Jے`J|ZdQ`f~`fHrXQJtAJl璐f`vے`J|ZdQ|ZdQ`f~ےbHAےbHAtbdQZnvpے`Jے`J|ZdQ`f~`ےHAےbHAZ|dvpfHr˂p|ZdQ|ZdQ`f~ےbHAtbdQZtbdQZnvpfH~ZHAb|ZdQbf~HnXv`Zp˂rtAJlfH~XQr˂rbtbtlHfpvZp˂Zp˂|drfH~XQr˂XQr˂btlHfpvfpv`ےbtbdQZXnvXQr˂btlbtlHfpvZp˂Zdr|drfH~XQr˂XQr˂btlHfpvZp˂Zp˂rtAJl~f`ZHAbbtlbtlHfpvZp˂|dr|drfH~fZHAbے`JXQtlJXv`fp˂rbHAZtbdQf`vXpZHAblJtAdJtArdnXvrXQJ`rXQJ`tAJlf`vXpZHAbpZHAbJtArdnXvnrXQJHAZp˂|drpfH~pZHAbJtArdJtArdnXvrXQJ`tAJltAJlf`vXpZHAbpZHAJtArdnXvrXQJ`rXQJ`tbdQvXnے`JXQJtArdJtArdnXvrXQJ`tAJltAJlf`vXے`Jr˂ptArd~HfXQJ`ےdrtAZ|dnvpے`J|ZdQ|ZdQ`f~ےbHAےbHAtbdQZnvpے`Jے`J|ZdQ`f~`p˂bHAtAJl璐f`vے`J|ZdQ|ZdQ`f~ےbHAtbdQZtbdQZnvpے`Jے`JXQ|ZdQ`f~ےbHAےbHAtAJlvpfHrZHA|ZdQf~`f~ےbHAtbdQZtbdQZnvpXQr˂ZHAb|ZdQbpvnbHAZJbdQrtAJlfH~XQr˂btlbtlHfpvZp˂Zdr|drfH~XQr˂XQr˂btlHfpvrXQJ`ZdrtbdQZnvpfHXQr˂btlbtlHfpvZp˂|dr|drfH~XQr˂rbtbtlHfpvZp˂Zp˂tbdQZ~f`bے`btlHfpvHfpvZp˂|dr|dtAfH~pZHAbے`JXQtlJXv`fp˂rZ|dtbdQf`vXpZHAbJtArdJtArdnXvrXQJ`tAJltAJlf`vXpZHAbpZHAJtArdnXvےbHAtAdQZ||lt~f`pZHAbJtArdJtArdnXvrXQJ`tAJltAJlf`vXpZHAblJtAdJtArdnXvrXQJ`rXQJ`|drpfH~JXQrJtArdnXvnXvrXQJ`tAJlJltf`vXے`Jr˂ptArd~HfXQJ`ےrtAJlZ|dnvpے`J|ZdQ|ZdQ`f~ےbHAtbdQZtbdQZnvpے`Jے`JXQ|ZdQ`f~Zp˂drtAbnvvXnے`J|ZdQf~`f~ےbHAtbdQZtbdQZnvpے`J|ZdQ|ZdQ`f~ےbHAےbHAtAJl璐f`vpZHA|ZdQ`f~`f~ےbHAtbdQZbnvnvpXQr˂ZHAb|ZdQbp`frXQtbdQnvffH~XQr˂btlbtlHfpvZp˂|dr|drfH~XQr˂rbtbtlHfpvrXQJ`Jltpff`vpfHXQr˂btlHfpvHfpvZp˂|dr|dtAfH~XQr˂btlbtlHfpvZp˂ZdrtbdQZXnvbے`btlHfpvHfpvZp˂|drpfHfH~pZHAbے`JXQtlJ~HfpJ`ےZ|df`vXf`vXpZHAbJtArdJtArdnXvrXQJ`tAJltAJlf`vXpZHAblJtAdJtArdnXvےrbdQZ|vXn~f`pZHAbJtArdnXvnXvrXQJ`tAJlJltf`vXpZHAbJtArdJtArdnXvrXQJ`tAdQZ||ltpfH~JXQrJtArdnXvnXvrXQJ`tAJlf`vXf`vXے`Jr˂ptArdvnXbHAZprtAJlnvpnvpے`J|ZdQf~`f~ےbHAtbdQZtbdQZnvpے`J|ZdQ|ZdQ`f~XQJ`ےdrtAvpfHvXnvے`J|ZdQ`f~`f~ےbHAtbdQZbnvnvpے`J|ZdQ|ZdQ`f~ےbHAdrtAbnvf`vZAbے|ZdQ`f~`fHےbHAtbdQZnvpnvpXQr˂pZHAblJtAdJtArdnXvrXQJ`rXQJ`tAJlH~˂pZrZdQnXvnXvrXQJ`tAJlJltf`vXpZHAbJtArdJtArdnXvrXQJ`tAJltAJlf`vXZHAbb㉀ۑppfH~Z|dے`J|ZdQ|ZdQ`f~ےbHAےbHAtbdQZvpfHHAbےbtl`f~`f~ےbHAtbdQZbnvnvpے`J|ZdQ|ZdQ`f~ےbHAtbdQZtbdQZnvpے`JXQJAHr󙐅f۝`vrQtJlXQr˂btlbtlHfpvZp˂Zdr|dr~f``JXQHAJtArdHfpvHfpvZp˂|drpfHfH~XQr˂btlbtlHfpvZp˂|dr|drfH~r˂pˁ`ZQXXnv˒tbAdpZHAbJtArdJtArdnXvrXQJ`tAJltAJlvXnbے`|ZdQnXvnXvrXQJ`tAJlf`vXf`vXpZHAbJtArdJtArdnXvrXQJ`tAJltAJlf`vXZHAbb㉀ۑppfH~Z|dے`J|ZdQ|ZdQ`f~ےbHAtbdQZtbdQZvpfHJXQrbtl`f~`fHےbHAtbdQZnvpnvpے`J|ZdQf~`f~ےbHAtbdQZtbdQZnvpے`JXQJAHr󙐅f۝`vrQtJlXQr˂btlbtlHfpvZp˂|dr|dr~f`˂pZHAJtArdHfpvfpvZp˂|drfH~fH~XQr˂btlHfpvHfpvZp˂|dr|dtAfH~HAbےۑpJXnv˒tbAdpZHAbJtArdJtArdnXvrXQJ`tAJltAJlpfH~bے`ZQbt璀nXvnrXQJrXQJ`tAJlf`vXf`vXpZHAbJtArdnXvnXvrXQJ`tAJlJltf`vX`JXQrAHr󙐂ˍpfH~Z|dے`J|ZdQf~`f~ےbHAtbdQZtbdQZf`vJXQrlJtAr`f~`ےHAےbHAtbdQZnvpnvpے`J|ZdQ`f~`f~ےbHAtbdQZbnvnvp˂pZ`ZQXbㅐf۝`vrQtJlXQr˂btlHfpvHfpvZp˂|dr|dtAXnvے`Jd|ZHfpvZp˂Zp˂|drfH~fH~XQr˂btlHfpvHfpvZp˂|drpfHfH~HAbےۑpJXnv˒tbAdpZHAbJtArdnXvnXvrXQJ`tAJlJltpfH~XQr˂dQbt璀nXvrXQJ`rXQJ`tAJlf`vXfZHAbpZHAbJtArdnXvnXvrXQJ`tAJlf`vXf`vX`JXQrAHr󙐂ˍpfH~Z|dے`J|ZdQ`f~`f~ےbHAtbdQZbnvf`vpZHAblJtAr`f~ےbHAےbHAtbdQZnvpے`Jے`J|ZdQ`f~`fHےbHAtbdQZnvpnvpے``pJAHf۝`vrQtJlXQr˂btlHfpvHfpvZp˂|drp`vXXH~ے`Jd|ZQHfpvZp˂Zp˂|drfH~XQr˂XQr˂btlHfpvfpvZp˂|drfH~fH~JXQrr󙐂ˁ`Xnv˒tbAdpZHAbJtArdnXvnXvrXQJ`tAJlnvpfZHAbXQr˂blJtnXvrXQJ`rXQJ`tAJlf`vXpZHAbpZHAbJtArdnXvnrXQJrXQJ`tAJlf`vXf`vX˂pZHAZQXb㉀pfH~Z|dے`J|ZdQ`f~`fHےbHAtbdQZfH~˂pp`JXQArd|`f~ےbHAےbHAtbdQZnvpے`Jے`J|ZdQ`f~`ےHAےbHAtbdQZnvpnvpbے`ۑpJAHf۝`vrQtJlXQr˂btlHfpvfpvZp˂|drf`vXZHAbrbt璁ZdQbtHfpvZp˂Zdr|drfH~XQr˂XQr˂btlHfpvZp˂Zp˂|drfH~fH~JXQrr󙐂ˁ`Xnv˒tbAdpZHAbJtArdnXvnrXQJrXQJ`tAJlnvpے`JXQlJA|lJtnXvrXQJ`tAJltAJlf`vXpZHAbpZHAJtArdnXvrXQJ`rXQJ`tAJlf`vXfr˂˂p`ZpfH~pfH~Z|dے`J|ZdQ`f~`ےHAےbHAtbdQZfHXnr˂pZdQbtArd|`f~ےbHAtbdQZtbdQZnvpے`Jے`JXQ|ZdQ`f~ےbHAےbHAtbdQZnvppZHAbQXb㉀ۅf۝`vf۝`vrQtJlXQr˂btlHfpvZp˂Zp˂|drvpfZHAblJtAZdQbHfpvZp˂|dr|drfH~XQr˂rbtbtlHfpvZp˂Zp˂|drfH~ے`JpJAHrXnv˅Xnv˒tbAdpZHAJtArdnXvrXQJ`rXQJ`tAJlH~fے`pZrd|JtArdnXvrXQJ`tAJltAJlf`vXpZHAblJtAdJtArdnXvrXQJ`rXQJ`tAJlf`vXXQr˂ˁ`ZpfH~p|dZ|dے`JXQ|ZdQ`f~ےbHAےbHAtbdQZ`vXnHAbےZdQbtf~`f~ےbHAtbdQZtbdQZnvpے`J|ZdQ|ZdQ`f~ےbHAےbHAtbdQZnvppZHAbQXb㉀ۅf۝`vrQtJlrQtJlrbtbtlHfpvZp˂Zp˂|drvpf`JXQrlJtAHfpvHfpvZp˂|dr|dtAfH~XQr˂btlbtlHfpvZp˂Zdr|drfH~ے`ppJAHQXXnv˒tbAdtbAdZ|mnopqrsttsrqponKKKKKKKKLLLLLLLLLLLLL \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv25_1.dat b/mpdf/qrcode/data/qrv25_1.dat deleted file mode 100644 index 6d2446e..0000000 --- a/mpdf/qrcode/data/qrv25_1.dat +++ /dev/null @@ -1,233 +0,0 @@ -tstststststststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghghgfefefefefefefefefefefedcdcdcdcdcdcdcdcbabababababababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSQRQRQRQRQRQRQRQRPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:98787878787878787656565656565656543434343434343434343434321212121212121210/0/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        tstststststststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefefefefefedcdcdcdcdcdcdcdcbabababababababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSQRQRQRQRQRQRQRQRPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:98787878787878787656565656565656543434343434343434343434321212121212121210/0/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        tstststststststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmlklklklklklklkkklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefefefefefedcdcdcdcdcdcdcdcbabababababababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSRQRQRQQRQRQRQQQRQRQQQQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:98787878787878787656565656565656543434343434343434343434321212121212121210/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        tstststststststsrqrqrqrqrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmkkkkklklkkklklkliiiiiijijijijijijijijijihghghghghghghghgfefefefefefefefefefefefedcdcdcdcdcdcdcdcbababababababababa`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUTSTSTSTSTSTSTSRQQQQQRQQQQQRQRQQQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCBABABABABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:98787878787878787656565656565656543434343434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        tstststststststsrqrqrqrqrqrqrqrqrqrqrqrqpopopoponmnmnmnmnmnmnmnmklklklklklklklkljijijijijijijijijijijijihghghghghghghghgfefefefefefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:98787878787878787878777656565656565656543434343434343434321212121212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        tstststststststsrqrqrqrqrqrqrqrqrqrqrqrqpopopoponmnmnmnmnmnmnmnmklklklklklklklkljijijijijijijijijijijijihghghghghghghghgfefefefefefefefefedcdcdcdcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;:9:9:9:9:9:9:9877777787777787877878787656565656565656543434343434343432121212121212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)('('('('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        tstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmklklklklklklklkljijijijijijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9787878787878787887656565656565656565656543434343434343432121212121212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!     tstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmklklklklklklklkljijijijijijijijijihghghghghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9787878787878787865656565656565656565656543434343434343432121212121212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!       tstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmklklklkkklklkkkkjijijijijijijijihghghghghghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQQQPOPOPOPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABABA@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9787878787878787865656565656565656565656543434343434343432121212121212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!        tstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmkkkklklkkklklklkjijijijijijijijihghghghghghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSQQQQQRQRQQQRQRQRPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9787878787878787865656565656565656565656543434343434343432121212121212121210/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        tstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcdcbababababababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSQRQRQRQRQRQRQRQRPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:97878787878787877656565656565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        tstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSQRQRQRQRQRQRQRQRPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:97777778777778787656565656565656565434343434343434343434321212121212121210/0/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!                - - - - - - - -         - - - - - - - - - - -         - - - - - - - - - - - -            - - - - - - - - - - - -             - - - - - - - - - - - -             - - - - - - - - - - - -             - - - - - - - - -             - - - - - - - -          - - - - - - - -         - - - - - - - -         - - - - - - - -         - - - - - - - - ttssrrqqDDCCBBAA--..//00]]^^__``WWQQPPOO..//0011hhiijjkkGGFFEEDD(())**++XXYYZZ[[aa``__^^1100//..00112233``aabbccYYXXWWVV))((''&& - - 8899::;;hhiijjkkQQPPOONN!! @@AABBCCppqqrrssIIHHGGFFHHIIJJKKqqppoonnAA@@??>>))**++,,ccddeeffGGFFEEDD - -,--..//0abbccddeUUTTSSRR%%$$##"" <<==>>??llmmnnooMMLLKKJJDDEEFFGGttttssrrEEDDCCBBLLMMNNOOmmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWeeddccbb55443322,,--..//\\]]^^__XXWWQQPP%%&&''((__``aabbPPOONNMMHHIIJJKKqqppoonnAA@@??>> !!""##PPQQRRSSiihhggff99887766 (())**++XXYYZZ[[aa``__^^1100//..00112233``aabbccYYXXWWVV))((''&& - - 8899::;;hhiijjkkQQPPOONN!! NNOOPPQQ\\[[ZZYYOOPPQQRSeeddccbb55443322,,--..//\\]]^^__ppoonnmm@@??>>== 11223344aabbccddNNMMLLKK22334455qqrrssttCCBBAA@@ ,,--..//\\]]^^__]]\\[[ZZ--,,++**44556677ddeeffggUUTTSSRR%%$$##"" <<==>>??llmmnnooMMLLKKJJDDEEFFGGttttssrrEEDDCCBBLLMMNNOOmmllkkjj==<<;;:: - ---..//00gghhiijjCCBBAA@@ 01122334effgghhiQQPPOONN!! @@AABBCCppqqrrssIIHHGGFFHHIIJJKKqqppoonnAA@@??>> !!""##PPQQRRSSiihhggff99887766 (())**++XXYYZZ[[aa``__^^1100//..00112233``aabbccOONNMMLL))**++,,ccddeeffLLKKJJIILLMMNNOOmmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWeeddccbb55443322,,--..//\\]]^^__]]\\[[ZZ--,,++**44556677ddeeffggUUTTSSRR%%$$##"" <<==>>??llmmnnooMMLLKKJJWWXXYYZZXXWWQQPP !"##$TUVWWXXYaa``__^^1100//..00112233``aabbccllkkjjii<<;;::99 - - 55667788eeffgghhJJIIHHGG 6677==>>ttssrrqq??>>==<; - - 00112233``aabbccYYXXWWVV))((''&& - - 8899::;;hhiijjkkQQPPOONN!! @@AABBCCppqqrrssIIHHGGFFHHIIJJKKqqppoonnAA@@??>> !!""##PPQQRRSSiihhggff99887766 11223344kkqqrrss??>>==7745566778ijjkklmnMMLLKKJJDDEEFFGGttttssrrEEDDCCBBLLMMNNOOmmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWeeddccbb55443322,,--..//\\]]^^__]]\\[[ZZ--,,++**44556677ddeeffggKKJJIIHH--..//00gghhiijjHHGGFFEE !!""##PPQQRRSSiihhggff99887766 (())**++XXYYZZ[[aa``__^^1100//..00112233``aabbccYYXXWWVV))((''&& - - 8899::;;hhiijjkkQQPPOONN!! @@AABBCCppqqrrssIIHHGGFF##$$[[\\]]^^OONNMMLL$%%&&''(YZZ[[\\]]]\\[[ZZ--,,++**44556677ddeeffgghhggffee88776655 - - 99::;;<>??llmmnnooMMLLKKJJDDEEFFGGttttssrrEEDDCCBBLLMMNNOOmmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWeeddccbb55443322556677==ttttssrr66554433 9:;<==>>opqqrrssIIHHGGFFHHIIJJKKqqppoonnAA@@??>> !!""##PPQQRRSSiihhggff99887766 (())**++XXYYZZ[[aa``__^^1100//..00112233``aabbccYYXXWWVV))((''&& - - 8899::;;hhiijjkkGGFFEEDD - -11223344kkqqrrssDDCCBBAA $$%%&&''TTUUVVWWeeddccbb55443322,,--..//\\]]^^__]]\\[[ZZ--,,++**44556677ddeeffggUUTTSSRR%%$$##"" <<==>>??llmmnnooMMLLKKJJDDEEFFGGttttssrrEEDDCCBB%%&&''((__``aabbKKJJIIHH())**++,]^^__``aYYXXWWVV))((''&& - - 8899::;;hhiijjkkddccbbaa44332211 ==>>??@@mmnnooppBBAA@@?? - - CCDDEEFFjiihhggf54433221 - - 8899::;;hhiijjkkQQPPOONN!! @@AABBCCppqqrrssIIHHGGFFHHIIJJKKqqppoonnAA@@??>> !!""##PPQQRRSSiihhggff99887766 (())**++XXYYZZ[[aa``__^^1100//..>>??@@AAqqkkjjii221100// - - ??@@AABBttttssrrEEDDCCBBLLMMNNOOmmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWeeddccbb55443322,,--..//\\]]^^__]]\\[[ZZ--,,++**44556677ddeeffggUUTTSSRR%%$$##"" <<==>>??llmmnnooCCBBAA@@ 556677==ttttssrr@@??>>== - - (())**++XXYYZZ[[aa``__^^1100//..00112233``aabbccYYXXWWVV))((''&& - - 8899::;;hhiijjkkQQPPOONN!! @@AABBCCppqqrrssIIHHGGFFHHIIJJKKqqppoonnAA@@??>>))**++,,ccddeeffGGFFEEDD - -,--..//0abbccddeUUTTSSRR%%$$##"" <<==>>??llmmnnoo``__^^]]00//..--AABBCCDDqqrrsstt>>==7766 GGHHIIJJfeeddccb100//..- <<==>>??llmmnnooMMLLKKJJDDEEFFGGttttssrrEEDDCCBBLLMMNNOOmmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWeeddccbb55443322,,--..//\\]]^^__]]\\[[ZZ--,,++** - - BBCCDDEEhhggffee..--,,++CCDDEEFFqqppoonnAA@@??>> !!""##PPQQRRSSiihhggff99887766 (())**++XXYYZZ[[aa``__^^1100//..00112233``aabbccYYXXWWVV))((''&& - - 8899::;;hhiijjkkQQPPOONN!! @@AABBCCppqqrrss??>>==77>>??@@AAqqponmlk<;:98776,,--..//\\]]^^__]]\\[[ZZ--,,++**44556677ddeeffggUUTTSSRR%%$$##"" <<==>>??llmmnnooMMLLKKJJDDEEFFGGttttssrrEEDDCCBBLLMMNNOOmmllkkjj==<<;;:: - ---..//00gghhiijjCCBBAA@@ 01122334effgghhiQQPPOONN!! @@AABBCCppqqrrss\\[[ZZYY,,++**))EEFFGGHHttssrrqq55443322KKLLMMNNbaa``__^-,,++**)@@AABBCCppqqrrssIIHHGGFFHHIIJJKKqqppoonnAA@@??>> !!""##PPQQRRSSiihhggff99887766 (())**++XXYYZZ[[aa``__^^1100//..00112233``aabbccYYXXWWVV))((''&& FFGGHHIIddccbbaa**))((''GGHHIIJJmmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWeeddccbb55443322,,--..//\\]]^^__]]\\[[ZZ--,,++**44556677ddeeffggUUTTSSRR%%$$##"" <<==>>??llmmnnooMMLLKKJJDDEEFFGGttttssrr66554433 - - BBCCDDEEkjjiihhg6554433200112233``aabbccYYXXWWVV))((''&& - - 8899::;;hhiijjkkQQPPOONN!! @@AABBCCppqqrrssIIHHGGFFHHIIJJKKqqppoonnAA@@??>> !!""##PPQQRRSSiihhggff99887766 11223344kkqqrrss??>>==7745566778ijjkklmnMMLLKKJJDDEEFFGGttttssrrXXWWVVUU((''&&%%IIJJKKLLkkjjiihh1100//..OOPPQQWW^]]\\[[Z)((''&&%DDEEFFGGttttssrrEEDDCCBBLLMMNNOOmmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWeeddccbb55443322,,--..//\\]]^^__]]\\[[ZZ--,,++**44556677ddeeffggUUTTSSRR%%$$##""JJKKLLMM``__^^]]&&%%$$##KKLLMMNNiihhggff99887766 (())**++XXYYZZ[[aa``__^^1100//..00112233``aabbccYYXXWWVV))((''&& - - 8899::;;hhiijjkkQQPPOONN!! @@AABBCCppqqrrssIIHHGGFFHHIIJJKKqqkkjjii221100// FFGGHHIIgffeeddc21100//.44556677ddeeffggUUTTSSRR%%$$##"" <<==>>??llmmnnooMMLLKKJJDDEEFFGGttttssrrEEDDCCBBLLMMNNOOmmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWeeddccbb55443322556677==ttttssrr66554433 9:;<==>>opqqrrssIIHHGGFFHHIIJJKKqqppoonnTTSSRRQQ$$##""!! MMNNOOPPggffeedd--,,++**XXYYZZ[[ZYYXXWWV%$$##"! HHIIJJKKqqppoonnAA@@??>> !!""##PPQQRRSSiihhggff99887766 (())**++XXYYZZ[[aa``__^^1100//..00112233``aabbccYYXXWWVV))((''&& - - 8899::;;hhiijjkkQQPPOONN!! NNOOPPQQ\\[[ZZYYOOPPQQRSeeddccbb55443322,,--..//\\]]^^__]]\\[[ZZ--,,++**44556677ddeeffggUUTTSSRR%%$$##"" <<==>>??llmmnnooMMLLKKJJDDEEFFGGttttssrrEEDDCCBBLLMMNNOOhhggffee..--,,++JJKKLLMMcbbaa``_.--,,++* - - 8899::;;hhiijjkkQQPPOONN!! @@AABBCCppqqrrssIIHHGGFFHHIIJJKKqqppoonnAA@@??>> !!""##PPQQRRSSiihhggff99887766 (())**++XXYYZZ[[aa``__^^1100//..>>??@@AAqqkkjjii221100// - - ??@@AABBttttssrrEEDDCCBBLLMMNNOOmmllkkjj]]\\[[ZZPPOONNMM !!""##$$QQRRSSTTccbbaa``))((''&&##$$%%\\]]^^__UTSRQQPPLLMMNNOOmmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWeeddccbb55443322,,--..//\\]]^^__]]\\[[ZZ--,,++**44556677ddeeffggUUTTSSRR%%$$##"" <<==>>??llmmnnooMMLLKKJJWWXXYYZZXXWWQQPP !"##$TUVWWXXYaa``__^^1100//..00112233``aabbccYYXXWWVV))((''&& - - 8899::;;hhiijjkkQQPPOONN!! @@AABBCCppqqrrssIIHHGGFFHHIIJJKKqqppoonnAA@@??>> !!""##PPQQRRSSddccbbaa**))((''NNOOPPQQ_^^]]\\[*))((''& <<==>>??llmmnnooMMLLKKJJDDEEFFGGttttssrrEEDDCCBBLLMMNNOOmmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWeeddccbb55443322,,--..//\\]]^^__]]\\[[ZZ--,,++** - - BBCCDDEEhhggffee..--,,++CCDDEEFFqqppoonnAA@@??>> !!""##PPQQRRSSiihhggffYYXXWWVVLLKKJJII%%&&''((UUVVWWXX__^^]]\\%%$$##&&''(())``aabbccOONNMMLL !!""##PPQQRRSSiihhggff99887766 (())**++XXYYZZ[[aa``__^^1100//..00112233``aabbccYYXXWWVV))((''&& - - 8899::;;hhiijjkkQQPPOONN!! @@AABBCCppqqrrssIIHHGGFF##$$[[\\]]^^OONNMMLL$%%&&''(YZZ[[\\]]]\\[[ZZ--,,++**44556677ddeeffggUUTTSSRR%%$$##"" <<==>>??llmmnnooMMLLKKJJDDEEFFGGttttssrrEEDDCCBBLLMMNNOOmmllkkjj==<<;;:: - -$$%%&&''TTUUVVWW``__^^]]&&%%$$##WWXXYYZZ[ZZYYXXW&%%$$##"@@AABBCCppqqrrssIIHHGGFFHHIIJJKKqqppoonnAA@@??>> !!""##PPQQRRSSiihhggff99887766 (())**++XXYYZZ[[aa``__^^1100//..00112233``aabbccYYXXWWVV))((''&& FFGGHHIIddccbbaa**))((''GGHHIIJJmmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWeeddccbbUUTTSSRRHHGGFFEE))**++,,YYZZ[[\\[[ZZYYXX**++,,--ddeeffggKKJJIIHH$$%%&&''TTUUVVWWeeddccbb55443322,,--..//\\]]^^__]]\\[[ZZ--,,++**44556677ddeeffggUUTTSSRR%%$$##"" <<==>>??llmmnnooMMLLKKJJDDEEFFGGttttssrrEEDDCCBB%%&&''((__``aabbKKJJIIHH())**++,]^^__``aYYXXWWVV))((''&& - - 8899::;;hhiijjkkQQPPOONN!! @@AABBCCppqqrrssIIHHGGFFHHIIJJKKqqppoonnAA@@??>> !!""##PPQQRRSSiihhggff99887766 (())**++XXYYZZ[[\\[[ZZYY##$$[[\\]]^^WVUTSRQQ! DDEEFFGGttttssrrEEDDCCBBLLMMNNOOmmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWeeddccbb55443322,,--..//\\]]^^__]]\\[[ZZ--,,++**44556677ddeeffggUUTTSSRR%%$$##""JJKKLLMM``__^^]]&&%%$$##KKLLMMNNiihhggff99887766 (())**++XXYYZZ[[aa``__^^QQPPOONNMMLLKKJJDDEEFFGGttttssrrEEDDCCBBLLMMNNOOmmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWeeddccbb55443322,,--..//\\]]^^__PPOONNMM00112233iihhggff99887766 - - 8899::;;IIHHGGFFHHIIJJKKqqppoonnAA@@??>> !!""##PPQQRRSSiihhggff99887766 (())**++XXYYZZ[[aa``__^^1100//..00112233``aabbccLLKKJJII44556677eeddccbb55443322 <<==>>??EEDDCCBBLLMMNNOOmmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWeeddccbb55443322,,--..//\\]]^^__]]\\[[ZZ--,,++**44556677ddeeffggHHGGFFEE ==>>??@@aa``__^^1100//..@@AABBCCAA@@??>> !!""##PPQQRRSSiihhggff99887766 (())**++XXYYZZ[[aa``__^^1100//..00112233``aabbccYYXXWWVV))((''&& - - 8899::;;hhiijjkkDDCCBBAA - - - -AABBCCDD]]\\[[ZZ--,,++**DDEEFFGG==<<;;:: - -$$%%&&''TTUUVVWWeeddccbb55443322,,--..//\\]]^^__]]\\[[ZZ--,,++**44556677ddeeffggUUTTSSRR%%$$##"" <<==>>??llmmnnoo@@??>>== EEFFGGHHYYXXWWVV))((''&&HHIIJJKK99887766 (())**++XXYYZZ[[aa``__^^1100//..00112233``aabbccYYXXWWVV))((''&& - - 8899::;;hhiijjkkQQPPOONN!! @@AABBCCppqqrrss77665544IIJJKKLLUUTTSSRR%%$$##""LLMMNNOO55443322,,--..//\\]]^^__]]\\[[ZZ--,,++**44556677ddeeffggUUTTSSRR%%$$##"" <<==>>??llmmnnooMMLLKKJJDDEEFFGGttllkkjj33221100MMNNOOPPQQPPOONN!!  !!""##PPQQRRSS1100//..00112233``aabbccYYXXWWVV))((''&& - - 8899::;;hhiijjkkQQPPOONN!! @@AABBCCppqqrrssIIHHGGFFHHIIJJKKiihhggff//..--,,QQWWXXYYMMLLKKJJ$$%%&&''TTUUVVWW--,,++**44556677ddeeffggUUTTSSRR%%$$##"" <<==>>??llmmnnooMMLLKKJJDDEEFFGGttttssrrEEDDCCBBLLMMNNOOeeddccbb++**))((##ZZ[[\\]]IIHHGGFF(())**++XXYYZZ[[))((''&& - - 8899::;;hhiijjkkQQPPOONN!! @@AABBCCppqqrrssIIHHGGFFHHIIJJKKqqppoonnAA@@??>> !!""##PPQQRRSSaa``__^^''&&%%$$$$%%&&''^^__``aaEEDDCCBB,,--..//\\]]^^__%%$$##"" <<==>>??llmmnnooMMLLKKJJDDEEFFGGttttssrrEEDDCCBBLLMMNNOOmmllkkjj==<<;;:: - -$$%%&&''TTUUVVWW]]\\[[ZZ##(())**++bbccddeeAA@@??>>00112233``aabbcc!! @@AABBCCppqqrrssIIHHGGFFHHIIJJKKqqppoonnAA@@??>> !!""##PPQQRRSSiihhggff99887766 (())**++XXYYZZ[[YYXXWWQQ,,--..//ffgghhii==<<;;:: - -44556677ddeeffgghhiiZHAbZHAbZHAb|ZdQb|ZdQbp`fnXv`˂rXQZp˂dQZ|rtAJlfH~fH~XQr˂XQr˂rbtbtlbtlHfpvHfpvZp˂Zp˂Zp˂|dr|drfH~fH~fH~XQr˂XQr˂btlbtlHfpvHfpvHfpvbHAZ`ےbdQZ|tbdQZf`vXvpfHXQr˂XQr˂btlbtlbtlHfpvHfpvZp˂Zp˂Zdr|dr|drfH~fH~XQr˂XQr˂XQr˂btlbtlHfpvHfpvfpvZp˂Zp˂Jl|tbdQZvpfXnvZHAb`JXQrbtlbtlHfpvHfpvHfpvZp˂Zp˂|dr|dr|dtAfH~fH~XQr˂XQr˂rbtbtlbtlHfpvHfpvZp˂Zp˂Zp˂|dr|drf`vX~f`ZHAbے`JlJtAd|ZQHfpvHfpvfpvZp˂Zp˂ے`JXQے`JXQے`JXQtlJtlJ~Hfpf~HJ`ےbHAZdrtAJtbdQf`vXf`vXpZHAbpZHAblJtAdJtArdJtArdnXvnXvrXQJ`rXQJ`rXQJ`tAJltAJlf`vXf`vXfZHAbpZHAbpZHAbJtArdJtArdnXvnXvnXvp˂rHAZp˂drtAJ|ltnvp~f`pZHAbpZHAbJtArdJtArdJtArdnXvnXvrXQJ`rXQJ`tAJltAJltAJlf`vXf`vXpZHAbpZHAbpZHAJtArdJtArdnXvnXvnrXQJrXQJ`rXQJ`drtAJ|drH~fpfH~ے`JXQ˂pZJtArdJtArdnXvnXvnXvrXQJ`rXQJ`tAJltAJlJltf`vXf`vXpZHAbpZHAblJtAdJtArdJtArdnXvnXvrXQJ`rXQJ`rXQJ`tAJltAJlnvppfH~ے`pZXQr˂rZdQblJtnXvnXvnrXQJrXQJ`rXQJ`r˂pr˂pr˂ptArdtArdvnXfpvbHAXQJdrtAltbQZ|dnvpnvpے`Jے`J|ZdQ|ZdQ|ZdQ`f~`f~ےbHAےbHAےbHAtbdQZtbdQZnvpnvpے`Jے`Jے`J|ZdQ|ZdQ`f~`f~`fHXQJ`ےbHAltdbnvfH~fvXnvے`Jے`J|ZdQ|ZdQf~`f~`f~ےbHAےbHAtbdQZtbdQZtbdQZnvpnvpے`Jے`Jے`JXQ|ZdQ|ZdQ`f~`f~`ےHAےbHAےbHAltbtAJl`vXnf`vr˂pHAbے|ZdQ|ZdQ`f~`f~`fHےbHAےbHAtbdQZtbdQZbnvnvpnvpے`Jے`J|ZdQ|ZdQ|ZdQ`f~`f~ےbHAےbHAےbHAtbdQZtbdQZfHXnf`vHAbےpZHAbbtlArd|`f~`f~`ےHAےbHAےbHAZHAbZHAb|ZdQb|ZdQb|ZdQbv`fnXv``ےbJbdQZdrtnvffH~fH~XQr˂XQr˂btlbtlbtlHfpvHfpvZp˂Zp˂Zdr|dr|drfH~fH~XQr˂XQr˂XQr˂btlbtlHfpvHfpvfpvbHAXQZdrrtAJlpff`vnvfH~XQr˂XQr˂btlbtlHfpvHfpvHfpvZp˂Zp˂|dr|dr|dtAfH~fH~XQr˂XQr˂rbtbtlbtlHfpvHfpvZp˂Zp˂Zp˂dQZ|tbdQZvpfXH~ZHAb`JXQrbtlbtlHfpvHfpvfpvZp˂Zp˂|dr|drpfHfH~fH~XQr˂XQr˂btlbtlbtlHfpvHfpvZp˂Zp˂Zdr|dr|drvpfXnv`JXQrے`JJtArdZdQbtHfpvHfpvZp˂Zp˂Zp˂ے`JXQے`JXQtlJtlJtlJ~Hfpp˂rHAZp˂Z|dAJltf`vXf`vXf`vXpZHAbpZHAbJtArdJtArdJtArdnXvnXvrXQJ`rXQJ`tAJltAJltAJlf`vXf`vXpZHAbpZHAbpZHAJtArdJtArdnXvnXvnrXQJJ`ےtAdQZ|tbdQvXnpfH~fZHAbpZHAbpZHAbJtArdJtArdnXvnXvnXvrXQJ`rXQJ`tAJltAJlJltf`vXf`vXpZHAbpZHAblJtAdJtArdJtArdnXvnXvrXQJ`rXQJ`rXQJ`drtAJ|ltH~fZHAbے`JXQ˂pZAJtArdJtArdnXvnXvnrXQJrXQJ`rXQJ`tAJltAJlf`vXf`vXf`vXpZHAbpZHAbJtArdJtArdJtArdnXvnXvrXQJ`rXQJ`tAJltAJltAJlH~fpfH~˂pZXQr˂|ZdQlJtnXvnXvrXQJ`rXQJ`rXQJ`r˂pr˂ptArdtArdtArdv~XQJ`ےrXQJrtAJlbdQZ|nvpnvpnvpے`Jے`J|ZdQ|ZdQf~`f~`f~ےbHAےbHAtbdQZtbdQZtbdQZnvpnvpے`Jے`Jے`JXQ|ZdQ|ZdQ`f~`f~`p˂bHAZpdrtAZ|dvpfHf`vے`Jے`Jے`J|ZdQ|ZdQ`f~`f~`fHےbHAےbHAtbdQZtbdQZbnvnvpnvpے`Jے`J|ZdQ|ZdQ|ZdQ`f~`f~ےbHAےbHAےbHAltdbnvvpfHJQrrZHA㙒`JXQ|ZdQ|ZdQ`f~`f~`ےHAےbHAےbHAtbdQZtbdQZnvpnvpnvpے`Jے`J|ZdQ|ZdQf~`f~`f~ےbHAےbHAtbdQZtbdQZtbdQZ`vXnf`vHAbےp`JXQbtlArd|`f~`f~ےbHAےbHAےbHAZHAbZHAb|ZdQb|ZdQbf~HHfpvbHAZ`ےbtbdQdrtfH~fH~fH~XQr˂XQr˂btlbtlHfpvHfpvHfpvZp˂Zp˂|dr|dr|dtAfH~fH~XQr˂XQr˂rbtbtlbtlHfpvHfpvrXQJ`˂rXQJltrtAJl~f`XnvXQr˂XQr˂XQr˂btlbtlHfpvHfpvfpvZp˂Zp˂|dr|drpfHfH~fH~XQr˂XQr˂btlbtlbtlHfpvHfpvZp˂Zp˂ZdrrtAJlp`vX~f`˂pZHbے`rbtbtlbtlHfpvHfpvZp˂Zp˂Zp˂|dr|drfH~fH~fH~XQr˂XQr˂btlbtlHfpvHfpvHfpvZp˂Zp˂|dr|dr|dtAvpfXH~`JXQHArbtJtArdZdQbHfpvHfpvZp˂Zp˂Zdrے`JXQے`JXQtlJtlJXv`fnXvp˂rHAZp`Z|dAJltf`vXf`vXfZHAbpZHAbpZHAbJtArdJtArdnXvnXvnXvrXQJ`rXQJ`tAJltAJlJltf`vXf`vXpZHAbpZHAblJtAdJtArdJtArdnXvnXvےbHAJ`ےbdQZ|tbdQvXnpfH~pZHAbpZHAbpZHAJtArdJtArdnXvnXvnrXQJrXQJ`rXQJ`tAJltAJlf`vXf`vXf`vXpZHAbpZHAbJtArdJtArdJtArdnXvnXvrXQJ`rXQJ`tAdQZ|tbdQnvpvXnAbے`JXQrlJtAdJtArdJtArdnXvnXvrXQJ`rXQJ`rXQJ`tAJltAJlf`vXf`vXfZHAbpZHAbpZHAbJtArdJtArdnXvnXvnXvrXQJ`rXQJ`tAJltAJlJltH~fZHAbbے`lJA|ZQbt璑JtArdnXvnXvrXQJ`rXQJ`tAJlr˂pr˂ptArdtArd~Hf`f~XQJ`ےےbHArtAJlbdQZnvpnvpے`Jے`Jے`J|ZdQ|ZdQ`f~`f~`fHےbHAےbHAtbdQZtbdQZbnvnvpnvpے`Jے`J|ZdQ|ZdQ|ZdQ`f~`f~Zp˂bHAZpdrtAtAJlvpfHf`vے`Jے`Jے`JXQ|ZdQ|ZdQ`f~`f~`ےHAےbHAےbHAtbdQZtbdQZnvpnvpnvpے`Jے`J|ZdQ|ZdQf~`f~`f~ےbHAےbHAdrtAZ|dfH~vpfHJXQrpZHA|ZdQ|ZdQ|ZdQ`f~`f~ےbHAےbHAےbHAtbdQZtbdQZnvpnvpے`Jے`Jے`J|ZdQ|ZdQ`f~`f~`fHےbHAےbHAtbdQZtbdQZbnvvpfH˂pJXQrZdQbtlJtArf~`f~`f~ےbHAےbHAtbdQZ|drZHAbZHAb|ZdQb|ZdQbpvnHfpvrXQZp˂bQZ|rtAJlfH~fH~XQr˂XQr˂XQr˂btlbtlHfpvHfpvfpvZp˂Zp˂|dr|drpfHfH~fH~XQr˂XQr˂btlbtlbtlHfpvHfpvrXQJ``ےbJl|tbdQZ~fvXnvpfHXQr˂XQr˂rbtbtlbtlHfpvHfpvZp˂Zp˂Zp˂|dr|drfH~fH~fH~XQr˂XQr˂btlbtlHfpvHfpvHfpvZp˂Zp˂JltrtAJlf`vX~f`˂pZHbے`btlbtlbtlHfpvHfpvZp˂Zp˂Zdr|dr|drfH~fH~XQr˂XQr˂XQr˂btlbtlHfpvHfpvfpvZp˂Zp˂|dr|drp`vX~f`ZHAb˂pZHAlJtAd|ZHfpvHfpvHfpvZp˂Zp˂|drtAJlے`JXQے`JXQtlJtlJXv`fnXHJ`ےrXQJ`drtAJtbdQf`vXf`vXpZHAbpZHAbpZHAJtArdJtArdnXvnXvnrXQJrXQJ`rXQJ`tAJltAJlf`vXf`vXf`vXpZHAbpZHAbJtArdJtArdJtArdnXvnXvےrHAZp˂drtAJ|drnvp~f`pZHAbpZHAblJtAdJtArdJtArdnXvnXvrXQJ`rXQJ`rXQJ`tAJltAJlf`vXf`vXfZHAbpZHAbpZHAbJtArdJtArdnXvnXvnXvrXQJ`rXQJ`bdQZ|tbdQnvppfH~Abے`JXQrJtArdJtArdJtArdnXvnXvrXQJ`rXQJ`tAJltAJltAJlf`vXf`vXpZHAbpZHAbpZHAJtArdJtArdnXvnXvnrXQJrXQJ`rXQJ`tAJltAJlnvpvXnے`JXQbے`rd|dQbt璀nXvnXvnXvrXQJ`rXQJ`tAJltbdQZr˂pr˂ptArdtArd~HffpvbHAZpےbHAltbZ|dnvpnvpے`Jے`Jے`JXQ|ZdQ|ZdQ`f~`f~`ےHAےbHAےbHAtbdQZtbdQZnvpnvpnvpے`Jے`J|ZdQ|ZdQf~`f~`f~XQJ`ےrXQJltbtAJlfH~ˍvXnے`Jے`J|ZdQ|ZdQ|ZdQ`f~`f~ےbHAےbHAےbHAtbdQZtbdQZnvpnvpے`Jے`Jے`J|ZdQ|ZdQ`f~`f~`fHےbHAےbHAdrtAtAJlfHXnf`vJQrpZAbے|ZdQ|ZdQf~`f~`f~ےbHAےbHAtbdQZtbdQZtbdQZnvpnvpے`Jے`Jے`JXQ|ZdQ|ZdQ`f~`f~`ےHAےbHAےbHAtbdQZtbdQZfH~vpfHr˂pJXQrZdQbtlJtAr`f~`f~`fHےbHAےbHAtbdQZ|drtAJltAJlf`vXf`vXfZHAbpZHAbpZHAbJtArdJtArdnXvnXvnXvrXQJ`rXQJ`tAJltAJlJltf`vXf`vXZHAb˂pZHAb㉀ۑppfH~pfH~p|dZ|dtbdQZtbdQZnvpnvpے`Jے`Jے`J|ZdQ|ZdQ`f~`f~`fHےbHAےbHAtbdQZtbdQZbnvnvpnvpے`JXQbے`JAHr󙐅f۝`vf۝`vrQtJlrQtJl|dr|drfH~fH~XQr˂XQr˂XQr˂btlbtlHfpvHfpvfpvZp˂Zp˂|dr|drpfHfH~fH~r˂pJXQrۑpJXnv˅Xnv˒tbAdtbAdtAJltAJlf`vXf`vXpZHAbpZHAbpZHAJtArdJtArdnXvnXvnrXQJrXQJ`rXQJ`tAJltAJlf`vXf`vXf`vXZHAb˂p`ZAHr󙐂ˍpfH~pfH~Z|dZ|dtbdQZtbdQZnvpnvpے`Jے`Jے`JXQ|ZdQ|ZdQ`f~`f~`ےHAےbHAےbHAtbdQZtbdQZnvpnvpnvpے`JXQQXb㉀ہ`ZQXbㅐf۝`vf۝`vrQtJlrQtJl|dr|dtAfH~fH~XQr˂XQr˂rbtbtlbtlHfpvHfpvZp˂Zp˂Zp˂|dr|drfH~fH~fH~HAbےpJAHr󉀒ۑpJXnv˅Xnv˒tbAdtbAdtAJlJltf`vXf`vXpZHAbpZHAblJtAdJtArdJtArdnXvnXvrXQJ`rXQJ`rXQJ`tAJltAJlf`vXf`vXfr˂`JXQrˁ`ZAHr󙐂ˍpfH~pfH~Z|dZ|dtbdQZbnvnvpnvpے`Jے`J|ZdQ|ZdQ|ZdQ`f~`f~ےbHAےbHAےbHAtbdQZtbdQZnvpnvppZHAb˂pZQXb㉀ہ`pJAHf۝`vf۝`vrQtJlrQtJl|drpfHfH~fH~XQr˂XQr˂btlbtlbtlHfpvHfpvZp˂Zp˂Zdr|dr|drfH~fH~ے`JHAbےpJAHQXr󙐂ˁ`Xnv˅Xnv˒tbAdtbAdtAJlf`vXf`vXf`vXpZHAbpZHAbJtArdJtArdJtArdnXvnXvrXQJ`rXQJ`tAJltAJltAJlf`vXf`vXXQr˂`JXQrb㉀ۑpZQXb㉀pfH~pfH~Z|dZ|dtbdQZnvpnvpnvpے`Jے`J|ZdQ|ZdQf~`f~`f~ےbHAےbHAtbdQZtbdQZtbdQZnvpnvppZHAbے`JAHr󙐒ۑpJAHf۝`vf۝`vrQtJlrQtJl|drfH~fH~fH~XQr˂XQr˂btlbtlHfpvHfpvHfpvZp˂Zp˂|dr|dr|dtAfH~fH~ے`pJXQrˁ`ZQXr󙐂ˁ`Xnv˅Xnv˒tbAdtbAdZ|mnopqrsttsrqpon \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv25_2.dat b/mpdf/qrcode/data/qrv25_2.dat deleted file mode 100644 index 2de8eb3..0000000 Binary files a/mpdf/qrcode/data/qrv25_2.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv25_3.dat b/mpdf/qrcode/data/qrv25_3.dat deleted file mode 100644 index d8e70cb..0000000 Binary files a/mpdf/qrcode/data/qrv25_3.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv26_0.dat b/mpdf/qrcode/data/qrv26_0.dat deleted file mode 100644 index 7b0b0e6..0000000 --- a/mpdf/qrcode/data/qrv26_0.dat +++ /dev/null @@ -1,241 +0,0 @@ -xwxwxwxwxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopooonmnmnmnmlklklklklklklklkjijijijihghghghgfefefefefefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSSSSSSTTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCBABABABA@?@?@?@?@?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:987878787656565656565656543434343212121210/0/0/0/xwxwxwxwxwxwxwxwvuvuvuvutstststsrqrqrqrqooopopopnmnmnmnmlklklklklklklklkjijijijihghghghgfefefefefedcdcdcdcdcdcdcbabababa`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUSTSTSTSTTSTSTSSSRQRQRQRQPOPOPOPONMNMNMNMNMLKLKLKLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCBABABABA@?@?@?@?@?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:987878787656565656543434343434343212121210/0/0/0/xwxwxwxwxwxwxwxwvuvuvuvutstststsrqrqrqrqopopopopnmnmnmnmlklklklklklklklkjijijijihghghghgfefefefedcdcdcdcdcdcdcdcbabababa`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUSTSTSTSTSSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCBABABABA@?@?@?@?@?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:987878787656565654343434343434343212121210/0/0/0/xwxwxwxwxwxwxwxwvuvuvuvutstststsrqrqrqrqopopopopnmnmnmnmlklklklklkjijijijijijijihghghghgfefefefedcdcdcdcdcdcdcdcbabababa`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUSTSTSTSTTSRQRQRQRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCBABABABA@?@?@?@?@?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:987878787656565654343434343434343212121210/0/0/0/xwxwxwxwxwxwxwxwvuvuvuvutstststsrqrqrqrqopopopopnmnmnmnmlklklklkjijijijijijijijihghghghgfefefefedcdcdcdcdcdcdcdcbabababa`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUSTSTSTSTRQRQRQRQRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCBABABABA@?@?@?@?@?>=>=>=>=>=>=>=<;<;<;<;:9:9:9:977777878656565654343434343434343212121210/0/0/0/xwxwxwxwvuvuvuvuvuvuvuvutstststsrqrqrqrqopopopopnmnmnmnmlklklklkjijijijijijijijihghghghgfefefefedcdcdcdcdcdcdcdcbabababa`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUSTSTSTSTRQRQRQRQRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;:9:9:9:978787878656565654343434343434343212121210/0/0/0/xwxwxwxwvuvuvuvuvuvuvuvutstststsrqrqrqrqopopopopnmnmnmnmlklklklkjijijijijijijijihghghghgfefefefedcdcdcdcdcdcdcdcbabababa`_`_`_`_^]^]^]^]^]\[\[\[\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUSTSTSSSSRQRQRQRQRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEFEDCDCDCDCDCDCDCBABABABA@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;:9:9:9:978787878656565654343434343434343212121210/0/0/0/xwxwxwxwvuvuvuvuvuvuvuvutstststsrqrqrqrqooooooponmnmnmnmlklklklkjijijijijijijijihghghghgfefefefedcdcdcdcdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUSSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCDCDCDCDCBABABABA@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;:9:9:9:978787878656565654343434343434343212121210/0/0/0/xwxwxwxwvuvuvuvuvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijijijijijihghghghgfefefefedcdcdcdcdcbababababababa`_`_`_`_^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKLKJIJIJIJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCDCDCDCDCBABABABA@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;:9:9:9:978787878656565654343434343212121212121210/0/0/0/xwxwxwxwvuvuvuvuvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijijijijijihghghghgfefefefedcdcdcdcbabababababababa`_`_`_`_^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCDCDCDCDCBABABABA@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;:9:9:9:978787878656565654343434321212121212121210/0/0/0/xwxwxwxwvuvuvuvutstststsrqrqrqrqpopopopopopopoponmnmnmnmlklklklkjijijijijihghghghghghghgfefefefedcdcdcdcbabababababababa`_`_`_`_^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQRQPOPOPOPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCDCDCDCDCBABABABA@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;:9:9:9:978777777656565654343434321212121212121210/0/0/0/xwxwxwxwvuvuvuvutstststsrqrqrqrqooooopoppopopoponmnmnmnmlklklklkjijijijihghghghghghghghgfefefefedcdcdcdcbabababababababa`_`_`_`_^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCDCDCDCDCBABABABA@?@?@?@?>=>=>=>=>=<;<;<;<;<;<;<;:9:9:9:987878787656565654343434321212121212121210/0/0/0/xwxwxwxwvuvuvuvutstststsrqrqrqrqopopopoppopopoponmnmnmnmlklklklkjijijijihghghghghghghghgfefefefedcdcdcdcbabababababababa`_`_`_`_^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCDCDCDCDCBABABABA@?@?@?@?>=>=>=>=<;<;<;<;<;:9:9:9:9:9:9:987878787656565654343434321212121212121210/0/0/0/xwxwxwxwvuvuvuvutstststsrqrqrqrqopopopopmmmmmmnmnmnmnmnmlklklklkjijijijihghghghghghghghgfefefefedcdcdcdcbabababababababa`_`_`_`_^]^]^]^]\[\[\[\[\[ZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUSSSSSTSTRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCDCBABABABABABABA@?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:9:987878787878787656565654343434321212121212121210/0/0/0/xwxwxwxwvuvuvuvutstststsrqrqrqrqopopopopnmnmnmnmnmnmnmnmlklklklkjijijijihghghghghghghghgfefefefedcdcdcdcbabababababababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUSTSTSTSTRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABABABABABA@?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:98777777887878787656565654343434321212121212121210/0/0/0/xwxwxwxwvuvuvuvutstststsrqrqrqrqopopopopnmnmnmnmnmnmnmnmlklklklkjijijijihghghghghghghghgfefefefedcdcdcdcbababababa`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUSTSTSTSTRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIJIHGHGHGHGHGHGHGFEFEFEFEDCDCDCDCBABABABABABABABA@?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:97878787887878777656565654343434321212121210/0/0/0/0/0/0/xwxwxwxwvuvuvuvutstststsrqrqrqrqopopopopnmnmnmnmnmnmnmnmlklklklkjijijijihghghghghghghghgfefefefedcdcdcdcbabababa`_`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUSTSTSTSTRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEDCDCDCDCBABABABABABABABA@?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:978787878778787876565656543434343212121210/0/0/0/0/0/0/0/xwxwxwxwvuvuvuvutstststsrqrqrqrqopoooooonmnmnmnmnmnmnmnmlklklklkjijijijihghghghghgfefefefefefefedcdcdcdcbabababa`_`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUSTSTSTSTRQRQRQRQPOPOPOPOPONMNMNMNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEDCDCDCDCBABABABABABABABA@?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:978787878876565656565656543434343212121210/0/0/0/0/0/0/0/xwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmnmnmnmnmlklklklkjijijijihghghghgfefefefefefefefedcdcdcdcbabababa`_`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUSTSTSTSTRQRQRQRQPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEDCDCDCDCBABABABABABABABA@?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:978787878656565656565656543434343212121210/0/0/0/0/0/0/0/xwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmnmlklklklklklklkjijijijihghghghgfefefefefefefefedcdcdcdcbabababa`_`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUSTSSSSSSRQRQRQRQPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEDCDCDCDCBABABABABABABABA@?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:978787878656565656565656543434343212121210/0/0/0/0/0/0/0/.-.-.-.-xwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklklklklklkjijijijihghghghgfefefefefefefefedcdcdcdcbabababa`_`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYZYXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEDCDCDCDCBABABABABA@?@?@?@?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:978787777656565656565656543434343212121210/0/0/0/0/0/0/0/.-.-.-.-xwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklklklklklkjijijijihghghghgfefefefefefefefedcdcdcdcbabababa`_`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWXWVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?@?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:977878787656565656565656543434343212121210/0/0/0/0/0/0/0/.-.-.-.-xwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklklklklklkjijijijihghghghgfefefefefefefefedcdcdcdcbabababa`_`_`_`_`_^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUVUTSTSTSTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGHGFEFEFEFEFEFEFEDCDCDCDCBABABABA@?@?@?@?@?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:987878787656565656565656543434343212121210/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+*)*)*)*)('('('('('&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!           - - - - .-.-.-.-.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!            - - - - .-.-.-.-.-,+,+,+,+,+,+,+*)*)*)*)('('('('&%&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!            - - - - .-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)('('('('&%&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!            - - - - .-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)('('('('&%&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!            - - - - .-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)('('('('&%&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!            - - - - .-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)('('('('&%&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!            - - - - .-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)('('('('&%&%&%&%&%$#$#$#$#$#$#$#"!"!"!"!         - - - - .-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!        - - - - .-.-.-.-,+,+,+,+,+*)*)*)*)*)*)*)('('('('&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!        - - - - .-.-.-.-,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!        - - - - .-.-.-.-,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!        - - - - .-.-.-.-,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!        - - - - .-.-.-.-,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!        - - - - .-.-.-.-,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%$#$#$#$#$#"!"!"!"!"!"!"!        - - - - - - - .-.-.-.-,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!"!"!"!"!        - - - - - - - - .-.-.-.-,+,+,+,+*)*)*)*)*)('('('('('('('&%&%&%&%$#$#$#$#"!"!"!"!"!"!"!"!        - - - - - - - - .-.-.-.-,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%$#$#$#$#"!"!"!"!"!"!"!"!        - - - - - - - - .-.-.-.-,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%$#$#$#$#"!"!"!"!"!"!"!"!        - - - - - - - - .-.-.-.-,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%$#$#$#$#"!"!"!"!"!"!"!"!        - - - - - - - - .-.-.-.-,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%$#$#$#$#"!"!"!"!"!"!"!"!        - - - - - - - - .-.-.-.-,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%$#$#$#$#"!"!"!"!"!           - - - - - .-.-.-.-,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - - xxwwvvuuQQRRSSTT55443322GGHHIIJJ??>>==<;,,--..//iihhggff - -PPQQRRSSEEDDCCBBttuuvvww!! <<==>>??YYXXWWVV``aabbcc55443322(())**++hhggffee uutsrqpo PPQQRRSSEEDDCCBBttuuvvww!! <<==>>??YYXXWWVV``aabbcc55443322(())**++mmllkkjjLLMMNNOO??>>==77556677==LLKKJJIIttuuvvww!! <<==>>??YYXXWWVVttssrrqqUUVVWWXX1100//..KKLLMMNN:987766500112233eeddccbb TTUUVVWWAA@@??>>xxxxwwvv@@AABBCCUUTTSSRR - - ddeeffgg1100//..,,--..//ddccbbaaonnmmllk - - TTUUVVWWAA@@??>>xxxxwwvv@@AABBCCUUTTSSRR - - ddeeffgg1100//..,,--..//iihhggff - -PPQQRRSS66554433>>??@@AAHHGGFFEExxxxwwvv@@AABBCCUUTTSSRRppoonnmmYYZZ[[\\--,,++**OOPPQQRR5443322144556677aa``__^^XXYYZZ[[==<<;;:: !!""##uuttssrrDDEEFFGGQQPPOONN hhiijjkk--,,++**00112233``__^^]]kjjiihhgXXYYZZ[[==<<;;:: !!""##uuttssrrDDEEFFGGQQPPOONN hhiijjkk--,,++**00112233eeddccbb TTUUVVWW221100//BBCCDDEEDDCCBBAA !!""##uuttssrrDDEEFFGGQQPPOONNllkkjjii ]]^^__``))((''&&SSYYZZ[[100//..-8899::;;]]\\[[ZZ\\]]^^__99887766$$%%&&''qqppoonnHHIIJJKKMMLLKKJJllmmnnoo))((''&&44556677\\[[ZZYYgffeeddc\\]]^^__99887766$$%%&&''qqppoonnHHIIJJKKMMLLKKJJllmmnnoo))((''&&44556677aa``__^^XXYYZZ[[..--,,++FFGGHHII@@??>>==$$%%&&''qqppoonnHHIIJJKKMMLLKKJJhhggffee - - aabbccdd%%$$##""\\]]^^__-,,++**)<<==>>??YYXXWWVV``aabbcc55443322(())**++mmllkkjjLLMMNNOOIIHHGGFFppqqrrss%%$$##""8899::;;SSRRQQPP!!""##$$cbbaa``_``aabbcc55443322(())**++mmllkkjjLLMMNNOOIIHHGGFFppqqrrss%%$$##""8899::;;]]\\[[ZZ\\]]^^__**))((''JJKKLLMM<;:98776(())**++mmllkkjjLLMMNNOOIIHHGGFFddccbbaa - - eeffgghh!!``aabbcc)((''&&%@@AABBCCUUTTSSRR - - ddeeffgg1100//..,,--..//iihhggff - -PPQQRRSSEEDDCCBBttuuvvww!! <<==>>??OONNMMLL%%&&''((_^^]]\\[ - - ddeeffgg1100//..,,--..//iihhggff - -PPQQRRSSEEDDCCBBttuuvvww!! <<==>>??YYXXWWVV``aabbcc&&%%$$##NNOOPPQQ65544332,,--..//iihhggff - -PPQQRRSSEEDDCCBB``__^^]] iijjkkllddeeffgg%$$##""!DDEEFFGGQQPPOONN hhiijjkk--,,++**00112233eeddccbb TTUUVVWWAA@@??>>xxxxwwvv@@AABBCCKKJJIIHH))**++,,[ZZYYXWV hhiijjkk--,,++**00112233eeddccbb TTUUVVWWAA@@??>>xxxxwwvv@@AABBCCUUTTSSRR - - ddeeffgg""!!RRSSYYZZ21100//.00112233eeddccbb TTUUVVWWAA@@??>>\\[[ZZYYmmnnoopphhiijjkk! HHIIJJKKMMLLKKJJllmmnnoo))((''&&44556677aa``__^^XXYYZZ[[==<<;;:: !!""##uuttssrrDDEEFFGGGGFFEEDD--..//00UTSSRRQQllmmnnoo))((''&&44556677aa``__^^XXYYZZ[[==<<;;:: !!""##uuttssrrDDEEFFGGQQPPOONN hhiijjkk[[\\]]^^.--,,++*44556677aa``__^^XXYYZZ[[==<<;;::XXWWVVUUqqrrsstt llmmnnooLLMMNNOOIIHHGGFFppqqrrss%%$$##""8899::;;]]\\[[ZZ\\]]^^__99887766$$%%&&''qqppoonnHHIIJJKKCCBBAA@@11223344PPOONNMMppqqrrss%%$$##""8899::;;]]\\[[ZZ\\]]^^__99887766$$%%&&''qqppoonnHHIIJJKKMMLLKKJJllmmnnoo__``aabb*))((''&8899::;;]]\\[[ZZ\\]]^^__99887766TTSSRRQQuuvvwwxx - - uuvvwwxxPPQQRRSSEEDDCCBBttuuvvww!! <<==>>??YYXXWWVV``aabbcc55443322(())**++mmllkkjjLLMMNNOO??>>==77556677==LLKKJJIIttuuvvww!! <<==>>??YYXXWWVV``aabbcc55443322(())**++mmllkkjjLLMMNNOOIIHHGGFFppqqrrssccddeeff&%%$$##"<<==>>??YYXXWWVV``aabbcc55443322PPOONNMM xxwwvvuu - - xxwwvvuuTTUUVVWWAA@@??>>xxxxwwvv@@AABBCCUUTTSSRR - - ddeeffgg1100//..,,--..//iihhggff - -PPQQRRSS66554433>>??@@AAHHGGFFEExxxxwwvv@@AABBCCUUTTSSRR - - ddeeffgg1100//..,,--..//iihhggff - -PPQQRRSSEEDDCCBBttuuvvww - -gghhiijj"!! @@AABBCCUUTTSSRR - - ddeeffgg1100//..LLKKJJII!!""##$$oonnmmll tsrqpoon XXYYZZ[[==<<;;:: !!""##uuttssrrDDEEFFGGQQPPOONN hhiijjkk--,,++**00112233eeddccbb TTUUVVWW221100//BBCCDDEEDDCCBBAA !!""##uuttssrrDDEEFFGGQQPPOONN hhiijjkk--,,++**00112233eeddccbb TTUUVVWWAA@@??>>xxxxwwvv kkllmmnnDDEEFFGGQQPPOONN hhiijjkk--,,++**HHGGFFEE%%&&''((kkjjiihhnmmllkkj - - \\]]^^__99887766$$%%&&''qqppoonnHHIIJJKKMMLLKKJJllmmnnoo))((''&&44556677aa``__^^XXYYZZ[[..--,,++FFGGHHII@@??>>==$$%%&&''qqppoonnHHIIJJKKMMLLKKJJllmmnnoo))((''&&44556677aa``__^^XXYYZZ[[==<<;;:: !!""##uuoonnmmoouuvvwwHHIIJJKKMMLLKKJJllmmnnoo))((''&&DDCCBBAA))**++,,ggffeeddjiihhggf``aabbcc55443322(())**++mmllkkjjLLMMNNOOIIHHGGFFppqqrrss%%$$##""8899::;;]]\\[[ZZ\\]]^^__**))((''JJKKLLMM<;:98776(())**++mmllkkjjLLMMNNOOIIHHGGFFppqqrrss%%$$##""8899::;;]]\\[[ZZ\\]]^^__99887766$$%%&&''llkkjjii - - xxxxwwvvLLMMNNOOIIHHGGFFppqqrrss%%$$##""@@??>>==--..//00ccbbaa``!!feeddccb - - ddeeffgg1100//..,,--..//iihhggff - -PPQQRRSSEEDDCCBBttuuvvww!! <<==>>??YYXXWWVV``aabbcc&&%%$$##NNOOPPQQ65544332,,--..//iihhggff - -PPQQRRSSEEDDCCBBttuuvvww!! <<==>>??YYXXWWVV``aabbcc55443322(())**++hhggffee uutsrqpo PPQQRRSSEEDDCCBBttuuvvww!! <<;;::9911223344__^^]]\\""##$$%%baa``__^ hhiijjkk--,,++**00112233eeddccbb TTUUVVWWAA@@??>>xxxxwwvv@@AABBCCUUTTSSRR - - ddeeffgg""!!RRSSYYZZ21100//.00112233eeddccbb TTUUVVWWAA@@??>>xxxxwwvv@@AABBCCUUTTSSRR - - ddeeffgg1100//..,,--..//ddccbbaaonnmmllk - - TTUUVVWWAA@@??>>xxxxwwvv8877665555667788[[ZZYYSS&&''(())^]]\\[[Zllmmnnoo))((''&&44556677aa``__^^XXYYZZ[[==<<;;:: !!""##uuttssrrDDEEFFGGQQPPOONN hhiijjkk[[\\]]^^.--,,++*44556677aa``__^^XXYYZZ[[==<<;;:: !!""##uuttssrrDDEEFFGGQQPPOONN hhiijjkk--,,++**00112233``__^^]]kjjiihhgXXYYZZ[[==<<;;:: !!""##uuttssrr4433221199::;;<>??@@NNMMLLKK..//0011SSRRQQPPttuuvvww!! <<==>>??YYXXWWVV``aabbcc55443322(())**++mmllkkjjLLMMNNOOIIHHGGFFppqqrrssccddeeff&%%$$##"<<==>>??YYXXWWVV``aabbcc55443322(())**++mmllkkjjLLMMNNOOIIHHGGFFppqqrrss%%$$##""8899::;;SSRRQQPP!!""##$$cbbaa``_``aabbcc55443322(())**++mmllkkjj,,++**))AABBCCDDJJIIHHGG22334455OONNMMLLxxxxwwvv@@AABBCCUUTTSSRR - - ddeeffgg1100//..,,--..//iihhggff - -PPQQRRSSEEDDCCBBttuuvvww - -gghhiijj"!! @@AABBCCUUTTSSRR - - ddeeffgg1100//..,,--..//iihhggff - -PPQQRRSSEEDDCCBBttuuvvww!! <<==>>??OONNMMLL%%&&''((_^^]]\\[ - - ddeeffgg1100//..,,--..//iihhggff - -((''&&%%EEFFGGHHFFEEDDCC6677==>>KKJJIIHH !!""##uuttssrrDDEEFFGGQQPPOONN hhiijjkk--,,++**00112233eeddccbb TTUUVVWWAA@@??>>xxxxwwvv kkllmmnnDDEEFFGGQQPPOONN hhiijjkk--,,++**00112233eeddccbb TTUUVVWWAA@@??>>xxxxwwvv@@AABBCCKKJJIIHH))**++,,[ZZYYXWV hhiijjkk--,,++**00112233eeddccbb  - - $$##""!!IIJJKKLLBBAA@@????@@AABBGGFFEEDD$$%%&&''qqppoonnHHIIJJKKMMLLKKJJllmmnnoo))((''&&44556677aa``__^^XXYYZZ[[==<<;;:: !!""##uuoonnmmoouuvvwwHHIIJJKKMMLLKKJJllmmnnoo))((''&&44556677aa``__^^XXYYZZ[[==<<;;:: !!""##uuttssrrDDEEFFGGGGFFEEDD--..//00UTSSRRQQllmmnnoo))((''&&44556677aa``__^^  MMNNOOPP>>==7766CCDDEEFFCCBBAA@@(())**++mmllkkjjLLMMNNOOIIHHGGFFppqqrrss%%$$##""8899::;;]]\\[[ZZ\\]]^^__99887766$$%%&&''llkkjjii - - xxxxwwvvLLMMNNOOIIHHGGFFppqqrrss%%$$##""8899::;;]]\\[[ZZ\\]]^^__99887766$$%%&&''qqppoonnHHIIJJKKCCBBAA@@11223344PPOONNMMppqqrrss%%$$##""8899::;;]]\\[[ZZppqqrrss%%$$##""8899::;;]]\\[[ZZ\\]]^^__99887766$$%%&&''llkkjjii - - xxxxwwvvLLMMNNOOIIHHGGFFppqqrrss%%$$##""8899::;;]]\\[[ZZ\\]]^^__99887766$$%%&&''iihhggff]]\\[[ZZttuuvvww!! <<==>>??YYXXWWVV``aabbcc55443322(())**++hhggffee uutsrqpo PPQQRRSSEEDDCCBBttuuvvww!! <<==>>??YYXXWWVV``aabbcc55443322(())**++eeddccbbYYXXWWVVxxxxwwvv@@AABBCCUUTTSSRR - - ddeeffgg1100//..,,--..//ddccbbaaonnmmllk - - TTUUVVWWAA@@??>>xxxxwwvv@@AABBCCUUTTSSRR - - ddeeffgg1100//..,,--..//aa``__^^!!""##UUTTSSRR !!""##uuttssrrDDEEFFGGQQPPOONN hhiijjkk--,,++**00112233``__^^]]kjjiihhgXXYYZZ[[==<<;;:: !!""##uuttssrrDDEEFFGGQQPPOONN hhiijjkk--,,++**00112233]]\\[[ZZ$$%%&&''QQPPOONN$$%%&&''qqppoonnHHIIJJKKMMLLKKJJllmmnnoo))((''&&44556677\\[[ZZYYgffeeddc\\]]^^__99887766$$%%&&''qqppoonnHHIIJJKKMMLLKKJJllmmnnoo))((''&&44556677YYSSRRQQ(())**++MMLLKKJJ !!""##(())**++mmllkkjjLLMMNNOOIIHHGGFFppqqrrss%%$$##""8899::;;SSRRQQPP!!""##$$cbbaa``_``aabbcc55443322(())**++mmllkkjjLLMMNNOOIIHHGGFFppqqrrss%%$$##""8899::;;PPOONNMM,,--..//IIHHGGFF$$%%&&'',,--..//iihhggff - -PPQQRRSSEEDDCCBBttuuvvww!! <<==>>??OONNMMLL%%&&''((_^^]]\\[ - - ddeeffgg1100//..,,--..//iihhggff - -PPQQRRSSEEDDCCBBttuuvvww!! <<==>>??LLKKJJII00112233EEDDCCBB(())**++00112233eeddccbb TTUUVVWWAA@@??>>xxxxwwvv@@AABBCCKKJJIIHH))**++,,[ZZYYXWV hhiijjkk--,,++**00112233eeddccbb TTUUVVWWAA@@??>>xxxxwwvv@@AABBCCHHGGFFEE44556677AA@@??>>,,--..//44556677aa``__^^XXYYZZ[[==<<;;:: !!""##uuttssrrDDEEFFGGGGFFEEDD--..//00UTSSRRQQllmmnnoo))((''&&44556677aa``__^^XXYYZZ[[==<<;;:: !!""##uuttssrrDDEEFFGGDDCCBBAA==>>??@@==<<;;::001122338899::;;]]\\[[ZZ\\]]^^__99887766$$%%&&''qqppoonnHHIIJJKKCCBBAA@@11223344PPOONNMMppqqrrss%%$$##""8899::;;]]\\[[ZZ\\]]^^__99887766$$%%&&''qqppoonnHHIIJJKK@@??>>==AABBCCDD9988776644556677<<==>>??YYXXWWVV``aabbcc55443322(())**++mmllkkjjLLMMNNOO??>>==77556677==LLKKJJIIttuuvvww!! <<==>>??YYXXWWVV``aabbcc55443322(())**++mmllkkjjLLMMNNOO77665544EEFFGGHH554433228899::;;@@AABBCCUUTTSSRR - - ddeeffgg1100//..,,--..//iihhggff - -PPQQRRSS66554433>>??@@AAHHGGFFEExxxxwwvv@@AABBCCUUTTSSRR - - ddeeffgg1100//..,,--..//iihhggff - -PPQQRRSS33221100IIJJKKLL1100//..<<==>>??DDEEFFGGQQPPOONN hhiijjkk--,,++**00112233eeddccbb TTUUVVWW221100//BBCCDDEEDDCCBBAA !!""##uuttssrrDDEEFFGGQQPPOONN hhiijjkk--,,++**00112233eeddccbb TTUUVVWW//..--,,MMNNOOPP--,,++**@@AABBCCHHIIJJKKMMLLKKJJllmmnnoo))((''&&44556677aa``__^^XXYYZZ[[..--,,++FFGGHHII@@??>>==$$%%&&''qqppoonnHHIIJJKKMMLLKKJJllmmnnoo))((''&&44556677aa``__^^XXYYZZ[[++**))((QQRRSSYY))((''&&DDEEFFGGLLMMNNOOIIHHGGFFppqqrrss%%$$##""8899::;;]]\\[[ZZ\\]]^^__**))((''JJKKLLMM<;:98776(())**++mmllkkjjLLMMNNOOIIHHGGFFppqqrrss%%$$##""8899::;;]]\\[[ZZ\\]]^^__''&&%%$$ZZ[[\\]]%%$$##""HHIIJJKKPPQQRRSSEEDDCCBBttuuvvww!! <<==>>??YYXXWWVV``aabbcc&&%%$$##NNOOPPQQ65544332,,--..//iihhggff - -PPQQRRSSEEDDCCBBttuuvvww!! <<==>>??YYXXWWVV``aabbcc##""!!^^__``aa!! LLMMNNOOTTUUVVWWAA@@??>>xxxxwwvv@@AABBCCUUTTSSRR - - ddeeffgg""!!RRSSYYZZ21100//.00112233eeddccbb TTUUVVWWAA@@??>>xxxxwwvv@@AABBCCUUTTSSRR - - ddeeffggbbccddeePPQQRRSSXXYYZZ[[==<<;;:: !!""##uuttssrrDDEEFFGGQQPPOONN hhiijjkk[[\\]]^^.--,,++*44556677aa``__^^XXYYZZ[[==<<;;:: !!""##uuttssrrDDEEFFGGQQPPOONN hhiijjkkffgghhiiTTUUVVWW\\]]^^__99887766$$%%&&''qqppoonnHHIIJJKKMMLLKKJJllmmnnoo__``aabb*))((''&8899::;;]]\\[[ZZ\\]]^^__99887766$$%%&&''qqppoonnHHIIJJKKMMLLKKJJllmmnnoojjkkllmmXXYYZZ[[``aabbcc55443322(())**++mmllkkjjLLMMNNOOIIHHGGFFppqqrrssccddeeff&%%$$##"<<==>>??YYXXWWVV``aabbcc55443322(())**++mmllkkjjLLMMNNOOIIHHGGFFppqqrrss mmllkkjj\\]]^^__ddeeffgg1100//..,,--..//iihhggff - -PPQQRRSSEEDDCCBBttuuvvww - -gghhiijj"!! @@AABBCCUUTTSSRR - - ddeeffgg1100//..,,--..//iihhggff - -PPQQRRSSEEDDCCBBttuuvvww - - - -iihhggff - -``aabbcchhiijjkk--,,++**00112233eeddccbb TTUUVVWWAA@@??>>xxxxwwvv kkllmmnnDDEEFFGGQQPPOONN hhiijjkk--,,++**00112233eeddccbb TTUUVVWWAA@@??>>xxppoonn eeddccbb - - ddeeffggllmmnnoo))((''&&44556677aa``__^^XXYYZZ[[==<<;;:: !!""##uuoonnmmoouuvvwwHHIIJJKKMMLLKKJJllmmnnoo))((''&&44556677aa``__^^XXYYZZ[[==<<;;:: !!""##mmllkkjjaa``__^^ hhiijjkkllmmbdQZ|Jlt`vXnے`JdQbtpvnZp˂|drtbdQZf`vXpZHAbbtl|ZdQ`f~rXQJ`tAJlpfHnvpے`JJtArdf~HrXQJ`|rAJlltbf`vXpZHAbbtl|ZdQ`f~rXQJ`tAJlpfHnvpے`JJtArdnXvHfpvےbHAltdH~ے`JXQbtl|ZdQ`f~rXQJ`tAJldrtAbdQZ|vpfXQr˂lJtArvf~HrXQJ`tAJl|dtAnvpے`JJtArdbnXvHfpvےbHAtbdQZf`vXfH~XQr˂|ZdQfpvےbHAtbddQZ|nvpے`JJtArdbnXvHfpvےbHAtbdQZf`vXfH~XQr˂|ZdQ`f~nXvZp˂rtAJlvpfHr˂pJtArdbnXvHfpvےbHAtbdQZJltdrtAH~fpZHAbd|ZfpvےbHAtbdQZJltfH~XQr˂|ZdQ`f~nXvZp˂|drnvpf`vXpZHAbbtlnXv`Zp˂QZ|dAJltfH~XQr˂|ZdQ`f~nXvZp˂|drnvpf`vXpZHAbbtlHfpv`fHrXQJ`tbdQ~f`ZHAb|ZdQ`f~nXvZp˂|drbdQZ|Jlt`vXnے`JdQtArdnXv`Zp˂|drbnvf`vXpZHAbbtlHfpv`f~rXQJ`tAJlfH~nvpے`JJtArdf~HrXQJ`rtAJlbnvf`vXpZHAbbtlHfpv`f~rXQJ`tAJlfH~nvpے`JJtArdnXvfpvےbHAZ|dvXnے`JXQbtlHfpv`f~rXQJ`tAJldrtAbdQZ|vpfXQr˂|ZdQf~HrXQJ`tAJlpfHnvpے`JJtArdnXvHfpvےbHAtbdQZf`vXfH~XQr˂|ZdQXv`fp˂rtbdpfHnvpے`JJtArdnXvHfpvےbHAtbdQZf`vXfH~XQr˂|ZdQ`f~nrXQJZp˂rtAJlvpfHrZHAJtArdnXvHfpvےbHAtbdQZJlt`vXnH~fp`JXQbtlfpvےbHAtbdQZf`vXfH~XQr˂|ZdQ`f~nXvZp˂|drnvpf`vXpZHAbbtl~HfXQJ`ےQZ|df`vXfH~XQr˂|ZdQ`f~nXvZp˂|drnvpf`vXpZHAbbtlHfpv`ےHArXQJ`tbdQ~f`bے`|ZdQ`f~nXvZp˂|drbdQZ|vpf`vXnr˂pJtArdnXv`Zp˂|drnvpf`vXpZHAbbtlHfpv`fHrXQJ`tAJlfH~nr˂ے`JJtArdpvnbHAZrtAJnvpf`vXpZHAbbtlHfpv`fHrXQJ`tAJlfH~nr˂ے`JJtArdnXvZp˂ےbHAZ|lvXH~JXQrbtlHfpv`fHrXQJ`tAJldrtAH~fvpfZHAb|ZdQf~fprXQJ`tAJlfH~nvpے`JJtArdnXvfpvےbHAtbdQZf`vXpZHAbXQr˂|ZdQXv`fp˂rbdQZ|fH~nvpے`JJtArdnXvfpvےbHAtbdQZf`vXpZHAbXQr˂|ZdQ`f~rXQJ`Zp˂tbdQZf`vpZHAJtArdnXvfpvےbHAtbdQZJlt`vXnH~fے`JXQbtlvnXےbHAtbdQZf`vXfH~XQr˂|ZdQ`f~nrXQJZp˂|drnvpے`JpZHAbbtl~HfXQJ`ےdrtAf`vXfH~XQr˂|ZdQ`f~nrXQJZp˂|drnvpے`JpZHAbbtlHfpvےbHArXQJ`|drXnvbے`|ZdQ`f~nrXQJZp˂|drbdQZ|vpf`vXnr˂p|ZdQbv`fZp˂|drnvpf`vXpZHAbbtlHfpv`ےHArXQJ`tAJlfH~XQr˂ے`JJtArdpvbHAXQJltnvpf`vXpZHAbbtlHfpv`ےHArXQJ`tAJlfH~XQr˂ے`JJtArdnXvZp˂ےbHAtAJlpfH~JXQrbtlHfpv`ےHArXQJ`tAJldrtAH~fr˂p|ZdQbnXv`~HfprXQJ`tAJlfH~nr˂ے`JJtArdnXvZp˂ےbHAtbdQZf`vXpZHAbXQr˂|ZdQ~HfpJ`ےbdQZ|fH~nr˂ے`JJtArdnXvZp˂ےbHAtbdQZf`vXpZHAbXQr˂|ZdQ`f~rXQJ`Zp˂tbdQZf`vpZAbJtArdnXvZp˂ےbHAtbdQZJlt`vXn`JXQrtlJf~fpvnXےbHAtbdQZf`vXpZHAbXQr˂|ZdQ`f~rXQJ`Zp˂|drnvpے`JpZHAbtlvnXbHAZpdrtAf`vXpZHAbXQr˂|ZdQ`f~rXQJ`Zp˂|drnvpے`JpZHAbtlHfpvےbHArbdQZ|ltXnv`JXQr|ZdQ`f~rXQJ`Zp˂|drbdQZ|vpf˂pZtArdvnXv`fZp˂|drnvpے`JpZHAbbtlHfpvےbHArXQJ`tAJlfH~XQr˂ے`JXQJtArdv`f˂rXQJltnvpے`JpZHAbbtlHfpvےbHArXQJ`tAJlfH~XQr˂ے`JXQJtArdnXvZp˂|ltbnvp`vX˂pZbtlHfpvےbHArXQJ`tAJldrtAH~fHAbے|ZdQbv`frQJHArXQJ`tAJlfH~XQr˂ے`JJtArdnXvZp˂ےbHAtbdQZf`vXpZHAbrbt|ZdQ~HfpJ`ےbQZdfH~XQr˂ے`JJtArdnXvZp˂ےbHAtbdQZf`vXpZHAbrbt|ZdQ`f~rXQJ`bdQZ|p`vXnr˂HAbےJtArdnXvZp˂ےbHAtbdQZJlt`vXn`JXQrtl|~HfpZp˂ےbHAtbdQZf`vXpZHAbXQr˂|ZdQ`f~rXQJ`Zp˂|drnvpے`JlJtAdbtlvnXbHAZprtAJlf`vXpZHAbXQr˂|ZdQ`f~rXQJ`Zp˂|drnvpے`JlJtAdbtlHfpvےbHAdrtAnvppZAb``JXQr|ZdQ`f~rXQJ`Zp˂|drbdQZ|vpf˂pZZdQbtvnXrXQJ`Zp˂|drnvpے`JpZHAbtlHfpvےbHArbdQZtAJlfH~XQr˂|ZdQJtArdv`pv˂btbdQnvpے`JpZHAbtlHfpvےbHArbdQZtAJlfH~XQr˂|ZdQJtArdnXvZp˂JltfH~JXQr˂pZAbtlHfpvےbHArbdQZtAJldrtAH~fHAblJtAv`fےbHArXQJ`tAJlfH~XQr˂ے`JXQJtArdnXvZp˂|drtbdQZf`vXpZHAbbtl|ZdQnXvHAZp˂Z|dfH~XQr˂ے`JXQJtArdnXvZp˂|drtbdQZf`vXpZHAbbtl|ZdQ`f~rXQJ`bdQZ|f`vX˂pZH`JXQJtArdnXvZp˂|drtbdQZJlt`vXn˂pZHArd|~HfvnZp˂ےbHAtbdQZf`vXpZHAbrbt|ZdQ`f~rXQJ`tAJl|drnvpے`JJtArdbtl`f~rXQJrtAJlf`vXpZHAbrbt|ZdQ`f~rXQJ`tAJl|drnvpے`JJtArdbtlHfpvےbHAdrtAnvpAbے`rbt|ZdQ`f~rXQJ`tAJl|drbdQZ|vpfbے`ZdQbtXv`frXQJ`Zp˂|drnvpے`JlJtAdbtlHfpvےbHAtbdQZtAJlfH~XQr˂|ZdQJtArdHfpv`ےbtbdQnvpے`JlJtAdbtlHfpvےbHAtbdQZtAJlfH~XQr˂|ZdQJtArdnXvZp˂dQZ|`vXnJXQrlJtAdbtlHfpvےbHAtbdQZtAJldrtAH~fJXQrlJtA~HfےbHArbdQZtAJlfH~XQr˂|ZdQJtArdnXvZp˂|drtbdQZf`vXpZHAbbtl|ZdQnXvHAZp˂Z|rAJfH~XQr˂|ZdQJtArdnXvZp˂|drtbdQZf`vXpZHAbbtl|ZdQ`f~rXQJ`drtAJvpf˂pZH|ZdQJtArdnXvZp˂|drtbdQZpfHJlt`vXn˂pZHArdtpvnZp˂|drtbdQZf`vXpZHAbbtl|ZdQ`f~rXQJ`tAJl|dtAnvpے`JJtArdbnXv`pvrXQJltbf`vXpZHAbbtl|ZdQ`f~rXQJ`tAJl|dtAnvpے`JJtArdbnXvHfpvےbHAltbH~fAbJbtl|ZdQ`f~rXQJ`tAJl|dtAf`vXbdQZ|vpfbے`lJtArXv`frXQJ`tAJl|drnvpے`JJtArdbtlHfpvےbHAtbdQZJltfH~XQr˂|ZdQ`pvnrXQJ`p˂dQZ|nvpے`JJtArdbtlHfpvےbHAtbdQZJltfH~XQr˂|ZdQ`f~nXvZp˂dQZ|`vXnQr˂pJtArdbtlHfpvےbHAtbdQZJltnvpdrtAH~fJXQHAbd|Z~HfےbHAtbdQZtAJlfH~XQr˂|ZdQJtArdnXvZp˂|drbnvf`vXpZHAbbtlnXv``p˂rbdQZdrtAJfH~XQr˂|ZdQJtArdnXvZp˂|drbnvf`vXpZHAbbtlHfpv`f~rXQJ`drtAJvpfZHAb|ZdQJtArdnXvZp˂|drbnvfH~f`vXfH~XQr˂|ZdQ`f~nrXQJZp˂|drnvpr˂pl|ZdQbnXv~HfےbHAtbdQZf`vXfH~XQr˂|ZdQ`f~nrXQJZp˂|drnvppZHAbˁ`ZpfH~tbAdnvpf`vXpZHAbbtlHfpv`ےHArXQJ`tAJlfH~ZHAbbtl`f~fppvnZp˂|drnvpf`vXpZHAbbtlHfpv`ےHArXQJ`tAJlfH~ے`JQXb㉀ۅf۝`vZ|dfH~nr˂ے`JJtArdnXvZp˂ےbHAtbdQZf`vXے`JXQJtArdvnXXv`frXQJ`tAJlfH~nr˂ے`JJtArdnXvZp˂ےbHAtbdQZf`vXXQr˂p`ZQXXnvrQtJlf`vXpZHAbXQr˂|ZdQ`f~rXQJ`Zp˂|drnvpr˂p|ZdQv`ffpvےbHAtbdQZf`vXpZHAbXQr˂|ZdQ`f~rXQJ`Zp˂|drnvppZHAbb㉀ۑppfH~tbAdnvpے`JpZHAbbtlHfpvےbHArXQJ`tAJlfH~ZHAbbtl~HfpnrXQJZp˂|drnvpے`JpZHAbbtlHfpvےbHArXQJ`tAJlfH~˂pJAHr󙐅f۝`vZ|dfH~XQr˂ے`JJtArdnXvZp˂ےbHAtbdQZf`vX˂pZ|ZdQbvnX`ےHArXQJ`tAJlfH~XQr˂ے`JJtArdnXvZp˂ےbHAtbdQZf`vXZHAbˁ`ZQXXnvrQtJlf`vXpZHAbXQr˂|ZdQ`f~rXQJ`Zp˂|drnvpHAbےtlJv`fZp˂ےbHAtbdQZf`vXpZHAbXQr˂|ZdQ`f~rXQJ`Zp˂|drnvpے`JXQb㉀ۑppfH~tbAdnvpے`JpZHAbtlHfpvےbHArbdQZtAJlfH~`JXQrtArd~HfvrXQJ`Zp˂|drnvpے`JpZHAbtlHfpvےbHArbdQZtAJlfH~r˂pJAHr󙐅f۝`vZ|dfH~XQr˂ے`JXQJtArdnXvZp˂|drtbdQZf`vX˂pZ|ZdQbnXv`ےbHArXQJ`tAJlfH~XQr˂ے`JXQJtArdnXvZp˂|drtbdQZf`vXZHAbۑpJXnvrQtJlf`vXpZHAbrbt|ZdQ`f~rXQJ`tAJl|drnvpHAbےtlJf~HZp˂ےbHAtbdQZf`vXpZHAbrbt|ZdQ`f~rXQJ`tAJl|drnvpے`JXQAHr󙐂ˍpfH~tbAdnvpے`JlJtAdbtlHfpvےbHAtbdQZtAJlfH~`JXQHAtArdtfpvrXQJ`Zp˂|drnvpے`JlJtAdbtlHfpvےbHAtbdQZtAJlfH~HAbے`ZQXbㅐf۝`vZ|dfH~XQr˂|ZdQJtArdnXvZp˂|drtbdQZf`vXbے`lJtAnXv`ےbHArbdQZtAJlfH~XQr˂|ZdQJtArdnXvZp˂|drtbdQZf`vX`JXQrۑpJXnvrQtJlf`vXpZHAbbtl|ZdQ`f~rXQJ`tAJl|dtAnvpJXQrrd|f~HZp˂|drtbdQZf`vXpZHAbbtl|ZdQ`f~rXQJ`tAJl|dtAnvp˂pZAHr󙐂ˍpfH~tbAdnvpے`JJtArdbtlHfpvےbHAtbdQZJltfH~˂pZHAZdQbtfpvrXQJ`tAJl|drnvpے`JJtArdbtlHfpvےbHAtbdQZJltfH~HAbے`ZQXAHf۝`vZ|dfH~XQr˂|ZdQJtArdnXvZp˂|drbnvf`vXbے`lJtAnvfےbHAtbdQZtAJlfH~XQr˂|ZdQJtArdnXvZp˂|drbnvf`vX`JXQrr󙐂ˁ`XnvrQtJlf`vXpZHAbbtl|ZdQ`f~rXQJ`tAJlpfHnvpJXQrrd|~HfpZp˂|drtbdQZf`vXpZHAbbtl|ZdQ`f~rXQJ`tAJlpfHnvp˂p`ZQXb㉀pfH~tbAdnvpے`JJtArdbnXvHfpvےbHAtbdQZf`vXfH~˂p`JZdQtArvnXrXQJ`tAJl|dtAnvpے`JJtArdbnXvHfpvےbHAtbdQZf`vXfH~JXQrۑpJAHf۝`vZ|dfH~XQr˂|ZdQ`f~nXvZp˂|drnvpf`vXXQr˂d|Zv`fےbHAtbdQZJltfH~XQr˂|ZdQ`f~nXvZp˂|drnvpf`vX˂pZHAr󙐂ˁ`XnvrQtJlf`vXpZHAbbtlHfpv`f~rXQJ`tAJlfH~nvppZHAbdQbt~HfpZp˂|drbnvf`vXpZHAbbtlHfpv`f~rXQJ`tAJlfH~nvpbے`ZQXb㉀pfH~tbAdnvpے`JJtArdnXvHfpvےbHAtbdQZf`vXfH~ے`JlJtArvnXrXQJ`tAJlpfHnvpے`JJtArdnXvHfpvےbHAtbdQZf`vXfH~JXQrXnv˅f۝`vZ|dfH~XQr˂|ZdQ`f~nXvZp˂|drnvpf`vXXQr˂d|Zv`f~fےbHAtbdQZf`vXfH~XQr˂|ZdQ`f~nXvZp˂|drnvpf`vX˂p`ZpfH~XnvrQtJlf`vXpZHAbbtlHfpv`fHrXQJ`tAJlfH~nr˂p`JXQdQbtpvnZp˂|drnvpf`vXpZHAbbtlHfpv`fHrXQJ`tAJlfH~nے`JQXb㉀ۅf۝`vp|dtbAdnvpے`JJtArdnXvfpvےbHAtbdQZf`vXp`JXQrbtl|ZdQXv`frXQJ`tAJlfH~nvpے`JJtArdnXvfpvےbHAtbdQZf`vXXQr˂pJAHrXnvrQtJlZ|drQtqrstuvwxxwvutsrJJJJJJJJJJJJJJJJJJJKKKK \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv26_1.dat b/mpdf/qrcode/data/qrv26_1.dat deleted file mode 100644 index b8939dd..0000000 --- a/mpdf/qrcode/data/qrv26_1.dat +++ /dev/null @@ -1,241 +0,0 @@ -xwxwxwxwxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqopopopopopopopopnmnmnmnmnmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijijijijijihghghghghghghghgfefefefefefefefefefefefedcdcdcdcdcdcdcdcbabababababababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9787878787777787877878787656565656565656543434343434343434343434321212121212121210/0/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        xwxwxwxwxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqopooooooopopopopnmnmnmnmnmnmnmnmnmlklklklklklklklklklklkjijijijijijijijijihghghghghghghghghghghgfefefefefefefefefedcdcdcdcdcdcdcdcdcdcdcbababababababababa`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9787878787878787887656565656565656565656543434343434343434321212121212121212121210/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!        xwxwxwxwxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopoooooooponmnmnmnmnmnmnmnmlklklklklklklklklklklklkjijijijijijijijihghghghghghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSSSSSSTTSTSTSTSTSTSTSSSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9787878787878787865656565656565656565656543434343434343432121212121212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!        xwxwxwxwxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklklklklklkjijijijijijijijihghghghghghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUSTSTSTSTSSSSSTSTSSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9787878787878787865656565656565656565656543434343434343432121212121212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!        xwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklklklklklkjijijijijijijijihghghghghghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUSTSTSTSTSTSTSTSTTSRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCBABABABABABABABABABABA@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9787878787878787865656565656565656565656543434343434343432121212121212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!        xwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklklklklklkjijijijijijijijihghghghghghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUSTSTSTSTSTSTSTSTRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9787877777878787865656565656565656565656543434343434343432121212121212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!        xwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvuvuvuvuvutstststststststsrqrqrqrqpopopopopopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklklklklklkjijijijijijijijihghghghghghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUSTSTSTSTSTSTSTSTRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9778787877877777765656565656565656565656543434343434343432121212121212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!        xwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvuvuvuvuvutstststsrqrqrqrqrqrqrqrqooooopoppopopooopopopoponmnmnmnmnmnmnmnmlklklklklklklklklkjijijijijijijijijijijihghghghghghghghghgfefefefefefefefefefefedcdcdcdcdcdcdcdcdcbababababababababababa`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUSTSTSTSTSTSTSTSTRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9878787878787878765656565656565656543434343434343434343432121212121212121210/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)('('('('('('('('('('('&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!        xwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqopopopopooopopopmmmmmmnmnmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijijijijijihghghghghghghghgfefefefefefefefefefefefedcdcdcdcdcdcdcdcbabababababababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUSTSTSSSSSTSTSTSTRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:98787878787878787656565656565656543434343434343434343434321212121212121210/0/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        xwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqopopopopopopopopnmnmnmnmnmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijijijijijihghghghghghghghgfefefefefefefefefefefefedcdcdcdcdcdcdcdcbabababababababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUSSTSTSTSSTSSSSSSRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:98787878787878787656565656565656543434343434343434343434321212121212121210/0/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        xwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqopopopopopopopopnmnmnmnmnmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijijijijijihghghghghghghghgfefefefefefefefefefefefedcdcdcdcdcdcdcdcbabababababababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABABA@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:98787878787878787878787656565656565656543434343434343434343434321212121212121210/0/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        xwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqopopopopopopopopnmnmnmnmnmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijijijijijihghghghghghghghgfefefefefefefefefefefefedcdcdcdcdcdcdcdcbabababababababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9877777788787878787878777656565656565656543434343434343434343434321212121212121210/0/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!                    - - - - - - - - - - - -             - - - - - - - - - - - -          - - - - - - - - -         - - - - - - - -         - - - - - - - -         - - - - - - - -         - - - - - - - -         - - - - - - - -            - - - - - - - - - - -             - - - - - - - - - - - -             - - - - - - - - - - - -             - - - - - - - - - - - - xxwwvvuuHHGGFFEE))**++,,YYZZ[[\\ccbbaa``))((''&&""##$$%%\\]]^^__^]]\\[[Z)((''&&%DDEEFFGGttuuvvwwMMLLKKJJDDEEFFGGttuuvvwwMMLLKKJJDDEEFFGGttuuvvwwMMLLKKJJDDEEFFGGttuuvvwwMMLLKKJJDDEEFFGGttuuvvwwMMLLKKJJDDEEFFGGttuuvvwwCCBBAA@@ 556677==oouuvvwwHHGGFFEE !!""##PPQQRRSSqqppoonnAA@@??>> !!""##PPQQRRSSqqppoonnAA@@??>> !!""##PPQQRRSSqqppoonnAA@@??>> !!""##PPQQRRSSqqppoonnAA@@??>> !!""##PPQQRRSSqqppoonnAA@@??>> !!""##PPQQRRSSllkkjjii221100// FFGGHHIIonnmmllk<;:98776,,--..//\\]]^^__eeddccbb55443322,,--..//\\]]^^__eeddccbb55443322,,--..//\\]]^^__eeddccbb55443322,,--..//\\]]^^__eeddccbb55443322,,--..//\\]]^^__eeddccbb55443322,,--..//\\]]^^__``__^^]]&&%%$$##RRSSYYZZcbbaa``_.--,,++* - - 8899::;;ttssrrqqDDCCBBAA--..//00]]^^__``__^^]]\\%%$$##""&&''(())``aabbccZYYXWVUT%$$##""!HHIIJJKKxxxxwwvvIIHHGGFFHHIIJJKKxxxxwwvvIIHHGGFFHHIIJJKKxxxxwwvvIIHHGGFFHHIIJJKKxxxxwwvvIIHHGGFFHHIIJJKKxxxxwwvvIIHHGGFFHHIIJJKKxxxxwwvv??>>==77>>??@@AAxxxxwwvvDDCCBBAA $$%%&&''TTUUVVWWmmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWmmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWmmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWmmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWmmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWhhggffee..--,,++JJKKLLMMkjjiihhg6554433200112233``aabbccaa``__^^1100//..00112233``aabbccaa``__^^1100//..00112233``aabbccaa``__^^1100//..00112233``aabbccaa``__^^1100//..00112233``aabbccaa``__^^1100//..00112233``aabbcc\\[[ZZYY""!!!!""##$$[[\\]]^^_^^]]\\[*))((''& <<==>>??ppoonnmm@@??>>== 11223344aabbccdd[[ZZYYSS!!**++,,--ddeeffggSSRRQQPP! LLMMNNOOuuttssrrEEDDCCBBLLMMNNOOuuttssrrEEDDCCBBLLMMNNOOuuttssrrEEDDCCBBLLMMNNOOuuttssrrEEDDCCBBLLMMNNOOuuttssrrEEDDCCBBLLMMNNOOuuoonnmm66554433 - - BBCCDDEEuutsrqpo@@??>>== - - (())**++XXYYZZ[[iihhggff99887766 (())**++XXYYZZ[[iihhggff99887766 (())**++XXYYZZ[[iihhggff99887766 (())**++XXYYZZ[[iihhggff99887766 (())**++XXYYZZ[[iihhggff99887766 (())**++XXYYZZ[[ddccbbaa**))((''NNOOPPQQgffeeddc21100//.44556677ddeeffgg]]\\[[ZZ--,,++**44556677ddeeffgg]]\\[[ZZ--,,++**44556677ddeeffgg]]\\[[ZZ--,,++**44556677ddeeffgg]]\\[[ZZ--,,++**44556677ddeeffgg]]\\[[ZZ--,,++**44556677ddeeffggSSRRQQPP%%&&''((__``aabb[ZZYYXWV&%%$$##"@@AABBCCllkkjjii<<;;::99 - - 55667788eeffgghhRRQQPPOO..//0011hhiijjkkOONNMMLL !!""##PPQQRRSSqqppoonnAA@@??>> !!""##PPQQRRSSqqppoonnAA@@??>> !!""##PPQQRRSSqqppoonnAA@@??>> !!""##PPQQRRSSqqppoonnAA@@??>> !!""##PPQQRRSSqqppoonnAA@@??>> !!""##PPQQRRSSllkkjjii221100// FFGGHHIIonnmmllk<;:98776,,--..//\\]]^^__eeddccbb55443322,,--..//\\]]^^__eeddccbb55443322,,--..//\\]]^^__eeddccbb55443322,,--..//\\]]^^__eeddccbb55443322,,--..//\\]]^^__eeddccbb55443322,,--..//\\]]^^__``__^^]]&&%%$$##RRSSYYZZcbbaa``_.--,,++* - - 8899::;;hhiijjkkYYXXWWVV))((''&& - - 8899::;;hhiijjkkYYXXWWVV))((''&& - - 8899::;;hhiijjkkYYXXWWVV))((''&& - - 8899::;;hhiijjkkYYXXWWVV))((''&& - - 8899::;;hhiijjkkYYXXWWVV))((''&& - - 8899::;;hhiijjkkOONNMMLL))**++,,ccddeeffUTSSRRQQ"!! DDEEFFGGhhggffee88776655 - - 99::;;<>??llmmnnooUUTTSSRR%%$$##"" <<==>>??llmmnnooUUTTSSRR%%$$##"" <<==>>??llmmnnooUUTTSSRR%%$$##"" <<==>>??llmmnnooUUTTSSRR%%$$##"" <<==>>??llmmnnooUUTTSSRR%%$$##"" <<==>>??llmmnnooKKJJIIHH--..//00gghhiijjPPOONNMMHHIIJJKKddccbbaa44332211 ==>>??@@mmnnooppJJIIHHGG 6677==>>uuvvwwxxGGFFEEDD(())**++XXYYZZ[[iihhggff99887766 (())**++XXYYZZ[[iihhggff99887766 (())**++XXYYZZ[[iihhggff99887766 (())**++XXYYZZ[[iihhggff99887766 (())**++XXYYZZ[[iihhggff99887766 (())**++XXYYZZ[[ddccbbaa**))((''NNOOPPQQgffeeddc21100//.44556677ddeeffgg]]\\[[ZZ--,,++**44556677ddeeffgg]]\\[[ZZ--,,++**44556677ddeeffgg]]\\[[ZZ--,,++**44556677ddeeffgg]]\\[[ZZ--,,++**44556677ddeeffgg]]\\[[ZZ--,,++**44556677ddeeffggSSRRQQPP%%&&''((__``aabb[ZZYYXWV&%%$$##"@@AABBCCppqqrrssQQPPOONN!! @@AABBCCppqqrrssQQPPOONN!! @@AABBCCppqqrrssQQPPOONN!! @@AABBCCppqqrrssQQPPOONN!! @@AABBCCppqqrrssQQPPOONN!! @@AABBCCppqqrrssGGFFEEDD - -11223344kkllmmnnLLKKJJIILLMMNNOO``__^^]]00//..--AABBCCDDqqrrssttFFEEDDCC - - ??@@AABBxxwwvvuuCCBBAA@@ ,,--..//\\]]^^__eeddccbb55443322,,--..//\\]]^^__eeddccbb55443322,,--..//\\]]^^__eeddccbb55443322,,--..//\\]]^^__eeddccbb55443322,,--..//\\]]^^__eeddccbb55443322,,--..//\\]]^^__``__^^]]&&%%$$##RRSSYYZZcbbaa``_.--,,++* - - 8899::;;hhiijjkkYYXXWWVV))((''&& - - 8899::;;hhiijjkkYYXXWWVV))((''&& - - 8899::;;hhiijjkkYYXXWWVV))((''&& - - 8899::;;hhiijjkkYYXXWWVV))((''&& - - 8899::;;hhiijjkkYYXXWWVV))((''&& - - 8899::;;hhiijjkkOONNMMLL))**++,,ccddeeffUTSSRRQQ"!! DDEEFFGGttuuvvwwMMLLKKJJDDEEFFGGttuuvvwwMMLLKKJJDDEEFFGGttuuvvwwMMLLKKJJDDEEFFGGttuuvvwwMMLLKKJJDDEEFFGGttuuvvwwMMLLKKJJDDEEFFGGttuuvvwwCCBBAA@@ 556677==oouuvvwwHHGGFFEE !!""##PPQQRRSS\\[[ZZYY,,++**))EEFFGGHHuuvvwwxxBBAA@@?? - - CCDDEEFFtsrqpoon??>>==<; - - 00112233``aabbccaa``__^^1100//..00112233``aabbccaa``__^^1100//..00112233``aabbccaa``__^^1100//..00112233``aabbccaa``__^^1100//..00112233``aabbccaa``__^^1100//..00112233``aabbcc\\[[ZZYY""!!!!""##$$[[\\]]^^_^^]]\\[*))((''& <<==>>??llmmnnooUUTTSSRR%%$$##"" <<==>>??llmmnnooUUTTSSRR%%$$##"" <<==>>??llmmnnooUUTTSSRR%%$$##"" <<==>>??llmmnnooUUTTSSRR%%$$##"" <<==>>??llmmnnooUUTTSSRR%%$$##"" <<==>>??llmmnnooKKJJIIHH--..//00gghhiijjPPOONNMMHHIIJJKKxxxxwwvvIIHHGGFFHHIIJJKKxxxxwwvvIIHHGGFFHHIIJJKKxxxxwwvvIIHHGGFFHHIIJJKKxxxxwwvvIIHHGGFFHHIIJJKKxxxxwwvvIIHHGGFFHHIIJJKKxxxxwwvv??>>==77>>??@@AAxxxxwwvvDDCCBBAA $$%%&&''TTUUVVWWXXWWVVUU((''&&%%IIJJKKLLxxwwvvuu>>==7766 GGHHIIJJnmmllkkj:987766544556677ddeeffgg]]\\[[ZZ--,,++**44556677ddeeffgg]]\\[[ZZ--,,++**44556677ddeeffgg]]\\[[ZZ--,,++**44556677ddeeffgg]]\\[[ZZ--,,++**44556677ddeeffgg]]\\[[ZZ--,,++**44556677ddeeffggSSRRQQPP%%&&''((__``aabb[ZZYYXWV&%%$$##"@@AABBCCppqqrrssQQPPOONN!! @@AABBCCppqqrrssQQPPOONN!! @@AABBCCppqqrrssQQPPOONN!! @@AABBCCppqqrrssQQPPOONN!! @@AABBCCppqqrrssQQPPOONN!! @@AABBCCppqqrrssGGFFEEDD - -11223344kkllmmnnLLKKJJIILLMMNNOOuuttssrrEEDDCCBBLLMMNNOOuuttssrrEEDDCCBBLLMMNNOOuuttssrrEEDDCCBBLLMMNNOOuuttssrrEEDDCCBBLLMMNNOOuuttssrrEEDDCCBBLLMMNNOOuuoonnmm66554433 - - BBCCDDEEuutsrqpo@@??>>== - - (())**++XXYYZZ[[TTSSRRQQ$$##""!! MMNNOOPPoonnmmll55443322KKLLMMNNjiihhggf54433221 - - 8899::;;hhiijjkkYYXXWWVV))((''&& - - 8899::;;hhiijjkkYYXXWWVV))((''&& - - 8899::;;hhiijjkkYYXXWWVV))((''&& - - 8899::;;hhiijjkkYYXXWWVV))((''&& - - 8899::;;hhiijjkkYYXXWWVV))((''&& - - 8899::;;hhiijjkkOONNMMLL))**++,,ccddeeffUTSSRRQQ"!! DDEEFFGGttuuvvwwMMLLKKJJDDEEFFGGttuuvvwwMMLLKKJJDDEEFFGGttuuvvwwMMLLKKJJDDEEFFGGttuuvvwwMMLLKKJJDDEEFFGGttuuvvwwMMLLKKJJDDEEFFGGttuuvvwwCCBBAA@@ 556677==oouuvvwwHHGGFFEE !!""##PPQQRRSSqqppoonnAA@@??>> !!""##PPQQRRSSqqppoonnAA@@??>> !!""##PPQQRRSSqqppoonnAA@@??>> !!""##PPQQRRSSqqppoonnAA@@??>> !!""##PPQQRRSSqqppoonnAA@@??>> !!""##PPQQRRSSllkkjjii221100// FFGGHHIIonnmmllk<;:98776,,--..//\\]]^^__PPOONNMM !!""##$$QQRRSSTTkkjjiihh1100//..OOPPQQRRfeeddccb100//..- <<==>>??llmmnnooUUTTSSRR%%$$##"" <<==>>??llmmnnooUUTTSSRR%%$$##"" <<==>>??llmmnnooUUTTSSRR%%$$##"" <<==>>??llmmnnooUUTTSSRR%%$$##"" <<==>>??llmmnnooUUTTSSRR%%$$##"" <<==>>??llmmnnooKKJJIIHH--..//00gghhiijjPPOONNMMHHIIJJKKxxxxwwvvIIHHGGFFHHIIJJKKxxxxwwvvIIHHGGFFHHIIJJKKxxxxwwvvIIHHGGFFHHIIJJKKxxxxwwvvIIHHGGFFHHIIJJKKxxxxwwvvIIHHGGFFHHIIJJKKxxxxwwvv??>>==77>>??@@AAxxxxwwvvDDCCBBAA $$%%&&''TTUUVVWWmmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWmmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWmmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWmmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWmmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWhhggffee..--,,++JJKKLLMMkjjiihhg6554433200112233``aabbcchhiijjkkLLKKJJII%%&&''((UUVVWWXXggffeedd--,,++**!!SSYYZZ[[baa``__^-,,++**)@@AABBCCppqqrrssQQPPOONN!! @@AABBCCppqqrrssQQPPOONN!! @@AABBCCppqqrrssQQPPOONN!! @@AABBCCppqqrrssQQPPOONN!! @@AABBCCppqqrrssQQPPOONN!! @@AABBCCppqqrrssGGFFEEDD - -11223344kkllmmnnLLKKJJIILLMMNNOOuuttssrrEEDDCCBBLLMMNNOOuuttssrrEEDDCCBBLLMMNNOOuuttssrrEEDDCCBBLLMMNNOOuuttssrrEEDDCCBBLLMMNNOOuuttssrrEEDDCCBBLLMMNNOOuuoonnmm66554433 - - BBCCDDEEuutsrqpo@@??>>== - - (())**++XXYYZZ[[iihhggff99887766 (())**++XXYYZZ[[iihhggff99887766 (())**++XXYYZZ[[iihhggff99887766 (())**++XXYYZZ[[iihhggff99887766 (())**++XXYYZZ[[iihhggff99887766 (())**++XXYYZZ[[ddccbbaa**))((''NNOOPPQQgffeeddc21100//.44556677ddeeffggllmmnnooppqqrrssQQPPOONN!! @@AABBCCppqqrrssQQPPOONN!! @@AABBCCppqqrrssQQPPOONN!! @@AABBCCppqqrrssQQPPOONN!! @@AABBCCppqqrrssDDCCBBAA - - - -AABBCCDDeeddccbb55443322 <<==>>??ttuuvvwwMMLLKKJJDDEEFFGGttuuvvwwMMLLKKJJDDEEFFGGttuuvvwwMMLLKKJJDDEEFFGGttuuvvwwMMLLKKJJDDEEFFGGttuuvvww@@??>>== EEFFGGHHaa``__^^1100//..@@AABBCCxxxxwwvvIIHHGGFFHHIIJJKKxxxxwwvvIIHHGGFFHHIIJJKKxxxxwwvvIIHHGGFFHHIIJJKKxxxxwwvvIIHHGGFFHHIIJJKKxxppoonn77665544IIJJKKLL]]\\[[ZZ--,,++**DDEEFFGGuuttssrrEEDDCCBBLLMMNNOOuuttssrrEEDDCCBBLLMMNNOOuuttssrrEEDDCCBBLLMMNNOOuuttssrrEEDDCCBBLLMMNNOOmmllkkjj33221100MMNNOOPPYYXXWWVV))((''&&HHIIJJKKqqppoonnAA@@??>> !!""##PPQQRRSSqqppoonnAA@@??>> !!""##PPQQRRSSqqppoonnAA@@??>> !!""##PPQQRRSSqqppoonnAA@@??>> !!""##PPQQRRSSiihhggff//..--,,QQRRSSYYUUTTSSRR%%$$##""LLMMNNOOmmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWmmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWmmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWmmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWeeddccbb++**))((!!""##ZZ[[\\]]QQPPOONN!!  !!""##PPQQRRSSiihhggff99887766 (())**++XXYYZZ[[iihhggff99887766 (())**++XXYYZZ[[iihhggff99887766 (())**++XXYYZZ[[iihhggff99887766 (())**++XXYYZZ[[aa``__^^''&&%%$$$$%%&&''^^__``aaMMLLKKJJ$$%%&&''TTUUVVWWeeddccbb55443322,,--..//\\]]^^__eeddccbb55443322,,--..//\\]]^^__eeddccbb55443322,,--..//\\]]^^__eeddccbb55443322,,--..//\\]]^^__]]\\[[ZZ##""!!(())**++bbccddeeIIHHGGFF(())**++XXYYZZ[[aa``__^^1100//..00112233``aabbccaa``__^^1100//..00112233``aabbccaa``__^^1100//..00112233``aabbccaa``__^^1100//..00112233``aabbccYYSSRRQQ,,--..//ffgghhiiEEDDCCBB,,--..//\\]]^^__]]\\[[ZZ--,,++**44556677ddeeffgg]]\\[[ZZ--,,++**44556677ddeeffgg]]\\[[ZZ--,,++**44556677ddeeffgg]]\\[[ZZ--,,++**44556677ddeeffggPPOONNMM00112233jjkkllmmAA@@??>>00112233``aabbccYYXXWWVV))((''&& - - 8899::;;hhiijjkkYYXXWWVV))((''&& - - 8899::;;hhiijjkkYYXXWWVV))((''&& - - 8899::;;hhiijjkkYYXXWWVV))((''&& - - 8899::;;hhiijjkkLLKKJJII44556677mmllkkjj==<<;;:: - -44556677ddeeffggUUTTSSRR%%$$##"" <<==>>??llmmnnooUUTTSSRR%%$$##"" <<==>>??llmmnnooUUTTSSRR%%$$##"" <<==>>??llmmnnooUUTTSSRR%%$$##"" <<==>>??llmmnnooHHGGFFEE ==>>??@@iihhggff99887766 - - 8899::;;hhiijjkkllmmbdQZ|bdQZ|bdQZ|H~fH~f`JXQrے`JZdQbt|ZdQv`ffpvZp˂Zp˂Zp˂tAJltAJlf`vXf`vXf`vXے`Jے`J|ZdQ|ZdQ|ZdQHfpvHfpvZp˂Zp˂Zp˂tAJltAJlf`vXf`vXf`vXے`Jے`J|ZdQ|ZdQ|ZdQ~Hf`pvbHAXQ`p˂bdQZ|drtAJf`vXf`vXے`Jے`Jے`J|ZdQ|ZdQHfpvHfpvHfpvZp˂Zp˂tAJltAJltAJlf`vXf`vXے`Jے`Jے`J|ZdQ|ZdQHfpvHfpvHfpvZp˂Zp˂bdQZ|tbdQnvpvXnJXQrrZHA㙒`JXQ|ZdQ|ZdQHfpvHfpvfpvZp˂Zp˂tAJltAJlJltf`vXf`vXے`Jے`Jے`JXQ|ZdQ|ZdQHfpvHfpvfpvZp˂Zp˂tAJltAJlJltf`vXf`vXr˂pJXQrbtlZdQtArvnXv`fZp˂Zp˂drtAdrtAdrtA`vXn`vXn˂pZXQr˂lJtAbtl~HfvnnXv`rXQJ`rXQJ`rbdQZtbdQZtbdQZnvpnvpnr˂XQr˂XQr˂btlbtlbnXvnXvnXvrXQJ`rXQJ`rbdQZtbdQZtbdQZnvpnvpnr˂XQr˂XQr˂btlbtlbnXvpvnrXQJJ`ےrbdQZdrtAltbnvpnvpXQr˂XQr˂XQr˂btlbtlnXvnXvnXvrXQJ`rXQJ`tbdQZtbdQZtbdQZnvpnvpXQr˂XQr˂XQr˂btlbtlnXvnXvnXvrXQJ`rXQJ`drtAZ|dfH~vpfH˂pZHbے`rbtbtlbtlnXvnXvnrXQJrXQJ`rXQJ`tbdQZtbdQZbnvnvpnvpXQr˂XQr˂rbtbtlbtlnXvnXvnrXQJrXQJ`rXQJ`tbdQZtbdQZbnvnvpnvpZHAb˂p`J|ZdQbd|Zv`f~HfprXQJ`rXQJ`JltJltJltvpfvpfHAbp`JXQrd|JtArdXv`ff~fpےbHAےbHA|dr|dr|drfH~fH~pZHAbpZHAbpZHAbJtArdJtArd`f~`f~`f~ےbHAےbHA|dr|dr|drfH~fH~pZHAbpZHAbpZHAbJtArdJtArd`pv~Hfp`p˂bHAZp|rAJlJltdQZ|fH~fH~pZHAbpZHAbpZHAJtArdJtArd`f~`f~`fHےbHAےbHA|dr|dr|dtAfH~fH~pZHAbpZHAbpZHAJtArdJtArd`f~`f~`fHےbHAےbHAJltrtAJlf`vX~f`Abے`JXQrlJtAdJtArdJtArd`f~`f~`ےHAےbHAےbHA|dr|drpfHfH~fH~pZHAbpZHAblJtAdJtArdJtArd`f~`f~`ےHAےbHAےbHA|dr|drpfHfH~fH~˂pZXQr˂tlJdQbt璕~HfvvnXےbHAےbHAbdQZ|bdQZ|bdQZ|H~fH~f˂pZHAr˂pZdQbt|ZdQ~HfvnXZp˂Zp˂tAJltAJltAJlf`vXf`vXے`Jے`Jے`J|ZdQ|ZdQHfpvHfpvHfpvZp˂Zp˂tAJltAJltAJlf`vXf`vXے`Jے`Jے`J|ZdQ|ZdQnXv`vnXrXQJ`˂rXQtbdbQZdAJltf`vXf`vXے`Jے`Jے`JXQ|ZdQ|ZdQHfpvHfpvfpvZp˂Zp˂tAJltAJlJltf`vXf`vXے`Jے`Jے`JXQ|ZdQ|ZdQHfpvHfpvfpvZp˂Zp˂bdQZ|tbdQnvpvXH~JXQrpZHA|ZdQ|ZdQ|ZdQHfpvHfpvZp˂Zp˂Zp˂tAJltAJlf`vXf`vXf`vXے`Jے`J|ZdQ|ZdQ|ZdQHfpvHfpvZp˂Zp˂Zp˂tAJltAJlf`vXf`vXf`vXHAbےpZHAbtArdlJtArnXv`v`f~fZp˂Zp˂drtAdrtA`vXn`vXn`vXnbے`ZHAblJtAbtlpvnv`frXQJ`rXQJ`tbdQZtbdQZtbdQZnvpnvpXQr˂XQr˂XQr˂btlbtlnXvnXvnXvrXQJ`rXQJ`tbdQZtbdQZtbdQZnvpnvpXQr˂XQr˂XQr˂btlbtlf~Hv`fےbHAJ`ےQZ|drtAJlbnvnvpnvpXQr˂XQr˂rbtbtlbtlnXvnXvnrXQJrXQJ`rXQJ`tbdQZtbdQZbnvnvpnvpXQr˂XQr˂rbtbtlbtlnXvnXvnrXQJrXQJ`rXQJ`drtAZ|l`vXnf`v˂pZHbے`btlbtlbtlnXvnXvrXQJ`rXQJ`rXQJ`tbdQZtbdQZnvpnvpnvpXQr˂XQr˂btlbtlbtlnXvnXvrXQJ`rXQJ`rXQJ`tbdQZtbdQZnvpnvpnvp`JXQrے`J|ZdQbd|Zf~HpvnrXQJ`rXQJ`JltJltvpfvpfvpfJXQrے`JXQrdt|ZdQbXv`f~HfpےbHAےbHA|dr|dr|dtAfH~fH~pZHAbpZHAbpZHAJtArdJtArd`f~`f~`fHےbHAےbHA|dr|dr|dtAfH~fH~pZHAbpZHAbpZHAJtArdJtArdfpv~HfpZp˂bHAZprtAJltbdQpfHfH~fH~pZHAbpZHAblJtAdJtArdJtArd`f~`f~`ےHAےbHAےbHA|dr|drpfHfH~fH~pZHAbpZHAblJtAdJtArdJtArd`f~`f~`ےHAےbHAےbHAdQZ|tbdQZvpfXnvAbJJXQrJtArdJtArdJtArd`f~`f~ےbHAےbHAےbHA|dr|drfH~fH~fH~pZHAbpZHAbJtArdJtArdJtArd`f~`f~ےbHAےbHAےbHA|dr|drfH~fH~fH~˂pZXQr˂tlJdQbtfpvXv`fےbHAےbHAbdQZ|bdQZ|H~fH~fH~f˂pZHAr˂plJtArnXv`~HfvnXZp˂Zp˂tAJltAJlJltf`vXf`vXے`Jے`Jے`JXQ|ZdQ|ZdQHfpvHfpvfpvZp˂Zp˂tAJltAJlJltf`vXf`vXے`Jے`Jے`JXQ|ZdQ|ZdQnXv`vnXrXQJ`˂btbdZ|df`vXf`vXf`vXے`Jے`J|ZdQ|ZdQ|ZdQHfpvHfpvZp˂Zp˂Zp˂tAJltAJlf`vXf`vXf`vXے`Jے`J|ZdQ|ZdQ|ZdQHfpvHfpvZp˂Zp˂Zp˂drtAJ|drH~fpfH~Qr˂ppZAb|ZdQ|ZdQ|ZdQHfpvHfpvZp˂Zp˂Zp˂tAJltAJlf`vXf`vXf`vXے`Jے`J|ZdQ|ZdQ|ZdQHfpvHfpvZp˂Zp˂Zp˂tAJltAJlf`vXf`vXf`vXHAbےp`JXQtArdtl|ZdQnXv`~HfZp˂Zp˂drtAdrtA`vXn`vXn`vXnbے`|ZdQbd|Zf~fppvnv`frXQJ`rXQJ`tbdQZtbdQZbnvnvpnvpXQr˂XQr˂rbtbtlbtlnXvnXvnrXQJrXQJ`rXQJ`tbdQZtbdQZbnvnvpnvpXQr˂XQr˂rbtbtlbtlf~Hv`pvp˂rHAZp˂QZ|drtAJlnvpnvpnvpXQr˂XQr˂btlbtlbtlnXvnXvrXQJ`rXQJ`rXQJ`tbdQZtbdQZnvpnvpnvpXQr˂XQr˂btlbtlbtlnXvnXvrXQJ`rXQJ`rXQJ`ltbtAJl`vXnf`vZHAb`JXQrbtlbtlbnXvnXvnXvrXQJ`rXQJ`rbdQZtbdQZtbdQZnvpnvpnr˂XQr˂XQr˂btlbtlbnXvnXvnXvrXQJ`rXQJ`rbdQZtbdQZtbdQZnvpnvpnr˂`JXQHArbtlJtAbnXvf~HpvnrXQJ`rXQJ`JltJltvpfvpfr˂pJXQHAbtlJdQbtvnXvf~HrQJHAےbHAےbHA|dr|drpfHfH~fH~pZHAbpZHAblJtAdJtArdJtArd`f~`f~`ےHAےbHAےbHA|dr|drpfHfH~fH~pZHAbpZHAblJtAdJtArdJtArdXv`fnXvXQJ`ےrXQJrtAJtbdQfH~fH~fH~pZHAbpZHAbJtArdJtArdJtArd`f~`f~ےbHAےbHAےbHA|dr|drfH~fH~fH~pZHAbpZHAbJtArdJtArdJtArd`f~`f~ےbHAےbHAےbHAdQZ|tbdQZvpfXnvے`JXQ˂pZJtArdJtArd`f~`f~`f~ےbHAےbHA|dr|dr|drfH~fH~pZHAbpZHAbpZHAbJtArdJtArd`f~`f~`f~ےbHAےbHA|dr|dr|drfH~fH~p`JXQbے`l|ZdQrd|`f~fpfpvXv`fےbHAےbHAbdQZ|bdQZ|H~fH~f`JXQrے`JtArdlJtArv`ffpvZp˂Zp˂Zp˂tAJltAJlf`vXf`vXf`vXے`Jے`J|ZdQ|ZdQ|ZdQHfpvHfpvZp˂Zp˂Zp˂tAJltAJlf`vXf`vXf`vXے`Jے`J|ZdQ|ZdQ|ZdQ~Hf`f~bHAZ`ےbbdQZ|Z|rAJf`vXf`vXf`vXے`Jے`J|ZdQ|ZdQ|ZdQHfpvHfpvZp˂Zp˂Zp˂tAJltAJlf`vXf`vXf`vXے`Jے`J|ZdQ|ZdQ|ZdQHfpvHfpvZp˂Zp˂Zp˂drtAJ|ltH~p`vXr˂pHAbے|ZdQ|ZdQHfpvHfpvHfpvZp˂Zp˂tAJltAJltAJlf`vXf`vXے`Jے`Jے`J|ZdQ|ZdQHfpvHfpvHfpvZp˂Zp˂tAJltAJltAJlf`vXf`vXr˂pJXQrbtlZdQbtvnXnvffpvZp˂Zp˂drtAdrtA`vXn`vXn˂pZXQr˂|ZdQbd|Z~HfpۅnXv`rXQJ`rXQJ`rXQJ`tbdQZtbdQZnvpnvpnvpXQr˂XQr˂btlbtlbtlnXvnXvrXQJ`rXQJ`rXQJ`tbdQZtbdQZnvpnvpnvpXQr˂XQr˂btlbtlbtlpvnHfpvp˂rHAZp˂drtAltbnvpnvpnr˂XQr˂XQr˂btlbtlbnXvnXvnXvrXQJ`rXQJ`rbdQZtbdQZtbdQZnvpnvpnr˂XQr˂XQr˂btlbtlbnXvnXvnXvrXQJ`rXQJ`rbdQZltdbnvvpfHnr˂ZHAb`JXQrbtlbtlnXvnXvnXvrXQJ`rXQJ`tbdQZtbdQZtbdQZnvpnvpXQr˂XQr˂XQr˂btlbtlnXvnXvnXvrXQJ`rXQJ`tbdQZtbdQZtbdQZnvpnvpZHAb˂pZHAJtArdlJtAv`f~HfpnrXQJrXQJ`rXQJ`Zp˂JltJltvpfvpfHAbےpZHAbtl|dQtArdvnXf~HےbHAےbHAےbHA|dr|drfH~fH~fH~pZHAbpZHAbJtArdJtArdJtArd`f~`f~ےbHAےbHAےbHA|dr|drfH~fH~fH~pZHAbpZHAbJtArdJtArdJtArdXv`fnXvXQJ`ےrXQJJltdQZ|fH~fH~pZHAbpZHAbpZHAbJtArdJtArd`f~`f~`f~ےbHAےbHA|dr|dr|drfH~fH~pZHAbpZHAbpZHAbJtArdJtArd`f~`f~`f~ےbHAےbHA|ltrtAJlp`vX~f`pZAb`ے`JXQ˂pZAJtArdJtArd`f~`f~`fHےbHAےbHA|dr|dr|dtAfH~fH~pZHAbpZHAbpZHAJtArdJtArd`f~`f~`fHےbHAےbHA|dr|dr|dtAfH~fH~ے`JXQbے`|ZdQrd|~HfpvnX`ےHAےbHAےbHArXQJ`ےbHA|dr|drfH~fH~fH~pZHAbpZHAbJtArdJtArdJtArd`f~`f~ےbHAےbHAےbHA|dr|drfH~fH~fH~ZHAb˂p`ZAHr󙐂˅f۝`vf۝`vrQtJlrQtJlZp˂tAJltAJlf`vXf`vXf`vXے`Jے`J|ZdQ|ZdQ|ZdQHfpvHfpvZp˂Zp˂Zp˂tAJltAJlf`vXf`vXf`vXے`JXQQXb㉀ہ`ZQXbXnv˅Xnv˒tbAdtbAdrbdQZtbdQZtbdQZnvpnvpnr˂XQr˂XQr˂btlbtlbnXvnXvnXvrXQJ`rXQJ`rbdQZtbdQZtbdQZnvpnvpnے`JHAbےpJAHr󉀒ۑpJpfH~pfH~Z|dZ|d|dr|dr|drfH~fH~pZHAbpZHAbpZHAbJtArdJtArd`f~`f~`f~ےbHAےbHA|dr|dr|drfH~fH~XQr˂`JXQrˁ`ZAHr󙐂˅f۝`vf۝`vrQtJlrQtJltAJltAJltAJlf`vXf`vXے`Jے`Jے`J|ZdQ|ZdQHfpvHfpvHfpvZp˂Zp˂tAJltAJltAJlf`vXf`vXpZHAb˂pZQXb㉀ہ`ZQXAHXnv˅Xnv˒tbAdtbAdtbdQZtbdQZtbdQZnvpnvpXQr˂XQr˂XQr˂btlbtlnXvnXvnXvrXQJ`rXQJ`tbdQZtbdQZtbdQZnvpnvpے`JHAbےp`ZQXr󙐂ˁ`pfH~pfH~Z|dZ|d|dr|dr|dtAfH~fH~pZHAbpZHAbpZHAJtArdJtArd`f~`f~`fHےbHAےbHA|dr|dr|dtAfH~fH~XQr˂`JXQrb㉀ۑpZQXb㉀f۝`vf۝`vrQtJlrQtJltAJltAJlJltf`vXf`vXے`Jے`Jے`JXQ|ZdQ|ZdQHfpvHfpvfpvZp˂Zp˂tAJltAJlJltf`vXf`vXpZHAb˂p`JAHr󙐒ۑpJAHXnv˅Xnv˒tbAdtbAdtbdQZtbdQZbnvnvpnvpXQr˂XQr˂rbtbtlbtlnXvnXvnrXQJrXQJ`rXQJ`tbdQZtbdQZbnvnvpnvp˂pJXQrˁ`ZQXr󙐂ˁ`pfH~pfH~Z|dZ|d|dr|drpfHfH~fH~pZHAbpZHAblJtAdJtArdJtArd`f~`f~`ےHAےbHAےbHA|dr|drpfHfH~fH~ZHAb˂pZHAb㉀ۑpZQXb㉀f۝`vf۝`vrQtJlrQtJltAJltAJlf`vXf`vXf`vXے`Jے`J|ZdQ|ZdQ|ZdQHfpvHfpvZp˂Zp˂Zp˂tAJltAJlf`vXf`vXf`vXے`JXQbے`JAHr󙐅Xnv˅Xnv˅Xnv˒tbAdtbAdtbdQZtbdQZnvpnvpnvpXQr˂XQr˂btlbtlbtlnXvnXvrXQJ`rXQJ`rXQJ`tbdQZtbdQZnvpnvpnvpr˂pJXQrۑpJpfH~pfH~p|dZ|dZ|drQtqrstuvwxxwvutsr \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv26_2.dat b/mpdf/qrcode/data/qrv26_2.dat deleted file mode 100644 index 9b026a0..0000000 Binary files a/mpdf/qrcode/data/qrv26_2.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv26_3.dat b/mpdf/qrcode/data/qrv26_3.dat deleted file mode 100644 index 35f6746..0000000 --- a/mpdf/qrcode/data/qrv26_3.dat +++ /dev/null @@ -1,241 +0,0 @@ -xwxwxwxwvuvuvuvutstststspopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWSTSTSTSTRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIFEFEFEFExwxwxwxwvuvuvuvutstststsooooopopnmnmnmnmlklklklkjijijijihghghghgfefefefedcbababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWSTSTSTSTRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIFEFEFEFExwxwxwxwvuvuvuvutstststsopopopopnmnmnmnmlklklklkjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWSTSTSSSSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIHGHGHGFEFEFEFExwxwxwxwvuvuvuvutstststsopopopopnmnmnmnmlklklklkjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWSSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFExwxwxwxwvuvuvuvutstststsopopopopnmnmnmnmlklklklkjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFExwxwxwxwvuvuvuvutstststsopopopopnmnmnmnmlklklklkjijijijihghghghgfedcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFExwxwxwxwvuvuvuvutstststsopopopopnmnmnmnmlklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKJIJIJIHGHGHGHGFEFEFEFExwxwxwxwvuvuvuvutstststsopoooooonmnmnmnmlklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGFEFEFEFExwxwxwxwvuvuvuvutstststspopopoponmnmnmnmlklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGFEFEFEFExwxwxwxwvuvuvuvutstststspopopoponmnmnmnmlklklklkjijijijihgfefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUSSSSSTSTRQRQRQRQPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGFEFEFEFExwxwxwxwvuvuvuvutstststspopopoponmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUSTSTSTSTRQRQRQRQPOPOPOPONMLKLKLKJIJIJIJIHGHGHGHGFEFEFEFExwxwxwxwvuvuvuvurqrqrqrqpopopoponmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUSTSTSTSTRQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFExwxwxwxwvuvuvuvurqrqrqrqpopopoponmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUSTSTSTSTRQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFExwxwxwxwvuvuvuvurqrqrqrqpopopooonmnmnmnmlklklklkjihghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUSTSTSTSTRQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFExwxwxwxwvuvuvuvurqrqrqrqooopopopnmnmnmnmlklklklkhghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUSTSTSTSTRQRQRQRQPONMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFExwxwxwxwvuvuvuvurqrqrqrqopopopopnmnmnmnmlklklklkhghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYXWXWXWVUVUVUVUSTSSSSSSRQRQRQRQNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFExwxwxwxwvuvuvuvurqrqrqrqopopopopnmnmnmnmlklklklkhghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFExwxwxwxwvuvuvuvurqrqrqrqopopopopnmnmnmnmlkjijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFExwxwxwxwvuvuvuvurqrqrqrqopopopopnmnmnmnmjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUTSTSTSTSRQPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFExwxwxwxwvuvuvuvurqrqrqrqopopopopnmnmnmnmjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[ZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFExwxwxwxwvuvuvuvurqrqrqrqooooooponmnmnmnmjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSSSPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFExwxwxwxwvuvuvuvurqrqrqrqpopopoponmlklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVUSSTSTSTSPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFExwxwxwxwtstststsrqrqrqrqpopopopolklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVUTSRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFExwxwxwxwtstststsrqrqrqrqpopopopolklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFExwxwxwxwtstststsrqrqrqrqpopopopolklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFExwxwxwxwtstststsrqrqrqrqpopopopolklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFExwxwxwxwtstststsrqrqrqrqmmmmmmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFExwxwxwxwtstststsrqrqrqrqnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEvuvuvuvutstststsrqrqrqrqnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEDCDCDCDCDCDCDCvuvuvuvutstststsrqrqrqrqnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGDCDCDCDCDCDCDCDCvuvuvuvutstststsrqrqrqrqnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWTSSSSSSTRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGDCDCDCDCDCDCDCDCvuvuvuvutstststsrqrqrqrqnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcba`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWSTSTSTSTRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGDCDCDCDCDCDCDCDCvuvuvuvutstststsrqrqrqrqnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWSTSTSTSTRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGFEFEFEDCDCDCDCDCDCDCDCvuvuvuvutstststsrqrqrqrqnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWSTSTSTSTRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCDCBABABABA@?@?@?@?>=>=>=>=:9:9:9:977777878656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!    - - - - DCDCDCDCBABABABA@?@?@?@?>=>=>=>=:9:9:9:9787878786565656543434343210/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!    - - - - DCDCDCDCBABABABA@?@?@?@?>=>=>=>=:9:9:9:97878787865656565434343430/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!    - - - - DCDCDCDCBABABABA@?@?@?@?>=>=>=>=:9:9:9:97878787865656565434343430/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!       - - - - DCDCDCDCBABABABA@?@?@?@?>=>=>=>=:9:9:9:97878787865656565434343430/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#        - - - - DCDCDCDCBABABABA@?@?@?@?>=>=>=>=:9:9:9:97878787865656565432121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#        - - - - DCDCDCDCBABABABA@?@?@?@?>=<;<;<;:9:9:9:97877777765656565212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#        - - - - DCDCDCDCBABABABA@?@?@?@?<;<;<;<;:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#"!"!"!        - - - - DCDCDCDCBABABABA@?@?@?@?<;<;<;<;:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!        - DCDCDCDCBABABABA@?@?@?@?<;<;<;<;:9:9:9:98787878765434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!        DCDCDCDCBABABABA@?>=>=>=<;<;<;<;:9:9:9:98787878743434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!        DCDCDCDCBABABABA>=>=>=>=<;<;<;<;:9:9:9:98787877743434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%$#$#$#"!"!"!"!        DCDCDCDCBABABABA>=>=>=>=<;<;<;<;:9:9:9:97787878743434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!        - - - DCDCDCDCBABABABA>=>=>=>=<;<;<;<;:9:9:9:98765656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!        - - - - DCDCDCDCBA@?@?@?>=>=>=>=<;<;<;<;:9:9:9:96565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!        - - - - DCDCDCDC@?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:96565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('&%&%&%$#$#$#$#"!"!"!"!        - - - - DCDCDCDC@?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:96565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!     - - - - DCDCDCDC@?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:96565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!     - - - - DCBABABA@?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:96565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!     - - - - BABABABA@?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:96565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)('('('&%&%&%&%$#$#$#$#"!"!"!"!     - - - - BABABABA@?@?@?@?>=>=>=>=<;<;<;<;:98787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#"!"!"!"!       - - - - BABABABA@?@?@?@?>=>=>=>=<;<;<;<;877777786565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - BABABABA@?@?@?@?>=>=>=>=<;<;<;<;787878786565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - BABABABA@?@?@?@?>=>=>=>=<;<;<;<;787878786565656543434343212121210/0/0/0/.-.-.-.-,+*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - BABABABA@?@?@?@?>=>=>=>=<;<;<;<;787878786565656543434343212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - BABABABA@?@?@?@?>=>=>=>=<;<;<;<;787878786565656543434343212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - BABABABA@?@?@?@?>=>=>=>=<;<;<;<;787878786565656543434343212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - BABABABA@?@?@?@?>=>=>=>=<;<;<;<;787877776565656543434343212121210/0/0/0/.-,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!     - - - - BABABABA@?@?@?@?>=>=>=>=<;<;<;<;778787876565656543434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!    - - - - BABABABA@?@?@?@?>=>=>=>=<;<;<;<;878787876565656543434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!    - - - - BABABABA@?@?@?@?>=>=>=>=<;:9:9:9878787876565656543434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!    - - - - BABABABA@?@?@?@?>=>=>=>=:9:9:9:9878787876565656543434343212121210/.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!    - - - - BABABABA@?@?@?@?>=>=>=>=:9:9:9:987878787656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!    - - - - BABABABA@?@?@?@?>=>=>=>=:9:9:9:987878787656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!    - - - - xxwwvvuu!!""##$$>>==7766xxwwvvuu$$%%&&''EEDDCCBBDDEEFFGG%%$$##""ddeeffggmmllkkjjMMLLKKJJ<<==>>??cbbaa``_0011223399887766PPQQRRSSppqqrrss - - ttssrrqq%%&&''((55443322tsrqpoon(())**++AA@@??>>HHIIJJKK!! hhiijjkkiihhggff !!""##IIHHGGFF@@AABBCC_^^]]\\[4455667755443322TTUUVVWWttuuvvww ppoonnmm))**++,,1100//..nmmllkkj,,--..//==<<;;::LLMMNNOOllmmnnooeeddccbb$$%%&&''EEDDCCBBDDEEFFGG[ZZYYXWV8899::;;1100//..XXYYZZ[[xxxxwwvvllkkjjii--..//00--,,++**jiihhggf0011223399887766PPQQRRSSppqqrrss - - aa``__^^(())**++AA@@??>>HHIIJJKK - -UTSSRRQQ<<==>>??--,,++**\\]]^^__ - -uuttssrrhhggffee11223344))((''&&feeddccb4455667755443322TTUUVVWWttuuvvww ]]\\[[ZZ,,--..//==<<;;::LLMMNNOO PPOONNMM@@AABBCC))((''&&``aabbcc qqppoonnddccbbaa55667788%%$$##""baa``__^8899::;;1100//..XXYYZZ[[xxxxwwvvYYXXWWVV0011223399887766PPQQRRSSLLKKJJIIDDEEFFGG%%$$##""ddeeffggmmllkkjj``__^^]]99::;;<>??--,,++**\\]]^^__ - -uuttssrrUUTTSSRR4455667755443322TTUUVVWW - - HHGGFFEEHHIIJJKK!! hhiijjkkiihhggff !!""##\\[[ZZYY==>>??@@ZYYXWVUT@@AABBCC))((''&&``aabbcc qqppoonnQQPPOONN8899::;;1100//..XXYYZZ[[ DDCCBBAALLMMNNOOllmmnnooeeddccbb$$%%&&''XXWWVVUUAABBCCDDSSRRQQPPDDEEFFGG%%$$##""ddeeffggmmllkkjjMMLLKKJJ<<==>>??--,,++**\\]]^^__@@??>>==PPQQRRSSppqqrrss - - aa``__^^(())**++TTSSRRQQEEFFGGHH OONNMMLLHHIIJJKK!! hhiijjkkiihhggff !!""##IIHHGGFF@@AABBCC))((''&&``aabbcc<;:98776TTUUVVWWttuuvvww ]]\\[[ZZ,,--..//PPOONNMMIIJJKKLL - - KKJJIIHHLLMMNNOOllmmnnooeeddccbb$$%%&&''EEDDCCBBDDEEFFGG%%$$##""ddeeffgg65544332XXYYZZ[[xxxxwwvvYYXXWWVV00112233LLKKJJIIMMNNOOPP - - GGFFEEDDPPQQRRSSppqqrrss - - aa``__^^(())**++AA@@??>>HHIIJJKK!! hhiijjkk!!""##$$21100//.\\]]^^__ - -uuttssrrUUTTSSRR44556677HHGGFFEEQQRRSSTT CCBBAA@@TTUUVVWWttuuvvww ]]\\[[ZZ,,--..//==<<;;::LLMMNNOOllmmnnoo%%&&''((.--,,++*``aabbcc qqppoonnQQPPOONN8899::;;DDCCBBAAUUVVWWXX??>>==<;XXYYZZ[[xxxxwwvvYYXXWWVV0011223399887766PPQQRRSSppqqrrss))**++,,*))((''&ddeeffggmmllkkjjMMLLKKJJ<<==>>??@@??>>==YYZZ[[\\:9877665\\]]^^__ - -uuttssrrUUTTSSRR4455667755443322TTUUVVWWttuuvvww--..//00&%%$$##"hhiijjkkiihhggff !!""##IIHHGGFF@@AABBCC<<;;::99]]^^__``!!54433221``aabbcc qqppoonnQQPPOONN8899::;;1100//..XXYYZZ[[xxxxwwvv11223344"!! llmmnnooeeddccbb$$%%&&''EEDDCCBBDDEEFFGG88776655aabbccdd""##$$%%100//..-ddeeffggmmllkkjjMMLLKKJJ<<==>>??--,,++**\\]]^^__ - -uuoonnmm556677==ppqqrrss - - aa``__^^(())**++AA@@??>>HHIIJJKK44332211eeffgghh&&''(())-,,++**)hhiijjkkiihhggff !!""##IIHHGGFF@@AABBCC))((''&&``aabbcc llkkjjii>>??@@AAttuuvvww ]]\\[[ZZ,,--..//==<<;;::LLMMNNOO00//..--iijjkkll**++,,--)((''&&%llmmnnooeeddccbb$$%%&&''EEDDCCBBDDEEFFGG%%$$##""ddeeffgghhggffeeBBCCDDEExxxxwwvvYYXXWWVV0011223399887766PPQQRRSS,,++**))mmnnoopp..//0011%$$##""!ppqqrrss - - aa``__^^(())**++AA@@??>>HHIIJJKK!! hhiijjkkddccbbaaFFGGHHII uuttssrrUUTTSSRR4455667755443322TTUUVVWW((''&&%%qqrrsstt22334455! ttuuvvww ]]\\[[ZZ,,--..//==<<;;::LLMMNNOOllmmnnoo``__^^]]JJKKLLMM - - qqppoonnQQPPOONN8899::;;1100//..XXYYZZ[[$$##""!!uuvvwwxx6677==>>xxxxwwvvYYXXWWVV0011223399887766PPQQRRSSppqqrrss - - \\[[ZZYYNNOOPPQQmmllkkjjMMLLKKJJ<<==>>??--,,++**\\]]^^__ xxwwvvuu??@@AABBuuttssrrUUTTSSRR4455667755443322TTUUVVWWttuuvvww SSRRQQPPRRSSYYZZiihhggff !!""##IIHHGGFF@@AABBCC))((''&&``aabbccoonnmmllCCDDEEFFqqppoonnQQPPOONN8899::;;1100//..XXYYZZ[[xxxxwwvvOONNMMLL[[\\]]^^eeddccbb$$%%&&''EEDDCCBBDDEEFFGG%%$$##""ddeeffggkkjjiihhGGHHIIJJ mmllkkjjMMLLKKJJ<<==>>??--,,++**\\]]^^__ - -uuttssrrKKJJIIHH__``aabb - - aa``__^^(())**++AA@@??>>HHIIJJKK!! hhiijjkkggffeeddKKLLMMNN - - iihhggff !!""##IIHHGGFF@@AABBCC))((''&&``aabbcc qqppoonnGGFFEEDDccddeeff ]]\\[[ZZ,,--..//==<<;;::LLMMNNOOllmmnnoo ccbbaa``OOPPQQRReeddccbb$$%%&&''EEDDCCBBDDEEFFGG%%$$##""ddeeffggmmllkkjjCCBBAA@@gghhiijjYYXXWWVV0011223399887766PPQQRRSSppqqrrss - - __^^]]\\SSYYZZ[[ - - aa``__^^(())**++AA@@??>>HHIIJJKK!! hhiijjkkiihhggff !!""##??>>==77kkllmmnnUUTTSSRR4455667755443322TTUUVVWWttuuvvww - - [[ZZYYSS\\]]^^__ ]]\\[[ZZ,,--..//==<<;;::LLMMNNOOllmmnnooeeddccbb$$%%&&''66554433oouuvvwwQQPPOONN8899::;;1100//..XXYYZZ[[xxxxwwvvaa``__^^ RRQQPPOO``aabbccYYXXWWVV0011223399887766PPQQRRSSppqqrrss - - aa``__^^(())**++221100//xxxxwwvvMMLLKKJJ<<==>>??--,,++**\\]]^^__ - -uuttssrr]]\\[[ZZNNMMLLKKddeeffggUUTTSSRR4455667755443322TTUUVVWWttuuvvww ]]\\[[ZZ,,--..//..--,,++uutsrqpo !!""##IIHHGGFF@@AABBCC))((''&&``aabbcc qqppoonnYYXXWWVVJJIIHHGGhhiijjkkQQPPOONN8899::;;1100//..XXYYZZ[[xxxxwwvvYYXXWWVV00112233**))((''onnmmllk$$%%&&''EEDDCCBBDDEEFFGG%%$$##""ddeeffggmmllkkjjUUTTSSRRFFEEDDCCllmmnnooMMLLKKJJ<<==>>??--,,++**\\]]^^__ - -uuttssrrUUTTSSRR44556677&&%%$$##kjjiihhg(())**++AA@@??>>HHIIJJKK!! hhiijjkkiihhggffQQPPOONN BBAA@@??uuvvwwxx !!""##IIHHGGFF@@AABBCC))((''&&``aabbcc qqppoonnQQPPOONN8899::;;""!!gffeeddc,,--..//==<<;;::LLMMNNOOllmmnnooeeddccbbMMLLKKJJIIHHGGFF@@AABBCC))((''&&``aabbcc<;:98776TTUUVVWWttuuvvww ]]\\[[ZZ,,--..//==<<;;::LLMMNNOOllmmnnoo%%&&''((.--,,++*``aabbcc qqppoonnQQPPOONN8899::;;1100//..XXYYZZ[[--,,++**EEDDCCBBDDEEFFGG%%$$##""ddeeffgg65544332XXYYZZ[[xxxxwwvvYYXXWWVV0011223399887766PPQQRRSSppqqrrss))**++,,*))((''&ddeeffggmmllkkjjMMLLKKJJ<<==>>??--,,++**\\]]^^__!!""##))((''&&AA@@??>>HHIIJJKK!! hhiijjkk!!""##$$21100//.\\]]^^__ - -uuttssrrUUTTSSRR4455667755443322TTUUVVWWttuuvvww--..//00&%%$$##"hhiijjkkiihhggff !!""##IIHHGGFF@@AABBCC))((''&&``aabbcc$$%%&&''%%$$##""==<<;;::LLMMNNOOllmmnnoo%%&&''((.--,,++*``aabbcc qqppoonnQQPPOONN8899::;;1100//..XXYYZZ[[xxxxwwvv11223344"!! llmmnnooeeddccbb$$%%&&''EEDDCCBBDDEEFFGG%%$$##""ddeeffgg(())**++!! 99887766PPQQRRSSppqqrrss))**++,,*))((''&ddeeffggmmllkkjjMMLLKKJJ<<==>>??--,,++**\\]]^^__ - -uuoonnmm556677==ppqqrrss - - aa``__^^(())**++AA@@??>>HHIIJJKK!! hhiijjkk,,--..//55443322TTUUVVWWttuuvvww--..//00&%%$$##"hhiijjkkiihhggff !!""##IIHHGGFF@@AABBCC))((''&&``aabbcc llkkjjii>>??@@AAttuuvvww ]]\\[[ZZ,,--..//==<<;;::LLMMNNOOllmmnnoo001122331100//..XXYYZZ[[xxxxwwvv11223344"!! llmmnnooeeddccbb$$%%&&''EEDDCCBBDDEEFFGG%%$$##""ddeeffgghhggffeeBBCCDDEExxxxwwvvYYXXWWVV0011223399887766PPQQRRSSppqqrrss44556677--,,++**\\]]^^__ - -uuoonnmm556677==ppqqrrss - - aa``__^^(())**++AA@@??>>HHIIJJKK!! hhiijjkkddccbbaaFFGGHHII uuttssrrUUTTSSRR4455667755443322TTUUVVWWttuuvvww==>>??@@))((''&&``aabbcc llkkjjii>>??@@AAttuuvvww ]]\\[[ZZ,,--..//==<<;;::LLMMNNOOllmmnnoo``__^^]]JJKKLLMM - - qqppoonnQQPPOONN8899::;;1100//..XXYYZZ[[xxppoonnAABBCCDD - -%%$$##""ddeeffgghhggffeeBBCCDDEExxxxwwvvYYXXWWVV0011223399887766PPQQRRSSppqqrrss - - \\[[ZZYYNNOOPPQQmmllkkjjMMLLKKJJ<<==>>??--,,++**\\]]^^__ - -mmllkkjjEEFFGGHH - - !! hhiijjkkddccbbaaFFGGHHII uuttssrrUUTTSSRR4455667755443322TTUUVVWWttuuvvww SSRRQQPPRRSSYYZZiihhggff !!""##IIHHGGFF@@AABBCC))((''&&``aabbcc iihhggffIIJJKKLL llmmnnoo``__^^]]JJKKLLMM - - qqppoonnQQPPOONN8899::;;1100//..XXYYZZ[[xxxxwwvvOONNMMLL[[\\]]^^eeddccbb$$%%&&''EEDDCCBBDDEEFFGG%%$$##""ddeeffggeeddccbbMMNNOOPPppqqrrss - - \\[[ZZYYNNOOPPQQmmllkkjjMMLLKKJJ<<==>>??--,,++**\\]]^^__ - -uuttssrrKKJJIIHH__``aabb - - aa``__^^(())**++AA@@??>>HHIIJJKK!! hhiijjkkaa``__^^QQRRSSYYttuuvvww SSRRQQPPRRSSYYZZiihhggff !!""##IIHHGGFF@@AABBCC))((''&&``aabbcc qqppoonnGGFFEEDDccddeeff ]]\\[[ZZ,,--..//==<<;;::LLMMNNOOllmmnnoo]]\\[[ZZZZ[[\\]]xxxxwwvvOONNMMLL[[\\]]^^eeddccbb$$%%&&''EEDDCCBBDDEEFFGG%%$$##""ddeeffggmmllkkjjCCBBAA@@gghhiijjYYXXWWVV0011223399887766PPQQRRSSppqqrrss - - YYSSRRQQ^^__``aa - -uuttssrrKKJJIIHH__``aabb - - aa``__^^(())**++AA@@??>>HHIIJJKK!! hhiijjkkiihhggff !!""##??>>==77kkllmmnnUUTTSSRR4455667755443322TTUUVVWWttuuvvww PPOONNMMbbccddee !!""## qqppoonnGGFFEEDDccddeeff ]]\\[[ZZ,,--..//==<<;;::LLMMNNOOllmmnnooeeddccbb$$%%&&''66554433oouuvvwwQQPPOONN8899::;;1100//..XXYYZZ[[xxxxwwvvLLKKJJIIffgghhii$$%%&&''mmllkkjjCCBBAA@@gghhiijjYYXXWWVV0011223399887766PPQQRRSSppqqrrss - - aa``__^^(())**++221100//xxxxwwvvMMLLKKJJ<<==>>??--,,++**\\]]^^__ - -uuttssrrHHGGFFEEjjkkllmm(())**++iihhggff !!""##??>>==77kkllmmnnUUTTSSRR4455667755443322TTUUVVWWttuuvvww ]]\\[[ZZ,,--..//..--,,++uutsrqpo !!""##IIHHGGFF@@AABBCC))((''&&``aabbcc qqppoonnDDCCBBAAmmllkkjj,,--..//eeddccbb$$%%&&''66554433oouuvvwwQQPPOONN8899::;;1100//..XXYYZZ[[xxxxwwvvYYXXWWVV00112233**))((''onnmmllk$$%%&&''EEDDCCBBDDEEFFGG%%$$##""ddeeffggmmllkkjj@@??>>==iihhggff00112233 - - aa``__^^(())**++221100//xxxxwwvvMMLLKKJJ<<==>>??--,,++**\\]]^^__ - -uuttssrrUUTTSSRR44556677&&%%$$##kjjiihhg(())**++AA@@??>>HHIIJJKK!! hhiijjkkiihhggff !!""##77665544eeddccbb44556677 ]]\\[[ZZ,,--..//..--,,++uutsrqpo !!""##IIHHGGFF@@AABBCC))((''&&``aabbcc qqppoonnQQPPOONN8899::;;""!!gffeeddc,,--..//==<<;;::LLMMNNOOllmmnnooeeddccbb$$%%&&''33221100aa``__^^8899::;;YYXXWWVV00112233**))((''onnmmllk$$%%&&''EEDDCCBBDDEEFFGG%%$$##""ddeeffggmmllkkjjMMLLKKJJ<<==>>??cbbaa``_0011223399887766PPQQRRSSppqqrrss - - aa``__^^(())**++//..--,,]]\\[[ZZ<<==>>??UUTTSSRR44556677&&%%$$##kjjiihhg(())**++AA@@??>>HHIIJJKK!! hhiijjkkiihhggff !!""##IIHHGGFF@@AABBCC_^^]]\\[4455667755443322TTUUVVWWttuuvvww ]]\\[[ZZ,,--..//++**))((YYXXWWVV@@AABBCCQQPPOONN8899::;;""!!gffeeddc,,--..//==<<;;::LLMMNNOOllmmnnooeeddccbb$$%%&&''EEDDCCBBDDEEFFGG[ZZYYXWV8899::;;1100//..XXYYZZ[[xxxxwwvvYYXXWWVV00112233''&&%%$$UUTTSSRRDDEEFFGGMMLLKKJJ<<==>>??cbbaa``_0011223399887766PPQQRRSSppqqrrss - - aa``__^^(())**++AA@@??>>HHIIJJKK - -UTSSRRQQ<<==>>??--,,++**\\]]^^__ - -uuttssrrUUTTSSRR44556677##""!!QQPPOONNHHIIJJKK !!""##IIHHGGFF@@AABBCC_^^]]\\[4455667755443322TTUUVVWWttuuvvww ]]\\[[ZZ,,--..//==<<;;::LLMMNNOO PPOONNMM@@AABBCC))((''&&``aabbcc qqppoonnQQPPOONN8899::;;MMLLKKJJLLMMNNOO$$%%&&''EEDDCCBBDDEEFFGG[ZZYYXWV8899::;;1100//..XXYYZZ[[xxxxwwvvYYXXWWVV0011223399887766PPQQRRSSLLKKJJIIDDEEFFGG%%$$##""ddeeffggmmllkkjjMMLLKKJJ<<==>>??IIHHGGFFPPQQRRSS(())**++AA@@??>>HHIIJJKK - -UTSSRRQQ<<==>>??--,,++**\\]]^^__ - -uuttssrrUUTTSSRR4455667755443322TTUUVVWW - - HHGGFFEEHHIIJJKK!! hhiijjkkiihhggff !!""##IIHHGGFF@@AABBCCEEDDCCBBTTUUVVWW,,--..//==<<;;::LLMMNNOO PPOONNMM@@AABBCC))((''&&``aabbcc qqppoonnQQPPOONN8899::;;1100//..XXYYZZ[[ DDCCBBAALLMMNNOOllmmnnooeeddccbb$$%%&&''EEDDCCBBDDEEFFGG AA@@??>>XXYYZZ[[0011223399887766PPQQRRSSLLKKJJIIDDEEFFGG%%$$##""ddeeffggmmllkkjjMMLLKKJJ<<==>>??--,,++**\\]]^^__@@??>>==PPQQRRSSppqqrrss - - aa``__^^(())**++AA@@??>>HHIIJJKK - - - -==<<;;::\\]]^^__4455667755443322TTUUVVWW - - HHGGFFEEHHIIJJKK!! hhiijjkkiihhggff !!""##IIHHGGFF@@AABBCC))((''&&``aabbcc<;:98776TTUUVVWWttuuvvww ]]\\[[ZZ,,--..//==<<;;::LLMMNNOO 99887766``aabbcc8899::;;1100//..XXYYZZ[[ DDCCBBAALLMMNNOOllmmnnooeeddccbb$$%%&&''EEDDCCBBDDEEFFGG%%$$##""ddeeffgg65544332XXYYZZ[[xxxxwwvvYYXXWWVV0011223399887766PPQQRRSS55443322ddeeffgg<<==>>??--,,++**\\]]^^__@@??>>==PPQQRRSSppqqrrss - - aa``__^^(())**++AA@@??>>HHIIJJKK!! hhiijjkk!!""##$$21100//.\\]]^^__ - -uuttssrrUUTTSSRR4455667755443322TTUUVVWW1100//..hhiijjkkllmmbdQZ|`vXnJXQHAbnXv`rXQJ`|drf`vXXQr˂JtArdfpvtbdQZfH~ے`JbtlnXvtbdnvppZHAb|ZdQnXvےbHAf`vXdrtAvpfے`Jf~fpےbHAtAJlnvppZHAb|ZdQnrXQJ|drf`vXXQr˂JtArd`f~QZ|dfH~ے`Jbtl`f~Zp˂nvpJltH~fXQr˂vnXZp˂tbdQZfH~ے`Jbtl`ےHAtAJlnvppZHAb|ZdQHfpvrtAJf`vXXQr˂JtArdHfpvrbdQZfH~bdQZ|`vXnpZHAbv`frXQJ`|drf`vXXQr˂JtArdZp˂tbdQZfH~ے`JbtlnXvbdQZ|nvppZHAb|ZdQnXv|drf`vXdrtAvpfے`J~HfpےbHAtAJlnvppZHAb|ZdQrXQJ`|drf`vXXQr˂JtArd`pvdrtAfH~ے`Jbtl`fHtAJlnvpJltH~fXQr˂vnXZp˂tbdQZfH~ے`JbnXvےbHAtAJlnvppZHAb|ZdQnrXQJJltf`vXXQr˂JtArdfpvtbdQZfH~bdQZ|`vXnp`JXQv`frXQJ`|drf`vXXQr˂`f~Zp˂tbdQZfH~ے`Jbtl`p˂bdQZ|nvppZHAb|ZdQnrXQJ|drf`vXdrtAvpfr˂p~HfvnےbHAtAJlnvppZHAHfpvrXQJ`|drf`vXXQr˂JtArdrXQJ`drtAfH~ے`Jbtl`ےHAtAJlnvpJltH~fZHAbXv`fZp˂tbdQZfH~ے`JXQnXvےbHAtAJlnvppZHAb|ZdQےbHAJltf`vXXQr˂JtArdZp˂tbdQZfH~bdQZ|`vXnے`JXQ~HfrXQJ`|drf`vXrbt`f~Zp˂tbdQZfH~ے`JbtlZp˂bQZdnvppZHAb|ZdQrXQJ`|drf`vXdrtAvpfr˂ppvnےbHAtAJlnvplJtAdHfpvrXQJ`|drf`vXXQr˂JtArdrXQJ`rtAJlfH~ے`JbnXvےbHAtAJlnvpJltH~f|ZdQbXv`fZp˂tbdQZfH~|ZdQnXvےbHAtAJlnvppZHAb|ZdQp˂rtbdQf`vXXQr˂`f~Zp˂tbdQZfH~bdQZ|`vXntlJ~HfrXQJ`|drf`vXbtl`f~Zp˂tbdQZfH~ے`JbtlXQJ`ےZ|dnvppZHAHfpvrXQJ`|drf`vXdrtAvpftArdpvnےbHAtAJlnr˂JtArdHfpvrXQJ`|drf`vXXQr˂JtArdbHAZrtAJlfH~ے`JXQnXvےbHAtAJlnvpJltH~f|ZdQbvf~HZp˂tbdQZpZHAb|ZdQnXvےbHAtAJlnvppZHAb|ZdQp˂rtbdQf`vXrbt`f~Zp˂tbdQZfH~bdQZ|`vXntl|fpvrXQJ`|dtAے`Jbtl`f~Zp˂tbdQZfH~ے`JbnXvXQJ`ےZ|rAJnvplJtAdHfpvrXQJ`|drf`vXdrtAvpfZdQbtnXv`ےbHAJltXQr˂JtArdHfpvrXQJ`|drf`vXXQr˂`pvbHAXQltbfH~|ZdQnXvےbHAtAJlnvpJltH~flJtAf~HZp˂bnvpZHAb|ZdQnXvےbHAtAJlnvppZHAnXv`J`ےdQZ|f`vXbtl`f~Zp˂tbdQZfH~bdQZ|`vXnrd|fpvrXQJ`pfHے`Jbtl`f~Zp˂tbdQZfH~ے`JXQf~HbHAZpdrtAJnr˂JtArdHfpvrXQJ`|drf`vXdrtAvpfZdQbtnXv`ےbHAf`vXXQr˂JtArdHfpvrXQJ`|drf`vXrbtfpv˂rXQltbpZHAb|ZdQnXvےbHAtAJlnvpJltH~flJtAf~fpZp˂nvppZHAb|ZdQnXvےbHAtAJlnvplJtAdnXv`J`ےdQZ|ے`Jbtl`f~Zp˂tbdQZfH~bdQZ|`vXnrdtvnXrbdQZfH~ے`Jbtl`f~Zp˂tbdQZfH~|ZdQf~HbHAZpAJltXQr˂JtArdHfpvrXQJ`|drf`vXdrtAr˂plJtArv`f|drf`vXXQr˂JtArdHfpvrXQJ`|drf`vXbtlXv`f˂bbnvpZHAb|ZdQnXvےbHAtAJlnvpJlt`JXQrd|Z~HfptAJlnvppZHAb|ZdQnXvےbHAtAJlnr˂JtArd~HfHAZp˂pfHے`Jbtl`f~Zp˂tbdQZfH~bdQZ|˂pZdQbtvnXtbdQZfH~ے`Jbtl`f~Zp˂tbdQZpZHAb|ZdQpvnrXQJf`vXXQr˂JtArdHfpvrXQJ`|drf`vXdrtAHAbےlJtArv`f|drf`vXXQr˂JtArdHfpvrXQJ`|dtAے`JbtlXv`f`ےbnvppZHAb|ZdQnXvےbHAtAJlnvpJlt`JXQrd|ZrQJHAtAJlnvppZHAb|ZdQnXvےbHAJltXQr˂JtArd~HfHAZp˂fH~ے`Jbtl`f~Zp˂tbdQZfH~bdQZ|˂pZdQtArdZp˂tbdQZfH~ے`Jbtl`f~Zp˂bnvpZHAb|ZdQpvrXQJf`vXXQr˂JtArdHfpvrXQJ`|drf`vX`vXnHAb|ZdQrXQJ`|drf`vXXQr˂JtArdHfpvrXQJ`pfHے`Jbtl~Hfp`p˂nvppZHAb|ZdQnXvےbHAtAJlnr˂XQr˂vpf˂pZHAbtlےbHAtAJlnvppZHAb|ZdQnXvےbHAf`vXXQr˂JtArdvnXrbdQZfH~ے`Jbtl`f~Zp˂tbdQZpZHAbpZHAbH~fbے`JtArdZp˂tbdQZfH~ے`Jbtl`f~Zp˂nvppZHAb|ZdQv`f|rAJlf`vXXQr˂JtArdHfpvrXQJ`|dtAے`Jے`J`vXnJXQr|ZdQrXQJ`|drf`vXXQr˂JtArdHfpvrbdQZfH~ے`Jbtl~HfptbdnvppZHAb|ZdQnXvےbHAJltXQr˂XQr˂vpf˂pZHAbtlےbHAtAJlnvppZHAb|ZdQnXv|drf`vXXQr˂JtArdvnXQZ|dfH~ے`Jbtl`f~Zp˂bnvpZHAbpZHAbH~fbے`|ZdQbZp˂tbdQZfH~ے`Jbtl`fHtAJlnvppZHAb|ZdQv`pvrtAJlf`vXXQr˂JtArdHfpvrXQJ`pfHے`Jے`JXQr˂JtArdHfpvrXQJ`f`vXrZHAbtl`f~Zp˂nvppZHAb|ZdQnXvےbHAtAJlnvptlJv`frXQJ`|dtAے`Jbtl`f~Zp˂tbdQZfH~QXb㉀ۍpfH~pZHAb|ZdQnXvےbHAnvpbے`JtArdHfpvrbdQZfH~ے`Jbtl`f~Zp˂tbdQZfH~tArd~HfpےbHAJltXQr˂JtArdHfpvrXQJ`|drf`vXp`ZQXf۝`vے`Jbtl`f~Zp˂`vXnJXQr|ZdQnXv|drf`vXXQr˂JtArdHfpvrXQJ`|drf`vX|ZdQbvnXZp˂bnvpZHAb|ZdQnXvےbHAtAJlnvpb㉀ۑpXnvXQr˂JtArdHfpvrXQJ`vpfpZHAbtl`fHtAJlnvppZHAb|ZdQnXvےbHAtAJlnr˂tlJv`f~frXQJ`pfHے`Jbtl`f~Zp˂tbdQZfH~JAHr󙐍pfH~pZHAb|ZdQnXvےbHAH~fbے`JtArdfpvtbdQZfH~ے`Jbtl`f~Zp˂tbdQZp`JXQtArdtpvnےbHAf`vXXQr˂JtArdHfpvrXQJ`|drf`vXˁ`ZQXf۝`vے`Jbtl`f~Zp˂`vXnJXQr|ZdQnrXQJ|drf`vXXQr˂JtArdHfpvrXQJ`|dtAr˂plJtAXv`fZp˂nvppZHAb|ZdQnXvےbHAtAJlnvpb㉀ۑpXnvXQr˂JtArdHfpvrbdQZvpfpZAbbtl`ےHAtAJlnvppZHAb|ZdQnXvےbHAJltZHAbrd|~HfrbdQZfH~ے`Jbtl`f~Zp˂tbdQZfH~JAHr󙐍pfH~pZHAb|ZdQnXv|ltH~`JXQrJtArdZp˂tbdQZfH~ے`Jbtl`f~Zp˂bnvے`JXQZdQbtpvn|drf`vXXQr˂JtArdHfpvrXQJ`|drf`vXۑpJf۝`vے`Jbtl`fHbdQZ|vpfH˂pZ|ZdQrXQJ`|drf`vXXQr˂JtArdHfpvrXQJ`pfHr˂plJtAXv`ftAJlnvppZHAb|ZdQnXvےbHAtAJlnے`JAHr󙐂˅XnvXQr˂JtArdfpvdrtA~f`HAbےbnXvےbHAtAJlnvppZHAb|ZdQnXvےbHAf`vXZHAbrd|fpvtbdQZfH~ے`Jbtl`f~Zp˂tbdQZXQr˂`ZQXbp|dpZHAb|ZdQnrXQJJltvXn`JXQr`f~Zp˂tbdQZfH~ے`Jbtl`f~Zp˂nvp˂pZZdQtArnrXQJ|drf`vXXQr˂JtArdHfpvrXQJ`|dtApZHAbۑpJrQtJlے`Jbtl`ےHAbdQZ|vpfH˂pZAHfpvrXQJ`|drf`vXXQr˂JtArdHfpvrbdQZfH~HAbےd|Z`ےHAtAJlnvppZHAb|ZdQnXvےbHAJltے`JAHr󙐂˒tbAdXQr˂JtArdZp˂drtA~f``JXQnXvےbHAtAJlnvppZHAb|ZdQnXv|drf`vX`JXQrdQbtZp˂tbdQZfH~ے`Jbtl`f~Zp˂bnvXQr˂`ZQXAHZ|dpZHAb|ZdQrXQJ`dQZ|vXH~rbt`f~Zp˂tbdQZfH~ے`Jbtl`fHtAJlnvp˂pZlJtArrXQJ`|drf`vXXQr˂JtArdHfpvrXQJ`pfHpZHAbr󙐂ˁ`rQtJlے`JbnXvےbHAdrtAJf`vlJtAdHfpvrXQJ`|drf`vXXQr˂JtArdfpvtbdQZfH~HAbےd|ZےbHAtAJlnvppZHAb|ZdQnXvےbHAf`vX˂pZQXb㉀tbAdXQr˂`f~Zp˂ltbXnv|ZdQnXvےbHAtAJlnvppZHAb|ZdQnrXQJ|drf`vX`JXQHAdQbtZp˂tbdQZfH~ے`Jbtl`f~Zp˂nvpZHAbۑpJAHZ|dpZHAHfpvrXQJ`dQZ|pfH~btl`f~Zp˂tbdQZfH~ے`Jbtl`ےHAtAJlnvpbے`l|ZdQrXQJ`|drf`vXXQr˂JtArdHfpvrbdQZfH~ے`JXQr󙐂ˁ`rQtJlے`JXQnXvےbHAdrtAJf`vJtArdHfpvrXQJ`|drf`vXXQr˂JtArdZp˂tbdQZfH~JXQrbnXvےbHAtAJlnvppZHAb|ZdQnXv|drf`vXr˂pZQXb㉀tbAdrbt`f~Zp˂ltdXnv|ZdQnXvےbHAtAJlnvppZHAb|ZdQrXQJ`|drf`vX˂pZHA`f~fpZp˂tbdQZfH~ے`Jbtl`fHtAJlnvpZHAbXnvZ|dlJtAdHfpvrXQJ`rtAJlp`vXbtl`f~Zp˂tbdQZfH~ے`JbnXvےbHAtAJlnvpbے`vnXrXQJ`|drf`vXXQr˂JtArdfpvtbdQZfH~ے`JXQpfH~rQtJl|ZdQnXvےbHAtbdQnr˂JtArdHfpvrXQJ`|drf`vXXQr˂`f~Zp˂tbdQZfH~JXQrv`fےbHAtAJlnvppZHAb|ZdQnrXQJ|drf`vXHAbےf۝`vtbAdbtl`f~Zp˂Z|dpZAb`|ZdQnXvےbHAtAJlnvppZHAHfpvrXQJ`|drf`vX˂p`J~HfpZp˂tbdQZfH~ے`Jbtl`ےHAtAJlnvp`JXQrXnvZ|dJtArdHfpvrXQJ`rtAJlJXQrbtl`f~Zp˂tbdQZfH~ے`JXQnXvےbHAtAJlnvpXQr˂vnXrXQJ`|drf`vXXQr˂JtArdZp˂tbdQZfH~˂pZpfH~rQtJl|ZdQnXvےbHAtbdQ˂pZHJtArdHfpvrXQJ`|drf`vXrbt`f~Zp˂tbdQZfH~pZHAbv`fےbHAtAJlnvppZHAb|ZdQrXQJ`|drf`vXHAbےf۝`vtbAdbtl`f~Zp˂Z|lAbے`|ZdQnXvےbHAtAJlnvplJtAdHfpvrXQJ`|drf`vXے`J~HfvZp˂tbdQZfH~ے`JbnXvےbHAtAJlnvp`JXQrXnvZ|dJtArdHfpvrXQJ`tbdQZJXQrbtl`f~Zp˂tbdQZfH~|ZdQnXvےbHAtAJlnvpXQr˂nXv`rXQJ`|drf`vXXQr˂`f~Zp˂tbdQZfH~˂p`pfH~rQtJl|ZdQnXvےbHA|dr˂pZHJtArdHfpvrXQJ`|drf`vXbtl`f~Zp˂tbdQZfH~p`JXQf~HےbHAtAJlnvppZHAHfpvrXQJ`|drf`vXJXQrf۝`vtbAdbtl`f~Zp˂tAJlAbJ|ZdQnXvےbHAtAJlnr˂JtArdHfpvrXQJ`|drf`vXrbtfpvZp˂tbdQZfH~ے`JXQnXvےbHAtAJlnvp˂pZHAXnvZ|dJtArdHfpvrXQJ`tbdQZQr˂pbtl`f~Zp˂tbdQZpZHAb|ZdQnXvےbHAtAJlnvpl|ZdQnXv`rXQJ`|drf`vXrbt`f~Zp˂tbdQZfH~bے`pfH~rQtJl|ZdQnXvےbHA|ltZHAbJtArdHfpvrXQJ`|dtAے`Jbtl`f~Zp˂tbdQZfH~btlf~HےbHAtAJlnvplJtAdHfpvrXQJ`|drf`vXJXQrf۝`vtbAdbtl`f~Zp˂bnvے`JXQ|ZdQnXvےbHAJltXQr˂JtArdHfpvrXQJ`|drf`vXJtArdfpvZp˂tbdQZfH~|ZdQnXvےbHAtAJlnvp˂p`ZXnvZ|dJtArdHfpvrXQJ`p`vXr˂pbtl`f~Zp˂bnvpZHAb|ZdQnXvےbHAtAJlnvp|ZdQnvfrXQJ`|drf`vXbtl`f~Zp˂tbdQZfH~QXb㉀ۍpfH~rQtJl|ZdQnXvےbHAnvpZHAbJtArdHfpvrXQJ`pfHے`Jbtl`f~Zp˂tbdQZfH~btl~HfpےbHAtAJlnr˂JtArdHfpvrXQJ`|drf`vXpJAHrf۝`vtbAdbtl`f~Zp˂fH~ے`JXQ|ZdQnXvےbHAf`vXXQr˂JtArdHfpvrXQJ`|drf`vX|ZdQbvnXZp˂tbdQZpZHAb|ZdQnXvےbHAtAJlnvpˁ`ZXnvZ|drQtqrstuvwxxwvutsr2222222222222222222222222222333333 \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv27_0.dat b/mpdf/qrcode/data/qrv27_0.dat deleted file mode 100644 index 7fde281..0000000 --- a/mpdf/qrcode/data/qrv27_0.dat +++ /dev/null @@ -1,249 +0,0 @@ -|{|{|{|{|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvuststststrqrqrqrqpopopoponmnmnmnmnmlklklklklklklkjijijijihghghghgfefefefedcdcdcdcdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYWXWXWXWXWWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOPONMNMNMNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=;;<;<;<;:9:9:9:9:9:9:9:987878787656565654343434321212121|{|{|{|{|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvusssssstsrqrqrqrqpopopoponmnmnmnmlklklklklklklklkjijijijihghghghgfefefefedcdcdcdcdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYWXWXWXWXXWVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:9:987878787878787656565654343434321212121|{|{|{|{|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklklklklklkjijijijihghghghgfefefefedcdcdcdcdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYWXWXWXWXVUVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:98787878787878787656565654343434321212121|{|{|{|{|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklklklklklkjijijijihghghghgfefefefedcdcdcdcdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYWXWXWXWXVUVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:98787878787878787656565654343434321212121|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklklklklklkjijijijihghghghgfefefefedcdcdcdcdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYWXWXWXWXVUVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:98787878787878787656565654343434321212121|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklklklklklkjijijijihghghghgfefefefedcdcdcdcdcbababababababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYWXWXWWWWVUVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEFEDCDCDCDCDCDCDCBABABABA@?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:98787878787878787656565654343434321212121|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwtstststststststsrqrqrqrqpopopoponmnmnmnmlklklklklkjijijijijijijihghghghgfefefefedcdcdcdcbabababababababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYWWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMNMLKLKLKLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCDCDCDCDCBABABABA@?@?@?@?>=>=>=>=;;;;;<;<:9:9:9:98787878787878787656565654343434321212121|{|{|{|{zyzyzyzyzyzyzyzyvuvuvuvussssststtstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijijijijijihghghghgfefefefedcdcdcdcbabababababababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUVUTSTSTSTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCDCDCDCDCBABABABA@?@?@?@?>=>=>=>=;<;<;<;<:9:9:9:98787878787656565656565654343434321212121|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvuststststqqqqqqrqrqrqrqrqpopopoponmnmnmnmlklklklkjijijijijijijijihghghghgfefefefedcdcdcdcbabababababababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCDCDCDCDCBABABABA@?@?@?@?>=>=>=>=;<;<;<;<:9:9:9:98787878765656565656565654343434321212121|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvuststststrqrqrqrqrqrqrqrqpopopoponmnmnmnmlklklklkjijijijijijijijihghghghgfefefefedcdcdcdcbabababababababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCDCDCDCDCBABABABA@?@?@?@?>=>=>=>=;<;<;<;<:9:9:9:98787878765656565656565654343434321212121|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvuststststrqrqrqrqrqrqrqrqpopopoponmnmnmnmlklklklkjijijijijijijijihghghghgfefefefedcdcdcdcbabababababababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCDCDCDCDCBABABABA@?@?@?@?>=>=>=>=;<;<;<;<:9:9:9:98787878765656565656565654343434321212121|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvuststststrqrqrqrqrqrqrqrqpopopoponmnmnmnmlklklklkjijijijijijijijihghghghgfefefefedcdcdcdcbababababa`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCDCBABABABABABABA@?@?@?@?>=>=>=>=;<;<;<;<:9:9:9:98787878765656565656565654343434321212121|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvuststststrqrqrqrqrqrqrqrqpopopoponmnmnmnmlklklklkjijijijijihghghghghghghgfefefefedcdcdcdcbabababa`_`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYWWWWWXWXVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKLKJIJIJIJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABABABABABA@?@?@?@?>=>=>=>=;<;;;;;;:9:9:9:98787878765656565656565654343434321212121|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvustssssssrqrqrqrqrqpopopopopopoponmnmnmnmlklklklkjijijijihghghghghghghghgfefefefedcdcdcdcbabababa`_`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYWXWXWXWXVUVUVUVUTSTSTSTSTSRQRQRQRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABABABABABA@?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:98787878765656565654343434343434321212121|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopopopopopoponmnmnmnmlklklklkjijijijihghghghghghghghgfefefefedcdcdcdcbabababa`_`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYWXWXWXWXVUVUVUVUTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABABABABABA@?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:98787878765656565434343434343434321212121|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopopopopopoponmnmnmnmlklklklkjijijijihghghghghghghghgfefefefedcdcdcdcbabababa`_`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYWXWXWXWXVUVUVUVUTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABABABABABA@?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:98787878765656565434343434343434321212121|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopopopopopoponmnmnmnmlklklklkjijijijihghghghghghghghgfefefefedcdcdcdcbabababa`_`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYWXWXWXWXVUVUVUVUTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABABABABABA@?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:98787878765656565434343434343434321212121|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopopopopopoponmnmnmnmlklklklkjijijijihghghghghghghghgfefefefedcdcdcdcbabababa`_`_`_`_`_^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYWXWXWXWXVUVUVUVUTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABABA@?@?@?@?>=>=>=>=<;<;<;<;<;<;<;:9:9:9:98787878765656565434343434343434321212121|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopopopopopoponmnmnmnmlklklklkjijijijihghghghghgfefefefefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYWXWWWWWWVUVUVUVUTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIJIHGHGHGHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=<;;;;;;<<;<;<;;;:9:9:9:98787878765656565434343434343434321212121|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutststsssrqrqrqrqpopopopoponmnmnmnmnmnmnmlklklklkjijijijihghghghgfefefefefefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQRQPOPOPOPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=;<;<;<;<;;<;<;<;:9:9:9:98787878765656565434343434321212121212121|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvussstststrqrqrqrqpopopoponmnmnmnmnmnmnmnmlklklklkjijijijihghghghgfefefefefefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=;<;<;<;<<;:9:9:9:9:9:9:98787878765656565434343432121212121212121|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvuststststrqrqrqrqpopopoponmnmnmnmnmnmnmnmlklklklkjijijijihghghghgfefefefefefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=;<;<;<;<:9:9:9:9:9:9:9:98787878765656565434343432121212121212121|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvuststststrqrqrqrqpopopoponmnmnmnmnmnmnmnmlklklklkjijijijihghghghgfefefefefefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=;<;<;<;<:9:9:9:9:9:9:9:98787878765656565434343432121212121212121210/0/0/|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvuststststrqrqrqrqpopopoponmnmnmnmnmnmnmnmlklklklkjijijijihghghghgfefefefefefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=;<;<;<;<:9:9:9:9:9:9:9:987878787656565654343434321212121212121210/0/0/0/|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvuststststrqrqrqrqpopopoponmnmnmnmnmnmnmnmlklklklkjijijijihghghghgfefefefefedcdcdcdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWWWWWWXXWXWXWWWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGHGFEFEFEFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=;<;<;;;;:9:9:9:9:9:9:9:987878787656565654343434321212121212121210/0/0/0/0/0/0/0/0/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - - - - - 0/0/0/0/0/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - - - - - 0/0/0/0/0/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('('&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!        - - - - - 0/0/0/0/0/.-.-.-.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!     - - - - 0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!        - - - - 0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!        - - - - 0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!        - - - - 0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!        - - - - 0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%&%$#$#$#$#"!"!"!"!           - - - - 0/0/0/0/.-.-.-.-.-,+,+,+,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!           - - - - 0/0/0/0/.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!               - - - - 0/0/0/0/.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!            - - - - 0/0/0/0/.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!            - - - - 0/0/0/0/.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!            - - - - 0/0/0/0/.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!            - - - - 0/0/0/0/.-.-.-.-,+,+,+,+,+*)*)*)*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!       - - - - 0/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!       - - - - 0/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - 0/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - 0/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - 0/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - 0/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)*)('('('('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - - - - 0/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%$#$#$#$#"!"!"!"!      - - - - - - - - 0/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - - - - - 0/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - - - - - ||{{zzyy]]^^__``))((''&&``aabbcc)((''&&%HHIIJJKKMMLLKKJJ||||{{zzLLMMNNOOIIHHGGFFyyxxwwvvPPQQRRSSEEDDCCBB !!""##ppoonnmm srrqqppo``aabbcc5544332200112233eeddccbbddeeffgg1100//..44556677aa``__^^hhiijjkk--,,++**8899::;;SSRRQQPP))**++,,YXWWVVUUxxyyzz{{HHIIJJKKMMLLKKJJxxwwvvuuaabbccdd%%ddeeffgg%$#"! LLMMNNOOIIHHGGFFyyxxwwvvPPQQRRSSEEDDCCBB !!""##uuttssrrTTUUVVWWAA@@??>>$$%%&&''llkkjjiionnmmllkddeeffgg1100//..44556677aa``__^^hhiijjkk--,,++**8899::;;]]\\[[ZZ - - llmmnnoo))((''&&<<==>>??OONNMMLL--..//00TTSSRRQQ||||{{zzLLMMNNOOIIHHGGFFttssrrqq eeffgghhhhiijjkkPPQQRRSSEEDDCCBB !!""##uuttssrrTTUUVVWWAA@@??>>$$%%&&''qqppoonn - -XXYYZZ[[==<<;;::(())**++hhggffeekjjiihhghhiijjkk--,,++**8899::;;]]\\[[ZZ - - llmmnnoo))((''&&<<==>>??YYXXWWVV ppqqrrss%%$$##""@@AABBCCKKJJIIHH11223344PPOONNMMyyxxwwvvPPQQRRSSEEDDCCBB !!""##ppoonnmm - - iijjkkllllmmnnooTTUUVVWWAA@@??>>$$%%&&''qqppoonn - -XXYYZZ[[==<<;;::(())**++mmllkkjj \\]]^^__99887766,,--..//ddccbbaagffeeddc - - llmmnnoo))((''&&<<==>>??YYXXWWVV ppqqrrss%%$$##""@@AABBCCUUTTSSRRttuuvvww!! DDEEFFGGGGFFEEDD55667788LLKKJJII !!""##uuttssrrTTUUVVWWAA@@??>>$$%%&&''llkkjjii - - mmnnooppppqqrrssXXYYZZ[[==<<;;::(())**++mmllkkjj \\]]^^__99887766,,--..//iihhggff``aabbcc5544332200112233``__^^]]cbbaa``_ ppqqrrss%%$$##""@@AABBCCUUTTSSRRttuuvvww!! DDEEFFGGQQPPOONNxxyyzz{{HHIIJJKKCCBBAA;;99::;;AAHHGGFFEE$$%%&&''qqppoonn - -XXYYZZ[[==<<;;::(())**++hhggffee qqrrsstt yyzz{{||\\]]^^__99887766,,--..//iihhggff``aabbcc5544332200112233eeddccbbddeeffgg1100//..44556677WWVVUUTT%%&&''((_^^]]\[Zttuuvvww!! DDEEFFGGQQPPOONNxxyyzz{{HHIIJJKKMMLLKKJJ||||{{zzLLMMNNOO::998877BBCCDDEEDDCCBBAA(())**++mmllkkjj \\]]^^__99887766,,--..//ddccbbaauuvvwwxx - - ||{{zzyy ``aabbcc5544332200112233eeddccbbddeeffgg1100//..44556677aa``__^^hhiijjkk--,,++**8899::;;SSRRQQPP))**++,,YXWWVVUUxxyyzz{{HHIIJJKKMMLLKKJJ||||{{zzLLMMNNOOIIHHGGFFyyxxwwvvPPQQRRSS66554433FFGGHHII@?>=<;;:,,--..//iihhggff``aabbcc5544332200112233``__^^]]yyzz{{|| - - xwvutssr - - ddeeffgg1100//..44556677aa``__^^hhiijjkk--,,++**8899::;;]]\\[[ZZ - - llmmnnoo))((''&&<<==>>??OONNMMLL--..//00TTSSRRQQ||||{{zzLLMMNNOOIIHHGGFFyyxxwwvvPPQQRRSSEEDDCCBB !!""##uuttssrrTTUUVVWW221100//JJKKLLMM:998877600112233eeddccbbddeeffgg1100//..44556677\\[[ZZYY||{{zzyy rqqppoonhhiijjkk--,,++**8899::;;]]\\[[ZZ - - llmmnnoo))((''&&<<==>>??YYXXWWVV ppqqrrss%%$$##""@@AABBCCKKJJIIHH11223344PPOONNMMyyxxwwvvPPQQRRSSEEDDCCBB !!""##uuttssrrTTUUVVWWAA@@??>>$$%%&&''qqppoonn - -XXYYZZ[[..--,,++NNOOPPQQ6554433244556677aa``__^^hhiijjkk--,,++**8899::;;XXWWVVUU ssrrqqppnmmllkkj - - llmmnnoo))((''&&<<==>>??YYXXWWVV ppqqrrss%%$$##""@@AABBCCUUTTSSRRttuuvvww!! DDEEFFGGGGFFEEDD55667788LLKKJJII !!""##uuttssrrTTUUVVWWAA@@??>>$$%%&&''qqppoonn - -XXYYZZ[[==<<;;::(())**++mmllkkjj \\]]^^__**))((''RRSSTTUU21100//.8899::;;]]\\[[ZZ - - llmmnnoo))((''&&<<==>>??TTSSRRQQ!!""##$$oonnmmlljiihhggf ppqqrrss%%$$##""@@AABBCCUUTTSSRRttuuvvww!! DDEEFFGGQQPPOONNxxyyzz{{HHIIJJKKCCBBAA;;99::;;AAHHGGFFEE$$%%&&''qqppoonn - -XXYYZZ[[==<<;;::(())**++mmllkkjj \\]]^^__99887766,,--..//iihhggff``aabbcc&&%%VVWW]]^^.--,,++*<<==>>??YYXXWWVV ppqqrrss%%$$##""@@AABBCCPPOONNMM%%&&''((kkjjiihhfeeddccbttuuvvww!! DDEEFFGGQQPPOONNxxyyzz{{HHIIJJKKMMLLKKJJ||||{{zzLLMMNNOO::998877BBCCDDEEDDCCBBAA(())**++mmllkkjj \\]]^^__99887766,,--..//iihhggff``aabbcc5544332200112233eeddccbbddeeffgg__``aabb*))((''&@@AABBCCUUTTSSRRttuuvvww!! DDEEFFGGLLKKJJII))**++,,ggffeedd%%baa``__^xxyyzz{{HHIIJJKKMMLLKKJJ||||{{zzLLMMNNOOIIHHGGFFyyxxwwvvPPQQRRSS66554433FFGGHHII@?>=<;;:,,--..//iihhggff``aabbcc5544332200112233eeddccbbddeeffgg1100//..44556677aa``__^^hhiijjkkccddeeff&%%$#"! DDEEFFGGQQPPOONNxxyyzz{{HHIIJJKKHHGGFFEE--..//00ccbbaa``&&''(())^]]\[ZYX||||{{zzLLMMNNOOIIHHGGFFyyxxwwvvPPQQRRSSEEDDCCBB !!""##uuttssrrTTUUVVWW221100//JJKKLLMM:998877600112233eeddccbbddeeffgg1100//..44556677aa``__^^hhiijjkk--,,++**8899::;;]]\\[[ZZ - - llmmnnoogghhiijjHHIIJJKKMMLLKKJJ||||{{zzLLMMNNOODDCCBBAA11223344__^^]]WW**++,,--WWVVUUTTyyxxwwvvPPQQRRSSEEDDCCBB !!""##uuttssrrTTUUVVWWAA@@??>>$$%%&&''qqppoonn - -XXYYZZ[[..--,,++NNOOPPQQ6554433244556677aa``__^^hhiijjkk--,,++**8899::;;]]\\[[ZZ - - llmmnnoo))((''&&<<==>>??YYXXWWVV ppqqrrsskkllmmnnLLMMNNOOIIHHGGFFyyxxwwvvPPQQRRSS@@??>>==55667788VVUUTTSS..//0011SSRRQQPP !!""##uuttssrrTTUUVVWWAA@@??>>$$%%&&''qqppoonn - -XXYYZZ[[==<<;;::(())**++mmllkkjj \\]]^^__**))((''RRSSTTUU21100//.8899::;;]]\\[[ZZ - - llmmnnoo))((''&&<<==>>??YYXXWWVV ppqqrrss%%$$##""@@AABBCCUUTTSSRRttuuvvww - -ooppqqrrPPQQRRSSEEDDCCBB !!""##uuttssrrTTUUVVWW<<;;::9999::;;<>??YYXXWWVV ppqqrrss%%$$##""@@AABBCCUUTTSSRRttuuvvww!! DDEEFFGGQQPPOONNxxyyzz{{ ssyyzz{{TTUUVVWWAA@@??>>$$%%&&''qqppoonn - -XXYYZZ[[88776655==>>??@@NNMMLLKK66778899KKJJIIHH(())**++mmllkkjj \\]]^^__99887766,,--..//iihhggff``aabbcc5544332200112233eeddccbbddeeffgg__``aabb*))((''&@@AABBCCUUTTSSRRttuuvvww!! DDEEFFGGQQPPOONNxxyyzz{{HHIIJJKKMMLLKKJJ||||{{zz||||{{zz XXYYZZ[[==<<;;::(())**++mmllkkjj \\]]^^__44332211AABBCCDDJJIIHHGG::;;AABBGGFFEEDD,,--..//iihhggff``aabbcc5544332200112233eeddccbbddeeffgg1100//..44556677aa``__^^hhiijjkkccddeeff&%%$#"! DDEEFFGGQQPPOONNxxyyzz{{HHIIJJKKMMLLKKJJ||||{{zzLLMMNNOOIIHHGGFFyyssrrqq - - yyxwvuts - - \\]]^^__99887766,,--..//iihhggff``aabbcc00//..--EEFFGGHHFFEEDDCCCCDDEEFFCCBBAA@?00112233eeddccbbddeeffgg1100//..44556677aa``__^^hhiijjkk--,,++**8899::;;]]\\[[ZZ - - llmmnnoogghhiijjHHIIJJKKMMLLKKJJ||||{{zzLLMMNNOOIIHHGGFFyyxxwwvvPPQQRRSSEEDDCCBB !!""##ppoonnmm srrqqppo``aabbcc5544332200112233eeddccbbddeeffgg,,++**))IIJJKKLLBBAA;;::GGHHIIJJ>=<;;::944556677aa``__^^hhiijjkk--,,++**8899::;;]]\\[[ZZ - - llmmnnoo))((''&&<<==>>??YYXXWWVV ppqqrrsskkllmmnnLLMMNNOOIIHHGGFFyyxxwwvvPPQQRRSSEEDDCCBB !!""##uuttssrrTTUUVVWWAA@@??>>$$%%&&''llkkjjiionnmmllkddeeffgg1100//..44556677aa``__^^hhiijjkk((''&&%%MMNNOOPP99887766KKLLMMNN988776658899::;;]]\\[[ZZ - - llmmnnoo))((''&&<<==>>??YYXXWWVV ppqqrrss%%$$##""@@AABBCCUUTTSSRRttuuvvww - -ooppqqrrPPQQRRSSEEDDCCBB !!""##uuttssrrTTUUVVWWAA@@??>>$$%%&&''qqppoonn - -XXYYZZ[[==<<;;::(())**++hhggffeekjjiihhghhiijjkk--,,++**8899::;;]]\\[[ZZ - - llmmnnoo$$##""!!QQRRSSTT55443322OOPPQQRR54433221<<==>>??YYXXWWVV ppqqrrss%%$$##""@@AABBCCUUTTSSRRttuuvvww!! DDEEFFGGQQPPOONNxxyyzz{{ ssyyzz{{TTUUVVWWAA@@??>>$$%%&&''qqppoonn - -XXYYZZ[[==<<;;::(())**++mmllkkjj \\]]^^__99887766,,--..//ddccbbaagffeeddc - - llmmnnoo))((''&&<<==>>??YYXXWWVV ppqqrrss||||{{zz UUVVWWXX1100//..SSTTUUVV100//..-@@AABBCCUUTTSSRRttuuvvww!! DDEEFFGGQQPPOONNxxyyzz{{HHIIJJKKMMLLKKJJ||||{{zz||||{{zz XXYYZZ[[==<<;;::(())**++mmllkkjj \\]]^^__99887766,,--..//iihhggff``aabbcc5544332200112233``__^^]]cbbaa``_ ppqqrrss%%$$##""@@AABBCCUUTTSSRRttuuvvwwyyxxwwvvYYZZ[[\\--,,++**WW]]^^__-,,++**)DDEEFFGGQQPPOONNxxyyzz{{HHIIJJKKMMLLKKJJ||||{{zzLLMMNNOOIIHHGGFFyyssrrqq - - yyxwvuts - - \\]]^^__99887766,,--..//iihhggff``aabbcc5544332200112233eeddccbbddeeffgg1100//..44556677WWVVUUTT%%&&''((_^^]]\[Zttuuvvww!! DDEEFFGGQQPPOONNxxyyzz{{uuttssrrqqppoonn - -XXYYZZ[[==<<;;::(())**++mmllkkjj \\]]^^__**))((''RRSSTTUU21100//.8899::;;]]\\[[ZZ - - llmmnnoo))((''&&<<==>>??YYXXWWVV ppqqrrss%%$$##""@@AABBCCUUTTSSRRttuuvvww - - - -iihhggff mmllkkjj \\]]^^__99887766,,--..//iihhggff``aabbcc&&%%VVWW]]^^.--,,++*<<==>>??YYXXWWVV ppqqrrss%%$$##""@@AABBCCUUTTSSRRttuuvvww!! DDEEFFGGQQPPOONNxxyyzz{{ eeddccbbiihhggff``aabbcc5544332200112233eeddccbbddeeffgg__``aabb*))((''&@@AABBCCUUTTSSRRttuuvvww!! DDEEFFGGQQPPOONNxxyyzz{{HHIIJJKKMMLLKKJJ||ttssrraa``__^^eeddccbbddeeffgg1100//..44556677aa``__^^hhiijjkkccddeeff&%%$#"! DDEEFFGGQQPPOONNxxyyzz{{HHIIJJKKMMLLKKJJ||||{{zzLLMMNNOOIIHHGGFFqqppoonn]]\\[[ZZaa``__^^hhiijjkk--,,++**8899::;;]]\\[[ZZ - - llmmnnoogghhiijjHHIIJJKKMMLLKKJJ||||{{zzLLMMNNOOIIHHGGFFyyxxwwvvPPQQRRSSEEDDCCBB !!""##mmllkkjjYYXXWWVV]]\\[[ZZ - - llmmnnoo))((''&&<<==>>??YYXXWWVV ppqqrrsskkllmmnnLLMMNNOOIIHHGGFFyyxxwwvvPPQQRRSSEEDDCCBB !!""##uuttssrrTTUUVVWWAA@@??>>$$%%&&''iihhggffUUTTSSRR !!""##YYXXWWVV ppqqrrss%%$$##""@@AABBCCUUTTSSRRttuuvvww - -ooppqqrrPPQQRRSSEEDDCCBB !!""##uuttssrrTTUUVVWWAA@@??>>$$%%&&''qqppoonn - -XXYYZZ[[==<<;;::(())**++eeddccbb%%&&''QQPPOONN$$%%&&''UUTTSSRRttuuvvww!! DDEEFFGGQQPPOONNxxyyzz{{ ssyyzz{{TTUUVVWWAA@@??>>$$%%&&''qqppoonn - -XXYYZZ[[==<<;;::(())**++mmllkkjj \\]]^^__99887766,,--..//aa``__^^(())**++MMLLKKJJ(())**++QQPPOONNxxyyzz{{HHIIJJKKMMLLKKJJ||||{{zz||||{{zz XXYYZZ[[==<<;;::(())**++mmllkkjj \\]]^^__99887766,,--..//iihhggff``aabbcc5544332200112233]]WWVVUU,,--..//IIHHGGFF,,--..//MMLLKKJJ||||{{zzLLMMNNOOIIHHGGFFyyssrrqq - - yyxwvuts - - \\]]^^__99887766,,--..//iihhggff``aabbcc5544332200112233eeddccbbddeeffgg1100//..44556677TTSSRRQQ00112233EEDDCCBB00112233IIHHGGFFyyxxwwvvPPQQRRSSEEDDCCBB !!""##ppoonnmm srrqqppo``aabbcc5544332200112233eeddccbbddeeffgg1100//..44556677aa``__^^hhiijjkk--,,++**8899::;;PPOONNMM44556677AA@@??>>44556677EEDDCCBB !!""##uuttssrrTTUUVVWWAA@@??>>$$%%&&''llkkjjiionnmmllkddeeffgg1100//..44556677aa``__^^hhiijjkk--,,++**8899::;;]]\\[[ZZ - - llmmnnoo))((''&&<<==>>??LLKKJJII8899::;;==<<;;::8899::;;AA@@??>>$$%%&&''qqppoonn - -XXYYZZ[[==<<;;::(())**++hhggffeekjjiihhghhiijjkk--,,++**8899::;;]]\\[[ZZ - - llmmnnoo))((''&&<<==>>??YYXXWWVV ppqqrrss%%$$##""@@AABBCCHHGGFFEEAABBCCDD99887766<<==>>??==<<;;::(())**++mmllkkjj \\]]^^__99887766,,--..//ddccbbaagffeeddc - - llmmnnoo))((''&&<<==>>??YYXXWWVV ppqqrrss%%$$##""@@AABBCCUUTTSSRRttuuvvww!! DDEEFFGGDDCCBBAAEEFFGGHH55443322@@AABBCC99887766,,--..//iihhggff``aabbcc5544332200112233``__^^]]cbbaa``_ ppqqrrss%%$$##""@@AABBCCUUTTSSRRttuuvvww!! DDEEFFGGQQPPOONNxxyyzz{{HHIIJJKK;;::9988IIJJKKLL1100//..DDEEFFGG5544332200112233eeddccbbddeeffgg1100//..44556677WWVVUUTT%%&&''((_^^]]\[Zttuuvvww!! DDEEFFGGQQPPOONNxxyyzz{{HHIIJJKKMMLLKKJJ||||{{zzLLMMNNOO77665544MMNNOOPP--,,++**HHIIJJKK1100//..44556677aa``__^^hhiijjkk--,,++**8899::;;SSRRQQPP))**++,,YXWWVVUUxxyyzz{{HHIIJJKKMMLLKKJJ||||{{zzLLMMNNOOIIHHGGFFyyxxwwvvPPQQRRSS33221100QQRRSSTT))((''&&LLMMNNOO--,,++**8899::;;]]\\[[ZZ - - llmmnnoo))((''&&<<==>>??OONNMMLL--..//00TTSSRRQQ||||{{zzLLMMNNOOIIHHGGFFyyxxwwvvPPQQRRSSEEDDCCBB !!""##uuttssrrTTUUVVWW//..--,,UUVVWW]]%%$$##""PPQQRRSS))((''&&<<==>>??YYXXWWVV ppqqrrss%%$$##""@@AABBCCKKJJIIHH11223344PPOONNMMyyxxwwvvPPQQRRSSEEDDCCBB !!""##uuttssrrTTUUVVWWAA@@??>>$$%%&&''qqppoonn - -XXYYZZ[[++**))((^^__``aa!! TTUUVVWW%%$$##""@@AABBCCUUTTSSRRttuuvvww!! DDEEFFGGGGFFEEDD55667788LLKKJJII !!""##uuttssrrTTUUVVWWAA@@??>>$$%%&&''qqppoonn - -XXYYZZ[[==<<;;::(())**++mmllkkjj \\]]^^__''&&%%bbccddeeXXYYZZ[[!! DDEEFFGGQQPPOONNxxyyzz{{HHIIJJKKCCBBAA;;99::;;AAHHGGFFEE$$%%&&''qqppoonn - -XXYYZZ[[==<<;;::(())**++mmllkkjj \\]]^^__99887766,,--..//iihhggff``aabbccffgghhii\\]]^^__HHIIJJKKMMLLKKJJ||||{{zzLLMMNNOO::998877BBCCDDEEDDCCBBAA(())**++mmllkkjj \\]]^^__99887766,,--..//iihhggff``aabbcc5544332200112233eeddccbbddeeffggjjkkllmm``aabbccLLMMNNOOIIHHGGFFyyxxwwvvPPQQRRSS66554433FFGGHHII@?>=<;;:,,--..//iihhggff``aabbcc5544332200112233eeddccbbddeeffgg1100//..44556677aa``__^^hhiijjkknnooppqqddeeffggPPQQRRSSEEDDCCBB !!""##uuttssrrTTUUVVWW221100//JJKKLLMM:998877600112233eeddccbbddeeffgg1100//..44556677aa``__^^hhiijjkk--,,++**8899::;;]]\\[[ZZ - - llmmnnooqqppoonn - -hhiijjkkTTUUVVWWAA@@??>>$$%%&&''qqppoonn - -XXYYZZ[[..--,,++NNOOPPQQ6554433244556677aa``__^^hhiijjkk--,,++**8899::;;]]\\[[ZZ - - llmmnnoo))((''&&<<==>>??YYXXWWVV ppqqrrss mmllkkjj - - llmmnnooppqqfpvnXv`p˂rtAJlnvpے`JXbtlHfpvrXQJ`ےJltbdQZfH~XQr˂JtArdnXv`f~Zp˂|drf`vXے`JXQbtl~HfpfpvrXQJ`tAJlnvpے`JrbtJtArdnXvےbHAtbdQZpfHf`vXpZHAb|ZdQXv`fbHAZAJltf`vXnvpے`JbtlHfpvrXQJ`nXv`f~HXQJ`ےtdrtAfH~QrZHAJtArdnXvےbHAtbdQZ|drf`vXpZHAb|ZdQ`f~HfpvrXQJ`tAJlnvpr˂pJtArdvnXnrXQJےbHAtbdQZfH~XQr˂lJtAd|ZdQ`f~Zp˂|drf`vXnvpے`Jbtl~Hfp˂rbdQZ|nvpfے`JXQr˂JtArdnXvےbHAf~HfpvbHAZJltf`vXbے`|ZdQ`f~Zp˂|drtAJlnvpے`JbtlHfpvnXvےbHAtbdQZfH~ZHAb|ZdQv`f`ےHAZp˂|drf`vXpZHAb|ZdQbtlHfpvrXQJ`tAJlnvpfH~XQr˂JtArdpvnXQJ`ےdrtAfH~XQr˂pZHAb|ZdQ`f~Zp˂fpvnXv`p˂rbdQZ|nvpJXQrbtlHfpvrXQJ`tAJltbdQZfH~XQr˂JtArdnXv`fHZp˂|drf`vXے`JXQbtl~HfpZp˂rXQJ`tAJlnvpے`JbtlJtArdnXvےbHAtbdQZfH~f`vXpZHAb|ZdQXv`fbHAZJltf`vXpZHAbے`JbtlHfpvrXQJ`nXv`p˂rXQJ`ےdrtAfH~˂pZHAJtArdnXvےbHAtbdQZ|dtAf`vXpZHAb|ZdQ`f~fpvrXQJ`tAJlnvpr˂pJtArdvnXrXQJ`ےbHAtbdQZfH~XQr˂JtArd|ZdQ`f~Zp˂|drf`vXnvpے`Jbtl~HXp˂bdQZ|nvpے`JXQr˂JtArdnXvےbHAf~HXQJ`ےbHAZJltvpfbے`|ZdQ`f~Zp˂|drJltnvpے`JbtlHfpvnrXQJےbHAtbdQZfH~`JXQrtlJv`f~ےbHAZp˂|drf`vXpZHAb|ZdQbtlHfpvrXQJ`tAJlnvpfے`JXQr˂JtArdv`fbHAZpdrtAfH~XQr˂pZHA|ZdQ`f~Zp˂fpvbHAZp˂rbdQZ|ے`JXQJXQrbtlHfpvrXQJ`tAJlbnvfH~XQr˂JtArdnXv`ےHAZp˂|drf`vX˂pZtArdfpvZp˂rXQJ`tAJlnvpے`JbtlJfpvnXvےbHAtbdQZfH~XQr˂pZHAb|ZdQ~Hfp˂rXQJbdQf`vXpZHAbے`JXQbtlHfpvrXQJ`nXv`p˂rXQJ`ے`vXnrZHA˂pZHAJtArdnXvےbHAtbdQZpfHf`vXpZHAb|ZdQ`f~Zp˂rXQJ`tAJlnvpHAbے|ZdQbnXv`rXQJ`ےJltbdQZfH~XQr˂JtArdnXv`f~Zp˂|drf`vXpZHAbے`JbtlvnXJ`ےZ|dnvpے`JrbtJtArdnXvےbHAf~HXQJ`ےJltvpfbے`bJAd|ZdQ`f~Zp˂|drf`vXnvpے`JbtlHfpvrXQJ`ےbHAtbdQZfH~`JXQrtlJf~HےbHAtbdQZ|drf`vXpZHAb|ZdQ`f~HfpvrXQJ`tAJlnvpے`JXQr˂JtArdv`fbHAZprtAJlfH~XQr˂lJtAd|ZdQ`f~Zp˂fpvbHAZdrtAJH~fJXQr|ZdQbtlHfpvrXQJ`tAJlnvpfH~XQr˂JtArdnXvےbHAZp˂|drf`vX˂pZtArdfpvZp˂|drtAJlnvpے`JbtlHfpvnXvےbHAtbdQZfH~XQr˂pZHA|ZdQ~Hfp˂rXQtbdQf`vXpZHAb|ZdQbtlHfpvrXQJ`nXv`p˂rltb`vXnpZHAbtlJtArdnXvےbHAtbdQZfH~f`vXpZHAb|ZdQ`f~Zp˂rXQJ`tAJlnvpHAb|ZdQtAnXv`rXQJ`tAJltbdQZfH~XQr˂JtArdnXv`fHZp˂|drf`vXpZHAbے`JXQbtlv~J`p˂Z|dnvpے`JbtlJtArdnXvےbHAf~HXQJ`ےdQZ|vpfbے`JtArd|ZdQ`f~Zp˂|drf`vXnvpے`JbtlHfpvrXQJ`ےJltbdQZfH~˂pZHArd|f~HےbHAtbdQZ|dtAf`vXpZHAb|ZdQ`f~fpvrXQJ`tAJlnvpے`JrbtJtArdHfpvrXQJrtAJlfH~XQr˂JtArd|ZdQ`f~Zp˂fpvbHAZdrtAJH~JXQr|ZdQbtlHfpvrXQJ`tAJlnvpfے`JXQr˂JtArdnXvےbHAtbdQZ|drf`vXbے`ZdQbtfvnXZp˂|drJltnvpے`JbtlHfpvnrXQJےbHAtbdQZfH~XQr˂lJtAd|ZdQnXv`ےbtbQZf`vXpZHAb|ZdQbtlHfpvrXQJ`nXv`p˂rltbvpfHpZAbbtlJfpvnXvےbHAtbdQZfH~XQr˂pZHAb|ZdQ`f~Zp˂|drtAJlnvpJXQrlJtAv`frXQJ`tAJlbnvfH~XQr˂JtArdnXv`ےHAZp˂|drf`vXpZHAb|ZdQbtl`f~HAZp˂drtAJnvpے`JbtlJfpvnXvےbHAf~HXQJ`ےdQZ|l~f``JXQrJtArdnXv`f~Zp˂|drf`vXpZHAbے`JbtlHfpvrXQJ`tAJltbdQZfH~˂pZHArd|~HfpےbHAtbdQZpfHf`vXpZHAb|ZdQ`f~Zp˂rXQJ`tAJlnvpے`JbtlJtArdHfpvrXQJltbfH~XQr˂JtArdnXv`f~Zp˂fpvbHAZtbdQvXn˂pZ|ZdQ`f~HfpvrXQJ`tAJlnvpے`JXQr˂JtArdnXvےbHAtbdQZ|dtAf`vXbے`ZdQbtvnXZp˂|drf`vXnvpے`JbtlHfpvrXQJ`ےbHAtbdQZfH~XQr˂JtArd|ZdQnXv`ےbdQZ|f`vXpZHAb|ZdQ`f~HfpvrXQJ`nXv`p˂rZ|dvpfHHAbےbtlHfpvnXvےbHAtbdQZfH~XQr˂pZHA|ZdQ`f~Zp˂|drJltnvpJXQHAbl|Zv`frXQJ`tAJlnvpfH~XQr˂JtArdnXvےbHAZp˂|drf`vXpZHAb|ZdQbtl`pvHAXQJ`drtAJnvpے`JbtlHfpvnXvےbHAf~HXQJ`ےrtAJl~f``JXQrJtArdnXv`fHZp˂|drf`vXpZHAbے`JXQbtlHfpvrXQJ`tAJlbnvfH~ے`JdQbt~HfpےbHAtbdQZfH~f`vXpZHAb|ZdQ`f~Zp˂rXQJ`tAJlnvpے`JbtlJfpvnrXQJےJlltbfH~XQr˂JtArdnXv`fHZp˂fpvbHAZtbdQvXH~˂pZ|ZdQ`f~fpvrXQJ`tAJlnvpے`JrbtJtArdnXvےbHAtbdQZpfHf`vXXQr˂lJtArvnvfZp˂|drf`vXnvpے`JbtlHfpvrXQJ`ےJltbdQZfH~XQr˂JtArd~H`p˂tbQZddQZ|f`vXpZHAb|ZdQ`f~fpvrXQJ`nXv`p˂rZ|df`vHAbbtlHfpvnrXQJےbHAtbdQZfH~XQr˂lJtAd|ZdQ`f~Zp˂|drf`vXnvppZHAbd|Z~HfrXQJ`tAJlnvpfے`JXQr˂JtArdnXvےbHAtbdQZ|drf`vXpZHAb|ZdQfpvrXQJ`rtAJlAJltnvpے`JbtlHfpvnrXQJےbHAf~HXQJ`ےrtAdQZXnvJQr˂pJtArdnXv`ےHAZp˂|drf`vXpZHAb|ZdQbtlHfpvrXQJ`tAJlnvpfH~ے`JdQbtpvnےbHAtbdQZfH~XQr˂pZHAb|ZdQ`f~Zp˂|drtAJlnvpے`JbtlnXv`ےbHAtbdbnvfH~XQr˂JtArdnXv`ےHAZp˂fpvbHAZ|drpfH~ZHAb|ZdQ`f~Zp˂rXQJ`tAJlnvpے`JbtlJtArdnXvےbHAtbdQZfH~f`vXXQr˂lJtArXv`fZp˂|drf`vXpZHAbے`JbtlHfpvrXQJ`tAJltbdQZfH~XQr˂JtArdf~HZp˂QZ|dpfHf`vXpZHAb|ZdQ`f~Zp˂rXQJ`nXv`p˂rtAJl璐f`vے`JXbtlHfpvrXQJ`ےbHAtbdQZfH~XQr˂JtArd|ZdQ`f~Zp˂|drf`vXnvpp`JXQdtl~HfrXQJ`tAJlnvpے`JXQr˂JtArdnXvےbHAtbdQZ|dtAf`vXpZHAb|ZdQfpvrXQJ`rtAJlf`vXnvpے`JbtlHfpvrXQJ`ےbHAےJlf~HXQJ`ےtbdQZXnvQr˂pJtArdnXvےbHAZp˂|drf`vXpZHAb|ZdQbtlHfpvrXQJ`tAJlnvpfے`JrbtJfpvpvnےbHAtbdQZfH~XQr˂pZHA|ZdQ`f~Zp˂|drJltnvpے`JbtlnXv`ےbHAtbdnvpfH~XQr˂JtArdnXvےbHAZp˂tbdQZfpvbHAZ|drp`vXZHAb|ZdQ`f~Zp˂rXQJ`tAJlnvpے`JbtlJfpvnXvےbHAtbdQZfH~XQHAbl|ZdQnvfXv`fZp˂|drf`vXpZHAbے`JXQbtlHfpvrXQJ`tAJlbnvfH~XQr˂JtArdpvnXQJ`ےQZ|rfH~f`vXpZHAb|ZdQ`f~Zp˂rXQJ`|drtAJltbdQZfH~XQr˂JtArdnXv`fHZp˂rtAJlvXnJXQr|ZdQ`f~Zp˂rXQJ`tAJlnvpے`JbtlJtArdnXvےbHAtbdQZfH~f`vX˂p`ZpfH~rQtJltbdQZ|dtAf`vXpZHAb|ZdQ`f~fpvrXQJ`tdrvp`vpZHAbtlHfpvrXQJ`ےbHAtbdQZfH~XQr˂JtArd|ZdQ`f~Zp˂|drf`vXnvpQXb㉀ۅf۝`vtbAd|drJltnvpے`JbtlHfpvnrXQJےbHAtAJlXnvbے`JtArdnXvےbHAZp˂|drf`vXpZHAb|ZdQbtlHfpvrXQJ`tAJlnvpfZHAbpJAHrXnvZ|dtAJlbnvfH~XQr˂JtArdnXv`ےHAZp˂tbdQZpfH~JXQrZ|ZdQ`f~Zp˂rXQJ`tAJlnvpے`JbtlJfpvnXvےbHAtbdQZfH~ے`Jˁ`ZpfH~rQtJltbdQZpfHf`vXpZHAb|ZdQ`f~Zp˂rXQJ`|drf`vHAbےbtlHfpvrXQJ`ےJltbdQZfH~XQr˂JtArdnXv`f~Zp˂|drf`vXXQr˂QXb㉀ۅf۝`vtbAd|drf`vXnvpے`JbtlHfpvrXQJ`ےbHAtAJlXnv`JXQrJtArdnXvےbHAtbdQZ|drf`vXpZHAb|ZdQ`f~HfpvrXQJ`tAJlnvppZHAbpJAHrXnvZ|dtAJlnvpfH~XQr˂JtArdnXvےbHAZp˂tbdQZpfH~˂pZ|ZdQ`f~Zp˂|drtAJlnvpے`JbtlHfpvnXvےbHAtbdQZfH~ے`JۑppfH~rQtJltbdQZfH~f`vXpZHAb|ZdQ`f~Zp˂rXQJ`|ltvpHAbےbtlHfpvrXQJ`tAJltbdQZfH~XQr˂JtArdnXv`fHZp˂|drf`vXXQr˂JAHr󙐅f۝`vtbAd|drf`vXnvpے`JbtlHfpvrXQJ`ےJlbnvfے`J`JXQrJtArdnXvےbHAtbdQZ|dtAf`vXpZHAb|ZdQ`f~fpvrXQJ`tAJlnvpp`JXQˁ`ZQXXnvZ|dtAJlnvpfے`JXQr˂JtArdnXvےbHAtdrtAp`vXXQrZH˂pZA|ZdQ`f~Zp˂|drJltnvpے`JbtlHfpvnrXQJےbHAtbdQZfH~r˂pb㉀ۑppfH~rQtJltbdQZfH~XQr˂pZHAb|ZdQ`f~Zp˂JltnvpAbے``JXQbtlHfpvrXQJ`tAJlbnvfH~XQr˂JtArdnXv`ےHAZp˂|drf`vXZHAbJAHr󙐅f۝`vtbAd|drf`vXpZHAbے`JbtlHfpvrXQJ`bdQZ|fH~JXQrrbtJtArdnXvےbHAtbdQZpfHf`vXpZHAb|ZdQ`f~Zp˂rXQJ`tAJlnvpے`JXQˁ`ZQXXnvZ|dtAJlnvpے`JXQr˂JtArdnXvےbHAdrtAf`vX˂pZHlJtAd|ZdQ`f~Zp˂|drf`vXnvpے`JbtlHfpvrXQJ`ےbHAtbdQZfH~r˂pAHr󙐂ˍpfH~rQtJltbdQZfH~XQr˂pZHA|ZdQ`f~Zp˂JltnvpAbے`|ZdQbtlHfpvrXQJ`tAJlnvpfH~XQr˂JtArdnXvےbHAZp˂|drf`vXZHAb`ZQXbㅐf۝`vtbAd|drf`vXpZHAbے`JXQbtlHfpvrXQJ`bdQZ|fH~JXQrbtlJtArdnXvےbHAtbdQZfH~f`vXpZHAb|ZdQ`f~Zp˂rXQJ`tAJlnvp˂pZۑpJXnvZ|dtAJlnvpے`JrbtJtArdnXvےbHAltbvpf˂pZAbJtArd|ZdQ`f~Zp˂|drf`vXnvpے`JbtlHfpvrXQJ`ےJltbdQZfH~HAbےAHr󙐂ˍpfH~rQtJltbdQZfH~XQr˂lJtAd|ZdQ`f~Zp˂dQZ|H~f`JXQ|ZdQbtlHfpvrXQJ`tAJlnvpfے`JXQr˂JtArdnXvےbHAtbdQZ|drf`vX`JXQr`ZQXbㅐf۝`vtbAd|drf`vXpZHAb|ZdQbtlHfpvrXQJ`drtAJ`vXnr˂pbtlJfpvnXvےbHAtbdQZfH~XQr˂pZHAb|ZdQ`f~Zp˂|drtAJlnvp˂pZۑp`XnvZ|dtAJlnvpے`JbtlJtArdnXvےbHAltbvpfZHAbJtArdnXv`f~Zp˂|drf`vXpZHAbے`JbtlHfpvrXQJ`tAJltbdQZfH~HAbےZQXb㉀pfH~rQtJltbdQZfH~XQr˂JtArd|ZdQ`f~Zp˂dQZ|H~fے`JXQ|ZdQ`f~HfpvrXQJ`tAJlnvpے`JXQr˂JtArdnXvےbHAtbdQZ|dtAf`vX`JXQHAۑpJAHf۝`vtbAd|drf`vXpZHAb|ZdQbtlHfpvrXQJ`drtAdQ`vXHr˂pbtlHfpvnXvےbHAtbdQZfH~XQr˂pZHA|ZdQ`f~Zp˂|drJltnvpbے`r󙐂ˁ`XnvZ|dtAJlnvpے`JbtlJfpvnXvےbHAZ|d~f`ZHAbJtArdnXv`fHZp˂|drf`vXpZHAbے`JXQbtlHfpvrXQJ`tAJlbnvfH~JXQrZQXb㉀pfH~rQtJltbdQZfH~XQr˂JtArdnXv`f~Zp˂rtAJlvXnJQr|ZdQ`f~fpvrXQJ`tAJlnvpے`JrbtJtArdnXvےbHAtbdQZpfHf`vX˂pZHAۑpJAHf۝`vtbAd|drf`vXpZHAb|ZdQ`f~HfpvrXQJ`tbdQvpfHpZHAbtlHfpvnrXQJےbHAtbdQZfH~XQr˂lJtAd|ZdQ`f~Zp˂|drf`vXnvpbے`f۝`vXnvZ|dtAJlnvpے`JbtlHfpvnXvےbHAZ|d~f`bے`JtArdnXv`ےHAZp˂|drf`vXpZHAb|ZdQbtlHfpvrXQJ`tAJlnvpfH~JXQrXnvˍp|drQtJltuvwxyz{||{zyxwvIIIIIIIIIIIIIIIIIIIIIIJJJ \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv27_1.dat b/mpdf/qrcode/data/qrv27_1.dat deleted file mode 100644 index 7dd3081..0000000 --- a/mpdf/qrcode/data/qrv27_1.dat +++ /dev/null @@ -1,249 +0,0 @@ -|{|{|{|{|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvuststststssstststtstststsrqrqrqrqrqrqrqrqpopopopopopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklklklklklkjijijijijijijijihghghghghghghghghghghghgfefefefefefefefefefefefedcdcdcdcdcdcdcdcbabababababababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYWXWXWXWXWXWXWXWXVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=;<;<;<;<;<;<;<;<:9:9:9:9:9:9:9:9:9:9:9:9878787878787878787656565656565656565656543434343434343434343434321212121212121210/0/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!      |{|{|{|{|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvuststststststststqqqqqqrqrqrqrqrqrqrqrqrqpopopopopopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklklklklklkjijijijijijijijihghghghghghghghghghghghgfefefefefefefefefedcdcdcdcdcdcdcdcdcdcdcbabababababababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYWXWXWXWXWXWXWXWXVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=;<;<;;;;;<;<;<;<:9:9:9:9:9:9:9:9:9:9:9:9878787878787878765656565656565656565656543434343434343434343434321212121212121210/0/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)('('('('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!    |{|{|{|{|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvuststststststststrqrqrqrqrqrqrqrqrqrqrqrqpopopopopopopopoponmnmnmnmnmnmnmnmnmnmnmlklklklklklklklklklklklkjijijijijijijijihghghghghghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcdcdcdcdcbabababababababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYWXWXWWWWWXWXWXWXVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=;;<;<;<;;<;;;;;;:9:9:9:9:9:9:9:9:9:9:9:9878787878787878765656565656565656565656543434343434343434321212121212121212121210/0/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        |{|{|{|{|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvuststststststststrqrqrqrqrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmnmnmnmnmlklklklklklklklklklklklkjijijijijijijijihghghghghghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcdcdcdcdcbababababababababa`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYWWXWXWXWWXWWWWWWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9:9:9:9:9878787878787878765656565656565656565656543434343434343432121212121212121212121210/0/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        |{|{|{|{|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvuststststststststrqrqrqrqrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmnmnmnmnmlklklklklklklklklkjijijijijijijijijijijihghghghghghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABABA@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9:9:9:9:9878787878787878765656565656565656565656543434343434343432121212121212121212121210/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!        |{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvustssssssststststrqrqrqrqrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijijijijijihghghghghghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9:9878787878787878787878765656565656565656565656543434343434343432121212121212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!           |{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststssssssstsrqrqrqrqrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijijijijijihghghghghghghghghgfefefefefefefefefefefedcdcdcdcdcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:987878787878787878787878765656565656565656565656543434343434343432121212121212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!         |{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqrqpopopopopopopopopopoponmnmnmnmnmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijijijijijihghghghghghghghgfefefefefefefefefefefefedcdcdcdcdcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;;;;;;<<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:987878787878787878787878765656565656565656543434343434343434343432121212121212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        |{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopopopopopoponmnmnmnmnmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijijijijijihghghghghghghghgfefefefefefefefefefefefedcdcdcdcdcdcdcdcdcbababababababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWWWWWWXXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=;<;<;<;<;;;;;<;<<;<;<;;;:9:9:9:9:9:9:9:987878787878787878787878765656565656565654343434343434343434343432121212121212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!           |{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopopopopopoponmnmnmnmnmnmnmnmnmlklklklklklklklklklklkjijijijijijijijijijijijihghghghghghghghgfefefefefefefefefefefefedcdcdcdcdcdcdcdcbabababababababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYWXWXWXWXWWWWWXWXXWXWXWWWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCBABABABABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=;<;<;<;<;<;<;<;<;;<;<;<;:9:9:9:9:9:9:9:987878787878787878787878765656565656565654343434343434343434343432121212121212121210/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        |{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststststststsrqrqrqrqrqrqrqrqpopopopopopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklklklklklkjijijijijijijijijijijijihghghghghghghghgfefefefefefefefefefefefedcdcdcdcdcdcdcdcbabababababababababababa`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYWXWXWXWXWXWXWXWXWWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=;<;<;<;<;<;<;<;<<;:9:9:9:9:9:9:9:9:9:9:9878787878787878787878787656565656565656543434343434343434343434321212121212121210/0/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        |{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvussssststtststssststststsrqrqrqrqrqrqrqrqpopopopopopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklklklklklkjijijijijijijijijihghghghghghghghghghghgfefefefefefefefefefefefedcdcdcdcdcdcdcdcbabababababababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYWXWXWXWXWXWXWXWXXWVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=;<;<;<;<;<;<;<;<:9:9:9:9:9:9:9:9:9:9:9:9878787878787878787878787656565656565656543434343434343434343434321212121212121210/0/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!                - - - - - - - -            - - - - - - - -             - - - - - - - -             - - - - - - - - - - -             - - - - - - - - - - - -             - - - - - - - - - - - -             - - - - - - - - - - - -             - - - - - - - - - - - -          - - - - - - - - - - - -         - - - - - - - - - - - -         - - - - - - - - -         - - - - - - - - ||{{zzyyLLKKJJII%%&&''((UUVVWWXXoonnmmll55443322KKLLMMNNrqqppoon>=<;;::9 - - 00112233``aabbcciihhggff99887766 (())**++XXYYZZ[[qqppoonnAA@@??>> !!""##PPQQRRSSyyxxwwvvIIHHGGFFHHIIJJKKxxyyzz{{QQPPOONN!! @@AABBCCppqqrrssYYXXWWVV))((''&& - - 8899::;;hhiijjkkWWVVUUTTVVWW]]^^gffeeddc21100//.44556677ddeeffggeeddccbb55443322,,--..//\\]]^^__mmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWuuttssrrEEDDCCBBLLMMNNOO||||{{zzMMLLKKJJDDEEFFGGttuuvvwwUUTTSSRR%%$$##"" <<==>>??llmmnnooSSRRQQPP%%&&''((__``aabbcbbaa``_.--,,++* - - 8899::;;hhiijjkkaa``__^^1100//..00112233``aabbcciihhggff99887766 (())**++XXYYZZ[[qqppoonnAA@@??>> !!""##PPQQRRSSyyxxwwvvIIHHGGFFHHIIJJKKxxyyzz{{QQPPOONN!! @@AABBCCppqqrrssOONNMMLL))**++,,ccddeeff_^^]]\[Z*))((''& <<==>>??llmmnnoo]]\\[[ZZ--,,++**xxwwvvuuHHGGFFEE))**++,,YYZZ[[\\kkjjiihh1100//..OOPPQQRRnmmllkkj9887766544556677ddeeffggeeddccbb55443322,,--..//\\]]^^__mmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWuuttssrrEEDDCCBBLLMMNNOO||||{{zzMMLLKKJJDDEEFFGGttuuvvwwUUTTSSRR%%$$##"" <<==>>??llmmnnooSSRRQQPP%%&&''((__``aabbcbbaa``_.--,,++* - - 8899::;;hhiijjkkaa``__^^1100//..00112233``aabbcciihhggff99887766 (())**++XXYYZZ[[qqppoonnAA@@??>> !!""##PPQQRRSSyyxxwwvvIIHHGGFFHHIIJJKKxxyyzz{{QQPPOONN!! @@AABBCCppqqrrssOONNMMLL))**++,,ccddeeff_^^]]\[Z*))((''& <<==>>??llmmnnoo]]\\[[ZZ--,,++**44556677ddeeffggeeddccbb55443322,,--..//\\]]^^__mmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWuuttssrrEEDDCCBBLLMMNNOO||||{{zzMMLLKKJJDDEEFFGGttuuvvwwKKJJIIHH--..//00gghhiijjYXWWVVUU&%%$#"! @@AABBCCppqqrrssYYXXWWVV))((''&& - - ttssrrqqDDCCBBAA--..//00]]^^__``ggffeedd--,,++**SSTTUUVVjiihhggf54433221 - - 8899::;;hhiijjkkaa``__^^1100//..00112233``aabbcciihhggff99887766 (())**++XXYYZZ[[qqppoonnAA@@??>> !!""##PPQQRRSSyyxxwwvvIIHHGGFFHHIIJJKKxxyyzz{{QQPPOONN!! @@AABBCCppqqrrssOONNMMLL))**++,,ccddeeff_^^]]\[Z*))((''& <<==>>??llmmnnoo]]\\[[ZZ--,,++**44556677ddeeffggeeddccbb55443322,,--..//\\]]^^__mmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWuuttssrrEEDDCCBBLLMMNNOO||||{{zzMMLLKKJJDDEEFFGGttuuvvwwKKJJIIHH--..//00gghhiijjYXWWVVUU&%%$#"! @@AABBCCppqqrrssYYXXWWVV))((''&& - - 8899::;;hhiijjkkaa``__^^1100//..00112233``aabbcciihhggff99887766 (())**++XXYYZZ[[qqppoonnAA@@??>> !!""##PPQQRRSSyyxxwwvvIIHHGGFFHHIIJJKKxxyyzz{{GGFFEEDD - -11223344kkllmmnnTTSSRRQQDDEEFFGGttuuvvwwUUTTSSRR%%$$##"" ppoonnmm@@??>>== 11223344aabbccddccbbaa``))((''&&%%WW]]^^__feeddccb100//..- <<==>>??llmmnnoo]]\\[[ZZ--,,++**44556677ddeeffggeeddccbb55443322,,--..//\\]]^^__mmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWuuttssrrEEDDCCBBLLMMNNOO||||{{zzMMLLKKJJDDEEFFGGttuuvvwwKKJJIIHH--..//00gghhiijjYXWWVVUU&%%$#"! @@AABBCCppqqrrssYYXXWWVV))((''&& - - 8899::;;hhiijjkkaa``__^^1100//..00112233``aabbcciihhggff99887766 (())**++XXYYZZ[[qqppoonnAA@@??>> !!""##PPQQRRSSyyxxwwvvIIHHGGFFHHIIJJKKxxyyzz{{GGFFEEDD - -11223344kkllmmnnTTSSRRQQDDEEFFGGttuuvvwwUUTTSSRR%%$$##"" <<==>>??llmmnnoo]]\\[[ZZ--,,++**44556677ddeeffggeeddccbb55443322,,--..//\\]]^^__mmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWuuttssrrEEDDCCBBLLMMNNOO||||{{zzCCBBAA;; 55667788ooppqqrrPPOONNMMHHIIJJKKxxyyzz{{QQPPOONN!! llkkjjii<<;;::99 - - 55667788eeffgghh__^^]]WW%%&&''(())``aabbccbaa``__^-,,++**)@@AABBCCppqqrrssYYXXWWVV))((''&& - - 8899::;;hhiijjkkaa``__^^1100//..00112233``aabbcciihhggff99887766 (())**++XXYYZZ[[qqppoonnAA@@??>> !!""##PPQQRRSSyyxxwwvvIIHHGGFFHHIIJJKKxxyyzz{{GGFFEEDD - -11223344kkllmmnnTTSSRRQQDDEEFFGGttuuvvwwUUTTSSRR%%$$##"" <<==>>??llmmnnoo]]\\[[ZZ--,,++**44556677ddeeffggeeddccbb55443322,,--..//\\]]^^__mmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWuuttssrrEEDDCCBBLLMMNNOO||||{{zzCCBBAA;; 55667788ooppqqrrPPOONNMMHHIIJJKKxxyyzz{{QQPPOONN!! @@AABBCCppqqrrssYYXXWWVV))((''&& - - 8899::;;hhiijjkkaa``__^^1100//..00112233``aabbcciihhggff99887766 (())**++XXYYZZ[[qqppoonnAA@@??>> !!""##PPQQRRSSyyssrrqq::99887799::;;AAssyyzz{{LLKKJJIILLMMNNOO||||{{zzMMLLKKJJhhggffee88776655 - - 99::;;<>??llmmnnoo]]\\[[ZZ--,,++**44556677ddeeffggeeddccbb55443322,,--..//\\]]^^__mmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWuuttssrrEEDDCCBBLLMMNNOO||||{{zzCCBBAA;; 55667788ooppqqrrPPOONNMMHHIIJJKKxxyyzz{{QQPPOONN!! @@AABBCCppqqrrssYYXXWWVV))((''&& - - 8899::;;hhiijjkkaa``__^^1100//..00112233``aabbcciihhggff99887766 (())**++XXYYZZ[[qqppoonnAA@@??>> !!""##PPQQRRSSyyssrrqq::99887799::;;AAssyyzz{{LLKKJJIILLMMNNOO||||{{zzMMLLKKJJDDEEFFGGttuuvvwwUUTTSSRR%%$$##"" <<==>>??llmmnnoo]]\\[[ZZ--,,++**44556677ddeeffggeeddccbb55443322,,--..//\\]]^^__mmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWppoonnmm66554433 - - BBCCDDEE||||{{zzHHGGFFEE !!""##PPQQRRSSyyxxwwvvIIHHGGFFddccbbaa44332211 ==>>??@@mmnnooppRRQQPPOO..//0011hhiijjkkWWVVUUTT%$#"! HHIIJJKKxxyyzz{{QQPPOONN!! @@AABBCCppqqrrssYYXXWWVV))((''&& - - 8899::;;hhiijjkkaa``__^^1100//..00112233``aabbcciihhggff99887766 (())**++XXYYZZ[[qqppoonnAA@@??>> !!""##PPQQRRSSyyssrrqq::99887799::;;AAssyyzz{{LLKKJJIILLMMNNOO||||{{zzMMLLKKJJDDEEFFGGttuuvvwwUUTTSSRR%%$$##"" <<==>>??llmmnnoo]]\\[[ZZ--,,++**44556677ddeeffggeeddccbb55443322,,--..//\\]]^^__mmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWppoonnmm66554433 - - BBCCDDEE||||{{zzHHGGFFEE !!""##PPQQRRSSyyxxwwvvIIHHGGFFHHIIJJKKxxyyzz{{QQPPOONN!! @@AABBCCppqqrrssYYXXWWVV))((''&& - - 8899::;;hhiijjkkaa``__^^1100//..00112233``aabbcciihhggff99887766 (())**++XXYYZZ[[llkkjjii221100// FFGGHHIIyyxwvutsDDCCBBAA $$%%&&''TTUUVVWWuuttssrrEEDDCCBB``__^^]]00//..--AABBCCDDqqrrssttNNMMLLKK22334455llmmnnooSSRRQQPPLLMMNNOO||||{{zzMMLLKKJJDDEEFFGGttuuvvwwUUTTSSRR%%$$##"" <<==>>??llmmnnoo]]\\[[ZZ--,,++**44556677ddeeffggeeddccbb55443322,,--..//\\]]^^__mmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWppoonnmm66554433 - - BBCCDDEE||||{{zzHHGGFFEE !!""##PPQQRRSSyyxxwwvvIIHHGGFFHHIIJJKKxxyyzz{{QQPPOONN!! @@AABBCCppqqrrssYYXXWWVV))((''&& - - 8899::;;hhiijjkkaa``__^^1100//..00112233``aabbcciihhggff99887766 (())**++XXYYZZ[[llkkjjii221100// FFGGHHIIyyxwvutsDDCCBBAA $$%%&&''TTUUVVWWuuttssrrEEDDCCBBLLMMNNOO||||{{zzMMLLKKJJDDEEFFGGttuuvvwwUUTTSSRR%%$$##"" <<==>>??llmmnnoo]]\\[[ZZ--,,++**44556677ddeeffggeeddccbb55443322,,--..//\\]]^^__hhggffee..--,,++JJKKLLMMsrrqqppo@?>=<;;: - - (())**++XXYYZZ[[qqppoonnAA@@??>> !!""##\\[[ZZYY,,++**))EEFFGGHHuuvvwwxxJJIIHHGG 66778899ppqqrrssOONNMMLL !!""##PPQQRRSSyyxxwwvvIIHHGGFFHHIIJJKKxxyyzz{{QQPPOONN!! @@AABBCCppqqrrssYYXXWWVV))((''&& - - 8899::;;hhiijjkkaa``__^^1100//..00112233``aabbcciihhggff99887766 (())**++XXYYZZ[[llkkjjii221100// FFGGHHIIyyxwvutsDDCCBBAA $$%%&&''TTUUVVWWuuttssrrEEDDCCBBLLMMNNOO||||{{zzMMLLKKJJDDEEFFGGttuuvvwwUUTTSSRR%%$$##"" <<==>>??llmmnnoo]]\\[[ZZ--,,++**44556677ddeeffggeeddccbb55443322,,--..//\\]]^^__hhggffee..--,,++JJKKLLMMsrrqqppo@?>=<;;: - - (())**++XXYYZZ[[qqppoonnAA@@??>> !!""##PPQQRRSSyyxxwwvvIIHHGGFFHHIIJJKKxxyyzz{{QQPPOONN!! @@AABBCCppqqrrssYYXXWWVV))((''&& - - 8899::;;hhiijjkkaa``__^^1100//..00112233``aabbccddccbbaa**))((''NNOOPPQQonnmmllk:9988776,,--..//\\]]^^__mmllkkjj==<<;;:: - -$$%%&&''44556677XXWWVVUU((''&&%%IIJJKKLLyyzz{{||FFEEDDCC - - ::;;AABByyzz{{||KKJJIIHH$$%%&&''TTUUVVWWuuttssrrEEDDCCBBLLMMNNOO||||{{zzMMLLKKJJDDEEFFGGttuuvvwwUUTTSSRR%%$$##"" <<==>>??llmmnnoo]]\\[[ZZ--,,++**44556677ddeeffggeeddccbb55443322,,--..//\\]]^^__hhggffee..--,,++JJKKLLMMsrrqqppo@?>=<;;: - - (())**++XXYYZZ[[qqppoonnAA@@??>> !!""##PPQQRRSSyyxxwwvvIIHHGGFFHHIIJJKKxxyyzz{{QQPPOONN!! @@AABBCCppqqrrssYYXXWWVV))((''&& - - 8899::;;hhiijjkkaa``__^^1100//..00112233``aabbccddccbbaa**))((''NNOOPPQQonnmmllk:9988776,,--..//\\]]^^__mmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWuuttssrrEEDDCCBBLLMMNNOO||||{{zzMMLLKKJJDDEEFFGGttuuvvwwUUTTSSRR%%$$##"" <<==>>??llmmnnoo]]\\[[ZZ--,,++**44556677ddeeffgg``__^^]]&&%%RRSSTTUUkjjiihhg6554433200112233``aabbcciihhggff99887766 (())**++8899::;;TTSSRRQQ$$##""!! MMNNOOPP||{{zzyyBBAA;;:: - - CCDDEEFF||{{zzyyGGFFEEDD(())**++XXYYZZ[[qqppoonnAA@@??>> !!""##PPQQRRSSyyxxwwvvIIHHGGFFHHIIJJKKxxyyzz{{QQPPOONN!! @@AABBCCppqqrrssYYXXWWVV))((''&& - - 8899::;;hhiijjkkaa``__^^1100//..00112233``aabbccddccbbaa**))((''NNOOPPQQonnmmllk:9988776,,--..//\\]]^^__mmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWuuttssrrEEDDCCBBLLMMNNOO||||{{zzMMLLKKJJDDEEFFGGttuuvvwwUUTTSSRR%%$$##"" <<==>>??llmmnnoo]]\\[[ZZ--,,++**44556677ddeeffgg``__^^]]&&%%RRSSTTUUkjjiihhg6554433200112233``aabbcciihhggff99887766 (())**++XXYYZZ[[qqppoonnAA@@??>> !!""##PPQQRRSSyyxxwwvvIIHHGGFFHHIIJJKKxxyyzz{{QQPPOONN!! @@AABBCCppqqrrssYYXXWWVV))((''&& - - 8899::;;hhiijjkkWWVVUUTTVVWW]]^^gffeeddc21100//.44556677ddeeffggeeddccbb55443322,,--..//<<==>>??PPOONNMM !!""##$$QQRRSSTTssrrqqpp99887766 GGHHIIJJxwvutssrCCBBAA@? ,,--..//\\]]^^__mmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWuuttssrrEEDDCCBBLLMMNNOO||||{{zzMMLLKKJJDDEEFFGGttuuvvwwUUTTSSRR%%$$##"" <<==>>??llmmnnoo]]\\[[ZZ--,,++**44556677ddeeffgg``__^^]]&&%%RRSSTTUUkjjiihhg6554433200112233``aabbcciihhggff99887766 (())**++XXYYZZ[[qqppoonnAA@@??>> !!""##PPQQRRSSyyxxwwvvIIHHGGFFHHIIJJKKxxyyzz{{QQPPOONN!! @@AABBCCppqqrrssYYXXWWVV))((''&& - - 8899::;;hhiijjkkWWVVUUTTVVWW]]^^gffeeddc21100//.44556677ddeeffggeeddccbb55443322,,--..//\\]]^^__mmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWuuttssrrEEDDCCBBLLMMNNOO||||{{zzMMLLKKJJDDEEFFGGttuuvvwwUUTTSSRR%%$$##"" <<==>>??llmmnnooSSRRQQPP%%&&''((__``aabbcbbaa``_.--,,++* - - 8899::;;hhiijjkkaa``__^^1100//..00112233@@AABBCCDDEEFFGGttuuvvwwUUTTSSRR%%$$##"" <<==>>??llmmnnoo]]\\[[ZZ--,,++**44556677ddeeffggeeddccbb55443322,,--..//\\]]^^__mmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWmmllkkjj33221100MMNNOOPPaa``__^^1100//..@@AABBCCHHIIJJKKxxyyzz{{QQPPOONN!! @@AABBCCppqqrrssYYXXWWVV))((''&& - - 8899::;;hhiijjkkaa``__^^1100//..00112233``aabbcciihhggff99887766 (())**++XXYYZZ[[iihhggff//..--,,QQRRSSTT]]\\[[ZZ--,,++**DDEEFFGGLLMMNNOO||||{{zzMMLLKKJJDDEEFFGGttuuvvwwUUTTSSRR%%$$##"" <<==>>??llmmnnoo]]\\[[ZZ--,,++**44556677ddeeffggeeddccbb55443322,,--..//\\]]^^__eeddccbb++**))((UUVVWW]]YYXXWWVV))((''&&HHIIJJKKPPQQRRSSyyxxwwvvIIHHGGFFHHIIJJKKxxyyzz{{QQPPOONN!! @@AABBCCppqqrrssYYXXWWVV))((''&& - - 8899::;;hhiijjkkaa``__^^1100//..00112233``aabbccaa``__^^''&&%%%%&&''^^__``aaUUTTSSRR%%$$##""LLMMNNOOTTUUVVWWuuttssrrEEDDCCBBLLMMNNOO||||{{zzMMLLKKJJDDEEFFGGttuuvvwwUUTTSSRR%%$$##"" <<==>>??llmmnnoo]]\\[[ZZ--,,++**44556677ddeeffgg]]WWVVUU(())**++bbccddeeQQPPOONN!!  !!""##PPQQRRSSXXYYZZ[[qqppoonnAA@@??>> !!""##PPQQRRSSyyxxwwvvIIHHGGFFHHIIJJKKxxyyzz{{QQPPOONN!! @@AABBCCppqqrrssYYXXWWVV))((''&& - - 8899::;;hhiijjkkTTSSRRQQ,,--..//ffgghhiiMMLLKKJJ$$%%&&''TTUUVVWW\\]]^^__mmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWuuttssrrEEDDCCBBLLMMNNOO||||{{zzMMLLKKJJDDEEFFGGttuuvvwwUUTTSSRR%%$$##"" <<==>>??llmmnnooPPOONNMM00112233jjkkllmmIIHHGGFF(())**++XXYYZZ[[``aabbcciihhggff99887766 (())**++XXYYZZ[[qqppoonnAA@@??>> !!""##PPQQRRSSyyxxwwvvIIHHGGFFHHIIJJKKxxyyzz{{QQPPOONN!! @@AABBCCppqqrrssLLKKJJII44556677nnooppqqEEDDCCBB,,--..//\\]]^^__ddeeffggeeddccbb55443322,,--..//\\]]^^__mmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWuuttssrrEEDDCCBBLLMMNNOO||||{{zzMMLLKKJJDDEEFFGGttuuvvwwHHGGFFEE 8899::;;qqppoonnAA@@??>>00112233``aabbcchhiijjkkaa``__^^1100//..00112233``aabbcciihhggff99887766 (())**++XXYYZZ[[qqppoonnAA@@??>> !!""##PPQQRRSSyyxxwwvvIIHHGGFFHHIIJJKKxxyyzz{{DDCCBBAA - - - -AABBCCDDmmllkkjj==<<;;:: - -44556677ddeeffggllmmnnoo]]\\[[ZZ--,,++**44556677ddeeffggeeddccbb55443322,,--..//\\]]^^__mmllkkjj==<<;;:: - -$$%%&&''TTUUVVWWuuttssrrEEDDCCBBLLMMNNOO||ttssrr;;::9988 EEFFGGHHiihhggff99887766 - - 8899::;;hhiijjkkppqqrrssYYXXWWVV))((''&& - - 8899::;;hhiijjkkaa``__^^1100//..00112233``aabbcciihhggff99887766 (())**++XXYYZZ[[qqppoonnAA@@??>> !!""##PPQQRRSSqqppoonn77665544IIJJKKLLeeddccbb55443322 <<==>>??llmmnnooppqqfpvfpvfpvXQJ`ےXQJ`ےltbtAJlH~fpfH~bے`JQr˂p˂pZHAbtlbtl`f~`f~`fHےbHAےbHAtAJltAJltAJlf`vXf`vXXQr˂XQr˂XQr˂btlbtlbtl`f~`f~ےbHAےbHAےbHAtAJltAJlf`vXf`vXf`vX`JXQrے`JJtArdl|Z~HfpvnX`ےHAےbHAےbHAtAJltAJlJltf`vXf`vXXQr˂XQr˂XQr˂btlbtl`f~`f~`f~ےbHAےbHAےJltAJltAJlf`vXf`vXf`vXXQr˂XQr˂btlbtlbtlXv`fnXvXQJ`ےrXQJtbdZ|df`vXf`vXf`vXXQr˂XQr˂rbtbtlbtl`f~`f~`fHےbHAےbHAtAJltAJltAJlf`vXf`vXXQr˂XQr˂XQr˂btlbtlbtl`f~`f~ےbHAےbHAےbHAdrtAJ|drH~fpfH~˂pZAbbے`btlbtlbtl`f~`f~`ےHAnXv`nXv`nXv`bHAZbHAZdQZ|tbdQZ`vXnf`vJXQrˑZHAbbJAdJtArdJtArdHfpvHfpvfpvZp˂Zp˂tbdQZtbdQZtbdQZnvpnvppZHAbpZHAbpZHAbJtArdJtArdJfpvHfpvHfpvZp˂Zp˂Zp˂tbdQZtbdQZnvpnvpnvp˂pZXQr˂tlJdQbt璝vnXv`fZp˂Zp˂Zp˂tbdQZtbdQZbnvnvpnvppZHAbpZHAbpZHAJtArdJtArdHfpvHfpvHfpvZp˂Zp˂tbdQZtbdQZtbdQZnvpnvpnvppZHAbpZHAbJtArdJtArdJtArd~Hf`f~bHAZ`ےbQZ|rrtAJlnvpnvpnvppZHAbpZHAblJtAdJtArdJtArdHfpvHfpvfpvZp˂Zp˂tbdQZtbdQZtbdQZnvpnvppZHAbpZHAbpZHAbJtArdJtArdJfpvHfpvHfpvZp˂Zp˂Zp˂ltbtAJl`vXnf`v`JXQJXQrZJtArdJtArdJtArdHfpvHfpvZp˂f~Hf~Hf~Hp˂rp˂rdrtAJ|drvpfXnvpZHAے`JX|ZdQ|ZdQ|ZdQnXvnXvnrXQJrXQJ`rXQJ`|dr|dr|dtAfH~fH~ے`Jے`Jے`J|ZdQ|ZdQnXvnXvnXvrXQJ`rXQJ`rXQJ`|dr|drfH~fH~fH~HAbےpZHAbtArdlJtArv`f~~HfprXQJ`rXQJ`rXQJ`|dr|drpfHfH~fH~ے`Jے`Jے`JXQ|ZdQ|ZdQnXvnXvnXvrXQJ`rXQJ`|dr|dr|drfH~fH~fے`Jے`Jے`J|ZdQ|ZdQ|ZdQpvnHfpvp˂rHAZp˂AJlttbQZfH~fH~fH~ے`Jے`J|ZdQ|ZdQ|ZdQnXvnXvnrXQJrXQJ`rXQJ`|dr|dr|dtAfH~fH~ے`Jے`Jے`J|ZdQ|ZdQnXvnXvnXvrXQJ`rXQJ`rXQJ`dQZ|tbdQZvpfXnvr˂pHAbے|ZdQ|ZdQ|ZdQnXvnXvrXQJ`fpvfpvfpvXQJ`ےXQJ`ےltbtAJlH~p`vXbے`Qr˂pbtlbtlbtl`f~`f~`ےHAےbHAےbHAtAJltAJlJltf`vXf`vXXQr˂XQr˂XQr˂btlbtl`f~`f~`f~ےbHAےbHAےJltAJltAJlf`vXf`vXf`vX`JXQrے`J|ZdQbd|ZfpvvnvfےbHAےbHAےbHAtAJltAJlf`vXf`vXf`vXXQr˂XQr˂rbtbtlbtl`f~`f~`fHےbHAےbHAtAJltAJltAJlf`vXf`vXXQr˂XQr˂XQr˂btlbtlbtlXv`fnXvXQJ`ےrXQJbdQZ|drtAJf`vXf`vXf`vXXQr˂XQr˂btlbtlbtl`f~`f~`ےHAےbHAےbHAtAJltAJlJltf`vXf`vXXQr˂XQr˂XQr˂btlbtl`f~`f~`f~ےbHAےbHAےJldrtAdQ|ltH~fpfH~ZHAb`JXQrbtlbtlbtl`f~`f~ےbHAnXv`nXv`nXv`bHAZbHAZdQZ|ltdrtAvpfHnvpJXQrˑZHAbJtArdJtArdJtArdHfpvHfpvZp˂Zp˂Zp˂tbdQZtbdQZbnvnvpnvppZHAbpZHAbpZHAJtArdJtArdHfpvHfpvHfpvZp˂Zp˂tbdQZtbdQZtbdQZnvpnvpnvp˂pZXQr˂tlJdQbtnXv`~HfZp˂Zp˂Zp˂tbdQZtbdQZnvpnvpnvppZHAbpZHAblJtAdJtArdJtArdHfpvHfpvfpvZp˂Zp˂tbdQZtbdQZtbdQZnvpnvppZHAbpZHAbpZHAbJtArdJtArdJfpv~HX`pvbHAZ`ےbdrtAltbnvpnvpnvppZHAbpZHAbJtArdJtArdJtArdHfpvHfpvZp˂Zp˂Zp˂tbdQZtbdQZbnvnvpnvppZHAbpZHAbpZHAJtArdJtArdHfpvHfpvHfpvZp˂Zp˂tdrtAZ|dbnv`vXHvpے`JXQ˂pZJtArdJtArdJfpvHfpvHfpvZp˂f~Hf~Hp˂rp˂rp˂rtbdQJlt~f`fH~pZAbے`JX|ZdQ|ZdQ|ZdQnXvnXvrXQJ`rXQJ`rXQJ`|dr|drpfHfH~fH~ے`Jے`Jے`JXQ|ZdQ|ZdQnXvnXvnXvrXQJ`rXQJ`|dr|dr|drfH~fH~fے`JHAbp`JXQtArdlJtArf~HpvnrXQJ`rXQJ`rXQJ`|dr|drfH~fH~fH~ے`Jے`J|ZdQ|ZdQ|ZdQnXvnXvnrXQJrXQJ`rXQJ`|dr|dr|dtAfH~fH~ے`Jے`Jے`J|ZdQ|ZdQ~Hv`fnrXQJp˂HAXQJ`JltdQZ|fH~fH~fے`Jے`Jے`J|ZdQ|ZdQ|ZdQnXvnXvrXQJ`rXQJ`rXQJ`|dr|drpfHfH~fH~ے`Jے`Jے`JXQ|ZdQ|ZdQnXvnXvnXvrXQJ`rXQJ`JltrtAJlp`vX~f`fے`Jr˂pHAbے|ZdQ|ZdQnXvnXvnXvrXQJ`fpvfpvXQJ`ےXQJ`ےXQJ`ےZ|dbdQZ|vXnf`vX`JXQrQrZHAbtlbtlbtl`f~`f~ےbHAےbHAےbHAtAJltAJlf`vXf`vXf`vXXQr˂XQr˂rbtbtlbtl`f~`f~`fHےbHAےbHAtAJltAJltAJlf`vXf`vXXQHAb˂pZHArbt|ZdQtAdtlfpvXv`fےbHAےbHAےJltAJltAJlf`vXf`vXf`vXXQr˂XQr˂btlbtlbtl`f~`f~`ےHAےbHAےbHAtAJltAJlJltf`vXf`vXXQr˂XQr˂XQr˂btlbtlfpv~Hfp`p˂bHAZpےJlbdQZ|drtAJf`vXf`vXXQr˂XQr˂XQr˂btlbtlbtl`f~`f~ےbHAےbHAےbHAtAJltAJlf`vXf`vXf`vXXQr˂XQr˂rbtbtlbtl`f~`f~`fHےbHAےbHAbdQZ|tbdQnvpvXnXQrZHZHAb`JXQrbtlbtl`f~`f~`f~ےbHAnXv`nXv`bHAZbHAZbHAZrtAJldrtAvpfHnvp˂pZbے`JtArdJtArdJfpvHfpvHfpvZp˂Zp˂Zp˂tbdQZtbdQZnvpnvpnvppZHAbpZHAblJtAdJtArdJtArdHfpvHfpvfpvZp˂Zp˂tbdQZtbdQZtbdQZnvpnvpے`JXQbے`l|ZdQrd|JfpvnXv`~HfZp˂Zp˂tbdQZtbdQZtbdQZnvpnvpnvppZHAbpZHAbJtArdJtArdJtArdHfpvHfpvZp˂Zp˂Zp˂tbdQZtbdQZbnvnvpnvppZHAbpZHAbpZHAJtArdJtArdnXv`vnXrXQJ`˂rXQtbQZddrtAltbnvpnvppZHAbpZHAbpZHAbJtArdJtArdJfpvHfpvHfpvZp˂Zp˂Zp˂tbdQZtbdQZnvpnvpnvppZHAbpZHAblJtAdJtArdJtArdHfpvHfpvfpvZp˂Zp˂drtAZ|dfH~vpfHAbے`JQrˀ˂pZAJtArdJtArdHfpvHfpvHfpvZp˂f~Hf~Hp˂rp˂rp˂rtbdQJlt~f`fH~HAbےJXQr|ZdQ|ZdQnXvnXvnXvrXQJ`rXQJ`rXQJ`|dr|drfH~fH~fH~ے`Jے`J|ZdQ|ZdQ|ZdQnXvnXvnrXQJrXQJ`rXQJ`|dr|dr|dtAfH~fH~r˂pJXQrbtlZdQbtnvff~HpvnrXQJ`rXQJ`|dr|dr|drfH~fH~fے`Jے`Jے`J|ZdQ|ZdQ|ZdQnXvnXvrXQJ`rXQJ`rXQJ`|dr|drpfHfH~fH~ے`Jے`Jے`JXQ|ZdQ|ZdQf~Hv`fےbHAJ`ےrtAJlJbdQdQZ|fH~fH~ے`Jے`Jے`J|ZdQ|ZdQnXvnXvnXvrXQJ`rXQJ`rXQJ`|dr|drfH~fH~fH~ے`Jے`J|ZdQ|ZdQ|ZdQnXvnXvnrXQJrXQJ`rXQJ`JltrtAJlf`vX~f`JXQrpZHA㙒`JXQ|ZdQ|ZdQnXvnXvnXvrXQJ`ےbHAfpvfpvXQJ`ےXQJ`ےXQJ`ےZ|dbdQZ|vXH~vpf`JXQr˂pZHAbtlbtl`f~`f~`f~ےbHAےbHAےJltAJltAJlf`vXf`vXf`vXXQr˂XQr˂btlbtlbtl`f~`f~`ےHAےbHAےbHAtAJltAJlJltf`vXf`vXZHAb˂pZHAJtArdlJtA~HfpfvnXXv`fےbHAےbHAtAJltAJltAJlf`vXf`vXXQr˂XQr˂XQr˂btlbtlbtl`f~`f~ےbHAےbHAےbHAtAJltAJlf`vXf`vXf`vXXQr˂XQr˂rbtbtlbtlfpv~HfpZp˂bHAZptbdZ|dAJltf`vXf`vXXQr˂XQr˂XQr˂btlbtl`f~`f~`f~ےbHAےbHAےJltAJltAJlf`vXf`vXf`vXXQr˂XQr˂btlbtlbtl`f~`f~`ےHAےbHAےbHAbdQZ|tdrnvpvXn˂pZHbے`rbtbtlbtl`f~`f~`fHےbHAZp˂nXv`nXv`bHAZbHAZJltrtAdQZ`vXnf`vے`JXQ˂pZbے`JtArdJtArdHfpvHfpvHfpvZp˂Zp˂tbdQZtbdQZtbdQZnvpnvpnvppZHAbpZHAbJtArdJtArdJtArdHfpvHfpvZp˂Zp˂Zp˂tbdQZtbdQZbnvnvpnvpے`JXQbے`|ZdQrd|vnXv`ffpvZp˂Zp˂tbdQZtbdQZtbdQZnvpnvppZHAbpZHAbpZHAbJtArdJtArdJfpvHfpvHfpvZp˂Zp˂Zp˂tbdQZtbdQZnvpnvpnvppZHAbpZHAblJtAdJtArdJtArdnXv`v~rXQJ`˂rXQQZ|drtAJlbnvnvpnvppZHAbpZHAbpZHAJtArdJtArdHfpvHfpvHfpvZp˂Zp˂tbdQZtbdQZtbdQZnvpnvpnvppZHAbpZHAbJtArdJtArdJtArdHfpvHfpvZp˂Zp˂Zp˂ltbtAJlfH~vp`vAbے`JXQrlJtAdJtArdJtArdHfpvHfpvfpvZp˂rXQJ`f~Hf~Hp˂rp˂rdrtAJ|drvpfXnvrZHAHAbJXQr|ZdQ|ZdQnXvnXvnXvrXQJ`rXQJ`|dr|dr|drfH~fH~fے`Jے`Jے`J|ZdQ|ZdQ|ZdQnXvnXvrXQJ`rXQJ`rXQJ`|dr|drpfHfH~fH~r˂pJXQHAbbtlZdQbtv`f~HfpnrXQJrXQJ`rXQJ`|dr|dr|dtAfH~fH~ے`Jے`Jے`J|ZdQ|ZdQnXvnXvnXvrXQJ`rXQJ`rXQJ`|dr|drfH~fH~fH~ے`Jے`J|ZdQ|ZdQ|ZdQpvnHfpvےbHAJ`p˂rtAJltbdQpfHfH~fH~ے`Jے`Jے`JXQ|ZdQ|ZdQnXvnXvnXvrXQJ`rXQJ`|dr|dr|drfH~fH~fے`Jے`Jے`J|ZdQ|ZdQ|ZdQnXvnXvrXQJ`rXQJ`rXQJ`dQZ|tbdQZvpfXnvJXQrpZHA|ZdQ|ZdQ|ZdQnXvnXvnrXQJrXQJ`ےbHAZp˂Zp˂tbdQZtbdQZnvpnvpnvppZHAbpZHAblJtAdJtArdJtArdHfpvHfpvfpvZp˂Zp˂tbdQZtbdQZtbdQZnvpnvpXQr˂`JXQrˁ`ZAHr󙐂˅Xnv˅Xnv˒tbAdtbAdrXQJ`rXQJ`|dr|drfH~fH~fH~ے`Jے`J|ZdQ|ZdQ|ZdQnXvnXvnrXQJrXQJ`rXQJ`|dr|dr|dtAfH~fH~pZHAb˂pZQXb㉀ہ`ZQXbpfH~pfH~Z|dZ|dےbHAےJltAJltAJlf`vXf`vXf`vXXQr˂XQr˂btlbtlbtl`f~`f~`ےHAےbHAےbHAtAJltAJlJltf`vXf`vXے`JHAbےpJAHr󉀒ۑp`f۝`vf۝`vrQtJlrQtJlZp˂tbdQZtbdQZtbdQZnvpnvpnvppZHAbpZHAbJtArdJtArdJtArdHfpvHfpvZp˂Zp˂Zp˂tbdQZtbdQZbnvnvpnvpXQr˂`JXQHAۑpZQXb㉀Xnv˅Xnv˒tbAdtbAdrXQJ`|dr|dr|drfH~fH~fے`Jے`Jے`J|ZdQ|ZdQ|ZdQnXvnXvrXQJ`rXQJ`rXQJ`|dr|drpfHfH~fH~p`JXQbے`JAHr󙐒ۑpJAHpfH~pfH~Z|dZ|dےbHAtAJltAJltAJlf`vXf`vXXQr˂XQr˂XQr˂btlbtlbtl`f~`f~ےbHAےbHAےbHAtAJltAJlf`vXf`vXf`vXr˂pJXQrˁ`ZQXr󙐂ˁ`f۝`vf۝`vrQtJlrQtJlZp˂tbdQZtbdQZtbdQZnvpnvppZHAbpZHAbpZHAbJtArdJtArdJfpvHfpvHfpvZp˂Zp˂Zp˂tbdQZtbdQZnvpnvpnvpZHAb˂pZHAb㉀ۑpZQXb㉀Xnv˅Xnv˒tbAdtbAdrXQJ`|dr|dr|dtAfH~fH~ے`Jے`Jے`J|ZdQ|ZdQnXvnXvnXvrXQJ`rXQJ`rXQJ`|dr|drfH~fH~fH~ے`JXQbے`JAHr󙐒ۑpJAHpfH~pfH~Z|dZ|dےbHAtAJltAJlJltf`vXf`vXXQr˂XQr˂XQr˂btlbtl`f~`f~`f~ےbHAےbHAےJltAJltAJlf`vXf`vXf`vXr˂pJXQrˁ`ZQXf۝`vf۝`vf۝`vrQtJlrQtJlZp˂tbdQZtbdQZbnvnvpnvppZHAbpZHAbpZHAJtArdJtArdHfpvHfpvHfpvZp˂Zp˂tbdQZtbdQZtbdQZnvpnvpnvpZHAb˂p`ZAHr󙐂˅Xnv˅Xnv˅Xnv˒tbAdtbAdrXQJ`|dr|drpfHfH~fH~ے`Jے`Jے`JXQ|ZdQ|ZdQnXvnXvnXvrXQJ`rXQJ`|dr|dr|drfH~fH~fZHAb˂pZQXb㉀ہ`ZQXbpfH~pfH~p|dZ|dZ|dےbHAtAJltAJlf`vXf`vXf`vXXQr˂XQr˂rbtbtlbtl`f~`f~`fHےbHAےbHAtAJltAJltAJlf`vXf`vXے`JHAbےpJAHr󉀒ۑpJf۝`vf۝`vrQtJlrQtJlrQtJltuvwxyz{||{zyxwv \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv27_2.dat b/mpdf/qrcode/data/qrv27_2.dat deleted file mode 100644 index 536c7ca..0000000 --- a/mpdf/qrcode/data/qrv27_2.dat +++ /dev/null @@ -1,249 +0,0 @@ -|{|{|{|{zyzyzyzyxwxwxwxwssstststrqrqrqrqnmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVU|{|{|{|{zyzyzyzyxwxwxwxwststststrqrqrqrqnmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVU|{|{|{|{zyzyzyzyvuvuvuvuststststrqrqrqrqnmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa`_^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVU|{|{|{|{zyzyzyzyvuvuvuvuststststrqpopoponmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYXWXWXWVUVUVUVU|{|{|{|{zyzyzyzyvuvuvuvuststststpopopoponmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[XWWWWWWXVUVUVUVU|{|{|{|{zyzyzyzyvuvuvuvuststststpopopoponmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[WXWXWXWXVUVUVUVU|{|{|{|{zyzyzyzyvuvuvuvusssssstspopopoponmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[WXWXWXWXVUVUVUVU|{|{|{|{zyzyzyzyvuvuvuvutstststspopopoponmnmnmnmlklklklkjihghghgfefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[WXWXWXWXVUVUVUVU|{|{|{|{zyzyzyzyvuvuvuvutstststspopopoponmnmnmnmlklklklkhghghghgfefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[WXWXWXWXVUVUVUVU|{|{|{|{zyzyzyzyvuvuvuvutstststspopopoponmnmnmnmlklklklkhghghghgfefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[WXWXWXWXVUVUVUVU|{|{|{|{zyzyzyzyvuvuvuvutstststspopopoponmnmnmnmlklklklkhghghghgfefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[WXWXWWWWVUVUVUVU|{|{|{|{zyzyzyzyvuvuvuvutstststspopopoponmnmnmnmlklklklkhghghghgfefefefedcdcdcdcba`_`_`_^]^]^]^]\[\[\[\[WWXWXWXWVUVUVUVU|{|{|{|{zyzyzyzyvuvuvuvutstststspopopoponmnmnmnmlklklklkhghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUTSTSTSTS|{|{|{|{zyzyzyzyvuvuvuvuqqqqqqrqpopopoponmnmnmnmlklklklkhghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUTSTSTSTS|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrqpopopoponmnmnmnmlklklklkhghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUTSTSTSTS|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrqpopopoponmnmnmnmlklklklkhghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUTSTSTSTS|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrqpopopoponmnmnmnmlkjijijihghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUTSTSTSTS|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrqpopopoponmnmnmnmjijijijihghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[WWWWWXWXVUVUVUVUTSTSTSTS|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqpopopoponmnmnmnmjijijijihghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[ZYZYZYWXWXWXWXVUVUVUVUTSTSTSTS|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqpopopoponmnmnmnmjijijijihghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYWXWXWXWXVUVUVUVUTSTSTSTS|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqpopopoponmnmnmnmjijijijihghghghgfefefefedcbababa`_`_`_`_^]^]^]^]ZYZYZYZYWXWXWXWXVUVUVUVUTSTSTSTS|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqpopopoponmnmnmnmjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]ZYZYZYZYWXWXWXWXVUVUVUVUTSTSTSTS|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqpopopoponmnmnmnmjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]ZYZYZYZYWXWXWXWXVUTSTSTSTSTSTSTS|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqpopopoponmnmnmnmjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]ZYZYZYZYWXWWWWWWTSTSTSTSTSTSTSTS|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqpopopoponmnmnmnmjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSTSTSTSTS|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqpopopoponmlklklkjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSTSRQRQRQ|{|{|{|{xwxwxwxwtstststsrqrqrqrqpopopopolklklklkjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQ|{|{|{|{xwxwxwxwssssststrqrqrqrqpopopopolklklklkjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQ|{|{|{|{xwxwxwxwststststrqrqrqrqpopopopolklklklkjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQzyzyzyzyxwxwxwxwststststrqrqrqrqpopopopolklklklkjijijijihghghghgfedcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWWWTSTSTSTSRQRQRQRQzyzyzyzyxwxwxwxwststststrqrqrqrqpopopopolklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYWWXWXWXWTSTSTSTSRQRQRQRQzyzyzyzyxwxwxwxwststststrqrqrqrqpopopopolklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWVUVUVUTSTSTSTSRQRQRQRQzyzyzyzyxwxwxwxwststststrqrqrqrqpopopopolklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQzyzyzyzyxwxwxwxwstssssssrqrqrqrqpopopopolklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_^]\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQzyzyzyzyxwxwxwxwtstststsrqrqrqrqponmnmnmlklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQzyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmlklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQzyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmlklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQzyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmlklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQzyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmlklklklkjijijijihgfefefedcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQzyzyzyzyxwxwxwxwtststsssrqrqrqrqnmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEBABABABA@?@?@?@?;<;<;<;<:9:9:9:98787878743434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!    - - - - RQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEBABABABA@?@?@?@?;<;<;;;;:9:9:9:98787878743434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!  - - - - RQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIHGHGHGHGFEDCDCDCBABABABA@?@?@?@?;;<;<;<;:9:9:9:98787878743434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"! - - - - RQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIHGHGHGHGDCDCDCDCBABABABA@?@?@?@?<;<;<;<;:9:9:9:98787878743434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%$#$#$#"!"!"!"! - - - - RQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIHGHGHGHGDCDCDCDCBABABABA@?@?@?@?<;<;<;<;:9:9:9:98765656543434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - - RQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIHGHGHGHGDCDCDCDCBABABABA@?@?@?@?<;<;<;<;:9:9:9:96565656543434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - - RQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIHGHGHGHGDCDCDCDCBABABABA@?@?@?@?<;<;<;<;:9:9:9:96565656543434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - - RQRQRQRQPONMNMNMLKLKLKLKJIJIJIJIHGHGHGHGDCDCDCDCBABABABA@?@?@?@?<;<;<;<;:9:9:9:96565656543434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - - RQRQRQRQNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGDCDCDCDCBABABABA@?@?@?@?;;;;;<;<:9:9:9:96565656543434343212121210/.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - - RQRQRQRQNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGDCDCDCDCBABABABA@?>=>=>=;<;<;<;<:9:9:9:9656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!   - - - - RQRQRQRQNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=;<;<;<;<:9:9:9:9656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!    - - - - RQRQRQRQNMNMNMNMLKLKLKLKJIJIJIJIHGFEFEFEDCDCDCDCBABABABA>=>=>=>=;<;<;<;<:9:9:9:9656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!    - - - - RQRQRQRQNMNMNMNMLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDCBABABABA>=>=>=>=;<;<;<;<:9:9:9:9656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)('&%&%&%$#$#$#$#"!"!"!"!    - - - - RQRQRQRQNMNMNMNMLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDCBABABABA>=>=>=>=;<;<;<;<:9878787656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!       - - - - RQRQRQRQNMNMNMNMLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDCBABABABA>=>=>=>=;<;;;;;;87878787656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#      - - - - RQRQRQRQNMNMNMNMLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDCBABABABA>=>=>=>=<;<;<;<;87878787656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        - - - - RQPOPOPONMNMNMNMLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDCBABABABA>=>=>=>=<;<;<;<;87878787656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        - - - - POPOPOPONMNMNMNMLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDCBABABABA>=>=>=>=<;<;<;<;878787876565656543434343210/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        - - - - POPOPOPONMNMNMNMLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDCBABABABA>=>=>=>=<;<;<;<;8787878765656565434343430/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        - - - - POPOPOPONMNMNMNMLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDCBABABABA>=>=>=>=<;<;<;<;8787878765656565434343430/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        - - - - POPOPOPONMNMNMNMLKLKLKLKJIHGHGHGFEFEFEFEDCDCDCDCBABABABA>=>=>=>=<;<;<;;;8787878765656565434343430/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#      - - - - POPOPOPONMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEDCDCDCDCBABABABA>=>=>=>=;;<;<;<;8787878765656565434343430/0/0/0/.-.-.-.-,+,+,+,+*)('('('&%&%&%&%$#$#$#$#       - - - - POPOPOPONMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEDCDCDCDCBABABABA>=>=>=>=<;:9:9:98787878765656565434343430/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#        - POPOPOPONMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEDCDCDCDCBABABABA>=>=>=>=:9:9:9:98787878765656565434343430/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#        POPOPOPONMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEDCDCDCDCBA@?@?@?>=>=>=>=:9:9:9:98787878765656565434343430/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#        POPOPOPONMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:98787878765656565434343430/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#        POPOPOPONMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:98787878765656565432121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#        POPOPOPONMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#      POPOPOPONMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#"!"!"!        POPOPOPONMNMNMNMLKJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!        POPOPOPONMNMNMNMJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-,+*)*)*)('('('('&%&%&%&%"!"!"!"!        POPOPOPONMNMNMNMJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!        - - - POPOPOPONMNMNMNMJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!        - - - - POPOPOPONMNMNMNMJIJIJIJIHGHGHGHGFEFEFEFEDCBABABA@?@?@?@?>=>=>=>=:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!     - - - - POPOPOPONMNMNMNMJIJIJIJIHGHGHGHGFEFEFEFEBABABABA@?@?@?@?>=<;<;<;:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!        - - - - POPOPOPONMNMNMNMJIJIJIJIHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;;;;;;<:9:9:9:98787878765434343212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!        - - - - POPOPOPONMNMNMNMJIJIJIJIHGHGHGHGFEFEFEFEBABABABA@?@?@?@?;<;<;<;<:9:9:9:98787878743434343212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!        - - - - POPOPOPONMNMNMNMJIJIJIJIHGHGHGHGFEFEFEFEBABABABA@?@?@?@?;<;<;<;<:9:9:9:98787878743434343212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!        - - - - POPOPOPONMLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEBABABABA@?@?@?@?;<;<;<;<:9:9:9:98787878743434343212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!        - - - - POPOPOPOLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEBABABABA@?@?@?@?;<;<;<;<:9:9:9:98787878743434343212121210/0/0/0/.-,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!       - - - - ||{{zzyy55667788 >=<;;::9ppqqrrssAA@@??>>``aabbcc - - QQPPOONNPPQQRRSS WWVVUUTTkkllmmnn$$%%&&''xxwwvvuu99::;;<< - - 98877665ttuuvvww==<<;;::ddeeffgg MMLLKKJJTTUUVVWWSSRRQQPPooppqqrr(())**++ttssrrqq==>>??@@ - - 54433221xxyyzz{{ !!""##99887766hhiijjkkIIHHGGFFXXYYZZ[[OONNMMLLssyyzz{{,,--..//ppoonnmmAABBCCDD 100//..-||||{{zz$$%%&&''55443322llmmnnooEEDDCCBB\\]]^^__KKJJIIHH||||{{zz00112233llkkjjiiEEFFGGHH-,,++**)yyxxwwvv(())**++1100//..ppqqrrssAA@@??>>``aabbcc - - GGFFEEDDyyxwvuts44556677hhggffeeIIJJKKLL)((''&&%uuttssrr,,--..//--,,++**ttuuvvww==<<;;::ddeeffgg CCBBAA;;srrqqppo8899::;;ddccbbaaMMNNOOPP%$#"! qqppoonn00112233))((''&&xxyyzz{{ !!""##99887766hhiijjkk::998877onnmmllk<<==>>??``__^^]]QQRRSSTT%%mmllkkjj44556677%%$$##""||||{{zz$$%%&&''55443322llmmnnoo66554433kjjiihhg@@AABBCC\\[[ZZYYUUVVWWXX&&''(())iihhggff8899::;;!! yyxxwwvv(())**++1100//..ppqqrrss221100//gffeeddcDDEEFFGGXXWWVVUUYYZZ[[\\**++,,--eeddccbb<<==>>??uuttssrr,,--..//--,,++**ttuuvvww..--,,++cbbaa``_HHIIJJKKTTSSRRQQ]]^^__``..//0011aa``__^^@@AABBCCqqppoonn00112233))((''&&xxyyzz{{ !!""##**))((''_^^]]\[ZLLMMNNOOPPOONNMMaabbccdd22334455 ]]\\[[ZZDDEEFFGGmmllkkjj44556677%%$$##""||||{{zz$$%%&&''&&%%YXWWVVUUPPQQRRSSLLKKJJIIeeffgghh66778899 - - YYXXWWVVHHIIJJKKiihhggff8899::;;!! yyxxwwvv(())**++TTSSRRQQTTUUVVWW55443322HHGGFFEEiijjkkll::;;AABBUUTTSSRRLLMMNNOO - -eeddccbb<<==>>??uuttssrr,,--..//PPOONNMMXXYYZZ[[1100//..DDCCBBAAmmnnooppCCDDEEFF - - QQPPOONNPPQQRRSS aa``__^^@@AABBCCqqppoonn00112233LLKKJJII\\]]^^__--,,++**@@??>>==qqrrssttGGHHIIJJ MMLLKKJJTTUUVVWW]]\\[[ZZDDEEFFGGmmllkkjj44556677HHGGFFEE``aabbcc))((''&&<<;;::99uuvvwwxxKKLLMMNNIIHHGGFFXXYYZZ[[YYXXWWVVHHIIJJKKiihhggff8899::;; - -DDCCBBAAddeeffgg%%$$##""88776655yyzz{{||OOPPQQRREEDDCCBB\\]]^^__UUTTSSRRLLMMNNOO - -eeddccbb<<==>>?? @?>=<;;:hhiijjkk!! 44332211||{{zzyySSTTUUVVAA@@??>>``aabbcc - - QQPPOONNPPQQRRSS aa``__^^@@AABBCC:9988776llmmnnoo00//..--ssrrqqppWW]]^^__==<<;;::ddeeffgg MMLLKKJJTTUUVVWW]]\\[[ZZDDEEFFGG - - 65544332ppqqrrss,,++**))oonnmmll``aabbcc !!""##99887766hhiijjkkIIHHGGFFXXYYZZ[[YYXXWWVVHHIIJJKK 21100//.ttuuvvww((''&&%%kkjjiihhddeeffgg$$%%&&''55443322llmmnnooEEDDCCBB\\]]^^__UUTTSSRRLLMMNNOO.--,,++*xxyyzz{{$$##""!!ggffeeddhhiijjkk(())**++1100//..ppqqrrssAA@@??>>``aabbcc - - QQPPOONNPPQQRRSS*))((''&||||{{zz - - ccbbaa``llmmnnoo,,--..//--,,++**ttuuvvww==<<;;::ddeeffgg MMLLKKJJTTUUVVWW&%%$#"! yyxxwwvv __^^]]WWppqqrrss00112233))((''&&xxyyzz{{ !!""##99887766hhiijjkkIIHHGGFFXXYYZZ[[uuttssrrVVUUTTSSyyzz{{||44556677%%$$##""||||{{zz$$%%&&''55443322llmmnnooEEDDCCBB\\]]^^__%%&&''((qqppoonnRRQQPPOO||{{zzyy8899::;;!! yyxxwwvv(())**++1100//..ppqqrrssAA@@??>>``aabbcc))**++,,mmllkkjj NNMMLLKKxwvutssr<<==>>??uuttssrr,,--..//--,,++**ttuuvvww==<<;;::ddeeffgg--..//00iihhggff - - - - JJIIHHGGrqqppoon@@AABBCCqqppoonn00112233))((''&&xxyyzz{{ !!""##99887766hhiijjkk11223344 eeddccbb  - - FFEEDDCCnmmllkkjDDEEFFGGmmllkkjj44556677%%$$##""||||{{zz$$%%&&''55443322llmmnnoo55667788 - - aa``__^^ BBAA;;::jiihhggfHHIIJJKKiihhggff8899::;;!! yyxxwwvv(())**++1100//..ppqqrrss99::;;AA]]\\[[ZZ99887766feeddccbLLMMNNOO - -eeddccbb<<==>>??uuttssrr,,--..//--,,++**ttuuvvwwBBCCDDEEYYXXWWVV55443322baa``__^PPQQRRSS aa``__^^@@AABBCCqqppoonn00112233))((''&&xxyyzz{{FFGGHHIIUUTTSSRR1100//..^]]\[ZYXTTUUVVWW]]\\[[ZZDDEEFFGGmmllkkjj44556677%%$$##""||||{{zzJJKKLLMM - - QQPPOONN !!""## --,,++**WWVVUUTTXXYYZZ[[YYXXWWVVHHIIJJKKiihhggff8899::;;!! yyssrrqqNNOOPPQQ MMLLKKJJ$$%%&&''!!""##$$))((''&&SSRRQQPP\\]]^^__UUTTSSRRLLMMNNOO - -eeddccbb<<==>>??ppoonnmmRRSSTTUUIIHHGGFF(())**++%%&&''((%%OONNMMLL``aabbcc - - QQPPOONNPPQQRRSS aa``__^^@@AABBCCllkkjjiiVVWW]]^^EEDDCCBB,,--..//))**++,,KKJJIIHHddeeffgg MMLLKKJJTTUUVVWW]]\\[[ZZDDEEFFGGhhggffee__``aabbAA@@??>>00112233--..//00GGFFEEDDhhiijjkkIIHHGGFFXXYYZZ[[YYXXWWVVHHIIJJKKddccbbaaccddeeff==<<;;::4455667711223344CCBBAA@?llmmnnooEEDDCCBB\\]]^^__UUTTSSRRLLMMNNOO - -``__^^]]gghhiijj !!""##998877668899::;;<<==>>??uuttssrr,,--..//--,,++**ttuuvvww..--,,++cbbaa``_HHIIJJKKiihhggff8899::;;!! yyxxwwvv(())**++1100//..ppqqrrss99::;;AA]]\\[[ZZDDEEFFGGmmllkkjj44556677%%$$##""||||{{zz$$%%&&''AA@@??>>@@AABBCCqqppoonn00112233))((''&&xxyyzz{{ !!""##**))((''_^^]]\[ZLLMMNNOO - -eeddccbb<<==>>??uuttssrr,,--..//--,,++**ttuuvvwwBBCCDDEEYYXXWWVVHHIIJJKKiihhggff8899::;;!! yyxxwwvv(())**++==<<;;::DDEEFFGGmmllkkjj44556677%%$$##""||||{{zz$$%%&&''&&%%YXWWVVUUPPQQRRSS aa``__^^@@AABBCCqqppoonn00112233))((''&&xxyyzz{{FFGGHHIIUUTTSSRRLLMMNNOO - -eeddccbb<<==>>??uuttssrr,,--..//99887766HHIIJJKKiihhggff8899::;;!! yyxxwwvv(())**++TTSSRRQQTTUUVVWW]]\\[[ZZDDEEFFGGmmllkkjj44556677%%$$##""||||{{zzJJKKLLMM - - QQPPOONNPPQQRRSS aa``__^^@@AABBCCqqppoonn0011223355443322LLMMNNOO - -eeddccbb<<==>>??uuttssrr,,--..//PPOONNMMXXYYZZ[[YYXXWWVVHHIIJJKKiihhggff8899::;;!! yyssrrqqNNOOPPQQ MMLLKKJJTTUUVVWW]]\\[[ZZDDEEFFGGmmllkkjj44556677 1100//..PPQQRRSS aa``__^^@@AABBCCqqppoonn00112233LLKKJJII\\]]^^__UUTTSSRRLLMMNNOO - -eeddccbb<<==>>??ppoonnmmRRSSTTUUIIHHGGFFXXYYZZ[[YYXXWWVVHHIIJJKKiihhggff8899::;; - - - ---,,++**TTUUVVWW]]\\[[ZZDDEEFFGGmmllkkjj44556677HHGGFFEE``aabbcc - - QQPPOONNPPQQRRSS aa``__^^@@AABBCCllkkjjiiVVWW]]^^EEDDCCBB\\]]^^__UUTTSSRRLLMMNNOO - -eeddccbb<<==>>?? ))((''&&XXYYZZ[[YYXXWWVVHHIIJJKKiihhggff8899::;; - -DDCCBBAAddeeffgg MMLLKKJJTTUUVVWW]]\\[[ZZDDEEFFGGhhggffee__``aabbAA@@??>>``aabbcc - - QQPPOONNPPQQRRSS aa``__^^@@AABBCC%%$$##""\\]]^^__UUTTSSRRLLMMNNOO - -eeddccbb<<==>>?? @?>=<;;:hhiijjkkIIHHGGFFXXYYZZ[[YYXXWWVVHHIIJJKKddccbbaaccddeeff==<<;;::ddeeffgg MMLLKKJJTTUUVVWW]]\\[[ZZDDEEFFGG!! ``aabbcc - - QQPPOONNPPQQRRSS aa``__^^@@AABBCC:9988776llmmnnooEEDDCCBB\\]]^^__UUTTSSRRLLMMNNOO - -``__^^]]gghhiijj !!""##99887766hhiijjkkIIHHGGFFXXYYZZ[[YYXXWWVVHHIIJJKKddeeffgg MMLLKKJJTTUUVVWW]]\\[[ZZDDEEFFGG - - 65544332ppqqrrssAA@@??>>``aabbcc - - QQPPOONNPPQQRRSS WWVVUUTTkkllmmnn$$%%&&''55443322llmmnnooEEDDCCBB\\]]^^__UUTTSSRRLLMMNNOOhhiijjkkIIHHGGFFXXYYZZ[[YYXXWWVVHHIIJJKK 21100//.ttuuvvww==<<;;::ddeeffgg MMLLKKJJTTUUVVWWSSRRQQPPooppqqrr(())**++1100//..ppqqrrssAA@@??>>``aabbcc - - QQPPOONNPPQQRRSS%%&&''llmmnnooEEDDCCBB\\]]^^__UUTTSSRRLLMMNNOO.--,,++*xxyyzz{{ !!""##99887766hhiijjkkIIHHGGFFXXYYZZ[[OONNMMLLssyyzz{{,,--..//--,,++**ttuuvvww==<<;;::ddeeffgg MMLLKKJJTTUUVVWW(())**++ppqqrrssAA@@??>>``aabbcc - - QQPPOONNPPQQRRSS*))((''&||||{{zz$$%%&&''55443322llmmnnooEEDDCCBB\\]]^^__KKJJIIHH||||{{zz00112233))((''&&xxyyzz{{ !!""##99887766hhiijjkkIIHHGGFFXXYYZZ[[,,--..// - -ttuuvvww==<<;;::ddeeffgg MMLLKKJJTTUUVVWW&%%$#"! yyxxwwvv(())**++1100//..ppqqrrssAA@@??>>``aabbcc - - GGFFEEDDyyxwvuts44556677%%$$##""||||{{zz$$%%&&''55443322llmmnnooEEDDCCBB\\]]^^__00112233 - - xxyyzz{{ !!""##99887766hhiijjkkIIHHGGFFXXYYZZ[[uuttssrr,,--..//--,,++**ttuuvvww==<<;;::ddeeffgg CCBBAA;;srrqqppo8899::;;!! yyxxwwvv(())**++1100//..ppqqrrssAA@@??>>``aabbcc44556677 ||||{{zz$$%%&&''55443322llmmnnooEEDDCCBB\\]]^^__%%&&''((qqppoonn00112233))((''&&xxyyzz{{ !!""##99887766hhiijjkk::998877onnmmllk<<==>>??uuttssrr,,--..//--,,++**ttuuvvww==<<;;::ddeeffgg8899::;;yyxxwwvv(())**++1100//..ppqqrrssAA@@??>>``aabbcc))**++,,mmllkkjj44556677%%$$##""||||{{zz$$%%&&''55443322llmmnnoo66554433kjjiihhg@@AABBCCqqppoonn00112233))((''&&xxyyzz{{ !!""##99887766hhiijjkkAABBCCDDuuttssrr,,--..//--,,++**ttuuvvww==<<;;::ddeeffgg--..//00iihhggff8899::;;!! yyxxwwvv(())**++1100//..ppqqrrss221100//gffeeddcDDEEFFGGmmllkkjj44556677%%$$##""||||{{zz$$%%&&''55443322llmmnnooEEFFGGHHqqppoonn00112233))((''&&xxyyzz{{ !!""##99887766hhiijjkk11223344 eeddccbb<<==>>??uuttssrr,,--..//--,,++**ttuuvvww..--,,++cbbaa``_HHIIJJKKiihhggff8899::;;!! yyxxwwvv(())**++1100//..ppqqrrssIIJJKKLLmmllkkjj44556677%%$$##""||||{{zz$$%%&&''55443322llmmnnoo55667788 - - aa``__^^@@AABBCCqqppoonn00112233))((''&&xxyyzz{{ !!""##**))((''_^^]]\[ZLLMMNNOO - -eeddccbb<<==>>??uuttssrr,,--..//--,,++**ttuuvvwwMMNNOOPP !!""##iihhggff8899::;;!! yyxxwwvv(())**++1100//..ppqqrrss99::;;AA]]\\[[ZZDDEEFFGGmmllkkjj44556677%%$$##""||||{{zz$$%%&&''&&%%YXWWVVUUPPQQRRSS aa``__^^@@AABBCCqqppoonn00112233))((''&&xxyyzz{{QQRRSSTT$$%%&&''eeddccbb<<==>>??uuttssrr,,--..//--,,++**ttuuvvwwBBCCDDEEYYXXWWVVHHIIJJKKiihhggff8899::;;!! yyxxwwvv(())**++TTSSRRQQTTUUVVWW]]\\[[ZZDDEEFFGGmmllkkjj44556677%%$$##""||ttssrrUUVVWW]](())**++aa``__^^@@AABBCCqqppoonn00112233))((''&&xxyyzz{{FFGGHHIIUUTTSSRRLLMMNNOO - -eeddccbb<<==>>??uuttssrr,,--..//PPOONNMMXXYYZZ[[YYXXWWVVHHIIJJKKiihhggff8899::;;!! qqppoonn^^__``aa,,--..//]]\\[[ZZDDEEFFGGmmllkkjj44556677%%$$##""||||{{zzJJKKLLMM - - QQPPOONNPPQQRRSS aa``__^^@@AABBCCqqppoonn00112233LLKKJJII\\]]^^__UUTTSSRRLLMMNNOO - -eeddccbb<<==>>??mmllkkjjbbccddee00112233YYXXWWVVHHIIJJKKiihhggff8899::;;!! yyssrrqqNNOOPPQQ MMLLKKJJTTUUVVWW]]\\[[ZZDDEEFFGGmmllkkjj44556677HHGGFFEE``aabbcc - - QQPPOONNPPQQRRSS aa``__^^@@AABBCCiihhggffffgghhii44556677UUTTSSRRLLMMNNOO - -eeddccbb<<==>>??ppoonnmmRRSSTTUUIIHHGGFFXXYYZZ[[YYXXWWVVHHIIJJKKiihhggff8899::;; - -DDCCBBAAddeeffgg MMLLKKJJTTUUVVWW]]\\[[ZZDDEEFFGGeeddccbbjjkkllmm8899::;;QQPPOONNPPQQRRSS aa``__^^@@AABBCCllkkjjiiVVWW]]^^EEDDCCBB\\]]^^__UUTTSSRRLLMMNNOO - -eeddccbb<<==>>?? @?>=<;;:hhiijjkkIIHHGGFFXXYYZZ[[YYXXWWVVHHIIJJKKaa``__^^nnooppqq<<==>>??MMLLKKJJTTUUVVWW]]\\[[ZZDDEEFFGGhhggffee__``aabbAA@@??>>``aabbcc - - QQPPOONNPPQQRRSS aa``__^^@@AABBCC:9988776llmmnnooEEDDCCBB\\]]^^__UUTTSSRRLLMMNNOO - -]]WWVVUUqqppoonn@@AABBCCIIHHGGFFXXYYZZ[[YYXXWWVVHHIIJJKKddccbbaaccddeeff==<<;;::ddeeffgg MMLLKKJJTTUUVVWW]]\\[[ZZDDEEFFGG - - 65544332ppqqrrssAA@@??>>``aabbcc - - QQPPOONNPPQQRRSS TTSSRRQQmmllkkjjDDEEFFGGEEDDCCBB\\]]^^__UUTTSSRRLLMMNNOO - -``__^^]]gghhiijj !!""##99887766hhiijjkkIIHHGGFFXXYYZZ[[YYXXWWVVHHIIJJKK 21100//.ttuuvvww==<<;;::ddeeffgg MMLLKKJJTTUUVVWWPPOONNMMiihhggffHHIIJJKKAA@@??>>``aabbcc - - QQPPOONNPPQQRRSS WWVVUUTTkkllmmnn$$%%&&''55443322llmmnnooEEDDCCBB\\]]^^__UUTTSSRRLLMMNNOO.--,,++*xxyyzz{{ !!""##99887766hhiijjkkIIHHGGFFXXYYZZ[[LLKKJJIIeeddccbbLLMMNNOO==<<;;::ddeeffgg MMLLKKJJTTUUVVWWSSRRQQPPooppqqrr(())**++1100//..ppqqrrssAA@@??>>``aabbcc - - QQPPOONNPPQQRRSS*))((''&||||{{zz$$%%&&''55443322llmmnnooEEDDCCBB\\]]^^__HHGGFFEEaa``__^^PPQQRRSS99887766hhiijjkkIIHHGGFFXXYYZZ[[OONNMMLLssyyzz{{,,--..//--,,++**ttuuvvww==<<;;::ddeeffgg MMLLKKJJTTUUVVWW&%%$#"! yyxxwwvv(())**++1100//..ppqqrrssAA@@??>>``aabbcc - - DDCCBBAA]]\\[[ZZTTUUVVWW55443322llmmnnooEEDDCCBB\\]]^^__KKJJIIHH||||{{zz00112233))((''&&xxyyzz{{ !!""##99887766hhiijjkkIIHHGGFFXXYYZZ[[uuttssrr,,--..//--,,++**ttuuvvww==<<;;::ddeeffgg ;;::9988YYXXWWVVXXYYZZ[[1100//..ppqqrrssAA@@??>>``aabbcc - - GGFFEEDDyyxwvuts44556677%%$$##""||||{{zz$$%%&&''55443322llmmnnooEEDDCCBB\\]]^^__%%&&''((qqppoonn00112233))((''&&xxyyzz{{ !!""##99887766hhiijjkk77665544UUTTSSRR\\]]^^__--,,++**ttuuvvww==<<;;::ddeeffgg CCBBAA;;srrqqppo8899::;;!! yyxxwwvv(())**++1100//..ppqqrrssAA@@??>>``aabbcc))**++,,mmllkkjj44556677%%$$##""||||{{zz$$%%&&''55443322llmmnnoo33221100QQPPOONN``aabbcc))((''&&xxyyzz{{ !!""##99887766hhiijjkk::998877onnmmllk<<==>>??uuttssrr,,--..//--,,++**ttuuvvww==<<;;::ddeeffgg--..//00iihhggff8899::;;!! yyxxwwvv(())**++1100//..ppqqrrss//..--,,MMLLKKJJddeeffgg%%$$##""||||{{zz$$%%&&''55443322llmmnnoo66554433kjjiihhg@@AABBCCqqppoonn00112233))((''&&xxyyzz{{ !!""##99887766hhiijjkk11223344 eeddccbb<<==>>??uuttssrr,,--..//--,,++**ttuuvvww++**))((IIHHGGFFhhiijjkk!! yyxxwwvv(())**++1100//..ppqqrrss221100//gffeeddcDDEEFFGGmmllkkjj44556677%%$$##""||||{{zz$$%%&&''55443322llmmnnoo55667788 - - aa``__^^@@AABBCCqqppoonn00112233))((''&&xxyyzz{{ !!""##''&&%%EEDDCCBBllmmnnooppqqfpvbHAZJltJQr˂pJtArdrXQJ`tAJlnvp|ZdQ`f~Zp˂|dtA`JXQrdQbtrXQJ`nXv`p˂rbdQZ|ZHAb|ZdQےbHAtbdQZfH~btlHfpvrXQJ`Jlt˂pZlJtArےbHAf~HXQJ`ے`vXnے`JXbtlZp˂|drf`vXJtArdnXvےbHAbnvHAbےdtlZp˂fpvbHAZvpfQr˂pJfpvrXQJ`tAJlnvp|ZdQ`f~Zp˂pfH`JXQrJfpvrXQJ`nXv`p˂rH~fZHAbnXvےbHAtbdQZfH~btlHfpvrXQJ`f`vX˂pZnvfےbHAf~HXQJ`ے`vXnے`JX`f~Zp˂|drf`vXJtArdnXvےbHAnvpHAb~HfpZp˂fpvbHAZvpfQrZHAHfpvrXQJ`tAJlnvp|ZdQ`f~Zp˂fH~˂pZHAvnXrXQJ`nXv`p˂rH~bے`nXvےbHAtbdQZfے`JbtlHfpvrXQJ`f`vXbے`v`fےbHAf~HXQJ`ےvpfHJXQr`f~Zp˂|drXQr˂JtArdnXvےbHAnvpJXQr~HfpZp˂fpvbHAZ~f`˂pZHAHfpvrXQJ`tAJlpZHAb|ZdQ`f~Zp˂fH~˂pZHAvnXrXQJ`nXv`p˂rvXnbے`nXvےbHAtbdQZے`JbtlHfpvrXQJ`f`vXbے`v`f~ےbHAf~HXQJ`ےvpfHJXQr`f~Zp˂|drXQr˂JtArdnXvےJlnvpJXQHAbfpvZp˂fpvbHAZ~f`˂pZHAHfpvrXQJ`tAJlpZHAb|ZdQ`f~tbdQZfH~ے`JnXv`rXQJ`tAJlnXv`p˂rvXH~bJAdnXvےbHAtbdQZے`JbtlHfpv|drf`vXXQr˂f~HےbHAtbdQZf~HXQJ`ےf`v|ZdQ`f~Zp˂|dtAXQr˂JtArdnXvtAJlnvppZHAbfpvZp˂|drfpvbHAZXnvbtlHfpvrXQJ`JltpZHAb|ZdQ`f~tbdQZfH~ے`JnXv`rXQJ`tAJlnXv`p˂rpfH~JtArdnXvےbHAbnvے`JbtlHfpv|drf`vXXQr˂f~HےbHAtbdQZf~HXQJ`ےf`v|ZdQ`f~Zp˂pfHXQr˂JtArdnXvtAJlnvpp`JXQfvnXZp˂|drfpvJltXnvbtlHfpvrXQJ`f`vXpZHAb|ZdQ`fHtbdQZfH~rbtv`frXQJ`tAJlnXv`drtAJp`vXJtArdnXvےbHAnvpے`Jbtlfpv|drf`vXl|ZdQ~HfpےbHAtbdQZf~Hltbnvp|ZdQ`f~Zp˂fH~XQr˂JtArdnrXQJtAJlnvpbtlvnXZp˂|drfpvdQZ|fH~btlHfpvrXQJ`f`vXpZHAb|ZdQ`ےHAtbdQZfH~JtArdv`frXQJ`tAJlnXv`drtAJf`vXJtArdnXvےbHAnvpے`JbtlZp˂|drf`vX|ZdQ~HfpےJltbdQZf~Hltbnvp|ZdQ`f~Zp˂fH~XQr˂JtArdrXQJ`tAJlnvpbtlvnvftbdQZ|dtAfpvdQZ|lfH~btlHfpvrXQJ`f`vXpZHAb|ZdQےbHAtbdQZfH~JtArd~Hf|drJltnXv`tbdQvpfJtArdnXvےJlnvpے`JbtlZp˂|drf`vXtlJpvntAJlbnvf~HZ|dے`JXQ|ZdQ`f~tbdQZfH~XQr˂JtArdrXQJ`tAJlnvptArdXv`ftbdQZpfHfpvrtAJlrZHAbtlHfpv|drf`vXpZHAb|ZdQےbHAtbdQZfH~|ZdQb~Hf|drf`vXnXv`tbdQbے`JtArdnXvtAJlnvpے`JbtlZp˂|drf`vXtlJpvntAJlnvpp˂rZ|dJXQr|ZdQ`f~tbdQZfH~XQr˂JfpvrXQJ`tAJlnvptArdXv`ftbdQZfH~XQJ`ےrtAdQZpZHAbtlHfpv|drf`vXpZHAbnXvےbHAtbdQZfH~|ZdQtAfpv|drf`vXbHAZ|drbے`JtArdnXvtAJlnvpے`J`f~Zp˂|drf`vXrd|nrXQJtAJlnvpp˂rtAJlJXQr|ZdQ`fHtbdQZfH~XQr˂HfpvrXQJ`tAJlnvpZdQbt`ےHAtbdQZfH~XQJ`ےtbdQZpZAbbtlfpv|drf`vXpZHAbnXvےbHAtbdQZfے`JlJtAZp˂|drf`vXbHAZ|dr`JXQrJtArdnrXQJtAJlnvpے`J`f~Zp˂|drXQHAbrd|rXQJ`tAJlnvpp˂rtAJl璀˂pZ|ZdQ`ےHAtbdQZfH~XQr˂HfpvrXQJ`tAJlے`JXQZdQbtےbHAtbdQZfH~XQJ`ےtdrtAHAbےbtlZp˂|drf`vXpZHAnXvےbHAtbdQZr˂pl|ZZp˂|drf`vXbHAZJlt`JXQrJtArdrXQJ`tAJlnvpے`JXQ`f~Zp˂|drZHAbdQbtrXQJ`tAJlnvpp˂rbdQZ|˂pZ|ZdQےbHAtbdQZfH~rbtHfpvrXQJ`tAJlے`JXQlJtArےbHAtbdQZfH~XQJ`ےdrtAHAbbtlZp˂|drf`vXlJtAdnXvےbHAtbdQZr˂pd|ZZp˂|drf`vXnvpے`J`f~Zp˂|drf`vXJtArdv`ftbdnvpے`J`f~Zp˂|drXQr˂JtArdnXvےbHA`vXH`JXQ`f~Zp˂|drXQr˂JtArdnXvےJlnvpbے`f۝`vfH~XQr˂HfpvrXQJ`tAJlnvp|ZdQ~HfpQZ|rfH~XQr˂HfpvrXQJ`tAJlpZHAb|ZdQ`f~Zp˂~f`rbtHfpvrXQJ`tAJlpZHAb|ZdQ`f~tbdQZfH~JXQrXnvf`vXpZHAbnXvےbHAtbdQZfے`Jbtlv~AJltf`vXpZHAnXvےbHAtbdQZے`JbtlHfpvrXQJ`vXnlJtAdnXvےbHAtbdQZے`JbtlHfpv|drf`vX˂pZHApfH~nvpے`J`f~Zp˂|drXQr˂JtArdHfpvbdQZ|nvpے`JXQ`f~Zp˂|drXQr˂JtArdnXvےJlvpfH|ZdQ`f~Zp˂|dtAXQr˂JtArdnXvtAJlnvpbے`f۝`vfH~XQr˂HfpvrXQJ`tAJlpZHAb|ZdQnXvdrtAfH~rbtHfpvrXQJ`tAJlpZHAb|ZdQ`f~tdrtA~f`btlHfpvrXQJ`JltpZHAb|ZdQ`f~tbdQZfH~JXQrXnvf`vXpZHAnXvےbHAtbdQZے`Jbtl`f~Jltf`vXlJtAdnXvےbHAtbdQZے`JbtlHfpvJltvXnJtArdnXvےbHAbnvے`JbtlHfpv|drf`vX˂p`ZpfH~nvpے`JXQ`f~Zp˂|drXQr˂JtArdHfpvbdQZ|nvp|ZdQ`f~Zp˂|dtAXQr˂JtArdnXvbdQZ|vp`v|ZdQ`f~Zp˂pfHXQr˂JtArdnXvtAJlnvpQXb㉀ۅf۝`vfH~rbtHfpvrXQJ`tAJlpZHAb|ZdQnXvdrtAfH~btlHfpvrXQJ`JltpZHAb|ZdQ`f~drtAXnvbtlHfpvrXQJ`f`vXpZHAb|ZdQ`fHtbdQZfH~pJAHrXnvf`vXlJtAdnXvےbHAtbdQZے`Jbtl`pvJbdQf`vXJtArdnXvےbHAbnvے`JbtlHfpvJltpfH~JtArdnXvےbHAnvpے`Jbtlfpv|drf`vXˁ`ZpfH~nvp|ZdQ`f~Zp˂|dtAXQr˂JtArdnrXQJZ|dnvp|ZdQ`f~Zp˂pfHXQr˂JtArdnXvbdQZ|f`v|ZdQ`f~Zp˂fH~XQr˂JtArdnrXQJtAJlnvpQXb㉀ۅf۝`vfH~btlHfpvrXQJ`JltpZHAb|ZdQ`p˂rtAJlfH~btlHfpvrXQJ`f`vXpZHAb|ZdQ`fHltbXnvbtlHfpvrXQJ`f`vXpZHAb|ZdQ`ےHAtbdQZfH~pJAHrXnvf`vXJtArdnXvےbHAbnvے`JbtlrXQJ`tbdQf`vXJtArdnXvےbHAnvpے`JbtlfpvdQZ|pfH~JtArdnXvےbHAnvpے`JbtlZp˂|drf`vXۑppfH~nvp|ZdQ`f~Zp˂pfHXQr˂JtArdےbHAZ|dnvp|ZdQ`f~Zp˂fH~XQr˂JtArdnrXQJdrtAJvp|ZdQ`f~Zp˂fH~XQr˂JtArdrXQJ`tAJlnvpJAHr󙐅f۝`vfH~btlHfpvrXQJ`f`vXpZHAb|ZdQZp˂rtAJlfے`JbtlHfpvrXQJ`f`vXpZHAb|ZdQ`ےHAltbfے`JbtlHfpvrXQJ`f`vXpZHAb|ZdQےbHAtbdQZfH~ˁ`ZQXXnvf`vXJtArdnXvےbHAnvpے`JbtlrXQJ`tbQZXQr˂JtArdnXvےbHAnvpے`JbtlZp˂dQZ|XQrZHJtArdnXvےJlnvpے`JbtlZp˂|drf`vXb㉀ۑpp|dnvp|ZdQ`f~Zp˂fH~XQr˂JtArdےbHAdrtAJpZHAb|ZdQ`f~Zp˂fH~XQr˂JtArdrXQJ`drtAdQAbے`|ZdQ`f~tbdQZfH~XQr˂JtArdrXQJ`tAJlnvpJAHrrQtJlfے`JbtlHfpvrXQJ`f`vXpZHAb|ZdQXQJ`ےltbے`JbtlHfpvrXQJ`f`vXpZHAb|ZdQےbHAZ|dJXQrbtlHfpv|drf`vXpZHAb|ZdQےbHAtbdQZfH~ˁ`ZQXtbAdXQr˂JtArdnXvےbHAnvpے`JbtlbHAZdQZ|XQr˂JtArdnXvےJlnvpے`JbtlZp˂rtAJl˂pZHJtArdnXvtAJlnvpے`JbtlZp˂|drf`vXAHr󙐂Z|dpZHAb|ZdQ`f~Zp˂fH~XQr˂JtArdp˂rdrtAJpZHAb|ZdQ`f~tbdQZfH~XQr˂JtArdrXQJ`tbdQAbے`|ZdQ`f~tbdQZfH~XQr˂JfpvrXQJ`tAJlnvp`ZQXbrQtJlے`JbtlHfpvrXQJ`f`vXpZHAb|ZdQXQJ`ےltbے`JbtlHfpv|drf`vXpZHAb|ZdQےbHAZ|dJXQrbtlHfpv|drf`vXpZHAbnXvےbHAtbdQZfH~ۑpJtbAdXQr˂JtArdnXvےJlnvpے`JbtlbHAZdQZ|XQr˂JtArdnXvtAJlnvpے`JbtlZp˂rtAJl˂pZAbJtArdnXvtAJlnvpے`J`f~Zp˂|drf`vXAHr󙐂Z|dpZHAb|ZdQ`f~tbdQZfH~XQr˂JtArdp˂AJltpZHAb|ZdQ`f~tbdQZfH~XQr˂JfpvrXQJ`tdr`JXQ|ZdQ`fHtbdQZfH~XQr˂HfpvrXQJ`tAJlnvp`ZQXbrQtJlے`JbtlHfpv|drf`vXpZHAb|ZdQbHAZpbnvے`JbtlHfpv|drf`vXpZHAbnXvےbHAtAJlr˂pbtlfpv|drf`vXpZHAbnXvےbHAtbdQZfZHAbۑp`tbAdXQr˂JtArdnXvtAJlnvpے`Jbtl˂rXQpfHXQr˂JtArdnXvtAJlnvpے`J`f~Zp˂tbdQZZHAbJtArdnrXQJtAJlnvpے`J`f~Zp˂|drے`JZQXb㉀Z|dpZHAb|ZdQ`f~tbdQZfH~XQr˂JfpvJ`ےf`vXpZHAb|ZdQ`fHtbdQZfH~XQr˂HfpvrXQJ`|drے`JXQ|ZdQ`ےHAtbdQZfH~XQr˂HfpvrXQJ`tAJlXQr˂ۑpJAHrQtJlے`JbtlHfpv|drf`vXpZHAb~HbHAZpnvpے`Jbtlfpv|drf`vXpZHAbnXvےbHAtAJlr˂pbtlZp˂|drf`vXpZHAnXvےbHAtbdQZpZHAbr󙐂ˁ`tbAdXQr˂JtArdnXvtAJlnvpے`Jfpv˂rXQfH~XQr˂JtArdnrXQJtAJlnvpے`J`f~Zp˂tbdQZZHAbJtArdrXQJ`tAJlnvpے`JXQ`f~Zp˂|drے`JZQXb㉀Z|dpZHAb|ZdQ`fHtbdQZfH~XQr˂nXv`J`p˂f`vXpZHAb|ZdQ`ےHAtbdQZfH~XQr˂HfpvrXQJ`|ltJQr|ZdQےbHAtbdQZfH~rbtHfpvrXQJ`tAJlXQr˂ۑpJAHrQtJlے`Jbtlfpv|drf`vXpZHAbf~HrXQJnvpے`JbtlZp˂|drf`vXpZHAnXvےbHAbnvpZHAbtlZp˂|drf`vXlJtAdnXvےbHAtbdQZp`JXQf۝`vtbAdXQr˂JtArdnrXQJtAJlnvpے`Jfpv`ےbfH~XQr˂JtArdrXQJ`tAJlnvpے`JXQ`f~Zp˂p`vXbے`JtArdrXQJ`tAJlnvp|ZdQ`f~Zp˂|dtAr˂pXnvZ|dpZHAb|ZdQ`ےHAtbdQZfH~XQr˂nXv`HAZp˂f`vXpZHAb|ZdQےbHAtbdQZfH~rbtHfpvrXQJ`nvpJXQr|ZdQےbHAtbdQZfH~btlHfpvrXQJ`JltZHAbpfH~rQtJlے`JbtlZp˂|drf`vXpZHApvnrXQJnvpے`JbtlZp˂|drf`vXlJtAdnXvےbHAfH~pZHAbtlZp˂|drf`vXJtArdnXvےbHAbnvے`JXQf۝`vtbAdXQr˂JtArdrXQJ`tAJlnvpے`JXQXv`f`ےbfH~XQr˂JtArdrXQJ`tAJlnvp|ZdQ`f~Zp˂f`vXbے`JfpvrXQJ`tAJlnvp|ZdQ`f~Zp˂pfHr˂pXnvZ|dpZHAb|ZdQےbHAtbdQZfH~rbt璐~HfHAXQJ`f`vXpZHAb|ZdQےbHAtbdQZfH~btlHfpvrXQJ`nvpJXQrZnXvےbHAtbdQZfH~btlHfpvrXQJ`f`vXZHAbpfH~rQtJlے`JbtlZp˂|drf`vXlJtAdpvnےJlnvpے`JbtlZp˂|drf`vXJtArdnXvےbHAfH~HAbے`f~Zp˂|drf`vXJtArdnXvےbHAnvp˂pZf۝`vtbAdXQr˂JtArdrXQJ`tAJlnvp|ZdQXv`ftbQZdfH~XQr˂JfpvrXQJ`tAJlnvp|ZdQ`f~Zp˂vpf`JXQrHfpvrXQJ`tAJlnvp|ZdQ`f~Zp˂fH~HAbےXnvZ|dpZHAb|ZdQےbHAtbdQZfH~btl~HXrtAJlf`vXpZHAbnXvےbHAtbdQZfH~btlHfpvrXQJ`H~f˂pZnXvےbHAtbdQZfے`JbtlHfpvrXQJ`f`vX`JXQrpfH~rQtJlے`JbtlZp˂|drf`vXJtArdv`ftbdnvpے`J`f~Zp˂|drf`vXJtArdnXvےbHA`vXnHAbے`f~Zp˂|drXQr˂JtArdnXvےbHAnvp˂pZf۝`vtbAdXQr˂JfpvrXQJ`tAJlnvp|ZdQ~HfpQZ|dfH~XQr˂HfpvrXQJ`tAJlnvp|ZdQ`f~Zp˂vpf`JXQrHfpvrXQJ`tAJlpZHAb|ZdQ`f~Zp˂fH~HAbےXnvZ|dpZHAbnXvےbHAtbdQZfH~btlvnXrtAJlf`vXpZHAbnXvےbHAtbdQZfے`JbtlHfpvrXQJ`H~f˂pZAnXvےbHAtbdQZے`JbtlHfpvrXQJ`f`vX`JXQHApfH~rQtJltuvwxyz{||{zyxwv------------............................ \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv27_3.dat b/mpdf/qrcode/data/qrv27_3.dat deleted file mode 100644 index 468ef04..0000000 --- a/mpdf/qrcode/data/qrv27_3.dat +++ /dev/null @@ -1,249 +0,0 @@ -|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvurqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJI|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvurqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJI|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvurqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJI|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvurqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcba`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJI|{|{|{|{zyzyzyzyxwxwxwxwtstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJI|{|{|{|{zyzyzyzyxwxwxwxwssssststrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWWWTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJI|{|{|{|{zyzyzyzyxwxwxwxwststststrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcbababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYWWXWXWXWTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJI|{|{|{|{zyzyzyzyxwxwxwxwststststrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJI|{|{|{|{zyzyzyzyxwxwxwxwststststrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHG|{|{|{|{zyzyzyzyxwxwxwxwststststrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfedcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHG|{|{|{|{zyzyzyzyxwxwxwxwststststrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHG|{|{|{|{zyzyzyzyxwxwxwxwstssssssrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHG|{|{|{|{zyzyzyzyxwxwxwxwtstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihgfefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHG|{|{|{|{zyzyzyzyxwxwxwxwtstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHG|{|{|{|{zyzyzyzyvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[XWWWWWWXVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHG|{|{|{|{zyzyzyzyvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjihghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[WXWXWXWXVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHG|{|{|{|{zyzyzyzyvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkhghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[WXWXWXWXVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHG|{|{|{|{zyzyzyzyvuvuvuvutststsssrqrqrqrqpopopoponmnmnmnmlklklklkhghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[WXWXWXWXVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHG|{|{|{|{zyzyzyzyvuvuvuvussstststrqrqrqrqpopopoponmnmnmnmlkjijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[WXWXWXWXVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHG|{|{|{|{zyzyzyzyvuvuvuvuststststrqrqrqrqpopopoponmnmnmnmjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[WXWXWXWXVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHG|{|{|{|{zyzyzyzyvuvuvuvuststststrqrqrqrqpopopoponmnmnmnmjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[WXWXWWWWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIHGHGHGHGHGHGHG|{|{|{|{zyzyzyzyvuvuvuvuststststrqrqrqrqpopopoponmlklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[WWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKHGHGHGHGHGHGHGHG|{|{|{|{zyzyzyzyvuvuvuvuststststrqrqrqrqpopopopolklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[ZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKHGHGHGHGHGHGHGHG|{|{|{|{zyzyzyzyvuvuvuvuststststrqrqrqrqpopopopolklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKJIJIJIHGHGHGHGHGHGHGHG|{|{|{|{xwxwxwxwvuvuvuvusssssstsrqrqrqrqponmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGHGHGHGHG|{|{|{|{xwxwxwxwvuvuvuvutstststsrqrqrqrqnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGHGFEFEFE|{|{|{|{xwxwxwxwvuvuvuvutstststsrqrqrqrqnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMLKLKLKJIJIJIJIHGHGHGHGFEFEFEFE|{|{|{|{xwxwxwxwvuvuvuvutstststsrqpopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYWWWWWXWXVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFE|{|{|{|{xwxwxwxwvuvuvuvutstststspopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYWXWXWXWXVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEzyzyzyzyxwxwxwxwvuvuvuvutstststspopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYWXWXWXWXVUVUVUVUTSTSTSTSRQRQRQRQPONMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEzyzyzyzyxwxwxwxwvuvuvuvutstststspopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYWXWXWXWXVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEzyzyzyzyxwxwxwxwvuvuvuvuqqqqqqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]\[\[\[ZYZYZYZYWXWXWXWXVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEzyzyzyzyxwxwxwxwvuvuvuvurqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYWXWXWXWXVUVUVUVUTSTSTSTSRQPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEzyzyzyzyxwxwxwxwvuvuvuvurqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYWXWWWWWWVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCBABABABA@?@?@?@?;<;<;<;<:9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - FEFEFEFEDCDCDCDCBABABABA@?@?@?@?;<;<;<;<:9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#"!"!"!"!       - - - - FEFEFEFEDCDCDCDCBABABABA@?@?@?@?;<;<;<;<:9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!       - - - - FEFEFEFEDCDCDCDCBABABABA@?@?@?@?;<;<;<;<:9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!     - - - - FEFEFEFEDCDCDCDCBABABABA@?@?@?@?;<;<;<;<:9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!    - FEFEFEFEDCDCDCDCBABABABA@?@?@?@?;<;<;;;;:9:9:9:9878787876565656543434343212121210/0/0/0/.-,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!    FEFEFEFEDCDCDCDCBABABABA@?@?@?@?;;<;<;<;:9:9:9:9878787876565656543434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!    FEFEFEFEDCDCDCDCBABABABA@?>=>=>=<;<;<;<;:9:9:9:9878787876565656543434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!    - - - FEFEFEFEDCDCDCDCBABABABA>=>=>=>=<;<;<;<;:9:9:9:9878787876565656543434343212121210/.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!    - - - - FEFEFEFEDCDCDCDCBABABABA>=>=>=>=<;<;<;<;:9:9:9:987878787656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!       - - - - FEFEFEFEDCDCDCDCBABABABA>=>=>=>=<;<;<;<;:9:9:9:987878787656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#   - - - - FEFEFEFEDCDCDCDCBABABABA>=>=>=>=<;<;<;<;:9:9:9:9878787876565656543434343210/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#     - - - - FEFEFEFEDCDCDCDCBABABABA>=>=>=>=;;;;;<;<:9:9:9:98787878765656565434343430/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#     - - - - FEFEFEFEDCDCDCDCBABABABA>=>=>=>=;<;<;<;<:9:9:9:98787878765656565434343430/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#       - - - - FEFEFEFEDCDCDCDCBABABABA>=>=>=>=;<;<;<;<:9:9:9:98787878765656565432121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#        - - - - FEFEFEFEDCDCDCDCBABABABA>=>=>=>=;<;<;<;<:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#        - - - - FEFEFEFEDCDCDCDCBA@?@?@?>=>=>=>=;<;<;<;<:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#      - - - - FEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=;<;<;<;<:9:9:9:98787878765434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#       - - - - FEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=;<;;;;;;:9:9:9:98787878743434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#"!"!"!        - - - - FEFEFEFEDCBABABA@?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:98787878743434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!        - - - - FEFEFEFEBABABABA@?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:98765656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!        - - - - FEFEFEFEBABABABA@?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:96565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!        - - - - FEDCDCDCBABABABA@?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:96565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!        - - - - DCDCDCDCBABABABA@?@?@?@?>=>=>=>=<;<;<;<;:98787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!      - - - - DCDCDCDCBABABABA@?@?@?@?>=>=>=>=<;<;<;;;878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!        - - - - DCDCDCDCBABABABA@?@?@?@?>=>=>=>=;;<;<;<;878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!        - - - - DCDCDCDCBABABABA@?@?@?@?>=>=>=>=<;:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!        - - - - DCDCDCDCBABABABA@?@?@?@?>=>=>=>=:9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%$#$#$#"!"!"!"!        - - - - DCDCDCDCBABABABA@?@?@?@?>=>=>=>=:9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!        - - - - DCDCDCDCBABABABA@?@?@?@?>=>=>=>=:9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!     - - - - DCDCDCDCBABABABA@?@?@?@?>=>=>=>=:9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('&%&%&%$#$#$#$#"!"!"!"!        - - - - DCDCDCDCBABABABA@?@?@?@?>=>=>=>=:9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!        - - - - DCDCDCDCBABABABA@?@?@?@?>=<;<;<;:9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!        - - - - DCDCDCDCBABABABA@?@?@?@?<;;;;;;<:9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - ||{{zzyy JJIIHHGGhhiijjkkaa``__^^(())**++IIHHGGFF@@AABBCC1100//..XXYYZZ[[ppqqrrssllkkjjii99::;;AAllmmnnoouuttssrr]]\\[[ZZ,,--..//xxwwvvuu!!""##$$FFEEDDCCllmmnnoo]]\\[[ZZ,,--..//EEDDCCBBDDEEFFGG--,,++**\\]]^^__ttuuvvwwhhggffeeBBCCDDEEppqqrrssqqppoonnYYXXWWVV00112233ttssrrqq%%&&''((BBAA;;::ppqqrrssYYXXWWVV00112233AA@@??>>HHIIJJKK))((''&&``aabbccxxyyzz{{ - - ddccbbaaFFGGHHIIttuuvvwwmmllkkjjUUTTSSRR44556677ppoonnmm))**++,,99887766yyzz{{||UUTTSSRR44556677==<<;;::LLMMNNOO%%$$##""ddeeffgg - -||||{{zz ``__^^]]JJKKLLMMxxyyzz{{ - - iihhggff !!""##QQPPOONN8899::;;llkkjjii--..//0055443322||{{zzyy !!""##QQPPOONN8899::;;99887766PPQQRRSS!! hhiijjkk yyxxwwvvWWVVUUTTNNOOPPQQ ||||{{zz eeddccbb$$%%&&''MMLLKKJJ<<==>>??hhggffee112233441100//..xwvutssr$$%%&&''MMLLKKJJ<<==>>??55443322TTUUVVWWllmmnnoouuttssrrSSRRQQPPRRSSTTUU - - yyxxwwvvaa``__^^(())**++IIHHGGFF@@AABBCCddccbbaa55667788--,,++**rqqppoon(())**++IIHHGGFF@@AABBCC1100//..XXYYZZ[[ppqqrrssqqppoonnOONNMMLLVVWW]]^^uuttssrr]]\\[[ZZ,,--..//EEDDCCBBDDEEFFGG``__^^]]99::;;<<))((''&&nmmllkkj,,--..//EEDDCCBBDDEEFFGG--,,++**\\]]^^__ttuuvvwwmmllkkjjKKJJIIHH__``aabbqqppoonnYYXXWWVV00112233AA@@??>>HHIIJJKK\\[[ZZYY==>>??@@%%jiihhggf00112233AA@@??>>HHIIJJKK))((''&&``aabbccxxyyzz{{ - - iihhggff !!""##GGFFEEDDccddeeffmmllkkjjUUTTSSRR44556677==<<;;::LLMMNNOOEEDDCCBBXXWWVVUUAABBCCDDfeeddccb44556677==<<;;::LLMMNNOO%%$$##""ddeeffgg - -||||{{zz eeddccbb$$%%&&''CCBBAA;;gghhiijj - - iihhggff !!""##QQPPOONN8899::;;99887766PPQQRRSSAA@@??>>TTSSRRQQEEFFGGHHbaa``__^8899::;;99887766PPQQRRSS!! hhiijjkk yyxxwwvvaa``__^^(())**++::998877kkllmmnn eeddccbb$$%%&&''MMLLKKJJ<<==>>??55443322TTUUVVWW==<<;;::PPOONNMMIIJJKKLL^]]\[ZYX<<==>>??55443322TTUUVVWWllmmnnoouuttssrr]]\\[[ZZ,,--..//66554433ooppqqrraa``__^^(())**++IIHHGGFF@@AABBCC1100//..XXYYZZ[[99887766LLKKJJIIMMNNOOPP WWVVUUTT@@AABBCC1100//..XXYYZZ[[ppqqrrssqqppoonnYYXXWWVV00112233221100//ssyyzz{{]]\\[[ZZ,,--..//EEDDCCBBDDEEFFGG--,,++**\\]]^^__55443322HHGGFFEEQQRRSSTT - - SSRRQQPPDDEEFFGG--,,++**\\]]^^__ttuuvvwwmmllkkjjUUTTSSRR44556677..--,,++||||{{zzYYXXWWVV00112233AA@@??>>HHIIJJKK))((''&&``aabbcc1100//..DDCCBBAAUUVVWWXX - - OONNMMLLHHIIJJKK))((''&&``aabbccxxyyzz{{ - - iihhggff !!""##QQPPOONN8899::;;**))((''yyxwvutsUUTTSSRR44556677==<<;;::LLMMNNOO%%$$##""ddeeffgg--,,++**@@??>>==YYZZ[[\\ KKJJIIHHLLMMNNOO%%$$##""ddeeffgg - -||||{{zz eeddccbb$$%%&&''MMLLKKJJ<<==>>??&&%%srrqqppo !!""##QQPPOONN8899::;;99887766PPQQRRSS!! hhiijjkk))((''&&<<;;::99]]^^__``GGFFEEDDPPQQRRSS!! hhiijjkk yyxxwwvvaa``__^^(())**++IIHHGGFF@@AABBCConnmmllk$$%%&&''MMLLKKJJ<<==>>??55443322TTUUVVWWllmmnnoo%%$$##""88776655aabbccddCCBBAA@?TTUUVVWWllmmnnoouuttssrr]]\\[[ZZ,,--..//EEDDCCBBDDEEFFGGkjjiihhg(())**++IIHHGGFF@@AABBCC1100//..XXYYZZ[[ppqqrrss!! 44332211eeffgghh>=<;;::9XXYYZZ[[ppqqrrssqqppoonnYYXXWWVV00112233AA@@??>>HHIIJJKKgffeeddc,,--..//EEDDCCBBDDEEFFGG--,,++**\\]]^^__ttuuvvww00//..--iijjkkll%%98877665\\]]^^__ttuuvvwwmmllkkjjUUTTSSRR44556677==<<;;::LLMMNNOOcbbaa``_00112233AA@@??>>HHIIJJKK))((''&&``aabbccxxyyzz{{,,++**))mmnnoopp&&''(())54433221``aabbccxxyyzz{{ - - iihhggff !!""##QQPPOONN8899::;;99887766PPQQRRSS - -_^^]]\[Z44556677==<<;;::LLMMNNOO%%$$##""ddeeffgg - -||||{{zz((''&&%%qqrrsstt**++,,--100//..-ddeeffgg - -||||{{zz eeddccbb$$%%&&''MMLLKKJJ<<==>>??55443322TTUUVVWW YXWWVVUU8899::;;99887766PPQQRRSS!! hhiijjkk yyxxwwvv$$##""!!uuvvwwxx..//0011-,,++**)hhiijjkk yyxxwwvvaa``__^^(())**++IIHHGGFF@@AABBCC1100//..XXYYZZ[[TTSSRRQQ<<==>>??55443322TTUUVVWWllmmnnoouuttssrr - - yyzz{{||22334455)((''&&%llmmnnoouuttssrr]]\\[[ZZ,,--..//EEDDCCBBDDEEFFGG--,,++**\\]]^^__ - - PPOONNMM@@AABBCC1100//..XXYYZZ[[ppqqrrssqqppoonn ||{{zzyy66778899%$#"! ppqqrrssqqppoonnYYXXWWVV00112233AA@@??>>HHIIJJKK))((''&&``aabbcc LLKKJJIIDDEEFFGG--,,++**\\]]^^__ttuuvvwwmmllkkjjssrrqqpp::;;AABBttuuvvwwmmllkkjjUUTTSSRR44556677==<<;;::LLMMNNOO%%$$##""ddeeffggHHGGFFEEHHIIJJKK))((''&&``aabbccxxyyzz{{ - - iihhggffoonnmmllCCDDEEFFxxyyzz{{ - - iihhggff !!""##QQPPOONN8899::;;99887766PPQQRRSS!! hhiijjkkDDCCBBAALLMMNNOO%%$$##""ddeeffgg - -||||{{zz eeddccbb kkjjiihhGGHHIIJJ||||{{zz eeddccbb$$%%&&''MMLLKKJJ<<==>>??55443322TTUUVVWWllmmnnoo@?>=<;;:PPQQRRSS!! hhiijjkk yyxxwwvvaa``__^^ - - - - ggffeeddKKLLMMNNyyxxwwvvaa``__^^(())**++IIHHGGFF@@AABBCC1100//..XXYYZZ[[ppqqrrss:9988776TTUUVVWWllmmnnoouuttssrr]]\\[[ZZ  - - ccbbaa``OOPPQQRR uuttssrr]]\\[[ZZ,,--..//EEDDCCBBDDEEFFGG--,,++**\\]]^^__ttuuvvww%%&&''((65544332XXYYZZ[[ppqqrrssqqppoonnYYXXWWVV __^^]]WWSSTTUUVV - - qqppoonnYYXXWWVV00112233AA@@??>>HHIIJJKK))((''&&``aabbccxxyyzz{{))**++,,21100//.\\]]^^__ttuuvvwwmmllkkjjUUTTSSRRVVUUTTSSWW]]^^__mmllkkjjUUTTSSRR44556677==<<;;::LLMMNNOO%%$$##""ddeeffgg - -||||{{zz--..//00.--,,++*``aabbccxxyyzz{{ - - iihhggff !!""##QQPPOONNRRQQPPOO``aabbcc - - iihhggff !!""##QQPPOONN8899::;;99887766PPQQRRSS!! hhiijjkk yyssrrqq11223344*))((''&ddeeffgg - -||||{{zz eeddccbb$$%%&&''MMLLKKJJNNMMLLKKddeeffgg eeddccbb$$%%&&''MMLLKKJJ<<==>>??55443322TTUUVVWWllmmnnooppoonnmm55667788&%%$#"! hhiijjkk yyxxwwvvaa``__^^(())**++IIHHGGFF !!""##$$%%&&''MMLLKKJJ<<==>>??&&%%srrqqppo !!""##QQPPOONN8899::;;99887766PPQQRRSS!! hhiijjkk yyxxwwvvWWVVUUTTNNOOPPQQ ||||{{zz eeddccbb$$%%&&''MMLLKKJJ<<==>>??55443322TTUUVVWWllmmnnoo(())**++))((''&&(())**++IIHHGGFF@@AABBCConnmmllk$$%%&&''MMLLKKJJ<<==>>??55443322TTUUVVWWllmmnnoouuttssrrSSRRQQPPRRSSTTUU - - yyxxwwvvaa``__^^(())**++IIHHGGFF@@AABBCC1100//..XXYYZZ[[ppqqrrss,,--..//%%$$##"",,--..//EEDDCCBBDDEEFFGGkjjiihhg(())**++IIHHGGFF@@AABBCC1100//..XXYYZZ[[ppqqrrssqqppoonnOONNMMLLVVWW]]^^uuttssrr]]\\[[ZZ,,--..//EEDDCCBBDDEEFFGG--,,++**\\]]^^__ttuuvvww00112233!! 00112233AA@@??>>HHIIJJKKgffeeddc,,--..//EEDDCCBBDDEEFFGG--,,++**\\]]^^__ttuuvvwwmmllkkjjKKJJIIHH__``aabbqqppoonnYYXXWWVV00112233AA@@??>>HHIIJJKK))((''&&``aabbccxxyyzz{{4455667744556677==<<;;::LLMMNNOOcbbaa``_00112233AA@@??>>HHIIJJKK))((''&&``aabbccxxyyzz{{ - - iihhggff !!""##GGFFEEDDccddeeffmmllkkjjUUTTSSRR44556677==<<;;::LLMMNNOO%%$$##""ddeeffgg - -||ttssrr8899::;;8899::;;99887766PPQQRRSS - -_^^]]\[Z44556677==<<;;::LLMMNNOO%%$$##""ddeeffgg - -||||{{zz eeddccbb$$%%&&''CCBBAA;;gghhiijj - - iihhggff !!""##QQPPOONN8899::;;99887766PPQQRRSS!! hhiijjkk qqppoonnAABBCCDD<<==>>??55443322TTUUVVWW YXWWVVUU8899::;;99887766PPQQRRSS!! hhiijjkk yyxxwwvvaa``__^^(())**++::998877kkllmmnn eeddccbb$$%%&&''MMLLKKJJ<<==>>??55443322TTUUVVWWllmmnnoommllkkjjEEFFGGHH@@AABBCC1100//..XXYYZZ[[TTSSRRQQ<<==>>??55443322TTUUVVWWllmmnnoouuttssrr]]\\[[ZZ,,--..//66554433ooppqqrraa``__^^(())**++IIHHGGFF@@AABBCC1100//..XXYYZZ[[ppqqrrssiihhggffIIJJKKLL - -DDEEFFGG--,,++**\\]]^^__ - - PPOONNMM@@AABBCC1100//..XXYYZZ[[ppqqrrssqqppoonnYYXXWWVV00112233221100//ssyyzz{{]]\\[[ZZ,,--..//EEDDCCBBDDEEFFGG--,,++**\\]]^^__ttuuvvwweeddccbbMMNNOOPP - - HHIIJJKK))((''&&``aabbcc LLKKJJIIDDEEFFGG--,,++**\\]]^^__ttuuvvwwmmllkkjjUUTTSSRR44556677..--,,++||||{{zzYYXXWWVV00112233AA@@??>>HHIIJJKK))((''&&``aabbccxxyyzz{{ - - aa``__^^QQRRSSTT LLMMNNOO%%$$##""ddeeffggHHGGFFEEHHIIJJKK))((''&&``aabbccxxyyzz{{ - - iihhggff !!""##QQPPOONN8899::;;**))((''yyxwvutsUUTTSSRR44556677==<<;;::LLMMNNOO%%$$##""ddeeffgg - -||||{{zz ]]WWVVUUUUVVWW]]PPQQRRSS!! hhiijjkkDDCCBBAALLMMNNOO%%$$##""ddeeffgg - -||||{{zz eeddccbb$$%%&&''MMLLKKJJ<<==>>??&&%%srrqqppo !!""##QQPPOONN8899::;;99887766PPQQRRSS!! hhiijjkk yyxxwwvvTTSSRRQQ^^__``aaTTUUVVWWllmmnnoo@?>=<;;:PPQQRRSS!! hhiijjkk yyxxwwvvaa``__^^(())**++IIHHGGFF@@AABBCConnmmllk$$%%&&''MMLLKKJJ<<==>>??55443322TTUUVVWWllmmnnoouuttssrrPPOONNMMbbccddeeXXYYZZ[[ppqqrrss:9988776TTUUVVWWllmmnnoouuttssrr]]\\[[ZZ,,--..//EEDDCCBBDDEEFFGGkjjiihhg(())**++IIHHGGFF@@AABBCC1100//..XXYYZZ[[ppqqrrssqqppoonnLLKKJJIIffgghhii\\]]^^__ttuuvvww%%&&''((65544332XXYYZZ[[ppqqrrssqqppoonnYYXXWWVV00112233AA@@??>>HHIIJJKKgffeeddc,,--..//EEDDCCBBDDEEFFGG--,,++**\\]]^^__ttuuvvwwmmllkkjjHHGGFFEEjjkkllmm !!""##``aabbccxxyyzz{{))**++,,21100//.\\]]^^__ttuuvvwwmmllkkjjUUTTSSRR44556677==<<;;::LLMMNNOOcbbaa``_00112233AA@@??>>HHIIJJKK))((''&&``aabbccxxyyzz{{ - - iihhggff !!""##DDCCBBAAnnooppqq$$%%&&''ddeeffgg - -||||{{zz--..//00.--,,++*``aabbccxxyyzz{{ - - iihhggff !!""##QQPPOONN8899::;;99887766PPQQRRSS - -_^^]]\[Z44556677==<<;;::LLMMNNOO%%$$##""ddeeffgg - -||||{{zz eeddccbb$$%%&&'';;::9988qqppoonn(())**++hhiijjkk yyssrrqq11223344*))((''&ddeeffgg - -||||{{zz eeddccbb$$%%&&''MMLLKKJJ<<==>>??55443322TTUUVVWW YXWWVVUU8899::;;99887766PPQQRRSS!! hhiijjkk yyxxwwvvaa``__^^(())**++77665544mmllkkjj,,--..//llmmnnooppoonnmm55667788&%%$#"! hhiijjkk yyxxwwvvaa``__^^(())**++IIHHGGFF@@AABBCC1100//..XXYYZZ[[TTSSRRQQ<<==>>??55443322TTUUVVWWllmmnnoouuttssrr]]\\[[ZZ,,--..//33221100iihhggff00112233ppqqrrssllkkjjii99::;;AAllmmnnoouuttssrr]]\\[[ZZ,,--..//EEDDCCBBDDEEFFGG--,,++**\\]]^^__ - - PPOONNMM@@AABBCC1100//..XXYYZZ[[ppqqrrssqqppoonnYYXXWWVV00112233//..--,,eeddccbb44556677ttuuvvwwhhggffeeBBCCDDEEppqqrrssqqppoonnYYXXWWVV00112233AA@@??>>HHIIJJKK))((''&&``aabbcc LLKKJJIIDDEEFFGG--,,++**\\]]^^__ttuuvvwwmmllkkjjUUTTSSRR44556677++**))((aa``__^^8899::;;xxyyzz{{ - - ddccbbaaFFGGHHIIttuuvvwwmmllkkjjUUTTSSRR44556677==<<;;::LLMMNNOO%%$$##""ddeeffggHHGGFFEEHHIIJJKK))((''&&``aabbccxxyyzz{{ - - iihhggff !!""##QQPPOONN8899::;;''&&%%]]\\[[ZZ<<==>>??||||{{zz ``__^^]]JJKKLLMMxxyyzz{{ - - iihhggff !!""##QQPPOONN8899::;;99887766PPQQRRSS!! hhiijjkkDDCCBBAALLMMNNOO%%$$##""ddeeffgg - -||||{{zz eeddccbb$$%%&&''MMLLKKJJ<<==>>??YYXXWWVV@@AABBCCyyxxwwvvWWVVUUTTNNOOPPQQ ||||{{zz eeddccbb$$%%&&''MMLLKKJJ<<==>>??55443322TTUUVVWWllmmnnoo@?>=<;;:PPQQRRSS!! hhiijjkk yyxxwwvvaa``__^^(())**++IIHHGGFF@@AABBCCUUTTSSRRDDEEFFGGuuttssrrSSRRQQPPRRSSTTUU - - yyxxwwvvaa``__^^(())**++IIHHGGFF@@AABBCC1100//..XXYYZZ[[ppqqrrss:9988776TTUUVVWWllmmnnoouuttssrr]]\\[[ZZ,,--..//EEDDCCBBDDEEFFGGQQPPOONNHHIIJJKKqqppoonnOONNMMLLVVWW]]^^uuttssrr]]\\[[ZZ,,--..//EEDDCCBBDDEEFFGG--,,++**\\]]^^__ttuuvvww%%&&''((65544332XXYYZZ[[ppqqrrssqqppoonnYYXXWWVV00112233AA@@??>>HHIIJJKKMMLLKKJJLLMMNNOOmmllkkjjKKJJIIHH__``aabbqqppoonnYYXXWWVV00112233AA@@??>>HHIIJJKK))((''&&``aabbccxxyyzz{{))**++,,21100//.\\]]^^__ttuuvvwwmmllkkjjUUTTSSRR44556677==<<;;::LLMMNNOO IIHHGGFFPPQQRRSSiihhggff !!""##GGFFEEDDccddeeffmmllkkjjUUTTSSRR44556677==<<;;::LLMMNNOO%%$$##""ddeeffgg - -||||{{zz--..//00.--,,++*``aabbccxxyyzz{{ - - iihhggff !!""##QQPPOONN8899::;;99887766PPQQRRSS - - - -EEDDCCBBTTUUVVWWeeddccbb$$%%&&''CCBBAA;;gghhiijj - - iihhggff !!""##QQPPOONN8899::;;99887766PPQQRRSS!! hhiijjkk yyssrrqq11223344*))((''&ddeeffgg - -||||{{zz eeddccbb$$%%&&''MMLLKKJJ<<==>>??55443322TTUUVVWW AA@@??>>XXYYZZ[[aa``__^^(())**++::998877kkllmmnn eeddccbb$$%%&&''MMLLKKJJ<<==>>??55443322TTUUVVWWllmmnnooppoonnmm55667788&%%$#"! hhiijjkk yyxxwwvvaa``__^^(())**++IIHHGGFF@@AABBCC1100//..XXYYZZ[[==<<;;::\\]]^^__]]\\[[ZZ,,--..//66554433ooppqqrraa``__^^(())**++IIHHGGFF@@AABBCC1100//..XXYYZZ[[ppqqrrssllkkjjii99::;;AAllmmnnoouuttssrr]]\\[[ZZ,,--..//EEDDCCBBDDEEFFGG--,,++**\\]]^^__99887766``aabbccYYXXWWVV00112233221100//ssyyzz{{]]\\[[ZZ,,--..//EEDDCCBBDDEEFFGG--,,++**\\]]^^__ttuuvvwwhhggffeeBBCCDDEEppqqrrssqqppoonnYYXXWWVV00112233AA@@??>>HHIIJJKK))((''&&``aabbcc55443322ddeeffggUUTTSSRR44556677..--,,++||||{{zzYYXXWWVV00112233AA@@??>>HHIIJJKK))((''&&``aabbccxxyyzz{{ - - ddccbbaaFFGGHHIIttuuvvwwmmllkkjjUUTTSSRR44556677==<<;;::LLMMNNOO%%$$##""ddeeffgg1100//..hhiijjkkQQPPOONN8899::;;**))((''yyxwvutsUUTTSSRR44556677==<<;;::LLMMNNOO%%$$##""ddeeffgg - -||||{{zz ``__^^]]JJKKLLMMxxyyzz{{ - - iihhggff !!""##QQPPOONN8899::;;99887766PPQQRRSS!! hhiijjkk%%&&''--,,++**llmmnnooppqqfpvbHAZtbdQf`vXJtArdnXvےbHAtbdQZfH~XQr˂JtArdnXvےbHAbnvr˂p|ZdQtA~HfrXQJ`JltpZHAb|ZdQ`f~Zp˂nXv`p˂rZ|dnvp|ZdQ`f~Zp˂|drf`vXpZHAb|ZdQ`f~Zp˂pfHZHAbrd|pvnےbHAbnvے`JbtlHfpvrXQJ`f~HXQJ`ےrtAdQZfH~btlHfpvrXQJ`tAJlnvpے`JbtlHfpvrXQJ`f`vXے`JXQZdQbtXv`fZp˂pfHXQr˂JtArdnXvےbHAfpvbHAZ|drvpfJtArdnXvےbHAtbdQZfH~XQr˂JtArdnXvےJlnvpr˂plJtA~HfrXQJ`f`vXpZHAb|ZdQ`f~Zp˂nXv`p˂rtAJlے`JXQ|ZdQ`f~Zp˂|drf`vXpZHAb|ZdQ`fHtbdQZfH~`JXQrrd|pvnےJlnvpے`JbtlHfpvrXQJ`f~HXQJ`ےtbdQZrZHAbtlHfpvrXQJ`tAJlnvpے`Jbtlfpv|drf`vX˂pZZdQbtXv`ftbdQZfH~XQr˂JtArdnXvےbHAfpvbHAZ|drbے`JtArdnXvےbHAtbdQZfH~XQr˂JtArdnrXQJtAJlnvpHAbےl|Zfpv|drf`vXpZHAb|ZdQ`f~Zp˂nXv`p˂rtAJlJXQr|ZdQ`f~Zp˂|drf`vXpZHAb|ZdQ`ےHAtbdQZfH~`JXQrdQbtnrXQJtAJlnvpے`JbtlHfpvrXQJ`f~HXQJ`ےtdrtApZHAbtlHfpvrXQJ`tAJlnvpے`JbtlZp˂|drf`vX˂pZlJtAr`ےHAtbdQZfH~XQr˂JtArdnXvےbHA|drfpvbHAZJltbے`JtArdnXvےbHAtbdQZfH~XQr˂JfpvrXQJ`tAJlnvpHAbd|ZZp˂|drf`vXpZHAb|ZdQ`f~Zp˂tAJlnXv`p˂rbdQZ|JXQr|ZdQ`f~Zp˂|drf`vXpZHAnXvےbHAtbdQZfH~˂pZHAdQbtrXQJ`tAJlnvpے`JbtlHfpvrXQJ`tbdQZf~HXQJ`ےdrtApZAbbtlHfpvrXQJ`tAJlnvpے`JXQ`f~Zp˂|drf`vXbے`lJtArےbHAtbdQZfH~XQr˂JtArdnXvےbHA|drfpvbHAZJlt`JXQrJtArdnXvےbHAtbdQZfH~rbtHfpvrXQJ`tAJlnvpJXQrdtlZp˂|drf`vXpZHAb|ZdQ`f~Zp˂tAJlnXv`p˂rbdQZ|˂pZ|ZdQ`f~Zp˂|drf`vXlJtAdnXvےbHAtbdQZfH~˂pZHAJfpvrXQJ`tAJlnvpے`JbtlHfpvrXQJ`tbdQZf~HXQJ`ے`vXnHAbےbtlHfpvrXQJ`tAJlnvp|ZdQ`f~Zp˂|drf`vXbے`nvfےbHAtbdQZfH~XQr˂JtArdnXvےbHA|drfpvbHAZvpf`JXQrJtArdnXvےbHAtbdQZfے`JbtlHfpvrXQJ`tAJlnvpJXQHAb~HfpZp˂|drf`vXpZHAb|ZdQ`f~Zp˂tAJlnXv`p˂rH~f˂pZ|ZdQ`f~Zp˂|dtAXQr˂JtArdnXvےbHAtbdQZfH~ے`JvnXrXQJ`tAJlnvpے`JbtlHfpvrXQJ`tbdQZf~HXQJ`ے`vXnHAbbtlHfpvrXQJ`JltpZHAb|ZdQ`f~Zp˂|drf`vXXQr˂v`fےbHAtbdQZfH~XQr˂JtArdnXvےbHA|drfpvbHAZvpfJQr˂pJtArdnXvےbHAbnvے`JbtlHfpvrXQJ`tAJlnvppZHAb~HfpZp˂|drf`vXpZHAb|ZdQ`f~Zp˂tAJlnXv`p˂rH~ZHAb|ZdQ`f~Zp˂pfHXQr˂JtArdnXvےbHAtbdQZfH~ے`JvnXrXQJ`tAJlnvpے`JbtlHfpvrXQJ`tbdQZf~HXQJ`ےvpfHے`JXbtlHfpvrXQJ`f`vXpZHAb|ZdQ`f~Zp˂|drf`vXXQr˂v`f~ےbHAtbdQZfH~XQr˂JtArdnXvےJl|drfpvbHAZ~f`Qr˂pJtArdnXvےJlnvpے`JbtlHfpvrXQJ`tAJlnvpp`JXQfpvZp˂|drf`vXpZHAb|ZdQ`fHtbdQZtAJlnXv`p˂rvXnZHAb|ZdQ`fHtbdQZfH~XQr˂JtArdnXvےbHAtbdQZfH~rbtnXv`rXQJ`tAJlnvpے`Jbtlfpv|drtbdQZf~HXQJ`ےvpfHے`JXbtlfpv|drf`vXpZHAb|ZdQ`f~Zp˂|drf`vXl|ZdQf~HےbHAtbdQZfH~XQr˂JtArdnrXQJtAJl|dtAfpvJlt~f`QrZHAJtArdnrXQJtAJlnvpے`JbtlHfpvrXQJ`tAJlnvpbtlfpvZp˂|drf`vXpZHAb|ZdQ`ےHAtbdQZJltnXv`drtAJvXH~bے`|ZdQ`ےHAtbdQZfH~XQr˂JtArdnXvےbHAtbdQZfH~JtArdnXv`rXQJ`tAJlnvpے`JbtlZp˂|drbnvf~Hltbf`vJXQrbtlZp˂|drf`vXpZHAb|ZdQ`f~Zp˂|drf`vX|ZdQf~HےbHAtbdQZfH~XQr˂JfpvrXQJ`tAJlpfHfpvdQZ|Xnv˂pZHAJfpvrXQJ`tAJlnvpے`JbtlHfpvrXQJ`tAJlnvpbtlfvnXZp˂|drf`vXpZHAnXvےbHAtbdQZf`vXnXv`drtAJpfH~bے`nXvےbHAtbdQZfH~XQr˂JtArdnXvےbHAtbdQZfH~JtArdv`frXQJ`tAJlnvpے`JXQ`f~Zp˂|drnvpp˂rltbf`vJXQr`f~Zp˂|drf`vXpZHAb|ZdQ`f~Zp˂|drf`vXtlJ~HfpےbHAtbdQZfH~rbtHfpvrXQJ`tAJlfH~XQJ`ےdQZ|lXnv˂pZHAHfpvrXQJ`tAJlnvpے`JbtlHfpvrXQJ`tAJlnvptArdvnXZp˂|drf`vXlJtAdnXvےbHAtbdQZf`vXbHAZtbdQp`vXbJAdnXvےbHAtbdQZfH~XQr˂JtArdnXvےbHAtbdQZfے`J|ZdQbv`frXQJ`tAJlnvp|ZdQ`f~Zp˂|drnvpp˂rZ|dnvp|ZdQ`f~Zp˂|drf`vXpZHAb|ZdQ`f~Zp˂|dtAXQHAbtlJ~HfpےbHAtbdQZfے`JbtlHfpvrXQJ`tAJlfH~XQJ`ےrtAJlfH~btlHfpvrXQJ`tAJlnvpے`JbtlHfpvrXQJ`Jltے`JXQtArdvnvfZp˂|dtAXQr˂JtArdnXvےbHAtbdQZf`vXnvpے`Jbtlv~rtAJlf`vXpZHAb|ZdQ`f~Zp˂|drf`vXpZHAnXvےbHAltb~f``JXQrJfpvrXQJ`tAJlnvpے`JbtlHfpvrXQJ`tAJlnvpJAHr󙐅f۝`vfH~XQr˂JtArdHfpvtbdnvpے`JbtlHfpvrXQJ`tAJlnvpے`JXQ`f~Zp˂dQZ|vXn˂pZAnXvےbHAtbdQZfH~XQr˂JtArdnXvےbHAtbdQZfH~ˁ`ZQXXnvf`vXpZHAb|ZdQnXvQZ|dfH~XQr˂JtArdnXvےbHAtbdQZfH~rbtHfpvrXQJ`drtAJvp`v`JXQ`f~Zp˂|drf`vXpZHAb|ZdQ`f~Zp˂|drf`vXb㉀ۑppfH~nvpے`Jbtl`f~rtAJlf`vXpZHAb|ZdQ`f~Zp˂|drf`vXlJtAdnXvےbHAltbXnvrbtHfpvrXQJ`tAJlnvpے`JbtlHfpvrXQJ`tAJlnvpJAHr󙐅f۝`vfH~XQr˂JtArdHfpvtbdnvpے`JbtlHfpvrXQJ`tAJlnvp|ZdQ`f~Zp˂dQZ|pfH~lJtAdnXvےbHAtbdQZfH~XQr˂JtArdnXvےbHAtbdQZfZHAbˁ`ZQXXnvf`vXpZHAb|ZdQnXvQZ|rfH~XQr˂JtArdnXvےbHAtbdQZfے`JbtlHfpvrXQJ`drtAdQf`v|ZdQ`f~Zp˂|drf`vXpZHAb|ZdQ`f~Zp˂|dtAے`JAHr󙐂ˍpfH~nvpے`Jbtl`pvAJltf`vXpZHAb|ZdQ`f~Zp˂|dtAXQr˂JtArdnXvےbHAZ|dXnvbtlHfpvrXQJ`tAJlnvpے`JbtlHfpvrXQJ`JltXQr˂`ZQXbㅐf۝`vfH~XQr˂JtArdnrXQJbdQZ|nvpے`JbtlHfpvrXQJ`JltpZHAb|ZdQ`f~Zp˂rtAJlpfH~JtArdnXvےbHAtbdQZfH~XQr˂JtArdnXvےbHAbnvpZHAbۑpJXnvf`vXpZHAb|ZdQ`p˂drtAfH~XQr˂JtArdnXvےbHAbnvے`JbtlHfpvrXQJ`tbdQvp|ZdQ`f~Zp˂|drf`vXpZHAb|ZdQ`f~Zp˂pfHے`JAHr󙐂ˍp|dnvpے`JbtlrXQJ`Jltf`vXpZHAb|ZdQ`f~Zp˂pfHXQr˂JtArdnXvےbHAZ|dfے`JbtlHfpvrXQJ`tAJlnvpے`JbtlHfpvrXQJ`f`vXXQr˂`ZQXbrQtJlfH~XQr˂JtArdےbHAbdQZ|nvpے`JbtlHfpvrXQJ`f`vXpZHAb|ZdQ`f~Zp˂rtAJlXQrZHJtArdnXvےbHAtbdQZfH~XQr˂JtArdnXvےJlnvpp`JXQۑp`tbAdf`vXpZHAb|ZdQZp˂drtAfH~XQr˂JtArdnXvےJlnvpے`JbtlHfpvrXQJ`tdrAbے`|ZdQ`f~Zp˂|drf`vXpZHAb|ZdQ`fHtbdQZfH~r˂pZQXb㉀Z|dnvpے`JbtlrXQJ`JbdQf`vXpZHAb|ZdQ`fHtbdQZfH~XQr˂JtArdnXvےbHAtAJl璁JXQrbtlHfpvrXQJ`tAJlnvpے`Jbtlfpv|drf`vXZHAbۑpJAHrQtJlfH~XQr˂JtArdےbHAZ|dnvpے`Jbtlfpv|drf`vXpZHAb|ZdQ`f~Zp˂tbdQZ˂pZHJtArdnXvےbHAtbdQZfH~XQr˂JtArdnrXQJtAJlnvpے`JXQr󙐂ˁ`tbAdf`vXpZHAb|ZdQXQJ`ےrtAJlfH~XQr˂JtArdnrXQJtAJlnvpے`JbtlHfpvrXQJ`|drAbے`|ZdQ`f~Zp˂|drf`vXpZHAb|ZdQ`ےHAtbdQZfH~r˂pZQXb㉀Z|dnvpے`JbtlbHAZtbdQf`vXpZHAb|ZdQ`ےHAtbdQZfH~XQr˂JtArdnXvےbHAtAJl璁JXQrbtlHfpvrXQJ`tAJlnvpے`JbtlZp˂|drf`vXZHAbۑpJAHrQtJlfH~XQr˂Jfpvp˂rZ|dnvpے`JbtlZp˂|drf`vXpZHAb|ZdQ`f~Zp˂tbdQZ˂pZAbJtArdnXvےbHAtbdQZfH~XQr˂JfpvrXQJ`tAJlnvp˂pZf۝`vtbAdf`vXpZHA~HXQJ`ےrtAJlfH~XQr˂JfpvrXQJ`tAJlnvpے`JbtlHfpvrXQJ`|lt`JXQ|ZdQ`f~Zp˂|drf`vXpZHAnXvےbHAtbdQZfH~HAbےXnvZ|dnvpے`JXQfpvbHAZtbQZf`vXpZHAnXvےbHAtbdQZfH~XQr˂JtArdnXvےbHAbnvr˂pbtlHfpvrXQJ`tAJlnvpے`JXQ`f~Zp˂|drf`vX`JXQrpfH~rQtJlfH~rbtnXv`p˂drtAJnvpے`JXQ`f~Zp˂|drf`vXpZHAb|ZdQ`f~Zp˂p`vXZHAbJtArdnXvےbHAtbdQZfH~rbtHfpvrXQJ`tAJlnvp˂pZf۝`vtbAdf`vXlJtAdf~HbHAZpltbfH~rbtHfpvrXQJ`tAJlnvpے`JbtlHfpvrXQJ`nvpے`JXQ|ZdQ`f~Zp˂|drf`vXlJtAdnXvےbHAtbdQZfH~HAbےXnvZ|dnvp|ZdQfpv˂rXQdQZ|f`vXlJtAdnXvےbHAtbdQZfH~XQr˂JtArdnXvےbHAfH~r˂pbtlHfpvrXQJ`tAJlnvp|ZdQ`f~Zp˂|drf`vX`JXQHApfH~rQtJlfے`JbtlnXv`J`ےdrtAJnvp|ZdQ`f~Zp˂|drf`vXpZHAb|ZdQ`f~Zp˂f`vXZHAbJtArdnXvےbHAtbdQZfے`JbtlHfpvrXQJ`tAJlnvpbے`f۝`vtbAdXQr˂JtArdpvnbHAZpltbfے`JbtlHfpvrXQJ`tAJlnvpے`JbtlHfpvrXQJ`nvpJQr|ZdQ`f~Zp˂|dtAXQr˂JtArdnXvےbHAtbdQZfH~JXQrXnvZ|dpZHAb|ZdQXv`f˂rXQdQZ|XQr˂JtArdnXvےbHAtbdQZfH~XQr˂JtArdnXvےbHAfH~pZHAbtlHfpvrXQJ`JltpZHAb|ZdQ`f~Zp˂|drf`vX˂pZHApfH~rQtJlے`Jbtl~HfJ`p˂AJltpZHAb|ZdQ`f~Zp˂|drf`vXpZHAb|ZdQ`f~Zp˂vpfbے`JtArdnXvےbHAbnvے`JbtlHfpvrXQJ`tAJlnvpbے`f۝`vtbAdXQr˂JtArdpvnrXQJbnvے`JbtlHfpvrXQJ`tAJlnvpے`JbtlHfpvrXQJ`H~fJXQr|ZdQ`f~Zp˂pfHXQr˂JtArdnXvےbHAtbdQZfH~JXQrXnvZ|dpZHAb|ZdQXv`f`ےbpfHXQr˂JtArdnXvےbHAtbdQZfH~XQr˂JtArdnXvےJl`vXnpZHAbtlHfpvrXQJ`f`vXpZHAb|ZdQ`f~Zp˂|drf`vX˂p`ZpfH~rQtJlے`Jbtl~HXHAZp˂f`vXpZHAb|ZdQ`f~Zp˂|drf`vXpZHAb|ZdQ`fHtdrtAvpfbے`JtArdnXvےJlnvpے`JbtlHfpvrXQJ`tAJlnvpQXb㉀ۅf۝`vtbAdXQr˂JtArdv`frXQJnvpے`JbtlHfpvrXQJ`tAJlnvpے`JbtlfpvJltH~fJXQrZ|ZdQ`fHtbdQZfH~XQr˂JtArdnXvےbHAtbdQZfH~pJAHrXnvZ|dpZHAb|ZdQ~Hfp`ےbfH~XQr˂JtArdnXvےbHAtbdQZfH~XQr˂JtArdnrXQJbdQZ|`vXHHAbےbtlfpv|drf`vXpZHAb|ZdQ`f~Zp˂|drf`vXˁ`ZpfH~rQtJlے`JbtlvnXHAXQJ`f`vXpZHAb|ZdQ`f~Zp˂|drf`vXpZHAb|ZdQ`ےHAdrtA~f``JXQrJtArdnrXQJtAJlnvpے`JbtlHfpvrXQJ`tAJlnvpQXb㉀ۅf۝`vtbAdXQr˂JtArdv`fےJlnvpے`JbtlHfpvrXQJ`tAJlnvpے`JbtlZp˂JltvXn˂pZ|ZdQ`ےHAtbdQZfH~XQr˂JtArdnXvےbHAtbdQZfH~pJAHrXnvZ|dpZHAb|ZdQ~HfptbQZdfH~XQr˂JtArdnXvےbHAtbdQZfH~XQr˂JfpvrXQJ`bdQZ|vpfHHAbےbtlZp˂|drf`vXpZHAb|ZdQ`f~Zp˂|drf`vXۑppfH~rQtJltuvwxyz{||{zyxwv5555555566666666666666666666666666 \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv28_0.dat b/mpdf/qrcode/data/qrv28_0.dat deleted file mode 100644 index 2f3b646..0000000 --- a/mpdf/qrcode/data/qrv28_0.dat +++ /dev/null @@ -1,257 +0,0 @@ -~}~}~}~}|{|{|{|{zyzyzyzywwwwwxwxuvuvuvuvststststqrqrqrqropopopopopopopopmnmnmnmnklklklklijijijijghghghghgfefefefefefefefcdcdcdcdabababab______`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGEFEFEFEFCDCDCDCDABABABAB?@?@?@?@?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:787878787878787856565656~}~}~}~}|{|{|{|{zyzyzyzywxwxwxwxuvuvuvuvststststqrqrqrqropopopopopopopopmnmnmnmnklklklklijijijijghghghghefefefefefefefefcdcdcdcdabababab`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGEFEFEFEFCDCDCDCDABABABAB?@?@?@?@?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:787878787878787856565656~}~}~}~}|{|{|{|{zyzyzyzywxwxwxwxuvuvuvuvststststqrqrqrqropopopoponmnmnmnmnmnmnmnklklklklijijijijghghghghefefefefefefefefcdcdcdcdabababab`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKJIJIJIJIGGGGGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:787878787878787856565656~}~}~}~}|{|{|{|{zyzyxwxwwxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnmnmnmnmnklklklklijijijijghghghghefefefefefefefefcdcdcdcdababa`_``_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKJIJIJIJIGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:78787878787878765656565634343434~}~}~}~}~}~}~}~}|{|{|{|{xwxwwwwwwxwxwxwuuvuvuvuvststststqrqrqrqropopopopmnmnmnmnmnmnmnmnklklklklijijijijghghghghefefefefefefefefcdcdcdcb_`_`____`_`_____^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKJIJIJIJIGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:78787878565656565656565634343434~}~}~}~}~}~}~}~}|{|{|{zywxwxwxwxuuuuuvuvuvuvuvuvststststqrqrqrqropopopopmnmnmnmnmnmnmnmnklklklklijijijijghghghghefefefefefefefefabababab__`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKJIJIHGHGGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@?@?@?@?>=>=>=>=>;<;<;<;<9:9:9:9:78787878565656565656565634343434~}~}~}~}~}~}~}~}zyzyzyzywxwxwxwxuvuvuvuvuvuvuvuvststststqrqrqrqropopopopmnmnmnmnmnmnmnmnklklklklijijijijghghghghefefefefedcdcdcdabababab`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMNMNMNMNMLKLKLKJIHGHGGGGGGHGGGGGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<9:9:9:9:78787878565656565656565634343434~}~}~}~}~}~}~}~}zyzyzyzywxwxwxwxuvuvuvuvuvuvuvuvststststqrqrqrqropopopopmnmnmnmnmnmnmnmnklklklklijijijijghghghghefefefefcdcdcdcdabababab`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMNMNMNMNMJIJIJIJIGHGHGHGHGHGHGHGFEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<9:9:9:9:78787878565656565656565634343434~}~}~}~}|{|{|{|{zyzyzyzywxwxwxwxuvuvuvuvuvuvuvuvststststqrqrqrqropopopopmnmnmnmnmlklklklklklklklijijijijghghghghefefefefcdcdcdcdabababab`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<9:9:9:9:78787878565656565656565634343434~}~}~}~}|{|{|{|{zyzyzyzywxwxwxwwuvuvuvuvuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklklklklklijijijijghghghghefefefefcdcdcdcdabababab`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<9:9:9:9:78787878565656565656565434343434~}~}~}~}|{|{|{|{zyzyzyzywwwwxwxwuvuvuvuvutstststststststqrqrqrqropopopopmnmnmnmnklklklklklklklklijijijijghghghghefefefefcdcdcdcdabababab_____`_`^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<9:9:9:9:78787878565656563434343434343434~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwuvuvuvuvststststststststqrqrqrqropopopopmnmnmnmnklklklklklklklklijijijijghghghghefefefefcdcdcdcdabababab_`_`_`_`^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIGHGHGHGGEFEFEFEFEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>=>=>=>=<;<;<;<;<9:9:9:9:78787878565656563434343434343212~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwuvuvuvuvststststststststqrqrqrqropopopopmnmnmnmnklklklklklklklklijijijijghghghghefefefefcdcdcdcdabababab_`_`_`_`^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIGGGGHGHGEFEFEFEFEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:78787878565656563434343412121212~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwuvuvuvuvststststststststqrqrqrqropopopopmnmnmnmnklklklklklklklklijijijijghghghghefefefefcdcdcdcdabababab_`_`_`_`^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGEFEFEFEFEFEFEFEDCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:78787878565656563434343412121212~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwuvuvuvuvststststststststqrqrqrqropopopopmnmnmnmnklklklklkjijijijijijijijghghghghefefefefcdcdcdcdabababab_`_`_`_`^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGEFEFEFEFCDCDCDCDCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:78787878565656563434343412121212~}~}~}~}|{|{|{|{zyzyzyzyxwwwwwwxuvuvuvuvststststststststqrqrqrqropopopopmnmnmnmnklklklklijijijijijijijijghghghghefefefefcdcdcdcdabababab_`______^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGEFEFEFEFCDCDCDCDCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:78787878565656563434343412121212~}~}~}~}|{|{|{|{zyzyzyzywxwxwxwxuvuvuvuvststststsrqrqrqrqrqrqrqropopopopmnmnmnmnklklklklijijijijijijijijghghghghefefefefcdcdcdcdabababab`_`_`_`_^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGEFEFEFEFCDCDCDCDCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:78787878565656563434343412121212~}~}~}~}|{|{|{|{zyzyzyzywxwxwxwxuvuvuvuvststststqrqrqrqrqrqrqrqropopopopmnmnmnmnklklklklijijijijijijijijghghghghefefefefcdcdcdcdabababab`_`_`_`_^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGGGGGGHEFEFEFEFCDCDCDCDCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<;<;<;<;:9:9:9:9:78787878565656563434343412121212~}~}~}~}|{|{|{|{zyzyzyzywxwxwxwxuvuvuvuvststststqrqrqrqrqrqrqrqropopopopmnmnmnmnklklklklijijijijijijijijghghghghefefefefcdcdcdcdabababab`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIGHGHGHGHEFEFEFEFCDCDCDCDCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:9:9:9:9:78787878565656563434343412121212~}~}~}~}|{|{|{|{zyzyzyzywxwxwxwxuvuvuvuvststststqrqrqrqrqrqrqrqropopopopmnmnmnmnklklklklijijijijijijijijghghghghefefefefcdcdcdcdabababab`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIGHGHGHGHEFEFEFEFCDCDCDCDCDCDCDCBABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:9:9:9:9:78787878565656563434343412121212~}~}~}~}|{|{|{|{zyzyzyzywxwxwwwwuvuvuvuvststststqrqrqrqrqrqrqrqropopopopmnmnmnmnklklklklijijijijihghghghghghghghefefefefcdcdcdcdabababab`_`_`___^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIGHGHGHGHEFEFEFEFCDCDCDCDABABABABABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:9:9:9:9:78787878565656563434343412121212~}~}~}~}|{|{|{|{zyzyzyzywwxwxwxwuvuvuvuvststststqrqrqrqrqrqrqrqropopopopmnmnmnmnklklklklijijijijghghghghghghghghefefefefcdcdcdcdabababab___`_`_`^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIGHGHGHGHEFEFEFEFCDCDCDCDABABABABABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:9:9:9:9:78787878565656563434343412121212~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwuvuvuvuvststststqrqrqrqrqpopopopopopopopmnmnmnmnklklklklijijijijghghghghghghghghefefefefcdcdcdcdabababab_`_`_`_`^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIGHGHGGGGEFEFEFEFCDCDCDCDABABABABABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:9:9:9:9:78787878565656563434343412121212~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwuvuvuvuvststststqrqrqrqropopopopopopopopmnmnmnmnklklklklijijijijghghghghghghghghefefefefcdcdcdcdabababab_`_`_`_`^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIGGHGHGHGEFEFEFEFCDCDCDCDABABABABABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:9:9:9:9878787878565656563434343412121212~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwuvuvuvuvststststqrqrqrqropopopopopopopopmnmnmnmnklklklklijijijijghghghghghghghghefefefefcdcdcdcdabababab_`_`_`_`^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGEFEFEFEFCDCDCDCDABABABABABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787878787878565656563434343412121212~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwuvuvuvuvststststqrqrqrqropopopopopopopopmnmnmnmnklklklklijijijijghghghghghghghghefefefefcdcdcdcdabababab_`_`_`_`^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGEFEFEFEFCDCDCDCDABABABABABABABA@?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787878787878565656563434343412121212121212120/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!"!"!"!"!         - - - - - - - -121212120/0/////.-.-.-.-,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!"!"!"!"!         - - - - - - - -12121212/0/0/0/0.-.-.-.-,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!"!"!"!          - - - - - - - -12121212/0/0/0/0.-.-.-.-,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!             - - - - - - - -12121212/0/0/0/0.-.-.-.-,+,+,+,+*)*)*)*)*)*)*)('('('('('&%&%&%&%$#$#$#$#"!"!"!"!             - - - - - - 12121212/0/0/0/0.-.-.-.-,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%$#$#$#$#"!"!"!"!             - - - -12121212/0/0/0//.-.-.-.-,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%$#$#$#$#"!"!"!"!             - - - -12121212////0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%$#$#$#$#"!"!"!"!             - - - -121212120/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%$#$#$#$#"!"!"!"!            - - - -121212120/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -1210/0/00/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('('('('&%&%&%&%&%$#$#$#$#"!"!"!"!         - - - -/0//////0/////0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!         - - - -0/0/0/0/0/0/0/.-.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!          - - - -0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!             - - - -0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!             - - - -0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!             - - - -0/0/0///.-.-.-.-.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%&%&%&%$#$#$#$#$#"!"!"!"!             - - - -///0/0/0.-.-.-.-.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!             - - - -/0/0/0/0.-.-.-.-.-.-.-,+,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!           - - - -/0/0/0/0.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!         - - - -/0/0/0/0.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!         - - - -/0/0/0/0.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!         - - - -//////0/.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#$#$#$#"!"!"!"!"!         - - - -0/0/0/0/.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!"!"!"!"!         - - - -0/0/0/0/.-.-.-.-,+,+,+,+,+,+,+*)*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!"!"!"!"!         - - - - - -0/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!"!"!"!"!         - - - - - - - -~~}}aabbccdd$$##""!!nnooppqqXYYZZ[[\A@@??>>=())**++,qppoonnm `aabbccd9887766501122334ihhggffehiijjkklmnnooppqQQRRSSTTHHGGFFEE!!""##$$xxwwvvuu YYZZ[[\\@@??>>==))**++,,ppoonnmmaabbccdd$$##""!!ffgghhii$$##""!!IJJKKLLMPOONNMML~~}}|QRRSSTTUHGGFFEED!""##$$%xwwvvuut YZZ[[\\]||{{zzyyeeffgghh rrssttuu\]]^^__`=<<;;::9,--..//0mllkkjjideeffggh5443322145566778eddccbbalmmnnoopqrrssttuUUVVWWXXDDCCBBAA%%&&''((ttssrrqq - - ]]^^__``<<;;::99--..//00llkkjjiieeffgghh jjkkllmm MNNOOPPQLKKJJIIH !|{{zzyyxUVVWWXXYDCCBBAA@%&&''(()tssrrqqp - - ]^^__``axxwwvvuu iijjkkllvvww}}~~`aabbccd9887766501122334ihhggffehiijjkkl100//..-899::;;>==))**++,,ppoonnmmaabbccdd8877665511223344hhggffeeiijjkkllnnooppqqQRRSSTTUHGGFFEED!""##$$%xwwvvuut YZZ[[\\]@??>>==<)**++,,-poonnmmlabbccddettssrrqq - - mmnnoopp -deeffggh5443322145566778eddccbbalmmnnoop-,,++**)<==>>??@]\\[[ZZY tuuvvwwx - - ~ ]]^^__``<<;;::99--..//00llkkjjiieeffgghh4433221155667788ddccbbaammnnoopprrssttuuUVVWWXXYDCCBBAA@%&&''(()tssrrqqp - - ]^^__``a<;;::998-..//001lkkjjiiheffgghhi,++**))(ppoonnmm - - qqrrsstt ~~}}|{zy - hiijjkkl100//..-899::;;>==<)**++,,-poonnmmlabbccdde8776655412233445hggffeedijjkkllm(''&&%%$llkkjjii uuvvwwxx - - xwwvvuutlmmnnoop-,,++**)<==>>??@]\\[[ZZY tuuvvwwx%$$##""!DEEFFGGHUTTSSRRQ|}}~~ yxwwvvuueeffgghh4433221155667788ddccbbaammnnoopp,,++**))==>>??@@\\[[ZZYY uuvvwwxx - -  -]^^__``a<;;::998-..//001lkkjjiiheffgghhi4332211056677889dccbbaa` mnnooppq$##""!! hhggffeeyyzz{{|| - - tssrrqqp - - pqqrrsst)((''&&%@AABBCCDYXXWWVVUxyyzz{{|! HIIJJKKLQPPOONNM~~} - - ttssrrqqiijjkkll00//..--99::;;<<``__^^]] - - qqrrsstt((''&&%%AABBCCDDXXWWVVUUyyzz{{||~~}}|{zy - abbccdde8776655412233445hggffeedijjkkllm0//..--,9::;;<<=`__^^]]\ - - qrrssttu ddccbbaa}}~~poonnmml tuuvvwwx%$$##""!DEEFFGGHUTTSSRRQ|}}~~LMMNNOOPMLLKKJJI }wwvvuut ppoonnmmmmnnoopp,,++**))==>>??@@\\[[ZZYY uuvvwwxx$$##""!!EEFFGGHHTTSSRRQQ}}~~ xwwvvuuteffgghhi4332211056677889dccbbaa` mnnooppq,++**))(=>>??@@A\[[ZZYYX uvvwwxxy``__^^]]~~}}lkkjjiihxyyzz{{|! HIIJJKKLQPPOONNM~~}PQQRRSSTIHHGGFFE !!""##$tssrrqqpllkkjjii - - qqrrsstt((''&&%%AABBCCDDXXWWVVUUyyzz{{|| IIJJKKLLPPOONNMM~~}} - - tssrrqqpijjkkllm0//..--,9::;;<<=`__^^]]\ - - qrrssttu(''&&%%$ABBCCDDEXWWVVUUTyzz{{||}\\[[ZZYY wwvvuutthggffeed|}}~~LMMNNOOPMLLKKJJI }||{{zzyTUUVVWWXEDDCCBBA$%%&&''(poonnmmlhhggffee uuvvwwxx$$##""!!EEFFGGHHTTSSRRQQ}}~~MMNNOOPPLLKKJJII wwvvuuttpoonnmml mnnooppq,++**))(=>>??@@A\[[ZZYYX uvvwwxxy$##""!! EFFGGHHITSSRRQQP}~~ XXWWVVUU!!""##$$ssrrqqpp !!""cba`__^^~~}PQQRRSSTIHHGGFFE !!""##$yxxwwvvu XYYZZ[[\A@@??>>=())**++,lkkjjiih !!"dcba`__^yyzz{{|| IIJJKKLLPPOONNMM~~}}QQRRSSTTHHGGFFEE!!""##$$ssrrqqpplkkjjiih - - qrrssttu(''&&%%$ABBCCDDEXWWVVUUTyzz{{||} IJJKKLLMPOONNMML~~}}w - - TTSSRRQQ%%&&''((oonnmmll##$$%%&&]]\\[[ZZ }||{{zzyTUUVVWWXEDDCCBBA$%%&&''(uttssrrq - - \]]^^__`=<<;;::9,--..//0hggffee_"##$$%%&^]]\\[[Z}}~~MMNNOOPPLLKKJJII ||{{zzyyUUVVWWXXDDCCBBAA%%&&''((oonnmmllhggffeed uvvwwxxy$##""!! EFFGGHHITSSRRQQP}~~MNNOOPPQLKKJJIIH !wvvuuttsPPOONNMM))**++,,kkjjiihh''(())**YYXXWWVV !!""##$yxxwwvvu XYYZZ[[\A@@??>>=())**++,qppoonnm `aabbccd9887766501122334_^^]]\\[&''(())*ZYYXXWWV~~}}QQRRSSTTHHGGFFEE!!""##$$xxwwvvuu YYZZ[[\\@@??>>==))**++,,kkjjiihh !!""cba`__^^yzz{{||} IJJKKLLMPOONNMML~~}}|QRRSSTTUHGGFFEED!""##$$%srrqqppo -LLKKJJII--..//00ggffee__++,,--..UUTTSSRR$%%&&''(uttssrrq - - \]]^^__`=<<;;::9,--..//0mllkkjjideeffggh5443322145566778[ZZYYXXW*++,,--.VUUTTSSR ||{{zzyyUUVVWWXXDDCCBBAA%%&&''((ttssrrqq - - ]]^^__``<<;;::99--..//00ggffee__##$$%%&&]]\\[[ZZ}~~MNNOOPPQLKKJJIIH !|{{zzyyxUVVWWXXYDCCBBAA@%&&''(()onnmmllk - HHGGFFEE11223344^^]]\\[[//556677QQPPOONN())**++,qppoonnm `aabbccd9887766501122334ihhggffehiijjkkl100//..-899::;;>==))**++,,ppoonnmmaabbccdd8877665511223344^^]]\\[[''(())**YYXXWWVV~~}}|QRRSSTTUHGGFFEED!""##$$%xwwvvuut YZZ[[\\]@??>>==<)**++,,-kjjiihhgDDCCBBAA55667788ZZYYXXWW8899::;;MMLKJIHG,--..//0mllkkjjideeffggh5443322145566778eddccbbalmmnnoop-,,++**)<==>>??@SRRQQPPO78899::;NMMLKJIH%%&&''((ttssrrqq - - ]]^^__``<<;;::99--..//00llkkjjiieeffgghh4433221155667788ZZYYXXWW++,,--..UUTTSSRR !|{{zzyyxUVVWWXXYDCCBBAA@%&&''(()tssrrqqp - - ]^^__``a<;;::998-..//001gffee__^@@??>>==99::;;<>??GFFEEDDC01122334ihhggffehiijjkkl100//..-899::;;>?GGFFEEDD))**++,,ppoonnmmaabbccdd8877665511223344hhggffeeiijjkkll00//..--99::;;<>==<)**++,,-poonnmmlabbccdde8776655412233445^]]\\[[Z<<;;::99==>>??@@RRQQPPOO@@AABBCCCBBAA@@?45566778eddccbbalmmnnoop-,,++**)<==>>??@]\\[[ZZY tuuvvwwx%$$##""!DEEFFGGHFEEDDCCB?@@AABBCCCBBAA@@--..//00llkkjjiieeffgghh4433221155667788ddccbbaammnnoopp,,++**))==>>??@@RRQQPPOO8899::;;MMLKJIHG%&&''(()tssrrqqp - - ]^^__``a<;;::998-..//001lkkjjiiheffgghhi4332211056677889ZYYXXWWV !!""#88776655AABBCCDDNNMMGGFFDDEEFFGG?>>==<<;899::;;CDDEEFFG??>>==<<11223344hhggffeeiijjkkll00//..--99::;;<<``__^^]] - - qqrrsstt((''&&%%AABBCCDDNNMMGGFF<<==>>??GFFEEDDC)**++,,-poonnmmlabbccdde8776655412233445hggffeedijjkkllm0//..--,9::;;<<=VUUTTSSR#$$%%&&'44332211EEFFGGHHEEDDCCBBMMNNOOPP;::99887<==>>??@]\\[[ZZY tuuvvwwx%$$##""!DEEFFGGHUTTSSRRQ|}}~~LMMNNOOP>==<<;;:GMMNNOOP;;::998855667788ddccbbaammnnoopp,,++**))==>>??@@\\[[ZZYY uuvvwwxx$$##""!!EEFFGGHHEEDDCCBB@@AABBCCCBBAA@@?-..//001lkkjjiiheffgghhi4332211056677889dccbbaa` mnnooppq,++**))(=>>??@@ARQQPPOON'(())**+00//..--IIJJKKLLAA@@??>>QQRRSSTT76655432@AABBCCDYXXWWVVUxyyzz{{|! HIIJJKKLQPPOONNM~~}PQQRRSST:9988776PQQRRSST7766554399::;;<<``__^^]] - - qqrrsstt((''&&%%AABBCCDDXXWWVVUUyyzz{{|| IIJJKKLLAA@@??>>DDEEFFGG?>>==<<;12233445hggffeedijjkkllm0//..--,9::;;<<=`__^^]]\ - - qrrssttu(''&&%%$ABBCCDDENMMGGFFE+,,--../,,++**))MMNNOOPP==<<;;::UUVVWWXX10//..--DEEFFGGHUTTSSRRQ|}}~~LMMNNOOPMLLKKJJI }||{{zzyTUUVVWWX655//..-TUUVVWWX210//..-==>>??@@\\[[ZZYY uuvvwwxx$$##""!!EEFFGGHHTTSSRRQQ}}~~MMNNOOPP==<<;;::MMNNOOPP;::9988756677889dccbbaa` mnnooppq,++**))(=>>??@@A\[[ZZYYX uvvwwxxy$##""!! EFFGGHHIEDDCCBBA/5566778((''&&%%QQRRSSTT99887766YYZZ[[\\,,++**))HIIJJKKLQPPOONNM~~}PQQRRSSTIHHGGFFE !!""##$yxxwwvvu XYYZZ[[\-,,++**)XYYZZ[[\-,,++**)AABBCCDDXXWWVVUUyyzz{{|| IIJJKKLLPPOONNMM~~}}QQRRSSTT99887766QQRRSSTT766554329::;;<<=`__^^]]\ - - qrrssttu(''&&%%$ABBCCDDEXWWVVUUTyzz{{||} IJJKKLLMA@@??>>=899::;;<$$##""!!UUVVWWXX55//..--]]^^__ee((''&&%%LMMNNOOPMLLKKJJI }||{{zzyTUUVVWWXEDDCCBBA$%%&&''(uttssrrq - - \]]^^__`)((''&&%\]]^^__e)((''&&%EEFFGGHHTTSSRRQQ}}~~MMNNOOPPLLKKJJII ||{{zzyyUUVVWWXX55//..--UUVVWWXX10//..--=>>??@@A\[[ZZYYX uvvwwxxy$##""!! EFFGGHHITSSRRQQP}~~MNNOOPPQ=<<;;::9<==>>??@ YYZZ[[\\,,++**))ffgghhii$$##""!!PQQRRSSTIHHGGFFE !!""##$yxxwwvvu XYYZZ[[\A@@??>>=())**++,qppoonnm `aabbccd%$$##""!effgghhi%$$##""!IIJJKKLLPPOONNMM~~}}QQRRSSTTHHGGFFEE!!""##$$xxwwvvuu YYZZ[[\\,,++**))YYZZ[[\\,,++**))ABBCCDDEXWWVVUUTyzz{{||} IJJKKLLMPOONNMML~~}}|QRRSSTTU98877665@AABBCCD]]^^__``((''&&%%jjkkllmm TUUVVWWXEDDCCBBA$%%&&''(uttssrrq - - \]]^^__`=<<;;::9,--..//0mllkkjjideeffggh! ijjkkllm! MMNNOOPPLLKKJJII ||{{zzyyUUVVWWXXDDCCBBAA%%&&''((ttssrrqq - - ]]^^__``((''&&%%]]^^__ee((''&&%%EFFGGHHITSSRRQQP}~~MNNOOPPQLKKJJIIH !|{{zzyyxUVVWWXXY5//..--,DEEFFGGMMNNOOPPQ::99887766778899ccbbaa`` nnooppqq++**))((>>??@@AA[[ZZYYXXvvwwxxyy##""!! FFGGHHIIDDCCBBAAAABBCCDDBAA@@??>.//00112kjjiihhgfgghhiij3221100/6778899:cbbaa``_ -nooppqqr mllkkjji QRRSSTTU66554321::;;<<==__^^]]\\ - - rrssttuu''&&%%$$BBCCDDEEWWVVUUTTzz{{||}}JJKKLLMM@@??>>==EEFFGGMM>==<<;;:23344556gffeeddcjkkllmmn/..--,,+:;;<<==>_^^]]\\[ - rssttuuv - - -ihhggffeUVVWWXXY0//..--,>>??@@AA[[ZZYYXXvvwwxxyy##""!! FFGGHHIISSRRQQPP~~NNOOPPQQ<<;;::99NNOOPPQQ:99887766778899:cbbaa``_ -nooppqqr+**))(('>??@@AAB[ZZYYXXWvwwxxyyz - eddccbbaYZZ[[\\],++**))(BBCCDDEEWWVVUUTTzz{{||}}JJKKLLMMOONNMMLL~~}}||RRSSTTUU88776655RRSSTTUU65543210:;;<<==>_^^]]\\[ - rssttuuv'&&%%$$#BCCDDEEFWVVUUTTSz{{||}}~a``__^^]]^^__eef(''&&%%$FFGGHHIISSRRQQPP~~NNOOPPQQKKJJIIHH !!{{zzyyxxVVWWXXYY//..--,,VVWWXXYY//..--,,>??@@AAB[ZZYYXXWvwwxxyyz#""!! FGGHHIIJSRRQQPPO~xxw]\\[[ZZY fgghhiij$##""!! JJKKLLMMOONNMMLL~~}}||RRSSTTUUGGFFEEDD""##$$%%wwvvuutt ZZ[[\\]]++**))((ZZ[[\\]]++**))((BCCDDEEFWVVUUTTSz{{||}}~JKKLLMMNONNMMLLKwvvuuttsYXXWWVVU !!""##$jkkllmmn NNOOPPQQKKJJIIHH !!{{zzyyxxVVWWXXYYCCBBAA@@&&''(())ssrrqqpp - - ^^__``aa''&&%%$$^^__eeff''&&%%$$FGGHHIIJSRRQQPPO~NOOPPQQRKJJIIHHG !!"srrqqppo !!""#UTTSSRRQ$%%&&''(nooppqqrRRSSTTUUGGFFEEDD""##$$%%wwvvuutt ZZ[[\\]]??>>==<<**++,,--oonnmmllbbccddee##""!! gghhiijj##""!! JKKLLMMNONNMMLLK~~}}||{RSSTTUUVGFFEEDDC"##$$%%&onnmmllk#$$%%&&'QPPOONNM())**++,rssttuuvVVWWXXYYCCBBAA@@&&''(())ssrrqqpp - - ^^__``aa;;::9988..//0011kkjjiihhffgghhiikkllmmnnNOOPPQQRKJJIIHHG !!"{zzyyxxwVWWXXYYZCBBAA@@?&''(())*kjjiihhg'(())**+MLLKKJJI,--..//0vww}}~~ZZ[[\\]]??>>==<<**++,,--oonnmmllbbccddee7766554422334455ggffeeddjjkkllmmooppqqrrRSSTTUUVGFFEEDDC"##$$%%&wvvuutts Z[[\\]]^?>>==<<;*++,,--.gffee__^+,,--../IHHGGFFE01122334~ - -^^__``aa;;::9988..//0011kkjjiihhffgghhii3322110066778899ccbbaa`` nnooppqqssttuuvvVWWXXYYZCBBAA@@?&''(())*srrqqppo - - ^__``aab;::99887.//00112^]]\\[[Z/5566778EDDCCBBA45566778~}}|{zyx bbccddee7766554422334455ggffeeddjjkkllmm//..--,,::;;<<==__^^]]\\ - - rrssttuu ww}}~~ Z[[\\]]^?>>==<<;*++,,--.onnmmllkbccddeef7665544323344556ZYYXXWWV899::;;>=899::;;>??@@AA[[ZZYYXXvvwwxxyy - - ~~ - - ^__``aab;::99887.//00112kjjiihhgfgghhiij3221100/6778899:VUUTTSSR<==>>??@=<<;;::9<==>>??@ssrrqqppjjkkllmm//..--,,::;;<<==__^^]]\\ - - rrssttuu''&&%%$$BBCCDDEEWWVVUUTTzz{{||}}}}|{zyxw bccddeef7665544323344556gffeeddcjkkllmmn/..--,,+:;;<<==>RQQPPOON@AABBCCD98877665@AABBCCDoonnmmll nnooppqq++**))((>>??@@AA[[ZZYYXXvvwwxxyy##""!! FFGGHHIISSRRQQPP~~ - -wvvuuttsfgghhiij3221100/6778899:cbbaa``_ -nooppqqr+**))(('>??@@AABNMMGGFFEDEEFFGGM54433221DEEFFGGHkkjjiihh - - rrssttuu''&&%%$$BBCCDDEEWWVVUUTTzz{{||}}JJKKLLMMOONNMMLL~~}}ww srrqqppojkkllmmn/..--,,+:;;<<==>_^^]]\\[ - rssttuuv'&&%%$$#BCCDDEEFEDDCCBBAMNNOOPPQ100//..-HIIJJKKLggffeedcvvwwxxyy##""!! FFGGHHIISSRRQQPP~~NNOOPPQQKKJJIIHH !!vvuuttssonnmmllk -nooppqqr+**))(('>??@@AAB[ZZYYXXWvwwxxyyz#""!! FGGHHIIJA@@??>>=QRRSSTTU-,,++**)LMMNNOOPba`__^^]zz{{||}}JJKKLLMMOONNMMLL~~}}||RRSSTTUUGGFFEEDD""##$$%%rrqqppookjjiihhg - rssttuuv'&&%%$$#BCCDDEEFWVVUUTTSz{{||}}~JKKLLMMN=<<;;::9UVVWWXXY)((''&&%PQQRRSST]\\[[ZZY~~NNOOPPQQKKJJIIHH !!{{zzyyxxVVWWXXYYCCBBAA@@&&''(())nnmmllkkgffeedcbvwwxxyyz#""!! FGGHHIIJSRRQQPPO~NOOPPQQR98877665YZZ[[\\]%$$##""!TUUVVWWXYXXWWVVU~~}}||RRSSTTUUGGFFEEDD""##$$%%wwvvuutt ZZ[[\\]]??>>==<<**++,,--jjiihhgg !!""##a`__^^]]z{{||}}~JKKLLMMNONNMMLLK~~}}||{RSSTTUUV5//..--,]^^__eef! XYYZZ[[\UTTSSRRQ !!{{zzyyxxVVWWXXYYCCBBAA@@&&''(())ssrrqqpp - - ^^__``aa;;::9988..//0011ffee__^^$$%%&&''\\[[ZZYY~NOOPPQQRKJJIIHHG !!"{zzyyxxwVWWXXYYZ,++**))(fgghhiij\]]^^__`QPPOONNM""##$$%%wwvvuutt ZZ[[\\]]??>>==<<**++,,--oonnmmllbbccddee7766554422334455]]\\[[ZZ(())**++XXWWVVUU~~}}||{RSSTTUUVGFFEEDDC"##$$%%&wvvuutts Z[[\\]]^(''&&%%$jkkllmmn`aabbccdMLKJIHGG&&''(())ssrrqqpp - - ^^__``aa;;::9988..//0011kkjjiihhffgghhii3322110066778899YYXXWWVV,,--..//TTSSRRQQ !!"{zzyyxxwVWWXXYYZCBBAA@@?&''(())*srrqqppo - - ^__``aab$##""!! nooppqqrdeeffgghFFEEDDCC**++,,--oonnmmllbbccddee7766554422334455ggffeeddjjkkllmm//..--,,::;;<<==UUTTSSRR55667788PPOONNMM"##$$%%&wvvuutts Z[[\\]]^?>>==<<;*++,,--.onnmmllkbccddeef rssttuuu hiijjkklBBAA@@??..//0011kkjjiihhffgghhii3322110066778899ccbbaa`` nnooppqq++**))((>>??@@AAQQPPOONN99::;;<>==<<;;22334455ggffeeddjjkkllmm//..--,,::;;<<==__^^]]\\ - - rrssttuu''&&%%$$BBCCDDEEMMGGFFEE==>>??@@FEEDDCCB*++,,--.onnmmllkbccddeef7665544323344556gffeeddcjkkllmmnqppoonnm - - pqqrrssttuuZHAbr˂ptlJnXv`J`ےJbdQfH~˙ے`JXJtArdfpvfHrXQJ`ہdrtnvpZHAbrbtl|ZdQXv`QJ`ےAJbdQ`vXnr˂p|ZdQbnXv`fpvbHAZJltH~fے`JXQZHAےtlJnXv`bHAZpbdQZ|vpfHZHAbۉlJtf~HnXv`ˑ˂rXbdQZ|vXnr˂p`JXQArd|ے`JXQZHAbtArdf~HbHAZpZ|df`vXQr˂p|ZdQnXv`fpv㒐bHAAJltfH~˙ے`JXJtAdbtlf~HbHAZpZ|dvpfZHAbtlJf~HnXv`p˂rbdQZ|`vXnr˂p`JXQrtArdf~H˂rXQdrtA~f``JXQArd|fpvf~HQJ`ےdrtAvpfHZHAbr˂pZdQbtr˂pے`JXQ|ZdQbXv`f˂brtAJlnvpZHAbbtlf~HnrXQJ`Zp˂bdQZ|f`vXQr˂p|ZdQJtArdfpv˂rtAJlH~fے`JXQtArdfpvfHfXQJ`ےdrtAvpfZHAbbtl|ZdQbXv`fJ`ےJbdQvXnr˂pZdQbtnXv`fpvbHAZpJlt~f``JXQZHAے`lJtZHAbr˂ptlJ~HfHAZdtbdQfH~˙ے`JXJtArdfpvےHArXQJ`ہdrtnvpZHAbbtl|ZdQnXv`pbHAZdtbdQ`vXnr˂p|ZdQbnXv`pvnbHAZJltH~fے`JXQJtAdtlJ~HfbHAZpZ|dvpfHZHAbۉlJtf~HnXv`ˑ˂rXbdQZ|vXnr˂pJXQrArd|f~Hے`JXQ|ZdQbtArdpvnrtAJZ|dnf`vXQr˂p|ZdQnXv`Zp˂󒐙bHAAJltfH~˙ے`JXJtArdbtlvnrtAJZ|AJvpfZHAbtlJf~HrXQJ`p˂rbdQZ|`vXnr˂p|ZdQbtArdpvn˂brtAJl~f``JXQArd|fpvfHfpQJ`ےdrtAvpfHZHAbbtlZdQbtfpvr˂ptlJ|ZdQbXv`pbdQZ|vfnvpZHAbbtlf~HrXQJ`Zp˂bdQZ|f`vXQr˂p|ZdQJtArdrXQJ`pbdQZ|ltbH~fے`JXQtArdfpvےHAZXQJ`ےdrtAvpfZHAbtlJ|ZdQbXv`pHAZdtbdQvXnr˂pZdQbtnXv`˝vnbHAZpJlt~f``JXQJtAd|lJtnXv`ZHAbtArdtlJ˂rXQdrtAf`vXfH~˙ے`JXJtArdfpvbHArXQJ`ہdrtnvpZHAbbtlf~H˂rXdrtAnvp`vXnr˂p|ZdQbnXv`p˂rbHAZJltH~fے`JXQtArdtlJvnrrtAJZ|AJlvpfHZHAbۉlJtf~HrXQJ`ۑ˂rXbdQZ|vXnr˂pZdQbtArd|f~HXے`JXQ|ZdQbtArdJ`ےJltnvpf`vXQr˂p|ZdQnXv`Zp˂󒐙bHAAJltfH~˙ے`JXJtArdXv`QJ`ےJltfHfvpfZHAbtlJf~HXQJ`ےp˂rbdQZ|`vXnr˂p|ZdQbtArdXQJ`pbdQZ|tb~f``JXQArd|fpv㒐HAZpQJ`ےdrtAvpfHZHAbۉlJtZdQbtv`fr˂ptlJf~HbHAZpbdQZ|fH~nvpZHAbbtlf~HrXQJ`ZdrtbdQZ|f`vXQr˂p|ZdQf~HbHAZpbdQZ|`vXnH~fے`JXQtArdfpvbHAZXQJ`ےdrtAvpfZHAbtlJf~H˂rXQdrtAnvpvXnr˂pZdQbtnXv`ˑ˂rXbHAZpJlt~f``JXQArd|lJt~HfpZHAbtArdXv`f˂bdrtAJf`vXfH~˙ے`JXJtArdfpvbHAAJltdrtnvpZHAbbtlfpv˂drtAvpf`vXnr˂p|ZdQbnXv`p˂rbHAZJltH~fے`JXQtArdXv`fJ`ےJltfHf`vpfHZHAbۉlJtf~HQJ`ے˂rXbdQZ|vXnr˂pZdQbtArd˝vnXے`JXQ|ZdQb~HfHAZp˂bdQZnvpfZHAbQr˂p|ZdQnXv`Zp˂bdQZ|AJltfH~˙ے`JXJtArdnXv`bHAZpJbdQH~fvpfZHAbtlJf~HXQJ`ےdrtAbdQZ|`vXnr˂p|ZdQb~HfbHAZpbdQZ|vXn~f``JXQArd|fpvbHAZpQJ`ےdrtAvpfHZHAbۉlJtf~HXv`pr˂ptlJpvnrXQJ|drfH~˙ے`JXZHAbbtlf~HrXQJ`ہdrtbdQZ|f`vXQr˂p|ZdQf~HXrXQZ|d`vXnH~fے`JXQtArdfpvbHAZJltdrtAvpfZHAbtlJpvn˂bdrtAJvpfHvXnr˂pZdQbtnXv`ˑ˂rXbHAZJlt~f``JXQArd|v`fvnrXZHAbtArdXv`f`ےbtAJlf`vXQr˂pے`JXJtArdfpvbHAAJltdtAnvpZHAbbtlv`fJ`ےrtAJl瀅vpfZHAbr˂p|ZdQbnXv`p˂rbdQZ|JltH~fے`JXQtArdXv`fHAZp˂bdQZ~f`vpfHZHAbۉlJtf~HQJ`ےdrtAbdQZ|vXnr˂pZdQbt~HfpQJ`pے`JXQ|ZdQb~HXHAZp˂tbdQZnvpZHAbQr˂p|ZdQnXv`Zp˂bdQZ|JltfH~˙ے`JXJtArd~HfpbHAZp˒tbdQH~fے`JXQZHAbtlJf~HXQJ`ےdrtAbdQZ|`vXnr˂p|ZdQb~HXrXQJ|drvXn~f`JXQArd|fpvbHAZpJltdrtAvpfHZHAbۉlJtvnXrXQr˂ptlJv`fbHA|drfH~˙ے`JXZHAbtlf~HrXQJ`ہdrtbnvpf`vXQr˂p|ZdQvnXbHZ|d`vXnr˂pے`JXQtArdfpvbHAZJltdtAJvpfZHAbtlJv`f`ےbtAJl璅vpfHZHAbr˂pZdQbtnXv`ˑ˂rXbdQZ|Jlt~f``JXQArd|v`fJ`ےZHAbtArd~HfpZp˂tAJbdf`vXQr˂p`JXQJtArdfpvbHAAJltfHnvpZHAbbtlv`fAZp˂rtAJbvpfZHAbr˂p|ZdQbnXv`p˂rbdQZ|ltbH~fے`JXQtArd~HfpHAZp˂tbdQZ~f``JXQZHAbۉlJtf~HQJ`ےdrtAbdQZ|vXnr˂pZdQbt~HXbHAZpے`JXQ|ZdQbvnXrXQJ`QZ|dnvpZHAbrbtl|ZdQnXv`Zp˂bdQZ|f`vXfH~˙ے`JXJtArd~HXrXQJ`dQZ|H~fے`JXQZHAےtlJf~HXQJ`ےdrtAnvp`vXnr˂p|ZdQbvnXbHA|drvXnr˂p`JXQArd|fpvbHAZpJltdtAJlvpfHZHAbۉlJtv`f󂀉bHr˂ptlJv`fےbHArtAJlfH~˙ے`JXJtAdbtlf~HrXQJ`ہdrtnvpf`vXQr˂p|ZdQv`fےbHdrtAJ`vXnr˂p`JXQrtArdfpvbHAZJltfHfvpfZHAbtlJv`fZp˂tAJbdvpfHZHAbr˂pZdQbtnXv`ˑ˂rXbdQZ|tb~f``JXQArd|~HfpAZp˂ZHAbtArd~HXvZp˂tbdf`vXQr˂p|ZdQJtArdfpvbHAAJltfH~nvpZHAbbtl~HfpAZp˂ltbvpfZHAbbtl|ZdQbnXv`p˂rbdQZ|`vXnH~fے`JXQtArd~HXvrXQJ`QZ|d~f``JXQZHAے`lJtf~HQJ`ےdrtAnvpvXnr˂pZdQbtvnXrXQJ`ے`JXQ|ZdQb`f~bHAZQZ|dnvpZHAbbtl|ZdQnXv`Zp˂bdQZ|f`vXfH~˙ے`JXJtArdvnXbHAdQZ|H~fے`JXQJtAdtlJf~HXQJ`ےdrtAvpf`vXnr˂p|ZdQb`f~ےbHArtAJlvXnr˂pJXQrArd|fpvbHAZpJltfHf`vpfHZHAbۉlJtv`fےbHr˂ptlJHfpvp˂rrtAJfH~˙ے`JXJtArdbtlf~HrXQJ`ہdrtnvpfZHAbQr˂p|ZdQv`fZp˂drtAJ`vXnr˂p|ZdQbtArdfpvbHAZJltH~fvpfZHAbtlJHfpvZp˂tbdvpfHZHAbbtlZdQbtnXv`ˑ˂rXbdQZ|vXn~f``JXQArd|~HXv`AZp˂ZHAbtArdnXvXQJ`ےbdQZ|f`vXQr˂p|ZdQJtArdfpvbHAAJltfH~˙ے`JXZHAbbtl~HXv`rXQJ`ےbdQZ|vpfZHAbtlJ|ZdQbnXv`p˂rbdQZ|`vXnH~fے`JXQtArdnXvbHAZQZ|d~f``JXQJtAd|lJtf~HQJ`ےdrtAvpfHvXnr˂pZdQbtf~HbHAے`JXQ|ZdQb`f~bHAZdrtAnvpZHAbbtlf~HnXv`Zp˂bdQZ|f`vXQr˂pے`JXJtArdf~HbHAdrtH~fے`JXQtArdtlJf~HXQJ`ےdrtAvpfZHAbr˂p|ZdQb`f~p˂rrtAJvXnr˂pZdQbtArd|fpvbHAZpJlt~f`vpfHZHAbۉlJtfpvZp˂r˂ptlJHXv`p˂JltfH~˙ے`JXJtArdfpvf~HrXQJ`ہdrtnvpZHAbQr˂p|ZdQfpvZp˂AJlt`vXnr˂p|ZdQbtArdfpvbHAZJltH~fے`JXQZHAbtlJHXv`XQJ`ےbdQZ|vpfHZHAbۉlJtZdQbtnXv`ˑ˂rXbdQZ|vXn~f`JXQArd|nXv`rXQJ`ZHAbtArdf~HbHAZpbdQZ|f`vXQr˂p|ZdQnXv`fpvbHAAJltfH~˙ے`JXZHAbtlnXv`bHAZpbdQZ|vpfZHAbtlJf~HnXv`p˂rbdQZ|`vXnr˂pے`JXQtArdf~HbHAZdrtA~f``JXQArd|lJtf~HQJ`ےdrtAvpfHZHAbr˂pZdQbtf~HbHAے`JXQ|ZdQbfpv˂rXQdrtAnvpZHAbbtlf~HnXv`Zp˂bdQZ|f`vXQr˂p`JXQJtArdf~H˂rXdrtH~fے`JXQtArdfpvf~HXQJ`ےdrtAvpfZHAbr˂p|ZdQbfpvp˂JltvXnr˂pZdQbtArdfpvbHAZpJlt~f``JXQZHAbۉlJtXv`Zp˂bHAZpZ|d~f``JXQrtAd|lJtA~HfJ`ےdrtAJvpfHvXn˂pZZdQbtf~HbHAZrtAJlvXnۉ˂pZHJXQrbtrd|vnXbHAZpˑtbdf`vpfHJXQrXnvˍQtJl˂rXrtAJvXn˂pZZdQbtrd|pvnbHAZpltb~f`vpfHHAbےlJtAfpvp˂tbdQvpfHAbے`lJtZdQbtv`frXQQZ|dvXn~f`˂p`ZpfH~tbAdZQJ`ےbdQZ|vpfHHAbےlJtAZdQbtXv`f˂rXQdQZ|vXn~fZ`JXQrrd|nXv`bHAZpZ|d~f`JXQrAd|lJtA~HfpJ`ےrtAJlvpfHvXnQXb㉀f۝`v|drbHAZpdrtA~f``JXQrrd|lJtA~HfJ`ےdrtAJvpfHHAbے˂pZZdQbtf~H˂rXQrtAJbvXnۉ˂pZHZdQbtrd|vnXbHAZpˑtbd~f`vpfHۑpJAHrXnvˍQtJl˂JltvXn˂pZZdQbtrdfpvnbHAZpltb~f``JXQrHAbےlJtAXv`fJ`ےdQZ|vpfHAbے`lJtAZdQbtv`frXQQZ|dvXn~fr󙐂ˁ`ZpfH~tbAdZbHAZpbdQZ|vpfHHAbےlJtA~HfXv`f˂rXQdQZ|vXn˂pZ`JXQrrd|~HfbHAZpdrtAJ~f`JXQrrd|lJtA~HfpJ`ےrtAJlvpfH˂pZHQXAHrf۝`v|drrXQdrtAJ~f``JXQrrd|pvn~HfJ`ےdrtAJvpfHHAbے˂pZZdQbtpvn˂bltbvXnۉ˂pZHZdQbtrdfvnXbHAZpˑtbd~f`Abے`ˁ`ZQXnvˍQtJlJ`ے㑒bdQZvXn˂pZZdQbtXv`fpvnbHAZpltb~f``JXQrHAے`lJtAXv`fHAZp˂dQZ|vpfHAbے`lJtA~Hfpv`frXQQZ|dvXnہJXQrXb㉀ۑpfH~tbAdZbHAZp|drvpfHHAbےlJtA~HfXv`f˂rXQdQZ|vXn˂pZJXQrbrd|~HXrXQJdrtAJ~f`JXQrrd|vnX~HfpJ`ےrtAJlvpfH˂pZHpJAHrf۝`v|drbHtAJl~f``JXQrrd|pvnHfpJ`ےdrtAJvpfHHAbےtlJZdQbtv`f`ےbbdQZ|vXnۉ˂pZHZdQbtv`fvnXbHAZpˑtbd~f`Abːˁ`ZQXnvˍQtJlAZdtbdQZvXn˂pZZdQbtXv`fvnrbHAZpltb~f``JXQrtAd|lJtA~HfpHAZp˂drtvpfHAbے`lJtA~Hfpv`frXQQZ|dvXnۂpZHAXAHr󙐂pfH~tbAdZrtAJb|AJlvpfHHAbےlJtA~HfXQJ`ے˂rXQdQZ|vXn˂pZZdQbtrd|vnXbHAAJlt~f`JXQrrd|vnXHfpJ`ےrtAJlvpfHbے`ˁ`ZQXbf۝`v|drdQZ|tbn~f``JXQrrd|pvnHAZpJ`ےdrtAJvpfHHAbےlJtAZdQbtv`pvZdrbdQZ|vXnۉ˂pZHZdQbtv`fvnrXbHAZpˑtbd~f`JXQr㉀ۑpJXnvˍQtJldrtAJvpfvXn˂pZZdQbtXv`f˂rXQbHAZpltb~f``JXQrrd|lJtAnrXQtAJbdAJlvpfHAbے`lJtA~HfpQJ`ےrXQQZ|dvXnۂpZHAAHr󙐂pfH~tbAdZltbHf`vpfHHAbےlJtA~HfJ`ے˂rXQdQZ|vXn˂pZZdQbtrdfJ`p˂QZ|dtbn~f`JXQrrd|vnXHAZpJ`ےrtAJlvpfHb˂pˁ`ZQXAf۝`v|drdQZ|vXn~f``JXQrrd|pvnbHAZpJ`ےdrtAJvpfHHAbےlJtA~HXrXQJrtAJlvpfHvXnۉ˂pZHZdQbtv`frXQbHAZpˑtbd~f`ZHAbHr󙐂ˁXnvˍQtJldrtAJvpfHvXn˂pZZdQbtXv`f˂rXQbHAZltb~f``JXQrrd|v`f`ےbtbdf`vpfHAbے`lJtA~HfpJ`ےむrXQQZ|dvXnۙے`JX`ZQXbpfH~tbAdZbdQZ|~f`vpfHHAbےlJtA~HfJ`ےdrtAJdQZ|vXn˂pZZdQbt~HfpHAZp˂QZ|dvXn~f`JXQrrd|vnXbHAZpJ`ےrtAJlvpfHQr˂pۑpJAf۝`v|drdrtvXn~fZ`JXQrrd|pvnbHAZpltbdrtAJvpfHHAbےlJtAvnXbHArtAJvpfHvXnۉ˂pZHZdQbtv`frXQbHAZdtbd~f`ZHAbHr󙐂ˁXnvˍQtJlAJltvpfHHAbے˂pZZdQbtXv`f˂rXQdQZ|ltb~f``JXQrrd|v`fZp˂bdQZ|~f`vpfHAbے`lJtA~HfpJ`ےrtAJlQZ|dvXnۙ˂p`ZQXAHrpfH~tbAdZbdQZ|~f``JXQrHAbےlJtA~HfJ`ےdrtAJdQZ|vXn˂pZZdQbt~HXvrXQJ`drtAvXn~fZHJXQrrd|vnXbHAZpˑtbdrtAJlvpfHZHAb󙐂ˁ`Zf۝`v|drdrtvXn˂pZ`JXQrrd|pvnbHAZpltbdtAJlvpfHHAbےlJtA`f~ےbHAJltvpfHAbے`˂pZHZdQbtv`frXQQZ|dtbd~f``JXQQXb㉀XnvˍQtJlAJbdQvpfHHAbے˂pZZdQbtXv`f˂rXQdQZ|tbn~f``JXQrrd|HfpvZp˂bdQZ|~f`JXQrAbے`lJtA~HfpJ`ےrtAJlQZ|dvXnr˂pۑpJAHrpfH~tbAdZZ|d~f``JXQrHAے`lJtA~HfJ`ےdrtAJvpfvXn˂pZZdQbtnXvbHAZdrtAvXnۉ˂pZHJXQrrd|vnXbHAZpˑtbdtAJlvpfHZHAb󙐂ˁ`f۝`v|drrtAJlvXn˂pZJXQrbrd|pvnbHAZpltbHf`vpfHHAbےlJtA`f~p˂rJbdQvpfHAbے`˂pZHZdQbtv`frXQQZ|dtbn~f`˂pZHpfH~XnvˍQtJltbdQvpfHHAbےtlJZdQbtXv`f˂rXQdQZ|vXn~f``JXQrrd|HXv`XQJ`ےZ|d~f`JXQrAے`lJtA~HfpJ`ےrtAJlvpfHvXnAbے`f۝`vp|drtbAdZ|yz{|}~~}|{zIIIJJJJJJJJJJJJJJJJJJJJJJJ \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv28_1.dat b/mpdf/qrcode/data/qrv28_1.dat deleted file mode 100644 index ac9d23b..0000000 --- a/mpdf/qrcode/data/qrv28_1.dat +++ /dev/null @@ -1,257 +0,0 @@ -~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwwwwwwxwxuvuvuvuvuvuvuvuvststststststststststststqrqrqrqrqrqrqrqropopopopopopopopopopopopmnmnmnmnmnmnmnmnklklklklklklklklklklklklijijijijijijijijghghghghghghghghgfefefefefefefefefefefefcdcdcdcdcdcdcdcdabababababababab_`_`_`_`______`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:7878787878787878787878785656565656565656343434343434343412121212121212120/0/0////0/0/0/0.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!            ~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwwxwxwxwxuvuvuvuvuvuvuvuvststststststststststststqrqrqrqrqrqrqrqropopopopopopopopopopopopmnmnmnmnmnmnmnmnklklklklklklklklkjijijijijijijijijijijijghghghghghghghghefefefefefefefefefefefefcdcdcdcdcdcdcdcdabababababababab_`_`_`_``_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:787878787878787878787878565656565656565634343434343434341212121212121212///0/0/0/0/0/0/0.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!            ~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwwwwwwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststststststqrqrqrqrqrqrqrqropopopopopopopoponmnmnmnmnmnmnmnmnmnmnmnklklklklklklklklijijijijijijijijijijijijghghghghghghghghefefefefefefefefefefefefcdcdcdcdcdcdcdcdabababababababab_`______`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGGGGGGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:787878787878787878787878565656565656565634343434343434341212121212121212/0/0/0/0/0/0/0/0.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!            ~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyxwxwwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststsrqrqrqrqrqrqrqrqrqrqrqropopopopopopopopmnmnmnmnmnmnmnmnmnmnmnmnklklklklklklklklijijijijijijijijijijijijghghghghghghghghefefefefefefefefefefefefcdcdcdcdcdcdcdcdababababababa`_``_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:787878787878787878787876565656565656565634343434343434341212121212121212/0/0/0/0/0/0/0//.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!            ~}~}~}~}~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyxwxwwwwwwxwxwxwxwxwxwxwuuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqrqrqrqrqropopopopopopopopmnmnmnmnmnmnmnmnmnmnmnmnklklklklklklklklijijijijijijijijijijijijghghghghghghghghefefefefefefefefefefefefcdcdcdcdcdcdcdcbabababab_`_`____`_`_`_`_`_`_____^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGGGGGGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9:787878787878787856565656565656565656565634343434343434341212121212121212/0/0/0/0////0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!            ~}~}~}~}~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{zyzyzyzyzywxwxwxwxwxwxwxwxuuuuuvuvuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqrqrqrqrqropopopopopopopopmnmnmnmnmnmnmnmnmnmnmnmnklklklklklklklklijijijijijijijijijijijijghghghghghghghghefefefefefefefefefefefefcdcdcdcdabababababababab__`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIHGHGGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:9:9:9:9:787878787878787856565656565656565656565634343434343434341212121212121212/0/0/0/00/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!           ~}~}~}~}~}~}~}~}~}~}~}~}|{|{|{|{zyzyzyzyzyzyzyzywxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqrqrqrqrqropopopopopopopopmnmnmnmnmnmnmnmnmnmnmnmnklklklklklklklklijijijijijijijijijijijijghghghghghghghghefefefefefefefefedcdcdcdcdcdcdcdabababababababab`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKJIJIJIJIJIHGHGGGGGGHGHGHGHGHGGGGGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:9:9:9:9:787878787878787856565656565656565656565634343434343434341212121212121212//////0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!        ~}~}~}~}~}~}~}~}~}~}~}~}|{|{|{|{zyzyzyzyzyzyzyzywxwxwxwxwxwxwwwwuvuvuvuvuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqrqrqrqrqropopopopopopopopmnmnmnmnmnmnmnmnmnmnmnmnklklklklklklklklijijijijijijijijihghghghghghghghghghghghefefefefefefefefcdcdcdcdcdcdcdcdabababababababab`_`_`_`_`_`_`___^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNMNMNMNMLKLKLKLKJIJIJIJIJIJIJIJIGHGHGHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:9:9:9:9:78787878787878785656565656565656565656563434343434343434121212121210/0/00/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('('('('&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!        ~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzywxwxwxwxwwxwxwxwuvuvuvuvuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqrqrqrqrqropopopopopopopopmnmnmnmnmnmnmnmnmlklklklklklklklklklklklijijijijijijijijghghghghghghghghghghghghefefefefefefefefcdcdcdcdcdcdcdcdabababababababab`_`_`_`____`_`_`^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:9:9:9:9:7878787878787878565656565656565656565656343434343434321212121212/0//////0/0/0/0/0/////0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!        ~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzywxwxwxwwxwxwxwxwuvuvuvuvuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqrqpopopopopopopopopopopopmnmnmnmnmnmnmnmnklklklklklklklklklklklklijijijijijijijijghghghghghghghghghghghghefefefefefefefefcdcdcdcdcdcdcdcdabababababababab`_`_`_`__`_`_`_`^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIGHGHGHGHGHGHGGGGEFEFEFEFEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:9:9:9:9:78787878787878785656565656565656565656543434343412121212121212120/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!        ~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzywwwwxwxwxwxwxwxwuvuvuvuvuvuvuvuvutstststststststststststqrqrqrqrqrqrqrqropopopopopopopopopopopopmnmnmnmnmnmnmnmnklklklklklklklklklklklklijijijijijijijijghghghghghghghghghghghghefefefefefefefefcdcdcdcdcdcdcdcdabababababababab_____`_`_`_`_`_`^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIGHGHGHGHGGHGHGHGEFEFEFEFEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:9:9:9:9878787878787878785656565656565656343434343434343412121212121212120/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!        ~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwuvuvuvuvuvuvuvuvststststststststststststqrqrqrqrqrqrqrqropopopopopopopopopopopopmnmnmnmnmnmnmnmnklklklklklklklklklklklklijijijijijijijijghghghghghghghghghghghghefefefefefefefefcdcdcdcdcdcdcdcdabababababababab_`_`_`_`_`_`_`_`^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIGHGHGHGGHGHGHGHGEFEFEFEFEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:7878787878787878787878785656565656565656343434343434343412121212121212120/0/0/0/0/0/////.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!        ~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwuvuvuvuvuvuvuvuvststststststststststststqrqrqrqrqrqrqrqropopopopopopopopopopopopmnmnmnmnmnmnmnmnklklklklklklklklklklklklijijijijijijijijghghghghghghghghghghghghefefefefefefefefcdcdcdcdcdcdcdcdabababababababab_`_`_`_`_`_`_`_`^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIGGGGHGHGHGHGHGHGEFEFEFEFEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABABABABABA@?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:7878787878787878787878785656565656565656343434343434343412121212121212120/0/0/0//0/0/0/0.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!                      - - - - - - - - - - - -             - - - - - - - - - - - -             - - - - - - - - - - - -             - - - - - - - - - - - -             - - - - - - - - - -            - - - - - - - -         - - - - - - - -         - - - - - - - -         - - - - - - - -         - - - - - - - -         - - - - - - - -         - - - - - - - - - -          - - - - - - - - - - - -~~}}LLKKJJII--..//00aabbccddggffee__$$##""!!++,,--..nnooppqqUUTTSSRR$%%&&''(XYYZZ[[\uttssrrqA@@??>>= - - ())**++,\]]^^__`qppoonnm=<<;;::9 ,--..//0`aabbccdmllkkjji9887766501122334deeffgghihhggffe5443322145566778hiijjkkl[ZZYYXXW*++,,--.mnnooppqVUUTTSSR QQRRSSTT||{{zzyyHHGGFFEE!!""##$$UUVVWWXXxxwwvvuuDDCCBBAA %%&&''((YYZZ[[\\ttssrrqq@@??>>== - - ))**++,,]]^^__``ppoonnmm<<;;::99--..//00aabbccddggffee__$$##""!!##$$%%&&ffgghhii]]\\[[ZZ$$##""!!IJJKKLLM}~~POONNMMLMNNOOPPQ~~}}|LKKJJIIH !QRRSSTTU|{{zzyyxHGGFFEED!""##$$%UVVWWXXYxwwvvuutDCCBBAA@ %&&''(()YZZ[[\\]onnmmllk,++**))(YZZ[[\\]ggffeedc,++**))(BBCCDDEEvvwwxxyyWWVVUUTT##""!! FFGGHHIIzz{{||}}SSRRQQPPJJKKLLMM~~OONNMMLLNNOOPPQQ~~}}||KKJJIIHH !!RRSSTTUU||{{zzyyHHGGFFEE11223344eeffgghh^^]]\\[[ //556677rrssttuuQQPPOONN())**++,\]]^^__`qppoonnm=<<;;::9 ,--..//0`aabbccdmllkkjji9887766501122334deeffgghihhggffe5443322145566778hiijjkkleddccbba100//..-899::;;>== - - ))**++,,]]^^__``ppoonnmm<<;;::99--..//00aabbccddllkkjjii8877665511223344eeffgghh^^]]\\[[ ''(())**jjkkllmmYYXXWWVV MNNOOPPQ~~}}|LKKJJIIH !QRRSSTTU|{{zzyyxHGGFFEED!""##$$%UVVWWXXYxwwvvuutDCCBBAA@ %&&''(()YZZ[[\\]tssrrqqp@??>>==< - - )**++,,-]^^__``akjjiihhg(''&&%%$ !!""#]^^__eefba`__^^](''&&%%$FFGGHHIIzz{{||}}SSRRQQPPJJKKLLMM~~OONNMMLLNNOOPPQQ~~}}||KKJJIIHH !!RRSSTTUU{{zzyyxxGGFFEEDD""##$$%%VVWWXXYYxxwwvvuuDDCCBBAA 55667788iijjkkllZZYYXXWW8899::;;vvww}}~~MMLKJIHG,--..//0`aabbccdmllkkjji9887766501122334deeffgghihhggffe5443322145566778hiijjkkleddccbba100//..-899::;;>??@pqqrrsstSRRQQPPO 78899::;uvvww}}~NMMLKJIH%%&&''((YYZZ[[\\ttssrrqq@@??>>== - - ))**++,,]]^^__``ppoonnmm<<;;::99--..//00aabbccddllkkjjii8877665511223344eeffgghhhhggffee4433221155667788iijjkkllZZYYXXWW++,,--..nnooppqqUUTTSSRR !QRRSSTTU|{{zzyyxHGGFFEED!""##$$%UVVWWXXYxwwvvuutDCCBBAA@ %&&''(()YZZ[[\\]tssrrqqp@??>>==< - - )**++,,-]^^__``apoonnmml<;;::998-..//001abbccddegffee__^$##""!! #$$%%&&'fgghhiij]\\[[ZZY$##""!! JJKKLLMM~~OONNMMLLNNOOPPQQ~~}}||KKJJIIHH !!RRSSTTUU{{zzyyxxGGFFEEDD""##$$%%VVWWXXYYwwvvuuttCCBBAA@@ &&''(())ZZ[[\\]]ttssrrqq@@??>>== - - 99::;;<>??GFFEEDDC -01122334deeffgghihhggffe5443322145566778hiijjkkleddccbba100//..-899::;;>??@pqqrrsst]\\[[ZZY)((''&&% @AABBCCDtuuvvwwxONNMMGGF - - ;<<==>>?~GGFFEEDD ))**++,,]]^^__``ppoonnmm<<;;::99--..//00aabbccddllkkjjii8877665511223344eeffgghhhhggffee4433221155667788iijjkkllddccbbaa00//..--99::;;<>==< - - )**++,,-]^^__``apoonnmml<;;::998-..//001abbccddelkkjjiih8776655412233445effgghhi^]]\\[[Z '(())**+jkkllmmnYXXWWVVU NNOOPPQQ~~}}||KKJJIIHH !!RRSSTTUU{{zzyyxxGGFFEEDD""##$$%%VVWWXXYYwwvvuuttCCBBAA@@ &&''(())ZZ[[\\]]ssrrqqpp??>>==<< - - **++,,--^^__``aavvuuttssppoonnmm<<;;::99 - - ==>>??@@qqrrssttRRQQPPOO @@AABBCC~~}}|{zyCBBAA@@? - 45566778hiijjkkleddccbba100//..-899::;;>??@pqqrrsst]\\[[ZZY)((''&&% @AABBCCDtuuvvwwxYXXWWVVU%$$##""!DEEFFGGHxyyzz{{|FEEDDCCB?@@AABBC~~}}|{zCCBBAA@@ - - --..//00aabbccddllkkjjii8877665511223344eeffgghhhhggffee4433221155667788iijjkkllddccbbaa00//..--99::;;<>??@@qqrrssttRRQQPPOO 8899::;;vvww}}~~MMLKJIHG%&&''(()YZZ[[\\]tssrrqqp@??>>==< - - )**++,,-]^^__``apoonnmml<;;::998-..//001abbccddelkkjjiih8776655412233445effgghhihggffeed4332211056677889ijjkkllmZYYXXWWV+,,--../nooppqqrUTTSSRRQ !!RRSSTTUU{{zzyyxxGGFFEEDD""##$$%%VVWWXXYYwwvvuuttCCBBAA@@ &&''(())ZZ[[\\]]ssrrqqpp??>>==<< - - **++,,--^^__``aaoonnmmll;;::9988..//0011bbccddeerrqqppoollkkjjii88776655 AABBCCDDuuvvwwxxNNMMGGFF - - DDEEFFGGxwwvvuut?>>==<<;899::;;>??@pqqrrsst]\\[[ZZY)((''&&% @AABBCCDtuuvvwwxYXXWWVVU%$$##""!DEEFFGGHxyyzz{{|UTTSSRRQ! HIIJJKKL|}}~~BAA@@??> CDDEEFFGyxwwvvuu??>>==<<11223344eeffgghhhhggffee4433221155667788iijjkkllddccbbaa00//..--99::;;<>??@@qqrrsstt\\[[ZZYY((''&&%% AABBCCDDuuvvwwxxNNMMGGFF - - <<==>>??GFFEEDDC -)**++,,-]^^__``apoonnmml<;;::998-..//001abbccddelkkjjiih8776655412233445effgghhihggffeed4332211056677889ijjkkllmdccbbaa`0//..--, 9::;;<<=mnnooppqVUUTTSSR/5566778rssttuuvQPPOONNM""##$$%%VVWWXXYYwwvvuuttCCBBAA@@ &&''(())ZZ[[\\]]ssrrqqpp??>>==<< - - **++,,--^^__``aaoonnmmll;;::9988..//0011bbccddeekkjjiihh7766554422334455ffgghhiinnmmllkkhhggffee44332211EEFFGGHHyyzz{{||EEDDCCBB - - MMNNOOPPtssrrqqp;::99887 - - <==>>??@pqqrrsst]\\[[ZZY)((''&&% @AABBCCDtuuvvwwxYXXWWVVU%$$##""!DEEFFGGHxyyzz{{|UTTSSRRQ! HIIJJKKL|}}~~QPPOONNMLMMNNOOP~~}>==<<;;: - - GMMNNOOPttssrrqq;;::998855667788iijjkkllddccbbaa00//..--99::;;<>??@@qqrrsstt\\[[ZZYY((''&&%% AABBCCDDuuvvwwxxXXWWVVUU$$##""!!EEFFGGHHyyzz{{||EEDDCCBB@@AABBCC~~}}|{zyCBBAA@@? - -..//001abbccddelkkjjiih8776655412233445effgghhihggffeed4332211056677889ijjkkllmdccbbaa`0//..--, 9::;;<<=mnnooppq`__^^]]\,++**))( - - =>>??@@AqrrssttuRQQPPOON 899::;;>==<< - - **++,,--^^__``aaoonnmmll;;::9988..//0011bbccddeekkjjiihh7766554422334455ffgghhiiggffeedd3322110066778899jjkkllmmjjiihhggddccbbaa00//..--IIJJKKLL}}~~AA@@??>>QQRRSSTTpoonnmml76655432 @AABBCCDtuuvvwwxYXXWWVVU%$$##""!DEEFFGGHxyyzz{{|UTTSSRRQ! HIIJJKKL|}}~~QPPOONNMLMMNNOOP~~}MLLKKJJI PQQRRSST}wwvvuut:9988776 PQQRRSSTppoonnmm7766554399::;;<>??@@qqrrsstt\\[[ZZYY((''&&%% AABBCCDDuuvvwwxxXXWWVVUU$$##""!!EEFFGGHHyyzz{{||TTSSRRQQ IIJJKKLL}}~~AA@@??>> DDEEFFGGxwwvvuut?>>==<<;12233445effgghhihggffeed4332211056677889ijjkkllmdccbbaa`0//..--, 9::;;<<=mnnooppq`__^^]]\,++**))( - - =>>??@@Aqrrssttu\[[ZZYYX(''&&%%$ ABBCCDDEuvvwwxxyNMMGGFFE - - <==>>??@~FFEEDDCC - -**++,,--^^__``aaoonnmmll;;::9988..//0011bbccddeekkjjiihh7766554422334455ffgghhiiggffeedd3322110066778899jjkkllmmccbbaa``//..--,, ::;;<<==nnooppqqffee__^^``__^^]],,++**))MMNNOOPP~~}}==<<;;::UUVVWWXXlkkjjiih10//..--DEEFFGGHxyyzz{{|UTTSSRRQ! HIIJJKKL|}}~~QPPOONNMLMMNNOOP~~}MLLKKJJI PQQRRSST}||{{zzyIHHGGFFE !!""##$TUUVVWWXtssrrqqp655//..-TUUVVWWXllkkjjii210//..- - - ==>>??@@qqrrsstt\\[[ZZYY((''&&%% AABBCCDDuuvvwwxxXXWWVVUU$$##""!!EEFFGGHHyyzz{{||TTSSRRQQ IIJJKKLL}}~~PPOONNMMMMNNOOPP~~}}==<<;;:: - - MMNNOOPPtssrrqqp;::9988756677889ijjkkllmdccbbaa`0//..--, 9::;;<<=mnnooppq`__^^]]\,++**))( - - =>>??@@Aqrrssttu\[[ZZYYX(''&&%%$ ABBCCDDEuvvwwxxyXWWVVUUT$##""!! EFFGGHHIyzz{{||}EDDCCBBA@AABBCCD~}}|{zyxBBAA@@?? ..//0011bbccddeekkjjiihh7766554422334455ffgghhiiggffeedd3322110066778899jjkkllmmccbbaa``//..--,, ::;;<<==nnooppqq__^^]]\\++**))(( - - >>??@@AArrssttuu]]\\[[ZZ\\[[ZZYY((''&&%% QQRRSSTTwwvvuutt99887766YYZZ[[\\hggffeed,,++**))HIIJJKKL|}}~~QPPOONNMLMMNNOOP~~}MLLKKJJI PQQRRSST}||{{zzyIHHGGFFE !!""##$TUUVVWWXyxxwwvvuEDDCCBBA $%%&&''(XYYZZ[[\poonnmml-,,++**)XYYZZ[[\hhggffee-,,++**) AABBCCDDuuvvwwxxXXWWVVUU$$##""!!EEFFGGHHyyzz{{||TTSSRRQQ IIJJKKLL}}~~PPOONNMMMMNNOOPP~~}}LLKKJJII QQRRSSTTwwvvuutt99887766QQRRSSTTpoonnmml76655432 9::;;<<=mnnooppq`__^^]]\,++**))( - - =>>??@@Aqrrssttu\[[ZZYYX(''&&%%$ ABBCCDDEuvvwwxxyXWWVVUUT$##""!! EFFGGHHIyzz{{||}TSSRRQQP IJJKKLLM}~~A@@??>>= -DEEFFGGMwwvvuutt>>==<<;;22334455ffgghhiiggffeedd3322110066778899jjkkllmmccbbaa``//..--,, ::;;<<==nnooppqq__^^]]\\++**))(( - - >>??@@AArrssttuu[[ZZYYXX''&&%%$$BBCCDDEEvvwwxxyyYYXXWWVVXXWWVVUU$$##""!!!!""##$$UUVVWWXXssrrqqpp55//..-- !!""]]^^__eecba`__^^((''&&%%LMMNNOOP~~}MLLKKJJI PQQRRSST}||{{zzyIHHGGFFE !!""##$TUUVVWWXyxxwwvvuEDDCCBBA $%%&&''(XYYZZ[[\uttssrrqA@@??>>= - - ())**++,\]]^^__`lkkjjiih)((''&&% !!"\]]^^__edcba`__^)((''&&%EEFFGGHHyyzz{{||TTSSRRQQ IIJJKKLL}}~~PPOONNMMMMNNOOPP~~}}LLKKJJII QQRRSSTT||{{zzyyHHGGFFEE!!""##$$UUVVWWXXssrrqqpp55//..--UUVVWWXXlkkjjiih10//..-- - - =>>??@@Aqrrssttu\[[ZZYYX(''&&%%$ ABBCCDDEuvvwwxxyXWWVVUUT$##""!! EFFGGHHIyzz{{||}TSSRRQQP IJJKKLLM}~~POONNMMLMNNOOPPQ~~}}w=<<;;::9 - MNNOOPPQssrrqqpp::99887766778899jjkkllmmccbbaa``//..--,, ::;;<<==nnooppqq__^^]]\\++**))(( - - >>??@@AArrssttuu[[ZZYYXX''&&%%$$BBCCDDEEvvwwxxyyWWVVUUTT##""!! FFGGHHIIzz{{||}}UUTTSSRRTTSSRRQQ %%&&''((YYZZ[[\\oonnmmll,,++**))##$$%%&&ffgghhii]]\\[[ZZ$$##""!! PQQRRSST}||{{zzyIHHGGFFE !!""##$TUUVVWWXyxxwwvvuEDDCCBBA $%%&&''(XYYZZ[[\uttssrrqA@@??>>= - - ())**++,\]]^^__`qppoonnm=<<;;::9 ,--..//0`aabbccdhggffee_%$$##""!"##$$%%&effgghhi^]]\\[[Z%$$##""!IIJJKKLL}}~~PPOONNMMMMNNOOPP~~}}LLKKJJII QQRRSSTT||{{zzyyHHGGFFEE!!""##$$UUVVWWXXxxwwvvuuDDCCBBAA %%&&''((YYZZ[[\\oonnmmll,,++**))YYZZ[[\\hggffeed,,++**)) ABBCCDDEuvvwwxxyXWWVVUUT$##""!! EFFGGHHIyzz{{||}TSSRRQQP IJJKKLLM}~~POONNMMLMNNOOPPQ~~}}|LKKJJIIH !QRRSSTTUwvvuutts98877665QRRSSTTUoonnmmll66554321 ::;;<<==nnooppqq__^^]]\\++**))(( - - >>??@@AArrssttuu[[ZZYYXX''&&%%$$BBCCDDEEvvwwxxyyWWVVUUTT##""!! FFGGHHIIzz{{||}}SSRRQQPPJJKKLLMM~~QQPPOONNPPOONNMM))**++,,]]^^__``kkjjiihh((''&&%%''(())**jjkkllmmYYXXWWVV  !!""##$TUUVVWWXyxxwwvvuEDDCCBBA $%%&&''(XYYZZ[[\uttssrrqA@@??>>= - - ())**++,\]]^^__`qppoonnm=<<;;::9 ,--..//0`aabbccdmllkkjji9887766501122334deeffggh_^^]]\\[! &''(())*ijjkkllmZYYXXWWV! MMNNOOPP~~}}LLKKJJII QQRRSSTT||{{zzyyHHGGFFEE!!""##$$UUVVWWXXxxwwvvuuDDCCBBAA %%&&''((YYZZ[[\\ttssrrqq@@??>>== - - ))**++,,]]^^__``kkjjiihh((''&&%% !!""]]^^__eecba`__^^((''&&%%EFFGGHHIyzz{{||}TSSRRQQP IJJKKLLM}~~POONNMMLMNNOOPPQ~~}}|LKKJJIIH !QRRSSTTU|{{zzyyxHGGFFEED!""##$$%UVVWWXXYsrrqqppo5//..--,UVVWWXXYkkjjiihh0//..--, - - >>??@@AArrssttuu[[ZZYYXX''&&%%$$BBCCDDEEvvwwxxyyWWVVUUTT##""!! FFGGHHIIzz{{||}}SSRRQQPPJJKKLLMM~~OONNMMLLNNOOPPQQ~~}}wwMMGGFFEEDDCCBBAAAABBCCDD}}|{zyxwBAA@@??> .//00112bccddeefkjjiihhg7665544323344556fgghhiijgffeeddc3221100/6778899:jkkllmmncbbaa``_/..--,,+ -:;;<<==>nooppqqrRQQPPOON @AABBCCDmllkkjji98877665 @AABBCCD@@??>>== - -EEFFGGMMwvvuutts>==<<;;:23344556fgghhiijgffeeddc3221100/6778899:jkkllmmncbbaa``_/..--,,+ -:;;<<==>nooppqqr_^^]]\\[+**))((' - >??@@AABrssttuuvNMMGGFFE - - -DEEFFGGMihhggffe54433221DEEFFGGH<<;;::99 NNOOPPQQsrrqqppo:99887766778899:jkkllmmncbbaa``_/..--,,+ -:;;<<==>nooppqqr_^^]]\\[+**))((' - >??@@AABrssttuuv[ZZYYXXW'&&%%$$#BCCDDEEFvwwxxyyzEDDCCBBA - MNNOOPPQeddccbba100//..-HIIJJKKL88776655RRSSTTUUonnmmllk65543210 -:;;<<==>nooppqqr_^^]]\\[+**))((' - >??@@AABrssttuuv[ZZYYXXW'&&%%$$#BCCDDEEFvwwxxyyzWVVUUTTS#""!! FGGHHIIJz{{||}}~A@@??>>=QRRSSTTUa``__^^]-,,++**)LMMNNOOP//..--,,VVWWXXYYkjjiihhg//..--,, - >??@@AABrssttuuv[ZZYYXXW'&&%%$$#BCCDDEEFvwwxxyyzWVVUUTTS#""!! FGGHHIIJz{{||}}~SRRQQPPOJKKLLMMN~xxw=<<;;::9UVVWWXXY]\\[[ZZY)((''&&% PQQRRSST++**))((ZZ[[\\]]gffeedcb++**))((BCCDDEEFvwwxxyyzWVVUUTTS#""!! FGGHHIIJz{{||}}~SRRQQPPOJKKLLMMN~ONNMMLLKNOOPPQQRwvvuutts98877665YZZ[[\\]YXXWWVVU%$$##""! !!""##$TUUVVWWX''&&%%$$ !!""##^^__eeffa`__^^]]''&&%%$$FGGHHIIJz{{||}}~SRRQQPPOJKKLLMMN~ONNMMLLKNOOPPQQR~~}}||{KJJIIHHG !!"RSSTTUUVsrrqqppo5//..--, !!""#]^^__eefUTTSSRRQ! $%%&&''(XYYZZ[[\##""!! $$%%&&''gghhiijj\\[[ZZYY##""!! JKKLLMMN~ONNMMLLKNOOPPQQR~~}}||{KJJIIHHG !!"RSSTTUUV{zzyyxxwGFFEEDDC"##$$%%&VWWXXYYZonnmmllk,++**))(#$$%%&&'fgghhiijQPPOONNM())**++,\]]^^__`(())**++kkllmmnnXXWWVVUUNOOPPQQR~~}}||{KJJIIHHG !!"RSSTTUUV{zzyyxxwGFFEEDDC"##$$%%&VWWXXYYZwvvuuttsCBBAA@@? &''(())*Z[[\\]]^kjjiihhg(''&&%%$'(())**+jkkllmmnMLLKKJJI,--..//0`aabbccd,,--..//ooppqqrrTTSSRRQQ !!"RSSTTUUV{zzyyxxwGFFEEDDC"##$$%%&VWWXXYYZwvvuuttsCBBAA@@? &''(())*Z[[\\]]^srrqqppo?>>==<<; - - *++,,--.^__``aabgffee__^$##""!! +,,--../nooppqqrIHHGGFFE01122334deeffggh55667788ssttuuvvPPOONNMM"##$$%%&VWWXXYYZwvvuuttsCBBAA@@? &''(())*Z[[\\]]^srrqqppo?>>==<<; - - *++,,--.^__``aabonnmmllk;::99887.//00112bccddeef^]]\\[[Z /5566778rssttuuuEDDCCBBA 45566778hiijjkkl 99::;;<>==<<; - - *++,,--.^__``aabonnmmllk;::99887.//00112bccddeefkjjiihhg7665544323344556fgghhiijZYYXXWWV899::;;>= - - 899::;;>??@@~~FEEDDCCB - - *++,,--.^__``aabonnmmllk;::99887.//00112bccddeefkjjiihhg7665544323344556fgghhiijgffeeddc3221100/6778899:jkkllmmnVUUTTSSR<==>>??@qppoonnm=<<;;::9 - - <==>>??@pqqrrssttuuZHAbے`JXQr˂p|ZdQbtlJ~HXnXv`HAZp˂J`ےtbdQZJbdQnvpfH~ˑZHAbے`JXQr˂pJtArd|ZdQfpvnXv`fHZp˂rXQJ`ۉbdQZ|drtJltnvpfH~ˑZHAbے`JXrbtlJtArd|ZdQ~HfpXv`bHAZpQJ`ےtbdQAJbdQH~f`vXnے`JXQr˂pZHAb|ZdQbtlJnXv`f~HfpvXQJ`ےbHAZdrtAJltbdQZ|H~f`vXnے`JXQr˂pZHAے|ZdQbtlJ~HXnXv`rXQJbHAZp|drbdQZ|vXnvpfH~fZHAbے`JXQlJtArd|f~HfpvnXv`˙bHAZp˂rXJltbdQZ|drtAvXnvpfHr˂pZHAbے`JXQlJtArd|vnXf~HbHbHAZpdrtAJdrtAvpfH~f`vXn`JXQr˂pZrd|ZdQbtlJtAXv`f~Hf˂rXQJ`ےbHAZdrtAJltbvpfH~f`HAbے`JXQr˂pZrd|ZdQbtے`JXQr˂pZHAbtlJtArdv`ff~HbHAbHAZp|drZ|dfH~f`vXے`JXQr˂pZHAۂ|ZdQbtlnXv`f~HfpvrXQJ`ےbHAdrtAJltbnvpfH~f`vXے`JXQr˂pJtAd|ZdQbtlvnXf~HbHbHAZpZ|dZ|d`vXnvpfr˂pZHAbے`JXQtlJtArdf~HfpvnXv`bHAZp˂rJltbdQZ|dtAJ`vXnvpfr˂pZHAb`JXQrtlJtArdv`ff~H`ےb˂rXQtAJldrtAvpfH~f`ZHAbے`JXQr˂pArd|ZdQbtfpvnXv`f~H˂rXQJ`ےbdQZ|drtAJltvpfH~f`ZHAbے`JXQr˂pArd|ZdQbtv`ffpvAZp˂˂㒉bdQZ|Jlt~f`vXnvpfH˂pZHAbےZdQbtlJtArdf~HfpvnJ`ےbHAZpdrtAJltbdQZ|~f`vXn`JXQr˂pZHAbےZdQbtlJtAr˂pZHAbے`JXQtArd|ZdQb~HfpXv`fZp˂˂btAJbdrtAJlf`vXnvpQr˂pZHAb`JXQbtlJtArdf~HfpvnrXQJ`bHAZp˂AJltbdQZ|fHf`vXnvpQr˂pZHAb|ZdQbtlJtArdv`ffpvAZp˂˂rtAJbrtAJlvpfH~fZHAbے`JXQr˂ptArd|ZdQbfpvnXv`fHfp˂rXQJ`ےbdQZ|drtAltbvpfH~fZHAbے`JXQbtltArd|ZdQb~HfpXv`fHAZp˂J`ےtbdQZJbdQ~f`vXn`JXQr˂pZHAbہZdQbtlJtnXv`f~HfpvQJ`ےbHAZpdrtAJltbdQZ|~f`vXn`JXQr˂pZHAے`ZdQbtlJt~HXnXv`ˉrXQJ`bHAZpˁdrtbdQZ|vXnvpfH~fZHAbے`JXQrlJtArd|~HfpvnXv`fbHAZp˂rXQltbdQZ|drtAJvXnvpfH˂pZHAbے`JXQrlJtArd|ZHAbے`JXQr˂p|ZdQbtlJvnX~HfrXQJ`HAZdQZ|dtbdQnvpfH~ˑZHAbے`JXrbtlJtArd|ZdQfpvnXv`ےHAZp˂rXQJ`ۉbdQZ|drtf`vXnvpfH~ˑZHAbے`JXbtlJtArd|ZdQ~HXnXv`prXQJ`bHAZddQZ|tbdQH~f`vXnے`JXQr˂pZHAے|ZdQbtlJnXv`f~HpvnXQJ`ےbHAZdrtAJltnvpH~f`vXnے`JXQr˂pJtAd|ZdQbtlJvnX~HfbHAbHAZp|drZ|dvXnvpfHr˂pZHAbے`JXQlJtArd|f~HfpvnXv`˙bHAZp˂rXJltbdQZ|dtAJlvXnvpfHr˂pZHAbہJXQrlJtArd|v`ff~HXےbHrXQAJltdrtAJvpfH~f`HAbے`JXQr˂pZrd|ZdQbtpvnXv`f~Hf˂rXQJ`ےdQZ|drtAJltbvpfH~f`HAbے`JXQr˂pZrd|ZdQbtv`fے`JXQr˂p|ZdQbtlJtArdv`fpvnےbHArtAJrtAJlZ|dnfH~f`vXے`JXQr˂pJtAd|ZdQbtlnXv`f~HZp˂rXQJ`ےbHAdrtAJltnvpfH~f`vXے`JXQr˂pJtArd|ZdQbtlv`fvnےbHrtAJdrtAJZ|AJ`vXnvpfr˂pZHAb`JXQrtlJtArdf~HfpvrXQJ`bHAZp˂rJltbdQZ|fHf`vXnvpfr˂pZHAb|ZdQbtlJtArdv`fpvnZp˂˂btAJbdrtAJlvpfH~f`ZHAbے`JXQr˂pArd|ZdQbtfpvnXv`fHfp˂rXQJ`ےbdQZ|drtAtbvpfH~f`ZHAbے`JXQbtlArd|ZdQbt~Hfpەv`fAZp˂J`ےbdQZ|bdQZ~f`vXn`JXQr˂pZHAbےZdQbtlJtAXv`f~HfpvnJ`ےbHAZpdrtAJltbdQZ|~f`vXn`JXQr˂pZHAے`ZdQbtlJtA~Hfpr˂pZHAbtlJtArd|ZdQb~HXvXv`pZp˂bdQZ|tbdvff`vXnvpQr˂pZHAb|ZdQbtlJtArdf~HfpvrXQJ`ےbHAZp˂AJltbdQZ|fH~f`vXnvpQr˂pZHAb|ZdQbtlJtArd~HfprXQJ`pAZp˂bdQZ|ltbltbvpfH~fZHAbے`JXQbtltArd|ZdQbfpvnXv`ےHAZp˂rXQJ`ےbdQZ|drtA`vXnvpfH~fZHAbے`JXQtlJtArd|ZdQb~HXvXv`prXQJ`HAZdQZ|dtbdQ~f`vXn`JXQr˂pZHAے`ZdQbtlJtnXv`f~HvnQJ`ےbHAZpdrtAJltnvp~f`vXn`JXQr˂pJtAd|ZdQbtlJtvnX~HfpbHAbHAZpˁdrt|drvXnvpfH˂pZHAbے`JXQrlJtArd|~HfpvnXv`fbHAZp˂rXQltbdQZ|dtAJlvXnvpfH˂pZHAbےJXQrblJtArd|vnXZHAbے`JXQtArd|ZdQbtlJ`f~˂rXQbHAZdrtAQZ|df`vXnvpfH~ˑZHAbے`JXbtlJtArd|ZdQfpvnXv`bHAZp˂rXQJ`ۉbdQZ|drtf`vXnvpfH~ˑZHAbے`JXbtlJtArdf~HvnX˂rXbHAdrtAdQZ|nvpH~f`vXnے`JXQr˂pJtAd|ZdQbtlJnXv`f~Hp˂rXQJ`ےbHAZdrtAJltvpfH~f`vXnے`JXQr˂ptArd|ZdQbtlJ`f~vnrےbHArtAJrtAJlZ|AJlvXnvpfHr˂pZHAbہJXQrlJtArd|f~HfpvrXQJ`ۙbHAZp˂rXJltbdQZ|fHf`vXnvpfHr˂pZHAbہZdQbtlJtArd|v`fvnXZp˂󂀉bHAJbdQtAJlvpfH~f`HAbے`JXQr˂pZrd|ZdQbtpvnXv`fHfp˂rXQJ`ےdQZ|drtAJtbnvpfH~f`HAbے`JXQrtlJrd|ZdQbtv`fے`JXQr˂p|ZdQbtlJtArdHfpvJ`ےp˂rJltrtAJnvpfH~f`vXے`JXQr˂pJtArd|ZdQbtlnXv`f~HZp˂rXQJ`ےbHAdrtAJltnvpfH~fZHAbے`JXQr˂pJtArd|ZdQXv`v`fQJ`ےZp˂JltdrtAJfHf`vXnvpfr˂pZHAb|ZdQbtlJtArdf~HfpvXQJ`ےbHAZp˂rJltbdQZ|H~f`vXnvpfr˂pZHAb|ZdQbtlJtArdHfpvXQJ`pZp˂bdQZ|tbdtbvpfH~f`ZHAbے`JXQbtlArd|ZdQbtfpvnXv`˒HAZp˂rXQJ`ےbdQZ|drtAvXnvpfH~f`ZHAbے`JXQlJtArd|ZdQbt~HXv`v`prXQJ`AZdZ|dtbdQZ~f`vXn`JXQr˂pZHAے`ZdQbtlJtAXv`f~HfvnrJ`ےbHAZpdrtAJltbvpf~f`vXn`JXQr˂pZtAd|ZdQbtlJtA~HXvr˂pZHAbtlJtArdf~HnXvbHAZpXQJ`ےbdQZ|bdQZ|fH~f`vXnvpQr˂pZHAb|ZdQbtlJtArdf~HfpvrXQJ`ےbHAZdrtAJltbdQZ|fH~f`vXے`JXQr˂pZHAb|ZdQbtlf~H~HXv`bHAZprXQJ`bdQZ|bdQZ|`vXnvpfH~fZHAbے`JXQtlJtArd|ZdQbfpvnXv`bHAZp˂rXQJ`ےbdQZ|drtA`vXnvpfH~fZHAbے`JXQtlJtArdf~HnXv˂rXQbHAZdrtAQZ|dnvp~f`vXn`JXQr˂pJtAd|ZdQbtlJtnXv`f~H˂rXQJ`ےbHAZpdrtAJltvpfH~f`vXn`JXQr˂pArd|ZdQbtlJtf~HvnrXbHArtAJbrtAJl|AJlvXnvpfH˂pZHAbےJXQrblJtArd|~HfpvnXQJ`ےbHAZp˂rXQltbdQZ|Hf`vXnvpfH˂pZHAbےZdQbtlJtArd|`f~ZHAbے`JXQtArd|ZdQbXv`f`f~˂bbHAZdrtAJdrtAf`vXnvpfH~ˑZHAbے`JXbtlJtArdf~HfpvnXv`bHAZp˂AJltbdQZ|drtf`vXnvpQr˂pZHAbے`JXbtlJtArdfpvf~H˂㒐bHAdrtAdrtvpfH~f`vXnے`JXQr˂ptArd|ZdQbtlJnXv`f~Hp˂rXQJ`ےbHAZdrtAJltvpfH~fZHAbے`JXQr˂ptArd|ZdQbXv`f`f~J`ےp˂rJltrtAJfHf`vXnvpfHr˂pZHAbہZdQbtlJtArd|f~HfpvQJ`ےbHAZp˂rXJltbdQZ|~f`vXnvpfHr˂pZHAbہZdQbtlJtArd˅fpvQJ`pZp˂dQZ|tbdQtbnvpfH~f`HAbے`JXQrtlJrd|ZdQbtpvnXv`fHAZp˂rXQJ`ےdQZ|drtAJvXnvpfH~f`HAbے`JXQrlJtArd|ZdQbtHfpvے`JXQr˂p|ZdQbtlJ~HfHXv`HAZp˂p˂bdQZJltnvpfH~fZHAbے`JXQr˂pJtArd|ZdQfpvnXv`f~HZp˂rXQJ`ۉbdQZ|drtAJltnvpfH~ˑZHAbے`JXQr˂pJtArd|ZdQnXv`˅fpvbHAZpZp˂JbdQAJltH~f`vXnvpfr˂pZHAb|ZdQbtlJtArdf~HfpvXQJ`ےbHAZdrtAJltbdQZ|H~f`vXnے`JXQr˂pZHAb|ZdQbtlJ~HfHXv`bHAZpXQJ`ےbdQZ|bdQZ|vXnvpfH~f`ZHAbے`JXQlJtArd|ZdQbtfpvnXv`˙bHAZp˂rXQJ`ےbdQZ|drtAvXnvpfH~fZHAbے`JXQlJtArd|f~HXnXv`rXQbHAZpdrtAJZ|dvpf~f`vXn`JXQr˂pZtAd|ZdQbtlJtAXv`f~Hf˂rXQJ`ےbHAZpdrtAJltbvpfH~f`vXn`JXQr˂pZrd|ZdQbtlJtAnXvr˂pZHAbtlJtArdpvnf~HrXQJbHAZp|drbdQZ|fH~f`vXے`JXQr˂pZHAb|ZdQbtlnXv`f~HfpvrXQJ`ےbHAdrtAJltbdQZ|fH~f`vXے`JXQr˂pZHAۂ|ZdQbtlf~HXnXv`rXQbHAZpZ|dbdQZ|`vXnvpfH~fZHAbے`JXQtlJtArdf~HfpvnXv`bHAZp˂rJltbdQZ|drtA`vXnvpfr˂pZHAbے`JXQtlJtArdpvnf~H˂bbHAZdrtAJdrtAvpfH~f`vXn`JXQr˂pArd|ZdQbtlJtnXv`f~H˂rXQJ`ےbHAZdrtAJltvpfH~f`ZHAbے`JXQr˂pArd|ZdQbtv`ff~HJ`ے˂rXltbrtAJHf`vXnvpfH˂pZHAbےZdQbtlJtArd|~HfpvnJ`ےbHAZp˂rXQltbdQZ|~f`vXnvpfH˂pZHAbےZdQbtlJtArdf`f~ZHAbے`JXQtArd|ZdQbXv`ffpv`ےb˂rXQtAJldrtAf`vXnvpQr˂pZHAbے`JXbtlJtArdf~HfpvnXv`bHAZp˂AJltbdQZ|dtAf`vXnvpQr˂pZHAb`JXQbtlJtArdv`ff~HJ`ے˂rXrtAJldrtvpfH~fZHAbے`JXQr˂ptArd|ZdQbfpvnXv`f~Hp˂rXQJ`ےbdQZ|drtAJltvpfH~fZHAbے`JXQr˂ptArd|ZdQbXv`ffpvHAZp˂p˂bdQZJlt~f`vXnvpfHr˂pZHAbہZdQbtlJtArdf~HfpvQJ`ےbHAZpdrtAJltbdQZ|~f`vXn`JXQr˂pZHAbہZdQbtlJt~HfpXv`bHAZpQJ`ےdQZ|bdQZ|vXnvpfH~f`HAbے`JXQrlJtArd|ZdQbtpvnXv`fbHAZp˂rXQJ`ےdQZ|drtAJvXnvpfH~fZHAbے`JXQrlJtArd|~HXHXv`f~HnrXQbHAZtAJbdrtAJl灂AJlvXnvpfH˂pZHAbے`JXQrbtlJtArd|~HfpvnXQJ`ےbHAZp˂rXQtbdQZ|df`vXnvpfHpZHAJXQrAHr󙐂XnvˍpfH~QtJltbAdZfpvJ`p˂p˂QZ|dtbdQtbnvpfH~f`Abے`JXQrlJtrd|ZdQbtvnXv`fHAZp˂rXQJ`ےQZ|drtAJlvXnvpfH~f`b˂p˂p`Zˁ`ZQXApfH~ㅐf۝`vtbAdZ|drnXv`rXQJbHAZprtAJlZ|dvpfH~f`vXnہJXQr˂pZHAd|ZdQbtlJtAv`f~HfprXQJ`ےbHAZp˙rtAJltbdvpfH~f`vXnۑZHAbQXb㉀Hr󙐂ˁf۝`vXnvˍ|drQtJlf~H`ےb˂rXQtbdrtAJbf`vXnvpfH˂pZHAbے`ZdQbtlJtArd|~HfpvnXJ`ےbHAZp˂rXQtbdQZ|d~f`vXnvpfHے`JXۑpJAHr`ZQXbXnvˍpfH~QtJltbAdZXv`fHAZp˂J`ےQZ|ddQZ|vXnvpfH~f`Abے`JXQrlJtArd|ZdQbtvnXv`fbHAZp˂rXQJ`ےQZ|drtAJlvXnvpfH~frQr˂p󙐂ˁ`ZۑpJApfH~ㅐf۝`vtbAdZ|dr~HfbHAbHAZprtAJdrtAJvpfH~f`vXnہJXQr˂pZHrd|ZdQbtlJtAv`f~HfprXQJ`ےbHAZdrtAJltbdvpfH~f`˂pZHZHAbQXAHrHr󙐂ˁf۝`vXnvˍ|drQtJlpvnZp˂˂bbdQZ|ltb~f`vXnvpfH˂pZHAbے`ZdQbtlJtArdf~HfpvnXJ`ےbHAZp˙rtAJltbdQZ|d~f`vXnAbے`˂pˁ`ZQ`ZQXAHrXnvˍpfH~QtJltbAdZXv`frXQJ`HAZp˂drtAdQZ|vXnvpfH~fZHAbے`JXQrlJtArd|~HfpvnXv`fbHAZp˂rXQtbdQZ|drtAJlvXnvpfHJXQrZHAbXb㉀ۑ󙐂ˁ`ZpfH~ㅐf۝`vtbAdZ|dr~HXےbHArXQJJltdrtAJvpfH~f`Abے`JXQr˂pZHrd|ZdQbtvnXv`f~HfprXQJ`ےQZ|drtAJltbdvpfH~f`˂pZH`JXQpJAHrQXb㉀f۝`vXnvˍ|drQtJlv`fZp˂`ےbbdQZ|bdQZ|~f`vXnہJXQr˂pZHAbے`ZdQbtlJtAv`f~HfpvnXJ`ےbHAZp˙rtAJltbdQZ|d~f`vXnAbr˂pˁ`ZQۑpJAHrXnvˍpfH~QtJltbAdZ~HfpbHAZHAZp˂drtAdrtvXnvpfH˂pZHAbے`JXQrlJtArd|~HfpvnXv`fbHAZp˂rXQtbdQZ|dtAJlvXnvpfHpZHAZHAbXAHr󙐂󙐂ˁ`pfH~ㅐf۝`vtbAdZ|drvnXp˂rbHAJbdQAJltvpfH~f`Abے`JXQr˂pZHrd|ZdQbtvnXv`fHfpۂrXQJ`ےQZ|drtAJltbnvpfH~f`bے`˂pZHˁ`ZQXbpfH~ㅐf۝`vXnvˍ|drQtJlv`pvXQJ`ےZdrZ|dbdQZ|~f`vXnہJXQr˂pZHAے`ZdQbtlJtAv`f~HfpvnrXJ`ےbHAZp˙rtAJltbdvpfH~f`vXnJXQrAbے`㉀ۑpJf۝`vXnvˍp|drQtJltbAdZ|yz{|}~~}|{z \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv28_2.dat b/mpdf/qrcode/data/qrv28_2.dat deleted file mode 100644 index 5122e09..0000000 --- a/mpdf/qrcode/data/qrv28_2.dat +++ /dev/null @@ -1,257 +0,0 @@ -~}~}~}~}zyzyzyzyxwxwxwxwststststqrqrqrqropopopopmlklklklijijijijghghghghefefefefabababab^]^]^]^]\[\[\[\[ZYZYZYZY~}~}~}~}zyzyzyzyxwxwxwxwststststqrqrqrqropopopopklklklklijijijijghghghghefefefefabababab^]^]^]^]\[\[\[\[ZYZYZYZY~}~}~}~}zyzyzyzyxwxwxwxwststststqrqrqrqropopopopklklklklijijijijghghghghedcdcdcdabababab^]^]^]^]\[\[\[\[ZYZYZYZY~}~}~}~}zyzyzyzyxwxwxwxwststststqrqrqrqropopopopklklklklijijijijghghghghcdcdcdcdabababab^]^]^]^]\[\[\[\[ZYZYZYZY~}~}~}~}zyzyzyzywwwwwxwxststststqrqrqrqropopopopklklklklijijijijghghghghcdcdcdcdabababab^]^]^]^]\[\[\[\[ZYZYZYZY~}~}~}~}zyzyzyzywxwxwxwxststststqrqrqrqropopopopklklklklijijijijghghghghcdcdcdcdabababab^]^]^]^]\[\[\[\[ZYZYZYZY~}~}~}~}zyzyzyzywxwxwxwxststststqrqrqrqropopopopklklklklijijijijghghghghcdcdcdcdabababab^]^]^]^]\[\[\[\[ZYZYZYZY~}~}~}~}zyzyzyzywxwxwxwxststststqrqrqrqropopopopklklklklijijijijghghghghcdcdcdcdabababab^]^]^]^]\[\[\[\[ZYZYZYZY~}~}~}~}zyzyzyzywxwxwxwuststststqrqrqrqropopopopklklklklijijijijghghghghcdcdcdcdabababab^]^]^]^]\[\[\[\[XWXWXWXW~}~}~}~}zyzyzyzyuuuuuvuvststststqrqrqrqropopopopklklklklijijijijghghghghcdcdcdcdababa`_`^]^]^]^]\[\[\[\[XWXWXWXW~}~}~}~}zyzyzyzyuvuvuvuvststststqrqrqrqronmnmnmnklklklklijijijijghghghghcdcdcdcd_`_`____^]^]^]^]\[\[\[\[XWXWXWXW~}~}~}~}zyzyzyzyuvuvuvuvststststqrqrqrqrmnmnmnmnklklklklijijijijghghghghcdcdcdcd__`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVU~}~}~}~}zyzyzyzyuvuvuvuvststststqrqrqrqrmnmnmnmnklklklklijijijijgfefefefcdcdcdcd`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVU~}~}~}~}zyzyzyzyuvuvuvuvststststqrqrqrqrmnmnmnmnklklklklijijijijefefefefcdcdcdcd`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVU~}~}~}~}zyzyzyzyuvuvuvuvststststqrqrqrqrmnmnmnmnklklklklijijijijefefefefcdcdcdcd`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVU~}~}~}~}zyzyzyzyuvuvuvuvststststqrqrqrqrmnmnmnmnklklklklijijijijefefefefcdcdcdcd`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVU~}~}~}~}zyzyzyzyuvuvuvuvststststqrqrqrqrmnmnmnmnklklklklijijijijefefefefcdcdcdcd_____`_`^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVU~}~}~}~}zyzyzyzyuvuvuvuvststststqrqrqrqrmnmnmnmnklklklklijijijijefefefefcdcdcdcd_`_`_`_`^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVU|{|{|{|{zyzyzyzyuvuvuvuvststststqrqrqrqrmnmnmnmnklklklklijijijijefefefefcdcdcdcd_`_`_`_`^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVU|{|{|{|{zyzyzyzyuvuvuvuvststststqrqrqrqrmnmnmnmnklklklklijijijijefefefefcdcdcdcd_`_`_`_`^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVU|{|{|{|{zyzyzyzyuvuvuvuvststststqpopopopmnmnmnmnklklklklijijijijefefefefcdcdcdcd_`_`_`_`^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVU|{|{|{|{zyzyzyzyuvuvuvuvststststopopopopmnmnmnmnklklklklijijijijefefefefcdcdcdcd_`______^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVU|{|{|{|{zyzyzyzyuvuvuvuvststststopopopopmnmnmnmnklklklklihghghghefefefefcdcdcdcd`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVU|{|{|{|{zyzyxwxwuvuvuvuvststststopopopopmnmnmnmnklklklklghghghghefefefefcdcdcdcd`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVU|{|{|{|{xwxwwwwwuvuvuvuvststststopopopopmnmnmnmnklklklklghghghghefefefefcdcdcdcd`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVU|{|{|{|{wxwxwxwxuvuvuvuvststststopopopopmnmnmnmnklklklklghghghghefefefefcdcdcdcd`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVU|{|{|{|{wxwxwxwxuvuvuvuvststststopopopopmnmnmnmnklklklklghghghghefefefefcdcdcdcb`_`_`___^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVU|{|{|{|{wxwxwxwxuvuvuvuvststststopopopopmnmnmnmnklklklklghghghghefefefefabababab___`_`_`^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVU|{|{|{|{wxwxwxwxuvuvuvuvststststopopopopmnmnmnmnklklklklghghghghefefefefabababab_`_`_`_`\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVU|{|{|{|{wxwxwxwwuvuvuvuvststststopopopopmnmnmnmnklklklklghghghghefefefefabababab_`_`_`_`\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVU~}~}~}~}|{|{|{|{wwwwxwxwuvuvuvuvsrqrqrqropopopopmnmnmnmnklklklklghghghghefefefefabababab_`_`_`_`\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVU~}~}~}~}|{|{|{|{xwxwxwxwuvuvuvuvqrqrqrqropopopopmnmnmnmnklklklklghghghghefefefefabababab_`_`_`_`\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVU~}~}~}~}|{|{|{|{xwxwxwxwuvuvuvuvqrqrqrqropopopopmnmnmnmnkjijijijghghghghefefefefabababab______`_\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVU~}~}~}~}|{|{|{|{xwxwxwxwuvuvuvuvqrqrqrqropopopopmnmnmnmnijijijijghghghghefefefefabababab`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVU~}~}~}~}|{|{|{|{xwxwxwxwuvuvuvuvqrqrqrqropopopopmnmnmnmnijijijijghghghghefefefefabababab`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVU~}~}~}~}|{|{|{|{xwwwwwwxuvuvuvuvqrqrqrqropopopopmnmnmnmnijijijijghghghghefefefefabababab`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVU~}~}~}~}|{|{|{|{wxwxwxwxuvuvuvuvqrqrqrqropopopopmnmnmnmnijijijijghghghghefefefefabababab`_`_____\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVU~}~}~}~}|{|{|{|{wxwxwxwxuvuvuvuvqrqrqrqropopopopmnmnmnmnijijijijghghghghefefefefabababab`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVU~}~}~}~}|{|{|{|{wxwxwxwxuvuvuvuvqrqrqrqropopopopmnmnmnmnijijijijghghghghefefefefabababab^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVU~}~}~}~}|{|{|{|{wxwxwxwxuvuvuvuvqrqrqrqropopopopmnmnmnmnijijijijghghghghefefefefabababab^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVU~}~}~}~}|{|{|{|{wxwxwwwwutstststqrqrqrqropopopopmnmnmnmnijijijijghghghghefefefefabababab^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUVUVUVUVU~}~}~}~}|{|{|{zywwxwxwxwststststqrqrqrqropopopopmnmnmnmnijijijijghghghghefefefefabababab^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMJIJIJIJIEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<9:9:9:9:56565656343434340/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#         - - - -TSTSTSTSRQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<9:9:9:9:56565656343434340/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#         - - - -TSTSTSTSRQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<9:9:9:9:56565656343434340/0/0///.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#         - - - -TSTSTSTSRQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<9:9:9:9:5656565634343434///0/0/0.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#         - - - -TSTSTSTSRQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<9:9:9:9:5656565634343434/0/0/0/0.-.-.-.-,+,+,+*)('('('('&%&%&%&%$#$#$#$#       - - - -TSTSTSTSRQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<9:9:9:9:5656565634343434/0/0/0/0.-.-.-.-*)*)*)*)('('('('&%&%&%&%$#$#$#$#     - - - -TSTSTSTSRQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIEFEFEFEFCDCDCDCDABABABA@=>=>=>=>;<;<;<;<9:9:9:9:5656565634343434/0/0/0/0.-.-.-.-*)*)*)*)('('('('&%&%&%&%$#$#$#"!     - - - -TSTSTSTSRQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:5656565634343434/0/0/0/0.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!     - - - -TSTSTSTSRQRQRQRQPOPOPOPOLKLKLKLKJIJIHGHGEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:985656565634343434//////0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!     - - - -TSTSTSTSRQRQRQRQPOPOPOPOLKLKLKLKHGHGGGGGEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<7878787856565656343434340/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!     - - - -TSTSTSTSRQRQRQRQPOPOPOPOLKLKLKLKGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<7878787856565656343434340/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!     - - - -TSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<7878787856565656343434340/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!     - - - -TSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<7878787856565656343434340/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!     - - - -TSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<7878787856565656343432120/0/////.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!     - - - -TSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKGHGHGHGGEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<787878785656565612121212/0/0/0/0.-.-.-,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!      - - - -TSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKGGGGHGHGEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<787878785656565612121212/0/0/0/0,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!         - - - -TSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGEFEFEFEFCDCDCDCB?@?@?@?@=>=>=>=>;<;<;<;<787878785656565612121212/0/0/0/0,+,+,+,+*)*)*)*)('('('('&%&%&%$#"!"!"!"!         - - - -TSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGEFEFEFEFABABABAB?@?@?@?@=>=>=>=>;<;<;<;<787878785656565612121212/0/0/0/0,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!         - - - -TSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGEFEFEFEFABABABAB?@?@?@?@=>=>=>=>;<;<;<;:787878785656565612121212/0/0/0//,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!         - - - -TSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGEFEFEFEFABABABAB?@?@?@?@=>=>=>=>9:9:9:9:787878785656565612121212////0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!         - - - -TSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKHGGGGGGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>9:9:9:9:7878787856565656121212120/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!         - - - -TSTSTSTSPOPOPOPONMNMNMNMLKLKLKLKGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>9:9:9:9:7878787856565656121212120/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!         - - - -TSTSTSTSPOPOPOPONMNMNMNMLKLKLKLKGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>9:9:9:9:7878787856565656121212120/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!         - - - -TSTSTSTSPOPOPOPONMNMNMNMLKLKLKLKGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>9:9:9:9:7878787856565656121212120/////0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!         - - - -TSTSTSTSPOPOPOPONMNMNMNMLKLKLKLKGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>9:9:9:9:7878787856565656121212120/0/0/.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!         - - - -TSTSTSTSPOPOPOPONMNMNMNMLKLKLKJIGHGHGGGGEFEFEFEFABABABAB?@?@?@?@=>=>=>=>9:9:9:9:787878785656565612121212.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!         - - - -TSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIGGHGHGHGEFEFEFEDABABABAB?@?@?@?@=>=>=>=>9:9:9:9:787878785656565612121212.-.-.-.-,+,+,+,+*)*)*)*)('('('&%$#$#$#$#"!"!"!"!         - - TSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGCDCDCDCDABABABAB?@?@?@?@=>=>=>=>9:9:9:9:787878785656565612121212.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!         TSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGCDCDCDCDABABABAB?@?@?@?@=>=>=>=<9:9:9:9:787878785656565612121212.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!        TSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:787878785656565612121212.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!     TSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:787878785656565412121212.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!     RQRQRQRQPOPOPOPONMNMNMNMJIJIJIJIGGGGGHGHCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:787878783434343412121212.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!     RQRQRQRQPOPOPOPONMNMNMNMJIJIJIJIGHGHGHGHCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:787878783434343412121212.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!     RQRQRQRQPOPOPOPONMNMNMNMJIJIJIJIGHGHGHGHCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:787878783434343412121212.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!     RQRQRQRQPOPOPOPONMNMNMNMJIJIJIJIGHGHGHGHCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:787878783434343412121212.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!     RQRQRQRQPOPOPOPONMNMNMNMJIJIJIJIGHGGGGGHCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:787878783434343412121212.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!     RQRQRQRQPOPOPOPONMNMNMNMJIJIJIJIGHGHGHGFCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:787878783434343412121212.-.-.-.-,+,+,+,+*)*)*)('&%&%&%&%$#$#$#$#"!"!"!"!     - -RQRQRQRQPOPOPOPONMNMNMNMJIJIJIJIEFEFEFEFCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:787878783434343412121212.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#"!"!"!"!     - - - -RQRQRQRQPOPOPOPONMNMNMNMJIJIJIJIEFEFEFEFCDCDCDCDABABABAB?@?@?@?>;<;<;<;<9:9:9:9:78787878343434341210/0/0.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#"!"!"!      - - - -RQRQRQRQPOPOPOPONMNMNMNMJIJIJIJIEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<9:9:9:9:7878787834343434/0//////.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#         - - - -RQRQRQRQPOPOPOPONMNMNMNMJIJIJIJIEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<9:9:9:9:78787876343434340/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#         - - - -RQRQRQRQPOPOPOPONMNMNMNMJIJIJIJIEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<9:9:9:9:56565656343434340/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#         - - - -~~}}99::;;<< - - ,,++**))yxxwwvvu01122334)((''&&%~~}())**++,100//..-xyyzz{{|PQQRRSSTHHGGFFEEaabbccdd||{{zzyy==>>??@@((''&&%%uttssrrq45566778%$$##""!}||{{zzy,--..//0-,,++**)|}}~~TUUVVWWXDDCCBBAAeeffgghhxxwwvvuuAABBCCDD$$##""!!qppoonnm899::;;>==iijjkkllttssrrqqEEFFGGHH mllkkjji<==>>??@uttssrrq45566778%$$##""!}wwvvuut\]]^^__e <<;;::99mmnnooppppoonnmmIIJJKKLL !!""ihhggffe@AABBCCDqppoonnm899::;;>??@poonnmmlijjkkllm%%&&''((44332211uuvvwwxxhhggffeeQQRRSSTT''(())**a``__^^]HIIJJKKL ihhggffe@AABBCCDlkkjjiihmnnooppq))**++,,00//..--yyzz{{||ddccbbaaUUVVWWXX++,,--.. -]\\[[ZZYLMMNNOOP - - eddccbbaDEEFFGGHhggffee_qrrssttu--..//00,,++**))}}~~``__^^]]YYZZ[[\\//556677 - YXXWWVVUPQQRRSST a``__^^]HIIJJKKL _^^]]\\[uvvww}}~11223344((''&&%%~~}}\\[[ZZYY]]^^__``8899::;;UTTSSRRQTUUVVWWX]\\[[ZZYLMMNNOOP - - [ZZYYXXW~55667788$$##""!!||{{zzyyXXWWVVUUaabbccdd<<==>>?? - - QPPOONNMXYYZZ[[\YXXWWVVUPQQRRSST WVVUUTTS~~}}|{z99::;;<< xxwwvvuuTTSSRRQQeeffgghh@@AABBCC MLLKKJJI\]]^^__`UTTSSRRQTUUVVWWXSRRQQPPOyxwwvvuu==>>??@@ttssrrqq - - PPOONNMMiijjkkllDDEEFFGGIHHGGFFE`aabbccd - - QPPOONNMXYYZZ[[\ONNMMGGFttssrrqqAABBCCDDppoonnmm LLKKJJIImmnnooppMMNNOOPPEDDCCBBAdeeffggh MLLKKJJI\]]^^__`FEEDDCCBppoonnmmEEFFGGHHllkkjjiiHHGGFFEEqqrrssttQQRRSSTTA@@??>>=hiijjkklIHHGGFFE`aabbccd - - BAA@@??>llkkjjiiIIJJKKLL hhggffeeDDCCBBAAuuvvwwxxUUVVWWXX =<<;;::9lmmnnoopEDDCCBBAdeeffggh >==<<;;:hhggffeeMMNNOOPP - - ddccbbaa@@??>>==yyzz{{||YYZZ[[\\ !!""##$98877665pqqrrsstA@@??>>=hiijjkkl:9988776dcba`__^QQRRSSTT``__^^]] <<;;::99}}~~]]^^__ee$%%&&''(54433221tuuvvwwx =<<;;::9lmmnnoop655//..-^]]\\[[ZUUVVWWXX\\[[ZZYY!!""##$$88776655~~}}ffgghhii())**++,100//..-xyyzz{{| !!""##$98877665pqqrrsst-,,++**)ZYYXXWWVYYZZ[[\\XXWWVVUU%%&&''((44332211wwvvuuttjjkkllmm,--..//0-,,++**)|}}~~$%%&&''(54433221tuuvvwwx )((''&&%VUUTTSSR]]^^__``TTSSRRQQ))**++,,00//..--ssrrqqppnnooppqq01122334)((''&&%~~}())**++,100//..-xyyzz{{| !!""##$%$$##""!RQQPPOONaabbccdd - - PPOONNMM--..//00,,++**))oonnmmllrrssttuu45566778%$$##""!}||{{zzy,--..//0-,,++**)|}}~~$%%&&''(! NMMLKJIHeeffgghh LLKKJJII11223344((''&&%%kkjjiihhvvww}}~~899::;;>??@uttssrrq45566778%$$##""!}||{{zzy,--..//0CCBBAA@@mmnnooppDDCCBBAA99::;;<< ^^]]\\[[~~}}|{zy@AABBCCDqppoonnm899::;;>==<>====>>??@@ZZYYXXWWxwwvvuutDEEFFGGHmllkkjji<==>>??@uttssrrq45566778 - - ;;::9988uuvvwwxx <<;;::99AABBCCDDVVUUTTSStssrrqqpHIIJJKKL ihhggffe@AABBCCDqppoonnm899::;;<77665543yyzz{{||!!""##$$88776655EEFFGGHHRRQQPPOOpoonnmmlLMMNNOOP - - eddccbbaDEEFFGGHmllkkjji<==>>??@ 210//..-}}~~%%&&''((44332211IIJJKKLL NNMMGGFFlkkjjiihPQQRRSST a``__^^]HIIJJKKL ihhggffe@AABBCCD - - -,,++**)~~}}))**++,,00//..--MMNNOOPP - - EEDDCCBBhggffeedTUUVVWWX]\\[[ZZYLMMNNOOP - - eddccbbaDEEFFGGH )((''&&%||{{zzyy--..//00,,++**))QQRRSSTT - - AA@@??>>cba`__^^XYYZZ[[\YXXWWVVUPQQRRSST a``__^^]HIIJJKKL%$$##""!xxwwvvuu11223344((''&&%%UUVVWWXX ==<<;;::]]\\[[ZZ\]]^^__`UTTSSRRQTUUVVWWX]\\[[ZZYLMMNNOOP! ttssrrqq55667788$$##""!!YYZZ[[\\99887766YYXXWWVV`aabbccd - - QPPOONNMXYYZZ[[\YXXWWVVUPQQRRSST !!"ppoonnmm99::;;<< ]]^^__``55//..--UUTTSSRRdeeffggh MLLKKJJI\]]^^__`UTTSSRRQTUUVVWWX"##$$%%&llkkjjii==>>??@@aabbccdd,,++**))QQPPOONNhiijjkklIHHGGFFE`aabbccd - - QPPOONNMXYYZZ[[\&''(())*hhggffeeAABBCCDDeeffgghh ((''&&%%MMLKJIHGlmmnnoopEDDCCBBAdeeffggh MLLKKJJI\]]^^__`*++,,--. ddccbbaaEEFFGGHHiijjkkll!!""##$$$$##""!!GFFEEDDCpqqrrsstA@@??>>=hiijjkklIHHGGFFE`aabbccd.//55667 - - ``__^^]]IIJJKKLL mmnnoopp%%&&''(( CBBAA@@?tuuvvwwx =<<;;::9lmmnnoopEDDCCBBAdeeffggh78899::;\\[[ZZYYMMNNOOPP - - qqrrsstt))**++,,?>>==<<;xyyzz{{| !!""##$98877665pqqrrsstA@@??>>=hiijjkkl;<<==>>?XXWWVVUUQQRRSSTTuuvvwwxx--..//00;::99887|}}~~$%%&&''(54433221tuuvvwwx =<<;;::9lmmnnoop?@@AABBCTTSSRRQQUUVVWWXXyyzz{{||11223344 76655432~~}())**++,100//..-xyyzz{{| !!""##$98877665pqqrrsstCDDEEFFG - - PPOONNMMYYZZ[[\\}}~~55667788 - - 10//..--}||{{zzy,--..//0-,,++**)|}}~~$%%&&''(54433221tuuvvwwxGMMNNOOP LLKKJJII]]^^__``~~}}||{{zzyy--..//00,,++**))}}~~UUVVWWXXDCCBBAA@effgghhi LKKJJIIH]^^__``a EDDCCBBAoonnmmllFFGGHHIIkkjjiihh>>??@@AAssrrqqpp66778899 - - :9988776vwwxxyyz !!";::99887nooppqqr,++**))(EDDCCBBAxxwwvvuu11223344((''&&%%~~}}YYZZ[[\\@??>>==>=kkjjiihhJJKKLLMM ggffeeddBBCCDDEEoonnmmll::;;<<==65543210z{{||}}~"##$$%%&76655443rssttuuv(''&&%%$A@@??>>=ttssrrqq55667788$$##""!!wwvvuutt]]^^__ee !<;;::998mnnooppqDCCBBAA@effgghhi =<<;;::9ggffeedcNNOOPPQQ - - ccbbaa``FFGGHHIIkkjjiihh>>??@@AA - -//..--,,~&''(())*3221100/vwwxxyyz !!"$##""!! =<<;;::9ppoonnmm99::;;<< ssrrqqppffgghhii!""##$$%87766554qrrssttu@??>>==>??@@oonnmmlljjkkllmm%&&''(()43322110uvvwwxxy !<;;::998mnnooppq5//..--,]\\[[ZZYVVWWXXYY[[ZZYYXXNNOOPPQQ - - ccbbaa``FFGGHHII''&&%%$${zzyyxxw.//00112+**))(('~&''(())*54433221hhggffeeAABBCCDDkkjjiihhnnooppqq)**++,,-0//..--,yzz{{||}!""##$$%87766554qrrssttu,++**))(YXXWWVVUZZ[[\\]]WWVVUUTTRRSSTTUU__^^]]\\JJKKLLMM##""!! wvvuutts23344556'&&%%$$#~~}}||{*++,,--.100//..-ddccbbaaEEFFGGHHggffee__rrssttuu-..//001,++**))(}~~%&&''(()43322110uvvwwxxy !(''&&%%$UTTSSRRQ^^__``aa SSRRQQPPVVWWXXYY[[ZZYYXXNNOOPPQQsrrqqppo6778899:#""!! {zzyyxxw.//00112 -,,++**)``__^^]]IIJJKKLL ^^]]\\[[vvww}}~~12233445(''&&%%$~~}}|)**++,,-0//..--,yzz{{||}!""##$$%$##""!! QPPOONNMbbccddee - - OONNMMLLZZ[[\\]]WWVVUUTTRRSSTTUU !!""##onnmmllk:;;<<==>wvvuutts23344556 - - -)((''&&%\\[[ZZYYMMNNOOPP - - ZZYYXXWW56677889$##""!! |{{zzyyx-..//001,++**))(}~~%&&''(() MLKJIHGGffgghhiiKKJJIIHH^^__``aa SSRRQQPPVVWWXXYY$$%%&&''kjjiihhg>??@@AABsrrqqppo6778899: - %$$##""!XXWWVVUUQQRRSSTTVVUUTTSS~~}}|{zy9::;;<<= xwwvvuut12233445(''&&%%$~~}}|)**++,,-FFEEDDCCjjkkllmmGGFFEEDDbbccddee - - OONNMMLLZZ[[\\]](())**++ gffeeddcBCCDDEEFonnmmllk:;;<<==>! TTSSRRQQUUVVWWXXRRQQPPOOxwwvvuut=>>??@@Atssrrqqp56677889$##""!! |{{zzyyx-..//001BBAA@@??nnooppqqCCBBAA@@ffgghhiiKKJJIIHH^^__``aa,,--..// - - cbbaa``_FGGHHIIJkjjiihhg>??@@AABPPOONNMMYYZZ[[\\NNMMGGFFtssrrqqpABBCCDDEpoonnmml9::;;<<= xwwvvuut12233445 >>==<<;;rrssttuu??>>==<>??@@Atssrrqqp56677889 - - ::998877vvwwxxyy !!;;::9988nnooppqqCCBBAA@@ffgghhii99::;;<<[ZZYYXXWNOOPPQQR - - cbbaa``_FGGHHIIJ !!""#HHGGFFEEaabbccdd - - AA@@??>>lkkjjiihIJJKKLLM hggffeedABBCCDDEpoonnmml9::;;<<=66554321zz{{||}}""##$$%%77665544rrssttuu??>>==<>??@@WVVUUTTSRSSTTUUV_^^]]\\[JKKLLMMN#$$%%&&' DDCCBBAAeeffgghh ==<<;;::hggffeedMNNOOPPQ - - dccbbaa`EFFGGHHIlkkjjiih=>>??@@A -0//..--,~~&&''(())33221100vvwwxxyy !!;;::9988nnooppqqAABBCCDD -SRRQQPPOVWWXXYYZ[ZZYYXXWNOOPPQQR'(())**+ - - @@??>>==iijjkkll99887766cba`__^^QRRSSTTU`__^^]]\IJJKKLLM hggffeedABBCCDDE - ,++**))(~~}}||**++,,--//..--,,zz{{||}}""##$$%%77665544rrssttuuEEFFGGMM - ONNMMLLKZ[[\\]]^WVVUUTTSRSSTTUUV+,,--../ - - <<;;::99mmnnoopp55//..--]]\\[[ZZUVVWWXXY\[[ZZYYXMNNOOPPQ - - dccbbaa`EFFGGHHI(''&&%%${{zzyyxx..//0011++**))((~~&&''(())33221100vvwwxxyyNNOOPPQQKJJIIHHG^__``aab -SRRQQPPOVWWXXYYZ/5566778 88776655qqrrsstt,,++**))YYXXWWVVYZZ[[\\]XWWVVUUTQRRSSTTU`__^^]]\IJJKKLLM$##""!! wwvvuutt22334455''&&%%$$~~}}||**++,,--//..--,,zz{{||}}RRSSTTUUGFFEEDDCbccddeef - ONNMMLLKZ[[\\]]^899::;;<44332211uuvvwwxx ((''&&%%UUTTSSRR]^^__``a TSSRRQQPUVVWWXXY\[[ZZYYXMNNOOPPQ ssrrqqpp66778899##""!! {{zzyyxx..//0011++**))((~~VVWWXXYYCBBAA@@?fgghhiijKJJIIHHG^__``aab<==>>??@00//..--yyzz{{||!!""##$$$$##""!!QQPPOONNabbccdde - - POONNMMLYZZ[[\\]XWWVVUUTQRRSSTTU !!""#oonnmmll::;;<<==wwvvuutt22334455''&&%%$$~~}}wwZZ[[\\]]?>>==<<;jkkllmmnGFFEEDDCbccddeef@AABBCCD,,++**))}}~~%%&&''(( MMLKJIHGeffgghhi LKKJJIIH]^^__``a TSSRRQQPUVVWWXXY#$$%%&&'kkjjiihh>>??@@AAssrrqqpp66778899##""!! vvuuttss^^__eeff !!";::99887nooppqqrCBBAA@@?fgghhiijDEEFFGGM ((''&&%%~~}}))**++,,GFFEEDDCijjkkllmHGGFFEEDabbccdde - - POONNMMLYZZ[[\\]'(())**+ggffeeddBBCCDDEEoonnmmll::;;<<==rrqqppoogghhiijj"##$$%%&76655443rssttuuv?>>==<<;jkkllmmnMNNOOPPQ !!""##$$$##""!!||{{zzyy--..//00CBBAA@@?mnnooppqDCCBBAA@effgghhi LKKJJIIH]^^__``a+,,--../ - -ccbbaa``FFGGHHIIkkjjiihh>>??@@AAnnmmllkkkkllmmnn&''(())*3221100/vwwxxyyz !!";::99887nooppqqrQRRSSTTU$%%&&''( xxwwvvuu11223344 ?>>==<<;qrrssttu@??>>==>==>??@WWVVUUTTRRSSTTUU__^^]]\\JJKKLLMM ]]\\[[ZZww}}~~23344556'&&%%$$#~~}}||{*++,,--./..--,,+z{{||}}~]^^__eef01122334llkkjjii==>>??@@ 10//..--}~~%&&''(()43322110uvvwwxxy !<;;::998mnnooppq@AABBCCD SSRRQQPPVVWWXXYY[[ZZYYXXNNOOPPQQ - - YYXXWWVV~~6778899:#""!! {zzyyxxw.//00112+**))(('~xxwfgghhiij45566778 hhggffeeAABBCCDD - - ,,++**))~~}}|)**++,,-0//..--,yzz{{||}!""##$$%87766554qrrssttuDEEFFGGM - - OONNMMLLZZ[[\\]]WWVVUUTTRRSSTTUUUUTTSSRR}}|{zyxw:;;<<==>wvvuutts23344556'&&%%$$#wvvuuttsjkkllmmn899::;;< - - ddccbbaaEEFFGGHH((''&&%%|{{zzyyx-..//001,++**))(}~~%&&''(()43322110uvvwwxxyMNNOOPPQKKJJIIHH^^__``aa SSRRQQPPVVWWXXYYQQPPOONNwvvuutts>??@@AABsrrqqppo6778899:#""!! srrqqpponooppqqr<==>>??@``__^^]]IIJJKKLL$$##""!!xwwvvuut12233445(''&&%%$~~}}|)**++,,-0//..--,yzz{{||}QRRSSTTUGGFFEEDDbbccddee - - OONNMMLLZZ[[\\]]MMGGFFEEsrrqqppoBCCDDEEFonnmmllk:;;<<==>onnmmllkrssttuuu@AABBCCD\\[[ZZYYMMNNOOPP tssrrqqp56677889$##""!! |{{zzyyx-..//001,++**))(}~~UVVWWXXYCCBBAA@@ffgghhiiKKJJIIHH^^__``aa DDCCBBAAonnmmllkFGGHHIIJkjjiihhg>??@@AABkjjiihhguttssrrqDEEFFGGHXXWWVVUUQQRRSSTT !!""poonnmml9::;;<<= xwwvvuut12233445(''&&%%$~~}}wYZZ[[\\]??>>==<>==kjjiihhgJKKLLMMN gffeeddcBCCDDEEFgffee__^qppoonnmHIIJJKKLTTSSRRQQUUVVWWXX##$$%%&&lkkjjiih=>>??@@Atssrrqqp56677889$##""!! wvvuutts]^^__eef !!;;::9988nnooppqqCCBBAA@@ffgghhii<<;;::99gffeedcbNOOPPQQR - - cbbaa``_FGGHHIIJ^]]\\[[ZmllkkjjiLMMNNOOP - - PPOONNMMYYZZ[[\\''(())**hggffeedABBCCDDEpoonnmml9::;;<<= srrqqppofgghhiij""##$$%%77665544rrssttuu??>>==<>??@@Aonnmmllkjkkllmmn&&''(())33221100vvwwxxyy !!;;::9988nnooppqq//..--,,\\[[ZZYYVWWXXYYZ[ZZYYXXWNOOPPQQR - - VUUTTSSReddccbbaTUUVVWWXHHGGFFEEaabbccdd//556677 - `__^^]]\IJJKKLLM hggffeedABBCCDDEkjjiihhgnooppqqr**++,,--//..--,,zz{{||}}""##$$%%77665544rrssttuu++**))((XXWWVVUUZ[[\\]]^WVVUUTTSRSSTTUUVRQQPPOONa``__^^]XYYZZ[[\DDCCBBAAeeffgghh8899::;;\[[ZZYYXMNNOOPPQ - - dccbbaa`EFFGGHHIgffee__^rssttuuv..//0011++**))((~~&&''(())33221100vvwwxxyy !!''&&%%$$TTSSRRQQ^__``aab -SRRQQPPOVWWXXYYZNMMGGFFE]\\[[ZZY\]]^^__`@@??>>==iijjkkll<<==>>??XWWVVUUTQRRSSTTU`__^^]]\IJJKKLLM ^]]\\[[Zvww}}~~22334455''&&%%$$~~}}||**++,,--//..--,,zz{{||}}""##$$%%##""!! PPOONNMMbccddeef - ONNMMLLKZ[[\\]]^EDDCCBBAYXXWWVVU`aabbccd <<;;::99mmnnoopp@@AABBCC TSSRRQQPUVVWWXXY\[[ZZYYXMNNOOPPQ - - ZYYXXWWV~66778899##""!! {{zzyyxx..//0011++**))((~~&&''(())LKJIHGGFfgghhiijKJJIIHHG^__``aab -A@@??>>=UTTSSRRQdeeffggh!!""##$$88776655qqrrssttDDEEFFGG - - POONNMMLYZZ[[\\]XWWVVUUTQRRSSTTUVUUTTSSR~}}|{zyx::;;<<==wwvvuutt22334455''&&%%$$~~}}||**++,,--FEEDDCCBjkkllmmnGFFEEDDCbccddeef - =<<;;::9QPPOONNMhiijjkkl%%&&''((44332211uuvvwwxxMMNNOOPP LKKJJIIH]^^__``a TSSRRQQPUVVWWXXYRQQPPOONwwvvuutt>>??@@AAssrrqqpp66778899##""!! {{zzyyxx..//0011BAA@@??>nooppqqrCBBAA@@?fgghhiij98877665MLLKKJJIlmmnnoop))**++,,00//..--yyzz{{||QQRRSSTTHGGFFEEDabbccdde - - POONNMMLYZZ[[\\]NMMGGFFEssrrqqppBBCCDDEEoonnmmll::;;<<==wwvvuutt22334455 >==<<;;:rssttuuv?>>==<<;jkkllmmn5//..--,IHHGGFFEpqqrrssttuuZHAb|ZdQb˂rXQdrtAQr˂pbtlfpvZdrtfH~Qr˂pbtlZp˂H~fr˂ptlJے`JXQtlJJ`ےJltZHAbJtArdnXv`AJltf`vXZHAbJtArdrXQJ``vXnZHAbtArdr˂ptArdbHAZpbdQZ|ے`JX|ZdQf~HbdQZ|nvpے`JXf~HbHAvpfے`JXQ|ZdQbZHAb|ZdQb˂bdrtAQr˂pbtlfpvdrtfH~Qr˂pXv`Zp˂H~fr˂ptlJے`JXQtlJHAZp˂JbdQZHAbJtArdnXv`AJltf`vXZHAbf~HbHAZp`vXnZHAbtArdr˂ptArdrXQJZ|dے`JX|ZdQf~HbdQZ|nvpے`JXfpv˂rXvpfے`JXQ|ZdQbZHAb|ZdQb`ےbrtAJlQr˂pbtlfpvdrtfH~Qr˂pnXv`QJ`ےH~fr˂ptlJے`JXQtlJHAZp˂tbdQZHAbJtArdnXv`AJltf`vXZHAbf~HXbHAZp`vXnZHAbtArdr˂ptArdbHAZ|dnے`JX|ZdQfHbdQZ|nvpے`JXv`f˂々vpfے`JXQf~HZHAb|ZdQbZp˂vfQr˂pbtlfpvdrtfH~Qr˂p~HfpbHAZdH~fr˂pfpvے`JXQtlJrXQJ`f`vXZHAbJtArdnrXQJ`AJltf`vXZHA۝vnXrtAJ`vXnZHAbnXv`r˂ptArdےbHAnvpے`JX|ZdQےHAbdQZ|nvp`JXQv`fbdQZ|vpfے`JXQf~Hp˂rZHAb|ZdQbZp˂fH~Qr˂pbtlZp˂drtfH~rbtl~HXdrtAH~fr˂pfpvXQJ`ےے`JXQtlJbHAZf`vXZHAbJtArdrXQJ`AJltf`vXJtAdv`fJlt`vXnZHAbnXv`bHAZr˂ptArdp˂rnvpے`JX|ZdQbHAbdQZ|nvp|ZdQ~HfpbdQZ|vpfے`JXQf~Hp˂rZHAb|ZdQbXQJ`ےfH~Qr˂pbtlZp˂drtfH~btlvnXdrtAH~fr˂pfpvXQJ`ےے`JXQtlJbHAZf`vXZHAbJtArdrXQJ`AJltf`vXJtArdv`fJbdQ`vXnZHAےnXv`bHAZr˂ptArdp˂nvpے`JX|ZdQbHAbdQZ|nvp|ZdQ~HXv`Z|dvpf`JXQrf~Hp˂rZHAbf~HbHAZpfH~Qr˂pbtlZp˂drtfH~btlf~HrtAJlH~fbtlfpvXQJ`ےے`JXQXv`f˂rXQf`vXZHAbJtArdrXQJ`AJltf`vXJtArdfpvtbdQ`vXnJtAdnXv`bHAZr˂p~HfJ`ےnvpے`JXf~HbHAbdQZ|nvp|ZdQnXv`Z|dvpf|ZdQbf~Hp˂rZHAbpvnbHAZpfH~Qr˂pfpvZp˂drtfH~btlf~HrtAJbH~ftlJfpvXQJ`ےے`JXQXv`f˂bf`vXZHAbnXv`rXQJ`AJltfZHAbJtArdXv`dQZ|`vXntArdnXv`bHAZr˂p~HXHAZdnvpے`JXf~HbHAbdQZ|ے`JX|ZdQf~HdrtAJvpf|ZdQbf~Hp˂rZHAbv`frtAJfH~Qr˂pfpvZp˂drtQr˂pbtlfpvltbH~ftlJfpvXQJ`ےے`JXQ~HfpbdQZ|f`vXZHAbnXv`rXQJ`AJltZHAbJtArdnXv`pdQZ|`vXntArdnXv`bHAZr˂pvnXdrtAnvpے`JXf~HbHAbdQZ|ے`JX|ZdQvndrtAJvpf|ZdQbf~Hp˂rZHAbv`fJltfH~Qr˂pfpvZp˂drtQr˂pbtlrXQJ`pbdQZ|H~ftlJfpvXQJ`ےے`JXQ~HXvbdQZ|f`vXZHAۅnXv`rXQJ`AJltZHAbJtArd˂rXdrtZHAbtArdnXv`bHAZr˂p`f~drtAJnvp`JXQf~HbHAbdQZ|ے`JX|ZdQQJ`ےAJltے`JXQ|ZdQbf~Hp˂r|ZdQbHfpvbdQZfH~rbtlfpvZp˂dtAQr˂pbtlbHAZpbdQZ|r˂ptlJfpvXQJ`ےtlJnXv|drf`vXJtAdnXv`rXQJ`JltZHAbJtArd˂drtZHAbtArdnXv`bHAZtArd`f~tAJlnvp|ZdQf~HbHAbnvpے`JX|ZdQbHAZpAJbdQے`JXQ|ZdQbf~Hp˂r|ZdQbHXv`tbdQZfH~btlfpvZp˂fHQr˂pbtlrXQZ|dr˂ptlJfpvXQJ`ےtlJf~H|drf`vXJtArdnXv`rXQJ`f`vXZHAbJtArdJ`ےrtAJlZHAbtArdnXv`bHAZtArdfpvtAJbdnvp|ZdQf~HbHAnvpے`JX|ZdQbHAZptbdQے`JXQ|ZdQbf~Hp˂r|ZdQbnXv`QZ|dfH~btlfpvZp˂fH~Qr˂pbtlbHZ|AJr˂ptlJfpvXQJ`ےtlJf~HrtAJlf`vXJtArdnXv`rXQJ`f`vXZHAbJtArdAZp˂ltbZHAbtArdnXv`bHAZtArdXv`ftbdnvp|ZdQf~HbHAnvpے`JX|ZdQrXQJ`nvpے`JXQ|ZdQbfHfp˂r|ZdQb~HfQZ|dfH~btlfpvZp˂fH~Qr˂pbtlےbHfHfr˂ptlJpvnXQJ`ےtlJpvnrtAJfZHAbJtArdnXv`rXQJ`f`vXZHAbJtArdAZp˂`vXnZHAbtArdrXQJ`bHAZtArdXv`pbdQZ|ے`JX|ZdQf~HbHAnvpے`JX|ZdQbHAvpfے`JXQ|ZdQbےHAZdrtAJlt`vXnZHAbtArdXQJ`ےvXnZHAbArd|QJ`ےJltvXnJtAd|f~HltbvXnHAbےXv`fJ`ےltbHAbےrd|v`pvZ|dvXnrd|v`fJ`ےvXnZHAbpfH~bdQZ|vpfے`JXQf~HbHAZvpfH`JXQZdQbtbHAZpbdQZ|vpfHZdQbtfpvdQZ|vpfH`JXQr~HfbHAZpdQZ|`JXQrZdQbtnrXQrtAJbvpfHZdQbt~HfpbHAZpvpfH`JXQf۝`vdrtAH~fr˂pXv`fp˂~f`r˂plJt˂rXdrtA~f`lJtnXv`drtAJ~f`˂pZpvn˂rXQdrtAJ˂pZlJtAJ`p˂dQZ|~fZHlJtAvnXrXQ~f`r˂pXnvˍJlt`vXnZHAb~HfbHAZpvXnZHAbArd|QJ`ےJltvXnArd|f~HbdQZ|vXnHAے`Xv`fJ`ےltbHAbےrd|rXQJdrtAJAbے`rd|v`fJ`ےvXnZHAbpfH~bdQZ|vpfے`JXQpvn˂rXQvpfH`JXQZdQbtbHAZpbdQZ|vpfHZdQbtXv`ˁdrtvpfHJXQrb~HfbHAZpdQZ|`JXQrZdQbt`ےbltbJXQrZdQbt~HfpbHAZdvpfH˂pZHf۝`vdrtAH~fr˂pXv`fJ`ے~f`r˂plJt˂rXdrtA~f`lJtf~HAJlt~f`tlJpvn˂rXQdtAJl˂pZlJtAHAZp˂dQZ|˂pZHlJtAvnXrtAJl~f`Abے`XnvˍJlt`vXnZHAb~HXbHAZpvXnZHAbArdQJ`ےJltvXnArd|fpvbdQZ|vXntAd|Xv`fJ`ےtbnHAbےrd|bHAdrtAJAbے`rd|v`ftbdvXnہJXQrpfH~bdQZ|vpfے`JXQv`f˂bvpfH`JXQf~HbHAZpbdQZ|vpfHZdQbtnXv`ˁdrtvpfHZdQbt~HfbHAZpvpf`JXQrZdQbtZp˂bdQZ|JXQrZdQbt~HfpQZ|dvpfH˂p`Zf۝`vdrtAH~fr˂p~HfpHAZd~f`r˂pfpv˂rXdrtA~flJtf~HXAJbdQ~f`lJtApvn˂rXQHf`˂pZlJtArXQJ`drt˂pZHlJtAvnXrtAJl~f`QXb㉀XnvˍJlt`vXnZHAےvnXrtAJvXnZHAbnXv`QJ`ےJltZHAbArd|v`fZ|dvXnrd|Xv`fJ`ےvXnHAbےrd|ےbHAAJltAbے`rd|v`ftbdvXnۑpJAHrpfH~bdQZ|vpf`JXQrv`fbdQZ|vpfH`JXQf~HbHAZpbdQZ|`JXQZdQbt~HfprtAJlvpfHZdQbt~HfbHAZpvpfH`JXQrZdQbtZp˂bdQZ|JXQrZdQbt~HfpQZ|dvpfH󙐂ˁ`Zf۝`vdrtAH~fbtl~HXvdrtA~f`r˂pfpv˂rXdrtAr˂plJtvnXtbdQ~f`lJtApvn˂rXQ~f`˂pZlJtAbHAZAJl˂pZHlJtAvnXrtAJl~f`QXAHrXnvˍJlt`vXnJtAd`f~JltvXnZHAbnXv`QJ`ےJltZHAbArd|v`pZ|dvXnrd|Xv`fJ`ےvXnHAbےrd|p˂rtbnAbے`rd|v`ftbdvXnېˁ`ZQpfH~bdQZ|vpf|ZdQbHfpvbdQZ|vpfH`JXQf~HbHAZpbdQZ|`JXQZdQbtvnrXrtAJvpfHZdQbt~HfbHAZpvpfH`JXQrZdQbtXQJ`ےvpfHJXQrZdQbtHfpQZ|dvpfHXb㉀ۑf۝`vdrtAH~ftlJnXvdrtAJ~f`r˂pfpv˂rXdrtAr˂plJtQJ`pbdQZ|~fZlJtApvn˂rXQ~f`˂pZlJtAbHAZf`˂pZHlJtAvnrXrtAJl~f`pJAHrXnvˍJlt`vXntArd`f~bdQZvXnZHAے`nXv`QJ`ےJltZHAbArd|rXQdrtAHAbےrd|Xv`fJ`ےvXnHAbےrd|p˂vXnAbے`rd|QJ`ےtbdvXnېˁ`ZQp|drbdQZ|vpf|ZdQbHXv`|drvpfHJXQrf~HbHAZpbdQZ|`JXQZdQbtJ`ےJlt`JXQrZdQbt~HfbHAZvpfH`JXQrZdQbtbHAZpvpfHJXQrZdQbtHAZpQZ|dvpfHXAHr󙐂QtJldrtAH~ftlJf~HtAJl璅~f`btlfpv˂rXdtAJlr˂plJtbHAZpbdQZ|˂pZlJtApvndrtAJ~f`˂pZlJtA˂rXQ~f`˂pZHlJtArXQrtAJl~f`ˁ`ZQXbtbAdZJlt`vXntArdfpvtbdQZvXnJtAd|nXv`QJ`ےtbZHAbArd|bHdrtAJHAbےrd|Xv`fltbvXnHAbےrdfJ`ےvXnAbے`rd|J`ےtbdvXn㉀ۑpJ|drbdQZ|vpf|ZdQbnXv`|drvpfHZdQbtf~HbHAZpnvp`JXQZdQbtAZp˂bdQZ`JXQrZdQbt~HfdQZ|vpfH`JXQr~HXbHAZpvpfHJXQrZdQbtbHAZpQZ|dvpfHAHr󙐂QtJldrtAH~ftlJf~HtAJbd~f`lJtfpv˂rXfHf`r˂plJtrXQJ`|dr˂pZlJtApvndrtAJ~f`˂pZv`f˂b~f`˂pZHlJtArXQrtAJl~f`ˁ`ZQXAtbAdZJltZHAbtArdXv`fQZ|dvXnArd|nXv`QJ`ےvXnZHAbArd|ےbHtAJlHAbےrd|Xv`fltbvXnHAbے~HfpHAZp˂vXnAbے`rd|J`ےtbdvXnHr󙐂ˁ|drbdQZ|ے`JXQ|ZdQb~HfrtAJlvpfHZdQbtf~HbHAZpvpfH`JXQZdQbtAZp˂tbdQZ`JXQrZdQbt~HfdQZ|vpfH`JXQrvnXrXQJvpfHJXQrZdQbtbHAZpQZ|dvpfH`ZQXbQtJldrtAr˂ptlJpvntbd~f`lJtfpv˂rX~f`r˂plJtbHA|AJl˂pZlJtApvndrtAJ~f`˂pZv`f`ےb~f`˂pZHlJtArXQrtAJl~f`ۑpJAtbAdZJltZHAbtArdXv`pQZ|dvXnArd|nXv`QJ`ےvXnZHAbArd|Zp˂tbnHAbےrd|Xv`fltbvXnHAbے~HXvHAZp˂vXnAbے`rdfJ`ےtbdvXnHr󙐂ˁ|drbdQZ|ے`JXQ|ZdQbvnrrtAJvpfHZdQbtf~HbHAZpvpfH`JXQZdQbtrXQJ`ۀvpf`JXQrZdQbtHfpdQZ|vpfH`JXQr`f~bHAvpfHJXQr~HfpbHAZpQZ|dvpfH`ZQXAHrQtJldrtAr˂ptlJXQJ`pbdQZ|~flJtfpv˂rX~f`r˂plJtbHAHf`˂pZlJtAvnrdrtAJ~f`˂pZHfpvZdr~f`˂pZHvnXrXQrtAJl~fr󙐂ˁ`ZtbAdZJltZHAbtArd˂rXQdrtAZHAbArd|nXv`QJ`ےvXnZHAbArd|Zp˂vXnHAbےrd|XQJ`ےltbvXnHAے`nXvtAJbdvXnAbے`v`fJ`ےtbd˂pZHQXb㉀|drbdQZ|ے`JXQ|ZdQbJ`ےJlt`JXQZdQbtf~HbHAZvpfH`JXQZdQbtbHAZpvpfH`JXQrZdQbtHAZpdQZ|vpfHJXQrb`f~QZ|dvpfHJXQr~HfpbHAZpQZ|dAbے`ۑpJAHrQtJldtAJr˂ptlJbHAZpbdQZ|r˂plJtfpvdrtA~f`r˂plJt˂rX~f`˂pZlJtA˂rXQdrtAJ~f`tlJHXv`rtAJl~f`˂pZHvnXrXQrtAJlJXQr󙐂ˁ`tbAdZltbZHAbtArd˂bdrtAZHAbArd|nXv`JltvXnZHAbArdQJ`ےvXnHAbےrd|J`ےltbvXntAd|f~HtbdvXnAbے`v`fJ`ےtbd˂pZHpfH~|drnvpے`JXQ|ZdQbHAZp˂JbdQ`JXQZdQbtf~HbdQZ|vpfH`JXQf~HXbHAZpvpfH`JXQrZdQbtbHAZpdQZ|vpfHZdQbtfpvQZ|dvpfHJXQr~HfpbHAZpQZ|dAbːf۝`vQtJlfHfr˂ptlJrXQJZ|dr˂plJtfpvdrtA~f`r˂pv`f˂~f`˂pZlJtA˂rXQdrtAJ~f`lJtAnXv`rtAJ~f`˂pZHvnXrXQrtAJlpZHAXnvˍtbAdZ`vXnZHAbtArd`ےbrtAJlZHAbArd|nXv`JltvXnZHAbە~HfpbHAZpvXnHAbےrd|J`ےltbvXnrd|f~HbdQZ|vXnAے`v`fJ`ےtbdbے`pfH~|drvpfے`JXQ|ZdQbHAZp˂tbdQ`JXQZdQbtf~HbdQZ|vpfH`JXQvnXrXQvpfH`JXQrZdQbtbHAZpdQZ|vpfHZdQbtXv`fdrtAvpfHJXQrbt~HfpbHAZpQZ|dJXQrːf۝`vQtJlH~fr˂ptlJbHAZ|AJlr˂plJtfpvdrtA~f`r˂pv`fJ`ے~f`˂pZlJtA˂rXQdrtAJ~f`lJtA~HfJlt~f`lJtvnXrXQtAJlpZHAXnvˍtbAdZ`vXnZHAbtArdZp˂tbZHAbArd|nXv`JltvXnZHAbە~HXbHAZpvXnHAbےrdfJ`ےltbvXnrd|pvnbdQZ|vXnAd|v`fJ`ےtbnb˂ppfH~|drvpfے`JXQ|ZdQbrXQJ`nvp`JXQZdQbtfHfpbdQZ|vpfH`JXQv`f󂀉bHvpfH`JXQr~HfbHAZpdQZ|vpfHZdQbtXv`fdrtAvpfHZdQbt~HfpbHAZp˅vpfHZHAbf۝`vQtJlH~fr˂ptlJےbHAfHf`r˂plJtvndrtA~f`r˂p~HfpAZd~f`˂pZpvn˂rXQdrtAJ~fZlJtA~HXJbdQ~f`lJtAvnXrXQf`ے`JXXnvˍtbAdZ`vXnZHAbtArdZp˂vXnZHAbArd|rXQJ`JltvXnZHAے`vnXrtAJbvXnHAbےXv`fJ`ےltbHAbےrd|v`fZ|dvXnrd|v`fJ`ےvXnQr˂ppfH~|drvpfے`JXQ|ZdQbbHAZvpfH`JXQZdQbtHAZpbdQZ|vpfHJXQrv`fdQZ|vpfH`JXQr~HfbHAZpdQZ|`JXQrZdQbt~HfprtAJlvpfHZdQbt~HfpbHAZpvpfHZHAbf۝`vQtJlH~fr˂ptlJp˂r~f`r˂plJt˂rXdrtA~f`btl~HXv`drtAJ~f`˂pZpvn˂rXQdrtAJ˂pZlJtAvnXtbdQ~f`lJtAvnXrXQ~f`˂pXnvˍtbAdZ|yz{|}~~}|{z-----------............................... \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv28_3.dat b/mpdf/qrcode/data/qrv28_3.dat deleted file mode 100644 index f1fc129..0000000 --- a/mpdf/qrcode/data/qrv28_3.dat +++ /dev/null @@ -1,257 +0,0 @@ -~}~}~}~}|{|{|{|{zyzyzyzyuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklijijijijghghghghefefefefabababab_`_`_`_`^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLK~}~}~}~}|{|{|{|{zyzyzyzyuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklijijijijghghghghefefefefabababab_`_`_`_`^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLK~}~}~}~}|{|{|{|{zyzyxwxwuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklijijijijghghghghedcdcdcdabababab_`_`_`_`^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLK~}~}~}~}|{|{|{|{xwxwwwwwuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklijijijijghghghghcdcdcdcdabababab_`_`_`_`^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLK~}~}~}~}|{|{|{|{wxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklijijijijghghghghcdcdcdcdabababab______`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKGHGHGHGH~}~}~}~}|{|{|{|{wxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklijijijijgfefefefcdcdcdcdabababab`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKGHGHGHGH~}~}~}~}|{|{|{|{wxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklijijijijefefefefcdcdcdcdabababab`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKGHGHGHGH~}~}~}~}|{|{|{|{wxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklijijijijefefefefcdcdcdcdabababab`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKJIGHGHGHGG~}~}~}~}|{|{|{|{wxwxwxwwuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklihghghghefefefefcdcdcdcdabababab`_`_____\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMJIJIJIJIGGGGHGHG~}~}~}~}|{|{|{|{wwwwxwxwuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklghghghghefefefefcdcdcdcdabababab`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHG~}~}~}~}|{|{|{|{xwxwxwxwuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklghghghghefefefefcdcdcdcdabababab^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHG~}~}~}~}|{|{|{|{xwxwxwxwuvuvuvuvststststqrqrqrqropopopopmnmnmnmnkjijijijghghghghefefefefcdcdcdcdabababab^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHG~}~}~}~}|{|{|{|{xwxwxwxwuvuvuvuvststststqrqrqrqropopopopmnmnmnmnijijijijghghghghefefefefcdcdcdcdabababab^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHG~}~}~}~}|{|{|{zyxwxwxwxwuvuvuvuvststststqrqrqrqropopopopmnmnmnmnijijijijghghghghefefefefcdcdcdcdabababab^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMJIJIJIJIHGGGGGGH~}~}~}~}zyzyzyzyxwwwwwwxuvuvuvuvststststqrqrqrqropopopopmlklklklijijijijghghghghefefefefcdcdcdcdabababab^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMJIJIJIJIGHGHGHGH~}~}~}~}zyzyzyzywxwxwxwxuvuvuvuvststststqrqrqrqropopopopklklklklijijijijghghghghefefefefcdcdcdcdabababab^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMJIJIJIJIGHGHGHGH~}~}~}~}zyzyzyzywxwxwxwxuvuvuvuvststststqrqrqrqropopopopklklklklijijijijghghghghefefefefcdcdcdcdababa`_`^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMJIJIJIJIGHGHGHGH~}~}~}~}zyzyzyzywxwxwxwxuvuvuvuvststststqrqrqrqronmnmnmnklklklklijijijijghghghghefefefefcdcdcdcd_`_`____^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMJIJIJIJIGHGHGHGH~}~}~}~}zyzyzyzywxwxwxwxuvuvuvuvststststqrqrqrqrmnmnmnmnklklklklijijijijghghghghefefefefcdcdcdcd__`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIGHGHGGGG~}~}~}~}zyzyzyzywxwxwwwwuvuvuvuvststststqrqrqrqrmnmnmnmnklklklklijijijijghghghghefefefefcdcdcdcd`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIGGHGHGHG~}~}~}~}zyzyzyzywwxwxwxwuvuvuvuvststststqpopopopmnmnmnmnklklklklijijijijghghghghefefefefcdcdcdcd`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIHGHGHGHG~}~}~}~}zyzyzyzyxwxwxwxwuvuvuvuvststststopopopopmnmnmnmnklklklklijijijijghghghghefefefefcdcdcdcd`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHG~}~}~}~}zyzyzyzyxwxwxwxwuvuvuvuvststststopopopopmnmnmnmnklklklklijijijijghghghghefefefefcdcdcdcd`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHG~}~}~}~}zyzyzyzyxwxwxwxwuvuvuvuvsrqrqrqropopopopmnmnmnmnklklklklijijijijghghghghefefefefcdcdcdcd_____`_`^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHG~}~}~}~}zyzyzyzyxwxwxwxwuvuvuvuvqrqrqrqropopopopmnmnmnmnklklklklijijijijghghghghefefefefcdcdcdcd_`_`_`_`^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIGGGGGHGH|{|{|{|{zyzyzyzywwwwwxwxuvuvuvuvqrqrqrqropopopopmnmnmnmnklklklklijijijijghghghghefefefefcdcdcdcd_`_`_`_`^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIGHGHGHGH|{|{|{|{zyzyzyzywxwxwxwxutstststqrqrqrqropopopopmnmnmnmnklklklklijijijijghghghghefefefefcdcdcdcb_`_`_`_`^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIGHGHGHGH|{|{|{|{zyzyzyzywxwxwxwxststststqrqrqrqropopopopmnmnmnmnklklklklijijijijghghghghefefefefabababab_`_`_`_`^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIGHGHGHGH|{|{|{|{zyzyzyzywxwxwxwxststststqrqrqrqropopopopmnmnmnmnklklklklijijijijghghghghefefefefabababab_`______^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIGHGGGGGH|{|{|{|{zyzyzyzywxwxwxwuststststqrqrqrqropopopopmnmnmnmnklklklklijijijijghghghghefefefefabababab`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIGHGHGHGF~}~}~}~}|{|{|{|{zyzyzyzyuuuuuvuvststststqrqrqrqropopopopmnmnmnmnklklklklijijijijghghghghefefefefabababab`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIEFEFEFEF~}~}~}~}|{|{|{|{zyzyzyzyuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklijijijijghghghghefefefefabababab`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIEFEFEFEF~}~}~}~}|{|{|{|{zyzyzyzyuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklijijijijghghghghefefefefabababab`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIHGHGEFEFEFEF~}~}~}~}|{|{|{|{zyzyzyzyuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklijijijijghghghghefefefefabababab`_`_`___^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKHGHGGGGGEFEFEFEF~}~}~}~}|{|{|{|{zyzyzyzyuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklijijijijghghghghefefefefabababab___`_`_`^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:787878785656565612121212/0/0/0/0.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!         - - - -EFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:787878785656565612121212/0/0/0/0.-.-.-.-,+,+,+,+*)*)*)('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -EFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:787878785656565412121212/0/0/0/0.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -EFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:787878783434343412121212/0/0/0/0.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -EFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:787878783434343412121212/0/0/0//.-.-.-.-,+,+,+*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -EFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:787878763434343412121212////0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - EFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:5656565634343434121212120/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         EFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:5656565634343434121212120/0/0/0/.-.-.-,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         EFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:985656565634343434121212120/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - -EFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<787878785656565634343434121212120/////0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -EFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<787878785656565634343434121212120/0/0/.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -EFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;:78787878565656563434343412121212.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!       - - - -EFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>9:9:9:9:78787878565656563434343412121212.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!     - - - -EFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>9:9:9:9:78787878565656563434343412121212.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!     - - - -EFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=<9:9:9:9:78787878565656563434343412121212.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!      - - - -EFEFEFEFCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:78787878565656563434343412121212.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -EFEFEFEFCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:78787878565656563434343412121212.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -EFEFEFEFCDCDCDCDABABABAB?@?@?@?>;<;<;<;<9:9:9:9:7878787856565656343434341210/0/0.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -EFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<9:9:9:9:787878785656565634343434/0//////.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -EFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<9:9:9:9:7878787856565656343434340/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -EFEFEFEFCDCDCDCDABABABA@=>=>=>=>;<;<;<;<9:9:9:9:7878787856565656343434340/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -EFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787856565656343434340/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - -EFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787856565656343434340/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!     - - - -EFEFEFEFCDCDCDCB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787856565656343434340/0/0///.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!     - - - -EFEFEFEFABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:787878785656565634343434///0/0/0.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!      - - - -EFEFEFEFABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:787878785656565634343434/0/0/0/0.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#         - - - -EFEFEFEDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:787878785656565634343434/0/0/0/0.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#         - - - -CDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:787878785656565634343212/0/0/0/0.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#"!         - - - -CDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:787878785656565612121212/0/0/0/0.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!         - - - -CDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:787878785656565612121212//////0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!         - - - -CDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787856565656121212120/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%$#"!"!"!"!         - - - -CDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787856565656121212120/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!         - - - -CDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787856565656121212120/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!         - - - -CDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787856565656121212120/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('&%$#$#$#$#"!"!"!"!         - - - -CDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787856565656121212120/0/////.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!         - - - -~~}} NNMMGGFFrrssttuu]\\[[ZZY01122334EDDCCBBAHIIJJKKL-,,++**)`aabbccdxyyzz{{|*++,,--.-,,++**)eeffgghh }}~~ - - llkkjjii!!""##$$TTSSRRQQ99::;;<<((''&&%%||{{zzyy!!""##$$EEDDCCBBvvww}}~~ YXXWWVVU45566778A@@??>>=LMMNNOOP)((''&&%deeffggh |}}~~.//55667)((''&&%iijjkkll - - ~~}} hhggffee%%&&''((PPOONNMM==>>??@@$$##""!!xxwwvvuu%%&&''((AA@@??>> !!""##$UTTSSRRQ899::;;<=<<;;::9PQQRRSST%$$##""!hiijjkkl - - ~~}78899::;%$$##""!mmnnoopp||{{zzyyddccbbaa))**++,,LLKKJJIIAABBCCDD ttssrrqq))**++,,==<<;;::~~}}|{zy$%%&&''(QPPOONNM<==>>??@98877665TUUVVWWX! lmmnnoop }wwvvuut;<<==>>?! qqrrssttxxwwvvuu``__^^]]--..//00HHGGFFEEEEFFGGHHppoonnmm--..//0099887766xwwvvuut())**++,MLLKKJJI@AABBCCD54433221XYYZZ[[\pqqrrssttssrrqqp?@@AABBCuuvvwwxxttssrrqq\\[[ZZYY11223344DDCCBBAAIIJJKKLLtssrrqqpllkkjjii1122334455//..--tssrrqqp,--..//0IHHGGFFEDEEFFGGH100//..-\]]^^__`tuuvvwwxpoonnmmlCDDEEFFGyyzz{{||ppoonnmm XXWWVVUU55667788@@??>>==MMNNOOPP poonnmmlhhggffee55667788,,++**))poonnmml01122334EDDCCBBAHIIJJKKL-,,++**)`aabbccdxyyzz{{|lkkjjiihGMMNNOOP}}~~ - - llkkjjii!!""##$$TTSSRRQQ99::;;<<<<;;::99QQRRSSTT - - lkkjjiihddccbbaa99::;;<<((''&&%%lkkjjiih45566778A@@??>>=LMMNNOOP)((''&&%deeffggh |}}~~ - - hggffee_PQQRRSST ~~}} hhggffee%%&&''((PPOONNMM==>>??@@88776655UUVVWWXXhggffeed``__^^]]==>>??@@$$##""!!hggffeed899::;;<=<<;;::9PQQRRSST%$$##""!hiijjkkl - - ~~} _^^]]\\[TUUVVWWX - - ||{{zzyyddccbbaa))**++,,LLKKJJIIAABBCCDD44332211YYZZ[[\\ cba`__^^\\[[ZZYYAABBCCDD cba`__^^<==>>??@98877665TUUVVWWX! lmmnnoop }||{{zzy[ZZYYXXWXYYZZ[[\xxwwvvuu``__^^]]--..//00HHGGFFEEEEFFGGHH00//..--]]^^__`` - - ]]\\[[ZZXXWWVVUUEEFFGGHH]]\\[[ZZ@AABBCCD54433221XYYZZ[[\pqqrrsstyxxwwvvuWVVUUTTS\]]^^__ettssrrqq\\[[ZZYY11223344DDCCBBAAIIJJKKLL,,++**))aabbccddYYXXWWVVTTSSRRQQIIJJKKLLYYXXWWVVDEEFFGGH100//..-\]]^^__`tuuvvwwxuttssrrqSRRQQPPOeffgghhippoonnmm XXWWVVUU55667788@@??>>==MMNNOOPP((''&&%%eeffgghhUUTTSSRRPPOONNMMMMNNOOPP UUTTSSRRHIIJJKKL-,,++**)`aabbccdxyyzz{{|qppoonnm ONNMMGGFijjkkllm - - llkkjjii!!""##$$TTSSRRQQ99::;;<<<<;;::99QQRRSSTT$$##""!!iijjkkllQQPPOONNLLKKJJIIQQRRSSTT - - QQPPOONNLMMNNOOP)((''&&%deeffggh |}}~~ - - mllkkjji !!""##$FEEDDCCBmnnooppq hhggffee%%&&''((PPOONNMM==>>??@@88776655UUVVWWXX mmnnoopp !!""MMLKJIHGHHGGFFEEUUVVWWXX - - MMLKJIHGPQQRRSST%$$##""!hiijjkkl - - ~~} ihhggffe$%%&&''(BAA@@??>qrrssttuddccbbaa))**++,,LLKKJJIIAABBCCDD44332211YYZZ[[\\qqrrsstt##$$%%&&GFFEEDDCDDCCBBAAYYZZ[[\\GFFEEDDCTUUVVWWX! lmmnnoop }||{{zzyeddccbba())**++,>==<<;;:uvvww}}~``__^^]]--..//00HHGGFFEEEEFFGGHH00//..--]]^^__``uuvvwwxx''(())**CBBAA@@?@@??>>==]]^^__``CBBAA@@?XYYZZ[[\pqqrrsstyxxwwvvua``__^^],--..//0:9988776~\\[[ZZYY11223344DDCCBBAAIIJJKKLL,,++**))aabbccddyyzz{{||++,,--..?>>==<<;<<;;::99aabbccdd?>>==<<;\]]^^__`tuuvvwwxuttssrrq]\\[[ZZY01122334655//..-~~}}|{z XXWWVVUU55667788@@??>>==MMNNOOPP((''&&%%eeffgghh }}~~//556677;::9988788776655eeffgghh !!"";::99887`aabbccdxyyzz{{|qppoonnm YXXWWVVU45566778-,,++**)yxwwvvuu!!""##$$TTSSRRQQ99::;;<<<<;;::99QQRRSSTT$$##""!!iijjkkll - - ~~}}8899::;;7665543244332211iijjkkll##$$%%&&76655432deeffggh |}}~~ - - mllkkjji !!""##$UTTSSRRQ899::;;<)((''&&%ttssrrqq%%&&''((PPOONNMM==>>??@@88776655UUVVWWXX mmnnooppwwvvuutt<<==>>??10//..--00//..--mmnnoopp''(())**10//..--hiijjkkl - - ~~} ihhggffe$%%&&''(QPPOONNM<==>>??@%$$##""!ppoonnmm))**++,,LLKKJJIIAABBCCDD44332211YYZZ[[\\qqrrssttssrrqqpp@@AABBCC,,++**)),,++**))qqrrsstt++,,--..,,++**))lmmnnoop }||{{zzyeddccbba())**++,MLLKKJJI@AABBCCD! llkkjjii--..//00HHGGFFEEEEFFGGHH00//..--]]^^__``uuvvwwxxoonnmmllDDEEFFGG((''&&%%((''&&%%uuvvwwxx//556677((''&&%%pqqrrsstyxxwwvvua``__^^],--..//0IHHGGFFEDEEFFGGHhhggffee11223344DDCCBBAAIIJJKKLL,,++**))aabbccddyyzz{{||kkjjiihhMMNNOOPP$$##""!!$$##""!!yyzz{{||8899::;;$$##""!!tuuvvwwxuttssrrq]\\[[ZZY01122334EDDCCBBAHIIJJKKLdcba`__^55667788@@??>>==MMNNOOPP((''&&%%eeffgghh }}~~ - - ggffee__QQRRSSTT  }}~~<<==>>?? xyyzz{{|qppoonnm YXXWWVVU45566778A@@??>>=LMMNNOOP ^]]\\[[Z99::;;<<<<;;::99QQRRSSTT$$##""!!iijjkkll - - ~~}} ^^]]\\[[UUVVWWXX~~}}@@AABBCC|}}~~ - - mllkkjji !!""##$UTTSSRRQ899::;;<=<<;;::9PQQRRSST - - ZYYXXWWV==>>??@@88776655UUVVWWXX mmnnoopp||{{zzyyZZYYXXWWYYZZ[[\\wwvvuuttDDEEFFGG~~} ihhggffe$%%&&''(QPPOONNM<==>>??@98877665TUUVVWWXVUUTTSSRAABBCCDD44332211YYZZ[[\\qqrrssttxxwwvvuuVVUUTTSS]]^^__eessrrqqppMMNNOOPP}||{{zzyeddccbba())**++,MLLKKJJI@AABBCCD54433221XYYZZ[[\ RQQPPOONEEFFGGHH00//..--]]^^__``uuvvwwxxttssrrqqRRQQPPOOffgghhii - oonnmmllQQRRSSTT -yxxwwvvua``__^^],--..//0IHHGGFFEDEEFFGGH100//..-\]]^^__` - - NMMLKJIHIIJJKKLL,,++**))aabbccddyyzz{{||ppoonnmm NNMMGGFFjjkkllmm -  - - kkjjiihhUUVVWWXX - uttssrrq]\\[[ZZY01122334EDDCCBBAHIIJJKKL-,,++**)`aabbccd GGFFEEDDMMNNOOPP((''&&%%eeffgghh }}~~ - - llkkjjii!!""##$$EEDDCCBBnnooppqq - - ggffee__YYZZ[[\\qppoonnm YXXWWVVU45566778A@@??>>=LMMNNOOP)((''&&%deeffgghCCBBAA@@QQRRSSTT$$##""!!iijjkkll - - ~~}} hhggffee%%&&''((AA@@??>>rrssttuu ^^]]\\[[]]^^__ee - - mllkkjji !!""##$UTTSSRRQ899::;;<=<<;;::9PQQRRSST%$$##""!hiijjkkl??>>==<>??@98877665TUUVVWWX! lmmnnoop !!";;::9988YYZZ[[\\qqrrssttxxwwvvuu``__^^]]--..//0099887766 - - VVUUTTSSjjkkllmmeddccbba())**++,MLLKKJJI@AABBCCD54433221XYYZZ[[\pqqrrsst"##$$%%&77665543]]^^__``uuvvwwxxttssrrqq\\[[ZZYY1122334455//..--~~}}|{zy RRQQPPOOnnooppqqa``__^^],--..//0IHHGGFFEDEEFFGGH100//..-\]]^^__`tuuvvwwx&''(())*210//..-aabbccddyyzz{{||ppoonnmm XXWWVVUU55667788,,++**))xwwvvuut`__^^]]\-..//001HGGFFEEDEFFGGHHI0//..--,]^^__``auvvwwxxy'(())**+0//..--,bbccddeezz{{||}} oonnmmll !!WWVVUUTT66778899++**))((wvvuutts"##$$%%&SRRQQPPO:;;<<==>;::99887RSSTTUUV#""!! jkkllmmn'(())**+)((''&&%\[[ZZYYX12233445DCCBBAA@IJJKKLLM,++**))(abbccddeyzz{{||}+,,--../,++**))(ffgghhii ~~ - - kkjjiihh""##$$%%SSRRQQPP::;;<<==''&&%%$$srrqqppo&''(())*ONNMMLLK>??@@AAB76655443VWWXXYYZnooppqqr+,,--../%$$##""! !XWWVVUUT56677889@??>>==>??@@AA##""!! onnmmllk*++,,--.KJJIIHHGBCCDDEEF3221100/Z[[\\]]^rssttuuv/5566778! !""##$$%TSSRRQQP9::;;<<=<;;::998QRRSSTTU$##""!! ijjkkllm - - ~~}}w899::;;<$##""!! nnooppqq{{zzyyxxccbbaa``**++,,--KKJJIIHHBBCCDDEEkjjiihhg.//00112GFFEEDDCFGGHHIIJ/..--,,+^__``aabvwwxxyyz899::;;<%&&''(()POONNMML=>>??@@A87766554UVVWWXXY mnnooppqwvvuutts<==>>??@ rrssttuuwwvvuutt__^^]]\\..//0011GGFFEEDDFFGGHHIIgffeedcb23344556CBBAA@@?JKKLLMMN+**))(('bccddeefz{{||}}~<==>>??@)**++,,-LKKJJIIHABBCCDDE43322110YZZ[[\\]qrrssttusrrqqppo@AABBCCDvvwwxxyyssrrqqpp[[ZZYYXX22334455CCBBAA@@JJKKLLMMa`__^^]]6778899:?>>==<<;NOOPPQQR'&&%%$$#fgghhiij ~xxw@AABBCCD-..//001HGGFFEEDEFFGGHHI0//..--,]^^__``auvvwwxxyonnmmllkDEEFFGGMzz{{||}} oonnmmll !!WWVVUUTT66778899??>>==<;::99887RSSTTUUV#""!! jkkllmmn - - wvvuuttsDEEFFGGM 12233445DCCBBAA@IJJKKLLM,++**))(abbccddeyzz{{||} kjjiihhgMNNOOPPQ~~ - - kkjjiihh""##$$%%SSRRQQPP::;;<<==;;::9988RRSSTTUU - - XXWWVVUU>??@@AAB76655443VWWXXYYZnooppqqrsrrqqppoMNNOOPPQ - - 56677889@??>>==>??@@AA77665544VVWWXXYYTTSSRRQQBCCDDEEF3221100/Z[[\\]]^rssttuuvonnmmllkQRRSSTTU - - 9::;;<<=<;;::998QRRSSTTU$##""!! ijjkkllm - - ~~}}| ^]]\\[[ZUVVWWXXY {{zzyyxxccbbaa``**++,,--KKJJIIHHBBCCDDEE33221100ZZ[[\\]] - -PPOONNMMFGGHHIIJ/..--,,+^__``aabvwwxxyyzkjjiihhgUVVWWXXY =>>??@@A87766554UVVWWXXY mnnooppq|{{zzyyxZYYXXWWVYZZ[[\\]wwvvuutt__^^]]\\..//0011GGFFEEDDFFGGHHII//..--,,^^__``aa LKJIHGGFJKKLLMMN+**))(('bccddeefz{{||}}~ -gffee__^YZZ[[\\]ABBCCDDE43322110YZZ[[\\]qrrssttuxwwvvuutVUUTTSSR]^^__eefssrrqqpp[[ZZYYXX22334455CCBBAA@@JJKKLLMM++**))((bbccddeeFEEDDCCBNOOPPQQR'&&%%$$#fgghhiij ~ - ^]]\\[[Z]^^__eefEFFGGHHI0//..--,]^^__``auvvwwxxytssrrqqpRQQPPOONfgghhiij oonnmmll !!WWVVUUTT66778899??>>==<RSSTTUUV#""!! jkkllmmn - - ~~}}||{ZYYXXWWVfgghhiijIJJKKLLM,++**))(abbccddeyzz{{||} poonnmml !NMMGGFFEjkkllmmn - - kkjjiihh""##$$%%SSRRQQPP::;;<<==;;::9988RRSSTTUU##""!! jjkkllmm>==<<;;:VWWXXYYZnooppqqr{zzyyxxwVUUTTSSRjkkllmmn MNNOOPPQ(''&&%%$effgghhi }~~ - - lkkjjiih!""##$$%EDDCCBBAnooppqqrggffeedd&&''(())OONNMMLL>>??@@AA77665544VVWWXXYYnnooppqq !!""##:9988776Z[[\\]]^rssttuuvwvvuuttsRQQPPOONnooppqqr !!""##$QRRSSTTU$##""!! ijjkkllm - - ~~}}| hggffeed%&&''(()A@@??>>=rssttuuvccbbaa``**++,,--KKJJIIHHBBCCDDEE33221100ZZ[[\\]]rrssttuu$$%%&&''65543210^__``aabvwwxxyyzsrrqqppoNMMGGFFErssttuuu$%%&&''(UVVWWXXY mnnooppq|{{zzyyxdccbbaa`)**++,,-=<<;;::9vww}}~~__^^]]\\..//0011GGFFEEDDFFGGHHII//..--,,^^__``aavvwwxxyy(())**++//..--,,bccddeefz{{||}}~ -onnmmllk !!"EDDCCBBAuttssrrq())**++,YZZ[[\\]qrrssttuxwwvvuut`__^^]]\-..//00198877665~[[ZZYYXX22334455CCBBAA@@JJKKLLMM++**))((bbccddeezz{{||}},,--..//++**))((fgghhiij ~ - kjjiihhg"##$$%%&A@@??>>=qppoonnm,--..//0]^^__``auvvwwxxytssrrqqp\[[ZZYYX122334455//..--,~}}|{zyx !!WWVVUUTT66778899??>>==<>??@@AA77665544VVWWXXYYnnooppqqvvuuttss==>>??@@rssttuuvwvvuutts_^^]]\\[.//001125//..--,eddccbba899::;;>??@@A$##""!! oonnmmll**++,,--KKJJIIHHBBCCDDEE33221100ZZ[[\\]]rrssttuurrqqppooAABBCCDDvwwxxyyzsrrqqppo[ZZYYXXW23344556,++**))(a``__^^]<==>>??@mnnooppq|{{zzyyxdccbbaa`)**++,,-LKKJJIIHABBCCDDE kkjjiihh..//0011GGFFEEDDFFGGHHII//..--,,^^__``aavvwwxxyynnmmllkkEEFFGGMMz{{||}}~ -onnmmllk !!"WVVUUTTS6778899:(''&&%%$]\\[[ZZY@AABBCCDqrrssttuxwwvvuut`__^^]]\-..//001HGGFFEEDEFFGGHHIggffeedc22334455CCBBAA@@JJKKLLMM++**))((bbccddeezz{{||}} jjiihhggNNOOPPQQ ~ - kjjiihhg"##$$%%&SRRQQPPO:;;<<==>$##""!! YXXWWVVUDEEFFGGHuvvwwxxytssrrqqp\[[ZZYYX12233445DCCBBAA@IJJKKLLMba`__^^]66778899??>>==<??@@AAB UTTSSRRQHIIJJKKLyzz{{||} poonnmml !XWWVVUUT56677889@??>>==>??@@AA77665544VVWWXXYYnnooppqq{{zzyyxxYYXXWWVVZZ[[\\]]wvvuutts_^^]]\\[.//00112GFFEEDDCFGGHHIIJMLLKKJJIPQQRRSST~~}}| hggffeed%&&''(()POONNMML=>>??@@A87766554UVVWWXXYUTTSSRRQBBCCDDEE33221100ZZ[[\\]]rrssttuuwwvvuuttUUTTSSRR^^__eeffsrrqqppo[ZZYYXXW23344556CBBAA@@?JKKLLMMN IHHGGFFETUUVVWWX|{{zzyyxdccbbaa`)**++,,-LKKJJIIHABBCCDDE43322110YZZ[[\\] -QPPOONNMFFGGHHII//..--,,^^__``aavvwwxxyyssrrqqppQQPPOONNgghhiijj -onnmmllk !!"WVVUUTTS6778899:?>>==<<;NOOPPQQR - - -EDDCCBBAXYYZZ[[\xwwvvuut`__^^]]\-..//001HGGFFEEDEFFGGHHI0//..--,]^^__``a - MLKJIHGGJJKKLLMM++**))((bbccddeezz{{||}} oonnmmll !!MMGGFFEEkkllmmnn - kjjiihhg"##$$%%&SRRQQPPO:;;<<==>;::99887RSSTTUUV - A@@??>>=\]]^^__`tssrrqqp\[[ZZYYX12233445DCCBBAA@IJJKKLLM,++**))(abbccddeFFEEDDCCNNOOPPQQ''&&%%$$ffgghhii ~~ - - kkjjiihh""##$$%%DDCCBBAAooppqqrrgffeeddc&''(())*ONNMMLLK>??@@AAB76655443VWWXXYYZ=<<;;::9`aabbccdpoonnmml !XWWVVUUT56677889@??>>==>==ssttuuvvcbbaa``_*++,,--.KJJIIHHGBCCDDEEF3221100/Z[[\\]]^98877665deeffgghlkkjjiih!""##$$%TSSRRQQP9::;;<<=<;;::998QRRSSTTU$##""!! ijjkkllm>>==<<;;VVWWXXYYnnooppqq{{zzyyxxccbbaa``**++,,--<<;;::99ww}}~~_^^]]\\[.//00112GFFEEDDCFGGHHIIJ/..--,,+^__``aab54433221hiijjkklhggffeed%&&''(()POONNMML=>>??@@A87766554UVVWWXXY mnnooppq !!""#::998877ZZ[[\\]]rrssttuuwwvvuutt__^^]]\\..//001188776655~~[ZZYYXXW23344556CBBAA@@?JKKLLMMN+**))(('bccddeef !!""#100//..-lmmnnoopdccbbaa`)**++,,-LKKJJIIHABBCCDDE43322110YZZ[[\\]qrrssttu#$$%%&&'66554321^^__``aavvwwxxyyssrrqqpp[[ZZYYXX22334455//..--,,}}|{zyxw !!"WVVUUTTS6778899:?>>==<<;NOOPPQQR'&&%%$$#fgghhiij#$$%%&&'-,,++**)pqqrrssttuuZHAbtArd~HXvbHAZpnvpZHAbbtlf~HrXQJ`ہdrtnvpZHAbbtlbHAZpˁdrtH~fے`JXQtArdp˂rbdQZ|`vXnr˂p|ZdQbfpvے`JXQ|ZdQb`f~˂bfH~˙ے`JXJtArdfpvbHAAJltfH~˙ے`JXJtArdbHAJlt`vXnr˂pf~HXQJ`ےdrtAvpfZHAbtlJnXv`r˂ptlJHfpvHAZdf`vXQr˂p|ZdQnXv`Zp˂bdQZ|f`vXQr˂pf~HAZp˂bdQZ|vpfZHAےfpvbHAZJltH~fے`JXQtArdf~HZHAbtArdnXvrtAJnvpZHAbbtlf~HrXQJ`ہdrtnvpZHAۅXv`ˉrXQJ`drtH~f`JXQrnXv`p˂rbdQZ|`vXnr˂p|ZdQbXv`fے`JXQ|ZdQb`f~bdQZ|fH~˙ے`JXJtArdfpvbHAAJltfH~˒`JXQf~HےbHAJbdQ`vXnbtlf~HXQJ`ےdrtAvpfZHAbtlJ~HfdrtAr˂ptlJHXv`drtAf`vXQr˂p|ZdQnXv`Zp˂bdQZ|f`vXrbtlfpvAZp˂Z|dvpfJtAdfpvbHAZJltH~fے`JXQtArdpvnJltZHAbtArdf~HJltnvpZHAbbtlf~HrXQJ`ہdrtnvpJtAdnXv`ˉbHArtAJlH~f|ZdQbnXv`p˂rbdQZ|`vXnr˂p|ZdQbXv`pbdQZ|ے`JXQ|ZdQbfpvbdQZ|fH~˙ے`JXJtArdfpvbHAAJltfH~˂|ZdQf~HXZp˂tbdQZHAbtlJf~HXQJ`ےdrtAvpfZHAbtlJvnrdrtAJr˂ptlJnXv`drtAJf`vXQr˂p|ZdQnXv`Zp˂bdQZ|fZHAbbtlv`frXQJ`Z|AJے`JXQtArdfpvbHAZJltH~fے`JXQtArdXQJ`pbdQZZHAbtArdf~HbdQZnvpZHAbbtlf~HrXQJ`ہdtAے`JXJtArd~HfpbHAltbr˂p|ZdQbnXv`p˂rbdQZ|`vXnr˂p|ZdQb˂rXQ|drے`JXQ|ZdQbXv`f|drfH~˙ے`JXJtArdfpvbHAJltQr˂p|ZdQvnXZp˂nvpZHAbtlJf~HXQJ`ےdrtAvpfZHAbtlJJ`ےtAJlr˂ptlJ~HftAJlf`vXQr˂p|ZdQnXv`Zp˂bnvpZHAbbtlv`fbHAZpfHfے`JXQtArdfpvbHAZJltH~fے`JXQtArdbHAZptbdQZZHAbtArdpvntbdQZnvpZHAbbtlf~HrXQJ`۝fH˙ے`JXJtArd~HX˂rX`vXnr˂p|ZdQbnXv`p˂rbdQZ|`vXnr˂p|ZdQb˂b|drے`JXQ|ZdQbXv`p|drfH~˙ے`JXJtArdfpvbHAf`vXQr˂p|ZdQv`fQJ`ےvpfZHAbtlJf~HXQJ`ےdrtAvpfZHAbtlJHAZp˂tAJbdr˂ptlJ˂rXQtAJbdf`vXQr˂p|ZdQnXv`ZdrtnvpZHAbbtl~HfpۙbHAZpH~fے`JXQtArdfpvbHAZJltH~fے`JXQtArdrXQJQZ|dZHAbtArdJ`ےQZ|dnvpZHAbbtlfHAJltfH~˙ے`JXJtArdvnX˂`vXnr˂p|ZdQbnXv`p˂rbdQZ|`vXnr˂p|ZdQb`ےbrtAJlے`JXQ|ZdQbbHAZprtAJlfH~˙ے`JXJtArdfpvbdQZ|f`vXQr˂p|ZdQv`fbHAZdvpfZHAbtlJf~HXQJ`ےdrtAvpfZHAbtlJHAZp˂tbdr˂ptlJ˂btbdf`vXQr˂p|ZdQnrXQJ`drtnvpZHAbbtl~HXv`rtAJH~fے`JXQtArdfpvbHAZJltH~fے`JXQtArdbHAQZ|dZHAbtArdHAZp˂QZ|dnvpZHAbbtlےHAAJltfH~˙ے`JXJtArdf~HbdQZ|`vXnr˂p|ZdQbnXv`p˂rbdQZ|`vXnr˂pf~HZp˂rtAJے`JXQ|ZdQbrXQJrtAJfH~˙ے`JXJtArdZp˂bdQZ|f`vXQr˂p|ZdQfpvdrtAvpfZHAbtlJf~HXQJ`ےdrtAvpfZHAےXv`frXQJ`bdQZ|r˂ptlJ`ےbbdQZ|f`vXQr˂pf~HrXQJ`ہdrtnvpZHAbbtlnXv`JltH~fے`JXQtArdfpvbHAZJltH~f`JXQr~HfےbHAdrtAZHAbtArdHAZp˂drtAnvpZHAۅfpvbHAAJltfH~˙ے`JXJtArdf~HbdQZ|`vXnr˂p|ZdQbnXv`p˂rbdQZ|`vXnbtlpvnZp˂Jltے`JXQ|ZdQbbHAJltfH~˒`JXQnXv`Zp˂bdQZ|f`vXQr˂p|ZdQXv`drtAvpfZHAbtlJf~HXQJ`ےdrtAvpfJtAdXv`fbHAZbdQZ|r˂ptlJZp˂bdQZ|f`vXrbtlf~HrXQJ`ہdrtnvpZHAbbtlf~HJbdQH~fے`JXQtArdfpvbHAZJltH~f|ZdQb~HXp˂rdrtAZHAbtArdrXQJ`drtAnvpJtAdfpvbHAAJltfH~˙ے`JXJtArdfpvZ|d`vXnr˂p|ZdQbnXv`p˂rbdQZ|ZHAbtlJv`fXQJ`ےJbdQے`JXQf~HےbHAJbdQfH~˂|ZdQnXv`Zp˂bdQZ|f`vXQr˂p|ZdQnXv`prtAJl瀅vpfZHAbtlJf~HXQJ`ےdtAJے`JXQtArd~HfpbHAZZ|dr˂pXv`fZp˂Z|dfZHAbbtlf~HrXQJ`ہdrtnvpZHAbbtlvntbdQH~fے`JXQtArdfpvbHAZltbr˂p|ZdQbvnXp˂rtAJlZHAb~HfbHAZrtAJlے`JXJtArdfpvbHAAJltfH~˙ے`JXJtArdrXQJ`pZ|d`vXnr˂p|ZdQbnXv`p˂rnvpZHAbtlJv`fbHAZptbdQے`JXQpvnp˂rtbdQQr˂p|ZdQnXv`Zp˂bdQZ|f`vXQr˂p|ZdQ˂rXrtAJbvpfZHAbtlJf~HXQJ`ےfHfے`JXQtArd~HXv˂rXQZ|AJlr˂pXv`fXQJ`ےZ|dnZHAbbtlf~HrXQJ`ہdrtnvpZHAbbtlQJ`ےdQZ|H~fے`JXQtArdfpvbHAZ`vXnr˂p|ZdQb`f~J`ےtb|ZdQb~HXbHAZvf˙ے`JXJtArdfpvbHAAJltfH~˙ے`JXJtArdbHAZpdrtAJ`vXnr˂p|ZdQbnXv`drtAvpfZHAbtlJHfpvbHAZpnvptlJv`fp˂f`vXQr˂p|ZdQnXv`Zp˂bdQZ|f`vXQr˂p|ZdQ˂ltbvpfZHAbtlJfHfJltH~fے`JXQtArdnXv˂bfHf`tArd~HfpbHAZpnvpZHAbbtlf~HrXQJ`ہdrtnvpZHAbbtlbHAZpdQZ|H~fے`JXQtArdpvnbdQZ|`vXnr˂p|ZdQb`f~HAZdvXn|ZdQbvnX˂rXQfH~˙ے`JXJtArdfpvbHAAJltfH~˙ے`JXJtArdrXQdrtAJ`vXnr˂p|ZdQbrXQJ`drtAvpfZHAbtlJHXv`rtAJvpfHtlJv`fJ`ےf`vXQr˂p|ZdQnXv`Zp˂bdQZ|f`vXQr˂p|ZdQJ`ے㒉bdQZ|vpfZHAbtlJےHAZJltH~fے`JXQtArdf~HbdQZ|~f`vXnr˂pZdQbtnXv`ˑ˂rXbdQZ|vXnr˂pZdQbtےbHbdQZ|vpfHHAbےlJtAHAZpltb~f``JXQrrd|~HfQZ|dvXnۉ˂pZHZdQbtv`frXQQZ|dvXnpJAHrf۝`vvpfHZHAbۉlJtf~HQJ`ےdrtAvpfHZHAbۉlJtAZp˂drtA~f``JXQrrdf˂rXQdQZ|vXn˂pZZdQbtpvnrtAJlvpfHAbے`lJtA~HfpJ`ےrtAJlvpfHˁ`ZQXnvˍ~f``JXQArd|fpvbHAZpJlt~f``JXQArdˉbHAJltvXn˂pZ~HfJ`ےdrtAJvpfHHAbےlJtAXv`ftbd~f`JXQrrd|vnXbHAZpˑtbd~f`XAHr󙐂pfH~ㅍvXnr˂pZdQbtnXv`ˑ˂rXbdQZ|vXnr˂pf~HXZp˂bdQZ|vpfHHAے`pvnbHAZpltb~f``JXQrrd|~HXQZ|dvXnۉ˂pZHZdQbtv`frXQQZ|dvXnˁ`ZQXbf۝`vvpfHZHAbۉlJtf~HQJ`ےdrtAvpfHZHAے`v`frXQJ`ۂdrtAJ~f`JXQrbXv`f˂rXQdQZ|vXn˂pZZdQbtv`frtAJvpfHAbے`lJtA~HfpJ`ےrtAJlvpfH㉀ۑpJXnvˍ~f``JXQArd|fpvbHAZpJlt~f`JXQr~HfpbHAbdQZvXntlJ~HfJ`ےdrtAJvpfHHAbےlJtA~HfpbdQZ|~f`JXQrrd|vnXbHAZpˑtbd~frAHr󙐂pfH~ㅍvXnr˂pZdQbtnXv`ˑ˂rXbdQZ|vXnbtlvnXZp˂|drvpfHtAd|pvnbHAZpltb~f``JXQrrd|vnXdrtAvXnۉ˂pZHZdQbtv`frXQQZ|d˂pZHˁ`ZQXAf۝`vvpfHZHAbۉlJtf~HQJ`ےdrtAvpfHJtAd|v`fbHAZptAJl~fZZdQbtXv`f˂rXQdQZ|vXn˂pZZdQbtv`pvJltvpfHAbے`lJtA~HfpJ`ےtAJlAbے`Hr󙐂ˁXnvˍ~f``JXQArd|fpvbHAZpJlt~fZdQbt~HX˂rXtbdQZHAbےlJtA~HfJ`ےdrtAJvpfHHAbےlJtAnrXQbdQZ|~f`JXQrrd|vnXbHAZp˒tbnJXQr`ZQXbp|drvXnr˂pZdQbtnXv`ˑ˂rXbdQZ|ZHAbۉlJtv`fQJ`ے|AJl`JXQrrd|pvnbHAZpltb~f``JXQrrd|J`p˂drtAvXnۉ˂pZHZdQbtv`frXQvpfH˂pZHۑpJAQtJlvpfHZHAbۉlJtf~HQJ`ےdtAJl`JXQArd|~HfpۙbHAZptbn˂pZZdQbtXv`f˂rXQdQZ|vXn˂pZZdQbtrXQJJbdQvpfHAbے`lJtA~HfpJ`ےㅐf`AbHr󙐂ˁtbAdZ~f``JXQArd|fpvbHAZptbr˂pZdQbtvnX˂々vpfHAbےlJtA~HfJ`ےdrtAJvpfHHAbےlJtA`ےbZ|d~f`JXQrrd|vnXbHAZdvXnۂpZHA`ZQXAHr|drvXnr˂pZdQbtnXv`ˑ˂rXnvpZHAbۉlJtv`fbHAZpHf``JXQrrd|pvnbHAZpltb~f``JXQrrd|HAZp˂rtAJlvXnۉ˂pZHZdQbtv`frtAJlvpfHbے`󙐂ˁ`ZQtJlvpfHZHAbۉlJtf~HQJ`ےfHf``JXQArd|~HXv`rXQvXn˂pZZdQbtXv`f˂rXQdQZ|vXn˂pZZdQbtbHAtbdQvpfHAbے`lJtAHfpۑtbd~f`JXQrQXb㉀tbAdZ~f``JXQArd|fpvbHAZvXnr˂pZdQbtf~HJ`ےvpfHHAbےlJtA~HfJ`ےdrtAJvpfHHAbےlJtAZp˂Z|d~f`JXQrrd|vnrXQZ|dvXnۂpZHAۑpJAHr|drvXnr˂pZdQbtnXv`˂drtAvpfHZHAbۉlJtfpvbHAZp~f``JXQrrd|pvnbHAZpltb~f``JXQrrd|rXQJ`rtAJbvXnۉ˂pZHZdQbtQJ`ےrtAJlvpfHb˂p󙐂ˁ`QtJlvpfHZHAbۉlJtfHfpJlt~f``JXQArd|nXv`bHvXn˂pZZdQbtXv`f˂rXQdQZ|vXn˂pZZdQbtےbHAdQZ|vpfHAbے`lJtAHAZpˑtbd~f`ZHAbpfH~tbAdZ~f``JXQArd|vnbdQZ|vXnr˂pZdQbtf~HAZdvpfHHAbےlJtA~HfJ`ےdrtAJvpfHHAbےlJtAZp˂drtAJ~f`JXQrrdfrXQQZ|dvXnۙے`JXf۝`v|drvXnr˂pZdQbtrXQJ`ۂdrtAvpfHZHAbۉlJtXv`rtAJb~f``JXQrrd|pvnbHAZpltb~f``JXQrrdfbHAZltbvXnۉ˂pZH~HfpJ`ےrtAJlvpfHQr˂pXnvˍQtJlvpfHZHAbۉlJtHAZpJlt~f``JXQArd|f~HdQZ|vXn˂pZZdQbtXv`f˂rXQdQZ|vXn˂pZ~HXp˂rdQZ|vpfHAے`vnXbHAZpˑtbd~f`ZHAbpfH~tbAdZ~f``JXQArdˑ˂rXbdQZ|vXnr˂pZdQbtfpvdrtAJvpfHHAbےlJtA~HfJ`ےdrtAJvpfHHAے`v`fXQJ`ےdrtAJ~f`JXQrbtv`frXQQZ|dvXnۙ˂pf۝`v|drvXnr˂pf~HQJ`ےdrtAvpfHZHAbۉlJtnXv`ltb~f``JXQrrd|pvnbHAZpltb~f`JXQrb~HfpbHAZbdQZ|vXnۉlJt~HfpJ`ےrtAJlvpfHZHAbXnvˍQtJlvpfHZHAے`fpvbHAZpJlt~f``JXQArd|f~HXdQZ|vXn˂pZZdQbtXv`f˂rXQdQZ|vXntlJvnXp˂drtvpfHAd|vnXbHAZpˑtbd~f``JXQpfH~tbAdZ~f`JXQrnXv`ˑ˂rXbdQZ|vXnr˂pZdQbtv`fdrtAJvpfHHAbےlJtA~HfJ`ےdrtAJvpfHtAd|v`fbHAZpAJlt~fZHZdQbtv`frXQQZ|dvXnr˂pf۝`v|drvXnbtlf~HQJ`ےdrtAvpfHZHAbۉlJt~HfpbdQZ|~f``JXQrrd|pvnbHAZpltb~fZZdQbt~HXv˂rXQbdQZ|Abے`lJtA~HfpJ`ےrtAJlvpfHZHAbXnvˍQtJlvpfHJtAd|fpvbHAZpJlt~f``JXQArd|vnXdrtvXn˂pZZdQbtXv`f˂rXQdQZ|HAbےlJtA`f~J`ےAJlJXQrrd|vnXbHAZpˑtbd~f`˂pZHpfH~tbAdZ~fZdQbtnXv`ˑ˂rXbdQZ|vXnr˂pZdQbtv`pAJltvpfHHAbےlJtA~HfJ`ےdtAJl`JXQrrd|HfpvbHAZptbn˂pZHZdQbtv`frXQQZ|dvXnAbے`f۝`v|drZHAbۉlJtf~HQJ`ےdrtAvpfHZHAbۉlJtvnrXbdQZ|~f``JXQrrd|pvnbHAZptbn˂pZZdQbtnXv˂bvpfHAbے`lJtA~HfpJ`ےrtAJlvpfHJXQrXnvˍQtJl`JXQArd|fpvbHAZpJlt~f``JXQArd|QJ`pˁdrtvXn˂pZZdQbtXv`f˂rXQvpfHAbےlJtA`f~HAZp˂f`JXQrrd|vnXbHAZpˑtbd~f`˂p`ZpfH~tbAdZr˂pZdQbtnXv`ˑ˂rXbdQZ|vXnr˂pZdQbtrXQAJbdQvpfHHAbےlJtA~HfJ`ےHf``JXQrrd|HXv`rXQJvXnۉ˂pZHZdQbtv`frXQQZ|dvXnQXb㉀f۝`v|drZHAbۉlJtf~HQJ`ےdrtAvpfHZHAbۉlJtJ`ےZ|d~f``JXQrrd|pvnbHAZvXn˂pZZdQbtf~H`ےbvpfHAbے`lJtA~HfpJ`ےrtAJlvpfHۑpJAHrXnvˍQtJl`JXQArd|fpvbHAZpJlt~f``JXQArd|bHAZprtAJlvXn˂pZZdQbtXv`fdrtAJvpfHHAbےlJtAfpvHAZp˂~f`JXQrrd|vnXbHAZpˑtbd~f`󙐂ˁ`ZpfH~tbAdZr˂pZdQbtnXv`ˑ˂rXbdQZ|vXnr˂pZdQbtbHtbdQvpfHHAbےlJtAHfpltb~f``JXQrrd|nXv`bHAvXnۉ˂pZHZdQbtv`frXQQZ|dvXnQXAHrf۝`v|drZHAbۉlJtf~HQJ`ےdrtAvpfHZHAbۉlJtAZp˂Z|d~f``JXQrrd|vnrdQZ|vXn˂pZZdQbtf~HZdrvpfHAbے`lJtA~HfpJ`ےrtAJlvpfHˁ`ZQXnvˍQtJl`JXQArd|fpvbHAZpJlt~f``JXQArd|rXQJ`rtAJvXn˂pZZdQbtXQJ`ےdrtAJvpfHHAbےlJtAXv`ftAJbd~f`JXQrrd|vnXbHAZpˑtbd~f`Xb㉀ۑpfH~tbAdZ|yz{|}~~}|{z66667777777777777777777777777777777 \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv29_0.dat b/mpdf/qrcode/data/qrv29_0.dat deleted file mode 100644 index b6cc568..0000000 --- a/mpdf/qrcode/data/qrv29_0.dat +++ /dev/null @@ -1,265 +0,0 @@ -|{|{{{{{yyyyyzyzyzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopopopopopmnmnmnmnklklklklijijijijghghghghefefefefdcdcdcccbabababa`_`_`_`_^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQRQRQRQRQNMNMNMNMKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@?@?@?@?>=>=>=>=>;<;<;<;<9:9:9:9:7878787856565656{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopoponmnmnmnmnmnmnmnklklklklijijijijghghghghefefefefcccdcdcdbabababa`_`_`_`_^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQRQRQRQRQNMNMNMNMKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<9:9:9:9:7878787856565656~}{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnmnmnmnmnklklklklijijijijghghghghefefefefcdcdcdcdbabababa`_`_`_`_^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<9:9:9:9:7878787856565656~}~}~}~}{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnmnmnmnmnklklklklijijijijghghghghefefefefcdcdcdcdbabababa`_`_`_`_^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMKLKLKLKKIJIJIJIJIJIJIJIHGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<9:9:9:9:7878787856565656~}~}~}~}{|{|{|{|yzyzyzyzyxwxwxwxwxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnmnmnmnmnklklklklijijijijghghghghefefefefcdcdcdcdbabababa`_`_`_`_^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMKKKKLKLKIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<9:9:9:9:7878787856565656~}~}~}~}{|{|{|{{yzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnmnmnmnmnklklklklijijijijghghghghefefefefcdcdcdcdbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>=>=>=>=<;<;<;<;<9:9:9:9:7878787856565656~}~}~}~}{{{{|{|{yzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnmlklklklklklklklijijijijghghghghefefefefccccccdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:7878787856565656~}~}~}~}|{|{|{|{yzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklklklklklijijijijghghghghefefefefdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:7878787856565656~}~}~}~}|{|{|{|{yzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklklklklklijijijijghghghghefefefefdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKIJIJIJIJGHGHGHGHGHGHGHGFEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:7878787856565656~}~}~}~}|{|{|{|{yzyzyzyzwxwxwxwxwvuvuvuvuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklklklklklijijijijghghghghefefefefdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKKKKKKLIJIJIJIJGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:7878787856565656~}~}~}~}|{|{|{|{yzyzyzyzwxwxwxwxuvuvuvuvuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklklklklklijijijijghghghghefefefefdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<;<;<;<;:9:9:9:9:7878787856565656~}~}~}~}|{{{{{{|yzyzyzyzwxwxwxwxuvuvuvuvuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklkjijijijijijijijghghghghefefedcddcdcccccbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:9:9:9:9:7878787856543434~}~}~}~}{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklijijijijijijijijghghghghcdcdccccdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:9:9:9:9:7878787834333333~}~}~}~}{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklijijijijijijijijghghghgfccdcdcdcbabababababababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFEFEFEFEDCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:9:9:9:9:7878765643434343~}~}~}~}{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvutstststststststqrqrqrqropopopopmnmnmnmnklklklklijijijijijijijijefefefefdcdcdcdcbabababababababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMKLKLKKKKIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:9:9:9:9:5656565643434343~}~}~}~}{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststststststqrqrqrqropopopopmnmnmnmnklklklklijijijijijijijijefefefefdcdcdcdcbabababababababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMKKLKLKLKIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:9:9:9:985656565643434343~}~}~}~}{|{|{{{{yzyzyzyzwxwxwxwxuvuvuvuvststststststststqrqrqrqropopopopmnmnmnmnklklklklijijijijihghghghefefefefdcdcdcdcbabababababababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:787878785656565643434343~}~}~}~}{{|{|{|{yzyzyzyzwxwxwxwxuvuvuvuvststststststststqrqrqrqropopopopmnmnmnmnklklklklijijijijghghghghefefefefdcdcdcdcbabababababababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:787878785656565643434333~}~}~}~}|{|{|{|{yzyzyzyzwxwxwxwxuvuvuvuvststststststststqrqrqrqropopopopmnmnmnmnklklklklijijijijghghghghefefefefcccccdcdbabababa`_`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDCDCDCDCBABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:787878785656565633343434~}~}~}~}|{|{|{|{yzyzyzyzwxwxwxwxuvuvuvuvststststsrqrqrqrqrqrqrqropopopopmnmnmnmnklklklklijijijijghghghghefefefefcdcdcdcdbabababa`_`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABABABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:787878785656565634343434~}~}~}~}|{|{|{|{yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqrqrqrqrqropopopopmnmnmnmnklklklklijijijijghghghghefefefefcdcdcdcdbabababa`_`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMKKKKKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABABABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:787878785656565634343434~}~}~}~}|{|{|{|{yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqrqrqrqrqropopopopmnmnmnmnklklklklijijijijghghghghefefefefcdcdcdcdbabababa`_`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABABABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:78787878565656563434343443433333~}~}~}~}{{{{{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqrqrqrqrqropopopopmnmnmnmnklklklklijijijijghghghghefefefefcdcdcdcdbabababa`_`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABABABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:78787878565656563434343434343434~}~}~}~}{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqrqrqrqrqropopopopmnmnmnmnklklklklijijijijghghghghefefefefcdccccccbabababa`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABABABABABA@?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:78787878565656563333334334343434~}~}~}~}{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqrqpopopopopopopopmnmnmnmnklklklklijijijijghghghghefefefefdcdcdcdcbabababa`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:78787878565656564343434334343434~}~}~}~}{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopopopopopmnmnmnmnklklklklijijijijghghghghefefefefdcdcdcdcbabababa`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPONMNMLKLKKLKKKKKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:78787878565656564343434334343434~}~}~}~}{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopopopopopmnmnmnmnklklklklijijijijghghghghefefefefdcdcdcdcbabababa`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOLKLKKKKKKLKLKLKJIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:78787878565656564343434334343433~}~}|{|{{|{|{|{yyzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopopopopopmnmnmnmnklklklklijijijijghghghghefefefefdcdcdcdcbabababa`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQRQRQRQRQPOPOPONMKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787856565656434343433333434343434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -43434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -43434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)*)*)*)('('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -43434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - - - -43333343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - - - - - -43434321212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - - - - - -21212121212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - - - - - -21212121212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('('('('&%&%&%&%&%$#$#$#$#"!"!"!"!         - - - - - - - -21212121212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!         - - - - - - 21212121212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!         - - - -212121212121210/0/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!         - - - -212121210/0/0/0/0/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!         - - - -212121210/0/0/0/0/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%&%&%&%$#$#$#$#$#"!"!"!"!         - - - -212121210/0/0/0/0/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!         - - - -212121210/0/0/0/0/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!         - - - -212121210/0/0/0/0/0/0/.-.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!         - - - -212121210/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!         - - - -212121210/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#$#$#$#"!"!"!"!"!         - - - -212121210/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!"!"!"!"!         - - - -212121210/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!"!"!"!"!         - - - -212121210/0/0/0/.-.-.-.-.-.-.-,+,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!"!"!"!"!       - - - -212121210/0/0/0/.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!"!"!"!"!      - - - -212121210/0/0/0/.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!"!"!"!          - - - -212121210/0/0/0/.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!             - - - -212121210/0/0/0/.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!             - - - -212121210/0/0/0/.-.-.-.-,+,+,+,+,+,+,+*)*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!             - - - -212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!           - - - -212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -mmnnoopp~}tuuvvwwx%$$##""!LMMNNOOPMLLKKJJI$%%&&''(uttssrrqlmmnnoop-,,++**)DEEFFGGHFEEDDCCBGHHIIJJK;;::9987==>>??@@\\[[ZZYY]]^^__``<<;;::9955667788ddccbbaa }}~~ xwwvvuut uvvwwxxy$##""!! MNNOOPPQLKKJJIIH%&&''(()tssrrqqpmnnooppq,++**))(EFFGGHHIEDDCCBBAHIIJJKKQ~~}} qqrrsstt |{{zzyyx - - xyyzz{{|! PQQRRSSTIHHGGFFE())**++,qppoonnmpqqrrsst)((''&&%HIIJJKKLBAA@@??>KQQRRSST65433221AABBCCDDXXWWVVUU~~}} aabbccdd8877665599::;;<<``__^^]] - - tssrrqqp - - yzz{{||} QRRSSTTUHGGFFEED)**++,,-poonnmmlqrrssttu(''&&%%$IJJKKLLMA@@??>>=QRRSSTTU||{{zzyy - - uuvvwwxx - - xwwvvuut |}}~~TUUVVWWXEDDCCBBA,--..//0mllkkjjituuvvwwx%$$##""!LMMNNOOP>==<<;;:TUUVVWWX100//..-EEFFGGHHTTSSRRQQ ||{{zzyy - - eeffgghh44332211==>>??@@\\[[ZZYYpoonnmml }~~UVVWWXXYDCCBBAA@-..//001lkkjjiih uvvwwxxy$##""!! MNNOOPPQ=<<;;::9UVVWWXXYxxwwvvuu - - yyzz{{|| - - tssrrqqpXYYZZ[[\A@@??>>=01122334ihhggffe - - xyyzz{{|! PQQRRSST:9933221XYYZZ[[\-,,++**)IIJJKKLLPPOONNMM!!""##$$xxwwvvuuiijjkkll00//..--AABBCCDDXXWWVVUU{{zzyyxxlkkjjiihYZZ[[\\]@??>>==<12233445hggffeed - - yzz{{||} QRRSSTTU93322110YZZ[[\\]ttssrrqq }}~~poonnmml\]]^^__`=<<;;::945566778eddccbba |}}~~TUUVVWWX100//..-\]]^^__`)((''&&%MMNNOOPPLLKKJJII%%&&''((ttssrrqqmmnnoopp,,++**))EEFFGGHHTTSSRRQQ wwvvuuttgfedccbb]^^__``a<;;::99856677889dccbbaa` }~~UVVWWXXY0//..--,]^^__``appoonnmmlkkjjiih~~} `aabbccd98877665899::;;>??@]\\[[ZZY\]]^^__`)((''&&%ijjkkllm! UUVVWWXXDDCCBBAA--..//00llkkjjiiuuvvwwxx$$##""!!MMNNOOPPLLKKJJII%%&&''((oonnmmll##$$%%&&]]\\[[ZZ !|{{zzyyx - - effgghhi43322110=>>??@@A\[[ZZYYX]^^__``a(''&&%%$jkkllmmnhhggffee{{zzyyxx!!""aa``__^^ !!""##$yxxwwvvu hiijjkkl100//..-@AABBCCDYXXWWVVU~~} `aabbccd%$$##""!mnnooppqYYZZ[[\\@@??>>==11223344hhggffee - - yyzz{{|| QQRRSSTTHHGGFFEE))**++,,kkjjiicc''(())**YYXXWWVV!""##$$%xwwvvuutijjkkllm0//..--,ABBCCDDEXWWVVUUT~~}}| abbccdde$##""!!nooppqqrddccbbaa wwvvuutt##$$%%&&]]\\[[ZZ$%%&&''(uttssrrqlmmnnoop-,,++**)DEEFFGGHUTTSSRRQ }||{{zzy - - deeffggh!qrrssttu]]^^__``<<;;::9955667788ddccbbaa }}~~UUVVWWXXDDCCBBAA--..//00bbaa``__++,,--..UUTTSSRR%&&''(()tssrrqqpmnnooppq,++**))(EFFGGHHITSSRRQQP !|{{zzyyx - - effgghhirssttuuv``__^^]]!!""##$$ssrrqqpp''(())**YYXXWWVV())**++,qppoonnmpqqrrsst)((''&&%HIIJJKKLQPPOONNM !!""##$yxxwwvvu hiijjkkluvvwwxxyaabbccdd8877665599::;;<<``__^^]]YYZZ[[\\@@??>>==11223344^^]]\\[[//001122QQPONMLK)**++,,-poonnmmlqrrssttu(''&&%%$IJJKKLLMPOONNMML!""##$$%xwwvvuutijjkkllmvwwxxyyz\\[[ZZYY%%&&''((oonnmmll++,,--..UUTTSSRR,--..//0mllkkjjituuvvwwx%$$##""!LMMNNOOPMLLKKJJI$%%&&''(uttssrrqlmmnnoopyzz{{ eeffgghh44332211==>>??@@\\[[ZZYY]]^^__``<<;;::9955667788ZZYYXXWW3399::;;KJJIIHHG-..//001lkkjjiih uvvwwxxy$##""!! MNNOOPPQLKKJJIIH%&&''(()tssrrqqpmnnooppqz{{XXWWVVUU))**++,,kkjjiicc//001122QQPONMLK01122334ihhggffe - - xyyzz{{|! PQQRRSSTIHHGGFFE())**++,qppoonnmpqqrrsst - - iijjkkll00//..--AABBCCDDXXWWVVUU~~}} aabbccdd8877665599::;;<>??GFFEEDDC12233445hggffeed - - yzz{{||} QRRSSTTUHGGFFEED)**++,,-poonnmmlqrrssttu TTSSRRQQ--..//00bbaa``__3399::;;KJJIIHHG45566778eddccbba |}}~~TUUVVWWXEDDCCBBA,--..//0mllkkjjituuvvwwx - - ~mmnnoopp,,++**))EEFFGGHHTTSSRRQQ ||{{zzyy - - eeffgghh44332211==>>??@@RRQQKKJJ@@AABBCCCBBAA@@?56677889dccbbaa` }~~UVVWWXXYDCCBBAA@-..//001lkkjjiih uvvwwxxy - - ~}|PPOONNMM11223344^^]]\\[[<<==>>??GFFEEDDC899::;;>=01122334ihhggffe - - xyyzz{{|}|{{zzyyqqrrsstt((''&&%%IIJJKKLLPPOONNMM!!""##$$xxwwvvuuiijjkkll00//..--AABBCCDDIIHHGGFFDDEEFFGG?>>==<<;9::;;<<=`__^^]]\YZZ[[\\]@??>>==<12233445hggffeed - - yzz{{||}{{zzyyxxLLKKJJII55667788ZZYYXXWW@@AABBCCCBBAA@@?<==>>??@]\\[[ZZY\]]^^__`=<<;;::945566778eddccbba |}}~~ xxwwvvuuuuvvwwxx$$##""!!MMNNOOPPLLKKJJII%%&&''((ttssrrqqmmnnoopp,,++**))EEFFGGHHEEDDCCBBHHIIJJKK;::99876=>>??@@A\[[ZZYYX]^^__``a<;;::99856677889dccbbaa` }~~ -wwvvuuttHHGGFFEE99::;;<>==<<;@AABBCCDYXXWWVVU~~} `aabbccd98877665899::;;>QQRRSSTT54332211ABBCCDDEXWWVVUUT~~}}| abbccdde877665549::;;<<=`__^^]]\ - ssrrqqppDDCCBBAA==>>??@@RRQQKKJJHHIIJJKK;::99876DEEFFGGHUTTSSRRQ }||{{zzy - - deeffggh54433221<==>>??@]\\[[ZZY ppoonnmm }}~~UUVVWWXXDDCCBBAA--..//00llkkjjiiuuvvwwxx$$##""!!MMNNOOPP==<<;;::UUVVWWXX00//..--EFFGGHHITSSRRQQP !|{{zzyyx - - effgghhi43322110=>>??@@A\[[ZZYYX{oonnmmll@@??>>==AABBCCDDIIHHGGFFQQRRSSTT54332211HIIJJKKLQPPOONNM !!""##$yxxwwvvu hiijjkkl100//..-@AABBCCDYXXWWVVU{{zzyyxllkkjjiiYYZZ[[\\@@??>>==11223344hhggffee - - yyzz{{|| QQRRSSTT99332211YYZZ[[\\,,++**))IJJKKLLMPOONNMML!""##$$%xwwvvuutijjkkllm0//..--,ABBCCDDEXWWVVUUT{zzyyxxwkkjjiihg<<;;::99EEFFGGHHEEDDCCBBUUVVWWXX00//..--LMMNNOOPMLLKKJJI$%%&&''(uttssrrqlmmnnoop-,,++**)DEEFFGGHUTTSSRRQ xwwvvuuthgfedccb]]^^__``<<;;::9955667788ddccbbaa }}~~UUVVWWXX00//..--]]^^__``((''&&%%MNNOOPPQLKKJJIIH%&&''(()tssrrqqpmnnooppq,++**))(EFFGGHHITSSRRQQP !wvvuuttsfedccbba88776655IIJJKKLLAA@@??>>YYZZ[[\\,,++**))PQQRRSSTIHHGGFFE())**++,qppoonnmpqqrrsst)((''&&%HIIJJKKLQPPOONNM !!""##$tssrrqqp!!"baa``__^~~}} aabbccdd8877665599::;;<<``__^^]]YYZZ[[\\,,++**))aabbccii$$##""!!QRRSSTTUHGGFFEED)**++,,-poonnmmlqrrssttu(''&&%%$IJJKKLLMPOONNMML!""##$$%srrqqppo!!""#a``__^^]44332211MMNNOOPP==<<;;::]]^^__``((''&&%%TUUVVWWXEDDCCBBA,--..//0mllkkjjituuvvwwx%$$##""!LMMNNOOPMLLKKJJI$%%&&''(poonnmml"##$$%%&^]]\\[[Z ||{{zzyy - - eeffgghh44332211==>>??@@\\[[ZZYY]]^^__``((''&&%%jjkkllmm UVVWWXXYDCCBBAA@-..//001lkkjjiih uvvwwxxy$##""!! MNNOOPPQLKKJJIIH%&&''(()onnmmllk#$$%%&&']\\[[ZZY00//..--QQRRSSTT99332211aabbccii$$##""!!XYYZZ[[\A@@??>>=01122334ihhggffe - - xyyzz{{|! PQQRRSSTIHHGGFFE())**++,lkkjjiic&''(())*ZYYXXWWV!!""##$$xxwwvvuuiijjkkll00//..--AABBCCDDXXWWVVUU~~}} aabbccdd$$##""!!nnooppqqYZZ[[\\]@??>>==<12233445hggffeed - - yzz{{||} QRRSSTTUHGGFFEED)**++,,-kjjiiccb'(())**+YXXWWVVU::998765,,++**))UUVVWWXX00//..--jjkkllmm \]]^^__`=<<;;::945566778eddccbba |}}~~TUUVVWWXEDDCCBBA,--..//0cbbaa``_*++,,--.VUUTTSSR%%&&''((ttssrrqqmmnnoopp,,++**))EEFFGGHHTTSSRRQQ ||{{zzyy - - eeffgghhrrssttuu]^^__``a<;;::99856677889dccbbaa` }~~UVVWWXXYDCCBBAA@-..//001baa``__^+,,--../UTTSSRRQ43322110((''&&%%YYZZ[[\\,,++**))nnooppqq`aabbccd98877665899::;;>=01122334_^^]]\\[.//00112RQQPONML))**++,,ppoonnmmqqrrsstt((''&&%%IIJJKKLLPPOONNMM!!""##$$xxwwvvuuiijjkkllvvwwxxyyabbccdde877665549::;;<<=`__^^]]\YZZ[[\\]@??>>==<12233445^]]\\[[Z/0011223QPONMLKK0//..--,$$##""!!]]^^__``((''&&%%rrssttuudeeffggh54433221<==>>??@]\\[[ZZY\]]^^__`=<<;;::945566778[ZZYYXXW23399::;KKJJIIHH--..//00llkkjjiiuuvvwwxx$$##""!!MMNNOOPPLLKKJJII%%&&''((ttssrrqqmmnnooppzz{{ -effgghhi43322110=>>??@@A\[[ZZYYX]^^__``a<;;::99856677889ZYYXXWWV399::;;>?GGFFEEDD11223344hhggffee - - yyzz{{|| QQRRSSTTHHGGFFEE))**++,,ppoonnmmqqrrsstt - ijjkkllm0//..--,ABBCCDDEXWWVVUUT~~}}| abbccdde877665549::;;<<=VUUTTSSR<==>>??@FFEEDDCC(''&&%%$eeffgghhzz{{ -lmmnnoop-,,++**)DEEFFGGHUTTSSRRQ }||{{zzy - - deeffggh54433221<==>>??@SRRQQKKJ?@@AABBCCCBBAA@@55667788ddccbbaa }}~~UUVVWWXXDDCCBBAA--..//00llkkjjiiuuvvwwxx - - ~}mnnooppq,++**))(EFFGGHHITSSRRQQP !|{{zzyyx - - effgghhi43322110=>>??@@ARQQKKJJI@AABBCCDBBAA@@??$##""!! iijjkkll - pqqrrsst)((''&&%HIIJJKKLQPPOONNM !!""##$yxxwwvvu hiijjkkl100//..-@AABBCCDJIIHHGGFCDDEEFFG??>>==<<99::;;<<``__^^]]YYZZ[[\\@@??>>==11223344hhggffee - - yyzz{{|||{{zzyyxqrrssttu(''&&%%$IJJKKLLMPOONNMML!""##$$%xwwvvuutijjkkllm0//..--,ABBCCDDEIHHGGFFEDEEFFGGH>>==<<;;ZZ[[\\]]??>>==<<22334455ggffeedd - - zz{{||}}RRSSTTUUGGFFEEDD**++,,--jjiiccbb(())**++XXWWVVUU"##$$%%&wvvuuttsjkkllmmn/..--,,+BCCDDEEFWVVUUTTS~~}}||{ bccddeefyxxwwvvu - - ^^__``aa;;::998866778899ccbbaa``~~VVWWXXYYCCBBAA@@..//0011aa``__^^,,--..//TTSSRRQQ&''(())*srrqqpponooppqqr+**))(('FGGHHIIJSRRQQPPO !!"{zzyyxxw - - fgghhiijuttssrrq bbccddee77665544::;;<<==__^^]]\\ZZ[[\\]]??>>==<<22334455]]\\[[ZZ00112233PONMLKKJ*++,,--.onnmmllkrssttuuv'&&%%$$#JKKLLMMNONNMMLLK"##$$%%&wvvuuttsjkkllmmnqppoonnm - -ffgghhii33221100>>??@@AA[[ZZYYXX^^__``aa;;::998866778899YYXXWWVV99::;;<>??@@FEEDDCCB23344556gffeeddc - z{{||}}~RSSTTUUVGFFEEDDC*++,,--.onnmmllkrssttuuv - - -ihhggffennooppqq++**))((FFGGHHIISSRRQQPP !!{{zzyyxx - - ffgghhii33221100>>??@@AAQQKKJJIIAABBCCDDBAA@@??>6778899:cbbaa``_~VWWXXYYZCBBAA@@?.//00112kjjiihhg -vwwxxyyz - eddccbba rrssttuu''&&%%$$JJKKLLMMOONNMMLL""##$$%%wwvvuuttjjkkllmm//..--,,BBCCDDEEHHGGFFEEEEFFGGHH>==<<;;::;;<<==>_^^]]\\[Z[[\\]]^?>>==<<;23344556gffeeddc - z{{||}}~a``__^^] !!""##$ vvwwxxyy##""!! NNOOPPQQKKJJIIHH&&''(())ssrrqqppnnooppqq++**))((FFGGHHIIDDCCBBAAIIJJKKQQ:9987654>??@@AAB[ZZYYXXW^__``aab;::998876778899:cbbaa``_~]\\[[ZZY$%%&&''( - - zz{{||}}RRSSTTUUGGFFEEDD**++,,--oonnmmllrrssttuu''&&%%$$JJKKLLMM@@??>>==RRSSTTUU33221100BCCDDEEFWVVUUTTS~~}}||{ bccddeef76655443:;;<<==>_^^]]\\[||{YXXWWVVU())**++,~~VVWWXXYYCCBBAA@@..//0011kkjjiihh vvwwxxyy##""!! NNOOPPQQ<<;;::99VVWWXXYY//..--,,FGGHHIIJSRRQQPPO !!"{zzyyxxw - - fgghhiij3221100/>??@@AAB[ZZYYXXW{zzyyxxw!!""#UTTSSRRQ,--..//0ZZ[[\\]]??>>==<<22334455ggffeedd - - zz{{||}}RRSSTTUU33221100ZZ[[\\]]++**))((JKKLLMMNONNMMLLK"##$$%%&wvvuuttsjkkllmmn/..--,,+BCCDDEEFWVVUUTTSwvvuutts#$$%%&&'QPPOONNM01122334^^__``aa;;::998866778899ccbbaa``~~VVWWXXYY//..--,,^^__``aa''&&%%$$NOOPPQQRKJJIIHHG&''(())*srrqqpponooppqqr+**))(('FGGHHIIJSRRQQPPO !!"srrqqppo'(())**+MLLKKJJI45566778~~}}|| bbccddee77665544::;;<<==__^^]]\\ZZ[[\\]]++**))((bbcciijj##""!! RSSTTUUVGFFEEDDC*++,,--.onnmmllkrssttuuv'&&%%$$#JKKLLMMNONNMMLLK"##$$%%&onnmmllk+,,--../IHHGGFFE899::;;< !!{{zzyyxx - - ffgghhii33221100>>??@@AA[[ZZYYXX^^__``aa''&&%%$$kkllmmnnVWWXXYYZCBBAA@@?.//00112kjjiihhg -vwwxxyyz#""!! NOOPPQQRKJJIIHHG&''(())*kjjiiccb/0011223EDDCCBBA<==>>??@""##$$%%wwvvuuttjjkkllmm//..--,,BBCCDDEEWWVVUUTT~~}}|| bbccddee##""!!ooppqqrrZ[[\\]]^?>>==<<;23344556gffeeddc - z{{||}}~RSSTTUUVGFFEEDDC*++,,--.baa``__^399::;;>=@AABBCCD&&''(())ssrrqqppnnooppqq++**))((FFGGHHIISSRRQQPP !!{{zzyyxx - - ffgghhiissttuuvv^__``aab;::998876778899:cbbaa``_~VWWXXYYZCBBAA@@?.//00112^]]\\[[Z<==>>??@=<<;;::9DEEFFGGH**++,,--oonnmmllrrssttuu''&&%%$$JJKKLLMMOONNMMLL""##$$%%wwvvuuttjjkkllmmwwxxyyzz bccddeef76655443:;;<<==>_^^]]\\[Z[[\\]]^?>>==<<;23344556ZYYXXWWV@AABBCCD98877665HIIJJKKL..//0011kkjjiihh vvwwxxyy##""!! NNOOPPQQKKJJIIHH&&''(())ssrrqqppnnooppqq{{ - - fgghhiij3221100/>??@@AAB[ZZYYXXW^__``aab;::998876778899:VUUTTSSRDEEFFGGH54433221LMMNNOOP22334455ggffeedd - - zz{{||}}RRSSTTUUGGFFEEDD**++,,--oonnmmllrrssttuu jkkllmmn/..--,,+BCCDDEEFWVVUUTTS~~}}||{ bccddeef76655443:;;<<==>RQQKKJJIHIIJJKKQ100//..-PQQRRSST66778899ccbbaa``~~VVWWXXYYCCBBAA@@..//0011kkjjiihh vvwwxxyy - - ~}|{nooppqqr+**))(('FGGHHIIJSRRQQPPO !!"{zzyyxxw - - fgghhiij3221100/>??@@AABIHHGGFFEQRRSSTTU-,,++**)TUUVVWWX::;;<<==__^^]]\\ZZ[[\\]]??>>==<<22334455ggffeedd - - zz{{||}}{zzyyxxwrssttuuv'&&%%$$#JKKLLMMNONNMMLLK"##$$%%&wvvuuttsjkkllmmn/..--,,+BCCDDEEFEDDCCBBAUVVWWXXY)((''&&%XYYZZ[[\>>??@@AA[[ZZYYXX^^__``aa;;::998866778899ccbbaa``~~ - -wvvuutts -vwwxxyyz#""!! NOOPPQQRKJJIIHHG&''(())*srrqqpponooppqqr+**))(('FGGHHIIJA@@??>>=YZZ[[\\]%$$##""!\]]^^__`BBCCDDEEWWVVUUTT~~}}|| bbccddee77665544::;;<<==__^^]]\\ srrqqppo - z{{||}}~RSSTTUUVGFFEEDDC*++,,--.onnmmllkrssttuuv'&&%%$$#JKKLLMMN=<<;;::9]^^__``a! `aabbccdFFGGHHIISSRRQQPP !!{{zzyyxx - - ffgghhii33221100>>??@@AA[[ZZYYXX{{onnmmllk~VWWXXYYZCBBAA@@?.//00112kjjiihhg -vwwxxyyz#""!! NOOPPQQR93322110abbcciijdeeffgghJJKKLLMMOONNMMLL""##$$%%wwvvuuttjjkkllmm//..--,,BBCCDDEEWWVVUUTTzzyyxxwwkjjiihgfZ[[\\]]^?>>==<<;23344556gffeeddc - z{{||}}~RSSTTUUV0//..--,jkkllmmnhiijjkklNNOOPPQQKKJJIIHH&&''(())ssrrqqppnnooppqq++**))((FFGGHHIISSRRQQPP !!vvuuttssedccbbaa^__``aab;::998876778899:cbbaa``_~VWWXXYYZ,++**))(nooppqqrlmmnnoopRRSSTTUUGGFFEEDD**++,,--oonnmmllrrssttuu''&&%%$$JJKKLLMMOONNMMLL""##$$%%rrqqppoo!!""##``__^^]]~~}}||{ bccddeef76655443:;;<<==>_^^]]\\[Z[[\\]]^(''&&%%$rssttuuv pqqrrsstVVWWXXYYCCBBAA@@..//0011kkjjiihh vvwwxxyy##""!! NNOOPPQQKKJJIIHH&&''(())nnmmllkk$$%%&&''\\[[ZZYY !!"{zzyyxxw - - fgghhiij3221100/>??@@AAB[ZZYYXXW^__``aab$##""!!vwwxxyyy - - tuuvvwwxxyybdQZ|drtAvpfHAbےv`f~QJHAZp˂bdQZ|fH~˙ے`JXbtlf~HfpvrXQJ`ہdrtf`vXpZHAQbtlXv`fXQJ`ےdrtA`vXnr˂pZHAb|ZdQbnXv`bHAZJltvpfH~ftl|nXv`˒HAZp˂rXbdQZ|~f``JXQlJtf~HvnQJ`ےdrtAvXnZHAbbtl|drtAJltH~f`JXQrfpvZp˂rXQJ`ہdrtf`vXQr˂pJtArdfpvnrXQJ`bHAAJltnvpbے`|ZdQ~fpvbHAZJltvpfZHAbے`JXQtlJf~Hp˂rbdQZ|H~f`vXnZdQbtf~H˂rXQJ`ےdrtAvXnr˂pArd|fpvrXQJ`ۙbHAZpJltvpfHے`JXZdQbtJltbdQZ|`vXn˂p|nXv`rXQJ`ےbHAAJltnvpZHAb|ZdQnXv`ےHAZp˂bdQZ|fH~JXQrbtlnXv`p˂rbdQZ|H~fے`JXQr˂ptArdfpvXQJ`ےdrtA`vXnr˂plJtAfpvQJ`ےbHAZpJltvpfHZHAbہZdQbtnXv`˒HAZp˂rXbdQZ|~f`Qr˂plJtbdQZ|`vXnvpfZdQbtf~HbHAZp˂bdQZ|fH~˙ے`JXbtlf~HZp˂rXQJ`ہdrtf`vXp`JXJtArdf~HXQJ`ےdrtA`vXnr˂pZHAے|ZdQbnXv`bHAZJltvpf`JXQrrd|nXv`fbHAZp˂rbdQZ|~f``JXQlJtf~H˂rXQJ`ےdrtAvXn`JXQArd|drtAvpfH~flJtAfpvZp˂rbdQZ|drtf`vXQr˂pJtArdfpvrXQJ`ےbHAAJltnvpQr˂p|ZdQfpvbHAZJltvpfZHAb`JXQrtlJf~Hp˂rbdQZ|H~f˂pZZdQbt~fpv˂rXbdQZ|drtAvXnr˂pArd|fpvQJ`ےbHAZpJltvpfHr˂pZdQbtJltH~f`vXnrd|nXv`frXQJ`ہdrtAJltnvpZHAb|ZdQnXv`bHAZp˂bdQZ|fH~ˑZHAbbtl|nXv`p˂rbdQZ|H~fے`JXQbtltArdfpvXQJ`ےdrtA`vXnHAbےl|ZnXvQJ`ےdrtAJltvpfHZHAbہZdQbtnXv`˙bHAZp˂rbdQZ|~f`ZHAbۉl|bdQZ|`vXnr˂pZdQbt~fpvbHAAJltbdQZ|fH~˙ے`JXbtlf~HZp˂rbdQZ|drtf`vXے`JXZdQbtf~fpXQJ`ےdrtA`vXnr˂pJtAd|ZdQbnXv`bHAZJltvpf`JXQrdQbt`f~bHAZpJltbdQZ|~f``JXQlJtf~H˂rXbdQZ|drtAvXn`JXQZdQbtdrtAvpf`JXQrl|ZnXvZp˂bdQZ|dtAf`vXQr˂pJtArdfpvrXQJ`ہdrtAJltnvpQr˂plJtvnXbHAZJltvpfZHAb|ZdQbtlJf~Hp˂rbdQZ|H~f˂p`lJtArHfpv˂rXbdQZ|dtAJlvXnr˂pArd|fpvQJ`ےdrtAJltvpfHr˂p`lJtAJltH~f˂pZdQbt`f~rXQJ`ہdrtJltnvpZHAb|ZdQnXv`bHAAJltbdQZ|fH~ˑ`JXQArd|v`fp˂rbdQZ|H~fے`JXQtlJtArdfpvXQJ`ےdrtA`vXnJXQrd|ZnXvQJ`ےdrtAtbvpfHZHAbہZdQbtnXv`˙bHAZpJltbdQZ|~f`JXQrrd|bdQZ|`vXnHAbےlJtArHfpvbHAAJltbnvpfH~˙ے`JXbtlf~HZp˂bdQZ|dtAf`vXr˂pZdQbt~HfpXQJ`ےdrtA`vXnr˂ptArd|ZdQbnXv`bHAZJltvpf˂pZHAdQbt`f~fpbHAZpJltnvp~f``JXQlJtf~H˂rXbdQZ|dtAJlvXn˂pZHZdQbtdrtAvpf`JXQrd|ZnXvZp˂bdQZ|fHf`vXQr˂pJtArdfpvrXQJ`ہdrtJltnvpZHAbۉl|vnXbHAZJltvpfZHAb|ZdQbnXv`f~Hp˂rbdQZ|H~fbے`l|ZdQvnX˂rXbdQZ|fHf`vXnr˂pArd|fpvQJ`ےdrtAtbvpfHAbے`l|ZdJltH~f˂p`dQbt`f~fprXQJ`ہdrtf`vXnvpZHAb|ZdQnXv`bHAAJltbnvpfH~˒`JXQZdQbnXv`ffp˂rbdQZ|H~fے`JXQtlJf~HfpvXQJ`ےdrtA`vXnJXQrbtlv`fQJ`ےdrtAvXnvpfHZHAbہZdQbtnXv`˙bHAZpJltnvp~f`JXQrQbnXbdQZ|`vXnJXQrl|ZdQvnXbHAAJltnvpfH~˙ے`JXbtlf~HZp˂bdQZ|fHf`vXr˂p`v`f~pvnXQJ`ےdrtA`vXnr˂ptArdfpvnXv`bHAZJltvpf˂p`JJtArd~HfpbHAZpJltvpfH~f``JXQlJtf~H˂rXbdQZ|fHf`vXn˂p`v`f~fdrtAvpf˂pZHAbtlv`fZp˂bdQZ|fH~f`vXQr˂pJtArdfpvrXQJ`ہdrtf`vXnvpJXQrfpvrXQJ`bHAZJltvpfZHAb|ZdQbnXv`fHfp˂rbdQZ|H~fXQr˂|ZdQvnX˂rXbdQZ|~f`vXnr˂pArd|fpvQJ`ےdrtAvXnvpfHJXQrbtpvnJltH~fbے`JtArd~HfprXQJ`ہdrtf`vXnr˂pZHAb|ZdQnXv`bHAAJltnvpfH~btl|nXv`ےHAZp˂rbdQZ|H~fے`JXQtlJf~HpvnXQJ`ےdrtA`vXnpZHAbbtlv`f~QJ`ےdrtAvXnr˂pZHAbہZdQbtnXv`˙bHAZpJltvpfH~f`l|Xv`fbdQZ|`vXnJXQr|ZdQvnXbHAAJltnvpZHAbے`JXbtlf~HZp˂bdQZ|fH~f`vXZdQbtf~Hp˂rXQJ`ےdrtA`vXnr˂ptArdfpvrXQJ`bHAZJltvpfے`J|ZdQbfpvbHAZpJltvpfHZHAbے`JXQlJtf~H˂rXbdQZ|~f`vXnZdQbt琕~HfdrtAvpf˂p`Jbtlv`f~Zp˂bdQZ|fH~˙ے`JXQr˂pJtArdfpvrXQJ`ہdrtf`vXnr˂plJtfpvXQJ`ےbHAZJltvpfZHAb|ZdQbnXv`ےHAZp˂rbdQZ|H~fXQr˂tlJnXv`˂rXbdQZ|~f``JXQr˂pArd|fpvQJ`ےdrtAvXnr˂p`lJtApvnJltH~fXQr˂|ZdQbfpvrXQJ`ہdrtf`vXQr˂pZHAۂ|ZdQnXv`bHAAJltnvp`JXQArd|nXv`bHAZp˂rbdQZ|H~fے`JXQtlJf~Hp˂rXQJ`ےdrtA`vXnp`JXQtArdf~HQJ`ےdrtAvXnr˂pZHAے`ZdQbtnXv`˙bHAZpJltvpfHJXQrrd|Xv`fbdQZ|`vXnpZHAbtlJnXv`bHAAJltnvpZHAb`JXQbtlf~HZp˂bdQZ|fH~r˂pZdQbtf~fpp˂rbdQZ|drtA`vXnr˂ptArdfpvXQJ`ےbHAZJltvpfr˂p|ZdQbfpvbHAZpJltvpfHZHAbہJXQrlJtf~H˂rXbdQZ|~f`˂pZHZdQbt~fpvdrtAvpfے`JtArdf~HZp˂bdQZ|fH~˙ے`JXrbtlJtArdfpvrXQJ`ہdrtf`vXZHAbۉl|vnXXQJ`ےdrtAJltvpfZHAb|ZdQbnXv`bHAZp˂rbdQZ|H~fZHAbtl|nXv`˂rXbdQZ|~f``JXQbtlArd|fpvQJ`ےdrtAvXnAbے`l|ZdnXv`JltH~fXQr˂|ZdQbfpvrXQJ`ہdrtf`vXQr˂pJtAd|ZdQnXv`bHAAJltnvp`JXQZdQbtv`fbHAZJltbdQZ|H~fے`JXQtlJf~Hp˂rbdQZ|drtA`vXnے`JXQZdQbtf~fpQJ`ےdrtAvXnr˂pJtAd|ZdQbtnXv`˙bHAZpJltvpfHJXQrQbtlf~HbdQZ|`vXnp`JXQtl|nXv`bHAAJltnvpZHAb|ZdQbtlf~HZp˂bdQZ|fH~r˂p`lJtA~Hfpp˂rbdQZ|dtAJ`vXnr˂ptArdfpvXQJ`ےdrtAJltvpfr˂plJtAvnXbHAZpJltvpfHZHAbہZdQbtlJtf~H˂rXbdQZ|~f`˂p`JtArdfpvv`f~drtAvpfr˂pZdQbtf~fpZp˂bdQZ|fH~˙ے`JXbtlJtArdfpvrXQJ`ہdrtf`vXJXQrrd|vnXXQJ`ےdrtAltbvpfZHAb|ZdQbnXv`bHAZJltbdQZ|H~f`JXQrrd|v`f˂rXbdQZ|~f``JXQlJtArd|fpvQJ`ےdrtAvXnJXQr˙|ZdnXv`fpvJltH~fZHAblJtAvnXrXQJ`ہdrtf`vXQr˂pJtArd|ZdQnXv`bHAAJltnvp˂pZHZdQbtv`f~fbHAZJltnvpH~fے`JXQtlJf~Hp˂rbdQZ|dtAJ`vXn˂pZZdQbt~HfpQJ`ےdrtAvXnr˂pArd|ZdQbnXv`˙bHAZpJltvpfHpZHAQbtlf~fpnXv`bdQZ|`vXnے`JXQrd|v`f󒐙bHAAJltnvpZHAb|ZdQbnXv`f~HZp˂bdQZ|fH~Abے`l|Zdpvnp˂rbdQZ|fHf`vXnr˂ptArdfpvXQJ`ےdrtAltbvpfHAbےl|ZvnXbHAZpJltvpfHZHAbہZdQbtnXv`f~H˂rXbdQZ|~f`bے`|ZdQvnXf~HdrtAvpfr˂pZdQbt~HfpZp˂bdQZ|fH~˙ے`JXbtlf~HfpvrXQJ`ہdrtf`vXJXQrQbtlXv`fXQJ`ےdrtA`vXnvpfZHAb|ZdQbnXv`bHAZJltnvpH~f`JXQrdQbnXv`ffp˂rXbdQZ|~f``JXQlJtf~HfpvQJ`ےdrtAvXnJXQrbtlv`ffpvJltH~f`JXQrl|ZvnXrXQJ`ہdrtf`vXQr˂pJtArdfpvnXv`bHAAJltnvp˂p`JtArd~HfbHAZJltvpfH~fے`JXQtlJf~Hp˂rbdQZ|fHf`vXn˂p`v`f~vnQJ`ےdrtAvXnr˂pArd|fpvnXv`˙bHAZpJltvpfHp`JXJtArd~HfpnXv`fbdQZ|`vXn˂pZdQbnXv`frbHAAJltnvpZHAb|ZdQnXv`fHZp˂bdQZ|fH~JXQr˙|Zdpvnp˂rbdQZ|H~f`vXnr˂ptArdfpvXQJ`ےdrtA`vXnvpfJXQrbfpvrXQJ`ۙbHAZpJltvpfHZHAbہZdQbtnXv`fHfp˂rXbdQZ|~f`Qr˂p|ZdQvnX~fpvnXvbHAZpltbvpfHHAbےZdQbtlJtA~Hf˂rXQdQZ|~f`˂p`JJtArdfpvrXQQZ|dtAJlvXnۉ˂pZHrd|vnXJ`ےrtAJltbdvpfHJXQrXnvˍp|dr`f~˂rXQdQZ|~f``JXQrlJtArd|pvnJ`ےdrtAJvXnXQr˂|ZdQnXv`J`ےrtAJltbnvpfHAbے`ZdQbtv`fbHAZpˑtbdQZ|d~f`˂pZHpfH~QtJlHfpvJ`ےdrtAJvXn˂pZrd|ZdQbnXv`fbHAZpltbvpfHpZHAbbtlf~fpbHAZpˑtbdvpfH~f`JXQrlJtA~HfprXQQZ|dtAJlvXnAbے`f۝`vtbAdZnXvbHAZpltbvpfHHAbےZdQbtXv`f~Hf˂rXQdQZ|~f`ے`J|ZdQbvnXrXQQZ|df`vXnۉ˂pZHrd|vnXJ`ےrtAJltbnvpfHJXQrXnvˍ|dr`ffp˂rXQdQZ|~f``JXQrlJtA~HfpvnJ`ےdrtAJvXnXQr˂tlJv`fJ`ےrtAJlvXnvpfHAbے`ZdQbtv`fbHAZpˑtbdvpfH~f`˂p`ZpfH~QtJlvnrJ`ےdrtAJvXn˂pZrd|pvnXv`fbHAZpltbvpfHp`JXQtArd~HfpbHAZpˑtbdvpfH~f`JXQrlJtA~HfprXQQZ|df`vXnQXb㉀f۝`vtbAdZXQJ`ےbHAZpltbvpfHHAbےZdQbtXv`fHfp˂rXQdQZ|~f`r˂p|ZdQbvnXrXQQZ|d~f`vXnr˂pZHrd|vnXJ`ےrtAJlvXnvpfHۑpJAHrXnvˍ|drHAZp˂rXQdQZ|~f``JXQrlJtA~HfvnrJ`ےdrtAJvXnZHAbtl|v`f~fJ`ےrtAJlvXnۉ˂pZHAbے`ZdQbtv`fbHAZpˑtbdvpfH~f`󙐂ˁ`ZpfH~QtJl˂rXQJ`ےdrtAJvXn˂pZrd|pvnXQJ`ےbHAZpltbvpfHے`JXQZdQbtpvnbHAZpˑtbdvpfHAbے`JXQrlJtA~HfprXQQZ|d~f`vXnے`QXb㉀f۝`vtbAdZJ`ےbHAZpltbvpfHHAbےZdQbtXv`fHAZp˂rXQdQZ|~f`r˂plJtAXv`frXQQZ|d~f`JXQr˂pZHrd|vnXJ`ےrtAJlvXnہJXQrۑp`ZQXnvˍ|drbHAZp˂rbdQZ|~f``JXQrlJtA~Hf˂rXQJ`ےdrtAJvXn`JXQrrd|~HfJ`ےrtAJlvXnۉ˂pZHAے`ZdQbtv`fbHAZpˑtbdvpfH˂pZHXb㉀ۑpfH~QtJl˂rXQdQZ|drtAJvXn˂pZrd|pvnJ`ےbHAZpltbvpfH˂pZZdQbtpvnbHAZpˑtbdvpfHAbے`JXQrbtlJtA~HfprXQQZ|d~f`Abے`pJAHrf۝`vtbAdZJ`ےdrtAJltbvpfHHAbےZdQbtXv`fbHAZp˂rbdQZ|~f`HAbےl|ZXv`frXQQZ|d~f`JXQrlJtrd|vnXJ`ےrtAJlvXnہJXQrˁ`ZQXnvˍ|drbHAZpltbdQZ|~f``JXQrlJtA~Hf˂rXQdQZ|drtAJvXn`JXQrdQbt~fpvJ`ےrtAJlvXnۉ˂pZHAd|ZdQbtv`fbHAZpˑtbdvpfH˂p`Xb㉀ۑpfH~QtJl˂rXQdQZ|dtAJlvXn˂pZrd|pvnJ`ےdrtAJltbvpfH˂p`lJtArnXv`bHAZpˑtbdvpfHAbے`ZdQbtlJtA~HfprXQQZ|d~f`JXQrp`ZQXbf۝`vtbAdZJ`ےdrtAJtbnvpfHHAbےZdQbtXv`fbHAZpltbdQZ|~f`JXQrd|Zf~HrXQQZ|d~f`JXQrlJtArd|vnXJ`ےrtAJlvXnۂpZHA㉀ۑpJXnvˍ|drbHAZpltbvpf~f``JXQrlJtA~Hf˂rXQdQZ|dtAJlvXn˂pZHAdQbt璅fpvJ`ےrtAJlvXnۉ˂pZHrd|ZdQbnXv`fbHAZpˑtbdvpfHbے`AHr󙐂pfH~QtJl˂rXQdQZ|Hf`vXn˂pZrd|pvnJ`ےdrtAJtbnvpfHbے`l|ZdQnXv`bHAZpˑtbdvpfHAbے`ZdQbtv`f~HfprXQQZ|d~f`JXQrˁ`ZQXbf۝`vtbAdZJ`ےdrtAJvXnvpfHHAbےZdQbtXv`fbHAZpltbvpf~f`JXQrbnXvffpۂrXQQZ|d~f`JXQrlJtA~HfpvnXJ`ےrtAJlvXnۂp`JX㉀ۑpXnvˍ|drbHAZpltbvpfH~f``JXQrlJtA~Hf˂rXQdQZ|Hf`vXn˂p`J`f~fpvnrXJ`ےrtAJlvXnۉ˂pZHrd|vnXv`fbHAZpˑtbdvpfHQr˂p`ZQXbpfH~QtJl˂rXQdQZ|~f`vXnr˂pZrd|pvnJ`ےdrtAJvXnvpfHXQrbtvnXQJ`ےbHAZpˑtbdvpfHAbے`ZdQbtv`fHfpۂrXQQZ|d~f`ZHAbۑpJAf۝`vtbAdZJ`ےdrtAJvXn˂pZHAbےZdQbtXv`fbHAZpltbvpfH~f`l|Zv`fHAZp˂rXQQZ|d~f`JXQrlJtA~HfpvnrXJ`ےrtAJlvXnۙے`JXHr󙐂ˁXnvˍ|drbHAZpltbvpfHHAbے`JXQrlJtA~Hf˂rXQdQZ|~f`vXnrdQbt璕~HfprXQJ`ےrtAJlvXnۉ˂pZHrd|vnXQJ`ےbHAZpˑtbdvpfHQr˂p`ZQXbpfH~QtJl˂rXQdQZ|~f``JXQr˂pZrd|pvnJ`ےdrtAJvXn˂p`lJtArvnXJ`ےbHAZpˑtbdvpfHAbے`ZdQbtv`fHAZp˂rXQQZ|d~f``JXQۑp`Zf۝`vtbAdZJ`ےdrtAJvXn˂pZHAے`ZdQbtXv`fbHAZpltbvpfHJXQrd|Zv`f~bHAZp˂rbdQZ|d~f`JXQrlJtA~HfprXQJ`ےrtAJlvXnr˂pQXb㉀Xnvˍ|drbHAZpltbvpfHHAbےJXQrblJtA~Hf˂rXQdQZ|~f`˂pZHAdQbt璅fpvrXQQZ|drtAJlvXnۉ˂pZHrd|vnXJ`ےbHAZpˑtbdvpfHZHAbۑpJAHrpfH~QtJl˂rXQdQZ|~f``JXQrtlJrd|pvnJ`ےdrtAJvXnbے`l|ZdQnXv`J`ےrtAJltbdvpfHAbے`ZdQbtv`fbHAZp˂rbdQZ|d~f``JXQ󙐂ˁ`Zf۝`vtbAdZJ`ےdrtAJvXn˂pZtAd|ZdQbtXv`fbHAZpltbvpfHJXQrbtlf~HbHAZpˑtbdQZ|d~f`JXQrlJtA~HfprXQQZ|drtAJlvXnr˂p`QXb㉀Xnvˍ|drQt}~~IIIIIIIIIIIIIIIIIIIIIJJJJJJJ \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv29_1.dat b/mpdf/qrcode/data/qrv29_1.dat deleted file mode 100644 index 294c49a..0000000 --- a/mpdf/qrcode/data/qrv29_1.dat +++ /dev/null @@ -1,265 +0,0 @@ -~}~}~}~}|{|{{{{{{|{|{|{|yyyyyzyzyzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvutstststststststststststqrqrqrqrqrqrqrqropopopopopopopopopopopopmnmnmnmnmnmnmnmnklklklklklklklklijijijijijijijijijijijijghghghghefefefefefefefefdcdcdcdcdcdcdcccbabababababababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPONMNMNMNMNMNMNMNMKLKLKLKLKLKLKKKKIJIJIJIJIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:9:9:9:9:78787878565656565656565643434343434333332121212121212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('('('('&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!    ~}~}~}~}{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststststststqrqrqrqrqrqrqrqropopopopopopopoponmnmnmnmnmnmnmnmnmnmnmnklklklklklklklklijijijijijijijijijijijijghghghghefefefefefefefefdcdcdcdccccdcdcdbabababababababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPONMNMNMNMNMNMNMNMKLKLKLKLKKLKLKLKIJIJIJIJIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:9:9:9:9878787878565656565656565643434343343434342121212121212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!     ~}~}~}~}~}{|{|{|{|{|{|{{{{yzyzyzyzyzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststststststqrqrqrqrqrqrqrqropopopopopopopopmnmnmnmnmnmnmnmnmnmnmnmnklklklklklklklklijijijijijijijijihghghghghghghghefefefefefefefefdcdcdcdccdcdcdcdbabababababababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMKLKLKLKLLKLKLKLKIJIJIJIJIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:7878787878787878565656565656565643434343343434342121212121212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        ~}~}~}~}~}~}~}~}{|{|{|{|{{|{|{|{yzyzyzyzyzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststststststqrqrqrqrqrqrqrqropopopopopopopopmnmnmnmnmnmnmnmnmnmnmnmnklklklklklklklklijijijijijijijijghghghghghghghghefefefefefefefefdcdcdcdccdcdcdcdbabababababababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMKLKLKLKKLKLKLKLKIJIJIJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:78787878787878785656565656565656434343333434343421212121212121212121210/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        ~}~}~}~}~}~}~}~}{|{|{|{||{|{|{|{yzyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststststststqrqrqrqrqrqrqrqropopopopopopopopmnmnmnmnmnmnmnmnmnmnmnmnklklklklklklklklijijijijijijijijghghghghghghghghefefefefefefefefcccccdcdcdcdcdcdbabababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMKKKKLKLKLKLKLKLKIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:78787878787878785656565656565656333434343434343421212121212121210/0/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        ~}~}~}~}~}~}~}~}{|{|{|{{|{|{|{|{yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststsrqrqrqrqrqrqrqrqrqrqrqropopopopopopopopmnmnmnmnmnmnmnmnmnmnmnmnklklklklklklklklijijijijijijijijghghghghghghghghefefefefefefefefcdcdcdcdcdcdcdcdbabababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:78787878787878785656565656565656343434343434343321212121212121210/0/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        ~}~}~}~}~}~}~}~}{{{{|{|{|{|{|{|{yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqrqrqrqrqropopopopopopopopmnmnmnmnmnmnmnmnmlklklklklklklklklklklklijijijijijijijijghghghghghghghghefefefefefefefefcdcdcdcdccccccdcbabababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKKKKKKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:78787878787878785656565656565656343434343333434321212121212121210/0/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        ~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqrqrqrqrqropopopopopopopopmnmnmnmnmnmnmnmnklklklklklklklklklklklklijijijijijijijijghghghghghghghghefefefefefefefefcdcdcdcddcdcdcdcbabababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:78787878787878785656565656565656343434344343434321212121212121210/0/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        ~}~}~}~}~}~}~}~}|{|{|{|{{{{{{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqrqrqrqrqropopopopopopopopmnmnmnmnmnmnmnmnklklklklklklklklklklklklijijijijijijijijghghghghghghghghefefefefefefefefcdcdcdcddcdcdcdcbabababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:78787878787878785656565656565656343434344343434321212121212121210/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        ~}~}~}~}~}~}~}~}|{|{|{|{{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqrqrqrqrqropopopopopopopopmnmnmnmnmnmnmnmnklklklklklklklklklklklklijijijijijijijijghghghghghghghghefefefefefefefefcdccccccdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKKKKKKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABABABABABA@?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:78787878787878785656565656565656333333434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        ~}~}~}~}~}~}~}~}|{|{|{|{{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqrqpopopopopopopopopopopopmnmnmnmnmnmnmnmnklklklklklklklklklklklklijijijijijijijijghghghghghghghghefefefefefefefefdcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9:78787878787878785656565656565656434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!        ~}~}~}~}~}~}~}~}|{{{{{{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqropopopopopopopopopopopopmnmnmnmnmnmnmnmnklklklklklklklklkjijijijijijijijijijijijghghghghghghghghefefefefefefedcddcdcdcdcdcdcccccbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMLKLKKLKLKLKLKLKKKKKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:9:9:9:9:78787878787878785656565656543434434343434333334321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!        ~}~}~}~}~}~}~}~}{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqropopopopopopopopopopopopmnmnmnmnmnmnmnmnklklklklklklklklijijijijijijijijijijijijghghghghghghghghefefefefcdcdccccdcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMLKLKKKKKKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:9:9:9:9:78787878787878785656565634333333434343434343432121212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!        ~}~}~}~}~}~}|{|{{|{|{|{|{|{|{|{yyzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqropopopopopopopopopopopopmnmnmnmnmnmnmnmnklklklklklklklklijijijijijijijijijijijijghghghghghghghgfefefefefccdcdcdcdcdcdcdcbabababababababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPONMNMNMNMNMKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:9:9:9:9:78787878787876565656565643434343434343432121212121212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!               - - - - - - - -         - - - - - - - -         - - - - - - - -         - - - - - - - - - -         - - - - - - - - - - - -         - - - - - - - - - - - -         - - - - - - - - - - - -          - - - - - - - - - - - -             - - - - - - - - - -              - - - - - - - -             - - - - - - - -             - - - - - - - -           - - - - - - - -         - - - - - - - -LLKKJJII55667788mmnnooppZZYYXXWW@@AABBCC~}CBBAA@@?<==>>??@tuuvvwwx]\\[[ZZY%$$##""!LMMNNOOPMLLKKJJI$%%&&''(\]]^^__`uttssrrq=<<;;::945566778lmmnnoopeddccbba-,,++**) DEEFFGGH|}}~~FEEDDCCB GHHIIJJKxxwwvvuu;;::9987==>>??@@uuvvwwxx\\[[ZZYY$$##""!!MMNNOOPPLLKKJJII%%&&''((]]^^__``ttssrrqq<<;;::9955667788mmnnooppddccbbaa,,++**)) EEFFGGHH}}~~EEDDCCBB HHIIJJKKxwwvvuut;::99876 =>>??@@Auvvwwxxy\[[ZZYYX$##""!! MNNOOPPQLKKJJIIH%&&''(()]^^__``atssrrqqp<;;::99856677889mnnooppqdccbbaa`,++**))( EFFGGHHI}~~EDDCCBBA -HIIJJKKQwwvvuutt::998765 >>??@@AAvvwwxxyy[[ZZYYXX##""!! NNOOPPQQKKJJIIHH&&''(())^^__``aassrrqqpp;;::998866778899nnooppqqccbbaa``++**))((FFGGHHII~~DDCCBBAA - -IIJJKKQQ~~}}HHGGFFEE 99::;;<>==<<; - - @AABBCCDxyyzz{{|YXXWWVVU! PQQRRSST~~}IHHGGFFE ())**++,`aabbccdqppoonnm98877665899::;; - - KQQRRSSTttssrrqq65433221 - - AABBCCDDyyzz{{||XXWWVVUU QQRRSSTT~~}}HHGGFFEE ))**++,,aabbccddppoonnmm8877665599::;;<> - - QQRRSSTTtssrrqqp54332211 - - ABBCCDDEyzz{{||}XWWVVUUT QRRSSTTU~~}}|HGGFFEED )**++,,-abbccddepoonnmml877665549::;;<<=qrrssttu`__^^]]\(''&&%%$IJJKKLLMA@@??>>= - QRRSSTTUssrrqqpp43322110 - - BBCCDDEEzz{{||}}WWVVUUTTRRSSTTUU~~}}||GGFFEEDD **++,,--bbccddeeoonnmmll77665544::;;<<==rrssttuu__^^]]\\''&&%%$$JJKKLLMM@@??>>== RRSSTTUU||{{zzyyDDCCBBAA - - ==>>??@@uuvvwwxxRRQQKKJJ - - HHIIJJKKxwwvvuut;::99876 DEEFFGGH|}}~~UTTSSRRQ TUUVVWWX}||{{zzyEDDCCBBA - - ,--..//0deeffgghmllkkjji54433221<==>>??@tuuvvwwx]\\[[ZZY%$$##""!LMMNNOOP>==<<;;: TUUVVWWXppoonnmm100//..- EEFFGGHH}}~~TTSSRRQQ UUVVWWXX||{{zzyyDDCCBBAA - - --..//00eeffgghhllkkjjii44332211==>>??@@uuvvwwxx\\[[ZZYY$$##""!!MMNNOOPP==<<;;::UUVVWWXXpoonnmml00//..-- EFFGGHHI}~~TSSRRQQP !UVVWWXXY|{{zzyyxDCCBBAA@ - - -..//001effgghhilkkjjiih43322110 =>>??@@Auvvwwxxy\[[ZZYYX$##""!! MNNOOPPQ{=<<;;::9UVVWWXXYoonnmmll0//..--,FFGGHHII~~SSRRQQPP !!VVWWXXYY{{zzyyxxCCBBAA@@ - - ..//0011ffgghhiikkjjiihh33221100 >>??@@AAvvwwxxyy[[ZZYYXX##""!! NNOOPPQQ{{<<;;::99VVWWXXYYxxwwvvuu@@??>>== - - AABBCCDDyyzz{{||IIHHGGFF - - QQRRSSTTtssrrqqp54332211HIIJJKKLQPPOONNM !!""##$XYYZZ[[\yxxwwvvuA@@??>>= 01122334hiijjkklihhggffe100//..- - - @AABBCCDxyyzz{{|YXXWWVVU! PQQRRSST{{zzyyx:9933221XYYZZ[[\llkkjjii-,,++**)IIJJKKLLPPOONNMM!!""##$$YYZZ[[\\xxwwvvuu@@??>>==11223344iijjkkllhhggffee00//..-- - - AABBCCDDyyzz{{||XXWWVVUU QQRRSSTT{{zzyyxx99332211YYZZ[[\\lkkjjiih,,++**))IJJKKLLMPOONNMML!""##$$%YZZ[[\\]xwwvvuut@??>>==<12233445ijjkkllmhggffeed0//..--, - - ABBCCDDEyzz{{||}XWWVVUUT QRRSSTTU{zzyyxxw93322110YZZ[[\\]kkjjiihg,++**))(JJKKLLMMOONNMMLL""##$$%%ZZ[[\\]]wwvvuutt??>>==<<22334455jjkkllmmggffeedd//..--,, - - BBCCDDEEzz{{||}}WWVVUUTTRRSSTTUUzzyyxxww33221100ZZ[[\\]]ttssrrqq<<;;::99 EEFFGGHH}}~~EEDDCCBBUUVVWWXXpoonnmml00//..--LMMNNOOPMLLKKJJI$%%&&''(\]]^^__`uttssrrq=<<;;::945566778lmmnnoopeddccbba-,,++**) DEEFFGGH|}}~~UTTSSRRQ TUUVVWWXxwwvvuut100//..-\]]^^__`hgfedccb)((''&&%MMNNOOPPLLKKJJII%%&&''((]]^^__``ttssrrqq<<;;::9955667788mmnnooppddccbbaa,,++**)) EEFFGGHH}}~~TTSSRRQQ UUVVWWXXwwvvuutt00//..--]]^^__``gfedccbb((''&&%%MNNOOPPQLKKJJIIH%&&''(()]^^__``atssrrqqp<;;::99856677889mnnooppqdccbbaa`,++**))( EFFGGHHI}~~TSSRRQQP !UVVWWXXYwvvuutts0//..--,]^^__``afedccbba(''&&%%$NNOOPPQQKKJJIIHH&&''(())^^__``aassrrqqpp;;::998866778899nnooppqqccbbaa``++**))((FFGGHHII~~SSRRQQPP !!VVWWXXYYvvuuttss//..--,,^^__``aappoonnmm88776655IIJJKKLLAA@@??>>YYZZ[[\\lkkjjiih,,++**))PQQRRSST~~}IHHGGFFE ())**++,`aabbccdqppoonnm98877665899::;;>??@tuuvvwwx]\\[[ZZY%$$##""!LMMNNOOPMLLKKJJI$%%&&''(\]]^^__`poonnmml)((''&&%"##$$%%&ijjkkllm^]]\\[[Z!  UUVVWWXX||{{zzyyDDCCBBAA - - --..//00eeffgghhllkkjjii44332211==>>??@@uuvvwwxx\\[[ZZYY$$##""!!MMNNOOPPLLKKJJII%%&&''((]]^^__``oonnmmll((''&&%%##$$%%&&jjkkllmm]]\\[[ZZ  !UVVWWXXY|{{zzyyxDCCBBAA@ - - -..//001effgghhilkkjjiih43322110 =>>??@@Auvvwwxxy\[[ZZYYX$##""!! MNNOOPPQLKKJJIIH%&&''(()]^^__``aonnmmllk(''&&%%$#$$%%&&'jkkllmmn]\\[[ZZY !!VVWWXXYY{{zzyyxxCCBBAA@@ - - ..//0011ffgghhiikkjjiihh33221100 >>??@@AAvvwwxxyy[[ZZYYXX##""!! NNOOPPQQKKJJIIHH&&''(())^^__``aannmmllkk''&&%%$$$$%%&&''kkllmmnnhhggffee00//..--QQRRSSTT{{zzyyxx99332211!!""aabbcciiaa``__^^$$##""!! !!""##$XYYZZ[[\yxxwwvvuA@@??>>= 01122334hiijjkklihhggffe100//..- - - @AABBCCDxyyzz{{|YXXWWVVU! PQQRRSST~~}IHHGGFFE ())**++,`aabbccdlkkjjiic%$$##""!&''(())*mnnooppqZYYXXWWV!!""##$$YYZZ[[\\xxwwvvuu@@??>>==11223344iijjkkllhhggffee00//..-- - - AABBCCDDyyzz{{||XXWWVVUU QQRRSSTT~~}}HHGGFFEE ))**++,,aabbccddkkjjiicc$$##""!!''(())**nnooppqqYYXXWWVV!""##$$%YZZ[[\\]xwwvvuut@??>>==<12233445ijjkkllmhggffeed0//..--, - - ABBCCDDEyzz{{||}XWWVVUUT QRRSSTTU~~}}|HGGFFEED )**++,,-abbccddekjjiiccb$##""!!'(())**+nooppqqrYXXWWVVU""##$$%%ZZ[[\\]]wwvvuutt??>>==<<22334455jjkkllmmggffeedd//..--,, - - BBCCDDEEzz{{||}}WWVVUUTTRRSSTTUU~~}}||GGFFEEDD **++,,--bbccddeejjiiccbb##""!!(())**++ooppqqrrwvvuuttsddccbbaa,,++**)) UUVVWWXXwwvvuutt00//..--##$$%%&&jjkkllmm]]\\[[ZZ $%%&&''(\]]^^__`uttssrrq=<<;;::945566778lmmnnoopeddccbba-,,++**) DEEFFGGH|}}~~UTTSSRRQ TUUVVWWX}||{{zzyEDDCCBBA - - ,--..//0deeffgghcbbaa``_!*++,,--.qrrssttuVUUTTSSR%%&&''((]]^^__``ttssrrqq<<;;::9955667788mmnnooppddccbbaa,,++**)) EEFFGGHH}}~~TTSSRRQQ UUVVWWXX||{{zzyyDDCCBBAA - - --..//00eeffgghhbbaa``__++,,--..rrssttuuUUTTSSRR%&&''(()]^^__``atssrrqqp<;;::99856677889mnnooppqdccbbaa`,++**))( EFFGGHHI}~~TSSRRQQP !UVVWWXXY|{{zzyyxDCCBBAA@ - - -..//001effgghhibaa``__^+,,--../rssttuuvUTTSSRRQ&&''(())^^__``aassrrqqpp;;::998866778899nnooppqqccbbaa``++**))((FFGGHHII~~SSRRQQPP !!VVWWXXYY{{zzyyxxCCBBAA@@ - - ..//0011ffgghhiiaa``__^^,,--..//ssttuuvvsrrqqppo``__^^]]((''&&%%!!""##$$YYZZ[[\\ssrrqqpp,,++**))''(())**nnooppqqYYXXWWVV())**++,`aabbccdqppoonnm98877665899::;;>= 01122334hiijjkkl_^^]]\\[.//00112uvvwwxxyRQQPONML))**++,,aabbccddppoonnmm8877665599::;;<>==11223344iijjkkll^^]]\\[[//001122vvwwxxyyQQPONMLK)**++,,-abbccddepoonnmml877665549::;;<<=qrrssttu`__^^]]\(''&&%%$IJJKKLLMPOONNMML!""##$$%YZZ[[\\]xwwvvuut@??>>==<12233445ijjkkllm^]]\\[[Z/0011223vwwxxyyzQPONMLKK**++,,--bbccddeeoonnmmll77665544::;;<<==rrssttuu__^^]]\\''&&%%$$JJKKLLMMOONNMMLL""##$$%%ZZ[[\\]]wwvvuutt??>>==<<22334455jjkkllmm]]\\[[ZZ00112233wwxxyyzzonnmmllk\\[[ZZYY$$##""!!%%&&''((]]^^__``oonnmmll((''&&%%++,,--..rrssttuuUUTTSSRR,--..//0deeffgghmllkkjji54433221<==>>??@tuuvvwwx]\\[[ZZY%$$##""!LMMNNOOPMLLKKJJI$%%&&''(\]]^^__`uttssrrq=<<;;::945566778lmmnnoop[ZZYYXXW23399::;yzz{{KKJJIIHH --..//00eeffgghhllkkjjii44332211==>>??@@uuvvwwxx\\[[ZZYY$$##""!!MMNNOOPPLLKKJJII%%&&''((]]^^__``ttssrrqq<<;;::9955667788mmnnooppZZYYXXWW3399::;;zz{{KJJIIHHG --..//001effgghhilkkjjiih43322110 =>>??@@Auvvwwxxy\[[ZZYYX$##""!! MNNOOPPQLKKJJIIH%&&''(()]^^__``atssrrqqp<;;::99856677889mnnooppqZYYXXWWV399::;;>??@@AAvvwwxxyy[[ZZYYXX##""!! NNOOPPQQKKJJIIHH&&''(())^^__``aassrrqqpp;;::998866778899nnooppqqYYXXWWVV99::;;<<{{kjjiihgfXXWWVVUU ))**++,,aabbccddkkjjiicc$$##""!!//001122vvwwxxyyQQPONMLK01122334hiijjkklihhggffe100//..- - - @AABBCCDxyyzz{{|YXXWWVVU! PQQRRSST~~}IHHGGFFE ())**++,`aabbccdqppoonnm98877665899::;;>?GGFFEEDD - - 11223344iijjkkllhhggffee00//..-- - - AABBCCDDyyzz{{||XXWWVVUU QQRRSSTT~~}}HHGGFFEE ))**++,,aabbccddppoonnmm8877665599::;;<>??GFFEEDDC - 12233445ijjkkllmhggffeed0//..--, - - ABBCCDDEyzz{{||}XWWVVUUT QRRSSTTU~~}}|HGGFFEED )**++,,-abbccddepoonnmml877665549::;;<<=qrrssttuVUUTTSSR <==>>??@FFEEDDCC 22334455jjkkllmmggffeedd//..--,, - - BBCCDDEEzz{{||}}WWVVUUTTRRSSTTUU~~}}||GGFFEEDD **++,,--bbccddeeoonnmmll77665544::;;<<==rrssttuuUUTTSSRR ==>>??@@edccbbaaTTSSRRQQ--..//00eeffgghhbbaa``__3399::;;zz{{KJJIIHHG -45566778lmmnnoopeddccbba-,,++**) DEEFFGGH|}}~~UTTSSRRQ TUUVVWWX}||{{zzyEDDCCBBA - - ,--..//0deeffgghmllkkjji54433221<==>>??@tuuvvwwxSRRQQKKJ - - ?@@AABBC~CCBBAA@@55667788mmnnooppddccbbaa,,++**)) EEFFGGHH}}~~TTSSRRQQ UUVVWWXX||{{zzyyDDCCBBAA - - --..//00eeffgghhllkkjjii44332211==>>??@@uuvvwwxxRRQQKKJJ - - @@AABBCC~}CBBAA@@?56677889mnnooppqdccbbaa`,++**))( EFFGGHHI}~~TSSRRQQP !UVVWWXXY|{{zzyyxDCCBBAA@ - - -..//001effgghhilkkjjiih43322110 =>>??@@AuvvwwxxyRQQKKJJI - - @AABBCCD~}|BBAA@@??66778899nnooppqqccbbaa``++**))((FFGGHHII~~SSRRQQPP !!VVWWXXYY{{zzyyxxCCBBAA@@ - - ..//0011ffgghhiikkjjiihh33221100 >>??@@AAvvwwxxyyQQKKJJII - - AABBCCDD~}|{``__^^]]PPOONNMM11223344iijjkkll^^]]\\[[<<==>>??GFFEEDDC - 899::;;>= 01122334hiijjkklihhggffe100//..- - - @AABBCCDxyyzz{{|JIIHHGGFCDDEEFFG}|{{zzyy??>>==<<99::;;<>==11223344iijjkkllhhggffee00//..-- - - AABBCCDDyyzz{{||IIHHGGFFDDEEFFGG|{{zzyyx?>>==<<;9::;;<<=qrrssttu`__^^]]\(''&&%%$IJJKKLLMPOONNMML!""##$$%YZZ[[\\]xwwvvuut@??>>==<12233445ijjkkllmhggffeed0//..--, - - ABBCCDDEyzz{{||}IHHGGFFEDEEFFGGH{{zzyyxx>>==<<;;::;;<<==rrssttuu__^^]]\\''&&%%$$JJKKLLMMOONNMMLL""##$$%%ZZ[[\\]]wwvvuutt??>>==<<22334455jjkkllmmggffeedd//..--,, - - BBCCDDEEzz{{||}}HHGGFFEEEEFFGGHH{zzyyxxw\\[[ZZYYXXWWVVUU"##$$%%&Z[[\\]]^wvvuutts?>>==<<;23344556jkkllmmngffeeddc/..--,,+ - BCCDDEEFz{{||}}~WVVUUTTSRSSTTUUV~~}}||{GFFEEDDC *++,,--.bccddeefbaa``__^399::;;>= - - @AABBCCDTTSSRRQQ&''(())*^__``aabsrrqqppo;::998876778899:nooppqqrcbbaa``_+**))(('FGGHHIIJ~SRRQQPPO !!"VWWXXYYZ{zzyyxxwCBBAA@@? - - .//00112fgghhiij^]]\\[[Z<==>>??@uttssrrq=<<;;::9 DEEFFGGHPONMLKKJ *++,,--.bccddeefonnmmllk76655443:;;<<==>rssttuuv_^^]]\\['&&%%$$#JKKLLMMNONNMMLLK"##$$%%&Z[[\\]]^wvvuutts?>>==<<;23344556jkkllmmnZYYXXWWV@AABBCCDqppoonnm98877665HIIJJKKLJIIHHGGF - - .//00112fgghhiijkjjiihhg3221100/ ->??@@AABvwwxxyyz[ZZYYXXW#""!! NOOPPQQRKJJIIHHG&''(())*^__``aabsrrqqppo;::998876778899:nooppqqrVUUTTSSR DEEFFGGHmllkkjji54433221LMMNNOOPFEEDDCCB 23344556jkkllmmngffeeddc/..--,,+ - BCCDDEEFz{{||}}~WVVUUTTSRSSTTUUV~~}}||{GFFEEDDC *++,,--.bccddeefonnmmllk76655443:;;<<==>rssttuuvRQQKKJJI - - -HIIJJKKQihhggffe100//..-PQQRRSSTBAA@@??>6778899:nooppqqrcbbaa``_+**))(('FGGHHIIJ~SRRQQPPO !!"VWWXXYYZ{zzyyxxwCBBAA@@? - - .//00112fgghhiijkjjiihhg3221100/ ->??@@AABvwwxxyyzIHHGGFFE - QRRSSTTUeddccbba-,,++**) TUUVVWWX>==<<;;::;;<<==>rssttuuv_^^]]\\['&&%%$$#JKKLLMMNONNMMLLK"##$$%%&Z[[\\]]^wvvuutts?>>==<<;23344556jkkllmmngffeeddc/..--,,+ - BCCDDEEFz{{||}}~EDDCCBBAUVVWWXXYa``__^^])((''&&% !!""##$XYYZZ[[\:9987654 ->??@@AABvwwxxyyz[ZZYYXXW#""!! NOOPPQQRKJJIIHHG&''(())*^__``aabsrrqqppo;::998876778899:nooppqqrcbbaa``_+**))(('FGGHHIIJ~A@@??>>=YZZ[[\\]]\\[[ZZY%$$##""!$%%&&''(\]]^^__`33221100 - BCCDDEEFz{{||}}~WVVUUTTSRSSTTUUV~~}}||{GFFEEDDC *++,,--.bccddeefonnmmllk76655443:;;<<==>rssttuuv_^^]]\\['&&%%$$#JKKLLMMN||{=<<;;::9]^^__``aYXXWWVVU! ())**++,`aabbccd//..--,,FGGHHIIJ~SRRQQPPO !!"VWWXXYYZ{zzyyxxwCBBAA@@? - - .//00112fgghhiijkjjiihhg3221100/ ->??@@AABvwwxxyyz[ZZYYXXW#""!! NOOPPQQR{zzyyxxw93322110!!""#abbcciijUTTSSRRQ,--..//0deeffggh++**))((JKKLLMMNONNMMLLK"##$$%%&Z[[\\]]^wvvuutts?>>==<<;23344556jkkllmmngffeeddc/..--,,+ - BCCDDEEFz{{||}}~WVVUUTTSRSSTTUUVwvvuutts0//..--,#$$%%&&'jkkllmmnQPPOONNM01122334hiijjkkl''&&%%$$NOOPPQQRKJJIIHHG&''(())*^__``aabsrrqqppo;::998876778899:nooppqqrcbbaa``_+**))(('FGGHHIIJ~SRRQQPPO !!"VWWXXYYZsrrqqppo,++**))('(())**+nooppqqrMLLKKJJI45566778lmmnnoop##""!! RSSTTUUV~~}}||{GFFEEDDC *++,,--.bccddeefonnmmllk76655443:;;<<==>rssttuuv_^^]]\\['&&%%$$#JKKLLMMNONNMMLLK"##$$%%&Z[[\\]]^onnmmllk(''&&%%$+,,--../rssttuuvIHHGGFFE 899::;;??@@AABvwwxxyyz[ZZYYXXW#""!! NOOPPQQRKJJIIHHG&''(())*^__``aabkjjiiccb$##""!!/0011223vwwxxyyyEDDCCBBA - - <==>>??@tuuvvwwxxyybdQZ|JltdrtAH~fvpfbے`HAbےJtArdv`f~~HfpQJHArXQJ`Zp˂drtbdQZ|f`vXfH~nr˂pے`JXZHAbbtl|ZdQf~HnXv`fpv㒐bHArXQJ`AJltdrtnvpf`vXfH~˂pZHAbtl|QbtlnXv`Xv`fےHAZXQJ`ےp˂rdrtAbdQZ|`vXnH~fr˂pے`JXQZHAbtlJ|ZdQbf~HnXv`pvnbHAZXQJ`ےJltdrtAvpf`vXnH~fpZHAbtl|btlnXv`˕v`f~HAZpQJ`ے˂rXdrtAbdQZ|vXn~f`r˂p`JXQZHAbۉlJtZdQbtf~HnXv`˝vnbHAZpQJ`ےJltdrtAvpfHvXn~f`ZHAbl|btl|Xv`fv`f~HAZpJ`ے˂rXQdrtAJdQZ|vXn~f`˂pZ`JXQrHAbےlJtAZdQbt~HfXv`fvnrbHAZpJ`ےltbdrtAJvpfHvXn~f`ZHAbl|Ztl|drtAbdQZ|Jlt`vXnH~fJXQr`JXQr|ZdQfpvvnXZp˂󒐙bHArXQJ`AJltdrtnvpf`vXZHAbQr˂pے`JXJtArdbtlfpvf~HnrXQJ`Zp˂󒐙bHAbdQZ|AJltfH~nvpf`vXbے`ZdQbt|ZdQf~H~fpvp˂rbHAZXQJ`ےJltdrtAvpf`vXnZHAbr˂pے`JXQtArdtlJfpvf~HrXQJ`p˂rbHAZbdQZ|JltH~fvpf`vXnے`JZdQbt|ZdQbf~Hfpv˂rXbHAZpQJ`ےJltdrtAvpfHvXnZHAbr˂p`JXQArd|lJtfpvf~HrXQJ`ۑ˂rXbHAZpbdQZ|Jlt~f`vpfHvXnے`JXZdQbtZdQbt~Hffpv˂rXQbHAZpJ`ےltbdrtAJvpfHvXnHAbے˂pZ`JXQrrd|lJtApvn~HfXQJ`ے˂rXQbHAZpdQZ|ltb~f`vpfHvXnrے`JXQdQbtZdQbtJltdrtAbdQZ|vpf`vXn˂p`J˂p|btlnXv`˕v`f~rXQJ`Zp˂󒐙bHAbdQZ|AJltfH~nvpے`JXZHAbQr˂p|ZdQJtArdnXv`fpvےHArXQJ`Zp˂drtbdQZ|f`vXfH~nr˂pJXQrˉlJtbtlfpvnXv`XQJ`ےp˂rbHAZbdQZ|JltH~fvpfے`JXQZHAbr˂p|ZdQbtArdnXv`fpvےHAZXQJ`ےp˂rdrtAbdQZ|`vXnH~fr˂pXQr˂lJtAtlJfpvnXv`QJ`ے˂rXbHAZpbdQZ|Jlt~f`vpfH`JXQZHAbr˂pZdQbtArd|nXv`fpv㒐HAZpQJ`ے˂rXdrtAbdQZ|vXn~f`r˂p`Qr˂plJtAlJtpvnnXv`J`ے˂rXQbHAZpdQZ|ltb~f`vpfH`JXQrHAbے˂pZZdQbtrd|Xv`fpvnHAZpJ`ے˂rXQdrtAJdQZ|vXn~f`˂p`r˂plJtArlJtAbdQZ|Jlt`vXnH~fvpfXQr˂ZdQbt|ZdQbf~HfpvbHArXQJ`Zp˂drtbdQZ|f`vXfH~Qr˂pے`JXZHAbtl|ZdQf~HnXv`Zp˂󒐙bHArXQJ`AJltdrtnvpf`vX`JXQp`JXArd|JtArdnXv`f~HbHAZXQJ`ےp˂rdrtAbdQZ|`vXnH~fr˂pے`JXQZHAےtlJ|ZdQbf~HnXv`p˂rbHAZXQJ`ےJltdrtAvpf`vXn`JXQrp`JXQrd|tArdnXv`ff~HbHAZpQJ`ے˂rdrtAbdQZ|vXn~f`r˂p`JXQZHAے`lJtZdQbtf~HnXv`ˑ˂rXbHAZpQJ`ےJltdrtAvpfHvXnJXQr`JXQrd|Ard|Xv`ff~HbHAZpJ`ے˂rbdrtAJdQZ|vXn~f`˂pZ`JXQrHAے`lJtAZdQbt~HfXv`f˂rXQbHAZpJ`ےltbdrtAJvpfHvXnJXQr`JXQrd|Zrd|drtAbdQZ|vpf`vXnH~fpZHAblJtAtlJfpvnXv`Zp˂󒐙bHArbdQZ|AJltdrtnvpf`vXZHAbQr˂p`JXQJtArdbtlfpvf~HrXQJ`Zp˂󒐙bHAbdQZ|AJltfH~nvpr˂pQr˂pZdQbt|ZdQf~fpۅfpvp˂rbHAZbdQZ|JltdrtAvpf`vXnZHAbr˂p`JXQrtArdtlJfpvf~HXQJ`ےp˂rbHAZbdQZ|JltH~fvpf˂pZr˂pZdQbt|ZdQb~fpvfpv˂rXbHAZpbdQZ|JltdrtAvpfHvXnZHAbr˂pJXQrArd|lJtfpvf~HQJ`ے˂rXbHAZpbdQZ|Jlt~f`vpfH˂pZHr˂pZdQbtZdQbt~fpvfpv˂rXQbHAZpdQZ|ltbdrtAJvpfHvXnHAbے˂pZJXQrbrd|lJtApvn~HfJ`ے˂rXQbHAZpdQZ|ltb~f`vpfH˂pZHA˂pZdQbtZdQbtJltdrtAH~fvpf`vXnے`Jrd|tArdnXv`ff~HrXQJ`Zp˂drtbdQZ|AJltfH~nvpے`JXZHAbrbtl|ZdQJtArdnXv`fpvbHArXQJ`Zp˂drtbdQZ|f`vXfH~ZHAbۑZHAbl|btl|vnXnXv`XQJ`ےp˂rdrtAbdQZ|JltH~fvpfے`JXQZHAbbtl|ZdQbtArdnXv`fpvbHAZXQJ`ےp˂rdrtAbdQZ|`vXnH~fHAbےZHAbl|Ztl|nXvnXv`QJ`ے˂rXdrtAbdQZ|Jlt~f`vpfH`JXQZHAbbtlZdQbtArd|nXv`fpvbHAZpQJ`ے˂rdrtAbdQZ|vXn~f`Abے`ZHAbےl|Zdl|nXv`nXv`fJ`ے˂rXQdrtAJdQZ|ltb~f`vpfH`JXQrHAbےtlJZdQbtrd|Xv`fpvnbHAZpJ`ے˂rbdrtAJdQZ|vXn~f`bے`HAbےl|ZdQl|ZbdQZ|Jlt`vXnH~fr˂pXQr˂ZdQbt|ZdQb~fpvfpvbHArXQJ`AJltdrtbdQZ|f`vXfH~Qr˂pے`JXJtAdbtl|ZdQf~HnXv`Zp˂󒐙bHArbdQZ|AJltdrtnvpf`vX`JXQے`JXZdQbtZdQbtv`ff~fpbHAZXQJ`ےJltdrtAbdQZ|`vXnH~fr˂pے`JXQJtAdtlJ|ZdQbf~HnXv`p˂rbHAZbdQZ|JltdrtAvpf`vXn`JXQrے`JXQdQbtZdQbt`f~f~fpۙbHAZpQJ`ےJltdrtAbdQZ|vXn~f`r˂p`JXQJtAd|lJtZdQbtf~HnXv`ˑ˂rXbHAZpbdQZ|JltdrtAvpfHvXnJXQr`JXQQbtlZdQbtf~H~fpvbHAZpJ`ےltbdrtAJdQZ|vXn~f`˂pZ`JXQrtAd|lJtAZdQbt~HfXv`f˂rXQbHAZpdQZ|ltbdrtAJvpfHvXnJXQr`JXQrbtldQbtdrtAbdQZ|vpf`vXn`JXQrp`JXQl|Ztl|nXvnXv`Zp˂󒐙bHAbdQZ|AJltdtAnvpf`vXZHAbQr˂p|ZdQJtArdbtlfpvf~HrXQJ`Zp˂drtbdQZ|AJltfH~nvpr˂p`Qr˂plJtAlJt~HfpvnXp˂rbHAZbdQZ|JltdtAJvpf`vXnZHAbr˂p|ZdQbtArdtlJfpvf~HXQJ`ےp˂rdrtAbdQZ|JltH~fvpf˂p`r˂plJtArlJtAHfpvvnX˂rXbHAZpbdQZ|JltdtAJlvpfHvXnZHAbr˂pZdQbtArd|lJtfpvf~HQJ`ے˂rXdrtAbdQZ|Jlt~f`vpfH˂p`r˂p`JtArdlJtAfpvnXv˂rXQbHAZpdQZ|ltbdtAJlvpfHvXnHAbے˂pZZdQbtrd|lJtApvn~HfJ`ے˂rXQdrtAJdQZ|ltb~f`vpfH˂p`J˂p`JtArdlJtArv`fJltdrtAH~fvpf˂pZr˂pdQbtZdQbt`f~f~fprXQJ`Zp˂drtbdQZ|JltfH~nvpے`JXZHAbbtl|ZdQJtArdnXv`fpvbHArXQJ`AJltdrtbdQZ|f`vXfH~ˁJXQr`JXQrd|Ard|vnXv`fXQJ`ےp˂rdrtAbdQZ|ltbH~fvpfے`JXQZHAbtlJ|ZdQbtArdnXv`fpvbHAZXQJ`ےJltdrtAbdQZ|`vXnH~fJXQr`JXQrd|Zrd|nXvv`fQJ`ے˂rXdrtAbdQZ|tb~f`vpfH`JXQZHAbۉlJtZdQbtArd|nXv`fpvbHAZpQJ`ےJltdrtAbdQZ|vXn~f`JXQrˁJXQr|Zdrd|nXv``f~J`ے˂rXQdrtAJdQZ|tbn~f`vpfH`JXQrHAbےlJtAZdQbtrd|Xv`fpvnbHAZpJ`ےltbdrtAJdQZ|vXn~f`XQr˂JXQr|ZdQd|Z~HfpbdQZ|Jlt`vXnH~fHAbےZHAblJtArlJtAHfpvvnXbHArXQJ`AJltdrtbnvpf`vXfH~Qr˂pے`JXJtArdbtl|ZdQf~HnXv`Zp˂󒐙bHAbdQZ|AJltdtAnvpf`vX˂pZHr˂pZdQbtZdQbtv`f~f~HfpbHAZXQJ`ےJltdrtAnvp`vXnH~fr˂pے`JXQtArdtlJ|ZdQbf~HnXv`p˂rbHAZbdQZ|JltdtAJvpf`vXn˂pZHA˂pZdQbtZdQbt`f~fp~HfpۙbHAZpQJ`ےJltdrtAnvpvXn~f`r˂p`JXQArd|lJtZdQbf~HnXv`ˑ˂rXbHAZpbdQZ|JltdtAJlvpfHvXnpZHA˂pZHQbtlZdQbtf~fpHfpvbHAZpJ`ےltbdrtAJvpfvXn~f`˂pZ`JXQrrd|lJtAZdQbn~HfXv`f˂rXQbHAZpdQZ|ltbdtAJlvpfHvXnpZHAb˂pZHAbtldQbt璝vnXdrtAbdQZ|vpf`vXn`JXQrے`JXQd|Zrd|nXvv`fZp˂󒐙bHAbdQZ|AJltfHnvpf`vXZHAbQr˂p|ZdQJtArdbnXv`fpvf~HrXQJ`Zp˂drtbdQZ|JltfH~nvpAbے`ZHAbےl|Zdl|pvnvnXp˂rbHAZbdQZ|JltfHfvpf`vXnZHAbr˂p|ZdQbtArdnXv`fpvf~HXQJ`ےp˂rdrtAbdQZ|ltbH~fvpfbے`HAbےl|ZdQl|ZvnXvnX˂rXbHAZpbdQZ|JltfHf`vpfHvXnZHAbr˂pZdQbtArd|nXv`fpvf~HQJ`ے˂rXdrtAbdQZ|tb~f`vpfHbے`Abے`|ZdQl|ZdvnXnXv˂rXQbHAZpdQZ|ltbHf`vpfHvXnHAbے˂pZZdQbtrd|Xv`fpvn~HfJ`ے˂rXQdrtAJdQZ|tbn~f`vpfHے`Jbے`|ZdQbl|ZdQv`f~JltdrtAH~fvpf˂p`r˂pdQbtZdQbt`f~fp~HfprXQJ`Zp˂drtbdQZ|f`vXfH~nvpے`JXZHAbbtl|ZdQf~HnXv`fpvbHArXQJ`AJltdrtbnvpf`vXfH~ˁJXQr`JXQQbtlZdQbnXXv`fv`ffXQJ`ےp˂rdrtAbdQZ|`vXnH~fvpfے`JXQZHAbtlJ|ZdQbf~HnXv`fpvbHAZXQJ`ےJltdrtAnvp`vXnH~fJXQr`JXQrbtldQbnXv`fv`ffpQJ`ے˂rXdrtAbdQZ|vXn~f`vpfH`JXQZHAbۉlJtZdQbtf~HnXv`fpvbHAZpQJ`ےJltdrtAnvpvXn~f`JXQrˁJXQrbtlQbnXv`f`ffpJ`ے˂rXQdrtAJdQZ|vXn~f`vpfH`JXQrHAbےlJtAZdQbt~HfXv`fpvnbHAZpJ`ےltbdrtAJvpfvXn~f`XQr˂JXQrtlJbnXvfpvbdQZ|Jlt`vXnH~fJXQr`JXQrl|ZdQl|ZvnXvnXbHArXQJ`AJltdrtnvpf`vXfH~Qr˂pے`JXJtArdbtlfpvf~HnXv`Zp˂󒐙bHAbdQZ|AJltfHnvpf`vX˂p`r˂p`JtArdv`f~~HfpvnbHAZXQJ`ےJltdrtAvpf`vXnH~fr˂pے`JXQtArdtlJfpvf~HnXv`p˂rbHAZbdQZ|JltfHfvpf`vXn˂p`J˂p`JtArdv`f~~HfpvnbHAZpQJ`ےJltdrtAvpfHvXn~f`r˂p`JXQArd|lJtfpvf~HnXv`ˑ˂rXbHAZpbdQZ|JltfHf`vpfHvXnp`JX˂p`JtArdv`f~f~HfpvnrbHAZpJ`ےltbdrtAJvpfHvXn~f`˂pZ`JXQrrd|lJtApvn~HfXv`f˂rXQbHAZpdQZ|ltbHf`vpfHvXnp`JXQ˂p`JtArd`f~fpnXv`drtAbdQZ|vpf`vXn˂pZHA˂pZbtldQbnXv`fv`frZp˂󒐙bHAbdQZ|AJltfH~nvpf`vXZHAbQr˂p|ZdQJtArdnXv`fpvfHrXQJ`Zp˂drtbdQZ|f`vXfH~nvpJXQrˁJXQr|ZdfpvpvnrXQJ`p˂rbHAZbdQZ|JltH~fvpf`vXnZHAbr˂p|ZdQbtArdnXv`fpvfHfXQJ`ےp˂rdrtAbdQZ|`vXnH~fvpfXQr˂JXQrb|ZdQfpvvnXrXQJ`ۑ˂rXbHAZpbdQZ|Jlt~f`vpfHvXnZHAbr˂pZdQbtArd|nXv`fpvfHfpQJ`ے˂rXdrtAbdQZ|vXn~f`vpfHQr˂pJXQrbt|ZdQpvnvnXXQJ`ے˂rXQbHAZpdQZ|ltb~f`vpfHvXnrHAbے˂pZZdQbtrd|Xv`fpvnHfpJ`ے˂rXQdrtAJdQZ|vXn~f`vpfHr˂pXQrbt|ZdQbvnXf~HfpvnXv`rXQbHAZpQZ|dtbdtAJlvpfHvXnAbے`˂pZHZdQbtrd|lJtAvnX~HfpJ`ےむrXQrtAJlQZ|dtbd~f`vpfHJXQrˁJXQrp`ZQXbXnvˍf۝`vp|drtbAdZnXv`f~HJ`ےむrXQrtAJlQZ|dtbn~f`vpfHJXQrAbے`lJtAZdQbtrd|v`fvnXbHAZpJ`ےtbdrtAJlQZ|dvXn~f`pZHA˂pZH㉀ۑpJpfH~XnvˍQtJl|drf~fpۅfpvbHAZpJ`ےtbdrtAJlvpfHvXn~f`˂pZHJXQrrd|lJtAZdQbnX~Hfpv`frXQbHAZpQZ|dtbdtAJlvpfHvXnbے`Abے`AHr󙐂f۝`vpfH~tbAdZQtJlvnXnXv`rXQbHAZpQZ|dtbdf`vpfHvXnAbے`˂pZHZdQbtrd|v`fvnX~HfpJ`ےむrXQrtAJlQZ|dtbn~f`vpfHJXQrˁJXQrˁ`ZQXbXnvˍf۝`v|drtbAdZv`fffpJ`ےむrXQrtAJlQZ|dvXn~f`vpfHJXQrAbے`lJtAZdQbt~Hfpv`fvnXbHAZpJ`ےtbdrtAJlvpfHvXn~f`p`JX˂p`Z㉀ۑppfH~XnvˍQtJl|dr~HfpvnrXbHAZpJ`ےtbdrtAJlvpfHvXn~f`˂pZHJXQrrd|lJtAvnX~Hfpv`frXQbHAZpQZ|dtbdf`vpfHvXnQr˂pQXb㉀`ZQXb㉐f۝`vpfH~tbAdZQtJlvnXQJ`ےrXQbHAZpQZ|dtbd~f`vpfHvXnrAbے`˂pZHZdQbtrd|v`fvnXHfpJ`ےむrXQrtAJlQZ|dvXn~f`vpfHZHAbۑpJAHrۑpJAXnvˍf۝`v|drtbAdZv`f~fHAZpJ`ےむrXQrtAJlQZ|dvXn~f`˂pZHJXQrAbے`lJtAZdQbt~Hfpv`fvnrXbHAZpJ`ےtbdrtAJlvpfHvXn~f`ے`JX󙐂ˁ`ZHr󙐂ˁpfH~XnvˍQtJl|drpvnrXQbHAZpJ`ےtbdrtAJlvpfHvXnAbے`˂pZHJXQrrd|lJtAvnX~HfpQJ`ےrXQbHAZpQZ|dtbd~f`vpfHvXnے`Qr˂pQXb㉀`ZQXb㉐f۝`vpfH~tbAdZQtJlXv`fJ`ےむrXQbHAZpQZ|dtbd~f`vpfHJXQrAbے`˂pZHZdQbtrd|v`fvnXHAZpJ`ےむrXQrtAJlQZ|dvXn~f`JXQr`JXQۑp`ZQۑp`ZXnvˍf۝`v|drtbAdZ~HfbHAZpJ`ےむrbdrtAJlQZ|dvXn~f`˂pZHJXQrAے`lJtAZdQbt~Hfpv`frXQbHAZpJ`ےtbdrtAJlvpfHvXnۉ˂pZHr˂pXb㉀ۑQXb㉀pfH~XnvˍQtJl|drpvnrXQbHAZpQZ|dtbdrtAJlvpfHvXnAbے`˂pZHJXQrbtrd|lJtAvnX~HfpJ`ےむrXQbHAZpQZ|dtbd~f`vpfHAbے`ZHAbpJAHrۑpJAHrf۝`vpfH~tbAdZQtJlXv`fJ`ےむrXQrtAJlQZ|dtbd~f`vpfHJXQrAbے`lJtZdQbtrd|v`fvnXbHAZpJ`ےむrbdrtAJlQZ|dvXn~f`JXQr`JXQˁ`ZQ󙐂ˁ`ZXnvˍf۝`v|drtbAdZ~fpvbHAZpJ`ےtbdrtAJlQZ|dvXn~f`˂pZHJXQrAd|lJtAZdQbt~Hfpv`frXQbHAZpQZ|dtbdrtAJlvpfHvXnۉ˂p`r˂p`Xb㉀ۑQXb㉀pfH~XnvˍQtJl|drQt}~~ \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv29_2.dat b/mpdf/qrcode/data/qrv29_2.dat deleted file mode 100644 index 2b36dd3..0000000 --- a/mpdf/qrcode/data/qrv29_2.dat +++ /dev/null @@ -1,265 +0,0 @@ -~}~}~}~}{|{|{|{|wxwxwxwxuvuvuvuvststststopopopopmnmnmnmnijijijijghghghghcdcdcdcdbabababa^]^]^]^]\[\[\[\[~}~}~}~}{|{|{|{|wxwxwxwxuvuvuvuvsrqrqrqropopopopmnmnmnmnijijijijghghghghcdcdcdcdbabababa^]^]^]^]\[\[\[\[~}~}~}~}{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqropopopopmnmnmnmnijijijijghghghghcdcdcdcdbabababa^]^]^]^]\[\[\[\[~}~}~}~}{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqropopopopmnmnmnmnijijijijghghghghcdcdcdcdbabababa^]^]^]^]\[\[\[\[~}~}~}~}{|{|{|{ywxwxwxwxuvuvuvuvqrqrqrqropopopopmnmnmnmnijijijijghghghghcdccccccbabababa^]^]^]^]\[\[\[\[~}~}~}~}yyyyyzyzwxwxwxwxuvuvuvuvqrqrqrqropopopopmnmnmnmnijijijijghghghghdcdcdcdcbabababa^]^]^]^]\[\[\[\[~}~}~}~}yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqropopopopmnmnmnmnijijijijghghghghdcdcdcdcbabababa^]^]^]^]\[\[\[\[~}~}~}~}yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqropopopopmnmnmnmnijijijijghghghghdcdcdcdcbabababa^]^]^]^]\[\[\[\[~}~}~}~}yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqropopopopmnmnmnmnijijijijghghghghdcdcdcdcbabababa^]^]^]^]\[\[\[\[~}~}~}~}yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqropopopopmnmnmnmnijijijijghghghghdcdcdcccbabababa^]^]^]^]\[\[\[\[~}~}~}~}yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqropopopopmlklklklijijijijghghghghcccdcdcd`_`_`_`_^]^]^]^]\[\[\[\[~}~}~}~}yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqropopopopklklklklijijijijghghghgfcdcdcdcd`_`_`_`_^]^]^]^]\[\[\[\[~}~}~}~}yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqropopopopklklklklijijijijefefefefcdcdcdcd`_`_`_`_^]^]^]^]\[\[\[\[~}~}~}~}yzyzyzyzwxwxwxwxutstststqrqrqrqropopopopklklklklijijijijefefefefcdcdcdcd`_`_`_`_^]^]^]^]\[\[\[\[~}~}~}~}yzyzyzyzwxwxwxwxststststqrqrqrqropopopopklklklklijijijijefefefefcdcdcdcd`_`_`_`_^]^]^]^]\[\[\[\[~}~}~}~}yzyzyzyzwxwxwxwxststststqrqrqrqropopopopklklklklijijijijefefefefccccccdc`_`_`_`_^]^]^]^]\[\[\[\[~}~}~}~}yzyzyzyzwxwxwxwxststststqrqrqrqropopopopklklklklijijijijefefefefdcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[~}~}~}~}yzyzyzyzwxwxwxwxststststqrqrqrqropopopopklklklklijijijijefefefefdcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[~}~}~}~}yzyzyzyzwxwxwxwxststststqrqrqrqropopopopklklklklijijijijefefefefdcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[~}~}~}~}yzyzyzyzwxwxwxwxststststqrqrqrqropopopopklklklklijijijijefefefefdcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYZYZYZYZY~}~}~}~}yzyzyzyzwxwxwxwxststststqrqrqrqropopopopklklklklijijijijefefefefdcdccccc`_`_`_`_^]^]^]^]ZYZYZYZYZYZYZYZY~}~}|{|{yzyzyzyzwxwxwxwxststststqrqrqrqropopopopklklklklijijijijefefefefdcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYZYZYZYZY|{|{{{{{yzyzyzyzwxwxwxwxststststqrqrqrqronmnmnmnklklklklijijijijefefefefbabababa`_`_`_`_^]^]^]^]ZYZYZYZYZYZYZYZY{|{|{|{|yzyzyzyzwxwxwxwxststststqrqrqrqrmnmnmnmnklklklklijijijijefefefefbabababa`_`_`_`_^]^]^]^]ZYZYZYZYZYZYZYZY{|{|{|{|yzyzyzyzwxwxwxwxststststqrqrqrqrmnmnmnmnklklklklijijijijefefefefbabababa`_`_`_`_^]^]^]^]ZYZYZYZYZYZYZYZY{|{|{|{|yzyzyzyzwvuvuvuvststststqrqrqrqrmnmnmnmnklklklklijijijijefefefefbabababa`_`_`_`_^]^]^]^]ZYZYZYZYZYZYZYZY{|{|{|{|yzyzyzyzuvuvuvuvststststqrqrqrqrmnmnmnmnklklklklijijijijefefefefbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXW{|{|{|{{yzyzyzyzuvuvuvuvststststqrqrqrqrmnmnmnmnklklklklijijijijefefefefbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXW{{{{|{|{yzyzyzyzuvuvuvuvststststqrqrqrqrmnmnmnmnklklklklijijijijefefefefbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXW|{|{|{|{yzyzyzyzuvuvuvuvststststqrqrqrqrmnmnmnmnklklklklijijijijefefefefbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXW|{|{|{|{yzyzyzyzuvuvuvuvststststqrqrqrqrmnmnmnmnklklklklijijijijefefefefbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXW|{|{|{|{yzyzyzyzuvuvuvuvststststqrqrqrqrmnmnmnmnklklklklihghghghefefefefbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXW|{|{|{|{yzyzyzyzuvuvuvuvststststqrqrqrqrmnmnmnmnklklklklghghghghefefefefbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXW|{{{{{{|yzyzyzyzuvuvuvuvststststqrqrqrqrmnmnmnmnklklklklghghghghefefefefbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXW{|{|{|{|yzyzyzyzuvuvuvuvststststqpopopopmnmnmnmnklklklklghghghghefefefefbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXW{|{|{|{|yzyzyzyzuvuvuvuvststststopopopopmnmnmnmnklklklklghghghghefefefefbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXW{|{|{|{|yzyzyzyzuvuvuvuvststststopopopopmnmnmnmnklklklklghghghghefefefefbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXW{|{|{|{|yxwxwxwxuvuvuvuvststststopopopopmnmnmnmnklklklklghghghghefefedcdbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXW{|{|{{{{wxwxwxwxuvuvuvuvststststopopopopmnmnmnmnklklklklghghghghcdcdccccbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXW{{|{|{|{wxwxwxwxuvuvuvuvststststopopopopmnmnmnmnklklklklghghghghccdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXW|{|{|{|{wxwxwxwxuvuvuvuvststststopopopopmnmnmnmnklklklklghghghghdcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXW~}|{|{|{|{wxwxwxwxuvuvuvuvststststopopopopmnmnmnmnklklklklghghghghdcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXW~}~}~}~}|{|{|{|{wxwxwxwxuvuvuvuvststststopopopopmnmnmnmnklklklklghghghghdcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXW~}~}~}~}|{|{|{|{wxwxwxwxuvuvuvuvststststopopopopmnmnmnmnkjijijijghghghghdcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXW~}~}~}~}{{{{{|{|wxwxwxwxuvuvuvuvststststopopopopmnmnmnmnijijijijghghghghcccccdcdbabababa^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVURQRQRQRQPOPOPOPOKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<7878787856565656212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!     - - - -XWXWXWXWVUVUVUVURQRQRQRQPOPOPOPOKLKLKKKKIJIJIJIHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<7878787856565656212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!     - - - -XWXWXWXWTSTSTSTSRQRQRQRQPOPOPOPOKKLKLKLKGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<7878787856543434212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!     - - - -XWXWXWXWTSTSTSTSRQRQRQRQPOPOPONMLKLKLKLKGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<7878787834333333212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!     - - - -XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<7878787843434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('&%$#$#$#$#"!"!"!"!     - - - -XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<7878787843434343212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!     - - - -XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<7878787843434343212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!     - - - -XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMKKKKKLKLGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;:7878787843434343212121210/0/0/.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!     - - - -XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMKLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>9:9:9:9:787878784343433321212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!     - - - -XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMKLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>9:9:9:9:787878783334343421212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!     - - - -XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMKLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCB?@?@?@?@=>=>=>=>9:9:9:9:787878783434343421212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!   - - - -XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>9:9:9:9:787878783434343421212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"! - - - -XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMKLKKKKKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>9:9:9:9:787878783434343421212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"! - - - -XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMKLKLKLKJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>9:9:9:9:787878783434343421212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!  - - - -VUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>9:9:9:9:787878783333334321212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#     - - - -VUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>9:9:9:9:787878784343434321212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#     - - - -VUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>9:9:9:9:787878784343434321212121.-.-.-.-,+,+,+,+*)*)*)('&%&%&%&%$#$#$#$#     - - - -VUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>9:9:9:9:787878784343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#     - - - -VUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>9:9:9:9:787878784343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#     - - - -VUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=<9:9:9:9:78787878434333332121210/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#     - - - -VUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<9:9:9:9:78787878343434340/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#     - - - -VUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<9:9:9:9:78787656343434340/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#     - - - -VUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMIJIJIJIJGHGHGHGHEFEFEFEDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:56565656343434340/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#      - - - -VUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:56565656343434340/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#         - - - -VUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:56565656343434330/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#         - - - -VUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:56565656333343430/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#"!         - - - -VUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:56565656434343430/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!         - - - -VUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:56565656434343430/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!         - - - -VUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:56565656434343430/0/0/0/.-.-.-.-,+,+,+*)('('('('&%&%&%&%"!"!"!"!         - - - -VUVUVUVUTSTSTSTSPOPOPOPONMNMLKLKIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:56565656434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!         - - - -VUVUVUVUTSTSTSTSPOPOPOPOLKLKKKKKIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:56565656433333430/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!         - - - -VUVUVUVUTSTSTSTSPOPOPOPOKLKLKLKLIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?>;<;<;<;<9:9:9:9:56565656434343210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!         - - VUVUVUVUTSTSTSTSPOPOPOPOKLKLKLKLIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>;<;<;<;<9:9:9:9:56565656212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!         VUVUVUVUTSTSTSTSPOPOPOPOKLKLKLKLIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>;<;<;<;<9:9:9:9:56565656212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!         VUVUVUVUTSTSTSTSPOPOPOPOKLKLKLKLIJIJIJIJGHGHGHGFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<9:9:9:9:56565656212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!         VUVUVUVURQRQRQRQPOPOPOPOKLKLKLKKIJIJIJIJEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<9:9:9:9:56565656212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!         VUVUVUVURQRQRQRQPOPOPOPOKKKKLKLKIJIJIJIJEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<9:9:9:9:56565656212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!         VUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKIJIJIJIJEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<9:9:9:9:56565656212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%$#"!"!"!"!         VUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKIJIJIJIJEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<9:9:9:9:56565656212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!         VUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKIJIJIJIJEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<9:9:9:9:56565656212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!       VUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKIJIJIJIJEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<9:9:9:9856565656212121210/0/0/0/.-.-.-,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!     VUVUVUVURQRQRQRQPOPOPOPOLKKKKKKLIJIJIJIJEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<7878787856565656212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!     VUVUVUVURQRQRQRQPOPOPOPOKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<7878787856565656212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!     VUVUVUVURQRQRQRQPOPOPOPOKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCDABABABA@=>=>=>=>;<;<;<;<7878787856565656212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!     - -VUVUVUVURQRQRQRQPOPOPOPOKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<7878787856565656212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!     - - - -AABBCCDDeddccbbaPQQRRSSTYXXWWVVU\]]^^__` - - >==<<;;:baa``__^]]^^__`` - - LLKKJJII~~}}EEFFGGHH!!""a``__^^]TUUVVWWXUTTSSRRQ`aabbccd :9933221^]]\\[[Zaabbccdd HHGGFFEE||{{zzyyIIJJKKLL##$$%%&&]\\[[ZZYXYYZZ[[\QPPOONNMdeeffggh100//..-ZYYXXWWVeeffgghhDDCCBBAAxxwwvvuuMMNNOOPP''(())** -YXXWWVVU\]]^^__` - - MLLKKJJIhiijjkkl-,,++**)VUUTTSSRiijjkkll@@??>>==ttssrrqqQQRRSSTT++,,--.. - UTTSSRRQ`aabbccd IHHGGFFElmmnnoop)((''&&%RQQPONMLmmnnoopp<<;;::99ppoonnmmUUVVWWXX//001122QPPOONNMdeeffgghEDDCCBBApqqrrsst %$$##""!KKJJIIHHqqrrsstt 88776655llkkjjiiYYZZ[[\\3399::;; - - MLLKKJJIhiijjkklA@@??>>=tuuvvwwx !!""##$!GGFFEEDDuuvvwwxx!!""##$$44332211hhggffee]]^^__``<<==>>?? IHHGGFFElmmnnoop=<<;;::9xyyzz{{|$%%&&''(CCBBAA@@yyzz{{||%%&&''((00//..--ddccbbaaaabbccdd@@AABBCCEDDCCBBApqqrrsst 98877665|}}~~())**++,??>>==<<}}~~))**++,,,,++**))``__^^]]eeffgghhDDEEFFGGA@@??>>=tuuvvwwx !!""##$54433221,--..//0 ;;::9987--..//00((''&&%%\\[[ZZYYiijjkkllHHIIJJKK=<<;;::9xyyzz{{|$%%&&''(100//..-01122334 - - 6543322111223344$$##""!!XXWWVVUUmmnnooppQQRRSSTT 98877665|}}~~())**++,-,,++**)~~}45566778100//..-~~}}55667788 TTSSRRQQqqrrssttUUVVWWXX !!""##$54433221,--..//0)((''&&%}||{{zzy899::;;< -,,++**)||{{zzyy99::;;<<PPOONNMMuuvvwwxxYYZZ[[\\$%%&&''(100//..-01122334%$$##""!yxxwwvvu<==>>??@ - - )((''&&%xxwwvvuu==>>??@@LLKKJJIIyyzz{{||]]^^__``())**++,-,,++**)~~}45566778! uttssrrq@AABBCCD %$$##""!ttssrrqqAABBCCDDHHGGFFEE}}~~aabbccii,--..//0)((''&&%}||{{zzy899::;;<qppoonnmDEEFFGGH! ppoonnmmEEFFGGHH DDCCBBAAjjkkllmm01122334%$$##""!yxxwwvvu<==>>??@mllkkjjiHIIJJKKLllkkjjiiIIJJKKLL - - @@??>>==nnooppqq45566778! uttssrrq@AABBCCDihhggffeLMMNNOOP!!"hhggffeeMMNNOOPP<<;;::99{{zzyyxxrrssttuu899::;;<qppoonnmDEEFFGGH eddccbbaPQQRRSST"##$$%%&ddccbbaaQQRRSSTT88776655wwvvuuttvvwwxxyy<==>>??@mllkkjjiHIIJJKKL - - a``__^^]TUUVVWWX&''(())* ``__^^]]UUVVWWXXiijjkkll44332211ssrrqqppzz{{@AABBCCDihhggffeLMMNNOOP ]\\[[ZZYXYYZZ[[\*++,,--. - - \\[[ZZYYYYZZ[[\\mmnnoopp00//..--oonnmmllDEEFFGGH eddccbbaPQQRRSSTYXXWWVVU\]]^^__`.//00112XXWWVVUU]]^^__`` - - qqrrsstt,,++**))kkjjiicc~}HIIJJKKL - - a``__^^]TUUVVWWXUTTSSRRQ`aabbccd23399::;TTSSRRQQaabbccdd uuvvwwxx((''&&%%bbaa``__|{{zzyyxLMMNNOOP ]\\[[ZZYXYYZZ[[\QPPOONNMdeeffggh;<<==>>?PPOONNMMeeffgghhyyzz{{||$$##""!!^^]]\\[[xwwvvuutPQQRRSSTYXXWWVVU\]]^^__` - - MLLKKJJIhiijjkkl?@@AABBC - - LLKKJJIIiijjkkll}}~~ ZZYYXXWWtssrrqqpTUUVVWWXUTTSSRRQ`aabbccd IHHGGFFElmmnnoopCDDEEFFG HHGGFFEEmmnnooppVVUUTTSSpoonnmmlXYYZZ[[\QPPOONNMdeeffgghEDDCCBBApqqrrsstGHHIIJJKDDCCBBAAqqrrsstt RRQQKKJJlkkjjiih\]]^^__` - - MLLKKJJIhiijjkklA@@??>>=tuuvvwwxKQQRRSST@@??>>==uuvvwwxx!!""##$$~~}}IIHHGGFFgfedccbb`aabbccd IHHGGFFElmmnnoop=<<;;::9xyyzz{{|TUUVVWWX<<;;::99yyzz{{||%%&&''((||{{zzyy EEDDCCBBaa``__^^deeffgghEDDCCBBApqqrrsst 98877665|}}~~XYYZZ[[\ 88776655}}~~))**++,,xxwwvvuu - - AA@@??>>]]\\[[ZZhiijjkklA@@??>>=tuuvvwwx !!""##$54433221\]]^^__`!!""##$$44332211--..//00ttssrrqq - - ==<<;;::YYXXWWVVlmmnnoop=<<;;::9xyyzz{{|$%%&&''(100//..-`aabbcci%%&&''((00//..--11223344ppoonnmm 99332211UUTTSSRRpqqrrsst 98877665|}}~~())**++,-,,++**){{zzyyxijjkkllm))**++,,,,++**))~~}}55667788llkkjjii00//..--QQPONMLKtuuvvwwx !!""##$54433221,--..//0)((''&&%xwwvvuutmnnooppq--..//00((''&&%%||{{zzyy99::;;<>??@@ddccbbaa((''&&%%GFFEEDDC|}}~~())**++,-,,++**)~~}45566778! poonnmmluvvwwxxy55667788 ttssrrqqAABBCCDD``__^^]] $$##""!!CBBAA@@?,--..//0)((''&&%}||{{zzy899::;;<lkkjjiicyzz{{99::;;<<ppoonnmmEEFFGGHH\\[[ZZYY!!""##$$?>>==<<;01122334%$$##""!yxxwwvvu<==>>??@cbbaa``_==>>??@@llkkjjiiIIJJKKLLXXWWVVUU%%&&''((;::99876~~}45566778! uttssrrq@AABBCCD_^^]]\\[~AABBCCDDhhggffeeMMNNOOPPTTSSRRQQ))**++,,54332211}||{{zzy899::;;<qppoonnmDEEFFGGH [ZZYYXXW}|{{zzyyEEFFGGHH ddccbbaaQQRRSSTTPPOONNMM--..//00 00//..--yxxwwvvu<==>>??@mllkkjjiHIIJJKKL - - WVVUUTTSxxwwvvuuIIJJKKLL - - ``__^^]]UUVVWWXXLLKKJJII11223344 - - ,,++**))uttssrrq@AABBCCDihhggffeLMMNNOOP SRRQQKKJttssrrqqMMNNOOPP\\[[ZZYYYYZZ[[\\HHGGFFEE55667788 - - ((''&&%%qppoonnmDEEFFGGH eddccbbaPQQRRSSTJIIHHGGFppoonnmmQQRRSSTTXXWWVVUU]]^^__``DDCCBBAA99::;;<<$$##""!!mllkkjjiHIIJJKKL - - a``__^^]TUUVVWWXFEEDDCCBllkkjjiiUUVVWWXXTTSSRRQQaabbccdd@@??>>====>>??@@ ihhggffeLMMNNOOP ]\\[[ZZYXYYZZ[[\BAA@@??>hgfedccbYYZZ[[\\PPOONNMMeeffgghh<<;;::9988776655}}~~))**++,,?>>==<<;}~~)**++,,-,++**))(~~}}|56677889 onnmmllkvwwxxyyz66778899ssrrqqppBBCCDDEEggffeeddNNOOPPQQ!!""##gffeeddcNOOPPQQR[ZZYYXXWZ[[\\]]^ -=<<;;::9MLLKKJJI44332211--..//00 ;::99876-..//001(''&&%%$|{{zzyyx9::;;<<=kjjiiccbz{{::;;<<==oonnmmllFFGGHHII ccbbaa``RRSSTTUU$$%%&&'' cbbaa``_RSSTTUUVWVVUUTTS^__``aab - 93322110IHHGGFFE00//..--11223344 - - 5433221112233445$##""!! xwwvvuut=>>??@@Abaa``__^>>??@@AAkkjjiihhJJKKLLMM - - __^^]]\\VVWWXXYY(())**++ - - _^^]]\\[VWWXXYYZSRRQQPPObccddeef0//..--,EDDCCBBA,,++**))~~}}5566778800//..--~~}}|56677889 tssrrqqpABBCCDDE^]]\\[[Z~}|BBCCDDEEggffeeddNNOOPPQQ[[ZZYYXXZZ[[\\]],,--..// [ZZYYXXWZ[[\\]]^ -ONNMMLLKfgghhiij,++**))(A@@??>>=((''&&%%||{{zzyy99::;;<< ,,++**))|{{zzyyx9::;;<<=poonnmmlEFFGGHHI ZYYXXWWV{{zzyyxxFFGGHHII ccbbaa``RRSSTTUUWWVVUUTT^^__``aa00112233WVVUUTTS^__``aab - KJJIIHHGjkkllmmn(''&&%%$=<<;;::9$$##""!!xxwwvvuu==>>??@@ - - ((''&&%%xwwvvuut=>>??@@AlkkjjiihIJJKKLLM - - VUUTTSSRwwvvuuttJJKKLLMM - - __^^]]\\VVWWXXYYSSRRQQPPbbccddee99::;;<<SRRQQPPObccddeefGFFEEDDCnooppqqr$##""!!98877665 ttssrrqqAABBCCDD$$##""!!tssrrqqpABBCCDDEhggffeedMNNOOPPQRQQKKJJIssrrqqppNNOOPPQQ[[ZZYYXXZZ[[\\]] OONNMMLLffgghhii==>>??@@ -ONNMMLLKfgghhiijCBBAA@@?rssttuuv !!"54433221ppoonnmmEEFFGGHH poonnmmlEFFGGHHI dccbbaa`QRRSSTTUIHHGGFFEoonnmmllRRSSTTUUWWVVUUTT^^__``aa - - KKJJIIHHjjkkllmmAABBCCDD - KJJIIHHGjkkllmmn?>>==<<;vwwxxyyz"##$$%%&100//..-llkkjjiiIIJJKKLLlkkjjiihIJJKKLLM - - `__^^]]\UVVWWXXYEDDCCBBAkkjjiihgVVWWXXYYSSRRQQPPbbccddeeGGFFEEDDnnooppqqEEFFGGHHGFFEEDDCnooppqqr;::99887z{{||}}~&''(())*-,,++**)hhggffeeMMNNOOPP!!""hggffeedMNNOOPPQ\[[ZZYYXYZZ[[\\] A@@??>>=fedccbbaZZ[[\\]] OONNMMLLffgghhiiCCBBAA@@rrssttuuIIJJKKQQCBBAA@@?rssttuuv !!"76655443~*++,,--. )((''&&% ddccbbaaQQRRSSTT##$$%%&&dccbbaa`QRRSSTTUXWWVVUUT]^^__``a - - =<<;;::9a``__^^]^^__``aa - - KKJJIIHHjjkkllmm??>>==<>==<<;vwwxxyyz"##$$%%&3221100/.//00112 - - -%$$##""! - - ``__^^]]UUVVWWXX''(())** -`__^^]]\UVVWWXXYTSSRRQQPabbccdde 93322110]\\[[ZZYbbccddeeGGFFEEDDnnooppqq;;::9988zz{{||}}VVWWXXYY;::99887z{{||}}~&''(())*/..--,,+23344556 - ! \\[[ZZYYYYZZ[[\\++,,--.. - \[[ZZYYXYZZ[[\\] POONNMMLeffgghhi0//..--,YXXWWVVUffgghhiiCCBBAA@@rrssttuu !!77665544~~ZZ[[\\]] !!"76655443~*++,,--.+**))(('~~}}||{6778899:XXWWVVUU]]^^__``//001122XWWVVUUT]^^__``a - - LKKJJIIHijjkkllm,++**))(UTTSSRRQjjkkllmm??>>==<TTSSRRQQaabbccdd3399::;;TSSRRQQPabbccdde HGGFFEEDmnnooppq(''&&%%$QPONMLKKnnooppqq;;::9988zz{{||}}&&''(())//..--,,{{bbcciijj&''(())*/..--,,+23344556#""!! wvvuutts>??@@AABPPOONNMMeeffgghh<<==>>?? POONNMMLeffgghhiDCCBBAA@qrrssttu !$##""!!JJIIHHGGrrssttuu !!77665544~~**++,,--++**))((zzyyxxwwkkllmmnn*++,,--.+**))(('~~}}||{6778899:srrqqppoBCCDDEEF!!""# - - LLKKJJIIiijjkkll@@AABBCC - - LKKJJIIHijjkkllm@??>>==onnmmllkFGGHHIIJ#$$%%&&' - - HHGGFFEEmmnnooppDDEEFFGG HGGFFEEDmnnooppq<;;::998yzz{{||}%&&''(()BBAA@@??zz{{||}}&&''(())//..--,,22334455##""!! rrqqppoossttuuvv23344556#""!! wvvuutts>??@@AABkjjiihhgJKKLLMMN'(())**+ - - DDCCBBAAqqrrssttHHIIJJKKDCCBBAA@qrrssttu !87766554}~~)**++,,->>==<<;;~~**++,,--++**))((~~}}||66778899nnmmllkkwwxxyyzz6778899:srrqqppoBCCDDEEFgffeeddcNOOPPQQR+,,--../ @@??>>==uuvvwwxxQQRRSSTT@??>>==onnmmllkFGGHHIIJ cbbaa``_RSSTTUUV/0011223<<;;::99yyzz{{||UUVVWWXX<;;::998yzz{{||}%&&''(()0//..--,12233445 - - 4332211022334455##""!! wwvvuutt>>??@@AAaa``__^^>??@@AABkjjiihhgJKKLLMMN - - _^^]]\\[VWWXXYYZ399::;;< 88776655}}~~YYZZ[[\\ !87766554}~~)**++,,-,++**))(~~}}|566778890//..--,~~}}||66778899ssrrqqppBBCCDDEE]]\\[[ZZ~}|{BCCDDEEFgffeeddcNOOPPQQR[ZZYYXXWZ[[\\]]^<==>>??@!!""##$$44332211]]^^__``!""##$$%43322110-..//001(''&&%%$|{{zzyyx9::;;<<= -,++**))({{zzyyxx::;;<<==oonnmmllFFGGHHII YYXXWWVV{zzyyxxwFGGHHIIJ cbbaa``_RSSTTUUVWVVUUTTS^__``aab@AABBCCD %%&&''((00//..--aabbccii%&&''(()0//..--,12233445$##""!! xwwvvuut=>>??@@A - (''&&%%$wwvvuutt>>??@@AAkkjjiihhJJKKLLMM - - UUTTSSRRwvvuuttsJKKLLMMN - - _^^]]\\[VWWXXYYZSRRQQPPObccddeefDEEFFGGH !!""##$))**++,,,,++**)){{zzyyxxjjkkllmm)**++,,-,++**))(~~}}|56677889 tssrrqqpABBCCDDE$##""!! ssrrqqppBBCCDDEEggffeeddNNOOPPQQQQKKJJIIsrrqqppoNOOPPQQR[ZZYYXXWZ[[\\]]^ -ONNMMLLKfgghhiijHIIJJKKQ$%%&&''(--..//00((''&&%%wwvvuuttnnooppqq-..//001(''&&%%$|{{zzyyx9::;;<<=poonnmmlEFFGGHHIoonnmmllFFGGHHII ccbbaa``RRSSTTUUHHGGFFEEonnmmllkRSSTTUUVWVVUUTTS^__``aab - KJJIIHHGjkkllmmnQRRSSTTU())**++,11223344$$##""!!ssrrqqpprrssttuu12233445$##""!! xwwvvuut=>>??@@AlkkjjiihIJJKKLLMkkjjiihhJJKKLLMM - - __^^]]\\VVWWXXYYDDCCBBAAkjjiihgfVWWXXYYZSRRQQPPObccddeefGFFEEDDCnooppqqrUVVWWXXY,--..//055667788 oonnmmllvvwwxxyy56677889 tssrrqqpABBCCDDEhggffeedMNNOOPPQ!!""#ggffeeddNNOOPPQQ[[ZZYYXXZZ[[\\]] @@??>>==edccbbaaZ[[\\]]^ -ONNMMLLKfgghhiijCBBAA@@?rssttuuvYZZ[[\\]0112233499::;;<<kkjjiicczz{{9::;;<<=poonnmmlEFFGGHHI dccbbaa`QRRSSTTU#$$%%&&'ccbbaa``RRSSTTUUWWVVUUTT^^__``aa - - <<;;::99``__^^]]^__``aab - KJJIIHHGjkkllmmn?>>==<<;vwwxxyyz]^^__``a45566778==>>??@@bbaa``__=>>??@@AlkkjjiihIJJKKLLM - - `__^^]]\UVVWWXXY'(())**+ - -__^^]]\\VVWWXXYYSSRRQQPPbbccddee33221100\\[[ZZYYbccddeefGFFEEDDCnooppqqr;::99887z{{||}}~abbcciij899::;;>??@EEFFGGHH ZZYYXXWW|{{zzyyxEFFGGHHI dccbbaa`QRRSSTTUXWWVVUUT]^^__``a/0011223WWVVUUTT^^__``aa - - KKJJIIHHjjkkllmm++**))((TTSSRRQQjkkllmmn?>>==<<;vwwxxyyz"##$$%%&3221100/||{nooppqqr@AABBCCDIIJJKKLL - - VVUUTTSSxwwvvuutIJJKKLLM - - `__^^]]\UVVWWXXYTSSRRQQPabbccdde399::;;<SSRRQQPPbbccddeeGGFFEEDDnnooppqq''&&%%$$PONMLKKJnooppqqr;::99887z{{||}}~&''(())*/..--,,+{zzyyxxwrssttuuvDEEFFGGHMMNNOOPPRRQQKKJJtssrrqqpMNNOOPPQ\[[ZZYYXYZZ[[\\] POONNMMLeffgghhi<==>>??@ OONNMMLLffgghhiiCCBBAA@@rrssttuu !!##""!!JIIHHGGFrssttuuv !!"76655443~*++,,--.+**))(('wvvuuttsvwwxxyyyHIIJJKKLQQRRSSTTIIHHGGFFpoonnmmlQRRSSTTUXWWVVUUT]^^__``a - - LKKJJIIHijjkkllm@AABBCCD - - KKJJIIHHjjkkllmm??>>==<z{{||}}~&''(())*/..--,,+23344556#""!! onnmmllkuttssrrqPQQRRSSTYYZZ[[\\AA@@??>>gfedccbbYZZ[[\\] POONNMMLeffgghhiDCCBBAA@qrrssttuHIIJJKKQCCBBAA@@rrssttuu !!77665544~~**++,,-->==<<;;:~*++,,--.+**))(('~~}}||{6778899:kjjiiccbqppoonnmTUUVVWWX]]^^__`` - - ==<<;;::aa``__^^]^^__``a - - LKKJJIIHijjkkllm@??>>==>==<baa``__^mllkkjjiXYYZZ[[\aabbccdd 99332211]]\\[[ZZabbccdde HGGFFEEDmnnooppq<;;::998yzz{{||}UVVWWXXY;;::9988zz{{||}}&&''(())//..--,,22334455 - - 3322110023344556#""!! wvvuutts>??@@AAB^]]\\[[Zihhggffe\]]^^__`eeffgghh00//..--YYXXWWVVeffgghhiDCCBBAA@qrrssttu !87766554}~~YZZ[[\\] !!77665544~~**++,,--++**))((~~}}||66778899//..--,,~~}}||{6778899:srrqqppoBCCDDEEFZYYXXWWVeddccbba`aabbccdiijjkkll,,++**))UUTTSSRRijjkkllm@??>>==onnmmllkFGGHHIIJ VUUTTSSRa``__^^]deeffgghmmnnoopp((''&&%%QQPONMLKmnnooppq<;;::998yzz{{||}%&&''(()0//..--,{abbcciij&&''(())//..--,,22334455##""!! wwvvuutt>>??@@AA ''&&%%$$wvvuutts>??@@AABkjjiihhgJKKLLMMN - - RQQKKJJI]\\[[ZZYhiijjkklqqrrsstt $$##""!!KJJIIHHGqrrssttu !87766554}~~)**++,,-,++**))({zzyyxxwjkkllmmn**++,,--++**))((~~}}||66778899ssrrqqppBBCCDDEE##""!! srrqqppoBCCDDEEFgffeeddcNOOPPQQRIHHGGFFEYXXWWVVUlmmnnoopuuvvwwxx!!""##$$GFFEEDDCuvvwwxxy!""##$$%43322110-..//001(''&&%%$wvvuuttsnooppqqr..//0011''&&%%$${{zzyyxx::;;<<==oonnmmllFFGGHHIIonnmmllkFGGHHIIJ cbbaa``_RSSTTUUVEDDCCBBAUTTSSRRQpqqrrsstyyzz{{||%%&&''((CBBAA@@?yzz{{||}%&&''(()0//..--,12233445$##""!! srrqqpporssttuuv22334455##""!! wwvvuutt>>??@@AAkkjjiihhJJKKLLMMkjjiihhgJKKLLMMN - - _^^]]\\[VWWXXYYZA@@??>>=QPPOONNMtuuvvwwxxyybdQZ|H~fZdQbtvnXAJltf`vX`JXQfpvZp˂f`vXJXQrvnXp˂r`vXnے`JXQdrtA`vXnl|Zv`fbdQZ|nvprbtlnXv`rXQJ`nvpp`JXv`fXQJ`ےvpfr˂pJltvpfdQbt~HfpہdrtfH~ˑJtAdf~HbHAfH~Qr˂p~HfpېbHAZH~fZHAbbdQZ|H~flJtArvnXAJltf`vX|ZdQfpvZp˂f`vXZHAbvnXp˂r`vXnے`JXQdrtA`vXnd|Zv`frbdQZ|nvpbtlnXv`rXQJ`nvpے`JXv`f~fXQJ`ےvpfr˂pJltvpfdQbtQJHAdrtfH~JtArdf~HbHAfH~Qr˂ppvnbHAZH~fZHAbbdQZ|H~fl|ZdQZp˂AJltf`vX|ZdQfpvZp˂f`vX`JXQXv`fp˂r`vXnے`JXQdrtA`vXnbtlrXQJ`ۉbdQZ|nvpbtlnXv`rXQJ`nvpr˂p~HfXQJ`ےvpfr˂pJltvpfJtArdbHAdrtfH~JtArdf~HbHAfH~ZHAbpvnbHAZH~fZHAbbdQZ|H~f|ZdQZp˂AJltf`vX|ZdQfpvZp˂f`vX`JXQXv`fp˂r`vXnے`JXQdrtA`vXnbtlrXQJ`ۉbdQZ|nvpbtlnXv`rbdQZ|nvpr˂p`~fpvbdQZ|vpfr˂pJltvpf|ZdQbbHAdrtfH~JtArdf~HdrtfH~ˁJXQrnXv`drtAH~fZHAbbdQZ|H~ftlJZp˂AJltf`vX|ZdQfpvAJltf`vXbtl|f~HJlt`vXnے`JXQdrtA`vXntArdrXQJ`ۉbdQZ|nr˂pbtlnXv`bdQZ|nvpZdQbtfpvbdQZ|vpfr˂pJltvpf|ZdQbbHAdrtZHAbJtArdf~HdrtfH~ˉlJtnXv`drtAH~fZHAbbdQZ|H~ftl|Zp˂AJltے`JX|ZdQfpvAJltf`vXArd|f~fpJlt`vXnے`JXQdrtA`vXnZdQbtrXQJ`ۉbdQZ|Qr˂pbtlnXv`bdQZ|nvpZdQbtvnXbdQZ|vpfr˂pJltr˂plJtAbHAdrtZHAbJtArdf~HdrtfH~ˉl|v`fdrtAH~fZHAےbdQZ|`JXQrrd|Zp˂AJltے`JX|ZdQfpvAJltf`vXZdQbt~HfpJlt`vXn`JXQrdrtA˂pZZdQbtrXQJ`ۉbdQZ|Qr˂pbtlnXv`bdQZ|nvplJtAvnXbdQZ|vpfbtl|ZdQbJltHAbےl|ZbHAdrtZHAbJtArdfHdrtfH~rd|v`ffdrtAH~fJtAdtlJbdQZ|`JXQrdQbnXZp˂AJltے`JX|ZdQfpvAJltf`vXZdQbtpvnJlt`vXn|ZdQbtArddrtA˂p`v`f~rXQJ`ۉbdQZ|Qr˂pbtlnrXQJ`bdQZ|nvpl|ZdrXQJ`bdQZ|vpftlJ|ZdQbJltJXQrfpv㒐bHAdtAZHAbJtArdےHAdrtfH~QbtlےHAZdrtAH~ftArdtlJbdQZ|˂pZHAnXv`Zp˂Jltے`JX|ZdQZp˂AJltf`vXJtArdp˂rJlt`vXn|ZdQbtArddrtAbے`f~HrXQJ`bnvpQr˂pbtlrXQJ`ۉbdQZ|nvp|ZdXQJ`ےbdQZ|vpftlJ|ZdQbJltJXQrfpv㒐bHAfHˑZHAbJtArdbHAdrtfH~QbtlbHAZdrtAH~ftArdnXv`bdQZ|˂p`JnXv`fZp˂f`vXے`JX|ZdQZp˂AJltf`vX|ZdQp˂rJlt`vXn|ZdQbf~HdrtAXQr˂~fpvrXQJ`nvpQr˂pbtlrXQJ`ۉbdQZ|nvpbtlXQJ`ےbdQZ|vpftlJfpvJltpZHAbnXvbHAfH~ˑZHAbJtArdbHAdrtfH~JtArdbHAZdrtAH~ftArdnXv`bdQZ|ے`J`f~Zp˂f`vXے`JX|ZdQZp˂AJltf`vX|ZdQp˂rJlt`vXn|ZdQbf~H`vXnXQr˂HfpvrXQJ`nvpQr˂pbtlrXQJ`ۉbdQZ|nr˂pbtl|XQJ`ےbdQZ|r˂ptlJfpvvpfp`JXQnXvbHAfH~ˑZHAbJtArdbHAdrt`JXQZdQbtbHAZdrtAZHAbtArdnXv`H~fr˂p`f~fpZp˂f`vXے`JX|ZdQZp˂AJltr˂plJtp˂rJltے`JXQ|ZdQbf~H`vXnZHAbvnXrXQJ`nvpQr˂pbnXv`rXQJ`ۉbdQZ|ZHAbArd|XQJ`ےbdQZ|r˂ptlJfpvvpfے`JXQv`fbHAfH~ˑZHAbf~HbHAdrt`JXQZdQbtbHAZdrtAZHAbtArdnXv`H~fr˂p~HfpZp˂f`vXے`JXfpvZp˂AJltr˂p`l|p˂rJltے`JXQ|ZdQbf~H`vXn`JXQrvnXrbdQZ|nvpQr˂pnXv`rXQJ`ۉbdQZ|JXQrZdQbnXXQJ`ےbdQZ|r˂ptlJfpvvpf˂pZv`f~drtfH~ˑZHAbf~HbHAdrt˂pZHv`f~bHAZdrtAZHAbtArdnXv`H~fHAbےfpvAJltf`vXے`JXfpvZp˂AJltAbے`fpvp˂rJltے`JXQ|ZdQbf~H`vXn`JXQrnXv`bdQZ|nvpQr˂pnXv`rXQJ`ۉbdQZ|JXQrnXv`XQJ`ےbdQZ|r˂ptlJfpvvpf˂p|f~HdrtfH~ˑZHAbf~HbHAdtA˂p`f~HbHAZdtAJZHAbtArdnXv`H~fZdQbtfpvAJltf`vXے`JXfpvZp˂JltJXQrfpvp˂rltbے`JXQ|ZdQbf~H`vXnlJtAnXv`bdQZ|nvpQr˂pnXv`rXQJ`bnvppZHAnXv`XQJ`ےnvpr˂ptlJfpvvpfrd|f~fpہdrtfH~ˑZHAۍf~HbHAfHbے`f~fpېbHAZfHfZHAbtArdnXv`f~HbHAZH~fHAbےvnXbHAZp~f`ZHAbf~HbHAZpdrtAJXQrZdQbtbHAZpdrtAJHAbےrd|~HfdrtAJ~f`l|ZdQf~HrtAJl~f`Aے`~HfpbHAZp˅f`Qr˂pf۝`vfpvp˂r`vXn`JXQrv`f~˂rvXn`JXQfpv˂rXJlt˂p`l|Zd˂rXQltb`JXQrZdQbtpvnltbvXnbtlfpvtbdvXnJXQrbtvnXrXQvXnۑ`JXQXnvˍnXv`bdQZ|vpf˂p`fpvbdQZ|vpfHr˂pnXv`QJ`ےbdQZ|JXQrQbnXJ`ےdQZ|˂pZlJtAXv`fdQZ|vpfHJtArdnXv`QZ|dvpfHlJtv`fJ`ےvpfHr˂ppfH~f~HdrtAH~fJXQrbnXv`drtA~f`ZHAbf~HbHAZpdrtApZHAv`f~fbHAZpdrtAJHAbےrd|HfpdrtAJ~f`|ZdQffpۙrtAJl~f`Ad|~HfpbHAZp~f`ZHAbېf۝`vfpvJlt`vXntl|f~HJltvXn`JXQfpv˂rXJltbے`pvn˂rXQltb`JXQrZdQbtvnrltbvXnbtlvnrXtbdvXnZdQbtvnXrXQvXnے`JXQXnvˍnXv`bdQZ|vpfZdQbtfpvbdQZ|vpfHr˂pnXv`QJ`ےbdQZ|JXQrXv`fJ`ےdQZ|˂pZlJtAXQJ`ےdQZ|vpfH|ZdQbQJ`ےQZ|dvpfHlJtAv`fJ`ےvpfHr˂p`pfH~f~HdrtAH~flJtAnXv`drtA~f`ZHAbf~HbHAZpdtAJlp`JX~HfbHAZpdtAJlHAbےrd|HAZpdrtAJ~f`tlJHAZp˙rtAJl~f`rd|~HfpbHAZp~f`JXQrf۝`vfpvJlt`vXnrd|f~fpJltvXn`JXQfpv˂rXtbQr˂ppvn˂rXQtbn`JXQrZdQbt˂rXQltbvXntArdrXQtbdvXnZdQbtvnXrXQvXnۉ˂pZHXnvˍnXv`bdQZ|vpfZdQbtvnXbdQZ|vpfHr˂pnXv`QJ`ےnvpZHAbXv`fJ`ےvpf˂pZlJtAJ`ےdQZ|vpfH|ZdQbJ`ےQZ|dvpfHlJtAv`fJ`ےvpfHAbے`pfH~f~HdrtAH~fl|Zv`fdrtA~f`ZHAے`f~HbHAZpfHf`ے`JX~fpvbHAZpHf`HAbےrd|bHAZpdrtAJ~f`tl|bHAZp˙rtAJl~f`rd|~HfpbHAZp~f`JXQrf۝`vfpvJlt`vXndQbt~HfpJltvXnJXQrfpv˂rXvXnQr˂pnXv`˂rXQvXn`JXQrZdQbt˂rXQltbvXnZdQbtrXQtbdvXnZdQbtvnXrbdvXnۉ˂p`ZXnvˍnXv`bdQZ|vpflJtArvnXbdQZ|vpfHbtlnXv`QJ`ےvpfH`JXQf~HJ`ےvpfH˂pZlJtAJ`ےdQZ|vpfHlJtAJ`ےQZ|dvpfHlJtAv`fQZ|dvpfHQXb㉀pfH~fHfdrtAH~fd|Zv`ffpdrtA~f`JtAd|f~HbHAZp~f`r˂pfpvbHAZp~f`HAbےrd|bHAZpdrtAJ~f`rd|bHAZp˙rtAJl~f`rd|~HfprtAJl~f`ۑpJAHrf۝`vpvnJlt`vXndQbt璝vnJltvXnZdQbtfpv˂rXvXnZHAbۅnXv`˂rXQvXn`JXQrZdQbt˂rXQltbvXnrZdQbtrXQtbdvXnrZdQbtvnXtbdvXn󙐂ˁ`ZXnvˍrXQJ`bdQZ|vpfl|ZdQrXQJ`bdQZ|vpfHlJtnXv`QJ`ےvpfH`JXQf~fpJ`ےvpfH˂pZlJtAJ`ےdQZ|˂p`l|ZJ`ےQZ|d˂pZHlJtAv`fQZ|dvpfHQXb㉀pfH~ےHAZdrtAH~fbtlHAZpdrtA~f`Ard|f~HbHAZp~f`r˂p`vnXbHAZp~f`HAbےrd|bHAZpdrtAJJXQrdQbtbHAZp˙rtAJlAbے`rd|~HfprtAJl~f`ۑp`ZQf۝`vp˂rJlt`vXnJtArd˂rXJltvXnZdQbtfpv˂rXvXnJXQrv`f˂rXQvXn`JXQrZdQbn˂rXQltb˂pZHAlJtArrXQtbdJXQrZdQbtvnXtbdvXnXb㉀ۑXnvˍXQJ`ےbdQZ|vpf|ZdQQJ`ےbdQZ|vpfHlJtnXv`QJ`ےvpfH˂pZH~HfpJ`ےvpfH˂pZXv`fJ`ےdQZ|bے`d|ZJ`ےQZ|d˂pZHlJtAv`fQZ|dvpfHpJAHrp|drbHAZdrtAH~fbtlbHAZpdrtA~f`Ard|f~HbHAZp~f`Abے`vnXbHAZp~f`HAbے~HfbHAZpdrtAJJXQrdQbtbHAZp˙rtAJlAbے`rd|~HfprtAJl~f`ˁ`ZQQtJlp˂rJlt`vXn|ZdQb˂rXJltvXnZdQbtfpv˂rvXnJXQrv`f~˂rbvXn`JXQrpvn˂rXQltb˂p`Jl|ZdQrXQtbdJXQrZdQbtvnXtbdvXnXb㉀ۑtbAdZXQJ`ےbdQZ|vpftlJQJ`ےbdQZ|vpfHlJtnXv`bdQZ|vpfH˂p`fpvdQZ|vpfH˂pZXv`fJ`ےdQZ|XQr˂bnXvJ`ےQZ|d˂pZHlJtAv`fQZ|dvpfHp`ZQXb|drbHAZdrtAH~ftArdbHAZpdrtA~f`Ard|f~HdrtA~f`JXQrbtnXv`drtAJ~f`HAbے~HfbHAZpdrtAJpZHAb`f~fpbHAZp˙rtAJlAbے`rd|HfpۙrtAJl~f`㉀ۑpJQtJlp˂rJlt`vXn|ZdQb˂rXJltvXnZdQbtfpvJltvXnl|f~HltbvXn`JXQrpvn˂rXQltbے`JvnXrXQtbdJXQrZdQbtvnrXtbdvXnAHr󙐂tbAdZXQJ`ےbdQZ|r˂ptl|QJ`ےbdQZ|r˂plJtnXv`bdQZ|vpfHZdQbtfpvdQZ|vpfH˂pZXv`fJ`ےdQZ|XQr˂v`fJ`ےQZ|d˂pZHlJtAQJ`ےQZ|dvpfHˁ`ZQXb|drbHAZdrtA`JXQrZdQbtbHAZpdrtAZHAbArd|f~HdrtA~f`lJtAnXv`fdrtAJ~f`HAbے~HfbHAZpdtAJlp`JXQ~HfpbHAZp˙tAJlAbے`rd|HAZp˙rtAJl~f`㉀ۑpQtJlp˂rJlt˂pZlJtA˂rXJlt`JXQZdQbtfpvJltvXnrd|~fpvltbvXn`JXQrpvn˂rXQtbnr˂pvnXrXQtbnJXQrZdQbt炀rXQtbdvXn`ZQXbtbAdZXQJ`ےbdQZ|HAbےrd|QJ`ےbdQZ|r˂plJtnXv`bdQZ|vpfHZdQbt瀅nXvdQZ|vpfH˂pZXv`fJ`ےvpfZHAbv`f~J`ےvpfH˂pZHlJtAJ`ےQZ|dvpfHۑpJA|drbHAZdrtA`JXQrZdQbtbHAZpdrtAZHAbArd|f~HdrtA~f`l|Zd`f~drtAJ~f`HAے`~HfbHAZpHf`ے`JXQfpvbHAZp˅f`Abے`rd|bHAZp˙rtAJl~f`Hr󙐂ˁQtJlp˂rJlt˂p`l|Z˂rXJlt`JXQZdQbtfpvJltvXnQbtlHfpvltbvXnJXQrbpvn˂rXQvXnr˂pnXv`rXQvXnہJXQrZdQbt炀rXQtbdvXn`ZQXbtbAdZXQJ`ےbdQZ|JXQrdQbnXQJ`ےbdQZ|r˂plJtnXv`bdQZ|vpfHJtArdnXvdQZ|vpfHtlJXv`fJ`ےvpfH`JXQrf~HJ`ےvpfH˂pZHlJtAJ`ےQZ|dvpfHۑp`Z|drbHAZdrtA˂pZHAv`f~bHAZpdrtAZHAbArd|fHfpdrtA~f`|Zd`ffpdrtAJ~f`tAd|~HfbHAZp~f`˂pZfpvbHAZp~f`Abے`rd|bHAZp˙rtAJl~f`QXb㉀QtJlp˂rJltbے`fpv˂rXJlt`JXQZdQbtvnJltvXnQbtlvnrltbvXnZdQbtpvn˂rXQvXnHAbےnXv`rXQvXnہJXQrZdQbt炀rXQtbdvXnے`ۑpJAHrtbAdZXQJ`ےbdQZ|JXQrnXv`QJ`ےbdQZ|r˂plJtrXQJ`bdQZ|vpfH|ZdQXQJ`ےdQZ|vpfHlJtAXv`fJ`ےvpfH`JXQrf~fpJ`ےvpfH˂pZHlJtAJ`ےQZ|dJXQr󙐂ˁ`Z|drbHAZdtAJ˂p`Jf~HbHAZpdtAJlZHAbArd|HAZpdrtA~f`btlHAZpdrtAJ~f`rd|~HfbHAZp~f`˂p`vnXbHAZp~f`Abے`rd|bHAZp˙rtAJl˂pZHQXb㉀QtJlp˂rltbXQr˂fpv˂rXtb`JXQZdQbt˂rXJltvXnJtArd˂rXQltbvXnZdQbtpvn˂rXQvXnJXQrv`f󂀉rXQvXnہJXQrZdQbnXrXQtbdAbے`XnvˍtbAdZXQJ`ےnvppZHAbnXv`fQJ`ےnvpr˂plJtQJ`ےbdQZ|vpfH|ZdQJ`ےdQZ|vpfHlJtAXv`fJ`ےvpfH˂pZHA~HfpJ`ےvpfH˂pZHv`fJ`ےQZ|dJXQrpfH~|drbHAZfHfے`J~fpvbHAZpfHf`ZHAbArd|bHAZpdrtA~f`btl|bHAZpdrtAJ~f`rd|~HfbHAZp~f`bے`vnXbHAZp~f`Abے`~HfpbHAZp˙rtAJl˂p`f۝`vQtJlp˂r`vXnXQr˂nXv˂rXvXn`JXQZdQbt˂rXJltvXnZdQbt˂rXQltbvXnZdQbtpvn˂rbvXnJXQrv`f~frbdvXnہJXQrvnXrXQtbdJXQrXnvˍtbAdZXQJ`ےvpfp`JXQ`f~QJ`ےvpfHr˂plJtQJ`ےbdQZ|vpfHlJtJ`ےdQZ|vpfHlJtAXv`fdQZ|vpfH˂p`JpvnQZ|dvpfH˂pZHv`fJ`ےQZ|dpZHApfH~|drbHAZH~fr˂pHfpvbHAZp~f`ZHAbArd|bHAZpdrtA~f`Ard|bHAZpdrtAJ~f`rd|~HfdrtAJ~f`XQrbtXv`frtAJl~f`Abے`~HfpbHAZp˙rtAJlbے`f۝`vQtJlp˂r`vXnZHAbnXv˂rXvXn`JXQZdQbt˂rXJltvXnZdQbt˂rXQltbvXnrZdQbtpvnltbvXnl|Z~HftbdvXnہJXQrvnXrXQtbdJXQrXnvˍtbAdZXQJ`ےvpfے`JXQ`f~fpQJ`ےvpfHr˂plJtQJ`ےbdQZ|r˂p`l|J`ےdQZ|˂pZlJtAXv`fdQZ|vpfHdQbtpvnQZ|dvpfH˂pZHv`fJ`ےQZ|dp`JXpfH~|drbHAZH~fr˂pvnXbHAZp~f`ZHAbArd|bHAZpdrtAJXQrZdQbtbHAZpdrtAJHAbےrd|~HfdrtAJ~f`lJtArXv`frtAJl~f`Abے`~HfpbHAZp˙tAJlQr˂pf۝`vQtJlp˂r`vXn`JXQrv`f˂rXvXn`JXQZdQb˂rXJlt˂pZHlJtA˂rXQltb`JXQrZdQbtpvnltbvXnd|Z~fpvtbdvXnہJXQrvnXrXQtbnZHAbXnvˍtbAdZXQJ`ےvpf˂pZ~HfpQJ`ےvpfHr˂pnXv`QJ`ےbdQZ|Abے`rd|J`ےdQZ|˂pZlJtAXv`fdQZ|vpfHdQbt璅nXv`QZ|dvpfH˂pZHv`fJ`ےvpfHے`JXpfH~|drQt}~~-------------------.......................... \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv29_3.dat b/mpdf/qrcode/data/qrv29_3.dat deleted file mode 100644 index 5670535..0000000 --- a/mpdf/qrcode/data/qrv29_3.dat +++ /dev/null @@ -1,265 +0,0 @@ -{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqpopopopmnmnmnmnklklklklijijijijghghghghcccccdcdbabababa`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPO{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststopopopopmnmnmnmnklklklklijijijijghghghghcdcdcdcdbabababa`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOLKLKLKLK{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststopopopopmnmnmnmnklklklklijijijijghghghghcdcdcdcdbabababa`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOLKLKLKLK{|{|{|{{yzyzyzyzwxwxwxwxuvuvuvuvststststopopopopmnmnmnmnklklklklijijijijghghghghcdcdcdcdbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPONMLKLKLKLK{{{{|{|{yzyzyzyzwxwxwxwxuvuvuvuvststststopopopopmnmnmnmnklklklklijijijijghghghghcdcdcdcdbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMLKKKKKKL|{|{|{|{yzyzyzyzwxwxwxwxuvuvuvuvsrqrqrqropopopopmnmnmnmnklklklklijijijijghghghgfcdccccccbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMKLKLKLKL|{|{|{|{yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqropopopopmnmnmnmnklklklklijijijijefefefefdcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMKLKLKLKL|{|{|{|{yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqropopopopmnmnmnmnklklklklijijijijefefefefdcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMKLKLKLKL|{|{|{|{yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqropopopopmnmnmnmnklklklklijijijijefefefefdcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMKLKLKLKL|{{{{{{|yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqropopopopmnmnmnmnklklklklijijijijefefefefdcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMKLKLKKKK~}{|{|{|{|yzyzyzyzwxwxwxwxutstststqrqrqrqropopopopmnmnmnmnklklklklijijijijefefefefdcdcdcccbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMKKLKLKLK~}~}~}~}{|{|{|{|yzyzyzyzwxwxwxwxststststqrqrqrqropopopopmnmnmnmnklklklklijijijijefefefefcccdcdcdbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLK~}~}~}~}{|{|{|{|yzyzyzyzwxwxwxwxststststqrqrqrqropopopopmnmnmnmnklklklklijijijijefefefefcdcdcdcdbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLK~}~}~}~}{|{|{|{|yzyzyzyzwxwxwxwxststststqrqrqrqropopopopmnmnmnmnklklklklijijijijefefefefcdcdcdcdbabababa^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLK~}~}~}~}{|{|{{{{yzyzyzyzwxwxwxwxststststqrqrqrqropopopopmnmnmnmnklklklklijijijijefefefefcdcdcdcdbabababa^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLK~}~}~}~}{{|{|{|{yzyzyzyzwvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklijijijijefefefefcdcdcdcdbabababa^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMKKKKKLKL~}~}~}~}|{|{|{|{yzyzyzyzuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklijijijijefefefefccccccdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMKLKLKLKL~}~}~}~}|{|{|{|{yzyzyzyzuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklijijijijefefefefdcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMKLKLKLKL~}~}~}~}|{|{|{|{yzyzyzyzuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklihghghghefefefefdcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMKLKLKLKL~}~}~}~}|{|{|{|{yzyzyzyzuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklghghghghefefefefdcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMKLKLKLKL~}~}~}~}{{{{{|{|yxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklghghghghefefefefdcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMKLKKKKKL~}~}~}~}{|{|{|{|wxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklghghghghefefefefdcdccccc`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQPOPOPOPONMNMNMNMKLKLKLKJ~}~}~}~}{|{|{|{|wxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklghghghghefefefefdcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQPOPOPOPONMNMNMNMIJIJIJIJ~}~}~}~}{|{|{|{|wxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnkjijijijghghghghefefefefbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQPOPOPOPONMNMNMNMIJIJIJIJ~}~}~}~}{|{|{|{|wxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnijijijijghghghghefefefefbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQPOPOPOPONMNMNMNMIJIJIJIJ~}~}~}~}{|{|{|{ywxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnijijijijghghghghefefefefbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQPOPOPOPONMNMNMNMIJIJIJIJ~}~}~}~}yyyyyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnijijijijghghghghefefefefbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMIJIJIJIJ~}~}~}~}yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnijijijijghghghghefefefefbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMIJIJIJIJ~}~}~}~}yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopmlklklklijijijijghghghghefefefefbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMIJIJIJIJ~}~}~}~}yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopklklklklijijijijghghghghefefefefbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQPOPOPOPONMNMLKLKIJIJIJIJ~}~}~}~}yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopklklklklijijijijghghghghefefefefbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQPOPOPOPOLKLKKKKKIJIJIJIJ~}~}~}~}yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopklklklklijijijijghghghghefefedcdbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOKLKLKLKLIJIJIJIJ~}~}~}~}yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopklklklklijijijijghghghghcdcdccccbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOKLKLKLKLIJIJIJIJ~}~}~}~}yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqronmnmnmnklklklklijijijijghghghghccdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOKLKLKLKLIJIJIJIJ~}~}~}~}yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqrmnmnmnmnklklklklijijijijghghghghdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOKLKLKLKLIJIJIJIJ~}~}|{|{yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqrmnmnmnmnklklklklijijijijghghghghdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOKLKLKLKKIJIJIJIJ|{|{{{{{yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqrmnmnmnmnklklklklijijijijghghghghdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOKKKKLKLKIJIJIJIJ{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqrmnmnmnmnklklklklijijijijghghghghdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOLKLKLKLKIJIJIJIJIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787834343434212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!       - - - -IJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787834343434212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!     - - - -IJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878765633333343212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!     - - - -IJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:5656565643434343212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!     - - - -IJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:5656565643434343212121210/0/0/0/.-.-.-,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!     - - - -IJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:5656565643434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!     - - - -IJIJIJIJGHGHGHGHEFEFEFEDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:5656565643434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!     - - - -IJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:5656565643433333212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!     - - - -IJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:5656565634343434212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!     - - - -IJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:5656565634343434212121210/0/0/.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!     - - - -IJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:565656563434343421212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!     - - IJIJIJIJGHGHGHGFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:565656563434343421212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!     IJIJIJIJEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:565656563434343321212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!      IJIJIJIJEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:565656563333434321212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#         IJIJIJIJEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9856565656434343432121210/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#         IJIJIJIJEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<7878787856565656434343430/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#         - -IJIJIJIHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<7878787856565656434343430/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#         - - - -GHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<7878787856565656434343430/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#"!         - - - -GHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<7878787856565656433333430/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!         - - - -GHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;:7878787856565656434343210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!         - - - -GHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>9:9:9:9:7878787856565656212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!       - - - -GHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>9:9:9:9:7878787856565656212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!     - - - -GHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>9:9:9:9:7878787856565656212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%$#"!"!"!"!     - - - -GHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>9:9:9:9:7878787856565656212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!     - - - -GHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=<9:9:9:9:7878787856565656212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!     - - - -GHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:7878787856565656212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!      - - - -GHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:7878787856565656212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!         - - - -GHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:7878787856565656212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('&%$#$#$#$#"!"!"!"!         - - - -GHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:7878787856543434212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!         - - - -GHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?>;<;<;<;<9:9:9:9:7878787834333333212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!         - - - -GHGHGHGHEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<9:9:9:9:7878787843434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!         - - - -GHGHGHGHEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<9:9:9:9:7878787843434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!         - - - -GHGHGHGHEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<9:9:9:9:7878787843434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -GHGHGHGHEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<9:9:9:9:7878787843434343212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -GHGHGHGHEFEFEFEFCDCDCDCDABABABA@=>=>=>=>;<;<;<;<9:9:9:9:7878787843434333212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -GHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787833343434212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -GHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787834343434212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -GHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787834343434212121210/0/0/0/.-.-.-.-,+,+,+*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -%%&&''((==<<;;::xwwvvuut45566778=<<;;::9\]]^^__`]\\[[ZZY<==>>??@!hgfedccb==>>??@@44332211eeffgghh - - ||{{zzyy TTSSRRQQEEFFGGHH~~}}))**++,,99332211tssrrqqp899::;;<98877665`aabbccd ~~}YXXWWVVU@AABBCCDbaa``__^AABBCCDD00//..--iijjkkllxxwwvvuu!!""##$$PPOONNMMIIJJKKLL ]]\\[[ZZ||{{zzyy--..//0000//..--poonnmml<==>>??@54433221deeffggh - - }||{{zzy UTTSSRRQDEEFFGGH^]]\\[[ZEEFFGGHH,,++**))mmnnooppttssrrqq%%&&''((LLKKJJIIMMNNOOPP - - YYXXWWVVxxwwvvuu11223344,,++**))lkkjjiih@AABBCCD100//..-hiijjkkl yxxwwvvu !!""##$QPPOONNMHIIJJKKL ZYYXXWWVIIJJKKLL((''&&%%qqrrssttppoonnmm))**++,,HHGGFFEEQQRRSSTTUUTTSSRRttssrrqq55667788((''&&%%gfedccbbDEEFFGGH-,,++**)lmmnnooputtssrrq$%%&&''(MLLKKJJILMMNNOOP - - VUUTTSSRMMNNOOPP$$##""!!uuvvwwxxllkkjjii--..//00DDCCBBAAUUVVWWXX QQPONMLKppoonnmm99::;;<<$$##""!!aa``__^^HIIJJKKL)((''&&%pqqrrsstqppoonnm())**++,IHHGGFFEPQQRRSSTRQQPONMLQQRRSSTT yyzz{{|| - - hhggffee11223344@@??>>==YYZZ[[\\ - - KJJIIHHGllkkjjii==>>??@@]]\\[[ZZLMMNNOOP%$$##""!tuuvvwwxmllkkjji,--..//0EDDCCBBATUUVVWWX KKJJIIHHUUVVWWXX}}~~ ddccbbaa55667788<<;;::99]]^^__``GFFEEDDChhggffeeAABBCCDDYYXXWWVVPQQRRSST! xyyzz{{| - - ihhggffe01122334A@@??>>=XYYZZ[[\ - - GGFFEEDDYYZZ[[\\``__^^]]99::;;<<88776655aabbccddCBBAA@@?ddccbbaaEEFFGGHHUUTTSSRRTUUVVWWX|}}~~ eddccbba45566778=<<;;::9\]]^^__` CCBBAA@@]]^^__``\\[[ZZYY==>>??@@44332211eeffgghh?>>==<<;``__^^]]IIJJKKLL QQPONMLKXYYZZ[[\a``__^^]899::;;<98877665`aabbccd??>>==<>??@54433221deeffggh;;::9987eeffgghh - - ||{{zzyy TTSSRRQQEEFFGGHH,,++**))mmnnoopp##$$%%&&54332211XXWWVVUUQQRRSSTT - - GFFEEDDC`aabbccd ~~}YXXWWVVU@AABBCCD100//..-hiijjkkl!!"65433221iijjkkllxxwwvvuu!!""##$$PPOONNMMIIJJKKLL((''&&%%qqrrsstt''(())**00//..--TTSSRRQQUUVVWWXXCBBAA@@?deeffggh - - }||{{zzy UTTSSRRQDEEFFGGH-,,++**)lmmnnoop"##$$%%&100//..-mmnnooppttssrrqq%%&&''((LLKKJJIIMMNNOOPP$$##""!!uuvvwwxx++,,--..,,++**))PPOONNMMYYZZ[[\\?>>==<<;hiijjkkl yxxwwvvu !!""##$QPPOONNMHIIJJKKL)((''&&%pqqrrsst&''(())*-,,++**)qqrrssttppoonnmm))**++,,HHGGFFEEQQRRSSTT yyzz{{||//001122((''&&%%LLKKJJII]]^^__``;::99876lmmnnooputtssrrq$%%&&''(MLLKKJJILMMNNOOP%$$##""!tuuvvwwx*++,,--.)((''&&%uuvvwwxxllkkjjii--..//00DDCCBBAAUUVVWWXX}}~~3399::;;$$##""!!HHGGFFEEaabbccdd!!""54332211pqqrrsstqppoonnm())**++,IHHGGFFEPQQRRSST! xyyzz{{|.//00112%$$##""!yyzz{{|| - - hhggffee11223344@@??>>==YYZZ[[\\<<==>>?? DDCCBBAAeeffgghh##$$%%&&00//..--tuuvvwwxmllkkjji,--..//0EDDCCBBATUUVVWWX|}}~~23399::;! }}~~ ddccbbaa55667788<<;;::99]]^^__``@@AABBCC@@??>>==iijjkkll''(())**,,++**))xyyzz{{| - - ihhggffe01122334A@@??>>=XYYZZ[[\;<<==>>?``__^^]]99::;;<<88776655aabbccdd {{zzyyxxDDEEFFGG<<;;::99mmnnoopp++,,--..((''&&%%|}}~~ eddccbba45566778=<<;;::9\]]^^__`?@@AABBC\\[[ZZYY==>>??@@44332211eeffgghh - - wwvvuuttHHIIJJKK88776655qqrrsstt//001122$$##""!!a``__^^]899::;;<98877665`aabbccd {{zzyyxCDDEEFFG~~}}XXWWVVUUAABBCCDD00//..--iijjkkllssrrqqppQQRRSSTT -44332211uuvvwwxx3399::;; ]\\[[ZZY<==>>??@54433221deeffggh - - xwwvvuutGHHIIJJK ||{{zzyy TTSSRRQQEEFFGGHH,,++**))mmnnooppoonnmmllUUVVWWXX - 00//..--yyzz{{||<<==>>??~~}YXXWWVVU@AABBCCD100//..-hiijjkkl tssrrqqpKQQRRSST - - xxwwvvuu!!""##$$PPOONNMMIIJJKKLL((''&&%%qqrrssttkkjjiiccYYZZ[[\\,,++**))}}~~@@AABBCC}||{{zzy UTTSSRRQDEEFFGGH-,,++**)lmmnnooppoonnmmlTUUVVWWXttssrrqq%%&&''((LLKKJJIIMMNNOOPP$$##""!!uuvvwwxxbbaa``__]]^^__``((''&&%%DDEEFFGGyxxwwvvu !!""##$QPPOONNMHIIJJKKL)((''&&%pqqrrsstlkkjjiicXYYZZ[[\ppoonnmm))**++,,HHGGFFEEQQRRSSTT yyzz{{|| - - ^^]]\\[[aabbccii $$##""!!HHIIJJKK -uttssrrq$%%&&''(MLLKKJJILMMNNOOP%$$##""!tuuvvwwxcbbaa``_\]]^^__`llkkjjii--..//00DDCCBBAAUUVVWWXX}}~~ ZZYYXXWWjjkkllmm - - {{zzyyxxQQRRSSTT - qppoonnm())**++,IHHGGFFEPQQRRSST! xyyzz{{| - - _^^]]\\[`aabbcci - - hhggffee11223344@@??>>==YYZZ[[\\VVUUTTSSnnooppqq wwvvuuttUUVVWWXXmllkkjji,--..//0EDDCCBBATUUVVWWX|}}~~ [ZZYYXXWijjkkllm ddccbbaa55667788<<;;::99]]^^__``RRQQKKJJrrssttuussrrqqppYYZZ[[\\ - - ihhggffe01122334A@@??>>=XYYZZ[[\WVVUUTTSmnnooppq``__^^]]99::;;<<88776655aabbccdd ~~}}IIHHGGFFvvwwxxyyoonnmmll]]^^__`` eddccbba45566778=<<;;::9\]]^^__`SRRQQKKJqrrssttu\\[[ZZYY==>>??@@44332211eeffgghh - - ||{{zzyy EEDDCCBBzz{{ kkjjiiccaabbcciia``__^^]899::;;<98877665`aabbccd ~~}JIIHHGGFuvvwwxxyXXWWVVUUAABBCCDD00//..--iijjkkllxxwwvvuu!!""##$$AA@@??>> ! - - bbaa``__jjkkllmm]\\[[ZZY<==>>??@54433221deeffggh - - }||{{zzy FEEDDCCByzz{{ TTSSRRQQEEFFGGHH,,++**))mmnnooppttssrrqq%%&&''((==<<;;::~}!""##$$% - - ^^]]\\[[nnooppqqYXXWWVVU@AABBCCD100//..-hiijjkkl yxxwwvvu !!""##$BAA@@??>!!""##$$PPOONNMMIIJJKKLL((''&&%%qqrrssttppoonnmm))**++,,99332211|{{zzyyx%&&''(() ZZYYXXWWrrssttuu UTTSSRRQDEEFFGGH-,,++**)lmmnnooputtssrrq$%%&&''(>==<<;;:~%%&&''((LLKKJJIIMMNNOOPP$$##""!!uuvvwwxxllkkjjii--..//0000//..--xwwvvuut)**++,,-VVUUTTSSvvwwxxyy !!""##$QPPOONNMHIIJJKKL)((''&&%pqqrrsstqppoonnm())**++,:9933221}|{{zzyy))**++,,HHGGFFEEQQRRSSTT yyzz{{|| - - hhggffee11223344,,++**))tssrrqqp-..//001RRQQKKJJzz{{$%%&&''(MLLKKJJILMMNNOOP%$$##""!tuuvvwwxmllkkjji,--..//0100//..-xxwwvvuu--..//00DDCCBBAAUUVVWWXX}}~~ ddccbbaa55667788((''&&%%poonnmml12233445IIHHGGFF())**++,IHHGGFFEPQQRRSST! xyyzz{{| - - ihhggffe01122334-,,++**)ttssrrqq11223344@@??>>==YYZZ[[\\``__^^]]99::;;<<$$##""!!lkkjjiih56677889 EEDDCCBB~},--..//0EDDCCBBATUUVVWWX|}}~~ eddccbba45566778)((''&&%ppoonnmm55667788<<;;::99]]^^__``\\[[ZZYY==>>??@@gfedccbb9::;;<<=!!""##$$AA@@??>>|{{zzyyx01122334A@@??>>=XYYZZ[[\a``__^^]899::;;<%$$##""!llkkjjii99::;;<<88776655aabbccdd ~~}}XXWWVVUUAABBCCDDaa``__^^=>>??@@AABBCCDDE0//..--,ijjkkllmxwwvvuut!""##$$%POONNMMLIJJKKLLM YXXWWVVUJJKKLLMM''&&%%$$rrssttuuoonnmmll**++,,--GGFFEEDDRRSSTTUUPONMLKKJRSSTTUUVz{{||}}~ - gffeeddc23344556?>>==<<;Z[[\\]]^100//..-EFFGGHHI,++**))(mnnooppqtssrrqqp%&&''(()LKKJJIIHMNNOOPPQ - - UTTSSRRQNNOOPPQQ##""!! vvwwxxyy kkjjiihh..//0011CCBBAA@@VVWWXXYY - -JIIHHGGFVWWXXYYZ~cbbaa``_6778899:;::99887^__``aab!!""#-,,++**)IJJKKLLM(''&&%%$qrrssttupoonnmml)**++,,-HGGFFEEDQRRSSTTUQPONMLKKRRSSTTUUzz{{||}} - - ggffeedd22334455??>>==<76655443bccddeef#$$%%&&')((''&&%MNNOOPPQ$##""!! uvvwwxxy lkkjjiih-..//001DCCBBAA@UVVWWXXY -JJIIHHGGVVWWXXYY~~ccbbaa``66778899;;::9988^^__``aaBAA@@??>^__``aab[ZZYYXXW>??@@AAB3221100/fgghhiij'(())**+%$$##""!QRRSSTTU yzz{{||} - - hggffeed12233445@??>>====<<;;:bccddeef ~~}}||{WVVUUTTSBCCDDEEF/..--,,+jkkllmmn+,,--../! UVVWWXXY}~~ dccbbaa`56677889<;;::998]^^__``aBBAA@@??^^__``aa[[ZZYYXX>>??@@AA33221100ffgghhii:9987654fgghhiij - - {zzyyxxw !!"SRRQQPPOFGGHHIIJ+**))(('nooppqqr/0011223YZZ[[\\]`__^^]]\9::;;<<=87766554abbccdde>>==<<;;bbccddee ~~}}||WWVVUUTTBBCCDDEE//..--,,jjkkllmm!!""##33221100jkkllmmnwvvuutts"##$$%%&ONNMMLLKJKKLLMMN'&&%%$$#rssttuuv399::;;<]^^__``a\[[ZZYYX=>>??@@A43322110effgghhi::998765ffgghhii - - {{zzyyxx !!SSRRQQPPFFGGHHII++**))((nnooppqq$$%%&&''//..--,,nooppqqrsrrqqppo&''(())*KJJIIHHGNOOPPQQR#""!! vwwxxyyz<==>>??@abbccdde ~~}}|XWWVVUUTABBCCDDE0//..--,ijjkkllm!!""#43322110jjkkllmmwwvvuutt""##$$%%OONNMMLLJJKKLLMM''&&%%$$rrssttuu(())**++++**))((rssttuuvonnmmllk*++,,--.GFFEEDDCRSSTTUUVz{{||}}~@AABBCCD effgghhi - - |{{zzyyx !TSSRRQQPEFFGGHHI,++**))(mnnooppq#$$%%&&'0//..--,nnooppqqssrrqqpp&&''(())KKJJIIHHNNOOPPQQ##""!! vvwwxxyy,,--..//''&&%%$$vwwxxyyz -kjjiihhg.//00112CBBAA@@?VWWXXYYZ~DEEFFGGH - - ijjkkllmxwwvvuut!""##$$%POONNMMLIJJKKLLM(''&&%%$qrrssttu'(())**+,++**))(rrssttuuoonnmmll**++,,--GGFFEEDDRRSSTTUUzz{{||}}00112233##""!! z{{||}}~ - gffeeddc23344556?>>==<<;Z[[\\]]^||{HIIJJKKQ - - mnnooppqtssrrqqp%&&''(()LKKJJIIHMNNOOPPQ$##""!! uvvwwxxy+,,--../(''&&%%$vvwwxxyy kkjjiihh..//0011CCBBAA@@VVWWXXYY~~99::;;<<~cbbaa``_6778899:;::99887^__``aab{zzyyxxwQRRSSTTU qrrssttupoonnmml)**++,,-HGGFFEEDQRRSSTTU yzz{{||}/0011223$##""!! zz{{||}} - - ggffeedd22334455??>>==<>??@@_^^]]\\[:;;<<==>76655443bccddeef wvvuuttsUVVWWXXYuvvwwxxy lkkjjiih-..//001DCCBBAA@UVVWWXXY}~~399::;;<~~ccbbaa``66778899;;::9988^^__``aa{{AABBCCDD[ZZYYXXW>??@@AAB3221100/fgghhiij - - srrqqppoYZZ[[\\]yzz{{||} - - hggffeed12233445@??>>==>??@__^^]]\\::;;<<==77665544bbccddee zzyyxxwwEEFFGGHH ~~}}||{WVVUUTTSBCCDDEEF/..--,,+jkkllmmnonnmmllk]^^__``a}~~ dccbbaa`56677889<;;::998]^^__``a{@AABBCCD[[ZZYYXX>>??@@AA33221100ffgghhii - - vvuuttssIIJJKKQQ - - {zzyyxxw !!"SRRQQPPOFGGHHIIJ+**))(('nooppqqrkjjiiccbabbcciij `__^^]]\9::;;<<=87766554abbccdde {zzyyxxwDEEFFGGH~~}}||WWVVUUTTBBCCDDEE//..--,,jjkkllmmrrqqppooRRSSTTUU wvvuutts"##$$%%&ONNMMLLKJKKLLMMN'&&%%$$#rssttuuvbaa``__^jkkllmmn !!""##$\[[ZZYYX=>>??@@A43322110effgghhi - - wvvuuttsHIIJJKKQ - -{{zzyyxx !!SSRRQQPPFFGGHHII++**))((nnooppqqnnmmllkkVVWWXXYYsrrqqppo&''(())*KJJIIHHGNOOPPQQR#""!! vwwxxyyz -^]]\\[[Znooppqqr$%%&&''(~~}}|XWWVVUUTABBCCDDE0//..--,ijjkkllmsrrqqppoQRRSSTTU wwvvuutt""##$$%%OONNMMLLJJKKLLMM''&&%%$$rrssttuujjiiccbbZZ[[\\]]onnmmllk*++,,--.GFFEEDDCRSSTTUUVz{{||}}~ - ZYYXXWWVrssttuuv())**++,|{{zzyyx !TSSRRQQPEFFGGHHI,++**))(mnnooppqonnmmllkUVVWWXXYssrrqqpp&&''(())KKJJIIHHNNOOPPQQ##""!! vvwwxxyy aa``__^^^^__``aa -kjjiihhg.//00112CBBAA@@?VWWXXYYZ~VUUTTSSRvwwxxyyy,--..//0xwwvvuut!""##$$%POONNMMLIJJKKLLM(''&&%%$qrrssttukjjiiccbYZZ[[\\]oonnmmll**++,,--GGFFEEDDRRSSTTUUzz{{||}} - - ]]\\[[ZZbbcciijj - gffeeddc23344556?>>==<<;Z[[\\]]^RQQKKJJIyxxwwvvu01122334tssrrqqp%&&''(()LKKJJIIHMNNOOPPQ$##""!! uvvwwxxy baa``__^]^^__``a kkjjiihh..//0011CCBBAA@@VVWWXXYY~~YYXXWWVVkkllmmnncbbaa``_6778899:;::99887^__``aabIHHGGFFEuttssrrq45566778poonnmml)**++,,-HGGFFEEDQRRSSTTU yzz{{||} - - ^]]\\[[Zabbcciij - - ggffeedd22334455??>>==<76655443bccddeef ~~}}||{EDDCCBBAqppoonnm899::;;??@@AAB3221100/fgghhiij - - {zzyyxxw !!"A@@??>>=mllkkjji<==>>??@hggffeed12233445@??>>==>??@@AA33221100ffgghhii - - {{zzyyxx !!DDCCBBAA{{ !!"SRRQQPPOFGGHHIIJ+**))(('nooppqqrsrrqqppo&''(())*93322110eddccbbaDEEFFGGH`__^^]]\9::;;<<=87766554abbccdde ~~}}|IHHGGFFEvwwxxyyzWWVVUUTTBBCCDDEE//..--,,jjkkllmmwwvvuutt""##$$%%@@??>>=="##$$%%&ONNMMLLKJKKLLMMN'&&%%$$#rssttuuvonnmmllk*++,,--.0//..--,a``__^^]HIIJJKKL\[[ZZYYX=>>??@@A43322110effgghhi - - |{{zzyyx !EDDCCBBAz{{ !!SSRRQQPPFFGGHHII++**))((nnooppqqssrrqqpp&&''(())<<;;::99~}|{&''(())*KJJIIHHGNOOPPQQR#""!! vwwxxyyz -kjjiihhg.//00112,++**))(]\\[[ZZYLMMNNOOPXWWVVUUTABBCCDDE0//..--,ijjkkllmxwwvvuut!""##$$%A@@??>>=""##$$%%OONNMMLLJJKKLLMM''&&%%$$rrssttuuoonnmmll**++,,--33221100{zzyyxxw*++,,--.GFFEEDDCRSSTTUUVz{{||}}~ - gffeeddc23344556(''&&%%$YXXWWVVUPQQRRSSTTSSRRQQPEFFGGHHI,++**))(mnnooppqtssrrqqp%&&''(()=<<;;::9~}|&&''(())KKJJIIHHNNOOPPQQ##""!! vvwwxxyy kkjjiihh..//0011//..--,,wvvuutts.//00112CBBAA@@?VWWXXYYZ~cbbaa``_6778899:$##""!!UTTSSRRQTUUVVWWXPOONNMMLIJJKKLLM(''&&%%$qrrssttupoonnmml)**++,,-93322110{{zzyyxx**++,,--GGFFEEDDRRSSTTUUzz{{||}} - - ggffeedd22334455++**))((srrqqppo23344556?>>==<<;Z[[\\]]^_^^]]\\[:;;<<==>QPPOONNMXYYZZ[[\LKKJJIIHMNNOOPPQ$##""!! uvvwwxxy lkkjjiih-..//0010//..--,wwvvuutt..//0011CCBBAA@@VVWWXXYY~~ccbbaa``66778899''&&%%$$onnmmllk6778899:;::99887^__``aab[ZZYYXXW>??@@AABMLLKKJJI\]]^^__`HGGFFEEDQRRSSTTU yzz{{||} - - hggffeed12233445,++**))(ssrrqqpp22334455??>>==<76655443bccddeef ~~}}||{WVVUUTTSBCCDDEEFIHHGGFFE`aabbccdDCCBBAA@UVVWWXXY}~~ dccbbaa`56677889(''&&%%$oonnmmll66778899;;::9988^^__``aa[[ZZYYXX>>??@@AAedccbbaa>??@@AAB3221100/fgghhiij - - {zzyyxxw !!"SRRQQPPOFGGHHIIJ EDDCCBBAdeeffggh@??>>==>=hiijjkkl<;;::998]^^__``a\[[ZZYYX=>>??@@Afedccbba>>??@@AA33221100ffgghhii - - {{zzyyxx !!SSRRQQPPFFGGHHII\\[[ZZYYFGGHHIIJ+**))(('nooppqqrsrrqqppo&''(())*KJJIIHHGNOOPPQQR - =<<;;::9lmmnnoop87766554abbccdde ~~}}|XWWVVUUTABBCCDDEa``__^^]BBCCDDEE//..--,,jjkkllmmwwvvuutt""##$$%%OONNMMLLJJKKLLMM XXWWVVUUJKKLLMMN'&&%%$$#rssttuuvonnmmllk*++,,--.GFFEEDDCRSSTTUUV98877665pqqrrsst43322110effgghhi - - |{{zzyyx !TSSRRQQPEFFGGHHI]\\[[ZZYFFGGHHII++**))((nnooppqqssrrqqpp&&''(())KKJJIIHHNNOOPPQQ - - TTSSRRQQNOOPPQQR#""!! vwwxxyyz -kjjiihhg.//00112CBBAA@@?VWWXXYYZ54433221tuuvvwwxxyybdQZ|vpfXQr˂nXv`˒bHAbdQZ|f`vXZHAbbnXv`Zp˂drtnvp`JXQf~fpXQJ`ےJltH~fr˂pfpvbHAZbdQZ|`vXnHAbےdrtAH~fp`JXQf~HZp˂drtnvpے`JXf~HrXQJ`AJltfH~r˂pvnXbHAZbdQZ|`vXnZHAےnXv`p˂rdrtAvpf`JXQr`f~Jlt`vXnr˂pfpvrXQJ`AJltfH~Qr˂pfpvbHAbdQZ|f`vXZHAbv`fp˂rdrtAvpf`JXQrf~HXQJ`ےJltH~f˂p`HfpvbdQZ|vpfZHAbnXv`fbHAbdQZ|f`vXZHAۅnXv`Zp˂drtnvp`JXQ~HfpXQJ`ےJltH~fbtlfpvbHAZbdQZ|`vXnJXQrbnXvdrtAH~fے`JXQ~fpvZp˂drtnvp`JXQf~HrXQJ`AJltfH~r˂p`vnXbHAZbdQZ|`vXnJtAdnXv`p˂rdrtAvpftl|`f~fpJlt`vXnr˂pnXvrXQJ`AJltfH~rbtlfpvbHAbdQZ|f`vXJXQrv`f~fp˂rdrtAvpf|ZdQbf~HXQJ`ےJltH~fZdQbtvnXbdQZ|vpf`JXQr`f~bHAbdQZ|f`vXJtAdnXv`Zp˂drtnvpbtl|pvnXQJ`ےJltH~ftlJfpvbHAZbdQZ|`vXnlJtAv`fdrtAH~f˂pZHfpvZp˂drtnvp|ZdQf~HrXQJ`AJltfH~ˁZdQbtXv`fbHAZbdQZ|`vXntArdnXv`p˂rdrtAvpfrd|~HfpJlt`vXnHAbےnXvrXQJ`AJltfH~btlfpvbHAbdQZ|f`vXlJt~Hfp˂rdrtAr˂p|ZdQbf~HXQJ`ےJltH~fZdQbtvnXbdQZ|vpf`JXQr`f~fpbHAbdQZ|f`vXJtArdnXv`Zp˂drtnvpArd|pvnXQJ`ےJltZHAbtlJfpvbHAZbdQZ|`vXnl|Zv`f~drtAH~f˂p|vnXZp˂drtnr˂p|ZdQf~HrXQJ`AJltfH~ˁZdQbtXv`fbHAZbdQZ|ے`JXQtArdnXv`p˂rdrtAvpfdQbt璅fpvJlt`vXnZdQbtv`frXQJ`AJltZHAbbtlfpvbHAbdQZ|f`vXl|~fpvp˂rdtAJr˂p|ZdQbf~HXQJ`ےJltH~flJtArnXv`bdQZ|vpflJtA~HfpbHAbdQZ|ے`JXJtArdnXv`Zp˂drtnvpZdQbtnXv`XQJ`ےltbZHAbtlJfpvbHAZbdQZ|`vXnd|Zf~HdrtAH~frd|vnXZp˂dtAQr˂p|ZdQf~HrXQJ`AJltfH~˒lJtAf~HbHAZnvpے`JXQtArdnXv`p˂rdrtAvpfdQbtfpvJlt`vXnZdQbtv`f~rXQJ`JltZHAbbtlfpvbHAbdQZ|f`vXrd|fpvp˂rfHfr˂p|ZdQbf~HXQJ`ےJltH~fl|ZdQnXv`bdQZ|vpfl|ZfpvbHAbnvpے`JXJtArdnXv`Zp˂drtnvpZdQbtnXv`XQJ`ے`vXnZHAbtlJfpvbHAZbdQZ|`vXnbtlf~fpdrtAH~fdQbtnXv`Zp˂fHQr˂p|ZdQf~HrXQJ`AJltfH~˒l|Zdf~fpbHAZvpfے`JXQtArdnXv`p˂rdrtAr˂pJtArdvnXJlt`vXnlJtArf~HrXQJ`f`vXZHAbbtlfpvbHAbdQZ|f`vXQbtlvnXp˂rH~fr˂p|ZdQbf~HXQJ`ےJlt`JXQr|ZdQv`fbdQZ|vpfd|ZfpvbHAnvpے`JXJtArdnXv`Zp˂drtnr˂pJtArdv`fbdQZ|`vXnZHAbtlJfpvbHAZbdQZ|˂pZbtl~HfpdrtAH~fdQbtnXv`Zp˂fH~Qr˂p|ZdQf~HrXQJ`AJlt`JXQ|Zd~HfpdrtAvpfے`JXQtArdnXv`p˂rdtAJHAbے|ZdQbvnXJlt`vXnl|ZdQf~fprbdQZ|f`vXZHAbbtlfpvbHAbdQZ|r˂pQbtlvnXJltH~fr˂p|ZdQbf~HXQJ`ےltb`JXQrtlJv`ffpbdQZ|vpfbtlvnXdrtnvpے`JXJtArdnXv`Zp˂dtAZHAbۑ|ZdQv`ffbdQZ|`vXnZHAbtlJfpvbHAZnvp˂p`tArdvndrtAH~fJtArdv`fAJltfH~Qr˂p|ZdQf~HrXQJ`Jlt`JXQbtlpvndrtAvpfے`JXQtArdnXv`p˂rfHfJXQr|ZdQbrXQJ`Jlt`vXn|ZdQ~HfpۉbdQZ|f`vXZHAbbtlfpvbHAbnvpr˂p`JtArdrXQJ`JltH~fr˂p|ZdQbf~HXQJ`ے`vXn˂pZHAtl|HAZpbdQZ|r˂pbtlvnXdrtnvpے`JXJtArdnXv`Zp˂fHˁJXQr|ZdQےHAZbdQZ|`vXnZHAbtlJfpvbHAZvpfbے`ZdQbt˂rXdrtA`JXQr|ZdQbv`frAJltfH~Qr˂p|ZdQf~HrXQJ`f`vX˂pZHbtl|p˂rdrtAvpfے`JXQtArdnXv`p˂rH~fJXQrlJtAQJ`ےJlt˂pZtlJQJHAbdQZ|f`vXZHAbbtlfpvbHAnvpAbے`ZdQbtXQJ`ےJltH~fr˂p|ZdQbf~HbdQZ|`vXn˂p`Jrd|bHAZpbdQZ|HAbےtArdZp˂drtnvpے`JXJtArdnXv`Zp˂fH~ˁJXQrlJtbHAZbdQZ|`vXnZHAbtlJfpvdrtAvpfXQr˂ZdQbt˂rXdrtA`JXQr|ZdQbrXQJ`AJltfH~Qr˂p|ZdQf~HrbdQZ|f`vX˂p`Ard|p˂rdrtAvpfے`JXQtArdnXv`JltH~fpZHAbl|ZQJ`ےJlt˂p`tl|bHAbdQZ|f`vXZHAbbtlfpvdrtnvpJXQrˁZdQbtXQJ`ےJltH~fr˂p|ZdQbfHfbdQZ|`vXnے`JdQbnXbHAZpbdQZ|JXQrZdQbtZp˂drtnvpے`JXJtArdnXv`AJltfH~˂pZHAl|琙bHAZbdQZ|`vXnZHAbtlJpvndrtAvpfXQr˂v`f~˂rX`vXn˂pZHAlJtArXQJ`AJltfH~Qr˂p|ZdQfHbdQZ|f`vXbے`ZdQbnXp˂rdrtAvpfے`JXQtArdrXQJ`JltH~fp`JXQfpvQJ`ےvpfbے`rd|bHAbdQZ|f`vXZHAbbtlfpvdrtnvpJXQr˕v`f~XQJ`ےJltH~fr˂p|ZdQbےHAZbdQZ|`vXnr˂pnXv`˙bHAZpH~fJXQrZdQbtZp˂drtnvpے`JXJtArdnrXQJ`AJltfH~˂p`JXfpvbHAZbdQZ|`vXnZHAbtlJp˂rdrtAvpfZHAbf~H˂rX`vXn˂p`Jl|ZrXQJ`AJltfH~Qr˂p|ZdQےHAbdQZ|f`vXQr˂pnXv`p˂rdrtAvpfے`JXQtArdXQJ`ےJltH~fے`JXQfpvQJ`ےvpfXQr˂dQbnXbHAbdQZ|f`vXZHAbbtlZp˂drtnvpZHAbf~HXQJ`ےJltH~fr˂p|ZdQbbHAZbdQZ|`vXnr˂pnXv`fbHAZpH~fpZHAbv`f~Zp˂drtnvpے`JXJtArdrXQJ`AJltfH~˙ے`JXfpvbHAZbdQZ|`vXnZHAbnXv`p˂rdrtAvpf`JXQr~fpv˂rX`vXnے`JfpvrXQJ`AJltfH~Qr˂p|ZdQbHAbdQZ|f`vXQr˂pnXv`p˂rdrtAvpfے`JXQf~HXQJ`ےJltH~f˂pZnXvQJ`ےbHAZpbdQZ|vXnZHAے`nXv`ˑ˂rXdrtAvpfHJXQrfpvJ`ےltb~f`tlJpvnbHAZpdQZ|vXnXQrbtf~fpۂrXQrtAJlvpfHZdQbt~HfpJ`ےtbd~f`QXb㉀Xnvˍ˂rXdrtAvpfHJXQrf~HQJ`ےJlt~f`˂p`nXv`bHAZpdQZ|vXntAd|Xv`f˂rXQdrtAJvpfHl|ZvnXJ`ےtbd~f`lJtAvnXbHAZpQZ|dvXnۑp`ZQpfH~QJ`ےJlt~f`btlfpvbHAZpbdQZ|vXnJXQrbtf~fp˂rXQdrtAJvpfHZdQbt~HfJ`ےltb~f`dQbtv`fbHAZpQZ|dvXnrrd|v`frXQrtAJlvpfHXb㉀ۑf۝`vbHAZpbdQZ|vXnJtAd|nXv`ˑ˂rXdrtAvpfHl|vnXJ`ےltb~f`lJtApvnbHAZpdQZ|vXnlJtAr~HfpۂrXQrtAJl˂pZHZdQbt~HfpJ`ےtbd~f`pJAHrXnvˍ˂rXdrtAvpfHZdQbtf~HQJ`ےJlt~f`ZdQbtv`fbHAZpdQZ|vXnrrd|Xv`f˂rXQdrtAJvpfHd|ZvnXJ`ےtbdAbے`lJtAvnXbHAZpQZ|dvXnېˁ`ZQpfH~QJ`ےJlt~f`lJtfpvbHAZpbdQZ|vXnlJtA~Hfp˂rXQdrtAJ˂pZZdQbt~HfJ`ےltb~f`dQbtv`f~fbHAZpQZ|dJXQrrd|v`frXQrtAJlvpfHXb㉀ۑf۝`vbHAZpbdQZ|vXnArd|nXv`ˑ˂rXdrtAvpfHrd|vnXJ`ےltbHAbےlJtApvnbHAZpdQZ|vXnl|ZdQpvnrXQtAJl˂pZHZdQbt~HfpJ`ےtbd~f`p`ZQXbXnvˍ˂rXdrtAr˂pZdQbtf~HQJ`ےJlt~f`ZdQbtv`f~bHAZpdQZ|`JXQrrd|Xv`f˂rXQdrtAJvpfHbtlXv`fJ`ےtbnAbے`lJtAvnXbHAZpQZ|dvXn㉀ۑpJpfH~QJ`ےJltZHAbۉlJtfpvbHAZpbdQZ|vXnl|Zdfpv˂rXQdtAJl˂pZZdQbt~HfJ`ےltb~f`JtArd~HfbHAZp˅vpfHJXQrrd|v`frXQrtAJlvpfHAHr󙐂f۝`vbHAZpbdQZ|`JXQArd|nXv`ˑ˂rXdrtAvpfHQbtlnXv`J`ےtbnHAbےlJtApvnbHAZpdQZ|vXn|ZdQpvnrXQf`˂pZHZdQbt~HfpJ`ےtbd~f`ˁ`ZQXbXnvˍ˂rXdtAJlr˂pZdQbtf~HQJ`ےJlt~f`JtArdf~HbHAZpvpf`JXQrrd|Xv`f˂rXQdrtAJvpfHbtlXv`fJ`ےvXnAbے`lJtAvnXbHAZpQZ|dvXnے`㉀ۑpp|drQJ`ےtbZHAbۉlJtfpvbHAZpbdQZ|vXn|Zdfpv˂rXQHf`˂pZZdQbt~HfJ`ےltb~f`|ZdQb~fpvbHAZpvpfHJXQrrd|v`frXQrtAJlJXQr`ZQXbQtJlbHAZpnvp`JXQArd|nXv`ˑ˂rXdrtAvpfHQbtlnXv`fJ`ےvXnHAbےlJtApvnbHAZpdQZ|vXnrtlJnXv`rbd~f`˂pZHZdQbt~HfpJ`ےtbd˂pZHۑpJAtbAdZ˂rXfHf`r˂pZdQbtf~HQJ`ےJlt~f`|ZdQ~fpvbHAZpvpfH`JXQrrd|Xv`f˂rXQdrtAJ˂p`tArdf~HQZ|dvXnAbے`lJtAvnXbHAZpQZ|dAbے`Hr󙐂ˁ|drQJ`ےvXnZHAbۉlJtfpvbHAZpbdQZ|vXnbtlnXv˂rb~f`˂pZZdQbt~HfJ`ےltbJXQr|ZdQbfpvrtAJlvpfHJXQrrd|v`frXQtAJlJXQr`ZQXbQtJlbHAZpvpfH`JXQArd|nXv`ˑ˂rXdrtAr˂p`JtArd`f~dQZ|vXnHAbےlJtApvnbHAZpdQZ|˂pZHAtl|nXv`tbd~f`˂pZHZdQbt~HfpJ`ےtbn˂p`ۑp`ZtbAdZ˂r~f`r˂pZdQbtf~HQJ`ےJltJXQr|ZdQHfpvdrtAJvpfH`JXQrrd|Xv`f˂rXQdtAJlbے`ZdQbtffpQZ|dvXnAbے`lJtAvnXbHAZp˅vpfHJXQrQXb㉀|drbdQZ|vXnZHAbۉlJtfpvbHAZpbdQZ|˂pZHbtl|nXvltb~f`˂pZZdQbt~HfJ`ےtbnJXQrlJtAvnrXrtAJlvpfHJXQrrd|v`frXQf`pZHAۑpJAHrQtJldrtAvpfH`JXQArd|nXv`ˑ˂rXdtAJlAbے`ZdQbt`ffpdQZ|vXnHAbےlJtApvnbHAZpvpf˂p`Jrd|QJ`ےtbd~f`˂pZHZdQbt~HfpJ`ےvXnbے`󙐂ˁ`ZtbAdZJlt~f`r˂pZdQbtf~HQJ`ےtbJXQrlJtvnrdrtAJvpfH`JXQrrd|Xv`f˂rXQHf`XQr˂ZdQbtHAZpQZ|dvXnAbے`lJtAvnXbHAZpvpfHJXQrQXb㉀|drbdQZ|vXnZHAbۉlJtfpvbHAZpnvp˂p`Ard|XQJ`ےltb~f`˂pZZdQbt~HfJ`ےvXnpZHAbl|ZrXQrtAJlvpfHJXQrrd|v`frbd~f`p`JXXnvˍQtJldrtAvpfH`JXQArd|nXv`ˑ˂rXfHf`JXQrˁZdQbtHAZpdQZ|vXnHAbےlJtApvnbHAZpvpfHے`JdQbtJ`ےtbd~f`˂pZHZdQbt~HfpQZ|dvXnQr˂ppfH~tbAdZJlt~f`r˂pZdQbtf~HQJ`ےvXnpZHAl|˂rXQdrtAJvpfH`JXQrrd|Xv`f˂rb~f`XQr˂lJtArbHAZpQZ|dvXnAbے`lJtAvnXrtAJlvpfHZHAbf۝`v|drbdQZ|vXnZHAbۉlJtfpvbHAZpvpfHbے`ZdQbtJ`ےltb~f`˂pZZdQbt~HfdQZ|vXnp`JXQd|ZrXQrtAJlvpfHJXQrrd|v`ftbd~f`ے`JXXnvˍQtJldrtAvpfH`JXQArd|nXv`ˑ˂r~f`JXQr˒lJtAbHAZpdQZ|vXnHAbےlJtApvndrtAJvpfHr˂pdQbtJ`ےtbd~f`˂pZHZdQbtHfpQZ|dvXnQr˂ppfH~tbAdZJlt~f`r˂pZdQbtf~HbdQZ|vXnp`JXrd|˂rXQdrtAJvpfH`JXQrrd|Xv`fltb~f`ZHAbl|ZdQbHAZpQZ|dvXnAbے`lJtAvnrXrtAJlvpfH`JXQf۝`v|drbdQZ|vXnZHAbۉlJtfpvdrtAvpfHQr˂pZdQbtJ`ےltb~f`˂pZZdQbtHfpdQZ|vXnے`JXQbnXvrXQrtAJlvpfHJXQrrd|QJ`ےtbd~f`r˂pXnvˍQtJldrtAvpfH`JXQArd|nXv`Jlt~f`ZHAbl|ZdbHAZpdQZ|vXnHAbےlJtAvnrdrtAJvpfHr˂p`f~fpJ`ےtbd~f`˂pZHZdQbtHAZpQZ|dvXnZHAbpfH~tbAdZJlt~f`r˂pZdQbtfHfpbdQZ|vXnے`JXQbnX˂rXQdrtAJvpfH`JXQrrd|XQJ`ےltb~f``JXQrvnXbHAZpQZ|dvXnAbے`lJtArXQrtAJlvpfH`JXQf۝`v|drbdQZ|vXnZHAbۉlJtvndrtAvpfHQr˂pv`f~fJ`ےltb~f`˂pZZdQbtHAZpdQZ|vXn˂pZv`frXQrtAJlvpfHJXQrrd|J`ےtbd~f`r˂p`XnvˍQtJldrtAvpfH`JXQArd|rXQJ`Jlt~f``JXQpvnbHAZpdQZ|vXnHAbےlJtA˂rXQdrtAJvpfHHAbے~HfpJ`ےtbd~f`˂pZHZdQbnXbHAZpQZ|dvXnہJXQrpfH~tbAdZJlt~f`r˂pZdQbtHAZpbdQZ|vXnr˂pXv`f˂rXQdrtAJvpfH`JXQrrd|J`ےltb~f``JXQrvnXbHAZpQZ|dvXnAbے`v`frXQrtAJlvpfH˂pZHf۝`v|drbdQZ|vXnZHAbۉlJt˂rXdrtAvpfHZHAbې~HfJ`ےltb~f`˂pZZdQbnbHAZpdQZ|vXn˂p`v`f~rXQrtAJlvpfHJXQr~HfpJ`ےtbd~f`Abے`XnvˍQtJldrtAvpfH`JXQArd|QJ`ےJlt~f``JXQpvnbHAZpdQZ|vXnHAbےXv`f˂rXQdrtAJvpfHJXQrfpvJ`ےtbd~f`˂pZHvnXbHAZpQZ|dvXnہJXQrpfH~tbAdZJlt~f`r˂pZdQbbHAZpbdQZ|vXnr˂p`Xv`f˂rXQdrtAJvpfH`JXQr~HfJ`ےltb~f`˂pZHAnXv`bHAZpQZ|dvXnAے`v`frXQrtAJlvpfH˂p`Zf۝`v|drbdQZ|vXnZHAbnXv`ˑ˂rXdrtAvpfHJXQr~fpvJ`ےltb~f`˂pZpvnbHAZpdQZ|vXnbے`f~HrXQrtAJlvpfHJXQrbt~HfpJ`ےtbd~f`QXb㉀XnvˍQtJldrtAvpfH`JXQf~HQJ`ےJlt~f`˂pZHnXv`bHAZpdQZ|vXnHAے`Xv`f˂rXQdrtAJvpfHJXQrfpvJ`ےtbd~f`lJtvnXbHAZpQZ|dvXnۑpJAHrpfH~tbAdZJlt~f`r˂pfpvbHAZpbdQZ|vXnAbے`f~H˂rXQdrtAJvpfHJXQrb~HfJ`ےltb~f`˂p`JnXv`bHAZpQZ|dvXnAd|v`frXQrtAJlvpfH󙐂ˁ`Zf۝`v|drQt}~~56666666666666666666666666666666666666 \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv2_0.dat b/mpdf/qrcode/data/qrv2_0.dat deleted file mode 100644 index e82090e..0000000 Binary files a/mpdf/qrcode/data/qrv2_0.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv2_1.dat b/mpdf/qrcode/data/qrv2_1.dat deleted file mode 100644 index 5fc94c0..0000000 Binary files a/mpdf/qrcode/data/qrv2_1.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv2_2.dat b/mpdf/qrcode/data/qrv2_2.dat deleted file mode 100644 index 2beed99..0000000 Binary files a/mpdf/qrcode/data/qrv2_2.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv2_3.dat b/mpdf/qrcode/data/qrv2_3.dat deleted file mode 100644 index fd8bc28..0000000 Binary files a/mpdf/qrcode/data/qrv2_3.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv30_0.dat b/mpdf/qrcode/data/qrv30_0.dat deleted file mode 100644 index 45c7589..0000000 --- a/mpdf/qrcode/data/qrv30_0.dat +++ /dev/null @@ -1,273 +0,0 @@ -}}}}}~}~}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststsrqrqrqrqrqrqrqropopopopmnmnmnmnklklklklijijijijghghghghefefefefdcdcdcdcbabababa`_`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMKKKKKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABABABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787856565656}~}~}~}~}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqrqrqrqrqropopopopmnmnmnmnklklklklijijijijghghghghefefefefdcdcdcdcbabababa`_`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABABABABABA@?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787856565656}~}~}~}~}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqrqrqrqrqropopopopmnmnmnmnklklklklijijijijghghghghefefefefdcdcdcdcbabababa`_`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787856565656}~}~}~}~}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqrqrqrqrqropopopopmnmnmnmnklklklklijijijijghghghghefefeeeedcdcdcdcbabababa`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787856565656}~}~}~}~}|{|{|{|{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqrqrqrqrqropopopopmnmnmnmnklklklklijijijijghghghgheefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPONMNMLKLKKLKKKKKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787856565656}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqrqpopopopopopopopmnmnmnmnklklklklijijijijghghghghfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOLKLKKKKKKLKLKLKJIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787856565656}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopopopopopmnmnmnmnklklklklijijijijghghghghfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQRQRQRQRQPOPOPONMKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@?@?@?@?>=>=>=>=>;<;<;<;<9:9:9:9:7878787856565656}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopopopopopmnmnmnmnklklklklijijijijghghghghfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQRQRQRQRQNMNMNMNMKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<9:9:9:9:7878787856565656}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopopopopopmnmnmnmnklklklklijijijijghghghghfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQRQRQRQRQNMNMNMNMKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<9:9:9:9:7878787856565656}~}~}~}~{|{|{|{|{zyzyzyzyzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopopopopopmnmnmnmnklklklklijijijijghghghghfefeeeeedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<9:9:9:9:7878787856565656}~}~}~}~{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopoponmnmnmnmnmnmnmnklklklklijijijijghghghghefefefefdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMKLKLKLKLIJIJIJIJIJIJIJIHGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<9:9:9:9:7878787856565656}~}~}~}~{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnmnmnmnmnklklklklijijijijghghghghefefefefdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMKLKKKKKKIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>=>=>=>=<;<;<;<;<9:9:9:9:7878787856565656}~}~}~}~{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnmnmnmnmnklklklklijijijijghghghghefefefefdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:7878787856565656}~}~}~}~{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnmnmnmnmnklklklklijijijijghghghghefefefefdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:7878787856565656}~}~}~}~{|{|{|{|yzyzyzyzyxwxwxwxwxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnmnmnmnmnklklklklijijijijghghghghefefefefdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:7878787856565656}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnmlklklklklklklklijijijijghghgfefefeeeeeedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKIJIJIJIJGHGHGHGHGHGHGHGFEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:7878787856565656}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklklklklklijijijijefefeeeefefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKIJIJIJIJGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<;<;<;<;:9:9:9:9:7878787856565656}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklklklklklijijijihefefefefdcdcdcdcdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKKKKKKLIJIJIJIJGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:9:9:9:9:7878787856565656}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklklklklklghghghghefefefefdcdcdcdcdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:9:9:9:9:7878787856565656}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxwvuvuvuvuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklklklklklghghghghefefefefdcdcdcdcdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:9:9:9:9:787878785656565634343434}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklkjijijijghghghghefefefeedcdcdcdcdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFEFEFEFEDCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:9:9:9:9:787878785656565634343434}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklijijijijghghghgheeeefefedcdcdcdcdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:9:9:9:98787878785656565634343434}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklijijijijghghghghfefefefedcdcdcdcbabababababababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:78787878787878785656565634343434}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklijijijijghghghghfefefefedcdcdcdcbabababababababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMKKKKKKLKIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:78787878787878785656565634343434}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvutstststststststqrqrqrqropopopopmnmnmnmnklklklklijijijijghghghghfefefefedcdcdcdcbabababababababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:78787878787878785656543434343434}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststststststqrqrqrqropopopopmnmnmnmnklklklklijijijijghghghghfefefefedcdcdcdcbabababababababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDCDCDCDCBABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:78787878787878783434343434343434}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststststststqrqrqrqropopopopmnmnmnmnklklklklijijijijghghghghfefefeeedcdcdcdcbabababababababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABABABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:78787878787878763434343434343434}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststststststqrqrqrqropopopopmnmnmnmnklklklklijijijijghghghgheeefefefdcdcdcdcbabababa`_`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABABABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:78787878565656563434343434343434}}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststststststqrqrqrqropopopopmnmnmnmnklklklklijijijijghghghghefefefefdcdcdcdcbabababa`_`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABABABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787856565656343434343434343434343434121111110/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!            - - - -34343434212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -34343434212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -34343434212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - - - -34343434212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)*)*)*)('('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - - - - - -34343434212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - - - - - -34343434211111120/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - - - - - -34343434121212120/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - - - - - -34343434121212120/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - - - - 34343434121212120/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('('('('&%&%&%&%&%$#$#$#$#"!"!"!"!         - - - -34343434121212120/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!         - - - -34343434121212120/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!         - - - -34321212111111210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!         - - - -121111122121210/0/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!         - - - -121212120/0/0/0/0/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%&%&%&%$#$#$#$#$#"!"!"!"!         - - - -121212120/0/0/0/0/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!         - - - -121212120/0/0/0/0/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!         - - - -121211110/0/0/0/0/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!         - - - -112121210/0/0/0/0/0/0/.-.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!         - - - -212121210/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#$#$#$#"!"!"!"!"!         - - - -212121210/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!"!"!"!"!         - - - -212121210/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!"!"!"!"!         - - - -212121210/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!"!"!"!"!          - - - -212111110/0/0/0/.-.-.-.-.-.-.-,+,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!"!"!"!"!             - - - -121212120/0/0/0/.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!"!"!"!              - - - -121212120/0/0/0/.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!                 - - - -121212120/0/0/0/.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!                 - - - -121212120/0/0/0/.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!               - - - -121212120/0/0/0/.-.-.-.-,+,+,+,+,+,+,+*)*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!             - - - -qqrrssttxyyzz{{|%$$##""!PQQRRSSTMLLKKJJI())**++,uttssrrqtuuvvwwx)((''&&%LMMNNOOPQPPOONNM-..//001RQQKKJJI=>>??@@AXXWWVVUU ~~}} - - iijjkkll44332211AABBCCDD\\[[ZZYY eeffgghh$$##""!!rrssttuu]^^__``a@??>>==<56677889hggffeed YZZ[[\\]DCCBBAA@12233445lkkjjiih  uuvvwwxx ~~}}| - - |}}~~! TUUVVWWXIHHGGFFE,--..//0qppoonnmxyyzz{{|%$$##""!PQQRRSSTMLLKKJJI1778899:IHHGGFFEABBCCDDETTSSRRQQ!!""##$$||{{zzyymmnnoopp00//..--EEFFGGHHXXWWVVUU ~~}} - - iijjkkll vvwwxxyyabbccdde<;;::9989::;;<<=dccbbaa`]^^__``a@??>>==<56677889hggffeed~~}} - - yyzz{{|| - - |{{zzyyx XYYZZ[[\EDDCCBBA01122334mllkkjji - - |}}~~! TUUVVWWXIHHGGFFE:;;<<==>EDDCCBBAEFFGGHHIPPOONNMM%%&&''((xxwwvvuuqqrrsstt,,++**))IIJJKKLLTTSSRRQQ!!""##$$||{{zzyymmnnooppzz{{||}}effgghhi87766554=>>??@@A`__^^]]\abbccdde<;;::9989::;;<<=dccbbaa`||{{zzyy - - }}~~ - - xwwvvuut\]]^^__`A@@??>>=45566778ihhggffe XYYZZ[[\EDDCCBBA>??@@AABA@@??>>=IJJKKLMNLLKKJJII))**++,,ttssrrqquuvvwwxx((''&&%%MMNNOOPPPPOONNMM%%&&''((xxwwvvuuqqrrsstt~~ -ijjkkllm43322110ABBCCDDE\[[ZZYYX effgghhi87766554=>>??@@A`__^^]]\ !!"xxwwvvuu tssrrqqp`aabbccd=<<;;::9899::;;>=BCCDDEEF=<<;;::9OPQQRRSSHHGGFFEE--..//00ppoonnmmyyzz{{||$$##""!!QQRRSSTTLLKKJJII))**++,,ttssrrqquuvvwwxx - mnnooppq0//..--,EFFGGHHIXWWVVUUT !~~}}| - - ijjkkllm43322110ABBCCDDE\[[ZZYYX"##$$%%&ttssrrqqpoonnmml deeffggh98877665<==>>??@a``__^^]`aabbccd=<<;;::9FGGHHIIJ98877110TTUUVVWWDDCCBBAA11223344llkkjjii - - }}~~ UUVVWWXXHHGGFFEE--..//00ppoonnmmyyzz{{|| - - qrrssttu,++**))(IJJKKLLMTSSRRQQP!""##$$%|{{zzyyxmnnooppq0//..--,EFFGGHHIXWWVVUUT&''(())*ppoonnmmlkkjihgf ~~} - - hiijjkkl54433221@AABBCCD]\\[[ZZY deeffggh98877665JKKQQRRS0//..--,XXYYZZ[[@@??>>==55667788hhggffee YYZZ[[\\DDCCBBAA11223344llkkjjii - - }}~~~~}}|uvvwwxxy(''&&%%$MNNOOPPQPOONNMML%&&''(()xwwvvuutqrrssttu,++**))(IJJKKLLMTSSRRQQP*++,,--.llkkjjii~~}}|| !!""eeddccbb !!""##$}||{{zzy lmmnnoop100//..-DEEFFGGHYXXWWVVU ~~} - - hiijjkkl54433221STTUUVVW,++**))(\\]]^^__<<;;::9999::;;<>==55667788hhggffee  |{{zzyyx yzz{{||}$##""!! QRRSSTTULKKJJIIH)**++,,-tssrrqqpuvvwwxxy(''&&%%$MNNOOPPQPOONNMML.//00117hhggffee {{zzyyxx##$$%%&&aa``__^^$%%&&''(yxxwwvvupqqrrsst-,,++**)HIIJJKKLUTTSSRRQ !!""##$}||{{zzy lmmnnoop100//..-WXXYYZZ[(''&&%%$``aabbcc88776655==>>??@@``__^^]]aabbccdd<<;;::9999::;;<>??@@``__^^]]tssrrqqp YZZ[[\\]DCCBBAA@12233445lkkjjiih - - }~~ UVVWWXXYHGGFFEED;<<==>>?``__^^]]%%&&''((ssrrqqpp++,,--..YYXXWWVV,--..//0qppoonnmxyyzz{{|%$$##""!PQQRRSSTMLLKKJJI())**++,uttssrrqtuuvvwwx)((''&&%_``aabbc jkkllmmn00//..--EEFFGGHHXXWWVVUU ~~}} - - iijjkkll44332211AABBCCDD\\[[ZZYY~~}}||poonnmml]^^__``a@??>>==<56677889hggffeed YZZ[[\\]DCCBBAA@?@@AABBC\\[[ZZYY))**++,,oonnmmll//001177UUTTSSRR01122334mllkkjji - - |}}~~! TUUVVWWXIHHGGFFE,--..//0qppoonnmxyyzz{{|%$$##""!cddeekklnooppqqr,,++**))IIJJKKLLTTSSRRQQ!!""##$$||{{zzyymmnnoopp00//..--EEFFGGHHXXWWVVUU {{zzyyxxlkkjihgfabbccdde<;;::9989::;;<<=dccbbaa`]^^__``a@??>>==>??@@A`__^^]]\abbccdde<;;::998GHHIIJJKTTSSRRQQ11223344bbaa``__<<==>>??KJJIIHHG899::;;>=45566778ihhggffe pqqrrsst vwwxxyyz$$##""!!QQRRSSTTLLKKJJII))**++,,ttssrrqquuvvwwxx((''&&%%MMNNOOPPPPOONNMM%%&&''((ssrrqqpp##$$%%&&aa``__^^ !~~}}| - - ijjkkllm43322110ABBCCDDE\[[ZZYYX effgghhi87766554KQQRRSSTPPOONNMM55667788^^]]\\[[@@AABBCCGFFEEDDC<==>>??@a``__^^]`aabbccd=<<;;::9899::;;>??@a``__^^]xyyzz{{|~YYZZ[[\\DDCCBBAA11223344llkkjjii - - }}~~ UUVVWWXXHHGGFFEE--..//00kkeeddcc++,,--..YYXXWWVV%&&''(()xwwvvuutqrrssttu,++**))(IJJKKLLMTSSRRQQP!""##$$%|{{zzyyxmnnooppq0//..--,XYYZZ[[\HHGGFFEE==>>??@@VVUUTTSSHHIIJJKK?>>==<<;DEEFFGGHYXXWWVVU ~~} - - hiijjkkl54433221@AABBCCD]\\[[ZZY |}}~~]]^^__``@@??>>==55667788hhggffee YYZZ[[\\DDCCBBAA11223344bbaa``__//001177UUTTSSRR)**++,,-tssrrqqpuvvwwxxy(''&&%%$MNNOOPPQPOONNMML%&&''(()xwwvvuutqrrssttu,++**))(\]]^^__`DDCCBBAAAABBCCDDRRQQKKJJQQRRSSTT;::99887HIIJJKKLUTTSSRRQ !!""##$}||{{zzy lmmnnoop100//..-DEEFFGGHYXXWWVVU ~~} - -  - - aabbccdd<<;;::9999::;;<>==55667788^^]]\\[[8899::;;QQPONMLK-..//001poonnmml yzz{{||}$##""!! QRRSSTTULKKJJIIH)**++,,-tssrrqqpuvvwwxxy(''&&%%$`aabbccd@@??>>==EEFFGGHHIIHHGGFFUUVVWWXX76543211LMMNNOOPQPPOONNM$%%&&''(yxxwwvvupqqrrsst-,,++**)HIIJJKKLUTTSSRRQ !!""##$}||{{zzy   eeffgghh88776655==>>??@@``__^^]]aabbccdd<<;;::9999::;;<>??KJJIIHHG12233445lkkjjiih - - }~~ UVVWWXXYHGGFFEED-..//001poonnmml yzz{{||}$##""!! deekkllm<<;;::99IIJJKKLLEEDDCCBBYYZZ[[\\00//..--PQQRRSSTMLLKKJJI())**++,uttssrrqtuuvvwwx)((''&&%LMMNNOOPQPPOONNM$%%&&''(yxxwwvvu~~}}||{~~}} - - iijjkkll44332211AABBCCDD\\[[ZZYY eeffgghh88776655==>>??@@VVUUTTSS@@AABBCCGFFEEDDC56677889hggffeed YZZ[[\\]DCCBBAA@12233445lkkjjiih - - }~~ mnnooppqrqqppoon88776655MMNNOOPPAA@@??>>]]^^__``,,++**))TUUVVWWXIHHGGFFE,--..//0qppoonnmxyyzz{{|%$$##""!PQQRRSSTMLLKKJJI())**++,uttssrrq{zzyyxxw||{{zzyymmnnoopp00//..--EEFFGGHHXXWWVVUU ~~}} - - iijjkkll44332211AABBCCDDRRQQKKJJDDEEFFGGCBBAA@@?9::;;<<=dccbbaa`]^^__``a@??>>==<56677889hggffeed qrrssttunmmllkke44332211QQRRSSTT==<<;;::aabbccdd((''&&%%XYYZZ[[\EDDCCBBA01122334mllkkjji - - |}}~~! TUUVVWWXIHHGGFFE,--..//0qppoonnm - - wvvuuttsxxwwvvuuqqrrsstt,,++**))IIJJKKLLTTSSRRQQ!!""##$$||{{zzyymmnnoopp00//..--EEFFGGHHIIHHGGFFHHIIJJKK?>>==<<;=>>??@@A`__^^]]\abbccdde<;;::9989::;;<<=dccbbaa`uvvwwxxyeddccbba00//..--UUVVWWXX99887711eekkllmm$$##""!!\]]^^__`A@@??>>=45566778ihhggffe XYYZZ[[\EDDCCBBA01122334mllkkjji srrqqppo !!""ttssrrqquuvvwwxx((''&&%%MMNNOOPPPPOONNMM%%&&''((xxwwvvuuqqrrsstt,,++**))IIJJKKLLEEDDCCBBQQRRSSTT;::99887ABBCCDDE\[[ZZYYX effgghhi87766554=>>??@@A`__^^]]\yzz{{||}a``__^^],,++**))YYZZ[[\\00//..--nnooppqq `aabbccd=<<;;::9899::;;>=45566778ihhggffeonnmmllk##$$%%&&ppoonnmmyyzz{{||$$##""!!QQRRSSTTLLKKJJII))**++,,ttssrrqquuvvwwxx((''&&%%MMNNOOPPAA@@??>>UUVVWWXX76543211EFFGGHHIXWWVVUUT !~~}}| - - ijjkkllm43322110ABBCCDDE\[[ZZYYX }~~]\\[[ZZY((''&&%%]]^^__``,,++**))rrssttuudeeffggh98877665<==>>??@a``__^^]`aabbccd=<<;;::9899::;;>??@a``__^^] !baa``__^++,,--..hhggffee YYZZ[[\\DDCCBBAA11223344llkkjjii - - }}~~ UUVVWWXX99887711]]^^__``,,++**))MNNOOPPQPOONNMML%&&''(()xwwvvuutqrrssttu,++**))(IJJKKLLMTSSRRQQP!""##$$%|{{zzyyx~UTTSSRRQ eeffgghh$$##""!!zz{{||}}lmmnnoop100//..-DEEFFGGHYXXWWVVU ~~} - - hiijjkkl54433221@AABBCCD]\\[[ZZY!""##$$%^]]\\[[Z//001123ddccbbaa]]^^__``@@??>>==55667788hhggffee YYZZ[[\\00//..--aabbccdd((''&&%%QRRSSTTULKKJJIIH)**++,,-tssrrqqpuvvwwxxy(''&&%%$MNNOOPPQPOONNMML%&&''(()xwwvvuut~}}||{{zQKKJJIIHiijjkkll ~~ -pqqrrsst-,,++**)HIIJJKKLUTTSSRRQ !!""##$}||{{zzy lmmnnoop100//..-DEEFFGGHYXXWWVVU%&&''(()ZYYXXWWV45677889``__^^]]aabbccdd<<;;::9999::;;<>??@@``__^^]]aabbccdd((''&&%%nnooppqq YZZ[[\\]DCCBBAA@12233445lkkjjiih - - }~~ UVVWWXXYHGGFFEED-..//001poonnmml - - vuuttssrDCCBBAA@@??>>==>==<<66778899ggffeeddZZ[[\\]]CCBBAA@@22334455kkjjiihh - - ~~~~}}||{vwwxxyyz'&&%%$$#NOOPPQQRONNMMLLK&''(())*wvvuuttsrssttuuv qppoonnm+**))((']]^^__``;;::9988::;;<<==ccbbaa``^^__``aa??>>==<<66778899ggffeedd - -{zzyyxxw -z{{||}}~#""!! RSSTTUUVKJJIIHHG*++,,--.srrqqppovwwxxyyz - - -mllkkjji'&&%%$$#aabbccdd77665544>>??@@AA__^^]]\\bbccddee;;::9988::;;<<==ccbbaa`` wvvuutts - ~VWWXXYYZGFFEEDDC.//00112onnmmllk -z{{||}}~ - ihhggffe #""!! eefghijk33221100BBCCDDEE[[ZZYYXX ffgghhii77665544>>??@@AA__^^]]\\srrqqppoZ[[\\]]^CBBAA@@?23344556kjjiihhg - ~eddccbba !!""##$kllmmnno//..--,,FFGGHHIIWWVVUUTT !!~~}}|| - - jjkkllmm33221100BBCCDDEE[[ZZYYXX~~}}||{{onnmmllk^__``aab?>>==<<;6778899:gffeeddca``__^^]$%%&&''(oppqqrrs++**))((JJKKLLMMSSRRQQPP""##$$%%{{zzyyxxnnooppqq//..--,,FFGGHHIIWWVVUUTT !!zzyyxxwwkjihgfeebccddeef;::99887:;;<<==>cbbaa``_]\\[[ZZY())**++,sttuuvvw''&&%%$$NNOOPPQQOONNMMLL&&''(())wwvvuuttrrssttuu++**))((JJKKLLMMSSRRQQPP""##$$%%vvuuttss !!""##ddccbbaa fgghhiij76655443>??@@AAB_^^]]\\[~~}}||{ !!""#YXXWWVVU,--..//0 -wxxyyzz{##""!! RRSSTTUUKKJJIIHH**++,,--ssrrqqppvvwwxxyy''&&%%$$NNOOPPQQOONNMMLL&&''(())rrqqppoo$$%%&&''``__^^]] !!"~~}}||{ - - jkkllmmn3221100/BCCDDEEF[ZZYYXXW{zzyyxxw#$$%%&&'UTTSSRRQ01122334 - {||}}~~VVWWXXYYGGFFEEDD..//0011oonnmmll zz{{||}}##""!! RRSSTTUUKKJJIIHH**++,,--nnmmllkk(())**++\\[[ZZYY"##$$%%&{zzyyxxwnooppqqr/..--,,+FGGHHIIJWVVUUTTS !!"wvvuutts'(())**+QPPOONNM45566778ZZ[[\\]]CCBBAA@@22334455kkjjiihh - - ~~VVWWXXYYGGFFEEDD..//0011eeddccbb,,--..//XXWWVVUU&''(())*wvvuuttsrssttuuv+**))(('JKKLLMMNSRRQQPPO"##$$%%&srrqqppo+,,--../MLLKKJJI899::;;< ^^__``aa??>>==<<66778899ggffeeddZZ[[\\]]CCBBAA@@22334455aa``__^^00117788TTSSRRQQ*++,,--.srrqqppovwwxxyyz'&&%%$$#NOOPPQQRONNMMLLK&''(())*onnmmllk/0011778IHHGGFFE<==>>??@ - - bbccddee;;::9988::;;<<==ccbbaa``^^__``aa??>>==<<66778899]]\\[[ZZ99::;;<>??@@AA__^^]]\\bbccddee;;::9988::;;<<==YYXXWWVV==>>??@@JIIHHGGF23344556kjjiihhg - ~VWWXXYYZGFFEEDDC.//00112baa``__^<==>>??@A@@??>>=DEEFFGGH~~}}|| - - jjkkllmm33221100BBCCDDEE[[ZZYYXX ffgghhii77665544>>??@@AAUUTTSSRRAABBCCDDFEEDDCCB6778899:gffeeddcZ[[\\]]^CBBAA@@?23344556^]]\\[[Z@AABBCCD=<<;;::9HIIJJKKL{{zzyyxxnnooppqq//..--,,FFGGHHIIWWVVUUTT !!~~}}|| - - jjkkllmm33221100BBCCDDEEQQKKJJIIEEFFGGHHBAA@@??>:;;<<==>cbbaa``_^__``aab?>>==<<;6778899:ZYYXXWWVDEEFFGGH98877665LMMNNOOPwwvvuuttrrssttuu++**))((JJKKLLMMSSRRQQPP""##$$%%{{zzyyxxnnooppqq//..--,,FFGGHHIIHHGGFFEEIIJJKKQQ>==<<;;:>??@@AAB_^^]]\\[bccddeef;::99887:;;<<==>VUUTTSSRHIIJJKKQ54433221PQQRRSST !!""##ssrrqqppvvwwxxyy''&&%%$$NNOOPPQQOONNMMLL&&''(())wwvvuuttrrssttuu++**))((JJKKLLMMDDCCBBAARRSSTTUU:9988776BCCDDEEF[ZZYYXXW fgghhiij76655443>??@@AABRQQKKJJIQRRSSTTU100//..-TUUVVWWX$$%%&&''oonnmmll zz{{||}}##""!! RRSSTTUUKKJJIIHH**++,,--ssrrqqppvvwwxxyy''&&%%$$NNOOPPQQ@@??>>==VVWWXXYY54321100FGGHHIIJWVVUUTTS !!"~~}}||{ - - jkkllmmn3221100/BCCDDEEFIHHGGFFEUVVWWXXY-,,++**)XYYZZ[[\(())**++kkjjiihh - - ~~VVWWXXYYGGFFEEDD..//0011oonnmmll zz{{||}}##""!! RRSSTTUU<<;;::99ZZ[[\\]]//..--,,JKKLLMMNSRRQQPPO"##$$%%&{zzyyxxwnooppqqr/..--,,+FGGHHIIJEDDCCBBAYZZ[[\\])((''&&%\]]^^__`,,--..//ggffeeddZZ[[\\]]CCBBAA@@22334455kkjjiihh - - ~~VVWWXXYY88771100^^__``aa++**))((NOOPPQQRONNMMLLK&''(())*wvvuuttsrssttuuv+**))(('JKKLLMMNA@@??>>=]^^__``a%$$##""!`aabbccd00112345ccbbaa``^^__``aa??>>==<<66778899ggffeeddZZ[[\\]]//..--,,bbccddee''&&%%$$RSSTTUUVKJJIIHHG*++,,--.srrqqppovwwxxyyz'&&%%$$#NOOPPQQR=<<;;::9abbccdde! deeffggh6778899:__^^]]\\bbccddee;;::9988::;;<<==ccbbaa``^^__``aa++**))((kkllmmnn##""!! VWWXXYYZGFFEEDDC.//00112onnmmllk -z{{||}}~#""!! RSSTTUUV98877110ekkllmmnhiijjkkl:;;<<==>[[ZZYYXX ffgghhii77665544>>??@@AA__^^]]\\bbccddee''&&%%$$ooppqqrrZ[[\\]]^CBBAA@@?23344556kjjiihhg - ~VWWXXYYZ0//..--,nooppqqrlmmnnoop>??@@AABWWVVUUTT !!~~}}|| - - jjkkllmm33221100BBCCDDEE[[ZZYYXX ffgghhii##""!! ssttuuvv^__``aab?>>==<<;6778899:gffeeddcZ[[\\]]^,++**))(rssttuuvpqqrrsstBCCDDEEFSSRRQQPP""##$$%%{{zzyyxxnnooppqq//..--,,FFGGHHIIWWVVUUTT !!~~}}|| - - jjkkllmmwwxxyyzzbccddeef;::99887:;;<<==>cbbaa``_^__``aab(''&&%%$vwwxxyyz tuuvvwwxFGGHHIIJOONNMMLL&&''(())wwvvuuttrrssttuu++**))((JJKKLLMMSSRRQQPP""##$$%%{{zzyyxxnnooppqq{{||}}~~ fgghhiij76655443>??@@AAB_^^]]\\[bccddeef$##""!! z{{||}}} - - xyyzz{{||}}fpvf~HbHAZdrtAJJXQrJAdbtlnXv`Zp˂AJltfH~ˑZHAbrbtl|ZdQfpvbHAdrtvXnp`JXlJtfpvbHAZdrtAbdQZ|`vXnے`JXQtArdf~HXQJ`ےbdQZ|JltH~fr˂prd|fvnX˂rXJlt~f`ZHAbۉlJtZdQbtfpvbHAZpdrtAvpfHr˂plJtnXv`fpvp˂rltbZHAbۂ|ZdQJtArdf~HrXQJ`ۉbdQZ|f`vXے`JXJtAdbtlnXv`Zp˂AJltf`Qr˂pArd|nXv`p˂rJltdtAJvpfr˂p|ZdQbfpvbHAZdrtAbdQZ|`vXnZHAbZdQbtv`fQJ`ےbdQZ|vXn`JXQArd|lJnXv`ˑ˂rXJlt~f`ZHAbArd|f~HnXv`XQJ`ےdQZ|``JXQbtl|ZdQfpvbHAdrtnvpQr˂p|ZdQJtArdf~HrXQJ`ۉbdQZ|vXnۑZHAbZdQbtf~HXQJ`ےbdQZ|ltbH~fZHAbtlJnXv`p˂rJltdtAJvpf˂pZlJtA~HfpۙbHAZpdrtAvpfHr˂pZdQbtfpvf~HQJ`ےbdQZ|vXn`JXQZdQtAfpvp˂rbHAZvXnr˂pJtArdbtlnXv`Zp˂AJltfH~ˑZHAbbtl|ZdQfpvbHAdrtvpfHے`JXlJArfpvbHAZdrtAnvp`vXnے`JXQtArdf~HXQJ`ےbdQZ|ltbH~fHAbےrdtvnX˂rXJlt~f`ZHAbۉlJtnXv`fpvbHAZpdrtAvpfHr˂prd|nXv`XQJ`ےp˂rvpfHZHAbۂ|ZdQJfpvf~HrXQJ`ۉbdQZ|f`vXے`JXJtArdbtlnXv`Zp˂AJlt~f`Qr˂p|ZdQnXv`p˂rJltfHfvpfr˂p|ZdQbfpvbHAZdrtAnvp`vXn`JXQrlJfpv`ffpQJ`ےbdQZ|vXn`JXQArd|f~HnXv`ˑ˂rXJlt~f`ZHAbZdQbtf~HbHAZXQJ`ے~f``JXQbtlnXv`fpvbHAdrtnvpQr˂p|ZdQJfpvf~HrXQJ`ۉbdQZ|vXnۑZHAXQbtlf~HXQJ`ےbdQZ|`vXnH~fZHAbtlJnXv`p˂rJltfHfvpf˂p`vnvvnbHAZpdrtAvpfHr˂pZdQbtfpvfHfpQJ`ےbdQZ|vXn`JXQlJtAfpvp˂rJltvXH~rZAbJtArdf~HnXv`Zp˂AJltfH~ˑZHAbbtlnXv`fpvbHAdrtvp`vXr˂pJtArdfpvbHAZdrtAvpf`vXnے`JXQtArdf~HXQJ`ےbdQZ|`vXnH~fJXQrbf~HrXQJ`ۑ˂rXJlt~f`ZHAbۉlJtnXv`˝vnbHAZpdrtAvpfHr˂prd|nXv`XQJ`ےdrtAJf`vے`J|ZdQfpvfHrXQJ`ۉbdQZ|f`vXے`JXJtArdf~HnXv`Zp˂AJltnvpZHAb|ZdQnXv`p˂rJltH~fvpfr˂p|ZdQbfpvbHAZdrtAvpf`vXntl|fpv㒐HAZpQJ`ےbdQZ|vXn`JXQArd|f~HrXQJ`ۑ˂rXJlt~f`ZHAbZdQbtdf~HbHAZltbXnvXQr˂btlnXv`fpv㒐bHAdrtnvpQr˂p|ZdQfpvfHrXQJ`ۉbdQZ|fH~`JXQbtlf~HXQJ`ےbdQZ|`vXnے`JXQZHAbtlJnXv`p˂rJltH~fvpfZdQbtnXv`ˑ˂rXbHAZpdrtAvpfHr˂pZdQbtfpv㒐HAZpQJ`ےbdQZ|vXn`JXQ|Zdfpvp˂rdQZ|pfH~pZHAbJtArdf~HnrXQJ`Zp˂AJltfH~ˑZHAbbtlnXv`fpv㒐bHAdrtf`vXr˂pJtArfpvbHAZdrtAvpfr˂pے`JXQtArdf~HXQJ`ےbdQZ|`vXnے`JXQlJtAf~HQJ`ے˂rXJlt~f`ZHAbۉlJtnXv`ˑ˂rXbHAZpdrtAvpfHr˂pQbtlnXv`XQJ`ےdrtAJf`vے`J|ZdQfpvےHArXQJ`ۉbdQZ|f`vXے`JXJtArdf~HnrXQJ`Zp˂AJltnvpZHAbZdQbtnXv`p˂rJltH~fZHAbr˂p|ZdQbfpvbHAZdrtAvpfHAbےrd|fpvbHAZpQJ`ےbdQZ|vXn`JXQArd|f~HQJ`ے˂rXJlt~f`ZHAbۑJtArdf~HbHAZltbXnXQr˂btlnXv`Zp˂󒐙bHAdrtnvpQr˂p|ZdQfpvےHArXQJ`ۉbdQZ|fHX˂pZHlJtAf~HXQJ`ےbdQZ|`vXnے`JXQZHAےtlJnXv`p˂rJltH~f`JXQrZdQtArnXvf~˂rXJltdrtAvpfHr˂pZdQbtfpvbHAZpQJ`ےbdQZ|vXn`JXQ|Zdfpvp˂rdQtAJlf`vXpZAb`JtArdf~HrXQJ`Zp˂AJltfH~ˑZHAbbtlnXv`Zp˂󒐙bHAdrtnvpAbے`rd|fpvbHAZdrtAvpfr˂p`JXQrtArdf~HXQJ`ےbdQZ|`vXn˂pZd|ZHfpvQJ`ےbdQZ|Jlt~f`ZHAbۉlJtnXv`ˑ˂rXJltdrtAvpfHr˂pQbtlnXv`XQJ`ےtbdQnvpJXQr|ZdQfpvbHArXQJ`ۉbdQZ|f`vXے`JXJtArdf~HrXQJ`Zp˂AJltfH~ˁJXQrZdQbtnXv`p˂rJltH~fZHAbbtl|ZdQbfpvbHAZdrtAvpfHAbےdQbt璀nXvbHAZpdrtAbdQZ|vXn`JXQArd|f~HQJ`ےbdQZ|Jlt~f`ZHAbۑ|ZdQf~HbHAZZ|dfH~˂pZHbtlnXv`Zp˂JltdrtnvpQr˂p|ZdQfpvbHArXQJ`ۉbdQZ|f`vX˂p`lJtAf~HXQJ`ےbdQZ|`vXnے`JXQJtAdtlJnXv`p˂rJltH~f`JXQrlJtAr`f~˂rXJltdtAJlvpfHr˂pZdQbtfpvbHAZpdrtAbdQZ|vXn`JXQbtlfpvp˂rrtAJlf`vXAbے`JtArdf~HrXQJ`ۉbdQZ|AJltfH~ˑZHAbbtlnXv`Zp˂JltdrtnvpJXQrbtrdZQbfpvbHAZdrtAvpfr˂p|ZdQbtArdf~HXQJ`ےbdQZ|`vXnے`d|ZHfpvQJ`ےbdQZ|tb~f`ZHAbۉlJtnXv`ˑ˂rXJltdtAJlvpfHr˂pJtArdnXv`XQJ`ےtbdQnvpJXQr|ZdQfpvbHAdrtbdQZ|f`vXے`JXJtArdf~HrXQJ`ۉbdQZ|AJltfH~lJAtlJnXv`p˂rJltH~fZHAbtlJ|ZdQbfpvbHAZdrtAvpfJXQrdQbtdnXvbHAZpdrtAnvpvXn`JXQArd|f~HQJ`ےbdQZ|tb~f`ZHAbۂ|ZdQf~HbHAZZ|l`vXn˂pZHbtlnXv`Zp˂AJltdtAnvpQr˂p|ZdQfpvbHAdrtbdQZ|vpfۂ|ZdQfpvf~HXQJ`ےbdQZ|`vXnے`JXQtArdtlJnXv`p˂rJltH~f˂pZHA|ZdQ`f~fp˂rXJltfHf`vpfHr˂pZdQbtfpvbHAZpdrtAnvpvXn`JXQbtlfpvp˂rtbdQZvpfAbJXQJtArdf~HrXQJ`ۉbdQZ|JltfH~ˑZHAbbtlnXv`Zp˂AJltdtA`JXQHbtlnXv`fpvbHAZdrtAvpfr˂p|ZdQbfpvf~HXQJ`ےbdQZ|`vXnbے`btlvnXQJ`ےbdQZ|vXn~f`ZHAbۉlJtnXv`ˑ˂rXJltfHf`vpfHr˂pJtAdQbtnXv`XQJ`ے|drH~fr˂p|ZdQfpvbHAdrtbnvpf`vXے`JXJtArdf~HrXQJ`ۉbdQZ|JltAbے`JtArdf~HnXv`p˂rJltH~fZHAbtlJnXv`fpvbHAZdrtAvpfJXQrJtArdv`fbHAZpdrtAvpfHvXn`JXQArd|f~HQJ`ےbdQZ|vXn~f`ZHAbۉlJt~Hfpf~HbHAZtAJl`vXnZHAbbtlnXv`Zp˂AJltfHnvpQr˂p|ZdQfpvbHAdrtbnvpJXQr|ZdQbfpvfHfXQJ`ےbdQZ|`vXnے`JXQtArdf~HnXv`p˂rJltH~f˂p`J|ZdQ~Hfp˂rXJlt~f`vpfr˂pZdQbtfpvbHAZpdrtAvpfHvXn`JXQArd|vnXHfpvp˂rtbdQZvpfے`JXQJtArdf~HrXQJ`ۉbdQZ|f`vXfH~ˑZHAbbtlnXv`Zp˂AJlt`vX˂pZHJtArnXv`pvnbHAZdrtAvpfr˂p|ZdQbfpvfHfXQJ`ےbdQZ|`vXnXQr˂btlvnXQJ`ےbdQZ|vXn`JXQZHAbۉlJtnXv`ˑ˂rXJlt~f`vpfr˂pZdQbtfpvnXv`XQJ`ے|dtHXnr˂p|ZdQfpvbHAdrtnvpf`vXے`JXJtArdf~HrXQJ`ۉbdQZ|nvpAbے`d|Zf~HrXQJ`p˂rJltH~fZHAbtlJnXv`pvnbHAZdrtAvpfpZHAb|ZdQbv`fbHAZpdrtAvpfHr˂p`JXQArd|f~HQJ`ےbdQZ|vXn`JXQZHAbۉlJtnXv`f~HbHAZbdQZ|vpfHZHAbbtlnXv`Zp˂AJltfH~nvpQr˂p|ZdQfpvbHAdrtfH~ˁJXQrdQbtfpvےHAZXQJ`ےbdQZ|`vXnے`JXQtArdf~HrXQJ`p˂rJltH~fے`JtlJ~fv˂rXJlt~f`ZHAbr˂pZdQbtfpvbHAZpdrtAvpfHr˂p`JXQArdtf~Hfpvp˂rdrtA~f`JQrJtArdf~HrXQJ`ۉbdQZ|f`vXfے`JXZHAbbtlnXv`Zp˂AJltf`vXHے`lJtArnXv`p˂rbHAZdrtAvpfr˂p|ZdQbfpvےHAZXQJ`ےbdQZ|`vXnXQr˂tArdnXv`QJ`ےbdQZ|vXn`JXQZHAے`lJtnXv`ˑ˂rXJlt~f`ZHAbr˂plJfpfpvnXv`XQJ`ےJltvXnpZHA|ZdQfpvbHAdrtnvpQr˂pے`JXJtArdf~HrXQJ`ۉbdQZ|~f`JXQrd|Zf~HXQJ`ےp˂rJltH~fZHAbtlJnXv`p˂rbHAZdrtAvpfpZHAXQ|ZdQbf~HbHAZpdrtAvpfHr˂pJXQrArd|f~HQJ`ےbdQZ|vXn`JXQZHAے`vnXv`f~HbHAZbdQZ|vpfHbے`btlnXv`Zp˂AJltfH~ˑZHAbQr˂p|ZdQfpvbHAdrtvXnpZHAdQbtfpvbHAZXQJ`ےbdQZ|`vXnے`JXQtArdf~HXQJ`ےp˂rJltH~fr˂ptlJfpv˂rXJlt~f`ZHAbbtlZdQbtfpvbHAZpdrtAvpfHr˂pJXQr~Hfpۍpvfpvp˂rdrtA~vJXQrJtArdf~HrXQJ`ۉbdQZ|f`vXے`JXZHAbtlnXv`Zp˂AJltvpfHbے`JArd|nXv`p˂rJltdrtAvpfr˂p|ZdQbfpvbHAZXQJ`ےbdQZ|`vXnZHAbtAdQbtnXv`QJ`ےbdQZ|vXn`JXQJtAd|lJtnXv`ˑ˂rXJlt~f`ZHAbbtl|vnXnXv`nXv`XQJ`ےdQZ|pfے`pZHAb|ZdQfpvbHAdrtnvpQr˂p`JXQJtArdf~HrXQJ`ۉbdQZ|~f`JXQrˁZdQbtf~HXQJ`ےbdQZ|JltH~fZHAbtlJnXv`p˂rJltdrtAvpfے`JXQlJtAf~HbHAZpdrtAvpfHr˂pZdQbtArd|f~HQJ`ےbdQZ|vXn`JXQZdQbtv`ff~HfpvJ`bAZltb~f`HAbےtlJZdQbtpvnbHAZpdrtAJvpfH˂pZJXQrbrd|~HfpHAXQJ`bdQZ|vXnہJXQrrd|~HfpJ`ےQZ|dtbd~f`ZHAbf۝`vp|drnXv`p˂rdQZ|vXn`JXQrtAd|lJtAXv`f˂rXQltb~f`HAbےtlJZdQbtvnXےJl璁AJlvpfH˂pZHZdQbtvnXbHAZp˙rtAJlQZ|dvXnۉ˂pZHXnvˍQtJlfnXXQJ`ےdrtAJvpfH˂pZZdQbtrd|~HfJ`ےdQZ|vXn`JXQrtAd|lJtAv`pvtbQZdtbn~f`Abے`lJtAv`frXQtbdtAJlvpfHAbے`pfH~tbAdZv`fbHAZltb~f`HAbےlJtAZdQbtpvnbHAZpdrtAJvpfH˂pZZdQbtrd|nrXQrtAJlvpfHvXnہJXQrrd|~HfpJ`ےQZ|dtbn~f`JXQrf۝`v|dr~Hfpp˂rdQZ|vXn`JXQrrd|lJfXv`f˂rXQltb~f`HAbےlJtAZdQbtJ`p˂tbdf`vpfH˂pZHZdQbtvnXbHAZp˙rtAJlvpfHvXnۉ˂p`ZXnvˍQtJlvnXXQJ`ےdrtAJvpfH˂pZZdQbtpvn~HfJ`ےdQZ|vXn`JXQrrd|lJfrXQJQZ|dvXn~f`Abے`lJtAv`frXQtbdf`vpfHQXb㉀pfH~tbAdZv`fbAZltb~f`HAbےlJtAXv`fpvnbHAZpdrtAJvpfH˂pZZdQbtpv`ےbrtAJlvpfHvXnہJXQrrd|~HfpJ`ےQZ|dvXn~f`ۑpJAHrf۝`v|dr~HXrXQJ`dQZ|vXn`JXQrrd|~HfXv`f˂rXQltb~f`HAbےlJtA~HfpHAZp˂tbd~f`vpfے`˂pZHZdQbtvnXbHAZp˙rtAJlvpfHvXn󙐂ˁ`ZXnvˍQtJlv`fےbHdrtAJvpfH˂pZZdQbtpvnHfpJ`ےdQZ|vXn`JXQrrd|vnXbHAQZrtAvXnہJXQrAbے`lJtAv`frXQtbd~f`vpfZHQXAHrpfH~tbAdZ~HfpAZp˂ltb~f`HAbےlJtAXv`fvnrbHAZpdrtAJvpfH˂pZZdQbtv`fZp˂JltvpfH˂pZHJXQrrd|~HfpJ`ےQZ|dvXnAbے`ˁ`ZQf۝`v|drvnXrXQJ`dQZ|vXn`JXQrrd|~HfXQJ`ے˂rXQltb~f`HAbےlJtA~HfprXQJ`bdQZ|~f`Abے`˂pZHZdQbtvnXbHAZp˙rtAJlvpfHJXQrXb㉀ۑXnvˍQtJlv`pvےbHdrtAJvpfH˂pZZdQbtpvnHAZpJ`ےdQZ|vXn`JXQrrd|vnXےbHAdrtAvXnہJXQrAے`lJtAv`frXQtbd~f`˂pZHpJAHrpfH~tbAdZnrXQAZrXQltb~f`HAbےlJtAXv`f˂rXQbHAZpdrtAJvpfH˂pZZdQbtHfpvZp˂JltvpfH˂pZHJXQrbtrd|~HfpJ`ےQZ|dvXnAbے`ˁ`ZQf۝`v|drJ`AZpJ`ےJdQZ|vXn`JXQrrd|~HfJ`ے˂rXQltb~f`HAbےlJtAnXvrXQHAZbdQZ|~f`Abے`lJtZdQbtvnXbHAZp˙rtAJlvpfHJXQrXb㉀XnvˍQtJl˂rXltbdrtAJvpfH˂pZZdQbtpvnbHAZpJ`ےJdQZ|vXn`JXQrrd|`f~p˂rrAJlvXnہJXQrAd|lJtAv`frXQtbd~f`ے`ˁ`ZQXbpfH~tbAdZQJ`ےdQZ|ltb~f`HAbےlJtAXv`f˂rXQltbdrtAJvpfH˂pZZdQbtHfpvXQJ`ےtbdQvpfH˂pZHZdQbtrd|~HfpJ`ےQZ|dvXnJXQr㉀ۑpJf۝`v|drbHAZpdrtAJdQZ|vXn`JXQrrd|~HfJ`ےdQZ|ltb~f`HAbےlJtAnXvbHAZZ|d~f`Abے`lJtAZdQbtvnXbHAZp˙rtAJlvpfHpZHAAHr󙐂XnvˍQtJl˂rQJltbdtAJlvpfH˂pZZdQbtpvnbHAZpdrtAJdQZ|vXn`JXQrrd|`pvp˂rrtAJlvXnہJXQrrd|lJfpv`frXQtbd~f`bے`ˁ`ZQXbpfH~tbAdZbHAdQZ|tbn~f`HAbےlJtAXv`f˂rXQltbdtAJlvpfH˂pZZdQbtnXv`XQJ`ptbdQvpfH˂pZHZdQbtvnX~HfpJ`ےQZ|dvXnJXQr㉀ۑpf۝`v|drZp˂drtAJvpfvXn`JXQrrd|~HfJ`ےdQZ|tbn~f`HAbےlJtAf~H˂rXQZ|dr~f`Abے`lJtAv`fvnXbHAZp˙rtAJlvpfHp`JX`ZQXbXnvˍQtJlrXQJ`ltbHf`vpfH˂pZZdQbtpvnbHAZpdrtAJvpfvXn`JXQrrd|fpvJ`ےAJtbvXnہJXQrrd|~Hfpv`frXQtbd~f`Qr˂pۑpJApfH~tbAdZےbHAdQZ|vXn~f`HAbےlJtAXv`f˂rXQltbHf`vpfH˂pZZdQbtnXv`bHAZpdQZ|vpfH˂pZHZdQbtvnXHfpJ`ےQZ|dvXnۑZHAbHr󙐂ˁf۝`v|drZp˂drtAJvpfHvXn`JXQrrd|~HfJ`ےdQZ|vXn~f`HAbےlJtAfn˂rXQdrtAJ~f`Abے`lJtAv`fvnrXbHAZp˙rtAJlvpfHے`JX`ZQXbXnvˍQtJlrXQJltb~f`vpfے˂pZZdQbtpvnbHAZpdrtAJvpfHvXn`JXQrrd|Xv`fJ`ےltbvXnہJXQrrd|~HfpQJ`ےrXQtbd~f`Qr˂pۑpJApfH~tbAdZbHAZpdQZ|vXn`JXQrHAbےlJtAXv`f˂rXQltb~f`vpfے˂pZZdQbt~HfrXQJdQZ|vpfH˂pZHZdQbtvnXHAZpJ`ےQZ|dvXnۑZHAXQHQXb㉀f۝`v|drrXQdrtAJvpfH˂pZ`JXQrrd|~HfJ`ےdQZ|vXn`JXQrHAbےlJtApvn`ےbdrtAJ~f`Abے`lJtAv`frXQbHAZp˙rtAJlvpfHr˂pۑpJAHrXnvˍQtJlJ`ےltb~f`HAbے˂pZZdQbtpvnbHAZpdrtAJvpfH˂pZ`JXQrrd|Xv`fHAZp˂bdQZ|vXnہJXQrrd|~HfpJ`ےむrXQtbd~f`ZHAb󙐂ˁ`ZpfH~tbAdZbHAZpdQZ|vXn`JXQrHAے`lJtAXv`f˂rXQltb~f`HAbے˂pZZdQbt~HXrXQJdrtvpfH˂pZHZdQbtvnXbHAZpJ`ےJlQZ|dvXnے`JXQQXb㉀f۝`v|drrXQdrtAJvpfH˂pZJXQrbrd|~HfJ`ےdQZ|vXn`JXQrHAے`lJtAv`f`ےbAJlt~f`Abے`lJtAv`frXQtbdrtAJlvpfHr˂pۑpJAHXnvˍQtJltKKKKKKKKKKKKKKKKKKKLLLLLLLLLL \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv30_1.dat b/mpdf/qrcode/data/qrv30_1.dat deleted file mode 100644 index e50183c..0000000 --- a/mpdf/qrcode/data/qrv30_1.dat +++ /dev/null @@ -1,273 +0,0 @@ -}~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststststststqrqrqrqrqrqrqrqropopopopopopopopmnmnmnmnmnmnmnmnmlklklklklklklklklklklklijijijijijijijihghghghghefefefefeefefefedcdcdcdcdcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMKLKLKLKLKLKKKKKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:78787878787878785656565656565656343434343434343421212121121212120/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        }~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststststststqrqrqrqrqrqrqrqropopopopopopopopmnmnmnmnmnmnmnmnklklklklklklklklklklklklijijijijghghghghghghghghefefefeffefefefedcdcdcdcdcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMLKLKKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:78787878787878785656565656565656343434343434343421211111121212120/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        }~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststststststqrqrqrqrqrqrqrqropopopopopopopopmnmnmnmnmnmnmnmnklklklklklklklklklklklklijijijijghghghghghghghghefefefeefefefefedcdcdcdcdcdcdcdcbabababababababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMLKLKKKKKKLKLKLKLIJIJIJIJIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:78787878787878785656565656565656343434343434343412121212121212120/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        }~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststsrqrqrqrqrqrqrqrqrqrqrqropopopopopopopopmnmnmnmnmnmnmnmnklklklklklklklklklklklklijijijijghghghghghghghgheeeefefefefefefedcdcdcdcdcdcdcdcbabababababababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9:78787878787878785656565656565656343434343434343412121212121212120/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!        }~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqrqrqrqrqropopopopopopopopmnmnmnmnmnmnmnmnklklklklklklklklkjijijijijijijijghghghghghghghghfefefefefefefefedcdcdcdcdcdcdcdcbabababababababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPONMNMNMNMNMKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:9:9:9:9:78787878787878785656565656565656343434343434343412121212111111210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!        }~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqrqrqrqrqropopopopopopopopmnmnmnmnmnmnmnmnklklklklklklklklijijijijijijijijghghghghghghghghfefefefefefeeeeedcdcdcdcdcdcdcdcbabababababababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPONMNMNMNMNMNMNMNMKLKLKLKLKKKKKKLKIJIJIJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:9:9:9:9:787878787878787856565656565656563434343434321212121212122121210/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!        }~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqrqrqrqrqropopopopopopopopmnmnmnmnmnmnmnmnklklklklklklklklijijijijijijijijghghghghghghghghfefefefeefefefefdcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPONMNMNMNMNMNMNMNMKLKLKLKLLKLKLKLKIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABABABABABA@?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:9:9:9:9:787878787878787856565656565656563434343412111112121212120/0/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!        }~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqrqpopopopopopopopopopopopmnmnmnmnmnmnmnmnklklklklklklklklijijijijijijijijghghghghghghghghfefefefeefefefefdcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPONMNMNMNMNMNMNMNMKLKLKLKLLKLKLKLKIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:9:9:9:98787878787878787856565656565656563434343412121212121111110/0/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!         }~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqropopopopopopopopopopopopmnmnmnmnmnmnmnmnklklklklklklklklijijijijijijijijghghghghghghghghfefefeeeefefefefdcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMKLKKKKKKLKLKLKLKIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:78787878787878787878787856565656565654343434343412121212212121210/0/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!            }}~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqropopopopopopopopopopopopmnmnmnmnmnmnmnmnklklklklklklklklijijijijijijijijghghghghghghghgheeefefefefefefefdcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:78787878787878787878787856565656343434343434343412121212212121210/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!            }}}}}~}~}~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqropopopopopopopopopopopopmnmnmnmnmnmnmnmnklklklklklklklklijijijijijijijijghghghghghghghghefefefefefefefefdcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:78787878787878787878787856565656343434343434343412121111212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('('('('&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!            }~}~}~}~}~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqropopopopopopopoponmnmnmnmnmnmnmnmnmnmnmnklklklklklklklklijijijijijijijijghghghghghghghghefefefefefeeeeeedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKKKKKKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:78787878787878787878787656565656343434343434343411212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!           }~}~}~}~}~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqropopopopopopopopmnmnmnmnmnmnmnmnmnmnmnmnklklklklklklklklijijijijijijijijghghghghghghgfefefefefeffefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:78787878787878785656565656565656343434343434343421212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        }~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqropopopopopopopopmnmnmnmnmnmnmnmnmnmnmnmnklklklklklklklklijijijijijijijijghghghghefefeeeeefefefefdcdcdcdcdcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:78787878787878785656565656565656343434343434343421212121211111120/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        }~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvutstststststststststststqrqrqrqrqrqrqrqropopopopopopopopmnmnmnmnmnmnmnmnmnmnmnmnklklklklklklklklijijijijijijijijghghghghefefefefefefeeeedcdcdcdcdcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKKKKKKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:78787878787878785656565656565656343434343434343421212121121212120/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!                  - - - - - - - -             - - - - - - - -             - - - - - - - -             - - - - - - - -           - - - - - - - -         - - - - - - - -         - - - - - - - -         - - - - - - - -         - - - - - - - - - -         - - - - - - - - - - - -         - - - - - - - - - - - -         - - - - - - - - - - - -         - - - - - - - - - -          - - - - - - - -         - - - - - - - -LLKKJJII ==>>??@@yyzz{{||RRQQKKJJ - - UUVVWWXXtssrrqqp00//..--TUUVVWWX~~}EDDCCBBA 45566778pqqrrssteddccbba)((''&&%PQQRRSSTIHHGGFFE - - 01122334lmmnnoopihhggffe-,,++**)LMMNNOOPMLLKKJJI :;;<<==>A@@??>>= OPQQRRSS~~}}DDCCBBAA55667788qqrrssttddccbbaa((''&&%%QQRRSSTTHHGGFFEE - - 11223344mmnnoopphhggffee,,++**))MMNNOOPPLLKKJJII --..//00iijjkkllbbaa``__8899::;;~~KJJIIHHG - 56677889qrrssttudccbbaa`(''&&%%$QRRSSTTUHGGFFEED - - 12233445mnnooppqhggffeed,++**))(MNNOOPPQLKKJJIIH -..//001ijjkkllmlkkjjiih0//..--,\]]^^__`eddccbba,,--..//oppqqrrsccbbaa``''&&%%$$RRSSTTUUGGFFEEDD - - 22334455nnooppqqggffeedd++**))((NNOOPPQQKKJJIIHH ..//0011jjkkllmmkkjjiihh//..--,,HHGGFFEE - - AABBCCDD}}~~IIHHGGFFYYZZ[[\\poonnmml,,++**)) XYYZZ[[\}||{{zzyA@@??>>=899::;;??@@AAB=<<;;::9TTUUVVWW||{{zzyy@@??>>==99::;;<>??GFFEEDDC9::;;<<=uvvwwxxy`__^^]]\$##""!! UVVWWXXY~~}}|DCCBBAA@56677889qrrssttudccbbaa`(''&&%%$QRRSSTTUHGGFFEED - - 12233445mnnooppqhggffeed,++**))(`aabbccda``__^^]00112345sttuuvvw__^^]]\\##""!! VVWWXXYY~~}}||CCBBAA@@66778899rrssttuuccbbaa``''&&%%$$RRSSTTUUGGFFEEDD - - 22334455nnooppqqggffeedd++**))((~~}}DDCCBBAA - - EEFFGGHHEEDDCCBB]]^^__``lkkjihgf((''&&%% !!""##$\]]^^__`yxxwwvvu=<<;;::9<==>>??@xyyzz{{|]\\[[ZZY!  XYYZZ[[\}||{{zzyA@@??>>=899::;;>??@@yyzz{{||\\[[ZZYY  YYZZ[[\\||{{zzyy@@??>>==99::;;<>??@@Ayzz{{||}\[[ZZYYX  !YZZ[[\\]|{{zzyyx@??>>==<9::;;<<=uvvwwxxy`__^^]]\$##""!! UVVWWXXY~~}}|DCCBBAA@56677889qrrssttudccbbaa`(''&&%%$ !!"deekkllm]\\[[ZZY6778899:wxxyyzz{[[ZZYYXX !!ZZ[[\\]]{{zzyyxx??>>==<<::;;<<==vvwwxxyy__^^]]\\##""!! VVWWXXYY~~}}||CCBBAA@@66778899rrssttuuccbbaa``''&&%%$$||{{zzyy@@??>>== IIJJKKLLAA@@??>>aabbccddeeddccbb$$##""!!$%%&&''(`aabbccduttssrrq98877665@AABBCCD|}}~~YXXWWVVU !!""##$\]]^^__`yxxwwvvu=<<;;::9<==>>??@xyyzz{{|]\\[[ZZY!  XYYZZ[[\}||{{zzyA@@??>>=FGGHHIIJ{zzyyxxw0//..--,\\]]^^__ttssrrqq88776655AABBCCDD}}~~XXWWVVUU!!""##$$]]^^__``xxwwvvuu<<;;::99==>>??@@yyzz{{||\\[[ZZYY  YYZZ[[\\||{{zzyy@@??>>==99::;;<>==<<; ABBCCDDE}~~XWWVVUUT!""##$$%]^^__``axwwvvuut<;;::998=>>??@@Ayzz{{||}\[[ZZYYX  !YZZ[[\\]|{{zzyyx@??>>==<9::;;<<=uvvwwxxy`__^^]]\$##""!! "##$$%%&mnnooppqYXXWWVVU -:;;<<==>{||}}~~WWVVUUTT""##$$%%^^__``aawwvvuutt;;::9988>>??@@AAzz{{||}}[[ZZYYXX !!ZZ[[\\]]{{zzyyxx??>>==<<::;;<<==vvwwxxyy__^^]]\\##""!! xxwwvvuu<<;;::99MMNNOOPP==<<;;:: !!""eekkllmmaa``__^^ ())**++,deeffgghqppoonnm54433221 - - DEEFFGGHUTTSSRRQ$%%&&''(`aabbccduttssrrq98877665@AABBCCD|}}~~YXXWWVVU !!""##$\]]^^__`yxxwwvvu=<<;;::9JKKQQRRSwvvuutts,++**))( !!""``aabbccppoonnmm44332211 - - EEFFGGHHTTSSRRQQ%%&&''((aabbccddttssrrqq88776655AABBCCDD}}~~XXWWVVUU!!""##$$]]^^__``xxwwvvuu<<;;::99==>>??@@yyzz{{||RRQQKKJJHHIIJJKK|{{zzyyx;::99887 - - EFFGGHHITSSRRQQP%&&''(()abbccddetssrrqqp87766554 ABBCCDDE}~~XWWVVUUT!""##$$%]^^__``axwwvvuut<;;::998=>>??@@Ayzz{{||}\[[ZZYYX &''(())*qrrssttuUTTSSRRQ - >??@@AABSSRRQQPP&&''(())bbccddeessrrqqpp77665544 BBCCDDEE~~WWVVUUTT""##$$%%^^__``aawwvvuutt;;::9988>>??@@AAzz{{||}}[[ZZYYXXttssrrqq88776655QQRRSSTT~~}}||99887711##$$%%&&nnooppqq]]\\[[ZZ,--..//0hiijjkklmllkkjji100//..- HIIJJKKLQPPOONNM())**++,deeffgghqppoonnm54433221 - - DEEFFGGHUTTSSRRQ$%%&&''(`aabbccduttssrrq98877665 - - STTUUVVWsrrqqppo(''&&%%$##$$%%&&ddeefghillkkjjii00//..-- IIJJKKLLPPOONNMM))**++,,eeffgghhppoonnmm44332211 - - EEFFGGHHTTSSRRQQ%%&&''((aabbccddttssrrqq88776655AABBCCDD}}~~IIHHGGFF QQRRSSTTxwwvvuut76543211 IJJKKLLMPOONNMML)**++,,-effgghhipoonnmml43322110 - - EFFGGHHITSSRRQQP%&&''(()abbccddetssrrqqp87766554 ABBCCDDE}~~XWWVVUUT*++,,--.uvvwwxxyQKKJJIIHBCCDDEEFOONNMMLL**++,,--ffgghhiioonnmmll33221100 - - FFGGHHIISSRRQQPP&&''(())bbccddeessrrqqpp77665544 BBCCDDEE~~WWVVUUTTppoonnmm44332211UUVVWWXX{{zzyyxx00//..--''(())**rrssttuuYYXXWWVV01122334lmmnnoopihhggffe-,,++**)LMMNNOOPMLLKKJJI ,--..//0hiijjkklmllkkjji100//..- HIIJJKKLQPPOONNM())**++,deeffgghqppoonnm54433221 WXXYYZZ[onnmmllk$##""!! ''(())**jkkllmmnhhggffee,,++**))MMNNOOPPLLKKJJII --..//00iijjkkllllkkjjii00//..-- IIJJKKLLPPOONNMM))**++,,eeffgghhppoonnmm44332211 - - EEFFGGHHEEDDCCBB - - UUVVWWXXtssrrqqp00//..--MNNOOPPQLKKJJIIH -..//001ijjkkllmlkkjjiih0//..--, IJJKKLLMPOONNMML)**++,,-effgghhipoonnmml43322110 - - EFFGGHHITSSRRQQP.//00117yzz{{||}HGGFFEED FGGHHIIJKKJJIIHH ..//0011jjkkllmmkkjjiihh//..--,,JJKKLLMMOONNMMLL**++,,--ffgghhiioonnmmll33221100 - - FFGGHHIISSRRQQPPllkkjjii00//..-- YYZZ[[\\wwvvuutt,,++**))++,,--..vvwwxxyyUUTTSSRR45566778pqqrrssteddccbba)((''&&%PQQRRSSTIHHGGFFE - - 01122334lmmnnoopihhggffe-,,++**)LMMNNOOPMLLKKJJI ,--..//0hiijjkklmllkkjji100//..-[\\]]^^_keeddccb ++,,--..nooppqqrddccbbaa((''&&%%QQRRSSTTHHGGFFEE - - 11223344mmnnoopphhggffee,,++**))MMNNOOPPLLKKJJII --..//00iijjkkllllkkjjii00//..-- IIJJKKLLAA@@??>>YYZZ[[\\poonnmml,,++**))QRRSSTTUHGGFFEED - - 12233445mnnooppqhggffeed,++**))(MNNOOPPQLKKJJIIH -..//001ijjkkllmlkkjjiih0//..--, IJJKKLLMPOONNMML78899::;}~~DCCBBAA@ - - JKKLMNOPGGFFEEDD - - 22334455nnooppqqggffeedd++**))((NNOOPPQQKKJJIIHH ..//0011jjkkllmmkkjjiihh//..--,,JJKKLLMMOONNMMLLhhggffee,,++**))!!""##$$]]^^__``ssrrqqpp((''&&%%//001177zz{{||}}QQPONMLK -899::;;>?@??>>==< QQRRSSTT~~}}||CCBBAA@@66778899rrssttuuccbbaa``''&&%%$$RRSSTTUUGGFFEEDD - - 22334455nnooppqqggffeedd++**))((NNOOPPQQKKJJIIHH ddccbbaa((''&&%%%%&&''((aabbccddoonnmmll$$##""!!8899::;;~~KJJIIHHG - <==>>??@xyyzz{{|]\\[[ZZY!  XYYZZ[[\}||{{zzyA@@??>>=899::;;>==99::;;<>==<9::;;<<=uvvwwxxy`__^^]]\$##""!! UVVWWXXY~~}}|DCCBBAA@56677889qrrssttudccbbaa`(''&&%%$QRRSSTTUHGGFFEED - - ?@@AABBC~<;;::998UUVVWWXX{{zzyyxx??>>==<<::;;<<==vvwwxxyy__^^]]\\##""!! VVWWXXYY~~}}||CCBBAA@@66778899rrssttuuccbbaa``''&&%%$$RRSSTTUUGGFFEEDD - -  !!``__^^]]$$##""!!))**++,,eeffgghhkkeeddcc <<==>>??GFFEEDDC@AABBCCD|}}~~YXXWWVVU !!""##$\]]^^__`yxxwwvvu=<<;;::9<==>>??@xyyzz{{|]\\[[ZZY!  XYYZZ[[\}||{{zzyA@@??>>=899::;;>??@@yyzz{{||\\[[ZZYY  YYZZ[[\\||{{zzyy@@??>>==99::;;<>??@@Ayzz{{||}\[[ZZYYX  !YZZ[[\\]|{{zzyyx@??>>==<9::;;<<=uvvwwxxy`__^^]]\$##""!! UVVWWXXY~~}}|DCCBBAA@CDDEEFFG~}}||{{z8771100/YYZZ[[\\wwvvuutt;;::9988>>??@@AAzz{{||}}[[ZZYYXX !!ZZ[[\\]]{{zzyyxx??>>==<<::;;<<==vvwwxxyy__^^]]\\##""!! VVWWXXYY~~}}||CCBBAA@@""##$$%%\\[[ZZYY --..//00iijjkkllbbaa``__@@AABBCCCBBAA@@? - - DEEFFGGHUTTSSRRQ$%%&&''(`aabbccduttssrrq98877665@AABBCCD|}}~~YXXWWVVU !!""##$\]]^^__`yxxwwvvu=<<;;::9<==>>??@xyyzz{{|]\\[[ZZY! %&&''(()pqqrrsstVUUTTSSR - - =>>??@@A~TTSSRRQQ%%&&''((aabbccddttssrrqq88776655AABBCCDD}}~~XXWWVVUU!!""##$$]]^^__``xxwwvvuu<<;;::99==>>??@@yyzz{{||\\[[ZZYY  YYZZ[[\\wwvvuutt,,++**))##$$%%&&nnooppqq]]\\[[ZZ%&&''(()abbccddetssrrqqp87766554 ABBCCDDE}~~XWWVVUUT!""##$$%]^^__``axwwvvuut<;;::998=>>??@@Ayzz{{||}\[[ZZYYX  !YZZ[[\\]|{{zzyyx@??>>==<GHHIIJJKzyyxxwwv/..--,,+]]^^__``ssrrqqpp77665544 BBCCDDEE~~WWVVUUTT""##$$%%^^__``aawwvvuutt;;::9988>>??@@AAzz{{||}}[[ZZYYXX !!ZZ[[\\]]{{zzyyxx??>>==<<&&''(())XXWWVVUU11223344mmnnoopp^^]]\\[[DDEEFFGG~~}}|?>>==<<; HIIJJKKLQPPOONNM())**++,deeffgghqppoonnm54433221 - - DEEFFGGHUTTSSRRQ$%%&&''(`aabbccduttssrrq98877665@AABBCCD|}}~~YXXWWVVU)**++,,-tuuvvwwxRQQKKJJIABBCCDDEPPOONNMM))**++,,eeffgghhppoonnmm44332211 - - EEFFGGHHTTSSRRQQ%%&&''((aabbccddttssrrqq88776655AABBCCDD}}~~XXWWVVUU!!""##$$]]^^__``ssrrqqpp((''&&%%''(())**rrssttuuYYXXWWVV)**++,,-effgghhipoonnmml43322110 - - EFFGGHHITSSRRQQP%&&''(()abbccddetssrrqqp87766554 ABBCCDDE}~~XWWVVUUT!""##$$%]^^__``axwwvvuut<;;::998 KQQRRSSTvuuttssr+**))((' !!""##aabbccddoonnmmll33221100 - - FFGGHHIISSRRQQPP&&''(())bbccddeessrrqqpp77665544 BBCCDDEE~~WWVVUUTT""##$$%%^^__``aawwvvuutt;;::9988**++,,--TTSSRRQQ55667788qqrrssttZZYYXXWW HHIIJJKK|{{zzyyx;::99887LMMNNOOPMLLKKJJI ,--..//0hiijjkklmllkkjji100//..- HIIJJKKLQPPOONNM())**++,deeffgghqppoonnm54433221 - - DEEFFGGHUTTSSRRQ-..//001xyyzz{{|IHHGGFFEEFFGGHHILLKKJJII --..//00iijjkkllllkkjjii00//..-- IIJJKKLLPPOONNMM))**++,,eeffgghhppoonnmm44332211 - - EEFFGGHHTTSSRRQQ%%&&''((aabbccddoonnmmll$$##""!!++,,--..vvwwxxyyUUTTSSRR-..//001ijjkkllmlkkjjiih0//..--, IJJKKLLMPOONNMML)**++,,-effgghhipoonnmml43322110 - - EFFGGHHITSSRRQQP%&&''(()abbccddetssrrqqp87766554 - - TUUVVWWXrqqppoon'&&%%$$#$$%%&&''eefghijkkkjjiihh//..--,,JJKKLLMMOONNMMLL**++,,--ffgghhiioonnmmll33221100 - - FFGGHHIISSRRQQPP&&''(())bbccddeessrrqqpp77665544 ..//0011PPOONNMM99::;;<>??@@AABz{{||}}~[ZZYYXXW !!"Z[[\\]]^{zzyyxxw?>>==<<;:;;<<==>vwwxxyyz_^^]]\\[#""!! VWWXXYYZwvvuutts,++**))(+,,--../vwwxxyyzIHHGGFFE - - @AABBCCD::;;<<==vvwwxxyyUUTTSSRR - - EEFFGGHH~~}}||{>==<<;;: -BCCDDEEF~WVVUUTTS"##$$%%&^__``aabwvvuutts;::99887>??@@AABz{{||}}~[ZZYYXXW !!"Z[[\\]]^srrqqppo(''&&%%$/0011778z{{||}}}EDDCCBBA - - DEEFFGGH>>??@@AAzz{{||}}QQKKJJIIIIJJKKQQ{zzyyxxw:9988776 - FGGHHIIJSRRQQPPO&''(())*bccddeefsrrqqppo76655443 -BCCDDEEF~WVVUUTTS"##$$%%&^__``aabonnmmllk$##""!! 899::;;<}||{{zzyA@@??>>= HIIJJKKLBBCCDDEE~~HHGGFFEE - -RRSSTTUUwvvuutts54321100JKKLLMMNONNMMLLK*++,,--.fgghhiijonnmmllk3221100/ - FGGHHIIJSRRQQPPO&''(())*bccddeefkeeddccb <==>>??@yxxwwvvu=<<;;::9LMMNNOOPFFGGHHIIDDCCBBAA VVWWXXYYsrrqqppo//..--,,NOOPPQQRKJJIIHHG .//00112jkkllmmnkjjiihhg/..--,,+JKKLLMMNONNMMLLK*++,,--.fgghhiijbaa``__^@AABBCCDuttssrrq98877665PQQRRSSTJJKKLLMM@@??>>==ZZ[[\\]]onnmmllk++**))((RSSTTUUVGFFEEDDC - - 23344556nooppqqrgffeeddc+**))(('NOOPPQQRKJJIIHHG .//00112jkkllmmn^]]\\[[ZDEEFFGGHqppoonnm54433221TUUVVWWXNNOOPPQQ<<;;::99^^__``aakjihgfee''&&%%$$VWWXXYYZ~~}}||{CBBAA@@?6778899:rssttuuvcbbaa``_'&&%%$$#RSSTTUUVGFFEEDDC - - 23344556nooppqqrZYYXXWWV HIIJJKKQmllkkjji100//..- XYYZZ[[\RRSSTTUU~~}}||{{88771100bbccddeeddccbbaa##""!!  !!"Z[[\\]]^{zzyyxxw?>>==<<;:;;<<==>vwwxxyyz_^^]]\\[#""!! VWWXXYYZ~~}}||{CBBAA@@?6778899:rssttuuvVUUTTSSR - - -QRRSSTTUihhggffe-,,++**) !!""##$\]]^^__`VVWWXXYYzzyyxxww//..--,, !!""##kkllmmnn``__^^]]"##$$%%&^__``aabwvvuutts;::99887>??@@AABz{{||}}~[ZZYYXXW !!"Z[[\\]]^{zzyyxxw?>>==<<;:;;<<==>vwwxxyyzRQQKKJJI - UVVWWXXYeddccbba)((''&&%$%%&&''(`aabbccdZZ[[\\]]vvuuttss++**))(($$%%&&''ooppqqrr\\[[ZZYY&''(())*bccddeefsrrqqppo76655443 -BCCDDEEF~WVVUUTTS"##$$%%&^__``aabwvvuutts;::99887>??@@AABz{{||}}~IHHGGFFEYZZ[[\\]a``__^^]%$$##""!())**++,deeffggh^^__``aarrqqppoo''&&%%$$(())**++ssttuuvvXXWWVVUU*++,,--.fgghhiijonnmmllk3221100/ - FGGHHIIJSRRQQPPO&''(())*bccddeefsrrqqppo76655443 -BCCDDEEF~EDDCCBBA]^^__``a]\\[[ZZY! ,--..//0hiijjkklbbccddeennmmllkk##""!! ,,--..//wwxxyyzzTTSSRRQQ .//00112jkkllmmnkjjiihhg/..--,,+JKKLLMMNONNMMLLK*++,,--.fgghhiijonnmmllk3221100/ - FGGHHIIJA@@??>>=abbccddeYXXWWVVU01122334lmmnnoopffgghhiieeddccbb00117788{{||}}~~PONMLKKJ - - 23344556nooppqqrgffeeddc+**))(('NOOPPQQRKJJIIHHG .//00112jkkllmmnkjjiihhg/..--,,+JKKLLMMN=<<;;::9 !!""#ekkllmmnUTTSSRRQ45566778pqqrrsstjjkkllmmaa``__^^99::;;<<JIIHHGGF 6778899:rssttuuvcbbaa``_'&&%%$$#RSSTTUUVGFFEEDDC - - 23344556nooppqqrgffeeddc+**))(('NOOPPQQR~~}}||{98877110#$$%%&&'nooppqqrQPPOONNM899::;;>??@@FEEDDCCB:;;<<==>vwwxxyyz_^^]]\\[#""!! VWWXXYYZ~~}}||{CBBAA@@?6778899:rssttuuvcbbaa``_'&&%%$$#RSSTTUUV{zzyyxxw0//..--,'(())**+rssttuuvMLLKKJJI <==>>??@xyyzz{{||}}fpvfpvfpvXQJ`ےXQJ`ےZ|lvXnvpfZHAbr˂pbtlbtlf~Hf~HfHbHAbHAAJltAJltf`vXf`vXQr˂pQr˂pQr˂pbtlbtlf~Hf~HbHAbHAJltAJltAJltvXnۅvpfۙے`JXbtl|ZdQf~Hf~HfHfbHAZbHAZJltJlt`vXn`vXnr˂pr˂pr˂ptlJtlJf~Hf~HbHAZbHAZJltJltJlt`vXn`vXnJXQr˂pZ|ZdQrdt璝vnXv`ffpbHAZpbHAZpJltJltvXnvXnr˂pr˂pr˂plJtlJtf~Hf~HbHAZpbHAZpJltJltJltvXnvXnr˂pr˂pArd||ZdQfpv~HXZp˂ےbHltbltbvXnvXn˂pZ˂pZ˂pZlJtAlJtA~Hf~HfbHAZpbHAZpltbltbltbvXnvXn˂pZ˂pZnXv`nXv`nXv`bHAZbHAZtbdQZvpfHH~f`JXQZHAbJtArdJtArdfpvfpvfpvZp˂Zp˂bdQZ|bdQZ|nvpnvpZHAbZHAbZHAJtArdJtArdfpvfpvZp˂Zp˂bdQZ|bdQZ|bdQZ|vpfH`JXQHQr˂pJtArdbtlfpvfpvpvnp˂rp˂rbdQZ|bdQZ|vpfvpfZHAbZHAbZHAےtArdtArdfpvfpvp˂rp˂rbdQZ|bdQZ|bdQZ|vpfvpf˂pZHAHAbےbtllJfpv`fvn˂rX˂rXbdQZ|bdQZ|vpfHvpfHZHAbZHAbZHAے`Ard|Ard|fpvfpv˂rX˂rXbdQZ|bdQZ|bdQZ|vpfHvpfHZHAbZHAbہZdQtAbtlnXv`v`frXQJAZp˂dQZ|dQZ|vpfHvpfHHAbےHAbےHAے`rd|rd|pvnpvn˂rXQ˂rXQdQZ|dQZ|dQZ|vpfHvpfHHAbےHAbےf~Hf~Hp˂rp˂rp˂r|dr~f``vXnrZAbے`JXQ|ZdQ|ZdQnXv`nXv`nrXQJ`rXQJ`rXQJ`ہdrtdrtfH~fH~˙ے`JXے`JX`JXQ|ZdQ|ZdQnXv`nXv`rXQJ`rXQJ`ہdrtdrtdtA~f`Abے`ZHAXQ|ZdQbJtArdnXv`nXv`rXQJ`XQJ`ےXQJ`ےdrtAdrtAH~fH~fے`JXQے`JXQ`JXQr|ZdQb|ZdQbnXv`nXv`XQJ`ےXQJ`ےdrtAdrtAdtAJH~fH~fbے``JXQrJtArdvnv~HfprXQJ`QJ`ےQJ`ےdrtAdrtA~f`~f``JXQ`JXQJXQrZdQbtZdQbtnXv`nXv`QJ`ےQJ`ےdrtAdrtAdtAJl~f`~f``JXQ`JXQrd|JtAdQbtf~H~HfpbHAZpˉrXQJ`drtAJdrtAJ~f`~f``JXQr`JXQrJXQrbZdQbtZdQbtXv`fXv`fJ`ےJ`ےdrtAJdrtAJdtAJl~f`~f``JXQr`JXQrfpvfpvXQJ`ےXQJ`ےXQJ`ےtAJlvXH~vpfے`Jr˂pbtlbtlf~Hf~HےHAbHAbHAAJltAJltf`vXf`vXQr˂pQr˂prbtlbtlbtlf~Hf~HbHAbHAAJltAJltJltvXnہJXQrr˂pJtAr|ZdQf~Hf~HےHAZbHAZbHAZJltJlt`vXn`vXnr˂pr˂pbtltlJtlJf~Hf~HbHAZbHAZJltJltltb`vXn`vXnJXQr˂p`|ZdQf~HvnXHAZpbHAZpbHAZpJltJltvXnvXnr˂pr˂pbtllJtlJtf~Hf~HbHAZpbHAZpJltJlttbvXnvXnr˂pr˂pZdQbtlJtfpvvnXrXQےbHltbltbvXnvXn˂pZ˂pZtlJlJtAlJtA~Hf~HfbHAZpbHAZpltbltbtbnvXnvXn˂pZ˂pZnXv`nXv`bHAZbHAZJlttbdQZf`vHXnXQr˂ZHAbJtArdJtArdfpvfpvZp˂Zp˂Zp˂bdQZ|bdQZ|nvpnvpZHAbZHAbJtAdJtArdJtArdfpvfpvZp˂Zp˂bdQZ|bdQZ|bnvpvp`vX˂pZHZHAbd|Zbtlfpvfpvp˂rp˂rp˂rbdQZ|bdQZ|vpfvpfZHAbZHAbJtAdtArdtArdfpvfpvp˂rp˂rbdQZ|bdQZ|nvpvpfvpf˂p`JJXQrbbtlfpvv`f˂rX˂rX˂rXbdQZ|bdQZ|vpfHvpfHZHAbZHAbJtAd|Ard|Ard|fpvfpv˂rX˂rXbdQZ|bdQZ|nvpvpfHvpfHZHAbZHAbےlJtAArd|nXv`v`pvJ`ےAZrXQdQZ|dQZ|vpfHvpfHHAbےHAbےtAd|rd|rd|pvnpvn˂rXQ˂rXQdQZ|dQZ|vpfvpfHvpfHHAbےHAbےf~Hf~Hp˂rp˂rdrtAJ|dtXnvvpfHpZHAbJQr˂|ZdQ|ZdQnXv`nXv`rXQJ`rXQJ`rXQJ`ہdrtdrtfH~fH~˙ے`JXے`JX|ZdQ|ZdQ|ZdQnXv`nXv`rXQJ`rXQJ`ہdrtdrt`vXnvpAbے``JXQdQbtJtArnXv`nXv`XQJ`ےXQJ`ےXQJ`ےdrtAdrtAH~fH~fے`JXQے`JXQ|ZdQb|ZdQb|ZdQbnXv`nXv`XQJ`ےXQJ`ےdrtAdrtAfHfH~fH~fXQr˂tl||ZdQbnXv`˕~fvQJ`ےQJ`ےQJ`ےdrtAdrtA~f`~f``JXQ`JXQZdQbtZdQbtZdQbtnXv`nXv`QJ`ےQJ`ےdrtAdrtAfHf`~f`~f``JXQ`JXQrd|ZdQbtpvnrXQbHAZpJ`ےJdrtAJdrtAJ~f`~f``JXQr`JXQrZdQbtZdQbtZdQbtXv`fXv`fJ`ےJ`ےdrtAJdrtAJHf`~f`~f``JXQr`JXQrlJtAfpvfpvXQJ`ےXQJ`ےltbbdQZ|pfH~~f`ے`JpZHAbtlbtlf~Hf~HbHAbHAJltAJltAJltf`vXf`vXQr˂pQr˂pbtlbtlbtlf~Hf~HbHAbHAAJltAJltnvpfH~JXQrr˂plJtArZdQbtf~Hf~HbHAZbHAZJltJltJlt`vXn`vXnr˂pr˂ptlJtlJtlJf~Hf~HbHAZbHAZJltJlt`vXn`vXn`vXnpZHAbZdQbttlJf~HnXv`bHAZpbHAZpJltJltJltvXnvXnr˂pr˂plJtlJtlJf~Hf~HbHAZpbHAZpJltJltvXnvXnvXnr˂pr˂pZdQbtdlJtnXv`J`AZprXQltbltbltbvXnvXn˂pZ˂pZlJtAlJtAlJf~Hf~HfbHAZpbHAZpltbltbvXnvXnvXn˂pZ˂pZrd|nXv`nXv`bHAZbHAZdQZ|drtAf`vvXnXQr˂bے`JtArdJtArdfpvfpvZp˂Zp˂bdQZ|bdQZ|bdQZ|nvpnvpZHAbZHAbJtArdJtArdJfpvfpvfpvZp˂Zp˂bdQZ|bdQZ|fH~˕f`vXے`ZHAbd|ZlJtAfpvfpvp˂rp˂rbdQZ|bdQZ|bdQZ|vpfvpfZHAbZHAbtArdtArdfpvfpvfpvp˂rp˂rbdQZ|bdQZ|vpfvpfvpfے`JlJtAtArdfpvf~H˂rX˂rXbdQZ|bdQZ|bdQZ|vpfHvpfHZHAbZHAbArd|Ard|fpvfpvfpv˂rX˂rXbdQZ|bdQZ|vpfHvpfHvpfZHAbZHAbۙ|ZdArdtf~H˂rXJ`bAZdQZ|dQZ|dQZ|vpfHvpfHHAbےHAbےrd|rd|pvnpvnpvn˂rXQ˂rXQdQZ|dQZ|vpfHvpfHvpfےHAbےHAbےZdQbtf~Hf~Hp˂rp˂rdrtAJJltXnvpfHpZAb`JXQr˂|ZdQ|ZdQnXv`nXv`rXQJ`rXQJ`ہdrtdrtdtAfH~fH~˙ے`JXے`JX|ZdQ|ZdQnXv`nXv`nXv`rXQJ`rXQJ`ہdrtdrtf`vXHnvpJXQrˉ˂pZHdQbtrd|nXv`nXv`XQJ`ےXQJ`ےdrtAdrtAdtAJH~fH~fے`JXQے`JXQ|ZdQb|ZdQbnXv`nXv`nXv`XQJ`ےXQJ`ےdrtAdrtAH~fH~fے`JXQXQr˂rd||ZdQbnXvf~fpvQJ`ےQJ`ےdrtAdrtAdtAJl~f`~f``JXQ`JXQZdQbtZdQbtnXv`nXv`nXv`QJ`ےQJ`ےdrtAdrtA~f`~f``JXQ`JXQ`JXQQbtllJfpfpvQJ`ےp˂rdrtAJdrtAJdtAJl~f`~f``JXQr`JXQrZdQbtZdQbtXv`fXv`fXv`fJ`ےJ`ےdrtAJdrtAJ~f`~f``JXQr`JXQr`JXQrlJtAfpvfpvXQJ`ےXQJ`ےltbbdQZ|f`vX~vJXQrpZHAbbtlbtlf~Hf~HbHAbHAAJltAJltJltf`vXf`vXQr˂pQr˂pbtlbtlf~Hf~HfHbHAbHAAJltAJlt~f`fHXpZHAAbے`JArd|ZdQbtf~Hf~HbHAZbHAZJltJltltb`vXn`vXnr˂pr˂ptlJtlJf~Hf~HfHfbHAZbHAZJltJlt`vXn`vXnHAbےpZHAXQZdQtArtlJHfpvnXv`bHAZpbHAZpJltJlttbvXnvXnr˂pr˂plJtlJtf~Hf~HfHfpbHAZpbHAZpJltJltvXnvXnr˂pr˂pr˂pJtArdvnXv`˙bHAZpXQJ`ےltbltbtbnvXnvXn˂pZ˂pZlJtAlJtA~Hf~HfHfpbHAZpbHAZpltbltbvXnvXn˂pZ˂pZ˂pZrd|nXv`nXv`bHAZbHAZdQtAJldrtAnvppfے`˂pZHJAdJtArdJtArdfpvfpvZp˂Zp˂bdQZ|bdQZ|bnvpnvpnvpZHAbZHAbJtArdJtArdfpvfpvfpvZp˂Zp˂bdQZ|bdQZ|vXnnvpbے`JXQrZdQbtlJtAfpvfpvp˂rp˂rbdQZ|bdQZ|nvpvpfvpfZHAbZHAbtArdtArdfpvfpvpvnp˂rp˂rbdQZ|bdQZ|vpfvpf`JXQrr˂pd|ZtAdQbtnXvf~H˂rX˂rXbdQZ|bdQZ|nvpvpfHvpfHZHAbZHAbArd|Ard|fpvfpvvn˂rX˂rXbdQZ|bdQZ|vpfHvpfHZHAbZHAbZHAے`|Zd~HfpfnX˂rQJbHAZdQZ|dQZ|vpfvpfHvpfHHAbےHAbےrd|rd|pvnpvnvnr˂rXQ˂rXQdQZ|dQZ|vpfHvpfHHAbےHAbےHAے`ZdQbtf~Hf~Hp˂rp˂rtbdQdQZ|fH~JXQrAbے`|ZdQ|ZdQ|ZdQnXv`nXv`rXQJ`rXQJ`ہdrtdrtfHfH~fH~˙ے`JXے`JX|ZdQ|ZdQnXv`nXv`nrXQJ`rXQJ`rXQJ`ہdrtdrtvpfHfH~JXQrˉ˂p`lJtrdZQbnXv`nXv`XQJ`ےXQJ`ےdrtAdrtAfHfH~fH~fے`JXQے`JXQ|ZdQb|ZdQbnXv`nXv`rXQJ`XQJ`ےXQJ`ےdrtAdrtAH~fH~f˂pZZHAbdQbtlJtA`f~fvnXQJ`ےQJ`ےdrtAdrtAfHf`~f`~f``JXQ`JXQZdQbtZdQbtnXv`nXv`rXQJ`QJ`ےQJ`ےdrtAdrtA~f`~f``JXQ`JXQJXQrQbtlvnXv`fbHAp˂rdrtAJdrtAJHf`~f`~f``JXQr`JXQrZdQbtZdQbtXv`fXv`fXQJ`ےJ`ےJ`ےdrtAJdrtAJ~f`~f``JXQr`JXQrJXQrblJtAfpvfpvXQJ`ےXQJ`ےZ|ddrtAJf`vXZHAbہJXQrbtlbtlbtlf~Hf~HbHAbHAAJltAJltf`vXf`vXf`vXQr˂pQr˂pbtlbtlf~Hf~HےHAbHAbHAAJltAJlt~f`f`vXp`JXJXQrbtArd|tlJf~Hf~HbHAZbHAZJltJlt`vXn`vXn`vXnr˂pr˂ptlJtlJf~Hf~HےHAZbHAZbHAZJltJlt`vXn`vXnHAbےے`JXQlJtArrd|Hfpvv`fbHAZpbHAZpJltJltvXnvXnvXnr˂pr˂plJtlJtf~Hf~HHAZpbHAZpbHAZpJltJltvXnvXnr˂pr˂pbtl||ZdQv`f~HfpZp˂XQJ`ےltbltbvXnvXnvXn˂pZ˂pZlJtAlJtA~Hf~HfHAZpbHAZpbHAZpltbltbvXnvXn˂pZ˂pZtlJrd|nXv`nXv`bHAZbHAZrtAJlltbnvp`JXQ˂pZHJtArdJtArdJfpvfpvfpvZp˂Zp˂bdQZ|bdQZ|nvpnvpnvpZHAbZHAbJtArdJtArdfpvfpvZp˂Zp˂Zp˂bdQZ|bdQZ|vXnnvpQr˂plJAZdQbtfpvfpvfpvp˂rp˂rbdQZ|bdQZ|vpfvpfvpfZHAbZHAbtArdtArdfpvfpvp˂rp˂rp˂rbdQZ|bdQZ|vpfvpf`JXQrr˂pd|ZZdQbtnXv~Hfpۑ˂rX˂rXbdQZ|bdQZ|vpfHvpfHvpfZHAbZHAbArd|Ard|fpvfpv˂rX˂rX˂rXbdQZ|bdQZ|vpfHvpfHZHAbZHAbہZdQbtbtl~Hfp۝vnXrXQJ`bAZdQZ|dQZ|vpfHvpfHvpfےHAbےHAbےrd|rd|pvnpvn˂rXQ˂rXQ˂rXQdQZ|dQZ|vpfHvpfHHAbےHAbےtAd|ZdQbtf~Hf~Hp˂rp˂rtbdQdQZ|``vXnr˂pAbJXQ|ZdQ|ZdQnXv`nXv`nXv`rXQJ`rXQJ`ہdrtdrtfH~fH~fے`JXے`JXے`JX|ZdQ|ZdQnXv`nXv`rXQJ`rXQJ`rXQJ`ہdrtdrtf`fH~ZHAb|ZdQlJArnXv`nXv`nXv`XQJ`ےXQJ`ےdrtAdrtAH~fH~fے`JXQے`JXQے`JXQ|ZdQb|ZdQbnXv`nXv`XQJ`ےXQJ`ےXQJ`ےdrtAdrtAH~fH~fے`ZHAbdQbtdlJtA`f~fpvnXQJ`ےQJ`ےdrtAdrtA~f`~f``JXQ`JXQ`JXQZdQbtZdQbtnXv`nXv`QJ`ےQJ`ےQJ`ےdrtAdrtA~f`~f``JXQ`JXQlJtJtArdvnXHv`fےbHArXQJ`drtAJdrtAJ~f`~f``JXQr`JXQr`JXQrZdQbtZdQbtXv`fXv`fJ`ےJ`ےJ`ےJdrtAJdrtAJ~f`~f``JXQr`JXQrZdQbtlJtArd|rd|HfpvvnXbHAZtbQZdrtAJlvpfHvpfHvpfHAbے`Abے`rd|rd|vnXvnXvnrXrXQrXQQZ|dQZ|dvpfHvpfH˂pZHZHAbېˁ`ZQQXb㉀XnvˍXnvˍtbAdZZdQbtZdQbtnXvv`pvp˂rrtAJltbdQ煐f`~f`~f`JXQrJXQrZdQbtZdQbtv`fv`fQJ`ےJ`ےJ`ےrtAJlrtAJl~f`~f`Abے``JXQXb㉀ۑpJAHpfH~p|dr|drlJtAlJtA`pvnrXQXQJ`ptbdZ|drvXnvXnvXnۉ˂pZH˂pZHlJtAlJtA~Hfp~HfpHAZpbHAZpbHAZpˑtbdtbdvXnvXnہJXQrr˂pˁ`ZQXbf۝`vf۝`vQtJlQtJlrd|rd|nXv`J`p˂˂rXQQZ|dAJtbvpfHvpfHvpfے`Abے`Abے`rd|rd|vnXvnXrXQrXQrXQQZ|dQZ|dvpfHvpfH󉐙ے`ZHAb㉀ۑpJXnvˍXnvˍtbAdZtbAdZZdQbtZdQbtf~HrXQJJ`ےrtAJldQZ|~f`~f`JXQrJXQrJXQrZdQbtZdQbtv`fv`fJ`ےJ`ےJ`ےJlrtAJlrtAJl~f`~f`JXQrˉ˂pZHAHr󙐂pfH~pfH~|dr|drlJtAlJffpv`ےbbHAZptbddrtAJvXnvXnۉ˂pZH˂pZH˂pZHlJtAlJtA~Hfp~HfpbHAZpbHAZpˑtbdtbdtbdvXnvXnۂpZHAAbے`ˁ`ZQXbf۝`vf۝`vQtJlQtJlrd|pvnXv`HAZp˂˂rXQQZrtAltbvpfHvpfHAbے`Abے`Aے`rd|rd|vnXvnXrXQrXQQZ|dQZ|dQZ|dvpfHvpfHbے`JXQr㉀ۑpXnvˍXnvˍtbAdZtbAdZZdQbt~HfpfnbHAJ`ےJltdQZ|~f`~f`JXQrJXQrJXQrbtZdQbtZdQbtv`fv`fJ`ےJ`ےrtAJlrtAJltAJl~f`~f`JXQrˉ˂p`Z`ZQXbpfH~pfH~|dr|drlJtAvnXXv`fZp˂rXQJbdQZ|drtAJvXnvXnۉ˂pZH˂pZHlJtlJtAlJtA~Hfp~HfpbHAZpbHAZpˑtbdtbdtbnvXnvXnۂp`JXQXb㉀ۑpJAf۝`vf۝`vQtJlQtJlrd|v`f~HfrXQJ``ےbdrtAbdQZ|vpfHvpfHAbے`Abے`Ad|rd|rd|vnXvnXrXQrXQQZ|dQZ|dvpfHvpfHvpfHQr˂pۑpJAHrHr󙐂ˁXnvˍXnvˍtbAdZtbAdZZdQbt~HfppvnےbHAHAZp˂Jltdrt~f`~f`JXQrJXQrZdQbtZdQbtZdQbtv`fv`fJ`ےJ`ےrtAJlrtAJlf`~f`~f`ZHAb󙐂ˁ`Z`ZQXbpfH~pfH~|dr|drlJtAvnXXv`fZp˂rXQJbdQZ|AJltvXnvXnۉ˂pZH˂pZHlJtAlJtAlJfp~Hfp~HfpbHAZpbHAZpˑtbdtbdvXnvXnvXnۙے`JXQXAHr󙀒ۑpJAf۝`vf۝`vQtJlQtJlrd|Hfpv~HXrXQHAZ`ےbrAJlbdQZ|vpfHvpfHAbے`Abے`rd|rd|vnXvnXvnXrXQrXQQZ|dQZ|dvpfHvpfHvpfZHQr˂pˁ`ZQHQXb㉀XnvˍXnvˍtbAdZtbAdZZdQbtnXvv`fp˂rHAXQJ`tbdQ灂AJl~f`~f`JXQrJXQrZdQbtZdQbtv`fv`fv`fJ`ےJ`ےrtAJlrtAJl~f`~f`Abے`ZHAXQXb㉀ۑۑpJAHrpfH~pfH~|dr|drlJtA`f~~HfpXQJ`ےےJlZ|dtbnvXnvXnۉ˂pZH˂pZHlJtAlJtA~Hfp~HfpHfpbHAZpbHAZpˑtbdtbdvXnvXnہJXQrr˂ppJAHr󙐂ˁ`Zf۝`vf۝`vQtJlQtJlt \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv30_2.dat b/mpdf/qrcode/data/qrv30_2.dat deleted file mode 100644 index 2211b28..0000000 --- a/mpdf/qrcode/data/qrv30_2.dat +++ /dev/null @@ -1,273 +0,0 @@ -}{|{|{|{|yzyzyzyzuvuvuvuvststststopopopopmnmnmnmnklklklklghghghghdcdcdcdcbabababa^]^]^]^]}}}}}~}~{|{|{|{|yzyzyzyzuvuvuvuvststststopopopopmnmnmnmnklklklklghghghghdcdcdcdcbabababa^]^]^]^]}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvststststopopopopmnmnmnmnklklklklghghghghdcdcdcdcbabababa^]^]^]^]}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvststststopopopopmnmnmnmnklklklklghghghghdcdcdcdcbabababa^]^]^]^]}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvststststopopopopmnmnmnmnkjijijijghghghghdcdcdcdcbabababa^]^]^]^]}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvststststopopopopmnmnmnmnijijijijghghghghdcdcdcdcbabababa^]^]^]^]}~}~}~}~{|{|{|{|yxwxwxwxuvuvuvuvststststopopopopmnmnmnmnijijijijghghghghdcdcdcdcbabababa^]^]^]^]}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvststststopopopopmnmnmnmnijijijijghghghghdcdcdcdcbabababa^]^]^]^]}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvststststopopopopmnmnmnmnijijijijghghghghdcdcdcdcbabababa^]^]^]^]}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvststststopopopopmnmnmnmnijijijijghghgfefdcdcdcdcbabababa^]^]^]^]}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvststststopopopopmnmnmnmnijijijijefefeeeedcdcdcdcbabababa^]^]^]^]}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvststststopopopopmnmnmnmnijijijijefefefefdcdcdcdcbabababa^]^]^]^]}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvsrqrqrqropopopopmnmnmnmnijijijijefefefefdcdcdcdc`_`_`_`_^]^]^]^]}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqropopopopmnmnmnmnijijijijefefefefdcdcdcdc`_`_`_`_^]^]^]^]}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqropopopopmnmnmnmnijijijijefefefeedcdcdcdc`_`_`_`_^]^]^]^]}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqropopopopmnmnmnmnijijijijeeeefefedcdcdcdc`_`_`_`_^]^]^]^]}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqropopopopmnmnmnmnijijijijfefefefedcdcdcdc`_`_`_`_^]^]^]^]}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqropopopopmnmnmnmnijijijijfefefefedcdcdcdc`_`_`_`_^]^]^]^]}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqropopopopmlklklklijijijijfefefefedcdcdcdc`_`_`_`_^]^]^]^]}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqropopopopklklklklijijijijfefefefedcdcdcdc`_`_`_`_^]^]^]^]}~}~}~}~{zyzyzyzwxwxwxwxuvuvuvuvqrqrqrqropopopopklklklklijijijijfefefeeedcdcdcdc`_`_`_`_^]^]^]^]}~}~}~}~yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqropopopopklklklklijijijijeeefefefdcdcdcdc`_`_`_`_^]^]^]^]}~}~}~}~yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqropopopopklklklklijijijijefefefefdcdcdcdc`_`_`_`_^]^]^]^]}~}~}~}~yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqropopopopklklklklijijijijefefefefdcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[}~}~}~}~yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqropopopopklklklklijijijijefefefefdcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[}~}~}~}~yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqropopopopklklklklijijijijefefefefdcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[}~}~}~}~yzyzyzyzwxwxwxwxutstststqrqrqrqropopopopklklklklijijijijefefeeeebabababa`_`_`_`_^]^]^]^]\[\[\[\[}~}~}~}~yzyzyzyzwxwxwxwxststststqrqrqrqropopopopklklklklijijijijeefefefebabababa`_`_`_`_^]^]^]^]\[\[\[\[}~}~}~}~yzyzyzyzwxwxwxwxststststqrqrqrqropopopopklklklklijijijijfefefefebabababa`_`_`_`_^]^]^]^]\[\[\[\[}~}~}~}~yzyzyzyzwxwxwxwxststststqrqrqrqropopopopklklklklijijijijfefefefebabababa`_`_`_`_^]^]^]^]\[\[\[\[}~}~}~}~yzyzyzyzwxwxwxwxststststqrqrqrqropopopopklklklklijijijihfefefefebabababa`_`_`_`_^]^]^]^]\[\[\[\[}~}~}~}~yzyzyzyzwxwxwxwxststststqrqrqrqropopopopklklklklghghghghfefefefebabababa`_`_`_`_^]^]^]^]\[\[\[\[}~}~}~}~yzyzyzyzwxwxwxwxststststqrqrqrqronmnmnmnklklklklghghghghfefeeeeebabababa`_`_`_`_\[\[\[\[\[\[\[\[}~}~}~}~yzyzyzyzwxwxwxwxststststqrqrqrqrmnmnmnmnklklklklghghghghefefefefbabababa`_`_`_`_\[\[\[\[\[\[\[\[}|{|{|{|yzyzyzyzwxwxwxwxststststqrqrqrqrmnmnmnmnklklklklghghghghefefefefbabababa`_`_`_`_\[\[\[\[\[\[\[\[{|{|{|{|yzyzyzyzwxwxwxwxststststqrqrqrqrmnmnmnmnklklklklghghghghefefefefbabababa`_`_`_`_\[\[\[\[\[\[\[\[{|{|{|{|yzyzyzyzwxwxwxwxststststqrqrqrqrmnmnmnmnklklklklghghghghefefefefbabababa`_`_`_`_\[\[\[\[\[\[\[\[{|{|{|{|yzyzyzyzwxwxwxwxststststqrqrqrqrmnmnmnmnklklklklghghghghefefefefbabababa`_`_`_`_\[\[\[\[\[\[\[\[{|{|{|{|yzyzyzyzwxwxwxwxststststqrqrqrqrmnmnmnmnklklklklghghghghefeeeeeebabababa`_`_`_`_\[\[\[\[\[\[\[\[{|{|{|{|yzyzyzyzwxwxwxwxststststqrqrqrqrmnmnmnmnklklklklghghghghfefefefebabababa`_`_`_`_\[\[\[\[\[\[\[\[{|{|{|{|yzyzyzyzwvuvuvuvststststqrqrqrqrmnmnmnmnklklklklghghghghdcdcdcdcbabababa`_`_`_`_\[\[\[\[\[\[\[\[{|{|{|{|yzyzyzyzuvuvuvuvststststqrqrqrqrmnmnmnmnklklklklghghghghdcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZY{|{|{|{|yzyzyzyzuvuvuvuvststststqrqrqrqrmnmnmnmnklklklklghghghghdcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZY{|{|{|{|yzyzyzyzuvuvuvuvststststqrqrqrqrmnmnmnmnklklklklghghghghdcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZY{|{|{|{|yzyzyzyzuvuvuvuvststststqrqrqrqrmnmnmnmnklklklklghghghghdcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZY{|{|{|{|yzyzyzyzuvuvuvuvststststqrqrqrqrmnmnmnmnklklklklghghghghdcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZY{|{|{|{|yzyzyzyzuvuvuvuvststststqpopopopmnmnmnmnklklklklghghghghdcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZY{|{|{|{|yzyzyzyzuvuvuvuvststststopopopopmnmnmnmnklklklklghghghghdcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>9:9:9:9:78787878343434340/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!         ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMKKKKKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>9:9:9:9:78787878343434340/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!         ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>9:9:9:9:78787878343434340/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!         - -ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>9:9:9:9:78787878343434340/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!         - - - -ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=<9:9:9:9:78787878343434340/0/0/0/.-.-.-.-,+,+,+*)('('('('&%&%&%&%"!"!"!"!         - - - -ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMKLKKKKKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<9:9:9:9:78787878343434340/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!         - - - -ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMKLKLKLKJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<9:9:9:9:78787878343434340/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!         - - - -ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<9:9:9:9:78787878343434340/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!         - - - -ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<9:9:9:9:78787878343434340/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!         - - - -ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<9:9:9:9:78787878343434340/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!         - - - -ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<9:9:9:9:78787876343434340/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%$#"!"!"!"!         - - - -ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<9:9:9:9:56565656343434340/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!         - - - -ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMIJIJIJIJGHGHGHGHEFEFEFEDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:56565656343434340/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!         - - - -ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:56565656343434340/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!         - - - -ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:56565656343434340/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!         - - - -ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:56565656343434340/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!         - - - -ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:56565656343212120/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!      - - - -ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:56565656121111120/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - -ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?>;<;<;<;<9:9:9:9:56565656121212120/0/0/0/.-.-.-,+*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - -ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>;<;<;<;<9:9:9:9:56565656121212120/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - -ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>;<;<;<;<9:9:9:9:56565656121212120/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - -ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>;<;<;<;<9:9:9:9:56565656121211110/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - -ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>;<;<;<;<9:9:9:9:56565656112121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - -ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>;<;<;<;<9:9:9:9:56565656212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - -ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPONMNMLKLKIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>;<;<;<;<9:9:9:9856565656212121210/0/0/0/,+,+,+,+*)*)*)*)('('('&%$#$#$#$#"!"!"!"! - - - -ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOLKLKKKKKIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>;<;<;<;<7878787856565656212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"! - - - -ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOKLKLKLKLIJIJIJIJGHGHGHGFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<7878787856565656212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"! - - - -XWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPOKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<7878787856565656212111110/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"! - - - -XWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPOKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<7878787856565656121212120/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"! - - - -XWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPOKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<7878787856565656121212120/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"! - - - -XWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPOKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<7878787856565656121212120/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!   - - - -XWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPOKLKKKKKKIJIJIJIJEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<7878787856565656121212120/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#         - - - -XWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPOLKLKLKLKIJIJIJIJEFEFEFEFCDCDCDCDABABABA@=>=>=>=>;<;<;<;<7878787856565656121212120/0/0/.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#         - - - -XWXWXWXWVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<787878785656565612111111.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#         - - - -XWXWXWXWVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<787878785656565621212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#         - - - -XWXWXWXWVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<787878785656565621212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#         - - - -XWXWXWXWVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<787878785656565621212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#         - - XWXWXWXWVUVUVUVURQRQRQRQPOPOPOPOLKKKKKKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<787878785656543421212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#         XWXWXWXWVUVUVUVURQRQRQRQPOPOPOPOKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;:787878783434343421212121.-.-.-.-,+,+,+,+*)*)*)('&%&%&%&%$#$#$#$#         XWXWXWXWVUVUVUVURQRQRQRQPOPOPOPOKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>9:9:9:9:787878783434343421111112.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#         XWXWXWXWVUVUVUVURQRQRQRQPOPOPOPOKLKLKLKLIJIJIJIHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>9:9:9:9:787878783434343412121212.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#         XWXWXWXWVUVUVUVURQRQRQRQPOPOPOPOKLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>9:9:9:9:787878783434343412121212.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#         XWXWXWXWVUVUVUVURQRQRQRQPOPOPOPOKLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>9:9:9:9:787878783434343412121212.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#         XWXWXWXWVUVUVUVURQRQRQRQPOPOPOPOKKKKKKLKGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>9:9:9:9:787878783434343412121212.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#         XWXWXWXWVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>9:9:9:9:787878783434343412121212.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#"!         XWXWXWXWVUVUVUVURQRQRQRQPOPOPONMLKLKLKLKGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>9:9:9:9:787878783434343411111121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!         XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKGHGHGHGHEFEFEFEFCDCDCDCB?@?@?@?@=>=>=>=>9:9:9:9:78787878343434342121210/.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!         XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>9:9:9:9:78787878343434340/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!         IIJJKKLL''(())** - QPPOONNMpqqrrsst !!""##$100//..-~~}@AABBCCD 0//..--,hhggffeeYYZZ[[\\ - - MMNNOOPP++,,--..MLLKKJJItuuvvwwx$%%&&''(-,,++**)}||{{zzyDEEFFGGH - - ,++**))(ddccbbaa]]^^__`` ~~}}QQRRSSTT//001177 - - IHHGGFFExyyzz{{|())**++,)((''&&%yxxwwvvuHIIJJKKL (''&&%%$``__^^]]aabbccdd||{{zzyyUUVVWWXX8899::;; EDDCCBBA|}}~~,--..//0%$$##""!uttssrrqLMMNNOOP$##""!! \\[[ZZYYeeffgghhxxwwvvuuYYZZ[[\\<<==>>??A@@??>>=01122334! qppoonnmPQQRRSST XXWWVVUUiijjkkllttssrrqq]]^^__``@@AABBCC=<<;;::945566778mllkkjjiTUUVVWWX - - TTSSRRQQmmnnoopp ppoonnmmaabbccddDDEEFFGG98877665899::;;<ihhggffeXYYZZ[[\ PPOONNMMqqrrsstt!!""##$$llkkjjiieeffgghhHHIIJJKK 54433221<==>>??@eddccbba\]]^^__` LLKKJJIIuuvvwwxx%%&&''((hhggffeeiijjkkllQQRRSSTT !!""##$100//..-~~}@AABBCCD a``__^^]`aabbccd - - HHGGFFEEyyzz{{||))**++,,ddccbbaammnnooppUUVVWWXX$%%&&''(-,,++**)}||{{zzyDEEFFGGH - - ]\\[[ZZYdeeffggh !DDCCBBAA}}~~--..//00``__^^]]qqrrssttYYZZ[[\\())**++,)((''&&%yxxwwvvuHIIJJKKL YXXWWVVUhiijjkkl!""##$$%@@??>>==11223344\\[[ZZYYuuvvwwxx]]^^__``,--..//0%$$##""!uttssrrqLMMNNOOPUTTSSRRQlmmnnoop%&&''(() - - <<;;::9955667788XXWWVVUUyyzz{{||aabbccdd01122334! qppoonnmPQQRRSSTQPPOONNMpqqrrsst)**++,,- 8877665599::;;<>??@@PPOONNMMnnooppqq899::;;<ihhggffeXYYZZ[[\ - - IHHGGFFExyyzz{{|1778899:00//..--~~}}AABBCCDDLLKKJJIIrrssttuu<==>>??@eddccbba\]]^^__` EDDCCBBA|}}~~:;;<<==>,,++**))||{{zzyyEEFFGGHHHHGGFFEEvvwwxxyy@AABBCCD a``__^^]`aabbccdA@@??>>=>??@@AAB !!""((''&&%%xxwwvvuuIIJJKKLLDDCCBBAA~~}}||zz{{||}}DEEFFGGH - - ]\\[[ZZYdeeffggh=<<;;::9BCCDDEEF##$$%%&&$$##""!!ttssrrqqMMNNOOPP@@??>>=={{zzyyxx~~HIIJJKKL YXXWWVVUhiijjkkl98877665FGGHHIIJ''(())** ppoonnmmQQRRSSTT<<;;::99wwvvuuttLMMNNOOPUTTSSRRQlmmnnoop 54433221JKKQQRRS++,,--..llkkjjiiUUVVWWXX88776655ssrrqqppPQQRRSSTQPPOONNMpqqrrsst !!""##$100//..-~~}STTUUVVW//001123hhggffeeYYZZ[[\\44332211oonnmmll~~}}|TUUVVWWXMLLKKJJItuuvvwwx$%%&&''(-,,++**)}||{{zzyWXXYYZZ[45677889ddccbbaa]]^^__``00//..--kkeeddcc|{{zzyyxXYYZZ[[\ - - IHHGGFFExyyzz{{|())**++,)((''&&%yxxwwvvu[\\]]^^_9::;;<<= ``__^^]]aabbccdd,,++**))bbaa``__xwwvvuut\]]^^__` EDDCCBBA|}}~~,--..//0%$$##""!uttssrrq_``aabbc=>>??@@A - - \\[[ZZYYeeffgghhHHGGFFEE((''&&%%^^]]\\[[tssrrqqp`aabbccdA@@??>>=01122334! qppoonnmcddeekklABBCCDDEXXWWVVUUiijjkkllDDCCBBAA$$##""!!ZZYYXXWWpoonnmmldeeffggh=<<;;::945566778mllkkjjilmmnnoopEFFGGHHITTSSRRQQmmnnoopp@@??>>== VVUUTTSSlkkjihgfhiijjkkl98877665899::;;<ihhggffepqqrrsstIJJKKLMNPPOONNMMqqrrsstt<<;;::99RRQQKKJJeeddccbblmmnnoop 54433221<==>>??@eddccbbatuuvvwwxOPQQRRSSLLKKJJIIuuvvwwxx88776655IIHHGGFFaa``__^^pqqrrsst !!""##$100//..-~~}@AABBCCD a``__^^]xyyzz{{|TTUUVVWW - - HHGGFFEEyyzz{{||44332211EEDDCCBB]]\\[[ZZtuuvvwwx$%%&&''(-,,++**)}||{{zzyDEEFFGGH - - ]\\[[ZZY|}}~~XXYYZZ[[ DDCCBBAA}}~~00//..-- AA@@??>>YYXXWWVVxyyzz{{|())**++,)((''&&%yxxwwvvuHIIJJKKL YXXWWVVU\\]]^^__@@??>>==,,++**)) - - ==<<;;::UUTTSSRR|}}~~,--..//0%$$##""!uttssrrqLMMNNOOPUTTSSRRQ``aabbcc<<;;::99((''&&%% - - 99887711QQPONMLK01122334! qppoonnmPQQRRSSTQPPOONNM~~}}||{ddeefghi88776655$$##""!! 00//..--KJJIIHHG45566778mllkkjjiTUUVVWWXMLLKKJJI{zzyyxxwjkkllmmn 44332211 ,,++**))GFFEEDDC899::;;<ihhggffeXYYZZ[[\ - - IHHGGFFEwvvuuttsnooppqqr!!""##$$00//..--~~}}((''&&%%CBBAA@@?<==>>??@eddccbba\]]^^__` EDDCCBBAsrrqqpporssttuuv%%&&''((,,++**))||{{zzyy$$##""!!?>>==<<;~~}@AABBCCD a``__^^]`aabbccdA@@??>>=onnmmllkvwwxxyyz))**++,,((''&&%%xxwwvvuu ;::99887}||{{zzyDEEFFGGH - - ]\\[[ZZYdeeffggh=<<;;::9keeddccbz{{||}}~--..//00$$##""!!ttssrrqq !!""##$$76543211yxxwwvvuHIIJJKKL YXXWWVVUhiijjkkl98877665baa``__^~11223344 ppoonnmm - - %%&&''((00//..--uttssrrqLMMNNOOPUTTSSRRQlmmnnoop 54433221^]]\\[[Z55667788llkkjjii))**++,, ,,++**))qppoonnmPQQRRSSTQPPOONNMpqqrrsst !!""##$100//..-ZYYXXWWV99::;;<<hhggffee--..//00 - - ((''&&%%mllkkjjiTUUVVWWXMLLKKJJItuuvvwwx$%%&&''(-,,++**)VUUTTSSR==>>??@@ddccbbaa11223344 - - $$##""!!ihhggffeXYYZZ[[\ - - IHHGGFFExyyzz{{|())**++,)((''&&%RQQKKJJI~~}}AABBCCDD ``__^^]]55667788 eddccbba\]]^^__` EDDCCBBA|}}~~,--..//0%$$##""!IHHGGFFE||{{zzyyEEFFGGHH - - \\[[ZZYY - - 99::;;<<a``__^^]`aabbccdA@@??>>=01122334! EDDCCBBAxxwwvvuuIIJJKKLLXXWWVVUU ==>>??@@]\\[[ZZYdeeffggh=<<;;::945566778A@@??>>=ttssrrqqMMNNOOPPTTSSRRQQAABBCCDD !!""YXXWWVVUhiijjkkl98877665899::;;<=<<;;::9ppoonnmmQQRRSSTTPPOONNMMEEFFGGHH##$$%%&& -UTTSSRRQlmmnnoop 54433221<==>>??@98877110llkkjjiiUUVVWWXXLLKKJJII 44332211==>>??@@ lkkjjiihUVVWWXXY LKKJJIIHuvvwwxxy%&&''((),++**))(UTTSSRRQ>>??@@AAccbbaa``^^__``aaCCBBAA@@~~^^__``aa&''(())*+**))(('{zzyyxxwFGGHHIIJ - - IHHGGFFEUTTSSRRQ!!""##$$00//..--~~}}AABBCCDDhggffeedYZZ[[\\] - - HGGFFEEDyzz{{||})**++,,-(''&&%%$QKKJJIIH~~}}||BBCCDDEE __^^]]\\bbccddee??>>==<>=MLLKKJJI))**++,,((''&&%%xxwwvvuuIIJJKKLL !!""`__^^]]\abbccdde@??>>==<12233445 DCCBBAA@wwvvuuttJJKKLLMMWWVVUUTTjjkkllmm77665544ooppqqrr23344556onnmmllkRSSTTUUV=<<;;::9IHHGGFFE--..//00$$##""!!ttssrrqqMMNNOOPP##$$%%&& -\[[ZZYYXeffgghhi<;;::99856677889@??>>==gffeeddcZ[[\\]]^ - 0//..--,A@@??>>=55667788llkkjjiiUUVVWWXX++,,--..TSSRRQQPmnnooppq !43322110=>>??@@A8771100/kkjjiihhVVWWXXYY KKJJIIHHvvwwxxyy&&''(())++**))((vvuuttss{{||}}~~>??@@AABcbbaa``_^__``aab,++**))(=<<;;::999::;;<<hhggffeeYYZZ[[\\//001177POONNMMLqrrssttu!""##$$%0//..--,~~}}|ABBCCDDE /..--,,+ggffeeddZZ[[\\]] - - GGFFEEDDzz{{||}}**++,,--''&&%%$$rrqqppooBCCDDEEF _^^]]\\[bccddeef(''&&%%$98877665==>>??@@ddccbbaa]]^^__``8899::;; LKKJJIIHuvvwwxxy%&&''((),++**))(|{{zzyyxEFFGGHHI - - +**))(('ccbbaa``^^__``aaCCBBAA@@~~..//0011##""!! nnmmllkkFGGHHIIJ - - [ZZYYXXWfgghhiij$##""!! 54433221AABBCCDD ``__^^]]aabbccdd<<==>>?? - - HGGFFEEDyzz{{||})**++,,-(''&&%%$xwwvvuutIJJKKLLM'&&%%$$#__^^]]\\bbccddee??>>==<<22334455eeddccbbJKKLLMMNWVVUUTTSjkkllmmn 100//..-EEFFGGHH - - \\[[ZZYYeeffgghh@@AABBCC DCCBBAA@}~~-..//001$##""!! tssrrqqpMNNOOPPQ#""!! [[ZZYYXXffgghhii;;::998866778899aa``__^^~~}}||{NOOPPQQRSRRQQPPOnooppqqr !!"-,,++**)IIJJKKLLXXWWVVUUiijjkkllDDEEFFGG@??>>==<12233445 poonnmmlQRRSSTTU WWVVUUTTjjkkllmm77665544::;;<<==]]\\[[ZZ{zzyyxxwRSSTTUUVONNMMLLKrssttuuv"##$$%%&)((''&&%MMNNOOPPTTSSRRQQmmnnooppHHIIJJKK<;;::99856677889lkkjjiihUVVWWXXY - - SSRRQQPPnnooppqq !!33221100>>??@@AAYYXXWWVVwvvuuttsVWWXXYYZ -KJJIIHHGvwwxxyyz&''(())* %$$##""!QQRRSSTTPPOONNMMqqrrssttQQRRSSTT877665549::;;<<=hggffeedYZZ[[\\] OONNMMLLrrssttuu""##$$%%//..--,,~~}}||BBCCDDEE UUTTSSRRsrrqqppoZ[[\\]]^ - GFFEEDDCz{{||}}~*++,,--. - - -! UUVVWWXXLLKKJJIIuuvvwwxxUUVVWWXX !43322110=>>??@@Adccbbaa`]^^__``a -KKJJIIHHvvwwxxyy&&''(())++**))(({{zzyyxxFFGGHHII - - QQKKJJIIonnmmllk^__``aabCBBAA@@?~.//00112 - YYZZ[[\\ - - HHGGFFEEyyzz{{||YYZZ[[\\!""##$$%0//..--,~~}}|ABBCCDDE `__^^]]\abbccdde - GGFFEEDDzz{{||}}**++,,--''&&%%$$wwvvuuttJJKKLLMMHHGGFFEEkjihgfeebccddeef?>>==<<;23344556]]^^__`` DDCCBBAA}}~~]]^^__``%&&''((),++**))(|{{zzyyxEFFGGHHI - - \[[ZZYYXeffgghhi !!"CCBBAA@@~~..//0011##""!! ssrrqqppNNOOPPQQDDCCBBAAddccbbaafgghhiij;::998876778899:aabbccdd@@??>>==aabbccdd)**++,,-(''&&%%$xwwvvuutIJJKKLLMXWWVVUUTijjkkllm"##$$%%& ??>>==<<22334455oonnmmllRRSSTTUU@@??>>==``__^^]]jkkllmmn76655443:;;<<==> eeffgghh<<;;::99eekkllmm-..//001$##""!! tssrrqqpMNNOOPPQTSSRRQQPmnnooppq&''(())* - - ;;::998866778899kkjjiihhVVWWXXYY <<;;::99\\[[ZZYYnooppqqr !!"3221100/>??@@AAB !!""# - - iijjkkll88776655nnooppqq12233445 poonnmmlQRRSSTTUPOONNMMLqrrssttu*++,,--. 77665544::;;<<==ggffeeddZZ[[\\]] - - 88771100XXWWVVUUrssttuuv"##$$%%&/..--,,+~~}}||{BCCDDEEF#$$%%&&' - - mmnnoopp 44332211~~}}||rrssttuu56677889lkkjjiihUVVWWXXY LKKJJIIHuvvwwxxy.//0011733221100>>??@@AAccbbaa``^^__``aa//..--,,TTSSRRQQvwwxxyyz&''(())*+**))(('{zzyyxxwFGGHHIIJ'(())**+ qqrrsstt!!""##$$00//..--{{zzyyxxvvwwxxyy9::;;<<=hggffeedYZZ[[\\] - - HGGFFEEDyzz{{||}78899::;//..--,,~~}}||BBCCDDEE __^^]]\\bbccddee++**))((PONMLKKJz{{||}}~*++,,--.'&&%%$$#wvvuuttsJKKLLMMN+,,--../uuvvwwxx%%&&''((,,++**))wwvvuuttzz{{||}}=>>??@@Adccbbaa`]^^__``a DCCBBAA@}~~;<<==>>?++**))(({{zzyyxxFFGGHHII - - [[ZZYYXXffgghhii''&&%%$$JIIHHGGF~.//00112#""!! srrqqppoNOOPPQQR/0011778yyzz{{||))**++,,((''&&%%ssrrqqpp~~ABBCCDDE `__^^]]\abbccdde@??>>==6778899:kjjiihhgVWWXXYYZ<==>>??@ 11223344 kkeeddccIJJKKLLMXWWVVUUTijjkkllm87766554GHHIIJJK(())**++oonnmmllRRSSTTUUOONNMMLLrrssttuu""##$$%%>==<<;;::;;<<==>gffeeddcZ[[\\]]^@AABBCCD !!""##$55667788bbaa``__~~}}|MNNOOPPQTSSRRQQPmnnooppq !43322110KQQRRSST,,--..//kkjjiihhVVWWXXYY KKJJIIHHvvwwxxyy&&''(()):9988776>??@@AABcbbaa``_^__``aabDEEFFGGH$%%&&''(99::;;<<^^]]\\[[|{{zzyyxQRRSSTTUPOONNMMLqrrssttu!""##$$%0//..--,~~}}|TUUVVWWX00112345ggffeeddZZ[[\\]] - - GGFFEEDDzz{{||}}**++,,-- 54321100~~}}||{BCCDDEEF _^^]]\\[bccddeefHIIJJKKQ())**++,==>>??@@ZZYYXXWWxwwvvuutUVVWWXXY LKKJJIIHuvvwwxxy%&&''((),++**))(|{{zzyyxXYYZZ[[\6778899:ccbbaa``^^__``aaCCBBAA@@~~..//0011 - - //..--,,{zzyyxxwFGGHHIIJ - - [ZZYYXXWfgghhiijQRRSSTTU,--..//0~~}}AABBCCDD VVUUTTSStssrrqqpYZZ[[\\] - - HGGFFEEDyzz{{||})**++,,-(''&&%%$xwwvvuut\]]^^__`:;;<<==> __^^]]\\bbccddee??>>==<<22334455++**))((wvvuuttsJKKLLMMNWVVUUTTSjkkllmmnUVVWWXXY01122334||{{zzyyEEFFGGHH - - RRQQKKJJpoonnmml]^^__``a DCCBBAA@}~~-..//001$##""!! tssrrqqp`aabbccd>??@@AAB - - [[ZZYYXXffgghhii;;::998866778899 - -''&&%%$$srrqqppoNOOPPQQRSRRQQPPOnooppqqrYZZ[[\\]45566778xxwwvvuuIIJJKKLLIIHHGGFFlkkjihgfabbccdde@??>>==<12233445 poonnmmldeekkllmBCCDDEEFWWVVUUTTjjkkllmm77665544::;;<<== ##""!! onnmmllkRSSTTUUVONNMMLLKrssttuuv]^^__``a899::;;>??@@AAkjjiihhgVWWXXYYZ -KJJIIHHGvwwxxyyzabbccdde<==>>??@ppoonnmmQQRRSSTTAA@@??>>aa``__^^ijjkkllm877665549::;;<<=hggffeedqrrssttuJKKLMNOPOONNMMLLrrssttuu""##$$%%//..--,,~~}}||BBCCDDEEgffeeddcZ[[\\]]^ - GFFEEDDCz{{||}}~ekkllmmn@AABBCCDllkkjjiiUUVVWWXX==<<;;::]]\\[[ZZmnnooppq !43322110=>>??@@Adccbbaa`uvvwwxxyQQRRSSTT KKJJIIHHvvwwxxyy&&''(())++**))(({{zzyyxxFFGGHHIIcbbaa``_^__``aabCBBAA@@?~nooppqqrDEEFFGGHhhggffeeYYZZ[[\\ - - 99887711YYXXWWVVqrrssttu!""##$$%0//..--,~~}}|ABBCCDDE `__^^]]\yzz{{||}UUVVWWXX - - GGFFEEDDzz{{||}}**++,,--''&&%%$$wwvvuuttJJKKLLMM !!""## _^^]]\\[bccddeef?>>==<<;rssttuuvHIIJJKKLddccbbaa]]^^__`` 00//..--UUTTSSRRuvvwwxxy%&&''((),++**))(|{{zzyyxEFFGGHHI - - \[[ZZYYX}~~YYZZ[[\\CCBBAA@@~~..//0011##""!! ssrrqqppNNOOPPQQ$$%%&&'' - - [ZZYYXXWfgghhiij;::99887vwwxxyyzLMMNNOOP``__^^]]aabbccdd,,++**))QQPONMLKyzz{{||})**++,,-(''&&%%$xwwvvuutIJJKKLLMXWWVVUUT]]^^__``??>>==<<22334455oonnmmllRRSSTTUU(())**++ WVVUUTTSjkkllmmn76655443~~}}||{z{{||}}}PQQRRSST\\[[ZZYYeeffgghh((''&&%%KJJIIHHG}~~-..//001$##""!! tssrrqqpMNNOOPPQTSSRRQQP~aabbccdd;;::998866778899kkjjiihhVVWWXXYY,,--..//SRRQQPPOnooppqqr !!"3221100/{zzyyxxw}||{{zzyTUUVVWWXXXWWVVUUiijjkkll$$##""!!GFFEEDDC12233445 poonnmmlQRRSSTTUPOONNMML~}}||{{zeefghijk77665544::;;<<==ggffeeddZZ[[\\]]00117788ONNMMLLKrssttuuv"##$$%%&/..--,,+wvvuuttsyxxwwvvuXYYZZ[[\TTSSRRQQmmnnoopp CBBAA@@?56677889lkkjjiihUVVWWXXY LKKJJIIHzyyxxwwvkllmmnno !!33221100>>??@@AAccbbaa``^^__``aa99::;;<< -KJJIIHHGvwwxxyyz&''(())*+**))(('srrqqppouttssrrq\]]^^__`PPOONNMMqqrrsstt!!""##$$?>>==<<;9::;;<<=hggffeedYZZ[[\\] - - HGGFFEEDvuuttssroppqqrrs""##$$%%//..--,,~~}}||BBCCDDEE __^^]]\\bbccddee==>>??@@ - GFFEEDDCz{{||}}~*++,,--.'&&%%$$#onnmmllkqppoonnm`aabbccdLLKKJJIIuuvvwwxx%%&&''((;::99887=>>??@@Adccbbaa`]^^__``a DCCBBAA@rqqppoonsttuuvvw&&''(())++**))(({{zzyyxxFFGGHHII - - [[ZZYYXXffgghhiiAABBCCDDCBBAA@@?~.//00112#""!! keeddccbmllkkjjideeffgghHHGGFFEEyyzz{{||))**++,, 76543211~~}}|ABBCCDDE `__^^]]\abbccdde@??>>==>==<<;23344556baa``__^ihhggffehiijjkklDDCCBBAA}}~~--..//00 - - 00//..--|{{zzyyxEFFGGHHI - - \[[ZZYYXeffgghhi<;;::998eddccbba{||}}~~..//0011##""!! ssrrqqppNNOOPPQQSSRRQQPPnnooppqqIIJJKKQQ;::998876778899:^]]\\[[Zeddccbbalmmnnoop@@??>>==11223344,,++**))xwwvvuutIJJKKLLMXWWVVUUTijjkkllm87766554a``__^^]22334455oonnmmllRRSSTTUUOONNMMLLrrssttuuRRSSTTUU76655443:;;<<==>ZYYXXWWVa``__^^]pqqrrsst<<;;::9955667788 ((''&&%%tssrrqqpMNNOOPPQTSSRRQQPmnnooppq !43322110]\\[[ZZY66778899kkjjiihhVVWWXXYY KKJJIIHHvvwwxxyyVVWWXXYY !!"3221100/>??@@AABVUUTTSSR]\\[[ZZYtuuvvwwx8877665599::;;<< - - $$##""!!poonnmmlQRRSSTTUPOONNMMLqrrssttu!""##$$%0//..--,YXXWWVVU::;;<<==ggffeeddZZ[[\\]] - - GGFFEEDDzz{{||}}ZZ[[\\]]"##$$%%&/..--,,+~~}}||{BCCDDEEF RQQKKJJIYXXWWVVUxyyzz{{||}}fpvXQJ`ےpfH~pZHAbf~HbHAf`vXQr˂pf~HbHAAJltr˂pf~HbHAZ`vXnnXv`bHAZf`vJAdfpvZp˂nvpZHAbfpvZp˂bdQZ|ZHAbfpvp˂rvpff~Hp˂rXn|ZdQnXv`rXQJ`fH~˙ے`JXnXv`rXQJ`ہdtA`JXQnXv`XQJ`ےH~ffpvXQJ`ےf`vXbtlf~HbHAf`vXQr˂pf~HbHAJltr˂pf~HbHAZ`vXnnXv`bHAZnvpJtArdfpvZp˂nvpZHAbfpvZp˂bnvpZHAbfpvp˂rvpff~Hp˂rfH~|ZdQnXv`rXQJ`fH~˙ے`JXnXv`rXQJ`۝`vX˂pZHnXv`XQJ`ےH~ffpvXQJ`ےf`vXbtlf~HJltf`vXQr˂pf~HbHAnvpAbے`f~HbHAZ`vXnnXv`bHAZnvpJtArdfpvbdQZ|nvpZHAbfpvZp˂fH~ˁJXQrfpvp˂rvpff~Hp˂r`vXn|ZdQnXv`drtfH~˙ے`JXnXv`rXQJ`f`vXH˂p`nXv`XQJ`ےH~ffpvXQJ`ےvpfbtlf~HAJltf`vXQr˂pf~HbHA~f`JXQrbtf~HbHAZ`vXnnXv`bHAZH~fJtArdfpvbdQZ|nvpZHAۅfpvZp˂vXnlJAfpvp˂rvpff~Hp˂r`vXn|ZdQnXv`drtfH~˒`JXQnXv`rXQJ`ۅvpfH|ZdQnXv`XQJ`ےH~ffpvXQJ`ےvpfbtlf~HAJltf`vXrbtlf~HbHA~f`btlf~HJlt`vXnnXv`bHAZHXnJtArdfpvbdQZ|nvpJtAdfpvZp˂vXnJtArdfpvbdQZ|vpff~Hp˂rvpfH|ZdQnXv`drtfH~˂|ZdQnXv`rXQJ`ۅf`|ZdQbnXv`drtAH~ffpvXQJ`ے~f`btlf~HAJltf`vXbtlf~HbHAvXnۉJtArf~HJlt`vXnnXv`JltvXnJtArdfpvbdQZ|nvpJtArdfpvZp˂vpfHd|ZfpvbdQZ|vpff~HdrtAJvpfH|ZdQnXv`drtfH~˂|ZdQnXv`rXQJ`~f`dQbtnXv`drtAH~ffpvltb~vbtlfHAJltf`vXbtlf~HJltvXnlJtArf~HJlt`vXnnXv`dQZ|pfے`JtArdfpvbdQZ|nvpJtArdfpvbdQZ|vp`vXd|ZfpvbdQZ|vpff~HdrtAJJXQr|ZdQnrXQJ`drtfH~˂|ZdQnXv`drtnvpdQbtnXv`drtAH~ffpvltbZHAbbtlےHAAJltf`vXbtlf~HAJltfH~JArd|f~HJlt`vXnnXv`dQtAJl`JXQJtArdZp˂bdQZ|nvpJtArdfpvbdQZ|f`vXZdQbtfpvbdQZ|vpff~HtbdQr˂p|ZdQrXQJ`ہdrtfH~˂|ZdQnXv`drtnvplJtnXv`drtAH~fr˂pfpvZ|dZHAbbtlbHAAJltf`vXbtlf~HAJltfHXArd|fHfJlt`vXnZHAbnXv`rtAJl`JXQJtArdZp˂bdQZ|nvpJtArdfpvbdQZ|nvpZdQbtpvnbdQZ|vpfے`JXQf~HtbdQrZAb|ZdQrXQJ`ہdrtfے`JX|ZdQnXv`drtfH~ˉlJArrXQJ`drtAH~fr˂pfpvZ|l璐ے`JbtlbHAAJltQr˂pbtlf~HAJltf`vX㙂|ZdQےHAZJlt`vXnZHAbnXv`tbdQZXQr˂JtArdZp˂bdQZ|ZHAbJtArdfpvbdQZ|nvpbtlp˂rbdQZ|vpfے`JXQf~H|drpZHAb|ZdQrXQJ`ہdrtے`JX|ZdQnXv`drtfH~JtArdXQJ`ےdrtAH~fr˂pfpvtAJl璐ے`JbtlbHAAJltQr˂pbtlfHAJltvpf|ZdQbHAZJlt`vXnZHAbnXv`tbdQZXQr˂JtArdZp˂bdQZ|ZHAbJtArdfpvbdQZ|`JXQHbtlp˂rbdQZ|vpfے`JXQp˂r|dtpZAb`|ZdQrXQJ`ہdrtے`JX|ZdQnrXQJ`drtAbے`JtArXQJ`ےdrtAے`JXQr˂pXQJ`ےbdQZ|JXQrbtlbHAAJltQr˂pbtlےHAAJltJXQrZdQbt琙bHAZJltr˂pZHAbbHAZdrtA˂pZHJfpvZp˂bdQZ|ZHAbJtArdZp˂bdQZ|˂pZHlJtAp˂rbdQZ|ZHAbے`JXQp˂rJltAbے`nXv`rXQJ`ہdrtے`JX|ZdQrXQJ`ہdrtAbے`rd|XQJ`ےdrtAے`JXQr˂pXQJ`ےbdQZ|JXQrf~HbHAAJltQr˂pbtlbHAAJltJXQrZdQbt琙bHAZJltr˂pZHAbbHAZdrtA˂pZHfpvZp˂bdQZ|ZHAbJtArdZp˂bdQZ|ے`lJtAp˂rbdQZ|ZHAbے`JXQp˂rdQZ|AbJXQnXv`rXQJ`ہdtAے`JX|ZdQrXQJ`ہdrtJXQrrdZQbXQJ`ےdrtAے`JXQr˂pXQJ`ےdrtAJr˂pf~HbHAJltQr˂pbtlbHAAJltpZHAtlJbHAZJltr˂pZHAےbHAZltbZHAbfpvZp˂bnvpZHAbJtArdZp˂bdQZ|bے`fpvp˂rbdQZ|ZHAb`JXQrp˂rdQZ|`ے`JXQnXv`rXQJ`۝fH˙ے`JX|ZdQrXQJ`ہdrtJXQrnXv`XQJ`ےdrtAے`JXQbtlXQJ`ےvXnr˂pf~HbHAf`vXQr˂pbtlbHAAJltp`JXf~HbHAZJltr˂pJtAdbHAZvpfHZHAbfpvZp˂nvpZHAbJtArdZp˂bdQZ|Qr˂pfpvp˂rbdQZ|ZHAb|ZdQbp˂r~f`JQr˅nXv`rXQJ`fH~˙ے`JX|ZdQrXQJ`ہdrtZHAbnXv`XQJ`ےdtAJے`JXQtlJXQJ`ےvXH~pZHAf~HbHAf`vXQr˂pbtlbHAAJltے`JXf~HbHAZltbr˂ptArdbHAZf`vbے`fpvZp˂nvpZHAbJfpvZp˂bdQZ|Qr˂pfpvp˂rnvpZHAb|ZdQbp˂rXnvJXQr˅nXv`rXQJ`fH~˙ے`JXnXv`rXQJ`ہdrtZHAXQnXv`XQJ`ےfHfے`JXQtlJtArdfpvbdQZ|vpflJtAf~HbdQZ|vpfHJtAd|fpv˂rXvpfHZHAbۅnXv`dQZ|vpfHHAbےpvn˂rXQvpfHHAbےrd|˂rXQvpfHAbے`vnXrXQQZ|dQr˂pXnvˍ|ZdQbnXv`drtAH~frd|fvnXdrtA~f`ZdQbtnXv`QJ`ے~f``JXQpvdrtAJ~f``JXQrXv`fJ`ے~f``JXQrZdQbtJ`ے~f`JXQrv`fJ`ےtAJlZHAbpfH~tlJf~HJlt`vXnZdQtArv`fJltvXnlJtf~HbHAZpvXnr˂pnXv`ltbvXn˂pZ~HfbHAZpvXn˂pZlJfrXQJvXnۉ˂pZH~HfpbHAZp˒tbnے`JXf۝`vtArdfpvbdQZ|vpfd|Z~HfpbdQZ|vpfHArd|fpv˂rXvpfHZHAbf~HdQZ|vpfHHAے`pvn˂rXQvpfHHAbےpv`ےbvpfHAbے`vnXrXQvpfHQr˂pXnvˍ|ZdQbnXv`drtAH~fdQbtvnXdrtA~f`ZdQbtnXv`QJ`ے~f``JXQfpvdrtAJ~f`JXQrbXv`fJ`ے~f``JXQr~HfpHAZp˂~f`JXQrv`fJ`ےㅐf`ZHAXQpfH~tlJf~HJlt`vXnlJtArv`ffpJltvXnlJtf~HJltvXnr˂pnXv`ltbvXntlJ~HfbHAZpvXn˂pZvnXrXQJvXnۉ˂pZH~HfpbHAZpvXnr˂pf۝`vtArdfpvbdQZ|vpfd|ZvnbdQZ|vpfHArd|fpvbdQZ|vpfHZHAbfnXdQZ|vpfHtAd|pvn˂rXQvpfHHAbےv`f`ےbvpfHAbے`vnXrXQvpfHZHAbXnvˍ|ZdQbnXv`drtAH~fdQbtdrXQJ`ۂdrtA~f`ZdQbtnXv`˂drtA~f``JXQv`fdrtAJ~f`ZdQbtXv`fJ`ے~f``JXQr~HfpHAXQJ`~f`JXQrv`fJ`ے~f``JXQpfH~tlJf~HJlt`vXn|ZdQHAZpJltvXnlJtf~HJltvXnr˂p~HfpltbvXnlJtA~HfbHAZpvXn˂pZvnXےJlvXnۉ˂pZH~HfpbHAZpvXnr˂pf۝`vtArdfpvbdQZ|vpfbtl˂rXbdQZ|vpfHArd|fpvbdQZ|vpfHZHAے`vnXdQZ|vpfHrd|pvn˂rXQvpfHHAbےHfpvtbQZdvpfHAے`vnXrXQvpfHZHAbXnvˍ|ZdQbnXv`drtAH~fJtArdQJ`ےdrtA~f`ZdQbtnXv`˂drtA~f`JXQrv`fdrtAJ~f`ZdQbtXv`fJ`ےJ~f``JXQrnXvrtAJl~f`JXQrbtv`fJ`ے~f`˂pZHpfH~tlJfHfJlt`vXn|ZdQbHAZpJltvXnlJtf~HJltvXnbtl|~HXltbvXnlJtA~HfltbvXn˂pZ`f~tbdvXnۉlJt~HfpbHAZpvXnAbے`f۝`vtArdpvnbdQZ|vpfbtl˂rXbdQZ|vpfArd|fpvbdQZ|vpfHZdQbtv`fdQZ|vpfHrd|pvndQZ|vpfHHAbےHfpvQZ|dvpfHAd|vnXrXQvpfHJXQrXnvˍ|ZdQbrXQJ`drtAH~f|ZdQbQJ`ےdrtA`JXQZdQbtnXv`˂drtA~f`lJt~HfpdrtAJ~f`ZdQbtXv`fdrtAJ~f``JXQrnXvrtAJl~f`ZdQbtv`fJ`ے~f`˂p`ZpfH~tlJےHAZJlt`vXntlJbHAZpJltr˂plJtf~HJltvXnArd|vnXltbvXnlJtA~HfltbvXn˂pZ`pvtbdvXnےlJtA~HfpbHAZpvXnQXb㉀f۝`vtArdp˂rbdQZ|vpftArd˂rXbdQZ|ZHAbArd|fpvbdQZ|vpfHZdQtAv`pvdQZ|vpfHrd|pvndQZ|vpfHHAے`nXv`QZrtAvpfHrd|vnXrXQvpfHۑpJAHrXnvˍ|ZdQbXQJ`ےdrtAH~f|ZdQbQJ`ےdrtA`JXQZdQbtnXv`˂drtA~f`rd|nrXQdrtAJ~f`ZdQbtXv`fdrtAJ~f`JXQrbf~HJlt~f`ZdQbtv`fJ`ےJl~f`󙐂ˁ`ZpfH~tlJbHAZJlt`vXntlJbHAZpJltr˂plJtfHfpJltvXnZdQbtJ`AZpltbvXnlJtA~HfltbvXntlJfpvbdQZ|vXnےlJtA~HfptbdvXnQXAHrf۝`vtArdp˂rbdQZ|vpftAdQbt˂rXbdQZ|ZHAbArd|vnbdQZ|vpfHlJtA˂rXdQZ|vpfےrd|pvndQZ|vpfHtAd|nXv`drtAvpfHrd|vnXQZ|dvpfHˁ`ZQXnvˍ|ZdQbXQJ`ےdrtAے`JXQlJtAQJ`ےdrtA`JXQZdQbtrXQJ`ۂdrtA~f`rd|QJ`ےdrtAJ`JXQrZdQbtXv`fdrtAJ~f`ZdQbtfnJlt~f`ZdQbtv`frtAJl~f`Xb㉀ۑp|drtlJbHAZJltHAbےrd|bHAZpJltr˂plJtHAZpJltvXnZdQbtdbHAZpltb˂pZlJtA~HfltbvXnlJtAXv`fbdQZ|vXnےlJtA~HfptbdvXnpJAHrQtJltArdp˂rbdQZ|`JXQrZdQbt˂rXbdQZ|ZHAbArd|˂rXbdQZ|vpfH|Zd˂rQJdQZ|HAbےrd|pvndQZ|vpfHrd|~HfrAJlvpfHrd|vnXQZ|dvpfHˁ`ZQtbAdZ|ZdQbXQJ`ےdrtA˂pZlJtAQJ`ےdrtA`JXQZdQbtQJ`ےdrtA~f`QbtlbHAdrtAJ`JXQrZdQbtXv`fdrtAJ~f`ZdQbtpvntbdQ~f`ZdQbtv`frtAJl~f`Xb㉀|drtlJbHAZJltHAbےrdt璙bHAZpJltr˂plJtbHAZpJltvXnJtArdZp˂ltb˂pZlJtAHfpltbvXnlJtAXv`fZ|dvXnےlJtA~HfptbdvXnˁ`ZQXbQtJltArdp˂rbdQZ|`JXQrlJfp˂rXbdQZ|ZHAbArd|˂rXbdQZ|vpfۙ|ZdrXQJ`dQZ|HAbےrd|vnrdQZ|vpfHrd|~HXrtAJlvpfے`rd|vnXQZ|dvpfH㉀ۑpJtbAdZ|ZdQbXQJ`ےdrtAے`vnvQJ`ےdtAJl`JXQZdQbtQJ`ےdrtA`JXQQbtlےbHAdrtAJ`JXQrZdQbtXQJ`ےdrtAJ~f`ZdQbtv`ftbdQJXQrZdQbtv`frtAJl~f`AHr󙐂|drtlJbHAZJltJXQrf~HbHAZptbr˂plJtbHAZpJltr˂p|ZdQZp˂ltb˂pZlJtAHAZpltbvXnlJtA~HfpZ|dr˂pZHlJtA~HfptbdvXnˁ`ZQXbQtJlfpvp˂rbdQZ|˂pZHAfpv˂rXnvpZHAbArd|˂rXbdQZ|ZHAbbtlrXQJdQZ|HAbےrd|˂rXQdQZ|vpfHrd|vnXAJtbAbے`rd|vnXQZ|dvpfH㉀ۑptbAdZnXv`XQJ`ےdrtAbے`nXv`QJ`ےfHf``JXQZdQbtQJ`ےdrtA`JXQJtArdbHAZpdrtAJ`JXQrZdQbtJ`ےdrtAJ~f`ZdQbtv`pvdQZ|JXQrZdQbtv`frtAJl~f``ZQXb|drf~HbHAZJltJXQrf~HbHAZpvXnr˂plJtbHAZpJltr˂p|ZdQrXQltb˂pZlJtAbHAZpltbvXnlJtAnrXQdrtAJ˂pZHlJtAHfpۑtbdvXnۀۑpJAQtJlfpvp˂rbdQZ|˂p`Jfpv˂rXvpfHZHAbArd|˂rXbdQZ|ZHAbbtlJ`ےdQZ|HAbےrd|˂rXQdQZ|vpfےrd|J`p˂ltbAbے`rd|vnrXQZ|dvpfHHr󙐂ˁtbAdZnXv`XQJ`ےdtAJXQr˂nXvf~QJ`ے~f``JXQZdQbtQJ`ےdrtA`JXQJtAdQbtbHAZpdtAJl`JXQrZdQbtJ`ےdrtAJ`JXQrZdQbtrXQJdQZ|JXQrZdQbtQJ`ےrtAJl~f``ZQXb|drf~HbHAZltbpZHAbHfpvbHAZpvXnr˂plJbHAZpJltr˂plJtrXQtbn˂pZlJtAbHAZpltb˂pZlJtA`ےbdrtAJ˂pZHlJtAHAZpˑtbdvXnۀۑpJAQtJlfpvp˂rnvpے`JnXv˂rXvpfHZHAbfpv˂rXbdQZ|ZHAbArd|J`bAZvpfHAbےrd|˂rXQdQZ|HAbےrd|HAZp˂bdQZ|Abے`rd|炀rXQQZ|dvpfHHQXb㉀tbAdZnXv`XQJ`ےfHfXQr˂`f~QJ`ے~f``JXQnXv`QJ`ےdrtA`JXQZdQbtp˂rHf``JXQrZdQbtJ`ےdrtAJ`JXQrZdQbtbHAdrtJXQrZdQbtJ`ےrtAJl~f`ۑpJAHr|drf~HbHAZ`vXnpZHAXQHfpvbHAZpvXnr˂pf~HbHAZpJltr˂plJtXQJ`ےvXn˂pZlJtAbHAZpltb˂pZlJtAZp˂AJlt˂pZHlJtAbHAZpˑtbdvXn󙐂ˁ`ZQtJlfpvp˂rvpfr˂pnXv˂rXvpfHZHAbfpv˂rXbdQZ|ZHAbArdt琙bHAZvpfHHAbےrd|˂rXQdQZ|HAbےrd|rXQJ`bdQZ|Abے`rd|炀rXQQZ|dvpfZHQXb㉀tbAdZnXv`XQJ`ےH~fZHAb`f~fpQJ`ے~f``JXQnXv`QJ`ےdtAJl`JXQlJfpp˂r~f``JXQrZdQbtJ`ےdrtAJ`JXQrZdQbtےbHAAJlJXQrZdQbtJ`ےrtAJlAbے`ۑpJAH|drf~HbHAZ`vXnے`JXQvnXbHAZpvXnr˂pf~HbHAZptbr˂pvXQJ`ےvXn˂pZlJfbHAZpltb˂pZlJtAZp˂tbn˂pZHlJtAbHAZpˑtbdJXQrf۝`vQtJlfpvp˂rvpfr˂pv`f˂rXvpfHZHAbfpv˂rXnvpZHAb~HfpېbAZvpfHHAbےpvn˂rXQdQZ|HAbےrd|rXQHAZvpfHAbے`rd|炀rXQQZ|d˂pZHXnvˍtbAdZnXv`XQJ`ےH~fZHAb~HfpQJ`ے~f``JXQnXv`QJ`ےfHf``JXQvnXrXQJ`~f``JXQrXv`fJ`ےdrtAJ`JXQrZdQbtp˂rf`JXQrZdQbtJ`ےrtAJlAbے`pfH~|drf~HbHAZ`vXn˂pZvnXJltvXnr˂pf~HbHAZpvXnr˂pv`fےbHvXn˂pZ~HfbHAZpltb˂pZlJtAXQJ`ےvXnۉ˂pZHlJtAbHAZpˑtbdJXQrf۝`vQtJlfpvp˂rvpfHAbےv`fbdQZ|vpfHZHAbfpv˂rXvpfHZHAb~HfpAZp˂vpfHHAbےpvn˂rXQdQZ|HAbےrd|bHAZvpfHAbے`rd|炀rXQQZ|dے`XnvˍtbAdZnXv`XQJ`ےH~f`JXQr~fvdrtA~f``JXQnXv`QJ`ے~f``JXQvnXHrXQJ`~f``JXQrXv`fJ`ےdtAJl`JXQrZdQbtp˂r~f`JXQrZdQbtJ`ےrtAJlJXQrpfH~|drf~HbHAZ`vXn˂p`nXv`JltvXnr˂pf~HbHAZpvXnr˂pfpvےbHvXn˂pZ~HfbHAZptbn˂pZlJtAXQJ`pvXnۉ˂pZHlJfpbHAZpˑtbdpZHAf۝`vQtJlfpvp˂rvpfJXQrbf~HbdQZ|vpfHZHAے`fpv˂rXvpfHZHAbۅnXv`AZrXQvpfHHAbےpvn˂rXQvpfHAbےrd|˂rXQvpfHAbے`vnXrXQQZ|dbے`XnvˍtbAdZnXv`XQJ`ےH~ftl|fpvdrtA~f`JXQrnXv`QJ`ے~f``JXQf~HJ`ےJ~f``JXQrXv`fJ`ےHf``JXQrZdQbtJ`ے~f`JXQrv`fJ`ےrtAJlJXQrpfH~|drf~HJlt`vXnZdQbtnXv`JltvXnbtlf~HbHAZpvXnr˂pfpvltbvXn˂pZ~HfbHAZpvXn˂pZlJtAbHAZpvXnۉ˂pZH~HfpbHAZpˑtbdp`JXf۝`vQtJlt-----------------------......................... \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv30_3.dat b/mpdf/qrcode/data/qrv30_3.dat deleted file mode 100644 index 29e3e0d..0000000 --- a/mpdf/qrcode/data/qrv30_3.dat +++ /dev/null @@ -1,273 +0,0 @@ -}~}~}~}~{|{|{|{|yzyzyzyzwvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklghghghghfefeeeeedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQPOPOPOPO}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklghghghghefefefefdcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQPOPOPOPO}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklghghghghefefefefbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQPOPOPOPO}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklghghghghefefefefbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQPOPOPOPO}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvststststqrqrqrqropopopopmnmnmnmnkjijijijghghghghefefefefbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQPOPOPOPO}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvststststqrqrqrqropopopopmnmnmnmnijijijijghghghghefefefefbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQPOPOPOPO}~}~}~}~{|{|{|{|yxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnijijijijghghghghefeeeeeebabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPO}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnijijijijghghghghfefefefebabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPO}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnijijijijghghghghdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPO}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnijijijijghghghghdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPO}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvststststqrqrqrqropopopopmlklklklijijijijghghghghdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPO}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvststststqrqrqrqropopopopklklklklijijijijghghghghdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPO}~}~}~}~{zyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopklklklklijijijijghghghghdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPO}~}~}~}~yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopklklklklijijijijghghghghdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPO}~}~}~}~yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopklklklklijijijijghghghghdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPONM}~}~}~}~yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopklklklklijijijijghghghghdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMNMNMNMNM}~}~}~}~yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqronmnmnmnklklklklijijijijghghghghdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMNMNMLKLK}~}~}~}~yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqrmnmnmnmnklklklklijijijijghghgfefdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMLKLKKKKK}|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqrmnmnmnmnklklklklijijijijefefeeeedcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMKLKLKLKL{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqrmnmnmnmnklklklklijijijijefefefefdcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMKLKLKLKL{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqrmnmnmnmnklklklklijijijijefefefefdcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMKLKLKLKL{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqrmnmnmnmnklklklklijijijijefefefefdcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMKLKLKLKL{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqpopopopmnmnmnmnklklklklijijijijefefefeedcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMKLKLKLKL{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststopopopopmnmnmnmnklklklklijijijijeeeefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMKLKKKKKK}{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststopopopopmnmnmnmnklklklklijijijijfefefefedcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLK}}}}}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststopopopopmnmnmnmnklklklklijijijijfefefefedcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLK}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststopopopopmnmnmnmnklklklklijijijijfefefefedcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLK}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststopopopopmnmnmnmnklklklklijijijijfefefefedcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLK}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvsrqrqrqropopopopmnmnmnmnklklklklijijijijfefefeeedcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMLKLKLKLK}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqropopopopmnmnmnmnklklklklijijijijeeefefefdcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMLKKKKKKL}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqropopopopmnmnmnmnklklklklijijijihefefefefdcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMKLKLKLKL}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqropopopopmnmnmnmnklklklklghghghghefefefefdcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMKLKLKLKL}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqropopopopmnmnmnmnklklklklghghghghefefefefdcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMKLKLKLKL}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqropopopopmnmnmnmnklklklklghghghghefefefefdcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMKLKLKLKL}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxutstststqrqrqrqropopopopmnmnmnmnklklklklghghghghefefeeeedcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQPOPOPOPONMNMNMNMKLKLKLKL}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxststststqrqrqrqropopopopmnmnmnmnklklklklghghghgheefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQPOPOPOPONMNMNMNMKKKKKKLK}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxststststqrqrqrqropopopopmnmnmnmnklklklklghghghghfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQPOPOPOPONMNMNMNMLKLKLKLK}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxststststqrqrqrqropopopopmnmnmnmnklklklklghghghghfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQPOPOPOPONMNMNMNMLKLKLKLK}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxststststqrqrqrqropopopopmnmnmnmnklklklklghghghghfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQPOPOPOPONMNMNMNMLKLKLKLK}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxststststqrqrqrqropopopopmnmnmnmnklklklklghghghghfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKLKLKLKLKIJIJIJIHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>9:9:9:9:7878787856565656343212120/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('&%$#$#$#$#"!"!"!"!         - - - -KKKKKLKLGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>9:9:9:9:7878787856565656121111120/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!         - - - -KLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>9:9:9:9:7878787856565656121212120/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!         - - - -KLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>9:9:9:9:7878787856565656121212120/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!         - - - -KLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=<9:9:9:9:7878787856565656121212120/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!         - - - -KLKKKKKLGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:7878787856565656121211110/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!         - - - -KLKLKLKJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:7878787856565656112121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -IJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:7878787856565656212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -IJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:7878787856565656212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -IJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:7878787856565656212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -IJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?>;<;<;<;<9:9:9:9:7878787856565656212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -IJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<9:9:9:9:7878787856565656212111110/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -IJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<9:9:9:9:7878787856565656121212120/0/0/0/.-.-.-.-,+,+,+*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - IJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<9:9:9:9:7878787856565434121212120/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         IJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<9:9:9:9:7878787834343434121212120/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         IJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<9:9:9:9:7878787834343434121212120/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         IJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABA@=>=>=>=>;<;<;<;<9:9:9:9:7878787834343434121212120/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        IJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787834343434121111110/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!     IJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787834343434212121210/0/0/0/.-.-.-,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!     - -IJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787834343434212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!     - - - -IJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787834343434212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!     - - - -IJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787834343434212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!     - - - -IJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787834343434212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!      - - - -IJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787834343434211111120/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#         - - - -IJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787834343434121212120/0/0/.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#       - - - -IJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:787878783434343412121212.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#     - - - -IJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:787878763434343412121212.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#     - - - -IJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:565656563434343412121212.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#     - - - -IJIJIJIJGHGHGHGHEFEFEFEDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:565656563434343412121212.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#"!     - - - -IJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:565656563434343411111121.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!     - - - -IJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:56565656343434342121210/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!      - - - -IJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:56565656343434340/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!         - - - -IJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9856565656343434340/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!         - - - -IJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<7878787856565656343434340/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!         - - - -IJIJIJIJGHGHGHGFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<7878787856565656343434340/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%$#"!"!"!"!         - - - -IJIJIJIJEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<7878787856565656343434340/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!         - - - -IJIJIJIJEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<7878787856565656343434340/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!         - - - -IJIJIJIJEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<7878787856565656343434340/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!         - - - -IJIJIJIJEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;:7878787856565656343434340/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!         - - - -IJIJIJIJEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>9:9:9:9:7878787856565656343434340/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!         - - - -))**++,,99887711tssrrqqp@AABBCCD100//..-pqqrrsstqppoonnm01122334A@@??>>=`aabbccd ZYYXXWWVddeefghixxwwvvuu))**++,,HHGGFFEEYYZZ[[\\IIHHGGFF--..//0000//..--poonnmmlDEEFFGGH-,,++**)tuuvvwwxmllkkjji45566778=<<;;::9deeffggh - - VUUTTSSRjkkllmmnttssrrqq--..//00DDCCBBAA]]^^__`` EEDDCCBB~~}}11223344,,++**))lkkjihgfHIIJJKKL)((''&&%xyyzz{{| - - ihhggffe899::;;<98877665hiijjkkl RQQKKJJInooppqqrppoonnmm11223344@@??>>==aabbccdd ~~}}!!""##$$AA@@??>>||{{zzyy55667788((''&&%%eeddccbbLMMNNOOP%$$##""!|}}~~ eddccbba<==>>??@54433221lmmnnoopIHHGGFFErssttuuvllkkjjii55667788<<;;::99eeffgghh - - ||{{zzyy%%&&''((==<<;;::xxwwvvuu99::;;<<$$##""!!aa``__^^PQQRRSST! a``__^^]@AABBCCD100//..-pqqrrsstEDDCCBBAvwwxxyyz - - hhggffee99::;;<<88776655iijjkkllxxwwvvuu))**++,,99887711ttssrrqq==>>??@@ ]]\\[[ZZTUUVVWWX]\\[[ZZYDEEFFGGH-,,++**)tuuvvwwx - - A@@??>>=z{{||}}~ ddccbbaa==>>??@@44332211mmnnooppttssrrqq--..//0000//..--ppoonnmmAABBCCDDYYXXWWVVXYYZZ[[\YXXWWVVUHIIJJKKL)((''&&%xyyzz{{| =<<;;::9~``__^^]]AABBCCDD00//..--qqrrssttppoonnmm11223344,,++**))llkkjjiiEEFFGGHHUUTTSSRR\]]^^__` UTTSSRRQLMMNNOOP%$$##""!|}}~~98877110\\[[ZZYYEEFFGGHH,,++**))uuvvwwxxllkkjjii55667788((''&&%%hhggffeeIIJJKKLL QQPONMLK`aabbccd ~~} !!""##$QPPOONNMPQQRRSST! 0//..--,XXWWVVUUIIJJKKLL((''&&%%yyzz{{|| - - hhggffee99::;;<<$$##""!!ddccbbaaMMNNOOPP - - KJJIIHHGdeeffggh - - }||{{zzy$%%&&''(MLLKKJJITUUVVWWX !,++**))( TTSSRRQQMMNNOOPP$$##""!!}}~~ ddccbbaa==>>??@@ ``__^^]]QQRRSSTT - - GFFEEDDChiijjkkl yxxwwvvu())**++,IHHGGFFEXYYZZ[[\!""##$$%(''&&%%$~~}}!!""##$$PPOONNMMQQRRSSTT ``__^^]]AABBCCDD\\[[ZZYYUUVVWWXXCBBAA@@?lmmnnooputtssrrq,--..//0EDDCCBBA\]]^^__`%&&''(()$##""!! ||{{zzyy%%&&''((LLKKJJIIUUVVWWXX\\[[ZZYYEEFFGGHHXXWWVVUUYYZZ[[\\?>>==<<;pqqrrsstqppoonnm01122334A@@??>>=`aabbccd ~~})**++,,- xxwwvvuu))**++,,HHGGFFEEYYZZ[[\\XXWWVVUUIIJJKKLL TTSSRRQQ]]^^__``;::99887tuuvvwwxmllkkjji45566778=<<;;::9deeffggh - - }||{{zzy-..//001ttssrrqq--..//00DDCCBBAA]]^^__`` TTSSRRQQMMNNOOPP - - PPOONNMMaabbccdd !!""76543211xyyzz{{| - - ihhggffe899::;;<98877665hiijjkkl yxxwwvvu1778899:ppoonnmm11223344@@??>>==aabbccdd ~~}}!!""##$$PPOONNMMQQRRSSTTLLKKJJIIeeffgghh##$$%%&&00//..--|}}~~ eddccbba<==>>??@54433221lmmnnooputtssrrq:;;<<==> llkkjjii55667788<<;;::99eeffgghh - - ||{{zzyy%%&&''((LLKKJJIIUUVVWWXX ~~HHGGFFEEiijjkkll''(())**,,++**))a``__^^]@AABBCCD100//..-pqqrrsstqppoonnm>??@@AAB - - hhggffee99::;;<<88776655iijjkkllxxwwvvuu))**++,,HHGGFFEEYYZZ[[\\ - - DDCCBBAAmmnnoopp++,,--..((''&&%%]\\[[ZZYDEEFFGGH-,,++**)tuuvvwwxmllkkjjiBCCDDEEFddccbbaa==>>??@@44332211mmnnooppttssrrqq--..//00DDCCBBAA]]^^__``@@??>>==qqrrsstt//001177$$##""!!YXXWWVVUHIIJJKKL)((''&&%xyyzz{{| - - ihhggffeFGGHHIIJ``__^^]]AABBCCDD00//..--qqrrssttppoonnmm11223344@@??>>==aabbccdd~~}}|<<;;::99uuvvwwxx8899::;;  UTTSSRRQLMMNNOOP%$$##""!|}}~~ eddccbbaJKKQQRRS - - \\[[ZZYYEEFFGGHH,,++**))uuvvwwxxllkkjjii55667788<<;;::99eeffgghh|{{zzyyx88776655yyzz{{||<<==>>??~~} !!""##$QPPOONNMPQQRRSST! a``__^^]STTUUVVW XXWWVVUUIIJJKKLL((''&&%%yyzz{{|| - - hhggffee99::;;<<88776655iijjkkll !!""xwwvvuut44332211}}~~@@AABBCC}||{{zzy$%%&&''(MLLKKJJITUUVVWWX]\\[[ZZYWXXYYZZ[TTSSRRQQMMNNOOPP$$##""!!}}~~ ddccbbaa==>>??@@44332211mmnnoopp##$$%%&&tssrrqqp00//..--DDEEFFGGyxxwwvvu())**++,IHHGGFFEXYYZZ[[\YXXWWVVU[\\]]^^_PPOONNMMQQRRSSTT ``__^^]]AABBCCDD00//..--qqrrsstt''(())**poonnmml,,++**))HHIIJJKK -uttssrrq,--..//0EDDCCBBA\]]^^__` UTTSSRRQ_``aabbcLLKKJJIIUUVVWWXX\\[[ZZYYEEFFGGHH,,++**))uuvvwwxx++,,--..lkkjihgf((''&&%%QQRRSSTT - qppoonnm01122334A@@??>>=`aabbccd ~~} !!""##$QPPOONNMcddeekkl !!""HHGGFFEEYYZZ[[\\XXWWVVUUIIJJKKLL((''&&%%yyzz{{||//001177eeddccbb$$##""!!~~}}||UUVVWWXXmllkkjji45566778=<<;;::9deeffggh - - }||{{zzy$%%&&''(MLLKKJJIlmmnnoop##$$%%&&DDCCBBAA]]^^__`` TTSSRRQQMMNNOOPP$$##""!!}}~~8899::;;aa``__^^ {{zzyyxxYYZZ[[\\ - - ihhggffe899::;;<98877665hiijjkkl yxxwwvvu())**++,IHHGGFFEpqqrrsst''(())**@@??>>==aabbccdd ~~}}!!""##$$PPOONNMMQQRRSSTT <<==>>??]]\\[[ZZwwvvuutt]]^^__`` eddccbba<==>>??@54433221lmmnnooputtssrrq,--..//0EDDCCBBAtuuvvwwx++,,--..<<;;::99eeffgghh - - ||{{zzyy%%&&''((LLKKJJIIUUVVWWXX@@AABBCCYYXXWWVVssrrqqppaabbccdda``__^^]@AABBCCD100//..-pqqrrsstqppoonnm01122334A@@??>>=xyyzz{{|//00112388776655iijjkkllxxwwvvuu))**++,,HHGGFFEEYYZZ[[\\DDEEFFGGUUTTSSRRoonnmmlleekkllmm]\\[[ZZYDEEFFGGH-,,++**)tuuvvwwxmllkkjji45566778=<<;;::9|}}~~4567788944332211mmnnooppttssrrqq--..//00DDCCBBAA]]^^__``~~}}||HHIIJJKKQQPONMLK kkeeddccnnooppqqYXXWWVVUHIIJJKKL)((''&&%xyyzz{{| - - ihhggffe899::;;<988776659::;;<<=00//..--qqrrssttppoonnmm11223344@@??>>==aabbccdd {{zzyyxxQQRRSSTTKJJIIHHG - - bbaa``__rrssttuu UTTSSRRQLMMNNOOP%$$##""!|}}~~ eddccbba<==>>??@54433221=>>??@@A,,++**))uuvvwwxxllkkjjii55667788<<;;::99eeffgghh - - wwvvuuttUUVVWWXXGFFEEDDC - - ^^]]\\[[vvwwxxyy !!""##$QPPOONNMPQQRRSST! a``__^^]@AABBCCD100//..-~~}}||{ABBCCDDE((''&&%%yyzz{{|| - - hhggffee99::;;<<88776655iijjkkllssrrqqppYYZZ[[\\CBBAA@@? ZZYYXXWWzz{{||}}$%%&&''(MLLKKJJITUUVVWWX]\\[[ZZYDEEFFGGH-,,++**){zzyyxxwEFFGGHHI$$##""!!}}~~ ddccbbaa==>>??@@44332211mmnnooppoonnmmll]]^^__``?>>==<<;VVUUTTSS~~())**++,IHHGGFFEXYYZZ[[\YXXWWVVUHIIJJKKL)((''&&%wvvuuttsIJJKKLMN ``__^^]]AABBCCDD00//..--qqrrssttkkeeddccaabbccdd;::99887RRQQKKJJ,--..//0EDDCCBBA\]]^^__` UTTSSRRQLMMNNOOP%$$##""!srrqqppoOPQQRRSS\\[[ZZYYEEFFGGHH,,++**))uuvvwwxxbbaa``__eekkllmm76543211IIHHGGFF01122334A@@??>>=`aabbccd ~~} !!""##$QPPOONNMPQQRRSST! onnmmllkTTUUVVWWXXWWVVUUIIJJKKLL((''&&%%yyzz{{|| - - ^^]]\\[[nnooppqq00//..-- EEDDCCBB~~}}|45566778=<<;;::9deeffggh - - }||{{zzy$%%&&''(MLLKKJJITUUVVWWXkeeddccbXXYYZZ[[ TTSSRRQQMMNNOOPP$$##""!!}}~~ ZZYYXXWWrrssttuu,,++**))!!""##$$AA@@??>>|{{zzyyx899::;;<98877665hiijjkkl yxxwwvvu())**++,IHHGGFFEXYYZZ[[\baa``__^\\]]^^__ ~~}}!!""##$$PPOONNMMQQRRSSTT VVUUTTSSvvwwxxyy((''&&%%%%&&''((==<<;;::xwwvvuut<==>>??@54433221lmmnnooputtssrrq,--..//0EDDCCBBA\]]^^__`^]]\\[[Z``aabbcc - - ||{{zzyy%%&&''((LLKKJJIIUUVVWWXXRRQQKKJJzz{{||}}$$##""!! \[[ZZYYXEFFGGHHI,++**))(uvvwwxxy lkkjjiihCDDEEFFGccbbaa``>>??@@AA33221100nnooppqqssrrqqpp..//0011CCBBAA@@^^__``aaBAA@@??>fgghhiij - - {zzyyxxw&''(())*KJJIIHHGVWWXXYYZ54433221XWWVVUUTIJJKKLLM(''&&%%$yzz{{||} - - hggffeedGHHIIJJK __^^]]\\BBCCDDEE//..--,,rrssttuuoonnmmll22334455??>>==<==<<;;:jkkllmmnwvvuutts*++,,--.GFFEEDDCZ[[\\]]^100//..- !TSSRRQQPMNNOOPPQ$##""!! }~~ dccbbaa`KQQRRSST - - [[ZZYYXXFFGGHHII++**))((vvwwxxyy kkjjiihh66778899;;::9988ffgghhii:9988776nooppqqrsrrqqppo.//00112CBBAA@@?^__``aab !!""#-,,++**)~~}}|!""##$$%POONNMMLQRRSSTTU `__^^]]\TUUVVWWX WWVVUUTTJJKKLLMM''&&%%$$zz{{||}} - - ggffeedd::;;<<==77665544jjkkllmm !!""##54321100rssttuuvonnmmllk23344556?>>==<<;bccddeef#$$%%&&')((''&&% -|{{zzyyx%&&''(()LKKJJIIHUVVWWXXY\[[ZZYYXXYYZZ[[\SSRRQQPPNNOOPPQQ##""!! ~~ccbbaa``>>??@@AA33221100nnooppqq$$%%&&''//..--,,vwwxxyyz -kjjiihhg6778899:;::99887fgghhiij'(())**+%$$##""! - xwwvvuut)**++,,-HGGFFEEDYZZ[[\\]XWWVVUUT\]]^^__`OONNMMLLRRSSTTUU__^^]]\\BBCCDDEE//..--,,rrssttuu(())**++++**))((z{{||}}~ - gffeeddc:;;<<==>76655443jkkllmmn+,,--../! tssrrqqp-..//001DCCBBAA@]^^__``a !TSSRRQQP`aabbccdKKJJIIHHVVWWXXYY[[ZZYYXXFFGGHHII++**))((vvwwxxyy,,--..//''&&%%$$~cbbaa``_>??@@AAB3221100/nooppqqr/0011778poonnmml12233445@??>>==>??@ - - hggffeed9::;;<<=87766554ijjkkllmxwwvvuut)**++,,-HGGFFEEDqrrssttu(())**++??>>==<>??@@WVVUUTTSJKKLLMMN'&&%%$$#z{{||}}~@AABBCCD dccbbaa`=>>??@@A43322110mnnooppqtssrrqqp-..//001DCCBBAA@uvvwwxxy,,--..//;;::9988ffgghhii - - {{zzyyxx&&''(())KKJJIIHHVVWWXXYYAABBCCDD !!"SRRQQPPONOOPPQQR#""!! ~DEEFFGGH - - `__^^]]\ABBCCDDE0//..--,qrrssttupoonnmml12233445@??>>==//..--,,rrssttuuoonnmmll22334455??>>==<>??@@A43322110~>??@@AAB++**))((vvwwxxyy kkjjiihh66778899;;::9988ffgghhii - - vvuuttssVVWWXXYYsrrqqppo.//00112CBBAA@@?^__``aab{zzyyxxwYZZ[[\\]!""##$$%POONNMMLQRRSSTTU `__^^]]\ABBCCDDE0//..--,~}}||{{zBCCDDEEF''&&%%$$zz{{||}} - - ggffeedd::;;<<==77665544jjkkllmmrrqqppooZZ[[\\]]onnmmllk23344556?>>==<<;bccddeef wvvuutts]^^__``a%&&''(()LKKJJIIHUVVWWXXY\[[ZZYYXEFFGGHHI,++**))(zyyxxwwvFGGHHIIJ##""!! ~~ccbbaa``>>??@@AA33221100nnooppqqnnmmllkk^^__``aa -kjjiihhg6778899:;::99887fgghhiij - - srrqqppoabbccdde )**++,,-HGGFFEEDYZZ[[\\]XWWVVUUTIJJKKLLM(''&&%%$vuuttssrJKKLMNOP__^^]]\\BBCCDDEE//..--,,rrssttuueeddccbbbbccddee - gffeeddc:;;<<==>76655443jkkllmmnonnmmllkekkllmmn !!""##$-..//001DCCBBAA@]^^__``a !TSSRRQQPMNNOOPPQ$##""!! rqqppoonQQRRSSTT[[ZZYYXXFFGGHHII++**))((vvwwxxyy aa``__^^kkllmmnncbbaa``_>??@@AAB3221100/nooppqqrkeeddccbnooppqqr$%%&&''(12233445@??>>==>??@@A43322110mnnooppqtssrrqqp-..//001DCCBBAA@]^^__``a]\\[[ZZYaabbccdd - - {{zzyyxx&&''(())KKJJIIHHVVWWXXYYQQKKJJII{{||}}~~ !!"SRRQQPPONOOPPQQR#""!! ~VUUTTSSR}||{{zzy45566778ABBCCDDE0//..--,qrrssttupoonnmml12233445@??>>==>??@IJJKKLLM(''&&%%$yzz{{||} - - hggffeed9::;;<<=87766554ijjkkllmQKKJJIIHoppqqrrsoonnmmll22334455??>>==<>==*++,,--.GFFEEDDCZ[[\\]]^EDDCCBBAqppoonnm@AABBCCDMNNOOPPQ$##""!! }~~ dccbbaa`=>>??@@A43322110mnnooppqHGGFFEEDsttuuvvw kkjjiihh66778899;;::9988ffgghhii - - {{zzyyxx&&''(())<<;;::99~~}}||{.//00112CBBAA@@?^__``aab !!"A@@??>>=mllkkjjiDEEFFGGHQRRSSTTU `__^^]]\ABBCCDDE0//..--,qrrssttu DCCBBAA@wxxyyzz{ - - ggffeedd::;;<<==77665544jjkkllmmwwvvuutt**++,,--88771100{zzyyxxw23344556?>>==<<;bccddeef ~~}}||{"##$$%%&=<<;;::9ihhggffeHIIJJKKLUVVWWXXY\[[ZZYYXEFFGGHHI,++**))(uvvwwxxy - - @??>>==<{||}}~~ccbbaa``>>??@@AA33221100nnooppqqssrrqqpp..//0011//..--,,wvvuutts6778899:;::99887fgghhiij - - {zzyyxxw&''(())*98877110eddccbbaLMMNNOOPYZZ[[\\]XWWVVUUTIJJKKLLM(''&&%%$yzz{{||} <;;::998__^^]]\\BBCCDDEE//..--,,rrssttuuoonnmmll22334455++**))((srrqqppo:;;<<==>76655443jkkllmmnwvvuutts*++,,--.0//..--,a``__^^]PQQRRSST]^^__``a !TSSRRQQPMNNOOPPQ$##""!! }~~8771100/[[ZZYYXXFFGGHHII++**))((vvwwxxyy kkjjiihh66778899''&&%%$$onnmmllk>??@@AAB3221100/nooppqqrsrrqqppo.//00112,++**))(]\\[[ZZYTUUVVWWXabbccdde ~~}}|!""##$$%POONNMMLQRRSSTTU /..--,,+WWVVUUTTJJKKLLMM''&&%%$$zz{{||}} - - ggffeedd::;;<<==##""!! kjihgfeeBCCDDEEF/..--,,+rssttuuvonnmmllk23344556(''&&%%$YXXWWVVUXYYZZ[[\effgghhi - - |{{zzyyx%&&''(()LKKJJIIHUVVWWXXY !!"+**))((' !!SSRRQQPPNNOOPPQQ##""!! ~~ccbbaa``>>??@@AAddccbbaaFGGHHIIJ+**))(('vwwxxyyz -kjjiihhg6778899:$##""!! UTTSSRRQ\]]^^__`ijjkkllmxwwvvuut)**++,,-HGGFFEEDYZZ[[\\]"##$$%%&'&&%%$$#~~}}||""##$$%%OONNMMLLRRSSTTUU__^^]]\\BBCCDDEE``__^^]]JKKLLMMN'&&%%$$#z{{||}}~ - gffeeddc:;;<<==> QPPOONNM`aabbccdmnnooppqtssrrqqp-..//001DCCBBAA@]^^__``a&''(())*#""!! {{zzyyxx&&''(())KKJJIIHHVVWWXXYY[[ZZYYXXFFGGHHII\\[[ZZYYNOOPPQQR#""!! ~cbbaa``_>??@@AABMLLKKJJIdeeffgghqrrssttupoonnmml12233445@??>>==>==<>=pqqrrsst}~~ dccbbaa`=>>??@@A43322110mnnooppqtssrrqqp;<<==>>? -kkjjiihh66778899;;::9988ffgghhii - - {{zzyyxx&&''(())KKJJIIHHVVWWXXYY - -JIIHHGGF^__``aab !!"SRRQQPPONOOPPQQR - =<<;;::9tuuvvwwx`__^^]]\ABBCCDDE0//..--,qrrssttupoonnmml?@@AABBC - ggffeedd::;;<<==77665544jjkkllmmwwvvuutt**++,,--GGFFEEDDZZ[[\\]] FEEDDCCBbccddeef ~~}}||{"##$$%%&ONNMMLLKRSSTTUUV98877665xyyzz{{||}}fpvbHAZ|dtZHAbJtArdnXv`bHAbnvpے`JXbtlfpvrXQJ`AJltbے`JtArfHfbdQZ|H~fr˂ptArdnXv`JltvpfXQr˂nXv`p˂rbdQZ|`JXQ|ZdQf~HZp˂fHQr˂pJtArdnXv`bHAbdQZ|JXQrZdQbtpvndrtA`vXnZHAb|ZdQbf~HbdQZ|H~fpZHAbf~HXQJ`ےdrtArZAbbtlfpvrXQJ`f`vXZHAb|ZdQf~HZp˂dtAp`JXlJtArXQJ`Jltvpfے`JXQtlJfpvdrtA`vXnے`JfpvbHAZJltے`JJtArdnXv`bHAnvpے`JXbtlfpvrXQJ`JltQr˂prd|ےHAZbdQZ|H~fr˂ptArdnXv`JltvpfXQr˂nXv`p˂rbdQZ|XQr˂|ZdQf~HZp˂fH~Qr˂pJtArdnXv`bHAbnvpZHAbZdQbtp˂rdrtA`vXnZHAb|ZdQbfHfbdQZ|H~fpZHAXQf~HXQJ`ےdrtApZHAbbtlfpvrXQJ`f`vXZHAb|ZdQf~HZp˂`vXے`JXlJtAXQJ`ےJltvpfے`JXQtlJpvndrtA`vXnr˂pfpvbHAZdQZ|ے`JJtArdnXv`Jltnvpے`JXbtlfpvrXQJ`nvpQr˂prdZQbbHAZbdQZ|H~fr˂ptArdrXQJ`JltvpfZHAbnXv`p˂rdrtAJXQr˂|ZdQf~HbdQZ|fH~Qr˂pJtArdnXv`bHAfH~ˑZHAXQtlJp˂rdrtA`vXnZHAb|ZdQbےHAZbdQZ|H~fے`JXQf~HXQJ`ےltbpZAb`btlfpvdrtf`vXZHAb|ZdQf~HZp˂f`vXHr˂pfpvXQJ`ےJltvpfے`JXQtlJp˂rdrtA`vXnr˂pfpvbHAZdQZ|`JXQrJtArdnXv`AJltnvpے`JXbtlfpvrXQJ`ۅ~f`ZHAbnXv`bHAZbdQZ|H~fr˂ptArdXQJ`ےJltvpfZHAbnXv`p˂rvXn˂pZH|ZdQfHbdQZ|fH~Qr˂pJtArdnXv`JltvXn`JXQf~Hp˂rdrtA`vXnZHAb|ZdQbbHAZbdQZ|H~f˂pZf~HXQJ`ےvpfHAbے`btlfpvdrtf`vXZHAb|ZdQf~HbdQZ|vpfHr˂pfpvXQJ`ےJltvpfے`JXQtlJp˂rdrtA`vXnHAbےfpvbHAZ~f`JXQrJtArdnrXQJ`AJltnvpے`JXbtlfpvdrt~f`ZHAbnXv`bHAZbdQZ|H~fr˂pfpvXQJ`ےJltvpf`JXQrnXv`p˂rvXH~˂pZH|ZdQےHAbdQZ|fH~Qr˂pJtArdnXv`AJltvXn˂pZHf~Hp˂rdrtA`vXnZHAbnXv`bHAZbdQZ|H~f˂p`f~HXQJ`ےf`vAbJXQbtlZp˂drtf`vXZHAb|ZdQfHbdQZ|f`Abے`fpvXQJ`ےJltvpfے`JXQf~Hp˂rdrtA`vXnJXQrbfpvbHAZXnvr˂pJtArdrXQJ`AJltnvpے`JXbtlfpvdrtvXnہJXQrnXv`bHAZbdQZ|H~fr˂pfpvXQJ`ےJltvpftl|rdtnXv`p˂rpfH~ZHAb|ZdQbHAbdQZ|fH~Qr˂pJtArdnrXQJ`AJltvpfH˂p`f~Hp˂rdrtA`vXnZHAےnXv`bHAZbdQZ|H~fZdQbtlJfpf~HXQJ`ےf`vے`JXQbtlZp˂drtf`vXZHAb|ZdQےHAbdQZ|~f`JXQrbtfpvXQJ`ےJltvpf`JXQrf~Hp˂rdrtA`vXnlJtAvnvfpvbHAZXnr˂pJfpvrXQJ`AJltnvpے`JXbtlZp˂drtvXnۉlJAnXv`bHAZbdQZ|H~fbtlfpvXQJ`ےJltvpfrd|f~HnXv`p˂rf`vXZHAbnXv`bHAbdQZ|fH~Qr˂pJtArdrXQJ`AJltvp`vX|ZdQf~Hp˂rdrtA`vXnJtAdnXv`bHAZbdQZ|H~fZdQtArfpvf~HXQJ`ےnvpJQrˍf~HZp˂drtf`vXZHAb|ZdQbHAbdQZ|nvpbtlfpvXQJ`ےJltvpf|ZdQbf~Hp˂rdrtA`vXnd|ZnXv`fpvbHAZfH~pZHAfpvrXQJ`AJltnvpے`JXbtlZp˂drtfH~JtArdnXv`bHAZbdQZ|H~ftlJfpvXQJ`ےJltvpfdQbtf~HnXv`p˂rf`vXbے`nXv`bHAbdQZ|fH~Qr˂pJfpvrXQJ`AJltf`vX|ZdQbf~Hp˂rdrtA`vXntArdnXv`bHAZbdQZ|H~flJtArfpvf~HXQJ`ےnvpJXQrˍf~HZp˂drtf`vXZHAbnXv`bHAbdQZ|nvpJtArfpvXQJ`ےJltvpf|ZdQbf~Hp˂rdrtA`vXnd|ZnXvf~fpvJlt`vXnpZHAbfpvrXQJ`AJltnvpے`JXf~HZp˂drtfHXd|ZnXv`bHAZbdQZ|ے`JXQtlJfpvXQJ`ےJltvpfdQbtdHfpvnXv`drtAJvpfJAdnXv`bHAbdQZ|fH~Qr˂pfpvrXQJ`AJltnvpdQbtf~Hp˂rdrtAr˂ptArdnXv`bHAZbdQZ|H~f|ZdQnXvf~HltbH~f|ZdQf~HZp˂drtf`vXZHAۅnXv`bHAbdQZ|fH~lJtArfpvXQJ`ےJltZHAb|ZdQbf~Hp˂rdrtA`vXnbtl`f~fpvdQZ|`vXnbtlfpvrXQJ`AJltnvp`JXQf~HZp˂drtf`vXd|ZnXv`bHAZbdQZ|ے`JXQtlJfpvXQJ`ےJltvpfJtArdHfpvnXv`drtAJvpfJtArdnXv`bHAbdQZ|fH~rbtlfpvrXQJ`AJltnvpdQbtf~Hp˂rdtAJr˂ptArdnXv`bHAZbdQZ|ے`JXQ|ZdQnXvf~HltbHXn|ZdQf~HZp˂drtf`vXJtAdnXv`bHAbdQZ|fH~JArd|fpvXQJ`ےltbZHAb|ZdQbf~Hp˂rdrtAHAbےbtl`f~fpfpvdQtAJlvpfHbtlfpvrXQJ`AJltnvp|ZdQf~HZp˂drtvpfہZdQbtnXv`bHAZnvpے`JXQtlJfpvXQJ`ےJlt`JXQr|ZdQbvnXnXv`tbdQ~f`JtArdnXv`bHAbdQZ|fH~btlfpvrXQJ`AJlt`JXQHlJtf~Hp˂rfHfr˂ptArdnXv`bHAZbdQZ|˂pZtlJv`fp˂rZ|dvXn|ZdQf~HZp˂drtf`vXJtArdnXv`bHAbdQZ|Abے`Ard|fpvXQJ`ے`vXnZHAb|ZdQbf~Hp˂rdtAJHAbےtArd~HfpXQJ`ےrtAJlvpfHbtlfpvrXQJ`AJltnvp|ZdQf~HZp˂drtJXQrZdQbtnXv`bHAZvpfے`JXQtlJfpvXQJ`ےltb`JXQr|ZdQbvnXbHAZtbdQ~vJtArdnXv`bHAbdQZ|fے`JXbtlfpvrXQJ`AJlt˂pZHlJArf~Hp˂rH~fr˂ptArdnXv`bHAZnvpے`tlJv`fp˂rZ|lpfے`|ZdQf~HZp˂drtQr˂pJtArdnXv`bHAbdQZ|Abے`|ZdQfpvXQJ`ے`vXnZHAb|ZdQbf~Hp˂rfHfJXQrtAdQbt~fvXQJ`ےtbdQZJXQrbtlfpvrXQJ`AJltZHAb|ZdQf~HZp˂drtJXQrbtlnXv`Jltvpfے`JXQtlJfpvXQJ`ے`vXn˂pZHAlJtAnXv`bHAZ|drZHAbJtArdnXv`bHAbdQZ|ے`JXbtlfpvrXQJ`AJltے`JtArdf~HbdQZ|H~fr˂ptArdnXv`bHAZvpfbے`rd|f~Hp˂rtAJl璒`JXQ|ZdQf~HZp˂dtAQr˂pJtArdnXv`bHAbdQZ|JXQr|ZdQfpvdrtA`vXnZHAb|ZdQbf~Hp˂rH~fJXQrZdQbtfpvXQJ`ےtbdQZr˂pbtlfpvrXQJ`JltZHAb|ZdQf~HZp˂drtpZHAbtlnXv`Jltvpfے`JXQtlJfpvXQJ`ے`vXn˂p`JlJtAnXv`f~HQJ`ےvXnZHAbہZdQbtf~H˂rXfHf`r˂p|ZdnrXQltbvpfH`JXQrlJtAvnrdrtAJvXnHAbےZdQbt`ےbrtAJl~f`˂pZHvnXJ`ےtbdvpfH󙐂ˁ`Zf۝`vfvnXJltvpfH`JXQlJtfpvQJ`ےvXnZHAbQbtlJ`AZpdQZ|~f`˂pZrd|XQJ`ےltbvpfH`JXQrlJtAHAZp˂tbdQvXnAے`v`fbHAZpQZ|d~f`QXAHrXnvˍv`fbdQZ|~f`r˂pArd|nXv`˙bHAZpvpfH`JXQ|ZdQ˂rXdrtAJvXnHAbےZdQbtHAZpdQZ|~f`˂pZrd|bHAZ|drvpfHJXQrbt~HfprXQrtAJlvXnېˁ`ZQpfH~~HfpۂdrtAvXnZHAbہZdQbtf~H˂rX~f`r˂pbtlQJ`ےltbvpfH`JXQrlJtA˂rXQdrtAJvXnHAbےZdQbtZp˂AJtb~f`lJtvnXJ`ےtbdvpfHXb㉀ۑf۝`vvnXJltvpfH`JXQlJtfpvQJ`ےvXnZHAbJtArdbHAZpdQZ|~f`˂pZrd|J`ےltbvpfH`JXQrlJtArXQJ`dQZ|vXnAd|v`fbHAZpQZ|d~f`pJAHrXnvˍv`ffpbdQZ|~f`r˂pArd|nXv`JltvpfH`JXQ|ZdQ˂rQJdrtAJvXnHAbےZdQbtbHAZpdQZ|~f`˂pZrd|ےbHAdrtAJvpfHZdQbt~HfprXQrtAJlvXnېˁ`ZQpfH~ㅝvndrtAvXnZHAbہZdQbtf~HbdQZ|~f`r˂pbtlbHAltbvpfH`JXQrlJf˂rXQdrtAJvXnHAbےZdQbtZp˂ltb~f`lJtAvnXJ`ےtbdvpfHXb㉀f۝`vrXQJ`JltvpfH`JXQlJtfpvdrtAvXnZHAbJtAdQbtZp˂dQZ|~f`˂pZpvnJ`ےltbvpfH`JXQrlJtArXQHAZdQZ|vXnrd|v`fbHAZpQZ|d~f`ˁ`ZQXbXnvˍHAZpbdQZ|~f`r˂pArd|nXv`JltvpfH`JXQlJtrXQJ`drtAJvXnHAbےXv`fbHAZpdQZ|~f`˂pZrd|p˂rdrtAJvpfے`ZdQbt~HfprXQrtAJlvXn㉀ۑpJpfH~ㅑ˂rXdrtAvXnZHAbہZdQbtfHfpbdQZ|~f`r˂pArd|ےbHAltbvpfH`JXQr~Hf˂rXQdrtAJvXnHAbےZdQbtXQJ`ےbdQZ|JXQrlJtAvnXJ`ےtbdvpfHAHr󙐂f۝`vQJ`ےJltvpfH`JXQlJtvndrtAvXnZHAbہZdQbtZp˂dQZ|~f`˂pZpvnJ`ےltbvpfH`JXQrlJfbHAZdrt˂pZHrd|v`fbHAZpQZ|d~f`ˁ`ZQXbXnvˍbHAZpbdQZ|~f`r˂pArd|rXQJ`JltvpfH`JXQlJtrXQJdrtAJvXnHAے`Xv`fbHAZpdQZ|~f`˂pZpvp˂rAJltAbے`ZdQbt~HfprXQrtAJlvXn㉀ۑpp|dr˂rXdrtAvXnZHAbہZdQbtHAZpbdQZ|~f`r˂pArdtbHAZpltbvpfHJXQrb~Hf˂rXQdrtAJvXnHAbے~HfpXQJ`pbdQZ|JXQrlJtAvnXJ`ےtbdvpfZH`ZQXbQtJlQJ`ےJltvpfH`JXQlJt˂rXdrtAvXnZHAbےlJfprXQdQZ|~f`tlJpvnJ`ےltbvpfH`JXQrvnX˂rXQAJl˂pZHrd|v`fbHAZpQZ|dAbے`ۑpJAtbAdZbHAZpbdQZ|~f`r˂pArd|QJ`ےJltvpfH`JXQvJ`ےdrtAJvXntAd|Xv`fbHAZpdQZ|~f`˂pZv`fJ`ےtbnAbے`ZdQbt~HfprXQrtAJlJXQrHr󙐂ˁ|dr˂rXdrtAvXnZHAbہZdQbtbHAZpbdQZ|~f`r˂p~HfpbHAZpltbvpfHZdQbt~Hf˂rXQdrtAJvXnHAے`~HfpbHAZpvpfHJXQrlJtAvnXJ`ےtbd˂pZH`ZQXbQtJlQJ`ےJltvpfH`JXQlJ˂rXdrtAvXnZHAbvnXrXQdQZ|~f`lJtApvnJ`ےltbvpfHJXQrbvnX˂rXQf`˂pZHrd|v`fbHAZpQZ|dAbے`ۑpJAtbAdZbHAZpbdQZ|~f`r˂pfpvQJ`ےJltvpfH`JXQv`fJ`bAZdrtAJvXnrd|Xv`fbHAZpdQZ|~f`tlJHfpvJ`ےvXnAbے`ZdQbt~HfprXQtAJlJXQrHQXb㉀|dr˂rXdrtAvXnZHAbnXv`˙bHAZpbdQZ|~f`r˂p~Hfpp˂rltbvpfےZdQbt~Hf˂rXQdrtAJvXntAd|nXvrXQJvpfHJXQrlJtAvnXJ`ےtbnے`ۑpJAHrQtJlQJ`ےJltvpfH`JXQf~H˂rXdrtAvXnZHAbvnXHXQJ`ےdQZ|`JXQrlJtApvnJ`ےltbvpfHZdQbt`f~`ےb~f`˂pZHrd|v`fbHAZp˅vpfHJXQr󙐂ˁ`ZtbAdZbHAZpbdQZ|~f`r˂pfpvQJ`ےJltvpfH`JXQfpvbHAZdrtAJ˂pZrd|Xv`fbHAZpdQZ|~f`lJtAHfpvHAZp˂vXnAbے`ZdQbt~HfprXQf`pZHAQXb㉀|dr˂rXdrtAvXnZHAے`nXv`˙bHAZpbdQZ|~f`r˂pnXv`p˂rltbHAbےZdQbt~Hf˂rXQdrtAJvXnrd|nXvrXQJvpfHJXQrlJtAvnXJ`ےvXnbے`ۑpJAHQtJlQJ`ےJltvpfHJXQrf~H˂rXdrtAvXnZHAbۍf~HXQJ`ےdQZ|`JXQrlJtApvnJ`ےltbvpfےZdQbt`pv`ےb~f`˂pZHrd|v`fbHAZpvpfHJXQrːf۝`vtbAdZbHAZpbdQZ|~f`btlfpvQJ`ےJltvpfH`JXQfpvbAZdtAJl˂pZrd|Xv`fbHAZpdQZ|`JXQrlJtAnXv`HAXQJ`vXnAbے`ZdQbt~HfprXQ~f`p`JXXnvˍ|dr˂rXdrtAvXnJtAd|nXv`˙bHAZpbdQZ|~f`r˂pnXv`rXQJ`tbnHAbےZdQbt~Hf˂rXQdrtAJ˂pZrd|f~HےJlvpfHJXQrlJtAvnXJ`ےJlvXnQr˂ppfH~QtJlQJ`ےJltvpfHZdQbtf~H˂rXdrtAvXnZHAے`pvےbHvpf`JXQrlJtApvnJ`ےltbHAbےZdQbtfpvtbQZd~f`˂pZHrd|v`ftbdvpfHZHAbf۝`vtbAdZbHAZpbdQZ|~f`lJtfpvQJ`ےJltvpfHJXQrnXv`AZp˂Hf`˂pZrd|Xv`fbHAZpdQZ|`JXQrlJtAnXv`rtAJlvXnAbے`ZdQbt~HfpQZ|d~f`ے`JXXnvˍ|dr˂rXdrtAvXnArd|nXv`˙bHAZpbdQZ|~f`btl|f~HrXQJ`vXnHAbےZdQbt~Hf˂rXQdtAJl˂pZrd|fntbdvpfHJXQrlJtAvnXrtAJlvXnQr˂ppfH~QtJlQJ`ےJltvpfہZdQbtf~H˂rXdrtAvXnZdQbtfpvےbHvpfH`JXQrlJtApvnJ`ےtbnHAbےZdQbtXv`fQZ|d~f`˂pZHrd|v`ftbdvpfHZHAXQf۝`vtbAdZbHAZpbdQZ|`JXQlJtfpvQJ`ےJltvpfHlJtnXv`AZrXQ~f`˂pZrd|Xv`fbHAZpvpf`JXQrlJtA~HfrtAJlvXnAbے`ZdQbtHfpQZ|d~f`r˂pXnvˍ|dr˂rXdrtAr˂pArd|nXv`˙bHAZpbdQZ|~f`Ard|fnXJ`ےJvXnHAbےZdQbt~Hf˂rXQHf`˂pZrd|pvntbdvpfHJXQrlJtAvnrXrtAJlvXnZHAbpfH~QtJlQJ`ےJltZHAbہZdQbtf~H˂rXdrtAvXnZdQtAv`fltbvpfH`JXQrlJtApvnJ`ےvXnHAbےZdQbtXv`fQZrtA~f`˂pZHrd|QJ`ےtbdvpfH`JXQf۝`vtbAdZbHAZpbdQZ|`JXQlJtfpvQJ`ےJltvpfrd|~HfpdQZ|~f`˂pZrd|Xv`fbHAZpvpfH`JXQrlJtA~HXJltvXnAbے`ZdQbtHAZpQZ|d~f`r˂pXnvˍ|dr˂rXdtAJlr˂pArd|nXv`˙bHAZpbdQZ|`JXQZdQbtvnXdrtAJvXnHAbےZdQbt~Hf˂rXQ~f`˂pZrd|v`fbdQZ|vpfHJXQrlJtArXQrtAJlvXnZHAbpfH~QtJlQJ`ےtbZHAbہZdQbtf~H˂rXdrtAr˂plJtAv`fltbvpfH`JXQrlJtApvnJ`ےJvXnHAbےZdQbt~HfpdrtA~f`˂pZHrd|J`ےtbdvpfH˂pZHf۝`vtbAdZbHAZpnvp`JXQlJtfpvQJ`ےJltZHAbrd|~HXdQZ|~f`˂pZrd|Xv`fltbvpfH`JXQrlJtAvnXJltvXnAbے`ZdQbtbHAZpQZ|d~f`Abے`Xnvˍ|dr˂rXfHf`r˂pArd|nXv`˙bHAZpbdQZ|`JXQZdQbtdv`fdrtAJvXnHAbےZdQbt~HfdQZ|~f`˂pZrd|v`pvbdQZ|vpfHJXQrlJfprXQrtAJlvXnہJXQrpfH~QtJlQJ`ےvXnZHAbہZdQbtf~H˂rXdtAJlr˂p|Zd~HfpltbvpfH`JXQrlJtApvndrtAJvXnHAbےZdQbtnrXQrAJl~f`˂pZHvnXJ`ےtbdvpfH˂p`Zf۝`vtbAdZbHAZpvpfH`JXQlJtfpvQJ`ےtbZHAbQbtlvnXdQZ|~f`˂pZrd|Xv`fltbvpfH`JXQrlJtAJ`p˂tbdQvXnAbے`v`fbHAZpQZ|d~f`QXb㉀Xnvˍ|dr˂rX~f`r˂pArd|nXv`˙bHAZpnvp`JXQJtArdv`pvdrtAJvXnHAbےZdQbtHfpdQZ|~f`˂pZrd|rXQJZ|dvpfHJXQr~HfprXQrtAJlvXnۑpJAHrpfH~QtJlt6666666666666667777777777777777777777777 \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv31_0.dat b/mpdf/qrcode/data/qrv31_0.dat deleted file mode 100644 index 0449f38..0000000 --- a/mpdf/qrcode/data/qrv31_0.dat +++ /dev/null @@ -1,281 +0,0 @@ -}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopopopopopklklklklijijijijhghghghghghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSPOPOOOOOMNMNMNMNMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@?@?@?@?>=>=>=>=>;<;<;<;<9:9:9:9:}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopopopopopklklklklijijijijhghghghgfefefefefefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<9:9:9:9:~}~}~}~}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopopopopopklklklklijijijiihghghghgfefefefefefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSRQOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<9:9:9:9:78787878}~}~}~}~}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopoponmnmnmnklklklkliiiijijihghghghgfefefefefefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUVUVUVUVURQRQRQRQOPOPOPOPMNMNMNMNMNMNMNMLKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<9:9:9:9:78787878}~}~}~}~}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklkljijijijihghghghgfefefefefefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUVUVUVUVURQRQRQRQOPOPOPOPMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>=>=>=>=<;<;<;<;<9:9:9:9:78765656}~}~}~}~}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklkljijijijihghghghgfefefefedcdcdcdcdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUVUVUVUVURQRQRQRQOPOPOPOPMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<;<;<;<;<9:9:987856555556}~}~}~}~}|{|{|{|{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklkljijijijihghghghgfefefefedcdcdcdcdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQOPOOOOOOMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<;<;<;<;<7878787856565656}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklkljijijijihghghghgfefefefedcdcdcdcdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOMNMNMNMNKLKLKLKLKLKLKLKJIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<;<;<;<;<7878787856565656}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklkljijijiiihghghghgfefefefedcdcdcdcdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOMNMNMNMNKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<;<;<;<;:7878787856565656}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklkliiijijijhghghghgfefefefedcdcdcdcbabababababababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOMNMNMNMNKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787856565656}~}~}~}~{|{|{|{|{zyzyzyzyzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklijijijijhghghghgfefefefedcdcdcdcbabababababababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOMNMNMNMNKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787856565555}~}~}~}~{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklijijijijhghghghgfefefefedcdcdcdcbabababababababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOMNMNMNMNKLKLKLKLIJIJIJIJIJIJIJIHGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787855656565}~}~}~}~{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklijijijijhghghghgfefefefedcdcdcdcbabababababababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOOOOOOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787865656565}~}~}~}~{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklijijijijhghghghgfefefefedcdcdcdcbabababa`_`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQOPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787865656565}~}~}~}~{|{|{|{|yzyzyzyzyxwxwxwxwxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklijijiiiihghghghgfefefefedcdcdcdcbabababa`_`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQOPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787865656565}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklkliijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQOPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHGHGHGHGFEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787865656565}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklkljijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQOPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787865655555}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklkljijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQOPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787856565656}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxwvuvuvuvuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklkljijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQOOOOOOPOMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787856565656}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklkljijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFEFEFEFEDCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787856565656}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklkljijiiiiihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787856565656}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvuvuvuvuvststststqrqrqrqropopopopmnmnmnmnklklklklijijijijhghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787856565656}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvutstststststststqrqrqrqropopopopmnmnmnmnklklklklijijijijhghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787856555555}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststststststqrqrqrqropopopopmnmnmnmnklklklklijijijijhghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDCDCDCDCBABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787865656565}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststststststqrqrqrqropopopopmnmnmnmnklklklklijijijijhghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQOOOOOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABABABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787865656565}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststststststqrqrqrqropopopopmnmnmnmnklklklklijijijijhghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQOPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABABABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787865656565}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststsrqrqrqrqrqrqrqropopopopmnmnmnmnklklklklijiiiiiihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQOPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABABABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787865656565}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqrqrqrqrqropopopopmnmnmnmnklklkjijjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQOPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABABABABABA@?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787865656565}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqrqrqrqrqropopopopmnmnmnmnijijiiiihghghghghghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQOPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787865555556}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqrqrqrqrqropopopopmnmnmnmnijijijijhghghghghghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQOPOOOOOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:7878787856565656}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqrqpopopopopopopopmnmnmnmlijijijijhghghghghghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSRQRQPOPOOPOPOPONMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:78787878565656565656565643434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%$#$#$#$#"!"!"!"!          - - - -5656565643434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('('('('&%&%&%&%&%$#$#$#$#"!"!"!"!             - - - -5656565643434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!             - - - -5555556543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!             - - - -6565654343434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!           - - - -4343434343434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%&%&%&%$#$#$#$#$#"!"!"!"!         - - - -4343434343434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!         - - - -4343434343434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!         - - - -4343434343434321212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!         - - - - - -4343434321212121212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#$#$#$#"!"!"!"!"!         - - - - - - - -4343434321212121212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!"!"!"!"!       - - - - - - - -4343434321212121212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!"!"!"!"!     - - - - - - - -43434343212121212121210/0/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!"!"!"!"!     - - - - - - 43434343212121210/0/0/0/0/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!"!"!"!      - - - -43434343212121210/0/0/0/0/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -43434343212121210/0/0/0/0/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -43434343212121210/0/0/0/0/0/0/.-.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -43434343212121210/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -43434343212121210/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -43434343212121210/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -43434343212121210/0/0/0/.-.-.-.-.-.-.-,+,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -43434343212121210/0/0/0/.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -43434343212121210/0/0/0/.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -43434343212121210/0/0/0/.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -43434343212121210/0/0/0/.-.-.-.-,+,+,+,+,+,+,+*)*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -43434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -43434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -43434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -43434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)*)*)*)('('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -43434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -43434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - - }}~~ - - xwwvvuut tuuvvwwx)((''&&%TUUVVWWXIHHGGFFE45566778ihhggffe - - ~~}}yyzz{{||$$##""!!YYZZ[[\\DDCCBBAA99::;;<>==<=>>??@@A`__^^]]\ !~~}}|yzz{{||}$##""!! qrrssttu - - tssrrqqp ~~}xyyzz{{|%$$##""!XYYZZ[[\EDDCCBBA899::;;>====>>??@@``__^^]] ~~}}yyzz{{|| - -  abbccdde<;;::998ABBCCDDE\[[ZZYYX!""##$$%|{{zzyyx}~~ uvvwwxxy - - poonmlkj !!""##$}||{{zzy|}}~~! \]]^^__`A@@??>>=<==>>??@a``__^^] ~~}~~}}||{xxwwvvuuaabbccdd<<;;::99AABBCCDD\\[[ZZYY!!""##$$||{{zzyy}}~~~~}}| - - effgghhi87766554EFFGGHHIXWWVVUUT%&&''(()xwwvvuut yzz{{||} -~~}} iihhggff$%%&&''(yxxwwvvu`aabbccd=<<;;::9@AABBCCD]\\[[ZZY !!""##$}||{{zzy{zzyyxxw !!""ttssrrqq - - eeffgghh88776655EEFFGGHHXXWWVVUU%%&&''((xxwwvvuu |{{zzyyx ijjkkllm43322110IJJKKLLMTSSRRQQP)**++,,-tssrrqqp - - }~~ - ||{{zzyy!!""eeddccbb())**++,uttssrrq - - deeffggh98877665DEEFFGGHYXXWWVVU$%%&&''(yxxwwvvu - - wvvuutts##$$%%&&ppoonnmm iijjkkll44332211IIJJKKLLTTSSRRQQ))**++,,ttssrrqq - - - - xwwvvuut mnnooppq0//..--,MNNOOPPQPOONNMML-..//001poonnmml xxwwvvuu##$$%%&&aa``__^^,--..//0qppoonnm hiijjkkl54433221HIIJJKKLUTTSSRRQ())**++,uttssrrq srrqqppo''(())**llkkjjii mmnnoopp00//..--MMNNOOPPPPOONNMM--..//00ppoonnmm tssrrqqp - - qrrssttu,++**))(QRRSSTTULKKJJIIH12233445lkkjjiih  ttssrrqq~~}}||''(())**]]\\[[ZZ01122334mllkkjji lmmnnoop100//..-LMMNNOOPQPPOONNM,--..//0qppoonnmoiihhggf++,,--..hhggffee - - qqrrsstt,,++**))QQRRSSTTLLKKJJII11223344llkkjjiipoonmlkjuvvwwxxy(''&&%%$UVVWWXXYHGGFFEED56677889hggffeed - -  - - ppoonnmm {{zzyyxx++,,--..YYXXWWVV45566778ihhggffe - - pqqrrsst-,,++**)PQQRRSSTMLLKKJJI01122334mllkkjjifeeddccb//001122ddccbbaauuvvwwxx((''&&%%UUVVWWXXHHGGFFEE55667788hhggffeeiihhggff !~~}}|yzz{{||}$##""!! YZZ[[\\]DCCBBAA@9::;;<<=dccbbaa`~ llkkjjii!!""##$$wwvvuutt//001122UUTSRQPO899::;;>==<=>>??@@A`__^^]]\ !~~}}|~}}||{{zhhggffee%%&&''((ssrrqqpp334455;;ONNMMLLK<==>>??@a``__^^] ~~}xyyzz{{|%$$##""!XYYZZ[[\EDDCCBBA899::;;>====>>??@@``__^^]] {{zzyyxx##$$%%&&aa``__^^%&&''(()xwwvvuut abbccdde<;;::998ABBCCDDE\[[ZZYYX!""##$$%|{{zzyyx zyyxxwwvddccbbaa))**++,,ooiihhgg<<==>>??KJJIIHHG@AABBCCD]\\[[ZZY !!""##$}||{{zzy|}}~~! \]]^^__`A@@??>>=<==>>??@a``__^^]%&&''(()ZYYXXWWV=>>??@@AXXWWVVUU%%&&''((xxwwvvuuaabbccdd<<;;::99AABBCCDD\\[[ZZYY!!""##$$wwvvuutt''(())**]]\\[[ZZ)**++,,-tssrrqqp - - effgghhi87766554EFFGGHHIXWWVVUUT%&&''(()xwwvvuut - - vuuttssr``__^^]]--..//00ffeeddcc@@AABBCCGFFEEDDCDEEFFGGHYXXWWVVU$%%&&''(yxxwwvvu`aabbccd=<<;;::9@AABBCCD]\\[[ZZY)**++,,-VUUOONNMABBCCDDETTSSRRQQ))**++,,ttssrrqq - - eeffgghh88776655EEFFGGHHXXWWVVUU%%&&''((ssrrqqpp++,,--..YYXXWWVV-..//001poonnmml ijjkkllm43322110IJJKKLLMTSSRRQQP)**++,,-tssrrqqp rqqppooi !!""##\\[[ZZYY11223344bbaa``__DDEEFFGGCBBAA@@?HIIJJKKLUTTSSRRQ())**++,uttssrrq - - deeffggh98877665DEEFFGGHYXXWWVVU-..//001MLLKKJJIEFFGGHHIPPOONNMM--..//00ppoonnmm iijjkkll44332211IIJJKKLLTTSSRRQQ))**++,,ooiihhgg//001122UUTSRQPO12233445lkkjjiih mnnooppq0//..--,MNNOOPPQPOONNMML-..//001poonnmmlihhggffe$$%%&&''XXWWVVUU55667788^^]]\\[[HHIIJJKK?>>==<<;LMMNNOOPQPPOONNM,--..//0qppoonnm hiijjkkl54433221HIIJJKKLUTTSSRRQ12233445IHHGGFFEIJJKKLLMLLKKJJII11223344llkkjjii mmnnoopp00//..--MMNNOOPPPPOONNMM--..//00ffeeddcc334455;;ONNMMLLK56677889hggffeed - - qrrssttu,++**))(QRRSSTTULKKJJIIH12233445lkkjjiiheddccbba(())**++TTSSRRQQ99::;;<EDDCCBBAMNNOOPQRHHGGFFEE55667788hhggffee - - qqrrsstt,,++**))QQRRSSTTLLKKJJII11223344bbaa``__<<==>>??KJJIIHHG9::;;<<=dccbbaa`uvvwwxxy(''&&%%$UVVWWXXYHGGFFEED56677889hggffeed!!"a``__^^],,--..//PPOONNMM==>>??@@VVUUOONNUUVVWWXX44332211TUUVVWWXIHHGGFFE45566778ihhggffe - - pqqrrsst-,,++**)PQQRRSSTMLLKKJJI>??@@AABA@@??>>=STUUVVWWDDCCBBAA99::;;<>??@@A`__^^]]\ !~~}}|yzz{{||}$##""!! YZZ[[\\]DCCBBAA@9::;;<<=dccbbaa`"##$$%%&]\\[[ZZY00112233LLKKJJIIAABBCCDDMMLLKKJJYYZZ[[\\00//..--XYYZZ[[\EDDCCBBA899::;;>====>>??@@``__^^]] ~~}}yyzz{{||$$##""!!YYZZ[[\\DDCCBBAA99::;;<>==<=>>??@@A`__^^]]\&''(())*YXXWWVVU44556789HHGGFFEEEEFFGGHHIIHHGGFF]]^^__``,,++**))\]]^^__`A@@??>>=<==>>??@a``__^^] ~~}xyyzz{{|%$$##""!XYYZZ[[\EDDCCBBAFGGHHIIJ43322110\\]]^^__<<;;::99AABBCCDD\\[[ZZYY!!""##$$||{{zzyy}}~~ ]]^^__``@@??>>====>>??@@VVUUOONNHHIIJJKK?>>==<<;EFFGGHHIXWWVVUUT%&&''(()xwwvvuut abbccdde<;;::998ABBCCDDE\[[ZZYYX*++,,--.UOONNMML:;;<<==>DDCCBBAAIIJJKKLLEEDDCCBBaabbccdd((''&&%%`aabbccd=<<;;::9@AABBCCD]\\[[ZZY !!""##$}||{{zzy|}}~~! \]]^^__`A@@??>>=JKKLLMMN0//..--,``aabbcc88776655EEFFGGHHXXWWVVUU%%&&''((xxwwvvuuaabbccdd<<;;::99AABBCCDDMMLLKKJJLLMMNNOO;:987655IJJKKLLMTSSRRQQP)**++,,-tssrrqqp - - effgghhi87766554EFFGGHHIXWWVVUUT.//00112LKKJJIIH>??@@AAB@@??>>==MMNNOOPPAA@@??>>eeffgghh$$##""!!deeffggh98877665DEEFFGGHYXXWWVVU$%%&&''(yxxwwvvu`aabbccd=<<;;::9NOOUUVVW,++**))(ddeeffgg44332211IIJJKKLLTTSSRRQQ))**++,,ttssrrqq - - eeffgghh88776655EEFFGGHHIIHHGGFFUUVVWWXX44332211MNNOOPPQPOONNMML-..//001poonnmml ijjkkllm43322110IJJKKLLMTSSRRQQP2334455;HGGFFEEDBCCDDEEF<<;;::99QQRRSSTT==<<;;55iiooppqq hiijjkkl54433221HIIJJKKLUTTSSRRQ())**++,uttssrrq - - deeffggh98877665WXXYYZZ[(''&&%%$hhiijklm00//..--MMNNOOPPPPOONNMM--..//00ppoonnmm iijjkkll44332211IIJJKKLLEEDDCCBBYYZZ[[\\00//..--QRRSSTTULKKJJIIH12233445lkkjjiih mnnooppq0//..--,MNNOOPPQPOONNMML;<<==>>?DCCBBAA@FGGHHIIJ88776655UUVVWWXX44332211rrssttuulmmnnoop100//..-LMMNNOOPQPPOONNM,--..//0qppoonnm hiijjkkl54433221[\\]]^^_$##""!!nooppqqr,,++**))QQRRSSTTLLKKJJII11223344llkkjjii mmnnoopp00//..--MMNNOOPPAA@@??>>]]^^__``,,++**))UVVWWXXYHGGFFEED56677889hggffeed - - qrrssttu,++**))(QRRSSTTULKKJJIIH?@@AABBC@??>>==>==<=>>??@@A`__^^]]\ !~~}}|yzz{{||}$##""!! YZZ[[\\]DCCBBAA@GHHIIJJK3221100/UUVVWWXX,,++**))aabbccdd((''&&%%~~ -xyyzz{{|%$$##""!XYYZZ[[\EDDCCBBA899::;;>====>>??@@``__^^]] ~~}}yyzz{{||$$##""!!YYZZ[[\\00//..--iiooppqq abbccdde<;;::998ABBCCDDE\[[ZZYYX!""##$$%|{{zzyyx}~~ ]^^__``a@??>>==>=<==>>??@a``__^^] ~~}xyyzz{{|%$$##""!pqqrrsst ~aabbccdd<<;;::99AABBCCDD\\[[ZZYY!!""##$$||{{zzyy}}~~ ]]^^__``,,++**))rrssttuueffgghhi87766554EFFGGHHIXWWVVUUT%&&''(()xwwvvuut abbccdde<;;::998OUUVVWWX+**))((']]^^__``$$##""!!iijjkkll`aabbccd=<<;;::9@AABBCCD]\\[[ZZY !!""##$}||{{zzy|}}~~! tuuvvwwx - - eeffgghh88776655EEFFGGHHXXWWVVUU%%&&''((xxwwvvuuaabbccdd((''&&%%vvwwxxyyijjkkllm43322110IJJKKLLMTSSRRQQP)**++,,-tssrrqqp - - effgghhi87766554XYYZZ[[\'&&%%$$#aabbccdd mmnnoopp - - deeffggh98877665DEEFFGGHYXXWWVVU$%%&&''(yxxwwvvuxyyzz{{|iijjkkll44332211IIJJKKLLTTSSRRQQ))**++,,ttssrrqq - - eeffgghh$$##""!!zz{{||}}mnnooppq0//..--,MNNOOPPQPOONNMML-..//001poonnmml ijjkkllm43322110\]]^^__`#""!!eeffgghhqqrrsstt hiijjkkl54433221HIIJJKKLUTTSSRRQ())**++,uttssrrq - - |}}~~ mmnnoopp00//..--MMNNOOPPPPOONNMM--..//00ppoonnmm iijjkkll~~ -qrrssttu,++**))(QRRSSTTULKKJJIIH12233445lkkjjiih mnnooppq0//..--,`aabbccdiijklmnouuvvwwxx ~~}}| lmmnnoop100//..-LMMNNOOPQPPOONNM,--..//0qppoonnm  - - - - qqrrsstt,,++**))QQRRSSTTLLKKJJII11223344llkkjjii mmnnoopp - uvvwwxxy(''&&%%$UVVWWXXYHGGFFEED56677889hggffeed - - qrrssttu,++**))(deeffgghoppqqrrsyyzz{{|| - - |{{zzyyx - - pqqrrsst-,,++**)PQQRRSSTMLLKKJJI01122334mllkkjji uuvvwwxx((''&&%%UUVVWWXXHHGGFFEE55667788hhggffee - - qqrrssttyzz{{||}$##""!! YZZ[[\\]DCCBBAA@9::;;<<=dccbbaa`uvvwwxxy(''&&%%$hiiooppqsttuuvvwwxxyyzz{##""!! ZZ[[\\]]CCBBAA@@::;;<<==ccbbaa``vvwwxxyy''&&%%$$VVWWXXYY33221100ffgghhii##""!! ^__``aab?>>==<<;>??@@AAB_^^]]\\[ !!"~~}}||{z{{||}}~#""!! Z[[\\]]^,++**))(z{{||}}~ - - {||}}~~^^__``aa??>>==<<>>??@@AA__^^]]\\ !!~~}}||zz{{||}}##""!! ZZ[[\\]]//..--,,ooppqqrrbccddeef;::99887BCCDDEEF[ZZYYXXW"##$$%%&{zzyyxxw~^__``aab(''&&%%$~ - - bbccddee;;::9988BBCCDDEE[[ZZYYXX""##$$%%{{zzyyxx~~^^__``aa++**))((ssttuuvvfgghhiij76655443FGGHHIIJWVVUUTTS&''(())*wvvuutts -bccddeef$##""!!~~} ffgghhii77665544FFGGHHIIWWVVUUTT&&''(())wwvvuutt bbccddee''&&%%$$wwxxyyzzjkkllmmn3221100/JKKLLMMNSRRQQPPO*++,,--.srrqqppo - fgghhiij}||{{zzyjjkkllmm33221100JJKKLLMMSSRRQQPP**++,,--ssrrqqpp - - ffgghhii##""!!{{||}}~~ nooppqqr/..--,,+NOOPPQQRONNMMLLK.//00112onnmmllkjkkllmmnyxxwwvvu nnooppqq//..--,,NNOOPPQQOONNMMLL..//0011oonnmmlljjkkllmm - - rssttuuv+**))(('RSSTTUUVKJJIIHHG23344556kjjiihhg nooppqqruttssrrq - - rrssttuu++**))((RRSSTTUUKKJJIIHH22334455kkjjiihh nnooppqq vwwxxyyz'&&%%$$#VWWXXYYZGFFEEDDC6778899:gffeeddc - - rssttuuv qppoonnm vvwwxxyy''&&%%$$VVWWXXYYGGFFEEDD66778899ggffeedd - - rrssttuuz{{||}}~#""!! Z[[\\]]^CBBAA@@?:;;<<==>cbbaa``_vwwxxyyz - - -mllkkjji !!""##$~~}}||zz{{||}}##""!! ZZ[[\\]]CCBBAA@@::;;<<==ccbbaa``vvwwxxyy ~^__``aab?>>==<<;>??@@AAB_^^]]\\[ !!"~~}}||{z{{||}}~ - ihhggffe$%%&&''({{zzyyxx~~^^__``aa??>>==<<>>??@@AA__^^]]\\ !!~~}}||zz{{||}} - -  -bccddeef;::99887BCCDDEEF[ZZYYXXW"##$$%%&{zzyyxxw~eddccbba())**++,wwvvuutt bbccddee;;::9988BBCCDDEE[[ZZYYXX""##$$%%{{zzyyxx~~~~}}||{ - fgghhiij76655443FGGHHIIJWVVUUTTS&''(())*wvvuutts -a``__^^],--..//0ssrrqqpp - - ffgghhii77665544FFGGHHIIWWVVUUTT&&''(())wwvvuutt  - -{zzyyxxwjkkllmmn3221100/JKKLLMMNSRRQQPPO*++,,--.srrqqppo - ]\\[[ZZY01122334oonnmmlljjkkllmm33221100JJKKLLMMSSRRQQPP**++,,--ssrrqqpp - - wvvuutts nooppqqr/..--,,+NOOPPQQRONNMMLLK.//00112onnmmllk!!""#YXXWWVVU45566778kkjjiihh nnooppqq//..--,,NNOOPPQQOONNMMLL..//0011oonnmmllsrrqqppo - - rssttuuv+**))(('RSSTTUUVKJJIIHHG23344556kjjiihhg#$$%%&&'UTTSSRRQ899::;;>??@ccbbaa``vvwwxxyy''&&%%$$VVWWXXYYGGFFEEDD66778899ggffeeddhhggffee !!"~~}}||{z{{||}}~#""!! Z[[\\]]^CBBAA@@?:;;<<==>cbbaa``_{zzyyxxw+,,--../MLLKKJJI@AABBCCD__^^]]\\ !!~~}}||zz{{||}}##""!! ZZ[[\\]]CCBBAA@@::;;<<==ccbbaa``~~}}||{{!!""##ddccbbaa"##$$%%&{zzyyxxw~^__``aab?>>==<<;>??@@AAB_^^]]\\[ !!"wvvuutts/0011223IHHGGFFEDEEFFGGH[[ZZYYXX""##$$%%{{zzyyxx~~^^__``aa??>>==<<>>??@@AA__^^]]\\ !!zzyyxxww$$%%&&''``__^^]]&''(())*wvvuutts -bccddeef;::99887BCCDDEEF[ZZYYXXW"##$$%%&srrqqppo34455;;>??@A@@??>>=LMMNNOOPSSRRQQPP**++,,--ssrrqqpp - - ffgghhii77665544FFGGHHIIWWVVUUTT&&''(())rrqqppoo,,--..//XXWWVVUU.//00112onnmmllkjkkllmmn3221100/JKKLLMMNSRRQQPPO*++,,--.feeddccb@AABBCCD=<<;;::9PQQRRSSTOONNMMLL..//0011oonnmmlljjkkllmm33221100JJKKLLMMSSRRQQPP**++,,--iihhggff00112233TSRQPOON23344556kjjiihhg nooppqqr/..--,,+NOOPPQQRONNMMLLK.//00112baa``__^DEEFFGGH98877665TUUVVWWXKKJJIIHH22334455kkjjiihh nnooppqq//..--,,NNOOPPQQOONNMMLL..//0011eeddccbb4455;;<>??@@JIIHHGGF:;;<<==>cbbaa``_vwwxxyyz'&&%%$$#VWWXXYYZGFFEEDDC6778899:ZYYXXWWVLMMNNOOU100//..-\]]^^__`CCBBAA@@::;;<<==ccbbaa``vvwwxxyy''&&%%$$VVWWXXYYGGFFEEDD66778899]]\\[[ZZAABBCCDDFEEDDCCB>??@@AAB_^^]]\\[ !!"~~}}||{z{{||}}~#""!! Z[[\\]]^CBBAA@@?:;;<<==>VUUOONNMUVVWWXXY-,,++**)`aabbccd??>>==<<>>??@@AA__^^]]\\ !!~~}}||zz{{||}}##""!! ZZ[[\\]]CCBBAA@@::;;<<==YYXXWWVVEEFFGGHHBAA@@??>BCCDDEEF[ZZYYXXW"##$$%%&{zzyyxxw~^__``aab?>>==<<;>??@@AABMLLKKJJIYZZ[[\\])((''&&%deeffggh;;::9988BBCCDDEE[[ZZYYXX""##$$%%{{zzyyxx~~^^__``aa??>>==<<>>??@@AAUUOONNMMIIJJKKLL>==<<;;:FGGHHIIJWVVUUTTS&''(())*wvvuutts -bccddeef;::99887BCCDDEEFIHHGGFFE]^^__``a%$$##""!hiijjkkl77665544FFGGHHIIWWVVUUTT&&''(())wwvvuutt bbccddee;;::9988BBCCDDEELLKKJJIIMMNNOOUU98765544JKKLLMMNSRRQQPPO*++,,--.srrqqppo - fgghhiij76655443FGGHHIIJEDDCCBBAabbccdde! lmmnnoop33221100JJKKLLMMSSRRQQPP**++,,--ssrrqqpp - - ffgghhii77665544FFGGHHIIHHGGFFEEVVWWXXYY33221100NOOPPQQRONNMMLLK.//00112onnmmllkjkkllmmn3221100/JKKLLMMNA@@??>>=effgghhipqqrrsst//..--,,NNOOPPQQOONNMMLL..//0011oonnmmlljjkkllmm33221100JJKKLLMMDDCCBBAAZZ[[\\]]//..--,,RSSTTUUVKJJIIHHG23344556kjjiihhg nooppqqr/..--,,+NOOPPQQR=<<;;554iooppqqrtuuvvwwx++**))((RRSSTTUUKKJJIIHH22334455kkjjiihh nnooppqq//..--,,NNOOPPQQ@@??>>==^^__``aa++**))((VWWXXYYZGFFEEDDC6778899:gffeeddc - - rssttuuv+**))(('RSSTTUUV43322110rssttuuvxyyzz{{|''&&%%$$VVWWXXYYGGFFEEDD66778899ggffeedd - - rrssttuu++**))((RRSSTTUU<<;;5544bbccddee''&&%%$$Z[[\\]]^CBBAA@@?:;;<<==>cbbaa``_vwwxxyyz'&&%%$$#VWWXXYYZ0//..--,vwwxxyyz |}}~~ZHAbے`JXQtArd˂rXQbdQZ|nvpQr˂pZHAۂ|ZdQfpvrXQJ`ۉbdQZ|fH~ˑZHAb|ZdQfpvnXv`drtAdfH~ZHAb`JXQrtlJnXv`bHAZdrtA`vXnے`JXQtlJnXv`fHfp˂rltbbJQbtlArd|f~H˂rXJltvpfHr˂pArd|f~HvnQJ`ےbdQZ|~f`ے`JXQr˂p|ZdQbJ`ےdrtAfH~ˑZHAb`JXQbtlnXv`bHAdrtf`vXے`JXbtlnXv`fHQZ|df`vXے`JXQbtltArdf~Hp˂rJltvpfr˂ptArdf~HpvnXQJ`ےdQZ|lr˂pJtAd|ZdQbtfpvQJ`ےbdQZ|~f`ZHAbہZdQbtfpvrXQJ`ۙbHAZpdrtAvXnr˂p|ZdQbtlJbHAZpJlbQZf`vXے`JXrbtlJtArdf~HZp˂AJltnvpQr˂pJtArdf~HfpvrtAJlnvpfr˂pJtAd|ZdQbfpvXQJ`ےbdQZ|H~fZHAb|ZdQbfpvrXQJ`bHAZtbnZHAbہZdQbtlJtnXv`˙bHAZpdrtAvXn`JXQlJtnXv`˒HAZp˂rXJltvpfHJXQrZHAbtlJtArd˂rXQ|drnvpQr˂pJtAd|ZdQfpvrXQJ`ۉbdQZ|fH~ˑZHAb|ZdQfpvnrXQJ`tbd~f`vZHAb|ZdQbtlJnXv`bHAZdrtA`vXnے`JXQtlJnXv`ےHAZp˂rvp``JXQlJtArdf~H˂rXJltvpfHr˂pArd|f~H˂rXQJ`ےbdQZ|~f`p`JXے`JXQtArdf~HJ`p˂tAJlfH~ˑZHAb|ZdQbtlnXv`bHAdrtf`vXے`JXbtlnXv`p˂QZ|dXnvے`JXQtlJtArdf~Hp˂rJltvpfr˂ptArdf~Hp˂rXQJ`ےvXnr˂pArd|f~HfpvQJ`ےbdQZ|~f`ZHAbہZdQbtfpvQJ`ےbHAZdrtAvXHQrbtr˂p|ZdQbXv`frXQJtbdQZf`vXے`JXbtlJtArdf~HZp˂AJltnvpQr˂pJtArdf~HrXQJ`ۙrtAJlpfH~r˂ptArdf~HfpvXQJ`ےbdQZ|H~fZHAb|ZdQbfpvXQJ`ےbHAZvpfHZHAbہZdQbtfpvnXv`˙bHAZpdrtAvXn`JXQlJtnXv`˙bHAZpdrtAJlt~fZHlJA|ZHAbtlJ~Hf`ےb|drnvpQr˂pJtArdf~HfpvrXQJ`ۉbdQZ|fH~ˑZHAb|ZdQfpvbHA|df`vZHAb|ZdQbfpvnXv`bHAZdrtA`vXnے`JXQtlJnXv`bHAZdrtA~f``JQrlJtnXv`fHfp˂rXJltvpfHr˂pArd|f~H˂rXJltbdQZ|AbˁZdQbtے`JXQtArdpvnHAZp˂tAJlfH~ˑZHAb|ZdQfpvnXv`bHAdrtf`vXے`JXbtlnXv`Zp˂rtAJlXnvے`JXQtlJnXv`fHfp˂rJltvpfr˂ptArdf~Hp˂rdQZ|vXnpZHAbArd|f~HvnQJ`ےbdQZ|~f`ZHAbہZdQbtfpvQJ`ےbdQZ|dtAJlpZHAlJtr˂p|ZdQbXv`frXQJtbQZdf`vXے`JXbtlnXv`fHZp˂AJltnvpQr˂pJtArdf~HrXQJ`ptbdQpfH~r˂ptArdf~HpvnXQJ`ےbdQZ|H~fZHAb|ZdQbfpvXQJ`ےdrtAJvp`vے`JZdQbtfpvrXQJ`ۙbHAZpdrtAvXn`JXQlJtnXv`˙bHAZpdrtAtbbے`Ard|ZHAbtlJ~Hf`ےrtAJlnvpQr˂pJtArdf~HfpvrXQJ`ۉbdQZ|fH~ˑZHAb|ZdQfpv˂rXZ|dfvXnZHAb|ZdQbfpvrXQJ`bHAZdrtA`vXnے`JXQtlJnXv`bHAZltbXnvXQr˂lJtnXv`˒HAZp˂rXJltvpfHr˂pArd|f~H˂rXJltnvp`JXQrˁZdQbtے`JXQtArdp`frXQJ`tbdfH~ˑZHAb|ZdQfpvnrXQJ`bHAdrtf`vXے`JXbtlnXv`QJ`ےrtAJlvpfHے`JXQtlJnXv`ےHAZp˂rJltvpfr˂ptArdf~Hp˂rdQZ|pfH~pZHAbArd|f~H˂rXQJ`ےbdQZ|~f`ZHAbہZdQbtfpvQJ`ےbdQZ|vXnpZHAlJArr˂p|ZdQb~HfpےbHAQZ|df`vXے`JXbtlnXv`ےHAZp˂AJltnvpQr˂pJtArdf~HbHAZptdrt~f`r˂ptArdf~Hp˂rXQJ`ےbdQZ|H~fZHAb|ZdQbfpvXQJ`ےdrtAJf`vے`JZdQbtfpvQJ`ےbHAZdrtAvXn`JXQlJtnXv`˙bHAZpdrtAvpfHbے`p|ZdQZHAbtlJvnXZp˂rtAJlnvpQr˂pJtArdf~HZp˂rXQJ`ۉbdQZ|fH~ˑZHAb|ZdQfpv˂rXAJltvXnZHAb|ZdQbfpvXQJ`ےbHAZdrtA`vXnے`JXQtlJnXv`bHAZl|dXnvXQrZHlJtnXv`˙bHAZpdrtAJltvpfHr˂pArd|f~H˂rXJlt~f`ZHAbbtlے`JXQtArdv`frXQJ`tbdfH~ˑZHAb|ZdQfpvrXQJ`ےbHAdrtf`vXے`JXbtlnXv`QJ`ےbdQZ|vpfHے`JXQtlJnXv`bHAZdrtAJltvpfr˂ptArdf~Hp˂rrtAJlpfHXAbے`Ard|f~H˂rXJltbdQZ|~f`ZHAbہZdQbtfpvQJ`ےbdQZ|vXnے`JXJtArdr˂p|ZdQb~HfpےbHAQZrtAf`vXے`JXbtlnXv`bHAZdrtAJltnvpQr˂pJtArdf~HrXQdrt~fvr˂ptArdf~Hp˂rJltbdQZ|H~fZHAb|ZdQbfpvXQJ`ےtbdQnvpJXQrZdQbtfpvQJ`ےbdQZ|dtAJlvXn`JXQlJtnXv`˙bHAZpdrtAvp`Qr˂p|ZdQZHAbtlJv~XQJ`ےJltnvpQr˂pJtArdf~HZp˂AJltbdQZ|fH~ˑZHAb|ZdQfpvJ`ےAJltnvpZHAb|ZdQbfpvXQJ`ےbdQZ|dtAJ`vXnے`JXQtlJnXv`bHAZZ|dfH~˂pZHlJtnXv`˙bHAZpdrtAtbvpfHr˂pArd|f~H˂rXJltvXnۑZHAbbtlے`JXQtArdHfpvbHAZbdQZ|fH~ˑZHAb|ZdQfpvrXQJ`ۉbdQZ|dtAf`vXے`JXbtlnXv`bHAZpˉbdQtAfH~ے`JXQtlJnXv`bHAZdrtAltbvpfr˂ptArdf~Hp˂rrtAJlf`vXAbے`Ard|f~H˂rXJltnvp~f`ZHAbہZdQbtfpvQJ`ےbdQZ|vpfHے`JXJtArr˂p|ZdQbnXvp˂rdrtAf`vXے`JXbtlnXv`bHAdrtJltnvpQr˂pJtArdf~HrXQJltf`vXr˂ptArdf~Hp˂rJltnvpH~fZHAb|ZdQbfpvXQJ`ےtdrnvpJXQrZdQbtfpvQJ`ےbdQZ|fHf`vXn`JXQlJtnXv`˙bHAZpdrtA~f`QHAbZdQbtZHAbtlJ`f~XQJ`ےJltnvpQr˂pJtArdf~HZp˂AJltbnvpfH~ˑZHAb|ZdQfpvJ`ےbdQZ|nvpZHAb|ZdQbfpvXQJ`ےbdQZ|fHf`vXnے`JXQtlJnXv`bHAZtAJlfH~ZAblJtnXv`˙bHAZpdrtAvXnvpfHr˂pArd|f~H˂rXJltvXnے`JXQlJtAے`JXQtArdHfpvbHAZbdQZ|fH~ˑZHAb|ZdQfpvrXQJ`ۉbdQZ|fHf`vXے`JXbtlnXv`bHAXQJ`drtAfH~ے`JXQtlJnXv`bHAZdrtA`vXnvpfr˂ptArdf~Hp˂rtbdQZvpfے`JXQArd|f~H˂rXJltvpfH~fZHAbہZdQbtfpvQJ`ےbdQZ|vpfHXr˂prd|r˂p|ZdQbnXHp`ےrAJlf`vXے`JXbtlnXv`bHAdrtf`vXnvpQr˂pJtArdf~HےbHJltf`vnr˂ptArdf~Hp˂rJltvpfH~fZHAb|ZdQbfpvXQJ`ے|drH~fr˂pZdQbtfpvQJ`ےbdQZ|~f`ZHAbے`JXQlJtnXv`˙bHAZpdrtAnvpZHAbZdQbtZHAbtlJfpvbHAZptbdQnvpQr˂pJtArdf~HZp˂AJltnvpfH~ˑZHAb|ZdQfpvAZp˂bdQZ|lvpfHZHAb|ZdQbfpvXQJ`ےbdQZ|H~fZHAbے`JXQtlJnXv`bHAZtAJl`vXnZHAblJtnXv`˙bHAZpdrtAvXn`JXQr˂pArd|f~H˂rXJltfH~`JXQlJtAے`JXQtArdnXv`˂rXQZ|dfH~ˑZHAb|ZdQfpvrXQJ`ۉbdQZ|fH~fZHAbے`JXbtlnXv`rXQJ`tbd~f`ے`JXQtlJnXv`bHAZdrtA`vXnے`JXQr˂ptArdf~Hp˂rtbdQtAvpfے`JXQArd|f~H˂rXJltvpfHr˂pZHAے`ZdQbtfpvQJ`ےbdQZ|f`vXrے`rdZQbr˂p|ZdQbf~HJ`ےrtAJlf`vXے`JXbtlnXv`bHAdrtf`vXے`JXQr˂pJtArdf~HےbHQZ|dvXnr˂ptArdf~Hp˂rJltvpfr˂pZHAے|ZdQbfpvXQJ`ےJltH~fr˂pZdQbtfpvQJ`ےbdQZ|~f`ZHAbہJXQrlJtnXv`˙bHAZpdrtAnvpJXQrtlJZHAbtlJfpvbHAZptbdQnvpQr˂pJtArdf~HZp˂AJltnvpQr˂pZHAۂ|ZdQfpvAZp`ۙrtAJlvpfHZHAb|ZdQbfpvXQJ`ےbdQZ|H~fZHAb`JXQrtlJnXv`bHAZbdQZ|`pfHZAb`lJtnXv`˙bHAZpdrtAvXn`JXQbtlArd|f~H˂rXJltfH~˂pZHtArdے`JXQtArdnXv`˂bZ|dnfH~ˑZHAb|ZdQfpvrXQJ`ۉbdQZ|fH~ˑZHAb`JXQbtlnXv`bHAtbd~f`ے`JXQtlJnXv`bHAZdrtA`vXnے`JXQbtltArdf~Hp˂rdrtA~f`JXQrArd|f~H˂rXJltvpfHr˂pJtAd|ZdQbtfpvQJ`ےbdQZ|vpAbے`|ZdQbr˂p|ZdQbpvnHAZdvff`vXے`JXbtlnXv`bHAdrtf`vXے`JXrbtlJtArdf~HZp˂QZ|lvXnvfr˂ptArdf~Hp˂rJltvpfr˂pJtAd|ZdQbfpvXQJ`ےJltvXnpZHAZdQbtfpvQJ`ےbdQZ|~f`ZHAbہZdQbtlJtnXv`˙bHAZpdrtAfH~ˁJXQrtlJZHAbtlJXv`frtAJf`vXnvpQr˂pJtArdf~HZp˂AJltnvpQr˂pJtAd|ZdQfpvrXQJ`ےtbnH~fZHAb|ZdQbfpvXQJ`ےbdQZ|H~fZHAb|ZdQbtlJnXv`bHAZbdQZ|vpfHbے`lJtnXv`˙bHAZpdrtAvXn`JXQlJtArdf~H˂rXJltf`vX˂p`tArdے`JXQtArd~HfbdQZ|nvpfH~ˑZHAb|ZdQfpvrXQJ`ۉbdQZ|fH~ˑZHAb|ZdQbtlnXv`bHAvpfZHAbے`JXQtlJnXv`bHAZdrtA`vXnے`JXQtlJtArdf~Hp˂rltb~f`JXQrArd|f~H˂rXJltvpfHr˂pArd|f~HfpvQJ`ےbdQZ|nvpJXQr|ZQblr˂p|ZdQbpvndrtAfH~fZHAbے`JXbtlnXv`bHAdrtf`vXے`JXbtlJtArdf~HZp˂f`vXے`JXQr˂ptArdf~Hp˂rJltvpfr˂ptArdf~HfpvXQJ`ےdQZ|vXH~pZA`ZdQbtfpvQJ`ےbdQZ|~f`ZHAbہZdQbtfpvnXv`˙bHAZpdrtAfH~˂pZHAJtArdZHAbtlJXv`pJltf`vXے`JXQr˂pJtArdf~HZp˂AJltnvpQr˂pJtArdf~HfpvbHAZnvpr˂pZHAے|ZdQbfpvXQJ`ےbdQZ|H~fZHAb|ZdQbfpvnXv`bHAZdrtAJfZHAJXQrlJtnXv`˙bHAZpdrtAvXn`JXQlJtnXv`fHfp˂rXJltf`pfHbے`|ZdQbtlXv`fbHAZpdrtAJvXn`JXQrlJtAXv`fHfp˂rXQltbvpfH`JXQrrd|Xv`frXQtbdvpfH˂pZHrd|~HfpvnrXJ`ےQZ|d~f`ZHAbۑpJAHrXnvˍJtArd~Hf˂rXQltbvpfH˂pZrd|~HfvnrJ`ےdQZ|~f`˂pZlJtAr~fpvJ`ےQZ|d~f`Abے`ZdQbtvnXQJ`ےbHAZp˙rtAJlvXnے`JXQ󙐂ˁ`p|dr|ZdpvnJ`ےdQZ|~f`HAbےZdQbtpvnXQJ`ےbHAZpdrtAJvXnHAbےd|ZnXv`bHAZp˙rtAJlvXnہJXQrlJtAv`fHAZp˂rXQtbdvpfHr˂p`pfH~QtJlQbJtAXv`fbHAZpdrtAJvXn`JXQrlJtAXv`fHAZp˂rXQltbvpfH`JXQrdQbt璍f~HrXQtbdvpfH˂pZHrd|~HfprXQJ`ےQZ|d~f`JXQrf۝`vtbAdZrdf~Hf˂rXQltbvpfH˂pZrd|~Hf˂rXQJ`ےdQZ|~f`˂p`lJtArfpvJ`ےQZ|d~f`Abے`ZdQbtvnXJ`ےbHAZdrtAJlvXnۉ˂pZHXnvˍ|dr~HfpvnJ`ےdQZ|~f`HAbےZdQbtpvnJ`ےbHAZdrtAJvXnJXQrd|ZnXv`bHAZp˙rtAJlvXnہJXQrlJtAv`fbHAZp˙rtAJltbdvpfHAbے`pfH~QtJlpvnXv`fbHAZpdrtAJvXn`JXQrlJtAXv`fbHAZpdrtAJltbvpfH˂pZHAdQtArdffpۂrXQtbdvpfH˂pZHrd|~HfprXQtbdQZ|d~f`JXQrf۝`vtbAdZXv`fHfp˂rXQltbvpfH˂pZrd|~Hf˂rXQltbdQZ|~f`bے`f~vnrXJ`ےQZ|d~f`Abے`ZdQbtvnXJ`ےQZ|dtAJlvXnۉ˂p`ZXnvˍ|dr~HfvnrJ`ےdQZ|~f`HAbےZdQbtpvnJ`ےdQZ|dtAJlvXnJXQrHfvnXQJ`ےbHAZp˙rtAJlvXnہJXQrlJtAv`fbHAZp˙rtAJltbnvpfHQXb㉀pfH~QtJlpvnXQJ`ےbHAZpdrtAJvXn`JXQrlJtAXv`fbHAZpdrtAJtbnvpfH˂p`Jv`fHAZp˂rXQtbdvpfH˂pZHrd|~HfprXQtbdvpfH~f`ۑpJAHrf۝`vtbAdZXv`fHAZp˂rXQltbvpfH˂pZrd|~Hf˂rXQltbvpf~f`XQrbt~HfprXQJ`ےQZ|d~f`Abے`ZdQbtvnXJ`ےQZ|df`vXn󙐂ˁ`ZXnvˍ|dr~Hf˂rXQJ`ےdQZ|~f`HAbےZdQbtpvnJ`ےdQZ|Hf`vXnl|ZvnXJ`ےbHAZdrtAJlvXnہJXQrlJtAv`fbHAZp˙rtAJlvXnvpfHQXb㉀pfH~QtJlpvnJ`ےbHAZdrtAJvXn`JXQrlJtAXv`fbHAZpdrtAJvXnvpfHdQbt璕v`fbHAZp˙rtAJltbdvpfH˂pZHrd|~HfprXQtbdvpfH~frۑp`ZQf۝`vtbAdZXv`fbHAZpdrtAJltbvpfH˂pZrd|~Hf˂rXQltbvpfH~fZlJtAr~HfprXQtbdQZ|d~f`Abے`ZdQbtvnXJ`ےQZ|d~f`˂pZHXb㉀ۑXnvˍ|dr~Hf˂rXQltbdQZ|~f`HAbےZdQbtpvnJ`ےdQZ|~f`HAbd|Zvnv`J`ےQZ|dtAJlvXnہJXQrlJtAv`fbHAZp˙rtAJlvXnAbے`pJAHrpfH~QtJlpvnJ`ےdQZ|dtAJlvXn`JXQrlJtAXv`fbHAZpdrtAJvXn˂pZHAdQbtf~HbHAZp˙rtAJltbnvpfH˂pZHrd|~HfprXQtbdvpfHJXQrˁ`ZQf۝`vtbAdZXv`fbHAZpdrtAJtbnvpfH˂pZrd|~Hf˂rXQltbvpfHbے`l|ZdQfpvrXQtbdvpfH~f`Abے`ZdQbtvnXJ`ےQZ|d~f`˂pZHXb㉀ۑXnvˍ|dr~Hf˂rXQltbvpf~f`HAbےZdQbtpvnJ`ےdQZ|~f`JXQrbtlnXv`J`ےQZ|df`vXnہJXQrlJtAv`fbHAZp˙rtAJlvXnAbے`pJAHQXbpfH~QtJlpvnJ`ےdQZ|Hf`vXn`JXQrlJtAXv`fbHAZpdrtAJvXn˂pZHAJtArdf~HbHAZp˙rtAJlvXnvpfH˂pZHrd|~HfprXQtbdvpfHpZHA㉀ۑpJf۝`vtbAdZXv`fbHAZpdrtAJvXnvpfH˂pZrd|~Hf˂rXQltbvpfHbے`|ZdQfpvrXQtbdvpfH~fZHAbے`ZdQbtvnXJ`ےQZ|d~f`bے`AHr󙐂Xnvˍ|dr~Hf˂rXQltbvpfH~fZHAbےZdQbtpvnJ`ےdQZ|~f`pZHAbbtlnvfJ`ےQZ|d~f`Abے`JXQrlJtAv`fbHAZp˙rtAJlvXnJXQrˁ`ZQXbpfH~QtJlpvnJ`ےdQZ|~f`HAbے`JXQrlJtAXv`fbHAZpdrtAJvXnے`JJtAdQb~HfpbHAZp˙rtAJlvXnہJXQr˂pZHrd|~HfprXQtbdvpfHpZHA㉀ۑpJf۝`vtbAdZXv`fbHAZpdrtAJvXn`JXQr˂pZrd|~Hf˂rXQltbvpfHXQr˂tlJvnXrXQtbdvpfH˂pZHAے`ZdQbtvnXJ`ےQZ|d~f`bے`AHr󙐉Xnvˍ|dr~Hf˂rXQltbvpfH˂pZHAے`ZdQbtpvnJ`ےdQZ|~f`pZHAbtArdv`fJ`ےQZ|d~f`Abے`JXQrbtlJtAv`fbHAZp˙rtAJlvXnJXQHAbۑpJApfH~QtJlpvnJ`ےdQZ|~f`HAbےJXQrblJtAXv`fbHAZpdrtAJvXnے`J|ZdQb~HfpbHAZp˙rtAJlvXnہJXQrlJtrd|~HfprXQtbdvpfHے`JXHr󙐂ˁf۝`vtbAdZXv`fbHAZpdrtAJvXn`JXQrtlJrd|~Hf˂rXQltbvpfHXQHAbtlJvnXvrXQtbdvpfH˂pZHAd|ZdQbtvnXJ`ےQZ|d~f`Qr˂p`ZQXbXnvˍ|dr~Hf˂rXQltbvpfH˂pZtAd|ZdQbtpvnJ`ےdQZ|~f`ے`JXQtArdtf~HfJ`ےQZ|d~f`Abے`ZdQbtlJtAv`fbHAZp˙rtAJlvXnۑZHAbۑpJApfH~QtJlpvnJ`ےdQZ|~f`HAbےZdQbtlJtAXv`fbHAZpdrtAJvXnr˂plJtApvnbHAZp˙rtAJlvXnہJXQrlJtArdf~HfprXQtbdvpfHے`JXHr󙐂ˁf۝`vtbAdZXv`fbHAZpdrtAJvXn`JXQrlJtArdf~Hf˂rXQltbvpfHZHAbrd|Xv`frXQtbdvpfH˂pZHrd|~HfpvnXJ`ےQZ|d~f`Qr`pJAHrXnvˍ|dr~Hf˂rXQltbvpfH˂pZrd|~HfpvnJ`ےdQZ|~f`ے`JXQZdQbt~HfJ`ےQZ|d~f`Abے`ZdQbtvnXv`fbHAZp˙rtAJlvXnے`JXQ󙐂ˁ`ZpfH~QtJlpvnJ`ےdQZ|~f`HAbےZdQbtpvnXv`fbHAZpdrtAJvXnrےlJtApvnbHAZp˙rtAJlvXnہJXQrlJtAv`fHfpۂrXQtbdvpfHr˂pQXb㉀f۝`vtbAdZ|JJKKKKKKKKKKKKKKKKKKKKKKKKKKKKK \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv31_1.dat b/mpdf/qrcode/data/qrv31_1.dat deleted file mode 100644 index 98ce564..0000000 --- a/mpdf/qrcode/data/qrv31_1.dat +++ /dev/null @@ -1,281 +0,0 @@ -}~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqrqpopopopopopopopopopopopmnmnmnmnklklklklklklklklijijijiijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQPOPOOOOOOPOPOPOPMNMNMNMNMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:78787878787878786565555556565656434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!    }~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqropopopopopopopopopopopopmnmnmnmnklklklklklklklkliiiijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQOPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:78787878787878785656565656565656434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!     }~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqropopopopopopopopopopopopmnmnmnmnklklklklklklklkljijijijijijiiiiihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQOPOPOPOPOOOOOOPOMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:78787878787878785656565655555565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        }~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqropopopopopopopoponmnmnmnmnmnmnmnklklklklklklklkljijijijiijijijijhghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSRQRQRQRQRQOPOPOPOPPOPOPOPOMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABABABABABA@?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:78787878787878785656565665656543434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        }~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqropopopopopopopopmnmnmnmnmnmnmnmnklklklklklklklkljijijijiijijijijhghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQRQRQRQRQOPOPOPOPPOPOPOPOMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:78787878787656565656565643434343434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        }~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqropopopopopopopopmnmnmnmnmnmnmnmnklklklklklklklkljijijijiijijijijhghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQRQRQRQRQOPOPOPOPPOPOPOPOMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:78787878565555565656565643434343434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        }~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqropopopopopopopopmnmnmnmnmnmnmnmnklklklklklklklkljijijiiiijijijijhghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQRQRQRQRQOPOOOOOOPOPOPOPOMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:78787878565656565655555543434343434343434343432121212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        }~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqropopopopopopopopmnmnmnmnmnmnmnmnklklklklklklklkliiijijijijijijijhghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:78787878565656566565656543434343434343432121212121212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        }~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqropopopopopopopopmnmnmnmnmnmnmnmnklklklklklklklklijijijijijiiiiiihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOOOOOOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:9:9:987878787878565656566565656543434343434343432121212121212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('('('('&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        }~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqropopopopopopopopmnmnmnmnmnmnmnmnklklklklklklklklijijijijjijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;<9:9:9:9:78787878787878785656565665656565434343434343434321212121212121212121210/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        }~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvutstststststststststststqrqrqrqrqrqrqrqropopopopopopopopmnmnmnmnmnmnmnmnklklklklklklkjijijijijijhghghghghghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<;<;<;<;<9:9:9:9:78787878787878785656555565656565434343434343434321212121212121210/0/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        ~}~}~}~}~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststststststqrqrqrqrqrqrqrqropopopopopopopopmnmnmnmnmnmnmnmnklklklklijijiiiiijijijijhghghghghghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<;<;<;<;<9:9:9:9:78787878787878785565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        }~}~}~}~}~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststststststqrqrqrqrqrqrqrqropopopopopopopopmnmnmnmnmnmnmnmnklklklklijijijijijijiiiihghghghghghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOOOOOOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<;<;<;<;:9:9:9:9:78787878787878786565656565555556434343434343434321212121212121210/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        }~}~}~}~}~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststsrqrqrqrqrqrqrqrqrqrqrqropopopopopopopopmnmnmnmnmnmnmnmnklklklklijijijijiijijijihghghghghghghghgfefefefefefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQOPOPOPOPOPOOOOOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:78787878787878786565656556565656434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!      }~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqrqrqrqrqropopopopopopopopmnmnmnmnmnmnmnmlklklklklijijijijjijijijihghghghghghghghgfefefefefefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:78787878787878786565656556565656434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!    }~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqrqrqrqrqropopopopopopopopmnmnmnmnklklklklklklklklijijijijjijijijihghghghghghghghgfefefefefefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQPOPOOPOPOPOPMNMNMNMNMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:78787878787878786565656556565656434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!             - - - - - - - - - -          - - - - - - - -         - - - - - - - -         - - - - - - - -         - - - - - - - -         - - - - - - - -         - - - - - - - -          - - - - - - - -             - - - - - - - -             - - - - - - - -           - - - - - - - -         - - - - - - - -         - - - - - - - -         - - - - - - - - - -         - - - - - - - - - - - -         - - - - - - - - - - - -LLKKJJII - - EEFFGGHHEEDDCCBBeeffgghheeddccbb ,--..//0lmmnnoopmllkkjji-,,++**)TUUVVWWXEDDCCBBA<==>>??@|}}~~]\\[[ZZY$%%&&''(deeffgghuttssrrq54433221 LMMNNOOPMLLKKJJI - - BCCDDEEF43322110``aabbccttssrrqq44332211 MMNNOOPPLLKKJJII - - 55667788uuvvwwxxddccbbaa$$##""!! ]]^^__``||{{zzyy<<;;::99EEFFGGHHTTSSRRQQ--..//00mmnnooppbbaa``__@@AABBCCCBBAA@@? EFFGGHHITSSRRQQP-..//001mnnooppqlkkjjiih,++**))(UVVWWXXYDCCBBAA@=>>??@@A}~~\[[ZZYYX%&&''(()effgghhitssrrqqp43322110`aabbccdeddccbba44556789{||}}~~[[ZZYYXX&&''(())ffgghhiissrrqqpp33221100NNOOPPQQKKJJIIHH - - 66778899vvwwxxyyccbbaa``##""!!  !!^^__``aa{{zzyyxx;;::9988 FFGGHHIIDDCCBBAAHHGGFFEE - - IIJJKKLLAA@@??>>!!""iiooppqqaa``__^^01122334pqqrrsstihhggffe)((''&&%XYYZZ[[\~~}A@@??>>=@AABBCCDYXXWWVVU())**++,hiijjkklqppoonnm100//..-PQQRRSSTIHHGGFFE FGGHHIIJ~~}}||{0//..--, !!""ddeeffggppoonnmm00//..--QQRRSSTTHHGGFFEE99::;;<>==<<; - - IJJKKLLMPOONNMML 12233445qrrssttuhggffeed(''&&%%$YZZ[[\\]~~}}|@??>>==<ABBCCDDEXWWVVUUT)**++,,-ijjkkllmpoonnmml0//..--,deeffggha``__^^]:;;<<==>WWVVUUTT**++,,--jjkkllmmoonnmmll//..--,,RRSSTTUUGGFFEEDD::;;<<==zz{{||}}__^^]]\\""##$$%%bbccddeewwvvuutt77665544 - - JJKKLLMM@@??>>==DDCCBBAA MMNNOOPP==<<;;55##$$%%&&rrssttuu]]\\[[ZZ45566778tuuvvwwxeddccbba%$$##""! \]]^^__`}||{{zzy=<<;;::9DEEFFGGHUTTSSRRQ,--..//0lmmnnoopmllkkjji-,,++**)TUUVVWWXEDDCCBBAJKKLLMMN{zzyyxxw,++**))(##$$%%&&hhiijklmllkkjjii,,++**))UUVVWWXXDDCCBBAA==>>??@@}}~~\\[[ZZYY%%&&''((eeffgghhttssrrqq44332211 MMNNOOPPLLKKJJII - - 55667788uuvvwwxxZZYYXXWW - - HHIIJJKK~~}}|;:987655 MNNOOPPQLKKJJIIH - - 56677889uvvwwxxydccbbaa`$##""!!  !]^^__``a|{{zzyyx<;;::998 EFFGGHHITSSRRQQP-..//001mnnooppqlkkjjiih,++**))(!!"hiiooppq]\\[[ZZY ->??@@AABSSRRQQPP..//0011nnooppqqkkjjiihh++**))((VVWWXXYYCCBBAA@@>>??@@AA~~[[ZZYYXX&&''(())ffgghhiissrrqqpp33221100NNOOPPQQ<<;;5544~~}}@@??>>==QQRRSSTT44332211''(())**vvwwxxyyYYXXWWVV899::;;>=NOOUUVVWwvvuutts(''&&%%$''(())**nooppqqrhhggffee((''&&%%YYZZ[[\\~~}}@@??>>==AABBCCDDXXWWVVUU))**++,,iijjkkllppoonnmm00//..--QQRRSSTTHHGGFFEE99::;;<>==<<BBCCDDEEWWVVUUTT**++,,--jjkkllmmoonnmmll//..--,,RRSSTTUU33221100||{{zzyy<<;;::99UUVVWWXX~~}}||00//..--++,,--..zz{{||}}UUTSRQPO -<==>>??@|}}~~]\\[[ZZY$%%&&''(deeffgghuttssrrq54433221 LMMNNOOPMLLKKJJI - - 45566778tuuvvwwxeddccbba%$$##""! \]]^^__`}||{{zzy=<<;;::9 - - WXXYYZZ[srrqqppo$##""!!++,,--..rssttuuvddccbbaa$$##""!! ]]^^__``||{{zzyy<<;;::99EEFFGGHHTTSSRRQQ--..//00mmnnooppllkkjjii,,++**))UUVVWWXXDDCCBBAA==>>??@@}}~~MMLLKKJJ UUVVWWXXxwwvvuut00//..--UVVWWXXYDCCBBAA@=>>??@@A}~~\[[ZZYYX%&&''(()effgghhitssrrqqp43322110 MNNOOPPQLKKJJIIH - - 56677889uvvwwxxydccbbaa`$##""!! &''(())*uvvwwxxyUOONNMMLFGGHHIIJKKJJIIHH - - 66778899vvwwxxyyccbbaa``##""!!  !!^^__``aa{{zzyyxx;;::9988 FFGGHHIISSRRQQPP..//0011nnooppqqkkjjiihh++**))((VVWWXXYY~~}}||{{//..--,,xxwwvvuu88776655YYZZ[[\\{{zzyyxx,,++**))//001122~~ONNMMLLK - @AABBCCDYXXWWVVU())**++,hiijjkklqppoonnm100//..-PQQRRSSTIHHGGFFE 899::;;>==AABBCCDDIIHHGGFF - - YYZZ[[\\tssrrqqp,,++**))YZZ[[\\]~~}}|@??>>==<ABBCCDDEXWWVVUUT)**++,,-ijjkkllmpoonnmml0//..--,QRRSSTTUHGGFFEED9::;;<<=yzz{{||}`__^^]]\ *++,,--.yzz{{||}LKKJJIIH JKKLLMMNGGFFEEDD::;;<<==zz{{||}}__^^]]\\""##$$%%bbccddeewwvvuutt77665544 - - JJKKLLMMOONNMMLL 22334455rrssttuuggffeedd''&&%%$$ZZ[[\\]]zzyyxxww++**))((ttssrrqq44332211 ]]^^__``wwvvuutt((''&&%%334455;;KJJIIHHGDEEFFGGHUTTSSRRQ,--..//0lmmnnoopmllkkjji-,,++**)TUUVVWWXEDDCCBBA<==>>??@|}}~~]\\[[ZZY$%%&&''(deeffgghuttssrrq54433221_``aabbcfeeddccb33445567z{{||}}~\\[[ZZYY%%&&''((eeffgghhttssrrqq44332211 MMNNOOPPLLKKJJII - - 55667788uuvvwwxxddccbbaa$$##""!! ]]^^__``||{{zzyy<<;;::99EEFFGGHHEEDDCCBB]]^^__``poonmlkj((''&&%% !]^^__``a|{{zzyyx<;;::998 EFFGGHHITSSRRQQP-..//001mnnooppqlkkjjiih,++**))(UVVWWXXYDCCBBAA@=>>??@@A}~~\[[ZZYYX.//00112}~~HGGFFEED - - NOOPQRSTCCBBAA@@>>??@@AA~~[[ZZYYXX&&''(())ffgghhiissrrqqpp33221100NNOOPPQQKKJJIIHH - - 66778899vvwwxxyyccbbaa``##""!!  !!^^__``aavvuuttss''&&%%$$ppoonnmm00//..--!!""##$$aabbccddssrrqqpp$$##""!!<<==>>??GFFEEDDC - - HIIJJKKLQPPOONNM 01122334pqqrrsstihhggffe)((''&&%XYYZZ[[\~~}A@@??>>=@AABBCCDYXXWWVVU())**++,hiijjkklqppoonnm100//..-cddeeffgbaa``__^89:;;<<=~XXWWVVUU))**++,,iijjkkllppoonnmm00//..--QQRRSSTTHHGGFFEE99::;;<>aabbccddiihhggff$$##""!!!""##$$%abbccddexwwvvuut87766554 - - IJJKKLLMPOONNMML 12233445qrrssttuhggffeed(''&&%%$YZZ[[\\]~~}}|@??>>==<ABBCCDDEXWWVVUUT2334455;DCCBBAA@ UUVVWWXX~~}}||??>>==<<BBCCDDEEWWVVUUTT**++,,--jjkkllmmoonnmmll//..--,,RRSSTTUUGGFFEEDD::;;<<==zz{{||}}__^^]]\\""##$$%%bbccddeerrqqppoo##""!!llkkjjii,,++**))%%&&''((eeffgghhooiihhgg@@AABBCCCBBAA@@? LMMNNOOPMLLKKJJI - - 45566778tuuvvwwxeddccbba%$$##""! \]]^^__`}||{{zzy=<<;;::9DEEFFGGHUTTSSRRQ,--..//0lmmnnoopmllkkjji-,,++**)!ghhiioop^]]\\[[Z =>>??@@ATTSSRRQQ--..//00mmnnooppllkkjjii,,++**))UUVVWWXXDDCCBBAA==>>??@@}}~~\\[[ZZYY%%&&''((eeffgghhttssrrqq44332211 MMNNOOPP==<<;;55eeffgghheeddccbb %&&''(()effgghhitssrrqqp43322110 MNNOOPPQLKKJJIIH - - 56677889uvvwwxxydccbbaa`$##""!!  !]^^__``a|{{zzyyx<;;::998 EFFGGHHITSSRRQQP;<<==>>?@??>>==<YYZZ[[\\{{zzyyxx;;::9988 FFGGHHIISSRRQQPP..//0011nnooppqqkkjjiihh++**))((VVWWXXYYCCBBAA@@>>??@@AA~~[[ZZYYXX&&''(())ffgghhiiiihhggffhhggffee((''&&%%))**++,,iijjkkllffeeddccDDEEFFGG?>>==<<;PQQRRSSTIHHGGFFE 899::;;>==AABBCCDDXXWWVVUU))**++,,iijjkkllppoonnmm00//..--QQRRSSTT44332211!!""iiooppqqaa``__^^)**++,,-ijjkkllmpoonnmml0//..--,QRRSSTTUHGGFFEED9::;;<<=yzz{{||}`__^^]]\ !""##$$%abbccddexwwvvuut87766554 - - IJJKKLLMPOONNMML ?@@AABBC<;;55443]]^^__``wwvvuutt77665544 - - JJKKLLMMOONNMMLL 22334455rrssttuuggffeedd''&&%%$$ZZ[[\\]]~~}}||??>>==<<BBCCDDEEWWVVUUTT**++,,--jjkkllmmeeddccbbddccbbaa$$##""!!--..//00mmnnooppbbaa``__HHIIJJKK~~}}|;:987655TUUVVWWXEDDCCBBA<==>>??@|}}~~]\\[[ZZY$%%&&''(deeffgghuttssrrq54433221 LMMNNOOPMLLKKJJI - - 45566778tuuvvwwxeddccbba%$$##""!%&&''(()tuuvvwwxVUUOONNMEFFGGHHILLKKJJII - - 55667788uuvvwwxxddccbbaa$$##""!! ]]^^__``||{{zzyy<<;;::99EEFFGGHHTTSSRRQQ--..//00mmnnooppllkkjjii,,++**))UUVVWWXX~~}}||00//..--##$$%%&&rrssttuu]]\\[[ZZ-..//001mnnooppqlkkjjiih,++**))(UVVWWXXYDCCBBAA@=>>??@@A}~~\[[ZZYYX%&&''(()effgghhitssrrqqp43322110 MNNOOPPQLKKJJIIH - - CDDEEFFG~3221100/aabbccddssrrqqpp33221100NNOOPPQQKKJJIIHH - - 66778899vvwwxxyyccbbaa``##""!!  !!^^__``aa{{zzyyxx;;::9988 FFGGHHIISSRRQQPP..//0011nnooppqqaa``__^^``__^^]] 11223344qqrrsstt^^]]\\[[ LLMMNNOO|{{zzyyx44332211XYYZZ[[\~~}A@@??>>=@AABBCCDYXXWWVVU())**++,hiijjkklqppoonnm100//..-PQQRRSSTIHHGGFFE 899::;;>==<ABBCCDDEXWWVVUUT)**++,,-ijjkkllmpoonnmml0//..--,QRRSSTTUHGGFFEEDGHHIIJJK~}}||{{z/..--,,+ !!""##eeffgghhoonnmmll//..--,,RRSSTTUUGGFFEEDD::;;<<==zz{{||}}__^^]]\\""##$$%%bbccddeewwvvuutt77665544 - - JJKKLLMMOONNMMLL 22334455rrssttuu]]\\[[ZZ \\[[ZZYY55667788uuvvwwxxZZYYXXWW - - UUVVWWXXxwwvvuut00//..-- \]]^^__`}||{{zzy=<<;;::9DEEFFGGHUTTSSRRQ,--..//0lmmnnoopmllkkjji-,,++**)TUUVVWWXEDDCCBBA<==>>??@|}}~~]\\[[ZZY-..//001|}}~~IHHGGFFE - - MNNOOPQRDDCCBBAA==>>??@@}}~~\\[[ZZYY%%&&''((eeffgghhttssrrqq44332211 MMNNOOPPLLKKJJII - - 55667788uuvvwwxxddccbbaa$$##""!! ]]^^__``wwvvuutt((''&&%%++,,--..zz{{||}}UUTSRQPO -56677889uvvwwxxydccbbaa`$##""!!  !]^^__``a|{{zzyyx<;;::998 EFFGGHHITSSRRQQP-..//001mnnooppqlkkjjiih,++**))(UVVWWXXYDCCBBAA@KLLMMNNOzyyxxwwv+**))(('$$%%&&''iijklmnokkjjiihh++**))((VVWWXXYYCCBBAA@@>>??@@AA~~[[ZZYYXX&&''(())ffgghhiissrrqqpp33221100NNOOPPQQKKJJIIHH - - 66778899vvwwxxyyYYXXWWVV - - XXWWVVUU99::;;<>=@AABBCCDYXXWWVVU12233445EDDCCBBA STUUVVWW~~}}@@??>>==AABBCCDDXXWWVVUU))**++,,iijjkkllppoonnmm00//..--QQRRSSTTHHGGFFEE99::;;<>==< OUUVVWWXvuuttssr'&&%%$$#(())**++oppqqrrsggffeedd''&&%%$$ZZ[[\\]]~~}}||??>>==<<BBCCDDEEWWVVUUTT**++,,--jjkkllmmoonnmmll//..--,,RRSSTTUUGGFFEEDD::;;<<==zz{{||}}UUOONNMMTTSSRRQQ==>>??@@}}~~MMLLKKJJ]]^^__``poonmlkj((''&&%%$%%&&''(deeffgghuttssrrq54433221 LMMNNOOPMLLKKJJI - - 45566778tuuvvwwxeddccbba%$$##""! \]]^^__`}||{{zzy=<<;;::9DEEFFGGHUTTSSRRQ5;;<<==>A@@??>>=XXYYZZ[[||{{zzyy<<;;::99EEFFGGHHTTSSRRQQ--..//00mmnnooppllkkjjii,,++**))UUVVWWXXDDCCBBAA==>>??@@}}~~\\[[ZZYY%%&&''((eeffgghhooiihhgg334455;;KJJIIHHG=>>??@@A}~~\[[ZZYYX%&&''(()effgghhitssrrqqp43322110 MNNOOPPQLKKJJIIH - - 56677889uvvwwxxydccbbaa`$##""!!  !]^^__``a|{{zzyyx<;;::998 - - XYYZZ[[\rqqppooi#""!!,,--..//sttuuvvwccbbaa``##""!!  !!^^__``aa{{zzyyxx;;::9988 FFGGHHIISSRRQQPP..//0011nnooppqqkkjjiihh++**))((VVWWXXYYCCBBAA@@>>??@@AA~~LLKKJJII - -PPOONNMM AABBCCDDIIHHGGFFaabbccddiihhggff$$##""!!())**++,hiijjkklqppoonnm100//..-PQQRRSSTIHHGGFFE 899::;;??@@AAB=<<;;554\\]]^^__xxwwvvuu88776655 - - IIJJKKLLPPOONNMM 11223344qqrrsstthhggffee((''&&%%YYZZ[[\\~~}}@@??>>==AABBCCDDXXWWVVUU))**++,,iijjkkllffeeddcc<<==>>??GFFEEDDCABBCCDDEXWWVVUUT)**++,,-ijjkkllmpoonnmml0//..--,QRRSSTTUHGGFFEED9::;;<<=yzz{{||}`__^^]]\ !""##$$%abbccddexwwvvuut87766554 \]]^^__`ihhggffe00112233wxxyyzz{__^^]]\\""##$$%%bbccddeewwvvuutt77665544 - - JJKKLLMMOONNMMLL 22334455rrssttuuggffeedd''&&%%$$ZZ[[\\]]~~}}||??>>==<<BBCCDDEEHHGGFFEE !!""##ooppqqrr``__^^]]*++,,--.jkkllmmnonnmmllk/..--,,+RSSTTUUVGFFEEDDC:;;<<==>z{{||}}~_^^]]\\["##$$%%&bccddeefwvvuutts76655443 - JKKLLMMN=<<;;554#$$%%&&'rssttuuvQPPOONNM @AABBCCD$$%%&&''ssttuuvv\\[[ZZYY.//00112nooppqqrkjjiihhg+**))(('VWWXXYYZCBBAA@@?>??@@AAB~[ZZYYXXW&''(())*fgghhiijsrrqqppo3221100/NOOPPQQR43322110'(())**+vwwxxyyzMLLKKJJI - - DEEFFGGH(())**++wwxxyyzzXXWWVVUU 23344556rssttuuvgffeeddc'&&%%$$#Z[[\\]]^~~}}||{?>>==<<;BCCDDEEFWVVUUTTS*++,,--.jkkllmmnonnmmllk/..--,,+RSSTTUUV~~}}||{0//..--,+,,--../z{{||}}~IHHGGFFE - - HIIJJKKL,,--..//{{||}}~~TSRQPOON - - 6778899:vwwxxyyzcbbaa``_#""!!  !!"^__``aab{zzyyxxw;::99887 -FGGHHIIJSRRQQPPO.//00112nooppqqrkjjiihhg+**))(('VWWXXYYZ{zzyyxxw,++**))(/0011223~EDDCCBBA LMMNNOOP00112233NMMLLKKJ :;;<<==>z{{||}}~_^^]]\\["##$$%%&bccddeefwvvuutts76655443 - JKKLLMMNONNMMLLK 23344556rssttuuvgffeeddc'&&%%$$#Z[[\\]]^wvvuutts(''&&%%$34455;;<~~}A@@??>>=PQQRRSST4455;;<??@@AAB~[ZZYYXXW&''(())*fgghhiijsrrqqppo3221100/NOOPPQQRKJJIIHHG - - 6778899:vwwxxyyzcbbaa``_#""!!  !!"^__``aabsrrqqppo$##""!!<==>>??@}||{{zzy=<<;;::9TUUVVWWX==>>??@@FEEDDCCBBCCDDEEFWVVUUTTS*++,,--.jkkllmmnonnmmllk/..--,,+RSSTTUUVGFFEEDDC:;;<<==>z{{||}}~_^^]]\\["##$$%%&bccddeefoiihhggf@AABBCCDyxxwwvvu98877665XYYZZ[[\AABBCCDDBAA@@??> -FGGHHIIJSRRQQPPO.//00112nooppqqrkjjiihhg+**))(('VWWXXYYZCBBAA@@?>??@@AAB~[ZZYYXXW&''(())*fgghhiijfeeddccbDEEFFGGHuttssrrq54433221 \]]^^__`EEFFGGHH>==<<;;: - JKKLLMMNONNMMLLK 23344556rssttuuvgffeeddc'&&%%$$#Z[[\\]]^~~}}||{?>>==<<;BCCDDEEFWVVUUTTS*++,,--.jkkllmmnbaa``__^HIIJJKKLqppoonnm100//..- !!""##$`aabbccdIIJJKKLL~~}}||{98765544NOOPPQQRKJJIIHHG - - 6778899:vwwxxyyzcbbaa``_#""!!  !!"^__``aab{zzyyxxw;::99887 -FGGHHIIJSRRQQPPO.//00112nooppqqr^]]\\[[Z LMMNNOOUmllkkjji-,,++**)$%%&&''(deeffgghMMNNOOUU{zzyyxxw33221100RSSTTUUVGFFEEDDC:;;<<==>z{{||}}~_^^]]\\["##$$%%&bccddeefwvvuutts76655443 - JKKLLMMNONNMMLLK 23344556rssttuuvZYYXXWWV - - -UVVWWXXYihhggffe)((''&&%())**++,hiijjkklVVWWXXYYwvvuutts//..--,,VWWXXYYZCBBAA@@?>??@@AAB~[ZZYYXXW&''(())*fgghhiijsrrqqppo3221100/NOOPPQQRKJJIIHHG - - 6778899:vwwxxyyzVUUOONNM - YZZ[[\\]eddccbba%$$##""!,--..//0lmmnnoopZZ[[\\]]srrqqppo++**))((Z[[\\]]^~~}}||{?>>==<<;BCCDDEEFWVVUUTTS*++,,--.jkkllmmnonnmmllk/..--,,+RSSTTUUVGFFEEDDC:;;<<==>z{{||}}~MLLKKJJI]^^__``aa``__^^]! 01122334pqqrrsst^^__``aaonmlkjii''&&%%$$ !!"^__``aab{zzyyxxw;::99887 -FGGHHIIJSRRQQPPO.//00112nooppqqrkjjiihhg+**))(('VWWXXYYZCBBAA@@?>??@@AAB~IHHGGFFEabbccdde]\\[[ZZY45566778tuuvvwwxbbccddeehhggffee##""!! "##$$%%&bccddeefwvvuutts76655443 - JKKLLMMNONNMMLLK 23344556rssttuuvgffeeddc'&&%%$$#Z[[\\]]^~~}}||{?>>==<<;BCCDDEEFEDDCCBBAeffgghhiYXXWWVVU899::;;>=!!""#iooppqqrUTTSSRRQ<==>>??@|}}~~ZHAbے`JXQr˂p|ZdQbtlJ`f~˂rXQbHAZtAJl璂rAJlf`vXnvpQr˂pZHAb|ZdQbtlnXv`f~HfpvrXQJ`ےbHAdrtAJltnvpfH~ˑZHAbے`JXbtlJtArdf~HfpvnXv`bHAZpQZ|dJltnvpfnvpZHAbے`JXQtlJtArdf~HfpvnXv`bHAZp˂rJltbdQZ|H~f`vXnے`JXQr˂pJtAd|ZdQbtlJnXv`f~Hp˂rXQJ`ےtbdQdrtAJfH~bJQAbے`JtAd|ZdQbtlJtnXv`f~H˂rXQJ`ےbdQZ|drtAvXnvpfHr˂pZHAbہJXQrlJtArd|f~HfpvQJ`ےbHAZpdrtAJlt~f`nvpے`JXpZHAJtArJtArd~HfpvnJ`ےbHAZpdrtAJltbvpfH~f`HAbے`JXQr˂pZrd|ZdQbtpvnXv`fbHAZp˂rXQltbdQZ|Hf`vXnvpfHZHAbے`JXQr˂p|ZdQbtlJtArdHfpvJ`p˂p`ےtbdQZtbdQnvpfH~ˑZHAbے`JXbtlJtArdf~HfpvnrXQJ`bHAZp˂AJltbdQZ|fH~f`vXے`JXQr˂pJtArd|ZdQfpvnXv`fHrXQrtAJlbdQZ|~f`vfH~ے`JXQr˂ptArd|ZdQbfpvnXv`fHfp˂rXQJ`ےbdQZ|drtA`vXnvpfr˂pZHAb|ZdQbtlJtArdf~HfpvXQJ`ےbHAZZ|dltbf`vXr˂pJXQrZdQbtlJtArdf~HfpvQJ`ےbHAZpdrtAJltvpfH~f`ZHAbے`JXQbtlArd|ZdQbtfpvnXv`˙bHAZp˂rXJltbdQZ|vXnfH~Qr˂pbے`ZdQbt|ZdpvnXv`fbHAZp˂rXQltbdQZ|~f`vXn`JXQr˂pZHAے`ZdQbtlJtAXv`f~Hf˂rXQJ`ےdQZ|drtAJvXnvpfH~fZے`JXQr˂pZHAbtlJtArdf~HnXHrXQJbHAZp|drZ|dfH~f`vXے`JXQr˂pJtArd|ZdQfpvnXv`ےHAZp˂rXQJ`ۉbdQZ|drtf`vXnvpQr˂pZHAb|ZdQbtlnXv`f~HfpvJ`ےtbddrtAXnvf`vnr˂pZHAb|ZdQbtlJnXv`f~HpvnXQJ`ےbHAZdrtAJltvpfH~fZHAbے`JXQtlJtArdf~HfpvnXv`bHAZp˂rrtAJldQZ|lnvpZHAbۉZAblJtArd|f~HfpvnXv`˙bHAZp˂rXJltbdQZ|~f`vXn`JXQr˂pJtAd|ZdQbtlJtnXv`f~H˂rXQJ`ےbdQZ|drtAvp`f`pfHZHAbJXQr˒lJtAQbJtAXv`f~Hf˂rXQJ`ےdQZ|drtAJvXnvpfH˂pZHAbےJXQrblJtArd|~HfpvnJ`ےbHAZpdrtAJltbvpfH~f`HAbrےZHAbے`JXQtArd|ZdQbXv`ffpv`ےb˂rXQtAJlrtAJlf`vXnvpQr˂pZHAb|ZdQbtlnXv`f~HZp˂rXQJ`ےbHAdrtAJltnvpfH~ˑZHAbے`JXbtlJtArdf~HfpvnrXQJ`bHAXQJ`QZ|dJltpfH~vpfHZHAbے`JXQtlJtArdf~HfpvrXQJ`bHAZp˂rJltbdQZ|H~f`vXnے`JXQr˂ptArd|ZdQbfpvnXv`fHfp˂rXQJ`ےtdrtbnfH~`JXQے`JXQArd|ZdQbtfpvnXv`fHfp˂rXQJ`ےbdQZ|drtAvXnvpfHr˂pZHAbہZdQbtlJtArdf~HfpvQJ`ےbHAZpdrtAJltvXnۅ~f`ے`JXp`JXrd|rdf~HfpvnJ`ےbHAZpdrtAJltbvpfH~f`HAbے`JXQrtlJrd|ZdQbtpvnXv`fbHAZp˂rXQltbdQZ|~f`vXn˂pZHA`JXQrے`JXQr˂p|ZdQbtlJ~HfnXv`HAZp˂J`ےtbQZdtbdQnvpfH~ˑZHAbے`JXbtlJtArdf~HfpvrXQJ`ےbHAZdrtAJltbdQZ|fH~f`vXے`JXQr˂pJtArd|ZdQfpvnXv`p˂ےbHrtAJlbdQZ|lf`v~f`ے`JXQr˂ptArd|ZdQbfpvnXv`ےHAZp˂rXQJ`ےbdQZ|drtA`vXnvpfr˂pZHAb|ZdQbtlJnXv`f~HpvnXQJ`ےbHAZtAJl璀vp`vpfr˂pr˂pZdQbtlJtnXv`f~HvnQJ`ےbHAZpdrtAJltvpfH~f`ZHAbے`JXQlJtArd|f~HfpvnXv`˙bHAZp˂rXJltbdQZ|vpfHvXnQHAbQrbtZdQbt琕~HfpvnXv`fbHAZp˂rXQltbdQZ|~f`vXn`JXQr˂pZtAd|ZdQbtlJtAXv`f~Hf˂rXQJ`ےdQZ|drtAJvXnvpfHbے`˂pZr˂pZHAbtlJtArdpvnf~HrXQJbHAZprtAJlZ|dnfH~f`vXے`JXQr˂pJtArd|ZdQfpvnXv`bHAZp˂AJltbdQZ|dtAf`vXnvpQr˂pZHAb|ZdQbtlnXv`f~HrXQJ`AZp˂|dtbdXnvvXnr˂pZHAb|ZdQbtlJnXv`f~Hp˂rXQJ`ےbHAZdrtAJltvpfH~fZHAbے`JXQtlJtArdf~HfpvrXQJ`bHAZp˂rtbdQZvXnH~fZHAbZHAblJtArd|f~HfpvrXQJ`ۙbHAZp˂rXJltbdQZ|~f`vXn`JXQr˂pArd|ZdQbtfpvnXv`fHfp˂rXQJ`ےbdQZ|drtA~f`vpfH`JXQlJA|lJtApvnXv`fHfp˂rXQJ`ےdQZ|drtAJvXnvpfH˂pZHAbےZdQbtlJtArdf~HfpvnJ`ےbHAZpdrtAJltbvpfH~f`JXQrHAbےZHAbے`JXQtArd|ZdQbXv`ffpv`ے˂btbdvff`vXnvpQr˂pZHAb|ZdQbtlnXv`f~HZp˂rXQJ`ۉbdQZ|drtJltnvpfH~ˑZHAbے`JXbtlJtArdf~HfpvbHArXQJ`rtAJlQZ|dpfH~vpfHZHAbے`JXQtlJtArdf~HfpvXQJ`ےbHAZdrtAJltbdQZ|H~f`vXnے`JXQr˂ptArd|ZdQbfpvnXv`ےHAZp˂rXQJ`ے|drvpfH`vXn`JQrے`JXQArd|ZdQbtfpvnXv`˒HAZp˂rXQJ`ےbdQZ|drtAvXnvpfHr˂pZHAbہZdQbtlJtnXv`f~HvnQJ`ےbHAZpdrtAJltvXnۅ~f`r˂pZdQbtrdZQbXv`f~HfvnrJ`ےbHAZpdrtAJltbvpfH~f`HAbے`JXQrlJtArd|~HfpvnXv`fbHAZp˂rXQltbdQZ|~f`vXn˂pZHA`JXQrے`JXQr˂p|ZdQbtlJ~HfnXv`rXQJ`HAZdQZ|df`vXnvpfH~ˑZHAbے`JXbtlJtArdf~HfpvrXQJ`ےbHAdrtAJltbnvpfH~f`vXے`JXQr˂pJtArd|ZdQfpvnXv`Zp˂ےbHtbdQrtAJlfvXn~f`ے`JXQr˂ptArd|ZdQbfpvnXv`bHAZp˂rJltbdQZ|dtAJ`vXnvpfr˂pZHAb|ZdQbtlJnXv`f~Hp˂rXQJ`ےbHAZtAJl~f`vpfpZHAbr˂pZdQbtlJtnXv`f~H˂rXQJ`ےbHAZdrtAJltvpfH~f`ZHAbے`JXQlJtArd|f~HfpvrXQJ`ۙbHAZp˂rXJltbdQZ|vpfHXvXHZHAbۉlJttlJ~HfpvnXQJ`ےbHAZp˂rXQltbdQZ|~f`vXn`JXQr˂pZrd|ZdQbtpvnXv`fHfp˂rXQJ`ےdQZ|drtAJvXnvpfHbے`˂p`r˂pZHAbtlJtArdp`fpvnےbHArtAJrtAJlnvpfH~fZHAbے`JXQr˂pJtArd|ZdQfpvnXv`bHAZp˂AJltbdQZ|fHf`vXnvpQr˂pZHAb|ZdQbtlnXv`f~HrXQJ`pAZp`Z|dtbdvpfHvXnvfr˂pZHAb|ZdQbtlJnXv`f~Hp˂rXQJ`ےbdQZ|drtAltbvpfH~fZHAbے`JXQtlJtArdf~HfpvXQJ`ےbHAZdrtAtbdQtAvXnH~fے`JZAb`lJtArd|f~HfpvQJ`ےbHAZpdrtAJltbdQZ|~f`vXn`JXQr˂pArd|ZdQbtfpvnXv`˒HAZp˂rXQJ`ےbdQZ|drtAnvp~fZH`JXQArd|tArdpvnXv`fHAZp˂rXQJ`ےdQZ|drtAJvXnvpfH˂pZHAbےZdQbtlJtAXv`f~HfvnrJ`ےbHAZpdrtAJltbvpfH~f`pZHAbJXQrZHAbے`JXQtArd|ZdQb~HfpXv`fZp˂bdQZ|tbdfH~f`vXے`JXQr˂pZHAۂ|ZdQbtlnXv`f~HZp˂rXQJ`ۉbdQZ|drtf`vXnvpfH~ˑZHAbے`JXbtlJtArdf~Hfpv˂rXbHArtAJlQZ|l~f`H~fZHAbے`JXQtlJtArdf~HfpvXQJ`ےbHAZdrtAJltnvpH~f`vXnے`JXQr˂ptArd|ZdQbfpvnXv`bHAZp˂rdQZ|Jltvp`v`pfHXQr˂JXQrArd|ZdQbtfpvnXv`˙bHAZp˂rXJltbdQZ|dtAJlvXnvpfHr˂pZHAbہZdQbtlJtnXv`f~H˂rXQJ`ےbHAZdrtAJltfH~Abrے`ZdQbt|ZdQbXv`f~Hf˂rXQJ`ےbHAZdrtAJltbvpfH~f`HAbے`JXQrlJtArd|~HfpvnXQJ`ےbHAZp˂rXQltbdQZ|~f`vXnے`J˂pZHAے`JXQr˂p|ZdQbtlJvnX~HfrXQJ`drtAQZrtAf`vXnvpQr˂pZHAb`JXQbtlJtArdf~HfpvrXQJ`ےbHAdrtAJltnvpfH~fZHAbے`JXQr˂pJtArd|ZdQfpvnXv`QJ`ےZp˂tdrttbnvXnZHAbے`JXQr˂ptArd|ZdQbfpvnXv`bHAZp˂rJltbdQZ|fHf`vXnvpfr˂pZHAb|ZdQbtlJnXv`f~Hp˂rXQJ`ےdrtAJbdQZ|Xnv~f`pZHAbpZHAZdQbtlJtnXv`f~H˂rXQJ`ےbdQZ|drtAtbvpfH~f`ZHAbے`JXQlJtArd|f~HfpvQJ`ےbHAZpdrtAJltbdQZ|f`vXpZHAJXQrlJArtlJ~HfpvnJ`ےbHAZpdrtAJltbdQZ|~f`vXn`JXQr˂pZrd|ZdQbtpvnXv`fHAZp˂rXQJ`ےdQZ|drtAJvXnvpfHXQr˂bے`r˂pZHAbtlJtArdv`fpvnےbHAJltJltnvpfH~ˑZHAbے`JXrbtlJtArd|ZdQfpvnXv`bHAZp˂AJltbdQZ|fH~f`vXے`JXQr˂pZHAۂ|ZdQbtlnXv`f~HbHAZprXQJ`AJltvpfvpfHے`JXQr˂pZHAے|ZdQbtlJnXv`f~Hp˂rXQJ`ےbdQZ|drtA`vXnvpfH~fZHAbے`JXQtlJtArdf~HfpvXQJ`ےbHAZltbdrtApfH~vXnے`Jbے`lJtArd|f~HfpvQJ`ےbHAZpdrtAJltnvp~f`vXn`JXQr˂pArd|ZdQbtfpvnXv`˙bHAZp˂rXJltbdQZ|dtAJlnvpbے`˂pZH|ZdQtArdpvnXv`fbHAZp˂rXQltbdQZ|dtAJlvXnvpfH˂pZHAbےZdQbtlJtAXv`f~Hf˂rXQJ`ےbHAZdrtAJltbvpfH~f`pZHAbJXQrZHAbے`JXQtArd|ZdQb~HfpXv`pXQJ`ےbdQZ|bdQZ|fH~f`vXے`JXQr˂pJtAd|ZdQbtlnXv`f~HZp˂rXQJ`ۉbdQZ|drtf`vXnvpQr˂pZHAb`JXQbtlJtArdf~Hfpv˂rXbHAbdQZ|f`vX~fvr˂pZHAb`JXQrtlJtArdf~HfpvXQJ`ےbHAZdrtAJltvpfH~fZHAbے`JXQr˂ptArd|ZdQbfpvnXv`bHAZp˂rdQZ|Jltf`vvpfHXQrZHJXQrArd|ZdQbtfpvnXv`˙bHAZp˂rXJltbdQZ|fHf`vXnvpfHr˂pZHAbہZdQbtlJtnXv`f~H˂rXQJ`ےbdQZ|drtAtbfH~JXQrAbے`btl|ZQblXv`f~Hf˂rXQJ`ےdQZ|drtAJtbnvpfH~f`HAbے`JXQrlJtArd|~HfpvnJ`ےbHAZpdrtAJltbdQZ|~f`vXnے`J˂p`Jے`JXQr˂p|ZdQbtlJv~˂rXQbHAZdrtAdrtAf`vXnvpQr˂pZHAb|ZdQbtlJtArdf~HfpvrXQJ`ےbHAdrtAJltnvpfH~ˑZHAbے`JXrbtlJtArd|ZdQfpvnXv`QJ`ےZp˂drtnvpnvpZHAbے`JXQbtltArd|ZdQbfpvnXv`bHAZp˂rJltbdQZ|H~f`vXnے`JXQr˂pZHAے|ZdQbtlJnXv`f~Hp˂rXQJ`ےdrtAJbdQZ|Xnv~f`Abے`pZA`ZdQbtlJtnXv`f~H˂rXQJ`ےbdQZ|drtAvXnvpfH~fZHAbے`JXQlJtArd|f~HfpvQJ`ےbHAZpdrtAJltnvp`vppZHAJXQrJtArdJtArd~HfpvnJ`ےbHAZpdrtAJltbvpf~f`vXn`JXQr˂pZrd|ZdQbtpvnXv`fbHAZp˂rXQltbdQZ|dtAJlvXnvpfHXQHAbXQrbtlJtArr˂pZHAbtlJtArdHfpvJ`ےp˂rJlbQZJltnvpfH~ˑZHAbے`JXbtlJtArdf~HfpvnXv`bHAZp˂AJltbdQZ|fH~f`vXے`JXQr˂pJtAd|ZdQbtlnXv`f~HrXQbHAZAJltfH~fH~ے`JXQr˂pJtAd|ZdQbtlJnXv`f~Hp˂rXQJ`ےbdQZ|drtA`vXnvpfr˂pZHAb`JXQrtlJtArdf~HfpvXQJ`ےbHAZl|dltbpfHXvXH~JXQrJXQrlJtArd|f~HfpvQJ`ےbHAZpdrtAJltvpfH~f`ZHAbے`JXQr˂pArd|ZdQbtfpvnXv`˙bHAZp˂rXJltbdQZ|vXnfH~bے`p˂p`|ZdQ|ZdpvnXv`fbHAZp˂rXQltbdQZ|Hf`vXnvpfH˂pZHAbےZdQbtlJtAXv`f~Hf˂rXQJ`ےdQZ|drtAJtbnvpfH~f`ے`JXQl|Zd|ZZHAbے`JXQtArd|ZdQbnXvbHAZpXQJ`ے|drbdQZ|fH~f`vXے`JXQr˂pJtArd|ZdQfpvnXv`fHZp˂rXQJ`ۉbdQZ|drtf`vXnvpQr˂pZHAb|ZdQbtlJtArdf~HfpvJ`ےdrtAdbdQtAf`vXf`vXr˂pZHAb|ZdQbtlJtArdf~HfpvXQJ`ےbHAZdrtAJltvpfH~fZHAbے`JXQbtltArd|ZdQbfpvnXv`bHAZp˂rrtAJldQZ|nvpfZHA˂pZHbtlArd|ZdQbtfpvnXv`˙bHAZp˂rXJltbdQZ|~f`vXn`JXQr˂pZHAے`ZdQbtlJtnXv`f~H˂rXQJ`ےbdQZ|drtAvpfHf`vXZHAbJXQrbtlQbtlXv`f~Hf˂rXQJ`ےdQZ|drtAJvXnvpfH~fZHAbے`JXQrlJtArd|~HfpvnJ`ےbHAZpdrtAJltbvpf~f`vXnr˂pdQbtdQbtl|ZdQlJtArnXv`nXv`bHAZp˂rXQtbdQZ|d~f`vXnہJXQr˂pZHAے`ZdQbtlJtAv`f~HfprXQJ`ےQZ|drtAJlvXnvpfH~frQrXb㉀ۑ󙐂ˁ`ZpfH~ㅐf۝`vtbAdZbtld|Zf~Hf~HrXQJ`ےQZ|drtAJlvXnvpfH˂pZHAbے`JXQrbtlJtArd|~HfpvnXJ`ےbHAZp˙rtAJltbdvpfH~f`˂pZH`JXQpJAHrQXb㉀f۝`vXnvˍ|drJtArddQbtfpvfpvJ`ےbHAZp˙rtAJltbdvpfH~f`Abے`JXQrlJtrd|ZdQbtvnXv`fbHAZp˂rXQtbdQZ|d~f`vXnAbے`r˂pˁ`ZQۑpJAHrXnvˍp|drQtJl|ZdQlJtArnvfnXv`bHAZp˂rXQtbdQZ|d~f`vXnہJXQr˂pZHAd|ZdQbtlJtAv`f~HfprXQJ`ےQZ|drtAJlvXnvpfHJXQrZHAbXb㉀ۑ󙐂ˁ`pfH~QtJltbAdZbtld|Z~HfpۍffpۂrXQJ`ےQZ|drtAJlvXnvpfH˂pZHAbے`ZdQbtlJtArdf~HfpvnXJ`ےbHAZp˙rtAJltbdvpfH~f`˂pZH`JXQpJAHQXbpfH~ㅐf۝`vtbAdZ|drJtAdQbdQtArdvnXvnrXJ`ےbHAZp˙rtAJltbdvpfH~f`Abے`JXQrlJtArd|~HfpvnXv`fbHAZp˂rXQtbdQZ|d~f`vXnAbے`r˂p`㉀ۑpJf۝`vXnvˍ|drQtJltlJf~v`fQJ`ےbHAZp˂rXQtbdQZ|d~f`vXnہJXQr˂pZHrd|ZdQbtvnXv`fHfpۂrXQJ`ےQZ|drtAJlvXnvpfHpZHAJXQrAHr󙐂XnvˍpfH~QtJltbAdZtArdHfvnX~HfpۙHAZp˂rXQJ`ےQZ|drtAJlvXnvpfH˂pZHAbے`ZdQbtlJtAv`f~HfpvnrXJ`ےbHAZp˙rtAJltbdvpfH~f`bے`˂pZHˁ`ZQXbpfH~ㅐf۝`vtbAdZ|dr|ZdQbv`fvnXvrXQJ`ےbHAZdrtAJltbdvpfH~f`Abے`JXQrlJtArd|~HfpvnXQJ`ےbHAZp˂rXQtbdQZ|d~f`vXnJXQrAbے`㉀ۑpJf۝`vXnvˍ|drQtJltlJ~Hfpf~HfJ`ےbHAZp˙rtAJltbdQZ|d~f`vXnہJXQr˂pZHrd|ZdQbtvnXv`fHAZp˂rXQJ`ےQZ|drtAJlvXnvpfHpZHAJXQrAHr󙐉XnvˍpfH~QtJltbAdZtArdtvnXpvnbHAZp˂rXQtbdQZ|dtAJlvXnvpfH˂pZHAbے`ZdQbtlJtAv`f~HfprXQJ`ےbHAZdrtAJltbdvpfH~f`bے`˂p`ZۑpJApfH~ㅐf۝`vtbAdZ|drlJtAv`fXv`frXQJ`ےQZ|drtAJltbnvpfH~f`Abے`JXQrlJtArd|~HfpvnXJ`ےbHAZp˙rtAJltbdQZ|d~f`vXnJXQHAbQXb㉀Hr󙐂ˁf۝`vXnvˍ|drQtJlrd|~Hfp~HfJ`ےbHAZp˙rtAJltbdvpfH~f`vXnہJXQr˂pZHrd|ZdQbtvnXv`fbHAZp˂rXQtbdQZ|dtAJlvXnvpfHے`JXۑpJAHr`ZQXbXnvˍpfH~QtJltbAdZZdQbtvnv`pvnbHAZp˂rXQtbdQZ|df`vXnvpfH˂pZHAbے`ZdQbtlJtAv`f~HfprXQJ`ےQZ|drtAJltbnvpfH~f`Qr˂p󙐂ˁ`ZۑpJApfH~ㅐf۝`vtbAdZ|drlJtAf~HXv`frXQJ`ےQZ|drtAJlvXnvpfH~fZHAbے`JXQrlJtArd|~HfpvnXJ`ےbHAZp˙rtAJltbdvpfH~f`vXnۑZHAbQXb㉀Hr󙐂ˁf۝`vXnvˍ|drQtJlrd|fpv~fpvJ`ےbHAZp˙rtAJltbdvpfH~f`Abے`JXQr˂pZHrd|ZdQbtvnXv`fbHAZp˂rXQtbdQZ|df`vXnvpfHے`JXۑp`ZQ`pJAHrXnvˍpfH~QtJltbAdZ| \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv31_2.dat b/mpdf/qrcode/data/qrv31_2.dat deleted file mode 100644 index 8bfc630..0000000 --- a/mpdf/qrcode/data/qrv31_2.dat +++ /dev/null @@ -1,281 +0,0 @@ -{|{|{|{|yzyzyzyzwxwxwxwxststststqrqrqrqrmnmnmnmniiiijijihghghghgdcdcdcdcbabababa{|{|{|{|yzyzyzyzwxwxwxwxststststqrqrqrqrmnmnmnmnjijijijihghghghgdcdcdcdcbabababa{|{|{|{|yzyzyzyzwvuvuvuvststststqrqrqrqrmnmnmnmnjijijijihghghghgdcdcdcdcbabababa{|{|{|{|yzyzyzyzuvuvuvuvststststqrqrqrqrmnmnmnmnjijijijihghghghgdcdcdcdcbabababa{|{|{|{|yzyzyzyzuvuvuvuvststststqrqrqrqrmnmnmnmnjijijijihghghghgdcdcdcdcbabababa{|{|{|{|yzyzyzyzuvuvuvuvststststqpopopopmnmnmnmnjijijiiihghghghgdcdcdcdcbabababa{|{|{|{|yzyzyzyzuvuvuvuvststststopopopopmnmnmnmniiijijijhghghghgdcdcdcdcbabababa{|{|{|{|yzyzyzyzuvuvuvuvststststopopopopmnmnmnmnijijijijhghghghgdcdcdcdcbabababa{|{|{|{|yzyzyzyzuvuvuvuvststststopopopopmnmnmnmnijijijijhghghghgdcdcdcdcbabababa{|{|{|{|yzyzyzyzuvuvuvuvststststopopopopmnmnmnmnijijijijfefefefedcdcdcdcbabababa{|{|{|{|yzyzyzyzuvuvuvuvststststopopopopmnmnmnmnijijijijfefefefedcdcdcdcbabababa{|{|{|{|yzyzyzyzuvuvuvuvststststopopopopmnmnmnmnijijiiiifefefefedcdcdcdcbabababa{|{|{|{|yzyzyzyzuvuvuvuvststststopopopopmnmnmnmniijijijifefefefedcdcdcdc`_`_`_`_{|{|{|{|yzyzyzyzuvuvuvuvststststopopopopmnmnmnmnjijijijifefefefedcdcdcdc`_`_`_`_{|{|{|{|yzyzyzyzuvuvuvuvststststopopopopmnmnmnmnjijijijifefefefedcdcdcdc`_`_`_`_~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvststststopopopopmnmnmnmnjijijijifefefefedcdcdcdc`_`_`_`_}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvststststopopopopmnmnmnmljijijijifefefefedcdcdcdc`_`_`_`_}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvststststopopopopklklklkljijiiiiifefefefedcdcdcdc`_`_`_`_}~}~}~}~{|{|{|{|yxwxwxwxuvuvuvuvststststopopopopklklklklijijijijfefefefedcdcdcdc`_`_`_`_}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvststststopopopopklklklklijijijijfefefefedcdcdcdc`_`_`_`_}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvststststopopopopklklklklijijijijfefefefedcdcdcdc`_`_`_`_}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvsrqrqrqropopopopklklklklijijijijfefefefedcdcdcdc`_`_`_`_}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqropopopopklklklklijijijijfefefefedcdcdcdc`_`_`_`_}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqropopopopklklklklijiiiiiifefefefedcdcdcdc`_`_`_`_^]^]^]^]}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqropopopopklklklkljijijijifefefefedcdcdcdc`_`_`_`_^]^]^]^]}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqropopopopklklklklhghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqropopopopklklklklhghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqropopopopklklklklhghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqropopopopklklklklhghghghgfefefefebabababa`_`_`_`_^]^]^]^]}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqropopopopklklklklhghghghgfefefefebabababa`_`_`_`_^]^]^]^]}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqropopopopklklklklhghghghgfefefefebabababa`_`_`_`_^]^]^]^]}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqropopopopklklklklhghghghgfefefefebabababa`_`_`_`_^]^]^]^]}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqropopopopklklklklhghghghgfefefefebabababa`_`_`_`_^]^]^]^]}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqropopopopklklklklhghghghgfefefefebabababa`_`_`_`_^]^]^]^]}~}~}~}~{zyzyzyzwxwxwxwxuvuvuvuvqrqrqrqropopopopklklklklhghghghgfefefefebabababa`_`_`_`_^]^]^]^]}~}~}~}~yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqropopopopklklklklhghghghgfefefefebabababa`_`_`_`_^]^]^]^]}~}~}~}~yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqropopopopklklklklhghghghgfefefefebabababa`_`_`_`_^]^]^]^]}~}~}~}~yzyzyzyzwxwxwxwxutstststqrqrqrqropopopopklklklklhghghghgfefefefebabababa`_`_`_`_^]^]^]^]}~}~}~}~yzyzyzyzwxwxwxwxststststqrqrqrqropopopopklklklklhghghghgfefefefebabababa`_`_`_`_^]^]^]^]}~}~}~}~yzyzyzyzwxwxwxwxststststqrqrqrqropopopopklklklklhghghghgfefefefebabababa`_`_`_`_^]^]^]^]}~}~}~}~yzyzyzyzwxwxwxwxststststqrqrqrqronmnmnmnklklklklhghghghgfefefefebabababa`_`_`_`_^]^]^]^]}~}~}~}~yzyzyzyzwxwxwxwxststststqrqrqrqrmnmnmnmnklklklklhghghghgfefefefebabababa`_`_`_`_^]^]^]^]}~}~}~}~yzyzyzyzwxwxwxwxststststqrqrqrqrmnmnmnmnklklklklhghghghgfefefefebabababa`_`_`_`_^]^]^]^]}~}~}~}~yzyzyzyzwxwxwxwxststststqrqrqrqrmnmnmnmnklklklklhghghghgfefefefebabababa`_`_`_`_^]^]^]^]}~}~}~}~yzyzyzyzwxwxwxwxststststqrqrqrqrmnmnmnmnklklkjijhghghghgdcdcdcdcbabababa`_`_`_`_^]^]^]^]}~}~}~}~yzyzyzyzwxwxwxwxststststqrqrqrqrmnmnmnmnijijiiiihghghghgdcdcdcdcbabababa`_`_`_`_^]^]^]^]}~}~}~}~yzyzyzyzwxwxwxwxststststqrqrqrqrmnmnmnmnijijijijhghghghgdcdcdcdcbabababa`_`_`_`_^]^]^]^]}~}~}~}~yzyzyzyzwxwxwxwxststststqrqrqrqrmnmnmnmnijijijijhghghghgdcdcdcdcbabababa^]^]^]^]^]^]^]^]}~}~}~}~yzyzyzyzwxwxwxwxststststqrqrqrqrmnmnmnmnijijijijhghghghgdcdcdcdcbabababa^]^]^]^]^]^]^]^]}~}~}~}~yzyzyzyzwxwxwxwxststststqrqrqrqrmnmnmnmnijijijijhghghghgdcdcdcdcbabababa^]^]^]^]^]^]^]^]}|{|{|{|yzyzyzyzwxwxwxwxststststqrqrqrqrmnmnmnmnijijijiihghghghgdcdcdcdcbabababa^]^]^]^]^]^]^]^]^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>;<;<;<;<7878787856565656212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#         ^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSOPOOOOOOMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>;<;<;<;<7878787856565656212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#         ^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPOMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>;<;<;<;<7878787855555565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#         \[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPOMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>;<;<;<;<7878787865656543212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#         \[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPOMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>;<;<;<;<7878787843434343212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#         \[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPOMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>;<;<;<;<7878787843434343212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#         \[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>;<;<;<;<7878787843434343212121210/0/0/.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#         - -\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSPOOOOOOPMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>;<;<;<;<787878784343434321212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#         - - - -\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>;<;<;<;<787878784343434321212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#         - - - -\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSOPOPOPOPMNMNMNMLIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>;<;<;<;<787878784343434321212121.-.-.-.-,+,+,+,+*)*)*)('&%&%&%&%$#$#$#$#         - - - -\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSOPOPOPOPKLKLKLKLIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>;<;<;<;<787878784343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#         - - - -\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSOPOPOPOPKLKLKLKLIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>;<;<;<;<787878784343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#         - - - -\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSOPOPOPOPKLKLKLKLIJIJIJIJGHGHGHGFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<787878784343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#"!         - - - -\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSOOOOOOPOKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<787878784343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!         - - - -\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<787878784343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!         - - - -\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCDABABABA@=>=>=>=>;<;<;<;<787878784343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!         - - - -\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<787878784343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!         - - - -\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSRQPOPOPOPOKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<787878784343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!         - - - -\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQPOPOPOPOKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;:787878784343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!         - - - -\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQOOOOOPOPKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>9:9:9:9:787878784343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!         - - - -\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQOPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>9:9:9:9:787878784343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!         - - - -\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQOPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>9:9:9:9:787878784343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!         - - - -\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQOPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>9:9:9:9:78787878434343432121210/.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!       - - - -\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQOPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>9:9:9:9:78765656434343430/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     - - - -\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQOPOOOOOPKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>9:9:9:9:56555556434343430/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!   - - - -\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQOPOPOPONKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>9:9:9:9:56565656434343430/0/0/0/.-.-.-.-,+,+,+*)('('('('&%&%&%&%"!"!"!"! - - - -\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQMNMNMNMNKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>9:9:9:9:56565656434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"! - - - -\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQMNMNMNMNKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>9:9:9:9:56565656434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"! - - - -\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQMNMNMNMNKLKLKLKLIJIJIJIHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>9:9:9:9:56565656434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%$#"!"!"!"! - - - -\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>9:9:9:9:56565555434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - -\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>9:9:9:9:55656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - -\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCB?@?@?@?@=>=>=>=>9:9:9:9:65656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - -\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>9:9:9:9:65656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - -\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>9:9:9:9:65656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - -\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=<9:9:9:9:65656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - -\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<9:9:9:9:65655555434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - -\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<9:9:9:9:56565656434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - -\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<9:9:9:9:56565656434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - -ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<9:9:9:9:56565656434343210/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!  - - - -ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<9:9:9:9:56565656212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!     - - - -ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<9:9:9:9:56565656212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!     - - - -ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<9:9:9:9:56555555212121210/0/0/0/.-.-.-,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!     - - ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<9:9:9:9:65656565212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!     ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<9:9:9:9:65656565212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!     ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQMNMNMNMNKLKLKLKJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<9:9:9:9:65656565212121210/0/0/0/,+,+,+,+*)*)*)*)('('('&%$#$#$#$#"!"!"!"!     ZYZYZYZYXWXWXWXWTSTSTSTSRQRQPOPOMNMNMNMNIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<9:9:9:9:65656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!     ZYZYZYZYXWXWXWXWTSTSTSTSPOPOOOOOMNMNMNMNIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<9:9:987865656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!     ZYZYZYZYXWXWXWXWTSTSTSTSOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHEFEFEFEDABABABAB?@?@?@?@;<;<;<;<7878787865555556212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!      ZYZYZYZYXWXWXWXWTSTSTSTSOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@;<;<;<;<7878787856565656212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#         ZYZYZYZYXWXWXWXWTSTSTSTSOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@;<;<;<;<7878787856565656212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#         ZYZYZYZYXWXWXWXWTSTSTSTSOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?>;<;<;<;<7878787856565656212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#         QQRRSSTT334455;;=<<;;::9DEEFFGGH UTTSSRRQxyyzz{{|5;;<<==> !!""$$##""!!ppoonnmm]]^^__``UUVVWWXX<<==>>??98877665HIIJJKKLQPPOONNM|}}~~>??@@AAB##$$%%&& llkkjjiiaabbccddYYZZ[[\\@@AABBCC54433221~~}LMMNNOOPMLLKKJJIBCCDDEEF''(())**hhggffeeeeffgghh~~}}]]^^__``DDEEFFGG 100//..-}||{{zzyPQQRRSSTIHHGGFFEFGGHHIIJ++,,--..ddccbbaaiijjkkll||{{zzyyaabbccddHHIIJJKK !!""##$-,,++**)yxxwwvvuTUUVVWWX - - EDDCCBBAJKKLLMMN//001122``__^^]]mmnnooppxxwwvvuueeffgghhLLMMNNOO$%%&&''()((''&&%uttssrrqXYYZZ[[\ A@@??>>=NOOUUVVW33445567 \\[[ZZYYqqrrssttttssrrqqiijjkkllUUVVWWXX())**++,%$$##""!qppoonnm\]]^^__`=<<;;::9WXXYYZZ[89:;;<<= - - XXWWVVUUuuvvwwxxppoonnmmmmnnooppYYZZ[[\\,--..//0! mllkkjji`aabbccd98877665[\\]]^^_=>>??@@ATTSSRRQQyyzz{{||llkkjjiiqqrrsstt]]^^__``01122334ihhggffedeeffggh54433221~~}_``aabbcABBCCDDEPPOONNMM}}~~hhggffeeuuvvwwxxaabbccdd45566778eddccbbahiijjkkl 100//..-}||{{zzycddeeffgEFFGGHHILLKKJJIIddccbbaayyzz{{||eeffgghh899::;;<a``__^^]lmmnnoop !!""##$-,,++**)yxxwwvvughhiioopIJJKKLLMHHGGFFEE``__^^]]}}~~iiooppqq<==>>??@ ]\\[[ZZYpqqrrsst$%%&&''()((''&&%uttssrrqpqqrrsstMNNOOPQR - - DDCCBBAA\\[[ZZYYrrssttuu@AABBCCD - - YXXWWVVUtuuvvwwx())**++,%$$##""!qppoonnmtuuvvwwxSTUUVVWW @@??>>==XXWWVVUUvvwwxxyyDEEFFGGH UTTSSRRQxyyzz{{|,--..//0! mllkkjjixyyzz{{|XXYYZZ[[<<;;::99TTSSRRQQzz{{||}}HIIJJKKLQPPOONNM|}}~~01122334ihhggffe|}}~~\\]]^^__88776655PPOONNMM~~LMMNNOOPMLLKKJJI45566778eddccbba``aabbcc44332211~~}}LLKKJJIIPQQRRSSTIHHGGFFE899::;;<a``__^^]ddeeffgg 00//..--||{{zzyyHHGGFFEE~~}}||TUUVVWWX - - EDDCCBBA<==>>??@ ]\\[[ZZYhhiijklm!!""##$$,,++**))xxwwvvuuDDCCBBAA{{zzyyxxXYYZZ[[\ A@@??>>=@AABBCCD - - YXXWWVVUnooppqqr%%&&''((((''&&%%ttssrrqq@@??>>==wwvvuutt\]]^^__`=<<;;::9DEEFFGGH UTTSSRRQ~~}}||{rssttuuv))**++,,$$##""!!ppoonnmm<<;;::99ssrrqqpp~~}}|`aabbccd98877665HIIJJKKLQPPOONNM{zzyyxxwvwwxxyyz--..//00 llkkjjii88776655ooiihhgg|{{zzyyxdeeffggh54433221~~}LMMNNOOPMLLKKJJIwvvuuttsz{{||}}~11223344hhggffee44332211ffeeddccxwwvvuuthiijjkkl 100//..-}||{{zzyPQQRRSSTIHHGGFFEsrrqqppo~55667788ddccbbaa00//..--bbaa``__tssrrqqplmmnnoop !!""##$-,,++**)yxxwwvvuTUUVVWWX - - EDDCCBBAoiihhggf99::;;<<``__^^]],,++**))^^]]\\[[poonmlkjpqqrrsst$%%&&''()((''&&%uttssrrqXYYZZ[[\ A@@??>>=feeddccb==>>??@@ \\[[ZZYY((''&&%%ZZYYXXWWiihhggfftuuvvwwx())**++,%$$##""!qppoonnm\]]^^__`=<<;;::9baa``__^AABBCCDD - - XXWWVVUU$$##""!!VVUUOONNeeddccbbxyyzz{{|,--..//0! mllkkjji`aabbccd98877665^]]\\[[ZEEFFGGHHTTSSRRQQ MMLLKKJJaa``__^^|}}~~01122334ihhggffedeeffggh54433221ZYYXXWWVIIJJKKLLPPOONNMM!!""##$$IIHHGGFF]]\\[[ZZ45566778eddccbbahiijjkkl 100//..-VUUOONNM~~}}MMNNOOPPLLKKJJII%%&&''((EEDDCCBBYYXXWWVV899::;;<a``__^^]lmmnnoop !!""##$-,,++**)MLLKKJJI||{{zzyyQQRRSSTTHHGGFFEE))**++,,AA@@??>>UUTSRQPO<==>>??@ ]\\[[ZZYpqqrrsst$%%&&''()((''&&%IHHGGFFExxwwvvuuUUVVWWXX - - DDCCBBAA--..//00 ==<<;;55ONNMMLLK@AABBCCD - - YXXWWVVUtuuvvwwx())**++,%$$##""!EDDCCBBAttssrrqqYYZZ[[\\ @@??>>==11223344 - - 44332211KJJIIHHGDEEFFGGH UTTSSRRQxyyzz{{|,--..//0! A@@??>>=ppoonnmm]]^^__``<<;;::9955667788 - - 00//..--GFFEEDDCHIIJJKKLQPPOONNM|}}~~01122334=<<;;554llkkjjiiaabbccdd8877665599::;;<< ,,++**))CBBAA@@?~~}LMMNNOOPMLLKKJJI4556677843322110hhggffeeeeffgghh44332211==>>??@@((''&&%%?>>==<<;}||{{zzyPQQRRSSTIHHGGFFE899::;;<0//..--,ddccbbaaiijjkkll 00//..--AABBCCDD$$##""!!;:987655yxxwwvvuTUUVVWWX - - EDDCCBBA<==>>??@ ,++**))(``__^^]]mmnnoopp!!""##$$,,++**))EEFFGGHH44332211uttssrrqXYYZZ[[\ A@@??>>=@AABBCCD - - (''&&%%$\\[[ZZYYqqrrsstt%%&&''((((''&&%%IIJJKKLL 00//..--qppoonnm\]]^^__`=<<;;::9DEEFFGGH $##""!!XXWWVVUUuuvvwwxx))**++,,$$##""!!MMNNOOPP!!""##$$,,++**))mllkkjji`aabbccd98877665HIIJJKKLTTSSRRQQyyzz{{||--..//00 QQRRSSTT%%&&''(( ((''&&%%ihhggffedeeffggh54433221~~}LMMNNOOPPPOONNMM}}~~11223344UUVVWWXX))**++,, - - $$##""!!eddccbbahiijjkkl 100//..-}||{{zzyPQQRRSST - - LLKKJJII55667788YYZZ[[\\--..//00 - - a``__^^]lmmnnoop !!""##$-,,++**)yxxwwvvuTUUVVWWX  HHGGFFEE99::;;<<]]^^__``11223344]\\[[ZZYpqqrrsst$%%&&''()((''&&%uttssrrqXYYZZ[[\ - - DDCCBBAA==>>??@@ aabbccdd55667788YXXWWVVUtuuvvwwx())**++,%$$##""!qppoonnm\]]^^__`@@??>>==AABBCCDD - - eeffgghh99::;;<<UTTSSRRQxyyzz{{|,--..//0! mllkkjji`aabbccd!<<;;::99EEFFGGHHiijjkkll==>>??@@!!"" -QPPOONNM|}}~~01122334ihhggffedeeffggh!""##$$% - - 88776655IIJJKKLLmmnnooppAABBCCDD##$$%%&& - MLLKKJJI45566778eddccbbahiijjkkl%&&''(() 44332211~~}}MMNNOOPPqqrrssttEEFFGGHH''(())**IHHGGFFE899::;;<a``__^^]lmmnnoop)**++,,-00//..--||{{zzyyQQRRSSTTuuvvwwxxIIJJKKLL++,,--.. - - EDDCCBBA<==>>??@ ]\\[[ZZYpqqrrsst-..//001,,++**))xxwwvvuuUUVVWWXX - - yyzz{{||MMNNOOPP//001122 A@@??>>=@AABBCCD - - YXXWWVVUtuuvvwwx12233445((''&&%%ttssrrqqYYZZ[[\\ }}~~55667788ZZYYXXWWtssrrqqpeffgghhi43322110~~}}|MNNOOPPQLKKJJIIHvuuttssr{||}}~~22334455ggffeeddffgghhii33221100zzyyxxwwJKKLLMMNONNMMLLK~23344556ZYYXXWWV]\\[[ZZY99::;;<<VVUUOONNpoonmlkjijjkkllm !0//..--,|{{zzyyxQRRSSTTU HGGFFEEDrqqppooi66778899ccbbaa``jjkkllmm !!//..--,,vvuuttssNOOPPQQRKJJIIHHG6778899:VUUOONNMYXXWWVVU==>>??@@ MMLLKKJJiihhggffmnnooppq!""##$$%,++**))(xwwvvuutUVVWWXXY - - DCCBBAA@ihhggffe::;;<<==__^^]]\\nnooppqq""##$$%%++**))((rrqqppooRSSTTUUV -GFFEEDDC:;;<<==>MLLKKJJIUTTSSRRQAABBCCDD - - IIHHGGFFeeddccbbqrrssttu%&&''(()(''&&%%$tssrrqqpYZZ[[\\] @??>>==>??@@AA [[ZZYYXXrrssttuu&&''(())''&&%%$$iihhggffVWWXXYYZ - CBBAA@@?>??@@AAB IHHGGFFEQPPOONNMEEFFGGHHEEDDCCBBaa``__^^uvvwwxxy)**++,,-$##""!! poonnmml]^^__``a<;;::998a``__^^]BBCCDDEE - - WWVVUUTTvvwwxxyy**++,,--##""!! eeddccbb~~}}||{Z[[\\]]^?>>==<<;BCCDDEEF - - EDDCCBBAMLLKKJJIIIJJKKLLAA@@??>>]]\\[[ZZyzz{{||}-..//001 lkkjjiihabbccdde87766554]\\[[ZZYFFGGHHIISSRRQQPPzz{{||}}..//0011aa``__^^{zzyyxxw^__``aab;::99887FGGHHIIJA@@??>>=IHHGGFFE~~}}MMNNOOPP==<<;;55YYXXWWVV}~~12233445hggffeedeffgghhi43322110YXXWWVVUJJKKLLMMOONNMMLL~~22334455]]\\[[ZZwvvuuttsbccddeef76655443JKKLLMMN=<<;;554EDDCCBBA||{{zzyyQQRRSSTT44332211UUTSRQPO56677889dccbbaa`ijjkkllm !0//..--,UOONNMML~~}}||NNOOPPQQKKJJIIHH66778899YYXXWWVVsrrqqppofgghhiij3221100/~~}}||{NOOPPQQR43322110A@@??>>=xxwwvvuuUUVVWWXX - - 00//..--ONNMMLLK9::;;<<=`__^^]]\mnnooppq!""##$$%,++**))(LKKJJIIH{{zzyyxxRRSSTTUU GGFFEEDD::;;<<==UUOONNMMonmlkjiijkkllmmn !!"/..--,,+{zzyyxxwRSSTTUUV -0//..--,=<<;;::9ttssrrqqYYZZ[[\\ ,,++**))KJJIIHHG=>>??@@A \[[ZZYYXqrrssttu%&&''(()(''&&%%$HGGFFEEDwwvvuuttVVWWXXYY - - CCBBAA@@>>??@@AA LLKKJJIIhhggffeenooppqqr"##$$%%&+**))(('wvvuuttsVWWXXYYZ - ,++**))(98877665ppoonnmm]]^^__``((''&&%%GFFEEDDCABBCCDDE - - XWWVVUUTuvvwwxxy)**++,,-$##""!! DCCBBAA@ssrrqqppZZ[[\\]]??>>==<>==>==<<;IJJKKLLMPOONNMML}~~12233445<;;55443kkjjiihhbbccddee77665544JJKKLLMM@@??>>==\\[[ZZYYz{{||}}~.//00112kjjiihhgbccddeef-,,++**)ddccbbaaiijjkkll ;:987655~~}}|MNNOOPPQLKKJJIIH566778893221100/ggffeeddffgghhii33221100~~}}||NNOOPPQQ<<;;5544XXWWVVUU~23344556gffeeddcfgghhiij)((''&&%``__^^]]mmnnoopp!!""##$$44332211|{{zzyyxQRRSSTTU HGGFFEED9::;;<<=/..--,,+ccbbaa``jjkkllmm !!//..--,,{{zzyyxxRRSSTTUU 33221100TSRQPOON6778899:cbbaa``_jkkllmmn !!"%$$##""!\\[[ZZYYqqrrsstt%%&&''(( 00//..--xwwvvuutUVVWWXXY - - DCCBBAA@=>>??@@A +**))(('__^^]]\\nnooppqq""##$$%%++**))((wwvvuuttVVWWXXYY - - //..--,,NMMLLKKJ:;;<<==>_^^]]\\[nooppqqr"##$$%%& ! XXWWVVUUuuvvwwxx))**++,, - - ,,++**))tssrrqqpYZZ[[\\] @??>>==??@@AAB [ZZYYXXWrssttuuv&''(())* - - -TTSSRRQQyyzz{{||--..//00((''&&%%poonnmml]^^__``a<;;::998EFFGGHHI#""!!WWVVUUTTvvwwxxyy**++,,--##""!! oonnmmll^^__``aa''&&%%$$FEEDDCCBBCCDDEEF - - WVVUUTTSvwwxxyyz*++,,--. - PPOONNMM}}~~11223344 $$##""!!lkkjjiihabbccdde87766554IJJKKLLMSSRRQQPPzz{{||}}..//0011kkjjiihhbbccddee##""!!BAA@@??>FGGHHIIJSRRQQPPOz{{||}}~.//00112LLKKJJII55667788 - - hggffeedeffgghhi43322110~~}}|MNNOOPPQ OONNMMLL~~22334455ggffeeddffgghhii>==<<;;:JKKLLMMNONNMMLLK~23344556 HHGGFFEE99::;;<<dccbbaa`ijjkkllm !0//..--,|{{zzyyxQRRSSTTU - - KKJJIIHH66778899ccbbaa``jjkkllmm !!98765544~~}}||{NOOPPQQRKJJIIHHG6778899: - - DDCCBBAA==>>??@@`__^^]]\mnnooppq!""##$$%,++**))(xwwvvuutUVVWWXXY  -GGFFEEDD::;;<<==__^^]]\\nnooppqq""##$$%%33221100{zzyyxxwRSSTTUUV -GFFEEDDC:;;<<==>!!""# - - @@??>>==AABBCCDD\[[ZZYYXqrrssttu%&&''(()(''&&%%$tssrrqqpYZZ[[\\] - CCBBAA@@>>??@@AA [[ZZYYXXrrssttuu&&''(()) //..--,,wvvuuttsVWWXXYYZ - CBBAA@@?>??@@AAB#$$%%&&' <<;;::99EEFFGGHH!!"" -XWWVVUUTuvvwwxxy)**++,,-$##""!! poonnmml]^^__``a??>>==<>==<<;BCCDDEEF'(())**+88776655IIJJKKLL##$$%%&& - TSSRRQQPyzz{{||}-..//001 lkkjjiihabbccdde!!" ;;::9988FFGGHHIISSRRQQPPzz{{||}}..//0011''&&%%$$onnmmllk^__``aab;::99887FGGHHIIJ+,,--../44332211~~}}MMNNOOPP''(())**POONNMML}~~12233445hggffeedeffgghhi"##$$%%& - - 77665544JJKKLLMMOONNMMLL~~22334455 - -##""!! kjjiihhgbccddeef76655443JKKLLMMN/001122300//..--||{{zzyyQQRRSSTT++,,--..LKKJJIIH56677889dccbbaa`ijjkkllm&''(())* 33221100~~}}||NNOOPPQQKKJJIIHH66778899 gffeeddcfgghhiij3221100/~~}}||{NOOPPQQR34455;;< ,,++**))xxwwvvuuUUVVWWXX//001122 HGGFFEED9::;;<<=`__^^]]\mnnooppq*++,,--.//..--,,{{zzyyxxRRSSTTUU GGFFEEDD::;;<<==cbbaa``_jkkllmmn !!"/..--,,+{zzyyxxwRSSTTUUV<==>>??@ !!""##$((''&&%%ttssrrqqYYZZ[[\\334455;; - - DCCBBAA@=>>??@@A \[[ZZYYXqrrssttu.//00112++**))((wwvvuuttVVWWXXYY - - CCBBAA@@>>??@@AA_^^]]\\[nooppqqr"##$$%%&+**))(('wvvuuttsVWWXXYYZ@AABBCCD$%%&&''($$##""!!ppoonnmm]]^^__``<<==>>?? @??>>==>==<>? !!""####""!! oonnmmll^^__``aa;;::9988FFGGHHII!!""## - - WVVUUTTSvwwxxyyz*++,,--.#""!! onnmmllk^__``aabHIIJJKKL,--..//0hhggffeeeeffgghhDDEEFFGG87766554IJJKKLLMPOONNMML}~~?@@AABBC$$%%&&''kkjjiihhbbccddee77665544JJKKLLMM$$%%&&'' SRRQQPPOz{{||}}~.//00112kjjiihhgbccddeefLMMNNOOU01122334ddccbbaaiijjkkllHHIIJJKK43322110~~}}|MNNOOPPQLKKJJIIHCDDEEFFG(())**++ggffeeddffgghhii33221100~~}}||NNOOPPQQ(())**++ONNMMLLK~23344556gffeeddcfgghhiijUVVWWXXY45566778``__^^]]mmnnooppLLMMNNOO !0//..--,|{{zzyyxQRRSSTTU HGGFFEEDGHHIIJJK,,--..//ccbbaa``jjkkllmm !!//..--,,{{zzyyxxRRSSTTUU,,--..//KJJIIHHG6778899:cbbaa``_jkkllmmnYZZ[[\\]899::;;< \\[[ZZYYqqrrssttUUVVWWXX!""##$$%,++**))(xwwvvuutUVVWWXXY - - DCCBBAA@KLLMMNNO00112233__^^]]\\nnooppqq""##$$%%++**))((wwvvuuttVVWWXXYY00112233 -GFFEEDDC:;;<<==>_^^]]\\[nooppqqr]^^__``a<==>>??@ - - XXWWVVUUuuvvwwxxYYZZ[[\\%&&''(()(''&&%%$tssrrqqpYZZ[[\\] @??>>==??@@AAB [ZZYYXXWrssttuuvabbccdde@AABBCCDTTSSRRQQyyzz{{||]]^^__``)**++,,-$##""!! poonnmml]^^__``a<;;::998XYYZZ[[\:;;<<==> - - WWVVUUTTvvwwxxyy**++,,--##""!! oonnmmll^^__``aa==>>??@@?>>==<<;BCCDDEEF - - WVVUUTTSvwwxxyyzeffgghhiDEEFFGGHPPOONNMM}}~~aabbccdd-..//001 lkkjjiihabbccdde87766554\]]^^__`>??@@AABSSRRQQPPzz{{||}}..//0011kkjjiihhbbccddeeAABBCCDD;::99887FGGHHIIJSRRQQPPOz{{||}}~iooppqqrHIIJJKKLLLKKJJIIeeffgghh12233445hggffeedeffgghhi43322110~~}}|`aabbccdBCCDDEEFOONNMMLL~~22334455ggffeeddffgghhiiEEFFGGHH76655443JKKLLMMNONNMMLLK~rssttuuvLMMNNOOPHHGGFFEEiiooppqq56677889dccbbaa`ijjkkllm !0//..--,|{{zzyyxdeeffgghFGGHHIIJKKJJIIHH66778899ccbbaa``jjkkllmmIIJJKKLL3221100/~~}}||{NOOPPQQRKJJIIHHGvwwxxyyzPQQRRSST - - DDCCBBAArrssttuu9::;;<<=`__^^]]\mnnooppq!""##$$%,++**))(xwwvvuuthiiooppqJKKLLMMN GGFFEEDD::;;<<==__^^]]\\nnooppqqMMNNOOUU !!"/..--,,+{zzyyxxwRSSTTUUV -GFFEEDDCz{{||}}~TUUVVWWX @@??>>==vvwwxxyy=>>??@@A \[[ZZYYXqrrssttu%&&''(()(''&&%%$tssrrqqpqrrssttuNOOPQRST - - CCBBAA@@>>??@@AA [[ZZYYXXrrssttuuVVWWXXYY"##$$%%&+**))(('wvvuuttsVWWXXYYZ - CBBAA@@?~XYYZZ[[\<<;;::99zz{{||}}ABBCCDDE - - XWWVVUUTuvvwwxxy)**++,,-$##""!! poonnmmluvvwwxxyUUVVWWXX??>>==<>==<<;~~}\]]^^__`88776655~~}}||~~EFFGGHHITSSRRQQPyzz{{||}-..//001 lkkjjiihyzz{{||}YYZZ[[\\;;::9988FFGGHHIISSRRQQPPzz{{||}}^^__``aa*++,,--.#""!! onnmmllk^__``aab;::99887~~}}||{}||{{zzy`aabbccd44332211{{zzyyxxIJJKKLLMPOONNMML}~~12233445hggffeed}~~]]^^__``77665544JJKKLLMMOONNMMLL~~bbccddee.//00112kjjiihhgbccddeef76655443{zzyyxxwyxxwwvvudeeffggh 00//..--wwvvuuttMNNOOPPQLKKJJIIH56677889dccbbaa`aabbccdd33221100~~}}||NNOOPPQQKKJJIIHHffgghhii23344556gffeeddcfgghhiij3221100/wvvuuttsuttssrrqhiijjkkl!!""##$$,,++**))ssrrqqppQRRSSTTU HGGFFEED9::;;<<=`__^^]]\eeffgghh !!//..--,,{{zzyyxxRRSSTTUU GGFFEEDDooppqqrr6778899:cbbaa``_jkkllmmn !!"/..--,,+srrqqppoqppoonnmlmmnnoop%%&&''((((''&&%%ooiihhggUVVWWXXY - - DCCBBAA@=>>??@@A \[[ZZYYXiijklmno""##$$%%++**))((wwvvuuttVVWWXXYY - - CCBBAA@@ssttuuvv:;;<<==>_^^]]\\[nooppqqr"##$$%%&+**))(('oiihhggfmllkkjjipqqrrsst))**++,,$$##""!!ffeeddcc~~}}|YZZ[[\\] @??>>==>==<??@@AAB [ZZYYXXWrssttuuv&''(())*'&&%%$$#feeddccbihhggffetuuvvwwx--..//00 bbaa``__|{{zzyyx]^^__``a<;;::998EFFGGHHITSSRRQQP~}}||{{zsttuuvvw**++,,--##""!! oonnmmll^^__``aa;;::9988{{||}}~~BCCDDEEF - - WVVUUTTSvwwxxyyz*++,,--.#""!! baa``__^eddccbbaxyyzz{{|11223344^^]]\\[[xwwvvuutabbccdde87766554IJJKKLLMPOONNMMLzyyxxwwvwxxyyzz{..//0011kkjjiihhbbccddee77665544~~}}||{{FGGHHIIJSRRQQPPOz{{||}}~.//00112^]]\\[[Za``__^^]|}}~~ZHAb|ZdQb`ےfH~Qr˂pfpvZp˂dtAQr˂pbtlrXQ~f`vr˂pfpvp˂rے`JXQtlJrXQJ`f`vXZHAbnXv`rXQJ`JltZHAbJtArdJ`ےXnvZHAbnXv`XQJ`ےr˂ptArdےbHAnvpے`JXf~HbHAbnvpے`JX|ZdQbHAZppfH~ے`JXQf~HbHAZZHAb|ZdQbZp˂fH~Qr˂pfpvZp˂fHQr˂pbtlrXQf`vr˂pfpvp˂rے`JXQtlJrXQJ`f`vXZHAbnXv`rXQJ`f`vXZHAbJtArdJ`ےXnvZHAbnXv`XQJ`ےr˂ptArdےbHAnvpے`JXf~HbHAnvpے`JXf~HbHAXQJ`pfH~ے`JXQf~HbHAZZHAb|ZdQbXQJ`ےfH~Qr˂pfpvZp˂fH~Qr˂pfpvےbHfvXnr˂pfpvp˂rے`JXQtlJbHAZf`vXZHAbnXv`rXQJ`f`vXZHAbnXv`AZp˂vpfHZHAےnXv`XQJ`ےr˂ptArdp˂rnvpے`JXf~HbHAnvpے`JXf~HrXQJ`~f``JXQrf~HbHAZZHAb|ZdQbXQJ`ےfH~Qr˂pfpvZp˂fH~Qr˂pfpvےbHvXnbtlfpvp˂rے`JXQtlJbHAZf`vXZHAbnXv`rXQJ`f`vXZHAbnXv`AZp`ۅvpfHJtAdnXv`XQJ`ےr˂ptArdp`ےnvpے`JXf~HbHAnvpے`JXf~HbHA~fv|ZdQbf~HbHAZZHAb|ZdQbbHAZpfH~Qr˂pfpvZp˂fH~Qr˂pfpvZp˂nvptlJfpvdrtAے`JXQtlJ˂rXQf`vXZHAۅnXv`rXQJ`f`vXZHAbnXv`rXQJ`fH~tArdnXv`Jltr˂ptArdJ`ےnvp`JXQf~HbHAnvpے`JXf~HbHAf`vX|ZdQbf~HbdQZ|ZHAbf~HbHAZpfH~rbtlfpvZp˂fH~Qr˂pfpvZp˂nvptlJfpvdrtAے`JXQXv`f˂bf`vXJtAdnXv`rXQJ`f`vXZHAbnXv`bHAZfH~tArdnXv`Jltr˂p~HfHAZdnvp|ZdQf~HbHAnvpے`JXf~HdrtAdf`vn|ZdQbf~HbdQZ|ZHAbpvnrtAJfH~btlfpvZdrtfH~Qr˂pfpvQZ|dvpfHtlJfpvdrtAے`JXQXv`fbdQZ|f`vXJtArdnXv`AJltf`vXZHAۅnXv`rtAJl~f`tArdnXv`Jltr˂p~HfdrtAnvp|ZdQf~HbdQZ|nvp`JXQf~HtbdvXn|ZdQbf~HbdQZ|ZHAbp`fJltfH~btlfpvdrtfH~rbtlfpvQZ|dvpfHtlJfpvdrtAے`JXQ~HfpbdQZ|f`vXJtArdnXv`AJltf`vXJtAdnXv`rtAJl~f`tArdnXv`Jltr˂pvnXdrtAnvp|ZdQf~HbdQZ|nvp|ZdQf~H|dvXnvf|ZdQbf~HbdQZ|H~fZHAbv`fJlbQZfH~btlfpvdrtfH~btlfpvrtAJlH~ftlJfpvdrtA`vXnے`JXQ~Hfp|drf`vXJtArdnXv`AJltf`vXJtArdnXv`tbdQZHAbtArdnXv`Jltvpfr˂pv~tAJlnvp|ZdQf~HbdQZ|nvp|ZdQf~HZ|dے`JXQ|ZdQbfHfbdQZ|H~fZHAbHfpvtbdQZfH~btlfpvdrtfH~btlfpvrtAJlr˂ptlJpvndrtA`vXnے`JXQnXv|drf`vXJtArdnXv`AJltf`vXJtArdnXv`tdrtZHAbtArdrXQJ`Jltvpfr˂p`f~tAJlnvp|ZdQf~HbdQZ|nvp|ZdQf~HAJltے`JXQ|ZdQbےHAZbdQZ|H~fZHAbHfpvtbQZdfH~btlfpvdrtfH~btlfpvbdQZ|r˂ptlJp˂rdrtA`vXnے`JXQnXHrtAJlfZHAbJtArdnXv`AJltf`vXJtArdnXv`drtZHAbtArdXQJ`ےJltvpfr˂pfpvtbdے`JX|ZdQfHbdQZ|nvp|ZdQf~HAJltے`JXQ|ZdQbbHAZbdQZ|H~f|ZdQbnXv`QZ|dQr˂pbtlfpvdrtfH~btlfpvbdQtAr˂ptlJp˂rdrtA`vXntlJf~HrtAJlZHAbJtArdnrXQJ`AJltf`vXJtArdnXv`JltZHAbtArdXQJ`ےJltvpftArdfpvtbdے`JX|ZdQےHAbdQZ|nvp|ZdQf~HbdQZ|ے`JXQ|ZdQbbHAZbdQZ|H~f|ZdQbnXv`QZrtAQr˂pbtlZp˂drtfH~btlfpvdrtAr˂ptlJp˂rdrtA`vXntlJpvnJltZHAbJtArdrXQJ`AJltfZHAbJtArdnXv`JltZHAbtArdXQJ`ےJltvpftArdXv`fbdQZ|ے`JX|ZdQbHAbdQZ|ے`JX|ZdQfHbdQZ|lے`JXQ|ZdQbbHAZbdQZ|H~f|ZdQb~HfdrtAQr˂pbtlZp˂drtQr˂pbtlfpvtbdr˂ptlJp˂rdrtA`vXntlJpvnJltZHAbJtArdrXQJ`AJltZHAbJtArdnrXQJ`QZ|dZHAbtArdXQJ`ےJltvpftArdXv`pbdQZ|ے`JX|ZdQbHAbdQZ|ے`JX|ZdQp˂rtAJlے`JXQ|ZdQbbHAZbdQZ|H~f|ZdQb˂rXQrAJlQr˂pbtlZp˂drtQr˂pbtlrXQJ`ۑtbdr˂ptlJp˂rdrtA`vXntlJJ`ےtbdQZHAbJtArdrXQJ`AJltZHAbJtArdbHAQZ|lZHAbtArdXQJ`ےJltvpftArdbHAZpZ|dے`JX|ZdQbHAbdQZ|ے`JX|ZdQZp˂tbnے`JXQf~HbHAZbdQZ|H~f|ZdQb˂rXQrtAJlQr˂pbtlZp˂drtQr˂pbtlrXQJ`pvpfr˂pfpvp˂rdtAJ`vXntlJJ`p˂tbdQZHAbJtArdrXQJ`AJltZHAbJtArd˂rXf`vXZHAbnXv`XQJ`ےltbvpftArdrXQJZ|dnے`JX|ZdQbHAbdQZ|ے`JX|ZdQQJ`ےnvpے`JXQf~HbHAZnvpH~f|ZdQb`ےbvfQr˂pbtlZp˂drtQr˂pbtlbHAZpfH~r˂pfpvp˂rfHf`vXntlJHAZp˂f`vXZHAbJtArdrXQJ`AJltZHAbJtArd˂rXf`vXZHAbnXv`XQJ`ے`vXnvpftArdrXQJnvpے`JXf~HbHAbdQZ|ے`JX|ZdQQJ`ےnvpfے`JXQf~HbHAZvpfH~f`vXntArdnXv`rtAJlZHAbArd|QJ`ےJltZHAbArd|rXQJ`JltpZHAJtArdJ`ےltbHAbےrd|J`ےltbJXQrdQtArdJ`ےtbnAbے`rd|J`ےtbdbے`pfH~ㅀvpf|ZdQbf~Htdr`JQrZdQbtbHAZpbdQZ|`JXQZdQbtHAZpbdQZ|bے`p|ZdbHAZpdQZ|`JXQrZdQbtbHAZpdQZ|˂pZHAf~bHAZp˅vpfHJXQrZdQbtbHAZpQZ|dJXQHAbf۝`vH~ftlJfpvtAJlpZHAblJt˂rXdrtAr˂plJt˂rXdrtAZHAbQbJtA˂rXQdrtAJ˂pZlJtA˂rXQdrtAJbے`HfvnXrXQf`˂pZHlJtArXQrtAJlے`JXXnvˍZHAbtArdnXv`tbdQZے`JArd|QJ`ےJltZHAbArd|QJ`ےJltے`JXrdfJ`ےltbHAbےrd|J`ےltbpZHAbv`fJ`ےvXnAbے`rdfJ`ےtbdQr˂ppfH~ے`JXQ|ZdQbfHf|drXQr˂ZdQbtbHAZpbdQZ|`JXQZdQbtbHAZpbdQZ|Qr˂p~HfbHAZpdQZ|`JXQrZdQbtbHAZpdQZ|ے`J~HfpbHAZpvpfHJXQr~HfpbHAZpQZ|dZHAbf۝`vr˂ptlJpvntAJlpZHAblJt˂rXdrtAr˂plJt˂rXdrtAZHAbpvn˂rXQdtAJl˂pZlJtA˂rXQdrtAJXQr˂vnXrXQ~f`˂pZHvnXrXQtAJlے`JXXnvˍZHAbtArdrXQJ`tbdQtAے`JArd|QJ`ےJltZHAbArd|QJ`ےJltے`JXXv`fJ`ےtbnHAbےrd|J`ےltbpZHAbv`fJ`ےvXnAbے`v`fJ`ےtbnQrpfH~ے`JXQ|ZdQbےHAZJltXQrZHZdQbtbHAZpbdQZ|`JXQZdQbtbHAZpbdQZ|QHAbې~HfbHAZpvpf`JXQrZdQbtbHAZpdQZ|ے`J~HfpbHAZpvpfHJXQr~HfpbHAZp˅vpfH`JXQf۝`vr˂ptlJp˂rbdQZ|Abے`lJt˂rXdrtAr˂plJt˂rXdrtA`JXQpvn˂rXQHf`˂pZlJtA˂rXQdrtAJXQHAbvnv`rXQ~f`˂pZHvnXrXQf`r˂pXnvˍZHAbtArdXQJ`ےdrtAJXQrArdQJ`ےJltZHAbArd|QJ`ےJltr˂pXv`fJ`ےvXnHAbےrdfJ`ےltbے`JXQf~HJ`ےvXnAbے`v`fJ`ےvXnZHAbpfH~ے`JXQ|ZdQbbHAZJlt˂pZHf~HbHAZpbdQZ|`JXQZdQbtbHAZpbdQZ|ZHAbې~HfbHAZpvpfH`JXQr~HfbHAZpdQZ|r˂pfpvbHAZpvpfHJXQr~HfpbHAZpvpfH`JXQf۝`vr˂ptlJp˂rbdQZ|Abے`fpv˂rXdtAJlr˂plJt˂rXdrtA`JXQpvn˂rXQ~f`˂pZpvn˂rXQdtAJlZHAbnXv`rXQ~f`˂pZHvnXrXQ~f`r˂p`XnvˍZHAbtArdXQJ`ےltbJXQrnXv`QJ`ےtbZHAbArd|QJ`ےJltrے`Xv`fJ`ےvXnHAbےXv`fJ`ےtbnے`JXQf~HJ`ےvXnAbے`v`fJ`ےvXnہJXQrpfH~ے`JXQ|ZdQbbHAZdQZ|ZAbf~HbHAZpnvp`JXQZdQbtbHAZpbdQZ|JXQr~HfbHAZpvpfH`JXQr~HfbHAZpvpfrےfpvbHAZpvpfHJXQr~HfpbHAZpvpfH˂pZHf۝`vr˂ptlJp˂rdrtAJے`JXQfpv˂rXfHf`r˂plJt˂rXdrtA˂pZHpvn˂rXQ~f`˂pZpvn˂rXQHf``JXQrnvf󂀉rXQ~f`˂pZHvnXrXQ~f`Abے`XnvˍZHAbtArdXQJ`ےltbr˂pnXv`QJ`ےvXnZHAbArdQJ`ےJltAbے`Xv`fJ`ےvXnHAbےXv`fJ`ےvXn˂pZ~HfpJ`ےvXnAbے`v`fJ`ےvXnہJXQrpfH~ے`JXQ|ZdQbbHAZdQZ|lZHAbf~HbHAZpvpfH`JXQf~HbHAZpbdQZ|JXQr~HfbHAZpvpfH`JXQr~HfbHAZpvpfHHAbےvnXbHAZdvpfHJXQr~HfpbHAZpvpfH˂p`Zf۝`vr˂ptlJp˂rtbnے`JXQfpv˂rX~f`r˂pfpv˂rXdtAJl˂p`pvn˂rXQ~f`˂pZpvn˂rXQ~f``JXQrv`frtAJl~f`˂pZHvnXrXQ~f`QXb㉀XnvˍZHAbtArdXQJ`ےvp`r˂pnXv`QJ`ےvXnZHAbnXv`QJ`ےtbJXQrXv`fJ`ےvXnHAbےXv`fJ`ےvXn˂p`~HfpۑtbdvXnAے`v`fJ`ےvXnۑpJAHrpfH~ے`JXQ|ZdQbbHAZvXnZAb`f~HbHAZpvpfH`JXQf~HbHAZpnvp`pZHA㐕~HfbHAZpvpfH`JXQr~HfbHAZpvpfHJXQrvnXvQZ|dvpfHJXQrbt~HfpbHAZpvpfH󙐂ˁ`Zf۝`vr˂ptlJp˂rvpfHJXQrfpv˂rX~f`r˂pfpv˂rXvXnbے`pvn˂rXQ~f`˂pZpvn˂rXQ~f`˂pZHAf~HfrtAJl~f`lJtvnXrXQ~f`QXb㉀XnvˍZHAbtArdXQJ`ے~f`pZHAnXv`QJ`ےvXnZHAbnXv`QJ`ےvpfHJXQrXv`fJ`ےvXnHAbےXv`fJ`ےvXnbے`pvntbdvXnAd|v`fJ`ےvXnۑp`ZQp|drے`JXQf~HbHAZvXnbے`f~HbHAZpvpfH`JXQf~HbHAZp~f`p`JX~HfbHAZvpfH`JXQr~HfbHAZpvpfHJXQrXv`fQZ|dvpfHZdQbt~HfpbHAZdvpfHXb㉀ۑQtJlr˂pfpvp˂rvp`vJXQrfpv˂rX~f`r˂pfpv˂rXvXnQrbtpvndrtAJ~f`˂pZpvn˂rXQ~f`˂p`J~HfrtAJl~f`lJtAvnXrtAJl~f`pJAHrtbAdZZHAbnXv`XQJ`ےXnvpZA`nXv`QJ`ےvXnZHAbnXv`QJ`ےvp`lJA|Xv`fltbvXnHAے`Xv`fJ`ےvXnXQrbtpvntbdvXnrd|v`ftbdvXnېˁ`ZQ|drے`JXQf~HbHAZpfH~JXQrf~HbHAZpvpfH`JXQf~HbHAZpvXnہZdQbt~HfdQZ|vpfHJXQrb~HfbHAZpvpfHl|ZXv`fQZ|dvpfHZdQbt~HfpQZ|dvpfHXb㉀ۑQtJlr˂pfpvp˂rf`vbtlfpv˂rX~f`r˂pfpv˂rXvpfHlJtpvndrtAJ~f`tlJpvn˂rXQ~f`dQbt~fpvrtAJl~f`lJtAvnXrtAJl~f`pJAHQXbtbAdZZHAbnXv`XQJ`ےXnvJtAd|nXv`QJ`ےvXnZHAbnXv`QJ`ے~f`Ard|Xv`fltbvXntAd|Xv`fJ`ےvXnlJtArnXv`tbdvXnrd|v`ftbdvXn㉀ۑpJ|drے`JXQf~HbHAZpfHXZdQbtf~HbHAZvpfH`JXQf~HbHAZpvXnہZdQbt~HfdQZ|vpfHZdQbt~HfbHAZvpfHd|Zf~HQZ|dvpfHZdQbt~HfpQZ|dvpfHAHr󙐂QtJlr˂pfpvp˂rnvplJtfpvdrtA~f`r˂pfpv˂rXvpfHXlJArpvndrtAJ~f`lJtApvndrtAJ~f`dQbt璅fpvrtAJl~f`lJtAvnXrtAJl~f`ˁ`ZQXbtbAdZZHAbnXv`XQJ`ےfH~Ard|nXv`JltvXnZHAے`nXv`QJ`ےnvp|ZdQXv`fltbvXnrd|Xv`fltbvXnl|ZdQnXv`tbdvXnrd|v`ftbdvXn㉀ۑpJ|drے`JXQf~HbHAZf`vXZdQbtf~HbdQZ|vpfHJXQrf~HbHAZpfH~btl~HfdQZ|vpfHZdQbt~HfdQZ|vpfHbtlffpQZ|dvpfHZdQbt~HfpQZ|dvpfHAHr󙐉QtJlr˂pfpvp˂rnvplJtfpvdrtA~f`btlfpv˂rXf`vXJtArdpvndrtAJ~f`lJtApvndrtAJ~f`JtArdvnrXrtAJl~f`lJtAvnXrtAJl~f`ۑpJAtbAdZZHAbnXv`XQJ`ےfH~Ard|nXv`JltvXnJtAd|nXv`QJ`ےnvp|ZdQXv`fltbvXnrd|Xv`fltbvXn|ZdQQJ`ےtbdvXnrd|v`ftbdvXnHr󙐂ˁ|drے`JXQf~HbHAZvpfZdQbtf~HbdQZ|vpfHZdQbtf~HbHAZfH~btl~HfdQZ|vpfHZdQbt~HfdQZ|vpfHbtlHAZpQZ|dvpfHZdQbt~HfpQZ|dvpfH`ZQXbQtJlr˂pfpvp˂rH~flJtfpvdrtA~f`lJtfpvdrtAvpJtArpvndrtAJ~f`lJtApvndrtAJ~f`JtAdQbrXQrtAJl~fZHlJtAvnXrtAJl~f`ۑpJAtbAdZZHAےnXv`XQJ`ے`vXnArd|nXv`JltvXnArd|nXv`JltfH~ZdQbtXv`fltbvXnrd|Xv`fltbvXntlJJ`ےtbdAbے`rd|v`ftbdvXnHr󙐂ˁ|dr`JXQrf~HbHAZvpfZdQbtf~HbdQZ|vpfHZdQbtf~HbdQZ|f`vXlJtAHfpdQZ|vpfHZdQbt~HfdQZ|vpfHtArdbHAZpQZ|dJXQrZdQbtHfpQZ|dvpfH`pJAHrQtJlbtlfpvp˂rH~flJtfpvdrtA~f`lJtfpvdrtAnvprd|vnrdrtAJ~f`lJtApvndrtAJ~f`|ZdQbrXQrtAJl˂pZHlJtAvnrXrtAJl~f`󙐂ˁ`ZtbAdZJtAdnXv`XQJ`ے`pfHArd|nXv`JltvXnArd|nXv`JltfH~ZdQbtXQJ`ےltbvXnrd|Xv`fltbvXntlJJ`ےtbdAbے`rd|QJ`ےtbdvXnQXb㉀|dr|ZdQbf~HbHAZ~f`ZdQbtf~HbdQZ|vpfHZdQbtf~HbdQZ|f`pfHlJtAHAZpdQZ|vpfHZdQbt~HfdQZ|vpfHtArdtbHAZpQZ|dJXQrZdQbtHAZpQZ|dvpfHۑpJAHrQtJltlJfpvdrtAvXnlJtfpvdrtA~f`lJtfpvdrtA~f`rdZQb˂rXQdrtAJ~fZlJtApvndrtAJ~f`lJtArXQrtAJl˂pZHlJtArXQrtAJl~fr󙐂ˁ`tbAdZtArdnXv`dQZ|vpfHArd|nXv`JltvXnArd|nXv`JltvXntlJJ`ےltbHAbےrd|Xv`fltbvXnrd|J`ےtbdAbے`rd|J`ےtbd˂pZHpfH~|dr|ZdQbf~HdrtAJ~f`ZdQbtfHfpbdQZ|vpfHZdQbtf~HbdQZ|vpfHtArdbHAZpdQZ|`JXQrZdQbtHfpdQZ|vpfHZdQbtbHAZpQZ|dJXQrZdQbtbHAZpQZ|dAbے`f۝`vQtJltlJfpvltbvXH~lJtvndrtA~f`lJtfpvdrtA~f`|ZdQb˂rXQdrtAJ˂pZlJtAvnrdrtAJ~f`lJtArXQrtAJl˂pZHlJtArXQrtAJlJXQrXnvˍtbAdZtArdnXv`dQZ|fZHAArd|rXQJ`JltvXnArd|nXv`JltvXHtlJJ`ےltbHAbےrd|XQJ`ےltbvXnrd|J`ےtbdAbے`rd|J`ےtbd˂pZHpfH~|dr|ZdQbf~HdrtAJbJQZdQbtHAZpbdQZ|vpfHZdQbtf~HbdQZ|~fZHtArdbHAZpdQZ|`JXQrZdQbtHAZpdQZ|vpfHlJtArbHAZpQZ|dJXQrZdQbtbHAZpQZ|dAbے`f۝`vQtJltlJfpvl|dr˂plJt˂rXdrtA~flJtfpvdrtAAb|ZQbl˂rXQdrtAJ˂pZlJtA˂rXQdrtAJ~fZd|ZrXQrtAJl˂pZHlJtArXQrtAJlpZHAXnvˍtbAdZtArdnXv`rtAJlZHAbArd|QJ`ےJltZHAbArd|nXv`JltpZHAJtArdJ`ےltbHAbےrd|J`ےltbHAbdQbtJ`ےtbdAbے`rd|J`ےtbdbے`pfH~|dr|ZdQbf~HtbdQ`JXQZdQbtbHAZpbdQZ|`JXQZdQbtfHfpbdQZ|bے`|ZdbHAZpdQZ|`JXQrZdQbtbHAZpdQZ|˂pZHAlJtArbHAZpQZ|dJXQrZdQbtbHAZpQZ|dJXQrːf۝`vQtJltlJfpvZ|dr˂plJt˂rXdrtAr˂plJtvndrtAJXQrQbtl˂rXQdrtAJ˂pZlJtA˂rXQdrtAJbے`d|ZrXQtAJl˂pZHlJtArXQrtAJlpZHAXnvˍtbAdZ|-----------------------............................ \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv31_3.dat b/mpdf/qrcode/data/qrv31_3.dat deleted file mode 100644 index c72dfda..0000000 --- a/mpdf/qrcode/data/qrv31_3.dat +++ /dev/null @@ -1,281 +0,0 @@ -{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqropopopopmnmnmnmnijijijijhghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQ{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqropopopopmnmnmnmnijijijiihghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQ{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqropopopopmnmnmnmniiiijijihghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSRQRQPOPO{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqropopopopmnmnmnmnjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSPOPOOOOO~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqropopopopmnmnmnmnjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSOPOPOPOP}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqropopopopmnmnmnmnjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSOPOPOPOP}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqropopopopmnmnmnmnjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUTSTSTSTSOPOPOPOP}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxutstststqrqrqrqropopopopmnmnmnmnjijijiiihghghghgfefefefebabababa`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUTSTSTSTSOPOPOPOP}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxststststqrqrqrqropopopopmnmnmnmniiijijijhghghghgfefefefebabababa`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUTSTSTSTSOPOPOPOP}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxststststqrqrqrqropopopopmnmnmnmnijijijijhghghghgfefefefebabababa`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUTSTSTSTSOPOOOOOO}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxststststqrqrqrqropopopopmnmnmnmlijijijijhghghghgfefefefebabababa`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPO}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxststststqrqrqrqropopopopklklklklijijijijhghghghgdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPO}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxststststqrqrqrqropopopopklklklklijijijijhghghghgdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPO}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxststststqrqrqrqropopopopklklklklijijiiiihghghghgdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPO}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxststststqrqrqrqropopopopklklklkliijijijihghghghgdcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPO}~}~}~}~{|{|{|{|yzyzyzyzwvuvuvuvststststqrqrqrqropopopopklklklkljijijijihghghghgdcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSPOOOOOOP}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvststststqrqrqrqropopopopklklklkljijijijihghghghgdcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSOPOPOPOP}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvststststqrqrqrqropopopopklklklkljijijijihghghghgdcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSRQOPOPOPOP}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvststststqrqrqrqropopopopklklklkljijijijihghghghgdcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQOPOPOPOP}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvststststqrqrqrqropopopopklklklkljijiiiiifefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQOPOPOPOP}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvststststqrqrqrqropopopopklklklklijijijijfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQOPOPOPOP}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvststststqrqrqrqropopopopklklklklijijijijfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQOOOOOOPO}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvststststqrqrqrqropopopopklklklklijijijijfefefefedcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQPOPOPOPO}~}~}~}~{|{|{|{|yxwxwxwxuvuvuvuvststststqrqrqrqropopopopklklklklijijijijfefefefedcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQPOPOPOPO}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvststststqrqrqrqropopopopklklklklijijijijfefefefedcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQPOPOPOPO}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvststststqrqrqrqropopopopklklklklijiiiiiifefefefedcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQPOPOPOPO}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvststststqrqrqrqronmnmnmnklklklkljijijijifefefefedcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQPOPOPOPO}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvststststqrqrqrqrmnmnmnmnklklklklhghghghgfefefefedcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQOOOOOPOP}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvststststqrqrqrqrmnmnmnmnklklklklhghghghgfefefefedcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQOPOPOPOP}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvststststqrqrqrqrmnmnmnmnklklklklhghghghgfefefefedcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQOPOPOPOP}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvststststqrqrqrqrmnmnmnmnklklklklhghghghgfefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQOPOPOPOP}~}~}~}~{zyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqrmnmnmnmnklklklklhghghghgfefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQOPOPOPOP}~}~}~}~yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqrmnmnmnmnklklklklhghghghgfefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQOPOOOOOP}~}~}~}~yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqrmnmnmnmnklklklklhghghghgfefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQOPOPOPON}~}~}~}~yzyzyzyzwxwxwxwxuvuvuvuvststststqpopopopmnmnmnmnklklklklhghghghgfefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQMNMNMNMN}~}~}~}~yzyzyzyzwxwxwxwxuvuvuvuvststststopopopopmnmnmnmnklklklklhghghghgfefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQMNMNMNMN}~}~}~}~yzyzyzyzwxwxwxwxuvuvuvuvststststopopopopmnmnmnmnklklklklhghghghgfefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQMNMNMNMN}~}~}~}~yzyzyzyzwxwxwxwxuvuvuvuvststststopopopopmnmnmnmnklklklklhghghghgfefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQMNMNMNMN}~}~}~}~yzyzyzyzwxwxwxwxuvuvuvuvststststopopopopmnmnmnmnklklkjijhghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQMNMNMNMN}|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststopopopopmnmnmnmnijijiiiihghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQMNMNMNMN{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststopopopopmnmnmnmnijijijijhghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQMNMNMNMN{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststopopopopmnmnmnmnijijijijhghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQMNMNMNMN{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvsrqrqrqropopopopmnmnmnmnijijijijhghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQMNMNMNMNMNMNMNMNMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>9:9:9:9:7878787843434343212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!     - - - -MNMNMNMNKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>9:9:9:9:7878787843434343212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!     - - - -MNMNMNMNKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>9:9:9:9:7878787843434343212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!      - - - -MNMNMNMNKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=<9:9:9:9:7878787843434343212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%$#$#$#$#         - - - -MNMNMNMNKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:7878787843434343212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%$#$#$#$#         - - - -MNMNMNMNKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:7878787843434343212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%$#$#$#$#         - - - -MNMNMNMNKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:7878787843434343212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%$#$#$#$#         - - - -MNMNMNMNKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:7878787843434343212121210/0/0/0/.-.-.-,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#         - - - -MNMNMNMNKLKLKLKLIJIJIJIHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:7876565643434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#         - - - -MNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:5655555643434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#         - - - -MNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:5656565643434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#"!         - - - -MNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?>;<;<;<;<9:9:9:9:5656565643434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!         - - - -MNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<9:9:9:9:5656565643434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!         - - - -MNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<9:9:9:9:5656565643434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!         - - - -MNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<9:9:9:9:5656555543434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!         - - - -MNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<9:9:9:9:5565656543434343212121210/0/0/.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!         - - - -MNMNMNMNKLKLKLKJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<9:9:9:9:656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!         - - - -MNMNMNMNIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<9:9:9:9:656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!         - - MNMNMNMNIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<9:9:9:9:656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%$#"!"!"!"!         MNMNMNMNIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABA@=>=>=>=>;<;<;<;<9:9:9:9:656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!         MNMNMNMNIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:656555554343434321212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!         MNMNMNMNIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:565656564343434321212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!         MNMNMNMNIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:565656564343434321212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!         MNMNMNMNIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<9:9:987856565656434343432121210/.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!         MNMNMNMLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<7878787856565656434343430/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!         KLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<7878787856565656434343430/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!         - -KLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<7878787856555555434343430/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('&%$#$#$#$#"!"!"!"!         - - - -KLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCB?@?@?@?@=>=>=>=>;<;<;<;<7878787865656565434343430/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!         - - - -KLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>;<;<;<;<7878787865656565434343430/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!         - - - -KLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>;<;<;<;<7878787865656565434343430/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!         - - - -KLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>;<;<;<;<7878787865656565434343430/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!       - - - -KLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>;<;<;<;<7878787865656565434343210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!     - - - -KLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>;<;<;<;<7878787865555556212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!     - - - -KLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>;<;<;<;<7878787856565656212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!   - - - -KLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>;<;<;<;<7878787856565656212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)('&%&%&%&%$#$#$#$#"!"!"!"! - - - -KLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<7878787856565656212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#"!"!"!"! - - - -KLKLKLKLIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<7878787856565656212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#"!"!"!"! - - - -KLKLKLKLIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<7878787856565656212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#"!"!"!"! - - - -KLKLKLKLIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;:7878787855555565212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#"!"!"!"! - - - -KLKLKLKLIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@=>=>=>=>9:9:9:9:7878787865656543212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#"!"!"!"! - - - -KLKLKLKLIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@=>=>=>=>9:9:9:9:7878787843434343212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#"!"!"!"! - - - -KLKLKLKLIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@=>=>=>=>9:9:9:9:7878787843434343212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#"!"!"!"!  - - - -KLKLKLKLIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@=>=>=>=>9:9:9:9:7878787843434343212121210/0/0/0/.-.-.-.-,+,+,+*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!     - - - -11223344((''&&%%aa``__^^\]]^^__` }||{{zzy01122334=<<;;::9pqqrrsstihhggffeWXXYYZZ[LLKKJJIIaabbccdd - - xxwwvvuu5566778888776655uuvvwwxx - - ZZYYXXWW~~55667788$$##""!!]]\\[[ZZ`aabbccd - - yxxwwvvu4556677898877665tuuvvwwx - - eddccbba[\\]]^^_HHGGFFEEeeffgghhttssrrqq99::;;<<44332211yyzz{{|| VVUUOONN99::;;<<YYXXWWVVdeeffggh uttssrrq899::;;<54433221xyyzz{{| a``__^^]_``aabbc !!""DDCCBBAAiijjkkllppoonnmm==>>??@@00//..--}}~~MMLLKKJJ~~}}==>>??@@UUTSRQPOhiijjkklqppoonnm<==>>??@100//..-|}}~~]\\[[ZZYcddeeffg##$$%%&&@@??>>==mmnnooppllkkjjiiAABBCCDD,,++**))IIHHGGFF||{{zzyyAABBCCDDONNMMLLKlmmnnoopmllkkjji@AABBCCD-,,++**)YXXWWVVUghhiioop''(())**<<;;::99qqrrsstthhggffeeEEFFGGHH((''&&%%EEDDCCBBxxwwvvuuEEFFGGHH KJJIIHHGpqqrrsstihhggffeDEEFFGGH)((''&&%UTTSSRRQpqqrrsst++,,--..88776655uuvvwwxx - - ddccbbaaIIJJKKLL$$##""!! AA@@??>>~~}}|ttssrrqqIIJJKKLL - - GFFEEDDCtuuvvwwx - - eddccbbaHIIJJKKL%$$##""! QPPOONNMtuuvvwwx//00112244332211yyzz{{|| ``__^^]]MMNNOOPP !!""##$$==<<;;55|{{zzyyxppoonnmmMMNNOOPP - - CBBAA@@?xyyzz{{| a``__^^]LMMNNOOP!  !!""##$MLLKKJJIxyyzz{{|3344556700//..--}}~~\\[[ZZYYQQRRSSTT%%&&''((44332211xwwvvuutllkkjjiiQQRRSSTT?>>==<<;|}}~~]\\[[ZZYPQQRRSST$%%&&''(IHHGGFFE|}}~~89:;;<<=,,++**))XXWWVVUUUUVVWWXX))**++,,00//..--tssrrqqphhggffeeUUVVWWXX;:987655YXXWWVVUTUUVVWWX())**++,EDDCCBBA=>>??@@A((''&&%%TTSSRRQQYYZZ[[\\~~}}--..//00,,++**))poonmlkjddccbbaaYYZZ[[\\44332211UTTSSRRQXYYZZ[[\~~},--..//0A@@??>>=ABBCCDDE$$##""!! PPOONNMM]]^^__`` ||{{zzyy11223344((''&&%%iihhggff``__^^]]]]^^__``!!""00//..-- QPPOONNM\]]^^__` }||{{zzy01122334=<<;;::9EFFGGHHI !!""##$$LLKKJJIIaabbccdd - - xxwwvvuu55667788$$##""!!eeddccbb\\[[ZZYYaabbccdd##$$%%&&,,++**)) !!""##$MLLKKJJI`aabbccd - - yxxwwvvu4556677898877665IJJKKLLM%%&&''((HHGGFFEEeeffgghhttssrrqq99::;;<<aa``__^^XXWWVVUUeeffgghh''(())**((''&&%%$%%&&''(IHHGGFFEdeeffggh uttssrrq899::;;<54433221~~}}||{MNNOOPQR))**++,,DDCCBBAAiijjkkllppoonnmm==>>??@@]]\\[[ZZTTSSRRQQiijjkkll++,,--..$$##""!!())**++,EDDCCBBAhiijjkklqppoonnm<==>>??@100//..-{zzyyxxwSTUUVVWW~~}}--..//00@@??>>==mmnnooppllkkjjiiAABBCCDDYYXXWWVVPPOONNMMmmnnoopp//001122 ~~},--..//0A@@??>>=lmmnnoopmllkkjji@AABBCCD-,,++**)wvvuuttsXXYYZZ[[ ||{{zzyy11223344<<;;::99qqrrsstthhggffeeEEFFGGHH UUTSRQPOLLKKJJIIqqrrsstt334455;;}||{{zzy01122334=<<;;::9pqqrrsstihhggffeDEEFFGGH)((''&&%srrqqppo\\]]^^__ - - xxwwvvuu5566778888776655uuvvwwxx - - ddccbbaaIIJJKKLL - - ONNMMLLKHHGGFFEEuuvvwwxx<<==>>??yxxwwvvu4556677898877665tuuvvwwx - - eddccbbaHIIJJKKL%$$##""!oiihhggf``aabbccttssrrqq99::;;<<44332211yyzz{{|| ``__^^]]MMNNOOPPKJJIIHHGDDCCBBAAyyzz{{||@@AABBCCuttssrrq899::;;<54433221xyyzz{{| a``__^^]LMMNNOOP! feeddccbddeeffggppoonnmm==>>??@@00//..--}}~~\\[[ZZYYQQRRSSTT GFFEEDDC@@??>>==}}~~DDEEFFGG -qppoonnm<==>>??@100//..-|}}~~]\\[[ZZYPQQRRSSTbaa``__^hhiijklmllkkjjiiAABBCCDD,,++**))XXWWVVUUUUVVWWXX - - CBBAA@@?<<;;::99HHIIJJKK - mllkkjji@AABBCCD-,,++**)YXXWWVVUTUUVVWWX^]]\\[[ZnooppqqrhhggffeeEEFFGGHH((''&&%%TTSSRRQQYYZZ[[\\?>>==<<;88776655LLMMNNOOihhggffeDEEFFGGH)((''&&%UTTSSRRQXYYZZ[[\ZYYXXWWVrssttuuv - - ddccbbaaIIJJKKLL$$##""!! PPOONNMM]]^^__``;:98765544332211UUVVWWXX - - eddccbbaHIIJJKKL%$$##""! QPPOONNM\]]^^__` VUUOONNMvwwxxyyz ``__^^]]MMNNOOPP !!""##$$LLKKJJIIaabbccdd4433221100//..--YYZZ[[\\ a``__^^]LMMNNOOP!  !!""##$MLLKKJJI`aabbccd - - MLLKKJJIz{{||}}~\\[[ZZYYQQRRSSTT%%&&''((HHGGFFEEeeffgghh!!""00//..--,,++**))]]^^__``]\\[[ZZYPQQRRSST$%%&&''(IHHGGFFEdeeffggh IHHGGFFE~XXWWVVUUUUVVWWXX))**++,,DDCCBBAAiijjkkll##$$%%&&,,++**))((''&&%%~~}}||aabbccddYXXWWVVUTUUVVWWX())**++,EDDCCBBAhiijjkklEDDCCBBATTSSRRQQYYZZ[[\\~~}}--..//00@@??>>==mmnnoopp''(())**((''&&%%$$##""!!{{zzyyxxeeffgghhUTTSSRRQXYYZZ[[\~~},--..//0A@@??>>=lmmnnoopA@@??>>= PPOONNMM]]^^__`` ||{{zzyy11223344<<;;::99qqrrsstt++,,--..$$##""!! wwvvuuttiiooppqq QPPOONNM\]]^^__` }||{{zzy01122334=<<;;::9pqqrrsst - - =<<;;554!!""##$$LLKKJJIIaabbccdd - - xxwwvvuu5566778888776655uuvvwwxx//001122 ssrrqqpprrssttuu !!""##$MLLKKJJI`aabbccd - - yxxwwvvu4556677898877665tuuvvwwx 43322110%%&&''((HHGGFFEEeeffgghhttssrrqq99::;;<<44332211yyzz{{||334455;;ooiihhggvvwwxxyy$%%&&''(IHHGGFFEdeeffggh uttssrrq899::;;<54433221xyyzz{{|0//..--,))**++,,DDCCBBAAiijjkkllppoonnmm==>>??@@00//..--}}~~<<==>>??ffeeddcczz{{||}}())**++,EDDCCBBAhiijjkklqppoonnm<==>>??@100//..-|}}~~,++**))(~~}}--..//00@@??>>==mmnnooppllkkjjiiAABBCCDD,,++**))@@AABBCC bbaa``__~~,--..//0A@@??>>=lmmnnoopmllkkjji@AABBCCD-,,++**)!(''&&%%$||{{zzyy11223344<<;;::99qqrrsstthhggffeeEEFFGGHH((''&&%%DDEEFFGG - - - ^^]]\\[[01122334=<<;;::9pqqrrsstihhggffeDEEFFGGH)((''&&%!""##$$%$##""!!xxwwvvuu5566778888776655uuvvwwxx - - ddccbbaaIIJJKKLL$$##""!!HHIIJJKK -  - - ZZYYXXWW4556677898877665tuuvvwwx - - eddccbbaHIIJJKKL%$$##""!%&&''(()ttssrrqq99::;;<<44332211yyzz{{|| ``__^^]]MMNNOOPP LLMMNNOO VVUUOONN899::;;<54433221xyyzz{{| a``__^^]LMMNNOOP! )**++,,-ppoonnmm==>>??@@00//..--}}~~\\[[ZZYYQQRRSSTTUUVVWWXXMMLLKKJJ<==>>??@100//..-|}}~~]\\[[ZZYPQQRRSST-..//001llkkjjiiAABBCCDD,,++**))XXWWVVUUUUVVWWXX~~}}||YYZZ[[\\ IIHHGGFF~~}}|@AABBCCD-,,++**)YXXWWVVUTUUVVWWX12233445 hhggffeeEEFFGGHH((''&&%%TTSSRRQQYYZZ[[\\{{zzyyxx]]^^__`` - - EEDDCCBB|{{zzyyxDEEFFGGH)((''&&%UTTSSRRQXYYZZ[[\~~}5;;<<==> - - ddccbbaaIIJJKKLL$$##""!! PPOONNMM]]^^__`` wwvvuuttaabbccdd  AA@@??>>xwwvvuutHIIJJKKL%$$##""! QPPOONNM\]]^^__` }||{{zzy>??@@AAB``__^^]]MMNNOOPP !!""##$$LLKKJJIIaabbccdd - - ssrrqqppeeffgghh!!""##$$==<<;;55tssrrqqpLMMNNOOP!  !!""##$MLLKKJJI`aabbccd - - yxxwwvvuBCCDDEEF\\[[ZZYYQQRRSSTT%%&&''((HHGGFFEEeeffgghhooiihhggiiooppqq%%&&''((44332211poonmlkjPQQRRSST$%%&&''(IHHGGFFEdeeffggh uttssrrqFGGHHIIJ - - XXWWVVUUUUVVWWXX))**++,,DDCCBBAAiijjkkllffeeddccrrssttuu))**++,,00//..--iihhggffTUUVVWWX())**++,EDDCCBBAhiijjkklqppoonnmJKKLLMMN TTSSRRQQYYZZ[[\\~~}}--..//00@@??>>==mmnnooppbbaa``__vvwwxxyy !--..//00,,++**))eeddccbbXYYZZ[[\~~},--..//0A@@??>>=lmmnnoopmllkkjjiNOOUUVVWPPOONNMM]]^^__`` ||{{zzyy11223344<<;;::99qqrrsstt^^]]\\[[zz{{||}}!""##$$%%&&''(())**++,,-DCCBBAA@ijjkkllmpoonnmml=>>??@@A0//..--,}~~+**))(('~~}}||..//0011??>>==<>==3221100/z{{||}}~_^^]]\\[NOOPPQQR544332215667788987766554uvvwwxxy - - dccbbaa`IJJKKLLM$##""!! &''(())*ssrrqqpp::;;<<==33221100zz{{||}}__^^]]\\NNOOPPQQMMNNOOUUonnmmllk>??@@AAB/..--,,+~[ZZYYXXWRSSTTUUV100//..-9::;;<<=43322110yzz{{||} `__^^]]\MNNOOPPQ *++,,--.oonnmmll>>??@@AA//..--,,~~[[ZZYYXXRRSSTTUUVVWWXXYYkjjiihhgBCCDDEEF+**))(('WVVUUTTSVWWXXYYZ-,,++**)=>>??@@A0//..--,}~~\[[ZZYYXQRRSSTTU.//00112kkjjiihhBBCCDDEE++**))((WWVVUUTTVVWWXXYY~~}}||{{ZZ[[\\]] -gffeeddcFGGHHIIJ'&&%%$$#SRRQQPPOZ[[\\]]^!!""#)((''&&%ABBCCDDE,++**))(XWWVVUUTUVVWWXXY2334455; -ggffeeddFFGGHHII''&&%%$$SSRRQQPPZZ[[\\]]zzyyxxww^^__``aa - cbbaa``_JKKLLMMN#""!!  !!"ONNMMLLK^__``aab#$$%%&&'%$$##""!EFFGGHHI(''&&%%$TSSRRQQPYZZ[[\\]~~}}|;<<==>>? - ccbbaa``JJKKLLMM##""!!  !!OONNMMLL^^__``aa vvuuttssbbccddee_^^]]\\[NOOPPQQR"##$$%%&KJJIIHHGbccddeef'(())**+! IJJKKLLM$##""!!  !POONNMML]^^__``a |{{zzyyx?@@AABBC__^^]]\\NNOOPPQQ""##$$%%KKJJIIHHbbccddee - - rrqqppooffgghhii[ZZYYXXWRSSTTUUV&''(())*GFFEEDDCfgghhiij+,,--../MNNOOPPQ !""##$$%LKKJJIIHabbccdde - - xwwvvuutCDDEEFFG [[ZZYYXXRRSSTTUU&&''(())GGFFEEDDffgghhiiiihhggffooppqqrrWVVUUTTSVWWXXYYZ*++,,--.CBBAA@@?jkkllmmn/0011223QRRSSTTU%&&''(()HGGFFEEDeffgghhitssrrqqpGHHIIJJK - - WWVVUUTTVVWWXXYY**++,,--CCBBAA@@jjkkllmmeeddccbbssttuuvvSRRQQPPOZ[[\\]]^~~}}||{.//00112?>>==<<;nooppqqr34455;;<UVVWWXXY)**++,,-DCCBBAA@ijjkkllmpoonnmmlKLLMMNNO SSRRQQPPZZ[[\\]]~~}}||..//0011??>>==<>??@ YZZ[[\\]~~}}|-..//001@??>>==3221100/z{{||}}~DEEFFGGH - - abbccdde - - xwwvvuut5667788987766554uvvwwxxy - - dccbbaa`\]]^^__`GGFFEEDDffgghhiissrrqqpp::;;<<==33221100zz{{||}}UUOONNMM*++,,--.CBBAA@@?jkkllmmnonnmmllk>??@@AAB/..--,,+~HIIJJKKL effgghhitssrrqqp9::;;<<=43322110yzz{{||} `__^^]]\`aabbccd !!""##CCBBAA@@jjkkllmmoonnmmll>>??@@AA//..--,,~~LLKKJJII.//00112?>>==<<;nooppqqrkjjiihhgBCCDDEEF+**))(('LMMNNOOUijjkkllmpoonnmml=>>??@@A0//..--,}~~\[[ZZYYXdeeffggh$$%%&&''??>>==<>==~~}}||{:;;<<==>3221100/z{{||}}~_^^]]\\[NOOPPQQR]^^__``a uvvwwxxy - - dccbbaa`IJJKKLLM$##""!!  !POONNMMLuvvwwxxy0011223333221100zz{{||}}__^^]]\\NNOOPPQQ""##$$%%<<;;5544{zzyyxxw>??@@AAB/..--,,+~[ZZYYXXWRSSTTUUV~~}}||{abbccdde !!""##$yzz{{||} `__^^]]\MNNOOPPQ !""##$$%LKKJJIIHyzz{{||}44556789//..--,,~~[[ZZYYXXRRSSTTUU&&''(())33221100wvvuuttsBCCDDEEF+**))(('WVVUUTTSVWWXXYYZ{zzyyxxweffgghhi$%%&&''(}~~\[[ZZYYXQRRSSTTU%&&''(()HGGFFEED}~~:;;<<==>++**))((WWVVUUTTVVWWXXYY**++,,--//..--,,srrqqppoFGGHHIIJ'&&%%$$#SRRQQPPOZ[[\\]]^wvvuuttsiooppqqr())**++,XWWVVUUTUVVWWXXY)**++,,-DCCBBAA@>??@@AAB''&&%%$$SSRRQQPPZZ[[\\]]~~}}||..//0011++**))((onmlkjiiJKKLLMMN#""!!  !!"ONNMMLLK^__``aab srrqqpporssttuuv,--..//0TSSRRQQPYZZ[[\\]~~}}|-..//001@??>>==>??@@AA\\[[ZZYYZ[[\\]]^~~}}||{.//00112?>>==<<;nooppqqr^]]\\[[Z~~}<==>>??@)**++,,-DCCBBAA@ijjkkllmpoonnmml=>>??@@A0//..--,zyyxxwwvUUVVWWXX~~}}||..//0011??>>==<>==3221100/z{{||}}~MLLKKJJIuttssrrqHIIJJKKLxwwvvuut5667788987766554uvvwwxxy - - dccbbaa`IJJKKLLM$##""!! ihhggffeaabbccddssrrqqpp::;;<<==33221100zz{{||}}__^^]]\\NNOOPPQQJIIHHGGFjkkllmmnonnmmllk>??@@AAB/..--,,+~IHHGGFFEqppoonnmLMMNNOOPtssrrqqp9::;;<<=43322110yzz{{||} `__^^]]\MNNOOPPQ eddccbbaeeffgghhoonnmmll>>??@@AA//..--,,~~[[ZZYYXXRRSSTTUU - -FEEDDCCBnooppqqrkjjiihhgBCCDDEEF+**))(('EDDCCBBAmllkkjjiPQQRRSSTpoonnmml=>>??@@A0//..--,}~~\[[ZZYYXQRRSSTTUa``__^^]iijklmnokkjjiihhBBCCDDEE++**))((WWVVUUTTVVWWXXYY BAA@@??>rssttuuv -gffeeddcFGGHHIIJ'&&%%$$#A@@??>>=ihhggffeTUUVVWWXlkkjjiihABBCCDDE,++**))(XWWVVUUTUVVWWXXY]\\[[ZZYoppqqrrs ggffeeddFFGGHHII''&&%%$$SSRRQQPPZZ[[\\]]>==<<;;:vwwxxyyz - cbbaa``_JKKLLMMN#""!!  !!"=<<;;554eddccbbaXYYZZ[[\hggffeedEFFGGHHI(''&&%%$TSSRRQQPYZZ[[\\]YXXWWVVUsttuuvvw - - ccbbaa``JJKKLLMM##""!!  !!OONNMMLL^^__``aa98765544z{{||}}~_^^]]\\[NOOPPQQR"##$$%%&43322110a``__^^]\]]^^__`dccbbaa`IJJKKLLM$##""!!  !POONNMML]^^__``a UOONNMMLwxxyyzz{__^^]]\\NNOOPPQQ""##$$%%KKJJIIHHbbccddee33221100~[ZZYYXXWRSSTTUUV&''(())*0//..--,]\\[[ZZY`aabbccd`__^^]]\MNNOOPPQ !""##$$%LKKJJIIHabbccdde - - LKKJJIIH{||}}~~[[ZZYYXXRRSSTTUU&&''(())GGFFEEDDffgghhii!!""##//..--,,WVVUUTTSVWWXXYYZ*++,,--.,++**))(YXXWWVVUdeeffggh\[[ZZYYXQRRSSTTU%&&''(()HGGFFEEDeffgghhiHGGFFEEDWWVVUUTTVVWWXXYY**++,,--CCBBAA@@jjkkllmm$$%%&&''++**))((SRRQQPPOZ[[\\]]^~~}}||{.//00112(''&&%%$UTTSSRRQhiijjkklXWWVVUUTUVVWWXXY)**++,,-DCCBBAA@ijjkkllmDCCBBAA@SSRRQQPPZZ[[\\]]~~}}||..//0011??>>==<>==>==< !!OONNMMLL^^__``aa {{zzyyxx22334455;;::9988rrssttuu,,--..//##""!! "##$$%%&KJJIIHHGbccddeef - - wvvuutts6778899:MLLKKJJIpqqrrsstPOONNMML]^^__``a |{{zzyyx12233445<;;::998qrrssttu - - <;;55443""##$$%%KKJJIIHHbbccddee - - wwvvuutt6677889977665544vvwwxxyy00112233&''(())*GFFEEDDCfgghhiijsrrqqppo:;;<<==>IHHGGFFEtuuvvwwxLKKJJIIHabbccdde - - xwwvvuut5667788987766554uvvwwxxy 3221100/&&''(())GGFFEEDDffgghhiissrrqqpp::;;<<==33221100zz{{||}}4455;;<<*++,,--.CBBAA@@?jkkllmmnonnmmllk>??@@AABEDDCCBBAxyyzz{{|HGGFFEEDeffgghhitssrrqqp9::;;<<=43322110yzz{{||}/..--,,+**++,,--CCBBAA@@jjkkllmmoonnmmll>>??@@AA//..--,,~~==>>??@@~~}}||{.//00112?>>==<<;nooppqqrkjjiihhgBCCDDEEF A@@??>>=|}}~~ZHAbtlJfpvtbdQZf`vXے`JXfpvrXQJ`ۉbdQZ|fH~ˑJtAdf~HےbHf`vXے`JXQtlJnXv`bdQZ|H~fZHAb|ZdQbp˂rrtAJl~f`ے`JXQtArdnXv`|drnvpQr˂pnXv`bHAdrtf`vX|ZdQfpvAZp˂nvpfr˂ptArdfHfdrtA`vXnے`JXQtlJXQJ`ےtdrvXH~r˂p|ZdQbpvntAJlfH~ˑZHAۍf~HZp˂AJltnvpbtlnXv`rXQJ`~f`vZHAb|ZdQbpvnJltvpfr˂ptArdbHAZtAJl璐fZHAZHAbtlJXv`ftbQZdf`vX`JXQfpvrXQJ`ۉbdQZ|fH~JtArdf~HےbHXnvے`JXQtlJrXQJ`bdQZ|H~fZHAb|ZdQbp˂rtbdQZbJQے`JXQtArd~HfrtAJlnvprbtlnXv`bHAdrtf`vX|ZdQfpvAZp`pfH~r˂ptArdےHAZdrtA`vXnے`JXQtlJXQJ`ے|drr˂pr˂p|ZdQbpvntbdfH~ˑJtAdf~HZp˂AJltnvpbtlnXv`bHAf`vZHAb|ZdQbp˂rJltvpfr˂ptArdbHAZtAJlZHAbZHAbtlJXv`pQZ|df`vX|ZdQfpvrXQJ`ۉbdQZ|fH~JtArdf~HZp˂Xnvے`JXQtlJXQJ`ےbdQZ|H~fZHAbf~Hp˂rtbdQtA`JXQے`JXQtArd˂rXQrtAJlnvpbtlnXv`bHAdrtfZHAb|ZdQfpvrXQJ`pfH~r˂ptArdbHAZdrtA`vXnے`JXQfpvXQJ`ےJltr˂pr˂p|ZdQbJ`ےtbdfH~JtArdf~HZp˂AJltے`JXbtlnXv`bHAfvXnZHAb|ZdQbp˂rJltvpfr˂pnXv`bHAZbdQZ|ZHAbZHAbtlJbHAZpQZrtAf`vX|ZdQfpvrXQJ`ۉbdQZ|Qr˂pJtArdf~HZp˂vpfHے`JXQtlJXQJ`ےbdQZ|H~fZHAbf~Hp˂rdrtA`JQrے`JXQtArd˂rXQJltnvpbtlnXv`bHAdrtZHAb|ZdQfpvbHAZ~f`r˂ptArdbHAZdrtA`vXnے`JXQfpvXQJ`ےJltpZHAbr˂p|ZdQbJ`p˂bdQZ|fH~JtArdf~HZp˂AJltے`JXbtlnXv`drtAdvXnZHAbf~Hp˂rJltvpfr˂pnXv`bHAZbdQZ|ے`JZHAbtlJrXQJdrtAfZHAb|ZdQfpvrXQJ`ۉbdQZ|Qr˂pJtArdf~HQZ|dvpfHے`JXQfpvXQJ`ےbdQZ|H~fZHAےf~Hp˂rltbXQr˂ے`JXQtArd`ےbJltے`JXbtlnXv`bHAdtAZHAb|ZdQfpvrtAJl~fvr˂pnXv`bHAZdrtA`vXn`JXQrfpvXQJ`ےdQZ|pZHAbr˂p|ZdQbHAZp˂bdQZ|Qr˂pJtArdf~HZp˂Jltے`JXbtlnXv`tbdnvpZHAbf~Hp˂rJltvpfbtlnXv`bHAZdrtAJے`JZHAbtlJrXQJrAJlZHAb|ZdQfpvrXQJ`bnvpQr˂pJtArdf~HQZ|dfH~ے`JXQfpvXQJ`ےbdQZ|H~fJtAdf~Hp˂rltbXQrZHے`JXQtArd`ےtbdQے`JXbtlnXv`bHAfHˑZHAb|ZdQfpvrtAJlf`vXr˂pnXv`bHAZdrtA`vXn|ZdQbfpvXQJ`ےdQZ|lAbے`r˂p|ZdQbrXQJ`Z|dQr˂pJtArdf~HZp˂f`vXے`JXbtlnXv`|dnvpZHAےf~Hp˂rJltvpftlJnXv`bHAZtbnJXQrZHAbtlJےbHArtAJlZHAb|ZdQfpvrXQJ`nvpQr˂pJtArdf~HrtAJlfH~`JXQrfpvXQJ`ےbdQZ|H~ftArdf~Hp˂rvp`˂pZHے`JXQtArdZp˂tbdQے`JXbtlnXv`bHAfH~ˑZHAb|ZdQfpvtbdQf`vnbtlnXv`bHAZdrtA`vXn|ZdQbfpvXQJ`ےvXnAbے`r˂p|ZdQbrXQJ`Z|dnQr˂pJtArdf~HZp˂f`vXے`JXbtlnXv`Z|dvpfHJtAdf~Hp˂rJltvpftlJnXv`bHAZvpfHJXQrZHAbtlJےbHAvfˑZHAb|ZdQfpvrXQJ`nvpQr˂pJtArdf~HrtAJl~f`|ZdQbfpvXQJ`ےbdQZ|H~ftArdf~Hp˂r~f`ZAbے`JXQtArdXQJ`ےf`vXے`JXbtlnXv`bHAfH~ˑZHAb|ZdQfpvtdrtvXntlJnXv`bHAZdrtAZHAb|ZdQbfpvXQJ`ےvXnے`JXQr˂pf~HbHAZnvpQr˂pJtArdf~HZdrtf`vXے`JXbtlnXv`AJltvpfHtArdf~Hp˂rJltے`JXQtlJnXv`bHAZvp`vr˂pZHAbXv`fp˂rfH~ˑZHAb|ZdQfpvAJltnvpQr˂pJtArdfHbdQZ|~f`|ZdQbfpvXQJ`ےbdQZ|r˂ptArdf~Hp˂rXnvZHAbے`JXQ~HfXQJ`ےf`vXے`JXbtlnXv`bdQZ|fH~ˑZHAb|ZdQfpvdrtvXnvftlJnXv`bHAZdrtAZHAb|ZdQbfpvXQJ`ےpfH~ے`JXQr˂ppvnbHAZnvpQr˂pJtArdf~Hdrtf`vXے`JXbtlnrXQJ`AJltH~ftArdf~Hp˂rJltے`JXQtlJnXv`bHAZf`vr˂pZHAbXv`fp`ےfH~ˑZHAb|ZdQfpvAJltnvpQr˂pJtArdp˂bdQtAZHAb|ZdQbfpvXQJ`ےbdQZ|r˂ptArdf~Hp˂rXnvZAb`ے`JXQ~HfbHAZpf`vXے`JXbtlnXv`bdQZ|fH~ˑZHAb|ZdQrXQJ`Jltے`JXQtlJnXv`bHAZdtAJZHAb|ZdQbfpvXQJ`ےpfHXJXQrr˂pp`f˂rXQnvpQr˂pJtArdfHdrtf`vXے`JXbtlbHAbdQZ|r˂ptArdf~Hp˂rltbے`JXQtlJnXv`bHAZnvppZHAZHAb~HfpJ`ےfH~ˑZHAb|ZdQfpvAJltnvpQr˂pJtArdZp˂drtAZHAb|ZdQbfpvXQJ`ےnvpr˂ptArdf~Hp˂rfH~bے`ے`JXQvnXbHAZpf`vXے`JXbtlnrXQJ`bdQZ|fH~ˑZHAb|ZdQrXQJ`pJltے`JXQtlJnXv`bHAZfHfZHAb|ZdQbfpvXQJ`ےf`vXJXQrr˂pv`f˂bnvpQr˂pJtArdےHAdrtf`vXے`JXbtl˂rXbdQZ|lr˂ptArdf~Hp˂r`vXnے`JXQtlJnXv`bHAZnvppZA`|ZdQb~HfpHAZdfH~ˑZHAb|ZdQZp˂AJltnvpQr˂pJtArdQJ`ےtbdZHAb|ZdQbfpvXQJ`ےvpfr˂ptArdf~HdrtAfH~JXQrtlJv~rtAJf`vXے`JXbtlrXQJ`ۉbdQZ|fH~ˑZHAbf~HbHAZpQZ|dے`JXQtlJnXv`bHAZH~fZHAb|ZdQbfpvdQZ|vpfbtltArdHfpvbdQZ|nvpQr˂pJtArdbHAdrtf`vXے`JXfpv˂rXrtAJlr˂ptArdf~Hp˂r`vXnے`JXQtlJnXv`drtAJH~fJtAd||ZdQbnXvdrtAfH~ˑZHAb|ZdQZp˂AJltnvpQr˂pnXv`QJ`ےtbdZHAb|ZdQbfpvXQJ`ےvpfr˂ptArdf~Hltb`vXnZdQbttlJ`f~Jltf`vXے`JXbtlrXQJ`ۉbdQZ|fH~ˑZHAbf~HrXQQZ|lے`JXQtlJnXv`bHAZH~fZHAb|ZdQbfpvdQZ|vpflJttArdHfpvbdQZ|nvpQr˂pJtArdbHAdrtf`vXے`JXfpvJ`ےtbnr˂ptArdf~HdrtA`vXnے`JXQtlJnXv`drtAJH~fArd||ZdQbnXHdrtAfH~ˑZHAbf~HZp˂AJltnvpQr˂pnXv`bHAZp˅vpfZHAb|ZdQbfpvJltvpfr˂ptArdfHfl|d`pfHZdQbttlJfpvJlbQZf`vXے`JXfpvrXQJ`ۉbdQZ|fH~ˑZHAۍf~HrXQf`vXے`JXQtlJnXv`bdQZ|H~fZHAb|ZdQbpvnrtAJl~f`lJttArdnXv`|drnvpQr˂pnXv`bHAdrtf`vX`JXQfpvJ`ےnvpr˂ptArdf~HdrtA`vXnے`JXQtlJrXQJ`tbdQvXnArd||ZdQbf~HtAJlfH~ˑZHAbf~HZp˂AJltnvprbtlnXv`bHAXQJ`fH~ZHAb|ZdQbfpvJltvpfr˂ptArdےHAZZ|dvpfHZdQbtlJtArd|f~H˂rXtb`JXQlJtnXv`˙bHAZpvXnAbے`~Hf˂rXQltbvpfHtlJXv`fbHAZpdrtAJvXntArdfpvtbdvpfH˂pZHrd|HAZp˙rtAJlvXnۉ˂p`ZXnvˍZdQbtfpvQJ`ےnvpr˂pArd|f~H˂rXvp`JXQrpvnJ`ےdQZ|~f`tAd|~Hf˂rXQltbvpfH|ZdQbnXv`QZ|d~f`Abے`ZdQbt炀rXQtbdvpfHQXb㉀pfH~ㅉlJtnXv`˙bHAZpfHf`ZHAbہZdQbtfpvQJ`ےvXnۉ˂p`Xv`fbHAZpdrtAJvXnZdQbtpvnJ`ےdQZ|~fZtlJffpۙrtAJlvXnہJXQrlJtAJ`ےQZ|d~f`ۑpJAHrf۝`vArd|f~H˂rXvXn`JXQlJtnXv`˙bHAZvpfHJXQrː~Hf˂rXQltbvpfHlJtAXv`fbHAZpdrtAJHAbtArdtvnrXtbdvpfH˂pZHrd|bHAZp˙rtAJlvXn󙐂ˁ`ZXnvˍZdQbtfpvQJ`ےvpfHr˂pArd|f~HdrtA~f`pZHApvnJ`ےdQZ|~f`rd|~Hf˂rXQltb˂pZHAlJtAQJ`ےQZ|d~f`Abے`ZdQbt炀rXQtbdvpfHQXb㉀pfH~ㅉlJtnXv`˙bHAZp~f`ZHAbہZdQbtfpvJltvXnbے`Xv`fbHAZpdrtAJvXnZdQbtpvnJ`ےdQZ|bے`rd|HAZp˙rtAJlvXnہJXQrlJtAJ`ےQZ|d~f`ۑp`ZQf۝`vArd|f~H˂rXvXn`JXQlJtnXv`bdQZ|vpfHXJXQrː~Hf˂rXQltbvpfHlJtAXv`fbHAZpdrtAJJXQrZdQbtrXQtbdvpfH˂pZHrdfbHAZp˙rtAJlvXnXb㉀ۑXnvˍZdQbtfpvQJ`ےvpfHr˂pArd|f~HdrtAnvpp`JXpvnJ`ےdQZ|~fZrd|~Hf˂rXQltb˂pZHAlJtAJ`ےQZ|d~f`Abے`~HfprXQtbdvpfHpJAHrpfH~ㅉlJtnXv`˙bHAZ~f`ZHAbہZdQbtfpvJltfH~QrbtXv`fbHAZpdrtAJHAbےZdQbtpvnJ`ےdQZ|bے`rd|bHAZp˙rtAJlvXnہJXQrvnXJ`ےQZ|d~f`ˁ`ZQf۝`vArd|f~HdrtAvXn`JXQlJtnXv`bdQZ|f`vXlJA|~Hf˂rXQltb`JXQrlJtAXv`fbHAZpdtAJlpZHAblJtArrXQtbdvpfH˂pZHv`fbHAZp˙rtAJlvXnXb㉀ۑXnvˍZdQbtfpvJltvpfHr˂pArd|fHfpdrtAnvpZdQbtpvnJ`ےdQZ|˂pZrd|~Hf˂rXQtbnے`Jd|ZJ`ےQZ|d~f`Abے`~HfprXQtbdvpfHpJAHQXbpfH~ㅉlJtnXv`bdQZ|~f`ZHAbہZdQbtvnJltfH~lJtXv`fbHAZpdrtAJHAbےZdQbtpvnJ`ےvpfXQr˂dQbtbHAZp˙rtAJlvXnہJXQrvnXJ`ےQZ|d~f`㉀ۑpJf۝`vArd|f~HdrtAvXn`JXQlJtrXQJ`bdQZ|vpArd|~Hf˂rXQltb`JXQrlJtAXv`fbHAZpHf`pZHAblJtArrXQtbdvpfH˂pZHv`fbHAZp˙rtAJlvXnAHr󙐂XnvˍZdQbtfpvJltvpfHr˂pArd|HAZpdrtAfH~ˁZdQbtpvnJ`ےdQZ|˂pZrd|~Hf˂rXQvXnے`Jd|ZJ`ےQZ|d~f`Aے`~HfprXQtbdvpfHˁ`ZQXbp|drlJtnXv`bdQZ|~f`ZHAbہZdQbt˂rXJltf`vXlJArXv`fbHAZpdtAJlHAbےZdQbtpvnJ`ےvpfHXQHAbdQtArdbHAZp˙rtAJlvXnJXQrbtvnXJ`ےQZ|d~f`㉀ۑpJQtJlArd|fHfpdrtAvXn`JXQlJtQJ`ےbdQZ|nvp|ZdQ~Hf˂rXQtbn`JXQrlJtAXv`fbHAZp~f`ے`JXQf~rXQtbdvpfHlJtv`fbHAZp˙rtAJlvXnAHr󙐉tbAdZZdQbtvnJltvpfHr˂pArd|bHAZpdrtAfH~btlpvnJ`ےvpf˂pZrd|~Hf˂rXQvXnr˂pHfvnXJ`ےQZ|d~f`Ad|~HfprXQtbdvpfHۑpJA|drlJtrXQJ`bdQZ|~f`ZHAbہZdQbt˂rXJltf`pfHJtArdXv`fbHAZpHf`HAbےZdQbtpvnJ`ےvpfHZHAbv`fbHAZp˙rtAJlvXnZdQbtvnXJ`ےQZ|d~frHr󙐂ˁQtJlArd|HAZpdrtAvXn`JXQlJtQJ`ےbdQZ|~f`|ZdQ~Hf˂rXQvXn`JXQrlJtAXv`fbHAZ~f`ے`JXQ~HfprXQtbdvpfHlJtAv`fbHAZp˙rtAJl˂pZH`ZQXbtbAdZZdQbt˂rXJltvpfHr˂pArd˙bHAZpdrtAvXnbtlpvnJ`ےvpfH˂pZrd|~HfdrtAJvXnrےvnXJ`ےQZ|d~f`rd|~HfprXQtbdAbے`ۑpJA|drlJtQJ`ےbdQZ|~f`ZHAbf~H˂rXJltvpfHJtArXv`fbHAZp~f`HAbےZdQbtpvnltbvpfH`JXQrv`fbHAZp˙rtAJlvXnZdQbtvnXJ`ےQZ|dJXQrHr󙐂ˁQtJlArd|bHAZpdrtAvXn`JXQfpvQJ`ےbdQZ|~f`ZdQbt琕~Hf˂rXQvXn`JXQrlJtAXv`fdQZ|~f`˂pZ~HfprXQtbdvpfHlJtAv`fbHAZp˙rtAJl˂pZH`pJAHrtbAdZZdQbt˂rXJltvpfHr˂pnXv`˙bHAZpdrtAvXHlJtApvnJ`ےvpfH˂pZrd|~HfdrtAJvXnHAbےvnv`J`ےQZ|d~fZHrd|~HfprXQtbdAbے`󙐂ˁ`Z|drlJtQJ`ےbdQZ|~f`ZHAbf~H˂rXJlt~fZHrd|Xv`fbHAZ~f`HAbےZdQbtpvnltbvpfH`JXQrf~HbHAZp˙rtAJlAbے`ZdQbtvnXJ`ےQZ|dpZHAQXb㉀QtJlArd˙bHAZpdrtAvXn`JXQfpvQJ`ےbdQZ|AbZdQbt琕~HfdrtAJvXn`JXQrlJtAXv`fdQZ|~f`˂p`fpvrXQtbdJXQrlJtAv`fbHAZp˙tAJlbے`ۑpJAHrtbAdZf~H˂rXJltvpfHr˂pnXv`˙bHAZpdrtApZHAlJtApvnltbvpfH˂pZrd|HfpdrtAJvXnJXQrnXv`J`ےQZ|d˂pZHrd|~HfprXQtbnJXQr󙐂ˁ`|drfpvQJ`ےbdQZ|~f`ZHAے`f~H˂rXJltbے`rdZQbXv`fdQZ|~f`HAbےZdQbtvnrltbvpfH˂pZHAf~HbHAZp˙rtAJlAbے`ZdQbtvnXJ`ےvpfHpZHApfH~QtJlnXv`˙bHAZpdrtAvXnJXQrfpvQJ`ےbdQZ|JXQrtlJ~HfdrtAJvXn`JXQrlJtAXQJ`ےdQZ|~f`bے`fpvrXQtbdJXQrlJtAv`fbHAZp˅f`bے`f۝`vtbAdZf~H˂rXJltvpfHbtlnXv`˙bHAZpdrtApZHAtArdpvnltbvpfH˂pZrd|HAZpdrtAJvXnJXQrnvfJ`ےQZ|d˂pZHrd|~HfprXQvXnJXQHAbXnvˍ|drfpvQJ`ےbdQZ|~f`JtAd|f~H˂rXJltbے`p|ZdQbXv`fdQZ|~f`HAbےZdQbt˂rXQltbvpfH˂p`J~HfpbHAZp˙tAJlAbے`ZdQbtvnXJ`ےvpfHے`JXpfH~QtJlnXv`˙bHAZpdrtAvXnZdQbtfpvQJ`ےbdQZ|ZHAbtlJHfpdrtAJvXn`JXQrlJtAJ`ےdQZ|~f`XQrbtvnXrXQtbnJXQrlJtAv`fbHAZp~f`Qr˂pf۝`vtbAdZf~H˂rXJltvpfHlJtnXv`˙bHAZpdrtAے`JXtArdvnrltbvpfH˂pZrd|bHAZpdrtAJvXnl|Zv`fJ`ےvpfH˂pZHrd|~HfprXQvXnۑZHAbXnvˍ|drfpvQJ`ےbdQZ|~f`Ard|f~H˂rXJltQr˂p|ZQblXQJ`ےdQZ|~f`HAbےZdQbt˂rXQltbvpfHdQbt~HfpbHAZp˅f`Abے`ZdQbtvnXJ`ےvpfHے`JXpfH~QtJlnXv`˙bHAZpdrtAvXnZdQbtfpvQJ`ےbdQZ|ZHAbJtArdHAZpdrtAJvXn`JXQrlJtAJ`ےdQZ|~f`lJtArvnXvrXQvXnہJXQrlJtAv`fbHAZd~f`Qrېf۝`vtbAdZf~H˂rXJltvpfHlJtnXv`˙bHAZpdrtAے`JX|Zd˂rXQltbvpfH˂pZrdfbHAZpdrtAJvXnd|Zf~HfJ`ےvpfH˂pZHrd|~HfprtAJlvXnے`JXQXnvˍ|drfpvQJ`ےbdQZ|~fArd|f~H˂rXJltQHAbQbtlJ`ےdQZ|~f`HAbے~Hf˂rXQltbvpfHdQbtpvnbHAZp~f`Abے`ZdQbtvnXtbdvpfHr˂ppfH~QtJlnXv`˙bHAZpdrtAZHAbہZdQbtfpvQJ`ےbdQZ|`JXQJtArdbHAZpdrtAJvXn`JXQrpvnJ`ےdQZ|~f`l|ZdQXv`frXQvXnہJXQrlJtAv`fQZ|d~f`ZHAbېf۝`vtbAdZf~H˂rXJlt`JXQlJtnXv`˙bHAZpdtAJlr˂p|Zd˂rXQltbvpfH˂pZXv`fbHAZpdrtAJvXnbtl~HfJ`ےvpfH˂pZHrd|~HfprtAJlvXnے`JXQXnvˍ|drfpvQJ`ےbdQZ|r˂pArd|f~H˂rXtbZHAbQbJtAJ`ےdQZ|~f`HAbے~Hf˂rXQltbvpfHJtArdpvnbHAZd~f`Abے`ZdQbtvnXtbdvpfHr˂p`pfH~QtJlnXv`˙bHAZpdrtAZHAbہZdQbtfpvQJ`ےnvp``JXQrdfbHAZpdrtAJvXn`JXQrpvnJ`ےdQZ|~f`|ZdQXv`frtAJlvXnہJXQrlJtAv`fQZ|d~f`JXQrf۝`vtbAdZf~H˂rXJlt`JXQlJtnXv`˙bHAZpvXnrے`~Hf˂rXQltbvpfH˂pZXv`fbHAZpdrtAJvXnbtl~fpvtbdvpfH˂pZHrd|HfpۙrtAJlvXnۉ˂pZHXnvˍ|drfpvQJ`ےbdQZ|r˂pArd|f~H˂rXvpfHJXQrpvnJ`ےdQZ|~f`HAے`~Hf˂rXQltbvpfHJtAdQbnXv`QZ|d~f`Abے`ZdQbtvnrXtbdvpfHAbے`pfH~QtJlnXv`˙bHAZpdtAJlZHAbہZdQbtfpvQJ`ے~f`˂pZHXv`fbHAZpdrtAJvXnJXQrbpvnJ`ےdQZ|~f`tlJf~HrtAJlvXnہJXQrlJtAQJ`ےQZ|d~f`JXQrf۝`vtbAdZ|6666666666666666666666666666666666666666667 \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv32_0.dat b/mpdf/qrcode/data/qrv32_0.dat deleted file mode 100644 index b72bdaa..0000000 --- a/mpdf/qrcode/data/qrv32_0.dat +++ /dev/null @@ -1,289 +0,0 @@ -}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWSTSTSTSTQRQRQRQRQRQRQRQPOPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:~}~}~}~}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYXWXWXWXWSTSTSTSTQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:}~}~}~}~}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopnmnmmmmmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYXWXWXWVUSTSTSTSTQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:}~}~}~}~}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYVUVUVUVUSTSTSTSTQRQRQRQROPOPOPOPOPOPOPONMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:}~}~}~}~}|{|{|{|{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYVUVUVUVUSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYVUVUVUVUSTSSSSSSQRQRQRQROPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:999999}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYVUVUVUVUTSTSTSTSQRQRQRQROPOPOPOPMNMNMNMNMNMNMNMLKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<:9:9:9:9}~}~}~}~{|{|{|{|{zyzyzyzyzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<:9:9:9:9}~}~}~}~{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmmmmmmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<:9:9:9:9}~}~}~}~{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLKLKLKLKJIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<:9:9:9:9}~}~}~}~{|{|{|{|yzyzyzyzyxwxwxwxwxwxwxwxuvuvuvuvststststqrqrqrqropoponmnlklklklklklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<:9:9:9:987878787}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvststststqrqrqrqrmnmnmmmmlklklklklklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSSSSSSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<:999999:87878787}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvststststqrqrqrqrmnmnmnmnlklklklklklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJIJIJIJIHGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:87878787}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxwvuvuvuvuvuvuvuvststststqrqrqrqrmnmnmnmnlklklklkjijijijijijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:87878787}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvuvuvuvuvststststqrqrqrqpmnmnmnmnlklklklkjijijijijijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:87878787}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvuvuvuvuvststststopopopopmnmnmnmnlklklklkjijijijijijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHGHGHGHGFEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:87878787}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvutstststststststopopopopmnmnmnmnlklklklkjijijijihghghghghghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:87878787}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststststststopopopopmnmnmnmmlklklklkjijijijihghghghghghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUSSSSSSTSQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<999999:987878787}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststststststopopopopmmmmnmnmlklklklkjijijijihghghghghghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFEFEFEFEDCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<:9:9:98787878787}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststsrqrqrqropopopopnmnmnmnmlklklklkjijijijihghghghgfefefefefefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;:9:9:8787878787878787}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopnmnmnmnmlklklklkjijijijihghghghgfefefefefefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDCDCDCDCDABABABAB?@?@?@?@=>=>=>=>9:99999:8787878787878787}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopnmnmnmnmlklklklkjijijijihghghghgfefefefefefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDCDCDCDCBABABABAB?@?@?@?@=>=>=>=>9:9:9:9:8787878787878787}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABABABABABAB?@?@?@?@=>=>=>=>9:9:9:9:8787878787878787}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopnmnmnmmmlklklklkjijijijihghghghgfefefefedcdcdcdcdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUSSSSSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABABABABABAB?@?@?@?@=>=>=<;<9:9:9:9:8787878787878787}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopmmmnmnmnlklklklkjijijijihghghghgfefefefedcdcdcdcdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABABABABABA@?@?@?@?@;<;<;<;<9:9:9:9:8787878787878787}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnlklklklkjijijijihghghghgfefefefedcdcdcdcbabababababababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@?@?@?@?@;<;<;<;<9:9:9:9:8787878787878787}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnlklklklkjijijijihghghghgfefefefedcdcdcdcbabababababababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@?@?@?@?@;<;<;<;<9:9:99998787878787878787}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnlklklklkjijijijihghghghgfefefefedcdcdcdcbabababababababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@?@?@?@?>;<;<;<;<99:9:9:98787878787878787}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmnmnlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<:9:9:9:98787878787878787}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopmnmnmmmmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUSTSSSSSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<:9:9:9:98787878787878787}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopmmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUSTSTSTSRQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<:9:9:9:98787878787878787}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUTSTSQRQRQRQRQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<:9:9:9:98787878787878765}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWTSTSSSSSQRQRQRQRQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<:9:999998787878765656565656565656565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -656565656565654343434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -656565654343434343434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - -656565654343434343434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!       - - - -656565654343434343434321212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -656565654343434321212121212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -656565654343434321212121212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -6565656543434343212121212121210/0/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!          - - - -6565656543434343212121210/0/0/0/0/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!            - - - -6565656543434343212121210/0/0/0/0/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!            - - - -6565656543434343212121210/0/0/0/0/0/0/.-.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!           - - - -6565656543434343212121210/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -6565656543434343212121210/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -6565656543434343212121210/0/0/0/.-.-.-.-.-.-.-,+,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - - - -6565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - - - - - -6565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!       - - - - - - - -6565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+,+,+,+*)*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!       - - - - - - 6565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!        - - - -6565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%$#$#$#$#       - - - -6565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)*)*)*)('('('('('&%&%&%&%$#$#$#$#         - - - -6565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%$#$#$#$#         - - - -6565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%$#$#"!"!         - - - -6565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('('('('&%&%&%&%&%"!"!"!"!         - - - -6565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%&%&%&%&%"!"!"!"!         - - - -6565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%&%&%&%&%"!"!"!"!      - - - -6565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%&%&%&%$#"!"!"!"!         - - - -6565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -6565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -6565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -6565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -6565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!       - - - -6565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -6565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - - - - iihhggff,--..//0qppoonnmhiijjkkl54433221PQQRRSSTMLLKKJJIFGGHHIIJ43322110ddeeffgg44332211QQRRSSTTLLKKJJII99::;;<>==??@@AAB - - eeddccbb01122334mllkkjjilmmnnoop100//..-TUUVVWWXIHHGGFFEJKKLLMMN0//..--,hhiijjkk00//..--UUVVWWXXHHGGFFEE==>>??@@``__^^]]%%&&''((xxwwvvuu  - - yyzz{{|| - -   - - yzz{{||}$##""!! abbccdde<;;::998IJJKKLLMTSSRRQQP12233445lkkjjiih%%&]\\[[ZZYBCCDDEEF %%&&aa``__^^45566778ihhggffe ~~}pqqrrsst-,,++**)XYYZZ[[\EDDCCBBANOOPPQQR,++**))(llmmnopq,,++**))YYZZ[[\\DDCCBBAAAABBCCDD\\[[ZZYY))**++,,ttssrrqq}}~~~~}}|}~~ effgghhi87766554MNNOOPPQPOONNMML56677889hggffeed&''(())*YSSRRQQPFGGHHIIJ''(())**]]\\[[ZZ899::;;>=RSSYYZZ[(''&&%%rssttuuv((''&&%%]]^^__``@@??>>==EEFFGGHHXXWWVVUU--..//00ppoonnmm |{{zzyyxijjkkllm43322110QRRSSTTULKKJJIIH9::;;<<=dccbbaa`*++,,--.POONNMMLJKKLLMMN~~}}++,,--..YYXWVUTS<==>>??@a``__^^]$%%&&''(yxxwwvvu  - - xyyzz{{|%$$##""!`aabbccd=<<;;::9[\\]]^^_vwwxxyyz$$##""!!aabbccdd<<;;::99IIJJKKLLTTSSRRQQ11223344llkkjjii - - xwwvvuutmnnooppq0//..--,UVVWWXXYHGGFFEED=>>??@@A`__^^]]\.//00112LKKJJIIHNOOPPQQR||{{zzyy~~}}||//001122SRRQQPPO@AABBCCD]\\[[ZZY())**++,uttssrrq |}}~~! deeffggh98877665_``aabbcz{{||}}~ eeffgghh88776655MMNNOOPPPPOONNMM55667788hhggffee ~~}}tssrqpon !~~}}| qrrssttu,++**))(YZZ[[\\]DCCBBAA@ABBCCDDE\[[ZZYYX23344556HGGFFEEDRSSTUVWXxxwwvvuu {{zzyyxx33445566ONNMMLLKDEEFFGGHYXXWWVVU,--..//0qppoonnmhiijjkkl54433221cddeeffg~iijjkkll44332211QQRRSSTTLLKKJJII99::;;<>==>??@@``__^^]]%%&&''((xxwwvvuu iihhggff%&&''(()xwwvvuut  - - yzz{{||}$##""!! abbccdde<;;::998IJJKKLLMTSSRRQQP?@@AABBC@??99887]]^^__``ppoonnmm%%&&''((ssmmllkk@@AABBCCGFFEEDDCLMMNNOOPQPPOONNM45566778ihhggffe ~~}pqqrrsst-,,++**)kllmmsst qqrrsstt,,++**))YYZZ[[\\DDCCBBAAAABBCCDD\\[[ZZYY))**++,,ttssrrqqeeddccbb)**++,,-tssrrqqp}~~ effgghhi87766554MNNOOPPQPOONNMMLCDDEEFFG76655443aabbccddllkkjjii))**++,,jjiihhggDDEEFFGGCBBAA@@?PQQRRSSTMLLKKJJI899::;;>==EEFFGGHHXXWWVVUU--..//00ppoonnmm%%&&aa``__^^-..//001poonnmmlijjkkllm43322110QRRSSTTULKKJJIIHGHHIIJJK3221100/eeffgghhhhggffee--..//00ffeeddccHHIIJJKK?>=<;:99TUUVVWWXIHHGGFFE<==>>??@a``__^^]$%%&&''(yxxwwvvu  - - xyyzz{{|%$$##""!xyyzz{{| - - yyzz{{||$$##""!!aabbccdd<<;;::99IIJJKKLLTTSSRRQQ11223344llkkjjii~~}}||''(())**]]\\[[ZZ12233445lkkjjiihmnnooppq0//..--,UVVWWXXYHGGFFEEDKLLMMNNO/..--,,+iijjkkllWWVVUUTTddccbbaa11223344bbaa``__LLMMNNOO88776655XYYZZ[[\EDDCCBBA@AABBCCD]\\[[ZZY())**++,uttssrrq |}}~~! |}}~~}}~~ eeffgghh88776655MMNNOOPPPPOONNMM55667788hhggffee {{zzyyxx++,,--..YYXWVUTS56677889hggffeed !~~}}| qrrssttu,++**))(YZZ[[\\]DCCBBAA@OPPQQRRS+**))(('mmnopqrsSSRRQQPP``__^^]]55667788^^]]\\[[PPQQRRSS44332211\]]^^__`A@@??>>=DEEFFGGHYXXWWVVU,--..//0qppoonnm - - iijjkkll44332211QQRRSSTTLLKKJJII99::;;<>==>??@@``__^^]]%%&&''((ssmmllkk33445566ONNMMLLK=>>??@@A`__^^]]\%&&''(()xwwvvuut  - - yzz{{||}$##""!! abbccdde<;;::998\]]^^__`wxxyyzz{KKJJIIHHXXWWVVUU==>>??@@QQPPOONN]]^^__``,,++**))deeffggh98877665LMMNNOOPQPPOONNM45566778ihhggffe ~~}~~}}qqrrsstt,,++**))YYZZ[[\\DDCCBBAAAABBCCDD\\[[ZZYY))**++,,jjiihhgg778899??KJJIIHHGABBCCDDE\[[ZZYYX)**++,,-tssrrqqp}~~ effgghhi87766554`aabbccd{||}}~~GGFFEEDDTTSSRRQQAABBCCDDMMLLKKJJaabbccdd((''&&%%hiijjkkl54433221PQQRRSSTMLLKKJJI899::;;>==EEFFGGHHXXWWVVUU--..//00ffeeddcc@@AABBCCGFFEEDDCEFFGGHHIXWWVVUUT-..//001poonnmmlijjkkllm43322110deeffgghCCBBAA@@PPOONNMMEEFFGGHHIIHHGGFFeeffgghh$#"! lmmnnoop100//..-TUUVVWWXIHHGGFFE<==>>??@a``__^^]$%%&&''(yxxwwvvu  - - xxwwvvuu  - - yyzz{{||$$##""!!aabbccdd<<;;::99IIJJKKLLTTSSRRQQ11223344bbaa``__DDEEFFGGCBBAA@@?IJJKKLLMTSSRRQQP12233445lkkjjiihmnnooppq0//..--,hiijjkkl??>>==<=<;:99MNNOOPPQPOONNMML56677889hggffeed !~~}}| qrrssttu,++**))(lmmssttu -;;::9988HHGGFFEEMMNNOOPPAA@@??99mmssttuutuuvvwwx)((''&&%\]]^^__`A@@??>>=DEEFFGGHYXXWWVVU,--..//0qppoonnm~~}}||{!"#$%%&&ppoonnmmiijjkkll44332211QQRRSSTTLLKKJJII99::;;<>??@@QQPPOONNPPQQRRSS44332211UVVWWXXYHGGFFEED=>>??@@A`__^^]]\%&&''(()xwwvvuut  - - yzz{{||}$##""!! yzz{{||}33221100@@??>>==UUVVWWXX44332211zz{{||}}|}}~~! deeffggh98877665LMMNNOOPQPPOONNM45566778ihhggffe ~~} - - wvvuutts++,,--..hhggffee ~~}}qqrrsstt,,++**))YYZZ[[\\DDCCBBAAAABBCCDDMMLLKKJJYYZZ[[\\00//..--YZZ[[\\]DCCBBAA@ABBCCDDE\[[ZZYYX)**++,,-tssrrqqp}~~ }~~ //..--,,<<;;::99YYZZ[[\\00//..--~~ -hiijjkkl54433221PQQRRSSTMLLKKJJI899::;;>==EEFFGGHHIIHHGGFF]]^^__``,,++**))]^^__``a@??>>==>??@a``__^^]$%%&&''(yxxwwvvujiihhggf33445566``__^^]]%%&&''((xxwwvvuu  - - yyzz{{||$$##""!!aabbccdd<<;;::99IIJJKKLLEEDDCCBBaabbccdd((''&&%%abbccdde<;;::998IJJKKLLMTSSRRQQP12233445lkkjjiih ''&&%%$$44332211aabbccdd((''&&%%pqqrrsst-,,++**)XYYZZ[[\EDDCCBBA@AABBCCD]\\[[ZZY())**++,uttssrrqfeeddccb778899:;\\[[ZZYY))**++,,ttssrrqq}}~~ eeffgghh88776655MMNNOOPPAA@@??99eeffgghh$#"! effgghhi87766554MNNOOPPQPOONNMML56677889hggffeed !~~}}| ~~}}||##""!! 00//..--eeffgghh - -  tuuvvwwx)((''&&%\]]^^__`A@@??>>=DEEFFGGHYXXWWVVU,--..//0qppoonnmbaa``__^<=>??@@AXXWWVVUU--..//00ppoonnmmiijjkkll44332211QQRRSSTT88776655iijjkkllijjkkllm43322110QRRSSTTULKKJJIIH9::;;<<=dccbbaa`!""##$$%|{{zzyyx - -  {{zzyyxx,,++**))iijjkkll  - - xyyzz{{|%$$##""!`aabbccd=<<;;::9HIIJJKKLUTTSSRRQ01122334mllkkjji%^]]\\[[ZABBCCDDETTSSRRQQ11223344llkkjjiimmnnoopp00//..--UUVVWWXX44332211mmssttuumnnooppq0//..--,UVVWWXXYHGGFFEED=>>??@@A`__^^]]\%&&''(()xwwvvuut  - - wwvvuutt((''&&%%mmnnoopp |}}~~! deeffggh98877665LMMNNOOPQPPOONNM45566778ihhggffe%&&''(()ZYYSSRRQEFFGGHHIPPOONNMM55667788hhggffee ~~}}qqrrsstt,,++**))YYZZ[[\\00//..--vvwwxxyyqrrssttu,++**))(YZZ[[\\]DCCBBAA@ABBCCDDE\[[ZZYYX)**++,,-tssrrqqp~ !"ssrrqqpp$$##""!!qqrrsstthiijjkkl54433221PQQRRSSTMLLKKJJI899::;;>==>??@a``__^^]-..//001MLLKKJJIMNNOOPPQHHGGFFEE==>>??@@``__^^]]%%&&''((xxwwvvuu  - - yyzz{{||$$##""!!aabbccdd((''&&%%~~ -yzz{{||}$##""!! abbccdde<;;::998IJJKKLLMTSSRRQQP12233445lkkjjiih zyyxxwwv(())**++kkjjiihh yyzz{{|| - - |{{zzyyx ~~}pqqrrsst-,,++**)XYYZZ[[\EDDCCBBA@AABBCCD]\\[[ZZY12233445IHHGGFFEQRRSSTUVDDCCBBAAAABBCCDD\\[[ZZYY))**++,,ttssrrqq}}~~ eeffgghh - }~~ effgghhi87766554MNNOOPPQPOONNMML56677889hggffeed !~~}}| - - vuuttssm,,--..//ggffeedd - - }}~~ - - xwwvvuut !!""##$}||{{zzy - -  tuuvvwwx)((''&&%\]]^^__`A@@??>>=DEEFFGGHYXXWWVVU56677889EDDCCBBAWXYYZZ[[@@??>>==EEFFGGHHXXWWVVUU--..//00ppoonnmmiijjkkllijjkkllm43322110QRRSSTTULKKJJIIH9::;;<<=dccbbaa`!""##$$%|{{zzyyx mllkkjji00112233ccbbaa``tssrqpon$%%&&''(yxxwwvvu  - - xyyzz{{|%$$##""!`aabbccd=<<;;::9HIIJJKKLUTTSSRRQ9??@@AABA@@??998\\]]^^__<<;;::99IIJJKKLLTTSSRRQQ11223344llkkjjiimmnnooppmnnooppq0//..--,UVVWWXXYHGGFFEED=>>??@@A`__^^]]\%&&''(()xwwvvuutihhggffe44556677__^^]]\\ mmllkkjj())**++,uttssrrq |}}~~! deeffggh98877665LMMNNOOPQPPOONNMBCCDDEEF87766554``aabbcc88776655MMNNOOPPPPOONNMM55667788hhggffee ~~}}qqrrsstt qrrssttu,++**))(YZZ[[\\]DCCBBAA@ABBCCDDE\[[ZZYYX)**++,,-tssrrqqpeddccbba8899:;<=[[ZZYYXX rrssttuu++**))((ZZ[[\\]]CCBBAA@@BBCCDDEE[[ZZYYXX**++,,--iihhggff8899??@@JIIHHGGFBCCDDEEF[ZZYYXXW*++,,--.srrqqppo~fgghhiij76655443NOOPPQQR87766554vwwxxyyz - -  vvwwxxyy''&&%%$$^^__``aa??>>==<JKKLLMMNSRRQQPPO23344556kjjiihhgnooppqqr/..--,,+VWWXXYYZ0//..--,~ - - ~~ffgghhii77665544NNOOPPQQOONNMMLL66778899]]\\[[ZZIIJJKKLL=<;:9988NOOPPQQRONNMMLLK6778899:gffeeddc !!"~~}}||{ -rssttuuv+**))(('Z[[\\]]^,++**))( jjkkllmm33221100RRSSTTUUKKJJIIHH::;;<<==YYSSRRQQMMNNOOPP77665544RSSTTUUVKJJIIHHG:;;<<==>cbbaa``_"##$$%%&{zzyyxxw -  vwwxxyyz'&&%%$$#^__``aab(''&&%%nnooppqq//..--,,VVWWXXYYGGFFEEDD>>??@@AAPPOONNMMQQRRSSYY33221100VWWXXYYZGFFEEDDC>??@@AAB_^^]]\\[&''(())*wvvuutts - - z{{||}}~#""!! bccddeef~~} !!~~}}|| rrssttuu++**))((ZZ[[\\]]CCBBAA@@BBCCDDEELLKKJJIIZZ[[\\]]//..--,,Z[[\\]]^CBBAA@@?BCCDDEEF[ZZYYXXW*++,,--.srrqqppo~fgghhiij}||{{zzy""##$$%%{{zzyyxx - -  vvwwxxyy''&&%%$$^^__``aa??>>==<>==<<;FGGHHIIJWVVUUTTS.//00112onnmmllkjkkllmmnyxxwwvvu &&''(())wwvvuutt - - zz{{||}}##""!! bbccddee;;::9988JJKKLLMMDDCCBBAAbbccddee''&&%%$#bccddeef;::99887JKKLLMMNSRRQQPPO23344556kjjiihhgnooppqqruttssrrq !!""##$**++,,--ssrrqqpp~~ffgghhii77665544NNOOPPQQ@@??9988ffgghhii"! fgghhiij76655443NOOPPQQRONNMMLLK6778899:gffeeddc !!"~~}}||{ -rssttuuv qppoonnm$%%&&''(..//0011oonnmmlljjkkllmm33221100RRSSTTUU77665544jjkkllmmjkkllmmn3221100/RSSTTUUVKJJIIHHG:;;<<==>cbbaa``_"##$$%%&{zzyyxxw -  vwwxxyyz - - -mllkkjji())**++,22334455kkjjiihhnnooppqq//..--,,VVWWXXYY33221100ssttuuvvnooppqqr/..--,,+VWWXXYYZGFFEEDDC>??@@AAB_^^]]\\[&''(())*wvvuutts - - z{{||}}~ - ihhggffe,--..//066778899ggffeedd !!~~}}|| rrssttuu++**))((ZZ[[\\]]//..--,,wwxxyyzzrssttuuv+**))(('Z[[\\]]^CBBAA@@?BCCDDEEF[ZZYYXXW*++,,--.srrqqppo~eddccbba01122334::;;<<==ccbbaa``""##$$%%{{zzyyxx - -  vvwwxxyy''&&%%$$^^__``aa++**))(({{||}}~~ vwwxxyyz'&&%%$$#^__``aab?>>==<<;FGGHHIIJWVVUUTTS.//00112onnmmllka``__^^]45566778>>??@@AA__^^]]\\&&''(())wwvvuutt - - zz{{||}}##""!! bbccddee''&&%% - - z{{||}}~#""!! bccddeef;::99887JKKLLMMNSRRQQPPO23344556kjjiihhg]\\[[ZZY899::;;>??@FFGGHHIIWWVVUUTT..//0011oonnmmlljjkkllmmjkkllmmn3221100/RSSTTUUVKJJIIHHG:;;<<==>cbbaa``_"##$$%%&{zzyyxxw - %%&&'UTTSSRRQ@AABBCCDJJKKLLMMSSRRQQPP22334455kkjjiihhnnooppqqnooppqqr/..--,,+VWWXXYYZGFFEEDDC>??@@AAB_^^]]\\[&''(())*wvvuutts'(())**+QPPOONNMDEEFFGGHNNOOPPQQOONNMMLL66778899ggffeedd !!~~}}|| rrssttuu -rssttuuv+**))(('Z[[\\]]^CBBAA@@?BCCDDEEF[ZZYYXXW*++,,--.srrqqppo+,,--../MLLKKJJIHIIJJKKLRRSSTTUUKKJJIIHH::;;<<==ccbbaa``""##$$%%{{zzyyxx - -  vvwwxxyy -  vwwxxyyz'&&%%$$#^__``aab?>>==<<;FGGHHIIJWVVUUTTS.//00112onnmmllk~~}}||{/0011223IHHGGFFELMMNNOOPVVWWXXYYGGFFEEDD>>??@@AA__^^]]\\&&''(())wwvvuutt - - zz{{||}} - -  - - z{{||}}~#""!! bccddeef;::99887JKKLLMMNSRRQQPPO23344556kjjiihhg{zzyyxxw34455667EDDCCBBAPQQRRSSTZZ[[\\]]CCBBAA@@BBCCDDEE[[ZZYYXX**++,,--ssrrqqpp~~~~}}||{~fgghhiij76655443NOOPPQQRONNMMLLK6778899:gffeeddc !!"wvvuutts78899??@A@@??>>=TUUVVWWX^^__``aa??>>==<cbbaa``_"##$$%%&smmllkkj@AABBCCD=<<;;::9XYYZZ[[\bbccddee;;::9988JJKKLLMMSSRRQQPP22334455kkjjiihh wvvuuttsnooppqqr/..--,,+VWWXXYYZGFFEEDDC>??@@AAB_^^]]\\[&''(())*jiihhggfDEEFFGGH98877665\]]^^__`ffgghhii77665544NNOOPPQQOONNMMLL66778899ggffeedd !!~~}}|| srqponmm !!"~~}}||{ -rssttuuv+**))(('Z[[\\]]^CBBAA@@?BCCDDEEF[ZZYYXXW*++,,--.feeddccbHIIJJKKL54433221`aabbccdjjkkllmm33221100RRSSTTUUKKJJIIHH::;;<<==ccbbaa``""##$$%%{{zzyyxx - - llkkjjii"##$$%%&{zzyyxxw -  vwwxxyyz'&&%%$$#^__``aab?>>==<<;FGGHHIIJWVVUUTTS.//00112baa``__^LMMNNOOP100//..-deeffgghnnooppqq//..--,,VVWWXXYYGGFFEEDD>>??@@AA__^^]]\\&&''(())wwvvuutthhggffee&''(())*wvvuutts - - z{{||}}~#""!! bccddeef;::99887JKKLLMMNSRRQQPPO23344556^]]\\[[ZPQQRRSSY-,,++**)hiijjkklrrssttuu++**))((ZZ[[\\]]CCBBAA@@BBCCDDEE[[ZZYYXX**++,,--ssrrqqppddccbbaa*++,,--.srrqqppo~fgghhiij76655443NOOPPQQRONNMMLLK6778899:ZYYSSRRQYZZ[[\\])((''&&%lmmnnoopvvwwxxyy''&&%%$$^^__``aa??>>==<QPPOONNM]^^__``a%$$##""!pqqrrsstzz{{||}}##""!! bbccddee;;::9988JJKKLLMMSSRRQQPP22334455kkjjiihh~~}}||{{(())**++\\[[ZZYY23344556kjjiihhgnooppqqr/..--,,+VWWXXYYZGFFEEDDC>??@@AABMLLKKJJIabbccdde! tuuvvwwx~~ffgghhii77665544NNOOPPQQOONNMMLL66778899ggffeedd !!zzyyxxww,,--..//XWVUTSSR6778899:gffeeddc !!"~~}}||{ -rssttuuv+**))(('Z[[\\]]^CBBAA@@?BCCDDEEFIHHGGFFEeffgghhixyyzz{{|jjkkllmm33221100RRSSTTUUKKJJIIHH::;;<<==ccbbaa``""##$$%%vvuuttss00112233RQQPPOON:;;<<==>cbbaa``_"##$$%%&{zzyyxxw -  vwwxxyyz'&&%%$$#^__``aab?>>==<<;FGGHHIIJEDDCCBBAijjkkllm|}}~~nnooppqq//..--,,VVWWXXYYGGFFEEDD>>??@@AA__^^]]\\&&''(())mmllkkjj44556677NMMLLKKJ>??@@AAB_^^]]\\[&''(())*wvvuutts - - z{{||}}~#""!! bccddeef;::99887JKKLLMMNA@@??998mssttuuvbdQZ|bdQZ|H~fZdQbt`f~Zp˂AJltf`vXے`JX`JXQ|ZdQfpvZp˂AJltf`vXے`JXZdQbtfpvےbHAJlt`vXnے`JXQ|ZdQbfpvp˂rJlt`vXn`vXnے`JXQ|ZdQbpvnJltvXnvXn`JXQZdQbtfpv˂rXJltvXn`JXQZdQbtfpvQJ`ےbdQZ|vpfHdrtA`vXn`vXnlJtAHfpvrXQJ`ۉbdQZ|nvpQr˂prbtlbtlnXv`rXQJ`ۉbdQZ|nvpQr˂plJtAnXv`Zp˂bdQZ|vpfr˂ptlJnXv`XQJ`ےbdQZ|vpfr˂pr˂ptlJXv`pbdQZ|vpfHr˂pr˂plJtnXv`QJ`ےbdQZ|vpfHr˂plJtnXv`˙bHAXQdrt~f`Jltvpfr˂prdt璀nXvbHAdrtfH~ˑZHAbJtAdJtArdf~HbHAdrtfH~ˑZHAbrd|f~HrXQJdrtAH~fZHAbtArdf~HbHAZdrtAH~fZHAbZHAےtArdvnrdrtA~f`ZHAbZHAے`Ard|f~HbHAZpdrtA~f`ZHAbArd|f~HJ`ےAdQZ|vXnbdQZ|H~f`JXQrlJtAr`f~Zp˂AJltf`vXے`JX|ZdQ|ZdQfpvZp˂AJltf`vXے`JXZdQtArdfpvbHAZpJlt`vXnے`JXQ|ZdQbfpvp˂rJlt`vXnے`JXQ`JXQr|ZdQbXQJ`pJltvXn`JXQJXQrZdQbtfpv˂rXJltvXn`JXQZdQbtfpvbHAZp˂drtAvpfHdrtA`vXn˂pZd|ZHfvnXrXQJ`ۉbdQZ|nvpQr˂pbtlbnXv`nXv`rXQJ`ۉbdQZ|nvpQr˂p|Zd~HfprXQbdQZ|vpfr˂ptlJnXv`XQJ`ےbdQZ|vpfr˂pbtltlJ˂rXQbdQZ|vpfHr˂pbtllJtnXv`QJ`ےbdQZ|vpfHr˂plJtnXv`˂rXQJlt~f`JltvpfHAbےdQbt璕v`fbHAdrtfH~ˑZHAbJtArdf~HfHbHAdrtfH~ˑZHAbQbtlvnXJ`ےdrtAH~fZHAbtArdf~HbHAZdrtAH~fZHAbJtAdtArdJ`ےdrAJ~f`ZHAbJtAd|Ard|f~HbHAZpdrtA~f`ZHAbArd|f~HJ`ےbdQZ|vXnvfbdQZ|H~f`JXQrlJtAr~HfpZp˂AJltf`vXے`JX|ZdQfpvfpvZp˂AJltf`vXے`JXJtArdv`fbHAZpJlt`vXnے`JXQ|ZdQbfpvp˂rJlt`vXnے`JXQ|ZdQb|ZdQbbHAZptbdQZvXn`JXQZdQbtZdQbfpv˂rXJltvXn`JXQZdQbtfpvbHAZp`drtAH~fdrtA`vXn˂pZd|lvnXrXQJ`ۉbdQZ|nvpQr˂pbtlnXv`nrXQJ`rXQJ`ۉbdQZ|nvpQr˂p|Zd~HfprXQbdQZ|vpfr˂ptlJnXv`XQJ`ےbdQZ|vpfr˂ptlJnXv`˂rXQ|drvpfHr˂plJtnXv`nXv`QJ`ےbdQZ|vpfHr˂plJtnXv`ˁےbHJl|d`vXnJltvpfHAXQrJtArdv`fbHAdrtfH~ˑZHAbJtArdf~HےHAbHAdrtfH~ˑZHAbQbtdvnXJ`bAZdrtAH~fZHAbtArdf~HbHAZdrtAH~fZHAbtArdpvnJ`ےtAJl璅~f`ZHAbArd|f~HfHfpbHAZpdrtA~f`ZHAbArd|f~HAZp˂rtAJlvpfbdQZ|H~f˂pZHA|ZdQ~HfpZp˂AJltf`vXے`JX|ZdQfpvZp˂Zp˂AJltf`vXے`JX|ZdQv`pp˂rJlt`vXnے`JXQ|ZdQbfpvp˂rJlt`vXnے`JXQ|ZdQbXv`fbHAXQJtbdQZvXn`JXQZdQbtfpvvn˂rXJltvXn`JXQZdQbtfpvrXQJ`tbdH~fdrtA`vXnbے`btlvnv`rXQJ`ۉbdQZ|nvpQr˂pbtlnXv`rXQJ`rbdQZ|bdQZ|nvpQr˂pbtlvnrXbdQZ|bdQZ|vpfr˂ptlJnXv`XQJ`ےbdQZ|vpfr˂ptlJ~Hf`ےb|drvpfHr˂plJtnXv`rXQJ`QJ`ےbdQZ|vpfHr˂plJtnXv`ˁےbHQZ|d`vXn`JXQrJltvpfJXQrJtArdf~HbHAdrtfH~ˑZHAbJtArdf~HbHAdrtdtAfH~ˑZHAbJtArdQJ`AdrtAdtAJH~fZHAbtArdf~HbHAZdrtAH~fZHAbtArdpvnHAZp˂tAJbd~f`ZHAbArd|f~HHAZpbHAZpdrtA~f`ZHAbArd|f~HAZp˂rtAJlvf~˂pZbdQZ|H~f˂pZHA|ZdQfpvZp˂AJltf`vXے`JX|ZdQfpvZp˂AJltJltf`vXے`JX|ZdQZp˂Jltltb`vXnے`JXQ|ZdQbfpvp˂rJlt`vXnے`JXQ|ZdQbXv`frXQJQZ|dvXn`JXQZdQbtfpv˂rX˂rJltvXn`JXQZdQbtfpv㉐bHAtdf`vXHAbےdrtA`vXnb˂tArdnXv`rXQJ`ۉbdQZ|nvpQr˂pbtlnXv`rXQJ`ۉbdQZ|bnvpnvpQr˂pbtl|rXQJ`bdQZ|nvpvpfr˂ptlJnXv`XQJ`ےbdQZ|vpfr˂ptlJnX`ےbrtAJlvpfHr˂plJtnXv`QJ`ےbdQZ|bdQZ|vpfHr˂plJtnXv`Zp˂rtAJlnvp`JXQrJltvpfpZHAb|ZdQbf~HbHAdrtfH~ˑZHAbJtArdf~HbHAdrtfHfH~ˑZHAbZdQb㒐bHAdrtAfHfH~fZHAbtArdf~HbHAZdrtAH~fZHAbtArdv`fHAZp`tbd~f`ZHAbArd|f~HbHAZpdrtAdtAJl~f`ZHAbArd|f~HrXQJ`ےtbdQfH~˂pZbdQZ|H~fے`JtlJfpvZp˂AJltf`vXے`JX|ZdQfpvZp˂AJltf`vXf`vXے`JXnXv`pZp˂Jlt`vXn`vXnے`JXQ|ZdQbfpvp˂rJlt`vXnے`JXQ|ZdQb~HfpےbHAQZ|dvXn`JXQZdQbtfpv˂rXJlttbvXn`JXQZdQbtfpv㒐bHAZ|df`vXHAbےdrtA`vXnXQr˂tArdnvfrXQJ`ۉbdQZ|nvpQr˂pbtlnXv`rXQJ`ۉbdQZ|nvpnr˂pQr˂pvnXrXQJ`bdQZ|vpfr˂pr˂ptlJnXv`XQJ`ےbdQZ|vpfr˂ptlJvnXZp˂rtAJlvpfHr˂plJtnXv`QJ`ےbdQZ|nvpvpfHr˂plJtnXv`Zp˂rtAJlnvp`JXQrJltvpfpZHAb|ZdQb~HfpےbHAdrtfH~ˑZHAbJtArdf~HbHAdrtfH~ˑZHAbZHAەv`fbHAZdrtAH~fZHAbZHAےtArdf~HbHAZdrtAH~fZHAbtArdv`frXQJ`bQZ|~f`ZHAbArd|f~HbHAZpdrtAfHf`~f`ZHAbArd|f~HrXQHAZptbdQf~f`˂pZbdQZ|H~fے`ptd|vnXZp˂AJltf`vXے`JX|ZdQfpvZp˂AJltf`vXے`JX`JXQ~HfprXQJJlt`vXnے`JXQ`JXQr|ZdQbfpvp˂rJlt`vXnے`JXQ|ZdQb~HXvےbHAdrtAvXn`JXQZdQbtfpv˂rXJltvXnvXn`JXQZdQbtfpv˂rXZ|ltvXnrHAbےdrtA`vXnZHAbZdQbtv`frXQJ`ۉbdQZ|nvpQr˂pbtlnXv`rXQJ`ۉbdQZ|nvpQr˂prbtlvnX`ےbbdQZ|vpfr˂pbtltlJnXv`XQJ`ےbdQZ|vpfr˂ptlJ`f~Zp˂JltvpfHr˂plJtnXv`QJ`ےbdQZ|vpfHr˂pr˂plJtnXv`QJ`ےbnۀ˂pZ`JXQrJltvpfے`JXQlJtA~HfpےbHAdrtfH~ˑZHAbJtArdf~HbHAdrtfH~ˑZHAb|ZdQv`fHAZp˂drtAH~fZHAbJtAdtArdf~HbHAZdrtAH~fZHAbtArdHfpvbHAZbdQZ|~f`ZHAbArd|f~HbHAZpdrtA~f`ZHAbZHAے`Ard|f~HbHAZpvpff`HAbے˂pZbdQZ|H~fr˂prd|vnXZp˂AJltf`vXے`JX|ZdQfpvZp˂AJltf`vXے`JXbtlnXrXQJJlt`vXnے`JXQ|ZdQb|ZdQbfpvp˂rJlt`vXnے`JXQ|ZdQbnXvp˂rdrtAvXn`JXQZdQbtfpv˂rXJltvXn`JXQJXQrZdQbtfpv˂rXvXn`JXQrHAbےdrtA`vXnZHAbZdQbtv`frrXQJ`ۉbdQZ|nvpQr˂pbtlnXv`rXQJ`ۉbdQZ|nvpQr˂pJtArdv`f`ےbbdQZ|vpfr˂ptlJnXv`nXv`XQJ`ےbdQZ|vpfr˂ptlJ`f~XQJ`ےJltvpfHr˂plJtnXv`QJ`ےbdQZ|vpfHr˂pbtllJtnXv`QJ`p˅vpfH˂pZ`JXQrJltvpfے`JXQl|ZQJHAbHAdrtfH~ˑZHAbJtArdf~HbHAdrtfH~ˑZHAb|ZdQ~HfpHAZpdrtAH~fZHAbtArdf~HfHfbHAZdrtAH~fZHAbtArdHfp`bHAZbQZd~f`ZHAbArd|f~HbHAZpdrtA~f`ZHAbJtAd|Ard|f~Hrbd~f`HAbے˂pZbdQZ|H~fHAbےdQbnXZp˂Zp˂AJltf`vXے`JX|ZdQfpvZp˂AJltf`vXے`JXbtlvnXrQJ`ےJlt`vXnے`JXQ|ZdQbfpvpvnp˂rJlt`vXnے`JXQ|ZdQbf~Hp˂rrtAJlvXn`JXQZdQbtfpv˂rXJltvXn`JXQZdQbtZdQbfpvQZ|lvXn`JXQrHAbےdrtA`vXn`JXQrv`f~rXQJ`rbdQZ|bdQZ|nvpQr˂pbtlnXv`rXQJ`ۉbdQZ|nvpQr˂pJtArdtv`fbHAZpbdQZ|vpfr˂ptlJnXv`rXQJ`XQJ`ےbdQZ|vpfr˂ptlJfpvXQHAZptbdQvpfHr˂plJtnXv`QJ`ےbdQZ|vpfHr˂plJtnXv`nXv`˒tbdQvpfH˂pZ`JXQrJltvpf˂pZfpv㒐bHAdrtdtAfH~ˑZHAbJtArdf~HbHAdrtfH~ˑZHAblJt~HXv`˂rXdrtAH~fZHAbtArdf~HےHAZbHAZdrtAH~fZHAbtArdnXv`˂rXQZ|d~f`ZHAbArd|f~HbHAZpdrtA~f`ZHAbArd|f~HfHfpZ|d~fvHAbے˂pZbdQZ|H~fHAbےnXv`Zp˂AJltJltf`vXے`JX|ZdQfpvZp˂AJltf`vXے`JXArd|f~HQJ`ےJlt`vXnے`JXQ|ZdQbfpvp˂rp˂rJlt`vXnے`JXQ|ZdQbf~HJ`ےrtAJlvXn`JXQZdQbtfpv˂rXJltvXn`JXQZdQbtfpvvnrtAJlnvp`JXQrHAbےdrtA`vXn`JXQrf~HrXQJ`ۉbdQZ|bnvpnvpQr˂pbtlnXv`rXQJ`ۉbdQZ|nvpQr˂pZdQbtfpvbHAZpbdQZ|vpfr˂ptlJnXv`XQJ`ےbdQZ|bdQZ|vpfr˂ptlJfpvbHAZptbdQvpfHr˂plJtnXv`QJ`ےbdQZ|vpfHr˂plJtnXv`rXQJ`ptbdQfH~˂pZ`JXQrJltvpf˂p|fpv㒐bHAdrtfHfH~ˑZHAbJtArdf~HbHAdrtfH~ˑZHAblJtnXv`˂rQJdrtAH~fZHAbtArdf~HbHAZdrtAdtAJH~fZHAbtArd~Hf˂rXQZ|AJl~f`ZHAbArd|f~HbHAZpdrtA~f`ZHAbArd|f~H˂rXZ|dtf`vXHAbے˂pZbdQZ|H~fZdQbtnXv`Zp˂AJltf`vXf`vXے`JX|ZdQfpvZp˂AJltf`vXے`JXArd|f~HbHAJlt`vXnے`JXQ|ZdQbfpvp˂rJltltb`vXnے`JXQ|ZdQbpvnJ`p˂tbvXn`JXQZdQbtfpv˂rXJltvXn`JXQZdQbtfpvQJ`ےbdQZ|nvp`JXQrHAے`drtA`vXnlJtAf~fvrXQJ`ۉbdQZ|nvpnr˂pQr˂pbtlnXv`rXQJ`ۉbdQZ|nvpQr˂plJtAfp`Zp˂bdQZ|vpfr˂ptlJnXv`XQJ`ےbdQZ|nvpvpfr˂ptlJXv`frbdQnvpvpfHr˂plJtnXv`QJ`ےbdQZ|vpfHr˂plJtnXv`˙bHAZpdrtfH~˂pZJXQrbJltvpfrd|nXvbHAdrtfH~ˑZHAbZHAJtArdf~HbHAdrtfH~ˑZHAbrd|f~HrXQJ`drtAH~fZHAbtArdf~HbHAZdrtAfHfH~fZHAbtArd~HfZ|rAfHf`~f`ZHAbArd|f~HbHAZpdrtA~f`ZHAbArd|f~H˂rXAJltf`vnHAbےtlJtAd|rd|~HfbHAZpdrtAJ~f`HAbےrd|~HfbHAZp|drf`pfJXQrrd|~HfpbHAZp˙rtAJl~f`Abے`Aے`rd|~HfpbHAZp˙rtAJl~f`ZHAbQXb㉀f۝`vZdQbtZdQbnpvn˂rXQltbvXn`JXQrZdQbtpvn˂rXQtAJlH~fpZHAZdQbtvnXrXQtbdvXnہJXQrJXQrbtZdQbtvnXrXQtbdvXnے`JXQۑpJAHrXnvˍlJtAXv`fXv`fJ`ےdQZ|vpfH˂pZlJtAXv`fJ`ےtbdQZ`vXnbے`JlJtAv`fJ`ےQZ|dvpfH˂pZHlJtlJtAv`fJ`ےQZ|dvpfHr˂p󙐂ˁ`Zp|drrd|~HfHfpbHAZpdrtAJ~f`HAbےrd|~HfbHAZp|drvpfQrpZrd|~HfpbHAZp˙rtAJl~f`Abے`Ad|rd|~HfpbHAZp˙rtAJl~f`ZHAbQXb㉀QtJlZdQbtpvnvnr˂rXQltbvXn`JXQrZdQbtpvn˂rXQtAdQZ|H~fHAbےZdQbtvnXrXQtbdvXnہJXQrZdQbtZdQbnXvnXrXQtbdvXnے`JXQHXnvˍtbAdZlJtAXv`fXQJ`ےJ`ےdQZ|vpfH˂pZlJtAXv`fJ`ےdrtA`vXH`JXQrlJtAv`fJ`ےQZ|dvpfH˂pZHlJtAv`fv`fJ`ےQZ|dvpfHAbے`pfH~|drrd|~HfHAZpbHAZpdrtAJ~f`HAbےrd|~HfbHAZpJlt~f`˂pZrd|~HfpbHAZp˙rtAJl~f`Abے`rd|~HfpHfpbHAZp˙rtAJl~f`JXQrf۝`vQtJlZdQbtpvn˂rXQ˂rbltbvXn`JXQrZdQbtpvn˂rXQbdQZ|vXnHAbےZdQbtvnXrXQtbdvXnہJXQrZdQbtvnXvnrXrXQtbdvXnۉ˂pZHXnvˍtbAdZlJtAXv`fJ`ےdQZ|dQZ|vpfH˂pZlJtAXv`fJ`ےdrtAvpfH`JXQrlJtAv`fJ`ےQZ|dvpfH˂pZHlJtAv`fQJ`ےJ`ےQZ|dvpfHAbے`pfH~|drrd|~HfbHAZpdrtAJdtAJl~f`HAbےrd|~HfbHAZpJl|~f`ZHAbrd|~HfpbHAZp˙rtAJl~f`Abے`rd|~HfpHAZpbHAZp˙rtAJl~f`JXQrf۝`vQtJlZdQbtpvn˂rXQltbtbnvXn`JXQrZdQbtpvn˂rXQdrtAJvXnے`JXZdQbtvnXrXQtbdvXnہJXQrZdQbtvnXrXQrbdtbdvXnۉ˂p`ZXnvˍtbAdZlJtAXv`fJ`ےdQZ|vpfvpfH˂pZlJtAXv`fJ`ےltbf`vQr˂plJtAv`fJ`ےQZ|dvpfH˂pZHlJtAv`fJ`ےQZ|dQZ|dvpfHQXb㉀pfH~|drrd|~HfbHAZpdrtAJHf`~f`HAbےrd|~HfbHAZpdQZ|XnvZHAbrd|~HfpbHAZp˙rtAJl~f`Abے`rd|~HfpbHAZp˙rtAJltAJl~f`ۑpJAHrf۝`vQtJlZdQbtpvn˂rXQltbvXnvXnr`JXQrZdQbtpvn˂rXQdrtAJpfH~ے`JXZdQbtvnXrXQtbdvXnہJXQrZdQbtvnXrXQtbdtbnvXn󙐂ˁ`ZXnvˍtbAdZlJtAXv`fJ`ےdQZ|vpfH˂pZ˂pZlJtAXv`fJ`ےltdf`vQr˂plJtAv`fJ`ےQZ|dvpfH˂pZHlJtAv`fJ`ےQZ|dvpfHvpfHQXb㉀pfH~|drrd|~HfbHAZpdrtAJ~f`HAbےHAے`rd|~HfbHAZprtAJlXnvZA`rd|~HfpbHAZp˙rtAJl~f`Abے`rd|~HfpbHAZp˙rtAJlf`~f`ۑpJAHrf۝`vQtJlZdQbtpvn˂rXQltbvXn`JXQrJXQrbZdQbtpvn˂rXQtbdQp`vXJXQrbtZdQbtvnXrXQtbdvXnہJXQrZdQbtvnXrXQtbdvXnvXnے`󙐉ۑXnvˍtbAdZlJtAXv`fJ`ےdQZ|vpfH˂pZtlJlJtAXv`fJ`ےZ|dnr˂lJtlJtAv`fJ`ےQZ|dvpfH˂pZHlJtAv`fJ`ےQZ|dvpfHJXQrpJAHrpfH~|drrd|~HfbHAZpdrtAJ~f`HAbےtAd|rd|~HfbHAZprtAJlpZAb`Ad|rd|~HfpbHAZp˙rtAJl~f`Abے`rd|~HfpbHAZp˙rtAJl~f`˂pZHˁ`ZQf۝`vQtJlZdQbtpvn˂rXQltbvXn`JXQrZdQbtZdQbnpvn˂rXQtbdQJXQrZdQbtZdQbnXvnXrXQtbdvXnہJXQrZdQbtvnXrXQtbdvXnAbے`Xb㉀ۑXnvˍtbAdZlJtAXv`fJ`ےdQZ|vpfH˂pZlJtAXv`fXv`fJ`ےZ|l璉˂pZHlJtAv`fv`fJ`ےQZ|dvpfH˂pZHlJtAv`fJ`ےQZ|dvpfHJXQrpJAHrpfH~|drrd|~HfbHAZpdrtAJ~f`HAbےrd|~HfHfpbHAZptbnAbے`rd|~HfpHfpbHAZp˙rtAJl~f`Abے`rd|~HfpbHAZp˙rtAJl~f`˂pZHˁ`pJf۝`vQtJlZdQbtpvn˂rXQltbvXn`JXQrZdQbtpvnvnr˂rXQvp`vJXQrZdQbtvnXvnrXrXQtbdvXnہJXQrZdQbtvnXrXQtbdvXnAXQrAHr󙐂XnvˍtbAdZlJtAXv`fJ`ےdQZ|vpfH˂pZlJtAXv`fXQJ`ےJ`ےXnv˂pZHlJtAv`fQJ`ےJ`ےQZ|dvpfH˂pZHlJtAv`fJ`ےQZ|dvpfHpZHAˁ`ZQXbpfH~|drrd|~HfbHAZpdrtAJ~f`HAbےrd|~HfHAZpbHAZppfH~AbJXQrd|~HfpHAZpbHAZp˙rtAJl~f`Abے`rd|~HfpbHAZp˙rtAJl~f`bے`㉀ۑpJf۝`vQtJlZdQbtpvn˂rXQltbvXn`JXQrZdQbtpvn˂rXQ˂rbf`vr˂pZdQbtvnXrXQrbdtbdvXnہJXQrZdQbtvnXrXQtbdvXnJXQrAHr󙐂XnvˍtbAdZlJtAXv`fJ`ےdQZ|vpfH˂pZlJtAXv`fJ`ےdQZ|lXnvZHAblJtAv`fJ`ےQZ|dQZ|dvpfH˂pZHlJtAv`fJ`ےQZ|dvpfHpZHAˁ`ZQXApfH~|drrd|~HfbHAZpdrtAJ~f`HAbےrd|~HfbHAZptbdQpfH~ے`JXQrd|~HfpbHAZp˙rtAJltAJl~f`Abے`rd|~HfpbHAZp˙rtAJl~f`b˂pHr󙐂ˁf۝`vQtJlZdQbtpvn˂rXQltbvXn`JXQrZdQbtpvn˂rXQZ|dvpr˂pZdQbtvnXrXQtbdtbnvXnہJXQrZdQbtvnXrXQtbdvXnۑZHAb`ZQXbXnvˍtbAdZlJtAXv`fJ`ےdQZ|vpfH˂pZlJtAXv`fJ`ےrtAJlfH~ZHAblJtAv`fJ`ےQZ|dvpfHvpfH˂pZHlJtAv`fJ`ےQZ|dvpfHے`JXۑpJApfH~|drrd|~HfbHAZpdrtAJ~f`HAbےrd|~HfbHAZptbdQf`vXJQrrd|~HfpbHAZp˙rtAJlf`~f`Abے`rd|~HfpbHAZp˙rtAJl~f`Qr˂pHr󙐂ˁf۝`vQtJlZdQbtpvn˂rXQltbvXn`JXQrZdQbtpvn˂rXQZ|dnvppZHAZdQbtvnXrXQtbdvXnvXnrJXQrZdQbtvnXrXQtbdvXnۑZHAb`ZQXbXnvˍtbAdZlJtAXv`fJ`ےdQZ|vpfH˂pZlJtAXv`fJ`ےtbdQZfH~bے`lJtAv`fJ`ےQZ|dvpfH˂pZH˂pZHlJtAv`fJ`ےQZ|dvpfHے`pˁ`ZpfH~|drQtJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKK \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv32_1.dat b/mpdf/qrcode/data/qrv32_1.dat deleted file mode 100644 index d19aed9..0000000 --- a/mpdf/qrcode/data/qrv32_1.dat +++ /dev/null @@ -1,289 +0,0 @@ -}~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvuvuvuvuvststststststststqrqrqrqropopopopopopopopmnmnmnmmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUSTSTSTSTQRQRQRQRQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABABABABABA@?@?@?@?@?@?@?@?@=>=>=>=>;<;<;<;<;<;<;<;<99:9:9:9:999999:87878787878787876565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!       }~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvuvuvuvuvststststststststqrqrqrqropopopopopopopopmmmmnmnmnmnmmmmmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUTSTSSTSTSTSTQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@?@?@?@?@=>=>=>=>;<;<;<;<;<;<;<;<:9:9:9:99:9:9:9:87878787878787876565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!     }~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvutstststststststststststqrqrqrqropopopopopopopopnmnmnmnmmnmnmnmnlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSSSSSSTSTSTSTQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>;<;<;<;<;<;<;<;<:9:9:9:99:9:9:9:87878787878787876565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!      }~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststststststqrqrqrqropopopopopopopopnmnmnmnmmnmnmnmnlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUSTSTSTSTSSSSSSTSQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<:9:9:9:99:9:9:9:87878787878787876565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!       }~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststsrqrqrqrqrqrqrqropopopopopopopopnmnmnmnmmnmnmnmnlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUSTSTSTSTTSTSTSTSQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<:9:9:9:99:9:9:9:87878787878787876565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!       }~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqropopopopopopopopnmnmnmnmmnmnmnmnlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUSTSTSTSTTSTSTSTSQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<:9:999999:9:9:9:87878787878787876565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#"!"!"!"!"!"!       }~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqropopopopopopopopnmnmnmmmmnmnmnmnlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWVUVUVUVUVUSTSTSTSTTSTSTSTSQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:999999:987878787878787876565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!"!"!"!"!       }~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqropopopopopopopopmmmnmnmnmnmmmmmmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUVUVUVUVUSTSTSTSTTSTSTSTSQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9::9:9:98787878787878787876565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!"!"!"!"!    }~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqropopopopopopopopmnmnmnmnnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUVUVUVUVUSTSSSSSSTSTSTSTSQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:8787878787878787878787876565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('('('('&%&%&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!"!"!"!"!       ~}~}~}~}~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqropopopopopopopopmnmnmnmnlklklklklklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSSSSSSTSTQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;:9:9:9:9:9:9:8787878787878787878787656565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!"!"!"!"!        }~}~}~}~}~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqropopopopopoponmnmnmnmnmnlklklklklklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSSTSTSTSTQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<9:99999:9:9:9:9:8787878787878787656565656565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#"!"!"!"!"!"!"!"!        }~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqropopopopmnmnmmmmmnmnmnmnlklklklklklklklkjijijijijijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSSTSTSTSTQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<9:9:9:9:9:9999998787878787878787656565656565656565656543434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        }~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqropopopopmnmnmnmnmnmnmmmmlklklklklklklklkjijijijijijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSSTSTSTSTQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<9:9:9:9::9:9:9:98787878787878787656565656565656543434343434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        }~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqropopopopmnmnmnmnmmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSSTSTSTSTQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<9:9:9:9::9:9:9:98787878787878787656565656565656543434343434343434343432121212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!      }~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqropopopopmnmnmnmnnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSSSSSSTSTSTSTSTQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=<;<;<;<;<;<9:9:9:9::9:9:9:98787878787878787656565656565656543434343434343432121212121212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!      }~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqpopopopopmnmnmnmnnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUSTSTSTSTSTSSSSSTQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9::9:9:9:987878787878787876565656565656565434343434343434321212121212121212121210/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!      }~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststqrqrqrqropopopopopopopopmnmnmnmnnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>;<;<;<;<;<;<;<;<9:9:9999:9:9:9:987878787878787876565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!             - - - - - - - -         - - - - - - - - - -         - - - - - - - - - - - -         - - - - - - - - - -          - - - - - - - -         - - - - - - - -         - - - - - - - -         - - - - - - - -         - - - - - - - -         - - - - - - - -         - - - - - - - -         - - - - - - - -         - - - - - - - -         - - - - - - - -          - - - - - - - -             - - - - - - - -           - - - - - - - -LLKKJJII - - MMNNOOPP88776655''(())**zz{{||}}YYXWVUTS -@AABBCCDYXXWWVVU01122334tuuvvwwxihhggffe%$$##""! !!""##$deeffgghyxxwwvvu54433221TUUVVWWXEDDCCBBADEEFFGGHUTTSSRRQ BCCDDEEF43322110 hhiijjkkppoonnmm,,++**))]]^^__``~~}}<<;;::99 - - MMNNOOPPLLKKJJII==>>??@@\\[[ZZYY--..//00qqrrssttllkkjjii((''&&%% aabbccddwwvvuutt33445566KJJIIHHGEFFGGHHITSSRRQQP 56677889yzz{{||}dccbbaa` %&&''(()ijjkkllmtssrrqqp0//..--,YZZ[[\\]@??>>==< IJJKKLLMPOONNMML - - GHHIIJJK~/..--,,+#$%%&&''mmnopqrskkjjiihh''&&%%$$ !!bbccddee{{zzyyxx77665544RRSSTTUUGGFFEEDDBBCCDDEEWWVVUUTT22334455vvwwxxyyggffeedd##""!! ""##$$%%ffgghhiimmllkkjj8899??@@FEEDDCCBHHGGFFEE QQRRSSTT44332211++,,--..~~SRRQQPPO - DEEFFGGHUTTSSRRQ 45566778xyyzz{{|eddccbba! $%%&&''(hiijjkkluttssrrq100//..-XYYZZ[[\A@@??>>=HIIJJKKLQPPOONNM - - FGGHHIIJ0//..--,!"#$%%&&llmmnopqllkkjjii((''&&%% aabbccdd||{{zzyy88776655 QQRRSSTTHHGGFFEEAABBCCDDXXWWVVUU11223344uuvvwwxxhhggffee$$##""!!!!""##$$eeffgghhssmmllkk778899??GFFEEDDC IJJKKLLMPOONNMML - - 9::;;<<=}~~`__^^]]\)**++,,-mnnooppqpoonnmml,++**))(]^^__``a~~}}|<;;::998 - - MNNOOPPQLKKJJIIHKLLMMNNO~}}||{{z+**))(('(())**++sttuuvvwggffeedd##""!! ""##$$%%ffgghhiiwwvvuutt33221100VVWWXXYYCCBBAA@@FFGGHHIISSRRQQPP 66778899zz{{||}}ccbbaa``&&''(())jjkkllmmiihhggffAABBCCDDBAA@@??>DDCCBBAAUUVVWWXX00//..--//001122ONNMMLLKHIIJJKKLQPPOONNM - - 899::;;<|}}~~a``__^^]())**++,lmmnnoopqppoonnm-,,++**)\]]^^__`~~}=<<;;::9 - - LMMNNOOPMLLKKJJI JKKLLMMN~~}}||{,++**))(''(())**rssttuuvhhggffee$$##""!!!!""##$$eeffgghhxxwwvvuu44332211UUVVWWXXDDCCBBAAEEFFGGHHTTSSRRQQ 55667788yyzz{{||ddccbbaa %%&&''((iijjkklljjiihhgg@@AABBCCCBBAA@@? - - MNNOOPPQLKKJJIIH=>>??@@A\[[ZZYYX-..//001qrrssttulkkjjiih(''&&%%$ !abbccdde|{{zzyyx87766554 QRRSSTTUHGGFFEEDOPPQQRRSzyyxxwwv'&&%%,,--..//wxxyyzz{ccbbaa``&&''(())jjkkllmmssrrqqpp//..--,,ZZ[[\\]]??>>==<< JJKKLLMMOONNMMLL - - ::;;<<==~~__^^]]\\**++,,--nnooppqqeeddccbbEEFFGGHH=<;:9988@@??>>==YYZZ[[\\~~}}||,,++**))33445566KJJIIHHG - - LMMNNOOPMLLKKJJI <==>>??@]\\[[ZZY,--..//0pqqrrsstmllkkjji)((''&&% `aabbccd}||{{zzy98877665 PQQRRSSTIHHGGFFENOOPPQQR{zzyyxxw(''&&%%++,,--..vwwxxyyzddccbbaa %%&&''((iijjkkllttssrrqq00//..--YYZZ[[\\@@??>>==IIJJKKLLPPOONNMM - - 99::;;<<}}~~``__^^]]))**++,,mmnnooppffeeddccDDEEFFGG?>=<;:99 QRRSSTTUHGGFFEEDABBCCDDEXWWVVUUT12233445uvvwwxxyhggffeed$##""!! !""##$$%effgghhixwwvvuut43322110UVVWWXXYDCCBBAA@ SYYZZ[[\vuuttssm00112233{||}}~~__^^]]\\**++,,--nnooppqqoonnmmll++**))((^^__``aa~~}}||;;::9988 - - NNOOPPQQKKJJIIHH>>??@@AA[[ZZYYXX..//0011rrssttuuaa``__^^ IIJJKKLL77665544~~}}<<;;::99]]^^__``{{zzyyxx((''&&%%778899??GFFEEDDC PQQRRSSTIHHGGFFE@AABBCCDYXXWWVVU01122334tuuvvwwxihhggffe%$$##""! !!""##$deeffgghyxxwwvvu54433221TUUVVWWXEDDCCBBARSSYYZZ[wvvuutts//001122z{{||}}~``__^^]]))**++,,mmnnooppppoonnmm,,++**))]]^^__``~~}}<<;;::99 - - MMNNOOPPLLKKJJII==>>??@@\\[[ZZYY--..//00qqrrssttbbaa``__ HHIIJJKK88776655UVVWWXXYDCCBBAA@EFFGGHHITSSRRQQP 56677889yzz{{||}dccbbaa` %&&''(()ijjkkllmtssrrqqp0//..--,YZZ[[\\]@??>>==< - - \]]^^__`mllkkjji44556677[[ZZYYXX..//0011rrssttuukkjjiihh''&&%%$$ !!bbccddee{{zzyyxx77665544RRSSTTUUGGFFEEDDBBCCDDEEWWVVUUTT22334455vvwwxxyy]]\\[[ZZ - - MMNNOOPP~~}}||{33221100||{{zzyy88776655 aabbccddwwvvuutt@@AABBCCCBBAA@@?TUUVVWWXEDDCCBBADEEFFGGHUTTSSRRQ 45566778xyyzz{{|eddccbba! $%%&&''(hiijjkkluttssrrq100//..-XYYZZ[[\A@@??>>= - - [\\]]^^_smmllkkj33445566~\\[[ZZYY--..//00qqrrssttllkkjjii((''&&%% aabbccdd||{{zzyy88776655 QQRRSSTTHHGGFFEEAABBCCDDXXWWVVUU11223344uuvvwwxx^^]]\\[[ - - LLMMNNOO~~}}|44332211YZZ[[\\]@??>>==< IJJKKLLMPOONNMML - - 9::;;<<=}~~`__^^]]\)**++,,-mnnooppqpoonnmml,++**))(]^^__``a~~}}|<;;::998 `aabbccdihhggffe8899:;<=WWVVUUTT22334455vvwwxxyyggffeedd##""!! ""##$$%%ffgghhiiwwvvuutt33221100VVWWXXYYCCBBAA@@FFGGHHIISSRRQQPP 66778899zz{{||}}YYSSRRQQQQRRSSYY{zzyyxxw//..--,,xxwwvvuu44332211!!""##$$eeffgghhssmmllkkDDEEFFGG?>=<;:99XYYZZ[[\A@@??>>=HIIJJKKLQPPOONNM - - 899::;;<|}}~~a``__^^]())**++,lmmnnoopqppoonnm-,,++**)\]]^^__`~~}=<<;;::9 _``aabbcjiihhggf778899:;XXWWVVUU11223344uuvvwwxxhhggffee$$##""!!!!""##$$eeffgghhxxwwvvuu44332211UUVVWWXXDDCCBBAAEEFFGGHHTTSSRRQQ 55667788yyzz{{||ZZYYSSRRPPQQRRSS|{{zzyyx00//..--]^^__``a~~}}|<;;::998 - - MNNOOPPQLKKJJIIH=>>??@@A\[[ZZYYX-..//001qrrssttulkkjjiih(''&&%%$ !abbccdde|{{zzyyx87766554deeffggheddccbba>??@@AABSSRRQQPP 66778899zz{{||}}ccbbaa``&&''(())jjkkllmmssrrqqpp//..--,,ZZ[[\\]]??>>==<< JJKKLLMMOONNMMLL - - ::;;<<==~~PPOONNMM - -ZZ[[\\]]wvvuutts++**))((ttssrrqq00//..--%%&&''((iijjkklljjiihhggHHIIJJKK88776655\]]^^__`~~}=<<;;::9 - - LMMNNOOPMLLKKJJI <==>>??@]\\[[ZZY,--..//0pqqrrsstmllkkjji)((''&&% `aabbccd}||{{zzy98877665cddeeffgfeeddccb<=>??@@ATTSSRRQQ 55667788yyzz{{||ddccbbaa %%&&''((iijjkkllttssrrqq00//..--YYZZ[[\\@@??>>==IIJJKKLLPPOONNMM - - 99::;;<<}}~~QQPPOONN YYZZ[[\\xwwvvuut,,++**)) !abbccdde|{{zzyyx87766554 QRRSSTTUHGGFFEEDABBCCDDEXWWVVUUT12233445uvvwwxxyhggffeed$##""!! !""##$$%effgghhixwwvvuut43322110hiijjkkla``__^^] -BCCDDEEFOONNMMLL - - ::;;<<==~~__^^]]\\**++,,--nnooppqqoonnmmll++**))((^^__``aa~~}}||;;::9988 - - NNOOPPQQKKJJIIHH>>??@@AALLKKJJII ^^__``aasrqponmm''&&%%$#ppoonnmm,,++**))))**++,,mmnnooppffeeddccLLMMNNOO~~}}|44332211 `aabbccd}||{{zzy98877665 PQQRRSSTIHHGGFFE@AABBCCDYXXWWVVU01122334tuuvvwwxihhggffe%$$##""! !!""##$deeffgghyxxwwvvu54433221ghhiijjkbaa``__^ ABBCCDDEPPOONNMM - - 99::;;<<}}~~``__^^]]))**++,,mmnnooppppoonnmm,,++**))]]^^__``~~}}<<;;::99 - - MMNNOOPPLLKKJJII==>>??@@MMLLKKJJ - - ]]^^__``tssrqpon((''&&%%!""##$$%effgghhixwwvvuut43322110UVVWWXXYDCCBBAA@EFFGGHHITSSRRQQP 56677889yzz{{||}dccbbaa` %&&''(()ijjkkllmtssrrqqp0//..--,lmmssttu]\\[[ZZY - FGGHHIIJKKJJIIHH>>??@@AA[[ZZYYXX..//0011rrssttuukkjjiihh''&&%%$$ !!bbccddee{{zzyyxx77665544RRSSTTUUGGFFEEDDBBCCDDEEHHGGFFEEbbccddeellkkjjii"! llkkjjii((''&&%%--..//00qqrrssttbbaa``__ PPQQRRSS|{{zzyyx00//..-- !!""##$deeffgghyxxwwvvu54433221TUUVVWWXEDDCCBBADEEFFGGHUTTSSRRQ 45566778xyyzz{{|eddccbba! $%%&&''(hiijjkkluttssrrq100//..-kllmmsst^]]\\[[Z - - EFFGGHHILLKKJJII==>>??@@\\[[ZZYY--..//00qqrrssttllkkjjii((''&&%% aabbccdd||{{zzyy88776655 QQRRSSTTHHGGFFEEAABBCCDDIIHHGGFFaabbccddmmllkkjj$#"! %&&''(()ijjkkllmtssrrqqp0//..--,YZZ[[\\]@??>>==< IJJKKLLMPOONNMML - - 9::;;<<=}~~`__^^]]\)**++,,-mnnooppqpoonnmml,++**))(%%&uvvwwxxyYSSRRQQPJKKLLMMNGGFFEEDDBBCCDDEEWWVVUUTT22334455vvwwxxyyggffeedd##""!! ""##$$%%ffgghhiiwwvvuutt33221100VVWWXXYYCCBBAA@@FFGGHHIIDDCCBBAAffgghhiihhggffeehhggffee$$##""!!11223344uuvvwwxx^^]]\\[[ - - YYZZ[[\\xwwvvuut,,++**))$%%&&''(hiijjkkluttssrrq100//..-XYYZZ[[\A@@??>>=HIIJJKKLQPPOONNM - - 899::;;<|}}~~a``__^^]())**++,lmmnnoopqppoonnm-,,++**)%tuuvvwwxZYYSSRRQIJJKKLLMHHGGFFEEAABBCCDDXXWWVVUU11223344uuvvwwxxhhggffee$$##""!!!!""##$$eeffgghhxxwwvvuu44332211UUVVWWXXDDCCBBAAEEFFGGHHEEDDCCBBeeffgghhiihhggff)**++,,-mnnooppqpoonnmml,++**))(]^^__``a~~}}|<;;::998 - - MNNOOPPQLKKJJIIH=>>??@@A\[[ZZYYX-..//001qrrssttulkkjjiih(''&&%%$&''(())*yzz{{||}POONNMML NOOPPQQRCCBBAA@@FFGGHHIISSRRQQPP 66778899zz{{||}}ccbbaa``&&''(())jjkkllmmssrrqqpp//..--,,ZZ[[\\]]??>>==<< JJKKLLMM@@??9988jjkkllmmddccbbaaddccbbaa 55667788yyzz{{||ZZYYSSRR - - ]]^^__``tssrqpon((''&&%%())**++,lmmnnoopqppoonnm-,,++**)\]]^^__`~~}=<<;;::9 - - LMMNNOOPMLLKKJJI <==>>??@]\\[[ZZY,--..//0pqqrrsstmllkkjji)((''&&%%&&''(()xyyzz{{|QPPOONNMMNNOOPPQDDCCBBAAEEFFGGHHTTSSRRQQ 55667788yyzz{{||ddccbbaa %%&&''((iijjkkllttssrrqq00//..--YYZZ[[\\@@??>>==IIJJKKLLAA@@??99iijjkklleeddccbb-..//001qrrssttulkkjjiih(''&&%%$ !abbccdde|{{zzyyx87766554 QRRSSTTUHGGFFEEDABBCCDDEXWWVVUUT12233445uvvwwxxyhggffeed$##""!! *++,,--.}~~LKKJJIIH - - RSSTUVWX??>>==<< JJKKLLMMOONNMMLL - - ::;;<<==~~__^^]]\\**++,,--nnooppqqoonnmmll++**))((^^__``aa~~}}||;;::9988 - - NNOOPPQQ77665544ssttuuvv``__^^]]``__^^]]99::;;<<}}~~QQPPOONNaabbccddmmllkkjj$#"! ,--..//0pqqrrsstmllkkjji)((''&&% `aabbccd}||{{zzy98877665 PQQRRSSTIHHGGFFE@AABBCCDYXXWWVVU01122334tuuvvwwxihhggffe%$$##""!)**++,,-|}}~~MLLKKJJI - - QRRSSTUV@@??>>==IIJJKKLLPPOONNMM - - 99::;;<<}}~~``__^^]]))**++,,mmnnooppppoonnmm,,++**))]]^^__``~~}}<<;;::99 - - MMNNOOPP88776655mmssttuuaa``__^^12233445uvvwwxxyhggffeed$##""!! !""##$$%effgghhixwwvvuut43322110UVVWWXXYDCCBBAA@EFFGGHHITSSRRQQP 56677889yzz{{||}dccbbaa` .//00112HGGFFEED YYZZ[[\\~~}}||;;::9988 - - NNOOPPQQKKJJIIHH>>??@@AA[[ZZYYXX..//0011rrssttuukkjjiihh''&&%%$$ !!bbccddee{{zzyyxx77665544RRSSTTUU33221100%%&&''wwxxyyzz\\[[ZZYY \\[[ZZYY==>>??@@MMLLKKJJeeffgghhiihhggff01122334tuuvvwwxihhggffe%$$##""! !!""##$deeffgghyxxwwvvu54433221TUUVVWWXEDDCCBBADEEFFGGHUTTSSRRQ 45566778xyyzz{{|eddccbba! -..//001IHHGGFFE WXYYZZ[[~~}}<<;;::99 - - MMNNOOPPLLKKJJII==>>??@@\\[[ZZYY--..//00qqrrssttllkkjjii((''&&%% aabbccdd||{{zzyy88776655 QQRRSSTT44332211%%&&vvwwxxyy]]\\[[ZZ56677889yzz{{||}dccbbaa` %&&''(()ijjkkllmtssrrqqp0//..--,YZZ[[\\]@??>>==< IJJKKLLMPOONNMML - - 9::;;<<=}~~`__^^]]\23344556DCCBBAA@]]^^__``{{zzyyxx77665544RRSSTTUUGGFFEEDDBBCCDDEEWWVVUUTT22334455vvwwxxyyggffeedd##""!! ""##$$%%ffgghhiiwwvvuutt33221100VVWWXXYY//..--,,(())**++{{||}}~~XWVUTSSR - - XXWWVVUUAABBCCDDIIHHGGFFiijjkklleeddccbb45566778xyyzz{{|eddccbba! $%%&&''(hiijjkkluttssrrq100//..-XYYZZ[[\A@@??>>=HIIJJKKLQPPOONNM - - 899::;;<|}}~~a``__^^]12233445EDDCCBBA\\]]^^__||{{zzyy88776655 QQRRSSTTHHGGFFEEAABBCCDDXXWWVVUU11223344uuvvwwxxhhggffee$$##""!!!!""##$$eeffgghhxxwwvvuu44332211UUVVWWXX00//..--''(())**zz{{||}}YYXWVUTS -9::;;<<=}~~`__^^]]\)**++,,-mnnooppqpoonnmml,++**))(]^^__``a~~}}|<;;::998 - - MNNOOPPQLKKJJIIH=>>??@@A\[[ZZYYX6778899?@??99887aabbccddwwvvuutt33221100VVWWXXYYCCBBAA@@FFGGHHIISSRRQQPP 66778899zz{{||}}ccbbaa``&&''(())jjkkllmmssrrqqpp//..--,,ZZ[[\\]]~~}}||{{++**))((,,--..//RQQPPOON TTSSRRQQ EEFFGGHHEEDDCCBBmmssttuuaa``__^^899::;;<|}}~~a``__^^]())**++,lmmnnoopqppoonnm-,,++**)\]]^^__`~~}=<<;;::9 - - LMMNNOOPMLLKKJJI <==>>??@]\\[[ZZY56677889A@@??998``aabbccxxwwvvuu44332211UUVVWWXXDDCCBBAAEEFFGGHHTTSSRRQQ 55667788yyzz{{||ddccbbaa %%&&''((iijjkkllttssrrqq00//..--YYZZ[[\\~~}}||,,++**))++,,--..~~SRRQQPPO - =>>??@@A\[[ZZYYX-..//001qrrssttulkkjjiih(''&&%%$ !abbccdde|{{zzyyx87766554 QRRSSTTUHGGFFEEDABBCCDDEXWWVVUUT?@@AABBC76655443eeffgghhssrrqqpp//..--,,ZZ[[\\]]??>>==<< JJKKLLMMOONNMMLL - - ::;;<<==~~__^^]]\\**++,,--nnooppqqoonnmmll++**))((^^__``aazzyyxxww''&&%%00112233NMMLLKKJPPOONNMM - - IIJJKKLLAA@@??99%%&&vvwwxxyy]]\\[[ZZ<==>>??@]\\[[ZZY,--..//0pqqrrsstmllkkjji)((''&&% `aabbccd}||{{zzy98877665 PQQRRSSTIHHGGFFE@AABBCCDYXXWWVVU9??@@AAB87766554ddeeffggttssrrqq00//..--YYZZ[[\\@@??>>==IIJJKKLLPPOONNMM - - 99::;;<<}}~~``__^^]]))**++,,mmnnooppppoonnmm,,++**))]]^^__``{{zzyyxx((''&&%%//001122ONNMMLLKABBCCDDEXWWVVUUT12233445uvvwwxxyhggffeed$##""!! !""##$$%effgghhixwwvvuut43322110UVVWWXXYDCCBBAA@EFFGGHHITSSRRQQP CDDEEFFG3221100/ !"iijjkklloonnmmll++**))((^^__``aa~~}}||;;::9988 - - NNOOPPQQKKJJIIHH>>??@@AA[[ZZYYXX..//0011rrssttuukkjjiihh''&&%%$$ !!bbccddeevvuuttss44556677JIIHHGGF -JKKLLMMNONNMMLLK - - :;;<<==>~_^^]]\\[*++,,--.nooppqqronnmmllk+**))(('^__``aab~~}}||{;::99887 - NOOPPQQRKJJIIHHG>??@@AABIHHGGFFEijjkkllmYXXWWVVU@AABBCCD - NOOPPQQRKJJIIHHG>??@@AAB[ZZYYXXW.//00112rssttuuvkjjiihhg'&&%%$$# !!"bccddeef{zzyyxxw76655443RSSTTUUVGFFEEDDCBCCDDEEFEDDCCBBAmssttuuvUTTSSRRQ DEEFFGGHRSSTTUUVGFFEEDDCBCCDDEEFWVVUUTTS23344556vwwxxyyzgffeeddc#""!! "##$$%%&fgghhiijwvvuutts3221100/VWWXXYYZCBBAA@@?FGGHHIIJA@@??998%%&&'vwwxxyyzQPPOONNM - - HIIJJKKLVWWXXYYZCBBAA@@?FGGHHIIJSRRQQPPO 6778899:z{{||}}~cbbaa``_&''(())*jkkllmmnsrrqqppo/..--,,+Z[[\\]]^?>>==<<; -JKKLLMMN87766554'(())**+z{{||}}~MLLKKJJI - - LMMNNOOPZ[[\\]]^?>>==<<; -JKKLLMMNONNMMLLK - - :;;<<==>~_^^]]\\[*++,,--.nooppqqronnmmllk+**))(('^__``aab~~}}||{;::99887 - NOOPPQQR43322110+,,--../~IHHGGFFE PQQRRSST^__``aab~~}}||{;::99887 - NOOPPQQRKJJIIHHG>??@@AAB[ZZYYXXW.//00112rssttuuvkjjiihhg'&&%%$$# !!"bccddeef{zzyyxxw76655443RSSTTUUV0//..--,/0011223EDDCCBBATUUVVWWX !!"bccddeef{zzyyxxw76655443RSSTTUUVGFFEEDDCBCCDDEEFWVVUUTTS23344556vwwxxyyzgffeeddc#""!! "##$$%%&fgghhiijwvvuutts3221100/VWWXXYYZ~~}}||{,++**))(34455667A@@??>>=XYYZZ[[\"##$$%%&fgghhiijwvvuutts3221100/VWWXXYYZCBBAA@@?FGGHHIIJSRRQQPPO 6778899:z{{||}}~cbbaa``_&''(())*jkkllmmnsrrqqppo/..--,,+Z[[\\]]^{zzyyxxw(''&&%%78899??@~~}=<<;;::9\]]^^__`&''(())*jkkllmmnsrrqqppo/..--,,+Z[[\\]]^?>>==<<; -JKKLLMMNONNMMLLK - - :;;<<==>~_^^]]\\[*++,,--.nooppqqronnmmllk+**))(('^__``aabwvvuutts@AABBCCD}||{{zzy98877665 `aabbccd*++,,--.nooppqqronnmmllk+**))(('^__``aab~~}}||{;::99887 - NOOPPQQRKJJIIHHG>??@@AAB[ZZYYXXW.//00112rssttuuvkjjiihhg'&&%%$$# !!"bccddeefsmmllkkjDEEFFGGHyxxwwvvu54433221 !!""##$deeffggh.//00112rssttuuvkjjiihhg'&&%%$$# !!"bccddeef{zzyyxxw76655443RSSTTUUVGFFEEDDCBCCDDEEFWVVUUTTS23344556vwwxxyyzgffeeddc#""!! "##$$%%&fgghhiijjiihhggfHIIJJKKLuttssrrq100//..-$%%&&''(hiijjkkl23344556vwwxxyyzgffeeddc#""!! "##$$%%&fgghhiijwvvuutts3221100/VWWXXYYZCBBAA@@?FGGHHIIJSRRQQPPO 6778899:z{{||}}~cbbaa``_&''(())*jkkllmmnfeeddccbLMMNNOOPqppoonnm-,,++**)())**++,lmmnnoop6778899:z{{||}}~cbbaa``_&''(())*jkkllmmnsrrqqppo/..--,,+Z[[\\]]^?>>==<<; -JKKLLMMNONNMMLLK - - :;;<<==>~_^^]]\\[*++,,--.nooppqqrbaa``__^ PQQRRSSYmllkkjji)((''&&%,--..//0pqqrrsst:;;<<==>~_^^]]\\[*++,,--.nooppqqronnmmllk+**))(('^__``aab~~}}||{;::99887 - NOOPPQQRKJJIIHHG>??@@AAB[ZZYYXXW.//00112rssttuuv^]]\\[[Z - - -YZZ[[\\]ihhggffe%$$##""!01122334tuuvvwwx>??@@AAB[ZZYYXXW.//00112rssttuuvkjjiihhg'&&%%$$# !!"bccddeef{zzyyxxw76655443RSSTTUUVGFFEEDDCBCCDDEEFWVVUUTTS23344556vwwxxyyzZYYSSRRQ - ]^^__``aeddccbba! 45566778xyyzz{{|BCCDDEEFWVVUUTTS23344556vwwxxyyzgffeeddc#""!! "##$$%%&fgghhiijwvvuutts3221100/VWWXXYYZCBBAA@@?FGGHHIIJSRRQQPPO 6778899:z{{||}}~QPPOONNMabbccddea``__^^]899::;;<|}}~~FGGHHIIJSRRQQPPO 6778899:z{{||}}~cbbaa``_&''(())*jkkllmmnsrrqqppo/..--,,+Z[[\\]]^?>>==<<; -JKKLLMMNONNMMLLK - - :;;<<==>~MLLKKJJIeffgghhi]\\[[ZZY<==>>??@bdQZ|Jlt`vXnH~fr˂pZHAblJtArlJtAHfvnXvnXbHArXQJ`AJltdrtnvpf`vXZHAbQr˂p|ZdQJtArdnXv`fpvbHArXQJ`AJltdrtbnvpf`vXfH~Qr˂pے`JXrd|vnXfpv㒐bHAZZp˂JltdrtAvpf`vXnZHAbr˂p|ZdQbtArdnXv`fpvfHfXQJ`ےp˂rdrtAbdQZ|`vXnH~fr˂pے`JXQtArdtlJXv`f~Hf`ےbJ`p˂tbdnvpvXn~f`r˂p`JXQArd|lJtfpvf~HQJ`ے˂rXdrtAbdQZ|vXn~f`r˂p`JXQJtAd|lJtZdQbf~HnXv`ˉrXQJ`Z|dQZ|dnvpvf~˂pZ`JXQrrd|lJtApvn~HfJ`ے˂rXQdrtAJdQZ|tbn~f`vpfH`JXQrHAbےlJtAZdQbt~HfXv`f˂rXQbHAZptbdQZtbdQf`pfnr˂pZHAdrtAbdQZ|vpf`vXn`JXQrے`JXQd|Zrd|v`fv`frZp˂󒐙bHAbdQZ|AJltfH~nvpے`JXZHAbbtl|ZdQf~HnXv`Zp˂󒐙bHAbdQZ|AJltfHnvpf`vXZHAbQr˂pZdQbtv`fnXv`ˑrXQJrXQJbdQZ|JltH~fvpfے`JXQZHAbtlJ|ZdQbf~HnXv`pvnbHAZXQJ`ےJltdrtAvpf`vXnZHAbr˂p|ZdQbtArdnXpvnHAZp`rbdQQZ|dfHf`vpfHvXnZHAbr˂pZdQbtArd|nXv`fpvbHAZpQJ`ےJltdrtAvpfHvXnZHAbr˂pZdQbtArd|nXv`fpvfHfpےbHrtAJlrtAJlfH~f`vXHAbے˂pZZdQbtrd|Xv`fpvnbHAZpJ`ےltbdrtAJvpfvXn~f`˂pZ`JXQrrd|lJtApvn~HfJ`ے˂rXQ|drZ|dH~fpZAb`bے`JJltdrtAH~fvpf˂pZr˂pdQbtZdQbt~HfpQJHArXQJ`Zp˂drtbdQZ|f`vXfH~Qr˂pے`JXJtArdbtlfpvf~HrXQJ`Zp˂drtbdQZ|f`vXfH~nr˂pے`JXZHAےlJtA~Hfpf~H`ےbbHAZpdrtAbdQZ|`vXnH~fr˂pے`JXQtArdtlJfpvf~HrXQJ`p˂rbHAZbdQZ|JltH~fvpfے`JXQZHAbtlJ|ZdQbv`fXv`fےbHAZ|rArtAJlvXn~f`r˂p`JXQZHAے`lJtZdQbtf~HnXv`ˑ˂rXbHAZpbdQZ|Jlt~f`vpfH`JXQZHAbۉlJtZdQbtf~HnXv`˝vnAZp˂tbdQtdf`vXnvp`JXQrHAbےlJtAZdQbt~HfXv`f˂rXQbHAZpdQZ|ltbHf`vpfHvXnrHAbے˂pZZdQbtrd|Xv`fpvnbHAZpJ`ےtAJlrtAJl`vXnJXQrQrpZbdQZ|Jlt`vXnH~fHAbےZHAblJtArl|ZvnXZp˂󒐙bHArbdQZ|AJltdtAnvpf`vXZHAbQr˂p|ZdQJtArdnXv`fpvbHArXQJ`AJltdrtnvpf`vXZHAbQr˂p`JXQrd|vnXfpvHAZp˂rXQJltdrtAvpf`vXnZHAbr˂p|ZdQbtArdnXv`fpvےHAZXQJ`ےp˂rdrtAbdQZ|`vXnH~fr˂pے`JXQtArdtlJ~Hfp~HfZp˂JltbQZ|vpfHvXnZHAbr˂pJXQrArd|lJtfpvf~HQJ`ے˂rXdrtAbdQZ|vXn~f`r˂p`JXQArd|lJtfpvf~HrXQJ`pbHAZ|dtrtAJlnvpfH~˂pZ`JXQrrd|lJtApvn~HfJ`ے˂rXQdrtAJdQZ|vXn~f`˂pZ`JXQrHAے`lJtAZdQbt~HfXv`f˂rXQbHAZptbdQZtbdQvpf˂pZHHAbےdrtAbdQZ|vpf`vXn`JXQrے`JXQd|ldQbnXv`frXQJ`Zp˂drtbdQZ|JltfH~nvpے`JXZHAbbtl|ZdQf~HnXv`Zp˂󒐙bHAbdQZ|AJltfH~nvpے`JXZHAbrbtlZdQtArdv`f~HfprXQJJ`ےbdQZ|JltH~fvpfے`JXQZHAbtlJ|ZdQbf~HnXv`p˂rbHAZbdQZ|JltdtAJvpf`vXnZHAbr˂p|ZdQbtArdvnXpvnrXQJ`bdQZ|drtA~f`vpfH`JXQZHAbbtlZdQbtArd|nXv`fpvbHAZpQJ`ےJltdrtAvpfHvXnZHAbr˂pZdQbtArd|nXv`fpv˂rXZp˂bdQZ|tbdQfH~f`vXHAbے˂pZZdQbtrd|Xv`fpvnbHAZpJ`ےltbdrtAJvpfHvXnHAbے˂pZJXQrbrd|lJtApvn~HfJ`ے˂rXQ|drZ|lH~fAbے``JXQrJltdrtAH~fvpf˂pZHAbےJtArdv`f~~HfpbHArXQJ`AJltdrtbnvpf`vXfH~Qr˂pے`JXJtArdbtlfpvf~HrXQJ`Zp˂drtbdQZ|f`vXfH~Qr˂pے`JX|ZdQ|ZdnXvnX`ےbbHAZpdrtAbdQZ|`vXnH~fr˂pے`JXQtArdtlJfpvf~HXQJ`ےp˂rdrtAbdQZ|ltbH~fvpfے`JXQZHAbtlJ|ZdQbv`fXv`pےbHAdrtAJltvXn~f`r˂p`JXQJtAd|lJtZdQbf~HnXv`ˑ˂rXbHAZpbdQZ|Jlt~f`vpfH`JXQZHAbۉlJtZdQbtf~HnXv`QJ`ےrXQJ`ہdrtZ|df`vnnvp`JXQrHAbےlJtAZdQbt~HfXv`f˂rXQbHAZpdQZ|ltb~f`vpfH`JXQrHAbےtlJZdQbtrd|Xv`fpvnbHAZpJ`ےtAdQZ|tbn`vXHJXQr˂pZbdQZ|Jlt`vXnH~fHAXQr`JXQr|ZdQfpvvnv`Zp˂󒐙bHAbdQZ|AJltfHnvpf`vXZHAbQr˂p|ZdQJtArdnXv`fpvbHArXQJ`AJltdrtnvpf`vXZHAbQr˂pbtlQbtlv`fv`fHAZprXQJltdrtAvpf`vXnZHAbr˂p|ZdQbtArdnXv`fpvbHAZXQJ`ےJltdrtAnvp`vXnH~fr˂pے`JXQtArdtlJ~HXvvnrZp˂JltbdQZ|vpfHvXnZHAbr˂pZdQbtArd|nXv`fpvfHfpQJ`ے˂rXdrtAbdQZ|vXn~f`r˂p`JXQArd|lJtfpvf~HbHAZpbHAAJltrtAJlvpfHf~f`˂pZ`JXQrrd|lJtApvn~HfJ`ے˂rXQdrtAJdQZ|vXn~f`˂pZ`JXQrtAd|lJtAZdQbn~HfXv`f˂rXQbHAZpdrtAvp`v~f`˂pZHHAbےdrtAbdQZ|vpf`vXn˂pZHA˂pZbtlnXv`f~HrXQJ`Zp˂drtbdQZ|f`vXfH~nr˂pے`JXZHAbtl|ZdQf~HnXv`Zp˂󒐙bHAbdQZ|AJltfH~nvpے`JXZHAbJtArdJtArd~Hfpە~HfprQJ`ےJ`bAZbdQZ|JltH~fvpfے`JXQZHAbtlJ|ZdQbf~HnXv`p˂rbHAZbdQZ|JltfHfvpf`vXnZHAbr˂p|ZdQbtArd`f~XQJ`pbHAZbdQZ|drtA~f`vpfH`JXQZHAbۉlJtZdQbtf~HnXv`˝vnbHAZpQJ`ےJltdrtAvpfHvXnZHAbr˂pZdQbtArd|nXv`fpv˂rXZp˂bdQZ|tbdQ~f`vXnrHAbے˂pZZdQbtrd|Xv`fpvnbHAZpJ`ےltbdrtAJvpfHvXnHAbے˂pZZdQbtrd|Xv`fpvnHfpJ`ے˂rXQJltXnvvXnAbJXQ`JXQrJltdrtAH~fvpfbے`HAbےJtArdf~HfpvbHArXQJ`AJltdrtnvpf`vXZHAbQr˂p`JXQJtArdbtlfpvf~HrXQJ`Zp˂drtbdQZ|f`vXfH~Qr˂pے`JX|ZdQ|ZdvnXvnXbHAZpp˂rdrtAbdQZ|`vXnH~fr˂pے`JXQtArdtlJfpvf~HXQJ`ےp˂rdrtAbdQZ|`vXnH~fr˂pے`JXQZHAےtlJ|ZdQbHfpv˂rXQp˂rdrAJJltvXn~f`r˂p`JXQArd|lJtfpvf~HrXQJ`ۑ˂rXbHAZpbdQZ|Jlt~f`vpfH`JXQZHAbۉlJtZdQbtf~HnXv`QJ`ےrXQHAZpdrtZ|ltvXnۀ˂pZ`JXQrHAے`lJtAZdQbt~HfXv`f˂rXQbHAZpdQZ|ltb~f`vpfH`JXQrHAbےlJtAZdQbt~HfXv`fvnrbHAZpJ`ےbdQZ|pfH~vpfHr˂pZHAbbdQZ|Jlt`vXnH~fJXQr`JXQr|ZdQfpvnXv`Zp˂󒐙bHAbdQZ|AJltfH~nvpے`JXZHAbrbtl|ZdQJtArdnXv`fpvbHArXQJ`AJltdrtnvpf`vXZHAbQr˂pbtlQbtdv`fv`pۑ˂rXbdQZ|JltdtAJvpf`vXnZHAbr˂p|ZdQbtArdnXv`fpvbHAZXQJ`ےJltdrtAvpf`vXnZHAbr˂p`JXQrtArdtlJnXvJ`ےXQJ`ےtbdQZbQZdvpfHvXnZHAbr˂pZdQbtArd|nXv`fpv㒐HAZpQJ`ے˂rdrtAbdQZ|vXn~f`r˂p`JXQArd|lJtfpvf~HbHAXQ˂rXAdQZ|bnvpfHHAbے˂pZJXQrbrd|lJtApvn~HfJ`ے˂rXQdrtAJdQZ|vXn~f`˂pZ`JXQrrd|lJtApvn~HfXQJ`ے˂rXQbHAZpdrtAf`v~f`ZHAbے`JXdrtAbdQZ|vpf`vXn˂pZHA˂p|tArdnXv`f~HrXQJ`Zp˂drtbdQZ|f`vXfH~Qr˂pے`JXJtAdbtl|ZdQf~HnXv`Zp˂󒐙bHAbdQZ|AJltfH~nvpے`JXZHAbJtArdt|ZdQ~HXv`vnrXQJ`ےdrtAbdQZ|ltbH~fvpfے`JXQZHAbtlJ|ZdQbf~HnXv`p˂rbHAZbdQZ|JltH~fvpfے`JXQZHAbbtl|ZdQbtArd`f~bHAZpbHAZ|drrtAJl~f`vpfH`JXQZHAbۉlJtZdQbtf~HnXv`ˑ˂rXbHAZpbdQZ|JltdtAJlvpfHvXnZHAbr˂pZdQbtArd|nXv`fpvJ`ےQJ`ےdrtAvpff`~f``JXQrHAbےtlJZdQbtrd|Xv`fpvnbHAZpJ`ےltbdrtAJvpfHvXnHAbے˂pZZdQbtrd|Xv`fpvnHAZpJ`ے˂rbJl|XnvvXnے`JXQQr˂pJltdrtAH~fvpfb˂ZdQbt|ZdQbf~fvfpvbHArXQJ`AJltdrtnvpf`vXZHAbQr˂p|ZdQJtArdbnXv`fpvfHrXQJ`Zp˂drtbdQZ|f`vXfH~Qr˂pے`JXlJtbtlf~HQJ`AbHAZpJltdrtAnvp`vXnH~fr˂pے`JXQtArdtlJfpvf~HXQJ`ےp˂rdrtAbdQZ|`vXnH~fr˂pے`JXQJtAdtlJ|ZdQbHfp`˂rXQp˂rtAJl璒tbdQvXn~f`r˂p`JXQArd|lJtfpvf~HQJ`ے˂rXdrtAbdQZ|tb~f`vpfH`JXQZHAbۉlJtZdQbtf~HnXv`bHAZp˙bHAZpJltvXnvXnvf˂pZ`JXQrtAd|lJtAZdQbn~HfXv`f˂rXQbHAZpdQZ|ltb~f`vpfH`JXQrHAbےlJtAZdQbt~HfXv`f˂rXQbHAZpdQZ|ldrtAJpfH~f`vr˂pZHAbbdQZ|Jlt`vXnH~fpZHAblJtAtlJnXvnvfZp˂󒐙bHAbdQZ|AJltfH~nvpے`JXZHAbbtl|ZdQf~HnXv`fpv㒐bHArXQJ`AJltdrtnvpf`vXZHAbQr˂pArd|JtArdfpvZp˂˂rQJbdQZ|JltfHfvpf`vXnZHAbr˂p|ZdQbtArdnXv`fpvbHAZXQJ`ےJltdrtAvpf`vXnZHAbr˂p|ZdQbtArdnXv`f~HJ`ےXQHAZptbdQZZ|dvpfHvXnZHAbr˂pZdQbtArd|nXv`fpvbHAZpQJ`ےJltdrtAnvpvXn~f`r˂p`JXQArd|lJtfpvf~HrXQ˂rXbdQZ|vpfHH~fHAbے˂pZZdQbtrd|Xv`fpvnHfpJ`ے˂rXQdrtAJdQZ|vXn~f`˂pZ`JXQrrd|lJtApvn~HfJ`ے˂rXQtbdQltbvpXnvZHAbے`JXdrtAbdQZ|vpf`vXnے`Jrd|tArd`f~~HfprXQJ`Zp˂drtbdQZ|f`vXfH~Qr˂pے`JXJtArdbtlfpvf~HnrXQJ`Zp˂󒐙bHAbdQZ|AJltfH~nvpے`JXZHAbZdQbt|ZdQnXv`rXQJ`ہbHAdrtAbdQZ|`vXnH~fr˂pے`JXQZHAےtlJ|ZdQbf~HnXv`p˂rbHAZbdQZ|JltH~fvpfے`JXQZHAbtlJ|ZdQbpvnfpvbHAXQJ˂rXQ|drrtAJl~f`vpfH`JXQZHAbۉlJtZdQbtf~HnXv`ˑ˂rXbHAZpbdQZ|JltfHf`vpfHvXnZHAbr˂pZdQbtArd|nXv`fpvJ`ےQJ`p˂drtA~f``vXn`JXQrHAbےlJtAZdQbt~HfXv`fvnrbHAZpJ`ےltbdrtAJvpfHvXnHAbے˂pZZdQbtrd|Xv`fpvnbHAZpJ`ےZ|ddQZ|fH~pfH~JQrQr˂pJltdrtAH~fvpfXQr˂ZdQbt|ZdQbHfpvvnXbHArXQJ`AJltdrtnvpf`vXZHAbQr˂p|ZdQJtArdnXv`fpvےHArXQJ`Zp˂drtbdQZ|f`vXfH~Qr˂pے`JXlJtbtl|f~HbHAZp˂JltdrtAvpf`vXnZHAbr˂p`JXQrtArdtlJfpvf~HXQJ`ےp˂rdrtAbdQZ|`vXnH~fr˂pے`JXQtArdtlJXv`fnXv``ےbJ`ےtAJbdtbdQvXn~f`r˂p`JXQArd|lJtfpvf~HQJ`ے˂rXdrtAbdQZ|vXn~f`r˂p`JXQZHAے`lJtZdQbtf~HnXv`bHAZp`rbdJl|dvXnvpf˂pZ`JXQrrd|lJtApvn~HfXQJ`ے˂rXQbHAZpdQZ|ltb~f`vpfH`JXQrHAbےlJtAZdQbt~HfXv`f˂rXQbHAZprtAJldrtAJf`vXf`vpZHAZA`bdQZ|Jlt`vXnH~fpZHAblJtAtd|nXvv`fZp˂󒐙bHAbdQZ|AJltfH~nvpے`JXZHAbbtl|ZdQf~HnXv`Zp˂󒐙bHArbdQZ|AJltdtAnvpf`vXZHAbQr˂pArd|ZdQbfp`Zp˂rXQJ`bdQZ|JltH~fvpfے`JXQZHAbbtl|ZdQbtArdnXv`fpvbHAZXQJ`ےJltdrtAvpf`vXnZHAbr˂p|ZdQbtArd~Hff~HHAZp˂bHAZpQZ|dZ|AJlvpfHvXnZHAbr˂pZdQbtArd|nXv`fpvbHAZpQJ`ےJltdrtAvpfHvXnZHAbr˂pJXQrArd|lJtfpvf~HےbHQZ|lrtAJlvpfHH~fHAbے˂pZZdQbtrd|Xv`fpvnHAZpJ`ے˂rbdrtAJdQZ|vXn~f`˂pZ`JXQrrd|lJtApvn~HfJ`ے˂rXQtbdQltdnvpXnvbے`JXQrbtdrtAbdQZ|vpf`vXnے`prdtZdQbt`f~~HfprXQJ`Zp˂drtbdQZ|f`vXfH~Qr˂pے`JXJtArdbtlfpvf~HrXQJ`Zp˂drtbdQZ|JltfH~nvpے`JXZHAblJtAnXv`pf~HrXQJ`ےbHAdrtAbdQZ|`vXnH~fr˂pے`JXQJtAdtlJ|ZdQbf~HnXv`p˂rbHAZbdQZ|JltH~fvpfے`JXQZHAbtlJ|ZdQbpvnfpvrXQJ˂rXQrtAJltb~f`vpfH`JXQZHAbۉlJtZdQbtf~HnXv`ˑ˂rXbHAZpbdQZ|Jlt~f`vpfH`JXQZHAbbtlZdQbtArd|nXv`fpvAZp˂tbdQtbd~fv`vXn`JXQrHAbےlJtAZdQbt~HfXv`f˂rXQbHAZpdQZ|ltbdtAJlvpfHvXnHAbے˂pZZdQbtrd|Xv`fpvnbHAZpJ`ےZ|drtAJlfH~p`vXJXQrˉlJtAd|lJtAZdQbnX~Hfpv`frXQbHAZpQZ|dtbd~f`vpfHJXQrAbے`lJtAZdQbt~Hfpv`frXQbHAZpQZ|dtbdtAJlvpfHvXnQr˂pQXb㉀`ZQXb㉐f۝`vpfH~tbAdZZdQbtrd|v`fvnXHfpJ`ےむrXQrtAJlQZ|dvXn~f`˂pZHJXQrrd|lJtAvnX~HfpJ`ےむrXQrtAJlQZ|dtbn~f`vpfHZHAbۑpJAHrˁ`ZXnvˍf۝`v|drlJtAZdQbt~Hfpv`fvnrXbHAZpJ`ےtbdrtAJlvpfHvXnAbے`˂pZHZdQbtrd|v`fvnXbHAZpJ`ےtbdrtAJlvpfHvXn~f`ے`p󙐉ۑQXb㉀pfH~XnvˍQtJlrd|lJtAvnX~HfpQJ`ےrXQbHAZpQZ|dtbd~f`vpfHJXQrAbے`lJtAZdQbt~Hfpv`frXQbHAZpQZ|dtbdf`vpfHvXnے`ZHAbpJAHrۑpJAHrf۝`vp|drtbAdZZdQbtrd|v`fvnXHAZpJ`ےむrbdrtAJlQZ|dvXn~f`˂pZHJXQrrd|lJtAvnX~HfpJ`ےむrXQrtAJlQZ|dvXn~f`JXQr`JXQˁ`ZQ󙐂ˁ`ZXnvˍQtJl|drlJtAZdQbt~Hfpv`frXQbHAZpQZ|dtbdtAJlvpfHvXnAbے`˂pZHZdQbtrd|v`fvnXbHAZpJ`ےtbdrtAJlvpfHvXnۉ˂pZHr˂pXb㉀ۑQXb㉀pfH~tbAdZQtJlrd|lJtAvnX~HfpJ`ےむrXQrtAJlQZ|dtbn~f`vpfHJXQrAbے`lJtAZdQbt~Hfpv`frXQbHAZpQZ|dtbd~f`vpfHAbے`ZHAbpJAHrXnvˍf۝`v|drtbAdZZdQbtrd|v`fvnXbHAZpJ`ےtbdrtAJlvpfHvXn~f`˂pZHJXQrrd|lJtAvnX~HfpJ`ےむrXQrtAJlQZ|dvXn~f`JXQr`JXQHˁ`pJpfH~XnvˍQtJl|drlJtAZdQbt~Hfpv`frXQbHAZpQZ|dtbdf`vpfHvXnrAbے`˂pZHZdQbtrd|v`fvnXbHAZpJ`ےtbdrtAJlvpfHvXnۉ˂pZHAbے`AHr󙐂f۝`vpfH~tbAdZQtJlrd|lJtAvnX~HfpJ`ےむrXQrtAJlQZ|dvXn~f`˂pZHJXQrAے`lJtAZdQbt~Hfpv`frXQbHAZpQZ|dtbd~f`vpfHAXQrˁJXQrˁ`ZQXbXnvˍf۝`v|drtbAdZZdQbtrd|v`fvnXbHAZpJ`ےtbdrtAJlvpfHvXnAbے`˂pZHJXQrbtrd|lJtAvnX~HfpJ`ےむrXQrtAJlQZ|dvXn~f`pZHA˂pZH㉀ۑpJpfH~XnvˍQtJl|drlJtAZdQbt~Hfpv`frXQbHAZpQZ|dtbd~f`vpfHJXQrAbے`lJtZdQbtrd|v`fvnXbHAZpJ`ےtbdrtAJlvpfHvXnbے`Abے`AHr󙐂f۝`vpfH~tbAdZQtJlrd|lJtAvnX~HfpJ`ےむrXQrtAJlQZ|dvXn~f`˂pZHJXQrAd|lJtAZdQbnX~Hfpv`frXQbHAZpQZ|dtbd~f`vpfHJXQrˁJXQrˁ`ZQXAXnvˍf۝`v|drtbAdZZdQbtrd|v`fvnXbHAZpJ`ےtbdrtAJlvpfHvXnAbے`˂pZHZdQbtrd|v`fvnXHfpJ`ےむrXQrtAJlQZ|dvXn~f`pZHA˂p`ZHr󙐂ˁpfH~XnvˍQtJl|drlJtAZdQbt~Hfpv`frXQbHAZpQZ|dtbd~f`vpfHJXQrAbے`lJtAZdQbt~Hfpv`fvnrXbHAZpJ`ےtbdrtAJlvpfHvXnb˂pQXb㉀`ZQXb㉐f۝`vpfH~tbAdZQtJlrd|lJtAvnX~HfpJ`ےむrXQrtAJlQZ|dvXn~f`˂pZHJXQrrd|lJtAvnX~HfpQJ`ےrXQbHAZpQZ|dtbd~f`vpfHZHAbۑpJAHrۑpJAXnvˍf۝`v|drtbAdZZdQbtrd|v`fvnXbHAZpJ`ےtbdrtAJlvpfHvXnAbے`˂pZHZdQbtrd|v`fvnXHAZpJ`ےむrbdrtAJlQZ|dvXn~f`ے`JX󙐂ˁ`ZHr󙐂ˁpfH~XnvˍQtJl|drQt \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv32_2.dat b/mpdf/qrcode/data/qrv32_2.dat deleted file mode 100644 index d254d29..0000000 --- a/mpdf/qrcode/data/qrv32_2.dat +++ /dev/null @@ -1,289 +0,0 @@ -}~}~}~}~yzyzyzyzwxwxwxwxststststqrqrqrqrnmnmnmnmjijijijihghghghgdcdcdcdc}~}~}~}~yzyzyzyzwxwxwxwxststststqrqrqrqrnmnmnmnmjijijijihghghghgdcdcdcdc}~}~}~}~yzyzyzyzwxwxwxwxststststqrqrqrqpnmnmmmmmjijijijihghghghgdcdcdcdc}~}~}~}~yzyzyzyzwxwxwxwxststststopopopopmnmnmnmnjijijijihghghghgdcdcdcdc}~}~}~}~yzyzyzyzwxwxwxwxststststopopopopmnmnmnmnjijijijihghghghgdcdcdcdc}~}~}~}~yzyzyzyzwxwxwxwxststststopopopopmnmnmnmnjijijijihghghghgdcdcdcdc}~}~}~}~yzyzyzyzwxwxwxwxststststopopopopmnmnmnmnjijijijihghghghgdcdcdcdc}~}~}~}~yzyzyzyzwxwxwxwxststststopopopopmnmnmnmnjijijijihghghghgdcdcdcdc}~}~}~}~yzyzyzyzwxwxwxwxststststopopopopmnmmmmmmjijijijihghghghgdcdcdcdc}~}~}~}~yzyzyzyzwxwxwxwxststststopopopopnmnmnmnmjijijijihghghghgdcdcdcdc}|{|{|{|yzyzyzyzwvuvuvuvststststopopopoplklklklkjijijijifefefefedcdcdcdc{|{|{|{|yzyzyzyzuvuvuvuvststststopopopoplklklklkjijijijifefefefedcdcdcdc{|{|{|{|yzyzyzyzuvuvuvuvststststopopopoplklklklkjijijijifefefefedcdcdcdc{|{|{|{|yzyzyzyzuvuvuvuvststststopopopoplklklklkjijijijifefefefedcdcdcdc{|{|{|{|yzyzyzyzuvuvuvuvststststopopopoplklklklkjijijijifefefefedcdcdcdc{|{|{|{|yzyzyzyzuvuvuvuvststststopopopoplklklklkjijijijifefefefedcdcdcdc{|{|{|{|yzyzyzyzuvuvuvuvststststopopopoplklklklkjijijijifefefefedcdcdcdc{|{|{|{|yzyzyzyzuvuvuvuvststststopopopoplklklklkjijijijifefefefedcdcdcdc{|{|{|{|yzyzyzyzuvuvuvuvststststopopopoplklklklkjijijijifefefefedcdcdcdc{|{|{|{|yzyzyzyzuvuvuvuvststststopopopoplklklklkjijijijifefefefedcdcdcdcbabababa{|{|{|{|yzyzyzyzuvuvuvuvststststopopopoplklklklkjijijijifefefefedcdcdcdcbabababa{|{|{|{|yzyzyzyzuvuvuvuvststststopopopoplklklklkjijijijifefefefedcdcdcdcbabababa{|{|{|{|yzyzyzyzuvuvuvuvststststopopopoplklklklkjijijijifefefefedcdcdcdcbabababa{|{|{|{|yzyzyzyzuvuvuvuvststststopopopoplklklklkjijijijifefefefedcdcdcdcbabababa{|{|{|{|yzyzyzyzuvuvuvuvststststopopopoplklklklkjijijijifefefefedcdcdcdcbabababa{|{|{|{|yzyzyzyzuvuvuvuvststststopopopoplklklklkjijijijifefefefedcdcdcdcbabababa{|{|{|{|yzyzyzyzuvuvuvuvststststopopopoplklklklkjijijijifefefefedcdcdcdcbabababa{|{|{|{|yzyzyzyzuvuvuvuvststststopopopoplklklklkjijijijifefefefedcdcdcdcbabababa~}~}~}~{|{|{|{|yxwxwxwxuvuvuvuvsrqrqrqropopopoplklklklkhghghghgfefefefebabababababababa}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqropopopoplklklklkhghghghgfefefefebabababa`_`_`_`_}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqropopopoplklklklkhghghghgfefefefebabababa`_`_`_`_}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqropoponmnlklklklkhghghghgfefefefebabababa`_`_`_`_}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqrmnmnmmmmlklklklkhghghghgfefefefebabababa`_`_`_`_}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqrmnmnmnmnlklklklkhghghghgfefefefebabababa`_`_`_`_}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqrmnmnmnmnlklklklkhghghghgfefefefebabababa`_`_`_`_}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqrmnmnmnmnlklklklkhghghghgfefefefebabababa`_`_`_`_}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqrmnmnmnmnlklklklkhghghghgfefefefebabababa`_`_`_`_}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqrmnmnmnmnlklklklkhghghghgfefefefebabababa`_`_`_`_}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqrmnmnmnmmlklklklkhghghghgfefefefebabababa`_`_`_`_}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqrmmmmnmnmlklklklkhghghghgfefefefebabababa`_`_`_`_}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqrnmnmnmnmlklklklkhghghghgfefefefebabababa`_`_`_`_}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqrnmnmnmnmlklklklkhghghghgfefefefebabababa`_`_`_`_}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqrnmnmnmnmlklklklkhghghghgfefefefebabababa`_`_`_`_}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqrnmnmnmnmlklklklkhghghghgfefefefebabababa`_`_`_`_}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqrnmnmnmmmlklklklkhghghghgfefefefebabababa`_`_`_`_}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqrmmmnmnmnlklklklkhghghghgfefefefebabababa`_`_`_`_}~}~}~}~{zyzyzyzwxwxwxwxutstststqrqrqrqrmnmnmnmnjijijijihghghghgdcdcdcdcbabababa`_`_`_`_}~}~}~}~yzyzyzyzwxwxwxwxststststqrqrqrqrmnmnmnmnjijijijihghghghgdcdcdcdcbabababa`_`_`_`_}~}~}~}~yzyzyzyzwxwxwxwxststststqrqrqrqrmnmnmnmnjijijijihghghghgdcdcdcdcbabababa`_`_`_`_}~}~}~}~yzyzyzyzwxwxwxwxststststqrqrqrqrmnmnmnmnjijijijihghghghgdcdcdcdcbabababa`_`_`_`_}~}~}~}~yzyzyzyzwxwxwxwxststststqrqrqrqrmnmnmmmmjijijijihghghghgdcdcdcdcbabababa`_`_`_`_}~}~}~}~yzyzyzyzwxwxwxwxststststqrqrqrqrmmnmnmnmjijijijihghghghgdcdcdcdcbabababa`_`_`_`_}~}~}~}~yzyzyzyzwxwxwxwxststststqrqrqrqrnmnmnmnmjijijijihghghghgdcdcdcdcbabababa`_`_`_`_}~}~}~}~yzyzyzyzwxwxwxwxststststqrqrqrqrnmnmnmnmjijijijihghghghgdcdcdcdcbabababa`_`_`_`_`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#         `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#         `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#         `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@=>=>=<;<:999999:65656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#      `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@;<;<;<;<9:9:9:9:65656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#         `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@;<;<;<;<9:9:9:9:65656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#         `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@;<;<;<;<9:9:9:9:65656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#         `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@;<;<;<;<9:9:9:9:65656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#         `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@;<;<;<;<9:9:9:9:65656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#         `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@;<;<;<;<999999:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#       `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUQRQRQRQROPOPOPONKLKLKLKLIJIJIJIHEFEFEFEFCDCDCDCB?@?@?@?@;<;<;<;<:9:9:98765656565434343210/0/0/0/.-.-.-,+*)*)*)*)('('('&%$#$#$#$#         - -^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<8787878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#         - - - -^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<8787878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#         - - - -^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<8787878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#         - - - -^]^]^]^]\[\[\[\[XWXWXWXWVUVUTSTSQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<8787878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        - - - -^]^]^]^]\[\[\[\[XWXWXWXWTSTSSSSSQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<8787878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#       - - - -^]^]^]^]\[\[\[\[XWXWXWXWSTSTSTSTQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<8787878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#         - - - -^]^]^]^]\[\[\[\[XWXWXWXWSTSTSTSTQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<8787878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#         - - - -^]^]^]^]\[\[\[\[XWXWXWXWSTSTSTSTQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<8787878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#         - - - -^]^]^]^]\[\[\[\[XWXWXWXWSTSTSTSTQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<8787878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#         - - - -^]^]^]^]\[\[\[\[XWXWXWXWSTSTSTSTQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<8787878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        - - - -^]^]^]^]\[\[\[\[XWXWXWXWSTSSSSSSQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<8787878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#"!"!        - - - -^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<8787878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!         - - - -^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<8787878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!         - - - -^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<8787878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!         - - - -^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<8787878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!         - - - -^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<8787878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!         - - - -^]^]^]^]\[\[\[\[XWXWXWXWTSSSSSSTQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<8787878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!       - - - -^]^]^]^]\[\[\[\[XWXWXWXWSTSTSTSTQRQRQRQPMNMNMNMNKLKLKLKJGHGHGHGHEFEFEFEDABABABAB?@?@?@?>;<;<;<;<8787878765656543212121210/0/0/.-,+,+,+,+*)*)*)('&%&%&%&%"!"!"!"!     - - - -^]^]^]^]ZYZYZYZYXWXWXWXWSTSTSTSTOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>;<;<;<;<878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"! - - - -^]^]^]^]ZYZYZYZYXWXWXWXWSTSTSTSTOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>;<;<;<;<878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"! - - - -^]^]^]^]ZYZYZYZYXWXWXWXWSTSTSTSTOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>;<;<;<;<878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"! - - - -^]^]^]^]ZYZYZYZYXWXWXWXWSTSTSTSTOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>;<;:9:9:878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"! - - - -^]^]^]^]ZYZYZYZYXWXWXWXWSSSSSSTSOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>9:99999:878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"! - - - -^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>9:9:9:9:878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"! - - - -^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>9:9:9:9:878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"! - - - -^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>9:9:9:9:878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"! - - - -^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>9:9:9:9:878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"! - - - -^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>9:9:9:9:878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"! - - - -^]^]^]^]ZYZYZYZYXWXWXWVUSSSSSTSTOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>9:9:9999878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"! - - - -^]^]^]^]ZYZYZYZYVUVUVUVUSTSTSTSTOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>99:9:9:9878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"! - - - -^]^]^]^]ZYZYZYZYVUVUVUVUSTSTSTSTOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>:9:9:9:9878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"! - - - -^]^]^]^]ZYZYZYZYVUVUVUVUSTSTSTSTOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>:9:9:9:9878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"! - - - -^]^]^]^]ZYZYZYZYVUVUVUVUSTSTSTSTOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>:9:9:9:9878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"! - - - -^]^]^]^]ZYZYZYZYVUVUVUVUSTSTSTSTOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>:9:9:9:9878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"! - - - -^]^]^]^]ZYZYZYZYVUVUVUVUSTSSSSSTOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>:9:99999878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"! - - - -^]^]^]^]ZYZYZYZYVUVUVUVUSTSTSTSROPOPOPOPMNMNMNMLIJIJIJIJGHGHGHGFCDCDCDCDABABABA@=>=>=>=>9:9:9:9:87878765434343432121210/.-.-.-.-,+,+,+*)('('('('&%&%&%$#"!"!"!"!  - - \[\[\[\[ZYZYZYZYVUVUVUVUQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>9:9:9:9:65656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!     \[\[\[\[ZYZYZYZYVUVUVUVUQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>9:9:9:9:65656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!     \[\[\[\[ZYZYZYZYVUVUVUVUQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>9:9:9:9:65656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!     \[\[\[\[ZYZYZYZYVUVUVUVUQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>9:9:9:9:65656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!        \[\[\[\[ZYZYZYZYVUVUVUVUQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>9:99999965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#       \[\[\[\[ZYZYZYZYVUVUVUVUQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#         \[\[\[\[ZYZYZYZYVUVUVUVUQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#         YYZZ[[\\DDEEFFGG !!""##$)((''&&%qppoonnmhiijjkkl !!""##$)((''&&%qppoonnmddeeffgg!!""##$$((''&&%%ppoonnmm]]^^__``HHIIJJKK$%%&&''(%$$##""!mllkkjjilmmnnoop$%%&&''(%$$##""!mllkkjjihhiijjkk%%&&''(($$##""!!llkkjjiiaabbccddLLMMNNOO())**++,! ihhggffepqqrrsst())**++,! ihhggffellmmnopq))**++,, hhggffeeeeffgghhPPQQRRSS,--..//0eddccbbatuuvvwwx,--..//0eddccbbarssttuuv--..//00ddccbbaa~~}}iijjkkllYYZZ[[\\01122334a``__^^]xyyzz{{|01122334a``__^^]vwwxxyyz11223344``__^^]]||{{zzyymmnnoopp]]^^__``45566778]\\[[ZZY|}}~~45566778]\\[[ZZYz{{||}}~55667788\\[[ZZYYxxwwvvuuqqrrssttaabbccdd899::;;< YXXWWVVU899::;;< YXXWWVVU~~}}||{~99::;;<< XXWWVVUUttssrrqquuvvwwxxeeffgghh<==>>??@ - - UTTSSRRQ<==>>??@ - - UTTSSRRQ{zzyyxxw==>>??@@ - - TTSSRRQQppoonnmmyyzz{{||iijjkkll@AABBCCD QPPOONNM@AABBCCD QPPOONNMwvvuuttsAABBCCDDPPOONNMMllkkjjii}}~~mmssttuuDEEFFGGHMLLKKJJIDEEFFGGHMLLKKJJIsmmllkkjEEFFGGHHLLKKJJIIhhggffeevvwwxxyyHIIJJKKLIHHGGFFEHIIJJKKLIHHGGFFEjiihhggfIIJJKKLLHHGGFFEEddccbbaazz{{||}}LMMNNOOPEDDCCBBALMMNNOOPEDDCCBBAfeeddccbMMNNOOPPDDCCBBAA``__^^]]~~PQQRRSST - - A@@??>>=PQQRRSST - - A@@??>>=baa``__^QQRRSSTT - - @@??>>==\\[[ZZYYTUUVVWWX =<<;;::9TUUVVWWX =<<;;::9^]]\\[[ZUUVVWWXX <<;;::99XXWWVVUUXYYZZ[[\98877665~~}XYYZZ[[\98877665ZYYSSRRQ~~}}YYZZ[[\\88776655TTSSRRQQ\]]^^__`54433221}||{{zzy\]]^^__`54433221QPPOONNM||{{zzyy]]^^__``44332211PPOONNMM`aabbccd100//..-yxxwwvvu`aabbccd100//..-MLLKKJJIxxwwvvuuaabbccdd00//..--LLKKJJII~~}}||deeffggh -,,++**)uttssrrqdeeffggh -,,++**)IHHGGFFEttssrrqqeeffgghh ,,++**))HHGGFFEE{{zzyyxxhiijjkkl !!""##$)((''&&%qppoonnmhiijjkkl !!""##$)((''&&%EDDCCBBAppoonnmmiijjkkll!!""##$$((''&&%%DDCCBBAAwwvvuutt~~}}|lmmnnoop$%%&&''(%$$##""!mllkkjjilmmnnoop$%%&&''(%$$##""!A@@??998llkkjjiimmnnoopp%%&&''(($$##""!!iijjkkll@@??>>==ssmmllkk|{{zzyyxpqqrrsst())**++,! ihhggffepqqrrsst())**++,! 87766554hhggffeeqqrrsstt))**++,, mmnnoopp<<;;::99jjiihhggxwwvvuuttuuvvwwx,--..//0eddccbbatuuvvwwx,--..//043322110ddccbbaauuvvwwxx--..//00qqrrsstt88776655ffeeddcctssrqponxyyzz{{|01122334a``__^^]xyyzz{{|011223340//..--,``__^^]]yyzz{{||11223344uuvvwwxx44332211bbaa``__mmllkkjj|}}~~45566778]\\[[ZZY|}}~~45566778,++**))(\\[[ZZYY}}~~55667788yyzz{{||00//..--^^]]\\[[iihhggff899::;;< YXXWWVVU899::;;< (''&&%%XXWWVVUU99::;;<< }}~~,,++**))ZZYYSSRReeddccbb<==>>??@ - - UTTSSRRQ<==>>??@ - - TTSSRRQQ==>>??@@ - - ((''&&%%QQPPOONNaa``__^^@AABBCCD QPPOONNM@AABBCCD PPOONNMMAABBCCDD$$##""!!MMLLKKJJ]]\\[[ZZDEEFFGGHMLLKKJJIDEEFFGGHLLKKJJIIEEFFGGHH IIHHGGFFYYXWVUTSHIIJJKKLIHHGGFFEHIIJJKKLHHGGFFEEIIJJKKLLEEDDCCBBSRRQQPPOLMMNNOOPEDDCCBBALMMNNOOP - -  DDCCBBAAMMNNOOPPAA@@??99ONNMMLLKPQQRRSST - - A@@??>>=PQQRRSST  - - @@??>>==QQRRSSTT - - 88776655KJJIIHHGTUUVVWWX =<<;;::9TUUVVWWX<<;;::99UUVVWWXX  44332211GFFEEDDC~~}XYYZZ[[\98877665~~}XYYZZ[[\88776655~~}}YYZZ[[\\ - - 00//..--CBBAA@@?}||{{zzy\]]^^__`54433221}||{{zzy\]]^^__` - - 44332211||{{zzyy]]^^__``~~}} - - ,,++**))?>=<;:99yxxwwvvu`aabbccd100//..-yxxwwvvu`aabbccd% 00//..--xxwwvvuuaabbccdd||{{zzyy ((''&&%%88776655uttssrrqdeeffggh -,,++**)uttssrrqdeeffggh%&&''((),,++**))ttssrrqqeeffgghh xxwwvvuu44332211qppoonnmhiijjkkl !!""##$)((''&&%qppoonnmhiijjkkl)**++,,-((''&&%%ppoonnmmiijjkkll!!""##$$ttssrrqq00//..--mllkkjjilmmnnoop$%%&&''(%$$##""!mllkkjjilmmnnoop-..//001$$##""!!llkkjjiimmnnoopp%%&&''((ppoonnmm,,++**))ihhggffepqqrrsst())**++,! ihhggffepqqrrsst12233445 hhggffeeqqrrsstt))**++,,llkkjjii ((''&&%%eddccbbatuuvvwwx,--..//0eddccbbatuuvvwwx56677889!"#$%%&&ddccbbaauuvvwwxx--..//00hhggffee!!""##$$ $#"! a``__^^]xyyzz{{|01122334a``__^^]xyyzz{{|9??@@AAB''(())**``__^^]]yyzz{{||11223344ddccbbaa%%&&''(( - - ]\\[[ZZY|}}~~45566778]\\[[ZZY|}}~~BCCDDEEF++,,--..\\[[ZZYY}}~~55667788``__^^]]))**++,, - - YXXWWVVU899::;;< YXXWWVVUFGGHHIIJ//001122 XXWWVVUU99::;;<<\\[[ZZYY--..//00UTTSSRRQ<==>>??@ - - UTTSSRRQJKKLLMMN33445566 - - TTSSRRQQ==>>??@@XXWWVVUU11223344QPPOONNM@AABBCCD QPPOONNMNOOPPQQR778899:;PPOONNMMAABBCCDDTTSSRRQQ55667788 -MLLKKJJIDEEFFGGHMLLKKJJIRSSYYZZ[<=>??@@ALLKKJJIIEEFFGGHHPPOONNMM99::;;<< - IHHGGFFEHIIJJKKLIHHGGFFE[\\]]^^_ABBCCDDEHHGGFFEEIIJJKKLLLLKKJJII==>>??@@%%&&EDDCCBBALMMNNOOPEDDCCBBA_``aabbcEFFGGHHIDDCCBBAAMMNNOOPPHHGGFFEEAABBCCDD''(())** - - A@@??>>=PQQRRSST - - A@@??>>=cddeeffgIJJKKLLM - - @@??>>==QQRRSSTTDDCCBBAAEEFFGGHH++,,--.. =<<;;::9TUUVVWWX =<<;;::9ghhiijjkMNNOOPPQ <<;;::99UUVVWWXX@@??>>==IIJJKKLL//00112298877665~~}XYYZZ[[\98877665~~}kllmmsstQRRSSTUV88776655~~}}YYZZ[[\\<<;;::99MMNNOOPP3344556654433221}||{{zzy\]]^^__`54433221}||{{zzytuuvvwwxWXYYZZ[[44332211||{{zzyy]]^^__``88776655QQRRSSTT778899??100//..-yxxwwvvu`aabbccd100//..-yxxwwvvuxyyzz{{|\\]]^^__00//..--xxwwvvuuaabbccdd44332211UUVVWWXX@@AABBCC -,,++**)uttssrrqdeeffggh -,,++**)uttssrrq|}}~~``aabbcc ,,++**))ttssrrqqeeffgghh00//..--,,++**))ttssrrqqeeffgghhHHIIJJKK !,++**))(tssrrqqpeffgghhi !,++**))(tssrrqqp}~~aabbccdd !!++**))((ssrrqqppffgghhii !!++**))((iihhggff~~}}||{fgghhiij !!"+**))(('srrqqppofgghhiij !!"+**))(('feeddccbeddccbba((''&&%%ppoonnmmiijjkkllLLMMNNOO!""##$$%(''&&%%$poonnmmlijjkkllm!""##$$%(''&&%%$poonnmmleeffgghh""##$$%%''&&%%$$oonnmmlljjkkllmm""##$$%%''&&%%$$eeddccbb{zzyyxxwjkkllmmn"##$$%%&'&&%%$$#onnmmllkjkkllmmn"##$$%%&'&&%%$$#baa``__^a``__^^]$$##""!!llkkjjiimmnnooppPPQQRRSS%&&''(()$##""!! lkkjjiihmnnooppq%&&''(()$##""!! lkkjjiihiijjkkll&&''(())##""!! kkjjiihhnnooppqq&&''(())##""!! aa``__^^wvvuuttsnooppqqr&''(())*#""!! kjjiihhgnooppqqr&''(())*#""!! ^]]\\[[Z]\\[[ZZY hhggffeeqqrrssttYYZZ[[\\)**++,,- hggffeedqrrssttu)**++,,- hggffeedmmnopqrs**++,,--ggffeeddrrssttuu**++,,--]]\\[[ZZsrqponmmrssttuuv*++,,--.gffeeddcrssttuuv*++,,--.ZYYSSRRQYXXWWVVUddccbbaauuvvwwxx]]^^__``-..//001dccbbaa`uvvwwxxy-..//001dccbbaa`sttuuvvw..//0011ccbbaa``vvwwxxyy..//0011YYSSRRQQllkkjjiivwwxxyyz.//00112cbbaa``_vwwxxyyz.//00112QPPOONNMUTTSSRRQ``__^^]]yyzz{{||aabbccdd12233445`__^^]]\yzz{{||}12233445`__^^]]\wxxyyzz{22334455__^^]]\\zz{{||}}22334455PPOONNMMhhggffeez{{||}}~23344556_^^]]\\[z{{||}}~23344556MLLKKJJIQPPOONNM\\[[ZZYY}}~~eeffgghh56677889\[[ZZYYX}~~56677889\[[ZZYYX~{||}}~~66778899[[ZZYYXX~~66778899LLKKJJIIddccbbaa~6778899:[ZZYYXXW~6778899:IHHGGFFEMLLKKJJI XXWWVVUUiijjkkll9::;;<<= XWWVVUUT9::;;<<= XWWVVUUT~}}||{{z::;;<<== WWVVUUTT::;;<<== HHGGFFEE``__^^]]:;;<<==> WVVUUTTS:;;<<==> EDDCCBBAIHHGGFFE - - TTSSRRQQmmssttuu=>>??@@A - - TSSRRQQP=>>??@@A - - TSSRRQQPzyyxxwwv>>??@@AA - - SSRRQQPP>>??@@AA - - DDCCBBAA\\[[ZZYY>??@@AAB - - SRRQQPPO>??@@AAB - - A@@??998EDDCCBBAPPOONNMMvvwwxxyyABBCCDDEPOONNMMLABBCCDDEPOONNMMLvuuttssmBBCCDDEEOONNMMLLBBCCDDEE@@??9988XWVUTSSRBCCDDEEFONNMMLLKBCCDDEEF87766554A@@??>>=LLKKJJIIzz{{||}}EFFGGHHILKKJJIIHEFFGGHHILKKJJIIHmllkkjjiFFGGHHIIKKJJIIHHFFGGHHII77665544RQQPPOONFGGHHIIJKJJIIHHGFGGHHIIJ43322110=<<;;::9HHGGFFEE~~IJJKKLLMHGGFFEEDIJJKKLLMHGGFFEEDihhggffeJJKKLLMMGGFFEEDDJJKKLLMM33221100NMMLLKKJJKKLLMMNGFFEEDDCJKKLLMMN0//..--,98877665DDCCBBAAMNNOOPPQ DCCBBAA@MNNOOPPQ DCCBBAA@eddccbbaNNOOPPQQ CCBBAA@@NNOOPPQQ //..--,,JIIHHGGFNOOPPQQR -CBBAA@@?NOOPPQQR -,++**))(54433221 - - @@??>>==QRRSSTTU - - @??>>==>==>==<>==<<;RSSTTUUV - (''&&%%100//..- <<;;::99~~}}||UVVWWXXY <;;::998UVVWWXXY <;;::998]\\[[ZZYVVWWXXYY;;::9988VVWWXXYY''&&%%BAA@@??>VWWXXYYZ;::99887VWWXXYYZ-,,++**)88776655{{zzyyxxYZZ[[\\]87766554~~}}|YZZ[[\\]87766554YSSRRQQP~~}}||ZZ[[\\]]77665544~~}}||ZZ[[\\]]=<;:9988~~}}||{Z[[\\]]^76655443~~}}||{Z[[\\]]^)((''&&%44332211wwvvuutt]^^__``a43322110|{{zzyyx]^^__``a43322110POONNMML{{zzyyxx^^__``aa33221100{{zzyyxx^^__``aa77665544{zzyyxxw^__``aab3221100/{zzyyxxw^__``aab%$$##""!00//..--ssmmllkkabbccdde0//..--,xwwvvuutabbccdde0//..--,LKKJJIIHwwvvuuttbbccddee//..--,,wwvvuuttbbccddee33221100wvvuuttsbccddeef/..--,,+wvvuuttsbccddeef!  ,,++**))jjiihhgg~~}}|effgghhi !,++**))(tssrrqqpeffgghhi !,++**))(HGGFFEEDssrrqqppffgghhii !!++**))((ssrrqqppffgghhii !!//..--,,srrqqppofgghhiij !!"+**))(('srrqqppofgghhiij !!" !!""##$$((''&&%%ffeeddcc|{{zzyyxijjkkllm!""##$$%(''&&%%$poonnmmlijjkkllm!""##$$%(''&&%%$DCCBBAA@oonnmmlljjkkllmm""##$$%%''&&%%$$oonnmmlljjkkllmm""##$$%% ++**))((onnmmllkjkkllmmn"##$$%%&'&&%%$$#onnmmllkjkkllmmn"##$$%%& - - -%%&&''(($$##""!!bbaa``__xwwvvuutmnnooppq%&&''(()$##""!! lkkjjiihmnnooppq%&&''(()$##""!! @??99887kkjjiihhnnooppqq&&''(())##""!! kkjjiihhnnooppqq&&''(()) - - ''&&%%$#kjjiihhgnooppqqr&''(())*#""!! kjjiihhgnooppqqr&''(())* - ))**++,, ^^]]\\[[tssrqponqrrssttu)**++,,- hggffeedqrrssttu)**++,,- 76655443ggffeeddrrssttuu**++,,--ggffeeddrrssttuu**++,,--"! gffeeddcrssttuuv*++,,--.gffeeddcrssttuuv*++,,--. --..//00ZZYYSSRRmmllkkjjuvvwwxxy-..//001dccbbaa`uvvwwxxy-..//0013221100/ccbbaa``vvwwxxyy..//0011ccbbaa``vvwwxxyy..//0011 - -cbbaa``_vwwxxyyz.//00112cbbaa``_vwwxxyyz.//00112 - - 11223344QQPPOONNiihhggffyzz{{||}12233445`__^^]]\yzz{{||}12233445/..--,,+__^^]]\\zz{{||}}22334455__^^]]\\zz{{||}}22334455 _^^]]\\[z{{||}}~23344556_^^]]\\[z{{||}}~23344556 - - 55667788MMLLKKJJeeddccbb}~~56677889\[[ZZYYX}~~56677889+**))(('[[ZZYYXX~~66778899[[ZZYYXX~~66778899[ZZYYXXW~6778899:[ZZYYXXW~6778899: 99::;;<< IIHHGGFFaa``__^^9::;;<<= XWWVVUUT9::;;<<= '&&%%WWVVUUTT::;;<<== WWVVUUTT::;;<<== WVVUUTTS:;;<<==> WVVUUTTS:;;<<==>%%&&'==>>??@@ - - EEDDCCBB]]\\[[ZZ=>>??@@A - - TSSRRQQP=>>??@@A - - SSRRQQPP>>??@@AA - - SSRRQQPP>>??@@AA - - SRRQQPPO>??@@AAB - - SRRQQPPO>??@@AAB'(())**+AABBCCDDAA@@??99YYXWVUTSABBCCDDEPOONNMMLABBCCDDEOONNMMLLBBCCDDEEOONNMMLLBBCCDDEE ONNMMLLKBCCDDEEFONNMMLLKBCCDDEEF+,,--../EEFFGGHH88776655SRRQQPPOEFFGGHHILKKJJIIHEFFGGHHIKKJJIIHHFFGGHHIIKKJJIIHHFFGGHHII%%&&''KJJIIHHGFGGHHIIJKJJIIHHGFGGHHIIJ/0011223 IIJJKKLL44332211ONNMMLLKIJJKKLLMHGGFFEEDIJJKKLLM GGFFEEDDJJKKLLMMGGFFEEDDJJKKLLMM(())**++GFFEEDDCJKKLLMMNGFFEEDDCJKKLLMMN34455667 !!""##$MMNNOOPP00//..--KJJIIHHGMNNOOPPQ DCCBBAA@MNNOOPPQ - -  -CCBBAA@@NNOOPPQQ CCBBAA@@NNOOPPQQ,,--..// -CBBAA@@?NOOPPQQR -CBBAA@@?NOOPPQQR78899??@$%%&&''(QQRRSSTT - - ,,++**))GFFEEDDCQRRSSTTU - - @??>>==>==<>==<>==<<;RSSTTUUV - ?>>==<<;RSSTTUUV@AABBCCD())**++,UUVVWWXX ((''&&%%CBBAA@@?UVVWWXXY <;;::998UVVWWXXY;;::9988VVWWXXYY;;::9988VVWWXXYY44556677;::99887VWWXXYYZ;::99887VWWXXYYZDEEFFGGH,--..//0YYZZ[[\\?>=<;:99~~}}|YZZ[[\\]87766554~~}}|YZZ[[\\] 77665544~~}}||ZZ[[\\]]77665544~~}}||ZZ[[\\]]8899??@@76655443~~}}||{Z[[\\]]^76655443~~}}||{Z[[\\]]^HIIJJKKL01122334]]^^__``88776655|{{zzyyx]^^__``a43322110|{{zzyyx]^^__``a - - 33221100{{zzyyxx^^__``aa33221100{{zzyyxx^^__``aaAABBCCDD3221100/{zzyyxxw^__``aab3221100/{zzyyxxw^__``aabLMMNNOOP45566778aabbccdd44332211xwwvvuutabbccdde0//..--,xwwvvuutabbccdde%%& //..--,,wwvvuuttbbccddee//..--,,wwvvuuttbbccddeeEEFFGGHH/..--,,+wvvuuttsbccddeef/..--,,+wvvuuttsbccddeefPQQRRSSY899::;;>??@iijjkkll!!""##$$ ,,++**))poonnmmlijjkkllm!""##$$%(''&&%%$poonnmmlijjkkllm*++,,--.''&&%%$$oonnmmlljjkkllmm""##$$%%''&&%%$$oonnmmlljjkkllmmMMNNOOPP"##$$%%&'&&%%$$#onnmmllkjkkllmmn"##$$%%&'&&%%$$#onnmmllkjkkllmmn]^^__``a@AABBCCDmmnnoopp%%&&''(( - - ((''&&%%lkkjjiihmnnooppq%&&''(()$##""!! lkkjjiihmnnooppq.//00112##""!! kkjjiihhnnooppqq&&''(())##""!! kkjjiihhnnooppqqQQRRSSYY&''(())*#""!! kjjiihhgnooppqqr&''(())*#""!! kjjiihhgnooppqqrabbccddeDEEFFGGHqqrrsstt))**++,,$#"! hggffeedqrrssttu)**++,,- hggffeedqrrssttu23344556 !"ggffeeddrrssttuu**++,,--ggffeeddrrssttuuZZ[[\\]]*++,,--.gffeeddcrssttuuv*++,,--.gffeeddcrssttuuveffgghhiHIIJJKKLuuvvwwxx--..//00 dccbbaa`uvvwwxxy-..//001dccbbaa`uvvwwxxy6778899?#$%%&&''ccbbaa``vvwwxxyy..//0011ccbbaa``vvwwxxyy^^__``aa.//00112cbbaa``_vwwxxyyz.//00112cbbaa``_vwwxxyyzijjkkllmLMMNNOOPyyzz{{||11223344 - - `__^^]]\yzz{{||}12233445`__^^]]\yzz{{||}?@@AABBC(())**++__^^]]\\zz{{||}}22334455__^^]]\\zz{{||}}bbccddee23344556_^^]]\\[z{{||}}~23344556_^^]]\\[z{{||}}~mssttuuvPQQRRSST}}~~55667788\[[ZZYYX}~~56677889\[[ZZYYX}~~CDDEEFFG,,--..//[[ZZYYXX~~66778899[[ZZYYXX~~ffgghhii6778899:[ZZYYXXW~6778899:[ZZYYXXW~vwwxxyyzTUUVVWWX99::;;<<XWWVVUUT9::;;<<= XWWVVUUTGHHIIJJK00112233 WWVVUUTT::;;<<== WWVVUUTTjjkkllmm:;;<<==> WVVUUTTS:;;<<==> WVVUUTTSz{{||}}~XYYZZ[[\==>>??@@ -TSSRRQQP=>>??@@A - - TSSRRQQPKLLMMNNO44556677 - - SSRRQQPP>>??@@AA - - SSRRQQPPssttuuvv>??@@AAB - - SRRQQPPO>??@@AAB - - SRRQQPPO~\]]^^__`AABBCCDD - POONNMMLABBCCDDEPOONNMMLOPPQQRRS8899:;<=OONNMMLLBBCCDDEEOONNMMLLwwxxyyzzBCCDDEEFONNMMLLKBCCDDEEFONNMMLLK`aabbccdEEFFGGHH%%&&LKKJJIIHEFFGGHHILKKJJIIHSYYZZ[[\>??@@AABKKJJIIHHFFGGHHIIKKJJIIHH{{||}}~~FGGHHIIJKJJIIHHGFGGHHIIJKJJIIHHGdeeffgghIIJJKKLL''(())**HGGFFEEDIJJKKLLMHGGFFEED\]]^^__`BCCDDEEFGGFFEEDDJJKKLLMMGGFFEEDDJKKLLMMNGFFEEDDCJKKLLMMNGFFEEDDC~~}hiijjkklMMNNOOPP++,,--.. DCCBBAA@MNNOOPPQ DCCBBAA@`aabbccdFGGHHIIJ CCBBAA@@NNOOPPQQ CCBBAA@@NOOPPQQR -CBBAA@@?NOOPPQQR -CBBAA@@?}||{{zzylmmnnoopQQRRSSTT//001122 - - @??>>==>==>==<>==<<RSSTTUUV - ?>>==<<;RSSTTUUV - ?>>==<<;~~}}||{yxxwwvvupqqrrsstUUVVWWXX33445566 <;;::998UVVWWXXY <;;::998hiijjkklNOOPPQQR;;::9988VVWWXXYY;;::9988~~}}||{{VWWXXYYZ;::99887VWWXXYYZ;::99887{zzyyxxwuttssrrqtuuvvwwx~~}}YYZZ[[\\778899??87766554~~}}|YZZ[[\\]87766554~~}}|lmmssttuRSSTUVWX77665544~~}}||ZZ[[\\]]77665544zzyyxxwwZ[[\\]]^76655443~~}}||{Z[[\\]]^76655443wvvuuttsqppoonnmxyyzz{{|||{{zzyy]]^^__``@@AABBCC43322110|{{zzyyx]^^__``a43322110|{{zzyyxuvvwwxxyYYZZ[[\\33221100{{zzyyxx^^__``aa33221100vvuuttss^__``aab3221100/{zzyyxxw^__``aab3221100/smmllkkjmllkkjji|}}~~xxwwvvuuaabbccddDDEEFFGG0//..--,xwwvvuutabbccdde0//..--,xwwvvuutyzz{{||}]]^^__``//..--,,wwvvuuttbbccddee//..--,,mmllkkjjbccddeef/..--,,+wvvuuttsbccddeef/..--,,+jiihhggfihhggffebdQZ|H~f|ZdQZp˂AJltے`JX|ZdQZp˂AJltے`JX|ZdQےbHA`vXnے`JXQfpvdrtA`vXnbtlrXQJ`ۉbdQZ|Qr˂pbtlrXQJ`ۉbdQZ|Qr˂pbtl|Zp˂vpfr˂pnXv`JltvpfJtArdbHAdrtZHAbJtArdbHAdrtZHAbZdQbrXQJH~fZHAbf~HbdQZ|H~f|ZdQZp˂AJltے`JX|ZdQZp˂AJltے`JXnXv`pbHAZp`vXnے`JXQfpvdrtA`vXntArdrXQJ`ۉbdQZ|Qr˂pbtlrXQJ`ۉbdQZ|Qr˂pvnXrXQvpfr˂pnXv`Jltvpf|ZdQbbHAdrtZHAbJtArdbHAdrtZHAbv`fJ`ےH~fZHAbf~HbdQZ|H~ftlJZp˂AJltے`JX|ZdQZp˂AJltے`JX~HfpbHAZp`vXnے`JXQfpvdrtA`vXntArdrXQJ`ۉbdQZ|Qr˂pbtlrXQJ`ۉbdQZ|Qr˂pvnXrXQvpfr˂pnXv`Jltvpf|ZdQbbHAdtAZHAbJtArdbHAdtAZHAbv`fJ`bAZH~fZHAےf~HbdQZ|H~ftd|Zp˂Jltے`JX|ZdQZp˂Jltے`JXnXp˂r`vXn`JXQrfpvdrtA`vXnZdQbtrXQJ`bnvpQr˂pbnXv`rXQJ`bnvpQr˂pv`fbdQZ|vpfbtlnXv`JltvpflJtAbHAfHˑZHAbf~HbHAfHˑZHAb~HfpdrtAH~fJtAdf~HbdQZ|H~frd|Zp˂f`vXے`JXfpvZp˂f`vXے`JXvnXJlt`vXn|ZdQbfpvdrtA`vXnZdQbtrXQJ`nvpQr˂pnXv`rXQJ`nvpQr˂pv`fbdQZ|vpftlJnXv`Jltr˂pl|ZbHAfH~ˑZHAbf~HbHAfH~ˑZHAb~HXv`drtAH~ftArdf~HbdQZ|`JXQrdQbnXZp˂f`vXے`JXfpvZp˂f`vXے`JXf~HJlt`vXn|ZdQbfpvdrtA˂pZv`f~rXQJ`nvpQr˂pnXv`rXQJ`nvpQr˂pfpvbdQZ|vpftlJnXv`JltHAbےfpv㒐bHAfH~ˑZHAbf~HbHAfH~ˑZHAbnXv`drtAH~ftArdf~HbdQZ|`JXQrnXv`Zp˂f`vXے`JXfpvZp˂f`vXے`JXf~HJlt`vXn|ZdQbfpvdrtA˂pZf~HrXQJ`nvpQr˂pnXv`rXQJ`nvpQr˂pfp`bdQZ|vpftlJnXv`p˂rJltHAXQrfpv㒐bHAfH~ˑZHAbf~HbHAfH~ˑZHAbf~HdrtAH~ftArdf~HXQJ`ےbdQZ|˂pZHAnXv`Zp˂f`vXے`JXfpvZp˂f`vXے`JXfpvJlt`vXn|ZdQbfpvbHAZdrtAbے`f~fvrXQJ`nvpQr˂pnXv`rXQJ`nvpQr˂pnXv`bdQZ|vpftlJnXv`p˂rJltJXQrnXvbHAfH~ˑZHAbf~HbHAfH~ˑZHAbf~HdrtAH~ftArdf~HXQJ`ےbdQZ|˂pZHA`f~Zp˂f`vXے`JXfpvZp˂f`vXے`JXfpvJlt`vXn|ZdQbfpvbHAZdrtAb˂HfpvrXQJ`nvpQr˂pnXv`rXQJ`nvpQr˂p~HfpbdQZ|vpftlJnXv`p˂rJltpZHAbnXvbHAfH~ˑZHAۍf~HbHAfH~ˑZHA۝vnXdrtAH~ftArdfHfXQJ`ےbdQZ|ے`J`f~Zp˂f`vX`JXQfpvZp˂f`vX`JXQv`fJlt`vXn|ZdQbpvnbHAZdrtAXQr˂HfvnXrbdQZ|nvprbtlnXv`rbdQZ|nvprbtl~HfpbdQZ|r˂ptlJrXQJ`p˂rJltpZHAbv`fdrtfH~ˑJtAdf~HdrtfH~ˑ|ZdQvnXdrtAZHAbtArdےHAZbdQZ|bdQZ|ے`p~HfpAJltf`vX|ZdQfpvAJltf`vXbtlv`pJltے`JXQ|ZdQbp˂rdrtAdrtAZHAbvnXbdQZ|nvpbtlnXv`bdQZ|nvpJtArdvnrXbdQZ|r˂ptlJXQJ`ےJltJltے`JXQv`fdrtfH~JtArdf~HdrtfH~˂|ZdQQJ`AdrtAZHAbtArdbHAZbdQZ|bdQZ|r˂p~HfpAJltf`vX|ZdQfpvAJltf`vXbtlZp˂Jltے`JXQ|ZdQbp˂rdrtA`vXnZHAbvnv`bdQZ|nvpbtlnXv`bdQZ|nvpJtArdtrXQJ`bdQZ|r˂ptlJXQJ`ےJltvpfے`JXQf~HdrtfH~JtArdf~HdrtfH~ˉlJtbHAdrtAZHAbtArdbHAZbdQZ|H~fHAbےfpvAJltf`vX|ZdQfpvAJltf`vXArd|Zp˂Jltے`JXQ|ZdQbp˂rdrtA`vXn`JXQrnXv`bdQZ|nvpbtlnXv`bdQZ|nvpZdQbtrXQJ`bdQZ|r˂ptlJXQJ`ےJltvpf˂pZf~HdrtfH~JtArdf~HdrtfH~ˉlJtbHAZdrtAZHAbtArdbHAZbdQZ|H~fHAbےfpvAJltf`vX|ZdQfpvAJltf`vXArd|rXQJJltے`JXQ|ZdQbp˂rdrtA`vXn`JXQrnvfbdQZ|nvpbtlnXv`bdQZ|nvplJtA`ےbbdQZ|r˂ptlJXQJ`ےJltvpf˂p|~HfpہdrtfH~JtArdf~HdrtfH~rd|HAZp˂drtAZHAbtArdbHAZbdQZ|H~fZdQbtvnXAJltf`vX|ZdQfpvAJltf`vXZdQbt瀉rXQJJltے`JXQ|ZdQbp˂rdrtA`vXnlJtAv`fbdQZ|nvpbtlnXv`bdQZ|nvplJtA`ےbbdQZ|r˂ptlJXQJ`ےJltvpfrd|~HfpہdrtfH~JtArdfHdrtfH~rd|HAZpdtAJZHAbtArdbHAZbdQZ|H~fZdQbtvnXAJltf`vX|ZdQfpvAJltf`vXZdQtArdrQJ`ےltbے`JXQ|ZdQbp˂rdrtA`vXnlJtAv`frbdQZ|nr˂pbtlnrXQJ`bdQZ|nr˂p|ZdbHAZpnvpr˂pnXv`XQJ`ےJltvpfrdtQJHAdrtZHAbJtArdےHAdrtZHAbQbtl˂rXfHfZHAbf~HbHAZbdQZ|H~flJtArZp˂AJltے`JX|ZdQZp˂AJltے`JXJtArdQJ`ے`vXnے`JXQfpvp˂rdrtA`vXnd|ZrXQJ`ۉbdQZ|Qr˂pbtlrXQJ`ۉbdQZ|Qr˂p|ZdbHAZpvpfr˂pnXv`XQJ`ےJltvpfdQbt璒bHAdrtZHAbJtArdbHAdrtZHAbQbtd˂rQJH~fZHAbf~HbHAZbdQZ|H~flJtArZp˂AJltے`JX|ZdQZp˂AJltے`JX|ZdQbHA`vXnے`JXQfpvp˂rdrtA`vXnd|lrXQJ`ۉbdQZ|Qr˂pbtlrXQJ`ۉbdQZ|Qr˂pbtlZp˂vpfr˂pnXv`XQJ`ےJltvpfJtArdbHAdrtZHAbJtArdbHAdrtZHAbJtArdrXQJ`H~fZHAbf~HbHAZbdQZ|drtAZHAbtArdrXQJ`~f`ZHAbf~HbHAZp~f`ZHAbf~HbHAZpvpfrd|~HfdrtAJ~f`rd|~Hf|drAbے`rd|bHAZp˙rtAJlAbے`rd|bHAZp˙rtAJlbے`f۝`vJltے`JXQ|ZdQbےbHAvXn`JXQfpv˂rXvXn`JXQfpv˂rXH~fZdQbtpvnltbvXnZdQbtpvntAJl璁JXQrZdQbt炀rXQtbdJXQrZdQbt炀rXQtbdJXQrXnvˍbdQZ|r˂ptlJZp˂vpfHr˂pnXv`QJ`ےvpfHr˂pnXv`QJ`p`vXnlJtAXv`fdQZ|vpfHlJtAXv`ftbdQZ˂pZHlJtAJ`ےQZ|d˂pZHlJtAJ`ےQZ|dpZHApfH~drtAZHAbtArdbHAZ~f`ZHAbf~HbHAZp~f`ZHAbf~Hrbdvf~rd|~HfdrtAJ~f`rd|~Hf|drAbJXQrd|bHAZp˙rtAJlAbے`rd|bHAZp˙rtAJlb˂pf۝`vJltے`JXQ|ZdQbp˂rvXn`JXQfpv˂rXvXn`JXQfpvQZ|lf`vXZdQbtpvnltbvXnZdQbtpvntAdQZ|r˂pZdQbt炀rXQtbdJXQrZdQbt炀rXQtbdZHAbXnvˍbdQZ|r˂ptlJXQJ`ےvpfHr˂pnXv`QJ`ےvpfHr˂pnXv`˒tbdQnvplJtAXv`fdQZ|vpfHlJtAXv`fdrtAZHAblJtAJ`ےQZ|d˂pZHlJtAJ`ےQZ|dے`JXpfH~drtAZHAbtArdbHAZ~f`ZHAbf~HbHAZp~f`ZHAbf~HZ|dfH~rd|~HfdrtAJ~f`rd|~HfJltے`JXQrd|bHAZp˙rtAJlAbے`rd|bHAZp˙rtAJlQr˂pf۝`vJltے`JXQ|ZdQbp˂rvXn`JXQfpv˂rXvXn`JXQfpvrtAJlf`vXZdQbtpvnltbvXnZdQbtpvnbdQZ|r˂pZdQbt炀rXQtbdJXQrZdQbt炀rXQtbdZHAbXnvˍbdQZ|r˂ptlJXQHAZpvpfHr˂pnXv`QJ`ےvpfHr˂pnXv`˒tbdQnvplJtAXv`fdQZ|vpfHlJtAXv`fdrtAZHAblJtAJ`ےQZ|d˂pZHlJtAJ`ےQZ|dے`ppfH~dtAJZHAbtArd˂rXQ~f`ZHAے`f~HbHAZp~f`ZHAے`f~HZ|dtf~f`rd|HfpdrtAJ~f`rd|HfpJl|JQrrd|bHAZp˙tAJlAbے`rd|bHAZp˙tAJlZHAbېf۝`vltbے`JXQ|ZdQbJ`ےvXnJXQrfpv˂rvXnJXQrfpvbdQZ|vXnrZdQbtvnrltbvXnrZdQbtvnrdrtAJpZHAZdQbnXrXQtbnJXQrZdQbnXrXQtbn`JXQXnvˍnvpr˂pnXv`bHAZpvpfHbtlnXv`bdQZ|vpfHbtlnXv`ˁdrt˂pZlJtAXQJ`ےdQZ|˂pZlJtAXQJ`ےltbbے`v`fJ`ےvpfH˂pZHv`fJ`ےvpfHr˂ppfH~fHfZHAbpvn˂rXQ~f`JtAd|f~HdrtA~f`JtAd|f~HAJltHAbےrd|HAZpdrtAJHAbےrd|HAZpdQZ|JXQr˕~HfpbHAZp˅f`Abے`~HfpbHAZp˅f`ZHAbېf۝`v`vXnے`JXQXv`fJ`p˂vXnZdQbtfpvJltvXnZdQbtfpvbdQZ|`JXQrZdQbt˂rXQltb`JXQrZdQbt˂rXQdrtAJpZHAvnXrXQvXnہJXQrvnXrXQvXnے`JXQHXnvˍvpfr˂p~HfrbdQvpfHlJtnXv`bdQZ|vpfHlJtnXv`ˁdrt˂pZlJtAJ`ےdQZ|˂pZlJtAJ`ےltdbے`Jv`fJ`ےvpfH˂pZHv`fJ`ےvpfHAbے`pfH~H~fZHAbpvnZ|rA~f`Ard|f~HdrtA~f`Ard|f~HAdQZ|HAbےrd|bHAZpdrtAJHAbےrd|bHAZprtAJlQrpZ~HfpbHAZp~f`Abے`~HfpbHAZp~f`JXQrf۝`v`vXnے`JXQXv`fJltvXnZdQbtfpvJltvXnZdQbtfpvdrtA`JXQrZdQbt˂rXQltb`JXQrZdQbt˂rXQtbdQHAbےvnXrXQvXnہJXQrvnXrXQvXnۉ˂pZHXnvˍvpfr˂pnXbdQZ|vpfHlJtnXv`bdQZ|vpfHlJtnXv`Jlt˂pZlJtAJ`ےdQZ|˂pZlJtAJ`ےZ|d`JXQrv`fJ`ےvpfH˂pZHv`fJ`ےvpfHAbے`pfH~H~fZHAbv`fdrtA~f`Ard|f~HdrtA~f`Ard|f~HbdQZ|HAbےrd|bHAZpdrtAJHAbےrd|bHAZprtAJl˂pZ~HfpbHAZp~f`Abے`~HfpbHAZp~f`JXQrf۝`v`vXnے`JXQ~HfpJltvXnZdQbtfpvJltvXnZdQbtfpvdrtA`JXQrZdQbt˂rXQltb`JXQrZdQbt˂rXQtbdQHAbےvnXrXQvXnہJXQrvnXrXQvXnۉ˂p`ZXnvˍvpfr˂pvnXbdQZ|vpfHlJtnXv`bdQZ|vpfHlJtnXv`Jl|d˂pZlJtAJ`ےdQZ|˂pZlJtAJ`ےZ|l`JXQrv`fJ`ےvpfH˂pZHv`fJ`ےvpfHQXb㉀pfH~H~fZHAbv`fdrAJ~f`Ard|f~HdrtA~f`Ard|f~HrtAJlHAbےrd|bHAZpdrtAJHAbےrd|bHAZptbnZHAb~HfpbHAZp~f`Abے`~HfpbHAZp~f`ۑpJAHrf۝`v`vXnے`JXQ~HXvtbdQZvXnZdQbtfpvJltvXnZdQbtfpvtbd`JXQrZdQbt˂rXQltb`JXQrZdQbt˂rXQvp`vے`JXvnXrXQvXnہJXQrvnXrXQvXn󙐂ˁ`ZXnvˍvpfr˂p`f~|drvpfHlJtnXv`bdQZ|vpfHlJtnXv`QZ|d˂pZlJtAJ`ےdQZ|˂pZlJtAJ`ےXnvQr˂pv`fJ`ےvpfH˂pZHv`fJ`ےvpfHQXb㉀p|drH~fZHAbHfpvtAJl璅~f`Ard|f~HdrtA~f`Ard|f~HrtAJlHAbےrd|bHAZpdrtAJHAbےrd|bHAZppfH~ZHAb~HfpbHAZp~f`Abے`~HfpbHAZp~f`ۑpJAHrQtJl`vXnے`JXQnXvtbdQZvXnZdQbtfpvJltvXnZdQbtfpvtd`JXQrZdQbt˂rXQltb`JXQrZdQbt˂rXQf`vے`JXvnXrXQvXnہJXQrvnXrXQvXn󙐉ۑtbAdZvpfr˂p`f~|drvpfHlJtnXv`bdQZ|vpfHlJtnXv`rtAJl瀉˂pZlJtAJ`ےdQZ|˂pZlJtAJ`ےXnvQr˂pv`fJ`ےvpfH˂pZHv`fJ`ےvpfHpJAHr|drH~fZHAےHfp`tAJbd~f`Ard|fHfpdrtA~f`Ard|fHfptbdQHAbےrd|bHAZpdtAJlHAbےrd|bHAZppfH~ZA`~HfpbHAZp~f`Aے`~HfpbHAZp~f`ˁ`ZQQtJl`vXn`JXQrf~HQZ|dvXnZdQbtvnJltvXnZdQbtvnZ|d`JXQrZdQbn˂rXQtbn`JXQrZdQbn˂rXQvpJXQrbtvnXrbdvXnJXQrbtvnXrbdvXnXb㉀ۑtbAdZvpfbtlfpvrtAJlr˂plJtrXQJ`bdQZ|r˂plJtrXQJ`prtAJl瀉˂pZXv`fJ`ےvpf˂pZXv`fJ`ےfH~lJtv`fQZ|dvpfHlJtv`fQZ|dvpfHpJAHr|drH~fJtAdnXv`tbdZHAbArd|HAZpdrtAZHAbArd|˂rXtbdQHAbے~HfbHAZpHf`HAbے~HfbHAZpf`vXAd|~HfprtAJl~f`Ad|~HfprtAJl~f`ˁ`pJQtJl`vXn|ZdQbf~HQZ|d`JXQZdQbt˂rXJlt`JXQZdQbtQJ`ےZ|lt`JXQrpvn˂rXQvXn`JXQrpvn˂rXQnvpZdQbtvnXtbdvXnZdQbtvnXtbdvXnAHr󙐂tbAdZvpftlJfpvrtAJlr˂plJtQJ`ےbdQZ|r˂plJtbHAZpbnۀ˂pZXv`fJ`ےvpfH˂pZXv`fJ`ےfH~lJtAv`fQZ|dvpfHlJtAv`fQZ|dvpfHˁ`ZQXb|drH~ftArd~HfbQZ|ZHAbArd|bHAZpdrtAZHAbArd|˂rXvpff`HAbے~HfbHAZp~f`HAbے~HfbHAZpf`pfrd|~HfprtAJl~f`rd|~HfprtAJl~f`㉀ۑpJQtJl`vXn|ZdQbpvndrtA`JXQZdQbt˂rXJlt`JXQZdQbtQJ`ےvXn`JXQrpvn˂rXQvXn`JXQrpvn˂rXQH~fZdQbtvnXtbdvXnZdQbtvnXtbdvXnAHr󙐂tbAdZvpftlJXv`fJltr˂plJtQJ`ےbdQZ|r˂plJtbHAXQvpfH˂pZXv`fJ`ےvpfH˂pZXv`fJ`ے`vXnlJtAv`fQZ|dvpfHlJtAv`fQZ|dvpfHˁ`ZQXA|drH~ftArd~HfbdQZ|ZHAbArd|bHAZpdrtAZHAbArd|J`ے~f`HAbے~HfbHAZp~f`HAbے~HfbHAZpvpfrd|~HfprtAJl~f`rd|~HfprtAJl~f`Hr󙐂ˁQtJl`vXn|ZdQbpvndrtA`JXQZdQbt˂rXJlt`JXQZdQbtbHAZpˍvXn`JXQrpvn˂rXQvXn`JXQrpvn˂rXQH~fZdQbtvnXtbdvXnZdQbtvnXtbdvXn`ZQXbtbAdZvpftlJXv`pJltr˂plJtQJ`ےbdQZ|r˂plJtrXQvpfH˂pZXv`fJ`ےvpfH˂pZXv`fJ`ے`vXHlJtAv`fQZ|dvpfHlJtAv`fQZ|dvpfHۑpJA|drH~ftArdvnrbQZdZHAbArd|bHAZpdrtAZHAbArd|J`ے~fvHAbے~HfbHAZp~f`HAbے~HfbHAZp~f`rd|~HfprtAJl~f`rd|~HfprtAJl~f`Hr󙐂ˁQtJl`vXn|ZdQbXQJ`prtAJl`JXQZdQbt˂rXJlt`JXQZdQbtbHAZp`nvp`JXQrpvn˂rXQvXn`JXQrpvn˂rXQvXnZdQbtvnXtbdvXnZdQbtvnXtbdvXn`ZQXbtbAdZvpftlJ˂rXQtbdQr˂plJtQJ`ےbdQZ|r˂plJtےbHfH~˂pZXv`fJ`ےvpfH˂pZXv`fJ`ےvpfHlJtAv`fQZ|dvpfHlJtAv`fQZ|dvpfH󀙐ˁ`Z|drH~ftArdJ`ےZ|dZHAbArd|bHAZpdrtAZHAbArd|AZp˂f`vXHAbے~HfbHAZp~f`HAbے~HfbHAZp~f`rd|~HfprtAJl~f`rd|~HfprtAJl~f`QXb㉀QtJl`vXn|ZdQbbHAZprtAJl`JXQZdQbt˂rXJlt`JXQZdQbtrXQJ`nvp`JXQrpvn˂rXQvXn`JXQrpvn˂rXQvXnZdQbtvnXtbdvXnZdQbtvnXtbdvXnۑpJAHrtbAdZvpftlJ˂rXQtbdQr˂plJtQJ`ےbdQZ|r˂plJtےbHfH~˂pZXv`fJ`ےvpfH˂pZXv`fJ`ےf`vlJtAv`fQZ|dvpfHlJtAv`fQZ|dvpfH󙐂ˁ`Z|drH~ftArdJ`ےZ|AJlZHAbArd|bHAZpdtAJlZHAbArd|AZp˂f`vnHAے`~HfbHAZp~f`HAے`~HfbHAZpXnvrd|HfpۙrtAJl~f`rd|HfpۙrtAJl~f`QXb㉀QtJl`vXn|ZdQbbHAXQJtb`JXQZdQb˂rXtb`JXQZdQb㉐bHAvpfHJXQrbpvn˂rbvXnJXQrbpvn˂rbpfH~ZdQbtvnrXtbdvXnrZdQbtvnrXtbdvXnے`XnvˍtbAdZr˂ptlJ`ےbnvpr˂pnXv`QJ`ےnvpr˂pnXv`Zp˂~f`tlJXv`fdQZ|vpfHtlJXv`fdQZ|lf`vlJtAQJ`ےQZ|d˂pZHlJtAQJ`ےQZ|dJXQrpfH~|drZHAbtArdHAZp˂fHf`ZHAbf~HbHAZpfHf`ZHAbf~HrXQJ`vXntAd|~HfdrtAJ~f`tAd|~HftbdQXnvrd|HAZp˙rtAJlAbے`rd|HAZp˙rtAJl˂pZHf۝`vQtJlے`JXQ|ZdQbrXQJvXn`JXQfpv˂rXvXn`JXQfpv㒐bHAvpfHZdQbtpvnltbvXnZdQbtpvnZ|dp`vXZdQbt炀rXQtbdJXQrZdQbt炀rXQtbdAbے`XnvˍtbAdZr˂ptlJ`ےbvpfHr˂pnXv`QJ`ےvpfHr˂pnXv`Zp˂~f`lJtAXv`fdQZ|vpfHlJtAXv`frtAJlnr˂lJtAJ`ےQZ|d˂pZHlJtAJ`ےQZ|dJXQrpfH~|drZHAbtArdHAZp`~f`ZHAbf~HbHAZp~f`ZHAbf~HrXQHAZpvXnvfrd|~HfdrtAJ~f`rd|~HftbdQpZAb`rd|bHAZp˙rtAJlAbے`rd|bHAZp˙rtAJl˂pZHf۝`vQtJlے`JXQ|ZdQbےbHAvXn`JXQfpv˂rXvXn`JXQfpv˂rXH~fZdQbtpvnltbvXnZdQbtpvnZ|dJXQrZdQbt炀rXQtbdJXQrZdQbt炀rXQtbdAXQrXnvˍtbAdZr˂ptlJZp˂vpfHr˂pnXv`QJ`ےvpfHr˂pnXv`QJ`ے`vXnlJtAXv`fdQZ|vpfHlJtAXv`ftbdQZ˂pZHlJtAJ`ےQZ|d˂pZHlJtAJ`ےQZ|dpZHApfH~|drQt-------------------................................... \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv32_3.dat b/mpdf/qrcode/data/qrv32_3.dat deleted file mode 100644 index 5487dd4..0000000 --- a/mpdf/qrcode/data/qrv32_3.dat +++ /dev/null @@ -1,289 +0,0 @@ -}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvststststqrqrqrqrmmmnmnmnlklklklkjijijijifefefefedcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWSTSTSTST}~}~}~}~{|{|{|{|yxwxwxwxuvuvuvuvststststqrqrqrqrmnmnmnmnlklklklkhghghghgfefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWSTSTSTST}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvststststqrqrqrqpmnmnmnmnlklklklkhghghghgfefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWVUSTSTSTST}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvststststopopopopmnmnmnmnlklklklkhghghghgfefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUSTSTSTST}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvststststopopopopmnmnmnmnlklklklkhghghghgfefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUSTSTSTST}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvststststopopopopmnmnmmmmlklklklkhghghghgfefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUSSSSSSTS}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvststststopopopopmmnmnmnmlklklklkhghghghgfefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTS}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvststststopopopopnmnmnmnmlklklklkhghghghgfefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTS}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvststststopopopopnmnmnmnmlklklklkhghghghgfefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTS}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvststststopopopopnmnmnmnmlklklklkhghghghgfefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTS}~}~}~}~{zyzyzyzwxwxwxwxuvuvuvuvststststopopopopnmnmnmnmjijijijihghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSQRQRQRQR}~}~}~}~yzyzyzyzwxwxwxwxuvuvuvuvststststopopopopnmnmmmmmjijijijihghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUSSSSSTSTQRQRQRQR}~}~}~}~yzyzyzyzwxwxwxwxuvuvuvuvststststopopopopmnmnmnmnjijijijihghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUSTSTSTSTQRQRQRQR}~}~}~}~yzyzyzyzwxwxwxwxuvuvuvuvststststopopopopmnmnmnmnjijijijihghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUSTSTSTSTQRQRQRQR}~}~}~}~yzyzyzyzwxwxwxwxuvuvuvuvststststopopopopmnmnmnmnjijijijihghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUSTSTSTSTQRQRQRQR}~}~}~}~yzyzyzyzwxwxwxwxuvuvuvuvststststopopopopmnmnmnmnjijijijihghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUSTSTSTSTQRQRQRQR}~}~}~}~yzyzyzyzwxwxwxwxuvuvuvuvststststopopopopmnmnmnmnjijijijihghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUSTSTSTSTQRQRQRQR}~}~}~}~yzyzyzyzwxwxwxwxuvuvuvuvststststopopopopmnmmmmmmjijijijihghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUSTSSSSSTQRQRQRQR}~}~}~}~yzyzyzyzwxwxwxwxuvuvuvuvststststopopopopnmnmnmnmjijijijihghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUSTSTSTSRQRQRQRQR}|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvsrqrqrqropopopoplklklklkjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUQRQRQRQRQRQRQRQP{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqropopopoplklklklkjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUQRQRQRQROPOPOPOP{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqropopopoplklklklkjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUQRQRQRQROPOPOPOP{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqropopopoplklklklkjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUQRQRQRQROPOPOPOP{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqropopopoplklklklkjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUQRQRQRQROPOPOPOP{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqropopopoplklklklkjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUQRQRQRQROPOPOPOP{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqropopopoplklklklkjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUQRQRQRQROPOPOPOP{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqropopopoplklklklkjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUQRQRQRQROPOPOPOP{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqropopopoplklklklkjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUQRQRQRQROPOPOPOP~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxutstststqrqrqrqropopopoplklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVUQRQRQRQROPOPOPOP}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxststststqrqrqrqropopopoplklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVUQRQRQRQROPOPOPOP}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxststststqrqrqrqropopopoplklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVUQRQRQRQROPOPOPOP}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxststststqrqrqrqropoponmnlklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUTSTSQRQRQRQROPOPOPOP}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxststststqrqrqrqrmnmnmmmmlklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWTSTSSSSSQRQRQRQROPOPOPOP}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxststststqrqrqrqrmnmnmnmnlklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWSTSTSTSTQRQRQRQROPOPOPOP}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxststststqrqrqrqrmnmnmnmnlklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWSTSTSTSTQRQRQRQROPOPOPOP}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxststststqrqrqrqrmnmnmnmnlklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWSTSTSTSTQRQRQRQROPOPOPOP}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxststststqrqrqrqrmnmnmnmnlklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWSTSTSTSTQRQRQRQROPOPOPOP}~}~}~}~{|{|{|{|yzyzyzyzwvuvuvuvststststqrqrqrqrmnmnmnmnlklklklkjijijijifefefefedcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWSTSTSTSTQRQRQRQROPOPOPOP}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvststststqrqrqrqrmnmnmnmmlklklklkjijijijifefefefedcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWSTSSSSSSQRQRQRQROPOPOPOP}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvststststqrqrqrqrmmmmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSQRQRQRQROPOPOPOP}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvststststqrqrqrqrnmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSQRQRQRQROPOPOPOP}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvststststqrqrqrqrnmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSQRQRQRQROPOPOPOP}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvststststqrqrqrqrnmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSQRQRQRQROPOPOPOP}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvststststqrqrqrqrnmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSQRQRQRQROPOPOPOP}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvststststqrqrqrqrnmnmnmmmlklklklkjijijijifefefefedcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWTSSSSSSTQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>9:9:9:9:8787878765656565434343430/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#     - - - -OPOPOPOPMNMNMNMLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCB?@?@?@?@=>=>=>=>9:9:9:9:8787878765656565434343210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)('&%&%&%&%$#$#$#$#      - - - -OPOPOPOPKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>9:9:9:9:8787878765656565212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#         - - - -OPOPOPOPKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>9:9:99998787878765656565212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#      - - - -OPOPOPOPKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>99:9:9:98787878765656565212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#         - - - -OPOPOPOPKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#         - - - -OPOPOPOPKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#         - - - -OPOPOPOPKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#         - - - -OPOPOPOPKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#         - - - -OPOPOPOPKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>:9:999998787878765656565212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#       - - - -OPOPOPONKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEDABABABAB?@?@?@?@=>=>=>=>9:9:9:9:8787878765656543212121210/0/0/0/.-.-.-.-,+,+,+*)('('('('&%&%&%&%$#$#$#$#         - - - -MNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@=>=>=>=>9:9:9:9:8787878743434343212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%$#$#$#$#         - - - -MNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@=>=>=<;<9:9:9:9:8787878743434343212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%$#$#"!"!         - - - -MNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:8787878743434343212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!         - - - -MNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:8787878743434343212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!        - - - -MNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9999998787878743434343212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!       - - - -MNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@;<;<;<;<:9:9:9:98787878743434343212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!         - - - -MNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@;<;<;<;<:9:9:9:98787878743434343212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!         - - - -MNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@;<;<;<;<:9:9:9:98787878743434343212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!         - - - -MNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGFCDCDCDCDABABABAB?@?@?@?@;<;<;<;<:9:9:9:98787876543434343212121210/0/0/0/.-.-.-,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!         - - MNMNMNMNKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCDABABABAB?@?@?@?@;<;<;<;<:9:9:9:96565656543434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!        MNMNMNMNKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCDABABABAB?@?@?@?@;<;<;<;<:999999:6565656543434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!        MNMNMNMNKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:6565656543434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!         MNMNMNMNKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:6565656543434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!         MNMNMNMNKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:6565656543434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!         MNMNMNMNKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:6565656543434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!         MNMNMNMNKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:6565656543434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!         MNMNMNMNKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCDABABABAB?@?@?@?@;<;<;<;<999999:96565656543434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!       MNMNMNMNKLKLKLKLIJIJIJIHEFEFEFEFCDCDCDCDABABABAB?@?@?@?>;<;<;<;<:9:9:9876565656543434343212121210/0/0/.-,+,+,+,+*)*)*)*)('('('('&%&%&%$#"!"!"!"!       - -MNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<87878787656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!     - - - -MNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<87878787656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!     - - - -MNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<87878787656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!     - - - -MNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<87878787656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!     - - - -MNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<87878787656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!     - - - -MNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<87878787656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!     - - - -MNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<87878787656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!     - - - -MNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<87878787656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!     - - - -MNMNMNMNKLKLKLKJGHGHGHGHEFEFEFEFCDCDCDCDABABABA@=>=>=>=>;<;<;<;<8787878765656565434343432121210/.-.-.-.-,+,+,+,+*)*)*)*)('('('&%$#$#$#$#"!"!"!"!   - - - -MNMNMNMNIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<8787878765656565434343430/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"! - - - -MNMNMNMNIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<8787878765656565434343430/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"! - - - -MNMNMNMNIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<8787878765656565434343430/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"! - - - -MNMNMNMNIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;:9:9:8787878765656565434343430/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!    - - - -MNMNMNMNIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>9:99999:8787878765656565434343430/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#   - - - -MNMNMNMNIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>9:9:9:9:8787878765656565434343430/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#     - - - -MNMNMNMNIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>9:9:9:9:8787878765656565434343430/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#     - - - -55667788]]\\[[ZZhiijjkklqppoonnmDEEFFGGH)((''&&% !!""##$MLLKKJJI<=>??@@A((''&&%%!!""##$$LLKKJJIIiijjkkllppoonnmmEEFFGGHH SRRQQPPO99::;;<<YYXWVUTSlmmnnoopmllkkjjiHIIJJKKL%$$##""!$%%&&''(IHHGGFFEABBCCDDE$$##""!!%%&&''((HHGGFFEEmmnnooppllkkjjiiIIJJKKLL - - ONNMMLLK==>>??@@SRRQQPPOpqqrrsstihhggffeLMMNNOOP! ())**++,EDDCCBBAEFFGGHHI ))**++,,DDCCBBAAqqrrsstthhggffeeMMNNOOPPKJJIIHHGAABBCCDDONNMMLLKtuuvvwwx - - eddccbbaPQQRRSST,--..//0A@@??>>=IJJKKLLM--..//00@@??>>==uuvvwwxx - - ddccbbaaQQRRSSTT GFFEEDDC~~}}EEFFGGHH KJJIIHHGxyyzz{{| a``__^^]TUUVVWWX01122334=<<;;::9MNNOOPPQ11223344<<;;::99yyzz{{|| ``__^^]]UUVVWWXX - - CBBAA@@?||{{zzyyIIJJKKLL - - GFFEEDDC|}}~~]\\[[ZZYXYYZZ[[\~~}4556677898877665QRRSSTUV~~}}5566778888776655}}~~\\[[ZZYYYYZZ[[\\?>=<;:99xxwwvvuuMMNNOOPP - - CBBAA@@?YXXWWVVU\]]^^__` }||{{zzy899::;;<54433221~~}}||{WXYYZZ[[ ||{{zzyy99::;;<<44332211XXWWVVUU]]^^__``88776655ttssrrqqQQRRSSTT?>=<;:99UTTSSRRQ`aabbccd - - yxxwwvvu<==>>??@100//..-{zzyyxxw\\]]^^__ - - xxwwvvuu==>>??@@00//..--TTSSRRQQaabbccdd44332211ppoonnmmUUVVWWXX88776655 QPPOONNMdeeffggh uttssrrq@AABBCCD-,,++**)wvvuutts``aabbccttssrrqqAABBCCDD,,++**)) PPOONNMMeeffgghh00//..--llkkjjiiYYZZ[[\\44332211 !!""##$MLLKKJJIhiijjkklqppoonnmDEEFFGGH)((''&&%smmllkkjddeeffggppoonnmmEEFFGGHH((''&&%%!!""##$$LLKKJJIIiijjkkll%%&&,,++**))hhggffee]]^^__``00//..--$%%&&''(IHHGGFFElmmnnoopmllkkjjiHIIJJKKL%$$##""!jiihhggfhhiijjkkllkkjjiiIIJJKKLL$$##""!!%%&&''((HHGGFFEEmmnnoopp''(())**((''&&%%ijjkkllmddccbbaaaabbccdd%%&&,,++**))())**++,EDDCCBBApqqrrsstihhggffeLMMNNOOP! feeddccbllmmnopqhhggffeeMMNNOOPP ))**++,,DDCCBBAAqqrrsstt++,,--..$#"! mnnooppq``__^^]]eeffgghh''(())**((''&&%%,--..//0A@@??>>=tuuvvwwx - - eddccbbaPQQRRSSTbaa``__^rssttuuv - - ddccbbaaQQRRSSTT--..//00@@??>>==uuvvwwxx//001122qrrssttu\\[[ZZYYiijjkkll++,,--..$#"! 01122334=<<;;::9xyyzz{{| a``__^^]TUUVVWWX^]]\\[[Zvwwxxyyz ``__^^]]UUVVWWXX11223344<<;;::99yyzz{{||33445566uvvwwxxyXXWWVVUUmmnnoopp//001122~~}4556677898877665|}}~~]\\[[ZZYXYYZZ[[\ZYYSSRRQz{{||}}~\\[[ZZYYYYZZ[[\\~~}}5566778888776655}}~~778899??yzz{{||}TTSSRRQQqqrrsstt33445566}||{{zzy899::;;<54433221YXXWWVVU\]]^^__` QPPOONNM~XXWWVVUU]]^^__`` ||{{zzyy99::;;<<44332211@@AABBCC}~~PPOONNMMuuvvwwxx778899??yxxwwvvu<==>>??@100//..-UTTSSRRQ`aabbccd - - MLLKKJJITTSSRRQQaabbccdd - - xxwwvvuu==>>??@@00//..--DDEEFFGG -LLKKJJIIyyzz{{||@@AABBCCuttssrrq@AABBCCD-,,++**) QPPOONNMdeeffggh IHHGGFFE PPOONNMMeeffgghhttssrrqqAABBCCDD,,++**))HHIIJJKK - HHGGFFEE}}~~DDEEFFGG -qppoonnmDEEFFGGH)((''&&% !!""##$MLLKKJJIhiijjkklEDDCCBBA!!""##$$LLKKJJIIiijjkkllppoonnmmEEFFGGHH((''&&%%LLMMNNOODDCCBBAAHHIIJJKK - mllkkjjiHIIJJKKL%$$##""!$%%&&''(IHHGGFFElmmnnoopA@@??998%%&&''((HHGGFFEEmmnnooppllkkjjiiIIJJKKLL$$##""!!PPQQRRSS@@??>>==LLMMNNOOihhggffeLMMNNOOP! ())**++,EDDCCBBApqqrrsst - - 87766554))**++,,DDCCBBAAqqrrsstthhggffeeMMNNOOPP YYZZ[[\\ <<;;::99PPQQRRSS - - eddccbbaPQQRRSST,--..//0A@@??>>=tuuvvwwx 43322110--..//00@@??>>==uuvvwwxx - - ddccbbaaQQRRSSTT]]^^__`` - - 88776655YYZZ[[\\ a``__^^]TUUVVWWX01122334=<<;;::9xyyzz{{|0//..--,11223344<<;;::99yyzz{{|| ``__^^]]UUVVWWXX~~}}||aabbccdd 44332211]]^^__``]\\[[ZZYXYYZZ[[\~~}4556677898877665|}}~~,++**))(~~}}5566778888776655}}~~\\[[ZZYYYYZZ[[\\{{zzyyxxeeffgghh00//..--aabbccddYXXWWVVU\]]^^__` }||{{zzy899::;;<54433221(''&&%%||{{zzyy99::;;<<44332211XXWWVVUU]]^^__`` wwvvuuttiijjkkll~~}}|,,++**))eeffgghhUTTSSRRQ`aabbccd - - yxxwwvvu<==>>??@100//..-%xxwwvvuu==>>??@@00//..--TTSSRRQQaabbccdd - - ssmmllkkmmssttuu|{{zzyyx((''&&%%~~}}||iijjkkll QPPOONNMdeeffggh uttssrrq@AABBCCD-,,++**)%&&''(()ttssrrqqAABBCCDD,,++**)) PPOONNMMeeffgghhjjiihhggvvwwxxyy !xwwvvuut$$##""!!{{zzyyxxmmssttuu !!""##$MLLKKJJIhiijjkklqppoonnmDEEFFGGH)((''&&%)**++,,-ppoonnmmEEFFGGHH((''&&%%!!""##$$LLKKJJIIiijjkkllffeeddcczz{{||}}!""##$$%tssrrqqp wwvvuuttvvwwxxyy$%%&&''(IHHGGFFElmmnnoopmllkkjjiHIIJJKKL%$$##""!-..//001llkkjjiiIIJJKKLL$$##""!!%%&&''((HHGGFFEEmmnnooppbbaa``__~~%&&''(()poonnmmlssmmllkkzz{{||}}())**++,EDDCCBBApqqrrsstihhggffeLMMNNOOP! 12233445 hhggffeeMMNNOOPP ))**++,,DDCCBBAAqqrrsstt^^]]\\[[)**++,,-lkkjjiihjjiihhgg~~,--..//0A@@??>>=tuuvvwwx - - eddccbbaPQQRRSST56677889 - - ddccbbaaQQRRSSTT--..//00@@??>>==uuvvwwxx - - ZZYYSSRR-..//001hggffeedffeeddcc01122334=<<;;::9xyyzz{{| a``__^^]TUUVVWWX9??@@AAB``__^^]]UUVVWWXX11223344<<;;::99yyzz{{|| QQPPOONN12233445dccbbaa` bbaa``__4556677898877665|}}~~]\\[[ZZYXYYZZ[[\~~}BCCDDEEF\\[[ZZYYYYZZ[[\\~~}}5566778888776655}}~~MMLLKKJJ56677889`__^^]]\ - - ^^]]\\[[899::;;<54433221YXXWWVVU\]]^^__` }||{{zzyFGGHHIIJ - - XXWWVVUU]]^^__`` ||{{zzyy99::;;<<44332211IIHHGGFF9::;;<<=\[[ZZYYX - - ZZYYSSRR<==>>??@100//..-UTTSSRRQ`aabbccd - - yxxwwvvuJKKLLMMN TTSSRRQQaabbccdd - - xxwwvvuu==>>??@@00//..--EEDDCCBB=>>??@@AXWWVVUUT QQPPOONN@AABBCCD-,,++**) QPPOONNMdeeffggh uttssrrqNOOPPQQRPPOONNMMeeffgghhttssrrqqAABBCCDD,,++**)) AA@@??99~~}}|ABBCCDDETSSRRQQPMMLLKKJJDEEFFGGH)((''&&% !!""##$MLLKKJJIhiijjkklqppoonnmRSSYYZZ[LLKKJJIIiijjkkllppoonnmmEEFFGGHH((''&&%%!!""##$$88776655|{{zzyyxEFFGGHHIPOONNMMLIIHHGGFF~~}}|HIIJJKKL%$$##""!$%%&&''(IHHGGFFElmmnnoopmllkkjji[\\]]^^_HHGGFFEEmmnnooppllkkjjiiIIJJKKLL$$##""!!%%&&''((44332211xwwvvuutIJJKKLLMLKKJJIIHEEDDCCBB|{{zzyyxLMMNNOOP! ())**++,EDDCCBBApqqrrsstihhggffe_``aabbc DDCCBBAAqqrrsstthhggffeeMMNNOOPP ))**++,,00//..--tssrqponMNNOOPPQHGGFFEED AA@@??99xwwvvuutPQQRRSST,--..//0A@@??>>=tuuvvwwx - - eddccbbacddeeffg!"#$%%&&@@??>>==uuvvwwxx - - ddccbbaaQQRRSSTT--..//00,,++**))mmllkkjjQRRSSTTUDCCBBAA@!!""##$$88776655tssrqponTUUVVWWX01122334=<<;;::9xyyzz{{| a``__^^]ghhiijjk''(())**<<;;::99yyzz{{|| ``__^^]]UUVVWWXX11223344((''&&%%iihhggffUVVWWXXY@??>>==<%%&&''((44332211mmllkkjjXYYZZ[[\~~}4556677898877665|}}~~]\\[[ZZYkllmmsst++,,--..88776655}}~~\\[[ZZYYYYZZ[[\\~~}}55667788eeddccbbYZZ[[\\]<;;::998))**++,,00//..--iihhggff\]]^^__` }||{{zzy899::;;<54433221YXXWWVVUtuuvvwwx//00112244332211XXWWVVUU]]^^__`` ||{{zzyy99::;;<<aa``__^^]^^__``a87766554--..//00,,++**))eeddccbb`aabbccd - - yxxwwvvu<==>>??@100//..-UTTSSRRQxyyzz{{|3344556600//..--TTSSRRQQaabbccdd - - xxwwvvuu==>>??@@]]\\[[ZZabbccdde4332211011223344((''&&%%aa``__^^deeffggh uttssrrq@AABBCCD-,,++**) QPPOONNM|}}~~778899:;,,++**)) PPOONNMMeeffgghhttssrrqqAABBCCDDYYXWVUTSeffgghhi0//..--,,++**))( !POONNMMLeffgghhitssrrqqpOPPQQRRSOONNMMLLffgghhiissrrqqppBBCCDDEE++**))(( !!@@??9988~~}}||{BCCDDEEF+**))((' !!"ONNMMLLKfgghhiijsrrqqppoBCCDDEEF A@@??>>=(''&&%%$!""##$$%LKKJJIIHijjkkllmpoonnmmlSYYZZ[[\KKJJIIHHjjkkllmmoonnmmllFFGGHHII''&&%%$$""##$$%%77665544{zzyyxxwFGGHHIIJ'&&%%$$#"##$$%%&KJJIIHHGjkkllmmnonnmmllkFGGHHIIJ - - -=<<;;::9$##""!! %&&''(()HGGFFEEDmnnooppqlkkjjiih\]]^^__`GGFFEEDDnnooppqqkkjjiihhJJKKLLMM##""!! &&''(())33221100wvvuuttsJKKLLMMN#""!! &''(())*GFFEEDDCnooppqqrkjjiihhgJKKLLMMN - 98877665 )**++,,-DCCBBAA@qrrssttu hggffeed`aabbccd !"CCBBAA@@rrssttuu ggffeeddNNOOPPQQ**++,,--//..--,,srqponmmNOOPPQQR*++,,--.CBBAA@@?rssttuuv -gffeeddcNOOPPQQR54433221-..//001@??>>==>==<>==<<;vwwxxyyz - cbbaa``_RSSTTUUV100//..-12233445<;;::998yzz{{||} `__^^]]\hiijjkkl(())**++;;::9988zz{{||}}__^^]]\\VVWWXXYY22334455''&&%%hhggffeeVWWXXYYZ23344556;::99887z{{||}}~_^^]]\\[VWWXXYYZ-,,++**)~~}}|5667788987766554}~~\[[ZZYYXlmmssttu,,--..//77665544~~[[ZZYYXXZZ[[\\]]~~}}||66778899ddccbbaaZ[[\\]]^~~}}||{6778899:76655443~[ZZYYXXWZ[[\\]]^)((''&&% |{{zzyyx9::;;<<=43322110XWWVVUUTuvvwwxxy0011223333221100WWVVUUTT^^__``aa {{zzyyxx::;;<<==``__^^]]^__``aab {zzyyxxw:;;<<==>3221100/WVVUUTTS^__``aab%%&&'%$$##""! - - xwwvvuut=>>??@@A0//..--,TSSRRQQPyzz{{||}44556677//..--,,SSRRQQPPbbccddee - - wwvvuutt>>??@@AA\\[[ZZYYbccddeef - - wvvuutts>??@@AAB/..--,,+SRRQQPPObccddeef'(())**+! tssrrqqpABBCCDDE,++**))( !POONNMML}~~8899:;<=++**))(( !!OONNMMLLffgghhiissrrqqppBBCCDDEEXWVUTSSRfgghhiijsrrqqppoBCCDDEEF+**))((' !!"ONNMMLLKfgghhiij+,,--../poonnmmlEFFGGHHI(''&&%%$!""##$$%LKKJJIIH>??@@AAB''&&%%$$""##$$%%KKJJIIHHjjkkllmmoonnmmllFFGGHHII RQQPPOONjkkllmmnonnmmllkFGGHHIIJ'&&%%$$#"##$$%%&KJJIIHHGjkkllmmn/0011223lkkjjiihIJJKKLLM$##""!! %&&''(()HGGFFEEDBCCDDEEF##""!! &&''(())GGFFEEDDnnooppqqkkjjiihhJJKKLLMM - - NMMLLKKJnooppqqrkjjiihhgJKKLLMMN#""!! &''(())*GFFEEDDCnooppqqr34455667 hggffeedMNNOOPPQ )**++,,-DCCBBAA@FGGHHIIJ**++,,--CCBBAA@@rrssttuu ggffeeddNNOOPPQQJIIHHGGFrssttuuv -gffeeddcNOOPPQQR*++,,--.CBBAA@@?rssttuuv78899??@ - - dccbbaa`QRRSSTTU-..//001@??>>==>==<>==<<;vwwxxyyz@AABBCCD - - `__^^]]\UVVWWXXY12233445<;;::998NOOPPQQR22334455;;::9988zz{{||}}__^^]]\\VVWWXXYY BAA@@??>z{{||}}~_^^]]\\[VWWXXYYZ23344556;::99887z{{||}}~DEEFFGGH - - \[[ZZYYXYZZ[[\\]~~}}|5667788987766554~RSSTUVWX~~}}||6677889977665544~~[[ZZYYXXZZ[[\\]]=<;:9988~[ZZYYXXWZ[[\\]]^~~}}||{6778899:76655443~HIIJJKKL XWWVVUUT]^^__``a |{{zzyyx9::;;<<=43322110~}}||{{zYYZZ[[\\ {{zzyyxx::;;<<==33221100WWVVUUTT^^__``aa77665544WVVUUTTS^__``aab {zzyyxxw:;;<<==>3221100/LMMNNOOPTSSRRQQPabbccdde - - xwwvvuut=>>??@@A0//..--,zyyxxwwv]]^^__`` - - wwvvuutt>>??@@AA//..--,,SSRRQQPPbbccddee33221100SRRQQPPObccddeef - - wvvuutts>??@@AAB/..--,,+PQQRRSSY !POONNMMLeffgghhitssrrqqpABBCCDDE,++**))(vuuttssmaabbccddssrrqqppBBCCDDEE++**))(( !!OONNMMLLffgghhii//..--,, !!"ONNMMLLKfgghhiijsrrqqppoBCCDDEEF+**))(('YZZ[[\\]!""##$$%LKKJJIIHijjkkllmpoonnmmlEFFGGHHI(''&&%%$mllkkjjieeffgghhoonnmmllFFGGHHII''&&%%$$""##$$%%KKJJIIHHjjkkllmm%%&&''++**))(("##$$%%&KJJIIHHGjkkllmmnonnmmllkFGGHHIIJ'&&%%$$#]^^__``a %&&''(()HGGFFEEDmnnooppqlkkjjiihIJJKKLLM$##""!! ihhggffeiijjkkllkkjjiihhJJKKLLMM##""!! &&''(())GGFFEEDDnnooppqq(())**++''&&%%$#&''(())*GFFEEDDCnooppqqrkjjiihhgJKKLLMMN#""!! abbccdde !!""##$)**++,,-DCCBBAA@qrrssttu hggffeedMNNOOPPQ eddccbbammnopqrs ggffeeddNNOOPPQQ**++,,--CCBBAA@@rrssttuu,,--..//"! *++,,--.CBBAA@@?rssttuuv -gffeeddcNOOPPQQReffgghhi$%%&&''(-..//001@??>>==>==<>==<<;vwwxxyyz - cbbaa``_RSSTTUUV~~}}||{ijjkkllm())**++,12233445<;;::998yzz{{||} `__^^]]\UVVWWXXY]\\[[ZZYwxxyyzz{__^^]]\\VVWWXXYY22334455;;::9988zz{{||}}4455667723344556;::99887z{{||}}~_^^]]\\[VWWXXYYZ{zzyyxxwmssttuuv,--..//05667788987766554}~~\[[ZZYYXYZZ[[\\]YSSRRQQP{||}}~~[[ZZYYXXZZ[[\\]]~~}}||6677889977665544~~8899??@@~~}}||{6778899:76655443~[ZZYYXXWZ[[\\]]^wvvuuttsvwwxxyyz011223349::;;<<=43322110XWWVVUUT]^^__``a POONNMMLWWVVUUTT^^__``aa {{zzyyxx::;;<<==33221100AABBCCDD {zzyyxxw:;;<<==>3221100/WVVUUTTS^__``aab smmllkkjz{{||}}~45566778=>>??@@A0//..--,TSSRRQQPabbccdde - - LKKJJIIHSSRRQQPPbbccddee - - wwvvuutt>>??@@AA//..--,,EEFFGGHH - - wvvuutts>??@@AAB/..--,,+SRRQQPPObccddeef - - jiihhggf~899::;;>??@EFFGGHHI(''&&%%$!""##$$%LKKJJIIHijjkkllmDCCBBAA@""##$$%%KKJJIIHHjjkkllmmoonnmmllFFGGHHII''&&%%$$MMNNOOPPonnmmllkFGGHHIIJ'&&%%$$#"##$$%%&KJJIIHHGjkkllmmnbaa``__^@AABBCCDIJJKKLLM$##""!! %&&''(()HGGFFEEDmnnooppq @??99887&&''(())GGFFEEDDnnooppqqkkjjiihhJJKKLLMM##""!! QQRRSSYYkjjiihhgJKKLLMMN#""!! &''(())*GFFEEDDCnooppqqr^]]\\[[Z~~}DEEFFGGHMNNOOPPQ )**++,,-DCCBBAA@qrrssttu - - 76655443**++,,--CCBBAA@@rrssttuu ggffeeddNNOOPPQQZZ[[\\]] -gffeeddcNOOPPQQR*++,,--.CBBAA@@?rssttuuv -ZYYSSRRQ}||{{zzyHIIJJKKLQRRSSTTU-..//001@??>>==>==<>==<<;vwwxxyyz - QPPOONNMyxxwwvvuLMMNNOOPUVVWWXXY12233445<;;::998yzz{{||}/..--,,+22334455;;::9988zz{{||}}__^^]]\\VVWWXXYY~~}}||{{bbccddee_^^]]\\[VWWXXYYZ23344556;::99887z{{||}}~MLLKKJJIuttssrrqPQQRRSSTYZZ[[\\]~~}}|5667788987766554}~~+**))(('~~}}||6677889977665544~~[[ZZYYXXZZ[[\\]]zzyyxxwwffgghhii[ZZYYXXWZ[[\\]]^~~}}||{6778899:76655443~IHHGGFFEqppoonnmTUUVVWWX]^^__``a |{{zzyyx9::;;<<=43322110'&&%%{{zzyyxx::;;<<==33221100WWVVUUTT^^__``aa vvuuttssjjkkllmmWVVUUTTS^__``aab {zzyyxxw:;;<<==>3221100/EDDCCBBAmllkkjjiXYYZZ[[\abbccdde - - xwwvvuut=>>??@@A0//..--,%%&wwvvuutt>>??@@AA//..--,,SSRRQQPPbbccddee - - mmllkkjjssttuuvvSRRQQPPObccddeef - - wvvuutts>??@@AAB/..--,,+A@@??998ihhggffe\]]^^__`effgghhitssrrqqpABBCCDDE,++**))(&''(())*ssrrqqppBBCCDDEE++**))(( !!OONNMMLLffgghhiiiihhggffwwxxyyzz !!"ONNMMLLKfgghhiijsrrqqppoBCCDDEEF+**))((' !!"87766554eddccbba`aabbccdijjkkllmpoonnmmlEFFGGHHI(''&&%%$*++,,--.oonnmmllFFGGHHII''&&%%$$""##$$%%KKJJIIHHjjkkllmmeeddccbb{{||}}~~"##$$%%&KJJIIHHGjkkllmmnonnmmllkFGGHHIIJ'&&%%$$#"##$$%%&43322110a``__^^]deeffgghmnnooppqlkkjjiihIJJKKLLM$##""!! .//00112kkjjiihhJJKKLLMM##""!! &&''(())GGFFEEDDnnooppqqaa``__^^&''(())*GFFEEDDCnooppqqrkjjiihhgJKKLLMMN#""!! &''(())*0//..--,]\\[[ZZYhiijjkklqrrssttu hggffeedMNNOOPPQ 23344556 -ggffeeddNNOOPPQQ**++,,--CCBBAA@@rrssttuu ]]\\[[ZZ*++,,--.CBBAA@@?rssttuuv -gffeeddcNOOPPQQR*++,,--.,++**))(YXXWWVVUlmmnnoopuvvwwxxy - - dccbbaa`QRRSSTTU6778899? - ccbbaa``RRSSTTUU..//0011??>>==<>==<<;vwwxxyyz - cbbaa``_RSSTTUUV.//00112(''&&%%UTTSSRRQpqqrrsstyzz{{||} `__^^]]\UVVWWXXY?@@AABBC__^^]]\\VVWWXXYY22334455;;::9988zz{{||}}PPOONNMM23344556;::99887z{{||}}~_^^]]\\[VWWXXYYZ23344556QPPOONNMtuuvvwwx}~~\[[ZZYYXYZZ[[\\]~~}}|CDDEEFFG [[ZZYYXXZZ[[\\]]~~}}||6677889977665544~~LLKKJJII6778899:76655443~[ZZYYXXWZ[[\\]]^~~}}||{6778899:MLLKKJJIxyyzz{{|XWWVVUUT]^^__``a |{{zzyyxGHHIIJJK - - WWVVUUTT^^__``aa {{zzyyxx::;;<<==33221100HHGGFFEE:;;<<==>3221100/WVVUUTTS^__``aab {zzyyxxw:;;<<==>IHHGGFFE|}}~~TSSRRQQPabbccdde - - xwwvvuutKLLMMNNO SSRRQQPPbbccddee - - wwvvuutt>>??@@AA//..--,,DDCCBBAA>??@@AAB/..--,,+SRRQQPPObccddeef - - wvvuutts>??@@AABEDDCCBBAbdQZ|H~fHAbے`f~Zp˂Jltے`JX|ZdQfpvZp˂f`vXے`JX|ZdQrQJ`ےJlt`vXn|ZdQbfpvp˂rltbے`JXQ|ZdQbpvnQZ|ddrtA`vXn`JXQrHfvnXrXQJ`bnvpQr˂pbtlnXv`rbdQZ|nvpQr˂pbtl|bHAZpbdQZ|r˂ptlJnXv`XQJ`ےnvpr˂ptlJXv`prtAJlJltvpf˂pZv`fbHAfHˑZHAbJtArdf~HdrtfH~ˑZHAbZdQb˂rXdrtAZHAbtArdf~HbHAZfHfZHAbtArdvnrtbdbdQZ|H~fHAbے~HfpZp˂f`vXے`JX|ZdQfpvAJltf`vXے`JXnXv`pQJ`ےJltے`JXQ|ZdQbfpvp˂r`vXnے`JXQ|ZdQbXQJ`pQZ|ddrtA`vXn`JXQrvnXrXQJ`nvpQr˂pbtlnXv`bdQZ|nvpQr˂pvnXbHAZpbdQZ|r˂ptlJnXv`XQJ`ےvpfr˂ptlJ˂rXQrtAJlJltvpf˂p|v`fbHAfH~ˑZHAbJtArdf~HdrtfH~ˑZHAbv`f˂rQJdrtAZHAbtArdf~HbHAZH~fZHAbtArdJ`ےbQZ|bdQZ|H~fZdQbt~HfpZp˂f`vXے`JX|ZdQfpvAJltf`vXے`JX~HfpbHAJltے`JXQ|ZdQbfpvp˂r`vXnے`JXQ|ZdQbbHAZpdrtAdrtA`vXnlJtAvnv`rXQJ`nvpQr˂pbtlnXv`bdQZ|nvpQr˂pvnXZp˂bdQZ|r˂ptlJnXv`XQJ`ےvpfr˂ptlJ˂rXQJltJltvpfrd|f~HbHAfH~ˑZHAbJtArdfHdrtfH~ˑZHAbv`frXQJ`dtAJZHAbtArdf~HbHAZH~fZHAbtArdJ`ےbdQZ|bdQZ|H~fZdQbtfpvZp˂f`vXے`JX|ZdQfpvAJltf`vXے`JXnXےbHAltbے`JXQ|ZdQbfpvp˂r`vXnے`JXQ|ZdQbbHAXQJdrtAdrtA`vXnlJtAnXv`rbdQZ|nvpQr˂pbtlnrXQJ`bdQZ|nvpQr˂pv`fZp˂nvpr˂ptlJnXv`bdQZ|vpfr˂ptlJ`ےbJltvXnJltvpfrdtf~HdrtfH~ˑZHAbJtArdےHAdrtfH~ˑZHAb~HfprXQJfHfZHAbtArdf~HdrtAH~fZHAbtArdHAZp˂bQZdvpfHbdQZ|H~flJtArfpvAJltf`vXے`JX|ZdQZp˂AJltf`vXے`JXvnXbHAZp`vXnے`JXQ|ZdQbfpvJlt`vXnے`JXQ|ZdQbrXQJrtAJl~f`drtA`vXnd|ZnvfbdQZ|nvpQr˂pbtlrXQJ`ۉbdQZ|nvpQr˂pv`f󂀉rXQvpfr˂ptlJnXv`bdQZ|vpfr˂ptlJ`ےbtbdQvXnJltvpfdQbt~HfpہdrtfH~ˑZHAbJtArdbHAdrtfH~ˑZHAb~HXv`J`ےH~fZHAbtArdf~HdrtAH~fZHAbtArdHAZp`Z|dvpfHbdQZ|H~flJtArvnXAJltf`vXے`JX|ZdQZp˂AJltf`vXے`JXf~HbHAZp`vXnے`JXQ|ZdQbfpvJlt`vXnے`JXQ|ZdQbےbHArtAJl~f`drtA`vXnd|lv`fbdQZ|nvpQr˂pbtlrXQJ`ۉbdQZ|nvpQr˂pfpvrXQvpfr˂ptlJnXv`bdQZ|vpfr˂ptlJZp˂tbdQvXnJltvpfJtArd~HfpہdrtfH~ˑZHAbJtArdbHAdrtfH~ˑZHAۅnXv`J`bAZH~fZHAbtArdfHfdrtAH~fZHAbtArdrXQJ`Z|AJlvpfHbdQZ|H~f|ZdQvnXAJltf`vXے`JX|ZdQZp˂AJltf`vX`JXQf~Hp˂r`vXnے`JXQ|ZdQbpvnJlt`vXnے`JXQ|ZdQbےbHAtb~f`drtA`vXnbtlv`frbdQZ|nvpQr˂pbnXv`rXQJ`ۉbdQZ|nvprbtlfp`bdQZ|vpfr˂ptlJrXQJ`bdQZ|vpfr˂pnXv`Zp˂nvpvXnJltvpfJtArdQJHAdrtfH~ˑZHAbf~HbHAdrtfH~ˑ|ZdQf~HdrtAH~fZHAbtArdےHAZdrtAH~fZHAbpvnbHAZfHf`r˂pbdQZ|H~f|ZdQZp˂AJltf`vXے`JXfpvZp˂AJltf`vXbtlfpvJlt`vXnے`JXQ|ZdQbp˂rJlt`vXnے`JXQXv`fp˂rvXnZHAbdrtA`vXntArdrXQJ`ۉbdQZ|nvpQr˂pnXv`rXQJ`ۉbdQZ|nvpJtArdnXv`bdQZ|vpfr˂ptlJXQJ`ےbdQZ|vpfr˂p~HfXQJ`ےvpfH`JXQJltr˂p|ZdQbbHAdrtfH~ˑZHAbf~HbHAdrtfH~˂|ZdQf~HdrtAH~fZHAbtArdbHAZdrtAH~fZHAbpvnbHAZ~f`r˂pbdQZ|`JXQrtlJZp˂AJltf`vXے`JXfpvZp˂AJltf`vXbtlfpvJlt`vXnے`JXQ|ZdQbp˂rJlt`vXnے`JXQXv`fp˂rvXnZHAbdrtA˂pZtArdrXQJ`ۉbdQZ|nvpQr˂pnXv`rXQJ`ۉbdQZ|nvpJtArdt~HfpbdQZ|vpfr˂ptlJXQJ`ےbdQZ|vpfr˂pnXXQHAZpvpfH`JXQJltHAbے|ZdQbbHAdrtfH~ˑZHAۍf~HbHAdrtfH~ˉlJtvnXdrtAH~fZHAbtArdbHAZdrtAH~fZHAےv`f˂rXQ~f`r˂pbdQZ|`JXQrtd|Zp˂AJltf`vX`JXQfpvZp˂AJltf`vXArd|v`fJlt`vXnے`JXQ|ZdQbp˂rJlt`vXn`JXQr~HfpJ`ےvXnZHAbdrtA˂pZZdQbtrXQJ`ۉbdQZ|nvprbtlnXv`rXQJ`ۉbdQZ|nr˂pZdQbt~HfpbdQZ|vpfr˂pnXv`XQJ`ےbdQZ|vpfbtlvnXbHAZpvpfH`JXQJltHAXQrlJtAbHAdrtfH~ˑJtAdf~HbHAdrtZHAblJtvnXdrtAH~fZHAbf~HbHAZdrtAH~fJtAdv`f˂rXQ~f`r˂pbdQZ|˂pZHArd|Zp˂AJltf`vX|ZdQfpvZp˂AJltے`JXArd|v`pJlt`vXnے`JXQfpvp˂rJlt`vXn|ZdQb~HXvJ`p˂vXnZHAbdrtAbے`ZdQbtrXQJ`ۉbdQZ|nvpbtlnXv`rXQJ`ۉbdQZ|Qr˂plJtAvnrXbdQZ|vpfr˂pnXv`XQJ`ےbdQZ|vpftlJ`f~rbdQvpfH`JXQJltJXQrl|ZbHAdrtfH~JtArdf~HbHAdrtZHAbrd|QJ`AdrtAH~fZHAbf~HbHAZdrtAH~ftArdHfpvZ|rA~f`r˂pbdQZ|˂pZHAdQbnXZp˂AJltf`vX|ZdQfpvZp˂AJltے`JXZdQbtZp˂Jlt`vXnے`JXQfpvp˂rJlt`vXn|ZdQbnXvJltvXnZHAb`vXnb˂v`f~rXQJ`ۉbdQZ|nvpbtlnXv`rXQJ`ۉbdQZ|Qr˂plJtArXQJ`bdQZ|vpfr˂pnXv`XQJ`ےbdQZ|vpftlJ`f~bdQZ|vpfH`JXQvpfpZHAbfpv㒐bHAdrtfH~JtArdf~HbHAdtAZHAbrd|璐bHAdrtAH~fZHAےf~HbHAZdrtAH~ftArdHfp`drtA~f`r˂pH~fے`JnXv`Zp˂AJltf`vX|ZdQfpvZp˂Jltے`JXZdQtArdZp˂Jlt`vXn`JXQrfpvp˂rJlt`vXn|ZdQbf~HJltvXnZHAb`vXnXQr˂f~HrXQJ`ۉbdQZ|nr˂pbtlnXv`rXQJ`bnvpQr˂p|ZdrXQJ`bdQZ|vpfbtlnXv`XQJ`ےbdQZ|r˂ptlJfpvbdQZ|vpfH`JXQvpfpZHAbfpv㒐bHAdrtZHAbJtArdf~HbHAfHˑZHAbQbtlbHAZdrtAH~fJtAdf~HbHAZdrtAZHAbtArdnXv`drAJ~f`r˂pH~fے`pnXv`Zp˂AJltے`JX|ZdQfpvZp˂f`vXے`JXJtArdrXQJJlt`vXn|ZdQbfpvp˂rJltے`JXQ|ZdQbf~HtbdQZvXnZHAb`vXnZHAbf~fvrXQJ`ۉbdQZ|Qr˂pbtlnXv`rXQJ`nvpQr˂p|Zd`ےbbdQZ|vpftlJnXv`XQJ`ےbdQZ|r˂ptlJfpv|drvpfH`JXQvpfے`JXQnXvbHAdrtZHAbJtArdf~HbHAfH~ˑZHAbQbtdHAZp˂drtAH~ftArdf~HbHAZdrtAZHAbtArd~HftAJl璅~f`r˂pH~fr˂p`f~Zp˂AJltے`JX|ZdQfpvZp˂f`vXے`JX|ZdQrXQJJlt`vXn|ZdQbfpvp˂rJltے`JXQ|ZdQbpvntbdQZvXnZHAb`vXnZHAbHfpvrXQJ`ۉbdQZ|Qr˂pbtlnXv`rXQJ`nvpQr˂pbtl`ےbbdQZ|vpftlJnXv`XQJ`ےbdQZ|r˂ptlJXv`f|drvpfH`JXQvpfے`JXQnXvbHAdtAZHAbJtArdf~HbHAfH~ˑZHAbJtArdHAZpdrtAH~ftArdf~HbHAZdtAJZHAbtArd~HftAJbd~f`r˂pZHAbArd|bHAZpdrtA~f`ZHAے`f~HAZp˂~f`HAbےrd|HfpdrtAJ~f`HAbےrd|bHAZpJl|Abے`rd|~HfpbHAZp~f`Abے`rd|HfpۙrtAJl~f`JXQrf۝`v`JXQZdQb˂rXJltvXnJXQrfpv㉐bHAvXn`JXQrZdQbtvnrltbvXn`JXQrZdQbn˂rXQdrtAJJXQrZdQbtvnXrbdvXnہJXQrZdQbtvnrXtbdvXnۉ˂p`ZXnvˍr˂pnXv`QJ`ےbdQZ|vpfHbtlnXv`Zp˂vpfH˂pZlJtAXQJ`ےdQZ|vpfH˂pZXv`fJ`ےltb˂pZHlJtAv`fQZ|dvpfH˂pZHlJtAQJ`ےQZ|dvpfHQXb㉀pfH~ZHAbf~HbHAZpdrtA~f`JtAd|f~HrXQJ`ۅ~fvHAbےrd|HAZpdrtAJ~f`HAbے~HfbHAZpdQZ|AbJXQrd|~HfprtAJl~f`Abے`rd|HAZp˙rtAJl~f`ۑpJAHrf۝`v`JXQfpv˂rXJltvXnZdQbtfpv㒐bHAnvp`JXQrZdQbt˂rXQltbvXn`JXQrpvn˂rXQdrtAJr˂pZdQbtvnXtbdvXnہJXQrZdQbt炀rXQtbdvXn󙐂ˁ`ZXnvˍr˂pnXv`QJ`ےbdQZ|vpfHlJtnXv`Zp˂fH~˂pZlJtAJ`ےdQZ|vpfH˂pZXv`fJ`ےltdZHAblJtAv`fQZ|dvpfH˂pZHlJtAJ`ےQZ|dvpfHQXb㉀pfH~ZHAbf~HbHAZpdrtA~f`Ard|f~HrXQHAZpf`vXHAbےrd|bHAZpdrtAJ~f`HAbے~HfbHAZprtAJlے`JXQrd|~HfprtAJl~f`Abے`rd|bHAZp˙rtAJl~f`ۑpJAHrf۝`v`JXQfpv˂rXJltvXnZdQbtfpv˂rXnvp`JXQrZdQbt˂rXQltbvXn`JXQrpvn˂rXQtbdQr˂pZdQbtvnXtbdvXnہJXQrZdQbt炀rXQtbdvXn󙐉ۑXnvˍr˂pnXv`QJ`ےbdQZ|vpfHlJtnXv`QJ`ےfH~˂pZlJtAJ`ےdQZ|vpfH˂pZXv`fJ`ےZ|dZHAblJtAv`fQZ|dvpfH˂pZHlJtAJ`ےQZ|dvpfHpJAHrpfH~ZHAے`f~HbHAZpdrtA~f`Ard|f~HbHAZpf`vnHAbےrd|bHAZpdrtAJ~f`HAے`~HfbHAZprtAJlJQrrd|HfpۙrtAJl~f`Abے`rd|bHAZp˙rtAJl~f`ˁ`ZQf۝`vJXQrfpv˂rXJltvXnZdQbtfpv˂rXvpfH`JXQrZdQbn˂rXQltbvXnJXQrbpvn˂rXQtbdQpZHAZdQbtvnrXtbdvXnہJXQrZdQbnXrXQtbdvXnXb㉀ۑXnvˍbtlnXv`QJ`ےbdQZ|r˂plJtnXv`QJ`p~f`˂pZXv`fJ`ےdQZ|vpfHtlJXv`fJ`ےZ|lbے`lJtAQJ`ےQZ|dvpfH˂pZHv`fJ`ےQZ|dvpfHpJAHrpfH~JtAd|f~HbHAZpdrtAZHAbArd|f~HrbdvXnHAbے~HfbHAZpdrtAJ~f`tAd|~HfbHAZptbnJXQrrd|HAZp˙rtAJl~f`Abے`~HfpbHAZp˙rtAJl~f`ˁ`pJf۝`vZdQbtfpv˂rXJlt`JXQZdQbtfpvQZ|lvpfH`JXQrpvn˂rXQltbvXnZdQbtpvn˂rXQvp`vpZHAZdQbt炀rXQtbdvXnہJXQrvnXrXQtbdvXnAHr󙐂XnvˍlJtnXv`QJ`ےbdQZ|r˂plJtnXv`˒tbdQ~f`˂pZXv`fJ`ےdQZ|vpfHlJtAXv`fJ`ےXnvbے`JlJtAJ`ےQZ|dvpfH˂pZHv`fJ`ےQZ|dvpfHˁ`ZQXbp|drArd|f~HbHAZpdrtAZHAbArd|f~HZ|dvXnvfHAbے~HfbHAZpdrtAJ~f`rd|~HfbHAZppfH~QrpZrd|bHAZp˙rtAJl~f`Abے`~HfpbHAZp˙rtAJl~f`㉀ۑpJQtJlZdQbtfpv˂rXJlt`JXQZdQbtfpvrtAJlH~f`JXQrpvn˂rXQltbvXnZdQbtpvn˂rXQf`vHAbےZdQbt炀rXQtbdvXnہJXQrvnXrXQtbdvXnAHr󙐂tbAdZlJtnXv`QJ`ےbdQZ|r˂plJtnXv`˒tbdQ`vXn˂pZXv`fJ`ےdQZ|vpfHlJtAXv`fJ`ےXnv`JXQrlJtAJ`ےQZ|dvpfH˂pZHv`fJ`ےQZ|dvpfHˁ`ZQXA|drArd|f~HbHAZpdtAJlZHAbArd|f~HZ|dtvpfHAے`~HfbHAZpdrtAJ~f`rd|~HfbHAZppfH~˂pZrd|bHAZp˙rtAJl~f`Aے`~HfpbHAZp˙rtAJl~f`Hr󙐂ˁQtJlZdQbtfpv˂rXtb`JXQZdQbtfpvbdQZ|H~fJXQrbpvn˂rXQltbvXnrZdQbtpvn˂rXQvpHAbےZdQbnXrXQtbdvXnJXQrbtvnXrXQtbdvXnے``ZQXbtbAdZlJtnXv`QJ`ےnvpr˂plJtnXv`ˁdrt`vXntlJXv`fJ`ےdQZ|˂pZlJtAXv`fJ`ےfH~`JXQrv`fJ`ےQZ|dvpfHlJtv`fJ`ےQZ|dJXQrۑpJA|drArd|f~HbHAZpfHf`ZHAbArd|f~HAJltvf~tAd|~HfbHAZpdrtAJHAbےrd|~HfbHAZpf`vXZHAb~HfpbHAZp˙rtAJl~f`Ad|~HfpbHAZp˙rtAJl˂pZHHr󙐂ˁQtJlZdQbtfpv˂rXvXn`JXQZdQbtfpvbdQZ|f`vXZdQbtpvn˂rXQltb`JXQrZdQbtpvn˂rXQnvpے`JXvnXrXQtbdvXnZdQbtvnXrXQtbdAbے``ZQXbtbAdZlJtnXv`QJ`ےvpfHr˂plJtnXv`ˁdrtnvplJtAXv`fJ`ےdQZ|˂pZlJtAXv`fJ`ےfH~Qr˂pv`fJ`ےQZ|dvpfHlJtAv`fJ`ےQZ|dJXQrˁ`Z|drArd|f~HbHAZp~f`ZHAbArd|f~HAdQZ|fH~rd|~HfbHAZpdrtAJHAbےrd|~HfbHAZpf`pfZHAb~HfpbHAZp˙rtAJl~f`rd|~HfpbHAZp˙rtAJl˂pZHQXb㉀QtJlZdQbtfpv˂rXvXn`JXQZdQbtfpvdrtAf`vXZdQbtpvn˂rXQltb`JXQrZdQbtpvn˂rXQH~fے`JXvnXrXQtbdvXnZdQbtvnXrXQtbdAXQrۑpJAHrtbAdZlJtnXv`QJ`ےvpfHr˂plJtnXv`JltnvplJtAXv`fJ`ےdQZ|˂pZlJtAXv`fJ`ے`vXnQr˂pv`fJ`ےQZ|dvpfHlJtAv`fJ`ےQZ|dpZHA󙐂ˁ`Z|drArd|f~HbHAZp~f`ZHAbArd|fHfpbdQZ|f~f`rd|~HfbHAZpdtAJlHAbےrd|~HfbHAZpvpfZA`~HfpbHAZp˙rtAJl~f`rd|~HfpbHAZp˙tAJlbے`QXb㉀QtJlZdQbtfpv˂rvXn`JXQZdQbtvndrtAvXnrZdQbtpvn˂rXQtbn`JXQrZdQbtpvn˂rbH~fJXQrbtvnXrXQtbdvXnrZdQbtvnXrXQtbnJXQrXnvˍtbAdZlJtnXv`bdQZ|vpfHr˂plJtrXQJ`pJl|d˂pZlJtAXv`fJ`ےvpf˂pZlJtAXv`fdQZ|l`vXHlJtv`fJ`ےQZ|d˂pZHlJtAv`fJ`ےvpfHpZHApfH~|drArd|f~HdrtA~f`ZHAbArd|˂rXrtAJlHAbےrd|~HfbHAZpHf`HAbےrd|~HftbdQ~f`Ad|~HfpbHAZp˙rtAJlAbے`rd|~HfpbHAZp˅f`b˂pf۝`vQtJlZdQbtfpvJltvXn`JXQZdQbtQJ`ےtbd`JXQrZdQbtpvn˂rXQvXn`JXQrZdQbtpvnZ|dvXnZdQbtvnXrXQtbdJXQrZdQbtvnXrXQvXnۑZHAbXnvˍtbAdZlJtnXv`bdQZ|vpfHr˂plJtbHAZpQZ|d˂pZlJtAXv`fJ`ےvpfH˂pZlJtAXv`frtAJlvpfHlJtAv`fJ`ےQZ|d˂pZHlJtAv`fJ`ےvpfHے`JXpfH~|drArd|f~HdrtA~f`ZHAbArd|˂rXrtAJlHAbےrd|~HfbHAZp~f`HAbےrd|~HftbdQ~f`rd|~HfpbHAZp˙rtAJlAbے`rd|~HfpbHAZp~f`Qr˂pf۝`vQtJlZdQbtfpvJltvXn`JXQZdQbtQJ`ےtd`JXQrZdQbtpvn˂rXQvXn`JXQrZdQbtpvnZ|dvXnZdQbtvnXrXQtbdJXQrZdQbtvnXrXQvXnۑZHAbXnvˍtbAdZlJtnXv`bdQZ|vpfHr˂plJtbHAXQrtAJl瀉˂pZlJtAXv`fJ`ےvpfH˂pZlJtAXv`ftbdQZf`vlJtAv`fJ`ےQZ|d˂pZHlJtAv`fJ`ےvpfHے`ppfH~|drArd|fHfpdrtA~f`ZHAbArd|J`ےtbdQHAbےrd|~HfbHAZp~f`HAbےrd|Hfp|drXnvrd|~HfpbHAZp˙tAJlAbے`rd|~HfpbHAZp~f`ZHAbېf۝`vQtJlZdQbtvnJltvXn`JXQZdQbbHAZpZ|d`JXQrZdQbtpvn˂rbvXn`JXQrZdQbtvnrtAJlpfH~ZdQbtvnXrXQtbnJXQrZdQbtvnXrbdvXnے`JXQXnvˍtbAdZlJtrXQJ`bdQZ|vpfHr˂pnXv`˂rXQrtAJl瀉˂pZlJtAXv`fdQZ|vpfH˂pZlJtAXQJ`ےtbdQZf`vlJtAv`fJ`ےvpfH˂pZHlJtAv`fQZ|dvpfHr˂ppfH~|drArd|HAZpdrtA~f`ZHAbf~HJ`ےtbdQHAbےrd|~HfdrtAJ~f`HAbےrd|HAZp|drXnvrd|~HfpbHAZp˅f`Abے`rd|~HfprtAJl~f`ZHAbېf۝`vQtJlZdQbt˂rXJltvXn`JXQfpvbHAZp`Z|lt`JXQrZdQbtpvnltbvXn`JXQrZdQbt˂rXQtAdQZ|p`vXZdQbtvnXrXQvXnہJXQrZdQbtvnXtbdvXnے`JXQHXnvˍtbAdZlJtQJ`ےbdQZ|vpfHr˂pnXv`ˁےbHbnۀ˂pZlJtAXv`fdQZ|vpfH˂pZlJtAJ`ےdrtAnr˂lJtAv`fJ`ےvpfH˂pZHlJtAv`fQZ|dvpfHAbے`pfH~|drArd|bHAZpdrtA~f`ZHAbf~HAZp˂vpff`HAbےrd|~HfdrtAJ~f`HAbےrd|bHAZpJltpZAb`rd|~HfpbHAZp~f`Abے`rd|~HfprtAJl~f`JXQrf۝`vQtJlZdQbt˂rXJltvXn`JXQfpvrXQJ`vXn`JXQrZdQbtpvnltbvXn`JXQrZdQbt˂rXQbdQZ|JXQrZdQbtvnXrXQvXnہJXQrZdQbtvnXtbdvXnۉ˂pZHXnvˍtbAdZlJtQJ`ےbdQZ|vpfHr˂pnXv`ˁےbHvpfH˂pZlJtAXv`fdQZ|vpfH˂pZlJtAJ`ےdrtA˂pZHlJtAv`fJ`ےvpfH˂pZHlJtAv`fQZ|dvpfHAbے`pfH~|drQt666666666677777777777777777777777777777777777 \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv33_0.dat b/mpdf/qrcode/data/qrv33_0.dat deleted file mode 100644 index 42ea5d5..0000000 --- a/mpdf/qrcode/data/qrv33_0.dat +++ /dev/null @@ -1,297 +0,0 @@ -}~}~}~}~{|{|{|{|{zyzyzyzyzyzyzyzwxwxwxwxuvuvuvuvstststsrpopopoponmnmnmnmlklklklkjijijijihghghghghghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<}~}~}~}~{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqrpopopoponmnmnmnmlklklklkjijijijihghghghghghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<}~}~}~}~{|{|{|{|yzyzyzyzyxwxwxwxwxwxwxwxuvuvuvuvqrqrqrqrpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefefefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUSTSSSSSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvqrqrqrqrooooopopnmnmnmnmlklklklkjijijijihghghghgfefefefefefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUSTSTSTSRQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxwvuvuvuvuvuvuvuvqrqrqrqropopopopnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUQRQRQRQRQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvuvuvuvuvqrqrqrqropopopopnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUTSTSQRQRQRQRQRQRQRQPOPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvutstststqrqrqrqropopopopnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababababababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWTSTSSSSSQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababababababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWSTSTSTSTQRQRQRQROPOPOPOPOPOPOPONMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropoooooonmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNMNMNMNMLKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqrpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWVUSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqrpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLKLKLKLKJIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqrpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYVUVUVUVUSTSTSTSSQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqrpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYVUVUVUVUSSSSTSTSQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJIJIJIJIHGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqrpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYVUVUVUVUTSTSTSTSQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqrpopopooonmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYVUVUVUVUTSTSTSTSQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHGHGHGHGFEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqrooopopopnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFEFEFEFEDCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSSSSSSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDCDCDCDCBABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABABABABABAB?@?@?@?@=>=>=>=>;<;<;:9:9:9:9:9:}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqropopopopnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABABABABABA@?@?@?@?@=>=>=>=>9:9:9:9:9:9:9:9:}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqrooooooponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@?@?@?@?@=>=>=>=>9:9:9:9:9:9:9:9:}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqrpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@?@?@?@?>=>=>=>=>9:9:9:9:9:9:9:9:}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqrpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>=>=>=>=>9:9:9:9:9:9:9:9:}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqrpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUSTSTSSSSQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>=>=>=>=<9:9:9:9:9:9:9:9:}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqrpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUSSTSTSTSQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:9:9:9:9:}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqrpopooooonmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:9:9:9:9:}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqrpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:9:9:9:9:}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqrqrnmnmnmnmnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:9:987878}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststqrqrqpopnmnmnmnmnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:78777777~}~}~}~}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststopopoooonmnmnmnmlklklklklklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:87878787}~}~}~}~}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststoopopoponmnmnmnmlklklklklklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUSSSSSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:87878787}~}~}~}~}|{|{|{|{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststpopopoponmnmnmnmlklklklkjijijijijijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:87878787}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststpopopoponmnmnmnmlklklklkjijijijijijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<9:9:9:9:87878787878787876565656543434343212121210/0/0/0/0/0/0/.-.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -878787776565656543434343212121210/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -777878786565656543434343212121210/0/0/0/.-.-.-.-.-.-.-,+,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -787878786565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -787878786565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+,+,+,+*)*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -787878786565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -787878786565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)*)*)*)('('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -787878786565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -777777876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('('('('&%&%&%&%&%$#$#$#$#"!"!"!"!         - - - -878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!       - - - -878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%&%&%&%$#$#$#$#$#"!"!"!"!     - - - -878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!     - - - -878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#$#$#$#"!"!"!"!"!     - - - -878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!"!"!"!"!     - - - -878777776565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!"!"!"!       - - - -787878786565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!             - - - -787878786565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!           - - - -787878786565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -787878786565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - - - -787878786565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - - - - - -787878776565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - - - - 777787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -877777876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -878787656565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -656565656565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -656565656565654343434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -656565654343434343434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -656565654343434343434321212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -656565654343434321212121212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -6565656543434343212121212121210/0/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -6565656543434343212121210/0/0/0/0/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - - - - ''(())**]]\\[[ZZ@AABBCCD]\\[[ZZY01122334mllkkjji !!""##$}||{{zzy |}}~~~~}} - - uuvvwwxx((''&&%%eeffgghh88776655UUVVWWXX44332211zz{{||}}}~~ mnnooppq0//..--,]^^__``a@??>>==>??@@A`__^^]]\-..//001feeddccb ++,,--..YYXWVUTSDEEFFGGHYXXWWVVU45566778ihhggffe$%%&&''(yxxwwvvu - -  ||{{zzyy ~~}} yyzz{{||$$##""!!iijjkkll44332211YYZZ[[\\00//..--~~ -qrrssttu,++**))(abbccdde<;;::998QRRSSTTULKKJJIIHABBCCDDE\[[ZZYYX12233445baa``__^//001122SRRQQPPOHIIJJKKLUTTSSRRQ899::;;>??@a``__^^],--..//0qppoonnm ~~}  tsrqpoon%%&&''((xxwwvvuu - - qqrrsstt,,++**))aabbccdd((''&&%%yzz{{||}$##""!! ijjkkllm43322110YZZ[[\\]DCCBBAA@IJJKKLLMTSSRRQQP9::;;<<=ZYYSSRRQ~~}}||77==>>??KJJIIHHGPQQRRSSTMLLKKJJI@AABBCCD]\\[[ZZY01122334mllkkjji !!""##$}||{{zzynmmllkkj))**++,,ttssrrqq - - uuvvwwxx((''&&%%eeffgghh$$##""!! }~~ mnnooppq0//..--,]^^__``a@??>>==>??@@AQPPOONNM~~}} {{zzyyxx@@AABBCCGFFEEDDCTUUVVWWXIHHGGFFEDEEFFGGHYXXWWVVU45566778ihhggffe$%%&&''(yxxwwvvujiihhggf--..//00ppoonnmm ~~}} yyzz{{||$$##""!!iijjkkll - - qrrssttu,++**))(abbccdde<;;::998QRRSSTTULKKJJIIHABBCCDDEMLLKKJJI||{{zzyy!!""##$$wwvvuuooDDEEFFGGCBBAA@@?XYYZZ[[\EDDCCBBAHIIJJKKLUTTSSRRQ899::;;>==<;:\]]^^__`A@@??>>=LMMNNOOPQPPOONNM<==>>??@a``__^^],--..//0qppoonnm ~~} "##$$%%&baa``__^55667788hhggffee%%&&''((xxwwvvuu - - qqrrsstt yzz{{||}$##""!! ijjkkllm43322110YZZ[[\\]DCCBBAA@IJJKKLLMEDDCCBBAttssrrqq))**++,,jjiihhggLLMMNNOO98776655`aabbccd=<<;;::9PQQRRSSTMLLKKJJI@AABBCCD]\\[[ZZY01122334mllkkjji !!""##$}||{{zzy&''(())*^]]\\[[Z99::;;<>==>=ppoonnmm--..//00ffeeddccPPQQRRSS44332211deeffggh98877665TUUVVWWXIHHGGFFEDEEFFGGHYXXWWVVU45566778ihhggffe$%%&&''(yxxwwvvu*++,,--.ZYYXWVUT==>>??@@``__^^]]--..//00ppoonnmm ~~}} yyzz{{|| - -  - - qrrssttu,++**))(abbccdde<;;::998QRRSSTTU=7766554llkkjjii11223344bbaa``__YYZZ[[\\00//..--hiijjkkl54433221XYYZZ[[\EDDCCBBAHIIJJKKLUTTSSRRQ899::;;>=LMMNNOOPQPPOONNM<==>>??@a``__^^],--..//0qppoonnm |{{zzyyx23344556OONNMMLLEEFFGGHHXXWWVVUU55667788hhggffee%%&&''((xxwwvvuu - -  |{{zzyyx !~~}}| yzz{{||}$##""!! ijjkkllm43322110YZZ[[\\]0//..--,ddccbbaa99::;;<>?KKJJIIHHIIJJKKLLTTSSRRQQ99::;;<>??@@QQPPOONNeeffgghh$$##""!!tuuvvwwx)((''&&%deeffggh98877665TUUVVWWXIHHGGFFEDEEFFGGHYXXWWVVU45566778ihhggffe$%%&&''(onnmmllk?@@AABBCGGFFEEDDMMNNOOPPPPOONNMM==>>??@@``__^^]]--..//00ppoonnmm ~~}} srqpoonn%&&''(()xwwvvuut - - qrrssttu,++**))(abbccdde(''&&%%$\\[[ZZYYAABBCCDDMMLLKKJJiijjkkll xyyzz{{|%$$##""!hiijjkkl54433221XYYZZ[[\EDDCCBBAHIIJJKKLUTTSSRRQ899::;;>=LMMNNOOPQPPOONNM<==>>??@a``__^^],--..//0gffeeddcGHHIIJJK??>>==<;UUVVWWXXHHGGFFEEEEFFGGHHXXWWVVUU55667788hhggffee%%&&''((xxwwvvuuiihhggff-..//001poonnmml !~~}}| yzz{{||}$##""!! ijjkkllmLMMNNOOPTTSSRRQQIIJJKKLLEEDDCCBBvvwwxxyypqqrrsst-,,++**)`aabbccd=<<;;::9PQQRRSSTMLLKKJJI@AABBCCD]\\[[ZZY01122334cbbaa``_KLLMMNNO:9877665YYZZ[[\\DDCCBBAAIIJJKKLLTTSSRRQQ99::;;<>zz{{||}}tuuvvwwx)((''&&%deeffggh98877665TUUVVWWXIHHGGFFEDEEFFGGHYXXWWVVU45566778_^^]]\\[OPPQQRRS54433221]]^^__``@@??>>==MMNNOOPPPPOONNMM==>>??@@``__^^]]--..//00ppoonnmm ~~}} ##$$%%&&aa``__^^56677889hggffeed%&&''(()xwwvvuut - - qrrssttuYZZ[[\\]LLKKJJIIQQRRSSTT==776655~~ -xyyzz{{|%$$##""!hiijjkkl54433221XYYZZ[[\EDDCCBBAHIIJJKKLUTTSSRRQ899::;;<[ZZYYSSRSYYZZ[[\100//..-aabbccdd<<;;::99QQRRSSTTLLKKJJIIAABBCCDD\\[[ZZYY11223344llkkjjii!!""##$$||{{zzyy''(())**]]\\[[ZZ9::;;<<=dccbbaa`)**++,,-tssrrqqp - - uvvwwxxy ]^^__``aHHGGFFEEUUVVWWXX44332211 -  |}}~~! lmmnnoop100//..-\]]^^__`A@@??>>=LMMNNOOPQPPOONNM<==>>??@RQQPPOON\]]^^__`-,,++**)eeffgghh88776655UUVVWWXXHHGGFFEEEEFFGGHHXXWWVVUU55667788hhggffee%%&&''((xxwwvvuu++,,--..YYXWVUTS=>>??@@A`__^^]]\-..//001poonnmml !~~}}| yzz{{||} - - abbccddeDDCCBBAAYYZZ[[\\00//..-- - - pqqrrsst-,,++**)`aabbccd=<<;;::9PQQRRSSTMLLKKJJI@AABBCCDNMMLLKKJ`aabbccd)((''&&%iijjkkll44332211YYZZ[[\\DDCCBBAAIIJJKKLLTTSSRRQQ99::;;<>==]]^^__``,,++**)) - - tuuvvwwx)((''&&%deeffggh98877665TUUVVWWXIHHGGFFEDEEFFGGHJIIHHGGFdeeffggh%$$##""!mmnnoopp00//..--]]^^__``@@??>>==MMNNOOPPPPOONNMM==>>??@@``__^^]]--..//00ppoonnmm {{zzyyxx33445566ONNMMLLKEFFGGHHIXWWVVUUT56677889hggffeed%&&''(()xwwvvuut - -  -ijjkkllm<<;;::99aabbccdd((''&&%% xyyzz{{|%$$##""!hiijjkkl54433221XYYZZ[[\EDDCCBBAHIIJJKKLFEEDDCCBhiijjkkl! qqrrsstt,,++**))aabbccdd<<;;::99QQRRSSTTLLKKJJIIAABBCCDD\\[[ZZYY11223344llkkjjii!!""##$$wwvvuuoo77==>>??KJJIIHHGIJJKKLLMTSSRRQQP9::;;<<=dccbbaa`)**++,,-tssrrqqp - -  - mnnoouuv88776655eeffgghh$$##""!! |}}~~! lmmnnoop100//..-\]]^^__`A@@??>>=LMMNNOOPBAA@@??>lmmnnoouuuvvwwxx((''&&%%eeffgghh88776655UUVVWWXXHHGGFFEEEEFFGGHHXXWWVVUU55667788hhggffee%%&&''((nnmmllkk@@AABBCCGFFEEDDCMNNOOPPQPOONNMML=>>??@@A`__^^]]\-..//001poonnmml !~~}}| vwwxxyyz44332211iijjkkll - - pqqrrsst-,,++**)`aabbccd=<<;;::9PQQRRSST>==77665uvvwwxxyyyzz{{||$$##""!!iijjkkll44332211YYZZ[[\\DDCCBBAAIIJJKKLLTTSSRRQQ99::;;<>==MMNNOOPPPPOONNMM==>>??@@``__^^]]--..//00ffeeddccHHIIJJKK?>>==<;:UVVWWXXYHGGFFEEDEFFGGHHIXWWVVUUT56677889hggffeed%&&''(()xwwvvuut ~,,++**))qqrrsstt ~~} xyyzz{{|%$$##""!hiijjkkl54433221XYYZZ[[\100//..-}~~ qqrrsstt,,++**))aabbccdd<<;;::99QQRRSSTTLLKKJJIIAABBCCDD\\[[ZZYY11223344bbaa``__LLMMNNOO98776655YZZ[[\\]DCCBBAA@IJJKKLLMTSSRRQQP9::;;<<=dccbbaa`)**++,,-tssrrqqp - - !!""#((''&&%%uuvvwwxx ~~}}| !!""##$}||{{zzy |}}~~! lmmnnoop100//..-\]]^^__`-,,++**) - - uuvvwwxx((''&&%%eeffgghh88776655UUVVWWXXHHGGFFEEEEFFGGHHXXWWVVUU55667788^^]]\\[[PPQQRRSS44332211]^^__``a@??>>==>??@@A`__^^]]\-..//001poonnmml !~~}}| #$$%%&&'$$##""!!yyzz{{|| - - |{{zzyyx$%%&&''(yxxwwvvu - - pqqrrsst-,,++**)`aabbccd)((''&&%yyzz{{||$$##""!!iijjkkll44332211YYZZ[[\\DDCCBBAAIIJJKKLLTTSSRRQQ99::;;<>==MMNNOOPPPPOONNMM==>>??@@QQPPOONN]]^^__``,,++**))effgghhi87766554UVVWWXXYHGGFFEEDEFFGGHHIXWWVVUUT56677889hggffeed%&&''(()xwwvvuut+,,--../srqpoonn,--..//0qppoonnm ~~} xyyzz{{|%$$##""!hiijjkkl! - - qqrrsstt,,++**))aabbccdd<<;;::99QQRRSSTTLLKKJJIIAABBCCDDMMLLKKJJaabbccdd((''&&%%ijjkkllm43322110YZZ[[\\]DCCBBAA@IJJKKLLMTSSRRQQP9::;;<<=dccbbaa`)**++,,-tssrrqqp~~}}||{/0011223mmllkkjj01122334mllkkjji !!""##$}||{{zzy |}}~~! lmmnnoop - - uuvvwwxx((''&&%%eeffgghh88776655UUVVWWXXHHGGFFEEEEFFGGHHIIHHGGFFeeffgghh$$##""!!mnnooppq0//..--,]^^__``a@??>>==>??@@A`__^^]]\-..//001poonnmml !{zzyyxxw34455667iihhggff45566778ihhggffe$%%&&''(yxxwwvvu - - pqqrrsst yyzz{{||$$##""!!iijjkkll44332211YYZZ[[\\DDCCBBAAIIJJKKLLEEDDCCBBiijjkkll qrrssttu,++**))(abbccdde<;;::998QRRSSTTULKKJJIIHABBCCDDE\[[ZZYYX12233445lkkjjiih!""##$$%wvvuuoon7==>>??@ !!""eeddccbb899::;;>==MMNNOOPPAA@@??>>mmnnoouuuvvwwxxy(''&&%%$effgghhi87766554UVVWWXXYHGGFFEEDEFFGGHHIXWWVVUUT56677889hggffeed%&&''(()nmmllkkj@AABBCCD - - ##$$%%&&aa``__^^<==>>??@a``__^^],--..//0qppoonnm ~~} xyyzz{{| - -  - - qqrrsstt,,++**))aabbccdd<<;;::99QQRRSSTT==776655vvwwxxyyyzz{{||}$##""!! ijjkkllm43322110YZZ[[\\]DCCBBAA@IJJKKLLMTSSRRQQP9::;;<<=dccbbaa`)**++,,-jiihhggfDEEFFGGH~~}}||{{zzyyxx !!~~}}||zz{{||}}##""!! jjkkllmm33221100ZZ[[\\]]//..--,, - - rssttuuv+**))(('bccddeef;::99887RSSTTUUVKJJIIHHGBCCDDEEFIHHGGFFEmnnoouuvwwvvuuts""##$$%%{{zzyyxx ~~nnooppqq//..--,,^^__``aa++**))(( vwwxxyyz'&&%%$$#fgghhiij76655443VWWXXYYZGFFEEDDCFGGHHIIJEDDCCBBAvwwxxyyz rqpoonnm&&''(())wwvvuutt - - rrssttuu++**))((bbccddee''&&%%$$z{{||}}~#""!! jkkllmmn3221100/Z[[\\]]^CBBAA@@?JKKLLMMNA@@??>>=z{{||}}~ - - mllkkjji**++,,--ssrrqqpp - - vvwwxxyy''&&%%$$ffgghhii##""!! ~nooppqqr/..--,,+^__``aab?>>==<<;NOOPPQQR=7766554~ - - ihhggffe..//0011oonnmmll !!~~}}||zz{{||}}##""!! jjkkllmm - - - rssttuuv+**))(('bccddeef;::99887RSSTTUUV43322110 eddccbba22334455kkjjiihh""##$$%%{{zzyyxx ~~nnooppqq - vwwxxyyz'&&%%$$#fgghhiij76655443VWWXXYYZ0//..--,a``__^^]66778899ggffeedd&&''(())wwvvuutt - - rrssttuuz{{||}}~#""!! jkkllmmn3221100/Z[[\\]]^,++**))(]\\[[ZZY::;;<<==ccbbaa``**++,,--ssrrqqpp - - vvwwxxyy  ~nooppqqr/..--,,+^__``aab(''&&%%$YXWVUTSS>>??@@AA__^^]]\\..//0011oonnmmll !!~~}}||zz{{||}} - -  - - - rssttuuv+**))(('bccddeef$##""!!~~} RRQQPPOOBBCCDDEE[[ZZYYXX22334455kkjjiihh""##$$%%{{zzyyxx ~~~~}}||{ - vwwxxyyz'&&%%$$#fgghhiij}||{{zzy !!""##$NNMMLLKKFFGGHHIIWWVVUUTT66778899ggffeedd&&''(())wwvvuutt - -  - -{zzyyxxw !!"~~}}||{z{{||}}~#""!! jkkllmmnyxxwwvvu$%%&&''(JJIIHHGGJJKKLLMMSSRRQQPP::;;<<==ccbbaa``**++,,--ssrrqqpp - -  wvvuutsr"##$$%%&{zzyyxxw ~nooppqqruttssrrq())**++,FFEEDDCCNNOOPPQQOONNMMLL>>??@@AA__^^]]\\..//0011oonnmmll !!~~}}||qpoonnmm&''(())*wvvuutts - - - rssttuuv qppoonnm,--..//0BBAA@@??RRSSTTUUKKJJIIHHBBCCDDEE[[ZZYYXX22334455kkjjiihh""##$$%%{{zzyyxxllkkjjii*++,,--.srrqqppo - vwwxxyyz - - -mllkkjji01122334>>==<;:9VVWWXXYYGGFFEEDDFFGGHHIIWWVVUUTT66778899ggffeedd&&''(())wwvvuutt hhggffee.//00112onnmmllk !!"~~}}||{z{{||}}~ - ihhggffe4556677887766554ZZ[[\\]]CCBBAA@@JJKKLLMMSSRRQQPP::;;<<==ccbbaa``**++,,--ssrrqqpp - - !!""##ddccbbaa23344556kjjiihhg"##$$%%&{zzyyxxw ~eddccbba899::;;<43322110^^__``aa??>>==<>??@@AA__^^]]\\..//0011oonnmmll !!~~}}||$$%%&&''``__^^]]6778899:gffeeddc&''(())*wvvuutts - - - a``__^^]<==>>??@0//..--,bbccddee;;::9988RRSSTTUUKKJJIIHHBBCCDDEE[[ZZYYXX22334455kkjjiihh""##$$%%{{zzyyxx(())**++\\[[ZZYY:;;<<==>cbbaa``_*++,,--.srrqqppo - ]\\[[ZZY@AABBCCD,++**))(ffgghhii77665544VVWWXXYYGGFFEEDDFFGGHHIIWWVVUUTT66778899ggffeedd&&''(())wwvvuutt,,--..//XWVUTSSR>??@@AAB_^^]]\\[.//00112onnmmllk !!"~~}}||{!!""#YXXWWVVUDEEFFGGH(''&&%%$jjkkllmm33221100ZZ[[\\]]CCBBAA@@JJKKLLMMSSRRQQPP::;;<<==ccbbaa``**++,,--ssrrqqpp~~}}||{{00112233RQQPPOONBCCDDEEF[ZZYYXXW23344556kjjiihhg"##$$%%&{zzyyxxw#$$%%&&'UTTSSRRQHIIJJKKL$##""!! nnooppqq//..--,,^^__``aa??>>==<>??@@AA__^^]]\\..//0011oonnmmll !!zzyyxxww44556677NMMLLKKJFGGHHIIJWVVUUTTS6778899:gffeeddc&''(())*wvvuutts -'(())**+QPPOONNMLMMNNOOPrrssttuu++**))((bbccddee;;::9988RRSSTTUUKKJJIIHHBBCCDDEE[[ZZYYXX22334455kkjjiihh""##$$%%vvuuoonn==>>??@@JIIHHGGFJKKLLMMNSRRQQPPO:;;<<==>cbbaa``_*++,,--.srrqqppo - +,,--../MLLKKJJIPQQRRSSTvvwwxxyy''&&%%$$ffgghhii77665544VVWWXXYYGGFFEEDDFFGGHHIIWWVVUUTT66778899ggffeedd&&''(())mmllkkjjAABBCCDDFEEDDCCBNOOPPQQRONNMMLLK>??@@AAB_^^]]\\[.//00112onnmmllk !!"~~}}||{/0011223IHHGGFFETUUVVWWXzz{{||}}##""!! jjkkllmm33221100ZZ[[\\]]CCBBAA@@JJKKLLMMSSRRQQPP::;;<<==ccbbaa``**++,,--iihhggffEEFFGGHHBAA@@??>RSSTTUUVKJJIIHHGBCCDDEEF[ZZYYXXW23344556kjjiihhg"##$$%%&{zzyyxxw34455667EDDCCBBAXYYZZ[[\~~nnooppqq//..--,,^^__``aa??>>==<>??@@AA__^^]]\\..//0011eeddccbbIIJJKKLL>==<;:98VWWXXYYZGFFEEDDCFGGHHIIJWVVUUTTS6778899:gffeeddc&''(())*wvvuutts~~}}||{7==>>??@A@@??>>=\]]^^__` - -rrssttuu++**))((bbccddee;;::9988RRSSTTUUKKJJIIHHBBCCDDEE[[ZZYYXX22334455aa``__^^MMNNOOPP77665544Z[[\\]]^CBBAA@@?JKKLLMMNSRRQQPPO:;;<<==>cbbaa``_*++,,--.srrqqppo{zzyyxxw@AABBCCD=<<;;::9`aabbccd vvwwxxyy''&&%%$$ffgghhii77665544VVWWXXYYGGFFEEDDFFGGHHIIWWVVUUTT66778899]]\\[[ZZQQRRSSYY33221100^__``aab?>>==<<;NOOPPQQRONNMMLLK>??@@AAB_^^]]\\[.//00112onnmmllk !!"wvvuuoonDEEFFGGH98877665deeffgghzz{{||}}##""!! jjkkllmm33221100ZZ[[\\]]CCBBAA@@JJKKLLMMSSRRQQPP::;;<<==YYSSRRQQZZ[[\\]]//..--,,bccddeef;::99887RSSTTUUVKJJIIHHGBCCDDEEF[ZZYYXXW23344556kjjiihhg"##$$%%&nmmllkkjHIIJJKKL54433221hiijjkkl ~~nnooppqq//..--,,^^__``aa??>>==<>??@@AAPPOONNMM^^__``aa++**))((fgghhiij76655443VWWXXYYZGFFEEDDCFGGHHIIJWVVUUTTS6778899:gffeeddc&''(())*jiihhggfLMMNNOOP100//..-lmmnnoop - - rrssttuu++**))((bbccddee;;::9988RRSSTTUUKKJJIIHHBBCCDDEELLKKJJIIbbccddee''&&%%$$jkkllmmn3221100/Z[[\\]]^CBBAA@@?JKKLLMMNSRRQQPPO:;;<<==>cbbaa``_*++,,--.feeddccbPQQRRSSY-,,++**)pqqrrsst - - vvwwxxyy''&&%%$$ffgghhii77665544VVWWXXYYGGFFEEDDFFGGHHIIHHGGFFEEffgghhii##""!! nooppqqr/..--,,+^__``aab?>>==<<;NOOPPQQRONNMMLLK>??@@AAB_^^]]\\[.//00112baa``__^YZZ[[\\])((''&&%tuuvvwwxzz{{||}}##""!! jjkkllmm33221100ZZ[[\\]]CCBBAA@@JJKKLLMMDDCCBBAAjjkkllmmrssttuuv+**))(('bccddeef;::99887RSSTTUUVKJJIIHHGBCCDDEEF[ZZYYXXW23344556^]]\\[[Z]^^__``a%$$##""!xyyzz{{| ~~nnooppqq//..--,,^^__``aa??>>==<>==nnoouuvvvwwxxyyz'&&%%$$#fgghhiij76655443VWWXXYYZGFFEEDDCFGGHHIIJWVVUUTTS6778899:ZYYSSRRQabbccdde! |}}~~ - - rrssttuu++**))((bbccddee;;::9988RRSSTTUU77665544wwxxyyzzz{{||}}~#""!! jkkllmmn3221100/Z[[\\]]^CBBAA@@?JKKLLMMNSRRQQPPO:;;<<==>QPPOONNMeffgghhi - - vvwwxxyy''&&%%$$ffgghhii77665544VVWWXXYY33221100{{||}}~~ ~nooppqqr/..--,,+^__``aab?>>==<<;NOOPPQQRONNMMLLK>??@@AABMLLKKJJIijjkkllmfpvp˂rJltpfH~pZHAbJtArdf~HrXQJ`ۉbdQZ|f`vXے`JXJtArdf~HnrXQJ`Zp˂AJltfH~ˁJXQrf~HXQJ`ےbdQZ|`vXnے`JXQZHAےtlJnXv`p˂rJltH~fZHAbtlJfpvJ`ےrtAJl~f`ZHAbۉlJtnXv`ˑ˂rXJlt~f`ZHAbۉlJtnXv`ˑ˂rXrtAJlnXv`XQJ`ےdrtAJf`vJQr|ZdQfpvbHAdrtnvpQr˂p|ZdQfpvےHArXQJ`ۉbdQZ|f`vXbtl|fpvbHAZdrtAvpfr˂p`JXQrtArdf~HXQJ`ےbdQZ|`vXnے`JXQtArdnXv`bHAZptbdQvXn`JXQArd|f~HQJ`ےbdQZ|vXn`JXQArd|f~HQJ`ےtbdQf~HbHAZltbXnv˂pZHbtlnXv`Zp˂AJltfH~ˑZHAbbtlnXv`Zp˂JltdtAnvpZdQbtnXv`p˂rJltH~fZHAbbtl|ZdQbfpvbHAZdrtAvpfr˂p|ZdQbf~H˂rXQZ|AJlvpfHr˂pZdQbtfpvbHAZpdrtAvpfHr˂pZdQbtfpvbHAZpZ|dfpvp˂rdQZ|pfH~Abے`JtArdf~HrXQJ`ۉbdQZ|f`vXے`JXJtArdf~HrXQJ`ۉbdQZ|JltfH~ˉlJtf~fpXQJ`ےbdQZ|`vXnے`JXQJtAdtlJnXv`p˂rJltH~fZHAbtlJfpvJ`ےtb~f`ZHAbۉlJtnXv`ˑ˂rXJlt~f`ZHAbۉlJtnXv`ˑ˂rXrtAdQZ|nXv`XQJ`ےdrtAJvpJXQr|ZdQfpvbHAdrtnvpQr˂p|ZdQfpvbHAdrtbnvpf`vXArd|vnXbHAZdrtAvpfr˂p|ZdQbfpvfHfXQJ`ےbdQZ|`vXnے`JXQtArdnXv`bHAXQJnvpvXn`JXQArd|f~HQJ`ےbdQZ|vXn`JXQArd|f~HQJ`ےdrtf~HbHAZltbfH~˂pZHbtlnXv`Zp˂AJltfH~ˑZHAbbtlnXv`Zp˂AJltfHnvpZdQbtv`fp˂rJltH~fZHAbtlJnXv`pvnbHAZdrtAvpfr˂p|ZdQbpvn`ےJlfHf`vpfr˂pZdQbtfpvbHAZpdrtAvpfHr˂pZdQbtfpvbHAZpAJltfpvp˂rdQZ|lf`vXAbے`JtArdf~HrXQJ`ۉbdQZ|f`vXے`JXJtArdf~HrXQJ`ۉbdQZ|f`vXfے`JXl|~HfpXQJ`ےbdQZ|`vXnے`JXQtArdf~HrXQJ`p˂rJltH~fZHAbtlJXv`ftbQZvXn`JXQZHAے`lJtnXv`ˑ˂rXJlt~f`ZHAbۉlJtnXv`ˑ˂rXbdQZ|nXv`XQJ`ےtbdQnvpJXQr|ZdQfpvbHAdrtnvpQr˂p|ZdQfpvbHAdrtnvpQHAbZdQbtvnXbHAZdrtAvpfr˂p|ZdQbfpvےHAZXQJ`ےbdQZ|`vXnے`JXQtArd~HfdrtAvpfHr˂pJXQrArd|f~HQJ`ےbdQZ|vXn`JXQArd|f~HQJ`ےdrtf~HbHAZZ|dfH~ZHAbbtlnXv`Zp˂AJltfH~ˑZHAbbtlnXv`Zp˂AJltfH~˒`JXQlJtAv`fp˂rJltH~fZHAbtlJnXv`p˂rJltdtAJvpfr˂p|ZdQbpvnJlt~f`ZHAbbtlZdQbtfpvbHAZpdrtAvpfHr˂pZdQbtfpvbHAZpAJltfpvp˂rrtAJlf`vXے`JXQJtArdf~HrXQJ`ۉbdQZ|f`vXے`JXJtArdf~HrXQJ`ۉbdQZ|f`vXr˂prd|~HfvnXQJ`ےbdQZ|`vXnے`JXQtArdf~HXQJ`ےbdQZ|ltbH~fZHAbtlJXv`pbdQZ|vXn`JXQJtAd|lJnXv`ˑ˂rXJlt~f`ZHAbۉlJtnXv`ˑ˂rXdrtAnXv`XQJ`ےtbdQH~fr˂p|ZdQfpvbHAdrtnvpQr˂p|ZdQfpvbHAdrtnvpZHAbZdQbtXv`fbHAZdrtAvpfr˂p|ZdQbfpvbHAZdrtAnvp`vXnے`JXQtArdvnrdrtAvpfHr˂pZdQbtfpvfHfpQJ`ےbdQZ|vXn`JXQArd|f~HQJ`ےJltf~HbHAZZ|d`vXnZHAbbtlnXv`Zp˂AJltfH~ˑZHAbbtlnXv`Zp˂AJltfH~˒`JXQlJtA~Hfp˂rJltH~fZHAbtlJnXv`p˂rJltfHfvpfr˂p|ZdQbXQJ`pJlt~f`ZHAbۉlJtnXv`˝vnbHAZpdrtAvpfHr˂pZdQbtfpvbHAZpbdQZ|fpvp˂rrtAdQZvpfے`JXQJtArdf~HrXQJ`ۉbdQZ|f`vXے`JXJtArdf~HrXQJ`ۉbdQZ|f`vXr˂p`rdtlpvnXQJ`ےbdQZ|`vXnے`JXQtArdf~HXQJ`ےbdQZ|`vXnے`JXQZHAےtlJ˂rXQbdQZ|vXn`JXQArd|f~HrXQJ`ۑ˂rXJlt~f`ZHAbۉlJtnXv`ˑ˂rXdrtAnXv`XQJ`ے|drH~fr˂p|ZdQfpvbHAdrtnvpQr˂p|ZdQfpvbHAdrtnvpJXQrJtArdXv`fbHAZdrtAvpfr˂p|ZdQbfpvbHAZdrtAvpfr˂p`JXQrtArdJ`ےrAJl璅vpfHr˂pZdQbtfpv㒐HAZpQJ`ےbdQZ|vXn`JXQArd|f~HQJ`ےJltf~HbHAZtAJl`vXnZAb`btlnXv`Zp˂AJltfH~ˑZHAbbtlnXv`Zp˂AJltfH~ˉ˂pZH|Zd~Hfp˂rJltH~fZHAbtlJnXv`p˂rJltH~fZHAbbtl|ZdQbbHAZptbdQZ~f`ZHAbۉlJtnXv`ˑ˂rXJltdtAJlvpfHr˂pZdQbtfpvbHAZpbdQZ|lnvpfpvp˂rtbdQZvp`JXQrJtArdf~HrXQJ`ۉbdQZ|f`vXے`JXJtArdf~HrXQJ`ۉbdQZ|f`vXAbے`QbtlpvnXQJ`ےbdQZ|`vXnے`JXQtArdf~HXQJ`ےbdQZ|`vXnے`JXQJtAdtlJ˂rXQ|drvXn`JXQArd|f~HQJ`ےbdQZ|tb~f`ZHAbۉlJtnXv`ˑ˂rXtbdfH~nXv`XQJ`ے|drvXnpZHA|ZdQfpvbHAdrtnvpQr˂p|ZdQfpvbHAdrtnvpJXQrJtArdvf~HbHAZdrtAvpfr˂p|ZdQbfpvbHAZdrtAvpfr˂p|ZdQbfpvJ`p˂tAJl璅vpfHr˂pZdQbtfpvbHAZpdrtAnvpvXn`JXQArd|f~HQJ`ےQZ|df`vXHf~HbHAZtAJlvpfHbے`btlnXv`Zp˂AJltfH~ˑZHAbbtlnXv`Zp˂AJltfH~ˉ˂pZH|Zdfpvp˂rJltH~fZHAbtlJnXv`p˂rJltH~fZHAbtlJ~HfrXQJtbdQZ~f`ZHAbۉlJtnXv`ˑ˂rXJltfHf`vpfr˂pZdQbtfpvbHAZprtAJl~f`fpvp˂rtdrtA~f`JXQrJtArdf~HrXQJ`ۉbdQZ|f`vXے`JXJtArdf~HrXQJ`ۉbdQZ|f`vXAbQtArdnXv`XQJ`ےbdQZ|`vXnے`JXQtArdf~HXQJ`ےbdQZ|`vXnے`JXQtArdpvn`ےb|drvXn`JXQArd|f~HQJ`ےbdQZ|vXn`JXQZHAے`lJtnXv`ˑ˂rXtbdvXnnXv`XQJ`ےJltvXnpZHAb|ZdQfpvbHAdrtnvpQr˂p|ZdQfpvbHAdrtnvppZHA|ZdQf~HbHAZdrtAvpfr˂p|ZdQbfpvbHAZdrtAvpfr˂p|ZdQbXv`fHAZp˂tAJbdvpfHr˂pZdQbtfpvbHAZpdrtAvpfHr˂pJXQrArd|f~HQJ`ےQZ|lvpfHf~HbHAZbdQZ|vpfHJAdbtlnXv`Zp˂AJltfH~ˑZHAbbtlnXv`Zp˂AJltfH~bے`btlfpvp˂rJltH~fZHAbtlJnXv`p˂rJltH~fZHAbtlJ~HfrXQJQZ|d~f`ZHAbۉlJtnXv`ˑ˂rXJlt~f`ZHAbbtlZdQbtfpvbHAZptbn~f`fpvp˂rdrtA~v|ZdQJfpvfHrXQJ`ۉbdQZ|f`vXے`JXJtArdf~HrXQJ`ۉbdQZ|f`vXJXQrJtArdnXv`XQJ`ےbdQZ|`vXnے`JXQtArdf~HXQJ`ےbdQZ|`vXnے`JXQtArdpvn`ےbrtAJlvXn`JXQArd|f~HQJ`ےbdQZ|vXn`JXQJtAd|lJnXv`ˑ˂rXvp`vXnnXv`XQJ`ےJltpfے`btlnXv`fpv㒐bHAdrtnvpQr˂p|ZdQfpvbHAdrtnvppZHA|ZdQf~fpbHAZdrtAvpfr˂p|ZdQbfpvbHAZdrtAvpfr˂p|ZdQbXv`pHAXQJ`tbdvpfHr˂pZdQbtfpvbHAZpdrtAvpfHr˂pZdQbtfpvfHfpQJ`ےvXnۅvp`f~HbHAZbdQZ|JXQrJtArdf~HnrXQJ`Zp˂AJltfH~ˑZHAbbtlnXv`Zp˂AJltfH~bے`btl|vnXp˂rJltH~fZHAbtlJnXv`p˂rJltH~fZHAbtlJvnXےbHAQZ|d~f`ZHAbۉlJtnXv`ˑ˂rXJlt~f`ZHAbۉlJtnXv`˝vnbHAZpvpfHvXnfpvp˂rltbZHAbۂ|ZdQfpvےHArXQJ`ۉbdQZ|f`vXے`JXJtArdf~HrXQJ`ۉbdQZ|f`vXJXQHAbZdQbtv`fXQJ`ےbdQZ|`vXnے`JXQtArdf~HXQJ`ےbdQZ|`vXnے`JXQtArdv`fZp˂rtAJlvXn`JXQArd|f~HQJ`ےbdQZ|vXn`JXQArd|f~HrXQJ`ۑ˂rX~f`vpfHnXv`XQJ`ےdQZ|`JXQbtlnXv`Zp˂JltdtAnvpQr˂p|ZdQfpvbHAdrtnvpے`JXlJt~HfpbHAZdrtAvpfr˂p|ZdQbfpvbHAZdrtAvpfr˂p|ZdQb~HfprXQJ`tbQZvpfHr˂pZdQbtfpvbHAZpdrtAvpfHr˂pZdQbtfpv㒐HAZpQJ`ےvXn~f`f~HbHAZdrtAJr˂pJtArdf~HrXQJ`ۉbdQZ|JltfH~ˑZHAbbtlnXv`Zp˂AJltfH~Qr˂pArd|vnXp˂rJltH~fZHAbtlJnXv`p˂rJltH~fZHAbtlJvnXےbHAdrtA~f`ZHAbۉlJtnXv`ˑ˂rXJlt~f`ZHAbۉlJtnXv`ˑ˂rXJltdvp`vXvXnfpvp˂rltbZHAbۂ|ZdQfpvbHAdrtbnvpf`vXے`JXJtArdf~HrXQJ`ۉbdQZ|f`vXZHAbZdQbtv`ffXQJ`ےbdQZ|`vXnے`JXQtArdf~HXQJ`ےbdQZ|`vXnے`JXQtArdv`fZp˂JltvXn`JXQArd|f~HQJ`ےbdQZ|vXn`JXQArd|f~HQJ`ےrtAJlnvpvpfHnXv`XQJ`ےdQZ|``JXQbtlnXv`Zp˂AJltfHnvpQr˂p|ZdQfpvbHAdrtnvpے`JXlJtpvnbHAZdrtAvpfr˂p|ZdQbfpvbHAZdrtAvpfr˂p|ZdQb~HXvbHAZbdQZ|vpfHr˂pZdQbtfpvbHAZpdrtAvpfHr˂pZdQbtfpvbHAZptbdfH~~vpf~HbHAZvXnr˂pZJtArdf~HrXQJ`ۉbdQZ|f`vXfے`JXZHAbtlnXv`Zp˂AJltfH~Qr˂pArdtrXQJ`p˂rJltH~fZHAbtlJnXv`p˂rJltH~fZHAbtlJ`f~p˂rdrtA~f`ZHAbۉlJtnXv`ˑ˂rXJlt~f`ZHAbۉlJtnXv`ˑ˂rXQZ|df`vXfے`fpvp˂rvpfHAb`J|ZdQfpvbHAdrtnvpQr˂p`JXQJtArdf~HrXQJ`ۉbdQZ|f`vX`JXQlJfpےHAZXQJ`ےbdQZ|`vXnے`JXQtArdf~HXQJ`ےbdQZ|`vXnے`JXQtArdHfpvXQJ`ےJltvXn`JXQArd|f~HQJ`ےbdQZ|vXn`JXQArd|f~HQJ`ےrtAJlnvpJXQrZnXv`XQJ`ے~f`XQr˂btlnXv`Zp˂AJltfH~ˑZHAbrbtl|ZdQfpvbHAdrtnvpr˂pvnvp˂rJltdtAJvpfr˂p|ZdQbfpvbHAZdrtAvpfr˂p|ZdQbnXvbHAZbdQZ|vpfHr˂pZdQbtfpvbHAZpdrtAvpfHr˂pZdQbtfpvbHAZptbdfH~HAbےf~HbHAZvXnpZHAbJtArdf~HrXQJ`ۉbdQZ|f`vXے`JXJtAdbtlnXv`Zp˂AJltfH~ZHAbۍf~HXQJ`ےbdQZ|ltbH~fZHAbtlJnXv`p˂rJltH~fZHAbtlJ`f~p˂rrAJl~f`ZHAbۉlJtnXv`ˑ˂rXJlt~f`ZHAbۉlJtnXv`ˑ˂rXQZ|l畀vp`JXQrfpvp˂rvp`vے`J|ZdQfpvbHAdrtnvpQr˂p|ZdQJfpvfHrXQJ`ۉbdQZ|f`vX`JXQfpvbHAZdrtAnvp`vXnے`JXQtArdf~HXQJ`ےbdQZ|`vXnے`JXQtArdHfpvXQJ`ptbdQvXn`JXQArd|f~HQJ`ےbdQZ|vXn`JXQArd|f~HQJ`ےtbdQfH~ˀ˂pZnXv`XQJ`ےXnvXQr˂btlnXv`Zp˂AJltfH~ˑZHAbbtlnXv`fpv㒐bHAdrtnvpr˂p`nXv`p˂rJltfHfvpfr˂p|ZdQbfpvbHAZdrtAvpfr˂p|ZdQb~H˂rXQZ|dvpfHr˂pZdQbtfpvbHAZpdrtAvpfHr˂pZdQbtfpvbHAZpZ|df`vXHAbے`JXQrrd|~HfJ`ےdQZ|tbn~f`HAbےlJtAXv`f˂rXQltb~f`˂pZd|ZnXv`rXQtbd~f`Abے`lJtAv`frXQtbd~f`Qr˂pۑp`ZpfH~ㅀ˂pZAZdQbtpvnbHAZpdrtAJvpfvXn`JXQrrd|~HfJ`ےdQZ|vXnHAbےdQbt璍ffpJ`ےQZ|dvXnہJXQrrd|~HfpJ`ےQZ|dvXnۑZHAbQXb㉀f۝`vb`JXlJtAXv`f˂rXQltbHf`vpfے˂pZZdQbtpvnbHAZpdrtAJvpfH`JXQrlJtArvnrXbHAZp˙rtAJlvpfH˂pZHZdQbtvnXbHAZp˙rtAJlvpfHے`JXۑpJAHrXnvˍQr˂prd|~HfJ`ےdQZ|vXn`JXQrHAے`lJtAXv`f˂rXQltb~f`˂p`dtlQJ`ےrXQtbd~f`Abے`lJtAv`frXQtbd~f`QHAb󙐂ˁ`Zp|drZHAbZdQbtpvnbHAZpdrtAJvpfH˂pZJXQrbrd|~HfJ`ےdQZ|vXnJXQrJfpvHAZpJ`ےJlQZ|dvXnہJXQrrd|~HfpJ`ےQZ|dvXnے`JXQQXb㉀QtJlے`JXlJtAXv`f˂rXQltb~f`HAbےtlJZdQbtpvnbHAZpdrtAJvpfH˂pZHAnvfrXQtbdtAJlvpfH˂pZHZdQbtvnXbHAZp˙rtAJlvpfHr˂pۑpJAHtbAdZQr˂prd|~HfJ`ےdQZ|vXn`JXQrtAd|lJfXv`f˂rXQltb~f`bے`~HfpJ`ےQZ|dtbn~f`Abے`lJtAv`frXQtbd~f`ZHAbېf۝`v|drZHAbZdQbtpvnbHAZpdrtAJvpfH˂pZZdQbtpvnHfpJ`ےdQZ|vXnJXQrvnXbHAZp˙rtAJlvpfHvXnہJXQrrd|~HfpJ`ےQZ|dvXnے`JXQXnvˍQtJlJQrlJtAXv`f˂rXQltb~f`HAbےlJtAXv`fvnrbHAZpdrtAJvpfH˂p`Jv`frXQtbdf`vpfے`˂pZHZdQbtvnXbHAZp˙rtAJlvpfHr˂p`pfH~tbAdZ˂pZHArd|~HfJ`ےdQZ|vXn`JXQrrd|~HfXQJ`ے˂rXQltb~f`XQrbt~HfpJ`ےQZ|dvXnہJXQrAے`lJtAv`frXQtbd~f`JXQrf۝`v|drbے`ZdQbtpvnbHAZpdrtAJvpfH˂pZZdQbtpvnHAZpJ`ےJdQZ|vXnl|ZvnXbHAZp˙rtAJlvpfH˂pZHJXQrbtrd|~HfpJ`ےQZ|dvXnۉ˂pZHXnvˍQtJlJXQrlJtAXv`f˂rXQltb~f`HAbےlJtAXv`f˂rXQltbdtAJlvpfHdQbt璕v`f~rXQtbd~f`Abے`lJtZdQbtvnXbHAZp˙rtAJlvpfHAbے`pfH~tbAdZ˂pZHArd|~HfJ`ےdQZ|vXn`JXQrrd|~HfJ`ےdQZ|tbn~f`lJtArfpvJ`ےQZ|dvXnہJXQrAd|lJfpv`frXQtbd~f`JXQrf۝`v|drbے`ZdQbtpvnbHAZpdrtAJvpfH˂pZZdQbtpvnbHAZpdrtAJvpfvXnd|ZnXv`bHAZp˙rtAJlvpfH˂pZHZdQbtvnXHfpJ`ےQZ|dvXnۉ˂p`ZXnvˍQtJlJXQrlJtAXv`f˂rXQltb~f`HAbےlJtAXv`f˂rXQltbHf`vpfےdQbtf~HrXQtbd~f`Abے`lJtAv`fvnrXbHAZp˙rtAJlvpfHQXb㉀pfH~tbAdZZHAbrd|~HfJ`ےdQZ|vXn`JXQrrd|~HfJ`ےdQZ|vXn`JXQHAl|ZdQfpvJ`ےQZ|dvXnہJXQrrd|~HfpQJ`ےrXQtbd~f`ۑpJAHrf۝`v|dr`JXQZdQbtpvnbHAZpdrtAJvpfH˂pZZdQbtpvnbHAZpdrtAJvpfHbے`btlnXv`bHAZp˙rtAJlvpfH˂pZHZdQbtvnXHAZpJ`ےJlQZ|dvXn󙐂ˁ`ZXnvˍQtJlr˂plJtAXv`f˂rXQltb~f`HAbےlJtAXv`f˂rXQltb~f`JXQrJtArdf~HrXQtbd~f`Abے`lJtAv`frXQtbdtAJlvpfHQXb㉀pfH~tbAdZZHAbrd|~HfJ`ےdQZ|vXn`JXQrrd|~HfJ`ےdQZ|vXn˂pZHA|ZdQfvnXJ`ےQZ|dvXnہJXQrrd|~HfpJ`ےQZ|dtbn~f`ۑp`ZQf۝`v|dr`JXQZdQbtpvnbHAZpdrtAJvpfH˂pZZdQbtpvnbHAZpdrtAJvpfHbے`btlv`fbHAZp˙rtAJlvpfH˂pZHZdQbtvnXbHAZp˙rtAJlvpfHvXnXb㉀ۑXnvˍQtJlr˂pZlJtAXv`f˂rXQltb~f`HAbےlJtAXv`f˂rXQltb~f`JXQrJtArd~HfpۂrXQtbd~f`Abے`lJtAv`frXQtbdf`vpfZHpJAHrpfH~tbAdZAb`Jrd|~HfJ`ےdQZ|vXn`JXQrrd|~HfJ`ےdQZ|vXn˂p`JtlJvnXJ`ےQZ|dvXnہJXQrrd|~HfpJ`ےQZ|dvXnAbے`ˁ`ZQf۝`v|drXQr˂ZdQbtpvnbHAZpdrtAJvpfH˂pZZdQbtpvnbHAZpdrtAJvpfHXQr˂tArdv`fbHAZp˙rtAJlvpfH˂pZHZdQbtvnXbHAZp˙rtAJlvpfHJXQrXb㉀ۑXnvˍQtJlpZHAblJtAXv`f˂rXQltb~f`HAbےlJtAXv`f˂rXQltb~f`pZHAb|ZdQb~HfpۂrXQtbd~f`Abے`lJtAv`frXQtbd~f`˂pZHpJAHrpfH~tbAdZے`Jrd|~HfJ`ےdQZ|vXn`JXQrrd|~HfJ`ےdQZ|vXnے`JtlJvnvfJ`ےQZ|dvXnہJXQrrd|~HfpJ`ےQZ|dvXnAbے`ۑpJf۝`v|drXQr˂ZdQbtpvnbHAZpdrtAJvpfH˂pZZdQbtpvnbHAZpdrtAJvpfHXQr˂tArd~HfbHAZp˙rtAJlvpfH˂pZHZdQbtvnXbHAZp˙rtAJlvpfHJXQrAHr󙐂XnvˍQtJlpZA`lJtAXv`f˂rXQltb~f`HAbےlJtAXv`f˂rXQltb~f`pZHAb|ZdQtApvnrXQtbd~f`Abے`lJtAv`frXQtbd~f`˂p`ˁ`ZQXbpfH~tbAdZJXQrbrd|~HfJ`ےdQZ|vXn`JXQrrd|~HfJ`ےdQZ|vXn˂prd|Xv`fJ`ےQZ|dvXnہJXQrrd|~HfpJ`ےQZ|dvXnJXQr㉀ۑpJf۝`v|drtlJZdQbtpvnbHAZpdrtAJvpfH˂pZZdQbtpvnbHAZpdrtAJvpfHZHAbZdQbt~HfbHAZp˙rtAJlvpfH˂pZHZdQbtvnXbHAZp˙rtAJlvpfHpZHAAHr󙐂XnvˍQtJltAd|lJfXv`f˂rXQltb~f`HAbےlJtAXv`f˂rXQltb~f`ے`JXQlJtApvnrXQtbd~f`Abے`lJtAv`frXQtbd~f`bے`ˁ`ZQXApfH~tbAdZZdQbtpvnHfpJ`ےdQZ|vXn`JXQrrd|~HfJ`ےdQZ|vXnr˂prd|Xv`fJ`ےQZ|dvXnہJXQrrd|~HfpJ`ےQZ|dvXnJXQrHr󙐂ˁf۝`v|drlJtAXv`fvnrbHAZpdrtAJvpfH˂pZZdQbtpvnbHAZpdrtAJvpfHZHAbZdQbt~fpvbHAZp˙rtAJlvpfH˂pZHZdQbtvnXbHAZp˙rtAJlvpfHpZHA`ZQXbXnvˍQtJlrd|~HfXQJ`ے˂rXQltb~f`HAbےlJtAXv`f˂rXQltb~f`ے`JXQl|ZnXv`rXQtbd~f`Abے`lJtAv`frXQtbd~f`b˂pۑpJApfH~tbAdZZdQbtpvnHAZpJ`ےJdQZ|vXn`JXQrrd|~HfJ`ےdQZ|vXnHAbےdQbt璍f~HJ`ےQZ|dvXnہJXQrrd|~HfpJ`ےQZ|dvXnۑZHAbHr󙐂ˁf۝`v|drlJtAXv`f˂rXQltbdtAJlvpfH˂pZZdQbtpvnbHAZpdrtAJvpfH`JXQrlJtArfpvbHAZp˙rtAJlvpfH˂pZHZdQbtvnXbHAZp˙rtAJlvpfHے`JX`ZQXbXnvˍQtJltJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKK \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv33_1.dat b/mpdf/qrcode/data/qrv33_1.dat deleted file mode 100644 index 128d06b..0000000 --- a/mpdf/qrcode/data/qrv33_1.dat +++ /dev/null @@ -1,297 +0,0 @@ -}~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststqrqrqrqrpopopopoopopopopnmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSSSSSSTSTQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:78787878878787876565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!}~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvstststststststsrqrqrqrqrpopopopoopopopopnmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSSTSTSTSTQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:77777787877777876565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!}~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststqrqrqrqrqrqrqrqrpopopopoopopopopnmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSSTSTSTSTQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:87878787878787656565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!~}~}~}~}~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststqrqrqrqrqrqrqrqrooooopopopopopopnmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSSTSTSTSTQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:87878787656565656565656565656543434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!}~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststqrqrqrqrqrqrqrqropopopopooooooponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSSTSTSTSTQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:9:9:9:9:87878787656565656565656543434343434343434343432121212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!}~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststqrqrqrqrqrqrqrqropopopoppopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSSSSSSTSTSSSSSTQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:9:987878878787876565656565656565434343434343434321212121212121212121210/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!}~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststqrqrqrqrqrqrqrqropopopoppopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:78777777878787876565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!}~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvuvuvuvuvststststqrqrqrqrqrqrqrqropopopoppopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUSTSTSTSTQRQRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:87878787878777776565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!}~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvutstststststststqrqrqrqrqrqrqrqropopopoppopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUSTSTSTSTQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:87878787787878786565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!}~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqropoooooopopooooonmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUTSTSSTSTSTSTQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:87878787787878786565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!}~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqrpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSSSSSSTSTSTSTQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;<;<9:9:9:9:87878787787878786565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('('('('&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!}~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqrpopopoponmnmnmnmnmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUSTSTSTSTSTSTSSSSQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<;<;<;:9:9:9:9:9:87878787787878786565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!}~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqrqrpopopoponmnmnmnmnmnmnmnmlklklklklklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUSTSTSTSTSSTSTSTSQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<9:9:9:9:9:9:9:9:87878777787878786565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!}~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststqrqrqrqrqrqrqpoppopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUSTSTSTSTTSTSTSTSQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<9:9:9:9:9:9:9:9:77787878787878776565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"! }~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststqrqrqrqropopoooopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUSTSTSTSTTSTSTSTSQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<9:9:9:9:9:9:9:9:78787878777787876565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!    }~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststqrqrqrqroopopopopopopooonmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWVUVUVUVUVUSTSTSTSTTSTSTSTSQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABABABABABA@?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<9:9:9:9:9:9:9:9:78787878878787876565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!    }~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststqrqrqrqrpopopopoooopopopnmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUVUVUVUVUSTSTSTSSTSTSTSTSQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>;<;<;<;<9:9:9:9:9:9:9:9:78787878878787876565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!    }~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvststststststststqrqrqrqrpopopopoopopopopnmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUVUVUVUVUSSSSTSTSTSTSTSTSQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<9:9:9:9:9:9:9:9:78787878878787876565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!                         - - - - - - - -                 - - - - - - - -                 - - - - - - - -                  - - - - - - - -                   - - - - - - - -                 - - - - - - - - - -               - - - - - - - - - -              - - - - - - - -             - - - - - - - -             - - - - - - - -             - - - - - - - -             - - - - - - - -             - - - - - - - -             - - - - - - - -             - - - - - - - -             - - - - - - - -             - - - - - - - -             - - - - - - - -LLKKJJII UUVVWWXX00//..--33445566KJJIIHHG TUUVVWWXEDDCCBBALMMNNOOPMLLKKJJIDEEFFGGHUTTSSRRQ - - <==>>??@]\\[[ZZY45566778|}}~~eddccbba,--..//0tuuvvwwxcbbaa``_ - - OPPQQRRS~~}}100//..- eeffgghh||{{zzyy44332211]]^^__``<<;;::99 UUVVWWXXDDCCBBAAMMNNOOPPLLKKJJIIEEFFGGHHTTSSRRQQ - - ==>>??@@MMLLKKJJeeffgghhmmllkkjj -..//001uvvwwxxylkkjjiih$##""!! %&&''(()mnnooppqtssrrqqp,++**))( !effgghhi|{{zzyyx43322110]^^__``a<;;::998 UVVWWXXYDCCBBAA@ MNNOOPPQ=7766554#$$%%&&'z{{||}}~]\\[[ZZY - ->>??@@AA[[ZZYYXX66778899~~ccbbaa``..//0011vvwwxxyykkjjiihh##""!! &&''(())nnooppqqssrrqqpp++**))(( !!ffgghhii{{zzyyxx33221100^^__``aaHHGGFFEEYYZZ[[\\,,++**))77==>>??GFFEEDDCXYYZZ[[\A@@??>>= - - PQQRRSSTIHHGGFFEHIIJJKKLQPPOONNM @AABBCCDYXXWWVVU 899::;;>== - - QQRRSSTTHHGGFFEEIIJJKKLLPPOONNMMAABBCCDDIIHHGGFFiijjkklliihhggff12233445yzz{{||}hggffeed )**++,,-qrrssttupoonnmml(''&&%%$!""##$$%ijjkkllmxwwvvuut0//..--,abbccdde~~}}|87766554YZZ[[\\]@??>>==< - - QRRSSTTU43322110'(())**+~YXWVUTSS BBCCDDEEWWVVUUTT ::;;<<==__^^]]\\22334455zz{{||}}ggffeedd**++,,--rrssttuuoonnmmll''&&%%$$""##$$%%jjkkllmmwwvvuutt//..--,,bbccddeeDDCCBBAA]]^^__``~~}}||((''&&%%@@AABBCCCBBAA@@?\]]^^__`=<<;;::9 TUUVVWWXEDDCCBBALMMNNOOPMLLKKJJIDEEFFGGHUTTSSRRQ - - <==>>??@]\\[[ZZY45566778|}}~~[ZZYYSSR \]]^^__`xxwwvvuu)((''&&%%%&&''((mmnnooppttssrrqq,,++**)) eeffgghh||{{zzyy44332211]]^^__``<<;;::99 UUVVWWXXDDCCBBAAMMNNOOPPLLKKJJIIEEFFGGHHEEDDCCBBmmnnoouueeddccbb56677889}~~dccbbaa`-..//001uvvwwxxylkkjjiih$##""!! %&&''(()mnnooppqtssrrqqp,++**))( !effgghhi|{{zzyyx43322110]^^__``a<;;::998 UVVWWXXY0//..--,+,,--../RRQQPPOOFFGGHHIISSRRQQPP - - >>??@@AA[[ZZYYXX66778899~~ccbbaa``..//0011vvwwxxyykkjjiihh##""!! &&''(())nnooppqqssrrqqpp++**))(( !!ffgghhii@@??>>==aabbccdd{{zzyyxx$$##""!!DDEEFFGG?>>==<;:`aabbccd~~}98877665XYYZZ[[\A@@??>>= - - PQQRRSSTIHHGGFFEHIIJJKKLQPPOONNM @AABBCCDYXXWWVVU 899::;;>== - - QQRRSSTTHHGGFFEEIIJJKKLLAA@@??>>!!""vvwwxxyyaa``__^^9::;;<<=`__^^]]\12233445yzz{{||}hggffeed )**++,,-qrrssttupoonnmml(''&&%%$!""##$$%ijjkkllmxwwvvuut0//..--,abbccdde~~}}|87766554YZZ[[\\],++**))(/0011223NNMMLLKKJJKKLLMMOONNMMLLBBCCDDEEWWVVUUTT ::;;<<==__^^]]\\22334455zz{{||}}ggffeedd**++,,--rrssttuuoonnmmll''&&%%$$""##$$%%jjkkllmm<<;;::99 eeffgghhwwvvuuooHHIIJJKK98776655 deeffggh}||{{zzy54433221\]]^^__`=<<;;::9 TUUVVWWXEDDCCBBALMMNNOOPMLLKKJJIDEEFFGGHUTTSSRRQ - - <==>>??@NMMLLKKJ deeffgghnmmllkkj! --..//00uuvvwwxxllkkjjii$$##""!!%%&&''((mmnnooppttssrrqq,,++**)) eeffgghh||{{zzyy44332211]]^^__``<<;;::99 UUVVWWXXDDCCBBAAMMNNOOPP==776655##$$%%&&zz{{||}}]]\\[[ZZ -=>>??@@A\[[ZZYYX56677889}~~dccbbaa`-..//001uvvwwxxylkkjjiih$##""!! %&&''(()mnnooppqtssrrqqp,++**))( !effgghhi|{{zzyyx43322110]^^__``a~~}}||{(''&&%%$34455667JJIIHHGG NNOOPPQQKKJJIIHHFFGGHHIISSRRQQPP - - >>??@@AA[[ZZYYXX66778899~~ccbbaa``..//0011vvwwxxyykkjjiihh##""!! &&''(())nnooppqq~~}}88776655!!""##$$iijjkkllnnmmllkkLLMMNNOO44332211 !!""##$hiijjkklyxxwwvvu100//..-`aabbccd~~}98877665XYYZZ[[\A@@??>>= - - PQQRRSSTIHHGGFFEHIIJJKKLQPPOONNM @AABBCCDJIIHHGGFhiijjkkljiihhggf11223344yyzz{{||hhggffee ))**++,,qqrrssttppoonnmm((''&&%%!!""##$$iijjkkllxxwwvvuu00//..--aabbccdd~~}}88776655YYZZ[[\\@@??>>== - - QQRRSSTT44332211''(())**~~YYXWVUTS - ABBCCDDEXWWVVUUT 9::;;<<=`__^^]]\12233445yzz{{||}hggffeed )**++,,-qrrssttupoonnmml(''&&%%$!""##$$%ijjkkllmxwwvvuut0//..--,abbccdde{zzyyxxw$##""!!7==>>??@FFEEDDCC - - RRSSTTUUGGFFEEDDJJKKLLMMOONNMMLLBBCCDDEEWWVVUUTT ::;;<<==__^^]]\\22334455zz{{||}}ggffeedd**++,,--rrssttuu||{{zzyy44332211%%&&''((mmnnooppjjiihhggPPQQRRSS~~}}|00//..--$%%&&''(lmmnnooputtssrrq-,,++**) deeffggh}||{{zzy54433221\]]^^__`=<<;;::9 TUUVVWWXEDDCCBBALMMNNOOPMLLKKJJIDEEFFGGHFEEDDCCBlmmnnooufeeddccb55667788}}~~ddccbbaa--..//00uuvvwwxxllkkjjii$$##""!!%%&&''((mmnnooppttssrrqq,,++**)) eeffgghh||{{zzyy44332211]]^^__``<<;;::99 UUVVWWXX00//..--++,,--..SRRQQPPOEFFGGHHITSSRRQQP - - =>>??@@A\[[ZZYYX56677889}~~dccbbaa`-..//001uvvwwxxylkkjjiih$##""!! %&&''(()mnnooppqtssrrqqp,++**))( !effgghhiwvvuuoon@AABBCCDBBAA@@??VVWWXXYYCCBBAA@@ NNOOPPQQKKJJIIHHFFGGHHIISSRRQQPP - - >>??@@AA[[ZZYYXX66778899~~ccbbaa``..//0011vvwwxxyyxxwwvvuu00//..--))**++,,qqrrssttffeeddcc YYZZ[[\\|{{zzyyx,,++**))())**++,pqqrrsstqppoonnm)((''&&% !!""##$hiijjkklyxxwwvvu100//..-`aabbccd~~}98877665XYYZZ[[\A@@??>>= - - PQQRRSSTIHHGGFFEHIIJJKKLBAA@@??>!!"uvvwwxxybaa``__^99::;;<<``__^^]]11223344yyzz{{||hhggffee ))**++,,qqrrssttppoonnmm((''&&%%!!""##$$iijjkkllxxwwvvuu00//..--aabbccdd~~}}88776655YYZZ[[\\,,++**))//001122ONNMMLLKIJJKKLLMPOONNMMLABBCCDDEXWWVVUUT 9::;;<<=`__^^]]\12233445yzz{{||}hggffeed )**++,,-qrrssttupoonnmml(''&&%%$!""##$$%ijjkkllmnmmllkkjDEEFFGGH>>==<;:9ZZ[[\\]]??>>==<< - - RRSSTTUUGGFFEEDDJJKKLLMMOONNMMLLBBCCDDEEWWVVUUTT ::;;<<==__^^]]\\22334455zz{{||}}ttssrrqq,,++**))--..//00uuvvwwxxbbaa``__ - - ]]^^__``xwwvvuut((''&&%%,--..//0tuuvvwwxmllkkjji%$$##""!$%%&&''(lmmnnooputtssrrq-,,++**) deeffggh}||{{zzy54433221\]]^^__`=<<;;::9 TUUVVWWXEDDCCBBALMMNNOOP>==77665"##$$%%&yzz{{||}^]]\\[[Z ==>>??@@\\[[ZZYY55667788}}~~ddccbbaa--..//00uuvvwwxxllkkjjii$$##""!!%%&&''((mmnnooppttssrrqq,,++**)) eeffgghh||{{zzyy44332211]]^^__``~~}}||((''&&%%33445566KJJIIHHG MNNOOPPQLKKJJIIHEFFGGHHITSSRRQQP - - =>>??@@A\[[ZZYYX56677889}~~dccbbaa`-..//001uvvwwxxylkkjjiih$##""!! %&&''(()mnnooppqjiihhggfHIIJJKKL87766554^^__``aa;;::9988VVWWXXYYCCBBAA@@ NNOOPPQQKKJJIIHHFFGGHHIISSRRQQPP - - >>??@@AA[[ZZYYXX66778899~~ppoonnmm((''&&%%11223344yyzz{{||^^]]\\[[ - - aabbccddsrqpoonn$$##""!!01122334xyyzz{{|ihhggffe! ())**++,pqqrrsstqppoonnm)((''&&% !!""##$hiijjkklyxxwwvvu100//..-`aabbccd~~}98877665XYYZZ[[\A@@??>>= - - PQQRRSST54433221&''(())*}~~ZYYXWVUT - - AABBCCDDXXWWVVUU 99::;;<<``__^^]]11223344yyzz{{||hhggffee ))**++,,qqrrssttppoonnmm((''&&%%!!""##$$iijjkkllxxwwvvuu00//..--aabbccdd{{zzyyxx$$##""!!77==>>??GFFEEDDC - - QRRSSTTUHGGFFEEDIJJKKLLMPOONNMMLABBCCDDEXWWVVUUT 9::;;<<=`__^^]]\12233445yzz{{||}hggffeed )**++,,-qrrssttufeeddccb LMMNNOOP43322110bbccddee~~}}||77665544ZZ[[\\]]??>>==<< - - RRSSTTUUGGFFEEDDJJKKLLMMOONNMMLLBBCCDDEEWWVVUUTT ::;;<<==llkkjjii$$##""!!55667788}}~~ZZYYSSRReeffgghhmmllkkjj 45566778|}}~~eddccbba,--..//0tuuvvwwxmllkkjji%$$##""!$%%&&''(lmmnnooputtssrrq-,,++**) deeffggh}||{{zzy54433221\]]^^__`=<<;;::9 TUUVVWWX100//..-*++,,--.SSRRQQPPEEFFGGHHTTSSRRQQ - - ==>>??@@\\[[ZZYY55667788}}~~ddccbbaa--..//00uuvvwwxxllkkjjii$$##""!!%%&&''((mmnnooppttssrrqq,,++**)) eeffgghhwwvvuuoo@@AABBCCCBBAA@@? UVVWWXXYDCCBBAA@ MNNOOPPQLKKJJIIHEFFGGHHITSSRRQQP - - =>>??@@A\[[ZZYYX56677889}~~dccbbaa`-..//001uvvwwxxybaa``__^ - - PQQRRSSY~~}}||0//..--, !!ffgghhii{{zzyyxx33221100^^__``aa;;::9988VVWWXXYYCCBBAA@@ NNOOPPQQKKJJIIHHFFGGHHIISSRRQQPP - - >>??@@AAhhggffee 99::;;<>==<;:YZZ[[\\]@??>>==< - - QRRSSTTUHGGFFEEDIJJKKLLMPOONNMMLABBCCDDEXWWVVUUT 9::;;<<=`__^^]]\12233445yzz{{||}^]]\\[[ZYZZ[[\\]{{zzyyxx,++**))(""##$$%%jjkkllmmwwvvuutt//..--,,bbccddee~~}}||77665544ZZ[[\\]]??>>==<< - - RRSSTTUUGGFFEEDDJJKKLLMMOONNMMLLBBCCDDEEddccbbaa==>>??@@MMLLKKJJmmnnoouueeddccbb<==>>??@]\\[[ZZY45566778|}}~~eddccbba,--..//0tuuvvwwxmllkkjji%$$##""!$%%&&''(lmmnnooputtssrrq-,,++**) deeffggh}||{{zzy54433221\]]^^__`~~}}|)((''&&%23344556KKJJIIHHMMNNOOPPLLKKJJIIEEFFGGHHTTSSRRQQ - - ==>>??@@\\[[ZZYY55667788}}~~ddccbbaa--..//00uuvvwwxxllkkjjii$$##""!!%%&&''((mmnnooppjjiihhggHHIIJJKK98776655]^^__``a<;;::998 UVVWWXXYDCCBBAA@ MNNOOPPQLKKJJIIHEFFGGHHITSSRRQQP - - =>>??@@A\[[ZZYYX56677889}~~ZYYSSRRQ -]^^__``awwvvuuts(''&&%%$&&''(())nnooppqqssrrqqpp++**))(( !!ffgghhii{{zzyyxx33221100^^__``aa;;::9988VVWWXXYYCCBBAA@@ NNOOPPQQKKJJIIHHFFGGHHII``__^^]]AABBCCDDIIHHGGFF!!""vvwwxxyyaa``__^^@AABBCCDYXXWWVVU 899::;;>?GGFFEEDD - - QQRRSSTTHHGGFFEEIIJJKKLLPPOONNMMAABBCCDDXXWWVVUU 99::;;<<``__^^]]11223344yyzz{{||hhggffee ))**++,,qqrrssttffeeddcc LLMMNNOO44332211abbccdde~~}}|87766554YZZ[[\\]@??>>==< - - QRRSSTTUHGGFFEEDIJJKKLLMPOONNMMLABBCCDDEXWWVVUUT 9::;;<<=QPPOONNM - abbccdderqpoonnm$##""!! **++,,--rrssttuuoonnmmll''&&%%$$""##$$%%jjkkllmmwwvvuutt//..--,,bbccddee~~}}||77665544ZZ[[\\]]??>>==<< - - RRSSTTUUGGFFEEDDJJKKLLMM\\[[ZZYYEEFFGGHHEEDDCCBB##$$%%&&zz{{||}}]]\\[[ZZ -DEEFFGGHUTTSSRRQ - - <==>>??@]\\[[ZZY45566778|}}~~eddccbba,--..//0tuuvvwwxmllkkjji%$$##""!$%%&&''(lmmnnooputtssrrq-,,++**) deeffgghxwwvvuuo!?@@AABBCCCBBAA@@ UUVVWWXXDDCCBBAAMMNNOOPPLLKKJJIIEEFFGGHHTTSSRRQQ - - ==>>??@@\\[[ZZYY55667788}}~~ddccbbaa--..//00uuvvwwxxbbaa``__ - - PPQQRRSS~~}}|00//..-- !effgghhi|{{zzyyx43322110]^^__``a<;;::998 UVVWWXXYDCCBBAA@ MNNOOPPQLKKJJIIHEFFGGHHITSSRRQQP - - =>>??@@AMLLKKJJIeffgghhimllkkjji..//0011vvwwxxyykkjjiihh##""!! &&''(())nnooppqqssrrqqpp++**))(( !!ffgghhii{{zzyyxx33221100^^__``aa;;::9988VVWWXXYYCCBBAA@@ NNOOPPQQXXWWVVUU IIJJKKLLAA@@??>>''(())**~~YYXWVUTS - HIIJJKKLQPPOONNM @AABBCCDYXXWWVVU 899::;;>==<;YYZZ[[\\@@??>>== - - QQRRSSTTHHGGFFEEIIJJKKLLPPOONNMMAABBCCDDXXWWVVUU 99::;;<<``__^^]]11223344yyzz{{||^^]]\\[[YYZZ[[\\|{{zzyyx,,++**))!""##$$%ijjkkllmxwwvvuut0//..--,abbccdde~~}}|87766554YZZ[[\\]@??>>==< - - QRRSSTTUHGGFFEEDIJJKKLLMPOONNMMLABBCCDDEIHHGGFFEijjkkllmihhggffe22334455zz{{||}}ggffeedd**++,,--rrssttuuoonnmmll''&&%%$$""##$$%%jjkkllmmwwvvuutt//..--,,bbccddee~~}}||77665544ZZ[[\\]]??>>==<< - - RRSSTTUUTTSSRRQQ - - MMNNOOPP==776655++,,--..SRRQQPPOLMMNNOOPMLLKKJJIDEEFFGGHUTTSSRRQ - - <==>>??@]\\[[ZZY45566778|}}~~eddccbba,--..//0tuuvvwwxmllkkjji%$$##""!$%%&&''(lmmnnoopkjjiihhgGHHIIJJK:9877665]]^^__``<<;;::99 UUVVWWXXDDCCBBAAMMNNOOPPLLKKJJIIEEFFGGHHTTSSRRQQ - - ==>>??@@\\[[ZZYY55667788}}~~ZZYYSSRR ]]^^__``xwwvvuut((''&&%%%&&''(()mnnooppqtssrrqqp,++**))( !effgghhi|{{zzyyx43322110]^^__``a<;;::998 UVVWWXXYDCCBBAA@ MNNOOPPQLKKJJIIHEFFGGHHIEDDCCBBAmnnoouuveddccbba66778899~~ccbbaa``..//0011vvwwxxyykkjjiihh##""!! &&''(())nnooppqqssrrqqpp++**))(( !!ffgghhii{{zzyyxx33221100^^__``aa;;::9988VVWWXXYYPPOONNMM - - QQRRSSTT44332211//001122ONNMMLLK - - PQQRRSSTIHHGGFFEHIIJJKKLQPPOONNM @AABBCCDYXXWWVVU 899::;;>== - - QQRRSSTTHHGGFFEEIIJJKKLLPPOONNMMAABBCCDDXXWWVVUU 99::;;<>==< - - QRRSSTTUHGGFFEEDIJJKKLLMA@@??>>=!!""#vwwxxyyza``__^^]::;;<<==__^^]]\\22334455zz{{||}}ggffeedd**++,,--rrssttuuoonnmmll''&&%%$$""##$$%%jjkkllmmwwvvuutt//..--,,bbccddee~~}}||77665544ZZ[[\\]]~~}}||{{zzyyxxww##""!!==>>??@@FEEDDCCB - RSSTTUUVGFFEEDDCJKKLLMMNONNMMLLKBCCDDEEFWVVUUTTS :;;<<==>_^^]]\\[23344556z{{||}}~ZYYSSRRQeffgghhia``__^^]@AABBCCDvvuuoonnAABBCCDDBAA@@??>VWWXXYYZCBBAA@@? -NOOPPQQRKJJIIHHGFGGHHIIJSRRQQPPO - - >??@@AAB[ZZYYXXW6778899:~QPPOONNMijjkkllm]\\[[ZZYDEEFFGGHmmllkkjjEEFFGGHH>==<;:98Z[[\\]]^?>>==<<; - RSSTTUUVGFFEEDDCJKKLLMMNONNMMLLKBCCDDEEFWVVUUTTS :;;<<==>MLLKKJJImnnoouuvYXXWWVVU HIIJJKKLiihhggffIIJJKKLL77665544^__``aab;::99887VWWXXYYZCBBAA@@? -NOOPPQQRKJJIIHHGFGGHHIIJSRRQQPPO - - >??@@AABIHHGGFFE!!""#vwwxxyyzUTTSSRRQ - - LMMNNOOPeeddccbb MMNNOOPP33221100bccddeef~~}}||{76655443Z[[\\]]^?>>==<<; - RSSTTUUVGFFEEDDCJKKLLMMNONNMMLLKBCCDDEEFEDDCCBBA#$$%%&&'z{{||}}~QPPOONNM - - PQQRRSSTaa``__^^ - - QQRRSSYY~~}}||{//..--,, !!"fgghhiij{zzyyxxw3221100/^__``aab;::99887VWWXXYYZCBBAA@@? -NOOPPQQRKJJIIHHGFGGHHIIJA@@??>>='(())**+~MLLKKJJI TUUVVWWX]]\\[[ZZZZ[[\\]]{zzyyxxw++**))(("##$$%%&jkkllmmnwvvuutts/..--,,+bccddeef~~}}||{76655443Z[[\\]]^?>>==<<; - RSSTTUUVGFFEEDDCJKKLLMMN=7766554+,,--../IHHGGFFEXYYZZ[[\YYSSRRQQ - -^^__``aawvvuutsr''&&%%$$&''(())*nooppqqrsrrqqppo+**))((' !!"fgghhiij{zzyyxxw3221100/^__``aab;::99887VWWXXYYZCBBAA@@? -NOOPPQQR43322110/0011223EDDCCBBA\]]^^__`PPOONNMM bbccddeeqpoonnmm##""!! *++,,--.rssttuuvonnmmllk'&&%%$$#"##$$%%&jkkllmmnwvvuutts/..--,,+bccddeef~~}}||{76655443Z[[\\]]^?>>==<<; - RSSTTUUV0//..--,34455667A@@??>>=`aabbccdLLKKJJIIffgghhiillkkjjii.//00112vwwxxyyzkjjiihhg#""!! &''(())*nooppqqrsrrqqppo+**))((' !!"fgghhiij{zzyyxxw3221100/^__``aab;::99887VWWXXYYZ,++**))(7==>>??@=<<;;::9 deeffgghHHGGFFEEjjkkllmmhhggffee23344556z{{||}}~gffeeddc*++,,--.rssttuuvonnmmllk'&&%%$$#"##$$%%&jkkllmmnwvvuutts/..--,,+bccddeef~~}}||{76655443Z[[\\]]^~~}}||{(''&&%%$@AABBCCD~~}98877665 !!""##$hiijjkklDDCCBBAAnnoouuvvddccbbaa6778899:~cbbaa``_.//00112vwwxxyyzkjjiihhg#""!! &''(())*nooppqqrsrrqqppo+**))((' !!"fgghhiij{zzyyxxw3221100/^__``aab{zzyyxxw$##""!!DEEFFGGH}||{{zzy54433221$%%&&''(lmmnnoop@@??>>==!!""##wwxxyyzz``__^^]] :;;<<==>_^^]]\\[23344556z{{||}}~gffeeddc*++,,--.rssttuuvonnmmllk'&&%%$$#"##$$%%&jkkllmmnwvvuutts/..--,,+bccddeefwvvuuoonHIIJJKKLyxxwwvvu100//..-())**++,pqqrrsst77665544$$%%&&''{{||}}~~\\[[ZZYY - - >??@@AAB[ZZYYXXW6778899:~cbbaa``_.//00112vwwxxyyzkjjiihhg#""!! &''(())*nooppqqrsrrqqppo+**))((' !!"fgghhiijnmmllkkjLMMNNOOPuttssrrq-,,++**),--..//0tuuvvwwx33221100(())**++XWVUTSSR BCCDDEEFWVVUUTTS :;;<<==>_^^]]\\[23344556z{{||}}~gffeeddc*++,,--.rssttuuvonnmmllk'&&%%$$#"##$$%%&jkkllmmnjiihhggfPQQRRSSYqppoonnm)((''&&%01122334xyyzz{{|//..--,,,,--..//RQQPPOONFGGHHIIJSRRQQPPO - - >??@@AAB[ZZYYXXW6778899:~cbbaa``_.//00112vwwxxyyzkjjiihhg#""!! &''(())*nooppqqrfeeddccb YZZ[[\\]mllkkjji%$$##""!45566778|}}~~++**))((00112233NMMLLKKJJKKLLMMNONNMMLLKBCCDDEEFWVVUUTTS :;;<<==>_^^]]\\[23344556z{{||}}~gffeeddc*++,,--.rssttuuvbaa``__^ - - -]^^__``aihhggffe! 899::;;<''&&%%$$44556677JIIHHGGF -NOOPPQQRKJJIIHHGFGGHHIIJSRRQQPPO - - >??@@AAB[ZZYYXXW6778899:~cbbaa``_.//00112vwwxxyyz^]]\\[[Z - abbccddeeddccbba<==>>??@fpvfpvXQJ`ےXQJ`ےltbbdQZ|pfH~~vJXQrbtlbtlf~Hf~HےHAbHAJltAJltJltf`vXf`vXQr˂pQr˂pbtlbtlf~Hf~HbHAbHAAJltAJltf`vXf`vXJXQrr˂p`|Zdf~HnXv`bHAZbHAZJltJlt`vXn`vXnr˂pr˂ptlJtlJf~Hf~HےHAZbHAZJltJltltb`vXn`vXnr˂pr˂ptlJtlJHfpvJ`ےbHAZtbdQZrAJlvXnvXnr˂pr˂plJtlJtf~Hf~HbHAZpbHAZpJltJltvXnvXnr˂pr˂plJtlJtf~Hf~HHAZpbHAZpJltddrtAnvpvpfHZHAbXQr˂lJtAlJtA~Hf~HfbHAZpbHAZpltbltbvXnvXn˂pZ˂pZlJtAlJtA~Hf~HfbHAZpbHAZpltbltbvXnvXnnXv`nXv`bHAZbHAZdQZ|drtAvppfے`˂pZHJtArdJtArdfpvfpvZp˂Zp˂bdQZ|bdQZ|bnvpnvpnvpZHAbZHAJtArdJtArdfpvfpvZp˂Zp˂bdQZ|bdQZ|nvpnvp˂pZHJXQrQtArdfpvf~Hp˂rp˂rbdQZ|bdQZ|vpfvpfZHAbZHAbtArdtArdfpvfpvp˂rp˂rbdQZ|bdQZ|nvpvpfvpfZHAbZHAےtArdtArdnXvbHAZpp˂r|drtbdQvpfHvpfHZHAbZHAbArd|Ard|fpvfpv˂rX˂rXbdQZ|bdQZ|vpfHvpfHZHAbZHAbArd|Ard|fpvfpv˂rX˂rXrtAJlJltfH~~f`JQrpZA`rd|rd|pvnpvn˂rXQ˂rXQdQZ|dQZ|vpfHvpfHHAbےHAbےrd|rd|pvnpvn˂rXQ˂rXQdQZ|dQZ|vpfHvpfHf~Hf~Hp˂rp˂rdrtAJJltfH~JXQrAbے`|ZdQ|ZdQnXv`nXv`rXQJ`rXQJ`ہdrtdrtfHfH~fے`JXے`JX`JXQ|ZdQ|ZdQnXv`nXv`rXQJ`rXQJ`ہdrtdrtfH~fH~Abbtl||ZdQnXv`fpvXQJ`ےXQJ`ےdrtAdrtAH~fH~fے`JXQے`JXQ|ZdQb|ZdQbnXv`nXv`XQJ`ےXQJ`ےdrtAdrtAfHfH~fے`JXQے`JXQ`JXQr|ZdQb|ZdQb`f~˂rXQXQJ`ptAJlZ|d~f`~f``JXQ`JXQZdQbtZdQbtnXv`nXv`QJ`ےQJ`ےdrtAdrtA~f`~f``JXQ`JXQZdQbtZdQbtnXv`nXv`QJ`ےQJ`ےtbdbdQZ|f`vXvXn˂pZHAJXQrbZdQbtZdQbtXv`fXv`fJ`ےJ`ےdrtAJdrtAJ~f`~f``JXQr`JXQrZdQbtZdQbtXv`fXv`fJ`ےJ`ےdrtAJdrtAJ~f`~f`fpvfpvXQJ`ےXQJ`ےltbbdQZ|f`vXZHAbہJXQrbtlbtlf~Hf~HbHAbHAAJltAJltf`vXf`vXQr˂pQr˂prbtlbtlbtlf~HfHbHAbHAAJltAJltf`vXf`vXpZHAZdQbtbtlf~fpۅnXv`bHAZbHAZJltJlt`vXn`vXnr˂pr˂ptlJtlJf~Hf~HbHAZbHAZJltJlt`vXn`vXnr˂pr˂pbtltlJtlJHfpvJ`p˂˂rXQtbdQZrtAJlvXnvXnr˂pr˂plJtlJtf~Hf~HbHAZpbHAZpJltJltvXnvXnr˂pr˂plJtlJtf~Hf~HbHAZpbHAZpQZ|ddrtAnvpvpfHbے`tlJlJtAlJf~HfHfpbHAZpbHAZpltbltbvXnvXn˂pZ˂pZlJtAlJtA~Hf~HfbHAZpbHAZpltbltbvXnvXnnXv`nXv`bHAZbHAZdQZ|lltbnvp`JXQZHAbJtArdJtArdfpvfpvZp˂Zp˂bdQZ|bdQZ|nvpnvpZHAbZHAbJtAdJtArdJfpvfpvfpvZp˂Zp˂bdQZ|bdQZ|nvpnvpbے`lJtJtArdvnXf~fpp˂rp˂rbdQZ|bdQZ|vpfvpfZHAbZHAbtArdtArdfpvfpvp˂rp˂rbdQZ|bdQZ|vpfvpfZHAbZHAbJtAdtArdfpv~HrXQJJ`ے|drtbdQvpfHvpfHZHAbZHAbArd|Ard|fpvfpv˂rX˂rXbdQZ|bdQZ|vpfHvpfHZHAbZHAbArd|Ard|fpvfpv˂rX˂rXrtAJlJltfH~~vpJXQrtAd|rd|pvnpvnvnr˂rXQ˂rXQdQZ|dQZ|vpfHvpfHHAbےHAbےrd|rd|pvnpvn˂rXQ˂rXQdQZ|dQZ|vpfHvpfHf~Hf~Hp˂rp˂rtbdQdQZ|fH~r˂pے`JXQ|ZdQ|ZdQnXv`nXv`rXQJ`rXQJ`ہdrtdrtfH~fH~˙ے`JXے`JX|ZdQ|ZdQnXv`nXv`nrXQJ`rXQJ`rXQJ`ہdrtdtAfH~fH~JXQrArd||ZdQv`fvnXXQJ`ےXQJ`ےdrtAdrtAH~fH~fے`JXQے`JXQ|ZdQb|ZdQbnXv`nXv`XQJ`ےXQJ`ےdrtAdrtAH~fH~fے`JXQے`JXQ|ZdQb|ZdQb~Hffpv`ےbbHAZptAJbdZ|AJl~f`~f``JXQ`JXQZdQbtZdQbtnXv`nXv`QJ`ےQJ`ےdrtAdrtA~f`~f``JXQ`JXQZdQbtZdQbtnXv`nXv`QJ`ےQJ`ےtbdbdQZ|lvpfے`˂pZHAZdQbtZdQbtXv`fXv`fXQJ`ےJ`ےJ`ےJdrtAJdtAJl~f`~f``JXQr`JXQrZdQbtZdQbtXv`fXv`fJ`ےJ`ےdrtAJdrtAJ~f`~f`fpvfpvXQJ`ےXQJ`ےZ|ddrtAJf`vXZHAbr˂pbtlbtlf~Hf~HbHAbHAAJltAJltf`vXf`vXQr˂pQr˂pbtlbtlf~Hf~HےHAbHAJltAJltJltf`vXf`vXpZHAZdQbtbtl|~Hfpv`fbHAZbHAZJltJlt`vXn`vXnr˂pr˂ptlJtlJf~Hf~HbHAZbHAZJltJlt`vXn`vXnr˂pr˂ptlJtlJpvnnXv`HAZp˂˂rXQQZ|dtbvXnvXnr˂pr˂plJtlJtf~Hf~HbHAZpbHAZpJltJltvXnvXnr˂pr˂plJtlJtf~Hf~HbHAZpbHAZpQZ|ltbdfH~JXQrZbے`lJtAlJtA~Hf~HfHAZpbHAZpltbltbtbnvXnvXn˂pZ˂pZlJtAlJtA~Hf~HfbHAZpbHAZpltbltbvXnvXnnXv`nXv`bHAZbHAZrtAJlltbH~f`JXQZHAbJtArdJtArdfpvfpvZp˂Zp˂bdQZ|bdQZ|nvpnvpZHAbZHAbJtArdJtArdfpvfpvZp˂Zp˂bdQZ|bdQZ|bnvpnvpnvpbے`l|ZdQbtvnX~Hfpp˂rp˂rbdQZ|bdQZ|vpfvpfZHAbZHAbtArdtArdfpvfpvp˂rp˂rbdQZ|bdQZ|vpfvpfZHAbZHAbtArdtArdXv`ff~HrXQJJ`ےrtAJlnvpvpfHvpfZHAbZHAے`Ard|Ard|fpvfpv˂rX˂rXbdQZ|bdQZ|vpfHvpfHZHAbZHAbArd|Ard|fpvfpv˂rX˂rXtbdQQZ|df`vXHAbےJXQrrd|rd|pvnpvn˂rXQ˂rXQdQZ|dQZ|vpfvpfHvpfےHAbےHAے`rd|rd|pvnpvn˂rXQ˂rXQdQZ|dQZ|vpfHvpfHf~Hf~Hp˂rp˂rtbdQdQZ|``vXnr˂pZے`JXQ|ZdQ|ZdQnXv`nXv`rXQJ`rXQJ`ہdrtdrtfH~fH~˙ے`JXے`JX|ZdQ|ZdQnXv`nXv`rXQJ`rXQJ`ہdrtdrtfHfH~fے`JXJXQHAbZdQbtlJtv`fvnXXQJ`ےXQJ`ےdrtAdrtAH~fH~fے`JXQے`JXQ|ZdQb|ZdQbnXv`nXv`XQJ`ےXQJ`ےdrtAdrtAH~fH~fے`JXQے`JXQ|ZdQb|ZdQb~Hffpv`ےbbHAXQJtbdfHf`~f``JXQ`JXQJXQrZdQbtZdQbtnXv`nXv`QJ`ےQJ`ےdrtAdrtA~f`~f``JXQ`JXQZdQbtZdQbtnXv`nXv`QJ`ےQJ`ےZ|drtAJlnvp`JXQrZHAbZdQbtZdQbtXv`fXv`fJ`ےJ`ےdrtAJdrtAJHf`~f``JXQr`JXQrJXQrbZdQbtZdQbtXv`fXv`fJ`ےJ`ےdrtAJdrtAJ~f`~f`fpvfpvXQJ`ےXQJ`ےZ|dvXnvpfAb`Jr˂pbtlbtlf~Hf~HbHAbHAAJltAJltf`vXf`vXQr˂pQr˂pbtlbtlf~Hf~HbHAbHAAJltAJltf`vXf`vXQHAbۙے`JXlJtAArd|~Hfvnv`ffbHAZbHAZJltJlt`vXn`vXnr˂pr˂ptlJtlJf~Hf~HbHAZbHAZJltJlt`vXn`vXnr˂pr˂ptlJtlJpvnnXv`HAXQJ``ےJlQZ|dvXnvXnr˂pr˂pbtllJtlJf~HfHfpbHAZpbHAZpJltJltvXnvXnr˂pr˂plJtlJtf~Hf~HbHAZpbHAZprtAJltbdfH~ˀ˂pZ`JXQlJtAlJtA~Hf~HfbHAZpbHAZpltbltbvXnvXn˂pZ˂pZtlJlJtAlJf~HfHfpbHAZpbHAZpltbltbvXnvXnnXv`nXv`bHAZbHAZrtAdQZvpfHH~fXQr˂ZAb`JtArdJtArdfpvfpvZp˂Zp˂bdQZ|bdQZ|nvpnvpZHAbZHAbJtArdJtArdfpvfpvZp˂Zp˂bdQZ|bdQZ|nvpnvp`JXQQr˂prd|ZdQbtXv`fpvnp˂rp˂rbdQZ|bdQZ|vpfvpfZHAbZHAbtArdtArdfpvfpvp˂rp˂rbdQZ|bdQZ|vpfvpfZHAbZHAbtArdtArdXv`ppvnےbHAtbQZrtAJlvpfHvpfHZHAbZHAbJtAd|Ard|fpvfpvvn˂rX˂rXbdQZ|bdQZ|vpfHvpfHZHAbZHAbArd|Ard|fpvfpv˂rX˂rXtbdQQZ|lf`vXHHAbےr˂prd|rd|pvnpvn˂rXQ˂rXQdQZ|dQZ|vpfHvpfHHAbےHAbےtAd|rd|pvnpvnvnr˂rXQ˂rXQdQZ|dQZ|vpfHvpfHf~Hf~Hp˂rp˂r|dr~f``vXnpZHAbJXQr˂|ZdQ|ZdQnXv`nXv`rXQJ`rXQJ`ہdrtdrtfH~fH~˙ے`JXے`JX|ZdQ|ZdQnXv`nXv`rXQJ`rXQJ`ہdrtdrtfH~fH~r˂pZHAbZdQbtlJt~HfrXQJ`XQJ`ےXQJ`ےdrtAdtAJH~fH~fے`JXQے`JXQ|ZdQb|ZdQbnXv`nXv`XQJ`ےXQJ`ےdrtAdrtAH~fH~fے`JXQے`JXQ|ZdQb|ZdQbvnXXv`fZp˂drtAtbQZ~f`~f``JXQ`JXQZdQbtZdQbtnXv`nXv`rXQJ`QJ`ےQJ`ےdrtAdtAJl~f`~f``JXQ`JXQZdQbtZdQbtnXv`nXv`QJ`ےQJ`ےZ|dtbn~f``JXQrZHAbZdQbtZdQbtXv`fXv`fJ`ےJ`ےdrtAJdrtAJ~f`~f``JXQr`JXQrZdQbtZdQbtXv`fXv`fXQJ`ےJ`ےJ`ےJdrtAJdtAJl~f`~f`fpvfpvXQJ`ےXQJ`ےtAJlvXnvp`ے`JpZHAbtlbtlf~Hf~HbHAbHAAJltAJltf`vXf`vXQr˂pQr˂pbtlbtlf~Hf~HbHAbHAAJltAJltf`vXf`vXZHAbۙے`JXlJtAArdtpvnےHAZbHAZJltJltltb`vXn`vXnr˂pr˂ptlJtlJf~Hf~HbHAZbHAZJltJlt`vXn`vXnr˂pr˂ptlJtlJv`f~HfrXQJ`JltdrtAvXnvXnr˂pr˂plJtlJtf~Hf~HHAZpbHAZpJltJlttbvXnvXnr˂pr˂plJtlJtf~Hf~HbHAZpbHAZprtAdQZ|vp`vXn˂pZA`JXQlJtAlJtA~Hf~HfbHAZpbHAZpltbltbvXnvXn˂pZ˂pZlJtAlJtA~Hf~HfHAZpbHAZpltbltbtbnvXnvXnnXv`nXv`bHAZbHAZtbdQZvp`vvXnXQr˂bے`JtArdJtArdfpvfpvZp˂Zp˂bdQZ|bdQZ|nvpnvpZHAbZHAbJtArdJtArdfpvfpvZp˂Zp˂bdQZ|bdQZ|nvpnvp`JXQQr˂prdtllJfpXv`fp˂rp˂rbdQZ|bdQZ|nvpvpfvpfZHAbZHAےtArdtArdfpvfpvp˂rp˂rbdQZ|bdQZ|vpfvpfZHAbZHAbtArdtArd~HfppvnےbHAbdQZ|JltvpfHvpfHZHAbZHAbArd|Ard|fpvfpv˂rX˂rXbdQZ|bdQZ|nvpvpfHvpfZHAbZHAے`Ard|Ard|fpvfpv˂rX˂rXdrtvXnۅvpfHb`JXr˂pZrd|rd|pvnpvn˂rXQ˂rXQdQZ|dQZ|vpfHvpfHHAbےHAbےrd|rd|pvnpvn˂rXQ˂rXQdQZ|dQZ|vpfvpfHvpfےf~Hf~Hp˂rp˂r|drXnvvpfHpZHAbJXQr˂|ZdQ|ZdQnXv`nXv`rXQJ`rXQJ`ہdrtdrtfH~fH~˙ے`JXے`JX|ZdQ|ZdQnXv`nXv`rXQJ`rXQJ`ہdrtdrtfH~fH~r˂p``JXQJtArdvnv~HfXQJ`ےXQJ`ےdrtAdrtAfHfH~fے`JXQے`JXQ`JXQr|ZdQb|ZdQbnXv`nXv`XQJ`ےXQJ`ےdrtAdrtAH~fH~fے`JXQے`JXQ|ZdQb|ZdQbvnXXv`pZp˂drtAbdQZ|~f`~f``JXQ`JXQZdQbtZdQbtnXv`nXv`QJ`ےQJ`ےdrtAdrtAfHf`~f``JXQ`JXQJXQrZdQbtZdQbtnXv`nXv`QJ`ےQJ`ےAJltvpfH~f`Qr˂pAb`JZdQbtZdQbtXv`fXv`fJ`ےJ`ےdrtAJdrtAJ~f`~f``JXQr`JXQrZdQbtZdQbtXv`fXv`fJ`ےJ`ےdrtAJdrtAJHf`~f``JXQHAfpvfpvXQJ`ےXQJ`ےtAJlpfH~~f`JQrpZHAbbtlbtlf~HfHbHAbHAAJltAJltf`vXf`vXQr˂pQr˂pbtlbtlf~Hf~HbHAbHAAJltAJltf`vXf`vXJXQrr˂p|Zdf~HpvnbHAZbHAZJltJlt`vXn`vXnr˂pr˂pbtltlJtlJf~HfHfbHAZbHAZJltJlt`vXn`vXnr˂pr˂ptlJtlJv`fvnrbHAZJltdrtAvXnvXnr˂pr˂plJtlJtf~Hf~HbHAZpbHAZpJltJltvXnvXnr˂pr˂pbtllJtlJf~HfHfpbHAZpbHAZpbdQZ|~f`vXnZHAbXQr˂lJtAlJtA~Hf~HfbHAZpbHAZpltbltbvXnvXn˂pZ˂pZlJtAlJtA~Hf~HfbHAZpbHAZpltbltbvXnvXnbے`nXv`nXv`bHAZJlttdrtAf`vvXn˂pZHJAdJtArdJfpvfpvfpvZp˂Zp˂bdQZ|bdQZ|nvpnvpZHAbZHAbJtArdJtArdfpvfpvZp˂Zp˂bdQZ|bdQZ|nvpnvp˂pZHZHAbQbtlfpvvf~Hp˂rp˂rbdQZ|bdQZ|vpfvpfZHAbZHAbJtAdtArdfpvfpvpvnp˂rp˂rbdQZ|bdQZ|vpfvpfZHAbZHAbtArdtArd~HXvXQJ`pp˂rbdQZ|JltvpfHvpfHZHAbZHAbArd|Ard|fpvfpv˂rX˂rXbdQZ|bdQZ|vpfHvpfHZHAbZHAbJtAd|Ard|fpvfpvvn˂rX˂rXdrtvXnۅvp`ے`JXpZHAbrd|rd|pvnpvn˂rXQ˂rXQdQZ|dQZ|vpfHvpfHHAbےHAbےrd|rd|pvnpvn˂rXQ˂rXQdQZ|dQZ|vpfHvpfHJXQrf~Hp˂rp˂rdrtAJJltXnvvpfHAbے`|ZdQ|ZdQnXv`nXv`nrXQJ`rXQJ`rXQJ`ہdrtdtAfH~fH~˙ے`JXے`JX|ZdQ|ZdQnXv`nXv`rXQJ`rXQJ`ہdrtdrtfH~fH~Abے``JXQJtArdnXv`fpvXQJ`ےXQJ`ےdrtAdrtAH~fH~fے`JXQے`JXQ|ZdQb|ZdQbnXv`nXv`rXQJ`XQJ`ےXQJ`ےdrtAdtAJH~fH~fے`JXQے`JXQ|ZdQb|ZdQb`f~˂rXQXQJ`ےrAJlbdQZ|~f`~f``JXQ`JXQZdQbtZdQbtnXv`nXv`QJ`ےQJ`ےdrtAdrtA~f`~f``JXQ`JXQZdQbtZdQbtnXv`nXv`rXQJ`QJ`ےQJ`ےAJltvp`vXvXnQr˂pے`JZdQbtZdQbtXv`fXv`fJ`ےJ`ےdrtAJdrtAJ~f`~f``JXQr`JXQrZdQbtZdQbtXv`fXv`fJ`ےJ`ےdrtAJdrtAJ~f`~f`˂pZHAbے`JXQr˂p`tlJJfpvv`f󂀉rXQrXQQZ|dQZ|dvpfHvpfHvpfے`Abے`Aے`rd|rd|vnXvnXrXQrXQQZ|dQZ|dvpfHvpfHb˂pۑpJAHrHr󙐂ˁXnvˍXnvˍtbAdZ˂p`JJXQrtArdnvf~HfpJ`ےJ`ےrtAJlrtAJlf`~f`JXQrJXQrJXQrbtZdQbtZdQbtv`fv`fJ`ےJ`ےrtAJlrtAJl~f`~f`ZHAb󙐂ˁ`Z`ZQXbpfH~pfH~|drXQr˂˂pZHA|ZdQb~HfpvnvfbHAZpbHAZpˑtbdtbdvXnvXnۉ˂pZH˂pZHlJtlJtAlJfp~HfpHfpbHAZpbHAZpˑtbdtbdvXnvXnۙے`JXQXb㉀ۑp`Zf۝`vf۝`vQtJlpZHAbbے`tlJvnX~HfrXQrXQQZ|dQZ|dvpfHvpfHAbے`Abے`Ad|rd|vnXvnXvnrXrXQrXQQZ|dQZ|dvpfHvpfHQr˂pۑp`ZQQXb㉀XnvˍXnvˍtbAdZے`JJXQrtArdv`fpvnJ`ےJ`ےrtAJlrtAJl~f`~f`JXQrJXQrZdQbtZdQbtv`fv`fQJ`ےJ`ےJ`ےJlrtAJltAJl~f`~f`ZHAbXb㉀ۑۑpJAHrpfH~p|dr|drXQr˂˂p`J|ZdQtA~HfpXv`fbHAZpbHAZpˑtbdtbdvXnvXnۉ˂pZH˂pZHlJtAlJtA~Hfp~HfpHAZpbHAZpˑtbdtbdtbnvXnvXnۙے`JXpJAHr󙐂ˁ`Zf۝`vQtJlQtJlpZHAbXQrbtrd|vnX~HfrXQrXQQZ|dQZ|dvpfHvpfHAbے`Abے`rd|rd|vnXvnXrXQrXQQZ|dQZ|dvpfHvpfHvpfZHQHAbېˁ`ZQQXb㉀XnvˍtbAdZtbAdZ˂pl|ZZdQbtv`f~pvnJ`ےJ`ےrtAJlrtAJl~f`~f`JXQrJXQrZdQbtZdQbtv`fv`fJ`ےJ`ےrtAJlrtAJlf`~f`Abے``JXQXb㉀ۑۑpJAHpfH~|dr|drZHAbdQbtlJtAfpvXv`fbHAZpbHAZpˑtbdtbdvXnvXnۉ˂pZH˂pZHlJtAlJtA~Hfp~HfpbHAZpbHAZpˑtbdtbdvXnvXnہJXQrr˂ppJAHrf۝`vf۝`vQtJlQtJlے`JXQlJtArrd|nXv`~fpvrXQrXQQZ|dQZ|dvpfHvpfHAbے`Abے`rd|rd|vnXvnXrXQrXQQZ|dQZ|dvpfHvpfH˂pZHZHAbېۑpJXnvˍXnvˍtbAdZtbAdZr˂pd|ZZdQbtf~HnXv`J`ےJ`ےrtAJlrtAJl~f`~f`JXQrJXQrZdQbtZdQbtv`fv`fJ`ےJ`ےrtAJlrtAJl~f`~f`Abے``JXQAHr󙐂pfH~pfH~|dr|drZHAbdQbtl|Zfpvf~HbHAZpbHAZpˑtbdtbdvXnvXnۉ˂pZH˂pZHlJtAlJtA~Hfp~HfpbHAZpbHAZpˑtbdtbdvXnvXnہJXQrr˂p`ˁ`ZQXbf۝`vf۝`vQtJlQtJlے`JXQl|ZdQdQbtnXv`fpvrXQrXQQZ|dQZ|dvpfHvpfHAbے`Abے`rd|rd|vnXvnXrXQrXQQZ|dQZ|dvpfHvpfH˂p`JXQr㉀ۑpJXnvˍXnvˍtbAdZtbAdZHAbےbtllJtArf~HnXv`J`ےJ`ےrtAJlrtAJl~f`~f`JXQrJXQrZdQbtZdQbtv`fv`fJ`ےJ`ےrtAJlrtAJl~f`~f`JXQrˉ˂pZHAHr󙐂pfH~pfH~|dr|dr`JXQrJtArdd|ZfvnXffpbHAZpbHAZpˑtbdtbdvXnvXnۉ˂pZH˂pZHlJtAlJtA~Hfp~HfpbHAZpbHAZpˑtbdtbdvXnvXnۂpZHAAbے`ˁ`ZQXAf۝`vf۝`vQtJlQtJl˂pZ|ZdQdQbtv`fvnrXrXQrXQQZ|dQZ|dvpfHvpfHAbے`Abے`rd|rd|vnXvnXrXQrXQQZ|dQZ|dvpfHvpfHbے`JXQrHr󙐂ˁXnvˍXnvˍtbAdZtbAdZHAbےbtllJtAr~HfpQJ`ےJ`ےJ`ےJlrtAJltAJl~f`~f`JXQrJXQrZdQbtZdQbtv`fv`fJ`ےJ`ےrtAJlrtAJl~f`~f`JXQrˉ˂p`Z`ZQXbpfH~pfH~|dr|dr`JXQrJtArddtlvnXHAZpbHAZpˑtbdtbdtbnvXnvXnۉ˂pZH˂pZHlJtAlJtA~Hfp~HfpbHAZpbHAZpˑtbdtbdvXnvXnۂpZHAQXb㉀ۑpJAf۝`vf۝`vQtJlQtJlt \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv33_2.dat b/mpdf/qrcode/data/qrv33_2.dat deleted file mode 100644 index cc36868..0000000 --- a/mpdf/qrcode/data/qrv33_2.dat +++ /dev/null @@ -1,297 +0,0 @@ -}~}~}~}~yzyzyzyzwxwxwxwxststststoopopoponmnmnmnmjijijijihghghghg}~}~}~}~yzyzyzyzwxwxwxwxststststpopopoponmnmnmnmjijijijihghghghg}~}~}~}~yzyzyzyzwxwxwxwxststststpopopoponmnmnmnmjijijijihghghghg}~}~}~}~yzyzyzyzwxwxwxwxststststpopopoponmnmnmnmjijijijihghghghg}~}~}~}~yzyzyzyzwxwxwxwxststststpopopoponmnmnmnmjijijijihghghghg}~}~}~}~yzyzyzyzwxwxwxwxststststpopopoponmnmnmnmjijijijihghghghg}~}~}~}~yzyzyzyzwxwxwxwxststststooooopopnmnmnmnmjijijijihghghghg}~}~}~}~yzyzyzyzwxwxwxwxststststopopopopnmnmnmnmjijijijihghghghg}~}~}~}~yzyzyzyzwxwxwxwxststststopopopopnmnmnmnmjijijijihghghghg}~}~}~}~yzyzyzyzwxwxwxwxststststopopopopnmnmnmnmjijijijifefefefe}~}~}~}~yzyzyzyzwxwxwxwxststststopopopopnmnmnmnmjijijijifefefefe}~}~}~}~yzyzyzyzwxwxwxwxststststopopopopnmnmnmnmjijijijifefefefedcdcdcdc}~}~}~}~yzyzyzyzwxwxwxwxststststopoooooolklklklkjijijijifefefefedcdcdcdc}~}~}~}~yzyzyzyzwxwxwxwxststststpopopopolklklklkjijijijifefefefedcdcdcdc}~}~}~}~yzyzyzyzwxwxwxwxststststpopopopolklklklkjijijijifefefefedcdcdcdc}~}~}~}~yzyzyzyzwxwxwxwxststststpopopopolklklklkjijijijifefefefedcdcdcdc}~}~}~}~yzyzyzyzwvuvuvuvststststpopopopolklklklkjijijijifefefefedcdcdcdc}~}~}~}~yzyzyzyzuvuvuvuvststststpopopopolklklklkjijijijifefefefedcdcdcdc}~}~}~}~yzyzyzyzuvuvuvuvststststpopopooolklklklkjijijijifefefefedcdcdcdc}|{|{|{|yzyzyzyzuvuvuvuvststststooopopoplklklklkjijijijifefefefedcdcdcdc{|{|{|{|yzyzyzyzuvuvuvuvststststopopopoplklklklkjijijijifefefefedcdcdcdc{|{|{|{|yzyzyzyzuvuvuvuvststststopopopoplklklklkjijijijifefefefedcdcdcdc{|{|{|{|yzyzyzyzuvuvuvuvststststopopopoplklklklkjijijijifefefefedcdcdcdc{|{|{|{|yzyzyzyzuvuvuvuvststststopopopoplklklklkjijijijifefefefedcdcdcdc{|{|{|{|yzyzyzyzuvuvuvuvststststopopopoplklklklkjijijijifefefefedcdcdcdc{|{|{|{|yzyzyzyzuvuvuvuvstststsroooooopolklklklkjijijijifefefefedcdcdcdc{|{|{|{|yzyzyzyzuvuvuvuvqrqrqrqrpopopopolklklklkjijijijifefefefedcdcdcdc{|{|{|{|yzyzyzyzuvuvuvuvqrqrqrqrpopopopolklklklkjijijijifefefefedcdcdcdc{|{|{|{|yzyzyzyzuvuvuvuvqrqrqrqrpopopopolklklklkjijijijifefefefedcdcdcdc{|{|{|{|yzyzyzyzuvuvuvuvqrqrqrqrpopopopolklklklkhghghghgfefefefedcdcdcdc{|{|{|{|yzyzyzyzuvuvuvuvqrqrqrqrpopooooolklklklkhghghghgfefefefedcdcdcdc{|{|{|{|yzyzyzyzuvuvuvuvqrqrqrqrpopopopolklklklkhghghghgfefefefedcdcdcdc{|{|{|{|yzyzyzyzuvuvuvuvqrqrqrqrnmnmnmnmlklklklkhghghghgfefefefedcdcdcdc{|{|{|{|yzyzyzyzuvuvuvuvqrqrqrqrnmnmnmnmlklklklkhghghghgfefefefedcdcdcdc{|{|{|{|yzyzyzyzuvuvuvuvqrqrqrqrnmnmnmnmlklklklkhghghghgfefefefedcdcdcdc{|{|{|{|yzyzyzyzuvuvuvuvqrqrqrqrnmnmnmnmlklklklkhghghghgfefefefedcdcdcdc{|{|{|{|yxwxwxwxuvuvuvuvqrqrqrqrnmnmnmnmlklklklkhghghghgfefefefedcdcdcdc{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqrnmnmnmnmlklklklkhghghghgfefefefebabababa{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqrnmnmnmnmlklklklkhghghghgfefefefebabababa~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqrnmnmnmnmlklklklkhghghghgfefefefebabababa}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqrnmnmnmnmlklklklkhghghghgfefefefebabababa}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqrnmnmnmnmlklklklkhghghghgfefefefebabababa}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqrnmnmnmnmlklklklkhghghghgfefefefebabababa}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqrnmnmnmnmlklklklkhghghghgfefefefebabababa}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqrnmnmnmnmlklklklkhghghghgfefefefebabababa}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqrnmnmnmnmlklklklkhghghghgfefefefebabababa}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqrnmnmnmnmlklklklkhghghghgdcdcdcdcbabababa}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqrnmnmnmnmlklklklkhghghghgdcdcdcdcbabababa}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqrnmnmnmnmlklklklkhghghghgdcdcdcdcbabababa}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqrnmnmnmnmjijijijihghghghgdcdcdcdcbabababa}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqrnmnmnmnmjijijijihghghghgdcdcdcdcbabababa}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqrnmnmnmnmjijijijihghghghgdcdcdcdcbabababa}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqrnmnmnmnmjijijijihghghghgdcdcdcdcbabababa}~}~}~}~{|{|{|{|wxwxwxwxutstststqrqrqrqrnmnmnmnmjijijijihghghghgdcdcdcdcbabababa}~}~}~}~{|{|{|{|wxwxwxwxststststqrqrqrqrnmnmnmnmjijijijihghghghgdcdcdcdcbabababa}~}~}~}~{|{|{|{|wxwxwxwxststststqrqrqpopnmnmnmnmjijijijihghghghgdcdcdcdcbabababa}~}~}~}~{zyzyzyzwxwxwxwxststststopopoooonmnmnmnmjijijijihghghghgdcdcdcdcbabababababababa^]^]^]^]\[\[\[\[XWXWXWXWSTSTSTSTQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?>;<;<;<;<878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     babababa^]^]^]^]\[\[\[\[XWXWXWXWSTSTSTSTQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB=>=>=>=>;<;<;<;<878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     babababa^]^]^]^]\[\[\[\[XWXWXWXWSTSTSTSTQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB=>=>=>=>;<;<;<;<878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     babababa^]^]^]^]\[\[\[\[XWXWXWXWSTSTSTSSQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEDABABABAB=>=>=>=>;<;<;<;<878777774343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     babababa^]^]^]^]\[\[\[\[XWXWXWXWSSSSTSTSQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHCDCDCDCDABABABAB=>=>=>=>;<;<;<;<787878784343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     babababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHCDCDCDCDABABABAB=>=>=>=>;<;<;<;<787878784343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     babababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSQRQRQRQRMNMNMNMNKLKLKLKJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>;<;<;<;<787878784343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     babababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSQRQRQRQRMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>;<;<;<;<787878784343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%$#"!"!"!"!     babababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSQRQRQRQRMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>;<;<;<;<787878784343434321212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#"!"!"!"!     babababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSQRQRQRQPMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>;<;<;<;<787878774343434321212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#"!"!"!"!     babababa^]^]^]^]\[\[\[\[XWXWXWXWTSSSSSSTOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>;<;<;:9:777787874343434321212121.-.-.-.-,+,+,+*)('('('('$#$#$#$#"!"!"!"!     babababa^]^]^]^]\[\[\[\[XWXWXWXWSTSTSTSTOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>9:9:9:9:878787874343434321212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!     babababa^]^]^]^]\[\[\[\[XWXWXWXWSTSTSTSTOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>9:9:9:9:878787874343434321212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!     babababa^]^]^]^]\[\[\[\[XWXWXWXWSTSTSTSTOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>9:9:9:9:87878787434343432121210/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!     babababa^]^]^]^]ZYZYZYZYXWXWXWXWSTSTSTSTOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>9:9:9:9:87878787434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!     - -babababa^]^]^]^]ZYZYZYZYXWXWXWXWSTSTSTSTOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>9:9:9:9:87777787434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!     - - - -babababa^]^]^]^]ZYZYZYZYXWXWXWXWSTSTSSSSOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>9:9:9:9:87878765434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!     - - - -`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWSSTSTSTSOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>9:9:9:9:65656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!     - - - -`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>9:9:9:9:65656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!     - - - -`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>9:9:9:9:65656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!     - - - -`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABA@=>=>=>=>9:9:9:9:65656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!     - - - -`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCD?@?@?@?@=>=>=>=>9:9:9:9:65656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!     - - - -`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCD?@?@?@?@=>=>=>=>9:9:9:9:65656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!     - - - -`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWVUSSSSSTSTOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGFCDCDCDCD?@?@?@?@=>=>=>=>9:9:9:9:65656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!     - - - -`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUSTSTSTSTOPOPOPOPMNMNMNMNIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>9:9:9:9:65656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!      - - - -`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUSTSTSTSTOPOPOPOPMNMNMNMNIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>9:9:9:9:65656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#         - - - -`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUSTSTSTSTOPOPOPOPMNMNMNMLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>9:9:9:9:65656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#         - - - -`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUSTSTSTSTOPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>9:9:9:9:65656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('&%$#$#$#$#         - - - -`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUSTSSSSSTOPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>9:9:9:9:65656565434343430/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#         - - - -`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUSTSTSTSROPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>9:9:9:9:65656565434343430/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#         - - - -`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>9:9:9:9:65656565434343430/0/0/0/.-.-.-,+*)*)*)*)&%&%&%&%$#$#$#$#         - - - -`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>9:9:9:9:65656565434343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#         - - - -`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>9:9:9:9:65656565434343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#         - - - -`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>9:9:9:9:65656565434343210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#         - - - -`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>9:9:9:9:65656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#       - - - -`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>9:9:9:9:65656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#     - - - -`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>9:9:9:9:65656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#     - - - -`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=<9:9:9:9:65656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#     - - - -`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@;<;<;<;<9:9:9:9:65656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#     - - - -`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@;<;<;<;<9:9:9:9:65656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#     - - - -`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCB?@?@?@?@;<;<;<;<9:98787865656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#     - - - -`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFABABABAB?@?@?@?@;<;<;<;<7877777765656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#     - - - -`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFABABABAB?@?@?@?@;<;<;<;<8787878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#     - - - -`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<8787878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#     - - - -`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUQRQRQRQROPOPOPOPKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<8787878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#"!     - - - -`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUQRQRQRQROPOPOPOPKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<8787878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!     - - - -`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUQRQRQRQROPOPOPONKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<8787878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!     - - - -`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<8787877765656565212121210/0/0/0/,+,+,+,+*)*)*)('&%&%&%&%"!"!"!"!     - - - -`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<7778787865656565212121210/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"!     - - - -`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<7878787865656565212121210/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"!     - - - -`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<7878787865656565212121210/0/0/.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     - - - -`_`_`_`_\[\[\[\[XWXWXWXWVUVUVUVUQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<787878786565656521212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     - - `_`_`_`_\[\[\[\[XWXWXWXWVUVUVUVUQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<787878786565656521212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     `_`_`_`_\[\[\[\[XWXWXWXWVUVUTSTSQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<787878786565654321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     ^]^]^]^]\[\[\[\[XWXWXWXWTSTSSSSSQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<777777874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!    ^]^]^]^]\[\[\[\[XWXWXWXWSTSTSTSTQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     ^]^]^]^]\[\[\[\[XWXWXWXWSTSTSTSTQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     aabbccddPPQQRRSS01122334YXXWWVVUHIIJJKKLA@@??>>=~~}}|eeffgghh!!""##$$$$##""!!eeffgghhYYZZ[[\\45566778 UTTSSRRQLMMNNOOP - - =<<;;::9|{{zzyyxiijjkkll%%&&''(( iijjkkll]]^^__``899::;;< - - QPPOONNMPQQRRSST 98877665xwwvvuuommnnoopp))**++,,mmnnooppaabbccdd<==>>??@ MLLKKJJITUUVVWWX54433221onnmmllk~~}}qqrrsstt--..//00qqrrsstteeffgghh@AABBCCDIHHGGFFEXYYZZ[[\100//..-kjjiihhg||{{zzyyuuvvwwxx11223344~~}}uuvvwwxxiijjkkllDEEFFGGHEDDCCBBA\]]^^__`-,,++**)gffeeddcxxwwvvuuyyzz{{||55667788 ||{{zzyyyyzz{{||mmnnoouuHIIJJKKLA@@??>>=`aabbccd )((''&&%cbbaa``_tsrqpoon}}~~99::;;<< - - xxwwvvuu}}~~vvwwxxyyLMMNNOOP - - =<<;;::9~~}deeffggh !!""##$%$$##""!_^^]]\\[nmmllkkj==>>??@@ttssrrqqzz{{||}}PQQRRSST 98877665}||{{zzyhiijjkkl$%%&&''(! [ZZYYSSRjiihhggfAABBCCDDppoonnmm~~TUUVVWWX54433221yxxwwvvulmmnnoop())**++,RQQPPOONfeeddccbEEFFGGHHllkkjjiiXYYZZ[[\100//..-uttssrrqpqqrrsst,--..//0NMMLLKKJbaa``__^IIJJKKLLhhggffee\]]^^__`-,,++**)qppoonnmtuuvvwwx01122334JIIHHGGF^]]\\[[ZMMNNOOPP - - hhggffeeddccbbaa`aabbccd )((''&&%mllkkjjixyyzz{{|45566778 FEEDDCCBZYYXWVUTQQRRSSTT ddccbbaa``__^^]]deeffggh !!""##$%$$##""!ihhggffe|}}~~899::;;< - - BAA@@??>SSRRQQPPUUVVWWXX``__^^]]\\[[ZZYYhiijjkkl$%%&&''(! eddccbba<==>>??@ >==77665OONNMMLLYYZZ[[\\\\[[ZZYYXXWWVVUUlmmnnoop())**++,a``__^^]@AABBCCD54433221KKJJIIHH]]^^__``XXWWVVUUTTSSRRQQpqqrrsst,--..//0]\\[[ZZYDEEFFGGH100//..-GGFFEEDDaabbccdd TTSSRRQQPPOONNMM~~}}||tuuvvwwx01122334YXXWWVVUHIIJJKKL-,,++**)CCBBAA@@~~}}eeffgghh!!""##$$PPOONNMMLLKKJJII{{zzyyxx~~}}|xyyzz{{|45566778 UTTSSRRQLMMNNOOP - - )((''&&%??>>==<;||{{zzyyiijjkkll%%&&''((LLKKJJIIHHGGFFEEwwvvuuoo|{{zzyyx|}}~~899::;;< - - QPPOONNMPQQRRSST %$$##""!:9877665xxwwvvuummnnoopp))**++,,HHGGFFEEDDCCBBAAnnmmllkkxwwvvuut<==>>??@ MLLKKJJITUUVVWWX!54433221ttssrrqqqqrrsstt--..//00DDCCBBAA@@??>>==jjiihhggsrqpoonn@AABBCCDIHHGGFFEXYYZZ[[\100//..-ppoonnmmuuvvwwxx11223344@@??>>==<<;;::99ffeeddccmmllkkjjDEEFFGGHEDDCCBBA\]]^^__`-,,++**)llkkjjiiyyzz{{||55667788<<;;::9988776655bbaa``__iihhggffHIIJJKKLA@@??>>=`aabbccd  )((''&&%hhggffee}}~~99::;;<<8877665544332211^^]]\\[[eeddccbbLMMNNOOP - - =<<;;::9~~}deeffggh !!""##$ - - %$$##""!ddccbbaa==>>??@@4433221100//..--ZZYYSSRRaa``__^^PQQRRSST 98877665}||{{zzyhiijjkkl$%%&&''(! ``__^^]]AABBCCDD00//..--,,++**))QQPPOONN]]\\[[ZZTUUVVWWX54433221yxxwwvvulmmnnoop())**++, \\[[ZZYYEEFFGGHH,,++**))((''&&%%MMLLKKJJYYXWVUTSXYYZZ[[\100//..-uttssrrqpqqrrsst,--..//0 - - XXWWVVUUIIJJKKLL((''&&%%$$##""!!IIHHGGFFSRRQQPPO\]]^^__`-,,++**)qppoonnmtuuvvwwx01122334 TTSSRRQQMMNNOOPP$$##""!! EEDDCCBBONNMMLLK`aabbccd )((''&&%mllkkjjixyyzz{{|45566778 PPOONNMMQQRRSSTT AA@@??>>KJJIIHHG~~}deeffggh !!""##$%$$##""!ihhggffe|}}~~899::;;< - - LLKKJJIIUUVVWWXX==776655GFFEEDDC}||{{zzyhiijjkkl$%%&&''(! eddccbba<==>>??@!!"HHGGFFEEYYZZ[[\\44332211CBBAA@@?yxxwwvvulmmnnoop())**++,a``__^^]@AABBCCD"##$$%%&DDCCBBAA]]^^__`` 00//..--?>>==<;:uttssrrqpqqrrsst,--..//0]\\[[ZZYDEEFFGGH&''(())*@@??>>==aabbccdd - - ,,++**))98776655qppoonnmtuuvvwwx01122334YXXWWVVUHIIJJKKL*++,,--. - - <<;;::99~~}}eeffgghh - - - - ((''&&%%44332211mllkkjjixyyzz{{|45566778 UTTSSRRQLMMNNOOP.//00112 88776655||{{zzyyiijjkkll $$##""!!00//..--ihhggffe|}}~~899::;;< - - QPPOONNMPQQRRSST2334455644332211xxwwvvuummnnoopp,,++**))eddccbba<==>>??@ MLLKKJJITUUVVWWX677==>>?00//..--ttssrrqqqqrrsstt((''&&%%a``__^^]@AABBCCDIHHGGFFEXYYZZ[[\?@@AABBC,,++**))ppoonnmmuuvvwwxx$$##""!!]\\[[ZZYDEEFFGGHEDDCCBBA\]]^^__`CDDEEFFG ((''&&%%llkkjjiiyyzz{{|| - -   YXXWWVVUHIIJJKKLA@@??>>=`aabbccdGHHIIJJK!!""##$$$$##""!!hhggffee}}~~ !!""##$$ - - UTTSSRRQLMMNNOOP - - =<<;;::9~~}deeffgghKLLMMNNO%%&&''(( ddccbbaa%%&&''(( - - QPPOONNMPQQRRSST 98877665}||{{zzyhiijjkklOPPQQRRS))**++,,``__^^]]))**++,,MLLKKJJITUUVVWWX54433221yxxwwvvulmmnnoopSYYZZ[[\--..//00\\[[ZZYY--..//00 -IHHGGFFEXYYZZ[[\100//..-uttssrrqpqqrrsst\]]^^__`11223344XXWWVVUU 11223344 - EDDCCBBA\]]^^__`-,,++**)qppoonnmtuuvvwwx`aabbccd55667788 TTSSRRQQ!!""##$$55667788!!""A@@??>>=`aabbccd )((''&&%mllkkjjixyyzz{{|deeffggh99::;;<< - - PPOONNMM%%&&''((99::;;<<##$$%%&& - - =<<;;::9~~}deeffggh !!""##$%$$##""!ihhggffe|}}~~hiijjkkl==>>??@@LLKKJJII))**++,,==>>??@@''(())** 98877665}||{{zzyhiijjkkl$%%&&''(! eddccbbalmmnnoouAABBCCDDHHGGFFEE--..//00AABBCCDD++,,--..54433221yxxwwvvulmmnnoop())**++,a``__^^]uvvwwxxyEEFFGGHHDDCCBBAA11223344EEFFGGHH//001122100//..-uttssrrqpqqrrsst,--..//0]\\[[ZZYyzz{{||}IIJJKKLL@@??>>==55667788IIJJKKLL33445566-,,++**)qppoonnmtuuvvwwx01122334YXXWWVVU}~~MMNNOOPP - - <<;;::99~~}}99::;;<>?? )((''&&%mllkkjjixyyzz{{|45566778 UTTSSRRQQQRRSSTT 88776655||{{zzyy==>>??@@QQRRSSTT@@AABBCC !!""##$%$$##""!ihhggffe|}}~~899::;;< - - QPPOONNMUUVVWWXX44332211xxwwvvuuAABBCCDDUUVVWWXXDDEEFFGG$%%&&''(! eddccbba<==>>??@ MLLKKJJIYYZZ[[\\00//..--ttssrrqqEEFFGGHHYYZZ[[\\HHIIJJKK())**++,a``__^^]@AABBCCDIHHGGFFE]]^^__``,,++**))ppoonnmmIIJJKKLL]]^^__``LLMMNNOO,--..//0]\\[[ZZYDEEFFGGHEDDCCBBAaabbccdd ((''&&%%llkkjjiiMMNNOOPPQQRRSSTT 88776655wwvvuuoomnnooppq)**++,,-`__^^]]\ABBCCDDE43322110JJIIHHGG^^__``aa++**))((oonnmmllvvwwxxyy22334455 SRRQQPPONOOPPQQR - ;::99887wvvuuoonmllkkjjiUUVVWWXX44332211nnmmllkk~~}}|qrrssttu-..//001\[[ZZYYXEFFGGHHI0//..--,FFEEDDCCbbccddee !!''&&%%$$kkjjiihhzz{{||}}66778899 - - ONNMMLLKRSSTTUUV76655443nmmllkkjihhggffeYYZZ[[\\00//..--jjiihhgg|{{zzyyxuvvwwxxy12233445XWWVVUUTIJJKKLLM ,++**))(BBAA@@??~~}}||ffgghhii""##$$%%##""!! ggffeedd~~::;;<<== KJJIIHHGVWWXXYYZ3221100/jiihhggfeddccbba]]^^__``,,++**))ffeeddccxwwvvuutyzz{{||}56677889 TSSRRQQPMNNOOPPQ - - (''&&%%$>>==<;:9{{zzyyxxjjkkllmm&&''(())ccbbaa``>>??@@AA!!""##GFFEEDDCZ[[\\]]^/..--,,+feeddccba``__^^]aabbccdd ((''&&%%bbaa``__srqpoonn}~~9::;;<<= - - POONNMMLQRRSSTTU $##""!!87766554wwvvuuttnnooppqq**++,,--__^^]]\\BBCCDDEE$$%%&&''CBBAA@@?^__``aab+**))(('baa``__^]\\[[ZZYeeffgghh!!""##$$$$##""!!^^]]\\[[mmllkkjj=>>??@@ALKKJJIIHUVVWWXXY43322110ssrrqqpprrssttuu..//0011[[ZZYYXXFFGGHHII(())**++ -?>>==<<;bccddeef !!"'&&%%$$#^]]\\[[ZYXXWWVVUiijjkkll%%&&''(( ZZYYSSRRiihhggffABBCCDDEHGGFFEEDYZZ[[\\]0//..--,oonnmmllvvwwxxyy22334455WWVVUUTTJJKKLLMM,,--..// - ;::99887~~}}||{fgghhiij"##$$%%&#""!! ZYYSSRRQUTTSSRRQmmnnoopp))**++,,QQPPOONNeeddccbbEFFGGHHIDCCBBAA@]^^__``a,++**))(kkjjiihhzz{{||}}66778899 SSRRQQPPNNOOPPQQ0011223376655443{zzyyxxwjkkllmmn&''(())*QPPOONNMQPPOONNMqqrrsstt--..//00MMLLKKJJaa``__^^IJJKKLLM @??>>==>??@@AAKKJJIIHHVVWWXXYY==>>??@@/..--,,+srrqqpporssttuuv.//00112IHHGGFFEIHHGGFFEyyzz{{||55667788 EEDDCCBBYYXWVUTSQRRSSTTU 87766554|{{zzyyxijjkkllm%&&''(()__^^]]\\BBCCDDEEGGFFEEDDZZ[[\\]]AABBCCDD+**))(('onnmmllkvwwxxyyz23344556EDDCCBBAEDDCCBBA}}~~99::;;<< - - AA@@??>>SRRQQPPOUVVWWXXY43322110xwwvvuutmnnooppq)**++,,- -[[ZZYYXXFFGGHHIICCBBAA@@^^__``aaEEFFGGHH !!"'&&%%$$#kjjiihhgz{{||}}~6778899: A@@??>>=A@@??>>===>>??@@==776655ONNMMLLKYZZ[[\\]0//..--,tssrrqqpqrrssttu-..//001 - WWVVUUTTJJKKLLMM ??>>==< - - =7766554=<<;;::9AABBCCDD44332211KJJIIHHG]^^__``a,++**))(poonnmmluvvwwxxy12233445SSRRQQPPNNOOPPQQ - - ;;::9988~~}}||ffgghhiiMMNNOOPP&''(())*cbbaa``_>??@@AAB4332211098877665EEFFGGHH00//..--GFFEEDDCabbccdde !(''&&%%$lkkjjiihyzz{{||}56677889 - -OONNMMLLRRSSTTUU77665544{{zzyyxxjjkkllmmQQRRSSYY*++,,--._^^]]\\[BCCDDEEF0//..--,54433221IIJJKKLL,,++**))CBBAA@@?~~}}|effgghhi!""##$$%$##""!! hggffeed}~~9::;;<<= KKJJIIHHVVWWXXYY33221100wwvvuuttnnooppqqZZ[[\\]].//00112[ZZYYXXWFGGHHIIJ,++**))(100//..-MMNNOOPP - - ((''&&%%?>>==<;:|{{zzyyxijjkkllm%&&''(() dccbbaa`=>>??@@A!!""#GGFFEEDDZZ[[\\]]//..--,,ssrrqqpprrssttuu^^__``aa23344556WVVUUTTSJKKLLMMN -(''&&%%$-,,++**)QQRRSSTT $$##""!!98776655xwwvvuutmnnooppq)**++,,-`__^^]]\ABBCCDDE#$$%%&&'CCBBAA@@^^__``aa++**))((oonnmmllvvwwxxyybbccddee6778899: SRRQQPPONOOPPQQR - $##""!!)((''&&%UUVVWWXX44332211tssrrqqpqrrssttu-..//001\[[ZZYYXEFFGGHHI'(())**+ ??>>==< - - ONNMMLLKRSSTTUUV%$$##""!YYZZ[[\\00//..--poonnmmluvvwwxxy12233445XWWVVUUTIJJKKLLM+,,--../ - - ;;::9988~~}}||ffgghhii""##$$%%##""!! ggffeedd~~jjkkllmm>??@@AABKJJIIHHGVWWXXYYZ! ]]^^__``,,++**))lkkjjiihyzz{{||}56677889 TSSRRQQPMNNOOPPQ/001122377665544{{zzyyxxjjkkllmm&&''(())ccbbaa``nnoouuvvBCCDDEEFGFFEEDDCZ[[\\]]^aabbccdd  ((''&&%%hggffeed}~~9::;;<<= - - POONNMMLQRRSSTTU3445566733221100wwvvuuttnnooppqq**++,,--__^^]]\\wwxxyyzzFGGHHIIJCBBAA@@?^__``aab ~~}}eeffgghh!!""##$$ - - $$##""!!dccbbaa`=>>??@@ALKKJJIIHUVVWWXXY7==>>??@//..--,,ssrrqqpprrssttuu..//0011[[ZZYYXX{{||}}~~JKKLLMMN -?>>==<<;bccddeef !!" - - -||{{zzyyiijjkkll%%&&''(( `__^^]]\ABBCCDDEHGGFFEEDYZZ[[\\]@AABBCCD++**))((oonnmmllvvwwxxyy22334455WWVVUUTTNOOPPQQR - ;::99887~~}}||{fgghhiij"##$$%%& -  xxwwvvuummnnoopp))**++,, \[[ZZYYXEFFGGHHIDCCBBAA@]^^__``aDEEFFGGH !!''&&%%$$kkjjiihhzz{{||}}66778899 SSRRQQPPRSSTTUUV76655443{zzyyxxwjkkllmmn&''(())* - - ttssrrqqqqrrsstt--..//00 - - XWWVVUUTIJJKKLLM @??>>==>??@@AAKKJJIIHHZ[[\\]]^/..--,,+srrqqpporssttuuv.//00112 llkkjjiiyyzz{{||55667788 -POONNMMLQRRSSTTU 87766554|{{zzyyxijjkkllmPQQRRSSY**++,,--__^^]]\\BBCCDDEEGGFFEEDD^__``aab+**))(('onnmmllkvwwxxyyz23344556!!""#hhggffee}}~~99::;;<< - LKKJJIIHUVVWWXXY43322110xwwvvuutmnnooppqYZZ[[\\]..//0011[[ZZYYXXFFGGHHIICCBBAA@@bccddeef !!"'&&%%$$#kjjiihhgz{{||}}~6778899:#$$%%&&'ddccbbaa==>>??@@!!""HGGFFEEDYZZ[[\\]0//..--,tssrrqqpqrrssttu]^^__``a22334455WWVVUUTTJJKKLLMM ??>>==<<~~}}||{{fgghhiij"##$$%%&#""!! gffeeddc~:;;<<==>'(())**+``__^^]]AABBCCDD##$$%%&&DCCBBAA@]^^__``a,++**))(poonnmmluvvwwxxyabbccdde66778899 SSRRQQPPNNOOPPQQ - - ;;::9988zzyyxxwwjkkllmmn&''(())*cbbaa``_>??@@AAB+,,--../ \\[[ZZYYEEFFGGHH''(())** @??>>==>??@@AAKKJJIIHHVVWWXXYY33221100mmllkkjj~~}}||{rssttuuv.//00112[ZZYYXXWFGGHHIIJ34455667$%%&&''(TTSSRRQQMMNNOOPP//001122 87766554|{{zzyyxijjkkllm%&&''(() dccbbaa`mnnoouuvBBCCDDEEGGFFEEDDZZ[[\\]]//..--,,iihhggff{zzyyxxwvwwxxyyz23344556WVVUUTTSJKKLLMMN7==>>??@())**++,PPOONNMMQQRRSSTT3344556643322110xwwvvuutmnnooppq)**++,,-`__^^]]\vwwxxyyzFFGGHHIICCBBAA@@^^__``aa++**))((eeddccbbwvvuutsrz{{||}}~6778899: SRRQQPPONOOPPQQR@AABBCCD,--..//0LLKKJJIIUUVVWWXX77==>>??0//..--,tssrrqqpqrrssttu-..//001\[[ZZYYXz{{||}}~JJKKLLMM ??>>==< - - ONNMMLLKRSSTTUUVDEEFFGGH01122334HHGGFFEEYYZZ[[\\@@AABBCC,++**))(poonnmmluvvwwxxy12233445XWWVVUUT~NNOOPPQQ - - ;;::9988~~}}||ffgghhii""##$$%%##""!! ]]\\[[ZZllkkjjii>??@@AABKJJIIHHGVWWXXYYZHIIJJKKL45566778DDCCBBAA]]^^__``DDEEFFGG !(''&&%%$lkkjjiihyzz{{||}56677889 TSSRRQQPRRSSTTUU77665544{{zzyyxxjjkkllmm&&''(())YYSSRRQQhhggffeeBCCDDEEFGFFEEDDCZ[[\\]]^LMMNNOOP899::;;<@@??>>==aabbccddHHIIJJKK!""##$$%$##""!! hggffeed}~~9::;;<<= - - POONNMMLVVWWXXYY33221100wwvvuuttnnooppqq**++,,--PPOONNMMddccbbaaFGGHHIIJCBBAA@@?^__``aabPQQRRSSY<==>>??@<<;;::99~~}}eeffgghhLLMMNNOO%&&''(() dccbbaa`=>>??@@ALKKJJIIHZZ[[\\]]//..--,,ssrrqqpprrssttuu..//0011LLKKJJII``__^^]]JKKLLMMN -?>>==<<;bccddeefYZZ[[\\]@AABBCCD88776655||{{zzyyiijjkkllPPQQRRSS)**++,,-`__^^]]\ABBCCDDEHGGFFEED^^__``aa++**))((oonnmmllvvwwxxyy22334455HHGGFFEE\\[[ZZYYNOOPPQQR - ;::99887~~}}||{fgghhiij]^^__``aDEEFFGGH44332211xxwwvvuummnnooppYYZZ[[\\-..//001\[[ZZYYXEFFGGHHIDCCBBAA@bbccddee !!''&&%%$$kkjjiihhzz{{||}}66778899 DDCCBBAAXWVUTSSRRSSTTUUV76655443{zzyyxxwjkkllmmnabbccddeHIIJJKKL00//..--ttssrrqqqqrrsstt]]^^__``12233445XWWVVUUTIJJKKLLM @??>>==<~~}}||{ffgghhii""##$$%%##""!! ggffeedd~~::;;<<== - - @@??>>==RQQPPOONVWWXXYYZ3221100/wvvuuttsnooppqqreffgghhiLMMNNOOP,,++**))ppoonnmmuuvvwwxxaabbccdd56677889 TSSRRQQPMNNOOPPQ - - <;;::998{zzyyxxwjjkkllmm&&''(())ccbbaa``>>??@@AA77665544NMMLLKKJZ[[\\]]^/..--,,+srrqqpporssttuuvijjkkllmPQQRRSST((''&&%%llkkjjiiyyzz{{||eeffgghh9::;;<<= - - POONNMMLQRRSSTTU 87766554wvvuuoonnnooppqq**++,,--__^^]]\\BBCCDDEE33221100JIIHHGGF^__``aab+**))(('onnmmllkvwwxxyyzmnnoouuvTUUVVWWX$$##""!!hhggffee}}~~iijjkkll=>>??@@ALKKJJIIHUVVWWXXY43322110nmmllkkj~~}}||rrssttuu..//0011[[ZZYYXXFFGGHHII//..--,,FEEDDCCBbccddeef !!"'&&%%$$#kjjiihhgz{{||}}~vwwxxyyzXYYZZ[[\ ddccbbaammnnoouuABBCCDDEHGGFFEEDYZZ[[\\]0//..--,jiihhggf{{zzyyxxvvwwxxyy22334455WWVVUUTTJJKKLLMM ++**))((BAA@@??>~~}}||{fgghhiij"##$$%%&#""!! gffeeddc~z{{||}}~\]]^^__```__^^]]vvwwxxyyEFFGGHHIDCCBBAA@]^^__``a,++**))(feeddccbwwvvuutszz{{||}}66778899 SSRRQQPPNNOOPPQQ - - ''&&%%$$>==<;:98{zzyyxxwjkkllmmn&''(())*cbbaa``_~`aabbccd\\[[ZZYYzz{{||}}IJJKKLLM @??>>==>??@@AAKKJJIIHHVVWWXXYY33221100srrqqpporssttuuv.//00112[ZZYYXXWhiijjkkl TTSSRRQQQRRSSTTU 87766554|{{zzyyxijjkkllm%&&''(() ZYYSSRRQihhggffeBBCCDDEEGGFFEEDDZZ[[\\]]//..--,,onnmmllkvwwxxyyz23344556WVVUUTTSlmmnnoop - - PPOONNMMUVVWWXXY43322110xwwvvuutmnnooppq)**++,,-QPPOONNMeddccbbaFFGGHHIICCBBAA@@^^__``aa++**))((kjjiihhgz{{||}}~6778899: SRRQQPPOpqqrrsstLLKKJJIIYZZ[[\\]0//..--,tssrrqqpqrrssttu-..//001MLLKKJJIa``__^^]JJKKLLMM ??>>==< - - ONNMMLLK~~}tuuvvwwxHHGGFFEE]^^__``a,++**))(poonnmmluvvwwxxy12233445IHHGGFFE]\\[[ZZYNNOOPPQQ - - ;;::9988~~}}||ffgghhii""##$$%% - - ##""!! cbbaa``_>??@@AABKJJIIHHG}||{{zzyxyyzz{{|DDCCBBAAabbccdde !(''&&%%$lkkjjiihyzz{{||}56677889 EDDCCBBAYXWVUTSSRRSSTTUU77665544{{zzyyxxjjkkllmm&&''(())_^^]]\\[BCCDDEEFGFFEEDDCyxxwwvvu|}}~~@@??>>==~~}}||effgghhi!""##$$%$##""!! hggffeed}~~9::;;<<= - - A@@??>>=RRQQPPOOVVWWXXYY33221100wwvvuuttnnooppqq**++,,-- - -[ZZYYXXWFGGHHIIJCBBAA@@?~~}}||{uttssrrq - - <<;;::99{{zzyyxxijjkkllm%&&''(() dccbbaa`=>>??@@A=7766554NNMMLLKKZZ[[\\]]//..--,,ssrrqqpprrssttuu..//0011 WVVUUTTSJKKLLMMN -?>>==<<;{zzyyxxwqppoonnmfpvXQJ`ےf`vXbtlf~HAJltf`vXbtlےHAAJltZHAbۍf~HbHAZ`vXnr˂pnXv`bHAZH~fJtArdfpvbdQZ|nvpJtArdZp˂bdQZ|`JXQfpvp˂rvpfZHAbf~Hp˂r`vXn|ZdQnXv`drtfے`JX|ZdQrXQJ`ہdrtr˂p`nXv`XQJ`ےH~fے`JXQfpvXQJ`ےvpfbtlfHAJltQr˂pbtlbHAAJltJXQrf~HbHAZ`vXnr˂pnXv`bHAZH~fJtArdfpvbdQZ|ZHAbJtArdZp˂bdQZ|˂pZHfpvp˂rvpfZHAbf~Hp˂r`vXn|ZdQnrXQJ`drtے`JX|ZdQrXQJ`ہdrtAbے`nXv`XQJ`ےH~fے`JXQfpvXQJ`ےvp`btlےHAAJltQr˂pbtlbHAAJltJXQrf~fpېbHAZ`vXnr˂pnXv`bHAZvXnJtArdZp˂bdQZ|ZHAbJtArdZp˂bdQZ|˂pZHvnXp˂rvpfZHAےf~Hp˂rvpfH|ZdQrXQJ`ہdrtے`JX|ZdQrXQJ`ہdrtAbv`fXQJ`ےH~f`JXQrfpvXQJ`ے~f`btlbHAAJltQr˂pbtlbHAAJltpZHA~HfpېbHAZ`vXnbtlnXv`bHAZvXnJtArdZp˂bdQZ|ZHAbJtArdZp˂bdQZ|bے`vnXp˂rvpfJtAdf~Hp˂rvpfH|ZdQrXQJ`ہdrtے`JX|ZdQrXQJ`ہdrtJXQrv`fXQJ`ےH~f|ZdQbf~HfpvXQJ`ے~vbtlbHAAJltQr˂pbtlbHAAJltpZHA~HfvnJlt`vXntlJfpvnXv`Jltpfے`JtArdZp˂bdQZ|ZHAbJtArdZp˂bdQZ|bے`Xv`fbdQZ|vpftArdnXv`f~HdrtAJJXQr|ZdQrXQJ`ہdrtے`JX|ZdQrXQJ`ہdtAJXQHAb~HfdrtAH~f|ZdQbf~HfpvltbZHAbbtlbHAAJltQr˂pbtlbHAJltے`JXpvnJlt`vXntlJfpvnXv`dQZ|`JXQJtArdZp˂bdQZ|ZHAbJtArdZp˂bnvpQr˂pXv`fbdQZ|vpftArdnXv`f~HdrtAJr˂p|ZdQrXQJ`ہdrtے`JX|ZdQrXQJ`۝fHˑZHAb~HfdrtAH~f|ZdQbf~HfpvltbZHAbbtlbHAAJltQr˂pbtlbHAf`vXے`JXpvnJlt`vXntlJfpvnXv`dQZ|l`JXQJtArdZp˂bdQZ|ZHAbJfpvZp˂nvpQr˂pvf~HbdQZ|vpftArdnXv`f~HtbdQr˂pZ|ZdQrXQJ`ہdtAے`JXnXv`rXQJ`fH~ˑ`JXQfpvdrtAH~f|ZdQbf~HfpvZ|dAb`JbtlbHAJltQr˂pf~HbHAf`vXr˂pnXv`Jlt`vXntlJfpvnXv`rtAJlXQr˂JtArdZp˂bnvpZHAbfpvZp˂nvpZHAbۍf~HbdQZ|vpftArdnXv`f~HtbdQpZHAb|ZdQrXQJ`۝fH˙ے`JXnXv`rXQJ`fH~˒`JXQfpvdrtAH~f|ZdQbf~HfpvZ|dے`JbtlbHAf`vXQr˂pf~HbHAf`vXr˂p`nXv`Jlt`vXntlJfpvnXv`rtAdQZXQr˂JfpvZp˂nvpZHAbfpvZp˂nvpJXQrf~fpbdQZ|vpftArdnXv`f~H|drpZHAbnXv`rXQJ`fH~˙ے`JXnXv`rXQJ`fH~btl|vnXdrtAH~f|ZdQbf~HfpvtAJl璐JQrf~HbHAf`vXQr˂pf~HbHAf`vXZdQbtv`fJlt`vXntlJfpvnXv`tbdQZ˂pZHfpvZp˂nvpZHAbfpvZp˂nvplJt~HfpbdQZ|vpftArdnXv`f~H|drAbے`nXv`rXQJ`fH~˙ے`JXnXv`rXQJ`fH~Ard|vnXdrtAے`JXQ|ZdQbf~HfpvtAJl璁JXQrf~HbHAf`vXQr˂pf~HbHAf`vXZdQbtv`ffJltr˂ptlJfpvnXv`tdrtA˂pZHfpvZp˂nvpZHAbfpvZp˂nvpl|pvnbdQZ|ZHAbtArdnXv`f~HJltAbے`nXv`rXQJ`fH~˙ے`JXnXv`rXQJ`fH~ZdQbtrXQJ`drtAے`JXQ|ZdQbf~HfpvbdQZ|JXQrf~HbHAf`vXQr˂pf~HbHAf`vXlJtAےHAZJltr˂ptlJfpvnXv`drtAZHAbfpvZp˂nvpZHAbfpvZp˂nvprd|p˂rbdQZ|ZHAbtArdnXv`p˂rJltے`JXQnXv`rXQJ`fH~˙ے`JXnXv`rXQJ`fH~ZdQbtXQJ`ےdrtAے`JXQ|ZdQbfHfXQJ`ےbdQZ|r˂pf~HbHAf`vXQr˂pf~HJltf`vXlJtAbHAZJltr˂ptlJpvnbHAZltbZHAbfpvZp˂nvpZHAۅfpvbdQZ|nvprdtlp˂rbdQZ|ZHAbtArdrXQJ`p˂rdQZ|ے`JXQnXv`rXQJ`fH~˒`JXQnXv`drtfH~ˑJtArdXQJ`ےdrtAے`JXQ|ZdQbےHAZXQJ`ےdrtAJr˂pf~HbHAf`vXrbtlf~HAJltf`vX|ZdbHAZJltr˂ptlJp˂rbHAZltbZAb`fpvZp˂nvpJtAdfpvbdQZ|nvpQbtlp˂rbdQZ|ZHAbtArdXQJ`ےp˂rdQZ|`JXQr˅nXv`rXQJ`fH~˂|ZdQnXv`drtfH~ˑJtArdXQJ`ےdrtAے`JXQ|ZdQbbHAZXQJ`ےvXnpZHAf~HJltf`vXbtlf~HAJltf`vX|ZdbHAZJltr˂ptlJp˂rbHAZvpfHbے`fpvbdQZ|nvpJtArdfpvbdQZ|nvpQtArdp˂rbdQZ|ZHAbtArdXQJ`ےp˂r~f`JXQr˅nXv`drtfH~˂|ZdQnXv`drtfH~˂|ZdQXQJ`ےdrtAے`JXQ|ZdQbbHAZXQJ`ےvXnpZHAbf~HAJltf`vXbtlf~HAJltf`vXbtlbHAZJltr˂ptlJp˂rbHAZvp`vJAdfpvbdQZ|nvpJtArdfpvbdQZ|nvpJtArdp˂rbdQZ|ZHAbfpvXQJ`ےp˂rXnv|ZdQnXv`drtfH~˂|ZdQnXv`drtfH~˂|ZdQXQJ`ےdtAJے`JXQnXv`bHAZXQJ`ےpfH~btlf~HAJltf`vXbtlf~HAJltf`vXbtl|bHAZltbr˂pf~Hp˂rbHAZf`vJtArdfpvbdQZ|nvpJtArdfpvbdQZ|nvpZdQbtp˂rnvpZHAbfpvXQJ`ےp˂rXnv|ZdQnXv`drtfH~˂|ZdQnXv`drtfH~ˉlJtXQJ`ےfHfے`JXQnXv`bHAZXQJ`ےpfH~btlf~HAJltf`vXbtlf~HAJltf`vXArd|bHAZ`vXnr˂pf~Hp˂rbHAZvpJtArdfpvbdQZ|nvpJtArdfpvbdQZ|nvpZdQbtp˂rvpfZHAbfpvXQJ`ےp˂rfH~|ZdQnXv`drtfH~˂|ZdQnXv`drtfے`JXlJtXQJ`ےH~fے`JXQnXv`bHAZXQJ`ےf`vXbtlf~HAJltf`vXbtlfHAJltQHAbArdt琙bHAZ`vXnr˂pf~Hp˂rbHAZnvpJtArdfpvbdQZ|nvpJtArdfpvbdQZ|`JXQlJfpp˂rvpfZHAbfpvXQJ`ےp˂rfH~|ZdQnXv`drtfH~˂|ZdQnrXQJ`drtr˂pvnvXQJ`ےH~fے`JXQnXv`bHAZp˂rvpfZHAbXv`pbdQZ|vpfHArd|fpvbdQZ|vpfHArd|vnJltJXQrpvn˂rXQvpfHHAbےpvn˂rXQvpfHlJtArfpvQZ|dvpfے`rd|炀rXQQZ|d˂p`XnvˍXQJ`ےH~fے`JXQvnXdrtA~f`ZdQbtnXv`˂drtA~f`ZdQbtrXQJ`bdQZ|˂pZHAXv`fJ`ے~f``JXQrXv`fJ`ے~f`d|ZnXv`rtAJlJXQrZdQbtJ`ےrtAJlJXQrpfH~ㅐbHAZ`vXnr˂pv`fJltvXnlJtf~HJltvXnlJtHAZpdrtAbے`~HfbHAZpvXn˂pZ~HfbHAZpvXndQbt璍ffpۑtbd˂pZHlJtAbHAZpˑtbdpZHAf۝`vp˂rvpfZHAb~HfpbdQZ|vpfHArd|fpvbdQZ|vpfArd|˂rXJltJXQrpvn˂rXQvpfHHAbےpvn˂rXQvpfHl|ZdQvnrXQZ|dAbے`rd|炀rXQQZ|dbے`XnvˍXQJ`ےH~fے`JXQvnXrAJl璅~f`ZdQbtnXv`˂drtA`JXQZdQbtQJ`ےbdQZ|lZHAbXv`fJ`ے~f``JXQrXv`fJ`ے~f`btlQJ`ےrtAJlJXQrZdQbtJ`ےrtAJlJXQrpfH~ㅐbHAZ`vXnr˂pv`ftbdQZvXnlJtfHfpJltr˂plJtbHAZptbd`JXQ~HfbHAZpvXn˂pZ~HfbHAZpvXnJtArdHAZpˑtbd˂pZHlJtAbHAZpˑtbdpZHAf۝`vp˂rvpfZHAb~HXv|drvpfHArd|vnbdQZ|ZHAbArd|˂rXQZ|dr˂ppvn˂rXQvpfHHAbےpvn˂rXQvpfH|ZdQrXQQZ|dAbے`rd|炀rXQQZ|db˂pXnvˍXQJ`ےH~fے`JXQ`f~tAJl璅~f`ZdQbtrXQJ`ۂdrtA`JXQZdQbtQJ`ےrtAJlZHAbXv`fJ`ے~f``JXQrXv`fJ`ےJ~f`btlJ`ےrtAJlJXQrZdQbtJ`ےrtAJlZHAbpfH~ㅐbHAZ`vXnr˂pHfpvtbdQZvXnlJtHAZpJltr˂plJtbHAZptbd`JXQ~HfbHAZpvXn˂pZ~HfltbvXnJtArdbHAZpˑtbd˂pZHlJtAbHAZpˑtbdے`JXf۝`vp˂rvpfZHAbnXv|drvpfArd|˂rXbdQZ|ZHAbArd|˂rXQZ|lr˂pZpvn˂rXQvpfHHAے`pvndQZ|vpfHtlJrXQQZ|dAbے`rd|炀rXQQZ|dQr˂pXnvˍXQJ`ےH~fے`JXQ`f~tAJbd`JXQZdQbtQJ`ےdrtA`JXQZdQbtQJ`ےtbnAb`JXv`fJ`ے~f`JXQrbXv`fdrtAJ~f`tArdJ`ےrtAJlJXQrZdQbtJ`ےrtAJlZHAbpfH~ㅐbHAZ`vXnr˂pHfpvQZ|dr˂plJtbHAZpJltr˂plJtbHAZpvp`XQr˂~HfbHAZpvXntlJ~HfltbvXn|ZdQbbHAZpˑtbd˂pZHlJtAbHAZpˑtbdے`JXf۝`vp˂rvpfZHAے~HrtAJlZHAbArd|˂rXbdQZ|ZHAbArd|˂rXvXnpZHAbpvn˂rXQvpfHtAd|pvndQZ|vpfHtlJrXQQZ|dAbے`rd|炀rXQQZ|dQHAbXnvˍXQJ`ےH~f`JXQrfpvtbd`JXQZdQbtQJ`ےdrtA`JXQZdQbtQJ`ےvpfHے`JXv`fJ`ےJ~f`ZdQbtXv`fdrtAJ~f`tArdJ`ےrtAJlJXQrZdQbtJ`ےtAJl`JXQpfH~ㅐbHAZ`vXnbtlnXv`QZ|dr˂plJtbHAZpJltr˂plJtbHAZp~f`XQr˂~HfltbvXnlJtA~HfltbvXn|ZdQtAbHAZpˑtbd˂pZHlJtAbHAZp˒tbnr˂pf۝`vp˂rvpfJtAdf~HrtAJlZHAbArd|˂rXbdQZ|ZHAbArd|˂rXvXnpZA`pvndQZ|vpfHrd|pvndQZ|vpfHrd|rXQQZ|dAbے`rd|炀rXQvpfHZHAbXnvˍXQJ`ےH~f|ZdQbfpvtbQZ`JXQZdQbtQJ`ےdrtA`JXQZdQbtQJ`ےvp`vXJXQrbXv`fdrtAJ~f`ZdQbtXv`fdrtAJ~f`ZdQbtJ`ےrtAJlJXQrZdQbtJ`ےㅐf``JXQpfH~Jlt`vXntlJnXv`drtAr˂plJtbHAZpJltr˂plJtbHAZpnvptlJ~HfltbvXnlJtA~HfltbvXnlJtAbHAZpˑtbd˂pZHlJfpbHAZpvXnr˂p`f۝`vbdQZ|vpftArdpvnJltZHAbArd|˂rXbdQZ|ZHAbArd|˂rXfH~tAd|pvndQZ|vpfHrd|pvndQZ|vpfHrd|rXQQZ|dAbے`vnXrXQvpfHJXQrXnvˍdrtAH~f|ZdQbXv`fbdQZ|`JXQZdQbtQJ`ےdrtA`JXQZdQbtQJ`ےf`vXZdQbtXv`fdrtAJ~f`ZdQbtXv`fdrtAJ~f`ZdQbtJ`ےtAJlJXQrv`fJ`ے~f`˂pZHpfH~Jlt`vXntlJ~HfdrtAr˂plJtbHAZpJltr˂plJbHAZpnvplJtA~HfltbvXnlJtA~HfltbvXnl|ZbHAZp˒tbn˂pZH~HfpbHAZpvXnAbے`f۝`vbdQZ|vpftArdpvnJltZHAbArd|˂rXbdQZ|ZHAbfpv˂rXfH~rd|pvndQZ|vpfHrd|pvndQZ|vpfHdQbt璂rXQvpfHAbے`vnXrXQvpfHJXQrXnvˍdrtAH~f|ZdQbXv`pbdQZ|`JXQZdQbtQJ`ےdtAJl`JXQnXv`QJ`ےvpZdQbtXv`fdrtAJ~f`ZdQbtXv`fdrtAJ~f`lJtArJ`ےㅐf`JXQrv`fJ`ے~f`˂p`ZpfH~Jlt`vXntlJvnrrAJlr˂plJtbHAZptbr˂pf~HbHAZpfH~lJtA~HfltbvXnlJtA~HfltbvXnd|ZbHAZpvXnۉ˂pZH~HfpbHAZpvXnQXb㉀f۝`vbdQZ|vpftArdXQJ`ptbdQZHAbArd|˂rXnvpZHAbfpv˂rXf`vXrd|pvndQZ|vpfHrd|pvndQZ|vpfےdQbt璂rXQvpfHAbے`vnXrXQvpfHۑpJAHrXnvˍdrtAH~f|ZdQb˂rXQZ|d`JXQZdQbtQJ`ےfHf``JXQnXv`QJ`ےnvpZdQbtXv`fdrtAJ~f`ZdQbtXv`fdrtAJ`JXQHAlJtArJ`ے~f`JXQrv`fJ`ے~f`󙐂ˁ`Zp|drJlt`vXntlJJ`ےrtAJlr˂plJbHAZpvXnr˂pf~HbHAZpfH~lJtA~HfltbvXnlJtAHfpltbbے`dtlbHAZpvXnۉ˂pZH~HfpbHAZpvXnQXb㉀QtJlbdQZ|vpftArdbHAZptbdQZHAbfpv˂rXvpfHZHAbfpv˂rXf`vXHrd|pvndQZ|vpfHrd|vnrdQZ|JXQrJfpvrXQvpfHAbے`vnXrXQvpfHۑp`ZQtbAdZdrtAH~f|ZdQb˂rXQZ|AJl`JXQnXv`QJ`ے~f``JXQnXv`QJ`ے~f`ZdQbtXv`fdrtAJ~f`ZdQbtXQJ`ےdrtAJ˂pZHAnvfJ`ے~f`JXQrv`fJ`ے~f`Xb㉀ۑ|drJlt`vXntlJJ`p˂tbr˂pf~HbHAZpvXnr˂pf~HbHAZpvXnlJtA~HfltbvXnlJtAHAZpltbbے`~HfpbHAZpvXnۉ˂pZH~HfpbHAZpvXnpJAHrQtJlbdQZ|vpftArdrXQJnvpZHAbfpv˂rXvpfHZHAbfpv˂rXvpfHrd|pvndQZ|vpfےrd|˂rXQdQZ|JXQrvnXrXQvpfHAbے`vnXrXQvpfHˁ`ZQtbAdZdrtAH~f|ZdQb`ےbfHf``JXQnXv`QJ`ے~f``JXQnXv`QJ`ے~f`ZdQbtXv`fdrtAJ`JXQrZdQbtJ`ےdrtAJ˂p`Jv`fJ`ے~f`JXQrv`fJ`ے~f`Xb㉀ۑ|drJlt`vXntlJHAZp˂vXnr˂pf~HbHAZpvXnr˂pf~HbHAZpvXnlJtAHfpltb˂pZlJtAbHAZpltbXQr˂~HfpbHAZpvXnۉ˂pZH~HfpbHAZpvXnpJAHrQtJlbdQZ|vpftArdrXQJvpfHZHAbfpv˂rXvpfHZHAbfpv˂rXvp`rd|vnrdQZ|HAbےrd|˂rXQdQZ|pZHAbvnXrXQvpfHAbے`vnXrXQvpfH󐉀ۑpJtbAdZdrtAے`JXQ|ZdQb`ےb~f``JXQnXv`QJ`ے~f``JXQnXv`QJ`ےvXnZdQbtXQJ`ےdrtAJ`JXQrZdQbtJ`ےdrtAJے`Jv`f~J`ے~f`JXQrv`fJ`ےJl~f`AHr󙐂|drJltr˂ptlJHAXQJ`vXnr˂pf~HbHAZpvXnr˂pf~HbHAZpvpfHlJtAHAZpltb˂pZlJtAbHAZpltbXQr˂fpvbHAZpvXnۉ˂pZH~HfptbdvXnˁ`ZQXbQtJlbdQZ|ZHAbtArdےbHAvpfHZHAbfpv˂rXvpfHZHAbfpv˂rX~f`rd|˂rXQdQZ|HAbےrd|˂rXQdQZ|pZHAbnXv`rXQvpfHAے`vnXQZ|dvpfH㉀ۑpJtbAdZdrtAے`JXQ|ZdQbZp˂~f``JXQnXv`QJ`ے~f``JXQnXv`QJ`ےvXnZdQbtJ`ےdrtAJ`JXQrZdQbtJ`ےdrtAJ˂pf~HJ`ے~f`JXQrbtv`frtAJl~f`AHr󙐂|drJltr˂ptlJrXQJ`vXnr˂pf~HbHAZpvXnr˂pf~HJltdvpfHlJtAbHAZpltb˂pZlJtAbHAZpltbZHAbfpvbHAZpvXnۉlJt~HfptbdvXnˁ`ZQXAQtJlbdQZ|ZHAbtArdےbHAvpfHZHAbfpv˂rXvpfHZHAے`fpvrtAJl~vprd|˂rXQdQZ|HAbےrd|˂rXQdQZ|ے`JXQnXv`rXQvpfHAd|vnXQZ|dvpfHHr󙐂ˁtbAdZdrtAے`JXQ|ZdQbZp˂~f``JXQnXv`QJ`ے~f`JXQrnXv`ˑtbdfے`ZdQbtJ`ےdrtAJ`JXQrZdQbtJ`ےdrtAJr˂pf~HJ`ےJl~f`ZdQbtv`frtAJl~f``ZQXb|drJltr˂ptlJbHAZvXnr˂pf~HbHAZpvXnbtlf~HQZ|dJXQrZlJtAbHAZpltb˂pZlJtAbHAZpltbZHAbfvnXtbdvXnےlJtA~HfptbdvXnۀۑpJAQtJlbdQZ|ZHAbtArdp˂rvpfHZHAbfpv˂rXvpfHJtAd|fpvrtAJlHAbےrd|˂rXQdQZ|HAbےrd|˂rXQdQZ|ے`JXQv`fQZ|dvpfHrd|vnXQZ|dvpfHHr󙐂ˁtbAdZdrtAے`JXQ|ZdQbXQJ`ے~f``JXQnXv`QJ`ے~f`ZdQbtnXv`ˑtbd`JXQrZdQbtJ`ےdrtAJ`JXQrZdQbtJ`ےdtAJlHAbے~HfpۙrtAJl~f`ZdQbtv`frtAJl~f``ZQXb|drJltr˂ptlJbHAZvXnr˂pf~HJltvXnlJtf~HQZ|l瀉˂pZlJtAbHAZpltb˂pZlJtAbHAZptbn`JXQrvnXtbdvXnےlJtA~HfptbdvXnۀۑp`ZQtJlbdQZ|ZHAbtArdp˂rvpfHZHAے`fpvbdQZ|vpfHArd|fpvtbdQHAbےrd|˂rXQdQZ|HAbےrd|˂rXQvpf˂pZv`fQZ|dvpfHrd|vnXQZ|dvpfHQXb㉀tbAdZdrtAے`JXQ|ZdQbXQJ`p~f`JXQrnXv`˂drtA~f`ZdQbtnXv`Z|d`JXQrZdQbtJ`ےdrtAJ`JXQrZdQbtJ`ےHf`HAbے~HfpۙrtAJl~f`ZdQbtv`frtAJl~f`ۑpJAHr|drJltr˂ptlJ˂rXQvXnbtlf~HJltvXnlJtf~HrtAJl瀉˂pZAlJtAbHAZpltb˂pZlJfbHAZpvXn`JXQrvnvftbdvXnےlJtA~HfptbdvXn󙐂ˁ`ZQtJlbdQZ|ZHAbtArdJ`ےvpfHJtAd|fpvbdQZ|vpfHArd|fpvtbdQb`JXrd|˂rXQdQZ|HAbےpvn˂rXQvpfH˂p`~HfQZ|dvpfHrd|vnXQZ|dvpfHQXb㉀tbAdZdrtAے`JXQ|ZdQbbHAZp~f`ZdQbtnXv`˂drtA~f`ZdQbtnXv`Z|dQr˂pZdQbtJ`ےdtAJl`JXQrXv`fJ`ے~f`JXQrpvnrtAJl~f`ZdQbtv`frtAJl~f`ۑpJAH|drJltr˂ptlJ˂rXQvXnlJtf~HJltvXnlJtf~HrtAdQZ|ZHAblJtAbHAZptbn˂pZ~HfbHAZpvXn˂pZHAXv`ftbdvXnےlJtA~HfptbdvXnېf۝`vQtJlbdQZ|ZHAbfpvJ`ےvpfHArd|fpvbdQZ|vpfHArd|fpvdrtے`JXrd|˂rXQvpfHAbےpvn˂rXQvpfHbے`~HfQZ|dvpfHrd|vnXQZ|dvpfZHXnvˍtbAdZdtAJے`JXQ~HfbHAXQJ~f`ZdQbtnXv`˂drtA~f`ZdQbtnXv`AJltQr˂pZdQbtJ`ےHf``JXQrXv`fJ`ے~f`JXQrpvnrtAJl~f`ZdQbtv`frtAJlAbے`pfH~|drltbr˂ppvn`ےJlvXnlJtf~HJltvXnlJtf~HbdQZ|ZHAblJfbHAZpvXn˂pZ~HfbHAZpvXn˂p`JXv`ftbdvXnےlJtAHfpۑtbdJXQrf۝`vQtJlnvpZHAbXv`ftbQZvpfHArd|fpvbdQZ|vpfHArd|fpvdrtJQrpvn˂rXQvpfHHAbےpvn˂rXQvpfHXQrbt~fpvQZ|dvpfHrd|vnrXQZ|d˂pZHXnvˍtbAdZfHfے`JXQ~HfdrtA~f`ZdQbtnXv`˂drtA~f`ZdQbtnXv`AJlt˂pZHAXv`fJ`ے~f``JXQrXv`fJ`ے~f`l|ZnXv`rtAJl~f`ZdQbtQJ`ےrtAJlAbے`pfH~|dr`vXnr˂ppvnJltvXnlJtf~HJltvXnlJtfHfpdrtAbے`~HfbHAZpvXn˂pZ~HfbHAZpvXndQbt璍f~HtbdvXnےlJtAHAZpˑtbdJXQrf۝`vQtJlt-----------.............................................. \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv33_3.dat b/mpdf/qrcode/data/qrv33_3.dat deleted file mode 100644 index 815f349..0000000 --- a/mpdf/qrcode/data/qrv33_3.dat +++ /dev/null @@ -1,297 +0,0 @@ -}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxststststqrqrqrqrnmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVU}~}~}~}~{|{|{|{|yzyzyzyzwvuvuvuvststststqrqrqpopnmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVU}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvststststopopoooonmnmnmnmlklklklkhghghghgfefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVU}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvststststoopopoponmnmnmnmlklklklkhghghghgfefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVU}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvststststpopopoponmnmnmnmlklklklkhghghghgfefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVU}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvststststpopopoponmnmnmnmlklklklkhghghghgfefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVU}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvststststpopopoponmnmnmnmlklklklkhghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVU}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvststststpopopoponmnmnmnmlklklklkhghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVU}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvststststpopopoponmnmnmnmlklklklkhghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVU}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvststststooooopopnmnmnmnmlklklklkhghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVU}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvststststopopopopnmnmnmnmlklklklkhghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVU}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvststststopopopopnmnmnmnmlklklklkhghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVU}~}~}~}~{|{|{|{|yxwxwxwxuvuvuvuvststststopopopopnmnmnmnmlklklklkhghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVU}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvststststopopopopnmnmnmnmjijijijihghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVU}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvststststopopopopnmnmnmnmjijijijihghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVU}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvststststopoooooonmnmnmnmjijijijihghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVU}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvststststpopopoponmnmnmnmjijijijihghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVU}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvststststpopopoponmnmnmnmjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVU}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvststststpopopoponmnmnmnmjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVU}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvstststsrpopopoponmnmnmnmjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVU}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqrpopopoponmnmnmnmjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVU}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqrpopopooonmnmnmnmjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUTSTS}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvqrqrqrqrooopopopnmnmnmnmjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWTSTSSSSS}~}~}~}~{zyzyzyzwxwxwxwxuvuvuvuvqrqrqrqropopopopnmnmnmnmjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWSTSTSTST}~}~}~}~yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqropopopoplklklklkjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWSTSTSTST}~}~}~}~yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqropopopoplklklklkjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWSTSTSTST}~}~}~}~yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqropopopoplklklklkjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWSTSTSTST}~}~}~}~yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqropopopoplklklklkjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWSTSTSTST}~}~}~}~yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqroooooopolklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWSTSTSTSS}~}~}~}~yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqrpopopopolklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWSSSSTSTSSSSSSTST}~}~}~}~yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqrpopopopolklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSSTSTSTST}~}~}~}~yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqrpopopopolklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSSTSTSTST}~}~}~}~yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqrpopopopolklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSSTSTSTST}~}~}~}~yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqrpopooooolklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSSTSTSTST}|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqrpopopopolklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSSTSSSSST{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqrnmnmnmnmlklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWTSSSSSSTSTSTSTSR{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqrnmnmnmnmlklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWSTSTSTSTQRQRQRQR{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvqrqrqrqrnmnmnmnmlklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWSTSTSTSTQRQRQRQR{|{|{|{|yzyzyzyzwxwxwxwxutstststqrqrqrqrnmnmnmnmlklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWSTSTSTSTQRQRQRQR{|{|{|{|yzyzyzyzwxwxwxwxststststqrqrqrqrnmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWVUSTSTSTSTQRQRQRQR{|{|{|{|yzyzyzyzwxwxwxwxststststqrqrqrqrnmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUSTSTSTSTQRQRQRQR{|{|{|{|yzyzyzyzwxwxwxwxststststqrqrqrqrnmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUSTSTSSSSQRQRQRQR{|{|{|{|yzyzyzyzwxwxwxwxststststqrqrqrqrnmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUSSTSTSTSQRQRQRQR{|{|{|{|yzyzyzyzwxwxwxwxststststqrqrqrqrnmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSQRQRQRQR{|{|{|{|yzyzyzyzwxwxwxwxststststqrqrqrqrnmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSQRQRQRQR~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxststststqrqrqrqrnmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSQRQRQRQR}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxststststqrqrqrqrnmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSQRQRQRQR}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxststststqrqrqrqrnmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSQRQRQRQRQRQRQRQROPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>9:9:9:9:7878787743434343212121210/0/0/0/.-.-.-,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!     - - - -QRQRQRQROPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>9:9:9:9:7777878743434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!     - - - -QRQRQRQROPOPOPOPMNMNMNMLIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>9:9:9:9:8787878743434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!     - - - -QRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>9:9:9:9:8787878743434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!     - - - -QRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>9:9:9:9:8787878743434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%$#"!"!"!"!     - - - -QRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>9:9:9:9:8787878743434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!     - - - -QRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEDABABABAB?@?@?@?@=>=>=>=>9:9:9:9:8777778743434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!     - - - -QRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@=>=>=>=>9:9:9:9:8787876543434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!     - - - -QRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@=>=>=>=>9:9:9:9:6565656543434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!     - - - -QRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@=>=>=>=>9:9:9:9:6565656543434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!      - - - -QRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@=>=>=>=<9:9:9:9:6565656543434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!         - - - -QRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:6565656543434343212121210/0/0/.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!         - - - -QRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!       - - - -QRQRQRQROPOPOPONKLKLKLKLIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!     - - - -QRQRQRQRMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!     - - - -QRQRQRQRMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)('('('&%$#$#$#$#"!"!"!"!     - - - -QRQRQRQRMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!     - - - -QRQRQRQRMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGFCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!     - - - -QRQRQRQRMNMNMNMNKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!     - - - -QRQRQRQRMNMNMNMNKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!     - - - -QRQRQRQRMNMNMNMNKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCDABABABAB?@?@?@?@;<;<;<;<9:9:9:9:656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!     - - - -QRQRQRQRMNMNMNMNKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCDABABABAB?@?@?@?>;<;<;<;<9:9:9:9:656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!     - - - -QRQRQRQRMNMNMNMNKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<9:98787865656565434343432121210/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!     - - - -QRQRQRQRMNMNMNMNKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<7877777765656565434343430/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!     - - - -QRQRQRQPMNMNMNMNKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<8787878765656565434343430/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!     - - OPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<8787878765656565434343430/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!     OPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<8787878765656565434343430/0/0/0/.-.-.-.-,+,+,+,+*)*)*)('&%&%&%&%$#$#$#$#"!"!"!"!     OPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<8787878765656565434343430/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#"!"!"!"!     OPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIHEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<8787878765656565434343430/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#"!"!"!"!     OPOPOPOPMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<8787877765656565434343430/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#"!"!"!"!     OPOPOPOPMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<7778787865656565434343430/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#"!"!"!      OPOPOPOPMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<7878787865656565434343430/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#         OPOPOPOPMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCDABABABA@=>=>=>=>;<;<;<;<7878787865656565434343430/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#         OPOPOPOPMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<7878787865656565434343210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#         OPOPOPOPMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<7878787865656565212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#         OPOPOPOPMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<7878787865656565212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#         - -OPOPOPOPMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<7777778765656565212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#         - - - -OPOPOPOPMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<8787878765656565212121210/0/0/0/.-.-.-.-,+,+,+*)('('('('&%&%&%&%$#$#$#$#         - - - -OPOPOPOPMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<8787878765656565212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%$#$#$#$#         - - - -OPOPOPOPMNMNMNMNKLKLKLKJGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;<;<8787878765656565212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%$#$#$#$#         - - - -OPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>;<;<;:9:8787878765656565212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%$#$#$#$#         - - - -OPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>9:9:9:9:8787878765656565212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%$#$#$#"!         - - - -OPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>9:9:9:9:8787777765656565212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!         - - - -OPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCB?@?@?@?@=>=>=>=>9:9:9:9:7878787865656565212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!         - - - -OPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>9:9:9:9:7878787865656543212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!         - - - -OPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>9:9:9:9:7878787843434343212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!         - - - -OPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>9:9:9:9:7878787843434343212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!       - - - -OPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@=>=>=>=>9:9:9:9:7878787843434343212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!     - - - -==>>??@@KJJIIHHG MLLKKJJItuuvvwwx ]\\[[ZZYdeeffgghcbbaa``_5566778844332211%%&&''((DDCCBBAA}}~~TTSSRRQQmmnnoopp++,,--..AABBCCDD GFFEEDDC !!""##$IHHGGFFExyyzz{{|YXXWWVVUhiijjkkl_^^]]\\[99::;;<<00//..--))**++,,@@??>>==PPOONNMMqqrrsstt//001122EEFFGGHH - - CBBAA@@?$%%&&''(EDDCCBBA|}}~~UTTSSRRQlmmnnoop[ZZYYSSR==>>??@@,,++**))--..//00<<;;::99 LLKKJJIIuuvvwwxx33445566IIJJKKLL - - ?>>==<;:())**++,A@@??>>=QPPOONNMpqqrrsst - - RQQPPOONAABBCCDD((''&&%%1122334488776655!!""##$$HHGGFFEEyyzz{{||77==>>??MMNNOOPP98776655,--..//0=<<;;::9 MLLKKJJItuuvvwwx NMMLLKKJEEFFGGHH$$##""!!5566778844332211%%&&''((DDCCBBAA}}~~@@AABBCC~~}}QQRRSSTT443322110112233498877665 !!""##$IHHGGFFExyyzz{{|JIIHHGGFIIJJKKLL 99::;;<<00//..--))**++,,@@??>>==DDEEFFGG||{{zzyyUUVVWWXX00//..--4556677854433221$%%&&''(EDDCCBBA|}}~~FEEDDCCB~~}}MMNNOOPP==>>??@@,,++**))--..//00<<;;::99HHIIJJKKxxwwvvuuYYZZ[[\\!!"",,++**))899::;;<100//..-())**++,A@@??>>=BAA@@??>||{{zzyyQQRRSSTT~~}}AABBCCDD((''&&%%1122334488776655LLMMNNOOttssrrqq]]^^__``##$$%%&&((''&&%%<==>>??@-,,++**),--..//0=<<;;::9 >==77665xxwwvvuuUUVVWWXX||{{zzyyEEFFGGHH$$##""!!5566778844332211PPQQRRSSppoonnmmaabbccdd''(())**$$##""!!~~}@AABBCCD)((''&&%0112233498877665 !!""##$54433221tsrqpoonYYZZ[[\\ xxwwvvuuIIJJKKLL 99::;;<<00//..--YYZZ[[\\llkkjjiieeffgghh++,,--.. }||{{zzyDEEFFGGH%$$##""!4556677854433221$%%&&''(100//..-nmmllkkj]]^^__`` - - ttssrrqqMMNNOOPP==>>??@@,,++**))]]^^__``hhggffeeiijjkkll//001122yxxwwvvuHIIJJKKL! 899::;;<100//..-())**++,-,,++**)jiihhggfaabbccddppoonnmmQQRRSSTT~~}}AABBCCDD((''&&%%aabbccddddccbbaammnnoopp33445566uttssrrqLMMNNOOP<==>>??@-,,++**),--..//0)((''&&%feeddccbeeffgghhllkkjjiiUUVVWWXX||{{zzyyEEFFGGHH$$##""!!eeffgghh``__^^]]qqrrsstt77==>>??qppoonnmPQQRRSST~~}@AABBCCD)((''&&%01122334%$$##""!baa``__^iijjkkllhhggffeeYYZZ[[\\ xxwwvvuuIIJJKKLL iijjkkll\\[[ZZYYuuvvwwxx@@AABBCC -mllkkjjiTUUVVWWX}||{{zzyDEEFFGGH%$$##""!45566778!^]]\\[[Zmmnnooppddccbbaa]]^^__`` - - ttssrrqqMMNNOOPP~~}}||mmnnoouuXXWWVVUUyyzz{{||DDEEFFGG - ihhggffeXYYZZ[[\ yxxwwvvuHIIJJKKL! 899::;;<ZYYXWVUTqqrrsstt - - ``__^^]]aabbccddppoonnmmQQRRSSTT{{zzyyxxvvwwxxyyTTSSRRQQ}}~~HHIIJJKKeddccbba\]]^^__` - - uttssrrqLMMNNOOP<==>>??@SSRRQQPPuuvvwwxx \\[[ZZYYeeffgghhllkkjjiiUUVVWWXXwwvvuuoozz{{||}}PPOONNMMLLMMNNOO - - a``__^^]`aabbccd qppoonnmPQQRRSST~~}@AABBCCD OONNMMLLyyzz{{||XXWWVVUUiijjkkllhhggffeeYYZZ[[\\ nnmmllkk~~LLKKJJIIPPQQRRSS ]\\[[ZZYdeeffgghmllkkjjiTUUVVWWX}||{{zzyDEEFFGGH - - KKJJIIHH}}~~TTSSRRQQmmnnooppddccbbaa]]^^__`` - - jjiihhggHHGGFFEEYYZZ[[\\YXXWWVVUhiijjkklihhggffeXYYZZ[[\ yxxwwvvuHIIJJKKLGGFFEEDDPPOONNMMqqrrsstt - - ``__^^]]aabbccddffeeddccDDCCBBAA]]^^__``UTTSSRRQlmmnnoopeddccbba\]]^^__` - - uttssrrqLMMNNOOP CCBBAA@@ LLKKJJIIuuvvwwxx \\[[ZZYYeeffgghhbbaa``__@@??>>==aabbccddQPPOONNMpqqrrsst - - a``__^^]`aabbccd qppoonnmPQQRRSST - - ??>>==<;!!""##$$HHGGFFEEyyzz{{||XXWWVVUUiijjkkll^^]]\\[[<<;;::99eeffgghh MLLKKJJItuuvvwwx ]\\[[ZZYdeeffgghmllkkjjiTUUVVWWX :9877665%%&&''((DDCCBBAA}}~~TTSSRRQQmmnnooppZZYYSSRR88776655iijjkkll !!""##$IHHGGFFExyyzz{{|YXXWWVVUhiijjkklihhggffeXYYZZ[[\54433221))**++,,@@??>>==PPOONNMMqqrrsstt - - QQPPOONN44332211mmnnoouu$%%&&''(EDDCCBBA|}}~~UTTSSRRQlmmnnoopeddccbba\]]^^__`100//..---..//00<<;;::99 LLKKJJIIuuvvwwxx MMLLKKJJ00//..--vvwwxxyy())**++,A@@??>>=QPPOONNMpqqrrsst - - a``__^^]`aabbccd!!"-,,++**)1122334488776655!!""##$$HHGGFFEEyyzz{{||IIHHGGFF,,++**))~~}}||zz{{||}},--..//0=<<;;::9 MLLKKJJItuuvvwwx ]\\[[ZZYdeeffggh"##$$%%&)((''&&%5566778844332211%%&&''((DDCCBBAA}}~~EEDDCCBB~~}}|((''&&%%{{zzyyxx~~0112233498877665 !!""##$IHHGGFFExyyzz{{|YXXWWVVUhiijjkkl&''(())*%$$##""!99::;;<<00//..--))**++,,@@??>>==AA@@??>>|{{zzyyx$$##""!!wwvvuuoo4556677854433221$%%&&''(EDDCCBBA|}}~~UTTSSRRQlmmnnoop*++,,--.! ==>>??@@,,++**))--..//00<<;;::99 ==776655xwwvvuut nnmmllkk899::;;<100//..-())**++,A@@??>>=QPPOONNMpqqrrsst.//00112~~}}AABBCCDD((''&&%%1122334488776655!!""##$$44332211srqpoonn jjiihhgg<==>>??@-,,++**),--..//0=<<;;::9 MLLKKJJItuuvvwwx23344556||{{zzyyEEFFGGHH$$##""!!5566778844332211%%&&''((00//..--mmllkkjjffeeddcc@AABBCCD)((''&&%0112233498877665 !!""##$IHHGGFFExyyzz{{|677==>>?xxwwvvuuIIJJKKLL 99::;;<<00//..--))**++,,,,++**))iihhggffbbaa``__DEEFFGGH%$$##""!4556677854433221$%%&&''(EDDCCBBA|}}~~?@@AABBC ttssrrqqMMNNOOPP==>>??@@,,++**))--..//00((''&&%%eeddccbb ^^]]\\[[HIIJJKKL! 899::;;<100//..-())**++,A@@??>>=CDDEEFFG - - ppoonnmmQQRRSSTT~~}}AABBCCDD((''&&%%11223344$$##""!!aa``__^^ - - - ZZYYSSRRLMMNNOOP<==>>??@-,,++**),--..//0=<<;;::9GHHIIJJKllkkjjiiUUVVWWXX||{{zzyyEEFFGGHH$$##""!!55667788]]\\[[ZZ -  - - QQPPOONNPQQRRSST~~}@AABBCCD)((''&&%0112233498877665KLLMMNNOhhggffeeYYZZ[[\\ xxwwvvuuIIJJKKLL 99::;;<<YYXWVUTS MMLLKKJJ~~}}|TUUVVWWX}||{{zzyDEEFFGGH%$$##""!4556677854433221OPPQQRRSddccbbaa]]^^__`` - - ttssrrqqMMNNOOPP==>>??@@SRRQQPPOIIHHGGFF|{{zzyyxXYYZZ[[\ yxxwwvvuHIIJJKKL! 899::;;<100//..-SYYZZ[[\ - - ``__^^]]aabbccddppoonnmmQQRRSSTT~~}}AABBCCDD ONNMMLLK EEDDCCBBxwwvvuut\]]^^__` - - uttssrrqLMMNNOOP<==>>??@-,,++**)\]]^^__` \\[[ZZYYeeffgghhllkkjjiiUUVVWWXX||{{zzyyEEFFGGHH - - KJJIIHHG - - AA@@??>>srqpoonn`aabbccd qppoonnmPQQRRSST~~}@AABBCCD)((''&&%`aabbccdXXWWVVUUiijjkkllhhggffeeYYZZ[[\\ xxwwvvuuIIJJKKLLGFFEEDDC  ==776655mmllkkjjdeeffgghmllkkjjiTUUVVWWX}||{{zzyDEEFFGGH%$$##""!deeffgghTTSSRRQQmmnnooppddccbbaa]]^^__`` - - ttssrrqqMMNNOOPP CBBAA@@?!!""##$$44332211iihhggffhiijjkklihhggffeXYYZZ[[\ yxxwwvvuHIIJJKKL! hiijjkklPPOONNMMqqrrsstt - - ``__^^]]aabbccddppoonnmmQQRRSSTT - - ?>>==<;:%%&&''((00//..--eeddccbblmmnnoopeddccbba\]]^^__` - - uttssrrqLMMNNOOP~~}}|lmmnnoou LLKKJJIIuuvvwwxx \\[[ZZYYeeffgghhllkkjjiiUUVVWWXX98776655))**++,,,,++**))aa``__^^pqqrrsst - - a``__^^]`aabbccd qppoonnmPQQRRSST|{{zzyyxuvvwwxxy!!""##$$HHGGFFEEyyzz{{||XXWWVVUUiijjkkllhhggffeeYYZZ[[\\44332211 !--..//00((''&&%%]]\\[[ZZtuuvvwwx ]\\[[ZZYdeeffgghmllkkjjiTUUVVWWXxwwvvuuoyzz{{||}%%&&''((DDCCBBAA}}~~TTSSRRQQmmnnooppddccbbaa]]^^__``00//..--!""##$$%11223344$$##""!!YYXWVUTSxyyzz{{|YXXWWVVUhiijjkklihhggffeXYYZZ[[\ onnmmllk}~~))**++,,@@??>>==PPOONNMMqqrrsstt - - ``__^^]]aabbccdd!!"",,++**))%&&''(()55667788SRRQQPPO|}}~~UTTSSRRQlmmnnoopeddccbba\]]^^__` - - kjjiihhg--..//00<<;;::99 LLKKJJIIuuvvwwxx \\[[ZZYYeeffgghh##$$%%&&((''&&%%)**++,,-99::;;<<ONNMMLLKQPPOONNMpqqrrsst - - a``__^^]`aabbccd gffeeddc1122334488776655!!""##$$HHGGFFEEyyzz{{||XXWWVVUUiijjkkll''(())**$$##""!!-..//0011223344587766554!""##$$%HGGFFEEDyzz{{||}XWWVVUUTijjkkllm'(())**+$##""!! ::;;<<==//..--,,**++,,--??>>==<<@@??>>=={zzyyxxwRSSTTUUV~~}}||{BCCDDEEF'&&%%$$#23344556IHHGGFFE5667788943322110%&&''(()DCCBBAA@}~~TSSRRQQPmnnooppq+,,--../>>??@@AA++**))((..//0011;;::9988 !!77665544wvvuutsrVWWXXYYZ{zzyyxxwFGGHHIIJ#""!! 6778899:EDDCCBBA9::;;<<=0//..--,)**++,,-@??>>==<POONNMMLqrrssttu/0011223~~}}||BBCCDDEE''&&%%$$2233445577665544""##$$%%33221100qpoonnmmZ[[\\]]^ wvvuuttsJKKLLMMN:;;<<==>A@@??>>==>>??@@A,++**))(-..//001<;;::998 !LKKJJIIHuvvwwxxy34455667{{zzyyxxFFGGHHII##""!! 6677889933221100&&''(())//..--,,llkkjjii^__``aab - - srrqqppoNOOPPQQR>??@@AAB =<<;;::9ABBCCDDE(''&&%%$1223344587766554!""##$$%HGGFFEEDyzz{{||}7==>>??@wwvvuuttJJKKLLMM::;;<<==//..--,,**++,,--++**))((hhggffeebccddeefonnmmllkRSSTTUUV~~}}||{BCCDDEEF - - -98877665EFFGGHHI$##""!! 5667788943322110%&&''(()DCCBBAA@}~~@AABBCCD - -ssrrqqppNNOOPPQQ>>??@@AA++**))((..//0011''&&%%$$ddccbbaafgghhiijkjjiihhgVWWXXYYZ{zzyyxxwFGGHHIIJ - 54433221IJJKKLLM 9::;;<<=0//..--,)**++,,-@??>>==>??@@A,++**))(-..//001<;;::998HIIJJKKLkkjjiihhVVWWXXYY{{zzyyxxFFGGHHII##""!! 66778899\\[[ZZYYnooppqqr -cbbaa``_^__``aab - - srrqqppoNOOPPQQR-,,++**)QRRSSTTU~~}}|ABBCCDDE(''&&%%$1223344587766554LMMNNOOPggffeeddZZ[[\\]] wwvvuuttJJKKLLMM::;;<<==XWVUTSSRrssttuuv - _^^]]\\[bccddeefonnmmllkRSSTTUUV)((''&&%UVVWWXXY|{{zzyyxEFFGGHHI$##""!! 5667788943322110PQQRRSSY ccbbaa``^^__``aa - - ssrrqqppNNOOPPQQ>>??@@AARQQPPOONvwwxxyyz[ZZYYXXWfgghhiijkjjiihhgVWWXXYYZ!!""#%$$##""!YZZ[[\\] xwwvvuutIJJKKLLM 9::;;<<=0//..--,YZZ[[\\] - - __^^]]\\bbccddeeoonnmmllRRSSTTUU~~}}||BBCCDDEE NMMLLKKJz{{||}}~WVVUUTTSjkkllmmngffeeddcZ[[\\]]^#$$%%&&'! ]^^__``a - - tssrrqqpMNNOOPPQ=>>??@@A,++**))(]^^__``a[[ZZYYXXffgghhiikkjjiihhVVWWXXYY{{zzyyxxFFGGHHII - - JIIHHGGF~SRRQQPPOnooppqqr -cbbaa``_^__``aab'(())**+abbccddepoonnmmlQRRSSTTU~~}}|ABBCCDDE(''&&%%$abbccddeWWVVUUTTjjkkllmmggffeeddZZ[[\\]] wwvvuuttJJKKLLMMFEEDDCCBONNMMLLKrssttuuv - _^^]]\\[bccddeef+,,--../effgghhilkkjjiihUVVWWXXY|{{zzyyxEFFGGHHI$##""!! effgghhiSSRRQQPPnnooppqq ccbbaa``^^__``aa - - ssrrqqppNNOOPPQQ - -BAA@@??> !!"KJJIIHHGvwwxxyyz[ZZYYXXWfgghhiij/0011223ijjkkllmhggffeedYZZ[[\\] xwwvvuutIJJKKLLM ijjkkllmOONNMMLLrrssttuu - - __^^]]\\bbccddeeoonnmmllRRSSTTUU >==<;:98"##$$%%&GFFEEDDCz{{||}}~WVVUUTTSjkkllmmn34455667 mnnooppq dccbbaa`]^^__``a - - tssrrqqpMNNOOPPQ~~}}||{mnnoouuv !!KKJJIIHHvvwwxxyy[[ZZYYXXffgghhiikkjjiihhVVWWXXYY77665544&''(())*CBBAA@@?~SRRQQPPOnooppqqr7==>>??@ - - qrrssttu - - `__^^]]\abbccddepoonnmmlQRRSSTTU{zzyyxxwvwwxxyyz""##$$%%GGFFEEDDzz{{||}}WWVVUUTTjjkkllmmggffeeddZZ[[\\]]33221100*++,,--.?>>==<<;ONNMMLLKrssttuuv@AABBCCD - - uvvwwxxy \[[ZZYYXeffgghhilkkjjiihUVVWWXXYwvvuuoonz{{||}}~&&''(())CCBBAA@@~~SSRRQQPPnnooppqq ccbbaa``^^__``aa//..--,,.//00112;::99887 !!"KJJIIHHGvwwxxyyzDEEFFGGH yzz{{||}XWWVVUUTijjkkllmhggffeedYZZ[[\\] nmmllkkj~**++,,--??>>==<<OONNMMLLrrssttuu - - __^^]]\\bbccddee!!""##++**))((2334455676655443"##$$%%&GFFEEDDCz{{||}}~HIIJJKKL}~~TSSRRQQPmnnooppq dccbbaa`]^^__``a - - jiihhggf..//0011;;::9988 !!KKJJIIHHvvwwxxyy[[ZZYYXXffgghhii$$%%&&''''&&%%$$6778899:3221100/&''(())*CBBAA@@?~LMMNNOOPPOONNMMLqrrssttu - - `__^^]]\abbccddefeeddccb2233445577665544""##$$%%GGFFEEDDzz{{||}}WWVVUUTTjjkkllmm(())**++##""!! :;;<<==>/..--,,+*++,,--.?>>==<<;PQQRRSSY !LKKJJIIHuvvwwxxy \[[ZZYYXeffgghhibaa``__^6677889933221100&&''(())CCBBAA@@~~SSRRQQPPnnooppqq,,--..//>??@@AAB+**))(('.//00112;::99887YZZ[[\\] !""##$$%HGGFFEEDyzz{{||}XWWVVUUTijjkkllm^]]\\[[Z::;;<<==//..--,,**++,,--??>>==<<OONNMMLLrrssttuu00112233~~}}||{BCCDDEEF'&&%%$$#2334455676655443]^^__``a !!""##$%&&''(()DCCBBAA@}~~TSSRRQQPmnnooppq ZYYSSRRQ>>??@@AA++**))((..//0011;;::9988 !!KKJJIIHHvvwwxxyy44556677{zzyyxxwFGGHHIIJ#""!! 6778899:3221100/abbccdde$%%&&''()**++,,-@??>>==<POONNMMLqrrssttu - - QPPOONNMBBCCDDEE''&&%%$$2233445577665544""##$$%%GGFFEEDDzz{{||}}==>>??@@ wvvuuttsJKKLLMMN:;;<<==>/..--,,+effgghhi())**++,-..//001<;;::998 !LKKJJIIHuvvwwxxy MLLKKJJIFFGGHHII##""!! 6677889933221100&&''(())CCBBAA@@~~AABBCCDD - - srrqqppoNOOPPQQR>??@@AAB+**))(('ijjkkllm,--..//01223344587766554!""##$$%HGGFFEEDyzz{{||}IHHGGFFEJJKKLLMM::;;<<==//..--,,**++,,--??>>==<>??@@AA++**))((..//0011;;::9988IIJJKKLLkjjiihhgVWWXXYYZ{zzyyxxwFGGHHIIJ#""!! vwwxxyyz455667789::;;<<=0//..--,)**++,,-@??>>==<A@@??>>={{zzyyxxRRSSTTUU~~}}||BBCCDDEE''&&%%$$2233445577665544MMNNOOPPgffeeddcZ[[\\]]^ wvvuuttsJKKLLMMN~~}}||{z{{||}}~899::;;<=>>??@@A,++**))(-..//001<;;::998 !=7766554wwvvuutsVVWWXXYY{{zzyyxxFFGGHHII##""!! 6677889933221100QQRRSSYY -cbbaa``_^__``aab - - srrqqppoNOOPPQQR{zzyyxxw~<==>>??@~~}}|ABBCCDDE(''&&%%$1223344587766554!""##$$%43322110rqpoonnmZZ[[\\]] wwvvuuttJJKKLLMM::;;<<==//..--,,ZZ[[\\]] - _^^]]\\[bccddeefonnmmllkRSSTTUUVwvvuuoon@AABBCCD|{{zzyyxEFFGGHHI$##""!! 5667788943322110%&&''(()0//..--,mllkkjji^^__``aa - - ssrrqqppNNOOPPQQ>>??@@AA++**))((^^__``aa[ZZYYXXWfgghhiijkjjiihhgVWWXXYYZnmmllkkjDEEFFGGHxwwvvuutIJJKKLLM 9::;;<<=0//..--,)**++,,-,++**))(ihhggffebbccddeeoonnmmllRRSSTTUU~~}}||BBCCDDEE''&&%%$$bbccddeeWVVUUTTSjkkllmmngffeeddcZ[[\\]]^ jiihhggfHIIJJKKLtssrrqqpMNNOOPPQ=>>??@@A,++**))(-..//001(''&&%%$eddccbbaffgghhiikkjjiihhVVWWXXYY{{zzyyxxFFGGHHII##""!! ffgghhiiSRRQQPPOnooppqqr -cbbaa``_^__``aab - - feeddccbLMMNNOOPpoonnmmlQRRSSTTU~~}}|ABBCCDDE(''&&%%$12233445$##""!!a``__^^]jjkkllmmggffeeddZZ[[\\]] wwvvuuttJJKKLLMMjjkkllmmONNMMLLKrssttuuv - _^^]]\\[bccddeefbaa``__^~~}PQQRRSSTlkkjjiihUVVWWXXY|{{zzyyxEFFGGHHI$##""!! 56677889]\\[[ZZYnnooppqq ccbbaa``^^__``aa - - ssrrqqppNNOOPPQQ~~}}||{{nnoouuvv !!"KJJIIHHGvwwxxyyz[ZZYYXXWfgghhiij^]]\\[[Z}||{{zzyTUUVVWWXhggffeedYZZ[[\\] xwwvvuutIJJKKLLM 9::;;<<=YXWVUTSSrrssttuu - - __^^]]\\bbccddeeoonnmmllRRSSTTUUzzyyxxwwwwxxyyzz"##$$%%&GFFEEDDCz{{||}}~WVVUUTTSjkkllmmnZYYSSRRQyxxwwvvuXYYZZ[[\dccbbaa`]^^__``a - - tssrrqqpMNNOOPPQ=>>??@@ARRQQPPOOvvwwxxyy[[ZZYYXXffgghhiikkjjiihhVVWWXXYYvvuuoonn{{||}}~~&''(())*CBBAA@@?~SRRQQPPOnooppqqr -QPPOONNMuttssrrq\]]^^__``__^^]]\abbccddepoonnmmlQRRSSTTU~~}}|ABBCCDDE NNMMLLKKzz{{||}}WWVVUUTTjjkkllmmggffeeddZZ[[\\]] mmllkkjj*++,,--.?>>==<<;ONNMMLLKrssttuuv - MLLKKJJIqppoonnm`aabbccd\[[ZZYYXeffgghhilkkjjiihUVVWWXXY|{{zzyyxEFFGGHHI - - JJIIHHGG~~SSRRQQPPnnooppqq ccbbaa``^^__``aa - - iihhggff.//00112;::99887 !!"KJJIIHHGvwwxxyyzIHHGGFFEmllkkjjideeffgghXWWVVUUTijjkkllmhggffeedYZZ[[\\] xwwvvuutIJJKKLLMFFEEDDCCOONNMMLLrrssttuu - - __^^]]\\bbccddeeeeddccbb2334455676655443"##$$%%&GFFEEDDCz{{||}}~EDDCCBBAihhggffehiijjkklTSSRRQQPmnnooppq dccbbaa`]^^__``a - - tssrrqqpMNNOOPPQ -BBAA@@?? !!KKJJIIHHvvwwxxyy[[ZZYYXXffgghhiiaa``__^^6778899:3221100/&''(())*CBBAA@@?~A@@??>>=eddccbbalmmnnoopPOONNMMLqrrssttu - - `__^^]]\abbccddepoonnmmlQRRSSTTU - >>==<;:9""##$$%%GGFFEEDDzz{{||}}WWVVUUTTjjkkllmm]]\\[[ZZ:;;<<==>/..--,,+*++,,--.?>>==<<;=7766554a``__^^]pqqrrsstLKKJJIIHuvvwwxxy \[[ZZYYXeffgghhilkkjjiihUVVWWXXY87766554&&''(())CCBBAA@@~~SSRRQQPPnnooppqq YYSSRRQQ>??@@AAB+**))(('.//00112;::99887 !!"43322110]\\[[ZZYtuuvvwwxHGGFFEEDyzz{{||}XWWVVUUTijjkkllmhggffeedYZZ[[\\]43322110**++,,--??>>==<<OONNMMLLrrssttuu - - PPOONNMMBCCDDEEF'&&%%$$#2334455676655443"##$$%%&0//..--,YXXWWVVUxyyzz{{|DCCBBAA@}~~TSSRRQQPmnnooppq dccbbaa`]^^__``a0//..--,..//0011;;::9988 !!KKJJIIHHvvwwxxyyLLKKJJIIFGGHHIIJ#""!! 6778899:3221100/&''(())*,++**))(UTTSSRRQ|}}~~@??>>==<POONNMMLqrrssttu - - `__^^]]\abbccdde!!""#,++**))(2233445577665544""##$$%%GGFFEEDDzz{{||}}HHGGFFEEJKKLLMMN:;;<<==>/..--,,+*++,,--.(''&&%%$QPPOONNM<;;::998 !LKKJJIIHuvvwwxxy \[[ZZYYXeffgghhi#$$%%&&'(''&&%%$6677889933221100&&''(())CCBBAA@@~~DDCCBBAA~~}}||{NOOPPQQR>??@@AAB+**))(('.//00112$##""!!MLLKKJJIfpvXQJ`ےdrtAJJXQrbtlbHAAJltf`vXbtlf~HbHAJltJXQrArdt琙bHAZJlt`vXntlJf~HbHAZ`vXnr˂ptlJHAZp˂nXv`bHAZltb˂pZHJtArdZp˂bdQZ|nvpJtArdfpvZp˂bnvp˂pZHlJfpp˂rbdQZ|vpftArdfpvp˂rvpfZHAbtArdrXQJf~Hp˂rdQZ|`Abے`|ZdQrXQJ`ہdrtfH~˂|ZdQnXv`rXQJ`۝fHAb˝vnvXQJ`ےdrtAے`JXQ|ZdQbnXv`XQJ`ےH~fے`JXQ|ZdQb`ےbfpvXQJ`ےvXnJXQrbtlbHAAJltf`vXbtlf~HbHAf`vXpZHAf~HbHAZJltr˂ptlJf~HbHAZ`vXnr˂ptlJHAXQJ`nXv`bHAZvpfHZHAbJfpvZp˂bdQZ|nvpJtArdfpvZp˂nvpbے`fpvp˂rbdQZ|ZHAbtArdfpvp˂rvpfZHAbtArdےbHAf~Hp˂r~f`ے`JXQnXv`rXQJ`ہdrtfH~˂|ZdQnXv`rXQJ`fH~JXQrnXv`XQJ`ےdrtAے`JXQ|ZdQbnXv`XQJ`ےH~fے`JXQ|ZdQbZp˂fpvXQJ`ےvXnr˂pf~HbHAAJltf`vXbtlf~HbHAf`vXpZHAf~HbHAZJltr˂ptlJf~HJlt`vXnr˂ptlJrXQJ`nXv`bHAZvp`vZHAbfpvZp˂bdQZ|nvpJtArdfpvZp˂nvpbے`fpvp˂rbdQZ|ZHAbtArdfpvbdQZ|vpfZHAbtArdےbHAf~Hp˂rXnvے`JXQnXv`rXQJ`ہdrtfے`JX|ZdQnXv`rXQJ`fH~JXQHAbnXv`XQJ`ےdrtAے`JXQ|ZdQbnXv`drtAH~fے`JXQ|ZdQbZp˂fpvXQJ`ےpfH~r˂pf~HbHAAJltQr˂pbtlf~HbHAf`vXے`JXf~fpېbHAZJltr˂ptlJf~HJlt`vXnr˂ptlJbHAZnXv`bHAZf`vZAb`fpvZp˂bdQZ|ZHAbJtArdfpvZp˂nvpQr˂pvnXp˂rbdQZ|ZHAbtArdfpvbdQZ|vpfZHAbfpvp˂rf~Hp˂rXnvJXQr˅nXv`rXQJ`ہdrtے`JX|ZdQnXv`rXQJ`fH~ˑZHAbv`fXQJ`ےdtAJے`JXQ|ZdQbnXv`drtAH~fے`JXQ~HfXQJ`ےfpvXQJ`ےpfH~pZHAf~HbHAAJltQr˂pbtlf~HJltf`vXے`JX~HfpېbHAZltbr˂ptlJf~HJlt`vXnr˂ppvnbHAZnXv`bHAZvpbے`fpvZp˂bdQZ|ZHAbJtArdfpvbdQZ|nvpQr˂pvnXp˂rnvpZHAbtArdfpvbdQZ|vpfZHAbXv`fp˂rf~Hp˂rfH~JXQr˅nXv`rXQJ`ہdrtے`JX|ZdQnXv`drtfH~ˑ`JXQv`fXQJ`ےfHfے`JXQ|ZdQbnXv`drtAH~fے`JXQ~HfXQJ`pfpvXQJ`ےf`vXpZHAbf~HbHAAJltQr˂pbtlf~HAJltf`vXr˂p~HfvnbHAZ`vXnr˂ptlJfHfJlt`vXnr˂ppvn˂rXQnXv`bHAZnvpJAdfpvZp˂bdQZ|ZHAbJtArdfpvbdQZ|nvpZHAbXv`fp˂rvpfZHAbtArdpvnbdQZ|vpfZHAbXv`pJ`ےf~Hp˂rfH~|ZdQnXv`rXQJ`ہdtAے`JX|ZdQnXv`drtfH~˒`JXQ~HfXQJ`ےH~fے`JXQ|ZdQbrXQJ`drtAH~fے`JXQvnXbHAZpfpvXQJ`ےf`vXbtlf~HbHAJltQr˂pbtlf~HAJltf`vXr˂p`pvnbHAZ`vXnr˂ptlJےHAZJlt`vXnr˂pv`f˂rXQnXv`bHAZH~fJtArdfpvZp˂bnvpZHAbJtArdfpvbdQZ|nvpJXQrXv`fp˂rvpfZHAbtArdp˂rbdQZ|vpfZHAے~HfpJ`ےf~Hp˂r`vXn|ZdQnXv`rXQJ`۝fH˙ے`JX|ZdQnXv`drtfH~btl|~HfXQJ`ےH~fے`JXQ|ZdQbXQJ`ےdrtAH~f`JXQrvnXbHAXQJfpvXQJ`ےvpfbtlf~HbHAf`vXQr˂pbtlfHAJltf`vXZdQbtpvnbHAZ`vXnr˂ptlJbHAZJlt`vXnbtlv`f`ےJlnXv`JltH~fJtArdfpvZp˂nvpZHAbJtArdfpvbdQZ|nvplJtvf~Hp˂rvpfZHAbtArdp˂rbdQZ|vpfJtAd~HXvtbQZf~HdrtAJ`vXn|ZdQnXv`rXQJ`fH~˙ے`JX|ZdQnrXQJ`drtfH~Ard|fpvXQJ`ےH~fے`JXQ|ZdQbXQJ`ےdrtAH~f|ZdQb`f~drtAfpvltbvp`btlf~HbHAf`vXQr˂pbtlےHAAJltf`vXZdQbtnXv`Jlt`vXnr˂ptlJbHAZJlt`vXntlJHfpvJltnXv`dQZ|vXnJtArdfpvZp˂nvpZHAbJtArdZp˂bdQZ|nvpl|f~HbdQZ|vpfZHAbtArdp˂rbdQZ|vpftArdnXvbdQZ|f~HdrtAJvpfH|ZdQnXv`rXQJ`fH~˙ے`JX|ZdQrXQJ`ہdrtfH~ZdQbtfpvdrtAH~fے`JXQ|ZdQbXQJ`ےdrtAH~f|ZdQb`f~drtAfpvltb~f`btlf~HbHAf`vXQr˂pbtlbHAAJltf`vXlJtAnXv`Jlt`vXnr˂ptlJbHAZJlt`vXntlJHfpvJltnXv`dQZ|lvXnJtArdfpvZp˂nvpZHAbJtArdZp˂bdQZ|nvprd|f~fpbdQZ|vpfZHAbfpvp˂rbdQZ|vpftArd~HbdQZ|f~HtbdQvpfH|ZdQnXv`rXQJ`fH~˙ے`JX|ZdQrXQJ`ہdrtfH~ZdQbtvnXdrtAH~fے`JXQnXv`XQJ`ےdrtAH~f|ZdQbfpvrAJl璂rAJlfpvZ|d~vbtlf~HJltf`vXQr˂pbtlbHAAJltf`vXlJtAv`fJlt`vXnr˂pf~HbHAZJlt`vXntlJnXv`tbdQZtbdQnXv`rtAJlpfے`JtArdfpvbdQZ|nvpZHAbJtArdZp˂bdQZ|nvprdtl~HfpbdQZ|vpfZHAbfpvp˂rbdQZ|vpftArdf~H|drZ|df~HtbdQJXQr|ZdQnXv`drtfH~˙ے`JX|ZdQrXQJ`ہdrtfH~ˑJtArdvnXdrtAH~fے`JXQnXv`XQJ`ےdrtAے`JXQ|ZdQbfpvtAJlrtAJlfpvZ|dZHAbbtlf~HAJltf`vXQr˂pbtlbHAAJltf`vX|Zdv`ffJlt`vXnr˂pf~HbHAZJltr˂ptlJnXv`tbdQZtbdQnXv`rtAdQZ`JXQJtArdfpvbdQZ|nvpZHAbJfpvZp˂bdQZ|nvpQbtlpvnbdQZ|vpfZHAbfpvp˂rbdQZ|ZHAbtArdpvn|drZ|AJlp˂r|drr˂p|ZdQnXv`drtfH~˙ے`JXnXv`rXQJ`ہdrtfH~ˑJtArdrXQJ`drtAH~fے`JXQnXv`XQJ`ےdrtAے`JXQ|ZdQbXv`ftAJbdtbXQJ`ےtAJlZHAbbtlf~HAJltf`vXQr˂pf~HbHAAJltf`vX|ZdےHAZJlt`vXnr˂pf~HbHAZJltr˂ptlJ~HfQZ|dnvpbHAZtbdQZ`JXQJtArdfpvbdQZ|nvpZHAbfpvZp˂bdQZ|nvpQtArdp˂rbdQZ|vpfZHAےfpvp˂rbdQZ|ZHAbtArdpvnrtAJlfHf`p˂r|drr˂pZ|ZdQnXv`drtfH~˙ے`JXnXv`rXQJ`ہdrtfے`JX|ZdQXQJ`ےdrtAH~f`JXQrnXv`XQJ`ےdrtAے`JXQ|ZdQbXv`ptbdvXnXQJ`ےtAJlAb`JbtlfHAJltf`vXQr˂pf~HbHAAJltQHAbbtlbHAZJlt`vXnbtlf~HbHAZJltr˂ptlJvnrQZ|dvpfHbHAZtdrtAXQr˂JtArdfpvbdQZ|nvpZHAbfpvZp˂bdQZ|`JXQJtArdp˂rbdQZ|vpfJtAdfpvp˂rbdQZ|ZHAbtArdXQJ`prtAJl~f`p˂rJltpZHAb|ZdQnrXQJ`drtfH~˙ے`JXnXv`rXQJ`ہdrtr˂p|ZdQXQJ`ےdrtAH~f|ZdQbnXv`XQJ`ےdtAJے`JXQ|ZdQb˂rXQtbQZvXnXQJ`ےbdQZ|ے`JbtlےHAAJltf`vXQr˂pf~HbHAAJltZHAbbtl|bHAZJlt`vXntlJf~HbHAZltbr˂ptlJJ`ےdrtAvpfHbHAZdrtAXQr˂JtArdZp˂bdQZ|nvpZHAۅfpvZp˂bdQZ|`JXQZdQbtp˂rbdQZ|vpftArdfpvp˂rnvpZHAbtArdbHAZpJlt~f`p˂rJltpZHAb|ZdQrXQJ`ہdrtfH~˒`JXQnXv`rXQJ`ہdrtr˂p`lJtXQJ`ےdrtAH~f|ZdQbnXv`XQJ`ےfHfے`JXQ|ZdQb˂rXQbdQZ|vXnXQJ`ےbdQZ|JQrbtlbHAAJltf`vXrbtlf~HbHAAJltJXQrArd|bHAZJlt`vXntlJf~HbHAZ`vXnr˂ptlJJ`p˂drtAvpfHbHAZltb˂pZHJtArdZp˂bdQZ|nvpJtAdfpvZp˂bdQZ|˂pZHZdQbtp˂rbdQZ|vpftArdfpvp˂rvpfZHAbtArdrXQJJlt~f`p˂rdQZ|Abے`|ZdQrXQJ`ہdrtfH~˂|ZdQnXv`rXQJ`ہdtAAbے`lJtXQJ`ےdrtAH~f|ZdQbnXv`XQJ`ےH~fے`JXQ|ZdQb`ےbbdQZ|vXnvpfHZHAbArd|˂rXbdQZ|vpfHArd|fpv˂rXfH~r˂pZpvn˂rXQdQZ|vpfےrd|pvn˂rXQvpfHے`JXQvnXrXQQZ|dAbے`rd|vnXQZ|dvpfHJXQrXnvˍ~f``JXQZdQbtQJ`ےdrtA~f`ZdQbtnXv`QJ`ےf`vXAb`JXv`fJ`ےdrtAJ`JXQrZdQbtXv`fJ`ے~f`HAbےv`f~J`ےrtAJlJXQrZdQbtv`frtAJl~f`˂pZHpfH~ㅍvXnr˂plJbHAZpJltvXnlJtf~HbHAZpnvpXQr˂~HfbHAZpltb˂pZlJtA~HfbHAZpvXn`JXQrfpvbHAZpˑtbd˂pZHlJtA~HfptbdvXnAbے`f۝`vvpfHZHAbfpv˂rXbdQZ|vpfHArd|fpv˂rXfH~pZHAbpvn˂rXQdQZ|HAbےrd|pvn˂rXQvpfH˂pZnXv`rXQQZ|dAbے`rd|vnXQZ|dvpfHJXQrXnvˍ~f``JXQnXv`QJ`ےdrtA~f`ZdQbtnXv`QJ`ےvpے`JXv`fJ`ےdrtAJ`JXQrZdQbtXv`fJ`ےJ~f`HAbےf~HJ`ےtAJlJXQrZdQbtv`frtAJl~f`˂p`ZpfH~ㅍvXnr˂pf~HbHAZpJltvXnlJtf~HbHAZpfH~XQr˂~HfbHAZpltb˂pZlJtA~HfltbvXn`JXQrfpvbHAZp˒tbn˂pZHlJtA~HfptbdvXnQXb㉀f۝`vvpfHZHAbfpv˂rXbdQZ|vpfArd|fpv˂rXf`vXpZA`pvn˂rXQdQZ|HAbےrd|pvndQZ|vpfH˂p`nXv`rXQvpfHAbے`rd|vnXQZ|dvpfHۑpJAHrXnvˍ~f``JXQnXv`QJ`ےdrtA`JXQZdQbtnXv`QJ`ےnvpJXQrbXv`fJ`ےdrtAJ`JXQrZdQbtXv`fdrtAJ~f`JXQrf~HJ`ےㅐf`JXQrZdQbtv`frtAJl~f`󙐂ˁ`ZpfH~ㅍvXnr˂pf~HbHAZpJltr˂plJtf~HbHAZpfH~tlJ~HfbHAZpltb˂pZlJtA~HfltbvXn˂pZHAfvnXbHAZpvXnۉ˂pZHlJtAHfpۑtbdvXnQXb㉀f۝`vvpfHZHAbfpv˂rXbdQZ|ZHAbArd|fpv˂rXf`vXHtAd|pvn˂rXQdQZ|HAbےrd|pvndQZ|vpfHbے`v`f󂀉rXQvpfHAbے`rd|vnrXQZ|dvpfHۑp`ZQXnvˍ~f``JXQnXv`QJ`ےdrtA`JXQZdQbtnXv`QJ`ے~f`ZdQbtXv`fJ`ےdtAJl`JXQrZdQbtXv`fdrtAJ~f`JXQr~HfpJ`ے~f`JXQrZdQbtQJ`ےrtAJl~f`Xb㉀ۑpfH~ㅍvXnr˂pf~HbHAZpJltr˂plJtf~HJltdvXnlJtA~HfbHAZptbn˂pZlJtA~HfltbvXn˂p`JvnXbHAZpvXnۉ˂pZHlJtAHAZpˑtbdvXnpJAHrf۝`vvpfHZHAے`fpv˂rXbdQZ|ZHAbArd|fpvrtAJlvpfHrd|pvn˂rXQvpfHAbےrd|pvndQZ|vpfHXQrbtv`f󂀉rXQvpfHAbے`rd|炀rXQQZ|dvpfHˁ`ZQXnvˍ~f`JXQrnXv`QJ`ےdrtA`JXQZdQbtnXv`ˑtbd~f`ZdQbtXv`fJ`ےHf``JXQrZdQbtXv`fdrtAJ~f`l|Z~HfpJ`ے~f`JXQrZdQbtJ`ےrtAJl~f`Xb㉀ۑpfH~ㅍvXnbtlf~HbHAZpJltr˂plJtf~HQZ|dvXnlJtA~HfbHAZpvXn˂pZlJtAHfpltbvXndQbtvnvfbHAZpvXnۉ˂pZHlJtAbHAZpˑtbdvXnpJAHrf۝`vvpfHJtAd|fpv˂rXbdQZ|ZHAbArd|fpvrtAJlvp`rd|pvn˂rXQvpfHHAbےrd|vnrdQZ|vpfHlJtAr~HfrXQvpfHAbے`rd|炀rXQQZ|dvpfH󐉀ۑpJXnvˍ~f`ZdQbtnXv`QJ`ےdtAJl`JXQZdQbtnXv`ˑtbdvXnZdQbtXv`fJ`ے~f``JXQrZdQbtXQJ`ےdrtAJ~f`d|ZpvnJ`ےJl~f`JXQrZdQbtJ`ےrtAJl~f`AHr󙐂p|drvXnlJtf~HbHAZptbr˂plJtf~HQZ|lvpfHlJtA~HfbHAZpvXn˂pZlJtAHAZpltbvXndQbtXv`ftbdvXnۉ˂pZHlJtAbHAZpˑtbdvXnˁ`ZQXbQtJlvpfHArd|fpv˂rXnvpZHAbArd|fpvtbdQ~f`rd|pvn˂rXQvpfHHAbےrd|˂rXQdQZ|vpfHl|ZdQ~HfQZ|dvpfHAbے`rd|炀rXQQZ|dvpfH㉀ۑpJtbAdZ~f`ZdQbtnXv`QJ`ےfHf``JXQZdQbtnXv`Z|dvXnZdQbtXv`fJ`ے~f``JXQrZdQbtJ`ےdrtAJ~f`btlpvnrtAJl~f`JXQrZdQbtJ`ےrtAJl~f`AHr󙐂|drvXnlJtf~HbHAZpvXnr˂plJtfHfprtAJlvpfHlJtA~HfbHAZpvXn˂pZlJtAbHAZpltbvXnJtArdXv`ftbdvXnۉ˂pZHlJfpbHAZpˑtbdvXnˁ`ZQXAQtJlvpfHArd|fpv˂rXvpfHZHAbArd|vntbdQ~vprd|pvn˂rXQvpfHHAbےrd|˂rXQdQZ|vpfH|ZdQ~fpvQZ|dvpfHAbے`vnXrXQQZ|dvpfHHr󙐂ˁtbAdZ~f`ZdQbtnXv`QJ`ے~f``JXQZdQbtrXQJ`Z|dfے`ZdQbtXv`fJ`ےJ~f``JXQrZdQbtJ`ےdrtAJ~f`btlnXv`rtAJl~f`JXQrv`fJ`ےrtAJl~f``ZQXb|drvXnlJtf~HbHAZpvXnr˂plJtHAZprtAdQZ|JXQrZlJtA~HfltbvXn˂pZlJtAbHAZpltbvXnJtArdf~HtbdvXnۉ˂pZH~HfpbHAZpˑtbdvXnۀۑpJAQtJlvpfArd|fpv˂rXvpfHZHAbArd|˂rXdrtHAbےrd|pvndQZ|vpfHHAbےrd|˂rXQdQZ|vpfHtlJfpvQZ|dvpfHAbے`vnXrXQQZ|dvpfZHHr󙐂ˁtbAdZ`JXQZdQbtnXv`QJ`ے~f``JXQZdQbtQJ`ےAJlt`JXQrZdQbtXv`fdrtAJ~f``JXQrZdQbtJ`ےdrtAJ~f`tArdnXv`rtAJl~f`JXQrv`fJ`ےrtAJlAbے``ZQXb|drr˂plJtf~HbHAZpvXnr˂plJtbHAZpbdQZ|˂pZlJtA~HfltbvXn˂pZlJfbHAZpltbvXn|ZdQbffpۑtbdvXnۉ˂pZH~HfpbHAZpˑtbdJXQrۑp`ZQtJlZHAbArd|fpv˂rXvpfHZHAbArd|˂rXdrtHAbےrd|pvndQZ|vpfHHAbےpvn˂rXQdQZ|vpfHtlJvnrXQZ|dvpfHAbے`vnXrXQQZ|d˂pZHQXb㉀tbAdZ`JXQZdQbtnXv`QJ`ے~f``JXQZdQbtQJ`ےAJlt`JXQrZdQbtXv`fdrtAJ~f``JXQrXv`fJ`ےdrtAJ~f`tArdQJ`ےrtAJl~f`JXQrv`fJ`ےrtAJlAbے`ۑpJAHr|drr˂plJtf~HJltvXnr˂plJtbHAZpdrtA˂pZAlJtA~HfltbvXn˂pZ~HfbHAZpltbvXn|ZdQtAHAZpˑtbdvXnۉ˂pZH~HfpbHAZpˑtbdJXQr󙐂ˁ`ZQtJlZHAbArd|fpvbdQZ|vpfHZHAbArd|˂rXJltb`JXrd|pvndQZ|vpfHHAbےpvn˂rXQdQZ|vpfےrd|rXQQZ|dvpfHAے`vnXrXQQZ|d˂p`QXb㉀tbAdZ`JXQZdQbtnXv`˂drtA~f``JXQZdQbtQJ`ےbdQZ|Qr˂pZdQbtXv`fdrtAJ~f``JXQrXv`fJ`ےdrtAJ`JXQHAZdQbtJ`ےrtAJl~f`JXQrbtv`fJ`ےrtAJlJXQrۑpJAH|drr˂plJtf~HJltvXnr˂plJbHAZpdrtAZHAblJtAHfpltbvXn˂pZ~HfbHAZpltbbے`lJtAbHAZpˑtbdvXnۉlJt~HfpbHAZpˑtbdpZHAf۝`vQtJlZHAbArd|fpvbdQZ|vpfHZHAbfpv˂rXJltے`JXrd|vnrdQZ|vpfHHAbےpvn˂rXQdQZ|JXQrrd|rXQQZ|dvpfHAd|vnXrXQQZ|dbے`XnvˍtbAdZ`JXQZdQbtnXv`˂drtA~f``JXQnXv`QJ`ےbdQZ|lQr˂pZdQbtXQJ`ےdrtAJ~f``JXQrXv`fJ`ےdrtAJ˂pZHAZdQbtJ`ےrtAJl~f`ZdQbtv`fJ`ےtAJlJXQrpfH~|drr˂plJtf~HJltvXnr˂pf~HbHAZptbdZHAblJtAHAZpltbvXn˂pZ~HfbHAZpltbbے`l|ZbHAZpˑtbdvXnےlJtA~HfpbHAZp˒tbnpZHAf۝`vQtJlZHAbArd|fpvbdQZ|vpfHZHAbfpv˂rXQZ|dJQrrd|˂rXQdQZ|vpfHHAے`pvn˂rXQdQZ|JXQrdQbt璂rXQQZ|dvpfHrd|vnXrXQvpfHb˂pXnvˍtbAdZ`JXQZdQbtnXv`˂drtA~f``JXQnXv`QJ`ےrtAJl˂pZHAZdQbtJ`ےdrtAJ~f`JXQrbXv`fJ`ےdrtAJ˂p`JlJtArJ`ےrtAJl~f`ZdQbtv`fJ`ےㅐf`ZHAbpfH~|drr˂plJtfHfpJltvXnr˂pf~HbHAZptbdbے`lJtAbHAZpltbvXntlJ~HfbHAZpltbXQr˂d|ZbHAZpˑtbdvXnےlJtA~HfpbHAZpvXnۙے`JXf۝`vQtJlZHAbArd|vnbdQZ|vpfHZHAbfpv˂rXQZ|lJXQrrd|˂rXQdQZ|vpfHtAd|pvn˂rXQdQZ|pZHAbdQbt璂rXQQZ|dvpfHrd|vnXrXQvpfHQr˂pXnvˍtbAdZ`JXQZdQbtrXQJ`ۂdrtA~f``JXQnXv`QJ`ےtbn˂pZHAZdQbtJ`ےdrtAJ~f`ZdQbtXv`fJ`ےdtAJlے`JlJtArJ`ےrtAJl~f`ZdQbtv`fJ`ے~f`ZHAbpfH~|drr˂plJtHAZpJltvXnr˂pf~HbHAZpvp`bے`lJtAbHAZpltbvXnlJtA~HfbHAZptbnXQr˂dtlbHAZpˑtbdvXnےlJtA~HfpbHAZpvXnۙے`JXf۝`vQtJlZHAbArd|˂rXbdQZ|vpfHZHAے`fpv˂rXvXnJXQrrd|˂rXQdQZ|vpfHrd|pvn˂rXQvpfpZHAbJfpvrXQQZ|dvpfے`rd|vnXrXQvpfHQHAbXnvˍtbAdZ`JXQZdQbtQJ`ےdrtA~f`JXQrnXv`QJ`ےvpfHZHAbZdQbtJ`ےdrtAJ~f`ZdQbtXv`fJ`ےHf`˂pnvfJ`ےrtAJlJXQrZdQbtv`fJ`ے~f``JXQpfH~|drr˂plJtbHAZpJltvXnbtlf~HbHAZp~f``JXQlJfbHAZpltbvXnlJtA~HfbHAZpvXnZHAb~HfpbHAZpˑtbd˂pZHlJtA~HfpbHAZpvXnr˂pf۝`vQtJlZHAbArd|˂rXbdQZ|vpfHJtAd|fpv˂rXvXnr˂ppvn˂rXQdQZ|vpfHrd|pvn˂rXQvpfHے`JXQvnXrXQQZ|dAbے`rd|vnXrXQvpfHZHAbXnvˍtbAdZ`JXQZdQbtQJ`ےdrtA~f`ZdQbtnXv`QJ`ےvp`vXZHAbXv`fJ`ےdrtAJ~f`ZdQbtXv`fJ`ے~f`r˂pv`fJ`ےrtAJlJXQrZdQbtv`fJ`ےJl~f``JXQpfH~|drr˂plJtbHAZpJltvXnlJtf~HbHAZpnvp`JXQ~HfbHAZpltbvXnlJtA~HfbHAZpvXnZHAb~HfpbHAZpˑtbd˂pZHlJtA~HfptbdvXnr˂p`f۝`vQtJlt666666666666666666666666666667777777777777777777 \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv34_0.dat b/mpdf/qrcode/data/qrv34_0.dat deleted file mode 100644 index 6904005..0000000 --- a/mpdf/qrcode/data/qrv34_0.dat +++ /dev/null @@ -1,305 +0,0 @@ -}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYWWWWWXWXUVUVUVUVSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYWXWXWXWXUVUVUVUVSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYWXWXWXWXUVUVUVUVSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYWXWXWXWXUVUVUVUVSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvsssssstsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYWXWXWXWXUVUVUVUVSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvtstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYWXWXWXWXUVUVUVUVSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvtstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYWXWWWWWXUVUVUVUVSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=<;<;<}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvtstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYWXWXWXWVUVUVUVUVSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@;<;;;;;;}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvtstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYUVUVUVUVUVUVUVUTSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@<;<;<;<;}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvtstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYUVUVUVUVSTSTSTSTSTSTSTSRQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@<;<;<;<;}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvtstsssssrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYXWXWUVUVUVUVSTSTSTSTQRQRQRQRQRQRQRQPOPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@<;<;<;<;}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvtstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[XWXWWWWWUVUVUVUVSTSTSTSTQRQRQRQROPOPOPOPOPOPOPONMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@<;<;<;<;}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvrqrqrqrqrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[WXWXWXWXUVUVUVUVSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNMNMNMNMLKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?>=><;<;<;<;}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvrqrqrqrqpopopopopopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[WXWXWXWXUVUVUVUVSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLKLKLKLKJIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB=>=>=>=><;<;<;;;}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvutstrqrqrqrqpopopoponmnmnmnmnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[WXWXWXWXUVUVUVUVSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJIJIJIJIHGHGHGHGHEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;;;<;<;<<;<;<;<;}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxststssssrqrqrqrqpopopoponmnmnmnmlklklklklklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[WXWXWXWXUVUVUVUVSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHGHGHGHGFEFEFEFEFCDCDCDCDABABABAB=>=>=>=>;<;<;<;<<;<;<;<;}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxsstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijijijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[ZYWXWXWXWXUVUVUVUVSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFEFEFEFEDCDCDCDCDABABABAB=>=>=>=>;<;<;<;<<;;;;;<;}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxtstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghghghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYWXWXWXWWUVUVUVUVSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDCDCDCDCBABABABAB=>=>=>=>;<;<;<;<<;<;<;:9}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxtstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefefefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYWWWWXWXWUVUVUVUVSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABABABABABA@=>=>=>=>;<;<;<;<:9:9:9:9}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxtstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcdcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWUVUVUVUVSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<:9:9:9:9}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwvtstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababababababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWUVUVUVUVSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;;;;;;<;:9:9:9:9}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvtstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWUVUVUVUVSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=><;<;<;<;:9:9:9:9}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvssssststrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]^]^]^]^]ZYZYZYZYXWXWXWXWUVUVUVUVSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=><;<;<;<;:9:9:9:9}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvststststrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWUVUVUVUVSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=><;<;<;<;:9:9:9:9~}~}~}~}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvststststrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWWWWWWXUVUVUVUVSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=><;<;<;<;:9:9:9:9}~}~}~}~}|{|{|{|{|{|{|{|yzyzyzyzuvuvuvuvststststrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYWXWXWXWXUVUVUVUVSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=><;<;<;<;:9:9:9:9}~}~}~}~{|{|{|{|{zyzyzyzyzyzyzyzuvuvuvuvststststrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYWXWXWXWXUVUVUVUVSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=><;<;;;;;:9:9:9:9}~}~}~}~{|{|{|{|yzyzyzyzyxwxwxwxuvuvuvuvststststrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYWXWXWXWXUVUVUVUVSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<:9:9:9:9}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvstssssssrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYWXWXWXWXUVUVUVUVSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<:9:9:9:9}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvtstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYWXWXWXWXUVUVUVUVSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<:9:9:9:9}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvtstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYWXWXWWWWUVUVUVUVSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<:9:9:9:9}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvtstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYWWXWXWXWUVUVUVUVSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;<:9:9:9:9}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvtstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWUVUVUVUVSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;<;<;<;;:9:9:9:9}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvtstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWUVUVUVUVSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=>;;;;<;<;:9:9:9:9}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvtststsssrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWUVUVUVUVSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=><;<;<;<;:9:9:9:9}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvssstststrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWUVUVUVUVSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=><;<;<;<;:9:9:9:9}~}~}~}~{|{|{|{|yzyzyzyzwxwxwxwxuvuvuvuvststststrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWUVUVUVUVSTSTSTSTQRQRQRQROPOPOPOPMNMNMNMNKLKLKLKLIJIJIJIJGHGHGHGHEFEFEFEFCDCDCDCDABABABAB?@?@?@?@=>=>=>=><;<;<;<;:9:9:9:9:9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -:9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -:9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -:9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -:9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -:9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - -:9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - -:9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -:9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -:9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -:9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -:9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -:9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!       - - - -:9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!       - - - -:9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!     - - - -:9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!     - - - -:9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!        - - - -:9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#       - - - -:9:9:987878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#         - - - -87878787878787656565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#         - - - -87878787656565656565654343434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#         - - - -87878787656565654343434343434321212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#          - - - -878787876565656543434343212121212121210/0/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#"!"!           - - - -878787876565656543434343212121210/0/0/0/0/0/0/.-.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!       - - - - - -878787876565656543434343212121210/0/0/0/.-.-.-.-.-.-.-,+,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!        - - - - - - 878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+,+,+,+*)*)*)*)*)('('('('&%&%&%&%"!"!"!"!         - - - -878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)*)*)*)('('('('('&%&%&%&%"!"!"!"!         - - - -878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('('('('&%&%&%&%&%"!"!"!"!         - - - -878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%&%&%&%$#"!"!"!"!         - - - -878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!       - - - -878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - -878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!      - - - - 33445566ONNMMLLKTUUVVWWXIHHGGFFELMMNNOOPQPPOONNMDEEFFGGHYXXWWVVU<==>>??@a``__^^]45566778ihhggffe,--..//0gffeeddcOPPQQRRS54433221eeffgghh88776655]]^^__``@@??>>==UUVVWWXXHHGGFFEEMMNNOOPPPPOONNMMEEFFGGHHXXWWVVUU==>>??@@QQPPOONNeeffgghh$#"! uvvwwxxy(''&&%%$mnnooppq0//..--,effgghhi87766554]^^__``a@??>>==>=TUUVVWWXIHHGGFFELMMNNOOPQPPOONNMDEEFFGGHYXXWWVVU<==>>??@a``__^^]45566778_^^]]WWVW]]^^__`-,,++**)mmnnoopp00//..--eeffgghh88776655]]^^__``@@??>>==UUVVWWXXHHGGFFEEMMNNOOPPPPOONNMMEEFFGGHHIIHHGGFFmmnnoopp}~~ uvvwwxxy(''&&%%$mnnooppq0//..--,effgghhi87766554]^^__``a@??>>==`aabbccd=<<;;::9XYYZZ[[\EDDCCBBAPQQRRSSTMLLKKJJIHIIJJKKLUTTSSRRQ@AABBCCD]\\[[ZZY899::;;>=TUUVVWWXIHHGGFFELMMNNOOPQPPOONNMDEEFFGGHYXXWWVVU<==>>??@RQQPPOONdeeffggh%$#"! uuvvwwxx((''&&%%mmnnoopp00//..--eeffgghh88776655]]^^__``@@??>>==UUVVWWXXHHGGFFEEMMNNOOPPAA;;::99zz{{||}}}~~ uvvwwxxy(''&&%%$mnnooppq0//..--,effgghhi87766554]^^__``a,++**))(!!""##$$rrqqppooLLMMNNOO88776655hiijjkkl54433221`aabbccd=<<;;::9XYYZZ[[\EDDCCBBAPQQRRSSTMLLKKJJIHIIJJKKLUTTSSRRQ@AABBCCDNMMLLKKJhiijjkklyyzz{{||$$##""!!qqrrsstt,,++**))iijjkkll44332211aabbccdd<<;;::99YYZZ[[\\DDCCBBAAQQRRSSTT88776655~~ -yzz{{||}$##""!! qrrssttu,++**))(ijjkkllm43322110abbccdde(''&&%%~~}}%%&&''((nnmmllkkPPQQRRSS44332211lmmnnoop100//..-deeffggh98877665\]]^^__`A@@??>>=TUUVVWWXIHHGGFFELMMNNOOPQPPOONNMDEEFFGGHJIIHHGGFlmmnnoop}}~~ uuvvwwxx((''&&%%mmnnoopp00//..--eeffgghh88776655]]^^__``@@??>>==UUVVWWXX44332211 -  }~~ uvvwwxxy(''&&%%$mnnooppq0//..--,effgghhi||{{zzyy))**++,,jjiihhggTTUUVVWW00//..--pqqrrsst-,,++**)hiijjkkl54433221`aabbccd=<<;;::9XYYZZ[[\EDDCCBBAPQQRRSSTMLLKKJJIHIIJJKKLFEEDDCCBpqqrrssyyyzz{{||$$##""!!qqrrsstt,,++**))iijjkkll44332211aabbccdd<<;;::99YYZZ[[\\00//..-- - - yzz{{||}$##""!! qrrssttu,++**))(ijjkkllmxxwwvvuu--..//00ffeeddcc]]^^__``,,++**))tuuvvwwx)((''&&%lmmnnoop100//..-deeffggh98877665\]]^^__`A@@??>>=TUUVVWWXIHHGGFFELMMNNOOPBAA;;::9yzz{{||}}}~~ uuvvwwxx((''&&%%mmnnoopp00//..--eeffgghh88776655]]^^__``,,++**)) }~~ uvvwwxxy(''&&%%$mnnooppqttssrrqq11223344bbaa``__aabbccdd((''&&%%xyyzz{{|%$$##""!pqqrrsst-,,++**)hiijjkkl54433221`aabbccd=<<;;::9XYYZZ[[\EDDCCBBAPQQRRSST98877665}~~ yyzz{{||$$##""!!qqrrsstt,,++**))iijjkkll44332211aabbccdd((''&&%%  - - yzz{{||}$##""!! qrrssttuppoonnmm55667788^^]]WWVVeeffgghh$#"! |}}~~! tuuvvwwx)((''&&%lmmnnoop100//..-deeffggh98877665\]]^^__`A@@??>>=TUUVVWWX54433221 - -  }}~~ uuvvwwxx((''&&%%mmnnoopp00//..--eeffgghh - -  }~~ uvvwwxxy llkkjjii99::;;<>??@@QQPPOONNmmnnoopp|}}~~! tuuvvwwx)((''&&%lmmnnoop100//..-deeffggh98877665\]]^^__`-,,++**) }}~~ uuvvwwxx((''&&%%mmnnoopp - -  }~~~~}}||ddccbbaaAABBCCDDMMLLKKJJqqrrssyyxyyzz{{|%$$##""!pqqrrsst-,,++**)hiijjkkl54433221`aabbccd)((''&&% - - yyzz{{||$$##""!!qqrrsstt   - -  -{{zzyyxw``__^^]]EEFFGGHHIIHHGGFFzz{{||}} |}}~~! tuuvvwwx)((''&&%lmmnnoop100//..-deeffggh% - -  }}~~ uuvvwwxx  - -  - vutssrrq\\[[ZZYYIIJJKKLLEEDDCCBB~~ - - - xyyzz{{|%$$##""!pqqrrsst-,,++**)hiijjkkl  - - yyzz{{|| - -  !~~}}|   - - qppoonnm - -XXWWVVUUMMNNOOPPAA;;::99 -   |}}~~! tuuvvwwx)((''&&%lmmnnoop - -  }}~~~~}}|!""##$$%|{{zzyyx - - mllkkjji TTSSRRQQQQRRSSTT88776655 - - xyyzz{{|%$$##""!pqqrrsst  - -  |{{zzyyx%&&''(()xwwvvuut !~~}}|  ihhggffePPOONNMMUUVVWWXX44332211 - -   |}}~~! tuuvvwwx  - -  - - wvutssrr)**++,,-tssrrqqp!""##$$%|{{zzyyx - - eddccbbaLLKKJJIIYYZZ[[\\00//..--  - - xyyzz{{| - -  ~~}}  - - qqppoonn-..//001poonnmml%&&''(()xwwvvuut !~~}}|  %%&&'a``__^^] HHGGFFEE]]^^__``,,++**)) - -   |}}~~~~}}!!""##$$||{{zzyy - - mmllkkjj12233445lkkjjiih)**++,,-tssrrqqp!""##$$%|{{zzyyx - - '(())**+]\[ZYXWW - - DDCCBBAAaabbccdd((''&&%%  - -  ||{{zzyy%%&&''((xxwwvvuu ~~}} iihhggff56677889hggffeed-..//001poonnmml%&&''(()xwwvvuut !~~}}| +,,--../VVUUTTSS@@??>>==eeffgghh - -   - - xwvutssr))**++,,ttssrrqq!!""##$$||{{zzyy - - eeddccbb9::;;<<=dccbbaa`12233445lkkjjiih)**++,,-tssrrqqp!""##$$%|{{zzyyx/0011223RRQQPPOO<<;;::99iijjkkll ~~}  - - rqqppoon--..//00ppoonnmm%%&&''((xxwwvvuu ~~}} %%&&aa``__^^=>>??@@A`__^^]]\56677889hggffeed-..//001poonnmml%&&''(()xwwvvuut !~~}}|34455667NNMMLLKK88776655mmnnoopp !!""##$}||{{zzy - -  nmmllkkj11223344llkkjjii))**++,,ttssrrqq!!""##$$||{{zzyy - - ''(())**]]\[ZYXWABBCCDDE\[[ZZYYX9::;;<<=dccbbaa`12233445lkkjjiih)**++,,-tssrrqqp!""##$$%|{{zzyyx~~}}||{78899::;JJIIHHGG44332211qqrrsstt$%%&&''(yxxwwvvu ~~} jiihhggf55667788hhggffee--..//00ppoonnmm%%&&''((xxwwvvuu ~~}} ++,,--..WVVUUTTSEFFGGHHIXWWVVUUT=>>??@@A`__^^]]\56677889hggffeed-..//001poonnmml%&&''(()xwwvvuut !{zzyyssr;AABBCCDFFEEDDCC !!00//..--uuvvwwxx ~~}}|())**++,uttssrrq !!""##$}||{{zzy - - feeddccb99::;;<=""##$$%%,,++**))yyzz{{|| - - |{{zzyyx,--..//0qppoonnm$%%&&''(yxxwwvvu ~~} %%&baa``__^==>>??@@``__^^]]55667788hhggffee--..//00ppoonnmm%%&&''((xxwwvvuu ~~}}33445566ONNMMLLKMNNOOPPQPOONNMMLEFFGGHHIXWWVVUUT=>>??@@A`__^^]]\56677889hggffeed-..//001poonnmml%&&''(()nmmllkkjHIIJJKKL<;;::998&&''(())((''&&%%}}~~ - - wvutssrr01122334mllkkjji())**++,uttssrrq !!""##$}||{{zzy - - &''(())*^]]\[ZYXAABBCCDD\\[[ZZYY99::;;<>??@@``__^^]]55667788hhggffee--..//00ppoonnmm%%&&''((xxwwvvuu {{zzyyss;;AABBCCGFFEEDDCUVVWWXXYHGGFFEEDMNNOOPPQPOONNMMLEFFGGHHIXWWVVUUT=>>??@@A`__^^]]\56677889hggffeed-..//001feeddccbPQQRRSST43322110..//0011 mmllkkjj899::;;YZZ[[\\]DCCBBAA@QRRSSTTULKKJJIIHIJJKKLLMTSSRRQQPABBCCDDE\[[ZZYYX9::;;<<=dccbbaa`12233445baa``__^TUUVVWW]0//..--,22334455iihhggff<==>>??@a``__^^]45566778ihhggffe,--..//0qppoonnm$%%&&''(yxxwwvvu ~~}23344556OONNMMLLMMNNOOPPPPOONNMMEEFFGGHHXXWWVVUU==>>??@@``__^^]]55667788hhggffee--..//00ppoonnmm%%&&''((nnmmllkkHHIIJJKK=<;;::99]^^__``a@??>>==>??@@A`__^^]]\56677889^]]WWVVU]^^__``a,++**))(66778899eeddccbb@AABBCCD]\\[[ZZY899::;;>??@a``__^^]45566778ihhggffe,--..//0qppoonnm$%%&&''(yxxwwvvu |{{zzyys:;;AABBCGGFFEEDDUUVVWWXXHHGGFFEEMMNNOOPPPPOONNMMEEFFGGHHXXWWVVUU==>>??@@``__^^]]55667788hhggffee--..//00ffeeddccPPQQRRSS44332211effgghhi87766554]^^__``a@??>>==>??@@AQPPOONNMeffgghhi#"! >>??@@AA ''(())**]]\[ZYXWHIIJJKKLUTTSSRRQ@AABBCCD]\\[[ZZY899::;;>??@a``__^^]45566778ihhggffe,--..//0qppoonnm$%%&&''(onnmmllkGHHIIJJK>=<;;::9]]^^__``@@??>>==UUVVWWXXHHGGFFEEMMNNOOPPPPOONNMMEEFFGGHHXXWWVVUU==>>??@@``__^^]]55667788^^]]WWVV]]^^__``,,++**))mnnooppq0//..--,effgghhi87766554]^^__``a@??>>==>??@@AA__^^]]\\66778899ggffeedd..//0011oonnmmll&&''(())mmllkkjjIIJJKKLL;;::9988^__``aab?>>==<<;VWWXXYYZGFFEEDDCNOOPPQQRONNMMLLKFGGHHIIJWVVUUTTS>??@@AAB_^^]]\\[6778899:UTTSSRRQijjkkllmRRSSTTUUKKJJIIHHJJKKLLMMSSRRQQPPBBCCDDEE[[ZZYYXX::;;<<==ccbbaa``22334455kkjjiihh**++,,--iihhggffMMNNOOPP77665544bccddeef;::99887Z[[\\]]^CBBAA@@?RSSTTUUVKJJIIHHGJKKLLMMNSRRQQPPOBCCDDEEF[ZZYYXXW:;;<<==>QPPOONNMmnnooppqVVWWXXYYGGFFEEDDNNOOPPQQOONNMMLLFFGGHHIIWWVVUUTT>>??@@AA__^^]]\\66778899ggffeedd..//0011eeddccbbQQRRSSTT33221100fgghhiij76655443^__``aab?>>==<<;VWWXXYYZGFFEEDDCNOOPPQQRONNMMLLKFGGHHIIJWVVUUTTS>??@@AABMLLKKJJIqrrssyyz ZZ[[\\]]CCBBAA@@RRSSTTUUKKJJIIHHJJKKLLMMSSRRQQPPBBCCDDEE[[ZZYYXX::;;<<==ccbbaa``22334455aa``__^^UUVVWW]]//..--,,jkkllmmn3221100/bccddeef;::99887Z[[\\]]^CBBAA@@?RSSTTUUVKJJIIHHGJKKLLMMNSRRQQPPOBCCDDEEFIHHGGFFEz{{||}}~ - - ^^__``aa??>>==<>??@@AA__^^]]\\66778899]]WWVVUU^^__``aa++**))((nooppqqr/..--,,+fgghhiij76655443^__``aab?>>==<<;VWWXXYYZGFFEEDDCNOOPPQQRONNMMLLKFGGHHIIJEDDCCBBA~ - - bbccddee;;::9988ZZ[[\\]]CCBBAA@@RRSSTTUUKKJJIIHHJJKKLLMMSSRRQQPPBBCCDDEE[[ZZYYXX::;;<<==TTSSRRQQbbccddee''&&%%$#rssttuuv+**))(('jkkllmmn3221100/bccddeef;::99887Z[[\\]]^CBBAA@@?RSSTTUUVKJJIIHHGJKKLLMMNA;;::998 ffgghhii77665544^^__``aa??>>==<>??@@AAPPOONNMMffgghhii"! vwwxxyyz'&&%%$$#nooppqqr/..--,,+fgghhiij76655443^__``aab?>>==<<;VWWXXYYZGFFEEDDCNOOPPQQR87766554jjkkllmm33221100bbccddee;;::9988ZZ[[\\]]CCBBAA@@RRSSTTUUKKJJIIHHJJKKLLMMSSRRQQPPBBCCDDEELLKKJJIIjjkkllmmz{{||}}~#""!! rssttuuv+**))(('jkkllmmn3221100/bccddeef;::99887Z[[\\]]^CBBAA@@?RSSTTUUV43322110nnooppqq//..--,,ffgghhii77665544^^__``aa??>>==<>==<<;VWWXXYYZ0//..--,rrssttuu++**))((jjkkllmm33221100bbccddee;;::9988ZZ[[\\]]CCBBAA@@RRSSTTUUKKJJIIHHJJKKLLMMDDCCBBAArrssyyzzz{{||}}~#""!! rssttuuv+**))(('jkkllmmn3221100/bccddeef;::99887Z[[\\]]^,++**))( vvwwxxyy''&&%%$$nnooppqq//..--,,ffgghhii77665544^^__``aa??>>==<>==<>??@ ~~vvwwxxyy''&&%%$$nnooppqq -  ~eddccbba@AABBCCD - - zz{{||}}##""!! rrssttuu - - - a``__^^]DEEFFGGH ~~vvwwxxyy  -  ]\\[[ZZYHIIJJKKL  - - zz{{||}} - -  !!"~~}}||{ - - - YXXWWVVULMMNNOOP - -  ~~~~}}||{"##$$%%&{zzyyxxw - %%&&'UTTSSRRQPQQRRSST  - -  - -{zzyyxwv&''(())*wvvuutts !!"~~}}||{ -'(())**+QPPOONNMTUUVVWWX - -  utssrrqq*++,,--.srrqqppo"##$$%%&{zzyyxxw - +,,--../MLLKKJJIXYYZZ[[\~~}}||  - - ppoonnmm.//00112onnmmllk&''(())*wvvuutts !!"~~}}||{ -/0011223IHHGGFFE\]]^^__`{{zzyyxx - - llkkjjii23344556kjjiihhg*++,,--.srrqqppo"##$$%%&{zzyyxxw - 34455667EDDCCBBA`aabbccdwwvvuutt !!~~}}|| hhggffee6778899:gffeeddc.//00112onnmmllk&''(())*wvvuutts !!"~~}}||{78899::;A@@??>>=deeffgghssrrqqpp""##$$%%{{zzyyxx - - ddccbbaa:;;<<==>cbbaa``_23344556kjjiihhg*++,,--.srrqqppo"##$$%%&{zzyyxxw;AABBCCD=<<;;::9hiijjkkloonnmmll&&''(())wwvvuutt !!~~}}|| %%&&''``__^^]]>??@@AAB_^^]]\\[6778899:gffeeddc.//00112onnmmllk&''(())*wvvuutts !!"~~}}||{~~}}||{DEEFFGGH98877665lmmnnoopkkjjiihh**++,,--ssrrqqpp""##$$%%{{zzyyxx - - (())**++\[ZYXWWVBCCDDEEF[ZZYYXXW:;;<<==>cbbaa``_23344556kjjiihhg*++,,--.srrqqppo"##$$%%&{zzyyxxw{zzyyssrHIIJJKKL54433221pqqrrsstggffeedd..//0011oonnmmll&&''(())wwvvuutt !!~~}}||,,--..//VUUTTSSRFGGHHIIJWVVUUTTS>??@@AAB_^^]]\\[6778899:gffeeddc.//00112onnmmllk&''(())*wvvuutts !!"rqqppoonLMMNNOOP100//..-tuuvvwwxccbbaa``22334455kkjjiihh**++,,--ssrrqqpp""##$$%%{{zzyyxx00112233RQQPPOONJKKLLMMNSRRQQPPOBCCDDEEF[ZZYYXXW:;;<<==>cbbaa``_23344556kjjiihhg*++,,--.srrqqppo"##$$%%&nmmllkkjPQQRRSST-,,++**)xyyzz{{|__^^]]\\66778899ggffeedd..//0011oonnmmll&&''(())wwvvuutt !!~~}}||44556677NMMLLKKJNOOPPQQRONNMMLLKFGGHHIIJWVVUUTTS>??@@AAB_^^]]\\[6778899:gffeeddc.//00112onnmmllk&''(())*jiihhggfTUUVVWW])((''&&%|}}~~[[ZZYYXX::;;<<==ccbbaa``22334455kkjjiihh**++,,--ssrrqqpp""##$$%%{{zzyyxx~~}}||{{8899::;;JIIHHGGFRSSTTUUVKJJIIHHGJKKLLMMNSRRQQPPOBCCDDEEF[ZZYYXXW:;;<<==>cbbaa``_23344556kjjiihhg*++,,--.feeddccb]^^__``a%$$##""!WWVVUUTT>>??@@AA__^^]]\\66778899ggffeedd..//0011oonnmmll&&''(())wwvvuutt !!zzyyssrrAABBCCDDFEEDDCCBVWWXXYYZGFFEEDDCNOOPPQQRONNMMLLKFGGHHIIJWVVUUTTS>??@@AAB_^^]]\\[6778899:gffeeddc.//00112baa``__^abbccdde! SSRRQQPPBBCCDDEE[[ZZYYXX::;;<<==ccbbaa``22334455kkjjiihh**++,,--ssrrqqpp""##$$%%qqppoonnEEFFGGHHBAA@?>=cbbaa``_23344556^]]WWVVUeffgghhiZHAbtlJ~Hf`ےbrtAJlnvpQr˂pJtArdf~HZp˂AJltnvpQr˂pJtArdf~HZp˂rtAJlf`vXے`JXtArdf~Hp˂rJltvpfr˂ptArdf~Hp˂rJltvpfpZHAbtArdnvf˂rXJltvpfHr˂pArd|f~H˂rXJltvpfHr˂pArd|Xv`J`ےے`JXQtArdpvnHAZp˂tbdfH~ˑZHAb|ZdQfpvrXQJ`ۉbdQZ|fH~ˑZHAb|ZdQfpvrXQJ`ۑtbdnvpQr˂p|ZdQbfpvXQJ`ےbdQZ|H~fZHAb|ZdQbfpvXQJ`ےbdQZ|H~fے`J|ZdQb~HfpQJ`ےbdQZ|~f`ZHAbہZdQbtfpvQJ`ےbdQZ|~f`ZHAbہZdQbtf~HbHAZpr˂p|ZdQbXv`fbHAQZ|df`vXے`JXbtlnXv`bHAdrtf`vXے`JXbtlnXv`bHAQZ|l`vXZHAbtlJnXv`bHAZdrtA`vXnے`JXQtlJnXv`bHAZdrtA`vXnXQr˂tlJvnXbHAZpdrtAvXn`JXQlJtnXv`˙bHAZpdrtAvXn`JXQlJtfpvむrXQZHAbtlJ~HfZp˂rtAJnvpQr˂pJtArdf~HZp˂AJltnvpQr˂pJtArdf~HZp˂tbdQnvpے`JXtArdf~Hp˂rJltvpfr˂ptArdf~Hp˂rJltvpfpZHAbtArdtv`f˂rXJltvpfHr˂pArd|f~H˂rXJltvpfHr˂pArd|nXv`J`ےے`JXQtArdpvrXQJ`bdQZ|fH~ˑZHAb|ZdQfpvrXQJ`ۉbdQZ|fH~ˑZHAb|ZdQfpvrXQJ`Z|dfH~QrZHA|ZdQbfpvXQJ`ےbdQZ|H~fZHAb|ZdQbfpvXQJ`ےbdQZ|H~f˂plJtA~HfpQJ`ےbdQZ|~f`ZHAbہZdQbtfpvQJ`ےbdQZ|~f`ZHAbہZdQbtf~HbHAZpr˂p|ZdQb~HfpےbHAdrtAf`vXے`JXbtlnXv`bHAdrtf`vXے`JXbtlnXv`bHArtAJlf`vXbے`tlJnXv`bHAZdrtA`vXnے`JXQtlJnXv`bHAZdrtA`vXnZHAbrd|vnXbHAZpdrtAvXn`JXQlJtnXv`˙bHAZpdrtAvXn`JXQlJtfpvbHZHAbtlJvnXZp˂JltnvpQr˂pJtArdf~HZp˂AJltnvpQr˂pJtArdf~HZp˂tbdQnvpJXQrtArdf~Hp˂rJltvpfr˂ptArdf~Hp˂rJltvpfے`JXQZdQbtv`ffp˂rXJltvpfHr˂pArd|f~H˂rXJltvpfHr˂pArd|~HfpAZdے`JXQtArdv`frXQJ`bdQZ|fH~ˑZHAb|ZdQfpvrXQJ`ۉbdQZ|fH~ˑZHAb|ZdQfpvrXQJ`Z|dfH~˂pZHA|ZdQbfpvXQJ`ےbdQZ|H~fZHAb|ZdQbfpvXQJ`ےbdQZ|H~fr˂plJtAvnQJ`ےbdQZ|~f`ZHAbہZdQbtfpvQJ`ےbdQZ|~f`ZHAbہZdQbtvnXrtAJbr˂p|ZdQb~Hfpp˂rdrtAf`vXے`JXbtlnXv`bHAdrtf`vXے`JXbtlnXv`bHArtAdQZ|vpfHbے`tlJnXv`bHAZdrtA`vXnے`JXQtlJnXv`bHAZdrtA`vXnZHAbrd|rXQJ`ۙbHAZdtAJlvXn`JXQlJtnXv`˙bHAZpdrtAvXn`JXQlJtv`fdQZ|ZHAbtlJvnXXQJ`ےJltnvpQr˂pJtArdf~HZp˂AJltnvpQr˂pJtArdf~HZp˂drt~f`JXQrtArdf~Hp˂rJltvpfr˂ptArdf~Hp˂rJltvpfے`JXQZdQtArHAZpdrtAtbvpfHr˂pArd|f~H˂rXJltvpfHr˂pArd|~HfpdrtAJے`JXQtArdv`pvbHAZbQZdfH~ˑZHAb|ZdQfpvrXQJ`ۉbdQZ|fH~ˑZHAb|ZdQfpvrXQJ`AJltvXn˂pZA|ZdQbfpvXQJ`ےbdQZ|H~fZHAb|ZdQbfpvXQJ`ےbdQZ|H~fHAbےdf˂rXJltnvp~fZHAے`ZdQbtfpvQJ`ےbdQZ|~f`ZHAbہZdQbtvnXltbr˂p|ZdQbnXvp˂rrtAJlf`vXے`JXbtlnXv`bHAdrtf`vXے`JXbtlnXv`bHAbdQZ|vpfH`JXQrtlJnXv`bHAZdrtA`vXnے`JXQtlJnXv`bHAZdrtA`vXn`JXQr~HfvQJ`ےbdQZ|fHf`ZHAbہJXQrlJtnXv`˙bHAZpdrtAvXn`JXQlJtv`pdQZ|ZHAbtlJ`f~XQJ`ےtbdQnvpQr˂pJtArdf~HZp˂AJltnvpQr˂pJtArdf~HZp˂drt~f`btltArdfHfp˂rJltvpfr˂ptArdf~Hp˂rJltvpf˂pZnXv`˙bHAZpdrtAvXn`JXQbtlArdfHfp˂rXJltvpfHr˂pArd|vnrXdrtAJے`JXQtArdHfpvbHAXQZ|dfH~ˑZHAb|ZdQfpvrXQJ`ۉbdQZ|fH~ˑZHAb|ZdQfpvrXQJ`AJltvXHJtAdf~HpvnXQJ`ےbdQZ|H~fZHAb|ZdQbfpvXQJ`ےbdQZ|H~fHAbےf~H˂rXJltvpfHr˂pJtAd|f~HvnQJ`ےbdQZ|~f`ZHAbہZdQbtQJ`pltbQr˂p|ZdQbnXvJ`ےrtAJlf`vXے`JXbtlnXv`bHAdrtf`vXے`JXbtlnXv`bHAdrtA~fZH|ZdQbfpvrXQJ`bHAZdtAJ`vXnے`JXQtlJnXv`bHAZdrtA`vXn`JXQrfpvQJ`ےbdQZ|~f`ZHAbہZdQbtfpvrXQJ`ۙbHAZdtAJlvXn`JXQlJtrXQZdrttAJlZHAbtlJ`f~bHAZptbdQnvpQr˂pJtArdf~HZp˂AJltnvpQr˂pJtArdf~HZp˂JltAbJtlJnXv`ےHAZdrtAltbvpfr˂ptArdf~Hp˂rJltvpf˂p`nXv`˙bHAZpdrtAvXn`JXQlJtnXv`˒HAZpdrtAtbvpfHr˂pArd|J`ےAJlttbdQZے`JXQtArdHXv`˂rXQZ|dnfH~ˑZHAۂ|ZdQfpvrXQJ`ۉbdQZ|fH~ˑZHAb|ZdQfpvrXQJ`bdQZ|Qr˂ptArdf~Hp˂rJltnvpH~fZHAے|ZdQbfpvXQJ`ےbdQZ|H~fJXQrbf~H˂rXJltvpfHr˂pArd|f~H˂rXJltnvp~fZHAے`ZdQbtbHAZpˉbdQZ||AJlr˂p|ZdQbf~HJ`ےvffZHAb`JXQbtlnXv`bHAdrtf`vXے`JXbtlnXv`bHAdrtAZHAb|ZdQbfpvXQJ`ےbdQZ|fHfZHAb`JXQrtlJnXv`bHAZdrtA`vXntl|fpvnQJ`ےbdQZ|~f`ZHAbہZdQbtfpvQJ`ےbdQZ|fHf`ZHAbہJXQrlJtrXQdrttbnZHAbtlJfpvbHAZpf`vXے`JXrbtlJtArdfHZp˂AJltnvpQr˂pJtArdf~HZp˂Jltے`JXQtlJnXv`bHAZdrtA`vXnے`JXQbtltArdfHfp˂rJltvpfZdQbtvf~bHAZpdrtAvXn`JXQlJtnXv`˙bHAZpdrtAvXn`JXQbtlArdJ`ےAJltvpfے`JXQtArdnXv`˂bnvpQr˂pJtAdf~HfpvrXQJ`ۉbdQZ|fH~ˑZHAb|ZdQfpvrXQJ`bdQZ|lr˂ptArdf~Hp˂rJltvpfr˂pJtAdf~HpvnXQJ`ےbdQZ|H~flJtAHfpv˂rXJltvpfHr˂pArd|f~H˂rXJltvpfHr˂pJtAd|f~HXbHAXQJ`bdQZ|Hf`r˂p|ZdQbf~HHAZdfH~ˑZHAb|ZdQfpvnrXQJ`bHAdtAf`vXے`JXbtlnXv`bHAtbZHAb|ZdQbfpvXQJ`ےbdQZ|H~fZHAb|ZdQbfpvrXQJ`bHAZdtAJ`vXnrd|nXvQJ`ےbdQZ|~f`ZHAbہZdQbtfpvQJ`ےbdQZ|~f`ZHAbہZdQbtv`fےbHrAJlvXnZHAbtlJfpvrtAJf`vXے`JXbtlnXv`ےHAZdrtJltnvpQr˂pJtArdf~HZp˂nvp`ے`JXQtlJnXv`bHAZdrtA`vXnے`JXQtlJnXv`ےHAZdrtAltbvpfZdQbt`f~bHAZpdrtAvXn`JXQlJtnXv`˙bHAZpdrtAvXn`JXQlJt~HfpAZp˂tbdQvpfHے`JXQtArd~HfbdQZ|nvpQr˂pJtArdf~HZp˂AJltbnvpfH~ˑZHAۂ|ZdQfpvrXQJ`ۍvXnrZHAtArdf~Hp˂rJltvpfr˂ptArdf~Hp˂rJltnvpH~flJtAHfpv˂rXJltvpfHr˂pArd|f~H˂rXJltvpfHr˂pArd|vnXrXQJ`Z|d~f`r˂p|ZdQbpvndrtAfH~ˑZHAb|ZdQfpvrXQJ`ۉbdQZ|fHfZHAb`JXQbtlnXv`bHAvpfHbے`|ZdQbfpvXQJ`ےbdQZ|H~fZHAb|ZdQbfpvXQJ`ےbdQZ|fHfZHAbrdt璀nXvQJ`ےbdQZ|~f`ZHAbہZdQbtfpvQJ`ےbdQZ|~f`ZHAbہZdQbtv`fےbHrtAJlvXnZHAbtlJXv`fJltf`vXے`JXbtlnXv`bHAdrtf`vXے`JXrbtlJtArdfHZp˂~f`JXQrtlJnXv`bHAZdrtA`vXnے`JXQtlJnXv`bHAZdrtA`vXn˂pZlJtAr`f~fpbHAZpdrtAvXn`JXQlJtnXv`˙bHAZpdrtAvXn`JXQlJt~HfpAZp˂tbdQvpfHے`JXQtArd~HfbdQZ|nvpQr˂pJtArdf~HZp˂AJltnvpQr˂pJtAdf~HfpvrXQJ`ۍvXnpZHAtArdf~Hp˂rJltvpfr˂ptArdf~Hp˂rJltvpfHAbےd|ZvnX˂rXJltvpfHr˂pArd|f~H˂rXJltvpfHr˂pArd|v󉐙bHAZ|d~f`r˂p|ZdQbpvndrtAfH~ˑZHAb|ZdQfpvrXQJ`ۉbdQZ|fH~ˑZHAb|ZdQfpvnrXQJ`bHAvpfHbے`|ZdQbfpvXQJ`ےbdQZ|H~fZHAb|ZdQbfpvXQJ`ےbdQZ|H~f`JXQrdQbt璕v`fQJ`ےbdQZ|~f`ZHAbہZdQbtfpvQJ`ےbdQZ|~f`ZHAbہZdQbt~HfpZp˂rtAJvXnZHAbtlJXv`pJltbf`vXے`JXbtlnXv`bHAdrtf`vXے`JXbtlnXv`ےHAZdrt~JXQrtlJnXv`bHAZdrtA`vXnے`JXQtlJnXv`bHAZdrtA`vXn˂pZlJtAr~HfpbHAZpdrtAvXn`JXQlJtnXv`˙bHAZpdrtAvXn`JXQlJtvnXrXQJ`bdQZ|vpfHے`JXQtArd˂rXQQZdrnvpQr˂pJtArdf~HZp˂AJltnvpQr˂pJtArdf~HZp˂AdQZ|vpfHpZAbtArdf~Hp˂rJltvpfr˂ptArdf~Hp˂rJltvpfHAbےd|ZvnX˂rXJltvpfHr˂pArd|f~H˂rXJltvpfHr˂pArd|v`f󒐙bHAdrtA~f`r˂p|ZdQbJ`ےtAJlfH~ˑZHAb|ZdQfpvrXQJ`ۉbdQZ|fH~ˑZHAb|ZdQfpvrXQJ`ۂdrtA~f``JXQr|ZdQbfpvXQJ`ےbdQZ|H~fZHAb|ZdQbfpvXQJ`ےbdQZ|H~f`JXQHAdQtArdv`fQJ`ےbdQZ|~f`ZHAbہZdQbtfpvQJ`ےbdQZ|~f`ZHAbہZdQbt~HfpZp˂JltvXnZHAbtlJbHAZptbdQZf`vXے`JXbtlnXv`bHAdrtf`vXے`JXbtlnXv`bHAJltvXnۀ˂pZtlJnXv`bHAZdrtA`vXnے`JXQtlJnXv`bHAZdrtA`vXnbے`|ZdQ~HfvbHAZpdrtAvXn`JXQlJtnXv`˙bHAZpdrtAvXn`JXQlJtvnXrXQJ`pbdQZ|vpfHے`JXQtArd˂rXQ|drnvpQr˂pJtArdf~HZp˂AJltnvpQr˂pJtArdf~HZp˂bdQZ|vpfHHAbےtArdf~Hp˂rJltvpfr˂ptArdf~Hp˂rJltvpfJXQrbtlnXv`˂rXJltvpfHr˂pArd|f~H˂rXJltvpfHr˂pArd|v`pv˂rXdrtA~f`r˂p|ZdQbJ`ےtAJlfH~ˑZHAb|ZdQfpvrXQJ`ۉbdQZ|fH~ˑZHAb|ZdQfpvrXQJ`ۂdrtA~f``JXQr|ZdQbfpvXQJ`ےbdQZ|H~fZHAb|ZdQbfpvXQJ`ےbdQZ|H~f˂pZHAJtArdf~HQJ`ےbdQZ|~f`ZHAbہZdQbtfpvQJ`ےbdQZ|~f`ZHAbہZdQbtnXv`QJ`ےJltbvXnZHAbtlJbHAXQJtbdQZf`vXے`JXbtlnXv`bHAdrtf`vXے`JXbtlnXv`bHAJltdvXH~˂pZtlJnXv`bHAZdrtA`vXnے`JXQtlJnXv`bHAZdrtA`vXnbے`|ZdQfpvbHAZpdrtAvXn`JXQlJtnXv`˙bHAZpdrtAvXn`JXQlJtf~HbHAZpQZdrvpfHے`JXQtArd`ےb|rAJlnvpQr˂pJtArdf~HZp˂AJltnvpQr˂pJtArdf~HZp˂rtAJlf`vXHAbtArdf~Hp˂rJltvpfr˂ptArdf~Hp˂rJltvpfJXQrbtlnXv`˂rXJltvpfHr˂pArd|f~H˂rXJltvpfHr˂pArd|fpv˂rXtAJl~f`r˂pf~HHAZp˂tbdfH~ˑZHAb|ZdQfpvrXQJ`ۉbdQZ|fH~ˑZHAb|ZdQfpvrXQJ`ۑtbdnvpJQr˂p|ZdQbfpvXQJ`ےbdQZ|H~fZHAb|ZdQbfpvXQJ`ےbdQZ|H~f˂p`J|ZdQbf~HQJ`ےbdQZ|~f`ZHAbہZdQbtfpvQJ`ےbdQZ|~f`ZHAbہZdQbtnXv`QJ`ےtbdQZvXn|ZdQbXv`frXQJQZ|df`vXے`JXbtlnXv`bHAdrtf`vXے`JXbtlnXv`bHAQZ|dfH~ZHAbtlJnXv`bHAZdrtA`vXnے`JXQtlJnXv`bHAZdrtA`vXnXQr˂tlJfpvbHAZpdrtAvXn`JXQlJtnXv`˙bHAZpdrtAvXn`JXQlJtf~HbHAXQ|drvpfH~f`HAbےZdQbtpvnJ`ےdQZ|~f`HAbےZdQbtpvnJ`ےtbdQZvpf˂pZZdQbtvnXJ`ےQZ|d~f`Abے`ZdQbtvnXJ`ےQZ|d~f`Qr˂p`ZQXbXnvˍvXn`JXQrlJtAXv`fbHAZpdrtAJvXn`JXQrlJtAXv`fbHAZp|drH~fHAbےlJtAv`fbHAZp˙rtAJlvXnہJXQrlJtAv`fbHAZp˙rtAJlvXnۑZHAbۑpJApfH~vpfH˂pZrd|~Hf˂rXQltbvpfH˂pZrd|~Hf˂rXQtAJl`vXn`JXQrrd|~HfprXQtbdvpfH˂pZHrd|~HfprXQtbdvpfHے`JXHr󙐉f۝`v~f`HAbےZdQbtpvnJ`ےdQZ|~f`HAbےZdQbtpvnJ`ےtbdQZvp`˂pZZdQbtvnXJ`ےQZ|d~f`Abے`ZdQbtvnXJ`ےQZ|d~f`Qr˂pۑpJAHrXnvˍvXn`JXQrlJtAXv`fbHAZpdrtAJvXn`JXQrlJtAXv`fbHAZp|ltvXnHAbےlJtAv`fbHAZp˙rtAJlvXnہJXQrlJtAv`fbHAZp˙rtAJlvXnۑZHAb󙐂ˁ`Zp|drvpfH˂pZrd|~Hf˂rXQltbvpfH˂pZrd|~Hf˂rXQbdQZ|vpfH`JXQrrd|~HfprXQtbdvpfH˂pZHrd|~HfprXQtbdvpfH󙀉˂pQXb㉀QtJl~f`HAbےZdQbtpvnJ`ےdQZ|~f`HAbےZdQbtpvnJ`ےdrtA~f`ZHAbZdQbtvnXJ`ےQZ|d~f`Abے`ZdQbtvnXJ`ےQZ|d~f`ZHAbۑpJAHrtbAdZvXn`JXQrlJtAXv`fbHAZpdrtAJvXn`JXQrlJtAXv`fbHAZpJltvXnے`JXlJtAv`fbHAZp˙rtAJlvXnہJXQrlJtAv`fbHAZp˙rtAJlvXnے`JXQ󙐂ˁ`|drvpfH˂pZrd|~Hf˂rXQltbvpfH˂pZrd|~Hf˂rXQbdQZ|vpfHQr˂prd|~HfprXQtbdvpfH˂pZHrd|~HfprXQtbdvpfHr˂ppfH~QtJl~f`HAbےZdQbtpvnJ`ےdQZ|~f`HAbےZdQbtpvnJ`ےdrtA~vZHAbZdQbtvnXJ`ےQZ|d~f`Abے`ZdQbtvnXJ`ےQZ|d~f`ZHAbېf۝`vtbAdZvXn`JXQrlJtAXv`fbHAZpdrtAJvXn`JXQrlJtAXv`fbHAZpdQZ|pfH~ے`JXlJtAv`fbHAZp˙rtAJlvXnہJXQrlJtAv`fbHAZp˙rtAJlvXnے`JXQHXnvˍ|drvpfH˂pZrd|~Hf˂rXQltbvpfH˂pZrd|~Hf˂rXQdrtAJf`vQr˂prd|~HfprXQtbdvpfH˂pZHrd|~HfprXQtbdvpfHAbے`pfH~QtJl~f`HAbےZdQbtpvnJ`ےdQZ|~f`HAbےZdQbtpvnJ`ےltbXnvZA`ZdQbtvnXJ`ےQZ|d~f`Abے`ZdQbtvnXJ`ےQZ|d~f`JXQrf۝`vtbAdZvXn`JXQrlJtAXv`fbHAZpdrtAJvXn`JXQrlJtAXv`fbHAZpdQZ|pfH~JXQrbtlJtAv`fbHAZp˙rtAJlvXnہJXQrlJtAv`fbHAZp˙rtAJlvXnۉ˂pZHXnvˍ|drvpfH˂pZrd|~Hf˂rXQltbvpfH˂pZrd|~Hf˂rXQdrtAJf`vlJtrdfHfpۂrXQtbdvpfH˂pZHrd|~HfprXQtbdvpfHAbے`pfH~QtJl~f`HAbےZdQbtpvnJ`ےdQZ|~f`HAbےZdQbtpvnJ`ےltdXH~Ad|~HfpvnrXJ`ےQZ|d~f`Abے`ZdQbtvnXJ`ےQZ|d~f`JXQrf۝`vtbAdZvXn`JXQrlJtAXv`fbHAZpdrtAJvXn`JXQrlJtAXv`fbHAZprtAJlfZHAbZdQbtvnXQJ`ےbHAZdtAJlvXnہJXQrlJtAv`fbHAZp˙rtAJlvXnۉ˂p`ZXnvˍ|drvpfH˂pZrd|~Hf˂rXQltbvpfH˂pZrd|~Hf˂rXQtbdQJQrlJtAv`fHAZp˙rtAJltbnvpfH˂pZHrd|~HfprXQtbdvpfHQXb㉀pfH~QtJl~fZHAے`ZdQbtpvnJ`ےdQZ|~f`HAbےZdQbtpvnJ`ےZ|d˂pZHrd|~HfprXQtbdvpfH~fZHAے`ZdQbtvnXJ`ےQZ|d~f`ۑpJAHrf۝`vtbAdZHAbےJXQrblJtAXv`fbHAZpdrtAJvXn`JXQrlJtAXv`fbHAZprtAJlAbے`ZdQbtvnXJ`ےQZ|df`Abے`JXQrbtlJtAv`fbHAZp˙rtAJlvXn󙐂ˁ`ZXnvˍ|dr`JXQrtlJrdfHfp˂rXQltbvpfH˂pZrd|~Hf˂rXQtbdQJXQrlJtAv`fbHAZp˙rtAJlvXnہJXQrlJtrdfHfpۂrXQtbdvpfHQXb㉀pfH~QtJl˂pZtAd|~HfvnrJ`ےdQZ|~f`HAbےZdQbtpvnJ`ےZ|l璉˂pZHrd|~HfprXQtbdvpfH˂pZHAd|~HfpvnrXJ`ےQZ|d~f`ۑpJAHrf۝`vtbAdZHAbےZdQbtpvnXQJ`ےbHAZdtAJlvXn`JXQrlJtAXv`fbHAZptbnAbے`ZdQbtvnXJ`ےQZ|d~f`Abے`ZdQbtvnXQJ`ےbHAZdtAJlvXn󙐉ۑXnvˍ|dr`JXQrlJtAXv`fHAZpdrtAJtbnvpfH˂pZrd|~Hf˂rXQvp`vJXQrlJtAv`fbHAZp˙rtAJlvXnہJXQrlJtAv`fHAZp˙rtAJltbnvpfHpJAHrpfH~QtJl˂pZrd|~Hf˂rXQltbvpf~fZHAے`ZdQbtpvnJ`ےXnvZHAbrd|~HfprXQtbdvpfH˂pZHrd|~HfprXQtbdvpfH~frˁ`ZQf۝`vtbAdZHAbےZdQbtpvnJ`ےdQZ|Hf`HAbےJXQrblJtAXv`fbHAZppfH~ے`JXQZdQbtvnXJ`ےQZ|d~f`Abے`ZdQbtvnXJ`ےQZ|df`˂pZHXb㉀ۑXnvˍ|dr`JXQrlJtAXv`fbHAZpdrtAJvXn`JXQrtlJrdfHfp˂rXQf`vr˂plJtAv`fbHAZp˙rtAJlvXnہJXQrlJtAv`fbHAZp˙rtAJlvXnAbے`pJAHrpfH~QtJl˂pZrd|~Hf˂rXQltbvpfH˂pZtAd|~HfvnrJ`ےXnvZHAbrd|~HfprXQtbdvpfH˂pZHrd|~HfprXQtbdvpfHJXQrˁ`ZQf۝`vtbAdZHAbےZdQbtpvnJ`ےdQZ|~f`HAbےZdQbtpvnXQJ`ےbHAZpfH~ے`JXQZdQbtvnXJ`ےQZ|d~f`Abے`ZdQbtvnXJ`ےQZ|d~f`˂pZHXAHr󙐂Xnvˍ|dr`JXQrlJtAXv`fbHAZpdrtAJvXn`JXQrlJtAXv`fHAZpdrtAdQvpr˂plJtAv`fbHAZp˙rtAJlvXnہJXQrlJtAv`fbHAZp˙rtAJlvXnAbے`ˁ`ZQXbpfH~QtJl˂pZrd|~Hf˂rXQltbvpfH˂pZrd|~Hf˂rXQZ|dfH~ZAb`rd|~HfprXQtbdvpfH˂pZHrd|~HfprXQtbdvpfHJXQHA㉀ۑpJf۝`vtbAdZHAbےZdQbtpvnJ`ےdQZ|~f`HAbےZdQbtpvnJ`ےrtAJlf`vXJXQrZdQbtvnXJ`ےQZ|d~f`Abے`ZdQbtvnXJ`ےQZ|d~f`bے`AHr󙐂Xnvˍ|dr`JXQrlJtAXv`fbHAZpdrtAJvXn`JXQrlJtAXv`fbHAZptbdQnvppZHAlJtAv`fbHAZp˙rtAJlvXnہJXQrlJtAv`fbHAZp˙rtAJlvXnJXQrˁ`ZQXbpfH~QtJl˂pZrd|~Hf˂rXQltbvpfH˂pZrd|~Hf˂rXQZ|dfH~bے`rd|~HfprXQtbdvpfH˂pZHrd|~HfprXQtbdvpfHpZHA㉀ۑpf۝`vtbAdZHAbےZdQbtpvnJ`ےdQZ|~f`HAbےZdQbtpvnJ`ےrtAJlf`vXJXQrZdQbtvnXJ`ےQZ|d~f`Abے`ZdQbtvnXJ`ےQZ|d~f`bے``ZQXbXnvˍ|dr`JXQrlJtAXv`fbHAZpdrtAJvXn`JXQrlJtAXv`fbHAZptdrH~fpZHAlJtAv`fbHAZp˙rtAJlvXnہJXQrlJtAv`fbHAZp˙rtAJlvXnJXQrˀۑpJApfH~QtJl˂pZrd|~Hf˂rXQltbvpfH˂pZrd|~Hf˂rXQtAJl`vXnbJQrrd|~HfprXQtbdvpfH˂pZHrd|~HfprXQtbdvpfHp`JXHr󙐂ˁf۝`vtbAdZ|JJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKK \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv34_1.dat b/mpdf/qrcode/data/qrv34_1.dat deleted file mode 100644 index 2cf2bf9..0000000 --- a/mpdf/qrcode/data/qrv34_1.dat +++ /dev/null @@ -1,305 +0,0 @@ -}~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvtstststsststststrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYWXWXWXWXWWXWXWXWUVUVUVUVUVUVUVUVSTSTSTSTSTSTSTSTQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>;<;;;;;;<;<;;;;;:9:9:9:9:9:9:9:987878787878787876565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!}~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvtstststsststststrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYWXWXWXWXXWXWXWXWUVUVUVUVUVUVUVUVSTSTSTSTSTSTSTSTQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=><;<;<;<;;<;<;<;<:9:9:9:9:9:9:9:987878787878787876565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!}~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvtstststsststststrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYWXWXWXWXXWXWXWXWUVUVUVUVUVUVUVUVSTSTSTSTSTSTSTSTQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=><;<;<;<;;<;<;<;<:9:9:9:9:9:9:9:987878787878787876565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!}~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvtstststsststststrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYWXWXWXWXXWXWXWXWUVUVUVUVUVUVUVUVSTSTSTSTSTSTSTSTQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=><;<;<;<;;<;<;<;<:9:9:9:9:9:9:9:987878787878787876565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!}~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwvuvuvuvuvtstststsststststrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYWXWXWXWXXWXWXWXWUVUVUVUVUVUVUVUVSTSTSTSTSTSTSTSTQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=><;<;<;<;;<;<;<;<:9:9:9:9:9:9:9:987878787878787876565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!}~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxuvuvuvuvuvuvuvuvssssststsssssstsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[ZYZYZYZYZYWXWXWXWWXWXWXWXWUVUVUVUVUVUVUVUVSTSTSTSTSTSTSTSTQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=><;<;<;<;;<;<;<;<:9:9:9:9:9:9:9:987878787878787876565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!}~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxuvuvuvuvuvuvuvuvststststtstststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYWWWWXWXWWWWWWXWXUVUVUVUVUVUVUVUVSTSTSTSTSTSTSTSTQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?>=>=>=>=>=><;<;<;;;;<;<;<;;:9:9:9:9:9:9:9:987878787878787876565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!}~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxuvuvuvuvuvuvuvuvststststtstststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWWXWXWXWXUVUVUVUVUVUVUVUVSTSTSTSTSTSTSTSTQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@=>=>=>=>=>=>=>=>;;;<;<;<;;;;<;<;:9:9:9:9:9:9:9:987878787878787876565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#"!"!"!"!"!"!}~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxuvuvuvuvuvuvuvuvststststtstststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWWXWXWXWXUVUVUVUVUVUVUVUVSTSTSTSTSTSTSTSTQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<<;<;<;<;:9:9:9:9:9:9:9:987878787878787876565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!"!"!"!"!}~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxuvuvuvuvuvuvuvuvststststtstststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWWXWXWXWXUVUVUVUVUVUVUVUVSTSTSTSTSTSTSTSTQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<<;<;<;<;:9:9:9:9:9:9:9:987878787878787876565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!"!"!"!"!}~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxuvuvuvuvuvuvuvuvststststtstststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWWXWXWXWXUVUVUVUVUVUVUVUVSTSTSTSTSTSTSTSTQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<<;<;<;<;:9:9:9:9:9:9:9:987878787878787876565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!"!"!"!"!}~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxuvuvuvuvuvuvuvuvstsssssststsssssrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWWXWXWXWXUVUVUVUVUVUVUVUVSTSTSTSTSTSTSTSTQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<<;<;<;<;:9:9:9:9:9:9:9:987878787878787876565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!"!"!"!"!~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvtstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWWWWWWXWXWWWWWXUVUVUVUVUVUVUVUVSTSTSTSTSTSTSTSTQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@=>=>=>=>=>=>=>=>;<;<;<;<<;<;<;<;:9:9:9:9:9:9:9:987878787878787876565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!"!"!"!"!}~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvtstststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@=>=>=>=>=>=>=>=>;;;;;;<;<;;;;;<;:9:9:9:9:9:9:9:987878787878787876565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!"!"!"!"!"!   }~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvtstststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYWXWXWXWXUVUVUVUVUVUVUVUVSTSTSTSTSTSTSTSTQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=><;<;<;<;<;<;<;:9:9:9:9:9:9:9:987878787878787876565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#"!"!"!"!"!"!"!"!  }~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvuvuvtstststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYWXWXWXWXUVUVUVUVUVUVUVUVSTSTSTSTSTSTSTSTQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=><;<;<;<;:9:9:9:9:9:9:9:987878787878787876565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!    }~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvuvuvutsttstststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYWXWXWXWXUVUVUVUVUVUVUVUVSTSTSTSTSTSTSTSTQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=><;<;<;<;:9:9:9:9:9:9:9:987878787878787876565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!    }~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvststsssstststsssrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYXWXWWXWXWXWXUVUVUVUVUVUVUVUVSTSTSTSTSTSTSTSTQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=>=>=><;<;<;<;:9:9:9:9:9:9:9:987878787878787876565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!    }~}~}~}~}~}~}~}~{|{|{|{|{|{|{|{|yzyzyzyzyzyzyzyzwxwxwxwxwxwxwxwxuvuvuvuvsstststsssstststrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYXWXWWWWWWXWXWWWWUVUVUVUVUVUVUVUVSTSTSTSTSTSTSTSTQRQRQRQRQRQRQRQROPOPOPOPOPOPOPOPMNMNMNMNMNMNMNMNKLKLKLKLKLKLKLKLIJIJIJIJIJIJIJIJGHGHGHGHGHGHGHGHEFEFEFEFEFEFEFEFCDCDCDCDCDCDCDCDABABABABABABABAB?@?@?@?@?@?@?@?@=>=>=>=>=>=<;<;<<;<;<;<;:9:9:9:9:9:9:9:987878787878787876565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!                    - - - - - - - -              - - - - - - - -               - - - - - - - -                 - - - - - - - -                 - - - - - - - -                 - - - - - - - -                 - - - - - - - -                 - - - - - - - -             - - - - - - - -              - - - - - - - -              - - - - - - - -             - - - - - - - -             - - - - - - - -             - - - - - - - -          - - - - - - - -             - - - - - - - -             - - - - - - - -             - - - - - - - -             - - - - - - - -LLKKJJII]]^^__``((''&&%%DDEEFFGG=<;;::99 hiijjkkl}||{{zzy100//..- hiijjkkl}||{{zzy100//..- hiijjkkl}||{{zzy100//..- hiijjkkl}||{{zzy100//..- hiijjkkl}||{{zzy100//..- hiijjkklsrrqqppoGHHIIJJK98877665eeffgghh~~}}44332211eeffgghh~~}}44332211eeffgghh~~}}44332211eeffgghh~~}}44332211eeffgghh~~}}44332211eeffgghh{{zzyyssDDEEFFGG=<;;::99abbccdde87766554abbccdde87766554abbccdde87766554abbccdde87766554abbccdde87766554abbccdde~~}}||{;AABBCCDBBAA@?>=^^__``aa;;::9988^^__``aa;;::9988^^__``aa;;::9988^^__``aa;;::9988^^__``aa;;::9988^^__``aa''&&%%8899::;;HHGGFFEEaabbccdd~~}}||HHIIJJKK88776655 !!""##$lmmnnoopyxxwwvvu-,,++**) !!""##$lmmnnoopyxxwwvvu-,,++**) !!""##$lmmnnoopyxxwwvvu-,,++**) !!""##$lmmnnoopyxxwwvvu-,,++**) !!""##$lmmnnoopyxxwwvvu-,,++**) !!""##$lmmnnooponnmmllkKLLMMNNO54433221 iijjkkll||{{zzyy00//..-- iijjkkll||{{zzyy00//..-- iijjkkll||{{zzyy00//..-- iijjkkll||{{zzyy00//..-- iijjkkll||{{zzyy00//..-- iijjkkllrrqqppooHHIIJJKK88776655effgghhi~~}}|43322110effgghhi~~}}|43322110effgghhi~~}}|43322110effgghhi~~}}|43322110effgghhi~~}}|43322110effgghhi{zzyyssrDEEFFGGH<;;::998bbccddee77665544bbccddee77665544bbccddee77665544bbccddee77665544bbccddee77665544bbccddee~~}}||{{AABBCCDDDDCCBBAAeeffgghh{{zzyyssLLMMNNOO44332211$%%&&''(pqqrrsstuttssrrq)((''&&%$%%&&''(pqqrrsstuttssrrq)((''&&%$%%&&''(pqqrrsstuttssrrq)((''&&%$%%&&''(pqqrrsstuttssrrq)((''&&%$%%&&''(pqqrrsstuttssrrq)((''&&%$%%&&''(pqqrrsstkjjiihhg OPPQQRRS100//..-!!""##$$mmnnooppxxwwvvuu,,++**))!!""##$$mmnnooppxxwwvvuu,,++**))!!""##$$mmnnooppxxwwvvuu,,++**))!!""##$$mmnnooppxxwwvvuu,,++**))!!""##$$mmnnooppxxwwvvuu,,++**))!!""##$$mmnnooppnnmmllkkLLMMNNOO44332211 !ijjkkllm|{{zzyyx0//..--, !ijjkkllm|{{zzyyx0//..--, !ijjkkllm|{{zzyyx0//..--, !ijjkkllm|{{zzyyx0//..--, !ijjkkllm|{{zzyyx0//..--, !ijjkkllmrqqppoonHIIJJKKL87766554ffgghhii~~}}||33221100ffgghhii~~}}||33221100ffgghhii~~}}||33221100ffgghhii~~}}||33221100ffgghhii~~}}||33221100ffgghhiizzyyssrrEEFFGGHH@@??>>== iijjkkllrrqqppooPPQQRRSS00//..--())**++,tuuvvwwxqppoonnm%$$##""!())**++,tuuvvwwxqppoonnm%$$##""!())**++,tuuvvwwxqppoonnm%$$##""!())**++,tuuvvwwxqppoonnm%$$##""!())**++,tuuvvwwxqppoonnm%$$##""!())**++,tuuvvwwxgffeeddc - - STTUUVVW~~}}-,,++**)%%&&''((qqrrssttttssrrqq((''&&%%%%&&''((qqrrssttttssrrqq((''&&%%%%&&''((qqrrssttttssrrqq((''&&%%%%&&''((qqrrssttttssrrqq((''&&%%%%&&''((qqrrssttttssrrqq((''&&%%%%&&''((qqrrssttjjiihhgg PPQQRRSS00//..--!""##$$%mnnooppqxwwvvuut,++**))(!""##$$%mnnooppqxwwvvuut,++**))(!""##$$%mnnooppqxwwvvuut,++**))(!""##$$%mnnooppqxwwvvuut,++**))(!""##$$%mnnooppqxwwvvuut,++**))(!""##$$%mnnooppqnmmllkkjLMMNNOOP43322110 !!jjkkllmm{{zzyyxx//..--,, !!jjkkllmm{{zzyyxx//..--,, !!jjkkllmm{{zzyyxx//..--,, !!jjkkllmm{{zzyyxx//..--,, !!jjkkllmm{{zzyyxx//..--,, !!jjkkllmmqqppoonnIIJJKKLL<<;;::99!!""##$$mmnnooppnnmmllkkTTUUVVWW~~}}|,,++**)),--..//0xyyzz{{|mllkkjji! ,--..//0xyyzz{{|mllkkjji! ,--..//0xyyzz{{|mllkkjji! ,--..//0xyyzz{{|mllkkjji! ,--..//0xyyzz{{|mllkkjji! ,--..//0xyyzz{{|cbbaa``_W]]^^__`||{{zzyy)((''&&%))**++,,uuvvwwxxppoonnmm$$##""!!))**++,,uuvvwwxxppoonnmm$$##""!!))**++,,uuvvwwxxppoonnmm$$##""!!))**++,,uuvvwwxxppoonnmm$$##""!!))**++,,uuvvwwxxppoonnmm$$##""!!))**++,,uuvvwwxxffeeddcc - - TTUUVVWW~~}}|,,++**))%&&''(()qrrssttutssrrqqp(''&&%%$%&&''(()qrrssttutssrrqqp(''&&%%$%&&''(()qrrssttutssrrqqp(''&&%%$%&&''(()qrrssttutssrrqqp(''&&%%$%&&''(()qrrssttutssrrqqp(''&&%%$%&&''(()qrrssttujiihhggf PQQRRSST0//..--,""##$$%%nnooppqqwwvvuutt++**))((""##$$%%nnooppqqwwvvuutt++**))((""##$$%%nnooppqqwwvvuutt++**))((""##$$%%nnooppqqwwvvuutt++**))((""##$$%%nnooppqqwwvvuutt++**))((""##$$%%nnooppqqmmllkkjjMMNNOOPP88776655%%&&''((qqrrssttjjiihhgg ]]^^__``|{{zzyyx((''&&%%01122334|}}~~ihhggffe01122334|}}~~ihhggffe01122334|}}~~ihhggffe01122334|}}~~ihhggffe01122334|}}~~ihhggffe01122334|}}~~_^^]]WWV `aabbccdxwvutssr%$#"! --..//00yyzz{{||llkkjjii --..//00yyzz{{||llkkjjii --..//00yyzz{{||llkkjjii --..//00yyzz{{||llkkjjii --..//00yyzz{{||llkkjjii --..//00yyzz{{||bbaa``__]]^^__``|{{zzyyx((''&&%%)**++,,-uvvwwxxypoonnmml$##""!! )**++,,-uvvwwxxypoonnmml$##""!! )**++,,-uvvwwxxypoonnmml$##""!! )**++,,-uvvwwxxypoonnmml$##""!! )**++,,-uvvwwxxypoonnmml$##""!! )**++,,-uvvwwxxyfeeddccb - - TUUVVWW]~~}}||,++**))(&&''(())rrssttuussrrqqpp''&&%%$$&&''(())rrssttuussrrqqpp''&&%%$$&&''(())rrssttuussrrqqpp''&&%%$$&&''(())rrssttuussrrqqpp''&&%%$$&&''(())rrssttuussrrqqpp''&&%%$$&&''(())rrssttuuiihhggff QQRRSSTT~~}}44332211))**++,,uuvvwwxxffeeddcc - - aabbccddwvutssrr$#"! 45566778eddccbba45566778eddccbba45566778eddccbba45566778eddccbba45566778eddccbba45566778VUUTTSSR - - deeffgghrqqppoon11223344}}~~hhggffee11223344}}~~hhggffee11223344}}~~hhggffee11223344}}~~hhggffee11223344}}~~hhggffee11223344}}~~^^]]WWVV aabbccddwvutssrr$#"! -..//001yzz{{||}lkkjjiih -..//001yzz{{||}lkkjjiih -..//001yzz{{||}lkkjjiih -..//001yzz{{||}lkkjjiih -..//001yzz{{||}lkkjjiih -..//001yzz{{||}baa``__^]^^__``a{{zzyyxw(''&&%%$**++,,--vvwwxxyyoonnmmll##""!! **++,,--vvwwxxyyoonnmmll##""!! **++,,--vvwwxxyyoonnmmll##""!! **++,,--vvwwxxyyoonnmmll##""!! **++,,--vvwwxxyyoonnmmll##""!! **++,,--vvwwxxyyeeddccbb - - UUVVWW]]||{{zzyy00//..----..//00yyzz{{||bbaa``__ - - eeffgghhqqppoonn899::;;>??@]\\[[ZZY <==>>??@]\\[[ZZY <==>>??@]\\[[ZZY <==>>??@]\\[[ZZY <==>>??@]\\[[ZZY <==>>??@NMMLLKKJlmmnnoopjiihhggf99::;;<<``__^^]]99::;;<<``__^^]]99::;;<<``__^^]]99::;;<<``__^^]]99::;;<<``__^^]]99::;;<>??@@\\[[ZZYY ==>>??@@\\[[ZZYY ==>>??@@\\[[ZZYY ==>>??@@\\[[ZZYY ==>>??@@\\[[ZZYY ==>>??@@MMLLKKJJmmnnooppiihhggff9::;;<<=`__^^]]\9::;;<<=`__^^]]\9::;;<<=`__^^]]\9::;;<<=`__^^]]\9::;;<<=`__^^]]\9::;;<<=QPPOONNMijjkkllmmllkkjji66778899ccbbaa``66778899ccbbaa``66778899ccbbaa``66778899ccbbaa``66778899ccbbaa``66778899TTSSRRQQ ffgghhiippoonnmm$$##""!!99::;;<>??@@A\[[ZZYYX =>>??@@A\[[ZZYYX =>>??@@A\[[ZZYYX =>>??@@A\[[ZZYYX =>>??@@A\[[ZZYYX =>>??@@AMLLKKJJImnnooppqihhggffe::;;<<==__^^]]\\::;;<<==__^^]]\\::;;<<==__^^]]\\::;;<<==__^^]]\\::;;<<==__^^]]\\::;;<<==PPOONNMMjjkkllmmllkkjjii ==>>??@@MMLLKKJJzz{{||}}aa``__^^ -HIIJJKKLQPPOONNMHIIJJKKLQPPOONNMHIIJJKKLQPPOONNMHIIJJKKLQPPOONNMHIIJJKKLQPPOONNMHIIJJKKLBAA;;::9%%&}~~^]]\[ZYX - - EEFFGGHHTTSSRRQQEEFFGGHHTTSSRRQQEEFFGGHHTTSSRRQQEEFFGGHHTTSSRRQQEEFFGGHHTTSSRRQQEEFFGGHHEEDDCCBBzz{{||}}aa``__^^ -ABBCCDDEXWWVVUUT - - ABBCCDDEXWWVVUUT - - ABBCCDDEXWWVVUUT - - ABBCCDDEXWWVVUUT - - ABBCCDDEXWWVVUUT - - ABBCCDDEIHHGGFFEqrrssyyzeddccbba>>??@@AA[[ZZYYXX >>??@@AA[[ZZYYXX >>??@@AA[[ZZYYXX >>??@@AA[[ZZYYXX >>??@@AA[[ZZYYXX >>??@@AALLKKJJIInnooppqqhhggffeeAABBCCDDIIHHGGFF%%&&~~]]\[ZYXW - LMMNNOOPMLLKKJJILMMNNOOPMLLKKJJILMMNNOOPMLLKKJJILMMNNOOPMLLKKJJILMMNNOOPMLLKKJJILMMNNOOP98877665&''(())*WWVVUUTTIIJJKKLLPPOONNMMIIJJKKLLPPOONNMMIIJJKKLLPPOONNMMIIJJKKLLPPOONNMMIIJJKKLLPPOONNMMIIJJKKLLAA;;::99%%&&~~]]\[ZYXW - EFFGGHHITSSRRQQPEFFGGHHITSSRRQQPEFFGGHHITSSRRQQPEFFGGHHITSSRRQQPEFFGGHHITSSRRQQPEFFGGHHIEDDCCBBAz{{||}}~a``__^^] - -BBCCDDEEWWVVUUTT - - BBCCDDEEWWVVUUTT - - BBCCDDEEWWVVUUTT - - BBCCDDEEWWVVUUTT - - BBCCDDEEWWVVUUTT - - BBCCDDEEHHGGFFEErrssyyzzddccbbaaEEFFGGHHEEDDCCBB''(())**WVVUUTTSPQQRRSSTIHHGGFFEPQQRRSSTIHHGGFFEPQQRRSSTIHHGGFFEPQQRRSSTIHHGGFFEPQQRRSSTIHHGGFFEPQQRRSST54433221*++,,--.SSRRQQPPMMNNOOPPLLKKJJIIMMNNOOPPLLKKJJIIMMNNOOPPLLKKJJIIMMNNOOPPLLKKJJIIMMNNOOPPLLKKJJIIMMNNOOPP88776655''(())**WVVUUTTSIJJKKLLMPOONNMMLIJJKKLLMPOONNMMLIJJKKLLMPOONNMMLIJJKKLLMPOONNMMLIJJKKLLMPOONNMMLIJJKKLLMA;;::998%%&&'~]\[ZYXWW FFGGHHIISSRRQQPPFFGGHHIISSRRQQPPFFGGHHIISSRRQQPPFFGGHHIISSRRQQPPFFGGHHIISSRRQQPPFFGGHHIIDDCCBBAA{{||}}~~``__^^]]IIJJKKLLAA;;::99++,,--..SRRQQPPO - - TUUVVWWXEDDCCBBA - - TUUVVWWXEDDCCBBA - - TUUVVWWXEDDCCBBA - - TUUVVWWXEDDCCBBA - - TUUVVWWXEDDCCBBA - - TUUVVWWX100//..-.//00112OONNMMLLQQRRSSTTHHGGFFEEQQRRSSTTHHGGFFEEQQRRSSTTHHGGFFEEQQRRSSTTHHGGFFEEQQRRSSTTHHGGFFEEQQRRSSTT44332211++,,--..SRRQQPPOMNNOOPPQLKKJJIIHMNNOOPPQLKKJJIIHMNNOOPPQLKKJJIIHMNNOOPPQLKKJJIIHMNNOOPPQLKKJJIIHMNNOOPPQ87766554'(())**+VVUUTTSSJJKKLLMMOONNMMLLJJKKLLMMOONNMMLLJJKKLLMMOONNMMLLJJKKLLMMOONNMMLLJJKKLLMMOONNMMLLJJKKLLMM;;::9988%%&&''\\[[ZZYY MMNNOOPP88776655//001122ONNMMLLK XYYZZ[[\A@@??>>= XYYZZ[[\A@@??>>= XYYZZ[[\A@@??>>= XYYZZ[[\A@@??>>= XYYZZ[[\A@@??>>= XYYZZ[[\-,,++**)23344556KKJJIIHH - - UUVVWWXXDDCCBBAA - - UUVVWWXXDDCCBBAA - - UUVVWWXXDDCCBBAA - - UUVVWWXXDDCCBBAA - - UUVVWWXXDDCCBBAA - - UUVVWWXX00//..--//001122ONNMMLLK QRRSSTTUHGGFFEED QRRSSTTUHGGFFEED QRRSSTTUHGGFFEED QRRSSTTUHGGFFEED QRRSSTTUHGGFFEED QRRSSTTU43322110+,,--../RRQQPPOONNOOPPQQKKJJIIHHNNOOPPQQKKJJIIHHNNOOPPQQKKJJIIHHNNOOPPQQKKJJIIHHNNOOPPQQKKJJIIHHNNOOPPQQ77665544(())**++XXWWVVUU - - QQRRSSTT4433221133445566KJJIIHHG\]]^^__`=<<;;::9\]]^^__`=<<;;::9\]]^^__`=<<;;::9\]]^^__`=<<;;::9\]]^^__`=<<;;::9\]]^^__`)((''&&%6778899:GGFFEEDD YYZZ[[\\@@??>>== YYZZ[[\\@@??>>== YYZZ[[\\@@??>>== YYZZ[[\\@@??>>== YYZZ[[\\@@??>>== YYZZ[[\\,,++**))33445566KJJIIHHG - - UVVWWXXYDCCBBAA@ - - UVVWWXXYDCCBBAA@ - - UVVWWXXYDCCBBAA@ - - UVVWWXXYDCCBBAA@ - - UVVWWXXYDCCBBAA@ - - UVVWWXXY0//..--,/0011223NNMMLLKK RRSSTTUUGGFFEEDD RRSSTTUUGGFFEEDD RRSSTTUUGGFFEEDD RRSSTTUUGGFFEEDD RRSSTTUUGGFFEEDD RRSSTTUU33221100,,--..//TTSSRRQQ - - UUVVWWXX00//..--778899::GFFEEDDC`aabbccd98877665`aabbccd98877665`aabbccd98877665`aabbccd98877665`aabbccd98877665`aabbccd~~}}|%:;;AABBCCCBBAA@?]]^^__``<<;;::99]]^^__``<<;;::99]]^^__``<<;;::99]]^^__``<<;;::99]]^^__``<<;;::99]]^^__``((''&&%%778899::GFFEEDDC YZZ[[\\]@??>>==< YZZ[[\\]@??>>==< YZZ[[\\]@??>>==< YZZ[[\\]@??>>==< YZZ[[\\]@??>>==< YZZ[[\\],++**))(34455667JJIIHHGG - - VVWWXXYYCCBBAA@@ - - VVWWXXYYCCBBAA@@ - - VVWWXXYYCCBBAA@@ - - VVWWXXYYCCBBAA@@ - - VVWWXXYYCCBBAA@@ - - VVWWXXYY//..--,,00112233PPOONNMM YYZZ[[\\,,++**));;AABBCCCBBAA@?>deeffggh~~}54433221deeffggh~~}54433221deeffggh~~}54433221deeffggh~~}54433221deeffggh~~}54433221deeffggh|{{zzyysCDDEEFFG>=<;;::9aabbccdd88776655aabbccdd88776655aabbccdd88776655aabbccdd88776655aabbccdd88776655aabbccdd~~}}||;;AABBCCCBBAA@?>]^^__``a<;;::998]^^__``a<;;::998]^^__``a<;;::998]^^__``a<;;::998]^^__``a<;;::998]^^__``a(''&&%%78899::;FFEEDDCCZZ[[\\]]??>>==<<ZZ[[\\]]??>>==<<ZZ[[\\]]??>>==<<ZZ[[\\]]??>>==<<ZZ[[\\]]??>>==<<ZZ[[\\]]++**))((44556677~~}}||{++**))((&''(())*rssttuuvsrrqqppo'&&%%$$#&''(())*rssttuuvsrrqqppo'&&%%$$#&''(())*rssttuuvsrrqqppo'&&%%$$#&''(())*rssttuuvsrrqqppo'&&%%$$#&''(())*rssttuuvsrrqqppo'&&%%$$#&''(())*rssttuuvfeeddccb - - -abbccddeihhggffe@AABBCCD{zzyyxwv''&&%%$#*++,,--.vwwxxyyzonnmmllk#""!! *++,,--.vwwxxyyzonnmmllk#""!! *++,,--.vwwxxyyzonnmmllk#""!! *++,,--.vwwxxyyzonnmmllk#""!! *++,,--.vwwxxyyzonnmmllk#""!! *++,,--.vwwxxyyzbaa``__^ - effgghhieddccbbaDEEFFGGHutssrrqq"! .//00112z{{||}}~kjjiihhg.//00112z{{||}}~kjjiihhg.//00112z{{||}}~kjjiihhg.//00112z{{||}}~kjjiihhg.//00112z{{||}}~kjjiihhg.//00112z{{||}}~^]]WWVVUijjkkllma``__^^]HIIJJKKLppoonnmm23344556~gffeeddc23344556~gffeeddc23344556~gffeeddc23344556~gffeeddc23344556~gffeeddc23344556~UTTSSRRQmnnooppq]\\[[ZZY LMMNNOOPllkkjjii6778899:cbbaa``_6778899:cbbaa``_6778899:cbbaa``_6778899:cbbaa``_6778899:cbbaa``_6778899:QPPOONNMqrrssyyzYXXWWVVU - - PQQRRSSThhggffee:;;<<==>_^^]]\\[:;;<<==>_^^]]\\[:;;<<==>_^^]]\\[:;;<<==>_^^]]\\[:;;<<==>_^^]]\\[:;;<<==>MLLKKJJIz{{||}}~UTTSSRRQ - - TUUVVWWXddccbbaa >??@@AAB[ZZYYXXW >??@@AAB[ZZYYXXW >??@@AAB[ZZYYXXW >??@@AAB[ZZYYXXW >??@@AAB[ZZYYXXW >??@@AABIHHGGFFE%%&&'~QPPOONNM XYYZZ[[\``__^^]] - - BCCDDEEFWVVUUTTS - - BCCDDEEFWVVUUTTS - - BCCDDEEFWVVUUTTS - - BCCDDEEFWVVUUTTS - - BCCDDEEFWVVUUTTS - - BCCDDEEFEDDCCBBA'(())**+MLLKKJJI\]]^^__`\[ZYXWWV FGGHHIIJSRRQQPPOFGGHHIIJSRRQQPPOFGGHHIIJSRRQQPPOFGGHHIIJSRRQQPPOFGGHHIIJSRRQQPPOFGGHHIIJA;;::998+,,--../IHHGGFFE`aabbccdVUUTTSSRJKKLLMMNONNMMLLKJKKLLMMNONNMMLLKJKKLLMMNONNMMLLKJKKLLMMNONNMMLLKJKKLLMMNONNMMLLKJKKLLMMN87766554/0011223EDDCCBBAdeeffgghRQQPPOONNOOPPQQRKJJIIHHGNOOPPQQRKJJIIHHGNOOPPQQRKJJIIHHGNOOPPQQRKJJIIHHGNOOPPQQRKJJIIHHGNOOPPQQR4332211034455667A@@??>>= hiijjkklNMMLLKKJ -RSSTTUUVGFFEEDDC -RSSTTUUVGFFEEDDC -RSSTTUUVGFFEEDDC -RSSTTUUVGFFEEDDC -RSSTTUUVGFFEEDDC -RSSTTUUV0//..--,78899::;=<<;;::9 !!""##$lmmnnoopJIIHHGGF - VWWXXYYZCBBAA@@? - VWWXXYYZCBBAA@@? - VWWXXYYZCBBAA@@? - VWWXXYYZCBBAA@@? - VWWXXYYZCBBAA@@? - VWWXXYYZ,++**))(;AABBCCD98877665$%%&&''(pqqrrsstFEEDDCCBZ[[\\]]^?>>==<<;Z[[\\]]^?>>==<<;Z[[\\]]^?>>==<<;Z[[\\]]^?>>==<<;Z[[\\]]^?>>==<<;Z[[\\]]^(''&&%%DEEFFGGH~~}54433221())**++,tuuvvwwxBAA@?>=<^__``aab;::99887^__``aab;::99887^__``aab;::99887^__``aab;::99887^__``aab;::99887^__``aab~~}}||{HIIJJKKL}||{{zzy100//..-,--..//0xyyzz{{|;;::9988bccddeef76655443bccddeef76655443bccddeef76655443bccddeef76655443bccddeef76655443bccddeef{zzyyssrLMMNNOOPyxxwwvvu-,,++**)01122334|}}~~77665544fgghhiij~~}}||{3221100/fgghhiij~~}}||{3221100/fgghhiij~~}}||{3221100/fgghhiij~~}}||{3221100/fgghhiij~~}}||{3221100/fgghhiijrqqppoonPQQRRSSTuttssrrq)((''&&%4556677833221100 !!"jkkllmmn{zzyyxxw/..--,,+ !!"jkkllmmn{zzyyxxw/..--,,+ !!"jkkllmmn{zzyyxxw/..--,,+ !!"jkkllmmn{zzyyxxw/..--,,+ !!"jkkllmmn{zzyyxxw/..--,,+ !!"jkkllmmnnmmllkkjTUUVVWW]qppoonnm%$$##""!899::;;>??@ZHAbے`JXQtArd|ZdQbXv`ffpvZp˂bdQZ|bdQZ|fH~f`vXے`JXQr˂pJtArd|ZdQfpvnXv`bHAZp˂AJltbdQZ|fH~f`vXے`JXQr˂pJtArd|ZdQfpvnXv`bHAZp˂rtAJlbdQZ|nvpZHAbZHAbtlJtArdf~HfpvXQJ`ےbHAZdrtAJltvpfH~fZHAbے`JXQtlJtArdf~HfpvXQJ`ےbHAZdrtAJltvpfH~f`JXQHA`JXQr|ZdQnXv`˅nXv`˂rXQJ`ےbdQZ|drtAvXnvpfHr˂pZHAbہZdQbtlJtnXv`f~H˂rXQJ`ےbdQZ|drtAvXnvpfHr˂pZHAbہZdQbtlJt~Hfp~HfpbHArtAJbrtAJ~f`vXn`JXQr˂pZrd|ZdQbtpvnXv`fbHAZp˂rXQltbdQZ|~f`vXn`JXQr˂pZrd|ZdQbtpvnXv`fbHAZp˂rXQZ|dltdf`vXے`JXQr˂p|ZdQbtlJ~Hf~HfrXQJ`drtAdrtAf`vXnvpQr˂pZHAb|ZdQbtlnXv`f~HZp˂rXQJ`ۉbdQZ|drtf`vXnvpQr˂pZHAb|ZdQbtlnXv`f~HZp˂rXQJ`ۑtbddrtAfH~ے`JXQے`JXtArd|ZdQbfpvnXv`bHAZp˂rJltbdQZ|H~f`vXnے`JXQr˂ptArd|ZdQbfpvnXv`bHAZp˂rJltbdQZ|H~f`vXnbے`˂pZbtlf~Hf~HQJ`ےbHAZpdrtAJltvpfH~f`ZHAbے`JXQlJtArd|f~HfpvQJ`ےbHAZpdrtAJltvpfH~f`ZHAbے`JXQlJtArd|vvnXZp˂dQZ|bdQZ|vXnvpfH˂pZHAbےZdQbtlJtAXv`f~Hf˂rXQJ`ےdQZ|drtAJvXnvpfH˂pZHAbےZdQbtlJtAXv`f~Hf˂rXQJ`ےrtAJlrtAJlH~fr˂pZHAbtlJtArdpvpvnےbHAJltJltnvpfH~ˑZHAbے`JXbtlJtArdf~HfpvrXQJ`ےbHAdrtAJltnvpfH~ˑZHAbے`JXbtlJtArdf~HfpvrXQJ`ےbHAQZ|dJltf`vXr˂pQr˂p|ZdQbtlJnXv`f~Hp˂rXQJ`ےbdQZ|drtA`vXnvpfr˂pZHAb|ZdQbtlJnXv`f~Hp˂rXQJ`ےbdQZ|drtA`vXnvpfJXQrHAbےJtArdfpvfpvbHAZp˂rXJltbdQZ|~f`vXn`JXQr˂pArd|ZdQbtfpvnXv`˙bHAZp˂rXJltbdQZ|~f`vXn`JXQr˂pArd|ZdQbt~Hfpەv`frXQJ`drtAJdrtAvpfH~f`HAbے`JXQrlJtArd|~HfpvnJ`ےbHAZpdrtAJltbvpfH~f`HAbے`JXQrlJtArd|~HfpvnJ`ےbHAZptdrtbdQ`vXnZHAbے`JXQtArd|ZdQb~HfpXv`fZp˂bdQZ|bdQZ|fH~f`vXے`JXQr˂pJtArd|ZdQfpvnXv`bHAZp˂AJltbdQZ|fH~f`vXے`JXQr˂pJtArd|ZdQfpvnXv`bHAZp˂rtAJlbdQZ|lnvpZHAbZHAbtlJtArdf~HfpvXQJ`ےbHAZdrtAJltvpfH~fZHAbے`JXQtlJtArdf~HfpvXQJ`ےbHAZdrtAJltvpfH~f˂pZHA`JXQr|ZdQnXv`nXv`˂rXQJ`ےbdQZ|drtAvXnvpfHr˂pZHAbہZdQbtlJtnXv`f~H˂rXQJ`ےbdQZ|drtAvXnvpfHr˂pZHAbہZdQbtlJtvnX~HfpbHAltbJlt~f`vXn`JXQr˂pZrd|ZdQbtpvnXv`fbHAZp˂rXQltbdQZ|~f`vXn`JXQr˂pZrd|ZdQbtpvnXv`fbHAZp˂rXQtAJlZ|dvpfے`JXQr˂p|ZdQbtlJvnX~HfrXQJ`drtAdrtAf`vXnvpQr˂pZHAb|ZdQbtlnXv`f~HZp˂rXQJ`ۉbdQZ|drtf`vXnvpQr˂pZHAb|ZdQbtlnXv`f~HZp˂rXQJ`ۑtbdtb`vXے`JXQے`JXtArd|ZdQbfpvnXv`bHAZp˂rJltbdQZ|H~f`vXnے`JXQr˂ptArd|ZdQbfpvnXv`bHAZp˂rJltbdQZ|H~f`vXnbے`˂p`btlf~Hf~HQJ`ےbHAZpdrtAJltvpfH~f`ZHAbے`JXQlJtArd|f~HfpvQJ`ےbHAZpdrtAJltvpfH~f`ZHAbے`JXQlJtArd|v`fvnXZp˂dQZ|bdQZ|vXnvpfH˂pZHAbےZdQbtlJtAXv`f~Hf˂rXQJ`ےdQZ|drtAJvXnvpfH˂pZHAbےZdQbtlJtAXv`f~Hf˂rXQJ`ےtbdQZrtAJlH~fr˂pZHAbtlJtArdv`fpvnp˂rJltbJltnvpfH~ˑZHAbے`JXbtlJtArdf~HfpvrXQJ`ےbHAdrtAJltnvpfH~ˑZHAbے`JXbtlJtArdf~HfpvrXQJ`ےbHAQZ|lnvp`nvprZHAQrZHA|ZdQbtlJnXv`f~Hp˂rXQJ`ےbdQZ|drtA`vXnvpfr˂pZHAb|ZdQbtlJnXv`f~Hp˂rXQJ`ےbdQZ|drtA`vXnvpfJXQrJXQrb|ZdQbfpvnfpvbHAZp˂rXJltbdQZ|~f`vXn`JXQr˂pArd|ZdQbtfpvnXv`˙bHAZp˂rXJltbdQZ|~f`vXn`JXQr˂pArd|ZdQbt~Hfpەv`prXQJ`pdrtAJdrtAvpfH~f`HAbے`JXQrlJtArd|~HfpvnJ`ےbHAZpdrtAJltbvpfH~f`HAbے`JXQrlJtArd|~HfpvnJ`ےbHAZp|drtbdQ`vXnZHAbے`JXQtArd|ZdQb~HfpXv`pXQJ`ےQZdrbQZdfH~f`vXے`JXQr˂pJtArd|ZdQfpvnXv`bHAZp˂AJltbdQZ|fH~f`vXے`JXQr˂pJtArd|ZdQfpvnXv`bHAZp˂tbdQvXnfH~bے`bے`tlJtArdf~HfpvXQJ`ےbHAZdrtAJltvpfH~fZHAbے`JXQtlJtArdf~HfpvXQJ`ےbHAZdrtAJltvpfH~f˂p`Jtl|tlJvf~nvf˂rXQJ`ےbdQZ|drtAvXnvpfHr˂pZHAbہZdQbtlJtnXv`f~H˂rXQJ`ےbdQZ|drtAvXnvpfHr˂pZHAbہZdQbtlJtvnXvnrX˂rXltbQJltb~f`vXn`JXQr˂pZrd|ZdQbtpvnXv`fbHAZp˂rXQltbdQZ|~f`vXn`JXQr˂pZrd|ZdQbtpvnXv`fbHAZp˂rXQtAJlZ|l璀vp`ے`JXQr˂p|ZdQbtlJvnX˂rXQbHAZtAJlrtAJlf`vXnvpQr˂pZHAb|ZdQbtlnXv`f~HZp˂rXQJ`ۉbdQZ|drtf`vXnvpQr˂pZHAb|ZdQbtlnXv`f~HZp˂rXQJ`Z|dvpfHf`vXJXQrJXQrtArd|ZdQbfpvnXv`bHAZp˂rJltbdQZ|H~f`vXnے`JXQr˂ptArd|ZdQbfpvnXv`bHAZp˂rJltbdQZ|H~f`vXnXQr˂ZdQbttArdHfpv~HfpQJ`ےbHAZpdrtAJltvpfH~f`ZHAbے`JXQlJtArd|f~HfpvQJ`ےbHAZpdrtAJltvpfH~f`ZHAbے`JXQlJtArd|v`pvQJ`pQJ`ےZdrtQZdrvXnvpfH˂pZHAbےZdQbtlJtAXv`f~Hf˂rXQJ`ےdQZ|drtAJvXnvpfH˂pZHAbےZdQbtlJtAXv`f~Hf˂rXQJ`ےtbdQZtbnvXnr˂pZHAbtlJtArdv`pvJ`ےp˂rtbdQZtbdQnvpfH~ˑZHAbے`JXbtlJtArdf~HfpvrXQJ`ےbHAdrtAJltnvpfH~ˑZHAbے`JXbtlJtArdf~HfpvrXQJ`ےbHArtAJl~f`nvppZHA˂pZHA|ZdQbtlJnXv`f~Hp˂rXQJ`ےbdQZ|drtA`vXnvpfr˂pZHAb|ZdQbtlJnXv`f~Hp˂rXQJ`ےbdQZ|drtA`vXnvpfpZHAblJtA|ZdQbnXvvnXbHAZp˂rXJltbdQZ|~f`vXn`JXQr˂pArd|ZdQbtfpvnXv`˙bHAZp˂rXJltbdQZ|~f`vXn`JXQr˂pArd|ZdQbtnXv`rXQbHAZpAJlttAJlvpfH~f`HAbے`JXQrlJtArd|~HfpvnJ`ےbHAZpdrtAJltbvpfH~f`HAbے`JXQrlJtArd|~HfpvnJ`ےbHAZp|ltvp`vvpfHZHAbے`JXQtArd|ZdQbnXvbHAZpXQJ`ے|drZ|dfH~f`vXے`JXQr˂pJtArd|ZdQfpvnXv`bHAZp˂AJltbdQZ|fH~f`vXے`JXQr˂pJtArd|ZdQfpvnXv`bHAZp˂tbdQvXnfH~bے`bے`tlJtArdf~HfpvXQJ`ےbHAZdrtAJltvpfH~fZHAbے`JXQtlJtArdf~HfpvXQJ`ےbHAZdrtAJltvpfH~fے`Jrd|tlJ`f~v`f˂rXQJ`ےbdQZ|drtAvXnvpfHr˂pZHAbہZdQbtlJtnXv`f~H˂rXQJ`ےbdQZ|drtAvXnvpfHr˂pZHAbہZdQbtlJtf~HJ`ے˂rXbdQZ|tbdQZ~f`vXn`JXQr˂pZrd|ZdQbtpvnXv`fbHAZp˂rXQltbdQZ|~f`vXn`JXQr˂pZrd|ZdQbtpvnXv`fbHAZp˂rXQbdQZ|Xnv~f`ے`JXQr˂p|ZdQbtlJ`f~˂rXQbHAXQtAJlrtAJlf`vXnvpQr˂pZHAۂ|ZdQbtlnXv`fHZp˂rXQJ`ۉbdQZ|dtAf`vXnvpQr˂pZHAۂ|ZdQbtlnXv`fHZp˂rXQJ`Z|dvpfHvpfHJXQrJXQrtArd|ZdQbfpvnXv`bHAZp˂rJltbdQZ|H~f`vXnے`JXQr˂ptArd|ZdQbfpvnXv`bHAZp˂rJltbdQZ|H~f`vXnXQr˂ZdQbttArdtHfpv~HfpQJ`ےbHAZpdrtAJltvpfH~f`ZHAbے`JXQlJtArd|f~HfpvQJ`ےbHAZpdrtAJltvpfH~f`ZHAbے`JXQlJtArd|fpvbHAZpQJ`ےdrt|drvXnvpfH˂pZHAbےZdQbtlJtAXv`f~Hf˂rXQJ`ےdQZ|drtAJvXnvpfH˂pZHAbےZdQbtlJtAXv`f~Hf˂rXQJ`ےdrtApfH~vXnr˂pZHAbtlJtArdHfpvJ`ےJ`ےtbdQZtbdQnvpfH~ˑZHAb`JXQbtlJtArdf~HfpvrXQJ`ےbHAdrtJltnvpfH~ˑZHAb`JXQbtlJtArdf~HfpvrXQJ`ےbHArtAdQZ|~ۅ~f`pZAb˂pZA|ZdQbtlJnXv`fHfp˂rXQJ`ےbdQZ|dtAJ`vXnvpfr˂pZHAے|ZdQbtlJnXv`fHfp˂rXQJ`ےbdQZ|dtAJ`vXnvpfpZHAblJtAlJtAnXvvnXbHAZp˂rXJltbdQZ|~f`vXn`JXQr˂pArd|ZdQbtfpvnXv`˙bHAZp˂rXJltbdQZ|~f`vXn`JXQr˂pArd|ZdQbtnXv`rXQbHAXQAJlttAJlvpfH~f`HAbے`JXQrlJtArd|~HfpvnJ`ےbHAZpdrtAJltbvpfH~f`HAbے`JXQrlJtArd|~HfpvnJ`ےbHAZpJltf`vvpfHZHAbے`JXQtArd|ZdQbnXvbHAXQJbHAZp|rAJlZ|dnfH~fZHAbے`JXrbtlJtArdf~HfpvnrXQJ`bHAZdrtAJltbnvpfH~fZHAbے`JXrbtlJtArdf~HfpvnrXQJ`bHAZdrtdrtvpfHvXn`JXQr`JXQrtlJtArdf~HpvnXQJ`ےbHAZdrtAltbvpfH~fZHAb`JXQrtlJtArdf~HpvnXQJ`ےbHAZdrtAltbvpfH~f˂prdtrd|`f~fpv`ffp˂rXQJ`ےbdQZ|dtAJlvXnvpfHr˂pZHAے`ZdQbtlJtnXv`fHfp˂rXQJ`ےbdQZ|dtAJlvXnvpfHr˂pZHAے`ZdQbtlJtf~HJ`ےJ`ےbdQZ|tbdQZ~f`vXn`JXQr˂pZrd|ZdQbtpvnXv`fbHAZp˂rXQltbdQZ|~f`vXn`JXQr˂pZrd|ZdQbtpvnXv`fbHAZp˂rXQbdQZ|Xnv~vے`JXQr˂p|ZdQbtlJ`f~`ےb˂rXQtbdvff`vXے`JXQr˂pJtAd|ZdQfpvnXv`ےHAZp˂AJltbdQZ|fHf`vXے`JXQr˂pJtAd|ZdQfpvnXv`ےHAZp˂AdQZ|AJlt~f`vpfH˂pZbtltArdf~HfpvrXQJ`bHAZdrtAJltnvpH~fZHAbے`JXQbtltArdf~HfpvrXQJ`bHAZdrtAJltnvpH~fZHAbZHAblJtArZdQbtvnXvnQJ`ےbHAZdrtAtbvpfH~fZHAbہJXQrlJtArdf~HvnQJ`ےbHAZdrtAtbvpfH~fZHAbہJXQrlJtArd˅Xv`bHAXQJ`bHAZpˁrAJl|AJlvXnvpfH˂pZHAے`ZdQbtlJtAXv`fHfp˂rXQJ`ےdQZ|dtAJlvXnvpfH˂pZHAے`ZdQbtlJtAXv`fHfp˂rXQJ`ےdrtApfH~pfH~fZHAbr˂pZHAbtlJtArdHXv`HAZp˂J`ےQZ|df`vXnvpQr˂pZHAb|ZdQbtlnXv`f~HZp˂rXQJ`ۉbdQZ|drtf`vXnvpQr˂pZHAb|ZdQbtlnXv`f~HZp˂rXQJ`ۂdrtAbdQZ|vXnۅ~f`HAbےJtAd|ZdQbfpvnXv`ےHAZp˂rJltbdQZ|fHf`vXnے`JXQr˂pJtAd|ZdQbfpvnXv`ےHAZp˂rJltbdQZ|fHf`vXn˂pZے`JXQd|ZlJtAv`frXQJ`ۙbHAZpdrtAJltnvp~f`ZHAbے`JXQbtlArd|f~HfpvrXQJ`ۙbHAZpdrtAJltnvp~f`ZHAbے`JXQbtlArd|f~HXf~HےbHrXQtbdQtbnvpfH~fZHAbےJXQrblJtArdf~HfvnrJ`ےbHAZdrtAJtbnvpfH~fZHAbےJXQrblJtArdf~HfvnrJ`ےbHAZdQZ|vpf`vJQrZHAbے`JXQtArdf~Hf~HrXQJbHAZprtAJlnvpfH~ˑZHAbے`JXbtlJtArdf~HfpvrXQJ`ےbHAdrtAJltnvpfH~ˑZHAbے`JXbtlJtArdf~HfpvrXQJ`ےbHAJltdrtvpfHvXH`JXQr|ZdQbtlJnXv`f~Hp˂rXQJ`ےbdQZ|drtA`vXnvpfr˂pZHAb|ZdQbtlJnXv`f~Hp˂rXQJ`ےbdQZ|drtA`vXnvpfHAbےr˂pdQbtrd|~HfpHAZp˂rXJltbdQZ|fHf`vXn`JXQr˂pJtAd|ZdQbtfpvnXv`˒HAZp˂rXJltbdQZ|fHf`vXn`JXQr˂pJtAd|ZdQbtv`ffpvAZp˂J`ےZ|dvpf~f`HAbے`JXQrtlJrd|~HfpvnXQJ`ےbHAZpdrtAJltbvpf~f`HAbے`JXQrtlJrd|~HfpvnXQJ`ےbHAZpdrtAdQdrtAJfH~Xnv˂pZHے`JXQr˂p|ZdQbXv`ffpv`ےb˂btbdfH~f`vXے`JXQr˂pJtArd|ZdQfpvnXv`bHAZp˂AJltbdQZ|fH~f`vXے`JXQr˂pJtArd|ZdQfpvnXv`bHAZp˂bdQZ|AJlt~f`~fZH˂pZtlJtArdf~HfpvXQJ`ےbHAZdrtAJltvpfH~fZHAbے`JXQtlJtArdf~HfpvXQJ`ےbHAZdrtAJltvpfH~f`JXQrZHAblJtArZdQtArvnX˂rXQJ`ےbdQZ|drtAvXnvpfHr˂pZHAbہZdQbtlJtnXv`f~H˂rXQJ`ےbdQZ|drtAvXnvpfHr˂pZHAbہZdQbtlJt~HfpnXv`ˉrXQJ`bHAZprtAJlHf`vXn`JXQr˂pZtAd|ZdQbtpvnXv`fHAZp˂rXQltbdQZ|Hf`vXn`JXQr˂pZtAd|ZdQbtpvnXv`fHAZp˂rXQZ|dltbf`vXpfH~Abے`r˂p|ZdQbtlJ~HfnXv`HAZp˂HAZdQZ|df`vXnvpQr˂pZHAb|ZdQbtlnXv`f~HZp˂rXQJ`ۉbdQZ|drtf`vXnvpQr˂pZHAb|ZdQbtlnXv`f~HZp˂rXQJ`ۂdrtAdrtAvXH~AbJHAbtArd|ZdQbfpvnXv`bHAZp˂rJltbdQZ|H~f`vXnے`JXQr˂ptArd|ZdQbfpvnXv`bHAZp˂rJltbdQZ|H~f`vXn˂pZے`JXQd|Zdfv`fQJ`ےbHAZpdrtAJltvpfH~f`ZHAbے`JXQlJtArd|f~HfpvQJ`ےbHAZpdrtAJltvpfH~f`ZHAbے`JXQlJtArd|vnXf~HےbHbHtbdQvXnvpfH˂pZHAbےZdQbtlJtAXv`f~Hf˂rXQJ`ےdQZ|drtAJvXnvpfH˂pZHAbےZdQbtlJtAXv`f~Hf˂rXQJ`ےrtAJldQZ|nvpf`vJXQrZHAbtlJtArdpvnf~HbHArtAJrtAJnvpfH~ˑZHAbے`JXbtlJtArdf~HfpvrXQJ`ےbHAdrtAJltnvpfH~ˑZHAbے`JXbtlJtArdf~HfpvrXQJ`ےbHAJltdJltf`vXQr˂pJQr˂p|ZdQbtlJnXv`f~Hp˂rXQJ`ےbdQZ|drtA`vXnvpfr˂pZHAb|ZdQbtlJnXv`f~Hp˂rXQJ`ےbdQZ|drtA`vXnvpfHAbےHAbےdQtArd~Hfv~HfvbHAZp˂rXJltbdQZ|~f`vXn`JXQr˂pArd|ZdQbtfpvnXv`˙bHAZp˂rXJltbdQZ|~f`vXn`JXQr˂pArd|ZdQbtv`ffpvAZp˂AZdZ|dvpfH~f`HAbے`JXQrlJtArd|~HfpvnJ`ےbHAZpdrtAJltbvpfH~f`HAbے`JXQrlJtArd|~HfpvnJ`ےbHAZptbdQdrtAJfH~XH~˂pZHAbے`HAbےlJtArd|~HfpvnXJ`ےbHAZp˙rtAJltbdvpfH~f`Abے`JXQrlJtArd|~HfpvnXJ`ےbHAZp˙rtAJltbdvpfH~f`bے`˂p`ZۑpJApfH~ㅐf۝`vtbAdZJXQr`JXQrrd|ZdQbtvnXv`fbHAZp˂rXQtbdQZ|d~f`vXnہJXQr˂pZHrd|ZdQbtvnXv`fbHAZp˂rXQtbdQZ|d~f`vXnJXQrQXb㉀Hr󙐂ˁf۝`vXnvˍ|drZHAbZHAbZdQbtlJtAv`f~HfprXQJ`ےQZ|drtAJlvXnvpfH˂pZHAbے`ZdQbtlJtAv`f~HfprXQJ`ےQZ|drtAJlvXnvpfHp`JXۑpJAHr`ZQXbXnvˍpfH~QtJlے`JXQے`JXlJtArd|~HfpvnXJ`ےbHAZp˙rtAJltbdvpfH~f`Abے`JXQrlJtArd|~HfpvnXJ`ےbHAZp˙rtAJltbdvpfH~f`Qr˂p󙐂ˁ`ZۑpJApfH~ㅐf۝`vtbAdZr˂pQr˂prd|ZdQbtvnXv`fbHAZp˂rXQtbdQZ|d~f`vXnہJXQr˂pZHrd|ZdQbtvnXv`fbHAZp˂rXQtbdQZ|d~f`vXnۑZHAbQXb㉀Hr󙐉f۝`vXnvˍ|drZHAbZHAbZdQbtlJtAv`f~HfprXQJ`ےQZ|drtAJlvXnvpfH˂pZHAbے`ZdQbtlJtAv`f~HfprXQJ`ےQZ|drtAJlvXnvpfHے`JXۑpJAHrۑpJAHrXnvˍp|drQtJlے`JXQے`JXlJtArd|~HfpvnXJ`ےbHAZp˙rtAJltbdvpfH~f`Abے`JXQrlJtArd|~HfpvnXJ`ےbHAZp˙rtAJltbdvpfH~f`Qr˂p󙐉ۑ󙐂ˁ`ZpfH~QtJltbAdZr˂pQr˂prd|ZdQbtvnXv`fbHAZp˂rXQtbdQZ|d~f`vXnہJXQr˂pZHrd|ZdQbtvnXv`fbHAZp˂rXQtbdQZ|d~f`vXnۑZHAbpJAHrQXb㉀f۝`vtbAdZ|drZAb`ZA`ZdQbtlJtAv`fHfpۂrXQJ`ےQZ|dtAJlvXnvpfH˂pZHAے`ZdQbtlJtAv`fHfpۂrXQJ`ےQZ|dtAJlvXnvpfH󙀉˂pˁ`ZQۑpJAHrXnvˍ|drQtJlJXQrJXQrbtlJtArdf~HfpvnrXJ`ےbHAZdrtAJltbnvpfH~fZHAbے`JXQrbtlJtArdf~HfpvnrXJ`ےbHAZdrtAJltbnvpfH~frZHAbXb㉀ۑ󙐂ˁ`pfH~QtJltbAdZpZHAlJtrd|~HfpvnXQJ`ےbHAZp˙rtAJltbdvpfH~f`Abے`JXQrlJtrd|~HfpvnXQJ`ےbHAZp˙rtAJltbdvpfH~f`˂pZH`JXQpJAHrpfH~ㅐf۝`vtbAdZ|drbے`Ad|ZdQbtvnXv`fHAZp˂rXQtbdQZ|df`vXnہJXQr˂pZHAd|ZdQbtvnXv`fHAZp˂rXQtbdQZ|df`vXnAbے`r˂pˁ`ZQf۝`vXnvˍ|drQtJlJXQrZdQbtlJtAv`f~HfprXQJ`ےQZ|drtAJlvXnvpfH˂pZHAbے`ZdQbtlJtAv`f~HfprXQJ`ےQZ|drtAJlvXnvpfHJXQrZHAbXAHr󙐂XnvˍpfH~QtJltbAdZpZHAlJtArd|~HfpvnXJ`ےbHAZp˙rtAJltbdvpfH~f`Abے`JXQrlJtArd|~HfpvnXJ`ےbHAZp˙rtAJltbdvpfH~f`˂pZH`JXQHˁ`ZQXbpfH~ㅐf۝`vtbAdZ|drbJQrrd|ZdQbtvnXv`fbHAZp˂rXQtbdQZ|d~f`vXnہJXQr˂pZHrd|ZdQbtvnXv`fbHAZp˂rXQtbdQZ|d~f`vXnAbے`Abے`㉀ۑpJf۝`vXnvˍ|drQtJl˂pZZdQbtlJtAv`f~HfprXQJ`ےQZ|drtAJlvXnvpfH˂pZHAbے`ZdQbtlJtAv`f~HfprXQJ`ےQZ|drtAJlvXnvpfHJXQHAJXQrAHr󙐂XnvˍpfH~QtJltbAdZHAbےlJtArd|~HfpvnXJ`ےbHAZp˙rtAJltbdvpfH~f`Abے`JXQrlJtArd|~HfpvnXJ`ےbHAZp˙rtAJltbdvpfH~f`bے`˂pZHˁ`ZQXbpfH~ㅐf۝`vtbAdZ|dr`JXQrrd|ZdQbtvnXv`fbHAZp˂rXQtbdQZ|d~f`vXnہJXQr˂pZHrd|ZdQbtvnXv`fbHAZp˂rXQtbdQZ|d~f`vXnJXQrAbے`㉀ۑpf۝`vXnvˍ|drQtJl˂pZZdQbtlJtAv`f~HfprXQJ`ےQZ|drtAJlvXnvpfH˂pZHAbے`ZdQbtlJtAv`f~HfprXQJ`ےQZ|drtAJlvXnvpfHpZHAJXQr`ZQXbXnvˍpfH~QtJltbAdZ| \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv34_2.dat b/mpdf/qrcode/data/qrv34_2.dat deleted file mode 100644 index 4829b31..0000000 --- a/mpdf/qrcode/data/qrv34_2.dat +++ /dev/null @@ -1,305 +0,0 @@ -}~}~}~}~{|{|{|{|wxwxwxwxtstststspopopoponmnmnmnmjijijijihghghghg}~}~}~}~{|{|{|{|wxwxwxwxtstststspopopoponmnmnmnmjijijijihghghghg}~}~}~}~{|{|{|{|wxwxwxwxtstststspopopoponmnmnmnmjijijijihghghghg}~}~}~}~{|{|{|{|wxwxwxwxtststssspopopoponmnmnmnmjijijijihghghghg}~}~}~}~{zyzyzyzwxwxwxwxssstststpopopoponmnmnmnmjijijijihghghghg}~}~}~}~yzyzyzyzwxwxwxwxststststpopopoponmnmnmnmjijijijihghghghg}~}~}~}~yzyzyzyzwxwxwxwxststststpopopoponmnmnmnmjijijijifefefefe}~}~}~}~yzyzyzyzwxwxwxwxststststpopopoponmnmnmnmjijijijifefefefe}~}~}~}~yzyzyzyzwxwxwxwxststststpopopoponmnmnmnmjijijijifefefefe}~}~}~}~yzyzyzyzwxwxwxwxststststpopopoponmnmnmnmjijijijifefefefe}~}~}~}~yzyzyzyzwxwxwxwxsssssstspopopoponmnmnmnmjijijijifefefefe}~}~}~}~yzyzyzyzwxwxwxwxtstststspopopoponmnmnmnmjijijijifefefefe}~}~}~}~yzyzyzyzwxwxwxwvtstststspopopopolklklklkjijijijifefefefe}~}~}~}~yzyzyzyzuvuvuvuvtstststspopopopolklklklkjijijijifefefefe}~}~}~}~yzyzyzyzuvuvuvuvtstststspopopopolklklklkjijijijifefefefe}~}~}~}~yzyzyzyzuvuvuvuvtstststspopopopolklklklkjijijijifefefefe}~}~}~}~yzyzyzyzuvuvuvuvtstssssspopopopolklklklkjijijijifefefefe}~}~}~}~yzyzyzyzuvuvuvuvtstststspopopopolklklklkjijijijifefefefe}~}~}~}~yzyzyzyzuvuvuvuvrqrqrqrqpopopopolklklklkjijijijifefefefe}~}~}~}~yzyzyzyzuvuvuvuvrqrqrqrqpopopopolklklklkjijijijifefefefe}~}~}~}~yzyzyzyzuvuvuvuvrqrqrqrqpopopopolklklklkjijijijifefefefe}~}~}~}~yzyzyzyzuvuvuvuvrqrqrqrqpopopopolklklklkjijijijifefefefe}~}~}~}~yzyzyzyzuvuvuvuvrqrqrqrqpopopopolklklklkjijijijifefefefe}~}~}~}~yzyzyzyzuvuvuvuvrqrqrqrqpopopopolklklklkjijijijifefefefe}~}~}~}~yzyzyzyzuvuvuvuvrqrqrqrqpopopopolklklklkjijijijifefefefe}~}~}~}~yzyzyzyzuvuvuvuvrqrqrqrqpopopopolklklklkjijijijifefefefe}|{|{|{|yzyzyzyzuvuvuvuvrqrqrqrqpopopopolklklklkjijijijifefefefe{|{|{|{|yzyzyzyzuvuvuvuvrqrqrqrqpopopopolklklklkjijijijifefefefe{|{|{|{|yzyzyzyzuvuvuvuvrqrqrqrqpopopopolklklklkhghghghgfefefefe{|{|{|{|yzyzyzyzuvuvuvuvrqrqrqrqpopopopolklklklkhghghghgfefefefe{|{|{|{|yzyzyzyzuvuvuvuvrqrqrqrqpopopopolklklklkhghghghgfefefefe{|{|{|{|yzyzyzyzuvuvuvuvrqrqrqrqpopopopolklklklkhghghghgfefefefe{|{|{|{|yzyzyzyzuvuvuvuvrqrqrqrqpopopopolklklklkhghghghgfefefefe{|{|{|{|yzyzyzyzuvuvuvuvrqrqrqrqpopopopolklklklkhghghghgfefefefe{|{|{|{|yzyzyzyzuvuvuvuvrqrqrqrqnmnmnmnmlklklklkhghghghgfefefefe{|{|{|{|yzyzyzyzuvuvuvuvrqrqrqrqnmnmnmnmlklklklkhghghghgfefefefe{|{|{|{|yzyzyzyzuvuvuvuvrqrqrqrqnmnmnmnmlklklklkhghghghgfefefefe{|{|{|{|yzyzyzyzuvuvuvuvrqrqrqrqnmnmnmnmlklklklkhghghghgfefefefe{|{|{|{|yzyzyzyzuvuvuvuvrqrqrqrqnmnmnmnmlklklklkhghghghgfefefefe{|{|{|{|yzyzyzyzuvuvuvuvrqrqrqrqnmnmnmnmlklklklkhghghghgfefefefe{|{|{|{|yzyzyzyzuvuvuvuvrqrqrqrqnmnmnmnmlklklklkhghghghgfefefefe{|{|{|{|yzyzyzyzuvuvuvuvrqrqrqrqnmnmnmnmlklklklkhghghghgfefefefe{|{|{|{|yxwxwxwxuvuvuvuvrqrqrqrqnmnmnmnmlklklklkhghghghgfefefefe{|{|{|{|wxwxwxwxuvuvutstrqrqrqrqnmnmnmnmlklklklkhghghghgfefefefe{|{|{|{|wxwxwxwxststssssrqrqrqrqnmnmnmnmlklklklkhghghghgdcdcdcdc{|{|{|{|wxwxwxwxsstststsrqrqrqrqnmnmnmnmlklklklkhghghghgdcdcdcdc{|{|{|{|wxwxwxwxtstststsrqrqrqrqnmnmnmnmlklklklkhghghghgdcdcdcdc{|{|{|{|wxwxwxwxtstststsrqrqrqrqnmnmnmnmlklklklkhghghghgdcdcdcdc~}~}~}~{|{|{|{|wxwxwxwxtstststsrqrqrqrqnmnmnmnmlklklklkhghghghgdcdcdcdc}~}~}~}~{|{|{|{|wxwxwxwxtstststsrqrqrqrqnmnmnmnmlklklklkhghghghgdcdcdcdc}~}~}~}~{|{|{|{|wxwxwxwxtstststsrqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdc}~}~}~}~{|{|{|{|wxwxwxwxssssststrqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdc}~}~}~}~{|{|{|{|wxwxwxwxststststrqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdc}~}~}~}~{|{|{|{|wxwxwxwxststststrqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdc}~}~}~}~{|{|{|{|wxwxwxwxststststrqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdc}~}~}~}~{|{|{|{|wxwxwxwxststststrqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdc}~}~}~}~{|{|{|{|wxwxwxwxststststpopopoponmnmnmnmjijijijihghghghgdcdcdcdc}~}~}~}~{|{|{|{|wxwxwxwxstsssssspopopoponmnmnmnmjijijijihghghghgdcdcdcdc}~}~}~}~{|{|{|{|wxwxwxwxtstststspopopoponmnmnmnmjijijijihghghghgdcdcdcdc}~}~}~}~{|{|{|{|wxwxwxwxtstststspopopoponmnmnmnmjijijijihghghghgdcdcdcdcdcdcdcdcdcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYUVUVUVUVSTSTSTSTOPOPOPOPMNMNMNMLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@;<;<;<;<:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"! dcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYUVUVUVUVSTSTSTSTOPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@;<;<;<;<:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"! dcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYUVUVUVUVSTSTSTSTOPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@;<;<;<;<:9:9:98765656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!  dcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYUVUVUVUVSTSTSTSTOPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@;<;<;<;<8787878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!     dcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYUVUVUVUVSTSTSTSTOPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@;;;;;;<;8787878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!     dcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYUVUVUVUVSTSTSTSTOPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@<;<;<;<;8787878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!     dcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYUVUVUVUVSTSTSTSROPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@<;<;<;<;8787878765656565212121210/0/0/0/,+,+,+,+*)*)*)('&%&%&%&%"!"!"!"!     dcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYUVUVUVUVQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@<;<;<;<;8787878765656565212121210/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"!     dcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYUVUVUVUVQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@<;<;<;<;8787878765656565212121210/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"!     dcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYUVUVUVUVQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@<;<;<;<;8787878765656565212121210/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"!     dcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYUVUVUVUVQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCB?@?@?@?@<;<;;;;;8787878765656565212121210/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"!     dcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYUVUVUVUVQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFABABABAB?@?@?@?@;<;<;<;<8787878765656565212121210/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"!     dcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYUVUVUVUVQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFABABABAB?@?@?@?@;<;<;<;<8787878765656565212121210/0/0/.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     dcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYUVUVUVUVQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFABABABAB?@?@?@?@;<;<;<;<878787876565656521212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     dcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYUVUVUVUVQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFABABABAB?@?@?@?@;<;<;<;<878787876565656521212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     dcdcdcdc`_`_`_`_\[\[\[\[ZYZYZYZYUVUVUVUVQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJEFEFEFEFABABABAB?@?@?@?@;<;<;<;<878787876565656521212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     dcdcdcdc`_`_`_`_\[\[\[\[ZYZYXWXWUVUVUVUVQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIHEFEFEFEFABABABAB?@?@?@?@;<;<;<;;878787876565656521212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     dcdcdcdc`_`_`_`_\[\[\[\[XWXWWWWWUVUVUVUVQRQRQRQROPOPOPOPKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;;;;<;<;878787876565656521212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     dcdcdcdc`_`_`_`_\[\[\[\[WXWXWXWXUVUVUVUVQRQRQRQROPOPOPOPKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?@?@<;<;<;<;878787876565654321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     - -dcdcdcdc`_`_`_`_\[\[\[\[WXWXWXWXUVUVUVUVQRQRQRQROPOPOPOPKLKLKLKLGHGHGHGHEFEFEFEFABABABAB?@?@?>=><;<;<;<;878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     - - - -dcdcdcdc`_`_`_`_\[\[\[\[WXWXWXWXUVUVUVUVQRQRQRQROPOPOPOPKLKLKLKLGHGHGHGHEFEFEFEFABABABAB=>=>=>=><;<;<;<;878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     - - - -babababa`_`_`_`_\[\[\[\[WXWXWXWXUVUVUVUVQRQRQRQROPOPOPOPKLKLKLKLGHGHGHGHEFEFEFEFABABABAB=>=>=>=><;<;<;<;878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     - - - -babababa`_`_`_`_\[\[\[\[WXWXWXWXUVUVUVUVQRQRQRQROPOPOPONKLKLKLKLGHGHGHGHEFEFEFEFABABABAB=>=>=>=><;<;<;<;878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%$#"!"!"!"!     - - - -babababa`_`_`_`_\[\[\[\[WXWXWXWWUVUVUVUVQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB=>=>=>=><;;;;;<;878787874343434321212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#"!"!"!"!     - - - -babababa`_`_`_`_\[\[\[\[WWWWXWXWUVUVUVUVQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB=>=>=>=><;<;<;:9878787874343434321212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#"!        - - - -babababa`_`_`_`_\[\[\[\[XWXWXWXWUVUVUVUVQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB=>=>=>=>:9:9:9:9878787874343434321212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#       - - - -babababa`_`_`_`_\[\[\[\[XWXWXWXWUVUVUVUVQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB=>=>=>=>:9:9:9:9878787874343434321212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#         - - - -babababa`_`_`_`_\[\[\[\[XWXWXWXWUVUVUVUVQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB=>=>=>=>:9:9:9:9878787874343434321212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#         - - - -babababa`_`_`_`_\[\[\[\[XWXWXWXWUVUVUVUTQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB=>=>=>=>:9:9:9:9878787874343434321212121.-.-.-.-,+,+,+*)('('('('$#$#$#$#         - - - -babababa`_`_`_`_\[\[\[\[XWXWXWXWSTSTSTSTQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB=>=>=>=>:9:9:9:9878787874343434321212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#         - - - -babababa`_`_`_`_\[\[\[\[XWWWWWWXSTSTSTSTQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB=>=>=>=>:9:9:9:9878787874343434321212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#         - - - -babababa`_`_`_`_\[\[\[\[WXWXWXWXSTSTSTSTQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFABABABAB=>=>=>=>:9:9:9:9878787874343434321212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#       - - - -babababa`_`_`_`_\[\[\[\[WXWXWXWXSTSTSTSTQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEDABABABAB=>=>=>=>:9:9:9:9878787874343434321212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#        - - - -babababa`_`_`_`_\[\[\[\[WXWXWXWXSTSTSTSTQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHCDCDCDCDABABABAB=>=>=>=>:9:9:9:9878787874343434321212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#         - - - -babababa`_`_`_`_\[\[\[\[WXWXWXWXSTSTSTSTQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHCDCDCDCDABABABAB=>=>=>=>:9:9:9:987878787434343432121210/.-.-.-.-*)*)*)*)('('('('$#$#$#$#         - - - -babababa`_`_`_`_\[\[\[\[WXWXWXWXSTSTSTSTQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHCDCDCDCDABABABAB=>=>=>=>:9:9:9:987878787434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#         - - - -babababa`_`_`_`_\[\[\[\[WXWXWWWWSTSTSTSTQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHCDCDCDCDABABABAB=>=>=>=>:9:9:9:987878787434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#         - - - -babababa^]^]^]^]\[\[\[\[WWXWXWXWSTSTSTSTQRQRQRQRMNMNMNMNKLKLKLKLGHGHGHGHCDCDCDCDABABABAB=>=>=>=>:9:9:9:987878787434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#         - - - -babababa^]^]^]^]\[\[\[\[XWXWXWXWSTSTSTSTQRQRQRQRMNMNMNMNKLKLKLKJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>:9:9:9:987878787434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#       - - - -babababa^]^]^]^]\[\[\[\[XWXWXWXWSTSTSTSTQRQRQRQRMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>:9:9:9:987878787434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#         - - - -babababa^]^]^]^]\[\[\[\[XWXWXWXWSTSTSTSTQRQRQRQRMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>:9:9:9:987878765434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#       - - - -babababa^]^]^]^]\[\[\[\[XWXWXWXWSTSTSTSTQRQRQRQRMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#     - - - -babababa^]^]^]^]\[\[\[\[XWXWXWXWSTSTSTSTQRQRQRQRMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#     - - - -babababa^]^]^]^]\[\[\[\[WWWWWXWXSTSTSTSTQRQRQRQRMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#     - - - -babababa^]^]^]^]\[\[\[\[WXWXWXWXSTSTSTSTQRQRQRQPMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('&%$#$#$#$#  - - - -babababa^]^]^]^]\[\[\[ZYWXWXWXWXSTSTSTSTOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#     - - - -babababa^]^]^]^]ZYZYZYZYWXWXWXWXSTSTSTSTOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#     - - - -babababa^]^]^]^]ZYZYZYZYWXWXWXWXSTSTSTSTOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#     - - - -babababa^]^]^]^]ZYZYZYZYWXWXWXWXSTSTSTSTOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCDABABABA@=>=>=>=>:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#     - - - -babababa^]^]^]^]ZYZYZYZYWXWWWWWXSTSTSTSTOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCD?@?@?@?@=>=>=>=>:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#     - - - -babababa^]^]^]^]ZYZYZYZYWXWXWXWVSTSTSTSTOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCD?@?@?@?@=>=<;<;<:9:9:9:965656565434343430/0/0/0/.-.-.-,+*)*)*)*)&%&%&%&%$#$#$#$#    - - - -babababa^]^]^]^]ZYZYZYZYUVUVUVUVSTSTSTSTOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCD?@?@?@?@;<;;;;;;:9:9:9:965656565434343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#    - - - -babababa^]^]^]^]ZYZYZYZYUVUVUVUVSTSTSTSTOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCD?@?@?@?@<;<;<;<;:9:9:9:965656565434343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#     - - - -babababa^]^]^]^]ZYZYZYZYUVUVUVUVSTSTSTSTOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHCDCDCDCD?@?@?@?@<;<;<;<;:9:9:9:965656565434343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#"!"!     - - - -babababa^]^]^]^]ZYZYZYZYUVUVUVUVSTSTSTSTOPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGFCDCDCDCD?@?@?@?@<;<;<;<;:9:9:9:965656565434343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!     - - - -babababa^]^]^]^]ZYZYZYZYUVUVUVUVSTSTSTSTOPOPOPOPMNMNMNMNIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@<;<;<;<;:9:9:9:965656565434343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!     - - - -babababa^]^]^]^]ZYZYZYZYUVUVUVUVSTSTSTSTOPOPOPOPMNMNMNMNIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@<;<;<;<;:9:9:9:965656565434343210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!     - - babababa^]^]^]^]ZYZYZYZYUVUVUVUVSTSTSTSTOPOPOPOPMNMNMNMNIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@<;<;<;;;:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!   babababa^]^]^]^]ZYZYZYZYUVUVUVUVSTSTSTSTOPOPOPOPMNMNMNMNIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@;;;<;<;<:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!   `_`_`_`_^]^]^]^]ZYZYZYZYUVUVUVUVSTSTSTSTOPOPOPOPMNMNMNMNIJIJIJIJEFEFEFEFCDCDCDCD?@?@?@?@;<;<;<;<:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"! iijjkkllaabbccdd@AABBCCDA@@??>>=~~}pqqrrsst01122334 BAA;;::9OONNMMLLiijjkkll))**++,,mmnnooppeeffgghhDEEFFGGH=<<;;::9}||{{zzytuuvvwwx45566778 - - 98877665KKJJIIHHmmnnoopp--..//00qqrrssttiijjkkllHIIJJKKL - - 98877665yxxwwvvuxyyzz{{|899::;;< 54433221GGFFEEDD~~}}qqrrsstt11223344 uuvvwwxxmmnnooppLMMNNOOP 54433221uttssrrq|}}~~<==>>??@100//..-CCBBAA@?||{{zzyyuuvvwwxx55667788 - - yyzz{{||qqrrssyyPQQRRSST100//..-qppoonnm@AABBCCD-,,++**)>=<;;::9xxwwvvuuyyzz{{||99::;;<<}}~~zz{{||}}TUUVVWWX-,,++**)mllkkjjiDEEFFGGH)((''&&%98877665ttssrrqq}}~~==>>??@@~~}}~~XYYZZ[[\)((''&&%ihhggffeHIIJJKKL - - %54433221ppoonnmmAABBCCDD||{{zzyy\]]^^__` %$$##""!eddccbbaLMMNNOOP 100//..-llkkjjiiEEFFGGHHxxwwvvuu`aabbccd !!""##$! a``__^^]PQQRRSST-,,++**)hhggffeeIIJJKKLL - - ttssrrqqdeeffggh$%%&&''(]\\[[ZZYTUUVVWWX)((''&&%ddccbbaaMMNNOOPP ppoonnmmhiijjkkl())**++,YXXWWVVUXYYZZ[[\ %$#"! ``__^^]]QQRRSSTTllkkjjiilmmnnoop,--..//0UTTSSRRQ\]]^^__` - - \\[[ZZYYUUVVWWXXhhggffeepqqrrsst01122334 QPPOONNM`aabbccd !!""##$XXWWVVUUYYZZ[[\\ddccbbaatuuvvwwx45566778 - - MLLKKJJIdeeffggh$%%&&''( TTSSRRQQ]]^^__`` ``__^^]]xyyzz{{|899::;;< IHHGGFFEhiijjkkl())**++, - - PPOONNMMaabbccdd!!""##$$\\[[ZZYY|}}~~<==>>??@EDDCCBBAlmmnnoop,--..//0  LLKKJJIIeeffgghh%%&&''((XXWWVVUU@AABBCCDA@@??>>=~~}pqqrrsst01122334 - - HHGGFFEEiijjkkll))**++,,TTSSRRQQ~~}}||~~}}|DEEFFGGH=<<;;::9}||{{zzytuuvvwwx45566778DDCCBBAAmmnnoopp--..//00PPOONNMM{{zzyyss|{{zzyyxHIIJJKKL - - 98877665yxxwwvvuxyyzz{{|899::;;<@@??>>==~~}}qqrrsstt11223344LLKKJJIIrrqqppoowvutssrrLMMNNOOP 54433221uttssrrq|}}~~<==>>??@%%&<<;;::99||{{zzyyuuvvwwxx55667788HHGGFFEEnnmmllkkqqppoonnPQQRRSST100//..-qppoonnm@AABBCCD&''(())* - - 88776655xxwwvvuuyyzz{{||99::;;<>??@@@@??>>==ffeeddcciihhggffXYYZZ[[\)((''&&%ihhggffeHIIJJKKL.//0011200//..--ppoonnmmAABBCCDD<<;;::99bbaa``__eeddccbb\]]^^__` %$$##""!eddccbbaLMMNNOOP23344556,,++**))llkkjjiiEEFFGGHH88776655^^]]WWVVaa``__^^`aabbccd !!""##$! a``__^^]PQQRRSST6778899:((''&&%%hhggffeeIIJJKKLL44332211UUTTSSRR]]\[ZYXWdeeffggh$%%&&''(]\\[[ZZYTUUVVWWX:;;AABBC $$##""!!ddccbbaaMMNNOOPP00//..--QQPPOONNWVVUUTTShiijjkkl())**++,YXXWWVVUXYYZZ[[\CDDEEFFG!!""##$$ ``__^^]]QQRRSSTT,,++**))MMLLKKJJSRRQQPPOlmmnnoop,--..//0UTTSSRRQ\]]^^__`GHHIIJJK%%&&''((\\[[ZZYYUUVVWWXX((''&&%%IIHHGGFFONNMMLLK~~}pqqrrsst01122334 QPPOONNM`aabbccdKLLMMNNO))**++,,XXWWVVUUYYZZ[[\\$$##""!!EEDDCCBBKJJIIHHG}||{{zzytuuvvwwx45566778 - - MLLKKJJIdeeffgghOPPQQRRS--..//00TTSSRRQQ]]^^__`` AA;;::99GFFEEDDCyxxwwvvuxyyzz{{|899::;;< IHHGGFFEhiijjkklSTTUUVVW11223344 PPOONNMMaabbccdd88776655CBBAA@?>uttssrrq|}}~~<==>>??@EDDCCBBAlmmnnoopW]]^^__`55667788 - - LLKKJJIIeeffgghh44332211=<;;::99qppoonnm@AABBCCDA@@??>>=~~}pqqrrsst`aabbccd99::;;<<HHGGFFEEiijjkkll00//..--88776655mllkkjjiDEEFFGGH=<<;;::9}||{{zzytuuvvwwxdeeffggh==>>??@@DDCCBBAAmmnnoopp ,,++**))44332211ihhggffeHIIJJKKL - - 98877665yxxwwvvuxyyzz{{|hiijjkklAABBCCDD@@??>>==~~}}qqrrsstt - - ((''&&%%00//..--eddccbbaLMMNNOOP 54433221uttssrrq|}}~~lmmnnoopEEFFGGHH<<;;::99||{{zzyyuuvvwwxx - - ,,++**))a``__^^]PQQRRSST100//..-qppoonnmpqqrrssyIIJJKKLL - - 88776655xxwwvvuuyyzz{{|| ((''&&%%]\\[[ZZYTUUVVWWX-,,++**)mllkkjjiyzz{{||}MMNNOOPP 44332211ttssrrqq}}~~$#"! YXXWWVVUXYYZZ[[\)((''&&%ihhggffe}~~QQRRSSTT00//..--ppoonnmmUTTSSRRQ\]]^^__` %$$##""!eddccbbaUUVVWWXX,,++**))llkkjjii QPPOONNM`aabbccd !!""##$! a``__^^]YYZZ[[\\((''&&%%hhggffee - - MLLKKJJIdeeffggh$%%&&''(]\\[[ZZY]]^^__`` $$##""!!ddccbbaa!!""##$$ - - IHHGGFFEhiijjkkl())**++,YXXWWVVUaabbccdd!!""##$$ ``__^^]]%%&&''(( -EDDCCBBAlmmnnoop,--..//0UTTSSRRQeeffgghh%%&&''((\\[[ZZYY))**++,, - A@@??>>=~~}pqqrrsst01122334 QPPOONNMiijjkkll))**++,,XXWWVVUU--..//00=<<;;::9}||{{zzytuuvvwwx45566778 - - MLLKKJJImmnnoopp--..//00TTSSRRQQ11223344 - - 98877665yxxwwvvuxyyzz{{|899::;;< IHHGGFFEqqrrsstt11223344 PPOONNMM55667788%%&& 54433221uttssrrq|}}~~<==>>??@EDDCCBBA~~}}|uuvvwwxx55667788 - - LLKKJJII99::;;<<''(())**100//..-qppoonnm@AABBCCDA@@??>>=|{{zzyysyyzz{{||99::;;<<HHGGFFEE==>>??@@++,,--..-,,++**)mllkkjjiDEEFFGGH=<<;;::9srrqqppo~~}}}}~~==>>??@@DDCCBBAAAABBCCDD//001122)((''&&%ihhggffeHIIJJKKL - - 98877665onnmmllk||{{zzyyAABBCCDD@@??>>==~~}}EEFFGGHH33445566 %$$##""!eddccbbaLMMNNOOP 54433221kjjiihhgxwvutssrEEFFGGHH<<;;::99||{{zzyyIIJJKKLL778899:: !!""##$! a``__^^]PQQRRSST100//..-gffeeddcrqqppoonIIJJKKLL - - 88776655xxwwvvuuMMNNOOPP;;AABBCC$%%&&''(]\\[[ZZYTUUVVWWX-,,++**)cbbaa``_nmmllkkjMMNNOOPP 44332211ttssrrqqQQRRSSTTDDEEFFGG())**++,YXXWWVVUXYYZZ[[\)((''&&%_^^]]WWVjiihhggfQQRRSSTT00//..--ppoonnmmUUVVWWXXHHIIJJKK,--..//0UTTSSRRQ\]]^^__` %$$##""!VUUTTSSRfeeddccbUUVVWWXX,,++**))llkkjjiiYYZZ[[\\LLMMNNOO01122334 QPPOONNM`aabbccd !!""##$! RQQPPOONbaa``__^YYZZ[[\\((''&&%%hhggffee]]^^__``PPQQRRSS45566778 - - MLLKKJJIdeeffggh$%%&&''(NMMLLKKJ^]]\[ZYX]]^^__`` $$##""!!ddccbbaaaabbccddTTUUVVWW899::;;< IHHGGFFEhiijjkkl())**++,JIIHHGGFWWVVUUTTaabbccdd!!""##$$ ``__^^]]eeffgghh]]^^__``<==>>??@EDDCCBBAlmmnnoop,--..//0FEEDDCCBSSRRQQPPeeffgghh%%&&''((\\[[ZZYYXXWWVVUUTTSSRRQQ]]^^__``HHIIJJKK%&&''(()\[[ZZYYXUVVWWXXY,++**))(baa``__^mllkkjjiNNOOPPQQ33221100ssrrqqpp~~>>??@@AA%%&&'' -;::99887{zzyyxxwvwwxxyyz6778899: - - KJJIIHHGuttssrrqPPOONNMMaabbccddLLMMNNOO)**++,,-XWWVVUUTYZZ[[\\](''&&%%$^]]WWVVUihhggffeRRSSTTUU//..--,,oonnmmllBBCCDDEE(())**++ - 76655443wvvuuttsz{{||}}~:;;<<==>GFFEEDDC~~}}||{qppoonnmLLKKJJIIeeffgghhPPQQRRSS-..//001TSSRRQQP]^^__``a !$##""!! UTTSSRRQeddccbbaVVWWXXYY++**))((kkjjiihhFFGGHHII,,--..//3221100/srrqqppo~>??@@AABCBBAA@@?{zzyyssrmllkkjjiHHGGFFEEiijjkkllTTUUVVWW12233445 POONNMMLabbccdde!""##$$% QPPOONNMa``__^^]ZZ[[\\]]''&&%%$$ggffeeddJJKKLLMM00112233/..--,,+onnmmllkBCCDDEEF?>>==<<;rqqppoonihhggffeDDCCBBAAmmnnoopp]]^^__``56677889 - - LKKJJIIHeffgghhi%&&''(()MLLKKJJI]\[ZYXWW^^__``aa !!##""!! ccbbaa``NNOOPPQQ44556677+**))(('kjjiihhgFGGHHIIJ -;::99887nmmllkkjeddccbba@@??>>==~~}}qqrrssttaabbccdd9::;;<<=HGGFFEEDijjkkllm)**++,,-IHHGGFFEVVUUTTSSbbccddee""##$$%%__^^]]\\RRSSTTUU8899::;;'&&%%$$#gffeeddcJKKLLMMN - 76655443jiihhggfa``__^^]<<;;::99||{{zzyyuuvvwwxxeeffgghh=>>??@@ADCCBBAA@mnnooppq-..//001EDDCCBBARRQQPPOOffgghhii&&''(())[[ZZYYXXVVWWXXYYAABBCCDD !!"#""!! cbbaa``_NOOPPQQR3221100/feeddccb]\\[[ZZY88776655xxwwvvuuyyzz{{||iijjkkllABBCCDDE@??>>==<~~}}|qrrssttu12233445 A;;::998NNMMLLKKjjkkllmm**++,,--WWVVUUTTZZ[[\\]]EEFFGGHH"##$$%%&_^^]]\\[RSSTTUUV/..--,,+baa``__^YXXWWVVU44332211ttssrrqq}}~~mmnnooppEFFGGHHI <;;::998|{{zzyyxuvvwwxxy56677889 - - 87766554JJIIHHGGnnooppqq..//0011SSRRQQPP^^__``aaIIJJKKLL&''(())*[ZZYYXXWVWWXXYYZ+**))(('^]]WWVVUUTTSSRRQ00//..--ppoonnmmqqrrssyyIJJKKLLM - - 87766554xwwvvuutyzz{{||}9::;;<<=43322110FFEEDDCC~~}}||rrssttuu22334455 OONNMMLLbbccddeeMMNNOOPP*++,,--.WVVUUTTSZ[[\\]]^'&&%%$$#UTTSSRRQQPPOONNM,,++**))llkkjjiizz{{||}}MNNOOPPQ 43322110tssrrqqp}~~=>>??@@A0//..--,BBAA@?>={{zzyyxxvvwwxxyy66778899 - - KKJJIIHHffgghhiiQQRRSSTT.//00112SRRQQPPO^__``aab !!"#""!! QPPOONNMMLLKKJJI((''&&%%hhggffee~~QRRSSTTU0//..--,poonnmmlABBCCDDE,++**))(<;;::998wwvvuuttzz{{||}}::;;<<==GGFFEEDDjjkkllmmUUVVWW]]23344556 ONNMMLLKbccddeef"##$$%%&MLLKKJJIIHHGGFFE$$##""!!ddccbbaaUVVWWXXY,++**))(lkkjjiihEFFGGHHI (''&&%%87766554ssrrqqpp~~>>??@@AACCBBAA@@nnooppqq^^__``aa6778899: - - KJJIIHHGfgghhiij&''(())*IHHGGFFEEDDCCBBA ``__^^]]YZZ[[\\](''&&%%$hggffeedIJJKKLLM - - 43322110oonnmmllBBCCDDEE??>>==<<~~}}||rrssttuubbccddee:;;<<==>GFFEEDDCjkkllmmn*++,,--.EDDCCBBAA@@??>>=\\[[ZZYY]^^__``a !$##""!! dccbbaa`MNNOOPPQ 0//..--,kkjjiihhFFGGHHII ;;::9988{{zzyyxxvvwwxxyyffgghhii>??@@AABCBBAA@@?nooppqqr.//00112A;;::998=<<;;::9XXWWVVUUabbccdde!""##$$% `__^^]]\QRRSSTTU,++**))(ggffeeddJJKKLLMM - - 77665544wwvvuuttzz{{||}}jjkkllmmBCCDDEEF?>>==<<;~~}}||{rssttuuv23344556 8776655498877665TTSSRRQQeffgghhi%&&''(()\[[ZZYYXUVVWWXXY(''&&%%$ccbbaa``NNOOPPQQ33221100ssrrqqpp~~nnooppqqFGGHHIIJ -;::99887{zzyyxxwvwwxxyyz6778899: - - 4332211054433221 PPOONNMMijjkkllm)**++,,-XWWVVUUTYZZ[[\\] #"! __^^]]\\RRSSTTUU//..--,,oonnmmllrrssyyzzJKKLLMMN - 76655443wvvuuttsz{{||}}~:;;<<==>0//..--,100//..- - - LLKKJJIImnnooppq-..//001TSSRRQQP]^^__``a ! - - [[ZZYYXXVVWWXXYY++**))((kkjjiihh{{||}}~~NOOPPQQR3221100/srrqqppo~>??@@AAB,++**))(-,,++**)HHGGFFEEqrrssttu12233445 POONNMMLabbccdde!""##$$%WWVVUUTTZZ[[\\]]''&&%%$$ggffeeddRSSTTUUV/..--,,+onnmmllkBCCDDEEF(''&&%%)((''&&%DDCCBBAA~~}}||uvvwwxxy56677889 - - LKKJJIIHeffgghhi%&&''(() -SSRRQQPP^^__``aa !!##""!! ccbbaa``VWWXXYYZ+**))(('kjjiihhgFGGHHIIJ -%$$##""!@@??>>=={{zzyyssyzz{{||}9::;;<<=HGGFFEEDijjkkllm)**++,,- - OONNMMLLbbccddee""##$$%%__^^]]\\Z[[\\]]^'&&%%$$#gffeeddcJKKLLMMN - ! <<;;::99rrqqppoo~~}}|}~~=>>??@@ADCCBBAA@mnnooppq-..//001 - -KKJJIIHHffgghhii&&''(())[[ZZYYXX^__``aab !!"#""!! cbbaa``_NOOPPQQR - - 88776655nnmmllkk|{{zzyyxABBCCDDE@??>>==<~~}}|qrrssttu12233445 GGFFEEDDjjkkllmm**++,,--WWVVUUTTbccddeef"##$$%%&_^^]]\\[RSSTTUUV 44332211jjiihhggwvutssrrEFFGGHHI <;;::998|{{zzyyxuvvwwxxy56677889CCBBAA@@nnooppqq..//0011SSRRQQPPfgghhiij&''(())*[ZZYYXXWVWWXXYYZ 00//..--ffeeddccqqppoonnIJJKKLLM - - 87766554xwwvvuutyzz{{||}9::;;<<=??>>==<<~~}}||rrssttuu22334455 OONNMMLLjkkllmmn*++,,--.WVVUUTTSZ[[\\]]^ - - - ,,++**))bbaa``__mmllkkjjMNNOOPPQ 43322110tssrrqqp}~~=>>??@@A%%&&' ;;::9988{{zzyyxxvvwwxxyy66778899 - - KKJJIIHHnooppqqr.//00112SRRQQPPO^__``aab !!" -  - - ((''&&%%^^]]WWVViihhggffQRRSSTTU0//..--,poonnmmlABBCCDDE'(())**+ - - 77665544wwvvuuttzz{{||}}::;;<<==GGFFEEDDrssttuuv23344556 ONNMMLLKbccddeef"##$$%%& - -  $$##""!!UUTTSSRReeddccbbUVVWWXXY,++**))(lkkjjiihEFFGGHHI+,,--../33221100ssrrqqpp~~>>??@@AACCBBAA@@~~}}||{{vwwxxyyz6778899: - - KJJIIHHGfgghhiij&''(())* !!""##$$ QQPPOONNaa``__^^YZZ[[\\](''&&%%$hggffeedIJJKKLLM/0011223//..--,,oonnmmllBBCCDDEE??>>==<GFFEEDDCjkkllmmn*++,,--.%%&&''((MMLLKKJJ]]\[ZYXW]^^__``a !$##""!! dccbbaa`MNNOOPPQ34455667++**))((kkjjiihhFFGGHHII ;;::9988qqppoonn~~}}||{~>??@@AABCBBAA@@?nooppqqr.//00112))**++,,IIHHGGFFWVVUUTTSabbccdde!""##$$% `__^^]]\QRRSSTTU78899::;''&&%%$$ggffeeddJJKKLLMM - - 77665544mmllkkjj{zzyyxwvBCCDDEEF?>>==<<;~~}}||{rssttuuv23344556%%&&'--..//00EEDDCCBBSRRQQPPOeffgghhi%&&''(()\[[ZZYYXUVVWWXXY;AABBCCD !!##""!! ccbbaa``NNOOPPQQ33221100iihhggffutssrrqqFGGHHIIJ -;::99887{zzyyxxwvwwxxyyz6778899:'(())**+ 11223344 AA;;::99ONNMMLLKijjkkllm)**++,,-XWWVVUUTYZZ[[\\]DEEFFGGH""##$$%%__^^]]\\RRSSTTUU//..--,,eeddccbbppoonnmmJKKLLMMN - 76655443wvvuuttsz{{||}}~:;;<<==>+,,--../ !!""##$55667788 - - 88776655KJJIIHHGmnnooppq-..//001TSSRRQQP]^^__``aHIIJJKKL&&''(())[[ZZYYXXVVWWXXYY++**))((aa``__^^llkkjjiiNOOPPQQR3221100/srrqqppo~>??@@AAB/0011223$%%&&''(99::;;<<44332211GFFEEDDC~~}}|qrrssttu12233445 POONNMMLabbccddeLMMNNOOP**++,,--WWVVUUTTZZ[[\\]]''&&%%$$]]WWVVUUhhggffeeRSSTTUUV/..--,,+onnmmllkBCCDDEEF34455667())**++,==>>??@@00//..--CBBAA@?>|{{zzyyxuvvwwxxy56677889 - - LKKJJIIHeffgghhiPQQRRSST..//0011SSRRQQPP^^__``aa !!##""!! TTSSRRQQddccbbaaVWWXXYYZ+**))(('kjjiihhgFGGHHIIJ78899::;,--..//0AABBCCDD,,++**))=<;;::99xwwvvuutyzz{{||}9::;;<<=HGGFFEEDijjkkllmTUUVVWW]22334455 OONNMMLLbbccddee""##$$%%PPOONNMM``__^^]]Z[[\\]]^'&&%%$$#gffeeddcJKKLLMMN;AABBCCD01122334EEFFGGHH((''&&%%88776655tssrrqqp}~~=>>??@@ADCCBBAA@mnnooppq]^^__``a66778899 - - KKJJIIHHffgghhii&&''(())LLKKJJII\[ZYXWWV^__``aab !!"#""!! cbbaa``_NOOPPQQRDEEFFGGH45566778IIJJKKLL - - 44332211poonnmmlABBCCDDE@??>>==<~~}}|qrrssttuabbccdde::;;<<==GGFFEEDDjjkkllmm**++,,--HHGGFFEEVUUTTSSRbccddeef"##$$%%&_^^]]\\[RSSTTUUVHIIJJKKL899::;;>??@@AACCBBAA@@nnooppqq..//0011DDCCBBAARQQPPOONfgghhiij&''(())*[ZZYYXXWVWWXXYYZLMMNNOOP<==>>??@QQRRSSTT,,++**))hggffeedIJJKKLLM - - 87766554xwwvvuutyzz{{||}ijjkkllmBBCCDDEE??>>==<<~~}}||rrssttuu22334455 ;;::9988NMMLLKKJjkkllmmn*++,,--.WVVUUTTSZ[[\\]]^PQQRRSST@AABBCCDUUVVWWXX((''&&%%dccbbaa`MNNOOPPQ 43322110tssrrqqp}~~mnnooppqFFGGHHII ;;::9988{{zzyyxxvvwwxxyy66778899 - - 77665544JIIHHGGFnooppqqr.//00112SRRQQPPO^__``aabTUUVVWW]DEEFFGGHYYZZ[[\\ $#"! `__^^]]\QRRSSTTU0//..--,poonnmmlqrrssyyzJJKKLLMM - - 77665544wwvvuuttzz{{||}}::;;<<==33221100FEEDDCCB~~}}||{rssttuuv23344556 ONNMMLLKbccddeef]^^__``aHIIJJKKL]]^^__`` - - \[[ZZYYXUVVWWXXY,++**))(lkkjjiihz{{||}}~NNOOPPQQ33221100ssrrqqpp~~>>??@@AA//..--,,BAA@?>=<{zzyyxxwvwwxxyyz6778899: - - KJJIIHHGfgghhiijabbccddeLMMNNOOPaabbccdd!!""##$$XWWVVUUTYZZ[[\\](''&&%%$hggffeed~RRSSTTUU//..--,,oonnmmllBBCCDDEE++**))((;;::9988wvvuuttsz{{||}}~:;;<<==>GFFEEDDCjkkllmmneffgghhiPQQRRSSTeeffgghh%%&&''(( TSSRRQQP]^^__``a !$##""!! dccbbaa`VVWWXXYY++**))((kkjjiihhFFGGHHII ''&&%%77665544srrqqppo~>??@@AABCBBAA@@?nooppqqrijjkkllmTUUVVWWXiijjkkll))**++,, - - POONNMMLabbccdde!""##$$% `__^^]]\ZZ[[\\]]''&&%%$$ggffeeddJJKKLLMM - - 33221100onnmmllkBCCDDEEF?>>==<<;~~}}||{rssttuuvmnnooppqXYYZZ[[\mmnnoopp--..//00 -LKKJJIIHeffgghhi%&&''(()\[[ZZYYX^^__``aa !!##""!! ccbbaa``NNOOPPQQ//..--,,kjjiihhgFGGHHIIJ -;::99887{zzyyxxwvwwxxyyzqrrssyyz\]]^^__`qqrrsstt11223344 - HGGFFEEDijjkkllm)**++,,-XWWVVUUTbbccddee""##$$%%__^^]]\\RRSSTTUU++**))((gffeeddcJKKLLMMN - 76655443wvvuuttsz{{||}}~z{{||}}~`aabbccduuvvwwxx55667788DCCBBAA@mnnooppq-..//001TSSRRQQPffgghhii&&''(())[[ZZYYXXVVWWXXYY''&&%%$#cbbaa``_NOOPPQQR3221100/srrqqppo~~deeffgghyyzz{{||99::;;<<@??>>==<~~}}|qrrssttu12233445 POONNMMLjjkkllmm**++,,--WWVVUUTTZZ[[\\]] "! _^^]]\\[RSSTTUUV/..--,,+onnmmllkhiijjkkl}}~~==>>??@@%%&& <;;::998|{{zzyyxuvvwwxxy56677889 - - LKKJJIIHnnooppqq..//0011SSRRQQPP^^__``aa !! - - [ZZYYXXWVWWXXYYZ+**))(('kjjiihhglmmnnoopAABBCCDD''(())** - - 87766554xwwvvuutyzz{{||}9::;;<<=HGGFFEEDrrssttuu22334455 OONNMMLLbbccddee""##$$%%WVVUUTTSZ[[\\]]^'&&%%$$#gffeeddcpqqrrsstEEFFGGHH++,,--.. 43322110tssrrqqp}~~=>>??@@ADCCBBAA@~~}}||{vvwwxxyy66778899 - - KKJJIIHHffgghhii&&''(()) - -SRRQQPPO^__``aab !!"#""!! cbbaa``_tuuvvwwxIIJJKKLL//0011220//..--,poonnmmlABBCCDDE@??>>==<{zzyyssrzz{{||}}::;;<<==GGFFEEDDjjkkllmm**++,,--  ONNMMLLKbccddeef"##$$%%&_^^]]\\[xyyzz{{|MMNNOOPP33445566,++**))(lkkjjiihEFFGGHHI <;;::998rqqppoon~~}}||~~>>??@@AACCBBAA@@nnooppqq..//0011 - - KJJIIHHGfgghhiij&''(())*[ZZYYXXW|}}~~QQRRSSTT778899::(''&&%%$hggffeedIJJKKLLM - - 87766554nmmllkkj{{zzyyxwBBCCDDEE??>>==<<~~}}||rrssttuu22334455 GFFEEDDCjkkllmmn*++,,--.WVVUUTTS~~}UUVVWWXX;;AABBCC !$##""!! dccbbaa`MNNOOPPQ 43322110jiihhggfvutssrrqFFGGHHII ;;::9988{{zzyyxxvvwwxxyy66778899CBBAA@@?nooppqqr.//00112SRRQQPPO}||{{zzyYYZZ[[\\DDEEFFGG!""##$$% `__^^]]\QRRSSTTU0//..--,feeddccbqppoonnmJJKKLLMM - - 77665544wwvvuuttzz{{||}}::;;<<==?>>==<<;~~}}||{rssttuuv23344556 ONNMMLLKyxxwwvvuZHAb|ZdQbXQJ`ےfH~rbtlfpvdrtfH~btlfpvrtAdQZ|HAbےfpvp˂rH~fr˂pے`JXQtlJbHAZf`vXJtAdnXv`AJltf`vXJtArdnXv`drt`JXQrnXv`XQJ`ے`vXnZHAbr˂ptArdp˂rnvp|ZdQf~HbdQZ|nvp|ZdQfHAJlt˂pZf~HbHAZvpfے`JXQZHAb|ZdQbXQJ`ےfH~btlfpvdrtfH~btlfpvbdQZ|HAbfpvp˂rH~fr˂pے`JXQtlJbHAXQf`vXJtArdnXv`AJltf`vXJtArdnrXQJ`drtJQr˂pnXv`XQJ`ے`vXnZHAےr˂ptArdJ`ےnvp|ZdQf~HbdQZ|nvp|ZdQےHAAJltZHAbf~HbHAZvpf`JXQrZHAb|ZdQbbHAZpfH~btlfpvdrtfH~btlZp˂drtAے`JXfpvp˂rH~fbtlے`JXQtlJ˂rXQf`vXJtArdnXv`AJltf`vXJtArdrXQJ`JltQr˂pnXv`XQJ`ے`vXnJtAdr˂ptArdJ`ےnvp|ZdQf~HbdQZ|nvp|ZdQbHAbdQZ|ZHAbf~HbHAZvpf|ZdQbZHAb|ZdQbbHAZpfH~btlfpvdrtfH~btlZp˂drtAے`JXfpvp˂rH~ftlJے`JXQtlJ˂bf`vXJtArdnXv`AJltfZHAbJtArdrXQJ`JltQrZHAnXv`XQJ`ے`vXntArdr˂ptArdHAZdnvp|ZdQf~HbdQZ|ے`JX|ZdQbHAbdQZ|lbے`f~HbHAZvpf|ZdQbZHAbf~HrtAJfH~btlfpvdrtQr˂pbtlZp˂tbJXQrfpvdrtAH~ftlJے`JXQXv`fbdQZ|f`vXJtArdnXv`AJltZHAbJtArdrXQJ`nvp`˂pZHAnXv`Jlt`vXntArdr˂p~HfdrtAnvp|ZdQfHbdQZ|ے`JX|ZdQbHAvXnbے`f~HbdQZ|vpf|ZdQbZHAbpvnJltfH~btlfpvdrtQr˂pbtlZp˂vpfHJXQrfpvdrtAH~ftlJے`JXQXv`fbdQZ|f`vXJtArdnrXQJ`AJltZHAbJtArdrXQJ`ۅ~f`˂pZAnXv`Jlt`vXntArdr˂p~HfdrtAnvp|ZdQےHAbdQZ|ے`JX|ZdQbHAvXn`JXQrf~HbdQZ|vpf|ZdQbZHAbpvJltbfH~btlZp˂drtQr˂pbtlZp˂vpfHbtlfpvdrtAH~ftlJے`JXQ~HfpQZdrf`vXJtArdrXQJ`AJltZHAbJtArdrXQJ`ۅ~JtAdnXv`Jlt`vXntArdr˂pvnXtAJlnvp|ZdQbHAbdQZ|ے`JX|ZdQbHAvpfH|ZdQbf~HbdQZ|vpf|ZdQbZHAbv`ftbdQZfH~btlZp˂drtQr˂pbtlZp˂~f`tlJfpvdrtAH~ftlJے`JXQ~Hfp|drfZHAbJtArdrXQJ`AJltZHAbJtArdrXQJ`vXntArdnXv`Jlt`vXntArdr˂pvnXtAJl璙ے`JX|ZdQbHAbdQZ|ے`JX|ZdQbHAvpfH|ZdQbf~HbdQZ|vpf|ZdQbZHAbv`pvtbdQZQr˂pbtlZp˂drtQr˂pbtlZp˂~f`tlJfpvdrtAH~ftlJے`JXQnXv|rAJlZHAbJtArdrXQJ`AJltZHAbJtArdrXQJ`vXH~tArdnXv`Jlt`vXntArdr˂p`f~tbdے`JX|ZdQbHAbdQZ|ے`JXf~HbHAf`vX|ZdQbf~HbdQZ|vpf|ZdQbZHAbHfpvQZ|dQr˂pbtlZp˂drtQr˂pfpvZp˂nvptlJfpvdrtAH~ftlJے`JXQnXvrtAJlZHAbJtArdrXQJ`AJltZHAbnXv`rXQJ`۝fH~tArdnXv`JltZHAbtArdr˂p`f~tbdے`JX|ZdQbHAbdQZ|ے`JXf~HbHAf`vX|ZdQbf~HbdQZ|ے`JXQ|ZdQbZHAbHXv`QZ|dQr˂pbtlZp˂dtAQr˂pfpvZp˂nvptlJfpvdrtAr˂ptlJے`JXQf~HrtAJZHAbJtArdrXQJ`JltZHAbnXv`rXQJ`۝`vXtArdnXv`JltZHAbtArdr˂pfpvbdQZ|ے`JX|ZdQbHAbnvpے`JXf~HbHAnvp|ZdQbfHfbdQZ|ے`JXQ|ZdQbZHAbnXv`drtAQr˂pbtlZp˂fHQr˂pfpvZp˂fH~tlJpvndrtAr˂ptlJے`JXQf~HJltZHAbJtArdrXQJ`f`vXZHAbnXv`rXQJ`f`vXtArdrXQJ`JltZHAbtArdr˂pfpvbdQZ|ے`JX|ZdQbHAnvpے`JXf~HbHAnvp|ZdQbےHAZbdQZ|ے`JXQ|ZdQb|ZdQb~HfdrtAQr˂pbtlZp˂fH~Qr˂pfpvZp˂fH~tlJp˂rdrtAr˂ptlJtlJpvnJltZHAbJtArdrXQJ`f`vXZHAbnXv`rXQJ`ۅvpfHtArdXQJ`ےJltZHAbtArdtArdXv`fbQZdے`JXf~HbHAnvpے`JXf~HbHA~f`|ZdQbbHAZbdQZ|ے`JXQ|ZdQb|ZdQb~HfrtAJlQr˂pfpvZp˂fH~Qr˂pfpvZp˂vXntlJp˂rdrtAr˂ptlJtlJpvntbdQZHAbnXv`rXQJ`f`vXZHAbnXv`rXQJ`ۅvpfHtArdXQJ`ےJltZHAbtArdtArdXv`pZ|dے`JXf~HbHAnvpے`JXf~HbHA~f`|ZdQbbHAZbdQZ|ے`JXQ|ZdQb|ZdQb˂rXQrtAJlQr˂pfpvZp˂fH~Qr˂pfpvZdrtvXHtlJp˂rdrtAr˂ptlJtlJJ`ےtbdQZHAbnXv`rXQJ`f`vXZHAbnXv`AdQZ|~fZHtArdXQJ`ےJltZHAbtArdtArdbHAZpZ|dnے`JXf~HbHAnvpے`JXf~HdrtAAbJ|ZdQbbHAZbdQZ|ے`JXQf~H|ZdQb˂rXQvfQr˂pfpvZp˂fH~Qr˂pfpvJltQr˂ptlJp˂rdrtAr˂pfpvtlJJ`ےf`vXZHAbnXv`rXQJ`f`vXZHAۅnXv`bdQZ|ZHAbtArdXQJ`ےJltZHAbnXv`tArdbHAXQJnvpے`JXf~HbHAnvp`JXQf~HdrtAے`JXQ|ZdQbbHAZbdQZ|ے`JXQf~H|ZdQb`ےbfH~Qr˂pfpvZp˂fH~rbtlfpvJltdr˂ptlJp˂rdtAJr˂pfpvtlJHAZp˂f`vXZHAbnXv`rXQJ`f`vXJtAdnXv`rtAJlZHAbtArdXQJ`ےltbZHAbnXv`tArdrXQJnvpے`JXf~HbHAnvp|ZdQf~Htbdے`JXQ|ZdQbbHAZnvpے`JXQf~H|ZdQb`ےbfH~Qr˂pfpvZp˂fH~btlfpvQZ|drZHAtlJp˂rfHfr˂pfpvtlJHAZp˂f`vXZHAbnXv`rXQJ`f`vXJtArdnXv`rtAJlbے`tArdXQJ`ے`vXnZHAbnXv`tArdbHAnvpے`JXf~HbHAnvp|ZdQf~HtbdJXQr|ZdQbbHAZvpfے`JXQf~H|ZdQbZp˂fH~Qr˂pfpvZdrtfH~btlfpvQZ|lpZHAtlJp˂rH~fr˂pfpvtlJrXQJ`f`vXZHAbnXv`AJltf`vXJtArdnXv`tbdQbے`tArdXQJ`ے`vXnZHAbnXv`tArdےbHAnvpے`JXf~HbdQZ|nvp|ZdQf~HZ|dJXQrf~HbHAZvpfے`JXQf~H|ZdQbZp˂fH~Qr˂pfpvdrtfH~btlfpvrtAJlpZAbfpvp˂rH~fr˂pfpvtlJrXQJ`f`vXZHAۅnXv`AJltf`vXJtArdnXv`tbdQ`JXQrnXv`XQJ`ے`vXnZHAbnXv`tArdp˂rnvp`JXQf~HbdQZ|nvp|ZdQf~HZ|d˂pZf~HbHAZvpfے`JXQf~HfpvnXv`Jlt`vXnbtlQJ`ےJltZHAbArdQJ`ےvXnZHAbvnXbdQZ|vXnrd|J`ےltbHAbےrd|J`ےvpAd|v`ftbdvXnrd|v`ftbd˂pZHpfH~f~HbdQZ|vpfJtArdbHAZpbdQZ|`JXQf~HbHAZpvpfH`JXQv`pvdrtvpfHZdQbtbHAZpdQZ|`JXQrZdQbtbHAZpfH~ZdQbt~HfpQZ|dvpfHZdQbtHfpQZ|dAbے`f۝`vfpvdrtAH~f|ZdQ˂rXdrtAr˂pfpv˂rX~f`r˂pnXv`AJlt~fZlJtA˂rXQdrtAJ˂pZlJtA˂rXQf`vXlJtAvnXrtAJl~f`lJtAvnrXrtAJlJXQHAXnvˍnXv`Jlt`vXnbtlQJ`ےJltZHAbnXv`QJ`ےvXnZHAbۍf~HbdQZ|HAbےrd|J`ےltbHAbےrd|J`ےnvprd|v`ftbdvXnrd|QJ`ےtbdbے`pfH~f~HbdQZ|vpf|ZdQbbHAZpbdQZ|`JXQf~HbHAZpvpfH`JXQfpvrAJl`JXQrZdQbtbHAZpdQZ|`JXQrZdQbtbHAZpfH~ZdQbt~HfpQZ|dvpfHZdQbtHAZpQZ|dJXQrːf۝`vfpvdrtAH~ftlJ˂rXdtAJlr˂pfpv˂rX~f`r˂pnXv`tbdQ˂pZlJtA˂rXQdrtAJ˂pZlJtA˂rXQf`vXlJtAvnXrtAJl~f`lJtArXQrtAJlpZHAXnvˍnXv`Jlt`vXntArdQJ`ےtbZHAbnXv`QJ`ےvXnZHAbۍf~HZ|dHAbےrd|J`ےltbHAbےrdfJ`ےH~frd|v`ftbdvXnrd|J`ےtbdbے`pfH~f~HbdQZ|vpf|ZdQbbHAZpnvp`JXQf~HbHAZpvpfH`JXQXv`rtAJl`JXQrZdQbtbHAZpdQZ|`JXQr~HfbHAZp`vXnZdQbt~HfpQZ|dvpfHZdQbtbHAZpQZ|dJXQrːf۝`vfpvdrtAH~ftlJ˂rXfHf`r˂pfpv˂rX~f`r˂pf~HtbdQ˂pZlJtA˂rXQdrtAJ˂pZpvn˂rXQvpflJtAvnXrtAJl~fZHlJtArXQrtAJlp`JXXnvˍnXv`Jlt`vXntArdtQJ`ےvXnZHAbnXv`QJ`ےvXnZHAے`fpvZ|dHAbےrd|J`ےltbHAbےXv`fJ`ےH~frd|v`ftbdAbے`rd|J`ےtbdQr˂ppfH~f~HbdQZ|vpflJtAbHAZpvpfH`JXQf~HbHAZpvpfHJXQrnXv`rtAJ`JXQrZdQbtbHAZpdQZ|`JXQr~HfbHAZp`vXnZdQbt~HfpQZ|dJXQrZdQbtbHAZpQZ|dZHAbf۝`vfpvdrtAH~frd|˂rX~f`r˂pfpv˂rX~f`btlf~HbdQZ|˂pZlJtA˂rXQdtAJl˂pZpvn˂rXQvp`lJtAvnXrtAJl˂pZHlJtArXQrtAJlے`JXXnvˍnXv`Jlt`vXnZdQbtQJ`ےvXnZHAbnXv`QJ`ےvXnJtAd|fpvdrtAHAbےrd|J`ےtbnHAbےXv`fJ`ےvXnrd|v`ftbdAbے`rd|J`ےtbdQr˂ppfH~f~HbdQZ|vpflJtAbHAZpvpfH`JXQf~HbHAZpvpfHZdQbt~HfpJlt`JXQrZdQbtbHAZpvpf`JXQr~HfbHAZpvpfHZdQbtHfpQZ|dJXQrZdQbtbHAZpQZ|dZHAbf۝`vfpvdrtAH~frd|˂rX~f`r˂pfpv˂rX~f`lJtvnXbdQZ|˂pZlJtA˂rXQHf`˂pZpvn˂rXQ~f`lJtAvnrXrtAJl˂pZHlJtArXQrtAJl˂pXnvˍnXv`JltZHAbZdQtArQJ`ےvXnZHAbnXv`QJ`ےvXnArd|v`fdrtAHAbےrd|J`ےvXnHAbےXv`fJ`ےvXnrd|QJ`ےtbdAbے`rd|J`ےtbdZHAbpfH~f~HbdQZ|˂pZdfbHAZpvpfH`JXQf~HbHAZvpfHZdQbt~HfpJltb`JXQrZdQbtbHAZpvpfH`JXQr~HfbHAZpvpfHZdQbtHAZpQZ|dJXQrZdQbtbHAZpQZ|d`JXQf۝`vfpvdrtAHAbے~Hfv˂rX~f`r˂pfpvdrtA~f`lJtvnXQZdr˂pZlJtA˂rXQ~f`˂pZpvn˂rXQ~vlJtArXQrtAJl˂pZHlJtArXQtAJlr˂pXnvˍnXv`Jlt`JXQrnXv`QJ`ےvXnZHAbnXv`JltvXnArd|v`ptAJlHAbےrdfJ`ےvXnHAbےXv`fJ`ےpfH~rd|J`ےtbdAbے`rd|J`ےtbnZHAbpfH~fHfbdQZ|˂pZf~HbHAZpvpfH`JXQf~HbdQZ|vpfHZdQbtvnrXtbdQZ`JXQr~HfbHAZpvpfH`JXQr~HfbHAZpf`vZdQbtbHAZpQZ|dJXQrZdQbtbHAZp˅vpfH`JXQHf۝`vpvndrtAHAbےfpv˂rX~f`r˂pfpvdrtA~f`lJtQJ`p|dr˂pZpvn˂rXQ~f`˂pZpvn˂rXQXnvlJtArXQrtAJl˂pZHlJtArXQf`Abے`XnvˍrXQJ`Jlt`JXQHAnXv`QJ`ےvXnZHAے`nXv`JltvXnArd|rXQtAJlHAbےXv`fJ`ےvXnHAbےXv`fJ`ےpfH~rd|J`ےtbdAbے`rd|J`ےvXnہJXQrpfH~ےHAZbdQZ|bے`f~HbHAZpvpfHJXQrf~HbdQZ|vpfHZdQbtJ`ےtbdQZ`JXQr~HfbHAZpvpfH`JXQr~HfbHAZf`vZdQbtbHAZpQZ|dJXQrZdQbtbHAZpvpfH˂pZHf۝`vp˂rdrtAJXQrfpvn˂rX~f`btlfpvdrtA~f`lJtbHAZp|AJl˂pZpvn˂rXQ~f`˂pZpvndrtAdQXH~lJtArXQrtAJl˂pZHlJtArXQ~f`Abے`XnvˍXQJ`ےJlt˂pZHAvf~QJ`ےvXnJtAd|nXv`JltvXnArd|rXQtbnHAbےXv`fJ`ےvXnHAbےXv`fZ|dfZHAbrd|J`ےtbdAbے`rdfJ`ےvXnہJXQrpfH~ㅐbHAZbdQZ|bے`HfpvbHAZpvpfHZdQbtf~HbdQZ|vpfHZdQbtJ`ے々vpf`JXQr~HfbHAZpvpfH`JXQr~HfrtAJlJQrZdQbtbHAZpQZ|dJXQr~HfpbHAZpvpfH˂p`Zf۝`vp˂rdrtAJXQrnXv˂rX~f`lJtfpvdrtA~f`lJtbHAXQJ`Hf`˂pZpvn˂rXQ~f`˂pZpvntbdQ˂pZHlJtArXQrtAJl˂pZHvnXrXQ~f`QXb㉀XnvˍXQJ`ےJlt˂p`J`f~QJ`ےvXnArd|nXv`JltvXnArd|ےbHvXnHAbےXv`fJ`ےvXnHAے`Xv`fZ|dAbے`rd|J`ےtbdAbے`v`fJ`ےvXnۑpJAHrp|drbHAZbdQZ|XQr˂HfpvbHAZvpfHZdQbtf~HbdQZ|vpfHZdQbtAZp˂vpfH`JXQr~HfbHAZpvpfHJXQrb~HfrtAJlJXQrZdQbtbHAZpQZ|dJXQr~HfpbHAZpvpfH󙐂ˁ`ZQtJlp˂rdrtApZHAbnXvdrtA~f`lJtfpvdrtA~f`lJtrXQJ`~f`˂pZpvn˂rXQ~f`tlJpvntdr˂pZHlJtArXQtAJl˂pZHvnXrXQ~f`QXb㉀tbAdZXQJ`ےJltے`J`f~fpJltvXnArd|nXv`JltvXnArd|ےbHvXnHAbےXv`fJ`ےvXntAd|Xv`ftAJlAbے`rd|J`ےtbnAbے`v`fJ`ےvXnۑpJAHr|drbHAZbdQZ|XQr˂vnXbdQZ|vpfHZdQbtf~HbdQZ|vpfHZdQbtAZp˂vpfH`JXQr~HfbHAZpvpfHZdQbt~HftbdQZJXQrZdQbtbHAZp˅vpfHJXQr~HfpbHAZpvpfH󙐉ۑQtJlp˂rdrtApZHAbv`fdrtA~f`lJtfpvdrtA~flJtbHA~f`˂pZpvn˂rXQ~f`lJtApvn|drZHAblJtArXQf`˂pZHvnXrXQ~f`pJAHrtbAdZXQJ`ےJlt˂p~HfpJltvXnArd|nXv`JltZHAbArd|Zp˂vXnHAbےXv`fJ`ےvXnrd|Xv`ftAJlے`JXQrd|J`ےvXnAbے`v`fJ`ےvXnېˁ`ZQ|drbHAZbdQZ|ZHAbvnXbdQZ|vpfHZdQbtf~HbdQZ|`JXQZdQbtrXQJ`vpfH`JXQr~HfbHAZvpfHZdQbt~HftbdQZr˂pZdQbtbHAZpvpfHJXQr~HfpbHAZpvpfHXb㉀ۑQtJlp˂rdtAJے`JXQv`fdrtA~f`lJtfpvdrtAr˂plJtbHA~f`˂pZpvndrtAJ~f`lJtApvn|ltZHAblJtArXQ~f`˂pZHvnXrXQ~f`pJAHrtbAdZXQJ`ےltbr˂p~HfvJltvXnArd|nXv`JltZHAbArd|Zp˂vXnHAbےXv`fltbvXnrd|Xv`fbdQZ|ے`JXQrdfJ`ےvXnAbے`v`fJ`ےvXnېˁ`ZQ|drbHAZnvpZHAbnXv`bdQZ|vpfHZdQbtfHfpbdQZ|`JXQZdQbtrXQJ`pvpfH`JXQr~HfdQZ|vpfHZdQbt~HfdrtAr˂p~HfpbHAZpvpfHJXQr~HfpbHAZpvpfHXAHr󙐂QtJlp˂rfHfے`JXQf~HdrtA~f`lJtvndrtAr˂plJt˂rX~f`˂pZpvndrtAJ~f`lJtApvnJltZAb`vnXrXQ~f`˂pZHvnXrXQ~f`ˁ`ZQXbtbAdZXQJ`ے`vXnHAbےfpvJltvXnArd|rXQJ`JltZHAbArd|QJ`ےvXnHAے`Xv`fltbvXnrd|Xv`fbdQZ|JXQr˕v`fJ`ےvXnAbے`v`fJ`ےvXn㉀ۑpJ|drbHAZvpf`JXQrnXv`bdQZ|vpfHZdQbtHAZpbdQZ|`JXQZdQbtbHAZpvpfHJXQrb~HfdQZ|vpfHZdQbt~HfdrtApZHA~HfpbHAZpvpfHJXQr~HfpbHAZdvpfHAHr󙐂QtJlp˂rH~f˂pZf~HdrtA~f`lJt˂rXdrtAr˂plJt˂rX~f`tlJpvndrtAJ~f`lJtApvndQZ|bے`vnXrXQ~f`˂pZHvnXrtAJl~f`ˁ`ZQXbtbAdZXQJ`ے`vXnHAbےfpvJltvXnArd|QJ`ےJltZHAbArd|QJ`ےvXntAd|Xv`fltbvXnrd|Xv`fdrtAJJXQr˕v`fJ`ےvXnAbے`v`ftbdvXn㉀ۑp|drbHAZvpf`JXQrnvfbdQZ|vpfHZdQbtbHAZpbdQZ|`JXQZdQbtbHAXQvpfHZdQbt~HfdQZ|vpfHZdQbtHfpltbpZHA~HfpbHAZpvpfHJXQr~HfpQZ|dvpfH`ZQXbQtJlp˂rH~f˂p`~HfpۂdrtA~flJt˂rXdrtAr˂plJtJ`ے~f`lJtApvndrtAJ~f`lJtAvnrdQZ|bJQrvnXrXQ~f`˂pZHvnXrtAJl~f`ۑpJAtbAdZXQJ`ے`vXnJXQrbvnXJltZHAbArd|QJ`ےJltZHAbArd|bHAZpvXnrd|Xv`fltbvXnrd|XQJ`ےdrtAJ˂pZv`fJ`ےvXnAے`v`ftbdvXnHr󙐂ˁ|drbHAZvpftl|v`fbdQZ|`JXQZdQbtbHAZpbdQZ|`JXQZdQbtrXQvpfHZdQbt~HfdQZ|vpfHZdQbtHAZpltdHAbے~HfpbHAZpvpfHJXQrbt~HfpQZ|dvpfH`ZQXbQtJlp˂rH~fZdQbt~HfpۂdrtAr˂plJt˂rXdrtAr˂plJtJ`ے~f`lJtApvndrtAJ~f`lJtA˂rXQrtAJl`JXQrvnXrXQ~f`lJtvnXrtAJl~f`ۑpJAtbAdZXQJ`ے`vXnlJtAvnXJltZHAbArd|QJ`ےJltZHAbArdbHAZpvXnrd|Xv`fltbvXnrd|J`ےtbdQ˂pZv`fJ`ےvXnAd|v`ftbdvXnHr󙐉|drbHAZvpfrd|v`ffpbdQZ|`JXQZdQbtbHAZpbdQZ|`JXQf~HXbHvpfHZdQbt~HfdQZ|vpfHZdQbtbHAZpZ|dHAbے~HfpbHAZpvpfHZdQbt~HfpQZ|dvpfHۑpJAHrQtJlp˂rH~fZdQbtvndrtAr˂plJt˂rXdrtAr˂pv`fAZd~f`lJtApvndrtAJ~fZlJtA˂rXQrtAJl`JXQrvnXrXQ~f`lJtAvnXrtAJl~f`󙐂ˁ`ZtbAdZXQJ`ے`vXnlJtArXQJ`JltZHAbArd|QJ`ےJltZHAbە~HfprtAJbvXnrd|Xv`fltbHAbےrd|J`ےtbdQZHAbv`fJ`ےvXnrd|v`ftbdvXnQXb㉀|drbHAZvpfrdt璒HAZpbdQZ|`JXQZdQbtbHAZpbdQZ|`JXQvnXdQZ|vpfHZdQbt~HfdQZ|`JXQrZdQbtbHAZpZ|l璙ے`JX~HfpbHAZdvpfHZdQbt~HfpQZ|dvpfHۑpJAHrQtJlp˂rH~flJtAr˂rXdrtAr˂plJt˂rXdtAJlr˂pv`fdrtAJ~f`lJtApvndrtAJ˂pZlJtA˂rXQtbnQr˂pvnXrtAJl~f`lJtAvnXrtAJl~f`󙐂ˁ`tbAdZXQJ`ے`vXnd|ZQJ`ےJltZHAbArd|QJ`ےtbZHAbە~HfpltbvXnrd|Xv`fltbHAbےrd|J`ےvp`vZHAbv`ftbdvXnrd|v`ftbdvXnpfH~|drbHAZvpfdQbt璙bHAZpbdQZ|`JXQZdQbtbHAZpnvp`JXQvdQZ|vpfHZdQbtHfpdQZ|`JXQrZdQbtbHAZpXnvے`JX~HfpQZ|dvpfHZdQbt~HfpQZ|dvpfHf۝`vQtJlp˂rH~flJtAr˂rXdrtAr˂plJt˂rXfHf`r˂p~HfpdrtAJ~f`lJtAvnrdrtAJ˂pZlJtA˂rXQpfH~Qr˂pvnXrtAJl~f`lJtAvnXrtAJl~frXnvˍtbAdZXQJ`ے`vXnd|ZQJ`ےJltZHAbArd|QJ`ےvXnZHAbvnXltbQvXnrd|XQJ`ےltbHAbےrd|J`ےf`vZA`v`ftbdvXnrd|v`ftbd˂pZHpfH~|drbHAZvpfdQtArdbHAZpbdQZ|`JXQZdQbtbHAZpvpfH`JXQv`fZdrtvpfHZdQbtHAZpdQZ|`JXQrZdQbtbHAZpXnvJXQrbt~HfpQZ|dvpfHZdQbt~HfpQZ|dAbے`f۝`vQtJldrtAH~f|ZdQ˂rXdrtAr˂plJt˂rX~f`r˂p~HfpAJlt~f`lJtA˂rXQdrtAJ˂pZlJtA˂rXQpfH~lJtvnXrtAJl~f`lJtAvnXrtAJlJXQrXnvˍtbAdZ|.........................................................../ \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv34_3.dat b/mpdf/qrcode/data/qrv34_3.dat deleted file mode 100644 index a9e264c..0000000 --- a/mpdf/qrcode/data/qrv34_3.dat +++ /dev/null @@ -1,305 +0,0 @@ -{|{|{|{|yzyzyzyzwxwxwxwvtststsssrqrqrqrqnmnmnmnmlklklklkjijijijifefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[WXWXWXWX{|{|{|{|yzyzyzyzuvuvuvuvssstststrqrqrqrqnmnmnmnmlklklklkhghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[WXWXWXWX{|{|{|{|yzyzyzyzuvuvuvuvststststpopopoponmnmnmnmlklklklkhghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[WXWXWXWX{|{|{|{|yzyzyzyzuvuvuvuvststststpopopoponmnmnmnmlklklklkhghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[WXWXWXWX{|{|{|{|yzyzyzyzuvuvuvuvststststpopopoponmnmnmnmlklklklkhghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[ZYWXWXWWWW{|{|{|{|yzyzyzyzuvuvuvuvststststpopopoponmnmnmnmlklklklkhghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYWWXWXWXW{|{|{|{|yzyzyzyzuvuvuvuvststststpopopoponmnmnmnmlklklklkhghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXW{|{|{|{|yzyzyzyzuvuvuvuvsssssstspopopoponmnmnmnmlklklklkhghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXW{|{|{|{|yzyzyzyzuvuvuvuvtstststspopopoponmnmnmnmlklklklkhghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXW~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvtstststspopopoponmnmnmnmlklklklkhghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXW}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvtstststspopopoponmnmnmnmlklklklkhghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXW}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvtstststspopopoponmnmnmnmlklklklkhghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYWWWWWXWX}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvtstststspopopoponmnmnmnmlklklklkhghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYWXWXWXWX}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvtstssssspopopoponmnmnmnmlklklklkhghghghgfefefefebabababa`_`_`_`_^]^]^]^]ZYZYZYZYWXWXWXWX}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvtstststspopopoponmnmnmnmjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]ZYZYZYZYWXWXWXWX}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvrqrqrqrqpopopoponmnmnmnmjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]ZYZYZYZYWXWXWXWX}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvrqrqrqrqpopopoponmnmnmnmjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]ZYZYZYZYWXWXWXWX}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvrqrqrqrqpopopoponmnmnmnmjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]ZYZYZYZYWXWWWWWX}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvrqrqrqrqpopopoponmnmnmnmjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]ZYZYZYZYWXWXWXWV}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvrqrqrqrqpopopoponmnmnmnmjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]ZYZYZYZYUVUVUVUV}~}~}~}~{|{|{|{|yzyzyzyzuvuvuvuvrqrqrqrqpopopoponmnmnmnmjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]ZYZYZYZYUVUVUVUV}~}~}~}~{|{|{|{|yxwxwxwxuvuvuvuvrqrqrqrqpopopoponmnmnmnmjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]ZYZYZYZYUVUVUVUV}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvrqrqrqrqpopopoponmnmnmnmjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]ZYZYZYZYUVUVUVUV}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvrqrqrqrqpopopoponmnmnmnmjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]ZYZYZYZYUVUVUVUV}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvrqrqrqrqpopopoponmnmnmnmjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]ZYZYZYZYUVUVUVUV}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvrqrqrqrqpopopoponmnmnmnmjijijijihghghghgfefefefebabababa`_`_`_`_\[\[\[\[ZYZYZYZYUVUVUVUV}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvrqrqrqrqpopopoponmnmnmnmjijijijihghghghgdcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYUVUVUVUV}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvrqrqrqrqpopopopolklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYUVUVUVUV}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvrqrqrqrqpopopopolklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYUVUVUVUV}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvrqrqrqrqpopopopolklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYUVUVUVUV}~}~}~}~{|{|{|{|wxwxwxwxuvuvuvuvrqrqrqrqpopopopolklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYUVUVUVUV}~}~}~}~{|{|{|{|wxwxwxwxuvuvutstrqrqrqrqpopopopolklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYUVUVUVUV}~}~}~}~{|{|{|{|wxwxwxwxststssssrqrqrqrqpopopopolklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYUVUVUVUV}~}~}~}~{|{|{|{|wxwxwxwxsstststsrqrqrqrqpopopopolklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYUVUVUVUV}~}~}~}~{zyzyzyzwxwxwxwxtstststsrqrqrqrqpopopopolklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYUVUVUVUV}~}~}~}~yzyzyzyzwxwxwxwxtstststsrqrqrqrqpopopopolklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYXWXWUVUVUVUV}~}~}~}~yzyzyzyzwxwxwxwxtstststsrqrqrqrqpopopopolklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_\[\[\[\[XWXWWWWWUVUVUVUV}~}~}~}~yzyzyzyzwxwxwxwxtstststsrqrqrqrqpopopopolklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_\[\[\[\[WXWXWXWXUVUVUVUV}~}~}~}~yzyzyzyzwxwxwxwxtstststsrqrqrqrqpopopopolklklklkjijijijihghghghgdcdcdcdcbabababa^]^]^]^]\[\[\[\[WXWXWXWXUVUVUVUV}~}~}~}~yzyzyzyzwxwxwxwxssssststrqrqrqrqpopopopolklklklkjijijijifefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[WXWXWXWXUVUVUVUV}~}~}~}~yzyzyzyzwxwxwxwxststststrqrqrqrqnmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[WXWXWXWXUVUVUVUV}~}~}~}~yzyzyzyzwxwxwxwxststststrqrqrqrqnmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[WXWXWXWXUVUVUVUV}~}~}~}~yzyzyzyzwxwxwxwxststststrqrqrqrqnmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[WXWXWXWWUVUVUVUV}~}~}~}~yzyzyzyzwxwxwxwxststststrqrqrqrqnmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[WWWWXWXWUVUVUVUV}~}~}~}~yzyzyzyzwxwxwxwxststststrqrqrqrqnmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[XWXWXWXWUVUVUVUVUVUVUVUV}~}~}~}~yzyzyzyzwxwxwxwxstssssssrqrqrqrqnmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[XWXWXWXWUVUVUVUVUVUVUVUV}~}~}~}~yzyzyzyzwxwxwxwxtstststsrqrqrqrqnmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[XWXWXWXWUVUVUVUVUVUVUVUV}|{|{|{|yzyzyzyzwxwxwxwxtstststsrqrqrqrqnmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[XWXWXWXWUVUVUVUVUVUVUVUV{|{|{|{|yzyzyzyzwxwxwxwxtstststsrqrqrqrqnmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[XWXWXWXWUVUVUVUVUVUVUVUV{|{|{|{|yzyzyzyzwxwxwxwxtstststsrqrqrqrqnmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[XWWWWWWXUVUVUVUVUVUVUVUT{|{|{|{|yzyzyzyzwxwxwxwxtstststsrqrqrqrqnmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[WXWXWXWXUVUVUVUVSTSTSTSTSTSTSTSTQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@<;<;<;<;:9:9:9:9656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)('&%&%&%&%$#$#$#$#         - - - -STSTSTSTQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?>=><;<;;;;;:9:9:9:965656565434343432121210/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#         - - - -STSTSTSTQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>;<;<;<;<:9:9:98765656565434343430/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#         - - - -STSTSTSTQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>;<;<;<;<8787878765656565434343430/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#         - - - -STSTSTSTQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>;<;<;<;<8787878765656565434343430/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#       - - - -STSTSTSTQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>;<;<;<;<8787878765656565434343430/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#"!"!  - - - -STSTSTSTQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>;<;<;<;<8787878765656565434343430/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     - - - -STSTSTSTQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>;<;<;<;;8787878765656565434343430/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     - - - -STSTSTSTQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJGHGHGHGHCDCDCDCDABABABAB=>=>=>=>;;;;<;<;8787878765656565434343430/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     - - - -STSTSTSTQRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJGHGHGHGFCDCDCDCDABABABAB=>=>=>=><;<;<;<;8787878765656565434343430/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     - - - -STSTSTSTQRQRQRQROPOPOPONKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCDABABABAB=>=>=>=><;<;<;<;8787878765656565434343430/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     - - - -STSTSTSTQRQRQRQRMNMNMNMNKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCDABABABAB=>=>=>=><;<;<;<;8787878765656565434343430/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!    - - - -STSTSTSTQRQRQRQRMNMNMNMNKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCDABABABAB=>=>=>=><;<;<;<;8787878765656565434343430/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!    - - - -STSTSTSTQRQRQRQRMNMNMNMNKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCDABABABAB=>=>=>=><;<;<;<;8787878765656565434343430/0/0/0/.-.-.-.-,+,+,+*)('('('('&%&%&%&%"!"!"!"!     - - - -STSTSTSTQRQRQRQRMNMNMNMNKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCDABABABAB=>=>=>=><;;;;;<;8787878765656565434343210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!     - - - -STSTSTSTQRQRQRQRMNMNMNMNKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCDABABABAB=>=>=>=><;<;<;:98787878765656565212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!     - - - -STSTSTSTQRQRQRQRMNMNMNMNKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCDABABABAB=>=>=>=>:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!     - - - -STSTSTSTQRQRQRQRMNMNMNMNKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCDABABABAB=>=>=>=>:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!      - - - -STSTSTSTQRQRQRQRMNMNMNMNKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCDABABABAB=>=>=>=>:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!       - - - -STSTSTSTQRQRQRQRMNMNMNMNKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCDABABABAB=>=>=>=>:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!       - - - -STSTSTSTQRQRQRQRMNMNMNMNKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCDABABABAB=>=>=>=>:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!     - - - -STSTSTSTQRQRQRQRMNMNMNMNKLKLKLKLIJIJIJIJEFEFEFEFCDCDCDCDABABABA@=>=>=>=>:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!     - - - -STSTSTSTQRQRQRQRMNMNMNMNKLKLKLKLIJIJIJIHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!     - - - -STSTSTSTQRQRQRQPMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!     - - - -STSTSTSTOPOPOPOPMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!     - - - -STSTSTSTOPOPOPOPMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%$#"!"!"!"!     - - - -STSTSTSTOPOPOPOPMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>:9:9:9:98787878765656565212121210/0/0/0/.-.-.-,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!     - - - -STSTSTSTOPOPOPOPMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>:9:9:9:98787878765656543212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!     - - - -STSTSTSTOPOPOPOPMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>:9:9:9:98787878743434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!     - - - -STSTSTSTOPOPOPOPMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>:9:9:9:98787878743434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!     - - STSTSTSTOPOPOPOPMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>:9:9:9:98787878743434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!     STSTSTSTOPOPOPOPMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=>=>=>:9:9:9:98787878743434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!     STSTSTSTOPOPOPOPMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@=>=<;<;<:9:9:9:98787878743434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!     STSTSTSTOPOPOPOPMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCD?@?@?@?@;<;;;;;;:9:9:9:98787878743434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!     STSTSTSTOPOPOPOPMNMNMNMNKLKLKLKLGHGHGHGHEFEFEFEFCDCDCDCB?@?@?@?@<;<;<;<;:9:9:9:98787878743434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!     STSTSTSTOPOPOPOPMNMNMNMNKLKLKLKJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@<;<;<;<;:9:9:9:98787878743434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!     STSTSTSROPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@<;<;<;<;:9:9:9:98787878743434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!        QRQRQRQROPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@<;<;<;<;:9:9:9:98787878743434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#       QRQRQRQROPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@<;<;<;<;:9:9:9:98787878743434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('&%$#$#$#$#         QRQRQRQROPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@<;<;<;;;:9:9:9:98787878743434343212121210/0/0/.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#         QRQRQRQROPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;;;<;<;<:9:9:9:9878787654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#         QRQRQRQROPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<:9:9:9:9656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#         QRQRQRQROPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<:9:9:9:9656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#         - -QRQRQRQROPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<:9:9:9:9656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#       - - - -QRQRQRQROPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<:9:9:9:9656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        - - - -QRQRQRQROPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;<;<;<;<:9:9:9:9656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#         - - - -QRQRQRQROPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHEFEFEFEFABABABAB?@?@?@?@;;;;;;<;:9:9:9:9656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#         - - - -QRQRQRQROPOPOPOPMNMNMNMNIJIJIJIJGHGHGHGHEFEFEFEDABABABAB?@?@?@?@<;<;<;<;:9:9:9:9656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#         - - - -QRQRQRQROPOPOPOPMNMNMNMLIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@<;<;<;<;:9:9:9:9656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#         - - - -QRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@<;<;<;<;:9:9:9:9656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#         - - - -QRQRQRQROPOPOPOPKLKLKLKLIJIJIJIJGHGHGHGHCDCDCDCDABABABAB?@?@?@?@<;<;<;<;:9:9:9:9656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#       - - - -EEFFGGHH - - 88776655<==>>??@)((''&&%@AABBCCD%$$##""!DEEFFGGHCCBBAA@?--..//0088776655112233444433221155667788SRRQQPPOIIJJKKLL44332211@AABBCCD%$$##""!DEEFFGGH! HIIJJKKL >=<;;::911223344443322115566778800//..--99::;;<<ONNMMLLKMMNNOOPP00//..--DEEFFGGH! HIIJJKKL~~}LMMNNOOP - - 988776655566778800//..--99::;;<<,,++**))==>>??@@ KJJIIHHGQQRRSSTT,,++**))HIIJJKKL~~}LMMNNOOP}||{{zzyPQQRRSST 5443322199::;;<<,,++**))==>>??@@((''&&%%AABBCCDD - - GFFEEDDCUUVVWWXX((''&&%%~~}LMMNNOOP}||{{zzyPQQRRSSTyxxwwvvuTUUVVWWX100//..-==>>??@@((''&&%%AABBCCDD$$##""!!EEFFGGHHCBBAA@?>YYZZ[[\\%%&&$#"! }||{{zzyPQQRRSSTyxxwwvvuTUUVVWWX uttssrrqXYYZZ[[\-,,++**)AABBCCDD$$##""!!EEFFGGHH IIJJKKLL =<;;::99~~}}]]^^__``''(())**yxxwwvvuTUUVVWWX uttssrrqXYYZZ[[\ - - qppoonnm\]]^^__`)((''&&%EEFFGGHH IIJJKKLL~~}}MMNNOOPP - - 88776655||{{zzyyaabbccdd++,,--..uttssrrqXYYZZ[[\ - - qppoonnm\]]^^__` mllkkjji`aabbccd%%&%$#"! IIJJKKLL~~}}MMNNOOPP||{{zzyyQQRRSSTT44332211xxwwvvuueeffgghh//001122qppoonnm\]]^^__` mllkkjji`aabbccdihhggffedeeffggh&''(())*~~}}MMNNOOPP||{{zzyyQQRRSSTTxxwwvvuuUUVVWWXX00//..--ttssrrqqiijjkkll33445566mllkkjji`aabbccdihhggffedeeffggheddccbbahiijjkkl*++,,--.||{{zzyyQQRRSSTTxxwwvvuuUUVVWWXX ttssrrqqYYZZ[[\\,,++**))ppoonnmmmmnnoopp778899:: -ihhggffedeeffggheddccbbahiijjkkla``__^^]lmmnnoop.//00112xxwwvvuuUUVVWWXX ttssrrqqYYZZ[[\\ - - ppoonnmm]]^^__``((''&&%%llkkjjiiqqrrsstt;;AABBCC - eddccbbahiijjkkla``__^^]lmmnnoop - - ]\\[[ZZYpqqrrsst23344556ttssrrqqYYZZ[[\\ - - ppoonnmm]]^^__``llkkjjiiaabbccdd%%&&$#"! hhggffeeuuvvwwxxDDEEFFGGa``__^^]lmmnnoop - - ]\\[[ZZYpqqrrsst YXXWWVVUtuuvvwwx6778899: ppoonnmm]]^^__``llkkjjiiaabbccddhhggffeeeeffgghh''(())**ddccbbaayyzz{{||HHIIJJKK - - ]\\[[ZZYpqqrrsst YXXWWVVUtuuvvwwxUTTSSRRQxyyzz{{|:;;AABBC - - llkkjjiiaabbccddhhggffeeeeffgghhddccbbaaiijjkkll++,,--..``__^^]]}}~~LLMMNNOO YXXWWVVUtuuvvwwxUTTSSRRQxyyzz{{|QPPOONNM|}}~~CDDEEFFGhhggffeeeeffgghhddccbbaaiijjkkll``__^^]]mmnnoopp//001122\\[[ZZYYPPQQRRSSUTTSSRRQxyyzz{{|QPPOONNM|}}~~MLLKKJJIGHHIIJJKddccbbaaiijjkkll``__^^]]mmnnoopp - - \\[[ZZYYqqrrsstt33445566XXWWVVUUTTUUVVWWQPPOONNM|}}~~MLLKKJJI IHHGGFFEKLLMMNNO``__^^]]mmnnoopp - - \\[[ZZYYqqrrsstt XXWWVVUUuuvvwwxx778899:: -TTSSRRQQ]]^^__``MLLKKJJI IHHGGFFE !!""##$EDDCCBBAOPPQQRRS - - \\[[ZZYYqqrrsstt XXWWVVUUuuvvwwxxTTSSRRQQyyzz{{||;;AABBCC - PPOONNMMaabbccdd IHHGGFFE !!""##$EDDCCBBA$%%&&''(A@@??>>=STTUUVVW XXWWVVUUuuvvwwxxTTSSRRQQyyzz{{||PPOONNMM}}~~DDEEFFGGLLKKJJIIeeffgghh !!""##$EDDCCBBA$%%&&''(A@@??>>=())**++,=<<;;::9W]]^^__`TTSSRRQQyyzz{{||PPOONNMM}}~~LLKKJJIIHHIIJJKKHHGGFFEEiijjkkll$%%&&''(A@@??>>=())**++,=<<;;::9,--..//098877665`aabbccdPPOONNMM}}~~LLKKJJII HHGGFFEELLMMNNOO DDCCBBAAmmnnoopp())**++,=<<;;::9,--..//0988776650112233454433221deeffgghLLKKJJII HHGGFFEE!!""##$$DDCCBBAAPPQQRRSS - - @@??>>==qqrrssyy,--..//098877665011223345443322145566778100//..-hiijjkkl HHGGFFEE!!""##$$DDCCBBAA%%&&''((@@??>>==TTUUVVWW <<;;::99zz{{||}}011223345443322145566778100//..-899::;;<-,,++**)lmmnnoop!!""##$$DDCCBBAA%%&&''((@@??>>==))**++,,<<;;::99]]^^__``88776655~~45566778100//..-899::;;<-,,++**)<==>>??@)((''&&%pqqrrssy%%&&''((@@??>>==))**++,,<<;;::99--..//0088776655aabbccdd44332211899::;;<-,,++**)<==>>??@)((''&&%@AABBCCD%$$##""!yzz{{||}))**++,,<<;;::99--..//00887766551122334444332211eeffgghh00//..--~~}}||<==>>??@)((''&&%@AABBCCD%$$##""!DEEFFGGH! ~~}}|}~~--..//008877665511223344443322115566778800//..--iijjkkll !,,++**)){{zzyyss@AABBCCD%$$##""!DEEFFGGH! HIIJJKKL|{{zzyys11223344443322115566778800//..--99::;;<<,,++**))mmnnoopp!""##$$%((''&&%%rrqqppooDEEFFGGH! HIIJJKKL~~}LMMNNOOPsrrqqppo5566778800//..--99::;;<<,,++**))==>>??@@((''&&%%qqrrssyy%&&''(()$$##""!!nnmmllkkHIIJJKKL~~}LMMNNOOP}||{{zzyPQQRRSSTonnmmllk99::;;<<,,++**))==>>??@@((''&&%%AABBCCDD$$##""!!zz{{||}})**++,,- jjiihhggLMMNNOOP}||{{zzyPQQRRSSTyxxwwvvuTUUVVWWX kjjiihhg==>>??@@((''&&%%AABBCCDD$$##""!!EEFFGGHH ~~}}||~~-..//001ffeeddccPQQRRSSTyxxwwvvuTUUVVWWX uttssrrqXYYZZ[[\ - - gffeeddcAABBCCDD$$##""!!EEFFGGHH IIJJKKLL{{zzyyss12233445bbaa``__TUUVVWWX uttssrrqXYYZZ[[\ - - qppoonnm\]]^^__` cbbaa``_EEFFGGHH IIJJKKLL~~}}MMNNOOPPrrqqppoo56677889^^]]WWVVXYYZZ[[\ - - qppoonnm\]]^^__` mllkkjji`aabbccd_^^]]WWVIIJJKKLL~~}}MMNNOOPP||{{zzyyQQRRSSTTnnmmllkk9::;;<<= UUTTSSRR\]]^^__` mllkkjji`aabbccdihhggffedeeffgghVUUTTSSRMMNNOOPP||{{zzyyQQRRSSTTxxwwvvuuUUVVWWXX jjiihhgg=>>??@@A - - QQPPOONN~~}}|`aabbccdihhggffedeeffggheddccbbahiijjkklRQQPPOONQQRRSSTTxxwwvvuuUUVVWWXX ttssrrqqYYZZ[[\\ - - ffeeddccABBCCDDE - - MMLLKKJJ|{{zzyyxdeeffggheddccbbahiijjkkla``__^^]lmmnnoop - - NMMLLKKJUUVVWWXX ttssrrqqYYZZ[[\\ - - ppoonnmm]]^^__``bbaa``__EFFGGHHI IIHHGGFFwvutssrrhiijjkkla``__^^]lmmnnoop - - ]\\[[ZZYpqqrrsst JIIHHGGF~~}}YYZZ[[\\ - - ppoonnmm]]^^__``llkkjjiiaabbccdd^^]]WWVVIJJKKLLMEEDDCCBBqqppoonnlmmnnoop - - ]\\[[ZZYpqqrrsst YXXWWVVUtuuvvwwxFEEDDCCB||{{zzyy]]^^__``llkkjjiiaabbccddhhggffeeeeffgghhUUTTSSRRMNNOOPPQAA;;::99mmllkkjjpqqrrsst YXXWWVVUtuuvvwwxUTTSSRRQxyyzz{{|BAA;;::9xwvutssraabbccddhhggffeeeeffgghhddccbbaaiijjkkllQQPPOONNQRRSSTTU88776655iihhggfftuuvvwwxUTTSSRRQxyyzz{{|QPPOONNM|}}~~98877665rqqppooneeffgghhddccbbaaiijjkkll``__^^]]mmnnoopp - - MMLLKKJJUVVWWXXY 44332211eeddccbbxyyzz{{|QPPOONNM|}}~~MLLKKJJI 54433221nmmllkkjiijjkkll``__^^]]mmnnoopp - - \\[[ZZYYqqrrsstt IIHHGGFF~~}}|YZZ[[\\]!!""##$$00//..--aa``__^^|}}~~MLLKKJJI IHHGGFFE !!""##$100//..-jiihhggfmmnnoopp - - \\[[ZZYYqqrrsstt XXWWVVUUuuvvwwxxEEDDCCBB|{{zzyyx]^^__``a%%&&''((,,++**))]]\[ZYXW IHHGGFFE !!""##$EDDCCBBA$%%&&''(-,,++**)feeddccbqqrrsstt XXWWVVUUuuvvwwxxTTSSRRQQyyzz{{||AA;;::99wvutssrrabbccdde))**++,,((''&&%%WVVUUTTS !!""##$EDDCCBBA$%%&&''(A@@??>>=())**++,)((''&&%baa``__^uuvvwwxxTTSSRRQQyyzz{{||PPOONNMM}}~~88776655qqppoonneffgghhi--..//00SRRQQPPO$%%&&''(A@@??>>=())**++,=<<;;::9,--..//0%^]]\[ZYXyyzz{{||PPOONNMM}}~~LLKKJJII 44332211mmllkkjjijjkkllm11223344ONNMMLLK())**++,=<<;;::9,--..//09887766501122334WWVVUUTT}}~~LLKKJJII HHGGFFEE!!""##$$00//..--iihhggffmnnooppq55667788KJJIIHHG,--..//098877665011223345443322145566778SSRRQQPP HHGGFFEE!!""##$$DDCCBBAA%%&&''((,,++**))eeddccbbqrrssttu99::;;<<GFFEEDDC011223345443322145566778100//..-899::;;<OONNMMLL!!""##$$DDCCBBAA%%&&''((@@??>>==))**++,,((''&&%%aa``__^^uvvwwxxy==>>??@@ CBBAA@?>45566778100//..-899::;;<-,,++**)<==>>??@ KKJJIIHH%%&&''((@@??>>==))**++,,<<;;::99--..//00]]\[ZYXWyzz{{||}AABBCCDD - - =<;;::99899::;;<-,,++**)<==>>??@)((''&&%@AABBCCD - - GGFFEEDD))**++,,<<;;::99--..//008877665511223344WVVUUTTS}~~9::;;<<=,++**))(=>>??@@A(''&&%%$ABBCCDDE - - FFEEDDCC**++,,--;;::9988..//00117766554422334455VUUTTSSR~KJJIIHHG !!"GFFEEDDC"##$$%%&,++**))(QPPOONNM=>>??@@A(''&&%%$ABBCCDDE$##""!! EFFGGHHIBBAA@?>=..//001177665544223344553322110066778899RQQPPOON !!"GFFEEDDC"##$$%%&CBBAA@@?&''(())*(''&&%%MLLKKJJIABBCCDDE$##""!! EFFGGHHI IJJKKLLM -<;;::998223344553322110066778899//..--,,::;;<<==NMMLLKKJ"##$$%%&CBBAA@@?&''(())*?>>==<<;*++,,--.IHHGGFFEEFFGGHHI IJJKKLLM~~}}|MNNOOPPQ - 8776655466778899//..--,,::;;<<==++**))((>>??@@AA JIIHHGGF&''(())*?>>==<<;*++,,--.;::99887.//00112EDDCCBBAIJJKKLLM~~}}|MNNOOPPQ|{{zzyyxQRRSSTTU43322110::;;<<==++**))((>>??@@AA''&&%%$$BBCCDDEE - - FEEDDCCB*++,,--.;::99887.//001127665544323344556A@@??>>=~~}}|MNNOOPPQ|{{zzyyxQRRSSTTUxwwvvuutUVVWWXXY0//..--,>>??@@AA''&&%%$$BBCCDDEE##""!! FFGGHHIIBAA@?>=<.//0011276655443233445563221100/6778899:=<<;;::9|{{zzyyxQRRSSTTUxwwvvuutUVVWWXXY tssrrqqpYZZ[[\\],++**))(BBCCDDEE##""!! FFGGHHIIJJKKLLMM - -;;::9988233445563221100/6778899:/..--,,+:;;<<==> 98877665xwwvvuutUVVWWXXY tssrrqqpYZZ[[\\] - - poonnmml]^^__``a(''&&%%$FFGGHHIIJJKKLLMM~~}}||NNOOPPQQ 776655446778899:/..--,,+:;;<<==>+**))(('>??@@AAB - - -54433221tssrrqqpYZZ[[\\] - - poonnmml]^^__``alkkjjiihabbccdde%%&&'#"! JJKKLLMM~~}}||NNOOPPQQ{{zzyyxxRRSSTTUU33221100:;;<<==>+**))(('>??@@AAB'&&%%$$#BCCDDEEF - 100//..-poonnmml]^^__``alkkjjiihabbccddehggffeedeffgghhi'(())**+~~}}||NNOOPPQQ{{zzyyxxRRSSTTUUwwvvuuttVVWWXXYY//..--,,>??@@AAB'&&%%$$#BCCDDEEF#""!! FGGHHIIJ-,,++**)lkkjjiihabbccddehggffeedeffgghhidccbbaa`ijjkkllm+,,--../{{zzyyxxRRSSTTUUwwvvuuttVVWWXXYY ssrrqqppZZ[[\\]]++**))((BCCDDEEF#""!! FGGHHIIJJKKLLMMN)((''&&%hggffeedeffgghhidccbbaa`ijjkkllm `__^^]]\mnnooppq/0011223wwvvuuttVVWWXXYY ssrrqqppZZ[[\\]] - - oonnmmll^^__``aa''&&%%$#FGGHHIIJJKKLLMMN~~}}||{NOOPPQQR%$$##""!dccbbaa`ijjkkllm `__^^]]\mnnooppq - - \[[ZZYYXqrrssttu34455667ssrrqqppZZ[[\\]] - - oonnmmll^^__``aakkjjiihhbbccddee%%&&''"! JKKLLMMN~~}}||{NOOPPQQR{zzyyxxwRSSTTUUV! `__^^]]\mnnooppq - - \[[ZZYYXqrrssttu XWWVVUUTuvvwwxxy78899::; - -oonnmmll^^__``aakkjjiihhbbccddeeggffeeddffgghhii(())**++~~}}||{NOOPPQQR{zzyyxxwRSSTTUUVwvvuuttsVWWXXYYZ%%&&'\[[ZZYYXqrrssttu XWWVVUUTuvvwwxxyTSSRRQQPyzz{{||};AABBCCD kkjjiihhbbccddeeggffeeddffgghhiiccbbaa``jjkkllmm,,--..//{zzyyxxwRSSTTUUVwvvuuttsVWWXXYYZ srrqqppoZ[[\\]]^'(())**+XWWVVUUTuvvwwxxyTSSRRQQPyzz{{||}POONNMML}~~DEEFFGGHggffeeddffgghhiiccbbaa``jjkkllmm __^^]]\\nnooppqq00112233wvvuuttsVWWXXYYZ srrqqppoZ[[\\]]^ - - onnmmllk^__``aab+,,--../TSSRRQQPyzz{{||}POONNMML}~~LKKJJIIHHIIJJKKLccbbaa``jjkkllmm __^^]]\\nnooppqq - - [[ZZYYXXrrssttuu44556677 srrqqppoZ[[\\]]^ - - onnmmllk^__``aabkjjiihhgbccddeef/0011223 POONNMML}~~LKKJJIIH !HGGFFEEDLMMNNOOP __^^]]\\nnooppqq - - [[ZZYYXXrrssttuuWWVVUUTTvvwwxxyy8899::;; - - onnmmllk^__``aabkjjiihhgbccddeefgffeeddcfgghhiij34455667 - - LKKJJIIH !HGGFFEED!""##$$%DCCBBAA@PQQRRSST - - [[ZZYYXXrrssttuuWWVVUUTTvvwwxxyySSRRQQPPzz{{||}}AABBCCDD kjjiihhgbccddeefgffeeddcfgghhiijcbbaa``_jkkllmmn78899::; - - HGGFFEED!""##$$%DCCBBAA@%&&''(()@??>>==>==<)**++,,-<;;::998]^^__``aSSRRQQPPzz{{||}}OONNMMLL~~KKJJIIHHIIJJKKLLcbbaa``_jkkllmmn -_^^]]\\[nooppqqr - [ZZYYXXWrssttuuvDEEFFGGH@??>>==<)**++,,-<;;::998-..//00187766554abbccddeOONNMMLL~~KKJJIIHH !!GGFFEEDDMMNNOOPP -_^^]]\\[nooppqqr - [ZZYYXXWrssttuuvWVVUUTTSvwwxxyyzHIIJJKKL<;;::998-..//001877665541223344543322110effgghhiKKJJIIHH !!GGFFEEDD""##$$%%CCBBAA@@QQRRSSTT - [ZZYYXXWrssttuuvWVVUUTTSvwwxxyyzSRRQQPPOz{{||}}~LMMNNOOP877665541223344543322110566778890//..--,ijjkkllm !!GGFFEEDD""##$$%%CCBBAA@@&&''(())??>>==<>==<<**++,,--;;::9988^^__``aaSRRQQPPOz{{||}}~ONNMMLLK~KJJIIHHGTUUVVWW] !!""##$0//..--,9::;;<<=,++**))(=>>??@@A(''&&%%$qrrssyyz&&''(())??>>==<<**++,,--;;::9988..//001177665544bbccddeeONNMMLLK~KJJIIHHG !!"GFFEEDDC]^^__``a$%%&&''(,++**))(=>>??@@A(''&&%%$ABBCCDDE$##""!! z{{||}}~**++,,--;;::9988..//0011776655442233445533221100ffgghhiiKJJIIHHG !!"GFFEEDDC"##$$%%&CBBAA@@?abbccdde())**++,(''&&%%$ABBCCDDE$##""!! EFFGGHHI ~~}}||{~..//001177665544223344553322110066778899//..--,,jjkkllmm !!"GFFEEDDC"##$$%%&CBBAA@@?&''(())*?>>==<<;effgghhi,--..//0$##""!! EFFGGHHI IJJKKLLM{zzyyssr223344553322110066778899//..--,,::;;<<==++**))((nnooppqq"##$$%%&CBBAA@@?&''(())*?>>==<<;*++,,--.;::99887ijjkkllm01122334 IJJKKLLM~~}}|MNNOOPPQrqqppoon66778899//..--,,::;;<<==++**))((>>??@@AA''&&%%$$rrssyyzz&''(())*?>>==<<;*++,,--.;::99887.//0011276655443mnnooppq45566778~~}}|MNNOOPPQ|{{zzyyxQRRSSTTUnmmllkkj::;;<<==++**))((>>??@@AA''&&%%$$BBCCDDEE##""!! {{||}}~~*++,,--.;::99887.//0011276655443233445563221100/qrrssyyz899::;;<|{{zzyyxQRRSSTTUxwwvvuutUVVWWXXY jiihhggf>>??@@AA''&&%%$$BBCCDDEE##""!! FFGGHHII~~}}||{{.//0011276655443233445563221100/6778899:/..--,,+z{{||}}~<==>>??@xwwvvuutUVVWWXXY tssrrqqpYZZ[[\\] - - feeddccbBBCCDDEE##""!! FFGGHHIIJJKKLLMMzzyyssrr233445563221100/6778899:/..--,,+:;;<<==>+**))(('~@AABBCCD tssrrqqpYZZ[[\\] - - poonnmml]^^__``abaa``__^FFGGHHIIJJKKLLMM~~}}||NNOOPPQQqqppoonn6778899:/..--,,+:;;<<==>+**))(('>??@@AAB'&&%%$$#DEEFFGGH - - poonnmml]^^__``alkkjjiihabbccdde^]]WWVVUJJKKLLMM~~}}||NNOOPPQQ{{zzyyxxRRSSTTUUmmllkkjj:;;<<==>+**))(('>??@@AAB'&&%%$$#BCCDDEEF#""!! ~~}}||{HIIJJKKLlkkjjiihabbccddehggffeedeffgghhiUTTSSRRQNNOOPPQQ{{zzyyxxRRSSTTUUwwvvuuttVVWWXXYY iihhggff>??@@AAB'&&%%$$#BCCDDEEF#""!! FGGHHIIJ{zzyyssrLMMNNOOPhggffeedeffgghhidccbbaa`ijjkkllm QPPOONNMRRSSTTUUwwvvuuttVVWWXXYY ssrrqqppZZ[[\\]] - - eeddccbbBCCDDEEF#""!! FGGHHIIJJKKLLMMNrqqppoonPQQRRSSTdccbbaa`ijjkkllm `__^^]]\mnnooppq - - MLLKKJJIVVWWXXYY ssrrqqppZZ[[\\]] - - oonnmmll^^__``aaaa``__^^FGGHHIIJJKKLLMMN~~}}||{NOOPPQQRnmmllkkjTUUVVWWX `__^^]]\mnnooppq - - \[[ZZYYXqrrssttu IHHGGFFE~~}}||ZZ[[\\]] - - oonnmmll^^__``aakkjjiihhbbccddee]]WWVVUUJKKLLMMN~~}}||{NOOPPQQR{zzyyxxwRSSTTUUVjiihhggfXYYZZ[[\ - - \[[ZZYYXqrrssttu XWWVVUUTuvvwwxxyEDDCCBBA{{zzyyxw^^__``aakkjjiihhbbccddeeggffeeddffgghhiiTTSSRRQQNOOPPQQR{zzyyxxwRSSTTUUVwvvuuttsVWWXXYYZ feeddccb~~}\]]^^__` XWWVVUUTuvvwwxxyTSSRRQQPyzz{{||}A;;::998vutssrrqbbccddeeggffeeddffgghhiiccbbaa``jjkkllmm PPOONNMMRSSTTUUVwvvuuttsVWWXXYYZ srrqqppoZ[[\\]]^ - - baa``__^}||{{zzy`aabbccdTSSRRQQPyzz{{||}POONNMML}~~87766554qppoonnmffgghhiiccbbaa``jjkkllmm __^^]]\\nnooppqq - - LLKKJJIIVWWXXYYZ srrqqppoZ[[\\]]^ - - onnmmllk^__``aab^]]WWVVUyxxwwvvudeeffgghPOONNMML}~~LKKJJIIH !43322110mllkkjjijjkkllmm __^^]]\\nnooppqq - - [[ZZYYXXrrssttuuHHGGFFEE~~}}||{Z[[\\]]^ - - onnmmllk^__``aabkjjiihhgbccddeefUTTSSRRQuttssrrqhiijjkklLKKJJIIH !HGGFFEED!""##$$%0//..--,ihhggffennooppqq - - [[ZZYYXXrrssttuuWWVVUUTTvvwwxxyyDDCCBBAA{zzyyxwv^__``aabkjjiihhgbccddeefgffeeddcfgghhiijQPPOONNMqppoonnmlmmnnoop !HGGFFEED!""##$$%DCCBBAA@%&&''((),++**))(eddccbbarrssttuuWWVVUUTTvvwwxxyySSRRQQPPzz{{||}};;::9988utssrrqqbccddeefgffeeddcfgghhiijcbbaa``_jkkllmmn -MLLKKJJImllkkjjipqqrrsst!""##$$%DCCBBAA@%&&''(()@??>>==<)**++,,-(''&&%%a``__^^]vvwwxxyySSRRQQPPzz{{||}}OONNMMLL~~77665544ppoonnmmfgghhiijcbbaa``_jkkllmmn -_^^]]\\[nooppqqr - IHHGGFFEihhggffetuuvvwwx%&&''(()@??>>==<)**++,,-<;;::998-..//001]\[ZYXWWzz{{||}}OONNMMLL~~KKJJIIHH !!33221100llkkjjiijkkllmmn -_^^]]\\[nooppqqr - [ZZYYXXWrssttuuvEDDCCBBAeddccbbaxyyzz{{|)**++,,-<;;::998-..//0018776655412233445VVUUTTSS~~KKJJIIHH !!GGFFEEDD""##$$%%//..--,,hhggffeenooppqqr - [ZZYYXXWrssttuuvWVVUUTTSvwwxxyyzA;;::998a``__^^]|}}~~-..//00187766554122334454332211056677889RRQQPPOO !!GGFFEEDD""##$$%%CCBBAA@@&&''(())++**))((ddccbbaarssttuuvWVVUUTTSvwwxxyyzSRRQQPPOz{{||}}~87766554]\\[[ZZY1223344543322110566778890//..--,9::;;<<=NNMMLLKK""##$$%%CCBBAA@@&&''(())??>>==<<**++,,--''&&%%``__^^]]vwwxxyyzSRRQQPPOz{{||}}~ONNMMLLK~43322110YXXWWVVU566778890//..--,9::;;<<=,++**))(=>>??@@A JJIIHHGG&&''(())??>>==<<**++,,--;;::9988..//0011\[ZYXWWVz{{||}}~ONNMMLLK~KJJIIHHG !!"0//..--,UTTSSRRQZHAb|ZdQb˂rXQdrtAQr˂pbtlfpvdrtfH~Qr˂pfpvZp˂tbHAbtlJp˂rdrtAH~ftlJfpvdrtAH~f˂pZv`fے`JXQtlJJ`ےJltZHAbJtArdnXv`AJltf`vXZHAbnXv`rXQJ`nvp`JQr˂ptArdXQJ`ےJltZHAbtArdnXv`Jlt`vXnHAbے~Hfpr˂ptArdbHAZpbdQZ|ے`JX|ZdQf~HbdQZ|nvpے`JXf~HbHAvXnZHAbf~HbHAZbdQZ|ے`JXQ|ZdQbf~HbdQZ|vpf`JXQrvnXZHAb|ZdQb˂rXQdrtAQr˂pbtlfpvdrtfH~Qr˂pfpvZp˂vpfHے`JXfpvp˂rdrtAr˂ptlJfpvdrtAH~f˂p`v`fے`JXQtlJJ`ےJltZHAbJtArdnXv`AJltf`vXZHAbnXv`rXQJ`ۅ~f`Qr˂pnXv`XQJ`ےJltZHAbtArdnXv`Jlt`vXnJXQrb~Hfvr˂ptArdbHAXQJbQZdے`JX|ZdQf~HbdQZ|nvpے`JXf~HbHAvXnZHAbf~HbHAZbdQZ|ے`JXQ|ZdQbf~HbdQZ|vpftl|nXv`ZHAb|ZdQb`ےbrtAJlQr˂pbtlfpvdrtfH~Qr˂pfpvZp˂vpfHے`JXfpvp˂rdrtAr˂ptlJfpvdrtAH~fZdQbtf~Hے`JXQtlJHAZp˂tbdQZHAbJtArdnXv`AJltf`vXZHAۅnXv`rXQJ`ۅ~QrZHAnXv`XQJ`ےJltZHAbtArdnXv`Jlt`vXnlJtAfpvr˂ptArdrXQJZ|dے`JX|ZdQfHbdQZ|nvp`JXQf~HbHAvpfHbے`f~HbHAZbdQZ|ے`JXQ|ZdQbf~HbdQZ|vpfrd|nXv`ZHAb|ZdQb`ےbrtAJlQr˂pbtlfpvdrtfH~rbtlfpvZp˂~f`JXQrfpvp˂rdrtAr˂ptlJfpvdrtAH~fZdQbtf~Hے`JXQtlJHAZp˂tbdQZHAbJtArdnrXQJ`AJltf`vXJtAdnXv`rXQJ`vXn˂pZHAnXv`XQJ`ےJltZHAbtArdnXv`Jlt`vXnlJtAfpvr˂ptArdbHAZ|dnے`JX|ZdQےHAbdQZ|nvp|ZdQf~HbHAvpfHbے`f~HbHAZbdQZ|ے`JXQ|ZdQbfHfbdQZ|vpfrdtnvfZHAb|ZdQbZp˂vfQr˂pbtlZp˂drtfH~btlfpvZp˂~f`JXQrfpvp˂rdtAJr˂ptlJpvndrtAH~flJtAr~Hfpے`JXQtlJrXQJ`f`vXZHAbJtArdrXQJ`AJltf`vXJtArdnXv`rXQJ`vXH~˂pZAnXv`XQJ`ےltbZHAbtArdrXQJ`Jlt`vXnd|ZvnXr˂ptArdےbHAnvpے`JX|ZdQbHAbdQZ|nvp|ZdQf~HbHAf`vX`JXQrf~HbHAZnvpے`JXQ|ZdQbےHAZbdQZ|vpfdQbtv`fZHAb|ZdQbZp˂fH~Qr˂pbtlZp˂drtfH~btlfpvZp˂nvpbtlfpvp˂rfHfr˂ptlJp˂rdrtAH~flJtAr~Hfpے`JXQtlJrXQJ`f`vXZHAbJtArdrXQJ`AJltf`vXJtArdnXv`rXQJ`۝fH~JtAdnXv`XQJ`ے`vXnZHAbtArdXQJ`ےJlt`vXnd|ZvnXr˂ptArdp˂rnvpے`JX|ZdQbHAbdQZ|nvp|ZdQf~HbHAf`vX|ZdQbf~HbHAZvpfے`JXQ|ZdQbbHAZbdQZ|vpfdQtArdv`ffpZHAb|ZdQbXQJ`ےfH~Qr˂pbtlZp˂drtfH~btlfpvZp˂nvptlJfpvp˂rH~fr˂ptlJp˂rdrtAH~f|ZdQvnے`JXQtlJbHAZf`vXZHAbJtArdrXQJ`AJltf`vXJtArdnXv`rXQJ`۝`vXtArdnXv`XQJ`ے`vXnZHAbtArdXQJ`ےJlt`vXnbtlrXQJ`r˂ptArdp˂rnvpے`JX|ZdQbHAbdQZ|nvp|ZdQf~HbHAnvp|ZdQbf~HbHAZvpfے`JXQ|ZdQbbHAZbdQZ|vpfJtArdHAZpZHAbf~HXQJ`ےfH~Qr˂pbtlZp˂drtfH~btlfpvZdrtfH~tlJfpvp˂rH~fr˂ptlJp˂rdrtAH~f|ZdQ˂rXے`JXQXv`fbHAXQf`vXZHAbJtArdrXQJ`AJltfZHAbJtArdnXv`AdQZ|f`vXtArdnXv`XQJ`ے`vXnZHAbtArdXQJ`ےJlt`vXnbtlQJ`ےr˂p~HfJ`ےnvpے`JXf~HbHAbdQZ|ے`JX|ZdQf~HdrtAnvp|ZdQbf~HbHAZvpfے`JXQ|ZdQbbHAZbdQZ|vpf|ZdQbbHAZpZHAbpvnbHAZpfH~Qr˂pfpvZp˂drtQr˂pbtlfpvJltfH~tlJfpvp˂rH~fr˂ptlJp˂rdrtAH~ftlJ˂rXے`JXQXv`f˂rXQf`vXZHAbnXv`rXQJ`AJltZHAbJtArdnXv`bdQZ|vpfHtArdnXv`XQJ`ے`vXnZHAbtArdXQJ`ےJltZHAbtArdQJ`ےr˂p~HfJ`ےnvpے`JXf~HbHAbdQZ|ے`JX|ZdQf~HdrtA~f`|ZdQbf~HbHAZvpfے`JXQf~HbHAZbdQZ|˂pZ|ZdQbbHAZpZHAbpvbHAZpfH~Qr˂pfpvZp˂drtQr˂pbtlfpvJltdvXntlJfpvdrtAH~fr˂pfpvp˂rdrtAHAbےtlJ˂rXے`JXQ~Hfp˂bf`vXZHAbnXv`rXQJ`AJltZHAbJtArdnXv`rtAJlvpfHtArdnXv`Jlt`vXnZHAbnXv`XQJ`ےJlt`JXQrtArdtQJ`ےr˂pvnXHAZdnvpے`JXf~HbHAbdQZ|ے`JX|ZdQf~Htbd~f`|ZdQbf~HbdQZ|vpfے`JXQf~HbHAZbdQZ|˂pZlJtAbHAZpZHAbv`frtAJfH~Qr˂pfpvZp˂drtQr˂pbtlfpvQZ|dvXHtlJfpvdrtAH~fr˂pfpvp˂rdrtAHAbےrd|˂rXے`JXQ~HfpbdQZ|f`vXZHAbnXv`rXQJ`AJltZHAbJtArdnXv`rtAJl~fZHtArdnXv`Jlt`vXnZHAbnXv`XQJ`ےJlt`JXQHAZdQbtQJ`ےr˂pvnXdrtAnvpے`JXf~HbHAbdQZ|ے`JX|ZdQfHtbdAbJ|ZdQbf~HbdQZ|vpfے`JXQf~HbHAZbdQZ|bے`lJtAbHAZpZHAbv`pvJltfH~Qr˂pfpvZp˂dtAQr˂pbtlfpvQZ|lQr˂ptlJfpvdrtAH~fr˂pfpvp˂rdrtAJXQrrd|˂rXے`JXQnXvbdQZ|f`vXZHAۅnXv`rXQJ`JltZHAbJtArdnrXQJ`tbdQZHAbtArdnXv`Jlt`vXnZHAbnXv`XQJ`ےJlt˂pZHAZdQtArQJ`ےr˂p`f~drtAnvp`JXQf~HbHAbnvpے`JX|ZdQےHAZ|dے`JXQ|ZdQbf~HbdQZ|vpfے`JXQf~HbHAZbdQZ|bے`dfbHAZp|ZdQbHfpvJltbfH~rbtlfpvZp˂fHQr˂pbtlZp˂rtAJlr˂ptlJfpvdrtAH~fr˂pfpvp˂rdtAJJXQr~Hfv˂rXtlJnXvQZdrf`vXJtAdnXv`rXQJ`f`vXZHAbJtArdrXQJ`ےtbdQZHAbtArdnXv`Jlt`vXnZHAےnXv`XQJ`ےltb˂p`JnXv`QJ`ےtArd`f~tAJlnvp|ZdQf~HbHAnvpے`JX|ZdQbHAZ|dے`JXQ|ZdQbfHfbdQZ|vpf`JXQrf~HbHAZnvpXQr˂f~HbHAZp|ZdQbHXv`tbdQZfH~btlfpvZp˂fH~Qr˂pbtlZp˂rtAdQZ|rZHAtlJpvndrtAH~fbtlfpvp˂rfHfpZHAbfpv˂rXtlJf~H|drf`vXJtArdnXv`rXQJ`f`vXZHAbJtArdrXQJ`ہdrtbے`tArdrXQJ`Jlt`vXnJtAdnXv`XQJ`ے`vXnے`JnXv`QJ`ےtArdfpvtAJlnvp|ZdQf~HbHAnvpے`JX|ZdQbHAAJltJXQr|ZdQbےHAZbdQZ|vpf|ZdQbf~HbHAZvpfXQr˂f~HbHAZp|ZdQbnXv`tbdQZfH~btlfpvZp˂fH~Qr˂pbtlZp˂bdQZ|pZHAtlJp˂rdrtAH~ftlJfpvp˂rH~fpZHAbfpvn˂rXtlJf~H|rAJlf`vXJtArdnXv`rXQJ`f`vXZHAbJtArdrXQJ`ہdrtbے`tArdXQJ`ےJlt`vXntArdnXv`XQJ`ے`vXn˂pvf~QJ`ےtArdfpvtbdnvp|ZdQf~HbHAnvpے`JX|ZdQbHAAJltJXQr|ZdQbbHAZbdQZ|vpf|ZdQbf~HbHAZvpfZHAbHfpvbHAZp˂rX|ZdQb~HfQZ|dfH~btlfpvZp˂fH~Qr˂pbtlZp˂drtApZAbtlJp˂rdrtAH~ftlJfpvp˂rH~fے`JXQnXv˂rXQJ`ےtlJpvnrtAJlf`vXJtArdnXv`rXQJ`f`vXZHAbJtArdrXQJ`Jlt`JXQrtArdXQJ`ےJlt`vXntArdnXv`XQJ`ے`vXnr˂p`f~QJ`ےbHAZptArdXv`ftbdnvp|ZdQf~HbHAnvpے`JXf~HbHAbdQZ|˂pZ|ZdQbbHAZbdQZ|vpf|ZdQbf~HbHAZvpfZHAbHfpvbHAZp˂rX|ZdQb~HfQZ|dfH~btlfpvZdrtfH~Qr˂pfpvZp˂drtAHAbےtlJp˂rdrtAH~ftlJfpvp˂rH~fے`JXQnXv˂rXQJ`ےtlJpvnrtAJfZHAbJtArdnXv`AJltf`vXZHAbnXv`rXQJ`Jlt`JXQrtArdXQJ`ےJlt`vXntArdnXv`XQJ`ے`vXnHAbے`f~fpQJ`ےbHAZtArdXv`pbdQZ|ے`JX|ZdQf~HbdQZ|nvpے`JXf~HbHAbdQZ|l˂pZ|ZdQbbHAZbdQZ|vpf|ZdQbf~HbHAZvpf`JXQrvnXbHAZpdrtAJltvXnZHAbnXv`QJ`ےJltZHAbArd|v`pZ|dvXnrd|Xv`fJ`ےvXnHAbےrdfJ`ےtbdQJXQrrd|J`ےtbdvXnrd|v`fJ`ےvXnZHAbpfH~bdQZ|vpfH`JXQf~HbHAZpbdQZ|`JXQZdQbtvnrXrtAJvpfHZdQbt~HfbHAZvpfH`JXQr~HfbHAZpZ|dpZHAZdQbtbHAZpQZ|dvpfHZdQbt~HfpbHAZpvpfH`JXQHf۝`vdrtA~f`r˂pfpv˂rXdrtAr˂plJtQJ`pbdQZ|~fZlJtApvndrtAJ~f`˂pZpvn˂rXQrtAJlbے`lJtArXQrtAJl~f`lJtAvnXrXQ~f`Abے`XnvˍJltvXnZHAbnXv`QJ`ےJltZHAbArd|rXQdrtAHAbےrd|Xv`fltbvXnHAbےXv`fJ`ےtbdQJXQrrd|J`ےtbdvXnrd|v`fJ`ےvXnہJXQrpfH~bdQZ|vpfH`JXQf~HbHAZpbdQZ|`JXQZdQbtJ`ےJlt`JXQrZdQbt~HfdQZ|vpfH`JXQr~HfbHAZpZ|l璂pZHAZdQbtbHAZpQZ|dvpfHZdQbt~HfpbHAZdvpfH˂pZHf۝`vdrtA~f`r˂pfpv˂rXdrtAr˂plJtbHAZpbdQZ|˂pZlJtApvndrtAJ~f`˂pZpvn˂rXQtbnbJQrlJtArXQrtAJl~fZHlJtAvnXrtAJl~f`Abے`XnvˍJltvXnZHAbnXv`QJ`ےJltZHAbArd|rXQdrtAHAbےrd|Xv`fltbvXnHAbےXv`fJ`ےvp`v˂pZrdfJ`ےtbdAbے`rd|v`ftbdvXnہJXQrpfH~bdQZ|vpfH`JXQf~HbHAZpbdQZ|`JXQZdQbtJ`ےJltb`JXQrZdQbt~HfdQZ|vpfH`JXQr~HfbHAZpXnvHAbے~HfpbHAZpQZ|dJXQrZdQbt~HfpQZ|dvpfH˂p`Zf۝`vdrtA~f`r˂pfpv˂rXdtAJlr˂plJtbHAXQJ`QZdr˂pZlJtApvndrtAJ~f`˂pZpvn˂rXQpfH~`JXQrvnXrXQrtAJl˂pZHlJtAvnXrtAJl~f`QXb㉀XnvˍJltvXnZHAے`nXv`QJ`ےtbZHAbArd|ےbHtAJlHAbےrd|Xv`fltbvXnHAbےXv`fJ`ےf`v˂pZv`fJ`ےtbdAbے`rd|v`ftbdvXnۑpJAHrpfH~bdQZ|vpfHJXQrf~HbHAZpnvp`JXQZdQbtAZp˂tbdQZ`JXQrZdQbt~HfdQZ|vpfH`JXQr~HfbHAZpXnvHAbے~HfpbHAZpQZ|dJXQrZdQbt~HfpQZ|dvpfH󙐂ˁ`Zf۝`vdrtA~f`btlfpv˂rXfHf`r˂plJtrXQJ`|dr˂pZlJtApvndrtAJ~f`˂pZpvn˂rXQpfH~`JXQrvnXrXQrtAJl˂pZHlJtAvnXrtAJl~f`QXb㉀XnvˍJltvXnJtAd|nXv`QJ`ےvXnZHAbArd|ےbHtAJlHAbےrd|Xv`fltbvXnHAے`Xv`fJ`ےvpZHAbv`fJ`ےtbdAbے`rd|v`ftbdvXnۑpJAHrpfH~bdQZ|vpfHZdQbtf~HbHAZpvpfH`JXQZdQbtAZp˂tbdQZ`JXQrZdQbtHfpdQZ|vpfHJXQrb~HfbHAZpfH~ے`JX~HfpbHAZpQZ|dJXQrZdQbt~HfpQZ|dvpfH󙐉ۑf۝`vdrtA~f`lJtfpv˂rX~f`r˂plJtbHA|AJl˂pZlJtAvnrdrtAJ~f`tlJpvn˂rXQf`vXQr˂pvnXrXQrtAJl˂pZHlJtAvnXrtAJl~f`pJAHrXnvˍJltvXnArd|nXv`QJ`ےvXnZHAbArd|Zp˂tbnHAbےrd|XQJ`ےltbvXntAd|Xv`fJ`ےnvpZHAbv`fJ`ےtbdAbے`rd|v`ftbdvXnېˁ`ZQpfH~bdQZ|vpfHZdQbtf~HbHAZpvpfH`JXQZdQbtrXQJ`ۀvpf`JXQrZdQbtHAZpdQZ|vpfHZdQbt~HfbHAZpfH~ے`JX~HfpbHAZpQZ|dJXQrZdQbtHfpQZ|dvpfHXb㉀ۑf۝`vdrtA~f`lJtfpv˂rX~f`r˂plJtbHAHf`˂pZlJtA˂rXQdrtAJ~f`lJtApvn˂rXQf`vXQr˂pvnXrXQtAJl˂pZHlJtAvnrXrtAJl~f`pJAHrXnvˍJltvXnArd|nXv`QJ`ےvXnZHAbArd|Zp˂vXnHAbےrd|J`ےltbvXnrd|Xv`fJ`ےH~fZA`v`fJ`ےtbnAbے`rd|QJ`ےtbdvXnېˁ`ZQp|drbdQZ|vpfHZdQbtf~HbHAZpvpfH`JXQZdQbtrXQJ`pvpfH`JXQrZdQbtbHAZpdQZ|vpfHZdQbt~HfbHAZp`vXnJXQrbt~HfpbHAZp˅vpfHJXQrZdQbtHAZpQZ|dvpfHXAHr󙐂QtJldrtA~f`lJtfpv˂rX~f`r˂plJt˂rX~f`˂pZlJtA˂rXQdrtAJ~f`lJtApvn˂rXQvpflJtvnXrXQf`˂pZHlJtArXQrtAJl~f`ˁ`ZQXbtbAdZJltvXnArd|nXv`QJ`ےvXnZHAbArdQJ`ےvXnHAbےrd|J`ےltbvXnrd|Xv`fJ`ےH~fAd|v`fJ`ےvXnAbے`rd|J`ےtbdvXn㉀ۑpJ|drbdQZ|vpfHZdQbtf~HbHAZvpfH`JXQf~HXbHAZpvpfH`JXQrZdQbtbHAZpdQZ|vpfHZdQbt~HfbHAZp`vXnZdQbt~HfpbHAZpvpfHJXQrZdQbtbHAZpQZ|dvpfHAHr󙐂QtJldrtA~flJtfpvdrtA~f`r˂pv`f˂rX~f`˂pZlJtA˂rXQdrtAJ~f`lJtApvn˂rXQvp`lJtAvnXrXQ~f`˂pZHlJtArXQrtAJl~f`ˁ`ZQXbtbAdZJltZHAbArd|nXv`JltvXnZHAbە~HfpQJ`ےvXnHAbےrd|J`ےltbvXnrd|Xv`fJ`ےvXnrd|v`fJ`ےvXnAbے`rd|J`ےtbdvXn㉀ۑp|drbdQZ|`JXQZdQbtf~HbdQZ|vpfH`JXQvnXbHAXQvpfH`JXQrZdQbtbHAZpdQZ|vpfHZdQbt~HfbHAZvpfHZdQbt~HfpbHAZpvpfHJXQrZdQbtbHAZpQZ|dvpfH`ZQXbQtJldrtAr˂plJtfpvdrtA~f`r˂pv`fJ`ے~f`˂pZlJtA˂rXQdrtAJ~fZlJtApvndrtAdQ~f`lJtAvnXrXQ~f`˂pZHlJtArXQrtAJl~f`ۑpJAtbAdZJltZHAbArd|nXv`JltvXnZHAbە~HfpbHAZpvXnHAbےrdfJ`ےltbHAbےrd|Xv`fZ|dvXnrd|v`fJ`ےvXnAbے`rd|J`ےtbdvXnHr󙐂ˁ|drbdQZ|`JXQZdQbtf~HbdQZ|vpfH`JXQv󂀉rXQvpfH`JXQr~HfbHAZpdQZ|`JXQrZdQbt~HfrtAJlvpfHZdQbt~HfpbHAZpvpfHJXQrZdQbtbHAZpQZ|dvpfH`ZQXbQtJldrtAr˂plJtfpvdrtA~f`r˂p~HfpJ`ے~f`˂pZpvn˂rXQdrtAJ˂pZlJtApvntbdQ~vlJtAvnXrXQ~f`˂pZHlJtArXQrtAJl~frۑpJAtbAdZJltZHAbArd|nXv`JltvXnZHAbvnXbHAZpvXnHAbےXv`fJ`ےltbHAbےrd|Xv`fZ|dpfH~rd|v`fJ`ےvXnAbے`rdfJ`ےtbd˂pZHHr󙐉|drbdQZ|`JXQZdQbtf~HbdQZ|vpfH`JXQv`f󂀉bHvpfH`JXQr~HfbHAZpdQZ|`JXQrZdQbt~HfrtAJlf`vZdQbt~HfpbHAZdvpfHJXQr~HfpbHAZpQZ|dAbے`ۑpJAHrQtJldrtAr˂plJtfpvdrtA~f`r˂p~HfpAZd~f`˂pZpvn˂rXQdrtAJ˂pZlJtApvntdrXnvlJtAvnXrtAJl~f`˂pZHvnXrXQrtAJlJXQr󙐂ˁ`ZtbAdZJltZHAbArd|nXv`JltvXnZHAے`vnXrtAJbvXnHAbےXv`fJ`ےltbHAbےrd|Xv`ftAJlpfH~rd|v`ftbdvXnAbے`v`fJ`ےtbd˂pZHQXb㉀|drbdQZ|`JXQZdQbtfHfpbdQZ|vpfHJXQrv`pvdQZ|vpfH`JXQr~HfbHAZpdQZ|`JXQrZdQbt~HftbdQZf`vZdQbt~HfpQZ|dvpfHJXQr~HfpbHAZpQZ|dAbے`ۑpJAHrQtJldtAJlr˂plJtvndrtA~f`btlnXv`drtAJ~f`˂pZpvn˂rXQdrtAJ˂pZlJtApvn|drXH~lJtAvnXrtAJl~f`˂pZHvnXrXQrtAJlJXQHA󙐂ˁ`tbAdZtbZHAbArd|rXQJ`JltvXnJtAd|f~HltbvXnHAbےXv`fJ`ےltbHAbےrd|Xv`ftAJlfZHAbrd|v`ftbdvXnAbے`v`fJ`ےtbdbے`pfH~|drnvp`JXQZdQbtHAZpbdQZ|vpfHZdQbtfpvdQZ|vpfH`JXQr~HfbHAZpdQZ|`JXQrZdQbtHfptbdQZJQrZdQbt~HfpQZ|dvpfHJXQr~HfpbHAZpQZ|dJXQrːf۝`vQtJlfHf`r˂plJt˂rXdrtA~f`lJtnXv`drtAJ~f`˂pZpvn˂rXQdtAJl˂pZlJtAvnr|lt˂pZHlJtAvnXrtAJl~f`˂pZHvnXrXQrtAJlpZHAXnvˍtbAdZvXnZHAbArd|QJ`ےJltvXnArd|f~HltbQvXnHAے`Xv`fJ`ےtbnHAbےrd|XQJ`ےbdQZ|Abے`rd|v`ftbdvXnAbے`v`fJ`ےtbdbے`pfH~|drvpfH`JXQZdQbtbHAZpbdQZ|vpfHZdQbtXv`ZdrtvpfHJXQrb~HfbHAZpvpf`JXQrZdQbtHAZpdrtAJXQrZdQbt~HfpQZ|dvpfHJXQr~HfpbHAZpQZ|dJXQrːf۝`vQtJl~f`r˂plJt˂rXdrtA~f`lJtf~HAJlt~f`tlJpvn˂rXQHf`˂pZlJtA˂rXQJlt˂pZHlJtAvnXrtAJl~f`˂pZHvnXrXQtAJlp`JXXnvˍtbAdZvXnZHAbArd|QJ`ےJltvXnArd|fpvbdQZ|vXntAd|Xv`fJ`ےvXnHAbےrd|J`ےbdQZ|Abے`rd|v`ftbdvXnAے`v`fJ`ےtbnQr˂ppfH~|drvpfH`JXQZdQbtbHAZpbdQZ|vpfHZdQbtnXv`ˁdrtvpfHZdQbt~HfbHAZpvpfH`JXQrZdQbtbHAZpdrtAJXQrZdQbtHfpQZ|dvpfHJXQrbt~HfpbHAZp˅vpfHZHAbf۝`vQtJl~f`r˂plJt˂rXdrtA~f`lJtf~HAJlt~f`lJtApvn˂rXQ~f`˂pZlJtA˂rXQdQZ|ZHAblJtAvnrXrtAJl~f`lJtvnXrXQf`ے`JXXnvˍtbAdZvXnZHAbArd|QJ`ےJltvXnArd|fpvbdQZ|vXnrd|Xv`fJ`ےvXnHAbےrd|J`ےdrtAJے`JXQrd|QJ`ےtbdvXnAd|v`fJ`ےvXnQr˂ppfH~|drvpfH`JXQZdQbtbHAZpbdQZ|vpfHZdQbt~HfprAJlvpfHZdQbt~HfbHAZpvpfH`JXQrZdQbtbHAZpltbr˂pZdQbtHAZpQZ|dvpfHZdQbt~HfpbHAZpvpfHZHAbf۝`vQtJl~f`r˂plJt˂rXdrtA~flJtvnXtbdQ~f`lJtApvn˂rXQ~f`˂pZlJtA˂rXQdQZ|ZHAblJtArXQrtAJl~f`lJtAvnXrXQ~f`˂pXnvˍtbAdZvXnZHAbArdQJ`ےJltZHAbArd|v`fZ|dvXnrd|Xv`fJ`ےvXnHAbےrd|J`ےdrtAJے`JXQrd|J`ےtbdvXnrd|v`fJ`ےvXnZHAbpfH~|drvpfH`JXQf~HbHAZpbdQZ|`JXQZdQbt~HfprtAJlvpfHZdQbt~HfbHAZpvpfH`JXQrZdQbtbHAZpltdr˂pZdQbtbHAZpQZ|dvpfHZdQbt~HfpbHAZpvpfH`JXQf۝`vQtJl~f`r˂pfpv˂rXdrtAr˂plJtvnXtbdQ~f`lJtApvn˂rXQ~f`˂pZlJtA˂rXQrtAJlZAb`lJtArXQrtAJl~f`lJtAvnXrXQ~f`r˂pXnvˍtbAdZ|666666666666666666666666666666666666666666667777777 \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv35_0.dat b/mpdf/qrcode/data/qrv35_0.dat deleted file mode 100644 index 712d99d..0000000 --- a/mpdf/qrcode/data/qrv35_0.dat +++ /dev/null @@ -1,313 +0,0 @@ -~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgcccdcdcdbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYZYZYXWXWXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgcdcdcdcdbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWXWXWVUVUVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMLKKKKKKLJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgcdcdcdcdbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUVUVUTSTSTSTSTSTSRQRQRQRQNMNMNMNMKLKLKLKLJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=~}~}~}~}|{{{{{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgcdcdcdcdbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSTSTSRQRQRQRQRQRQNMNMNMNMKLKLKLKLJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=~}~}~}~}|{|{|{zyzyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgcdcdcdcdbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQRQRQPOPONMNMNMNMKLKLKLKLJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=~}~}~}~}zyzyzyzyzyzyzyxwxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgccccccdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMKLKLKLKLJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=~}~}~}~}zyzyzyzyxwxwxwxwxwxwxwvuvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihgfefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMKLKLKKKKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=~}~}~}~}zyzyzyzyxwxwxwxwvuvuvuvuvuvuvutststststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMKKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutststststststsrqrqrqrqrqpopopoponmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>={{{{{|{|zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqrqrqrqpopopopoponmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>={|{|{|{|zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopopopopoponmnmnmnmnmlklklklkjijijijifefefefedcdcccccbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>={|{|{|{|zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmnmnmnmlklklklklkjijijijifefefefecdcdcdcdbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>={|{|{|{|zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklklklklkjijijijijifefefefecdcdcdcdbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMKKKKKLKLJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=<;<;<;<;{|{|{|{|zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijijijijihgfefefefecdcdcdcdbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMKLKLKLKLJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=<;<;<;<;{|{{{{{{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefecdcdcdcdbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMKLKLKLKLJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=<;<;<;<;~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefecdcdcdccbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMKLKLKLKLJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=<;<;<;<;~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefeccccdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMKLKLKLKLJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=<;<;<;<;~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMKLKKKKKKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=<;<;<;<;~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=<;<;<;<;~}~}~}~}|{|{|{{{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=<;<;<;<;~}~}~}~}{{{|{|{|zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=<;<;<;<;~}~}~}~}{|{|{|{|zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedccccccdbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=<;<;<;<;~}~}~}~}{|{|{|{|zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefecdcdcdcdbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKKKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=<;<;<;<;~}~}~}~}{|{|{|{|zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefecdcdcdcdbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMKKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=<;<;<;<;~}~}~}~}{|{|{|{|zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefecdcdcdcdbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKJIJIJIJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=<;<;<;<;~}~}~}~}{{{{{{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefecdcdcdcdbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMJIJIJIJIJIHGHGHGHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=<;<;<;<;~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefecdcdccccbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGHGFEFEFEFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=<;<;<;<;~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefeccdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMLKLKJIJIJIJIHGHGHGHGFEFEFEFEFEDCDCDCDCDCDCDCBABABABA@?@?@?@?>=>=>=>=<;<;<;<;~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOLKLKKKKKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCDCBABABABABABABA@?@?@?@?>=>=>=>=<;<;<;<;~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOKLKLKLKLJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABABA@?@?@?@?@?@?@?>=>=>=>=<;<;<;<;~}~}~}~}|{|{{{{{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOKLKLKLKLJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?@?>=>=>=>=>=>=>=<;<;<;<;~}~}~}~}{|{|{|{|zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOKLKLKLKLJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=>=<;<;<;<;<;<;<;~}~}~}~}{|{|{|{|zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefeccccdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOKLKLKLKLJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=<;<;<;<;<;<;<;<;~}~}~}~}{|{|{|{|zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcbabababababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOKLKLKLKKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=<;<;<;<;<;<;<;<;~}~}~}~}{|{|{|{|zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefebabababababa`_`_`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOKKKKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=<;<;<;<;<;<;<;<;~}~}~}~}{|{|{|{{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefebabababa`_`_`_`_`_`_^]^]^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=<;<;<;<;<;<;<;<;~}~}~}~}{{{{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefedcbabababa`_`_`_`_^]^]^]^]^]^]\[\[\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=<;<;<;<;<;<;<;<;~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgdcdcdcccbabababa`_`_`_`_^]^]^]^]\[\[\[\[\[\[ZYZYZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=<;<;<;<;<;<;<;<;<;<;<;<;:9:9:9:96565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - <;<;<;<;:9:9:9:96565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - <;<;<;<;:9:9:9:96565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - <;<;<;<;:9:9:9:96565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - <;<;<;<;:9:9:9:96565656533333434212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - <;<;<;<;:9:9:9:96565656534343434212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - <;:9:9:9:9:9:9:96565656534343434212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - :9:9:9:9:98787876565656534343434212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - :9:9:9:9878787876565656534343434212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - :9:9:9:9878787876565656534333333212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - :9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - :9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - :9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - :9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - :9:9:9:9878787876565656543434333212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - :9:9:9:9878787876565656533343434212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - :9:9:9:9878787876565656534343434212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - :9:9:9:9878787876565656534343434212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - :9:9:9:9878787876565656534343434212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - :9:9:9:9878787876565656534343434212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - :9:9:9:9878787876565656533333343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - :9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - :9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - :9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!         - - - - :9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!           - - - - :9:9:9:9878787876565656543433333212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - - :9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - - - - :9:9:9:9878787876565656521212121212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - :9:9:9:98787878765656565212121210/0/0/0/0/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!      - - - - :9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!    - - - - :9:9:9:98787878765434343212121210/0/0/0/.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!    - - - - :9:9:9:98787878743333334212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!    - - - - :9:9:9:98787878734343434212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%$#$#$#$#"!"!"!"!    - - - - :9:9:9:98787878734343434212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!    - - - - :9:9:9:98787878734343434212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!    - - - - :9:9:9:98787878734343434212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!"!"!"!"!    - - - - :9:9:9:98787878734343333212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - :9:9:9:98787876533434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - -  ==>>??@@FFEEDDCCaabbccdd@@??>>==YYZZ[[\\HHGGFFEEQQRRSSTTPPOONNMMIIJJKKLLXXWWVVUUAABBCCDDQQKKJJIIssttuuvv~~##""!! vvwwxxyy++**))((nnooppqq33221100ffgghhii""!!  mmllkkjj8899::;;iihhggff00112233qqppoonn(())**++yyxxwwvv !!""##AABBCCDDBBAA@@??eeffgghh<<;;::99]]^^__``DDCCBBAAUUVVWWXXLLKKJJIIMMNNOOPPTTSSRRQQEEFFGGHHHHGGFFEEwwxxyyzzzz{{||}}''&&%%$$rrssttuu//..--,,jjkkllmm - - - - iihgfedc<<==>>??eeddccbb44556677mmllkkjj,,--..//uuttssrr$$%%&&''EEFFGGHH>>==<<;;iijjkkll88776655aabbccdd@@??>>==YYZZ[[\\HHGGFFEEQQRRSSTTPPOONNMMIIJJKKLLDDCCBBAA{{ - -~~##""!! vvwwxxyy++**))((nnooppqq !!cbbaa``_@@AABBCCaa``__^^8899::;;iihhggff00112233qqppoonn(())**++{{IIJJKKQQ::998765mmnnoopp44332211eeffgghh<<;;::99]]^^__``DDCCBBAAUUVVWWXXLLKKJJIIMMNNOOPP@@??>>==  zz{{||}}''&&%%$$rrssttuu !!"" - -""##$$%%_^^]]\\[DDEEFFGG]]\\[[ZZ<<==>>??eeddccbb44556677mmllkkjj,,--..// zzyyxxwwRRSSTTUU43322110qqrrsstt00//..--iijjkkll88776655aabbccdd@@??>>==YYZZ[[\\HHGGFFEEQQRRSSTT<<;;::99 - - ~~##""!! vvwwxxyy - -##$$%%&&~~}}||{{ &&''(())[ZZYYXXWHHIIJJKKYYXXWWVV@@AABBCCaa``__^^8899::;;iihhggff00112233!!""##$$vvuuttssVVWWXXYY0//..--,uuvvwwxx,,++**))mmnnoopp44332211eeffgghh<<;;::99]]^^__``DDCCBBAAUUVVWWXX33221100 zz{{||}} ~}|{{''(())**zzyyxxww !!"" - -**++,,--WVVUUTTSLLMMNNOOUUTTSSRRDDEEFFGG]]\\[[ZZ<<==>>??eeddccbb44556677%%&&''((rrqqppooZZ[[\\]],++**))(yyzz{{||((''&&%%qqrrsstt00//..--iijjkkll88776655aabbccdd@@??>>==YYZZ[[\\//..--,,  - - ~~zzyyxxww++,,--..vvuuttss##$$%%&&~~}}||{{ ..//0011SRRQQPONPPQQRRSSQQPPOONNHHIIJJKKYYXXWWVV@@AABBCCaa``__^^8899::;;~~}}))**++,,nnmmllkk^^__``aa(''&&%%$}}~~$$##""!!uuvvwwxx,,++**))mmnnoopp44332211eeffgghh<<;;::99]]^^__``++**))(( - -   - - vvuuttss//001122rrqqppoo''(())**zzyyxxww !!""223399::MLKKJJIITTUUVVWWMMLLKKJJLLMMNNOOUUTTSSRRDDEEFFGG]]\\[[ZZ<<==>>??||{{zzyy--..//00jjiiccbbbbcciijj$##""!! yyzz{{||((''&&%%qqrrsstt00//..--iijjkkll88776655aabbccdd''&&%%$$  - -  rrqqppoo33445566nnmmllkk++,,--..vvuuttss##$$%%&&~~}}||{{;;<<==>>HHGGFFEEXXYYZZ[[IIHHGGFFPPQQRRSSQQPPOONNHHIIJJKKYYXXWWVV@@AABBCCxxwwvvuu11223344aa``__^^kkllmmnn}}~~$$##""!!uuvvwwxx,,++**))mmnnoopp44332211eeffgghh##""!! - -  nnmmllkk778899::jjiihhgg//001122rrqqppoo''(())**zzyyxxww !!""??@@AABBDDCCBBAA\\]]^^__EEDDCCBBTTUUVVWWMMLLKKJJLLMMNNOOUUTTSSRRDDEEFFGGttssrrqq55667788]]\\[[ZZooppqqrr yyzz{{||((''&&%%qqrrsstt00//..--iijjkkll  - - jjiihgfe;;<<==>>ffeeddcc33445566nnmmllkk++,,--..vvuuttss##$$%%&&~~}}||{{{{zzyyCCDDEEFF@@??>>==``aabbccAA@@??>>XXYYZZ[[IIHHGGFFPPQQRRSSQQPPOONNHHIIJJKKppoonnmm99::;;<>??@@UUTTSSRRwwxxyyzz  yyzz{{||((''&&%%qqrrsstt !! !!""##$$`__^^]]\CCDDEEFF^^]]\\[[;;<<==>>ffeeddcc33445566nnmmllkk++,,--..vvuuttss##$$%%&&ttssrrqqKKQQRRSS87654332hhiijjkk99887766``aabbccAA@@??>>XXYYZZ[[IIHHGGFFPPQQRRSS~~hhggffeeAABBCCDDQQKKJJII{{ - - - - }}~~$$##""!!uuvvwwxx ""##$$%%~~}}|| - - %%&&''((\[[ZZYYXGGHHIIJJZZYYXXWW??@@AABBbbaa``__778899::jjiihhgg//001122rrqqppoo''(())**ppoonnmmTTUUVVWW21100//.llmmnnoo55443322ddeeffgg==<<;;::\\]]^^__EEDDCCBBTTUUVVWW}}||{{zzddccbbaaEEFFGGHHHHGGFFEE   yyzz{{|| - - ~}|&&''(()){{zzyyxx !! ))**++,,XWWVVUUTKKLLMMNNVVUUTTSSCCDDEEFF^^]]\\[[;;<<==>>ffeeddcc33445566nnmmllkk++,,--..llkkjjiiXXYYZZ[[.--,,++*ppqqrrss1100//..hhiijjkk99887766``aabbccAA@@??>>XXYYZZ[[yyxxwwvv``__^^]]IIJJKKLLDDCCBBAA - - }}~~{{zzyyxx**++,,--wwvvuutt""##$$%%~~}}|| - - --..//00TSSRRQQPOOPPQQRRRRQQPPOOGGHHIIJJZZYYXXWW??@@AABBbbaa``__778899::jjiihhgg//001122ccbbaa``\\]]^^__*))((''&ttuuvvww--,,++**llmmnnoo55443322ddeeffgg==<<;;::\\]]^^__uuttssrr\\[[ZZYYMMNNOOPP@@??>>== - -   - -wwvvuutt..//0011ssrrqqpp&&''(()){{zzyyxx !!11223399ONMLKKJJSSTTUUVVNNMMLLKKKKLLMMNNVVUUTTSSCCDDEEFF^^]]\\[[;;<<==>>ffeeddcc33445566__^^]]\\``aabbcc&%%$$##"xxyyzz{{))((''&&ppqqrrss1100//..hhiijjkk99887766``aabbccqqppoonnXXWWVVUUQQRRSSTT<<;;::99  - -  ssrrqqpp22334455oonnmmll**++,,--wwvvuutt""##$$%%~~}}||::;;<<==IIHHGGFFWWXXYYZZJJIIHHGGOOPPQQRRRRQQPPOOGGHHIIJJZZYYXXWW??@@AABBbbaa``__778899::[[ZZYYXXiijjkkll"!! ||}}~~%%$$##""ttuuvvww--,,++**llmmnnoo55443322ddeeffggmmllkkjjTTSSRRQQUUVVWWXX33221100 - -  oonnmmll66778899kkjjiihh..//0011ssrrqqpp&&''(()){{zzyyxx !!>>??@@AAEEDDCCBB[[\\]]^^FFEEDDCCSSTTUUVVNNMMLLKKKKLLMMNNVVUUTTSSCCDDEEFF^^]]\\[[;;<<==>>WWVVUUTTmmnnoopp!! xxyyzz{{))((''&&ppqqrrss1100//..hhiijjkkiihhggffPPOONNMMYYZZ[[\\//..--,,  - - kkjjiihg::;;<<==ggffeedd22334455oonnmmll**++,,--wwvvuutt""##$$%%~~}}||{{zzBBCCDDEEAA@@??>>__``aabbBBAA@@??WWXXYYZZJJIIHHGGOOPPQQRRRRQQPPOOGGHHIIJJZZYYXXWW??@@AABBSSRRQQKKqqrrsstt||}}~~%%$$##""ttuuvvww--,,++**llmmnnooeeddccbbLLKKJJII]]^^__``++**))(( - - fedccbba>>??@@AAccbbaa``66778899kkjjiihh..//0011ssrrqqpp&&''(()){{zzyyxx !!yyxxwwvvFFGGHHII==<<;;::ccddeeff>>==<<;;[[\\]]^^FFEEDDCCSSTTUUVVNNMMLLKKKKLLMMNNVVUUTTSSCCDDEEFFJJIIHHGGuuvvwwxx!! xxyyzz{{))((''&&ppqqrrssaa``__^^HHGGFFEEaabbccdd''&&%%$$  !!""##a``__^^]BBCCDDEE__^^]]\\::;;<<==ggffeedd22334455oonnmmll**++,,--wwvvuutt""##$$%%uuttssrrJJKKQQRR99876543gghhiijj::998877__``aabbBBAA@@??WWXXYYZZJJIIHHGGOOPPQQRRRRQQPPOOGGHHIIJJFFEEDDCCyyzz{{ ||}}~~%%$$##""ttuuvvww]]\\[[ZZDDCCBBAAeeffgghh##""!!!!""##$$~~}} - - $$%%&&'']\\[[ZZYFFGGHHII[[ZZYYXX>>??@@AAccbbaa``66778899kkjjiihh..//0011ssrrqqpp&&''(())qqppoonnSSTTUUVV3221100/kkllmmnn66554433ccddeeff>>==<<;;[[\\]]^^FFEEDDCCSSTTUUVVNNMMLLKKKKLLMMNNBBAA@@?? - - !! xxyyzz{{YYXXWWVV@@??>>==iijjkkll%%&&''((||{{zzyy  (())**++YXXWWVVUJJKKLLMMWWVVUUTTBBCCDDEE__^^]]\\::;;<<==ggffeedd22334455oonnmmll**++,,--mmllkkjjWWXXYYZZ/..--,,+ooppqqrr221100//gghhiijj::998877__``aabbBBAA@@??WWXXYYZZJJIIHHGGOOPPQQRR>>==<<;; - -||}}~~UUTTSSRR<<;;::99mmnnoopp))**++,,xxwwvvuu!!""##$$~~}} - - ,,--..//UTTSSRRQNNOOPPQQSSRRQQPPFFGGHHII[[ZZYYXX>>??@@AAccbbaa``66778899kkjjiihh..//0011iiccbbaa[[\\]]^^+**))(('ssttuuvv..--,,++kkllmmnn66554433ccddeeff>>==<<;;[[\\]]^^FFEEDDCCSSTTUUVV::993322 QQPPOONN88776655qqrrsstt~}|--..//00ttssrrqq%%&&''((||{{zzyy  00112233QPONMLKKRRSSTTUUOONNMMLLJJKKLLMMWWVVUUTTBBCCDDEE__^^]]\\::;;<<==ggffeedd22334455``__^^]]__``aabb'&&%%$$#wwxxyyzz**))((''ooppqqrr221100//gghhiijj::998877__``aabbBBAA@@??WWXXYYZZ1100//.. - -MMLLKKJJ44332211uuvvwwxx {{zzyyxx11223344ppoonnmm))**++,,xxwwvvuu!!""##$$~~}}99::;;<>??@@AAccbbaa``66778899\\[[ZZYYcciijjkk#""!! {{||}}~~&&%%$$##ssttuuvv..--,,++kkllmmnn66554433ccddeeff>>==<<;;[[\\]]^^--,,++** - -  IIHHGGFF00//..--yyzz{{|| - - - -wwvvuutt55667788llkkjjii--..//00ttssrrqq%%&&''((||{{zzyy ==>>??@@FFEEDDCCZZ[[\\]]GGFFEEDDRRSSTTUUOONNMMLLJJKKLLMMWWVVUUTTBBCCDDEE__^^]]\\::;;<<==XXWWVVUUllmmnnoo""!! wwxxyyzz**))((''ooppqqrr221100//gghhiijj::998877__``aabb))((''&&  - -EEDDCCBB,,++**))}}~~ ssrrqqpp99::;;<>??@@AATTSSRRQQppqqrrss{{||}}~~&&%%$$##ssttuuvv..--,,++kkllmmnn66554433ccddeeff%%$$##"" - -  AA@@??>>((''&&%%oonnmmll==>>??@@ddccbbaa55667788llkkjjii--..//00ttssrrqq%%&&''((||{{zzyy zzyyxxwwEEFFGGHH>>==<<;;bbccddee??>>==<>??@@ddccbbaa55667788llkkjjii--..//00ttssrrqq%%&&''((rrqqppooRRSSTTUU43322110jjkkllmm77665544bbccddee??>>==<>==<< {{||}}~~&&%%$$##ssttuuvv !!""##~~ - - 1100//..$$%%&&'']\\[[ZZYMMNNOOPPTTSSRRQQEEFFGGHH\\[[ZZYY==>>??@@ddccbbaa55667788llkkjjii--..//00jjiiccbbZZ[[\\]],++**))(rrssttuu//..--,,jjkkllmm77665544bbccddee??>>==<>??@@ddccbbaa55667788]]\\[[ZZbbcciijj$##""!! zz{{||}}''&&%%$$rrssttuu//..--,,jjkkllmm77665544bbccddee??>>==<>??@@UUTTSSRRooppqqrrzz{{||}}''&&%%$$rrssttuu//..--,,jjkkllmm77665544bbccddee&&%%$$## - - - -  qqppoonn44556677mmllkkjj,,--..//uuttssrr$$%%&&''}}||{{zz xxwwvvuu--..//00ttssrrqq%%&&''((||{{zzyy  00112233QPONMLKKRRSSTTUUOONNMMLLJJKKLLMMWWVVUUTTBBCCDDEE__^^]]\\::;;<<==ggffeedd22334455]]\\[[ZZooppqqrr - - ttssrrqq11223344ppoonnmm))**++,,xxwwvvuu!!""##$$~~}}99::;;<>??@@AAccbbaa``66778899YYXXWWVVssttuuvvppoonnmm55667788llkkjjii--..//00ttssrrqq%%&&''((||{{zzyy ==>>??@@FFEEDDCCZZ[[\\]]GGFFEEDDRRSSTTUUOONNMMLLJJKKLLMMWWVVUUTTBBCCDDEE__^^]]\\::;;<<==UUTTSSRRwwxxyyzz - -llkkjjii99::;;<>??@@AAQQKKJJII{{ - - hgfedccb==>>??@@ddccbbaa55667788llkkjjii--..//00ttssrrqq%%&&''((||{{zzyy zzyyxxwwEEFFGGHH>>==<<;;bbccddee??>>==<>??@@ddccbbaa55667788llkkjjii--..//00ttssrrqq%%&&''((rrqqppooRRSSTTUU43322110jjkkllmm77665544bbccddee??>>==<>==''(())**ZYYXXWWVIIJJKKLLXXWWVVUUAABBCCDD``__^^]]99::;;<>??@@ddccbbaa55667788llkkjjii--..//00jjiiccbbZZ[[\\]],++**))(rrssttuu//..--,,jjkkllmm77665544bbccddee??>>==<>??@@ddccbbaa55667788]]\\[[ZZbbcciijj$##""!! zz{{||}}''&&%%$$rrssttuu//..--,,jjkkllmm77665544bbccddee??>>==<>??GGFFEEDDYYZZ[[\\HHGGFFEEQQRRSSTTPPOONNMMIIJJKKLLXXWWVVUUAABBCCDD``__^^]]99::;;<>??@@UUTTSSRRooppqqrrzz{{||}}''&&%%$$rrssttuu//..--,,jjkkllmm77665544bbccddee##""!!~~}}||**++,,--{{zzyyxxDDEEFFGG??>>==<>==YYZZ[[\\HHGGFFEEQQRRSSTTPPOONNMMIIJJKKLLXXWWVVUUAABBCCDDQQKKJJIIssttuuvv~~##""!! vvwwxxyy++**))((nnooppqq33221100ffgghhii{{zzyyxx..//0011 !!""##wwvvuuttHHIIJJKK;;::9987eeffgghh<<;;::99]]^^__``DDCCBBAAUUVVWWXXLLKKJJIIMMNNOOPPTTSSRRQQEEFFGGHHHHGGFFEEwwxxyyzzzz{{||}}''&&%%$$rrssttuu//..--,,jjkkllmmwwvvuutt22334455$$%%&&''ssrrqqppQQRRSSTT65433221iijjkkll88776655aabbccdd@@??>>==YYZZ[[\\HHGGFFEEQQRRSSTTPPOONNMMIIJJKKLLDDCCBBAA{{ - -~~##""!! vvwwxxyy++**))((nnooppqqssrrqqpp66778899(())**++oonnmmllUUVVWWXX100//..-mmnnoopp44332211eeffgghh<<;;::99]]^^__``DDCCBBAAUUVVWWXXLLKKJJIIMMNNOOPP@@??>>==  zz{{||}}''&&%%$$rrssttuu oonnmmll::;;<<==,,--..//kkjjiiccYYZZ[[\\-,,++**)qqrrsstt00//..--iijjkkll88776655aabbccdd@@??>>==YYZZ[[\\HHGGFFEEQQRRSSTT<<;;::99 - - ~~##""!! vvwwxxyy - - - -kkjjiihh>>??@@AA00112233bbaa``__]]^^__``)((''&&%uuvvwwxx,,++**))mmnnoopp44332211eeffgghh<<;;::99]]^^__``DDCCBBAAUUVVWWXX33221100 zz{{||}} ggffeeddBBCCDDEE44556677^^]]\\[[aabbccii%$$##""!yyzz{{||((''&&%%qqrrsstt00//..--iijjkkll88776655aabbccdd@@??>>==YYZZ[[\\//..--,,  - - ~~ccbbaa``FFGGHHII8899::;;ZZYYXXWWjjkkllmm! }}~~$$##""!!uuvvwwxx,,++**))mmnnoopp44332211eeffgghh<<;;::99]]^^__``++**))(( - -  __^^]]\\JJKKLLMM<<==>>??VVUUTTSSnnooppqq yyzz{{||((''&&%%qqrrsstt00//..--iijjkkll88776655aabbccdd''&&%%$$  - - [[ZZYYXXNNOOPPQQ@@AABBCCRRQQKKJJrrssttuu}}~~$$##""!!uuvvwwxx,,++**))mmnnoopp44332211eeffgghh##""!! - -  !!""##WWVVUUTTRRSSTTUUDDEEFFGGIIHHGGFFvvwwxxyy yyzz{{||((''&&%%qqrrsstt00//..--iijjkkll  - - $$%%&&''SSRRQQPPVVWWXXYYHHIIJJKKEEDDCCBBzz{{ }}~~$$##""!!uuvvwwxx,,++**))mmnnoopp - - (())**++OONNMMLLZZ[[\\]]LLMMNNOOAA@@??>> - -   yyzz{{||((''&&%%qqrrsstt !! ,,--..//KKJJIIHH^^__``aaPPQQRRSS==<<;;:: - - }}~~$$##""!!uuvvwwxx ""##$$%%~~}}|| - - 00112233GGFFEEDDbbccddeeTTUUVVWW99332211  yyzz{{|| - - ~}|&&''(()){{zzyyxx !! 99::;;<>??@@??>>==<>??@@AAccbbaa``66778899kkjjiihh..//0011ssrrqqpp&&''(()){{zzyyxx !!vvuuttssVVWWXXYY++**))((~~ppqqrrss  !!""##a``__^^]BBCCDDEE__^^]]\\::;;<<==ggffeedd22334455oonnmmll**++,,--wwvvuutt""##$$%%rrqqppooZZ[[\\]]''&&%%$$ttuuvvww !!""##$$~~}} - - $$%%&&'']\\[[ZZYFFGGHHII[[ZZYYXX>>??@@AAccbbaa``66778899kkjjiihh..//0011ssrrqqpp&&''(())nnmmllkk^^__``aa##""!! xxyyzz{{ - - ~%%&&''((||{{zzyy  (())**++YXXWWVVUJJKKLLMMWWVVUUTTBBCCDDEE__^^]]\\::;;<<==ggffeedd22334455oonnmmll**++,,--jjiiccbbbbcciijj||}}~~}|{{zzyy))**++,,xxwwvvuu!!""##$$~~}} - - ,,--..//UTTSSRRQNNOOPPQQSSRRQQPPFFGGHHII[[ZZYYXX>>??@@AAccbbaa``66778899kkjjiihh..//0011aa``__^^kkllmmnnbdQZ|vpf˂pZtlJv`fXQJ`ےJltH~fr˂p|ZdQbf~HXQJ`ےJltH~fp`JXQd|Z`f~J`ےltb~f`˂pZZdQbt~HfJ`ےltb~f`˂p`J~fpvHAZp˂Z|dXnvbے`lJtAdQbnXHfpv`ےbtbdQf`vtArdnXvZp˂|drnvpے`JJtArdnXvZp˂drtAH~fHAbےtArd~HfpbHAZbdQZ|`vXnZHAbtlJfpvbHAZbdQZ|`vXnr˂pdQbtHfpvbHAZpdQZ|vXnHAbےlJtApvnbHAZpdQZ|vXnXQr˂nXv`rXQJrtAJlpfH~JXQrd|Zv`fnrXQHAZp˂Z|dXnv|ZdQb`f~fprXQJ`tAJlfH~XQr˂|ZdQ`f~rXQJ`Jlt`vXn`JXQr|ZdQbvnXp˂rdrtAvpfے`JXQtArdnXv`p˂rdrtAvpfZHAbl|ZdQnXv˂rXQdrtAJvpfH`JXQrrd|Xv`f˂rXQdrtAJvpfHpZHAbf~H`ےbtbdQf`v˂pZHAdQbt~HfpJ`ےrbdQtAJlpfH~tl|vnXےbHAtbdQZf`vXpZHAbbtlHfpvےbHAbdQZ|vpf˂p`tl|v`f~XQJ`ےJltH~fr˂p|ZdQbf~HXQJ`ےJltH~fے`JXQbtl`ffpJ`ےltb~f`˂pZZdQbt~HfJ`ےltb~f`ے`JfpvHAZp˂Z|dXnvbے`lJtArvnXHAZp˂Z|dtbnf`vZdQbtv`fZp˂|drnvpے`JJtArdnXvZp˂drtAH~fJXQrZdQbtfpv㐙bHAZbdQZ|`vXnZHAbtlJfpvbHAZbdQZ|`vXnr˂pJtArdvnrbHAZpdQZ|vXnHAbےlJtApvnbHAZpdQZ|vXnXQr˂nXv`rXQJrtAJlpfH~JXQrd|Zv`frXQJrtAJlvpfHXnrlJtA~HfprXQJ`tAJlfH~XQr˂|ZdQ`f~rXQJ`Jlt`vXn˂pZHAlJtAnXv`p˂rdrtAvpfے`JXQtArdnXv`p˂rdrtAvpf`JXQr|ZdQXQJ`ے˂rbdtAJlvpfH`JXQrrd|Xv`f˂rXQdrtAJvpfHp`JXQf~fp`ےbtbdQf`v˂pZHAdQbt~Hfp`ےbtbdQf`v˂p`Jrd|vnXےbHAtbdQZf`vXpZHAbbtlHfpvےbHAbdQZ|vpfbے`rd|f~HXQJ`ےJltH~fr˂p|ZdQbf~HXQJ`ےJltH~f˂pZbtlHAZpdQZ|tbn~f`˂pZZdQbt~HfJ`ےltb~f`rbtvnXHAZp˂Z|dXnvbے`lJtArvnXHAZp˂Z|dXnvXQr˂ZdQbtv`f~Zp˂|drnvpے`JJtArdnXvZp˂drtAH~fJXQrZdQbtfpv㐙bHAZbdQZ|`vXnZHAbtlJfpvbHAZbdQZ|`vXnHAbے|ZdQb˂rXQdrtAJvpfvXnrHAے`lJtApvnbHAZpdQZ|vXnl|ZdQv`frXQJrtAJlpfH~JXQrd|Zv`frXQJrtAJlpfH~pZHAbl|ZfpvrXQJ`tAJlfH~XQr˂|ZdQ`f~rXQJ`Jlt`vXn˂p`Jl|ZnXv`fp˂rdrtAvpfے`JXQtArdnXv`p˂rdrtAvpf`JXQrnXv`J`ےltbHf`˂pZJXQrbrd|Xv`f˂rXQdrtAJvpfHbtl~Hfp`ےbtbdQf`v˂pZHAdQbt~Hfp`ےbtbdQf`vے`JdQbtnXv`ےbHAtbdQZf`vXpZHAbbtlHfpvےbHAbdQZ|vpfXQr˂dQbt璕~fpvXQJ`ےJltH~fr˂p|ZdQbf~HXQJ`ےJltH~f˂p`f~fpbHAZpdQZ|vXnHAbےtlJZdQbnHfpJ`ےltb~f`JtArdvnXHAZp˂Z|dXnvbے`lJtArvnXHAZp˂Z|dXnvXQr˂lJtArf~HZp˂|drnvpے`JJtArdnXvZp˂drtAH~fpZHAblJtArnXvbHAZbdQZ|`vXnZHAbtlJfpvbHAZbdQZ|`vXnJXQrvnX˂rXQdrtAJvpfH`JXQrtAd|Xv`fvnrbHAZpdQZ|vXn|ZdQv`f~rXQJrtAJlpfH~JXQrd|Zv`frXQJrtAJlpfH~p`JXQd|ZfpvrXQJ`tAJlfH~XQr˂|ZdQ`f~rXQJ`Jlt`vXnے`Jd|Z`f~p˂rdrtAvpfے`JXQtArdnXv`p˂rdrtAvpf˂pZHAv`fJ`ےltb~f`˂pZZdQbt~HfXQJ`ے˂rbdtAJlvpfHbtlfpv`ےbtbdQf`v˂pZHAdQbt~Hfp`ےbtbdQf`vr˂pdQbtnXv`ےbHAtbdQZf`vXpZHAbbtlHfpvےbHAbdQZ|vpfXQr˂dQbtHfpvXQJ`ےJltH~fr˂p|ZdQbf~HXQJ`ےJltH~fbے`~HfpbHAZpdQZ|vXnHAbےlJtApvnHAZpdQZ|tbn~f`|ZdQbnXv`HAZp˂Z|dXnvbے`lJtArvnXHAZp˂Z|dXnvZHAbl|ZdQf~fpZp˂|drnvpے`JJtArdnXvZp˂|drdrtAH~fp`JXQl|ZdQnXvbHAZbdQZ|`vXnZHAbtlJfpvbHAZbdQZ|`vXnJXQrvnX˂rXQdrtAJvpfH`JXQrrd|Xv`f˂rXQdrtAJvpfvXnrtlJf~HrXQJrtAJlpfH~JXQrd|Zv`frXQJrtAJlpfH~ے`JXQbtlvnXrXQJ`tAJlfH~XQr˂|ZdQ`f~rXQJ`tAJlJlt`vXnr˂pbtl`frQp˂rdtAJvpfے`JXQtArdnXv`p˂rdrtAvpf˂p`Jv`f~fJ`ےltb~f`˂pZZdQbt~HfJ`ےltbHf`˂p`tArdfpv`ےbtbdQf`v˂pZHAdQbt~Hfp`ےbtbdQf`vr˂pJtArdv`fےbHAtbdQZf`vXpZHAbbtlHfpvےbHAtbdQZbdQZ|vpfZHAbJtArdJHAZbdQZ|ltbH~fr˂p|ZdQbf~HXQJ`ےJltH~fXQrbtpvnbHAZpdQZ|vXnHAbےlJtApvnbHAZpdQZ|vXnJXQr|ZdQbnXv`fHAZp˂Z|dXnvbے`lJtArvnXHAZp˂Z|dXnv`JXQr|ZdQ~HfpZp˂|drnvpے`JJtArdnXvZp˂|drdrtAH~fے`JXQ|ZdQp˂rdrtAnvp`vXnZHAےtlJfpvbHAZbdQZ|`vXnl|ZXv`f˂rXQdrtAJvpfH`JXQrrd|Xv`f˂rXQdrtAJvpfH˂pZHAtl|~fpvrXQJrtAJlpfH~JXQrd|Zv`frXQJrtAJlpfH~˂pZbtlvnXrXQJ`tAJlfH~XQr˂|ZdQ`f~rXQJ`tAJlJlt`vXnr˂pbtlXQJ`ےJltfHfr˂p`JXQrtArdnXv`p˂rdrtAvpfdQbt璐~HfJ`ےltb~f`˂pZZdQbt~HfJ`ےltb~f`bے`ZdQbtnXv`ےbtbdQf`v˂pZHAdQbt~Hfp`ےbtbdQf`vHAbے|ZdQbv`f~fےbHAtbdQZf`vXpZHAbbtlHfpvےbHAtbdQZbdQZ|vpf`JXQr|ZdQbbHAZbdQZ|`vXnZHAbbtl|ZdQbfHfXQJ`ےJltH~flJtArpvnbHAZpdQZ|vXnHAbےlJtApvnbHAZpdQZ|vXnJXQrlJtA`f~HAZp˂Z|dXnvbے`lJtArvnXHAZp˂Z|dXnv`JXQrtlJpvnZp˂|drnvpے`JJtArdnXvZp˂|drdrtAH~f˂pZnXv`p˂rdrtAvpfے`JXQJtAdnXv`pvnbHAZbdQZ|`vXnd|ZXv`f˂rXQdrtAJvpfH`JXQrrd|Xv`f˂rXQdrtAJvpfH˂p`Jrd|HfpvrXQJrtAJlpfH~JXQrd|Zv`frXQJrtAJlpfH~˂p`tArdXv`frXQJ`tAJlfH~XQr˂|ZdQ`f~rXQJ`tAJlJlt`vXnHAbےf~fpXQJ`ےJltH~fr˂p|ZdQbf~HrXQJ`p˂rdtAJvpfdQbt~fpvJ`ےltb~f`˂pZZdQbt~HfJ`ےltb~f`XQr˂ZdQbtnXv`ےbtbdQf`v˂pZHAdQbt~Hfp`ےbtbdQf`vJXQr|ZdQb~HfےbHAtbdQZf`vXpZHAbbtlHfpvےbHAtbdQZbdQZ|vpf`JXQrvnXbHAZbdQZ|`vXnZHAbtlJfpvےHAZbdQZ|ltbH~fl|ZdQnXv`bHAZpdQZ|vXnHAbےlJtApvnbHAZpdQZ|vXnpZHAbl|Z`f~fpHAZp˂Z|dXnvbے`lJtArvnXHAZp˂Z|dXnv˂pZHAtl|pvnZp˂|drnvpے`JJtArdnXvZp˂|drdrtAH~f˂p`v`fp˂rdrtAvpfے`JXQtArdnXv`p˂rdrtAnvp`vXnbtlf~H˂rXQdrtAJvpfH`JXQrrd|Xv`f˂rXQdrtAJvpfHے`JdQbt璝vnXrXQJrtAJlpfH~JXQrd|Zv`frXQJrtAJlpfH~bے`ZdQbtXv`frXQJ`tAJlfH~XQr˂|ZdQ`f~rXQJ`tAJlJlt`vXnJXQr~HfpXQJ`ےJltH~fr˂p|ZdQbf~HXQJ`ےJltfHfr˂pJtArdfpvJ`ےltb~f`˂pZZdQbt~HfJ`ےltb~f`XQr˂lJtArv`f`ےbtbdQf`v˂pZHAdQbt~Hfp`ےbtbdQf`vJXQrlJtAfpvےbHAtbdQZf`vXpZHAbbtlHfpvےbHAtbdQZbdQZ|vpf˂pZHAvnXbHAZbdQZ|`vXnZHAbtlJfpvbHAZbdQZ|`vXn`JXQr|ZdQnXv`bHAZpdQZ|vXnHAbےlJtApvnbHAZpdQZ|vXnp`JXQd|Z~HfpHAZp˂Z|dXnvbے`lJtArvnXHAZp˂Z|dXnv˂p`Jrd|nrXQJZp˂|dtAnvpے`JJtArdnXvZp˂|drdrtAH~fbے`v`f~fp˂rdrtAvpfے`JXQtArdnXv`p˂rdrtAvpf˂pZbtlf~fp˂rXQdrtAJvpfH`JXQrrd|Xv`f˂rXQdrtAJvpfHr˂pdQbt璝vnXrXQJrtAJlpfH~JXQrd|Zv`frXQJrtAJlpfH~XQr˂ZdQbt`ےHArbdQZJltfH~XQr˂|ZdQ`f~rXQJ`tAJlJlt`vXnJXQrpvnXQJ`ےJltH~fr˂p|ZdQbf~HXQJ`ےJltH~fHAbے|ZdQbvnXJ`ےltb~f`˂pZZdQbt~HfJ`ےltb~f`ZHAbl|ZdQv`f~`ےbtbdQf`v˂pZHAdQbt~Hfp`ےbtbdQf`vpZHAbl|ZZp˂|drbnvf`vXpZHAbtlHfpvےbHAtbdQZbdQZ|vpf˂p|ZXv`fbHAZbdQZ|`vXnZHAbtlJfpvbHAZbdQZ|`vXn`JXQrtlJv`fbHAZpdQZ|vXnHAbےlJtApvnbHAZpdQZ|vXnے`JXQbtlfpvHAZp˂Z|dXnvbے`lJtArvnXHAZp˂Z|dXnvے`JdQbnXrXQJ`tAJlpfHnr˂ے`JXQJtArdnXvZp˂|drdrtAH~fdQbt璐~Hfp˂rdrtAvpfے`JXQtArdnXv`p˂rdrtAvpf˂p`tArd~Hfp˂rXQdrtAJvpfH`JXQrrd|Xv`f˂rXQdrtAJvpfHr˂pJtArdnXv`rXQJrtAJlpfH~JXQrd|Zv`frXQJrtAJlpfH~XQr˂v`f~ےbHAtbdQZf`vXpZHAbrbt|ZdQ`fHrXQJ`tAJlJlt`vXnlJtArpvnXQJ`ےJltH~fr˂p|ZdQbf~HXQJ`ےJltH~fJXQr|ZdQbvnXJ`ےltb~f`˂pZZdQbt~HfJ`ےltb~f``JXQr|ZdQf~H`ےbtbdQf`v˂pZHAdQbt~Hfp`ےbtbdQf`vp`JXQfpvZp˂|drnvpے`JlJtAdbnXvfpvےbHAtbdQZbdQZ|vpfd|ZXv`fbHAZbdQZ|`vXnZHAbtlJfpvbHAZbdQZ|`vXn˂pZHAtl|v`f~bHAZpdQZ|vXnHAbےlJtApvnbHAZpdQZ|vXn˂pZbtlfpvHAZp˂Z|dXnvbے`lJtArvnXHAZp˂Z|dXnvr˂pnXv`rXQJ`tAJlfH~XQr˂|ZdQ`f~nrXQJZp˂|drdrtAH~fdQbt~fpvp˂rdrtAvpfے`JXQtArdnXv`p˂rdrtAvpfbے`ZdQbtfpv˂rXQdrtAJvpfH`JXQrrd|Xv`f˂rXQdrtAJvpfHHAbے|ZdQbnXv`rXQJrtAJlpfH~JXQrd|Zv`frXQJrtAJlpfH~ZHAbf~HےbHAtbdQZf`vXpZHAbbtlHfpv`ےHArbdQZtAJlJlt`vXnl|ZdQnXv`XQJ`ےJltH~fr˂p|ZdQbf~HXQJ`ےJltH~fJXQrlJtAnXv`J`ےltb~f`˂pZZdQbt~HfJ`ےltb~f``JXQrtlJffpv`ےbtbdQf`v˂pZHAdQbt~Hfp`ےbtbdQf`vے`JXQfpvZp˂|drnvpے`JJtArdnXvZp˂|drtbdQZbdQZ|vpfbtlf~HbHAZbdQZ|`vXnZHAbtlJfpvbHAZbdQZ|`vXn˂p`Jrd|f~HbHAZpdQZ|vXnHAbےlJtApvnbHAZpdQZ|vXn˂p`tArdnrXQHAZp˂Z|dXnvbے`lJtArvnXHAZp˂Z|dXnvr˂pnXv`frXQJ`tAJlfH~XQr˂|ZdQ`f~rXQJ`tAJl|drdrtAH~fJtArdfpvp˂rdrtAvpfے`JXQtArdnXv`p˂rdrtAvpfXQr˂ZdQbtfpv˂rXQdrtAJvpfH`JXQrrd|Xv`f˂rXQdrtAJvpfHJXQr|ZdQbJ`ےrbdQtAJlpfH~JXQrd|Zv`frXQJrtAJlpfH~`JXQr~fpvےbHAtbdQZf`vXpZHAbbtlHfpvےbHAtbdQZtAJlJlt`vXn|ZdQnXv`XQJ`ےJltH~fr˂p|ZdQbf~HXQJ`ےJltH~fpZHAbl|ZnXv`fJ`ےltb~f`˂pZZdQbt~HfJ`ےltb~f`˂pZHAtl|HAZp˂Z|dtbnf`v˂pZHAdQbt~Hfp`ےbtbdQf`vbtlnXvZp˂|drnvpے`JJtArdnXvZp˂|drtbdQZbdQZ|r˂pbtlf~fpbHAZbdQZ|`vXnZHAbtlJfpvbHAZbdQZ|`vXnے`JdQbt璕~fpvbHAZpdQZ|vXnHAbےlJtApvnbHAZpdQZ|vXnbے`ZdQbnrXQJrtAJlvpfHXnrے`JlJtArvnXHAZp˂Z|dXnv|ZdQb`f~rXQJ`tAJlfH~XQr˂|ZdQ`f~rXQJ`tAJl|dr`vXn`JXQr|ZdQbvnXp˂rdrtAvpfے`JXQtArdnXv`p˂rdrtAvpfXQr˂lJtArnXv˂rXQdrtAJvpfH`JXQrrd|Xv`f˂rXQdrtAJvpfHJXQrXv`f`ےbtbdQf`v˂pZHAXQrbtd|Zv`frXQJrtAJlpfH~tlJHfpvےbHAtbdQZf`vXpZHAbbtlHfpvےbHAtbdQZtAJltbdQZf`vXtl|nXv`p˂rdrtAvpfے`JXQtArdnXv`p˂rdrtAvpf˂pZbtlf~fp˂rXQdrtAJvpfH`JXQrrd|Xv`f˂rXQdrtAJvpfHpZHAbpJAHrvˍpf|drnvpZdQbtf~HXQJ`ےJltH~fr˂p|ZdQbf~HXQJ`ےJltH~fHAbے|ZdQbvnXJ`ےltb~f`˂pZZdQbt~HfJ`ےltb~f`ے`Jˁ`ZH~ㅐftAJlfH~lJtAfpvbHAZbdQZ|`vXnZHAbtlJfpvbHAZbdQZ|`vXn`JXQrtlJv`fbHAZpdQZ|vXnHAbےlJtApvnbHAZpdQZ|vXnXQr˂QXb㉀۝`vXntbdQZf`vXrd|nXv`p˂rdrtAvpfے`JXQtArdnXv`p˂rdrtAvpf˂p`tArd~Hfp˂rXQdrtAJvpfH`JXQrrd|Xv`f˂rXQdrtAJvpfHp`JXQp`ZQXvˍp||dtAnvpZdQbtf~fpXQJ`ےJltH~fr˂p|ZdQbf~HXQJ`ےJltH~fJXQr|ZdQbvnXJ`ےltb~f`˂pZZdQbt~HfJ`ےltb~f`r˂pb㉀ۑpdrQtJltfH~l|ZvnXbHAZbdQZ|`vXnZHAbtlJfpvbHAZbdQZ|`vXn˂pZHAtl|v`f~bHAZpdQZ|vXnHAbےlJtApvnbHAZpdQZ|vXnZHAbJAHrJltbnvf`vXdQbtv`fp˂rdrtAvpfے`JXQtArdnXv`p˂rdrtAvpfbے`ZdQbtfpv˂rXQdrtAJvpfH`JXQrrd|Xv`f˂rXQdrtAJvpfHے`JXQˁ`ZQXbAdZ|pfHnr˂lJtAr~HfpXQJ`ےJltH~fr˂p|ZdQbf~HXQJ`ےJltH~fJXQrlJtAnXv`J`ےltb~f`˂pZZdQbt~HfJ`ےltb~f`r˂pb㉀XndrQtf`vXp`JXQd|ZvnXbHAZbdQZ|`vXnZHAbtlJfpvbHAZbdQZ|`vXn˂p`Jrd|f~HbHAZpdQZ|vXnHAbےlJtApvnbHAZpdQZ|vXn`JXQrvˍpfJltnvpr˂pdQbtv`f~fp˂rdrtAvpfے`JXQtArdnXv`p˂rdrtAvpfXQr˂ZdQbtfpv˂rXQdrtAJvpfH`JXQrrd|Xv`f˂rXQdrtAJvpfH˂pZH~ㅐfbAdZ|fH~ZHAbl|ZdQpvnXQJ`ےJltH~fr˂p|ZdQbf~HXQJ`ےJltH~fpZHAbl|ZnXv`fJ`ےltb~f`˂pZZdQbt~HfJ`ےltb~f`HAbے`vXndrQtf`vXے`JXQbtlXv`fbHAZbdQZ|`vXnZHAbtlJfpvbHAZbdQZ|`vXnے`JdQbt璕~fpvbHAZpdQZ|vXnHAbےlJtApvnbHAZpdQZ|vXn`JXQrvˍpfJltnvpr˂pJtArd~Hfp˂rdrtAvpfے`JXQtArdnXv`p˂rdrtAvpfXQr˂lJtArnXv˂rXQdrtAJvpfH`JXQrrd|Xv`f˂rXQdrtAJvpfH˂p`H~ㅐfbAdZ|fH~`JXQr|ZdQpvnXQJ`ےJltH~fr˂p|ZdQbf~HXQJ`ےJltH~fp`JXQd|Z`f~J`ےltb~f`˂pZZdQbt~HfJ`ےltb~f`JXQr`vXndrQtf`vX˂pZbtlXv`fbHAZbdQZ|`vXnZHAbtlJfpvbHAZbdQZ|`vXnr˂pdQbtHfpvbHAZpdQZ|vXnHAbےlJtApvnbHAZpdQZ|vXn˂pZHAvˍpfJltnvpHAbے|ZdQb~fpvp˂rdrtAvpfے`JXQtArdnXv`p˂rdrtAvpfZHAbl|ZdQnXv˂rXQdrtAJvpfH`JXQrrd|Xv`f˂rXQdrtAJvpfHbے`H~ㅐfbAdZ|fH~`JXQrtlJnXv`XQJ`ےJltH~fr˂p|ZdQbf~HXQJ`ےJltH~fے`JXQbtl`ffpJ`ےltb~f`˂pZZdQbt~HfJ`ےltb~f`JXQr`vXndrQtf`vX˂p`tArdf~HbHAZbdQZ|`vXnZHAbtlJfpvbHAZbdQZ|`vXnr˂pJtArdvnrbHAZpdQZ|vXnHAbےlJtApvnbHAZpdQZ|vXn˂p`ZvˍpfJltnvpJXQr|ZdQbfpvp˂rdrtAvpfے`JXQtArdnXv`p˂rdrtAvpf`JXQr|ZdQXQJ`ے˂rbdtAJlvpfH`JXQrrd|Xv`f˂rXQdrtAJvpfHQXb㉀ەH~ㅐfbAdZ|fH~˂pZHAtl|nXv`XQJ`ےJltH~fr˂p|ZdQbf~HXQJ`ےJltH~f˂pZbtlHAZpdQZ|tbn~f`˂pZZdQbt~HfJ`ےltb~f`pJAHr`vXndrQtf`vXbے`ZdQbtf~fpbHAZbdQZ|`vXnZHAbtlJfpvbHAZbdQZ|`vXnHAbے|ZdQb˂rXQdrtAJvpfvXnrHAے`lJtApvnbHAZpdQZ|vXnˁ`ZvˍpfJltnvpJXQrlJtAvnXp˂rdrtAvpfے`JXQtArdnXv`p˂rdrtAvpf`JXQrnXv`J`ےltbHf`˂pZJXQrbrd|Xv`f˂rXQdrtAJvpfHQXb㉀ەH~ㅐfbAdZ|fH~˂p`Jrd|v`fXQJ`ےJltH~fr˂p|ZdQbf~HXQJ`ےJltH~f˂p`f~fpbHAZpdQZ|vXnHAbےtlJZdQbnHfpJ`ےltb~f`p`ZQX`vXndrQtf`vXXQr˂ZdQbt~HfpbHAZbdQZ|`vXnZHAbtlJfpvbHAZbdQZ|`vXnJXQrvnX˂rXQdrtAJvpfH`JXQrtAd|Xv`fvnrbHAZpdQZ|vXnb㉀ۑpvˍpfJltnvppZHAbl|ZvnXp˂rdrtAvpfے`JXQtArdnXv`p˂rdrtAvpf˂pZHAv`fJ`ےltb~f`˂pZZdQbt~HfXQJ`ے˂rbdtAJlvpfHJAHr󙐕H~ㅐfbAdZ|fH~ے`JdQbtv`ffXQJ`ےJltH~fr˂p|ZdQbf~HXQJ`ےJltH~fbے`~HfpbHAZpdQZ|vXnHAbےlJtApvnHAZpdQZ|tbn~f`ˁ`ZQX`vXndrQtf`vXXQr˂lJtArpvnbHAZbdQZ|`vXnZHAbtlJfpvbHAZbdQZ|`vXnJXQrvnX˂rXQdrtAJvpfH`JXQrrd|Xv`f˂rXQdrtAJvpfvXnےb㉀ۑpvˍpfJltnvpp`JXQd|ZrXQJ`p˂rdtAJvpfے`JXQtArdnXv`p˂rdrtAvpf˂p`Jv`f~fJ`ےltb~f`˂pZZdQbt~HfJ`ےltbHf``JXQr`ZQXbH~ㅐfbAdZ|fH~r˂pdQbtےHAZbdQZ|ltbH~fr˂p|ZdQbf~HXQJ`ےJltH~fXQrbtpvnbHAZpdQZ|vXnHAbےlJtApvnbHAZpdQZ|vXn˂pZۑpJ`vXndrQtf`vXZHAbl|ZdQp˂rdrtAnvp`vXnZHAےtlJfpvbHAZbdQZ|`vXnl|ZXv`f˂rXQdrtAJvpfH`JXQrrd|Xv`f˂rXQdrtAJvpfHHAbےAHr󙐂˕vˍpfJltnvpے`JXQbnXvXQJ`ےJltfHfr˂p`JXQrtArdnXv`p˂rdrtAvpfdQbt璐~HfJ`ےltb~f`˂pZZdQbt~HfJ`ےltb~f``JXQr`ZQXbH~ㅐfbAdZ|fH~r˂p`f~fpbHAZbdQZ|`vXnZHAbbtl|ZdQbfHfXQJ`ےJltH~flJtArpvnbHAZpdQZ|vXnHAbےlJtApvnbHAZpdQZ|vXn˂p`ۑp``vXndrQtf`vX`JXQrvnXp˂rdrtAvpfے`JXQJtAdnXv`pvnbHAZbdQZ|`vXnd|ZXv`f˂rXQdrtAJvpfH`JXQrrd|Xv`f˂rXQdrtAJvpfHJXQrZQXb㉀vˍpfJltnvp˂pZv`fXQJ`ےJltH~fr˂p|ZdQbf~HrXQJ`p˂rdtAJvpfdQbt~fpvJ`ےltb~f`˂pZZdQbt~HfJ`ےltb~f`˂pZHAۑpJAHH~ㅐfbAdZ|fH~HAbے~HfpbHAZbdQZ|`vXnZHAbtlJfpvےHAZbdQZ|ltbH~fl|ZdQnXv`bHAZpdQZ|vXnHAbےlJtApvnbHAZpdQZ|vXnbے`r󙐂ˁ``vXndrQtf`vX`JXQrvnXp˂rdrtAvpfے`JXQtArdnXv`p˂rdrtAnvp`vXnbtlf~H˂rXQdrtAJvpfH`JXQrrd|Xv`f˂rXQdrtAJvpfHJXQrZQXb㉀vˍpfJltnvp˂p`v`f~XQJ`ےJltH~fr˂p|ZdQbf~HXQJ`ےJltfHfr˂pJtArdfpvJ`ےltb~f`˂pZZdQbt~HfJ`ےltb~f`˂p`Jۑp`ZH~ㅐfbAdZ|fH~JXQrbfpvbHAZbdQZ|`vXnZHAbtlJfpvbHAZbdQZ|`vXn`JXQr|ZdQnXv`bHAZpdQZ|vXnHAbےlJtApvnbHAZpdQZ|vXnXQr˂QXb㉀۝`vXndrQtKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLL \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv35_1.dat b/mpdf/qrcode/data/qrv35_1.dat deleted file mode 100644 index 76cb198..0000000 --- a/mpdf/qrcode/data/qrv35_1.dat +++ /dev/null @@ -1,313 +0,0 @@ -~}~}~}~}~}~}~}~}|{|{|{{{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefecccdcdcddcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9878787878787878765656565433333344343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!~}~}~}~}~}~}~}~}{{{|{|{||{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefecdcdcdcddcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPONMNMNMNMNMNMNMNMLKKKKKKLLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9878787878787878765656565343434344343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!~}~}~}~}~}~}~}~}{|{|{|{||{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefecdcdcdcddccccccdbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPONMNMNMNMNMNMNMNMKLKLKLKLLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9878787878787878765656565343434344343433321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!~}~}~}~}~}~}~}~}{|{|{|{||{{{{{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefecdcdcdcdcdcdcdcdbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQPOPOPOPONMNMNMNMNMNMNMNMKLKLKLKLLKLKLKKKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9878787878787878765656565343434343334343421212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!~}~}~}~}~}~}~}~}{|{|{|{||{|{|{zyzyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefecdcdcdcdcdcdcdcdbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQRQRQPOPOPOPOPOPONMNMNMNMNMNMNMNMKLKLKLKLKKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9878787878787878765656565343434343434343421212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!~}~}~}~}~}~}~}~}{|{|{|{|zyzyzyzyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefeccccccdccdcdcdcdbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMKLKLKLKLLKJIJIJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9878787878787878765656565343433333434343421212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!~}~}~}~}~}~}~}~}{{{{{{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghgfefefefefefefedcdcdcdccdcdcdcdbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMKLKLKKKKJIJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9878787878787876565656565334343433434343421212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!~}~}~}~}~}~}~}~}|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvuvuvuvutststststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghgfefefefefefefefedcdcdcdccdcdccccbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMKKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9878787876565656565656565434343433434343421212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutststststststststststsrqrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghgfefefefefefefefedcdcdcdcccdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9878787876565656565656565434343433333334321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!~}~}~}~}{{{{{|{||{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqrqrqrqpopopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMLKLKKKKKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCDCBABABABABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9878787876565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!~}~}~}~}{|{|{|{||{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopopopopoponmnmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghgfefefefefefefefedcdcccccdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMKLKLKLKLLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABABA@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9878787876565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!~}~}~}~}{|{|{|{||{|{{{{{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmnmnmnmlklklklklklklklklkjijijijijijijijihghghghgfefefefefefefefecdcdcdcddcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMKLKLKLKLLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9878787876565656565656565333334344343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!~}~}~}~}{|{|{|{|{|{|{|{|zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklklklklkjijijijijijijijijihghghghgfefefefefefefefecdcdcdcddcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMKLKLKLKLKKKKKLKLJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9878787876565656565656565343434344343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!~}~}~}~}{|{|{|{|{|{|{|{|zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijijijijihghghghghgfefefefefefefefecdcdcdcdccccdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMKLKLKLKLKLKLKLKLJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9:9:9:9878787876565656565656565343434344343333321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!~}~}~}~}{|{{{{{{{|{|{|{|zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefecdcdcdcddcdcbabababababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMKLKLKLKKKLKLKLKLJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9:9878787878787876565656565656565343434344343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!~}~}~}~}~}~}|{|{|{|{{|{|{|{|zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefecdcdcdccbabababababababababa`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMKKKKLKLKKLKLKLKLJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:987878787878787876565656565656565343434342121212121212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!~}~}~}~}~}~}~}~}|{|{|{|{{|{|{|{{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefeccccdcdcbabababababababa`_`_`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKKLKLKLKLJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9878787878787878765656565656565653433333321212121212121210/0/0/0/0/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!~}~}~}~}~}~}~}~}|{|{|{|{{{{{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefedcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKKLKKKKKKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9878787878787878765656565656565654343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!    ~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefedcdcdcccdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9878787878787878765656565654343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!                    - - - - - - - -                 - - - - - - - -                 - - - - - - - -                 - - - - - - - -                  - - - - - - - -                    - - - - - - - -                 - - - - - - - - -                 - - - - - - - - - - -                 - - - - - - - -               - - - - - - - -             - - - - - - - -             - - - - - - - -             - - - - - - - -             - - - - - - - -             - - - - - - - -             - - - - - - - -             - - - - - - - -             - - - - - - - -             - - - - - - - - PPOONNMM YYZZ[[\\//..--,,==>>??@@FFEEDDCCaabbccdd@@??>>== YYZZ[[\\HHGGFFEEQQRRSSTTPPOONNMMIIJJKKLLXXWWVVUU - - AABBCCDDQQKKJJIIssttuuvvkkjjiihg::;;<<==ggffeedd22334455~~oonnmmll##""!! **++,,--vvwwxxyywwvvuutt++**))((""##$$%%nnooppqq~~}}||33221100ffgghhii{{zz""!!BBCCDDEEAA@@??>>__``aabbBBAA@@?? WWXXYYZZJJIIHHGGOOPPQQRRRRQQPPOOGGHHIIJJZZYYXXWW ??@@AABBSSRRQQKKqqrrssttmmllkkjj8899::;;iihhggff00112233||}}~~qqppoonn%%$$##""(())**++ttuuvvwwyyxxwwvv--,,++** !!""##llmmnnoo~~55443322ddeeffgg$$##""!!@@AABBCCCCBBAA@@]]^^__``DDCCBBAA - - UUVVWWXXLLKKJJIIMMNNOOPPTTSSRRQQEEFFGGHH\\[[ZZYY ==>>??@@LLKKJJII]]^^__``++**))((AABBCCDDBBAA@@??eeffgghh<<;;::99]]^^__``DDCCBBAA - - UUVVWWXXLLKKJJIIMMNNOOPPTTSSRRQQEEFFGGHHHHGGFFEEwwxxyyzzfedccbba>>??@@AAccbbaa``66778899kkjjiihh..//0011zz{{||}}ssrrqqpp''&&%%$$&&''(())rrssttuu{{zzyyxx//..--,, !!jjkkllmmyyxxwwvvFFGGHHII==<<;;::ccddeeff>>==<<;;[[\\]]^^FFEEDDCC - -SSTTUUVVNNMMLLKKKKLLMMNNVVUUTTSS - - CCDDEEFFJJIIHHGGuuvvwwxxiihgfedc<<==>>??eeddccbb44556677mmllkkjj!! ,,--..//xxyyzz{{uuttssrr))((''&&$$%%&&''ppqqrrss}}||{{zz1100//..hhiijjkk{{zzyyxxDDEEFFGG??>>==<<aabbccdd@@??>>== YYZZ[[\\HHGGFFEEQQRRSSTTPPOONNMMIIJJKKLLXXWWVVUU - - AABBCCDDHHGGFFEEaabbccdd''&&%%$$EEFFGGHH>>==<<;; iijjkkll88776655aabbccdd@@??>>== YYZZ[[\\HHGGFFEEQQRRSSTTPPOONNMMIIJJKKLLDDCCBBAA!!""##{{a``__^^] - -BBCCDDEE__^^]]\\::;;<<==ggffeedd22334455~~oonnmmll##""!! **++,,--vvwwxxyywwvvuutt++**))((""##$$%%nnooppqquuttssrrJJKKQQRR99876543gghhiijj::998877__``aabbBBAA@@?? WWXXYYZZJJIIHHGGOOPPQQRRRRQQPPOOGGHHIIJJFFEEDDCC!!yyzz{{cbbaa``_ @@AABBCCaa``__^^8899::;;iihhggff00112233||}}~~qqppoonn%%$$##""(())**++ttuuvvwwyyxxwwvv--,,++** !!""##llmmnnoowwvvuuttHHIIJJKK;;::9987eeffgghh<<;;::99]]^^__``DDCCBBAA - - UUVVWWXXLLKKJJIIMMNNOOPPTTSSRRQQEEFFGGHHDDCCBBAAeeffgghh{{##""!!IIJJKKQQ::998765!!""##$$mmnnoopp~~}}44332211eeffgghh<<;;::99]]^^__``DDCCBBAA - - UUVVWWXXLLKKJJIIMMNNOOPP@@??>>==$$%%&&'']\\[[ZZY FFGGHHII[[ZZYYXX >>??@@AAccbbaa``66778899kkjjiihh..//0011zz{{||}}ssrrqqpp''&&%%$$&&''(())rrssttuuqqppoonnSSTTUUVV3221100/ !!""kkllmmnn66554433ccddeeff>>==<<;;[[\\]]^^FFEEDDCC - -SSTTUUVVNNMMLLKKKKLLMMNNBBAA@@??""##$$%%_^^]]\\[ - - DDEEFFGG]]\\[[ZZ<<==>>??eeddccbb44556677mmllkkjj!! ,,--..//xxyyzz{{uuttssrr))((''&&$$%%&&''ppqqrrssssrrqqppQQRRSSTT65433221 iijjkkll88776655aabbccdd@@??>>== YYZZ[[\\HHGGFFEEQQRRSSTTPPOONNMMIIJJKKLL@@??>>== iijjkkllzzyyxxwwRRSSTTUU43322110%%&&''((qqrrsstt||{{zzyy00//..-- iijjkkll88776655aabbccdd@@??>>== YYZZ[[\\HHGGFFEEQQRRSSTT<<;;::99(())**++YXXWWVVUJJKKLLMMWWVVUUTT - - BBCCDDEE__^^]]\\::;;<<==ggffeedd22334455~~oonnmmll##""!! **++,,--vvwwxxyymmllkkjj - -WWXXYYZZ/..--,,+##$$%%&&ooppqqrr~~}}||{{221100//gghhiijj::998877__``aabbBBAA@@?? WWXXYYZZJJIIHHGGOOPPQQRR>>==<<;;&&''(())[ZZYYXXWHHIIJJKKYYXXWWVV - -@@AABBCCaa``__^^8899::;;iihhggff00112233||}}~~qqppoonn%%$$##""(())**++ttuuvvwwoonnmmll UUVVWWXX100//..-!!""##$$mmnnoopp~~}}44332211eeffgghh<<;;::99]]^^__``DDCCBBAA - - UUVVWWXXLLKKJJIIMMNNOOPP<<;;::99!!""##$$mmnnooppvvuuttssVVWWXXYY0//..--,))**++,,uuvvwwxxxxwwvvuu,,++**))!!""##$$mmnnoopp~~}}44332211eeffgghh<<;;::99]]^^__``DDCCBBAA - - UUVVWWXX33221100,,--..//UTTSSRRQNNOOPPQQSSRRQQPPFFGGHHII[[ZZYYXX >>??@@AAccbbaa``66778899kkjjiihh..//0011zz{{||}}iiccbbaa [[\\]]^^~}|{{+**))(('''(())**ssttuuvvzzyyxxww..--,,++ !!""kkllmmnn66554433ccddeeff>>==<<;;[[\\]]^^FFEEDDCC - -SSTTUUVV::993322**++,,--WVVUUTTSLLMMNNOOUUTTSSRR DDEEFFGG]]\\[[ZZ<<==>>??eeddccbb44556677mmllkkjj!! ,,--..//xxyyzz{{kkjjiicc - - YYZZ[[\\~-,,++**)%%&&''((qqrrsstt||{{zzyy00//..-- iijjkkll88776655aabbccdd@@??>>== YYZZ[[\\HHGGFFEEQQRRSSTT88776655%%&&''((qqrrssttrrqqppooZZ[[\\]]~}|,++**))(--..//00yyzz{{||ttssrrqq((''&&%%%%&&''((qqrrsstt||{{zzyy00//..-- iijjkkll88776655aabbccdd@@??>>== YYZZ[[\\//..--,,00112233QPONMLKK RRSSTTUUOONNMMLLJJKKLLMMWWVVUUTT - - BBCCDDEE__^^]]\\::;;<<==ggffeedd22334455~~``__^^]]__``aabbzzyyxxww'&&%%$$#++,,--..wwxxyyzzvvuuttss**))((''##$$%%&&ooppqqrr~~}}||{{221100//gghhiijj::998877__``aabbBBAA@@?? WWXXYYZZ1100//....//0011SRRQQPONPPQQRRSSQQPPOONNHHIIJJKKYYXXWWVV - -@@AABBCCaa``__^^8899::;;iihhggff00112233||}}~~bbaa``__]]^^__``}|{{zzyy)((''&&%))**++,,uuvvwwxxxxwwvvuu,,++**))!!""##$$mmnnoopp~~}}44332211eeffgghh<<;;::99]]^^__``DDCCBBAA - - UUVVWWXX~~}}44332211))**++,,uuvvwwxxnnmmllkk ^^__``aa{{zzyyxx(''&&%%$11223344}}~~ppoonnmm$$##""!!))**++,,uuvvwwxxxxwwvvuu,,++**))!!""##$$mmnnoopp~~}}44332211eeffgghh<<;;::99]]^^__``++**))((99::;;<>??@@AAccbbaa``66778899\\[[ZZYY - - cciijjkkvvuuttss#""!! //001122{{||}}~~rrqqppoo&&%%$$##''(())**ssttuuvvzzyyxxww..--,,++ !!""kkllmmnn66554433ccddeeff>>==<<;;[[\\]]^^--,,++**223399::MLKKJJII - - TTUUVVWWMMLLKKJJLLMMNNOOUUTTSSRR DDEEFFGG]]\\[[ZZ<<==>>??eeddccbb44556677^^]]\\[[ aabbcciixxwwvvuu%$$##""!--..//00yyzz{{||ttssrrqq((''&&%%%%&&''((qqrrsstt||{{zzyy00//..-- iijjkkll88776655aabbccdd@@??>>== YYZZ[[\\||{{zzyy00//..----..//00yyzz{{||jjiiccbb - - - -bbcciijjwwvvuutt$##""!! 55667788llkkjjii --..//00yyzz{{||ttssrrqq((''&&%%%%&&''((qqrrsstt||{{zzyy00//..-- iijjkkll88776655aabbccdd''&&%%$$==>>??@@FFEEDDCCZZ[[\\]]GGFFEEDD RRSSTTUUOONNMMLLJJKKLLMMWWVVUUTT - - BBCCDDEE__^^]]\\::;;<<==XXWWVVUU llmmnnoorrqqppoo33445566nnmmllkk""!! ++,,--..wwxxyyzzvvuuttss**))((''##$$%%&&ooppqqrr~~}}||{{221100//gghhiijj::998877__``aabb))((''&&;;<<==>>HHGGFFEE XXYYZZ[[IIHHGGFFPPQQRRSSQQPPOONNHHIIJJKKYYXXWWVV - -@@AABBCCaa``__^^8899::;;ZZYYXXWW - - jjkkllmmttssrrqq! 11223344}}~~ppoonnmm$$##""!!))**++,,uuvvwwxxxxwwvvuu,,++**))!!""##$$mmnnoopp~~}}44332211eeffgghh<<;;::99]]^^__``xxwwvvuu,,++**))11223344}}~~aa``__^^ kkllmmnnssrrqqpp99::;;<>??@@AATTSSRRQQppqqrrssnnmmllkk778899::jjiihhgg//001122{{||}}~~rrqqppoo&&%%$$##''(())**ssttuuvvzzyyxxww..--,,++ !!""kkllmmnn66554433ccddeeff%%$$##""??@@AABBDDCCBBAA\\]]^^__EEDDCCBB - - TTUUVVWWMMLLKKJJLLMMNNOOUUTTSSRR DDEEFFGG]]\\[[ZZ<<==>>??VVUUTTSSnnooppqqppoonnmm55667788llkkjjii --..//00yyzz{{||ttssrrqq((''&&%%%%&&''((qqrrsstt||{{zzyy00//..-- iijjkkll88776655aabbccddttssrrqq((''&&%%55667788]]\\[[ZZooppqqrroonnmmll==>>??@@ddccbbaa55667788llkkjjii --..//00yyzz{{||ttssrrqq((''&&%%%%&&''((qqrrsstt||{{zzyy00//..-- iijjkkllzzyyxxwwEEFFGGHH>>==<<;;bbccddee??>>==<<ZZ[[\\]]GGFFEEDD RRSSTTUUOONNMMLLJJKKLLMMWWVVUUTT - - BBCCDDEEKKJJIIHHttuuvvwwjjiihgfe;;<<==>>ffeeddcc33445566nnmmllkk""!! ++,,--..wwxxyyzzvvuuttss**))((''##$$%%&&ooppqqrr~~}}||{{221100//gghhiijj{{zzyy!!CCDDEEFF@@??>>==``aabbccAA@@??>> XXYYZZ[[IIHHGGFFPPQQRRSSQQPPOONNHHIIJJKKYYXXWWVV - -@@AABBCCRRQQKKJJrrssttuullkkjjii99::;;<>??@@ddccbbaa55667788llkkjjii --..//00yyzz{{||ttssrrqq((''&&%%%%&&''((qqrrsstt||{{zzyy00//..-- iijjkkllllkkjjii ==>>??@@UUTTSSRRwwxxyyzzfedccbbaEEFFGGHH\\[[ZZYY ==>>??@@ddccbbaa55667788llkkjjii --..//00yyzz{{||ttssrrqq((''&&%%%%&&''((qqrrssttrrqqppooRRSSTTUU43322110 !!jjkkllmm77665544bbccddee??>>==<<ZZ[[\\]]GGFFEEDD RRSSTTUUOONNMMLLJJKKLLMMCCBBAA@@!!""##$$`__^^]]\ - - CCDDEEFF^^]]\\[[;;<<==>>ffeeddcc33445566nnmmllkk""!! ++,,--..wwxxyyzzvvuuttss**))((''##$$%%&&ooppqqrrttssrrqqKKQQRRSS87654332hhiijjkk99887766``aabbccAA@@??>> XXYYZZ[[IIHHGGFFPPQQRRSSQQPPOONNHHIIJJKKEEDDCCBB!!""zz{{baa``__^ AABBCCDD``__^^]]99::;;<>==<<%%&&''((\[[ZZYYXGGHHIIJJZZYYXXWW ??@@AABBbbaa``__778899::jjiihhgg//001122{{||}}~~rrqqppoo&&%%$$##''(())**ssttuuvvppoonnmm TTUUVVWW21100//. !!""##llmmnnoo~~55443322ddeeffgg==<<;;::\\]]^^__EEDDCCBB - - TTUUVVWWMMLLKKJJLLMMNNOOAA@@??>>##$$%%&&^]]\\[[Z - - EEFFGGHH\\[[ZZYY ==>>??@@ddccbbaa55667788llkkjjii --..//00yyzz{{||ttssrrqq((''&&%%%%&&''((qqrrssttddccbbaaEEFFGGHHHHGGFFEE$$%%&&'']\\[[ZZY MMNNOOPPTTSSRRQQEEFFGGHH\\[[ZZYY ==>>??@@ddccbbaa55667788llkkjjii --..//00yyzz{{||jjiiccbb - - ZZ[[\\]]~}|,++**))(&&''(())rrssttuu{{zzyyxx//..--,, !!jjkkllmm77665544bbccddee??>>==<<ZZ[[\\]]GGFFEEDD RRSSTTUU;;::9933))**++,,XWWVVUUTKKLLMMNNVVUUTTSS - - CCDDEEFF^^]]\\[[;;<<==>>ffeeddcc33445566nnmmllkk""!! ++,,--..wwxxyyzzllkkjjii - - XXYYZZ[[.--,,++*$$%%&&''ppqqrrss}}||{{zz1100//..hhiijjkk99887766``aabbccAA@@??>> XXYYZZ[[IIHHGGFFPPQQRRSS==<<;;::''(())**ZYYXXWWVIIJJKKLLXXWWVVUU - - AABBCCDD``__^^]]99::;;<>??@@ddccbbaa55667788llkkjjii --..//00yyzz{{||\\[[ZZYY MMNNOOPP@@??>>==,,--..//UTTSSRRQ - - UUVVWWXXLLKKJJIIMMNNOOPPTTSSRRQQEEFFGGHH\\[[ZZYY ==>>??@@ddccbbaa55667788]]\\[[ZZ - -bbcciijjwwvvuutt$##""!! ..//0011zz{{||}}ssrrqqpp''&&%%$$&&''(())rrssttuu{{zzyyxx//..--,, !!jjkkllmm77665544bbccddee??>>==<<ZZ[[\\]]..--,,++11223399ONMLKKJJ - -SSTTUUVVNNMMLLKKKKLLMMNNVVUUTTSS - - CCDDEEFF^^]]\\[[;;<<==>>ffeeddcc33445566__^^]]\\``aabbccyyxxwwvv&%%$$##",,--..//xxyyzz{{uuttssrr))((''&&$$%%&&''ppqqrrss}}||{{zz1100//..hhiijjkk99887766``aabbccAA@@??>> XXYYZZ[[00//..--//001122RQQPONMLQQRRSSTTPPOONNMMIIJJKKLLXXWWVVUU - - AABBCCDD``__^^]]99::;;<>??@@ddccbbaa55667788TTSSRRQQ - - UUVVWWXX3322110099::;;<>??@@UUTTSSRRooppqqrroonnmmll66778899kkjjiihh..//0011zz{{||}}ssrrqqpp''&&%%$$&&''(())rrssttuu{{zzyyxx//..--,, !!jjkkllmm77665544bbccddee&&%%$$##>>??@@AAEEDDCCBB[[\\]]^^FFEEDDCC - -SSTTUUVVNNMMLLKKKKLLMMNNVVUUTTSS - - CCDDEEFF^^]]\\[[;;<<==>>WWVVUUTT mmnnooppqqppoonn44556677mmllkkjj!! ,,--..//xxyyzz{{uuttssrr))((''&&$$%%&&''ppqqrrss}}||{{zz1100//..hhiijjkk99887766``aabbcc((''&&%%<<==>>??GGFFEEDD YYZZ[[\\HHGGFFEEQQRRSSTTPPOONNMMIIJJKKLLXXWWVVUU - - AABBCCDD``__^^]]99::;;<>??@@AAccbbaa``66778899YYXXWWVVssttuuvv__^^]]\\JJKKLLMM''&&%%$$==>>??@@FFEEDDCCZZ[[\\]]GGFFEEDD RRSSTTUUOONNMMLLJJKKLLMMWWVVUUTT - - BBCCDDEE__^^]]\\::;;<<==UUTTSSRRwwxxyyzz[[ZZYYXX NNOOPPQQ{{##""!!AABBCCDDBBAA@@??^^__``aaCCBBAA@@ - - VVWWXXYYKKJJIIHHNNOOPPQQSSRRQQPPFFGGHHII[[ZZYYXX >>??@@AAQQKKJJII!!""##{{WWVVUUTT - - RRSSTTUUzzyyxxwwEEFFGGHH>>==<<;;bbccddee??>>==<<ZZ[[\\]]GGFFEEDD RRSSTTUUOONNMMLLJJKKLLMMWWVVUUTT - - BBCCDDEEHHGGFFEE$$%%&&''SSRRQQPP - - VVWWXXYYvvuuttssIIJJKKQQ::998765ffgghhii;;::9988^^__``aaCCBBAA@@ - - VVWWXXYYKKJJIIHHNNOOPPQQSSRRQQPPFFGGHHIIDDCCBBAA(())**++OONNMMLLZZ[[\\]]rrqqppooRRSSTTUU43322110 !!jjkkllmm77665544bbccddee??>>==<<ZZ[[\\]]GGFFEEDD RRSSTTUUOONNMMLLJJKKLLMM@@??>>==,,--..//KKJJIIHH^^__``aannmmllkk VVWWXXYY0//..--,""##$$%%nnooppqq~~}}||33221100ffgghhii;;::9988^^__``aaCCBBAA@@ - - VVWWXXYYKKJJIIHHNNOOPPQQ<<;;::9900112233GGFFEEDDbbccddeejjiiccbb - - ZZ[[\\]]~}|,++**))(&&''(())rrssttuu{{zzyyxx//..--,, !!jjkkllmm77665544bbccddee??>>==<<ZZ[[\\]]GGFFEEDD RRSSTTUU3322110099::;;<>??@@??>>==<< !!jjkkllmm]]\\[[ZZ - -bbcciijjwwvvuutt$##""!! ..//0011zz{{||}}ssrrqqpp''&&%%$$&&''(())rrssttuu{{zzyyxx//..--,, !!jjkkllmm77665544bbccddee??>>==<<ZZ[[\\]]++**))((AABBCCDD;;::9988""##$$%%nnooppqqYYXXWWVV kkllmmnnssrrqqpp22334455~~oonnmmll##""!! **++,,--vvwwxxyywwvvuutt++**))((""##$$%%nnooppqq~~}}||33221100ffgghhii;;::9988^^__``aa''&&%%$$EEFFGGHH77665544&&''(())rrssttuuUUTTSSRRooppqqrroonnmmll66778899kkjjiihh..//0011zz{{||}}ssrrqqpp''&&%%$$&&''(())rrssttuu{{zzyyxx//..--,, !!jjkkllmm77665544bbccddee{{##""!!IIJJKKQQ~~}}||33221100**++,,--vvwwxxyyQQKKJJIIssttuuvvkkjjiihg::;;<<==ggffeedd22334455~~oonnmmll##""!! **++,,--vvwwxxyywwvvuutt++**))((""##$$%%nnooppqq~~}}||33221100ffgghhiizzyyxxwwRRSSTTUU{{zzyyxx//..--,,..//0011zz{{||}}HHGGFFEEwwxxyyzzfedccbba>>??@@AAccbbaa``66778899kkjjiihh..//0011zz{{||}}ssrrqqpp''&&%%$$&&''(())rrssttuu{{zzyyxx//..--,, !!jjkkllmmvvuuttssVVWWXXYYwwvvuutt++**))((22334455~~DDCCBBAA!!""##{{a``__^^] - -BBCCDDEE__^^]]\\::;;<<==ggffeedd22334455~~oonnmmll##""!! **++,,--vvwwxxyywwvvuutt++**))((""##$$%%nnooppqqrrqqppooZZ[[\\]]ssrrqqpp''&&%%$$66778899@@??>>==$$%%&&'']\\[[ZZY FFGGHHII[[ZZYYXX >>??@@AAccbbaa``66778899kkjjiihh..//0011zz{{||}}ssrrqqpp''&&%%$$&&''(())rrssttuunnmmllkk ^^__``aaoonnmmll##""!! ::;;<<==<<;;::99(())**++YXXWWVVUJJKKLLMMWWVVUUTT - - BBCCDDEE__^^]]\\::;;<<==ggffeedd22334455~~oonnmmll##""!! **++,,--vvwwxxyyjjiiccbb - - - -bbcciijjkkjjiihh>>??@@AA33221100,,--..//UTTSSRRQNNOOPPQQSSRRQQPPFFGGHHII[[ZZYYXX >>??@@AAccbbaa``66778899kkjjiihh..//0011zz{{||}}aa``__^^ kkllmmnnggffeeddBBCCDDEEbdQZ|drtAvpfH~f˂pZ˂pZtlJnXv`v`fp˂rXQJ`ےdrtAJltvpfH~fے`JXQr˂pJtAd|ZdQbnXv`f~HpvnXQJ`ےbHAZJltbdQZ|H~f`vXnp`JXQd|Zd|ZXv`f`f~˂rXQJ`ےdrtAJltbvpfH~f``JXQr˂pZrd|ZdQbtXv`f~Hf˂rXQJ`ےdrtAJltbvpfH~f`˂p`J˂p`Jrd|~fpvHfpvHAZp˂rXQJZ|drtAJlXnvpfH~bے`JXQrlJtAd|ZdQbnXv`fHfpvrXQJ`ےbrtAJltbdQpfH~f`v˂p`tArdtArdnXvXv`fZp˂rXQJ`|drtAJlnvpfH~ے`JXQr˂JtArd|ZdQnXv`f~Zp˂rXQJ`|drtAJlnvpfH~r˂pr˂pJtArd`f~fp~HfbHAZp˂rbdQZ|drtA`vXnvpfZHAbے`JXQbtltArd|ZdQbnXv`fHfp˂rXQJ`ےdrtAJltvpfdrtAJltH~f`vXnHAbےHAbےtArdf~fp~HfpXQJ`ےbHAZJltbdQZ|H~f`vXnr˂pZHAb|ZdQbtlJf~HfpvrXQJ`bHAZp˂rbdQZ|dtAJ`vXnvpfr˂pdQbtdQbt~fpvHfpvJ`ےbHAZpltbdQZ|~f`vXn˂pZHAbےZdQbtlJtA~HfpvnJ`ےbHAZpltbdQZ|~f`vXnXQr˂XQr˂ZdQbtnXv`nXvrXQJ`ےbrtAJltbdQpfH~f`vJXQr˂pZHAd|ZdQbtv`f~HfpnrXQ`ےbHAZp˂tbdQZ|df`vXnvJXQr|ZdQb|ZdQb`f~fp~HfrXQJ`ےbHAtAJltbdQZfH~f`vXXQr˂pZHAb|ZdQbtl`f~HfpvrXQJ`ےbHAtAJltbdQZfH~f`vX`JXQr`JXQr|ZdQvnXpvnp˂rXQJ`ےdrtAJltvpfH~fے`JXQr˂pJtAd|ZdQbnXv`f~HpvnXQJ`ےbHAZJltbdQZ|H~fJltbdQZ|`vXnvpf`JXQr`JXQr|ZdQbvnXvnXbHAZp˂rbdQZ|drtA`vXnvpfZHAbے`JXQtlJtArdfpvnXv`ےHAZp˂rbdQZ|drtAltbvpfH~fZHAbl|ZdQl|ZdQnXv`nXvbHAZp˂rXQdQZ|drtAJvXnvpfHHAbے`JXQrlJtArd|pvnXv`fbHAZp˂rXQdQZ|drtAJvXnvpfHpZHAbpZHAbl|Zf~H`f~fp`ےbHAZp˂tbdQZ|df`vXnv˂pZHAbے`dQbtlJtAr~HfpvnXJ`ےHAZp˂rbdQZ|dtAJlXnvpfH~˂pZHAtl|tl|vnXpvnےbHAZp˂tbdQZ|drf`vXnvppZHAbے`JbtlJtArdHfpvnXvےbHAZp˂tbdQZ|drf`vXnvp˂pZ˂pZbtlv`fXv`fXQJ`ےbHAZJltbdQZ|H~f`vXnr˂pZHAb|ZdQbtlJf~HfpvrXQJ`bHAZp˂rbdQZ|dtAJ`vXnbdQZ|drtAvpfH~f˂p`˂p`tl|v`fv`f~p˂rXQJ`ےdrtAJltvpfH~fے`JXQr˂ptArd|ZdQbnXv`f~Hp˂rXQJ`ےdrtAJltnvpH~f`vXnے`JXQbtlbtlf~H`ffp˂rXQJ`ےdrtAJltbvpfH~f``JXQr˂pZrd|ZdQbtXv`f~Hf˂rXQJ`ےdrtAJltbvpfH~f`ے`Jے`JdQbt璅fpvvnXHAZp˂rXQJZ|drtAJlXnvpfH~bے`JXQrlJtArd|ZvnXv`fHAZp˂rXQJZ|drtAJltbnpfH~f`vbے`ZdQbtZdQbtv`fXv`fZp˂rXQJ`|drtAJlnvpfH~ے`JXQr˂JtArd|ZdQnXv`f~Zp˂rXQJ`|drtAJlnvpfH~HAbےHAbے|ZdQb~Hfp~fpvbHAZp˂rbdQZ|drtA`vXnvpfZHAbے`JXQtlJtArdfpvnXv`ےHAZp˂rbdQZ|drtAltbvpfdrtAJltH~f`vXnJXQrJXQrZdQbt~HfpfpvXQJ`ےbHAZJltbdQZ|H~f`vXnr˂pZHAb|ZdQbtlJf~HfpvXQJ`ےbHAZJltbdQZ|fHf`vXnr˂pr˂pJtArdJtArdfpvvnrJ`ےbHAZpltbdQZ|~f`vXn˂pZHAbےZdQbtlJtA~HfpvnJ`ےbHAZpltbdQZ|~f`vXnXQr˂XQr˂lJtArnXv`v`frXQJ`ےbrtAJltbdQpfH~f`vJXQr˂pZHAd|ZdQbtv`f~HfprXQJ`ےbrtAJltbdQvpfHf`vXnrJXQrlJtAlJtA~HfpfpvrXQJ`ےbHAtAJltbdQZfH~f`vXXQr˂pZHAb|ZdQbtl`f~HfpvrXQJ`ےbHAtAJltbdQZfH~f`vX`JXQr`JXQrtlJvnXnXv`p˂rXQJ`ےdrtAJltvpfH~fے`JXQr˂ptArd|ZdQbnXv`f~Hp˂rXQJ`ےdrtAJltnvpH~fJltbdQZ|`vXnvpf˂pZHA˂pZHAlJtAvnXnXv`ːbHAZp˂rbdQZ|drtA`vXnvpfZHAbے`JXQtlJtArdfpvnXv`bHAZp˂rbdQZ|drtA`vXnvpf`JXQr`JXQr|ZdQ|ZdQnXv`XQJ`ےbHAZp˂rbdQZ|dtAJlvXnvpfHHAbے`JXQrlJtArd|pvnXv`fbHAZp˂rXQdQZ|drtAJvXnvpfHp`JXQp`JXQd|Zf~fp~Hfp`ےbHAZp˂tbdQZ|df`vXnv˂pZHAbے`dQbtlJtAr~HfpvnX`ےbHAZp˂tbdQZ|df`vXnv˂p`J˂p`Jrd|rd|vnXnrXQJےbHAZp˂tbdQZ|dtAf`vXnvppZHAbے`JbtlJtArdHfpvnXvےbHAZp˂tbdQZ|drf`vXnvp˂p`˂p`tArdv`f~f~HXQJ`ےbHAZJltbdQZ|H~f`vXnr˂pZHAb|ZdQbtlJf~HfpvXQJ`ےbHAZJltbdQZ|fHf`vXnbdQZ|drtAvpfH~fbے`bے`rd|v`f~ff~Hp˂rXQJ`ےdrtAJltvpfH~fے`JXQr˂ptArd|ZdQbnXv`f~Hp˂rXQJ`ےdrtAJltvpfH~f˂pZ˂pZbtlbtlf~fpHAZp˂rXQdQZ|drtAJtbnvpfH~f``JXQr˂pZrd|ZdQbtXv`f~Hf˂rXQJ`ےdrtAJltbvpfH~f`r˂prbtdQbtvnXvnXHAZp˂rXQJZ|drtAJlXnvpfH~bے`JXQrlJtArd|ZvnXv`fHAZp˂rXQJZ|drtAJlXnvpfH~XQr˂XQr˂ZdQbtZdQbtv`f~`ےHAZp˂rbdQZ|drJltnvpfH~ے`JXQr˂JtArd|ZdQnXv`f~Zp˂rXQJ`|drtAJlnvpfH~JXQrJXQrb|ZdQbfpvfpvbHAZp˂rbdQZ|drtA`vXnvpfZHAbے`JXQtlJtArdfpvnXv`bHAZp˂rbdQZ|drtA`vXnvpfdrtAJltH~f`vXnJXQrJXQrZdQbtpvnfpvXQJ`ےbHAZJltbdQZ|H~f`vXnr˂pZHAb|ZdQbtlJf~HfpvXQJ`ےbHAZJltbdQZ|H~f`vXnHAbےHAbے|ZdQb|ZdQbvnX˂rXQJ`ےdrtAJltbvpf~f`vXnr˂pZHAے`ZdQbtlJtA~HfpvnJ`ےbHAZpltbdQZ|~f`vXnZHAbl|ZdQl|ZdQv`fv`f~rXQJ`ےbrtAJltbdQpfH~f`vJXQr˂pZHAd|ZdQbtv`f~HfprXQJ`ےbrtAJltbdQpfH~f`vpZHAbpZHAbl|Zl|ZfpvZp˂rXQJ`|drtAJlbnvfH~f`vXXQr˂pZHA|ZdQbtl`f~HfpvrXQJ`ےbHAtAJltbdQZfH~f`vX˂pZHAtl|tl|nXv`nXv`p˂rXQJ`ےdrtAJltvpfH~fے`JXQr˂ptArd|ZdQbnXv`f~Hp˂rXQJ`ےdrtAJltvpfH~fJltbdQZ|`vXnvpf˂p`J˂p|Zl|ZXv`fnXv`fbHAZp˂rbdQZ|drtA`vXnvpfZHAbے`JXQtlJtArdfpvnXv`bHAZp˂rbdQZ|drtA`vXnvpf`JXQr`JXQrtlJnXv`v`fJ`ےbHAZpltbdQZ|Hf`vXn˂pZHAbےJXQrblJtArd|pvnXv`fbHAZp˂rXQdQZ|drtAJvXnvpfHے`JXQbtlbtl~Hfpfpv`ےbHAZp˂tbdQZ|df`vXnv˂pZHAbے`dQbtlJtAr~HfpvnX`ےbHAZp˂tbdQZ|df`vXnvے`Jے`JdQbtdQbnXnXv`rXQJ`ےbHAtAJltbdQZpfHf`vXnr˂pZHAbے`JXQbtlJtArdHfpvnXvےbHAZp˂tbdQZ|drf`vXnvpbے`ZdQbtZdQbtf~Hf~fpXQJ`ےbHAZJltbdQZ|H~f`vXnr˂pZHAb|ZdQbtlJf~HfpvXQJ`ےbHAZJltbdQZ|H~f`vXnbdQZ|drtAvpfH~fXQr˂dQbtdQbt璐~Hf~fpvp˂rXQJ`ےdrtAJltvpfH~fے`JXQr˂ptArd|ZdQbnXv`f~Hp˂rXQJ`ےdrtAJltvpfH~f˂p`˂p`tArdf~fp~HfpbHAZp˂rXQdQZ|drtAJvXnvpfHHAbے`JXQrtlJrd|ZdQbnXv`fHfp˂rXQJ`ےdrtAJltbvpfH~f`r˂pJtArdJtArdvnXnXv`HAZp˂rXQJZ|drtAJlXnvpfH~bے`JXQrlJtArd|ZvnXv`fHAZp˂rXQJZ|drtAJlXnvpfH~XQr˂XQr˂lJtArv`f~f~HےbHAZp˂tbdQZ|drf`vXnvppZHAbے`JrbtJtArd|ZdQnXv`fHZp˂rXQJ`|drtAJlnvpfH~JXQrlJtAlJtAfpvvnXbHAZp˂rbdQZ|drtA`vXnvpfZHAbے`JXQtlJtArdfpvnXv`bHAZp˂rbdQZ|drtA`vXnvpfdrtAJltH~f`vXnpZHAblJtArlJtArpvnnXvXQJ`ےbHAZJltbdQZ|H~f`vXnr˂pZHAb|ZdQbtlJf~HfpvXQJ`ےbHAZJltbdQZ|H~f`vXnJXQrJXQr|ZdQbvnXvnX˂rXQJ`ےdrtAJltbvpfH~f``JXQr˂pZtAd|ZdQbtXv`f~HfvnrJ`ےbHAZpltbdQZ|~f`vXn`JXQr|ZdQ|ZdQv`f~f~HrXQJ`ےbrtAJltbdQpfH~f`vJXQr˂pZHAd|ZdQbtv`f~HfprXQJ`ےbrtAJltbdQpfH~f`vp`JXQp`JXQd|ZfpvfpvZp˂rXQJ`|drtAJlnvpfH~ے`JXQr˂lJtAd|ZdQbnXv`f~fpvrXQJ`ےbHAtAJltbdQZfH~f`vX˂p`Jrd|rd|nXv`v`fp˂rXQJ`ےdrtAJltvpfH~fے`JXQr˂ptArd|ZdQbnXv`f~Hp˂rXQJ`ےdrtAJltvpfH~fJltbdQZ|`vXnvpfے`Jd|Zd|ZXv`f`f~bHAZp˂rbdQZ|drtA`vXnvpfZHAbے`JXQtlJtArdfpvnXv`bHAZp˂rbdQZ|drtA`vXnvpf˂pZHA˂pZHAtl|v`fv`f~J`ےbHAZpltbdQZ|~f`vXn˂pZHAbےZdQbtlJtA~HfpvnXQJ`ےbHAZp˂rbdQZ|dtAJlvXnvpfH˂pZbtlbtlfpvfpv`ےbHAZp˂tbdQZ|df`vXnv˂pZHAbے`dQbtlJtAr~HfpvnX`ےbHAZp˂tbdQZ|df`vXnvr˂pr˂pdQbtnXv`nXv`rXQJ`ےbHAtAJltbdQZfH~f`vXXQr˂pZHAb|ZdQbtl`f~HfpvnrXQJےbHAZp˂tbdQZ|dtAf`vXnvpXQr˂ZdQbtZdQbtf~fp~HfpXQJ`ےbHAZJltbdQZ|H~f`vXnr˂pZHAb|ZdQbtlJf~HfpvXQJ`ےbHAZJltbdQZ|H~f`vXnbdQZ|drtAvpfH~fXQr˂dQbtdQbt~fpvHfpvp˂rXQJ`ےdrtAJltvpfH~fے`JXQr˂ptArd|ZdQbnXv`f~Hp˂rXQJ`ےdrtAJltvpfH~fbے`bے`ZdQbt~HfpfpvbHAZp˂rXQdQZ|drtAJvXnvpfHHAbے`JXQrlJtArd|pvnXv`fHAZp˂rXQdQZ|drtAJtbnvpfH~f`HAbے|ZdQb|ZdQbnXv`nXv`HAZp˂rXQJZ|drtAJlXnvpfH~bے`JXQrlJtArd|ZvnXv`fHAZp˂rXQJZ|drtAJlXnvpfH~ZHAbZHAbl|ZdQf~Hf~fpےbHAZp˂tbdQZ|drf`vXnvppZHAbے`JbtlJtArdHfpvnXv`ےHAZp˂rbdQZ|drJltnvpfH~pZHAbl|Zl|ZvnXvnXbHAZp˂rbdQZ|drtA`vXnvpfZHAbے`JXQtlJtArdfpvnXv`bHAZp˂rbdQZ|drtA`vXnvpfH~fdrtAJltH~f`vXnp`JXQl|ZdQl|ZdQnXv`nXvXQJ`ےbHAZJltbdQZ|H~f`vXnr˂pZHAb|ZdQbtlJf~HfpvXQJ`ےbHAZJltbdQZ|H~f`vXnJXQrJXQrlJtAvnXnXv`˂rXQJ`ےdrtAJltbvpfH~f``JXQr˂pZrd|ZdQbtXv`f~Hf˂rXQJ`ےdrtAJltbvpf~f`vXnr`JXQrtlJtlJf~HffpvrXQJ`ےbrtAJltbdQpfH~f`vJXQr˂pZHAd|ZdQbtv`f~HfprXQJ`ےbrtAJltbdQpfH~f`vے`JXQے`JXQbtlfpvvnXZp˂rXQJ`|drtAJlnvpfH~ے`JXQr˂JtArd|ZdQnXv`f~Zp˂rXQJ`|drtAJlbnvfH~f`vXے`JdQbtdQbtv`fv`ffp˂rXQJ`ےdrtAJltvpfH~fے`JXQr˂ptArd|ZdQbnXv`f~Hp˂rXQJ`ےdrtAJltvpfH~f`vXnJltbdQZ|`vXnvpfr˂pbtlbtlf~H`frQbHAZp˂rbdQZ|dtAJ`vXnvpfZHAbے`JXQtlJtArdfpvnXv`bHAZp˂rbdQZ|drtA`vXnvpf˂p`J˂p`Jrd|v`f~ff~HJ`ےbHAZpltbdQZ|~f`vXn˂pZHAbےZdQbtlJtA~HfpvnJ`ےbHAZpltbdQZ|Hf`vXn˂p`˂p`tArdtArdfpv々nrXQ`ےbHAZp˂tbdQZ|df`vXnv˂pZHAbے`dQbtlJtAr~HfpvnX`ےbHAZp˂tbdQZ|df`vXnvr˂pr˂pJtArdnXv`fv`frXQJ`ےbHAtAJltbdQZfH~f`vXXQr˂pZHAb|ZdQbtl`f~HfpvrXQJ`ےbHAtAJltbdQZpfHf`vXnr˂XQr˂lJtArlJtAr~HfppvnXQJ`ےbHAZJltbdQZ|H~f`vXnr˂pZHAb|ZdQbtlJf~HfpvXQJ`ےbHAZJltbdQZ|H~f`vXnvpfbdQZ|drtAvpfH~fZHAbJtArdJtArdfpvJHAZp˂rbdQZ|drtAltbvpfH~fے`JXQr˂ptArd|ZdQbnXv`f~Hp˂rXQJ`ےdrtAJltvpfH~fXQr˂XQrbtZdQbtpvnfpvbHAZp˂rXQdQZ|drtAJvXnvpfHHAbے`JXQrlJtArd|pvnXv`fbHAZp˂rXQdQZ|drtAJvXnvpfHJXQrJXQr|ZdQb|ZdQbnXv`fJ`ےHAZp˂rbdQZ|dtAJlXnvpfH~bے`JXQrlJtArd|ZvnXv`fHAZp˂rXQJZ|drtAJlXnvpfH~`JXQr`JXQr|ZdQ~fpv~HfpےbHAZp˂tbdQZ|drf`vXnvppZHAbے`JbtlJtArdHfpvnXvےbHAZp˂tbdQZ|drf`vXnvpp`JXQp`JXQd|Zd|ZvnXrXQJ`bHAZp˂rbdQZ|dtAJ`vXnvpfZHAbے`JXQtlJtArdfpvnXv`bHAZp˂rbdQZ|drtA`vXnvpfH~fdrtAJltH~f`vXnے`JXQ|ZdQ|ZdQnXv`p˂rXQJ`ےdrtAJltnvpH~f`vXnr˂pZHAے|ZdQbtlJf~HfpvXQJ`ےbHAZJltbdQZ|H~f`vXnpZHAbl|Zl|ZXv`fnXv`f˂rXQJ`ےdrtAJltbvpfH~f``JXQr˂pZrd|ZdQbtXv`f~Hf˂rXQJ`ےdrtAJltbvpfH~f`˂pZHA˂pZHAtl|tl|~fpvHAZp˂rXQJZ|drtAJltbnpfH~f`vJXQr˂pZHAd|ZdQbtv`f~HfprXQJ`ےbrtAJltbdQpfH~f`v˂pZbtlbtlnXvvnXZp˂rXQJ`|drtAJlnvpfH~ے`JXQr˂JtArd|ZdQnXv`f~Zp˂rXQJ`|drtAJlnvpfH~r˂pr˂pdQbtdQbtv`f~fےHAZp˂rbdQZ|drtAltbvpfH~fے`JXQr˂ptArd|ZdQbnXv`f~Hp˂rXQJ`ےdrtAJltvpfH~f`vXnJltbdQZ|`vXnr˂pr˂pbtlbtlf~fpXQJ`ےbHAZJltbdQZ|fHf`vXnr˂pZHAb`JXQrtlJtArdfpvnXv`bHAZp˂rbdQZ|drtA`vXnvpfے`JdQbtdQbt璐~Hf~fpvJ`ےbHAZpltbdQZ|~f`vXn˂pZHAbےZdQbtlJtA~HfpvnJ`ےbHAZpltbdQZ|~f`vXnbے`bے`ZdQbtZdQbnnXvrXQJ`ےbrtAJltbdQvpfHf`vXnr˂pZHAے`JdQbtlJtAr~HfpvnX`ےbHAZp˂tbdQZ|df`vXnvHAbے|ZdQb|ZdQb`f~v`f~frXQJ`ےbHAtAJltbdQZfH~f`vXXQr˂pZHAb|ZdQbtl`f~HfpvrXQJ`ےbHAtAJltbdQZfH~f`vXZHAbZHAbl|ZdQl|ZdQpvnp˂rXQJ`ےdrtAJltnvpH~f`vXnr˂pZHAے|ZdQbtlJf~HfpvXQJ`ےbHAZJltbdQZ|H~f`vXnr˂pbdQZ|`vXnvpf`JXQr`JXQr|ZdQb|ZdQbvnXbHAZp˂rbdQZ|drtA`vXnvpfZHAbے`JXQbtltArd|ZdQbnXv`fHfp˂rXQJ`ےdrtAJltvpfH~fXQr˂lJtArlJtArpvnnXvbHAZp˂rXQdQZ|drtAJvXnvpfHHAbے`JXQrlJtArd|pvnXv`fbHAZp˂rXQdQZ|drtAJvXnvpfHJXQrJXQrlJtAXv`f`f~`ےbHAZp˂tbdQZ|df`vXnv˂pZHAbے`XQrbtlJtArd|ZvnXv`fHAZp˂rXQJZ|drtAJlXnvpfH~`JXQrtlJtlJHfpvpvnےbHAZp˂tbdQZ|drf`vXnvppZHAbے`JbtlJtArdHfpvnXvےbHAZp˂tbdQZ|drf`vXnvpے`JXQے`JXQbtlbnXvXv`fXQJ`ےbHAZJltbdQZ|fHf`vXnr˂pZHAb`JXQrtlJtArdfpvnXv`bHAZp˂rbdQZ|drtA`vXnvpf`JXQr˂pZ˂pZbtlbtlf~fpHAZp˂rXQdQZ|drtAJtbnvpfH~f``JXQr˂pZrd|ZdQbtXv`f~Hf˂rXQJ`ےdrtAJltbvpfH~f`pZHAbpJAHrpJAHr`vXnvˍpfdrQtHAbےHAbے|ZdQb|ZdQbvnX˂rXQJ`ےdrtAJltbvpf~f`vXnr˂pZHAے`ZdQbtlJtA~HfpvnJ`ےbHAZpltbdQZ|~f`vXnے`Jˁ`Zˁ`ZvˍpfH~ㅐfJlt`JXQr`JXQrtlJnXv`v`fJ`ےbHAZpltbdQZ|Hf`vXn˂pZHAbےJXQrblJtArd|pvnXv`fbHAZp˂rXQdQZ|drtAJvXnvpfHXQr˂QXb㉀QXb㉀ەH~ㅐf۝`vXnbAdZ|˂p`˂p`tArdf~fp~HfpbHAZp˂rXQdQZ|drtAJvXnvpfHHAbے`JXQrtlJrd|ZdQbnXv`fHfp˂rXQJ`ےdrtAJltbvpfH~f`p`JXQp`ZQXp`ZQX`vXnvˍp|drQtJXQrJXQr|ZdQbvnXvnX˂rXQJ`ےdrtAJltbvpfH~f``JXQr˂pZtAd|ZdQbtXv`f~HfvnrJ`ےbHAZpltbdQZ|~f`vXnr˂pb㉀ۑpb㉀ۑpvˍpfdrQtJlt˂pZHA˂pZHAtl|v`fv`f~J`ےbHAZpltbdQZ|~f`vXn˂pZHAbےZdQbtlJtA~HfpvnXQJ`ےbHAZp˂rbdQZ|dtAJlvXnvpfHZHAbJAHrJAHr󙐕H~ㅐfJltbAdZ|bے`bے`ZdQbt~HfpfpvbHAZp˂rXQdQZ|drtAJvXnvpfHHAbے`JXQrlJtArd|pvnXv`fHAZp˂rXQdQZ|drtAJtbnvpfH~f`ے`JXQˁ`ZQXˁ`ZQX`vXnbAdZ|drQtJXQrJXQrlJtAvnXnXv`˂rXQJ`ےdrtAJltbvpfH~f``JXQr˂pZrd|ZdQbtXv`f~Hf˂rXQJ`ےdrtAJltbvpf~f`vXnےr˂pb㉀ۑpb㉀XnvˍpfdrQtJlt˂p`J˂p`Jrd|v`f~ff~HJ`ےbHAZpltbdQZ|~f`vXn˂pZHAbےZdQbtlJtA~HfpvnJ`ےbHAZpltbdQZ|Hf`vXn`JXQr`JXQr`ZQXb㕀vˍpfH~ㅐfJltbAdZ|XQr˂XQrbtZdQbtpvnfpvbHAZp˂rXQdQZ|drtAJvXnvpfHHAbے`JXQrlJtArd|pvnXv`fbHAZp˂rXQdQZ|drtAJvXnvpfH˂pZ˂pZۑpJH~ㅐf۝`vXnbAdZ|drQtpZHAbl|Zl|ZXv`fnXv`f˂rXQJ`ےdrtAJltbvpfH~f``JXQr˂pZrd|ZdQbtXv`f~Hf˂rXQJ`ےdrtAJltbvpfH~f`HAbےHAbےAHr󙐂˝`vXnvˍpfdrQtJltے`JdQbtdQbt璐~Hf~fpvJ`ےbHAZpltbdQZ|~f`vXn˂pZHAbےZdQbtlJtA~HfpvnJ`ےbHAZpltbdQZ|~f`vXn`JXQr`JXQr`ZQXb㕀vˍpfH~ㅐfJltbAdZ|XQr˂lJtArlJtArpvnnXvbHAZp˂rXQdQZ|drtAJvXnvpfHHAbے`JXQrlJtArd|pvnXv`fbHAZp˂rXQdQZ|drtAJvXnvpfH˂p`˂p`ۑp`H~ㅐf۝`vXnbAdZ|drQtp`JXQd|Zd|ZXv`f`f~˂rXQJ`ےdrtAJltbvpfH~f``JXQr˂pZrd|ZdQbtXv`f~Hf˂rXQJ`ےdrtAJltbvpfH~f`JXQrJXQrZQXb㉀`vXnvˍpfdrQtJltr˂pdQbtdQbt~fpvHfpvJ`ےbHAZpltbdQZ|~f`vXn˂pZHAbےZdQbtlJtA~HfpvnJ`ےbHAZpltbdQZ|~f`vXn˂pZHA˂pZHAۑpJAHvˍpfH~ㅐfJltbAdZ|ZHAbl|ZdQl|ZdQnXv`nXvbHAZp˂rXQdQZ|drtAJvXnvpfHHAbے`JXQrlJtArd|pvnXv`fbHAZp˂rXQdQZ|drtAJvXnvpfHbے`bے`r󙐂ˁ`H~ㅐf۝`vXnbAdZ|drQtے`JXQbtlbtlf~H`ffp˂rXQJ`ےdrtAJltbvpfH~f``JXQr˂pZrd|ZdQbtXv`f~Hf˂rXQJ`ےdrtAJltbvpfH~f`JXQrJXQrZQXb㉀`vXnvˍpfdrQtJltr˂pJtArdJtArdfpvvnrJ`ےbHAZpltbdQZ|~f`vXn˂pZHAbےZdQbtlJtA~HfpvnJ`ےbHAZpltbdQZ|~f`vXn˂p`J˂p`Zۑp`ZvˍpfH~ㅐfJltbAdZ|`JXQr|ZdQ|ZdQnXv`XQJ`ےbHAZp˂rbdQZ|dtAJlvXnvpfHHAbے`JXQrlJtArd|pvnXv`fbHAZp˂rXQdQZ|drtAJvXnvpfHXQr˂QXb㉀QXb㉀ەH~ㅐf۝`vXnbAdZ|drQt \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv35_2.dat b/mpdf/qrcode/data/qrv35_2.dat deleted file mode 100644 index 3a3ac08..0000000 --- a/mpdf/qrcode/data/qrv35_2.dat +++ /dev/null @@ -1,313 +0,0 @@ -~}~}~}~}zyzyzyzyvuvuvuvutstststspopopoponmnmnmnm~}~}~}~}zyzyzyzyvuvuvuvutstststspopopoponmnmnmnm~}~}~}~}zyzyzyzyvuvuvuvutstststspopopoponmnmnmnm~}~}~}~}zyzyzyzyvuvuvuvutstststspopopoponmnmnmlk~}~}~}~}zyzyzyzyvuvuvuvutstststspopopopolklklklk~}~}~}~}zyzyzyzyvuvuvuvutstststspopopopolklklklk~}~}~}~}zyzyzyzyvuvuvuvutstststspopopopolklklklk~}~}~}~}zyzyzyzyvuvuvuvutstststspopopopolklklklk~}~}~}~}zyzyzyzyvuvuvuvutstststspopopopolklklklk~}~}~}~}zyzyzyzyvuvuvuvutstststspopopopolklklklk~}~}~}~}zyzyzyzyvuvuvuvutstststspopopopolklklklk|{|{|{|{zyzyzyzyvuvuvuvutstststspopopopolklklklk{{{{{|{|zyzyzyzyvuvuvuvutststsrqpopopopolklklklk{|{|{|{|zyzyzyzyvuvuvuvurqrqrqrqpopopopolklklklk{|{|{|{|zyzyzyzyvuvuvuvurqrqrqrqpopopopolklklklk{|{|{|{|zyzyzyzyvuvuvuvurqrqrqrqpopopopolklklklk{|{|{|{|zyzyzyzyvuvuvuvurqrqrqrqpopopopolklklklk{|{{{{{{zyzyzyzyvuvuvuvurqrqrqrqpopopopolklklklk|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrqpopopopolklklklk|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrqpopopopolklklklk|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrqpopopopolklklklk|{|{|{|{zyzyzyxwvuvuvuvurqrqrqrqpopopopolklklklk|{|{|{{{xwxwxwxwvuvuvuvurqrqrqrqpopopopolklklklkjijijiji{{{|{|{|xwxwxwxwvuvuvuvurqrqrqrqpopopopolklklklkjijijiji{|{|{|{|xwxwxwxwvuvuvuvurqrqrqrqpopopopolklklklkjijijiji{|{|{|{|xwxwxwxwvuvuvuvurqrqrqrqpopopopolklklklkjijijiji{|{|{|{|xwxwxwxwvuvuvuvurqrqrqrqpopopopolklklklkjijijiji{|{|{|{|xwxwxwxwvuvuvuvurqrqrqrqpopoponmlklklklkjijijiji{{{{{{|{xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmlklklklkjijijiji|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmlklklklkjijijiji|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmlklklklkjijijiji|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmlklklklkjijijiji|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmlklklklkjijijiji|{|{{{{{xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmlklklklkjijijiji{|{|{|{|xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmlklklklkjijijiji{|{|{|{|xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmlklklklkjijijiji{|{|{|{|xwxwxwxwvuvuvutsrqrqrqrqnmnmnmnmlklklklkjijijiji{|{|{|{|xwxwxwxwtstststsrqrqrqrqnmnmnmnmlklklklkjijijiji{|{|{|{{xwxwxwxwtstststsrqrqrqrqnmnmnmnmlklklklkjijijiji{{{{|{|{xwxwxwxwtstststsrqrqrqrqnmnmnmnmlklklklkjijijiji|{|{|{|{xwxwxwxwtstststsrqrqrqrqnmnmnmnmlklklklkjijijihg|{|{|{|{xwxwxwxwtstststsrqrqrqrqnmnmnmnmlklklklkhghghghg|{|{|{|{xwxwxwxwtstststsrqrqrqrqnmnmnmnmlklklkjihghghghg~}~}|{|{|{|{xwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijijihghghghg~}~}~}~}|{{{{{|{xwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijijihghghghg~}~}~}~}|{|{|{zyxwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijijihghghghg~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijijihghghghg~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijijihghghghg~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijijihghghghg~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijijihghghghg~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijijihghghghg~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqponmnmnmnmjijijijihghghghg~}~}~}~}zyzyzyzyxwxwxwxwtstststspopopoponmnmnmnmjijijijihghghghg~}~}~}~}zyzyzyzyxwxwxwxwtstststspopopoponmnmnmnmjijijijihghghghg~}~}~}~}zyzyzyzyxwxwxwxwtstststspopopoponmnmnmnmjijijijihghghghg~}~}~}~}zyzyzyzyxwxwxwxwtstststspopopoponmnmnmnmjijijijihghghghg~}~}~}~}zyzyzyzyxwxwxwxwtstststspopopoponmnmnmnmjijijijihghghghg~}~}~}~}zyzyzyzyxwxwxwxwtstststspopopoponmnmnmnmjijijijihghghghg~}~}~}~}zyzyzyzyxwxwxwxwtstststspopopoponmnmnmnmjijijijihghghghg~}~}~}~}zyzyzyzyxwxwxwxwtstststspopopoponmnmnmnmjijijijihghghghg~}~}~}~}zyzyzyzyxwxwxwvutstststspopopoponmnmnmnmjijijijihghghghg~}~}~}~}zyzyzyzyvuvuvuvutstststspopopoponmnmnmnmjijijijihghghghg~}~}~}~}zyzyzyzyvuvuvuvutstststspopopoponmnmnmnmjijijijihghghghghghghghgcdcdcdcd`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=<;<;<;<;87878787343434340/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#     - - - hghghghgcdcdcdcd`_`_`_`_^]^]\[\[ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=<;<;<;<;87878787343434340/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#     hghghghgcdcdcdcd`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=<;<;<;<;87878787343434340/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#     hghghghgcdcdcccc`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=<;<;<;<;87878787343434340/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#     hghghghgccdcdcdc`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOKKKKKLKLHGHGHGHGFEFEFEFEBABABABA>=>=>=>=<;<;<;<;87878787343333330/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#     hghghghgdcdcdcdc`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOKLKLKLKLHGHGHGHGFEFEFEFEBABABABA>=>=>=>=<;<;<;<;87878787434343430/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#     hghghghgdcdcdcdc`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOKLKLKLKLHGHGHGHGFEFEFEFEBABABABA>=>=>=>=<;<;<;<;87878787434343430/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#     hghghghgdcdcdcdc`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUTSTSRQRQPOPOPOPOKLKLKLKLHGHGHGHGFEDCDCDCBABABABA>=>=>=>=<;<;<;<;87878787434343430/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#     hgfefefedcdcdcdc`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQPOPOPOPOKLKLKLKLHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;87878787434343430/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#     fefefefeccccdcdc`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQPOPOPOPOKLKKKKKKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;87878787434343330/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#     fefefefedcdcbaba`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;87878787333434340/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#        fefefefebabababa`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;87878787343434340/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#        fefefefebabababa`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;87878787343434340/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#        fefefefebabababa`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;:9:9:987878787343434340/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        fefefefebabababa`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMLKLKLKKKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:987878787343434340/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        fefefefebabababa`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMKKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:987878787333333430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        fefefefebabababa`_`_`_`_\[\[\[\[ZYZYXWXWVUVUVUVURQRQRQRQNMNMNMNMLKJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:987878787434343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        fefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:987878787434343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        fefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:987878787434343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        fefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:987878765434343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!        fefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:965656565434333330/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!        fefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:965656565434343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!        fefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBA@?@?@?>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!        fefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!        fefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!        - fefefefebabababa`_`_^]^]\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!      - - - - fefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!    - - - - fefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!    - - - - fefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"!    - - - - fefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"!    - - - - fefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"!    - - - - fefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWVUVUTSTSRQRQRQRQNMNMNMNMJIJIJIJIHGFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"!    - - - - fefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"!    - - - - fefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"!    - - - - fefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"!    - - - - fefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"!    - - - - fefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"!    - - - - fefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=<;<;<;:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!    - - - - fefefedcbabababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!    - - - - dcdcdcccbabababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!    - - - - cccdcdcdbabababa^]^]^]^]\[\[ZYZYXWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!    - - - - cdcdcdcdbabababa^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!    - - - - cdcdcdcdbabababa^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!    - - - - cdcdcdcdbabababa^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#"!"!"!"!    - - - - cdcdcdcdbabababa^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQNMNMLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#"!"!"!"!    - - - - ccccccdcbabababa^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQLKLKKKKKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#"!"!"!"!    - - - - dcdcdcdcbabababa^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSRQRQPOPOKLKLKLKLJIJIJIJIFEFEFEFEDCBABABA@?@?@?@?<;<;<;<;:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#"!"!"!"!    - - - - dcdcdcdcbabababa^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPOKLKLKLKLJIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#"!"!"!"!    - - - - dcdcdcdcbabababa^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPOKLKLKLKLJIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#"!"!"!"!   - - - - dcdcdcdcbaba`_`_^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPOKLKLKLKLJIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#"!"!"!"! - - - - dcdccccc`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPOKLKLKLKKJIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:96543434321212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#"!"!"!"! - - - - cdcdcdcd`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPOKKKKLKLKJIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:94333333421212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#"!"!"!"! - - - - cdcdcdcd`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:98787873434343421212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - - cdcdcdcd`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;878787873434343421212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - - cdcdcdcd`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;878787873434343421212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - - cdcdcdcc`_`_`_`_^]^]^]^]ZYZYZYZYXWXWVUVUTSTSTSTSPOPOPOPOLKLKLKLKJIHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;878787873434343421212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - - ccccdcdc`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOLKKKKKKLHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;878787873434333321212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - - dcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOKLKLKLKLHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;878787873343434321212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - - dcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOKLKLKLKLHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;878787874343434321212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#     - - - - dcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOKLKLKLKLHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;878787874343434321212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#     - - - - dcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOKLKLKLKLHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;878787874343434321212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#     - - - - dccccccd`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOKLKLKKKKHGHGHGHGFEFEFEFEBABABABA@?>=>=>=<;<;<;<;87878787434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#     - - - - cdcdcdcd`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOKKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=<;<;<;<;87878787333334340/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#     - - - - qqrrssttwwxxyyzz]]^^__``!!""##$$XXWWVVUUiijjkkllbbcciijjFFGGHHII - - 33221100oonnmmlluuvvwwxx{{aabbccdd%%&&''((TTSSRRQQmmnnooppkkllmmnnJJKKLLMM//..--,,kkjjiihhyyzz{{||eeffgghh))**++,,PPOONNMMqqrrssttooppqqrrNNOOPPQQ++**))((ggffeedd}}~~iijjkkll--..//00 LLKKJJIIuuvvwwxxssttuuvvRRSSTTUU''&&%%$$ccbbaa``mmnnoopp11223344 - - HHGGFFEEyyzz{{||wwxxyyzzVVWWXXYY##""!! __^^]]\\qqrrsstt55667788DDCCBBAA~~}}}}~~{{ZZ[[\\]] !![[ZZYYXXuuvvwwxx99::;;<<@@??>>==||{{zzyy^^__``aa""##$$%%WWVVUUTT~~}}yyzz{{||==>>??@@<<;;::99xxwwvvuubbccddee&&''(())SSRRQQPP||{{zzyy}}~~AABBCCDD88776655ttssrrqqffgghhii**++,,--OONNMMLLxxwwvvuuEEFFGGHH - - 44332211ppoonnmmjjkkllmm..//0011 KKJJIIHHttssrrqqIIJJKKLL 00//..--llkkjjiinnooppqq22334455 - - GGFFEEDDppoonnmmMMNNOOPP,,++**))hhggffeerrssttuu66778899CCBBAA@@~~}}||llkkjjiiQQRRSSTT((''&&%%ddccbbaavvwwxxyy::;;<<==??>>==<<{{zzyyxxhhggffee~}|UUVVWWXX$$##""!!``__^^]]zz{{||}}>>??@@AA;;::9988wwvvuuttddccbbaa{{zzyyxxYYZZ[[\\ \\[[ZZYY~~BBCCDDEE 77665544ssrrqqpp``__^^]]wwvvuutt]]^^__``!!""##$$XXWWVVUUFFGGHHII - - 33221100oonnmmll\\[[ZZYY{{ssrrqqppaabbccdd%%&&''((TTSSRRQQJJKKLLMM//..--,,kkjjiihhXXWWVVUUzzyyxxwwoonnmmlleeffgghh))**++,,PPOONNMM~}|NNOOPPQQ++**))((ggffeeddTTSSRRQQvvuuttsskkjjiihgiijjkkll--..//00 LLKKJJII{{{{zzyyxxRRSSTTUU''&&%%$$ccbbaa``PPOONNMMrrqqppoofedccbbammnnoopp11223344 - - HHGGFFEEzzyyxxwwwwvvuuttVVWWXXYY##""!! __^^]]\\LLKKJJIInnmmllkka``__^^]qqrrsstt55667788DDCCBBAAvvuuttssssrrqqppZZ[[\\]] !![[ZZYYXXHHGGFFEEjjiiccbb]\\[[ZZYuuvvwwxx99::;;<<@@??>>==rrqqppoooonnmmll^^__``aa""##$$%%WWVVUUTTDDCCBBAAaa``__^^YXXWWVVUyyzz{{||==>>??@@<<;;::99nnmmllkkkkjjiihgbbccddee&&''(())SSRRQQPPRRSSTTUU@@??>>==]]\\[[ZZUTTSSRRQ~~}}}}~~AABBCCDD88776655jjiiccbbfedccbbaffgghhii**++,,--OONNMMLLVVWWXXYY<<;;::99YYXXWWVVQPONMLKK||{{zzyyEEFFGGHH - - 44332211aa``__^^a``__^^]jjkkllmm..//0011 KKJJIIHHZZ[[\\]]88776655UUTTSSRRJJIIHHGGxxwwvvuuIIJJKKLL 00//..--]]\\[[ZZ]\\[[ZZYnnooppqq22334455 - - GGFFEEDD^^__``aa44332211QQKKJJIIFFEEDDCCttssrrqqMMNNOOPP,,++**))YYXXWWVVYXXWWVVUrrssttuu66778899CCBBAA@@bbccddee00//..--HHGGFFEEBBAA@@??ppoonnmmQQRRSSTT((''&&%%UUTTSSRRUTTSSRRQvvwwxxyy::;;<<==??>>==<>==<<;;llkkjjiiUUVVWWXX$$##""!!QQKKJJIIQPONMLKKzz{{||}}>>??@@AA;;::9988jjkkllmm((''&&%%@@??>>==::998765hhggffeeYYZZ[[\\ HHGGFFEEJJIIHHGG~~}}||~~BBCCDDEE 77665544nnooppqq$$##""!!<<;;::9943322110ddccbbaa]]^^__``!!""##$$DDCCBBAAFFEEDDCC{{zzyyxxFFGGHHII - - 33221100rrssttuu 332211000//..--,``__^^]]aabbccdd%%&&''((@@??>>==BBAA@@??wwvvuuttJJKKLLMM//..--,,vvwwxxyy//..--,,,++**))(\\[[ZZYYeeffgghh))**++,,<<;;::99>>==<<;;ssrrqqppNNOOPPQQ++**))((zz{{||}}++**))(((''&&%%$XXWWVVUUiijjkkll--..//00 33221100::998765oonnmmllRRSSTTUU''&&%%$$~~''&&%%$$$##""!! TTSSRRQQmmnnoopp11223344 - - //..--,,43322110kkjjiihhVVWWXXYY##""!!  ##""!!PPOONNMMqqrrsstt55667788++**))((0//..--,ggffeeddZZ[[\\]] !! - - LLKKJJIIuuvvwwxx99::;;<<''&&%%$$,++**))(ccbbaa``^^__``aa""##$$%% - - HHGGFFEEyyzz{{||==>>??@@##""!!(''&&%%$__^^]]\\bbccddee&&''(()) DDCCBBAA~~}}}}~~AABBCCDD$##""!! [[ZZYYXXffgghhii**++,,-- - -@@??>>==||{{zzyyEEFFGGHH - - WWVVUUTTjjkkllmm..//0011  - - - - <<;;::99xxwwvvuuIIJJKKLL SSRRQQPPnnooppqq22334455 - -  88776655ttssrrqqMMNNOOPP OONNMMLLrrssttuu66778899  - - 44332211ppoonnmmQQRRSSTT - - KKJJIIHHvvwwxxyy::;;<<==!!""##$$ 00//..--llkkjjiiUUVVWWXX - -GGFFEEDDzz{{||}}>>??@@AA%%&&''((,,++**))hhggffeeYYZZ[[\\  - - CCBBAA@@~~}}||~~BBCCDDEE ))**++,,!!""##((''&&%%ddccbbaa]]^^__``!!""##$$ ??>>==<<{{zzyyxxFFGGHHII - - --..//00$$%%&&''$$##""!!``__^^]]aabbccdd%%&&''((;;::9988wwvvuuttJJKKLLMM{{zz11223344(())**++ \\[[ZZYYeeffgghh))**++,, 77665544ssrrqqppNNOOPPQQyyxxwwvv55667788,,--..//!!""##$$XXWWVVUUiijjkkll--..//00 - - 33221100oonnmmllRRSSTTUUuuttssrr99::;;<<00112233%%&&''((TTSSRRQQmmnnoopp11223344!!""##//..--,,kkjjiihhVVWWXXYYqqppoonn==>>??@@99::;;<<))**++,,PPOONNMMqqrrsstt55667788$$%%&&''++**))((ggffeeddZZ[[\\]] !!mmllkkjjAABBCCDD==>>??@@--..//00 LLKKJJIIuuvvwwxx99::;;<<(())**++''&&%%$$ccbbaa``^^__``aa""##$$%%iiccbbaaEEFFGGHHAABBCCDD11223344 - - HHGGFFEEyyzz{{||==>>??@@,,--..//##""!! __^^]]\\bbccddee&&''(())``__^^]]IIJJKKLLEEFFGGHH55667788DDCCBBAA~~}}}}~~AABBCCDD00112233 !![[ZZYYXXffgghhii**++,,--\\[[ZZYYMMNNOOPPIIJJKKQQ99::;;<<@@??>>==||{{zzyyEEFFGGHH99::;;<<""##$$%%WWVVUUTTjjkkllmm..//0011XXWWVVUUQQRRSSTTRRSSTTUU==>>??@@<<;;::99xxwwvvuuIIJJKKLL==>>??@@&&''(())SSRRQQPPnnooppqq22334455TTSSRRQQUUVVWWXXVVWWXXYYAABBCCDD88776655ttssrrqqMMNNOOPPAABBCCDD**++,,--OONNMMLLrrssttuu66778899KKJJIIHHYYZZ[[\\ZZ[[\\]]EEFFGGHH - - 44332211ppoonnmmQQRRSSTTEEFFGGHH..//0011 KKJJIIHHvvwwxxyy::;;<<==GGFFEEDD]]^^__``^^__``aaIIJJKKLL 00//..--llkkjjiiUUVVWWXXIIJJKKQQ22334455 - - GGFFEEDDzz{{||}}>>??@@AACCBBAA@@aabbccddbbcciijjMMNNOOPP,,++**))hhggffeeYYZZ[[\\RRSSTTUU66778899CCBBAA@@~~}}||~~BBCCDDEE??>>==<>==<<{{zzyyxxFFGGHHII;;::9933iijjkkllooppqqrrUUVVWWXX$$##""!!``__^^]]aabbccddZZ[[\\]]>>??@@AA;;::9988wwvvuuttJJKKLLMM221100//mmnnooppssttuuvvYYZZ[[\\ \\[[ZZYYeeffgghh^^__``aaBBCCDDEE 77665544ssrrqqppNNOOPPQQ..--,,++**))((''/..--,,+ffeeddcc[[\\]]^^ !!""FFEEDDCCHHGGFFEE}}||{{zzDDEEFFGG - - 55443322bbaa``__baa``__^iijjkkll--..//00 LLKKJJII{{{{zzyyxxRRSSTTUU''&&%%$$ccbbaa``{{zzyyxx&&%%$$##+**))(('bbaa``____``aabb##$$%%&&BBAA@@??DDCCBBAAyyxxwwvvHHIIJJKK 1100//..^^]]\\[[^]]\\[[Zmmnnoopp11223344 - - HHGGFFEEzzyyxxwwwwvvuuttVVWWXXYY##""!! __^^]]\\wwvvuutt""!!'&&%%$$#^^]]\\[[ccddeeff''(())**>>==<<;;@@??>>==uuttssrrLLMMNNOO--,,++**ZZYYXXWWZYYXXWWVqqrrsstt55667788DDCCBBAAvvuuttssssrrqqppZZ[[\\]] !![[ZZYYXXssrrqqpp#""!! ZZYYXXWWgghhiijj++,,--..::993322<<;;::99qqppoonnPPQQRRSS))((''&&VVUUTTSSVUUTTSSRuuvvwwxx99::;;<<@@??>>==rrqqppoooonnmmll^^__``aa""##$$%%WWVVUUTToonnmmllVVUUTTSSkkllmmnn//001122 1100//..87654332mmllkkjjTTUUVVWW%%$$##""RRQQKKJJRQQPONMLyyzz{{||==>>??@@<<;;::99nnmmllkkkkjjiihgbbccddee&&''(())SSRRQQPPkkjjiihhRRQQPPOOooppqqrr33445566 - - --,,++**21100//.iihhggffXXYYZZ[[!! IIHHGGFFKKJJIIHH~~}}}}~~AABBCCDD88776655jjiiccbbfedccbbaffgghhii**++,,--OONNMMLL{{ggffeedd - -NNMMLLKKssttuuvv778899::))((''&&.--,,++*eeddccbb\\]]^^__ !!""##EEDDCCBBGGFFEEDD||{{zzyyEEFFGGHH - - 44332211aa``__^^a``__^^]jjkkllmm..//0011 KKJJIIHHzzyyxxwwccbbaa``  JJIIHHGGwwxxyyzz;;<<==>>%%$$##""*))((''&aa``__^^``aabbcc$$%%&&''AA@@??>>CCBBAA@@xxwwvvuuIIJJKKLL 00//..--]]\\[[ZZ]\\[[ZZYnnooppqq22334455 - - GGFFEEDDvvuuttss__^^]]\\ - - FFEEDDCC{{||}}~~??@@AABB!!&%%$$##"]]\\[[ZZddeeffgg(())**++==<<;;::??>>==<>==<>==<<;;zzyyxxwwGGHHIIJJ UUTTSSRRllmmnnoo00112233 - -00//..--65433221llkkjjiiUUVVWWXX$$##""!!QQKKJJIIQPONMLKKzz{{||}}>>??@@AA;;::9988jjiiccbbSSRRQQPP::998877vvuuttssKKLLMMNN QQPPOONNppqqrrss44556677 ,,++**))100//..-hhggffeeYYZZ[[\\ HHGGFFEEJJIIHHGG~~}}||~~BBCCDDEE 77665544aa``__^^OONNMMLL - -66554433rrqqppooOOPPQQRR - - MMLLKKJJttuuvvww8899::;;((''&&%%-,,++**)ddccbbaa]]^^__``!!""##$$DDCCBBAAFFEEDDCC{{zzyyxxFFGGHHII - - 33221100]]\\[[ZZKKJJIIHH 221100//nnmmllkkSSTTUUVV IIHHGGFFxxyyzz{{<<==>>??$$##""!!)((''&&%``__^^]]aabbccdd%%&&''((@@??>>==BBAA@@??wwvvuuttJJKKLLMM//..--,,YYXXWWVVGGFFEEDD!!""##$$..--,,++jjiihhggWWXXYYZZ - - EEDDCCBB~~||}}~~@@AABBCC%$$##""!\\[[ZZYYeeffgghh))**++,,<<;;::99>>==<<;;ssrrqqppNNOOPPQQ++**))((UUTTSSRRCCBBAA@@%%&&''((**))((''ffeeddcc[[\\]]^^ !!"" - - AA@@??>>}}||{{zzDDEEFFGG - - ! XXWWVVUUiijjkkll--..//00 33221100::998765oonnmmllRRSSTTUU''&&%%$$QQKKJJII??>>==<<))**++,,&&%%$$##bbaa``____``aabb##$$%%&& ==<<;;::yyxxwwvvHHIIJJKK TTSSRRQQmmnnoopp11223344 - - //..--,,43322110kkjjiihhVVWWXXYY##""!! HHGGFFEE;;::9988--..//00""!! ^^]]\\[[ccddeeff''(())**99887766uuttssrrLLMMNNOO PPOONNMMqqrrsstt55667788++**))((0//..--,ggffeeddZZ[[\\]] !!DDCCBBAA7766554411223399 !!""ZZYYXXWWgghhiijj++,,--.. - - 55443322qqppoonnPPQQRRSS - - LLKKJJIIuuvvwwxx99::;;<<''&&%%$$,++**))(ccbbaa``^^__``aa""##$$%%@@??>>==33221100::;;<<==##$$%%&&VVUUTTSSkkllmmnn//001122!! 1100//..mmllkkjjTTUUVVWW HHGGFFEEyyzz{{||==>>??@@##""!!(''&&%%$__^^]]\\bbccddee&&''(())<<;;::99//..--,,>>??@@AA''(())**RRQQPPOOooppqqrr33445566""##$$%%--,,++**iihhggffXXYYZZ[[ - - DDCCBBAA~~}}}}~~AABBCCDD$##""!! [[ZZYYXXffgghhii**++,,--33221100++**))((BBCCDDEE++,,--..NNMMLLKKssttuuvv778899::&&''(())))((''&&eeddccbb\\]]^^__ !!""## - - @@??>>==||{{zzyyEEFFGGHH - - WWVVUUTTjjkkllmm..//0011 //..--,,''&&%%$$FFGGHHII//001122 JJIIHHGGwwxxyyzz;;<<==>>**++,,--%%$$##""aa``__^^``aabbcc$$%%&&''<<;;::99xxwwvvuuIIJJKKLL SSRRQQPPnnooppqq22334455 - - ++**))((##""!! JJKKQQRR33445566 - - FFEEDDCC{{||}}~~??@@AABB..//0011!! ]]\\[[ZZddeeffgg(())**++88776655ttssrrqqMMNNOOPP OONNMMLLrrssttuu66778899''&&%%$$SSTTUUVV778899::BBAA@@??~~}}||{{CCDDEEFF223399:: !!""##YYXXWWVVhhiijjkk,,--..// - - 44332211ppoonnmmQQRRSSTT - - KKJJIIHHvvwwxxyy::;;<<==##""!!WWXXYYZZ;;<<==>>>>==<<;;zzyyxxwwGGHHIIJJ;;<<==>>$$%%&&''UUTTSSRRllmmnnoo00112233!!"" 00//..--llkkjjiiUUVVWWXX - -GGFFEEDDzz{{||}}>>??@@AA[[\\]]^^??@@AABB::998877vvuuttssKKLLMMNN??@@AABB(())**++QQPPOONNppqqrrss44556677##$$%%&&,,++**))hhggffeeYYZZ[[\\  - - CCBBAA@@~~}}||~~BBCCDDEE __``aabbCCDDEEFF - -66554433rrqqppooOOPPQQRRCCDDEEFF,,--..//MMLLKKJJttuuvvww8899::;;''(())**((''&&%%ddccbbaa]]^^__``!!""##$$ ??>>==<<{{zzyyxxFFGGHHII - -  cciijjkkGGHHIIJJ 221100//nnmmllkkSSTTUUVVGGHHIIJJ00112233 - -IIHHGGFFxxyyzz{{<<==>>??++,,--..$$##""!!``__^^]]aabbccdd%%&&''((;;::9988wwvvuuttJJKKLLMM - - llmmnnooKKLLMMNN..--,,++jjiihhggWWXXYYZZKKQQRRSS44556677 EEDDCCBB~~||}}~~@@AABBCC//001122 \\[[ZZYYeeffgghh))**++,, 77665544ssrrqqppNNOOPPQQ - - - - - - ppqqrrssOOPPQQRR**))((''ffeeddcc[[\\]]^^TTUUVVWW8899::;;AA@@??>>}}||{{zzDDEEFFGG3399::;;!!""##$$XXWWVVUUiijjkkll--..//00 - - 33221100oonnmmllRRSSTTUU ttuuvvwwSSTTUUVV&&%%$$##bbaa``____``aabbXXYYZZ[[<<==>>??==<<;;::yyxxwwvvHHIIJJKK<<==>>??%%&&''((TTSSRRQQmmnnoopp11223344!!""##//..--,,kkjjiihhVVWWXXYYxxyyzz{{WWXXYYZZ""!! ^^]]\\[[ccddeeff\\]]^^__@@AABBCC99887766uuttssrrLLMMNNOO@@AABBCC))**++,,PPOONNMMqqrrsstt55667788$$%%&&''++**))((ggffeeddZZ[[\\]] !![[\\]]^^ !!""ZZYYXXWWgghhiijj``aabbccDDEEFFGG - - 55443322qqppoonnPPQQRRSSDDEEFFGG--..//00 LLKKJJIIuuvvwwxx99::;;<<(())**++''&&%%$$ccbbaa``^^__``aa""##$$%%__``aabb##$$%%&&VVUUTTSSkkllmmnniijjkkllHHIIJJKK 1100//..mmllkkjjTTUUVVWWHHIIJJKK11223344 - - HHGGFFEEyyzz{{||==>>??@@,,--..//##""!! __^^]]\\bbccddee&&''(())!!""## !!ccddeeff''(())**RRQQPPOOooppqqrrmmnnooppLLMMNNOO--,,++**iihhggffXXYYZZ[[QQRRSSTT55667788DDCCBBAA~~}}}}~~AABBCCDD00112233 !![[ZZYYXXffgghhii**++,,--$$%%&&''""##$$%%gghhiijj++,,--..NNMMLLKKssttuuvvqqrrssttPPQQRRSS))((''&&eeddccbb\\]]^^__UUVVWWXX99::;;<<@@??>>==||{{zzyyEEFFGGHH99::;;<<""##$$%%WWVVUUTTjjkkllmm..//0011(())**++&&''(())kkllmmnn//001122 JJIIHHGGwwxxyyzzuuvvwwxxTTUUVVWW%%$$##""aa``__^^``aabbccYYZZ[[\\==>>??@@<<;;::99xxwwvvuuIIJJKKLL==>>??@@&&''(())SSRRQQPPnnooppqq22334455,,--..//**++,,--ooppqqrr33445566 - - FFEEDDCC{{||}}~~yyzz{{XXYYZZ[[!! ]]\\[[ZZddeeffgg]]^^__``AABBCCDD88776655ttssrrqqMMNNOOPPAABBCCDD**++,,--OONNMMLLrrssttuu6677889900112233..//0011ssttuuvv778899::BBAA@@??~~}}||{{\\]]^^__ !!""##YYXXWWVVhhiijjkkaabbcciiEEFFGGHH - - 44332211ppoonnmmQQRRSSTTEEFFGGHH..//0011 KKJJIIHHvvwwxxyy::;;<<==99::;;<<22334455wwxxyyzz;;<<==>>>>==<<;;zzyyxxww``aabbcc$$%%&&''UUTTSSRRllmmnnoojjkkllmmIIJJKKLL 00//..--llkkjjiiUUVVWWXXIIJJKKQQ22334455 - - GGFFEEDDzz{{||}}>>??@@AA==>>??@@66778899{{||}}~~??@@AABB::998877vvuuttssddeeffgg(())**++QQPPOONNppqqrrssnnooppqqMMNNOOPP,,++**))hhggffeeYYZZ[[\\RRSSTTUU66778899CCBBAA@@~~}}||~~BBCCDDEEAABBCCDD::;;<<==CCDDEEFF - -66554433rrqqppoohhiijjkk,,--..//MMLLKKJJttuuvvwwrrssttuuQQRRSSTT((''&&%%ddccbbaa]]^^__``VVWWXXYY::;;<<==??>>==<<{{zzyyxxFFGGHHIIEEFFGGHH>>??@@AAGGHHIIJJ 221100//nnmmllkkllmmnnoo00112233 - -IIHHGGFFxxyyzz{{vvwwxxyyUUVVWWXX$$##""!!``__^^]]aabbccddZZ[[\\]]>>??@@AA;;::9988wwvvuuttJJKKLLMMIIJJKKQQBBCCDDEEKKLLMMNN..--,,++jjiihhggppqqrrss44556677 EEDDCCBB~~||}}~~zz{{YYZZ[[\\ \\[[ZZYYeeffgghh^^__``aaBBCCDDEE 77665544ssrrqqppNNOOPPQQRRSSTTUUFFGGHHII~}|{{OOPPQQRR**))((''ffeeddccttuuvvww8899::;;AA@@??>>}}||{{zz]]^^__``!!""##$$XXWWVVUUiijjkkllbbcciijjFFGGHHII - - 33221100oonnmmllRRSSTTUUVVWWXXYYJJKKLLMMzzyyxxwwSSTTUUVV&&%%$$##bbaa``__xxyyzz{{<<==>>??==<<;;::yyxxwwvvaabbccdd%%&&''((TTSSRRQQmmnnooppkkllmmnnJJKKLLMM//..--,,kkjjiihhVVWWXXYYZZ[[\\]]NNOOPPQQvvuuttssWWXXYYZZ""!! ^^]]\\[[||}}~~@@AABBCC99887766uuttssrreeffgghh))**++,,PPOONNMMqqrrssttooppqqrrNNOOPPQQ++**))((ggffeeddZZ[[\\]]^^__``aaRRSSTTUUrrqqppoo[[\\]]^^ !!""ZZYYXXWWDDEEFFGG - - 55443322qqppoonniijjkkll--..//00 LLKKJJIIuuvvwwxxssttuuvvRRSSTTUU''&&%%$$ccbbaa``^^__``aabbcciijjVVWWXXYYnnmmllkk__``aabb##$$%%&&VVUUTTSSHHIIJJKK 1100//..mmllkkjjmmnnoopp11223344 - - HHGGFFEEyyzz{{||wwxxyyzzVVWWXXYY##""!! __^^]]\\bbccddeekkllmmnnZZ[[\\]]jjiihgfeccddeeff''(())**RRQQPPOOLLMMNNOO--,,++**iihhggffqqrrsstt55667788DDCCBBAA~~}}}}~~{{ZZ[[\\]] !![[ZZYYXXffgghhiiooppqqrr^^__``aadccbbaa`gghhiijj++,,--..NNMMLLKK~}|{{zzPPQQRRSS))((''&&eeddccbbuuvvwwxx99::;;<<@@??>>==||{{zzyy^^__``aa""##$$%%WWVVUUTTjjkkllmmssttuuvvbbccddee`__^^]]\kkllmmnn//001122 JJIIHHGG{{zzyyyyxxwwvvTTUUVVWW%%$$##""aa``__^^yyzz{{||==>>??@@<<;;::99xxwwvvuubbccddee&&''(())SSRRQQPPnnooppqqwwxxyyzzffgghhii\[[ZZYYXooppqqrr33445566 - - FFEEDDCCxxwwvvuuuuttssrrXXYYZZ[[!! ]]\\[[ZZ}}~~AABBCCDD88776655ttssrrqqffgghhii**++,,--OONNMMLLrrssttuu{{jjkkllmmXWWVVUUTssttuuvv778899::BBAA@@??ttssrrqqqqppoonn\\]]^^__ !!""##YYXXWWVVEEFFGGHH - - 44332211ppoonnmmjjkkllmm..//0011 KKJJIIHHvvwwxxyynnooppqqTSSRRQQPwwxxyyzz;;<<==>>>>==<<;;ppoonnmmmmllkkjj``aabbcc$$%%&&''UUTTSSRRIIJJKKLL 00//..--llkkjjiinnooppqq22334455 - - GGFFEEDDzz{{||}}rrssttuuONMLKKJJ{{||}}~~??@@AABB::998877llkkjjiiiihgfedcddeeffgg(())**++QQPPOONN~MMNNOOPP,,++**))hhggffeerrssttuu66778899CCBBAA@@~~}}||~~vvwwxxyyIIHHGGFF~~}}||{{CCDDEEFF - -66554433ccbbaa``cbbaa``_hhiijjkk,,--..//MMLLKKJJ}|{{zzyyQQRRSSTT((''&&%%ddccbbaavvwwxxyy::;;<<==??>>==<<{{zzyyxxzz{{||}}EEDDCCBBzzyyxxwwGGHHIIJJ 221100//__^^]]\\_^^]]\\[llmmnnoo00112233 - -IIHHGGFF{{zzyyxxxxwwvvuuUUVVWWXX$$##""!!``__^^]]zz{{||}}>>??@@AA;;::9988wwvvuutt~~AA@@??>>vvuuttssKKLLMMNN..--,,++[[ZZYYXX[ZZYYXXWppqqrrss44556677 EEDDCCBBwwvvuuttttssrrqqYYZZ[[\\ \\[[ZZYY~~BBCCDDEE 77665544ssrrqqpp==<<;;::rrqqppooOOPPQQRR**))((''WWVVUUTTWVVUUTTSttuuvvww8899::;;AA@@??>>ssrrqqppppoonnmm]]^^__``!!""##$$XXWWVVUUFFGGHHII - - 33221100oonnmmll99876543nnmmllkkSSTTUUVV&&%%$$##SSRRQQKKSRRQQPONxxyyzz{{<<==>>??==<<;;::oonnmmllllkkjjiiaabbccdd%%&&''((TTSSRRQQJJKKLLMM//..--,,kkjjiihh3221100/jjiihhggWWXXYYZZ""!! JJIIHHGGMLKKJJII~~||}}~~@@AABBCC99887766kkjjiicchgfedccbeeffgghh))**++,,PPOONNMM~}|NNOOPPQQ++**))((ggffeedd~~}}||bdQZ|H~fdQbtp˂r`vXnے`JXQfpvJlt`vXnl|Z˂rXQvXn`JXQrpvn˂rXQdrtA`vXnl|ZdQXQJ`ےvpfr˂pnXv`bdQZ|vpfdQbtJ`ےvpfH˂pZXv`fJ`ےJltvpfbtlbHAZH~fZHAbf~HdrtAH~flJtArbHAZp~f`HAbے~HfbHAZpbdQZ|H~fJtArdp˂r`vXnے`JXQfpvJlt`vXnd|Z˂rXQvXn`JXQrpvn˂rbdrtA`vXn|ZdQXQJ`ےvpfr˂pnXv`bdQZ|vpfdQbtJ`ےvpfH˂pZXv`fdQZ|JltvpfbtlbHAZH~fZHAےf~HdrtAH~fl|ZdQbHAZp~f`HAbے~HfdrtAJbdQZ|H~f|ZdQbp˂r`vXn`JXQrfpvJlt`vXnbtl˂rXQvXn`JXQrpvnltbdrtA`vXnnXv`XQJ`ےvpfbtlnXv`bdQZ|vpfJtArdJ`ےvpfH˂pZXv`fdQZ|Jltvpff~fpېbHAZH~fJtAdf~HdrtAH~f|ZdQbHAZp~f`HAbے~HfdrtAJbdQZ|H~fvnXp˂r`vXn|ZdQbfpvJlt`vXnbtl˂rXQvXn`JXQrpvnltbdrtA`vXnv`fXQJ`ےvpftlJnXv`bdQZ|vpf|ZdQbJ`ےvpfH˂pZXv`fdQZ|Jltr˂p~HfpېbHAZH~ftArdf~HdrtAH~fnXv`bHAZp~f`HAے`~HfdrtAJbdQZ|`JXQrvnXp˂r`vXn|ZdQbfpvJlt`vXnf~fp˂rXQvXnJXQrbpvnltbdrtA˂pZv`f~fXQJ`ےvpftlJnXv`bdQZ|r˂pvnXJ`ےvpfHtlJXv`fdQZ|JltHAbےpvnbHAZH~ftArdf~HdrtA`JXQrv`fbHAZp~f`tAd|~HfdrtAJbdQZ|`JXQrXv`fp˂r`vXn|ZdQbfpvJlt˂pZ~Hfp˂rXQvXnZdQbtpvnltbdrtA˂p`~HfbdQZ|vpftlJnXv`bdQZ|HAbےvnXJ`ےvpfHlJtAXv`fdQZ|JltJXQrpvndrtAH~ftArdf~HdrtA`JXQrv`f~fbHAZp~f`rd|~HfdrtAJbdQZ|˂pZHAXv`fJlt`vXn|ZdQbfpvJlt˂p`pvn˂rXQvXnZdQbtpvnltbdrtAbے`~fpvbdQZ|vpftlJnXv`bdQZ|JXQrXv`fJ`ےvpfHlJtAXv`fdQZ|JltJXQrnXv`drtAH~ftArdfHfdrtA˂pZHA~HfbHAZp~f`rd|~HfdrtAJbdQZ|˂p`Jf~HJlt`vXn|ZdQbpvnJltbے`pvn˂rbvXnZdQbtpvnltbdrtAXQr˂fpvbdQZ|vpftlJrXQJ`bdQZ|JXQrXv`fdQZ|vpfHlJtAXv`fdQZ|vXnJltpZHAbnXv`drtAH~ftArdےHAZdrtA˂p`J~fpvdrtAJ~f`rd|~HfdrtAJvpfHbdQZ|ے`Jf~fpJlt`vXn|ZdQbp˂rJltXQr˂nXv`ltbvXnZdQbtpvnltb~f`drtAXQr˂vnXbdQZ|vpftlJXQJ`ےbdQZ|pZHAbf~HdQZ|vpfHlJtAXv`fdQZ|vXnJltp`JXQv`fdrtAH~ftArdbHAZdrtAے`JfpvdrtAJ~f`rd|HfpdrtAJvpfHbdQZ|r˂p~HfpJlt`vXn|ZdQbp˂rJltXQr˂nXv`ltbvXnZdQbtvnrltb~f`drtAZHAbvnXbdQZ|vpftlJXQJ`ےbdQZ|p`JXQf~fpdQZ|vpfHlJtAXQJ`ےdQZ|vXnJltے`JXQv`f~drtAH~ftArdbHAZdrtAr˂pvnXdrtAJ~f`rd|HAZpdrtAJvpfHbdQZ|r˂pfpvJlt`vXn|ZdQbp˂rJltZHAbv`fltbvXnZdQbt˂rXQltb~f`drtA`JXQrnXv`bdQZ|r˂ptlJXQJ`ےbdQZ|ے`JXQ~HfpdQZ|vpfHlJtAJ`ےdQZ|vXnJlt˂pZf~HdrtAZHAbtArdbHAZdrtAr˂pvnXdrtAJ~f`rd|bHAZpdrtAJvpfHbdQZ|HAbےfpvJltے`JXQ|ZdQbp˂rJlt`JXQrv`f~ltbvXnZdQbt˂rXQltb~f`drtA`JXQrnXv`fbdQZ|r˂ptlJXQJ`ےbdQZ|˂pZfpvdQZ|vpfHlJtAJ`ےdQZ|vXnJlt˂p`~fpvdrtAZHAbtArdbHAZdtAJHAbےnXv`drtAJ~f`rd|bHAZpdrtAJvpfHbdQZ|JXQrnXvJltے`JXQ|ZdQbp˂rltb`JXQrf~HltbvXnrZdQbt˂rXQltb~f``vXn˂pZHA`f~bdQZ|r˂ptlJXQJ`ےnvp˂p`fpvdQZ|˂pZlJtAJ`ےdQZ|vXnvpfbے`HfpvdrtAZHAbtArdbHAZfHfJXQrnXv`fdrtAJHAbےrd|bHAZpdrtAJvpfHH~fJXQrnXvJltے`JXQ|ZdQbp˂r`vXn˂pZHA~fpvltb`JXQrZdQbt˂rXQltb~f``vXn˂p|Z`frQbdQZ|r˂ptlJXQJ`ےvpfbے`nXvdQZ|˂pZlJtAJ`ےdQZ|vXnrvpfdQbtJHAZdrtAZHAbtArdbHAZH~fJXQr`f~drtAJHAbےrd|bHAZpdtAJl˂p`H~flJtArp˂rJltے`JXQ|ZdQbp˂r`vXn˂p`JHfpvltb`JXQrZdQbt˂rXQtbnJXQr`vXnd|ZXQJ`ےbdQZ|r˂ptlJXQJ`ےvpfXQrbtnXvdQZ|˂pZlJtAJ`ےvpf˂pZHAvpfdQbt璐bHAZdrtAZHAbtArdbHAZH~fl|Z`ffpdrtAJHAbےrd|bHAZpHf`bے`H~fl|ZdQp˂rJltے`JXQ|ZdQbp˂r`vXndQbtvnrltb`JXQrZdQbt˂rXQvXnJXQr`vXnbtlXQJ`ےbdQZ|r˂pnXv`XQJ`ےvpflJtArXQJ`ےdQZ|˂pZlJtAJ`ےvpfH˂p`JvpfJtArdbHAZdrtAZHAbf~HbHAZH~fd|ZHAZpdrtAJHAbےrd|bHAZp~f`XQr˂H~f|ZdQp˂rJltے`JXQfpvp˂r`vXndQbt˂rXQltb`JXQrZdQbt˂rXQvXnpZHAb`vXnbtlXQJ`ےbdQZ|r˂pnXv`XQJ`ےvpfl|ZdQJ`ےdQZ|˂pZlJtAJ`ےvpfHے`Jvpf|ZdQbbHAZdrtAZHAbf~HbHAZH~fbtlbHAZpdrtAJHAbےrd|bHAZp~f`XQr˂H~ftlJp˂rJltے`JXQfpvp˂r`vXnJtArd˂rXQltb`JXQrZdQbn˂rXQvXnp`JXQ`vXntArdXQJ`ےbdQZ|r˂pnXv`XQJ`ےvpf|ZdQJ`ےdQZ|˂pZXv`fJ`ےvpfHr˂pvpf|ZdQbbHAZdtAJZHAbf~HbHAZH~fbtlbHAZpdrtAJHAbے~HfbHAZp~f`ZHAbH~ftl|p˂rltbے`JXQfpvp˂r`vXn|ZdQb˂rXQltb`JXQrpvn˂rXQvXnے`JXQ`vXnZdQbtXQJ`ےnvpr˂pnXv`XQJ`ےvpftlJJ`ےdQZ|˂pZXv`fJ`ےvpfHr˂pvpflJtAbHAZfHfZHAbf~HbHAZH~ftArdbHAZpdrtAJHAbے~HfbHAZp~f``JXQrH~frd|p˂r`vXnے`JXQfpvp˂r`vXn|ZdQb˂rXQltb`JXQrpvn˂rXQvXn˂pZ`vXnZdQbtXQJ`ےvpfr˂pnXv`XQJ`ےvpftl|J`ےdQZ|˂pZXv`fJ`ےvpfHHAbےvpfl|ZbHAZH~fZHAbf~HbHAZH~fZdQbtbHAZpdtAJlHAbے~HfbHAZp~f``JXQrH~fdQbtp˂r`vXnے`JXQfpvp˂r`vXnlJtA˂rXQtbn`JXQrpvn˂rXQvXn˂p``vXnlJtArXQJ`ےvpfr˂pnXv`bdQZ|vpfrd|J`ےvpf˂pZXv`fJ`ےvpfHJXQrvpfd|ZbHAZH~fZHAbf~HdrtAH~fZdQbtbHAZpHf`HAbے~HfbHAZp~f`˂pZHAbے`v`frtAJlf`vd|ZHAZp˂rtAJl˂pZHAnXv`tAJlf`vX|ZdQZp˂tAJlJXQrvnXJlt`vXn|ZdQbfpvJlt˂p`pvn˂rXQvXnZdQbtpvnltbvXnے`vXnJXQr~HfptbdQXnrdQbt璀rXQJtbdQbے`f~HtbdQZnvpbtlrXQJ`tbdQZ˂pZHAv`fbdQZ|vpftlJnXv`bdQZ|JXQrXv`fJ`ےvpfHlJtAXv`fdQZ|`JXQrvˍpf˂p`JvnXZ|d˂pZHAlJtAr`ےbZ|dJXQrfpv|drfH~JtArdےbHA|drbے`~HfpdrtAH~ftArdfHfdrtA˂pZHA~HfbHAZp~f`rd|~HfdrtAJ˂pZH~ㅐfXQr˂v`f~rtAJlbے`d|ZHAZp˂rtAJl˂p`JnXv`tAJlf`vX|ZdQZp˂tAJlJXQrvnXJlt`vXn|ZdQbpvnJltbے`pvn˂rbvXnZdQbtpvnltbHAbے`vXnpZHAbfpvtbdQJXQrdQbt璀rXQJtbdQXQr˂f~fptbdQZnvpbtlrXQJ`tbdQZ˂p`Jv`f~fbdQZ|vpftlJrXQJ`bdQZ|JXQrXv`fdQZ|vpfHlJtAXv`fdQZ|`JXQrvˍpfے`JnXv`Z|d˂pZHAlJtAr`ےbZ|dpZHAbvnX|drfH~JtArdےbHA|drXQr˂pvndrtAH~ftArdےHAZdrtA˂p`J~fpvdrtAJ~f`rd|~HfdrtAJ˂p`H~ㅐfXQr˂f~HrtAJlbے`d|ZHAZp˂tAJl璐ے`Jv`ftAJlf`vX|ZdQZp˂tAJlpZHAbXv`fJlt`vXn|ZdQbp˂rJltXQr˂nXv`ltbvXnZdQbtpvnltbJXQr`vXnp`JXQfpvtbdQJXQrdQbt璀rXQJtbnXQr˂~HfptbdQZnr˂btlrXQJ`tbdQZے`J~HfbdQZ|vpftlJXQJ`ےbdQZ|pZHAbf~HdQZ|vpfHlJtAXv`fdQZ|˂pZHAvˍpfrbtnXv`Z|d˂pZHAlJtAr`ےbvpfHp`JXQvnX|drpZHAbJtArdےbHA|drXQr˂pvndrtAH~ftArdbHAZdrtAے`JfpvdrtAJ~f`rd|HfpdrtAJbے`H~ㅐfl|ZdQffpvrtAJlbے`d|ZHAZp˂f`vr˂pv`f~ftAJl璐ے`J|ZdQZp˂tAJlp`JXQXv`fJlt`vXn|ZdQbp˂rJltXQr˂nXv`ltbvXnZdQbtvnrltbJXQr`vXnbtlnrXQtbdQJXQrdQbt璀rXQJXnvZHAbpvntbdQZXQr˂btlrXQJ`tbdQZr˂p~fpvbdQZ|vpftlJXQJ`ےbdQZ|p`JXQf~fpdQZ|vpfHlJtAXQJ`ےdQZ|˂p`JvˍpfJtArdJ`ےZ|d˂pZHAlJtAr`ےbpfH~ے`JXQXv`f|drpZHAbJtArdےbHA|dtAZHAbnXv`drtAH~ftArdbHAZdrtAr˂pvnXdrtAJ~f`rd|HAZpdrtAJXQr˂H~ㅐf|ZdQHAZp˂rtAJlbے`d|ZHAZp˂f`vr˂p~HftAJl璐ے`J|ZdQZp˂Jltے`JXQf~HJlt`vXn|ZdQbp˂rJltZHAbv`fltbvXnZdQbt˂rXQltbpZHAb`vXnbtlrXQJtbdQJXQrdQbt璀rXQJXnv`JXQrpvntbdQZXQr˂btlrXQJ`bnvr˂pfpvbdQZ|r˂ptlJXQJ`ےbdQZ|ے`JXQ~HfpdQZ|vpfHlJtAJ`ےdQZ|ے`Jvˍpf|ZdQb`ےbZ|d˂pZHAlJtAr`ےbpfH~btlXv`f|drpZHAbJtArdےbHApfH`JXQrnXv`drtAZHAbtArdbHAZdrtAr˂pvnXdrtAJ~f`rd|bHAZpdrtAJXQr˂H~ㅐftlJHAZp˂rtAJlbے`d|ZHAZp˂f`v|ZdQbfpvtAJl璐ے`J|ZdQZp˂f`vX˂pZf~fpJltے`JXQ|ZdQbp˂rJlt`JXQrv`f~ltbvXnZdQbt˂rXQltbp`JXQ`vXntArdrXQJtbdQJXQrdQbnXrXQJXnvtlJnrXQJtbdQZXQr˂btlrXQJ`nvpHAbےvnXbdQZ|r˂ptlJXQJ`ےbdQZ|˂pZfpvdQZ|vpfHlJtAJ`ےdQZ|r˂pvˍpf|ZdQb`ےbZ|d˂pZHAv`f`ےbpfH~tArd`ےHA|drpZHAbJtArdےbHAfH~`JXQrv`fdrtAZHAbtArdbHAZdtAJHAbےnXv`drtAJ~f`rd|bHAZpdrtAJZHAbH~ㅐftl|HAZp˂rtAJlbے`~HfpHAZp˂f`v|ZdQbZp˂tAJl璐ے`J|ZdQZp˂f`vX˂p`~HfpJltے`JXQ|ZdQbp˂rltb`JXQrf~HltbvXnrZdQbt˂rXQltbے`JXQ`vXnZdQbtrXQJtbdQJXQrvnXrXQJXnvtl|rXQJ`tbdQZXQr˂btlrXQJ`nvpJXQrbvnXbdQZ|r˂ptlJXQJ`ےnvp˂p`fpvdQZ|˂pZlJtAJ`ےdQZ|r˂pvˍpflJtA`ےbZ|d˂pZHAv`f`ےbpfH~ZdQbtےbHA|drpZHAbJtArdےbHAfH~tl|v`ffdrtAZHAbtArdbHAZfHfJXQrnXv`fdrtAJHAbےrd|bHAZpdrtAJ`JXQrH~ㅐfrd|HAZp˂rtAJlbے`~HfpHAZp˂f`vlJtAZp˂tAJl璐ے`J|ZdQZp˂f`vXZdQbtpvnJltے`JXQ|ZdQbp˂r`vXn˂pZHA~fpvltb`JXQrZdQbt˂rXQltb˂pZ`vXnZdQbtrXQJtbdQJXQrvnXrXQJXnvrd|rXQJ`tbdQZXQr˂bnXvrXQJ`nvplJtArXQJ`bdQZ|r˂ptlJXQJ`ےvpfbے`nXvdQZ|˂pZlJtAJ`ےdQZ|HAbےvˍpfl|Z`ےbZ|d˂pZHAv`f`ےbpfH~ZdQbtےbHA|drpZHAb`f~ےbHAfH~rd|ےHAZdrtAZHAbtArdbHAZH~fJXQr`f~drtAJHAbےrd|bHAZpdtAJl`JXQrH~ㅐfdQbtHAZp˂tAJlbے`~HfpHAZp˂f`vl|ZZp˂tAJl璐ے`JHfpvZp˂f`vXZdQbtp˂rJltے`JXQ|ZdQbp˂r`vXn˂p`JHfpvltb`JXQrZdQbt˂rXQtbn˂p``vXnlJtArrXQJtbnJXQrvnXrXQJXnvdQbtrXQJ`tbdQZXQr˂nXvrXQJ`nvpl|ZXQJ`ےbdQZ|r˂ptlJXQJ`ےvpfXQrbtnXvdQZ|˂pZlJtAJ`ےvpfJXQrvˍpfd|Z`ےbvpfH˂pZHAv`f`ےbpfH~lJtArےbHA|drpZHAb`f~ےbHAfH~dQbt璐bHAZdrtAZHAbtArdbHAZH~fl|Z`ffpdrtAJHAbےrd|bHAZpHf`˂pZHAH~ㅐfdQbtHAZp˂f`vbے`~HfpHAZp˂f`vd|ZZp˂tAJl璐ے`JHfpvZp˂f`vXlJtArp˂rJltے`JXQ|ZdQbp˂r`vXndQbtvnrltb`JXQrZdQbt˂rXQvXnbے``vXnl|ZdQrXQJXnvJXQrvnXrXQJXnvdQbtrXQJ`tbdQZXQr˂nXvrXQJ`nvpd|ZXQJ`ےbdQZ|r˂pnXv`XQJ`ےvpflJtArXQJ`ےdQZ|˂pZlJtAJ`ےvpfHJXQrvˍp|btl`ےbpfH~˂pZHAv`f`ےbpfH~l|ZdQےbHA|dtApZHAb`f~ےbHAfH~dQbt璐bHAZdrtAZHAbf~HbHAZH~fd|ZHAZpdrtAJHAbےrd|bHAZp~f`˂p`ZdrQtJtArdHAZp˂f`vbے`~HfpHAZp˂f`vbtlZp˂Jltے`JHfpvZp˂f`vXl|ZdQp˂rJltے`JXQfpvp˂r`vXndQbt˂rXQltb`JXQrZdQbt˂rXQvXnQXb㉀Jlt|ZdQrXQJXnvJXQrvnXrbdQXnvJtArdrXQJ`bnvXQr˂nXvrXQJ`nvpbtlXQJ`ےbdQZ|r˂pnXv`XQJ`ےvpfl|ZdQJ`ےdQZ|˂pZlJtAJ`ےvpfHpJAHrbAdZ|btl`ےbpfH~˂pZHAv`fZ|dpfH~|ZdQےbHApfHpZHAb`f~ےbHAfH~JtArdbHAZdrtAZHAbf~HbHAZH~fbtlbHAZpdrtAJHAbےrd|bHAZp~f`ˁ`ZdrQt|ZdQbHAZp˂f`vbے`~HfprtAJlf`vbtlZp˂f`vXے`JHfpvZp˂f`vX|ZdQp˂rJltے`JXQfpvp˂r`vXnJtArd˂rXQltb`JXQrZdQbn˂rXQvXnQXb㉀JlttlJrXQJXnvJXQrvnXtbdQXnv|ZdQbrXQJ`nvpXQr˂nXvrXQJ`nvpbtlXQJ`ےbdQZ|r˂pnXv`XQJ`ےvpf|ZdQJ`ےdQZ|˂pZXv`fJ`ےvpfHp`ZQXbAdZ|tArd`ےbpfH~˂pZHAv`fZ|dpfH~tlJےbHAfH~pZHAb`f~ےbHAfH~|ZdQbbHAZdtAJZHAbf~HbHAZH~fbtlbHAZpdrtAJHAbے~HfbHAZp~f`b㉀ۑpdrQt|ZdQbHAZp˂f`vbے`~HfprtAJlf`vtArdZp˂f`vXے`JHfpvZp˂f`vXtlJp˂rltbے`JXQfpvp˂r`vXn|ZdQb˂rXQltb`JXQrpvn˂rXQvXnJAHrJlttl|rXQJXnvJXQrvnXtbdQXnv|ZdQbrXQJ`nvpXQr˂nXvrbdQZnvptArdXQJ`ےnvpr˂pnXv`XQJ`ےvpftlJJ`ےdQZ|˂pZXv`fJ`ےvpfHˁ`ZQXbAdZ|ZdQbn`ےbpfH~˂pZHAv`fZ|dpfH~tl|ےbHAfH~pZHAb`f~|drfH~|ZdQbbHAZfHfZHAbf~HbHAZH~ftArdbHAZpdrtAJHAbے~HfbHAZp~f`b㉀ۑpdrQtXv`fHAZp˂f`vے`J~HfprtAJlf`vZdQbtZp˂f`vXے`JHfpvtAJlf`vXtl|p˂r`vXnے`JXQfpvp˂r`vXn|ZdQb˂rXQltb`JXQrpvn˂rXQvXn`ZQXbJlt~fpvrXQJXnvXQrbtvnXtbdQXnvlJtArXQJ`nvpXQr˂nXvtbdQZnvpZdQbtXQJ`ےvpfr˂pnXv`XQJ`ےvpftl|J`ےdQZ|˂pZXv`fJ`ےvpfHۑpJbAdZ|nXv``ےbpfH~lJtAv`fZ|dpfH~rd|ےbHAfH~pZHAb`f~|drfH~lJtAbHAZH~fZHAbf~HbHAZH~fZdQbtbHAZpdtAJlHAbے~HfbHAZp~f`AHr󙐂˂drQtf~HHAZp˂f`vd|Z~HfprtAJlf`vZdQbtZp˂f`vXے`JHfpvtAJlf`vXrd|p˂r`vXnے`JXQfpvp˂r`vXnlJtA˂rXQtbn`JXQrpvn˂rXQvXn`ZQXbJltfpvrXQJXnvdQbtvnXtbdQXnvl|ZrXQJ`nvpXQr˂nXvtbdQZnvpZdQbtXQJ`ےvpfr˂pnXv`bdQZ|vpfrd|J`ےvpf˂pZXv`fJ`ےvpfHۑp`bAdZ|nXv``ےbpfH~lJtArv`fZ|dpfH~dQbnXےbHAfH~pZHA`f~|drfH~l|ZbHAZH~fZHAbf~HdrtAH~fZdQbtbHAZpHf`HAbے~HfbHAZp~f`ZQXb㉀drQtf~fpHAZp˂f`vd|Z~HfprtAJlf`vv`f~Zp˂f`vXے`JXQHfpvtAJlf`vXdQbtp˂r`vXnے`JXQfpvJlt`vXnl|Z˂rXQvXn`JXQrpvn˂rXQvXnۑpJAHJltvnXrXQJXnvdQbtvnXtbdQXnrfpvrXQJ`nvprbt璀nXvtbdQZnvplJtArXQJ`ےvpfr˂pnXv`bdQZ|vpfdQbtJ`ےvpfH˂pZXv`fJ`ےvpfHr󙐂ˁ`bAdZ|v`f`ےbpfH~lJtArv`fZ|d˂p`JnXv`ےbHAfH~lJtAd`f~|drfH~d|ZbHAZH~fZHAbf~HdrtAH~flJtArbHAZp~f`HAbے~HfbHAZp~f`ZQXb㉀drQt~HfpHAZp˂f`vd|Z~HfprtAJlXQr˂f~HZp˂f`vX|ZdQHfpvtAJlf`vXdQbtp˂r`vXnے`JXQfpvJlt`vXnd|Z˂rXQvXn`JXQrpvn˂rbvXnۑp`ZJltvnXrbdQXnvdQbtvnXtbdQpZHAbfpvrXQJ`nvpbtlnXvtbdQZnvpl|ZdQXQJ`ےvpfr˂pnXv`bdQZ|vpfdQbtJ`ےvpfH˂pZXv`fdQZ|vpfHQXb㉀bAdZ|v`f~Z|dpfH~lJtArv`fZ|dے`JnXv`fےbHAfH~JtArd`f~|drfH~bnXvbHAZH~fZHAےf~HdrtAH~fl|ZdQbHAZp~f`HAbے~HfdrtAJ~f`pJAHrdrQtfpvrtAJlf`vd|Z~HfprtAJlXQr˂~fpvZp˂f`vX|ZdQHfpvtAJlf`vX`f~fpp˂r`vXn`JXQrfpvJlt`vXnbtl˂rXQvXn`JXQrpvnltbvXnˁ`ZJltnXv`tbdQXnvdQbtvnXtbdQp`JXQnXvrXQJ`nvpbtlnXvtbdQZnr˂vnXXQJ`ےvpfbtlnXv`bdQZ|vpfJtArdJ`ےvpfH˂pZXv`fdQZ|vpfHQXb㉀bAdZ|f~HZ|dpfH~lJtArv`fZ|dr˂p`f~ےbHAfH~JtArd`f~|drp`JXQv`fbHAZH~fJtAdf~HdrtAH~f|ZdQbHAZp~f`HAbے~HfdrtAJ~f`p`ZQXdrQtfpvrtAJlf`vd|ZHfpvrtAJlZHAbHfpvZp˂f`vX|ZdQHfpvtAJlr˂p~Hfpp˂r`vXn|ZdQbfpvJlt`vXnbtl˂rXQvXn`JXQrpvnltbvXnb㉀ۑpJltnXv`ftbdQXnvdQbt璀nrXQtbdQے`JXQnXvrbdQZnvpbtlnXvtbdQZZHAbvnXXQJ`ےvpftlJnXv`bdQZ|vpf|ZdQbJ`ےvpfH˂pZXv`fdQZ|vpfHJAHrbAdZ|~fpvZ|dpfH~lJtArJ`ےZ|dr˂p`f~fp|drfH~JtArd`f~|drے`JXQv`f~bHAZH~ftArdf~HdrtAH~fnXv`bHAZp~f`HAے`~HfdrtAJ~f`ˁ`ZQXdrQtnXvrtAJlf`vd|ZHAZp˂rtAJl`JXQrvnXtAJlf`vX|ZdQHfpvtAJlr˂pfpvp˂r`vXn|ZdQbfpvJlt`vXnf~fp˂rXQvXnJXQrbpvnltbvXnb㉀XnJlt`f~tbdQXnvdQbt璀rXQJtbdQ˂pZv`ftbdQZnvpbtlnXvtbdQZ`JXQrnXv`XQJ`ےvpftlJnXv`bdQZ|r˂pvnXJ`ےvpfHtlJXv`fdQZ|vpfHvˍpfbAdZ|HfpvZ|dpfH~lJtAr`ےbZ|dHAbے~Hfp|drfH~JtArd`fH|dr˂pZf~HbHAZH~ftArdf~HdrtA`JXQrv`fbHAZp~f`tAd|~HfdrtAJ~f`H~ㅐfۂdrQtnXvrtAJlf`vd|ZHAZp˂rtAJl`JXQrvnXtAJlf`vX|ZdQfpvtAJlHAbےfpvp˂r`vXn|ZdQbfpvJlt˂pZ~Hfp˂rXQvXnZdQbtpvnltbvXn`vXnJlt`f~fptbdQXnvdQbt璀rXQJtbdQ˂p`v`f~tbdQZnvpbtlnrXQJtbdQZ`JXQrnXv`bdQZ|vpftlJnXv`bdQZ|HAbےvnXJ`ےvpfHlJtAXv`fdQZ|vpfHvˍpfbAdZ|vnXZ|dpfH~lJtAr`ےbZ|dJXQrfpv|drfH~JtArd`ےHA|dr˂p`f~fpdrtAH~ftArdf~HdrtA`JXQrv`f~fbHAZp~f`rd|~HfdrtAJ~f`H~ㅐfۂdrQt----------------------......................................... \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv35_3.dat b/mpdf/qrcode/data/qrv35_3.dat deleted file mode 100644 index a827705..0000000 --- a/mpdf/qrcode/data/qrv35_3.dat +++ /dev/null @@ -1,313 +0,0 @@ -{|{|{|{|zyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmlklklklkjijijijifefefefebabababa`_`_`_`_^]^]^]^]ZYZYZYZY{|{{{{{{zyzyzyzyxwxwxwvutstststsrqrqrqrqnmnmnmnmlklklklkjijijijifefefefebabababa`_`_`_`_^]^]^]^]ZYZYZYZY|{|{|{|{zyzyzyzyvuvuvuvutstststsrqrqrqrqnmnmnmnmlklklklkjijijijifefefefebabababa`_`_`_`_^]^]^]^]ZYZYZYZY|{|{|{|{zyzyzyzyvuvuvuvutstststsrqrqrqrqnmnmnmnmlklklklkjijijijifefefefebabababa`_`_`_`_^]^]^]^]ZYZYZYZY|{|{|{|{zyzyzyzyvuvuvuvutstststsrqrqrqrqnmnmnmnmlklklklkjijijijifefefefebabababa`_`_`_`_^]^]^]^]ZYZYZYZY|{|{|{|{zyzyzyzyvuvuvuvutstststsrqrqrqrqnmnmnmnmlklklklkjijijijifefefefebabababa`_`_`_`_^]^]^]^]ZYZYZYZY|{|{|{{{zyzyzyzyvuvuvuvutstststsrqrqrqrqnmnmnmnmlklklklkjijijijifefefefebabababa`_`_`_`_^]^]^]^]ZYZYZYZY{{{|{|{|zyzyzyzyvuvuvuvutstststsrqrqrqrqnmnmnmnmlklklklkjijijijifefefefebabababa`_`_`_`_^]^]^]^]ZYZYZYZY{|{|{|{|zyzyzyzyvuvuvuvutstststsrqrqrqrqnmnmnmnmlklklklkjijijijifefefefebabababa`_`_`_`_^]^]^]^]ZYZYZYZY{|{|{|{|zyzyzyzyvuvuvuvutstststsrqrqrqrqnmnmnmnmlklklklkjijijihgfefefefebabababa`_`_`_`_^]^]^]^]ZYZYZYZY{|{|{|{|zyzyzyzyvuvuvuvutstststsrqrqrqrqnmnmnmnmlklklklkhghghghgfefefefebabababa`_`_`_`_^]^]\[\[ZYZYZYZY{|{|{|{|zyzyzyzyvuvuvuvutstststsrqrqrqrqnmnmnmnmlklklklkhghghghgfefefefebabababa`_`_`_`_\[\[\[\[ZYZYZYZY{{{{{{|{zyzyzyzyvuvuvuvutstststsrqrqrqponmnmnmnmlklklklkhghghghgfefefefebabababa`_`_`_`_\[\[\[\[ZYZYZYZY|{|{|{|{zyzyzyzyvuvuvuvutstststspopopoponmnmnmnmlklklklkhghghghgfefefefebabababa`_`_`_`_\[\[\[\[ZYZYZYZY|{|{|{|{zyzyzyzyvuvuvuvutstststspopopoponmnmnmnmlklklklkhghghghgfefefefebabababa`_`_`_`_\[\[\[\[ZYZYZYZY|{|{|{|{zyzyzyxwvuvuvuvutstststspopopoponmnmnmnmlklklklkhghghghgfefefefebabababa`_`_`_`_\[\[\[\[ZYZYZYZY|{|{|{|{xwxwxwxwvuvuvuvutstststspopopoponmnmnmnmlklklklkhghghghgfefefefebabababa`_`_`_`_\[\[\[\[ZYZYZYZY~}~}|{|{{{{{xwxwxwxwvuvuvuvutstststspopopoponmnmnmnmlklklklkhghghghgfefefedcbabababa`_`_`_`_\[\[\[\[ZYZYZYZY~}~}~}~}{|{|{|{|xwxwxwxwvuvuvuvutstststspopopoponmnmnmnmlklklklkhghghghgdcdcdcccbabababa`_`_`_`_\[\[\[\[ZYZYZYZY~}~}~}~}{|{|{|{|xwxwxwxwvuvuvuvutstststspopopoponmnmnmnmlklklklkhghghghgcccdcdcdbabababa`_`_`_`_\[\[\[\[ZYZYZYZY~}~}~}~}{|{|{|{|xwxwxwxwvuvuvuvutstststspopopoponmnmnmnmlklklklkhghghghgcdcdcdcdbabababa`_`_`_`_\[\[\[\[ZYZYZYZY~}~}~}~}{|{|{|{|xwxwxwxwvuvuvuvutstststspopopoponmnmnmnmlklklklkhghghghgcdcdcdcdbabababa`_`_`_`_\[\[\[\[ZYZYZYZY~}~}~}~}{|{|{|{{xwxwxwxwvuvuvuvutstststspopopoponmnmnmnmlklklklkhghghghgcdcdcdcdbabababa`_`_`_`_\[\[\[\[ZYZYZYZY~}~}~}~}{{{{|{|{xwxwxwxwvuvuvuvutstststspopopoponmnmnmnmlklklkjihghghghgcdcdcdcdbabababa`_`_`_`_\[\[\[\[ZYZYZYZY~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvutstststspopopoponmnmnmnmjijijijihghghghgccccccdcbabababa`_`_^]^]\[\[\[\[ZYZYZYZY~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvutstststspopopoponmnmnmnmjijijijihghghghgdcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZY~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvutststsrqpopopoponmnmnmnmjijijijihghghghgdcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZY~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqpopopoponmnmnmnmjijijijihghghghgdcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZY~}~}~}~}|{{{{{|{xwxwxwxwvuvuvuvurqrqrqrqpopopoponmnmnmnmjijijijihghghghgdcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZY~}~}~}~}|{|{|{zyxwxwxwxwvuvuvuvurqrqrqrqpopopoponmnmnmnmjijijijihghghghgdcdcccccbabababa^]^]^]^]\[\[\[\[ZYZYZYZY~}~}~}~}zyzyzyzyxwxwxwxwvuvuvuvurqrqrqrqpopopoponmnmnmnmjijijijihghghghgcdcdcdcdbabababa^]^]^]^]\[\[\[\[ZYZYZYZY~}~}~}~}zyzyzyzyxwxwxwxwvuvuvuvurqrqrqrqpopopoponmnmnmnmjijijijihghghghgcdcdcdcdbabababa^]^]^]^]\[\[\[\[ZYZYZYZY~}~}~}~}zyzyzyzyxwxwxwxwvuvuvuvurqrqrqrqpopopoponmnmnmnmjijijijihghghghgcdcdcdcdbabababa^]^]^]^]\[\[\[\[ZYZYZYZY~}~}~}~}zyzyzyzyxwxwxwxwvuvuvuvurqrqrqrqpopopoponmnmnmnmjijijijihghghghgcdcdcdcdbabababa^]^]^]^]\[\[\[\[ZYZYZYZY~}~}~}~}zyzyzyzyxwxwxwxwvuvuvuvurqrqrqrqpopopoponmnmnmnmjijijijihghghghgcdcdcdccbabababa^]^]^]^]\[\[\[\[ZYZYZYZY~}~}~}~}zyzyzyzyxwxwxwxwvuvuvuvurqrqrqrqpopopoponmnmnmnmjijijijihghghghgccccdcdcbabababa^]^]^]^]\[\[\[\[ZYZYXWXW~}~}~}~}zyzyzyzyxwxwxwxwvuvuvuvurqrqrqrqpopopoponmnmnmnmjijijijihghghghgdcdcdcdcbabababa^]^]^]^]\[\[\[\[XWXWXWXW~}~}~}~}zyzyzyzyxwxwxwxwvuvuvuvurqrqrqrqpopopoponmnmnmlkjijijijihghghghgdcdcdcdcbabababa^]^]^]^]\[\[\[\[XWXWXWXW~}~}~}~}zyzyzyzyxwxwxwxwvuvuvuvurqrqrqrqpopopopolklklklkjijijijihghghghgdcdcdcdcbaba`_`_^]^]^]^]\[\[\[\[XWXWXWXW~}~}~}~}zyzyzyzyxwxwxwxwvuvuvuvurqrqrqrqpopopopolklklklkjijijijihghghghgdcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWXWXWXWXW~}~}~}~}zyzyzyzyxwxwxwxwvuvuvutsrqrqrqrqpopopopolklklklkjijijijihgfefefedccccccd`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWXWXWXWXW~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqpopopopolklklklkjijijijifefefefecdcdcdcd`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWXWXWXWXW~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqpopopopolklklklkjijijijifefefefecdcdcdcd`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWXWXWXWXW~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqpopopopolklklklkjijijijifefefefecdcdcdcd`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWXWXWXWXW~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqpopopopolklklklkjijijijifefefefecdcdcdcd`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWXWXWXWXW~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqpopopopolklklklkjijijijifefefefecdcdcccc`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWXWXWXWXW~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqpopopopolklklklkjijijijifefefefeccdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWXWXWXWXW~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqpopopopolklklklkjijijijifefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWXWXWXWXW|{|{|{|{zyzyzyzyxwxwxwxwtstststsrqrqrqrqpopopopolklklklkjijijijifefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWXWXWXWXW{{{{{|{|zyzyzyzyxwxwxwxwtstststsrqrqrqrqpopopopolklklklkjijijijifefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[ZYZYXWXWXWXWXWXWXWXW{|{|{|{|zyzyzyzyxwxwxwxwtstststsrqrqrqrqpopopopolklklklkjijijijifefefefedcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWXWXWXWXW{|{|{|{|zyzyzyzyxwxwxwxwtstststsrqrqrqrqpopoponmlklklklkjijijijifefefefeccccdcdc`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWXWXWXWXW{|{|{|{|zyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmlklklklkjijijijifefefefedcdcbaba`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWXWXWXWXWXWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMKLKLKLKLHGHGHGHGFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=<;<;<;<;8787878734343434212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!    - - - - XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMKLKKKKKKHGHGHGHGFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=<;<;<;<;8787878734343434212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!    - - - - XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=<;:9:9:98787878734343333212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!    - - - - XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:9878787873343434321212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!    - - - - XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:9878787874343434321212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!    - - - - XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEDCBABABA@?@?@?@?>=>=>=>=:9:9:9:9878787874343434321212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!    - - - - XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKKKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?>=>=>=>=:9:9:9:9878787874343434321212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!    - - - - XWXWVUVUTSTSTSTSRQRQRQRQNMNMNMNMKKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?>=>=>=>=:9:9:9:9878787874343434321212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!    - - - - VUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMLKJIJIJIHGHGHGHGFEFEFEFEBABABABA@?@?@?@?>=>=>=>=:9:9:9:9878787873333343421212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!   - - - - VUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGFEFEFEFEBABABABA@?@?@?@?>=>=>=>=:9:9:9:9878787873434343421212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"! - - - - VUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGFEFEFEFEBABABABA@?@?@?@?>=>=>=>=:9:9:9:9878787873434343421212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"! - - - - VUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGFEFEFEFEBABABABA@?@?@?@?>=>=>=>=:9:9:9:9878787873434343421212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#     - - - - VUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGFEFEFEFEBABABABA@?@?@?@?>=>=>=>=:9:9:9:9878787873434343421212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#     - - - - VUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGFEFEFEFEBABABABA@?@?@?@?>=>=>=>=:9:9:9:9878787873433333321212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#     - - - - VUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGFEFEFEFEBABABABA@?@?@?@?>=>=>=>=:9:9:9:9878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#     - - - - VUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGFEFEFEFEBABABABA@?@?@?@?>=>=>=>=:9:9:9:9878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#     - - - - VUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGFEFEFEFEBABABABA@?@?@?@?>=<;<;<;:9:9:9:9878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#     - - - - VUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:987878787434343430/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#     - - - - VUVUVUVUTSTSTSTSRQRQPOPONMNMNMNMJIJIJIJIHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:987878765434343330/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#     - - - - VUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGFEDCDCDCBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565333434340/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#     - - - - VUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565343434340/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#     - - - - VUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565343434340/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#     - - - - VUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565343434340/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#     - - - - VUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565343434340/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#        - - - - VUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565333333430/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#        - - - - VUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565434343430/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!        - - - - VUVUVUVUTSTSTSTSPOPOPOPONMNMLKLKJIJIJIJIHGHGHGHGDCDCDCDCBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565434343430/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!        - - - - VUVUVUVUTSTSTSTSPOPOPOPOLKLKKKKKJIJIJIJIHGHGHGHGDCDCDCDCBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565434343430/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!        - - - - VUVUVUVUTSTSTSTSPOPOPOPOKLKLKLKLJIJIJIJIHGHGHGHGDCDCDCDCBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!        - - - - VUVUVUVUTSTSTSTSPOPOPOPOKLKLKLKLJIJIJIJIHGHGHGHGDCDCDCDCBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565434333330/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!        - - - - VUVUVUVUTSTSTSTSPOPOPOPOKLKLKLKLJIJIJIJIHGHGHGHGDCDCDCDCBABABABA@?>=>=>=<;<;<;<;:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!        - - - - VUVUVUVUTSTSTSTSPOPOPOPOKLKLKLKLJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;:9:9:9:965656565212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!        - - - - VUVUVUVUTSTSRQRQPOPOPOPOKLKLKLKKJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;:9:9:9:965656565212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!        - - - - VUVUVUVURQRQRQRQPOPOPOPOKKKKLKLKJIJIJIJIHGFEFEFEDCDCDCDCBABABABA>=>=>=>=<;<;<;<;:9:9:9:965656565212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!        - - - VUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDCBABABABA>=>=>=>=<;<;<;<;:9:9:9:965656565212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!        VUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDCBABABABA>=>=>=>=<;<;<;<;:9:9:9:965656565212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!        VUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDCBABABABA>=>=>=>=<;<;<;<;:9:9:9:965656565212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!        VUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDCBABABABA>=>=>=>=<;<;<;<;:9:9:9:965656565212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!        VUVUVUVURQRQRQRQPOPOPOPOLKKKKKKLJIJIJIJIFEFEFEFEDCDCDCDCBABABABA>=>=>=>=<;<;<;<;:9:9:9:965656565212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!        VUVUVUVURQRQRQRQPOPOPOPOKLKLKLKLJIJIJIJIFEFEFEFEDCDCDCDCBABABABA>=>=>=>=<;<;<;<;:9:9:9:965656565212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!        VUVUVUVURQRQRQRQPOPOPOPOKLKLKLKLJIJIJIJIFEFEFEFEDCDCDCDCBABABABA>=>=>=>=<;<;<;<;:9:9:9:965656565212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!        VUVUVUVURQRQRQRQPOPOPOPOKLKLKLKLJIJIJIJIFEFEFEFEDCDCDCDCBABABABA>=>=>=>=<;<;<;<;:987878765656565212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!      VUVUVUVURQRQRQRQPOPOPOPOKLKLKLKLJIJIJIJIFEFEFEFEDCDCDCDCBABABABA>=>=>=>=<;<;<;<;8787878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!    VUVUVUVURQRQRQRQPOPOPOPOKLKLKKKKJIJIJIJIFEFEFEFEDCDCDCDCBABABABA>=>=>=>=<;<;<;<;8787878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!    VUVUVUVURQRQRQRQPOPOPOPOKKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDCBA@?@?@?>=>=>=>=<;<;<;<;8787878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!    VUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=<;<;<;<;8787878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!    VUVUTSTSRQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=<;<;<;<;8787878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!    TSTSTSTSRQRQRQRQPOPOPOPOLKLKLKLKJIHGHGHGFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=<;<;<;<;8787878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!    - TSTSTSTSRQRQRQRQPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=<;<;<;<;8787878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!    - - - - TSTSTSTSRQRQRQRQNMNMNMNMKKKKKLKLHGHGHGHGFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=<;<;<;<;8787878765434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!    - - - - TSTSTSTSRQRQRQRQNMNMNMNMKLKLKLKLHGHGHGHGFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=<;<;<;<;8787878743333334212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!    - - - - TSTSTSTSRQRQRQRQNMNMNMNMKLKLKLKLHGHGHGHGFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=<;<;<;<;8787878734343434212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!    - - - - TSTSTSTSRQRQRQRQNMNMNMNMKLKLKLKLHGHGHGHGFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=<;<;<;<;8787878734343434212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!    - - - - IIJJKKLL(''&&%%$~~}}UUVVWWXX ttssrrqqaabbccddYYXXWWVV^^__``aakkjjiihhjjkkllmm __^^]]\\vvwwxxyyBBCCDDEEbbaa``__ssttuuvvMMNNOOPP$##""!! ||{{zzyyYYZZ[[\\ - - ppoonnmmeeffgghhUUTTSSRR~}|bbccddeeggffeeddnnooppqq - - [[ZZYYXXzz{{||}}FFGGHHII - -^^]]\\[[wwxxyyzzQQRRSSTT!!""##xxwwvvuu]]^^__``llkkjjiiiijjkkllQQKKJJII{{zzyyxxffgghhiiccbbaa``rrssttuuWWVVUUTT~~JJKKQQRR ZZYYXXWW{{||}}~~UUVVWWXX$$%%&&''ttssrrqqaabbccddhhggffeemmnnoopp - - HHGGFFEEwwvvuuttjjkkllmm __^^]]\\vvwwxxyySSRRQQPPSSTTUUVVVVUUTTSSYYZZ[[\\(())**++ppoonnmmeeffgghhddccbbaaqqrrsstt DDCCBBAAssrrqqppnnooppqq - - [[ZZYYXXzz{{||}}OONNMMLLWWXXYYZZRRQQPPOO !!""]]^^__``,,--..//llkkjjiiiijjkkll``__^^]]uuvvwwxx@@??>>==oonnmmllrrssttuuWWVVUUTT~~KKJJIIHH[[\\]]^^NNMMLLKK##$$%%&&aabbccdd00112233 - -hhggffeemmnnoopp - - \\[[ZZYYyyzz{{||<<;;::99kkjjiihgvvwwxxyySSRRQQPP !!GGFFEEDD__``aabbJJIIHHGG''(())**~~}}eeffgghh99::;;<< ddccbbaaqqrrsstt XXWWVVUU}}~~33221100fedccbbazz{{||}}OONNMMLL""##$$%%CCBBAA@@cciijjkk !!""FFEEDDCC++,,--..||{{zzyyiijjkkll==>>??@@``__^^]]uuvvwwxxTTSSRRQQ //..--,,a``__^^]~~KKJJIIHH&&''(())??>>==<>==<<;;33445566ttssrrqqqqrrssttEEFFGGHH XXWWVVUU}}~~LLKKJJII%%&&''((''&&%%$$YXXWWVVU""##$$%%CCBBAA@@..//001177665544ttuuvvww++,,--..::998877778899::ppoonnmmuuvvwwxxIIJJKKQQTTSSRRQQ HHGGFFEE))**++,,##""!!UTTSSRRQ&&''(())??>>==<<2233445533221100xxyyzz{{//00112266554433;;<<==>>llkkjjiiyyzz{{||RRSSTTUUPPOONNMM!!""##$$DDCCBBAA--..//00QPONMLKK**++,,--;;::998866778899//..--,,33445566221100//??@@AABBhhggffee}}~~VVWWXXYYLLKKJJII%%&&''((@@??>>==11223344JJIIHHGG..//001177665544::;;<<==++**))((778899::..--,,++CCDDEEFFddccbbaaZZ[[\\]] HHGGFFEE))**++,,<<;;::9955667788FFEEDDCC2233445533221100>>??@@AA''&&%%$$;;<<==>>**))((''GGHHIIJJ``__^^]]^^__``aa!!""##$$DDCCBBAA--..//008877665599::;;<< BBAA@@??66778899//..--,,BBCCDDEE##""!! {{zz??@@AABB&&%%$$##KKLLMMNN\\[[ZZYYbbcciijj%%&&''((@@??>>==1122334444332211==>>??@@ - - >>==<<;;::;;<<==++**))((FFGGHHIIyyxxwwvvCCDDEEFF""!! OOPPQQRRXXWWVVUUkkllmmnn))**++,,<<;;::995566778800//..--AABBCCDD::998765>>??@@AA''&&%%$$JJKKLLMMuuttssrrGGHHIIJJSSTTUUVVTTSSRRQQooppqqrr--..//008877665599::;;<<,,++**))EEFFGGHH - -43322110BBCCDDEE##""!! NNOOPPQQqqppoonnKKLLMMNN~~}}||{{WWXXYYZZPPOONNMMssttuuvv1122334444332211==>>??@@((''&&%%IIJJKKLL 0//..--,FFGGHHIIRRSSTTUUmmllkkjjOOPPQQRRzzyyxxww[[\\]]^^LLKKJJIIwwxxyyzz5566778800//..--AABBCCDD$$##""!!MMNNOOPP,++**))(JJKKLLMM~~}}||VVWWXXYY iiccbbaaSSTTUUVVvvuuttss__``aabbHHGGFFEE{{99::;;<<,,++**))EEFFGGHH QQRRSSTT(''&&%%$NNOOPPQQ{{zzyyxxZZ[[\\]] - - ``__^^]]WWXXYYZZ rrqqppooccddeeffDDCCBBAA==>>??@@((''&&%%IIJJKKLL~~}}UUVVWWXX$##""!! RRSSTTUUwwvvuutt^^__``aa\\[[ZZYY[[\\]]^^ - - nnmmllkkgghhiijj@@??>>==AABBCCDD$$##""!!MMNNOOPP||{{zzyyYYZZ[[\\!!""##~~}}||VVWWXXYY ssrrqqppbbccddeeXXWWVVUU__``aabbjjiihhggkkllmmnn<<;;::99EEFFGGHH QQRRSSTTxxwwvvuu]]^^__``$$%%&&''{{zzyyxxZZ[[\\]] - - oonnmmllffgghhiiTTSSRRQQ~}|{{ccddeeffffeeddccooppqqrr88776655IIJJKKLL~~}}UUVVWWXX ttssrrqqaabbccdd(())**++wwvvuutt^^__``aakkjjiihhjjkkllmm KKJJIIHHzzyyxxwwgghhiijjbbaa``__ssttuuvv44332211{{MMNNOOPP||{{zzyyYYZZ[[\\ - - ppoonnmmeeffgghh,,--..//ssrrqqppbbccddeeggffeeddnnooppqq - - GGFFEEDDvvuuttsskkllmmnn - -^^]]\\[[wwxxyyzz00//..--zzyyxxwwQQRRSSTTxxwwvvuu]]^^__``llkkjjiiiijjkkll00112233 - -oonnmmllffgghhiiccbbaa``rrssttuuCCBBAA@@rrqqppooooppqqrr ZZYYXXWW{{||}}~~,,++**))vvuuttssUUVVWWXX ttssrrqqaabbccddhhggffeemmnnoopp99::;;<< kkjjiihhjjkkllmm __^^]]\\vvwwxxyy??>>==<>??@@ggffeeddnnooppqq - - [[ZZYYXXzz{{||}};;::9933jjiihgfewwxxyyzzRRQQPPOO$$##""!!nnmmllkk]]^^__``llkkjjiiiijjkkll``__^^]]uuvvwwxxAABBCCDDccbbaa``rrssttuuWWVVUUTT~~221100//dccbbaa`{{||}}~~NNMMLLKK jjiiccbbaabbccddhhggffeemmnnoopp - - \\[[ZZYYyyzz{{||EEFFGGHH __^^]]\\vvwwxxyySSRRQQPP !!..--,,++`__^^]]\JJIIHHGGaa``__^^eeffgghhddccbbaaqqrrsstt XXWWVVUU}}~~IIJJKKQQ - - [[ZZYYXXzz{{||}}OONNMMLL""##$$%%**))((''\[[ZZYYX !!""FFEEDDCC]]\\[[ZZ~}|iijjkkll``__^^]]uuvvwwxxTTSSRRQQRRSSTTUUWWVVUUTT~~KKJJIIHH&&''(())&&%%$$##XWWVVUUT##$$%%&&BBAA@@??YYXXWWVV{{zzyyxxmmnnoopp - - \\[[ZZYYyyzz{{||PPOONNMMVVWWXXYYSSRRQQPP !!GGFFEEDD**++,,--""!!TSSRRQQP''(())**>>==<<;; UUTTSSRRwwvvuuttqqrrsstt XXWWVVUU}}~~LLKKJJIIZZ[[\\]]OONNMMLL""##$$%%CCBBAA@@..//0011ONMLKKJJ++,,--..::998877 - - QQKKJJIIssrrqqppuuvvwwxxTTSSRRQQ HHGGFFEE^^__``aaKKJJIIHH&&''(())??>>==<<22334455IIHHGGFF//00112266554433 - - HHGGFFEEoonnmmllyyzz{{||PPOONNMM!!""##$$DDCCBBAAbbcciijj !!GGFFEEDD**++,,--;;::998866778899EEDDCCBB33445566221100// DDCCBBAAkkjjiihg}}~~LLKKJJII%%&&''((@@??>>==kkllmmnn""##$$%%CCBBAA@@..//001177665544::;;<<== - -AA@@??>>778899::..--,,++@@??>>==fedccbba HHGGFFEE))**++,,<<;;::99ooppqqrr&&''(())??>>==<<2233445533221100>>??@@AA ==<<;;::;;<<==>>**))((''VVUUTTSS<<;;::99a``__^^]!!""##$$DDCCBBAA--..//0088776655ssttuuvv**++,,--;;::998866778899//..--,,BBCCDDEE99876543??@@AABB&&%%$$##RRQQPPOO33221100]\\[[ZZY%%&&''((@@??>>==1122334444332211wwxxyyzz..//001177665544::;;<<==++**))((FFGGHHII - - 3221100/CCDDEEFF""!! NNMMLLKK //..--,,YXXWWVVU))**++,,<<;;::995566778800//..--{{2233445533221100>>??@@AA''&&%%$$JJKKLLMM /..--,,+GGHHIIJJJJIIHHGG!!""##$$++**))((UTTSSRRQ--..//008877665599::;;<<,,++**))66778899//..--,,BBCCDDEE##""!! NNOOPPQQ+**))(('KKLLMMNN~~}}||{{FFEEDDCC%%&&''((''&&%%$$QPONMLKK1122334444332211==>>??@@((''&&%%::;;<<==++**))((FFGGHHIIRRSSTTUU'&&%%$$#OOPPQQRRzzyyxxwwBBAA@@??))**++,,##""!!JJIIHHGG5566778800//..--AABBCCDD$$##""!!{{>>??@@AA''&&%%$$JJKKLLMM~~}}||VVWWXXYY#""!! SSTTUUVVvvuuttss>>==<<;;--..//00FFEEDDCC99::;;<<,,++**))EEFFGGHH zzyyxxwwBBCCDDEE##""!! NNOOPPQQ{{zzyyxxZZ[[\\]]!!""##$$~~}}||{{WWXXYYZZ rrqqppoo::99887711223344BBAA@@??==>>??@@((''&&%%IIJJKKLLvvuuttssFFGGHHIIRRSSTTUUwwvvuutt^^__``aa%%&&''((zzyyxxww[[\\]]^^ - - nnmmllkk6655443355667788>>==<<;;AABBCCDD$$##""!!MMNNOOPPrrqqppooJJKKLLMM~~}}||VVWWXXYY ssrrqqppbbccddee))**++,,vvuuttss__``aabbjjiihhgg221100//99::;;<< ::998765EEFFGGHH QQRRSSTTnnmmllkkNNOOPPQQ{{zzyyxxZZ[[\\]] - - oonnmmllffgghhii--..//00 rrqqppooccddeeffffeeddcc..--,,++==>>??@@ - - - -43322110IIJJKKLL~~}}UUVVWWXX jjiiccbbRRSSTTUUwwvvuutt^^__``aakkjjiihhjjkkllmm11223399 - - nnmmllkkgghhiijjbbaa``__**))((''AABBCCDD 0//..--,MMNNOOPP||{{zzyyYYZZ[[\\ - - aa``__^^VVWWXXYY ssrrqqppbbccddeeggffeeddnnooppqq::;;<<==jjiihhggkkllmmnn - -^^]]\\[[&&%%$$##EEFFGGHH,++**))(QQRRSSTTxxwwvvuu]]^^__``]]\\[[ZZZZ[[\\]] - - oonnmmllffgghhiiccbbaa``rrssttuu>>??@@AAffeeddccooppqqrr ZZYYXXWW""!! SSTTUUVV&%%$$##"PPQQRRSSyyxxwwvv\\]]^^__ ^^]]\\[[YYZZ[[\\ - - ppoonnmmeeffgghhddccbbaaqqrrsstt==>>??@@ggffeeddnnooppqq - - [[ZZYYXXzz{{||}}33221100SSRRQQPP~~}}||{{WWXXYYZZ!!"!! ~~TTUUVVWWuuttssrr``aabbccZZYYXXWW]]^^__``llkkjjiiiijjkkll``__^^]]uuvvwwxxAABBCCDDccbbaa``rrssttuuWWVVUUTT~~//..--,,OONNMMLLzzyyxxww[[\\]]^^""##$$%%}}||{{zzXXYYZZ[[ - -qqppoonnddeeffggVVUUTTSS~aabbccddhhggffeemmnnoopp - - \\[[ZZYYyyzz{{||EEFFGGHH __^^]]\\vvwwxxyySSRRQQPP !!++**))((KKJJIIHHvvuuttss__``aabb&&''(())yyxxwwvv\\]]^^__ mmllkkjjhhiijjkkRRQQKKJJ}|{{zzyyeeffgghhddccbbaaqqrrsstt XXWWVVUU}}~~IIJJKKQQ - - [[ZZYYXXzz{{||}}OONNMMLL""##$$%%''&&%%$$GGFFEEDD rrqqppooccddeeff**++,,--uuttssrr``aabbcciihhggffllmmnnoo - - IIHHGGFFxxwwvvuuiijjkkll``__^^]]uuvvwwxxTTSSRRQQRRSSTTUUWWVVUUTT~~KKJJIIHH&&''(())##""!!CCBBAA@@ - - nnmmllkkgghhiijj..//0011 qqppoonnddeeffggeeddccbbppqqrrss EEDDCCBBttssrrqqmmnnoopp - - \\[[ZZYYyyzz{{||PPOONNMMVVWWXXYYSSRRQQPP !!GGFFEEDD**++,,--??>>==<<jjiihhggkkllmmnn223399:: - - mmllkkjjhhiijjkkaa``__^^ttuuvvwwAA@@??>>ppoonnmmqqrrsstt XXWWVVUU}}~~LLKKJJIIZZ[[\\]]OONNMMLL""##$$%%CCBBAA@@..//0011;;::9988ffeeddccooppqqrr;;<<==>>iihhggffllmmnnoo - - ]]\\[[ZZxxyyzz{{==<<;;::llkkjjiiuuvvwwxxTTSSRRQQ HHGGFFEE^^__``aaKKJJIIHH&&''(())??>>==<<2233445577665544bbaa``__ssttuuvv??@@AABBeeddccbbppqqrrss YYXXWWVV||}}~~99332211hgfedccbyyzz{{||PPOONNMM!!""##$$DDCCBBAAbbcciijj !!GGFFEEDD**++,,--;;::998866778899 33221100 - -^^]]\\[[wwxxyyzzCCDDEEFFaa``__^^ttuuvvwwUUTTSSRR00//..--baa``__^}}~~LLKKJJII%%&&''((@@??>>==kkllmmnn""##$$%%CCBBAA@@..//001177665544::;;<<== - - - -//..--,, ZZYYXXWW{{||}}~~GGHHIIJJ - - ]]\\[[ZZxxyyzz{{QQPPOONN !!""##,,++**))^]]\\[[Z HHGGFFEE))**++,,<<;;::99ooppqqrr&&''(())??>>==<<2233445533221100>>??@@AA ++**))((VVUUTTSSKKQQRRSS YYXXWWVV||}}~~MMLLKKJJ$$%%&&''((''&&%%ZYYXXWWV!!""##$$DDCCBBAA--..//0088776655ssttuuvv**++,,--;;::998866778899//..--,,BBCCDDEE''&&%%$$RRQQPPOOTTUUVVWWUUTTSSRRIIHHGGFF(())**++$$##""!!VUUTTSSR%%&&''((@@??>>==1122334444332211wwxxyyzz..//001177665544::;;<<==++**))((FFGGHHII##""!! NNMMLLKKXXYYZZ[[QQPPOONN !!""##EEDDCCBB,,--..//RQQPONML))**++,,<<;;::995566778800//..--{{2233445533221100>>??@@AA''&&%%$$JJKKLLMMJJIIHHGG\\]]^^__MMLLKKJJ$$%%&&''AA@@??>>00112233KKJJIIHH--..//008877665599::;;<<,,++**))66778899//..--,,BBCCDDEE##""!! NNOOPPQQ!!""## !!""FFEEDDCC``aabbccIIHHGGFF(())**++==<<;;::44556677GGFFEEDD1122334444332211==>>??@@((''&&%%::;;<<==++**))((FFGGHHIIRRSSTTUU$$%%&&''##$$%%&&BBAA@@??iijjkkll !!""##EEDDCCBB,,--..//998877668899::;; CCBBAA@@5566778800//..--AABBCCDD$$##""!!{{>>??@@AA''&&%%$$JJKKLLMM~~}}||VVWWXXYY(())**++''(())**>>==<<;;mmnnoopp$$%%&&''AA@@??>>0011223355443322<<==>>?? - - ??>>==<<99::;;<<,,++**))EEFFGGHH zzyyxxwwBBCCDDEE##""!! NNOOPPQQ{{zzyyxxZZ[[\\]],,--..// ++,,--..::998877qqrrsstt(())**++==<<;;::445566771100//..@@AABBCC;;::9987==>>??@@((''&&%%IIJJKKLLvvuuttssFFGGHHIIRRSSTTUUwwvvuutt^^__``aa00112233 - - //00112266554433uuvvwwxx,,--..//998877668899::;;--,,++**DDEEFFGG 65433221AABBCCDD$$##""!!MMNNOOPPrrqqppooJJKKLLMM~~}}||VVWWXXYY ssrrqqppbbccddee99::;;<< - - 33445566221100//yyzz{{0011223355443322<<==>>??))((''&&HHIIJJKK - - 100//..-EEFFGGHH QQRRSSTTnnmmllkkNNOOPPQQ{{zzyyxxZZ[[\\]] - - oonnmmllffgghhii==>>??@@778899::..--,,++445566771100//..@@AABBCC%%$$##""LLMMNNOO-,,++**)IIJJKKLL~~}}UUVVWWXX jjiiccbbRRSSTTUUwwvvuutt^^__``aakkjjiihhjjkkllmmAABBCCDD;;<<==>>**))((''8899::;;--,,++**DDEEFFGG!! PPQQRRSS)((''&&%MMNNOOPP||{{zzyyYYZZ[[\\ - - aa``__^^VVWWXXYY ssrrqqppbbccddeeggffeeddnnooppqqEEFFGGHH??@@AABB&&%%$$##<<==>>??))((''&&HHIIJJKK~~TTUUVVWW%$$##""!QQRRSSTTxxwwvvuu]]^^__``]]\\[[ZZZZ[[\\]] - - oonnmmllffgghhiiccbbaa``rrssttuuIIJJKKQQCCDDEEFF""!! {{zzyy@@AABBCC%%$$##""LLMMNNOO}}||{{zzXXYYZZ[[!!""! ~~}}UUVVWWXX ttssrrqqaabbccddYYXXWWVV^^__``aakkjjiihhjjkkllmm __^^]]\\vvwwxxyyRRSSTTUU !!GGHHIIJJxxwwvvuuDDEEFFGG!! PPQQRRSSyyxxwwvv\\]]^^__##$$%%&&||{{zzyyYYZZ[[\\ - - ppoonnmmeeffgghhUUTTSSRR~}|bbccddeeggffeeddnnooppqq - - [[ZZYYXXzz{{||}}VVWWXXYY""##$$%%KKLLMMNNttssrrqqHHIIJJKK~~TTUUVVWWuuttssrr``aabbcc''(())**xxwwvvuu]]^^__``llkkjjiiiijjkkllQQKKJJII{{zzyyxxffgghhiiccbbaa``rrssttuuWWVVUUTT~~ZZ[[\\]]&&''(())OOPPQQRRppoonnmmLLMMNNOO}}||{{zzXXYYZZ[[ - -qqppoonnddeeffgg++,,--..ttssrrqqaabbccddhhggffeemmnnoopp - - HHGGFFEEwwvvuuttjjkkllmm __^^]]\\vvwwxxyySSRRQQPP^^__``aa**++,,--SSTTUUVVllkkjjiiPPQQRRSSyyxxwwvv\\]]^^__ mmllkkjjhhiijjkk//001122 ppoonnmmeeffgghhddccbbaaqqrrsstt DDCCBBAAssrrqqppnnooppqq - - [[ZZYYXXzz{{||}}OONNMMLLbbcciijj..//0011WWXXYYZZ ccbbaa``TTUUVVWWuuttssrr``aabbcciihhggffllmmnnoo3399::;; - - llkkjjiiiijjkkll``__^^]]uuvvwwxx@@??>>==oonnmmllrrssttuuWWVVUUTT~~KKJJIIHHkkllmmnn22334455[[\\]]^^ - - __^^]]\\XXYYZZ[[ - -qqppoonnddeeffggeeddccbbppqqrrss<<==>>??hhggffeemmnnoopp - - \\[[ZZYYyyzz{{||<<;;::99kkjjiihgvvwwxxyySSRRQQPP !!GGFFEEDDooppqqrr66778899__``aabb[[ZZYYXX\\]]^^__ mmllkkjjhhiijjkkaa``__^^ttuuvvww@@AABBCCddccbbaaqqrrsstt XXWWVVUU}}~~33221100fedccbbazz{{||}}OONNMMLL""##$$%%CCBBAA@@ssttuuvv::;;<<==ccddeeffWWVVUUTT``aabbcciihhggffllmmnnoo - - ]]\\[[ZZxxyyzz{{DDEEFFGG``__^^]]uuvvwwxxTTSSRRQQ //..--,,a``__^^]~~KKJJIIHH&&''(())??>>==<>??@@AAgghhiijjSSRRQQKK~}|{{zzddeeffggeeddccbbppqqrrss YYXXWWVV||}}~~HHIIJJKK - - \\[[ZZYYyyzz{{||PPOONNMM!!""##$$++**))((]\\[[ZZY !!GGFFEEDD**++,,--;;::9988{{BBCCDDEEkkllmmnn - -JJIIHHGGyyxxwwvvhhiijjkkaa``__^^ttuuvvwwUUTTSSRRQQRRSSTT XXWWVVUU}}~~LLKKJJII%%&&''((''&&%%$$YXXWWVVU""##$$%%CCBBAA@@..//001177665544FFGGHHIIooppqqrr FFEEDDCCuuttssrrllmmnnoo - - ]]\\[[ZZxxyyzz{{QQPPOONNUUVVWWXXTTSSRRQQ HHGGFFEE))**++,,##""!!UTTSSRRQ&&''(())??>>==<<2233445533221100JJKKLLMMssttuuvvBBAA@@??qqppoonnppqqrrss YYXXWWVV||}}~~MMLLKKJJYYZZ[[\\PPOONNMM!!""##$$DDCCBBAA--..//00QPONMLKK**++,,--;;::998866778899//..--,,NNOOPPQQwwxxyyzz>>==<<;;mmllkkjjttuuvvwwUUTTSSRRIIHHGGFF]]^^__``LLKKJJII%%&&''((@@??>>==11223344JJIIHHGG..//001177665544::;;<<==++**))((RRSSTTUU{{||}}~~::993322iihgfedcxxyyzz{{QQPPOONN !!""##EEDDCCBBaabbccii HHGGFFEE))**++,,<<;;::9955667788FFEEDDCC2233445533221100>>??@@AA''&&%%$${{VVWWXXYY1100//..cbbaa``_||}}~~MMLLKKJJ$$%%&&''AA@@??>>jjkkllmm!!""##$$DDCCBBAA--..//008877665599::;;<< BBAA@@??66778899//..--,,BBCCDDEE##""!! zzyyxxwwZZ[[\\]] !!""--,,++**_^^]]\\[IIHHGGFF(())**++==<<;;::nnooppqq%%&&''((@@??>>==1122334444332211==>>??@@ - - >>==<<;;::;;<<==++**))((FFGGHHIIvvuuttss^^__``aa##$$%%&&))((''&&[ZZYYXXW !!""##EEDDCCBB,,--..//99887766rrssttuu))**++,,<<;;::995566778800//..--AABBCCDD::998765>>??@@AA''&&%%$$JJKKLLMMrrqqppoobbccddee''(())**%%$$##""WVVUUTTS$$%%&&''AA@@??>>0011223355443322vvwwxxyy--..//008877665599::;;<<,,++**))EEFFGGHH - -43322110BBCCDDEE##""!! NNOOPPQQnnmmllkk~~}}||ffgghhii++,,--..!!SRRQQPON(())**++==<<;;::445566771100//..zz{{1122334444332211==>>??@@((''&&%%IIJJKKLL 0//..--,FFGGHHIIRRSSTTUUjjiiccbb{{zzyyxxjjkkllmm//001122MLKKJJII,,--..//998877668899::;;--,,++**5566778800//..--AABBCCDD$$##""!!MMNNOOPP,++**))(JJKKLLMM~~}}||VVWWXXYY aa``__^^wwvvuuttnnooppqq33445566HHGGFFEE0011223355443322<<==>>??))((''&&99::;;<<,,++**))EEFFGGHH QQRRSSTT(''&&%%$NNOOPPQQ{{zzyyxxZZ[[\\]] - - ]]\\[[ZZssrrqqpprrssttuu778899:: DDCCBBAA445566771100//..@@AABBCC%%$$##""==>>??@@((''&&%%IIJJKKLL~~}}UUVVWWXX$##""!! RRSSTTUUwwvvuutt^^__``aaYYXXWWVVoonnmmllvvwwxxyy;;<<==>> - - @@??>>==8899::;;--,,++**DDEEFFGG!! {{zzyyxxAABBCCDD$$##""!!MMNNOOPP||{{zzyyYYZZ[[\\!!""##~~}}||VVWWXXYY ssrrqqppbbccddeeUUTTSSRRkkjjiihhzz{{||}}??@@AABB<<;;::99<<==>>??))((''&&HHIIJJKKwwvvuuttEEFFGGHH QQRRSSTTxxwwvvuu]]^^__``$$%%&&''{{zzyyxxZZ[[\\]] - - oonnmmllffgghhiiQQKKJJIIggffeedd~~CCDDEEFF87654332@@AABBCC%%$$##""LLMMNNOOssrrqqppIIJJKKLL~~}}UUVVWWXX ttssrrqqaabbccdd(())**++wwvvuutt^^__``aakkjjiihhjjkkllmm HHGGFFEEccbbaa``GGHHIIJJ - - 21100//.DDEEFFGG!! PPQQRRSSoonnmmllMMNNOOPP||{{zzyyYYZZ[[\\ - - ppoonnmmeeffgghh,,--..//ssrrqqppbbccddeeggffeeddnnooppqq - - DDCCBBAA__^^]]\\KKLLMMNN .--,,++*HHIIJJKK~~TTUUVVWWkkjjiiccQQRRSSTTxxwwvvuu]]^^__``llkkjjiiiijjkkll00112233 - -oonnmmllffgghhiiccbbaa``rrssttuu@@??>>==[[ZZYYXXOOPPQQRR*))((''&LLMMNNOO}}||{{zzXXYYZZ[[ - -bbaa``__UUVVWWXX ttssrrqqaabbccddhhggffeemmnnoopp99::;;<< kkjjiihhjjkkllmm __^^]]\\vvwwxxyy<<;;::99WWVVUUTTbdQZ|vpfd|ZfpvdrtAvpfے`JXQf~HXQJ`ےltbے`JvnX˂rXQdtAJl˂pZZdQbtHAZpdQZ|vXnrd|J`ےtbdQf`vlJtArdrtAH~fdQbtnXv`fJltH~fr˂pfpvbHAZnvpXQr˂v`f~fJ`ےtbnHAbےlJtA˂rXQdrtAJvpfHZdQbtHAZp˂Z|dXnvd|ZJlt`vXnl|ZdQ~fpvbdQZ|`vXnZHAےnXv`p˂rfHfp`JXQpvnbHAZpvpf`JXQrrd|J`ےltb~f`l|ZrXQJrtAJlpfH~dQbtbdQZ|vpfbtlnXvdrtAvpf`JXQrf~HXQJ`ے`vXnr˂pXv`f˂rXQHf`˂pZZdQbtbHAZpdQZ|vXndQbt`ےbtbdQf`vlJtArdrtAH~fJtArd`f~JltH~fbtlfpvbHAZvpfZHAb~HfJ`ےvXnHAbےlJtA˂rXQdrtAJvpfHlJtArHAZp˂Z|dXnvd|ZJlt`vXn|ZdQHfpvbdQZ|`vXnJtAdnXv`p˂rH~fے`JXQpvnbHAZpvpfH`JXQrrd|J`ےltb~f`d|ZrXQJrtAJlpfH~dQbtbdQZ|vpfbtlnXvdrtAvpf|ZdQbf~HXQJ`ے`vXnr˂pXv`f˂rXQ~f`˂pZZdQbtbHAZpdQZ|vXndQbt`ےbtbdQf`vlJtArdrtAH~f|ZdQb`frQJltH~ftlJfpvbHAZvpf`JXQr~fpvJ`ےvXnHAbےlJtA˂rXQdrtAJvpfHl|ZdQHAZp˂Z|dXnvd|ZJlt`vXntlJJHAZbdQZ|`vXntArdnXv`p˂rH~f˂pZnXv`bHAZpvpfH`JXQrrd|J`ےltb~f`btlrXQJrtAJlpfH~dQbtbdQZ|vpftArdp˂rdrtAvpf|ZdQbf~HXQJ`ے`vXnHAbےf~H˂rXQ~f`˂pZZdQbtbHAZpdQZ|vXnrJtArd`ےbtbdQf`vlJtArdrtAH~f|ZdQbXQJ`ےJltH~ftlJfpvbHAZvpf`JXQrfpvJ`ےvXnHAbےlJtA˂rXQdrtAJ˂p`|ZdQHAZp˂Z|dXnrd|ZJlt`vXntl|bHAZbdQZ|`vXntArdnXv`p˂rH~f˂p`nXv`bHAZpvpfH`JXQrrd|J`ےltbJXQrbtlrXQJrtAJl˂pZHAdQbtbdQZ|vpfZdQbtp˂rdrtAvpf|ZdQbf~HXQJ`ے`vXnJXQrf~fp˂rXQ~f`˂pZZdQbnbHAZpdQZ|˂pZHA|ZdQb`ےbtbdQbے`lJtArdrtAH~flJtAXQJ`ےJltH~ftlJfpvbHAZvpf˂pZHAvnXJ`ےvXnHAbےXv`f˂rXQdrtAJbے`tlJHAZp˂Z|dJXQrd|ZJlt`vXnrd|bHAZbdQZ|`vXntArdnXv`p˂rH~fbے`v`fbHAZpvpfH`JXQr~HfJ`ےltbJXQrtArdrXQJrtAJl˂pZHAdQbtbdQZ|vpfZdQbtp˂rdrtAvpf|ZdQbf~HbdQZ|`vXnJXQr~Hfp˂rb~f`˂pZpvnbHAZpdQZ|˂p`J|ZdQb`ےbtbdQbے`lJtArdrtAH~fl|ZXQJ`ےJltH~ftlJfpvdrtAvpf˂p`JvnXdQZ|vXnHAbےXv`f˂rXQdrtAJXQr˂tl|HAZp˂Z|dJXQrd|ZJlt`vXndQbt璐bHAZbdQZ|`vXntArdnXv`JltH~fXQrbtv`f~drtAJvpfH`JXQr~HfJ`ےltbpZHAbZdQbnrXQJrtAJl˂pZHAdQbtbdQZ|vpflJtArp˂rdrtAr˂p|ZdQbf~HbdQZ|`vXnl|Zfpvltb~f`˂pZpvnbHAZpdQZ|ے`JXv`f`ےbtbdQbے`lJtArdrtAH~fd|ZXQJ`ےJltZHAbtlJfpvdrtAvpfdQbtnXv`dQZ|vXnHAbےXv`f˂rXQdrtAJXQr˂~fpvHAZp˂Z|dJXQrd|ZJlt`vXndQbt璐bHAZbdQZ|ے`JXQtArdnXv`JltH~flJtArf~HdrtAJvpfH`JXQr~HfJ`ےltbp`JXQnXv`rXQJrtAJl˂pZHAdQbtbdQZ|r˂pl|ZdQp˂rdrtAr˂p|ZdQbf~HbdQZ|`vXnd|Zfpvltb~f`˂pZpvnbHAZpdQZ|r˂pf~H`ےbtbdQbے`lJtArdrtA`JXQrbtlXQJ`ےJltZHAbtlJfpvdrtAvpfdQbtnXv`fdQZ|vXnHAbےXv`f˂rXQdtAJlZHAbfpvHAZp˂Z|dJXQrd|ZJlt˂pZJtArdbHAZbdQZ|ے`JXQtArdnXv`JltH~fl|ZdQ~fpvdrtAJvpfH`JXQr~HfJ`ےtbnے`JXQnXv`rXQJtAJl˂pZHAdQbtbdQZ|HAbے|ZdQp˂rdrtAr˂p|ZdQbf~HbdQZ|`vXnbtlnXvltb~f`˂pZpvnbHAZpvpfr˂pf~fp`ےbtbnbے`lJtArdrtA`JXQrbtlXQJ`ےJltZHAbtlJfpvdrtAvpfJtArd`f~dQZ|vXnHAے`Xv`f˂rXQHf``JXQrvnXHAZp˂vpfHJXQrd|ZJlt˂p`|ZdQbbHAZbdQZ|ے`JXQtArdnXv`JltH~f|ZdQHfpvdrtAJvpfHJXQrb~HfJ`ےvXn˂pZv`frXQJf`v˂pZHAdQbtbdQZ|JXQrnXv`p˂rdrtAr˂p|ZdQbfHfbdQZ|`vXnbtlnXvltb~f`tlJpvnbHAZpvpfHHAbے~Hfp`ےbXnvbے`lJtArdrtA˂pZHAf~fpXQJ`ےJltZHAbtlJpvndrtAvpf|ZdQb`ffpdQZ|vXntAd|Xv`f˂rXQ~f``JXQrvnXHAZp˂pfH~JXQrd|ZJltbے`vnXbHAZbdQZ|ے`JXQtArdrXQJ`JltH~ftlJvnrdrtAJvpfHZdQbt~HfJ`ےvXn˂p`v`f~rXQJf`v˂pZHAdQbtbdQZ|JXQrv`fp˂rdtAJr˂p|ZdQbےHAZbdQZ|`vXntArdXQJ`ےltb~f`lJtApvnbHAZpvpfHJXQrfpv`ےbXnvbے`lJtArdrtA˂p`J~HfpXQJ`ےltbZHAbtlJp˂rdrtAvpf|ZdQbHAZpdQZ|vXnrd|Xv`f˂rXQ~f`˂pZHAnXv`HAZp˂pfH~JXQrd|ZJltXQr˂vnXbHAZnvpے`JXQtArdXQJ`ےJltH~ftl|˂rXQdrtAJvpfHZdQbt~HfJ`ےvXnbے`f~HrXQJf`v˂pZHAdQbtbdQZ|pZHAbv`f~fp˂rfHfr˂p|ZdQbbHAZbdQZ|`vXnZdQbtJ`ےltb~f`lJtApvnbHAZpvpfHJXQrfpv`ےbXnvbے`lJtArdrtAے`JpvnXQJ`ے`vXnZHAbtlJp˂rdrtAvpflJtAbHAZpdQZ|vXnrd|Xv`f˂rXQ~f`˂p`JnXv`fHAZp˂pfH~JXQrd|ZJltXQr˂Xv`fbHAZvpfے`JXQtArdXQJ`ےJltH~frd|˂rXQdrtAJvpfHZdQbt~HfJ`ےvXnXQr˂~fpvrXQJf`v˂pZHAdQbnXbdQZ|p`JXQ~Hfp˂rH~fr˂p|ZdQbbHAZbdQZ|`vXnZdQbtJ`ےltb~f`lJtApvnbHAZpvpfHpZHAbnXv`ےbXnvbے`v`f`vXnr˂ppvnXQJ`ے`vXnZHAbtlJp˂rdrtAvpfl|ZbHAZpdQZ|vXnrd|Xv`f˂rb~f`ے`J`f~HAZp˂pfH~JXQr~HfpvpfZHAbXv`fbHAZvpfے`JXQtArdXQJ`ےJltH~fdQbt˂rXQdrtAJvpfHZdQbt~HfdQZ|vXnXQr˂HfpvrbdQf`v˂pZHAvnXH~fے`JXQ~fpvp˂rH~fr˂p|ZdQbbHAZbdQZ|`vXnlJtArJ`ےltb~f`lJtApvndrtAJvpfHp`JXQnXvZ|dXnvbے`v`fvnX`vXnr˂pnXv`XQJ`ے`vXnZHAbtlJp˂rdrtAr˂pd|ZbHAZpdQZ|vXnrrd|Xv`fltb~f`rbt`f~fprtAJlpfH~JXQr~Hfpv`fvpf`JXQrf~HbHAZvpfے`JXQtArdXQJ`ےJlt`JXQrdQbt˂rXQdrtAJ˂pZZdQbt~HfdQZ|vXnl|ZdQvnXtbdQf`v˂pZHAvnX~HfpH~f˂pZfpvp˂rH~fr˂p|ZdQbbHAZbdQZ|˂pZl|ZdQJ`ےltbHAbےlJtApvndrtAJvpfHbtlv`fZ|dXnvbے`v`fvnX`vXnHAbےnXv`XQJ`ے`vXnZHAbnXv`p˂rdrtAHAbےbtlbHAZpdQZ|`JXQrrd|Xv`fltb~f`JtArd~HfprtAJlpfH~JXQr~Hfpv`fvpf`JXQrf~fpbHAZvpfے`JXQf~HXQJ`ےJlt`JXQrJtArd˂rXQdrtAJ˂pZZdQbt~HfdQZ|vXn|ZdQvnXtbdQf`v˂pZHAvnX~HfpH~f˂p`vnXp˂rH~fr˂pfpvbHAZbdQZ|˂p`|ZdQJ`ےltbHAbےlJtApvndrtAJvpfHbtlv`f~Z|dXnvbے`v`fvnX`vXnJXQrv`fbdQZ|`vXnZHAbnXv`p˂rdrtAJXQrbtlbHAZpdQZ|`JXQrrd|Xv`fltb~f`|ZdQbfpvrtAJlpfH~JXQr~Hfpv`fvpf˂pZHA~HfpdrtAvpfے`JXQf~HXQJ`ےJlt˂pZHA|ZdQb˂rXQdrtAJ˂pZZdQbt~HfdQZ|vXntlJnXv`tbdQf`v˂pZHAvnX~HfpH~fbے`vnXJltH~fr˂pfpvbHAZbdQZ|bے`nXv`J`ےltbHAbےlJtApvndrtAJvpfHtArdf~HZ|dXnvے`Jv`fvnX`vXnJXQrv`f~bdQZ|`vXnZHAbnXv`p˂rdrtAJXQrf~fpbHAZpdQZ|`JXQrrd|Xv`fltb~f`|ZdQbfpvrtAJlpfH~XQrbt~Hfpv`fvpf˂p|ZfpvdrtAvpfے`JXQf~HXQJ`ےJlt˂p`JvnX˂rXQdrtAJ˂pZZdQbtHfpdQZ|vXntl|nXv`tbdQf`vlJtAvnX~HfpH~fdQbtnXv`JltH~fr˂pfpvbHAZbdQZ|XQr˂v`fJ`ےltbHAbےlJtAvnrdrtAJvpfHZdQbtffpvZ|dXnvd|Zv`fvnX`vXnlJtArf~HbdQZ|`vXnZHAbnXv`p˂rdtAJpZHAb~HfpbHAZpdQZ|`JXQrrd|XQJ`ےltb~f`lJtAnrXQrtAJlpfH~dQbt~Hfpv`f~HfpZ|dXnv|ZdQbvnXtbdQZf`vXpZHAbnXvZp˂|dtA˂pZHA~HfpbHAZbdQZ|ے`JXQtArdrXQJ`JltH~ftlJvnrdrtAJvpfHZdQbt~HfJ`ےvXn`JXQrvˍpfvnXrtAJlpfH~tl|v`f~f|drnvpے`J`f~rXQJ`Jltbے`vnXp˂rdtAJr˂p|ZdQbےHAZbdQZ|`vXntArdXQJ`ےltb~f`lJtApvnbHAZpvpfH˂pZH~ㅐfv`ftbdQf`vZdQbtpvntAJlfH~XQr˂HfpvےbHAbnvJXQrv`f~XQJ`ےltbZHAbtlJp˂rdrtAvpf|ZdQbHAZpdQZ|vXnrd|Xv`f˂rXQ~f`HAbے`vXn~HfpZ|dXnvlJtAXv`ftbdQZf`vXpZHAnXvZp˂pfH˂p`JfpvbHAZnvpے`JXQtArdXQJ`ےJltH~ftl|˂rXQdrtAJvpfHZdQbt~HfJ`ےvXn`JXQrvˍpfvnXrtAJlpfH~rd|~Hf|drnvpے`JXQ`f~rXQJ`f`vXXQr˂nXv`p˂rfHfr˂p|ZdQbbHAZbdQZ|`vXnZdQbtJ`ےltb~f`lJtApvnbHAZpvpfH˂p`H~ㅐfv`ftbdQf`vZdQbtpvntAJlfH~rbtHfpvےbHAnvppZHAbf~HXQJ`ے`vXnZHAbtlJp˂rdrtAvpflJtAbHAZpdQZ|vXnrd|Xv`f˂rXQ~f`JXQr`vXnHfpvZ|dXnvl|ZXv`ftbdQZf`vXlJtAdnXvZp˂fH~ے`JfpvbHAZvpfے`JXQtArdXQJ`ےJltH~frd|˂rXQdrtAJvpfHZdQbt~HfJ`ےvXn˂pZHAvˍpfnrXQrtAJlpfH~dQbt璅fpv|drnvp|ZdQ`f~rXQJ`f`vXXQr˂nXv`p˂rH~fr˂p|ZdQbbHAZbdQZ|`vXnZdQbtJ`ےltb~f`lJtApvnbHAZpvpfHbے`H~ㅐfJ`ےtbdQf`vlJtArnrXQJtAJlfH~btlHfpvےbHAnvpp`JXQf~fpXQJ`ے`vXnZHAbtlJp˂rdrtAvpfl|ZbHAZpdQZ|vXnrd|Xv`f˂rb~f`JXQr`vXnHAZp˂Z|dXnvd|Z`ےHAtbdQZf`vXJtArdnXvZp˂fH~r˂pvnXbHAZvpfے`JXQtArdXQJ`ےJltH~fdQbt˂rXQdrtAJvpfHZdQbt~HfdQZ|vXn˂p`ZvˍpfrXQJrtAJlpfH~dQbtZp˂|drnvp|ZdQ`f~rXQJ`f`vXZHAbv`fp˂rH~fr˂p|ZdQbbHAZbdQZ|`vXnlJtArJ`ےltb~f`lJtApvndrtAJvpfHQXb㉀ەH~ㅐf`ےbtbdQf`vl|ZdQrXQJ`tAJlfH~btlHfpvےbHAnvpے`JXQ~HfpXQJ`ے`vXnZHAbtlJp˂rdrtAr˂pd|ZbHAZpdQZ|vXnrrd|Xv`fltb~f`pJAHr`vXnHAZp˂Z|dXnvbtlےbHAtbdQZf`vXJtArdnXvZp˂fH~r˂pvnXbHAZvpfے`JXQtArdXQJ`ےJlt`JXQrdQbt˂rXQdrtAJ˂pZZdQbt~HfdQZ|vXnˁ`ZvˍpfrXQJrtAJlpfH~JtArdZp˂|drnvp|ZdQ`f~rXQJ`f`vX`JXQrv`f~fp˂rH~fr˂p|ZdQbbHAZbdQZ|˂pZl|ZdQJ`ےltbHAbےlJtApvndrtAJvpfHQXb㉀ەH~ㅐf`ےbtbdQf`v|ZdQrXQJ`tAJlfH~btlHfpvےbHAnvp˂pZpvnXQJ`ے`vXnZHAbnXv`p˂rdrtAHAbےbtlbHAZpdQZ|`JXQrrd|Xv`fltb~f`p`ZQX`vXnHAZp˂Z|dXnvbtlےbHAtbdQZf`vXJtArdnXvZp˂fH~HAbےXv`fbHAZvpfے`JXQf~HXQJ`ےJlt`JXQrJtArd˂rXQdrtAJ˂pZZdQbt~HfdQZ|vXnb㉀ۑpvˍpfrXQJrtAJlpfH~|ZdQbZp˂|drnvp|ZdQ`f~rbdQZf`vX`JXQr~Hfp˂rH~fr˂pfpvbHAZbdQZ|˂p`|ZdQJ`ےltbHAbےlJtApvndrtAJvpfHJAHr󙐕H~ㅐf`ےbtbdQf`vtlJrXQJ`tAJlfH~btlHfpv|drnvp˂p`pvnbdQZ|`vXnZHAbnXv`p˂rdrtAJXQrbtlbHAZpdQZ|`JXQrrd|Xv`fltb~f`ˁ`ZQX`vXnHAZp˂Z|dXnrtArdےbHAtbdQZf`vXJtArdnXvtAJlfH~JXQrbXv`fdrtAvpfے`JXQf~HXQJ`ےJlt˂pZHA|ZdQb˂rXQdrtAJ˂pZZdQbt~HfdQZ|vXnb㉀ۑpvˍp|rXQJrtAJl˂p`J|ZdQbZp˂|drnr˂|ZdQ`f~tbdQZf`vXtl|~fpvJltH~fr˂pfpvbHAZbdQZ|bے`nXv`J`ےltbHAbےlJtApvndrtAJvpfH`ZQXbdrQt`ےbtbdQXQr˂tl|rXQJ`tAJlpZHAbbtlHfpv|drnvpZdQbtnXv`bdQZ|`vXnZHAbnXv`p˂rdrtAJXQrf~fpbHAZpdQZ|`JXQrrd|Xv`fltb~f`ۑpJJltHAZp˂Z|dpZHAbZdQbtےbHAtbdQZے`JJtArdnXvtAJlfH~lJtAf~HdrtAvpfے`JXQf~HXQJ`ےJlt˂p`JvnX˂rXQdrtAJ˂pZZdQbtHfpdQZ|vXnAHr󙐂bAdZ|rXQJrtAJlے`JlJtAZp˂|drXQr˂|ZdQ`f~tbdQZf`vXrd|fpvJltH~fr˂pfpvbHAZbdQZ|XQr˂v`fJ`ےltbHAbےlJtAvnrdrtAJvpfH`ZQXbdrQt`ےbtbdQXQr˂rd|rXQJ`tAJlpZHAbbtlHfpv|drnvpZdQbtnXv`bdQZ|`vXnZHAbnXv`p˂rdtAJpZHAb~HfpbHAZpdQZ|`JXQrrd|XQJ`ےltb~f`ۑp`JltHAZp˂Z|dp`JXQZdQbtےbHAtbdQZے`JJtArdnXvtAJlfH~l|Zf~fpdrtAvpfے`JXQf~HXQJ`ےltbے`JvnX˂rXQdtAJl˂pZZdQbtHAZpdQZ|vXnZQXb㉀bAdZ|rXQJrtAJlr˂pl|ZZp˂|drXQr˂|ZdQ`f~tbdQZf`vXdQbtvnXJltH~fr˂pfpvbHAZnvpXQr˂v`f~fJ`ےtbnHAbےlJtA˂rXQdrtAJvpfHۑpJAHdrQt`ےbtbdQZHAbdQbnXrXQJ`tAJlpZHAbbtlHfpv|drnvplJtArv`fbdQZ|`vXnZHAےnXv`p˂rfHfp`JXQpvnbHAZpvpf`JXQrrd|J`ےltb~f`r󙐂ˁ`JltHAZp˂Z|dے`JXQv`f~ےbHAtbdQZے`JJtArdnXvtAJlfH~d|Z~HfpdrtAvpf`JXQrf~HXQJ`ے`vXnr˂pXv`f˂rXQHf`˂pZZdQbtbHAZpdQZ|vXnZQXb㉀bAdZ|rXQJrtAJlr˂pfpvZp˂|drXQr˂|ZdQ`fHtbdQZf`vXdQbtvnXJltH~fbtlfpvbHAZvpfZHAb~HfJ`ےvXnHAbےlJtA˂rXQdrtAJvpfHۑp`ZdrQt`ےbtbdQ`JXQrnXv`rXQJ`tAJlpZHAbbtlfpv|drnvpl|ZdQv`ffbdQZ|`vXnJtAdnXv`p˂rH~fے`JXQpvnbHAZpvpfH`JXQrrd|J`ےltb~f`QXb㉀JltHAZp˂Z|d˂pZf~HےbHAtbdQZے`JJtArdnrXQJtAJlfH~btlpvndrtAvpf|ZdQbf~HXQJ`ے`vXnr˂pXv`f˂rXQ~f`˂pZZdQbtbHAZpdQZ|vXnpJAHrbAdZ|rXQJtAJlHAbےfpvZp˂|dtAXQr˂|ZdQ`ےHAtbdQZf`vXJtArdrXQJ`JltH~ftlJfpvbHAZvpf`JXQr~fpvJ`ےvXnHAbےlJtA˂rXQdrtAJvpfHˁ`ZdrQt`ےbtbn`JXQrnXv`frXQJ`JltpZHAbbtlZp˂|drnvp|ZdQےHAZbdQZ|`vXntArdnXv`p˂rH~f˂pZnXv`bHAZpvpfH`JXQrrd|J`ےltb~f`QXb㉀JltHAZp˂vpfH˂p`~fpvےbHAbnvے`JJtArdrXQJ`tAJlfH~btlp˂rdrtAvpf|ZdQbf~HXQJ`ے`vXnHAbےf~H˂rXQ~f`˂pZZdQbtbHAZpdQZ|vXnےp`ZQXbAdZ|rXQJf`vJXQrnXvZp˂pfHXQr˂|ZdQےbHAtbdQZf`vX|ZdQbXQJ`ےJltH~ftlJfpvbHAZvpf`JXQrfpvJ`ےvXnHAbےlJtA˂rXQdrtAJ`JXQrb㉀ۑpdrQt`ےbXnv˂pZHA`f~rXQJ`f`vXpZHAbbtlZp˂|drnvptlJbHAZbdQZ|`vXntArdnXv`p˂rH~f˂p`nXv`bHAZpvpfH`JXQrrd|J`ےltb˂pZJAHrJltHAZp˂pfH~bے`HfpvےbHAnvpے`JJtArdrXQJ`tAJlfH~tArdp˂rdrtAvpf|ZdQbf~HXQJ`ے`vXnJXQrf~fp˂rXQ~f`˂pZZdQbnbHAZpdQZ|HAbےˁ`ZQXbAdZ|rXQJf`vJXQrnXvZp˂fH~XQr˂|ZdQےbHAtbdQZf`vX|ZdQbXQJ`ےJltH~ftlJfpvbHAZvpf˂pZHAvnXJ`ےvXnHAbےXv`f˂rXQdrtAJ`JXQrb㉀XndrQt`ےbXnv˂p`J`f~fprXQJ`f`vXpZHAbbtlZp˂|drnvptl|bHAZbdQZ|`vXntArdnXv`p˂rH~fbے`v`fbHAZpvpfH`JXQr~HfJ`ےltb˂p`vˍpfJltHAZp˂pfH~XQr˂vnXےbHAnvpے`JJtArdrXQJ`tAJlfH~ZdQbtp˂rdrtAvpf|ZdQbf~HbdQZ|`vXnJXQr~Hfp˂rb~f`˂pZpvnbHAZpdQZ|JXQrH~ㅐfbAdZ|rXQJf`vpZHAbv`fZp˂fH~XQr˂|ZdQےbHAtbdQZf`vXlJtAXQJ`ےJltH~ftlJfpvdrtAvpf˂p`JvnXdQZ|vXnHAbےXv`f˂rXQdrtAJ˂pZHA`vXndrQt`ےbXnvے`J~HfprXQJ`f`vXpZHAbbtlZp˂|drnr˂rd|bHAZbdQZ|`vXntArdnXv`JltH~fXQrbtv`f~drtAJvpfH`JXQr~HfJ`ےltbbے`vˍpfJltHAZp˂pfH~XQr˂vnXےbHAnvpے`JJtArdrXQJ`tAJlp`JXQZdQbtp˂rdrtAr˂p|ZdQbf~HbdQZ|`vXnl|Zfpvltb~f`˂pZpvnbHAZpdQZ|JXQrH~ㅐfbAdZ|rXQJf`vp`JXQv`f~Zp˂fH~XQr˂|ZdQےbHAtbdQZr˂pl|ZXQJ`ےJltZHAbtlJfpvdrtAvpfdQbtnXv`dQZ|vXnHAbےXv`f˂rXQdrtAJ˂p`J`vXndrQt`ےbXnvr˂pfpvrXQJ`f`vXpZHAbbnXvZp˂|drZHAbdQbt璐bHAZbdQZ|ے`JXQtArdnXv`JltH~flJtArf~HdrtAJvpfH`JXQr~HfJ`ےltbXQr˂vˍpfJltHAZp˂pfH~ZHAbnXv`ےbHAnvpے`J`f~rXQJ`tAJlے`JXQlJtArp˂rdrtAr˂p|ZdQbf~HbdQZ|`vXnd|Zfpvltb~f`˂pZpvnbHAZpdQZ|pZHAbH~ㅐfbAdZ|rbdQf`vے`JXQf~HZp˂fH~XQr˂HfpvےbHAtbdQZr˂pd|ZXQJ`ےJltZHAbtlJfpvdrtAvpfdQbtnXv`fdQZ|vXnHAbےXv`f˂rXQdtAJlے`J`vXndrQtZ|dXnvr˂pfpvrbdQZf`vXpZHAbnXvZp˂|dr`JXQrdQbt璐bHAZbdQZ|ے`JXQtArdnXv`JltH~fl|ZdQ~fpvdrtAJvpfH`JXQr~HfJ`ےtbnXQr˂vˍpfJltrtAJlpfH~`JXQrnXv`|drnvpے`J`f~rXQJ`tAJl璀˂pZl|ZdQp˂rdrtAr˂p|ZdQbf~HbdQZ|`vXnbtlnXvltb~f`˂pZpvnbHAZpvpfp`JXQH~ㅐfbAdZ|tbdQf`vbtlf~fptAJlfH~XQr˂HfpvےbHAtbdQZHAbےbnXvXQJ`ےJltZHAbtlJfpvdrtAvpfJtArd`f~dQZ|vXnHAے`Xv`f˂rXQHf`r˂p`vXndrQtZ|dXnv|ZdQbvnXtbdQZf`vXpZHAbnXvZp˂|dr`JXQr`f~fpbHAZbdQZ|ے`JXQtArdnXv`JltH~f|ZdQHfpvdrtAJvpfHJXQrb~HfJ`ےvXnZHAbvˍpfJltrtAJlpfH~tlJv`f|drnvpے`J`f~rXQJ`tAJl璀˂p`vnXp˂rdrtAr˂p|ZdQbfHfbdQZ|`vXnbtlnXvltb~f`tlJpvnbHAZpvpfHے`JXQH~ㅐfbAdZ|tbdQf`vtArd~HfptAJlfH~XQr˂HfpvےbHAtbdQZJXQrv`fXQJ`ےJltZHAbtlJpvndrtAvpf|ZdQb`ffpdQZ|vXntAd|Xv`f˂rXQ~f`r˂p`vXndrQt66666666666666666666666666666666666666677777777777777 \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv36_0.dat b/mpdf/qrcode/data/qrv36_0.dat deleted file mode 100644 index dfa74a8..0000000 --- a/mpdf/qrcode/data/qrv36_0.dat +++ /dev/null @@ -1,321 +0,0 @@ -}~}~}~}~|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefecdcdcdcdbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOLKLKLKLKIJIJIJIJHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?}~}~}~}~|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefecdcdcdcdbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOLKLKLKLKIJIJIJIJHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?}~}~}~}~|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefecdcdcdcdbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOLKLKLKLKIIIIIIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?}~}~}~}~|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefeccccccdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?}~}~}}}}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?}}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefeccccdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMLKLKLKLKIIIIIJIJHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKIJIJIJIJHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=~}~}}}}}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKIJIJIJIJHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=}~}~}~}~|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKIJIJIJIJHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=}~}~}~}~|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefedcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKIJIJIJIJHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=}~}~}~}~|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgdcdcdcccbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKIJIJIJIIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=}~}~}~}~|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgcccdcdcdbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKIIIIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=}~}~}~}~|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgcdcdcdcdbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=}~}}}}}}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgcdcdcdcdbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgcdcdcdcdbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgcdcdcdcdbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgcdcdccccbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIIIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgccdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKIIIJIJIJHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihgfefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKIJIJIJIJHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=~}}}}}}~|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKIJIJIJIJHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=}~}~}~}~|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKIJIJIJIJHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=}~}~}~}~|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKIJIJIJIJHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=}~}~}~}~|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijifefefefedcdcccccbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKIJIJIIIIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=}~}~}~}~|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijifefefefecdcdcdcdbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKIIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=}~}~}~}~|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijifefefefecdcdcdcdbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=>=>=>=}}}}}}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijifefefefecdcdcdcdbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=>=>=>=>=~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihgfefefefecdcdcdcdbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=>=>=>=>=|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefecdcdcdcdbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=>=>=>=>=|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefecdccccccbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=>=>=>=>=|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMJIJIIIIIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=>=>=>=>=|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=>=<;<;<;~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=<;<;<;<;}}}}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=<;<;<;<;~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMJIIIIIIJHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=<;<;<;<;~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedccccccdbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMIJIJIJIJHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=<;<;<;<;~}~}~}}}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefecdcdcdcdbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMIJIJIJIJHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=<;<;<;<;}}}~}~}~|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefecdcdcdcdbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMIJIJIJIJHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9878787876565656543434343212121210/0/0///.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - <;<;<;<;:9:9:9:987878787656565654343434321212121///0/0/0.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - <;<;<;<;:9:9:9:987878787656565654343434321212121/0/0/0/0.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - <;<;<;<;:9:9:9:987878787656565654343434321212121/0/0/0/0.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - <;<;<;<;:9:9:9:987878787656565654343434321212121/0/0/0/0.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - <;<;<;<;:9:9:9:987878787656565654343434321212121/0/0/0/0.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - <;<;<;<;:9:9:9:987878787656565654343434321212121/0/0////.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - <;<;<;<;:9:9:9:987878787656565654343434321212121//0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - <;<;<;<;:9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - <;<;<;<;:9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - <;<;<;<;:9:9:9:9878787876565656543434343212121210/0/////.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - <;<;<;<;:9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - <;<;<;<;:9:9:9:987878787656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - <;<;<;<;:9:9:9:987878787656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - <;<;<;<;:9:9:9:987878787656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - <;<;<;<;:9:9:9:987878787656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - <;<;<;<;:9:9:9:9878787876565656543434343210/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - <;<;<;<;:9:9:9:98787878765656565434343430//////0.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - <;<;<;<;:9:9:9:9878787876565656543434343/0/0/0/0.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - <;<;<;<;:9:9:9:9878787876565656543434343/0/0/0/0.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - <;<;<;<;:9:9:9:9878787876565656543434343/0/0/0/0.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - <;<;<;<;:9:9:9:9878787876565656543434343/0/0/0/0.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - <;<;<;<;:9:9:9:9878787876565656543434343/0/0/0/0.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - <;<;<;<;:9:9:9:9878787876565656543434343//////0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - <;<;<;<;:9:9:9:98787878765656565434343210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - <;<;<;<;:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - <;<;<;<;:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - <;<;<;<;:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - <;<;<;<;:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - <;<;<;<;:9:9:9:9878787876565656521212121/////0/0.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - <;<;<;<;:9:9:9:9878787876565656521212121/0/0/0/0.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - <;<;<;<;:9:9:9:9878787876565656521212121/0/0/0/0.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - <;<;<;<;:9:9:9:9878787876565656521212121/0/0/0/0.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - <;:9:9:9:9878787876565656543434321212121/0/0/0/0.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - :9:9:9:987878787656565654343434321212121/0/0/0//.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - :9:9:9:987878787656565654343434321212121////0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - :9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - :9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - :9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - :9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - IIOOPPQQ::998877uuvvwwxx,,++**))uuvvwwxx,,++**))uuvvwwxx,,++**))uuvvwwxx,,++**))uuvvwwxx,,++**)) !wwvvuutt**++,,--wwvvuutt**++,,--wwvvuutt**++,,--wwvvuutt**++,,--wwvvuutt**++,,--mmllkkjj__``aabb'&&%%$$#""!! ""!! ""!! ""!! ""!! '(())**+mmllkkjj44556677mmllkkjj44556677mmllkkjjRRSSTTUU66554321yyzz{{||((''&&%%yyzz{{||((''&&%%yyzz{{||((''&&%%yyzz{{||((''&&%%yyzz{{||((''&&%%!""##$$%ssrrqqpp..//0011ssrrqqpp..//0011ssrrqqpp..//0011ssrrqqpp..//0011ssrrqqpp..//0011iiccbbaacciijjkk#""!! +,,--../iihhggff8899::;;iihhggff8899::;;iihhggff}}||{{VVWWXXYY0//..--,}}~~$$##""!!}}~~$$##""!!}}~~$$##""!!}}~~$$##""!!}}~~$$##""!!%&&''(()oonnmmll22334455oonnmmll22334455oonnmmll22334455oonnmmll22334455oonnmmll22334455``__^^]]llmmnnoo/0123455eeddccbb<<==>>??eeddccbb<<==>>??eeddccbb zzyyxxwwZZ[[\\]],++**))(     )**++,,-kkjjiihh66778899kkjjiihh66778899kkjjiihh66778899kkjjiihh66778899kkjjiihh66778899\\[[ZZYYppqqrrss66778899aa``__^^@@AABBCCaa``__^^@@AABBCCaa``__^^!!""##$$vvuuttss^^__``aa(''&&%%$-..//012ggffeedd::;;<<==ggffeedd::;;<<==ggffeedd::;;<<==ggffeedd::;;<<==ggffeedd::;;<<==XXWWVVUUttuuvvww::;;<<==]]\\[[ZZDDEEFFGG]]\\[[ZZDDEEFFGG]]\\[[ZZ%%&&''((rrqqppoobbcciijj$##""!! 34556677ccbbaa``>>??@@AAccbbaa``>>??@@AAccbbaa``>>??@@AAccbbaa``>>??@@AAccbbaa``>>??@@AATTSSRRQQxxyyzz{{      >>??@@AAYYXXWWVVHHIIJJKKYYXXWWVVHHIIJJKKYYXXWWVV))**++,,nnmmllkkkkllmmnn 8899::;;__^^]]\\BBCCDDEE__^^]]\\BBCCDDEE__^^]]\\BBCCDDEE__^^]]\\BBCCDDEE__^^]]\\BBCCDDEEPPOOIIHH||}} - - - -  - -  - -  - -  - - }}||{{BBCCDDEEUUTTSSRRLLMMNNOOUUTTSSRRLLMMNNOOUUTTSSRR44556677--..//00jjiiccbbooppqqrr     <<==>>??[[ZZYYXXFFGGHHII[[ZZYYXXFFGGHHII[[ZZYYXXFFGGHHII[[ZZYYXXFFGGHHII[[ZZYYXXFFGGHHIIGGFFEEDDzzyyxxwwFFGGHHIIQQPPOONNPPQQRRSSQQPPOONNPPQQRRSSQQPPOONN8899::;;~~}}11223344aa``__^^ssttuuvv - - - - - - - - - - }}@@AABBCCWWVVUUTTJJKKLLMMWWVVUUTTJJKKLLMMWWVVUUTTJJKKLLMMWWVVUUTTJJKKLLMMWWVVUUTTJJKKLLMMCCBBAA@@vvuuttssJKLMNOOPMMLLKKJJTTUUVVWWMMLLKKJJTTUUVVWWMMLLKKJJ<<==>>??||{{zzyy55667788]]\\[[ZZwwxxyyzz||{{zzyyDDEEFFGGSSRRQQPPNNOOPPQQSSRRQQPPNNOOPPQQSSRRQQPPNNOOPPQQSSRRQQPPNNOOPPQQSSRRQQPPNNOOPPQQ??>>==<< - -rrqqppooPQQRRSSTIIHHGGFFXXYYZZ[[IIHHGGFFXXYYZZ[[IIHHGGFF@@AABBCCxxwwvvuu99::;;<>??@@UUTTSSRR ttssrrqqNOOPPQQRKKJJIIHHVVWWXXYYKKJJIIHHVVWWXXYYKKJJIIHHVVWWXXYYKKJJIIHHVVWWXXYYKKJJIIHHVVWWXXYY776655//     jjiiccbbXYYZZ[[\AA@@??>>``aabbccAA@@??>>``aabbccAA@@??>>HHIIJJKKppoonnmmAABBCCDDQQPPOOII - - ppoonnmmRSSTTUUVGGFFEEDDZZ[[\\]]GGFFEEDDZZ[[\\]]GGFFEEDDZZ[[\\]]GGFFEEDDZZ[[\\]]GGFFEEDDZZ[[\\]]..--,,++aa``__^^\]]^^__`==<<;;::ddeeffgg==<<;;::ddeeffgg==<<;;::LLMMNNOOllkkjjiiEEFFGGHHHHGGFFEE - - - - - - - - - - llkkjjiiVWWXXYYZCCBBAA@@^^__``aaCCBBAA@@^^__``aaCCBBAA@@^^__``aaCCBBAA@@^^__``aaCCBBAA@@^^__``aa**))(('']]\\[[ZZ`aabbccd99887766hhiijjkk99887766hhiijjkk99887766PPQQRRSShhggffeeIIJJKKLLDDCCBBAA     ccbbaa``Z[[\\]]^??>>==<>==<>==<>==<>==<>==__^^]]\\^__``aab;;::9988ffgghhii;;::9988ffgghhii;;::9988ffgghhii;;::9988ffgghhii;;::9988ffgghhii""!! $$%%&&''UUTTSSRRkkllmmnn1100//..ppqqrrss1100//..ppqqrrss1100//..XXYYZZ[[``__^^]]QQRRSSTT<<;;::99 !![[ZZYYXXbccdefgh77665544jjkkllmm77665544jjkkllmm77665544jjkkllmm77665544jjkkllmm77665544jjkkllmm !!"" !!"" !!"" !!"" !!""(())**++QQPPOOIIooppqqrr--,,++**ttuuvvww--,,++**ttuuvvww--,,++**\\]]^^__\\[[ZZYYUUVVWWXX88776655""##$$%%WWVVUUTTiijjkkll33221100nnooppqq33221100nnooppqq33221100nnooppqq33221100nnooppqq33221100nnooppqq##$$%%&&~~}}||{{##$$%%&&~~}}||{{##$$%%&&~~}}||{{##$$%%&&~~}}||{{##$$%%&&~~}}||{{,,--..//HHGGFFEEssttuuvv))((''&&xxyyzz{{))((''&&xxyyzz{{))((''&&``aabbccXXWWVVUUYYZZ[[\\//..--,,     &&''(())SSRRQQPPmmnnoopp//..--,,rrssttuu//..--,,rrssttuu//..--,,rrssttuu//..--,,rrssttuu//..--,,rrssttuu''(())**zzyyxxww''(())**zzyyxxww''(())**zzyyxxww''(())**zzyyxxww''(())**zzyyxxww55667788DDCCBBAAwwxxyyzz%%$$##""||}}~~%%$$##""||}}~~%%$$##""ddeeffggTTSSRRQQ]]^^__``++**))((!!""##$$~~}}!!""##$$~~}}!!""##$$~~}}!!""##$$~~}}!!""##$$~~}}**++,,--OOIIHHGGqqrrsstt++**))((vvwwxxyy++**))((vvwwxxyy++**))((vvwwxxyy++**))((vvwwxxyy++**))((vvwwxxyy - -++,,--..vvuuttss++,,--..vvuuttss++,,--..vvuuttss++,,--..vvuuttss++,,--..vvuuttss99::;;<<@@??>>=={{||}}~!! !! !! hhiijjkkPPOONNMMaabbccdd''&&%%$$%%&&''((||{{zzyy%%&&''((||{{zzyy%%&&''((||{{zzyy%%&&''((||{{zzyy%%&&''((||{{zzyy..//5566FFEEDDCCuuvvwwxx''&&%%$$zz{{||}}''&&%%$$zz{{||}}''&&%%$$zz{{||}}''&&%%$$zz{{||}}''&&%%$$zz{{||}} ~}}||{{//001122rrqqppoo//001122rrqqppoo//001122rrqqppoo//001122rrqqppoo//001122rrqqppoo==>>??@@<<;;::99llmmnnooLLKKJJIIeeffgghh##""!! ))**++,,xxwwvvuu))**++,,xxwwvvuu))**++,,xxwwvvuu))**++,,xxwwvvuu))**++,,xxwwvvuu778899::BBAA@@??yyzz{{||##""!! ~~##""!! ~~##""!! ~~##""!! ~~##""!! ~~zzyyxxww33445566nnmmllkk33445566nnmmllkk33445566nnmmllkk33445566nnmmllkk33445566nnmmllkkAABBCCDD88776655ppqqrrssHHGGFFEEiijjkkll--..//00ttssrrqq--..//00ttssrrqq--..//00ttssrrqq--..//00ttssrrqq--..//00ttssrrqq;;<<==>>>>==<<;;}}~ - - vvuuttss778899::jjiihhgg778899::jjiihhgg778899::jjiihhgg778899::jjiihhgg778899::jjiihhggEEFFGGHH//..--,,ttuuvvwwDDCCBBAAmmnnoopp11223344ppoonnmm11223344ppoonnmm11223344ppoonnmm11223344ppoonnmm11223344ppoonnmm??@@AABB::998877 rrqqppoo;;<<==>>ffeeddcc;;<<==>>ffeeddcc;;<<==>>ffeeddcc;;<<==>>ffeeddcc;;<<==>>ffeeddccIIOOPPQQ++**))((xxyyzz{{@@??>>==qqrrsstt~}}||55667788llkkjjii55667788llkkjjii55667788llkkjjii55667788llkkjjii55667788llkkjjiiCCDDEEFF6655//..nnmmllkk??@@AABBbbaa``__??@@AABBbbaa``__??@@AABBbbaa``__??@@AABBbbaa``__??@@AABBbbaa``__RRSSTTUU''&&%%$$ - - - - - -||}}~~<<;;::99uuvvwwxx {{zzyyxx99::;;<>??@@ddccbbaa==>>??@@ddccbbaa==>>??@@ddccbbaa==>>??@@ddccbbaa==>>??@@ddccbbaaPPQQRRSS))((''&&      dccbbaa`GGHHIIJJZZYYXXWWGGHHIIJJZZYYXXWWGGHHIIJJZZYYXXWWGGHHIIJJZZYYXXWWGGHHIIJJZZYYXXWWZZ[[\\]]44332211}}~~ ssrrqqppAABBCCDD``__^^]]AABBCCDD``__^^]]AABBCCDD``__^^]]AABBCCDD``__^^]]AABBCCDD``__^^]]TTUUVVWW%%$$##"" - -  - -  - -  - -  - - !!""##$$`__^^]]\KKLLMMNNVVUUTTSSKKLLMMNNVVUUTTSSKKLLMMNNVVUUTTSSKKLLMMNNVVUUTTSSKKLLMMNNVVUUTTSS^^__``aa00//..--oonnmmllEEFFGGHH\\[[ZZYYEEFFGGHH\\[[ZZYYEEFFGGHH\\[[ZZYYEEFFGGHH\\[[ZZYYEEFFGGHH\\[[ZZYYXXYYZZ[[!! %%&&''((\[[ZZYYXOOPPQQRRRRQQPPOOOOPPQQRRRRQQPPOOOOPPQQRRRRQQPPOOOOPPQQRRRRQQPPOOOOPPQQRRRRQQPPOObbcciijj,,++**))kkjjiihgIIJJKKLLXXWWVVUUIIJJKKLLXXWWVVUUIIJJKKLLXXWWVVUUIIJJKKLLXXWWVVUUIIJJKKLLXXWWVVUU\\]]^^__))**++,,XWWVVUUTSSTTUUVVNNMMLLKKSSTTUUVVNNMMLLKKSSTTUUVVNNMMLLKKSSTTUUVVNNMMLLKKSSTTUUVVNNMMLLKKkkllmmnn  - -  - -  - - ((''&&%%fedccbbaMMNNOOPPTTSSRRQQMMNNOOPPTTSSRRQQMMNNOOPPTTSSRRQQMMNNOOPPTTSSRRQQMMNNOOPPTTSSRRQQ``aabbcc--..//55TSSRRQQPWWXXYYZZJJIIHHGGWWXXYYZZJJIIHHGGWWXXYYZZJJIIHHGGWWXXYYZZJJIIHHGGWWXXYYZZJJIIHHGGooppqqrr - -    $$##""!! !!""##a``__^^]QQRRSSTTPPOONNMMQQRRSSTTPPOONNMMQQRRSSTTPPOONNMMQQRRSSTTPPOONNMMQQRRSSTTPPOONNMMiijjkkll      66778899POONMLKJ[[\\]]^^FFEEDDCC[[\\]]^^FFEEDDCC[[\\]]^^FFEEDDCC[[\\]]^^FFEEDDCC[[\\]]^^FFEEDDCCssttuuvv $$%%&&'']\\[[ZZYUUVVWWXXLLKKJJIIUUVVWWXXLLKKJJIIUUVVWWXXLLKKJJIIUUVVWWXXLLKKJJIIUUVVWWXXLLKKJJIImmnnoopp - - - - - - - - - - - - ::;;<<==IIHHGGFF__``aabbBBAA@@??__``aabbBBAA@@??__``aabbBBAA@@??__``aabbBBAA@@??__``aabbBBAA@@??wwxxyyzz(())**++YXXWWVVUYYZZ[[\\HHGGFFEEYYZZ[[\\HHGGFFEEYYZZ[[\\HHGGFFEEYYZZ[[\\HHGGFFEEYYZZ[[\\HHGGFFEEqqrrsstt>>??@@AAEEDDCCBBccddeeff>>==<<;;ccddeeff>>==<<;;ccddeeff>>==<<;;ccddeeff>>==<<;;ccddeeff>>==<<;;{{||}} - - ,,--..//UTTSSRRQ]]^^__``DDCCBBAA]]^^__``DDCCBBAA]]^^__``DDCCBBAA]]^^__``DDCCBBAA]]^^__``DDCCBBAAuuvvwwxxBBCCDDEEAA@@??>>gghhiijj::998877gghhiijj::998877gghhiijj::998877gghhiijj::998877gghhiijj::998877 55667788QPPOONMLaabbccdd@@??>>==aabbccdd@@??>>==aabbccdd@@??>>==aabbccdd@@??>>==aabbccdd@@??>>==yyzz{{|| - -FFGGHHII==<<;;::kkllmmnn66554433kkllmmnn66554433kkllmmnn66554433kkllmmnn66554433kkllmmnn66554433~~ !!""##~~ !!""##~~ !!""## 99::;;<>??@@FFEEDDCCiijjkkll88776655iijjkkll88776655iijjkkll88776655iijjkkll88776655iijjkkll88776655 !! !! !! !! !!yyxxwwvvSSTTUUVV5543210/ssttuuvv..--,,++ssttuuvv..--,,++ssttuuvv..--,,++ssttuuvv..--,,++ssttuuvv..--,,++yyxxwwvv(())**++yyxxwwvv(())**++yyxxwwvv(())**++ - - AABBCCDDBBAA@@??mmnnoopp44332211mmnnoopp44332211mmnnoopp44332211mmnnoopp44332211mmnnoopp44332211~~}}||""##$$%%~~}}||""##$$%%~~}}||""##$$%%~~}}||""##$$%%~~}}||""##$$%%uuttssrrWWXXYYZZ/..--,,+wwxxyyzz**))((''wwxxyyzz**))((''wwxxyyzz**))((''wwxxyyzz**))((''wwxxyyzz**))(('' !!""#uuttssrr,,--..//uuttssrr,,--..//uuttssrr,,--..// EEFFGGHH>>==<<;;qqrrsstt00//..--qqrrsstt00//..--qqrrsstt00//..--qqrrsstt00//..--qqrrsstt00//..--{{zzyyxx&&''(()){{zzyyxx&&''(()){{zzyyxx&&''(()){{zzyyxx&&''(()){{zzyyxx&&''(())qqppoonn[[\\]]^^+**))(('{{||}}~~&&%%$$##{{||}}~~&&%%$$##{{||}}~~&&%%$$##{{||}}~~&&%%$$##{{||}}~~&&%%$$###$$%%&&'qqppoonn00112233qqppoonn00112233qqppoonn00112233{{zzyyxxQQRRSSTT77665543qqrrsstt00//..--qqrrsstt00//..--qqrrsstt00//..--qqrrsstt00//..--qqrrsstt00//..--{{zzyyxx&&''(()){{zzyyxx&&''(()){{zzyyxx&&''(())nnmmllkkkkllmmnn~~ !!""##~~ !!""##wwvvuuttUUVVWWXX210//..-uuvvwwxx,,++**))uuvvwwxx,,++**))uuvvwwxx,,++**))uuvvwwxx,,++**))uuvvwwxx,,++**)) !wwvvuutt**++,,--wwvvuutt**++,,--wwvvuutt**++,,--jjiiccbbooppqqrr}}||{{zz$$%%&&''}}||{{zz$$%%&&''ssrrqqppYYZZ[[\\-,,++**)yyzz{{||((''&&%%yyzz{{||((''&&%%yyzz{{||((''&&%%yyzz{{||((''&&%%yyzz{{||((''&&%%!""##$$%ssrrqqpp..//0011ssrrqqpp..//0011ssrrqqpp..//0011aa``__^^ssttuuvvyyxxwwvv(())**++yyxxwwvv(())**++oonnmmll]]^^__``)((''&&%}}~~$$##""!!}}~~$$##""!!}}~~$$##""!!}}~~$$##""!!}}~~$$##""!!%&&''(()oonnmmll22334455oonnmmll22334455oonnmmll22334455]]\\[[ZZwwxxyyzz uuttssrr,,--..//uuttssrr,,--..//kkjjiiccaabbccii%$$##""!     )**++,,-kkjjiihh66778899kkjjiihh66778899kkjjiihh66778899YYXXWWVV{{||}} - - qqppoonn00112233qqppoonn00112233bbaa``__jjkkllmm! -..//012ggffeedd::;;<<==ggffeedd::;;<<==ggffeedd::;;<<==UUTTSSRR - - mmllkkjj44556677mmllkkjj44556677^^]]\\[[nnooppqq34556677ccbbaa``>>??@@AAccbbaa``>>??@@AAccbbaa``>>??@@AAQQPPOOIIiihhggff8899::;;iihhggff8899::;;ZZYYXXWWrrssttuu8899::;;__^^]]\\BBCCDDEE__^^]]\\BBCCDDEE__^^]]\\BBCCDDEEHHGGFFEEeeddccbb<<==>>??eeddccbb<<==>>??VVUUTTSSvvwwxxyy     <<==>>??[[ZZYYXXFFGGHHII[[ZZYYXXFFGGHHII[[ZZYYXXFFGGHHIIDDCCBBAAaa``__^^@@AABBCCaa``__^^@@AABBCCRRQQPPOOzz{{||}} - - - - - - - - - - }}@@AABBCCWWVVUUTTJJKKLLMMWWVVUUTTJJKKLLMMWWVVUUTTJJKKLLMM@@??>>==]]\\[[ZZDDEEFFGG]]\\[[ZZDDEEFFGGIIHHGGFF - - ||{{zzyyDDEEFFGGSSRRQQPPNNOOPPQQSSRRQQPPNNOOPPQQSSRRQQPPNNOOPPQQ<<;;::99 !!YYXXWWVVHHIIJJKKYYXXWWVVHHIIJJKKEEDDCCBBxxwwvvuuHHIIJKLMOONNMMLLRRSSTTUUOONNMMLLRRSSTTUUOONNMMLLRRSSTTUU88776655""##$$%%UUTTSSRRLLMMNNOOUUTTSSRRLLMMNNOOAA@@??>>ttssrrqqNOOPPQQRKKJJIIHHVVWWXXYYKKJJIIHHVVWWXXYYKKJJIIHHVVWWXXYY//..--,,&&''(())QQPPOONNPPQQRRSSQQPPOONNPPQQRRSS==<<;;:: - - ppoonnmmRSSTTUUVGGFFEEDDZZ[[\\]]GGFFEEDDZZ[[\\]]GGFFEEDDZZ[[\\]]++**))((**++,,--MMLLKKJJTTUUVVWWMMLLKKJJTTUUVVWW99887766 - - - - - - - - - - llkkjjiiVWWXXYYZCCBBAA@@^^__``aaCCBBAA@@^^__``aaCCBBAA@@^^__``aa''&&%%$$..//0011IIHHGGFFXXYYZZ[[IIHHGGFFXXYYZZ[[55//..--     ccbbaa``Z[[\\]]^??>>==<>==<>==<>``aabbccAA@@??>>``aabbcc((''&&%% !![[ZZYYXXbccdefgh77665544jjkkllmm77665544jjkkllmm77665544jjkkllmmwwvvuutt::;;<<====<<;;::ddeeffgg==<<;;::ddeeffgg$$##""!!""##$$%%WWVVUUTTiijjkkll33221100nnooppqq33221100nnooppqq33221100nnooppqqssrrqqpp>>??@@AA99887766hhiijjkk99887766hhiijjkk      &&''(())SSRRQQPPmmnnoopp//..--,,rrssttuu//..--,,rrssttuu//..--,,rrssttuu oonnmmllBBCCDDEE55443322llmmnnoo55443322llmmnnoo!!""##$$~~}}!!""##$$~~}}!!""##$$~~}}!!""##$$~~}}!!""##$$~~}}**++,,--OOIIHHGGqqrrsstt++**))((vvwwxxyy++**))((vvwwxxyy++**))((vvwwxxyy - - - -kkjjiihhFFGGHHII1100//..ppqqrrss1100//..ppqqrrss%%&&''((||{{zzyy%%&&''((||{{zzyy%%&&''((||{{zzyy%%&&''((||{{zzyy%%&&''((||{{zzyy..//5566FFEEDDCCuuvvwwxx''&&%%$$zz{{||}}''&&%%$$zz{{||}}''&&%%$$zz{{||}} ggffeeddJJKKLLMM--,,++**ttuuvvww--,,++**ttuuvvww ))**++,,xxwwvvuu))**++,,xxwwvvuu))**++,,xxwwvvuu))**++,,xxwwvvuu))**++,,xxwwvvuu778899::BBAA@@??yyzz{{||##""!! ~~##""!! ~~##""!! ~~ccbbaa``NNOOPPQQ))((''&&xxyyzz{{))((''&&xxyyzz{{ - - ~}}--..//00ttssrrqq--..//00ttssrrqq--..//00ttssrrqq--..//00ttssrrqq--..//00ttssrrqq;;<<==>>>>==<<;;}}~__^^]]\\RRSSTTUU%%$$##""||}}~~%%$$##""||}}~~||{{zzyy11223344ppoonnmm11223344ppoonnmm11223344ppoonnmm11223344ppoonnmm11223344ppoonnmm??@@AABB::998877[[ZZYYXXVVWWXXYY!! !!  xxwwvvuu55667788llkkjjii55667788llkkjjii55667788llkkjjii55667788llkkjjii55667788llkkjjiiCCDDEEFF6655//.. !!""##WWVVUUTTZZ[[\\]] - - ttssrrqq99::;;<>??@@ddccbbaa==>>??@@ddccbbaa==>>??@@ddccbbaa==>>??@@ddccbbaa==>>??@@ddccbbaaPPQQRRSS))((''&&   (())**++OONNMMLLbbccddeellkkjjiiAABBCCDD``__^^]]AABBCCDD``__^^]]AABBCCDD``__^^]]AABBCCDD``__^^]]AABBCCDD``__^^]]TTUUVVWW%%$$##"" - -  - -  - - ,,--..//KKJJIIHHffgghhiihgfedccbEEFFGGHH\\[[ZZYYEEFFGGHH\\[[ZZYYEEFFGGHH\\[[ZZYYEEFFGGHH\\[[ZZYYEEFFGGHH\\[[ZZYYXXYYZZ[[!! 55667788GGFFEEDDjjkkllmm - - - - !!""baa``__^IIJJKKLLXXWWVVUUIIJJKKLLXXWWVVUUIIJJKKLLXXWWVVUUIIJJKKLLXXWWVVUUIIJJKKLLXXWWVVUU\\]]^^__99::;;<>??@@??>>==<>??GGFFEEDDaabbccdd@@??>>==aabbccdd@@??>>==aabbccdd@@??>>==aabbccdd@@??>>==aabbccdd@@??>>==yyzz{{|| - -}}||{{VVWWXXYY++**))((@@AABBCCCCBBAA@@eeffgghh<<;;::99eeffgghh<<;;::99eeffgghh<<;;::99eeffgghh<<;;::99eeffgghh<<;;::99}} zzyyxxwwZZ[[\\]]''&&%%$$DDEEFFGG??>>==<=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9878787878787878765656565656565654343434321212121212121210/0/0/0//0/0////.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#}~}~}~}~~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghgfefefefefefefedcdcdcdccdcdcdcdbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMLKLKLKLKLKLKLKLKIJIJIJIJIJIJIJIJHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9878787878787878765656565656565654343434321212121212121210/0/0/0///0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#}~}~}~}~~}}}}}}~|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghgfefefefefefefefedcdcdcdccdcdcdcdbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMLKLKLKLKLKLKLKLKIIIIIIJIIJIJIJIJHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9878787878787878765656565656565654343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#}~}~}~}~}~}~}~}~|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghgfefefefefefefefedcdcdcdcccccccdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIIJIJIJIJHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:987878787878787876565656565656565434343432121212121212121/////0/00/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#}~}~}}}}}~}~}~}~|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIIJIJIJIJHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:987878787878787876565656565656565434343432121212121212121/0/0/0/00/0/////.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#}}~}~}~}}~}~}~}~|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghgfefefefefefefefedcdcccccdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIIJIJIIIIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:987878787878787876565656565656565434343432121212121212121/0/0/0/00/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#~}~}~}~}}~}~}~}~|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghgfefefefefefefefecdcdcdcddcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIIIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:987878787878787876565656565656565434343432121212121212121/0/0/0/0.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!~}~}~}~}}~}~}~}~|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghgfefefefefefefefecdcdcdcdccccdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:987878787878787876565656565656565434343434343432121212121212121/0/0/0/0.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!~}~}~}~}}}}}}}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghgfefefefefefefefecdcdcdcddcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMLKLKLKLKLKLKLKLKIIIIIJIJHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:98787878787878787656565656565656543434343434343432121212121212121/0/0/0//.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghgfefefefefefefefecdcdcdcdbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKIJIJIJIJHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:98787878787878787656565656565656543434343434343432121212121212121////0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!~}~}}}}}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefecdcdcdcdbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKIJIJIJIJHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:987878787878787876565656565656565434343434343434321212121210/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!}~}~}~}~|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefecdccccccbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKJIJIIJIJIJIJHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9878787878787878765656565656565654343434343434343212121210//////00/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!}~}~}~}~|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefedcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKJIJIIIIIIJIJIJIJHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:987878787878787876565656565656565434343434343434321212121/0/0/0/00/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!}~}~}~}~|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefedcdcdcccdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKJIJIJIJIIJIJIJIIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:987878787878787876565656565656565434343434343434321212121/0/0/0/00/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!~}~}~}~}}~}~}~}~|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefecccdcdcddcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKJIJIJIJIIIIIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:987878787878787876565656565656565434343434343434321212121/0/0/0/00/0/0///.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!}}}}~}~}}~}~}~}~|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefecdcdcdcddcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:987878787878787876565656565656565434343434343434321212121/0/0/0/0///0/0/0.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!~}~}~}~}}~}}}}}}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefecdcdcdcddcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKJIIIIIIJJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:987878787878787876565656565656565434343434343434321212121/0/0/0/0/0/0/0/0.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefecdcdcdcddccccccdbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKIJIJIJIJJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:987878787878787876565656565656565434343434343434321212121//////0//0/0/0/0.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!~}~}~}}}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefecdcdcdcdcdcdcdcdbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKIJIJIJIJJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9878787878787878765656565656565654343434343434321212121210/0/0/0//0/0/0/0.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!}}}~}~}~~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefecdcdcccccdcdcdcdbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKIJIJIJIJJIJIJIIIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9878787878787878765656565656565654343434321212121212121210/0/0/0//0/0/0/0.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!                - - - - - - - - "!"!"!"!                - - - - - - - - "!"!"!"!                - - - - - - - - "!"!"!"!                - - - - - - - - "!"!"!"!                - - - - - - - - "!"!"!"!                - - - - - - - - "!"!"!"!                - - - - - - - - "!"!"!"!                - - - - - - - - "!"!"!"!                - - - - - - - - "!"!"!"!                - - - - - - - - "!"!"!"!                - - - - - - - - "!"!"!"!                - - - - - - - -                 - - - - - - - -                 - - - - - - - -                 - - - - - - - -                 - - - - - - - -                 - - - - - - - -                 - - - - - - - -                 - - - - - - - -                 - - - - - - - - PPOONNMMaabbccdd''&&%%$$IIOOPPQQ::998877%%&&''((uuvvwwxx||{{zzyy,,++**))%%&&''((uuvvwwxx||{{zzyy,,++**))%%&&''((uuvvwwxx||{{zzyy,,++**))%%&&''((uuvvwwxx||{{zzyy,,++**))%%&&''((uuvvwwxx||{{zzyy,,++**))..//5566FFEEDDCC !uuvvwwxxwwvvuutt''&&%%$$**++,,--zz{{||}}wwvvuutt''&&%%$$**++,,--zz{{||}}wwvvuutt''&&%%$$**++,,--zz{{||}}wwvvuutt''&&%%$$**++,,--zz{{||}}wwvvuutt''&&%%$$**++,,--zz{{||}}mmllkkjj __``aabb~}}||{{'&&%%$$#//001122rrqqppoo""!! //001122rrqqppoo""!! //001122rrqqppoo""!! //001122rrqqppoo""!! //001122rrqqppoo""!! ==>>??@@<<;;::99'(())**+mmllkkjj44556677mmllkkjj44556677mmllkkjj44556677mmllkkjj44556677mmllkkjj44556677^^]]\\[[ - - nnooppqqttssrrqq99::;;<>??@@ddccbbaa==>>??@@ddccbbaa==>>??@@ddccbbaaHHGGFFEEiijjkkll}}||{{VVWWXXYY0//..--,--..//00}}~~ttssrrqq$$##""!!--..//00}}~~ttssrrqq$$##""!!--..//00}}~~ttssrrqq$$##""!!--..//00}}~~ttssrrqq$$##""!!--..//00}}~~ttssrrqq$$##""!!;;<<==>>>>==<<;;%&&''(()}}~oonnmmll22334455oonnmmll22334455oonnmmll22334455oonnmmll22334455oonnmmll22334455``__^^]] - - llmmnnoovvuuttss778899::jjiihhgg778899::jjiihhgg778899::jjiihhgg778899::jjiihhgg778899::jjiihhggEEFFGGHH//..--,,/0123455eeddccbb<<==>>??eeddccbb<<==>>??eeddccbb<<==>>??eeddccbb<<==>>??eeddccbb<<==>>??VVUUTTSSvvwwxxyyllkkjjiiAABBCCDD``__^^]] AABBCCDD``__^^]] AABBCCDD``__^^]] DDCCBBAA mmnnooppzzyyxxwwZZ[[\\]],++**))(11223344ppoonnmm 11223344ppoonnmm 11223344ppoonnmm 11223344ppoonnmm 11223344ppoonnmm ??@@AABB::998877)**++,,-kkjjiihh66778899kkjjiihh66778899kkjjiihh66778899kkjjiihh66778899kkjjiihh66778899\\[[ZZYY ppqqrrssrrqqppoo;;<<==>>ffeeddcc;;<<==>>ffeeddcc;;<<==>>ffeeddcc;;<<==>>ffeeddcc;;<<==>>ffeeddccIIOOPPQQ++**))((66778899aa``__^^@@AABBCCaa``__^^@@AABBCCaa``__^^@@AABBCCaa``__^^@@AABBCCaa``__^^@@AABBCCRRQQPPOOzz{{||}}hgfedccb EEFFGGHH\\[[ZZYY - - EEFFGGHH\\[[ZZYY - - EEFFGGHH\\[[ZZYY - - @@??>>==!!""##$$qqrrssttvvuuttss^^__``aa~}}||(''&&%%$55667788llkkjjii55667788llkkjjii55667788llkkjjii55667788llkkjjii55667788llkkjjiiCCDDEEFF6655//..-..//012ggffeedd::;;<<==ggffeedd::;;<<==ggffeedd::;;<<==ggffeedd::;;<<==ggffeedd::;;<<==XXWWVVUUttuuvvwwnnmmllkk??@@AABBbbaa``__??@@AABBbbaa``__??@@AABBbbaa``__??@@AABBbbaa``__??@@AABBbbaa``__RRSSTTUU''&&%%$$::;;<<==]]\\[[ZZ - -DDEEFFGG]]\\[[ZZ - -DDEEFFGG]]\\[[ZZ - -DDEEFFGG]]\\[[ZZ - -DDEEFFGG]]\\[[ZZ - -DDEEFFGGIIHHGGFF !!""baa``__^ - - IIJJKKLLXXWWVVUUIIJJKKLLXXWWVVUUIIJJKKLLXXWWVVUU<<;;::99%%&&''((uuvvwwxxrrqqppoo bbcciijj{{zzyyxx$##""!! 99::;;<>??@@AAccbbaa``>>??@@AAccbbaa``>>??@@AAccbbaa``>>??@@AAccbbaa``>>??@@AATTSSRRQQxxyyzz{{jjiihgfe CCDDEEFF^^]]\\[[ CCDDEEFF^^]]\\[[ CCDDEEFF^^]]\\[[ CCDDEEFF^^]]\\[[ CCDDEEFF^^]]\\[[ VVWWXXYY##""!! >>??@@AAYYXXWWVV HHIIJJKKYYXXWWVV HHIIJJKKYYXXWWVV HHIIJJKKYYXXWWVV HHIIJJKKYYXXWWVV HHIIJJKKEEDDCCBB##$$%%&&^]]\\[[ZMMNNOOPPTTSSRRQQMMNNOOPPTTSSRRQQMMNNOOPPTTSSRRQQ88776655))**++,,yyzz{{||nnmmllkk - - - -kkllmmnnwwvvuutt ==>>??@@ddccbbaa==>>??@@ddccbbaa==>>??@@ddccbbaa==>>??@@ddccbbaa==>>??@@ddccbbaaPPQQRRSS))((''&&8899::;;__^^]]\\ BBCCDDEE__^^]]\\ BBCCDDEE__^^]]\\ BBCCDDEE__^^]]\\ BBCCDDEE__^^]]\\ BBCCDDEEPPOOIIHH ||}}dccbbaa` - - GGHHIIJJZZYYXXWW - - GGHHIIJJZZYYXXWW - - GGHHIIJJZZYYXXWW - - GGHHIIJJZZYYXXWW - - GGHHIIJJZZYYXXWW - - ZZ[[\\]]}}||{{BBCCDDEEUUTTSSRRLLMMNNOOUUTTSSRRLLMMNNOOUUTTSSRRLLMMNNOOUUTTSSRRLLMMNNOOUUTTSSRRLLMMNNOOAA@@??>>''(())**ZYYXXWWVQQRRSSTTPPOONNMMQQRRSSTTPPOONNMMQQRRSSTTPPOONNMM99::;;<<44332211--..//00}}~~jjiiccbb ooppqqrrssrrqqppAABBCCDD``__^^]] AABBCCDD``__^^]] AABBCCDD``__^^]] AABBCCDD``__^^]] AABBCCDD``__^^]] TTUUVVWW%%$$##""<<==>>??[[ZZYYXX - - FFGGHHII[[ZZYYXX - - FFGGHHII[[ZZYYXX - - FFGGHHII[[ZZYYXX - - FFGGHHII[[ZZYYXX - - FFGGHHIIGGFFEEDD!!""##$$`__^^]]\KKLLMMNNVVUUTTSSKKLLMMNNVVUUTTSSKKLLMMNNVVUUTTSSKKLLMMNNVVUUTTSSKKLLMMNNVVUUTTSS^^__``aazzyyxxwwFFGGHHIIQQPPOONNPPQQRRSSQQPPOONNPPQQRRSSQQPPOONNPPQQRRSSQQPPOONNPPQQRRSSQQPPOONNPPQQRRSS==<<;;::++,,--..VUUTTSSRUUVVWWXXLLKKJJIIUUVVWWXXLLKKJJIIUUVVWWXXLLKKJJII==>>??@@~~}}00//..--11223344aa``__^^ssttuuvvoonnmmllEEFFGGHH\\[[ZZYY - - EEFFGGHH\\[[ZZYY - - EEFFGGHH\\[[ZZYY - - EEFFGGHH\\[[ZZYY - - EEFFGGHH\\[[ZZYY - - XXYYZZ[[}}!! @@AABBCCWWVVUUTTJJKKLLMMWWVVUUTTJJKKLLMMWWVVUUTTJJKKLLMMWWVVUUTTJJKKLLMMWWVVUUTTJJKKLLMMCCBBAA@@%%&&''((\[[ZZYYXOOPPQQRRRRQQPPOOOOPPQQRRRRQQPPOOOOPPQQRRRRQQPPOOOOPPQQRRRRQQPPOOOOPPQQRRRRQQPPOObbcciijjvvuuttssJKLMNOOPMMLLKKJJTTUUVVWWMMLLKKJJTTUUVVWWMMLLKKJJTTUUVVWWMMLLKKJJTTUUVVWWMMLLKKJJTTUUVVWW99887766//556677RQQPPOON - - YYZZ[[\\HHGGFFEE - - YYZZ[[\\HHGGFFEE - - YYZZ[[\\HHGGFFEE - - AABBCCDD||{{zzyy,,++**))55667788]]\\[[ZZwwxxyyzzkkjjiihgIIJJKKLLXXWWVVUUIIJJKKLLXXWWVVUUIIJJKKLLXXWWVVUUIIJJKKLLXXWWVVUUIIJJKKLLXXWWVVUU\\]]^^__||{{zzyyDDEEFFGGSSRRQQPPNNOOPPQQSSRRQQPPNNOOPPQQSSRRQQPPNNOOPPQQSSRRQQPPNNOOPPQQSSRRQQPPNNOOPPQQ??>>==<<))**++,,XWWVVUUTSSTTUUVVNNMMLLKKSSTTUUVVNNMMLLKKSSTTUUVVNNMMLLKKSSTTUUVVNNMMLLKKSSTTUUVVNNMMLLKK - -kkllmmnnrrqqppoo PQQRRSSTIIHHGGFF - - XXYYZZ[[IIHHGGFF - - XXYYZZ[[IIHHGGFF - - XXYYZZ[[IIHHGGFF - - XXYYZZ[[IIHHGGFF - - XXYYZZ[[55//..--8899::;;MLKJIIHH ]]^^__``DDCCBBAA ]]^^__``DDCCBBAA ]]^^__``DDCCBBAA EEFFGGHHxxwwvvuu((''&&%%99::;;<>??GGFFEEDDaabbccdd@@??>>==aabbccdd@@??>>==aabbccdd@@??>>==IIJJKKLLttssrrqq$$##""!!==>>??@@UUTTSSRR !!""##a``__^^] QQRRSSTTPPOONNMMQQRRSSTTPPOONNMMQQRRSSTTPPOONNMMQQRRSSTTPPOONNMMQQRRSSTTPPOONNMMiijjkkllttssrrqq NOOPPQQRKKJJIIHH VVWWXXYYKKJJIIHH VVWWXXYYKKJJIIHH VVWWXXYYKKJJIIHH VVWWXXYYKKJJIIHH VVWWXXYY776655//66778899POONMLKJ [[\\]]^^FFEEDDCC [[\\]]^^FFEEDDCC [[\\]]^^FFEEDDCC [[\\]]^^FFEEDDCC [[\\]]^^FFEEDDCCssttuuvvjjiiccbbXYYZZ[[\AA@@??>>``aabbccAA@@??>>``aabbccAA@@??>>``aabbccAA@@??>>``aabbccAA@@??>>``aabbcc((''&&%%@@AABBCCCCBBAA@@eeffgghh<<;;::99eeffgghh<<;;::99eeffgghh<<;;::99MMNNOOPPppoonnmm AABBCCDDQQPPOOII$$%%&&'']\\[[ZZYUUVVWWXXLLKKJJIIUUVVWWXXLLKKJJIIUUVVWWXXLLKKJJIIUUVVWWXXLLKKJJIIUUVVWWXXLLKKJJII - - mmnnooppppoonnmm - - RSSTTUUVGGFFEEDD - - ZZ[[\\]]GGFFEEDD - - ZZ[[\\]]GGFFEEDD - - ZZ[[\\]]GGFFEEDD - - ZZ[[\\]]GGFFEEDD - - ZZ[[\\]]..--,,++::;;<<==IIHHGGFF__``aabbBBAA@@??__``aabbBBAA@@??__``aabbBBAA@@??__``aabbBBAA@@??__``aabbBBAA@@??wwxxyyzzaa``__^^\]]^^__`==<<;;::ddeeffgg==<<;;::ddeeffgg==<<;;::ddeeffgg==<<;;::ddeeffgg==<<;;::ddeeffgg$$##""!!DDEEFFGG??>>==<<iijjkkll88776655iijjkkll88776655iijjkkll88776655QQRRSSTTllkkjjiiEEFFGGHHHHGGFFEE(())**++YXXWWVVU - - YYZZ[[\\HHGGFFEE - - YYZZ[[\\HHGGFFEE - - YYZZ[[\\HHGGFFEE - - YYZZ[[\\HHGGFFEE - - YYZZ[[\\HHGGFFEE qqrrssttllkkjjiiVWWXXYYZCCBBAA@@^^__``aaCCBBAA@@^^__``aaCCBBAA@@^^__``aaCCBBAA@@^^__``aaCCBBAA@@^^__``aa**))((''>>??@@AAEEDDCCBBccddeeff>>==<<;;ccddeeff>>==<<;;ccddeeff>>==<<;;ccddeeff>>==<<;;ccddeeff>>==<<;;{{||}}]]\\[[ZZ - - `aabbccd99887766hhiijjkk99887766hhiijjkk99887766hhiijjkk99887766hhiijjkk99887766hhiijjkk}}|| HHIIOOPP;;::9988 mmnnoopp44332211 mmnnoopp44332211 mmnnoopp44332211 UUVVWWXXhhggffeeIIJJKKLLDDCCBBAA,,--..//UTTSSRRQ ]]^^__``DDCCBBAA ]]^^__``DDCCBBAA ]]^^__``DDCCBBAA ]]^^__``DDCCBBAA ]]^^__``DDCCBBAAuuvvwwxxccbbaa``Z[[\\]]^??>>==<<bbccddee??>>==<<bbccddee??>>==<<bbccddee??>>==<<bbccddee??>>==<<bbccddee&&%%$$##BBCCDDEEAA@@??>>gghhiijj::998877gghhiijj::998877gghhiijj::998877gghhiijj::998877gghhiijj::998877 !!""##YYXXWWVV efghiijj55443322llmmnnoo55443322llmmnnoo55443322llmmnnoo55443322llmmnnoo55443322llmmnnoo{{zzyyxxQQRRSSTT77665543!!""##$$qqrrsstt~~}}00//..--!!""##$$qqrrsstt~~}}00//..--!!""##$$qqrrsstt~~}}00//..--!!""##$$YYZZ[[\\ddccbbaaMMNNOOPP@@??>>==55667788QPPOONMLaabbccdd@@??>>==aabbccdd@@??>>==aabbccdd@@??>>==aabbccdd@@??>>==aabbccdd@@??>>==yyzz{{||__^^]]\\ - -^__``aab;;::9988ffgghhii;;::9988ffgghhii;;::9988ffgghhii;;::9988ffgghhii;;::9988ffgghhii""!! FFGGHHII==<<;;::kkllmmnn66554433kkllmmnn66554433kkllmmnn66554433kkllmmnn66554433kkllmmnn66554433$$%%&&''UUTTSSRRkkllmmnn~~1100//.. !!""##ppqqrrss~~1100//.. !!""##ppqqrrss~~1100//.. !!""##ppqqrrss~~1100//.. !!""##ppqqrrss~~1100//.. !!""##ppqqrrsswwvvuuttUUVVWWXX210//..-%%&&''((uuvvwwxx||{{zzyy,,++**))%%&&''((uuvvwwxx||{{zzyy,,++**))%%&&''((uuvvwwxx||{{zzyy,,++**))%%&&''((]]^^__````__^^]] QQRRSSTT<<;;::9999::;;<>??@@FFEEDDCCiijjkkll88776655iijjkkll88776655iijjkkll88776655iijjkkll88776655iijjkkll88776655""##$$%%WWVVUUTTiijjkkll33221100 !!nnooppqq33221100 !!nnooppqq33221100 !!nnooppqq33221100 !!nnooppqq33221100 !!nnooppqqyyxxwwvvSSTTUUVV5543210/##$$%%&&ssttuuvv~~}}||{{..--,,++##$$%%&&ssttuuvv~~}}||{{..--,,++##$$%%&&ssttuuvv~~}}||{{..--,,++##$$%%&&ssttuuvv~~}}||{{..--,,++##$$%%&&ssttuuvv~~}}||{{..--,,++,,--..//HHGGFFEEssttuuvvyyxxwwvv))((''&&(())**++xxyyzz{{yyxxwwvv))((''&&(())**++xxyyzz{{yyxxwwvv))((''&&(())**++xxyyzz{{yyxxwwvv))((''&&(())**++xxyyzz{{yyxxwwvv))((''&&(())**++xxyyzz{{oonnmmll - - ]]^^__``~}})((''&&%--..//00}}~~ttssrrqq$$##""!!--..//00}}~~ttssrrqq$$##""!!--..//00}}~~ttssrrqq$$##""!!--..//00eeffgghhXXWWVVUU - - YYZZ[[\\//..--,,AABBCCDDBBAA@@?? mmnnoopp44332211 mmnnoopp44332211 mmnnoopp44332211 mmnnoopp44332211 mmnnoopp44332211&&''(())SSRRQQPPmmnnoopp~~}}||//..--,,""##$$%%rrssttuu~~}}||//..--,,""##$$%%rrssttuu~~}}||//..--,,""##$$%%rrssttuu~~}}||//..--,,""##$$%%rrssttuu~~}}||//..--,,""##$$%%rrssttuuuuttssrrWWXXYYZZ/..--,,+''(())**wwxxyyzzzzyyxxww**))((''''(())**wwxxyyzzzzyyxxww**))((''''(())**wwxxyyzzzzyyxxww**))((''''(())**wwxxyyzzzzyyxxww**))((''''(())**wwxxyyzzzzyyxxww**))((''55667788DDCCBBAA !!""#wwxxyyzzuuttssrr%%$$##"",,--..//||}}~~uuttssrr%%$$##"",,--..//||}}~~uuttssrr%%$$##"",,--..//||}}~~uuttssrr%%$$##"",,--..//||}}~~uuttssrr%%$$##"",,--..//||}}~~kkjjiiccaabbccii||{{zzyy%$$##""!11223344ppoonnmm 11223344ppoonnmm 11223344ppoonnmm 11223344iijjkkllTTSSRRQQ ]]^^__``++**))((EEFFGGHH>>==<<;;!!""##$$qqrrsstt~~}}00//..--!!""##$$qqrrsstt~~}}00//..--!!""##$$qqrrsstt~~}}00//..--!!""##$$qqrrsstt~~}}00//..--!!""##$$qqrrsstt~~}}00//..--**++,,--OOIIHHGGqqrrsstt{{zzyyxx++**))((&&''(())vvwwxxyy{{zzyyxx++**))((&&''(())vvwwxxyy{{zzyyxx++**))((&&''(())vvwwxxyy{{zzyyxx++**))((&&''(())vvwwxxyy{{zzyyxx++**))((&&''(())vvwwxxyyqqppoonn - -[[\\]]^^+**))(('++,,--..{{||}}~~vvuuttss&&%%$$##++,,--..{{||}}~~vvuuttss&&%%$$##++,,--..{{||}}~~vvuuttss&&%%$$##++,,--..{{||}}~~vvuuttss&&%%$$##++,,--..{{||}}~~vvuuttss&&%%$$##99::;;<<@@??>>==#$$%%&&'{{||}}~qqppoonn!! 00112233qqppoonn!! 00112233qqppoonn!! 00112233qqppoonn!! 00112233qqppoonn!! 00112233bbaa``__ jjkkllmmxxwwvvuu! 55667788llkkjjii55667788llkkjjii55667788llkkjjii55667788mmnnooppqqrrsstt~~}}00//..--!!""##$$qqrrsstt~~}}00//..--**++,,--OOIIHHGGqqrrsstt{{zzyyxx++**))((&&''(())vvwwxxyy{{zzyyxx++**))((&&''(())vvwwxxyy{{zzyyxx++**))((&&''(())vvwwxxyynnmmllkk - - - -kkllmmnnkkjjiihhFFGGHHIIuuvvwwxx||{{zzyy,,++**))%%&&''((uuvvwwxx||{{zzyy,,++**))..//5566FFEEDDCC !uuvvwwxxwwvvuutt''&&%%$$**++,,--zz{{||}}wwvvuutt''&&%%$$**++,,--zz{{||}}wwvvuutt''&&%%$$**++,,--zz{{||}}jjiiccbb ooppqqrrggffeeddJJKKLLMMyyzz{{||xxwwvvuu((''&&%%))**++,,yyzz{{||xxwwvvuu((''&&%%778899::BBAA@@??!""##$$%yyzz{{||ssrrqqpp##""!! ..//0011~~ssrrqqpp##""!! ..//0011~~ssrrqqpp##""!! ..//0011~~aa``__^^ssttuuvvccbbaa``NNOOPPQQ}}~~ttssrrqq$$##""!!--..//00}}~~ttssrrqq$$##""!!;;<<==>>>>==<<;;%&&''(()}}~oonnmmll22334455oonnmmll22334455oonnmmll22334455]]\\[[ZZwwxxyyzz__^^]]\\ RRSSTTUUppoonnmm 11223344ppoonnmm ??@@AABB::998877)**++,,-kkjjiihh66778899kkjjiihh66778899kkjjiihh66778899YYXXWWVV{{||}}[[ZZYYXX - - VVWWXXYYllkkjjii55667788llkkjjiiCCDDEEFF6655//..-..//012ggffeedd::;;<<==ggffeedd::;;<<==ggffeedd::;;<<==UUTTSSRR !!""##WWVVUUTT - - ZZ[[\\]]hhggffee99::;;<>??@@AAccbbaa``>>??@@AAccbbaa``>>??@@AAQQPPOOII$$%%&&''SSRRQQPP^^__``aaddccbbaa==>>??@@ddccbbaaPPQQRRSS))((''&&8899::;;__^^]]\\ BBCCDDEE__^^]]\\ BBCCDDEE__^^]]\\ BBCCDDEEHHGGFFEE(())**++OONNMMLLbbccddee``__^^]] AABBCCDD``__^^]] TTUUVVWW%%$$##""<<==>>??[[ZZYYXX - - FFGGHHII[[ZZYYXX - - FFGGHHII[[ZZYYXX - - FFGGHHIIDDCCBBAA,,--..//KKJJIIHHffgghhii\\[[ZZYY - - EEFFGGHH\\[[ZZYY - - XXYYZZ[[}}!! @@AABBCCWWVVUUTTJJKKLLMMWWVVUUTTJJKKLLMMWWVVUUTTJJKKLLMM@@??>>==55667788GGFFEEDDjjkkllmmXXWWVVUUIIJJKKLLXXWWVVUU\\]]^^__||{{zzyyDDEEFFGGSSRRQQPPNNOOPPQQSSRRQQPPNNOOPPQQSSRRQQPPNNOOPPQQ<<;;::9999::;;<>??@@??>>==<<""##$$%%rrssttuuPPOONNMMQQRRSSTTPPOONNMMiijjkkllttssrrqq NOOPPQQRKKJJIIHH VVWWXXYYKKJJIIHH VVWWXXYYKKJJIIHH VVWWXXYY//..--,,AABBCCDD;;::9988&&''(())vvwwxxyyLLKKJJIIUUVVWWXXLLKKJJII - - mmnnooppppoonnmm - - RSSTTUUVGGFFEEDD - - ZZ[[\\]]GGFFEEDD - - ZZ[[\\]]GGFFEEDD - - ZZ[[\\]]++**))((EEFFGGHH77665544**++,,--zz{{||}}HHGGFFEE - - YYZZ[[\\HHGGFFEE qqrrssttllkkjjiiVWWXXYYZCCBBAA@@^^__``aaCCBBAA@@^^__``aaCCBBAA@@^^__``aa''&&%%$$IIOOPPQQ33221100..//0011~~DDCCBBAA ]]^^__``DDCCBBAAuuvvwwxxccbbaa``Z[[\\]]^??>>==<<bbccddee??>>==<<bbccddee??>>==<<bbccddee##""!! RRSSTTUU~~}}||//..--,,22334455@@??>>==aabbccdd@@??>>==yyzz{{||__^^]]\\ - -^__``aab;;::9988ffgghhii;;::9988ffgghhii;;::9988ffgghhii}}||{{VVWWXXYY{{zzyyxx++**))((66778899<<;;::99eeffgghh<<;;::99 !!}}[[ZZYYXX bccdefgh77665544jjkkllmm77665544jjkkllmm77665544jjkkllmmzzyyxxwwZZ[[\\]]wwvvuutt''&&%%$$::;;<<==88776655iijjkkll88776655""##$$%%WWVVUUTTiijjkkll33221100 !!nnooppqq33221100 !!nnooppqq33221100 !!nnooppqqvvuuttss^^__``aassrrqqpp##""!! >>??@@AA44332211 mmnnoopp44332211&&''(())SSRRQQPPmmnnoopp~~}}||//..--,,""##$$%%rrssttuu~~}}||//..--,,""##$$%%rrssttuu~~}}||//..--,,""##$$%%rrssttuurrqqppoo bbcciijjoonnmmllBBCCDDEEfpvf~HbHAZXQJ`ےdrtAJltbf`JXQr˂pZHAtlJ|ZdQbfpvf~HXQJ`ےp˂rJltdrtAvpf`vXnے`JXQZHAbtlJ|ZdQbfpvf~HXQJ`ےp˂rJltdrtAvXH~vpfH˂pZHAArd||ZdQbXv`fpvnbHAZpJ`ےdQZ|ltb~f`vpfH˂pZ`JXQrrd|lJtAXv`fpvnbHAZpJ`ےdQZ|ltb~f`vpfHXQr˂p`JXQdQbt璕~HfpvnXrXQJHAZp˂rtAJlZ|dXnvf`vbے`˂pZHAdQbtd|Z~Hfpv`frXQJHAZp˂rtAJlZ|dXnvf`vbے`˂pZHAtlJfpvnXv`ےbHZrXtbdQZtAJlfH~nvpXQr˂ے`JJtArdbtlnXvHfpvےbHArXQJ`tbdQZtAJlfH~nvpXQr˂ے`JJtArdbtlv`f˂rXQJ`ےdrtAAJlb`vXnH~fZHAbr˂p|ZdQbtArdf~HnXv`p˂rbHAZdrtAbdQZ|nXv`fpvp˂rbHAZltbdQZ|vXnpZHAbJQtArdtlJnXv`fpvbHAZXQJ`ےbdQZ|JltH~fvpfr˂pے`JXQtArdtlJnXv`fpvbHAZXQJ`ےbdQZ|Jltf`v~vbے`ZdQbttlJ~HfXv`f˂rXQbHAZpdrtAJdQZ|vXn~f`HAbے˂pZZdQbtrd|~HfXv`f˂rXQbHAZpdrtAJdQZ|vXn~f`p`JXQrbtl|ZdQvnXv`f`ےbrXQJtbdQrtAJlpfH~XnvJXQrbے`lJtArdQbtvnX~Hfp`ےbrXQJtbdQrtAJlpfH~XnvJXQrbے`tArd~Hff~HAZp˂QJ`ے|drtbdQZf`vXfH~pZHAbXQr˂|ZdQJtArd`f~nXvZp˂ےbHA|drtbdQZf`vXfH~pZHAbXQr˂|ZdQJtArd~HfpJ`ےbHAZpJltQZ|dvpf`vXnے`JXQZHAbtlJ|ZdQbfpvf~HXQJ`ےp˂rJltdrtAf~HnXv`XQJ`ےp˂rdQtAJldrtAJvpfHbے`r˂p|ZdQbtArdf~HnXv`p˂rbHAZdrtAbdQZ|`vXnH~fZHAbr˂p|ZdQbtArdf~HnXv`p˂rbHAZdrtAbdQZ|Xnvpfے`JXQrlJttArZdpvn~HfJ`ے˂rXQltbdrtAJvpfHvXn`JXQrHAbےlJtAZdQbtpvn~HfJ`ے˂rXQltbdrtAJvpfHvXnr˂pl|ZdQbtlv`f~HfpHAZp˂`ےbZ|dtbdQf`vpfH~˂pZHAJXQrd|ZlJtArv`fvnXHAZp˂`ےbZ|dtbdQf`vpfH~˂pZHAJXQr|ZdQbpvnXv`frQJbHAZptAJl|drnvpf`vXے`JpZHAbbtl|ZdQHfpv`f~rXQJ`Zp˂tAJl|drnvpf`vXے`JpZHAbbtl|ZdQvnXbHAZp˂rXQbdQZ|rtAJlH~fvpfr˂pے`JXQtArdtlJnXv`fpvbHAZXQJ`ےbdQZ|Jltfpvf~HbHAZXQJ`ےtbdQl|d~f`JXQrZHAbtlJ|ZdQbfpvf~HXQJ`ےp˂rJltdrtAvpf`vXnے`JXQZHAbtlJ|ZdQbfpvf~HXQJ`ےp˂rJltdrtApfH~JXQHAb˂pZHAArd|QbtlXv`fpvnbHAZpJ`ےdQZ|ltb~f`vpfH˂pZ`JXQrrd|lJtAXv`fpvnbHAZpJ`ےdQZ|ltb~f`vpfHZHAbbtlJtArd~Hfpvnv`rXQJHAZp˂rtAJlZ|dXnvf`vbے`˂pZHAdQbtd|Z~Hfpv`frXQJHAZp˂rtAJlZ|dXnvf`vbے`˂pZHAtd|Xv`f~HfbHAZp˂rXtbdQZtAJlfH~nvpXQr˂ے`JJtArdbtlnXvHfpvےbHArXQJ`tbdQZtAJlfH~nvpXQr˂ے`JJtArdbtlv`f`ےbJ`ےrAJltbdQ`vXnH~fZHAbr˂p|ZdQbtArdf~HnXv`p˂rbHAZdrtAbdQZ|nXv`fpvp˂rbHAZZ|drtAJlvXnZAbے`JXQtArdtlJnXv`fpvbHAZXQJ`ےbdQZ|JltH~fvpfr˂pے`JXQtArdtlJnXv`fpvbHAZXQJ`ےbdQZ|Jltf`vے`Jb˂ZdQbJtArd~HfXv`f˂rXQbHAZpdrtAJdQZ|vXn~f`HAbے˂pZZdQbtrd|~HfXv`f˂rXQbHAZpdrtAJdQZ|vXn~f`ے`JXQJtArd|ZdQvnXf~H`ےbrXQJtbdQrtAJlpfH~XnvJXQrbے`lJtArdQbtvnX~Hfp`ےbrXQJtbdQrtAJlpfH~XnvJXQrbے`ZdQbt~Hfpvn˂rXQQJ`ے|drtbdQZf`vXfH~pZHAbXQr˂|ZdQJtArd`f~nXvZp˂ےbHA|drtbdQZf`vXfH~pZHAbXQr˂|ZdQJtArdnXvHAZp˂rXQJtbdQZ|AJvpf`vXnے`JXQZHAےtlJ|ZdQbfpvfHfXQJ`ےp˂rJltdtAJf~HnXv`XQJ`ےp˂rrtAJltbdQvp`v`JXQrr˂p|ZdQbtArdf~HnXv`p˂rbHAZdrtAbdQZ|`vXnH~fZHAbr˂p|ZdQbtArdf~HnXv`p˂rbHAZdrtAbdQZ|XnXQr˂pZHAbJtArd|Zdpvn~HfJ`ے˂rXQltbdrtAJvpfHvXn`JXQrHAbےlJtAZdQbtpvn~HfJ`ے˂rXQltbdrtAJvpfHvXnr˂p|lJbtlv`f~fpvHAZp˂`ےbZ|dtbdQf`vpfH~˂pZHAJXQrd|ZlJtArv`fvnXHAZp˂`ےbZ|dtbdQf`vpfH~˂pZHAJXQrlJtApvnXv`fJ`ےbHAZtAJl|dtAnvpf`vXے`JpZHAbtl|ZdQHfpv`fHrXQJ`Zp˂tAJl|dtAnvpf`vXے`JpZHAbtl|ZdQ`f~rXQJ`ےbZ|dltbH~fvpfr˂p`JXQrtArdtlJnXv`pvnbHAZXQJ`ےbdQZ|ltbfpvf~HbHAZXQJ`ےtbdQZ|`vXnv˂pZZHAbtlJ|ZdQbfpvf~HXQJ`ےp˂rJltdrtAvpf`vXnے`JXQZHAbtlJ|ZdQbfpvf~HXQJ`ےp˂rJltdrtAf`vXpZHAbے`J|ZdQQbtlXv`fpvnbHAZpJ`ےdQZ|ltb~f`vpfH˂pZ`JXQrrd|lJtAXv`fpvnbHAZpJ`ےdQZ|ltb~f`vpfHZHAXQrtArdJtAdQbfpvnXv`rXQJHAZp˂rtAJlZ|dXnvf`vbے`˂pZHAdQbtd|Z~Hfpv`frXQJHAZp˂rtAJlZ|dXnvf`vbے`˂pZHArd|XHfp~HfbHAZprXQJ`tbdQZJltfH~nvpXQr˂ے`JXQJtArdbtlnXvfpvےbHArXQJ`tbdQZJltfH~nvpXQr˂ے`JXQJtArdbtlHfpv`ےbHAZp˂rtAJlnvp`vXnے`JXQZHAbbtl|ZdQbfpvf~HrXQJ`p˂rJltdrtAnvp`vXnnXv`fpvp˂rbHAZZ|lXnvpfH~HAbے`JQrtArdtlJnXv`fpvbHAZXQJ`ےbdQZ|JltH~fvpfr˂pے`JXQtArdtlJnXv`fpvbHAZXQJ`ےbdQZ|Jltnvpے`JXQr˂btlJtArd~HfXv`f˂rXQbHAZpdrtAJdQZ|vXn~f`HAbے˂pZZdQbtrd|~HfXv`f˂rXQbHAZpdrtAJdQZ|vXn~f`˂pZ|ZdQbtlJnXv`ffpv`ےbrXQJtbdQtAJlpfH~XnvJXQrے`JlJtArdQbtvnXHfpv`ےbrXQJtbdQtAJlpfH~XnvJXQrے`JZdQbtvnXp`f˂rXQےJl|drbnvf`vXfے`JpZHAbrbt|ZdQJfpv`f~nrXQJZp˂ےJl|drbnvf`vXfے`JpZHAbrbt|ZdQJfpvnXvHAZp˂rXQJtbdQfHfvpfr˂pے`JXQJtAdtlJnXv`fpvےHAZXQJ`ےbdQZ|JltfHfvpff~HnXv`XQJ`ےp˂rtbdQZpfH~f`v`JXQrpZHAb|ZdQbtArdf~HnXv`p˂rbHAZdrtAbdQZ|`vXnH~fZHAbr˂p|ZdQbtArdf~HnXv`p˂rbHAZdrtAbdQZ|fH~XQrpZHAbJtArdZQbtpvnHfpJ`ے˂rXQltbdtAJlvpfHvXn`JXQrHAے`lJtAZdQbtpvnHfpJ`ے˂rXQltbdtAJlvpfHvXnHAbےtlJtArdf~HnrXQHAZp˂`ےJlZ|dtbnf`vpfے`˂pZHAXQrbtd|ZlJfpv`fnrXQHAZp˂`ےJlZ|dtbnf`vpfے`˂pZHAXQrbtl|Zv`f~HfpJbHAtbdQZtAJlpfHnvpXQr˂ے`JlJtAdbtlnXvHfpv`ےHArXQJ`tbdQZtAJlpfHnvpXQr˂ے`JlJtAdbtl~H`f~bHA`ےbZ|dr`vXnH~fZHAbr˂p|ZdQbtArdf~HnXv`p˂rbHAZdrtAbdQZ|`vXnH~ffpvf~HbHAZXQJ`ے|drf`pXnv˂pZAے`JtlJ|ZdQbfpvfHfXQJ`ےp˂rJltdtAJvpf`vXnے`JXQZHAےtlJ|ZdQbfpvfHfXQJ`ےp˂rJltdtAJf`vXے`JXQے`p|ZdQlJfXv`fvnrbHAZpJ`ےJdQZ|tbn~f`vpfے˂pZJXQrbrd|lJfXv`fvnrbHAZpJ`ےJdQZ|tbn~f`vpfے`JXQrtArd|ZdQbfpvJ`ےrXQJtbdQrtAJlvpfHXnvJXQrbے`lJtAdQbtvnX~HfpJ`ےrXQJtbdQrtAJlvpfHXnvJXQrbے`l|ZdQbt~HfpvnXZp˂|drtbdQZf`vXfH~pZHAbXQr˂|ZdQJtArd`f~nXvZp˂ےbHA|drtbdQZf`vXfH~pZHAbXQr˂|ZdQJtArdfpvHXv`Zp˂HAXQJ`AJtbvpf`vXnے`JXQZHAbtlJ|ZdQbfpvf~HXQJ`ےp˂rJltdrtAvpf`vXnnXv`fpvp˂rbHAZtAJlfH~pfHXb`JXXQr˂tArdtlJnXv`pvnbHAZXQJ`ےbdQZ|ltbH~fvpfr˂p`JXQrtArdtlJnXv`pvnbHAZXQJ`ےbdQZ|ltbnvpr˂pZHAbbtJApvn~HfXQJ`ے˂rXQltbdrtAJvpfvXn`JXQrHAbےtlJZdQbtpvn~HfXQJ`ے˂rXQltbdrtAJvpfvXn`JXQHA˂pZ|ZdQtAtlJnXv`HAZp˂`ےbZ|dtbdQf`vpfH~˂pZHAJXQrd|ZlJtArv`fvnXHAZp˂`ےbZ|dtbdQf`vpfH~˂pZHAJXQrdQbtlJtArvnXv`pvrXQJ`tAJl|drnvpf`vXے`JpZHAbbtl|ZdQHfpv`f~rXQJ`Zp˂tAJl|drnvpf`vXے`JpZHAbbtl|ZdQnXv`f~HrXQJ`ےJldQZ|H~fvpfr˂pے`JXQtArdtlJnXv`fpvbHAZXQJ`ےbdQZ|JltH~fvpff~HnXv`XQJ`ےp˂rtbdQZf`vXnvpQr˂ppZHAb|ZdQbfpvf~HrXQJ`p˂rJltdrtAnvp`vXnے`JXQZHAbbtl|ZdQbfpvf~HrXQJ`p˂rJltdrtAnvp`vXnZHAbے`JXQrd|Xv`fpvnHAZpJ`ےdQZ|ltbHf`vpfH˂pZ`JXQrtAd|lJtAXv`fpvnHAZpJ`ےdQZ|ltbHf`vpfHbے`HAbrd|tArdtf~fvrXQJHAZp˂rtAJlZ|dXnvf`vbے`˂pZHAdQbtd|Z~Hfpv`frXQJHAZp˂rtAJlZ|dXnvf`vbے`˂pZHAlJtArd|Zv`pvnrXQbHAtbdQZtAJlfH~nvpXQr˂ے`JJtArdbtlnXvHfpvےbHArXQJ`tbdQZtAJlfH~nvpXQr˂ے`JJtArdbtlf~HfpvےbHAtbQZddrtAJ`vXnH~fZHAbr˂p|ZdQbtArdf~HnXv`p˂rbHAZdrtAbdQZ|`vXnH~ffpvf~HbHAZXQJ`ے|dtnvpfH~ZHAbJAdtlJnXv`fpvےHAZXQJ`ےbdQZ|JltfHfvpfr˂pے`JXQJtAdtlJnXv`fpvےHAZXQJ`ےbdQZ|Jlt`vXnvpfے`JXQr˂pZdQbt琕~HfXv`f˂rXQbHAZpdrtAJdQZ|vXn~f`HAbے˂pZZdQbtrd|~HfXv`f˂rXQbHAZpdrtAJdQZ|vXn~f`JXQr˂pZHAZdQbtlJfnXv`ےbrXQJtbdQrtAJlpfH~XnvJXQrbے`lJtArdQbtvnX~Hfp`ےbrXQJtbdQrtAJlpfH~XnvJXQrbے`d|ldQbt璀nXvJ`AZZp˂|drtbdQZf`vXfH~pZHAbXQr˂|ZdQJtArd`f~nXvZp˂ےbHA|drtbdQZf`vXfH~pZHAbXQr˂|ZdQJtArdfpvnXv`Zp˂rtAJlltbvpf`vXnے`JXQZHAbtlJ|ZdQbfpvf~HXQJ`ےp˂rJltdrtAvpf`vXnnXv`fpvp˂rbHAZbdQZ|fH~f`vXے`JX|ZdQbtArdf~HnXv`p˂rbHAZdrtAbdQZ|`vXnH~fZHAbr˂p|ZdQbtArdf~HnXv`p˂rbHAZdrtAbdQZ|vpfH~fr˂p`JXQrlJtApvn~HfJ`ے˂rXQltbdrtAJvpfHvXn`JXQrHAbےlJtAZdQbtpvn~HfJ`ے˂rXQltbdrtAJvpfHvXn˂pZHAbے`lJtApvn`f~HAZp˂`ےbZ|dtbdQf`vpfH~˂pZHAJXQrd|ZlJtArv`fvnXHAZp˂`ےbZ|dtbdQf`vpfH~˂pZHAJXQrJtArdlJtAdQ`f~p˂rrXQJ`tAJl|drnvpf`vXے`JpZHAbbtl|ZdQHfpv`f~rXQJ`Zp˂tAJl|drnvpf`vXے`JpZHAbbtl|ZdQnXHff~HrXQHAZtbddQZ|H~fvpfr˂pے`JXQtArdtlJnXv`fpvbHAZXQJ`ےbdQZ|JltH~fvpff~HnXv`XQJ`ےp˂rdrtAf`vXnvpQr˂ptlJ|ZdQbfpvf~HXQJ`ےp˂rJltdrtAvpf`vXnے`JXQZHAbtlJ|ZdQbfpvf~HXQJ`ےp˂rJltdrtAH~f`vXn`JXQrbtlrd|Xv`fpvnbHAZpJ`ےdQZ|ltb~f`vpfH˂pZ`JXQrrd|lJtAXv`fpvnbHAZpJ`ےdQZ|ltb~f`vpfHbے`JXQrrd|vf~HHfpvrXQJHAZp˂rtAJlZ|dXnvf`vbے`˂pZHAdQbtd|Z~Hfpv`frXQJHAZp˂rtAJlZ|dXnvf`vbے`˂pZHA|ZdQbtlHfpvXQJ`ےbAZp˂tbdQZtAJlfH~nvpXQr˂ے`JJtArdbtlnXvHfpvےbHArXQJ`tbdQZtAJlfH~nvpXQr˂ے`JJtArdbtlpvnfp`fp˂rQZ|ddrtAJ`vXnH~fZHAbr˂p|ZdQbtArdf~HnXv`p˂rbHAZdrtAbdQZ|`vXnH~ffpvf~HbHAZXQJ`ےJltH~ffH~ZHAbtArdtlJnXv`fpvbHAZXQJ`ےbdQZ|JltH~fvpfr˂pے`JXQtArdtlJnXv`fpvbHAZXQJ`ےbdQZ|Jlt`pfHvpf˂pZJA|ZZdQbt琕~HfXv`f˂rXQbHAZpdrtAJdQZ|vXn~f`HAbے˂pZZdQbtrd|~HfXv`f˂rXQbHAZpdrtAJdQZ|vXn~f`JXQr˂pZHAZdQbtfpvnXv`ےbrXQJtbdQrtAJlpfH~XnvJXQrbے`lJtArdQbtvnX~Hfp`ےbrXQJtbdQrtAJlpfH~XnvJXQrbے`btlJtArdnXvbHAZrXQJ|drtbdQZf`vXfH~pZHAbXQr˂|ZdQJtArd`f~nXvZp˂ےbHA|drtbdQZf`vXfH~pZHAbXQr˂|ZdQJtArdXv`f~HfXQJ`ےrtAJlbdQZ|vpf`vXnے`JXQZHAbtlJ|ZdQbfpvf~HXQJ`ےp˂rJltdrtAvpf`vXnnXv`fpvp˂rJltbdQZ|`vXnvpfJXQr|ZdQbtArdf~HnXv`p˂rbHAZdrtAbdQZ|`vXnH~fZHAbr˂p|ZdQbtArdf~HnXv`p˂rbHAZdrtAbdQZ|~f`HXnHAbےdQbt璒lJArpvn~HfJ`ے˂rXQltbdrtAJvpfHvXn`JXQrHAbےlJtAZdQbtpvn~HfJ`ے˂rXQltbdrtAJvpfHvXnے`Jbے`d|ZnXv``f~HAZp˂`ےbZ|dtbdQf`vpfH~˂pZHAJXQrd|ZlJtArv`fvnXHAZp˂`ےbZ|dtbdQf`vpfH~˂pZHAJXQrJtArd|ZdQ`fprQJ``ےbtAJl|drnvpf`vXے`JpZHAbbtl|ZdQHfpv`f~rXQJ`Zp˂tAJl|drnvpf`vXے`JpZHAbbtl|ZdQ~HfpvnbHAZtbddrtH~fvpfr˂pے`JXQtArdtlJnXv`fpvbHAZXQJ`ےbdQZ|JltH~fvpff~HnXv`XQJ`ےdrtAJdrtAvpfے`JXQ˂pZHAtlJ|ZdQbfpvf~HXQJ`ےp˂rJltdrtAvpf`vXnے`JXQZHAbtlJ|ZdQbfpvf~HXQJ`ےp˂rJltdrtAvXnvpfH`JXQrlJtAr|ZdQbXv`fpvnbHAZpJ`ےdQZ|ltb~f`vpfH˂pZ`JXQrrd|lJtAXv`fpvnbHAZpJ`ےdQZ|ltb~f`vpfHXQr˂pZHAbdQbt璍f~HHfvnXrXQJHAZp˂rtAJlZ|dXnvf`vbے`˂pZHAdQbtd|Z~Hfpv`frXQJHAZp˂rtAJlZ|dXnvf`vbے`˂pZHA|ZdQbtlnXv`ےbHHAZp˂tbdQZtAJlfH~nvpXQr˂ے`JJtArdbtlnXvHfpvےbHArXQJ`tbdQZtAJlfH~nvpXQr˂ے`JJtArdbtlpvnXv`pp˂rQZrtAAJlt`vXnH~fZHAbr˂p|ZdQbtArdf~HnXv`p˂rbHAZdrtAbdQZ|`vXnH~ffpvp˂rbHAZltbdQZ|H~frZHAbے`tArdtlJnXv`fpvbHAZXQJ`ےbdQZ|JltH~fvpfr˂pے`JXQtArdtlJnXv`fpvbHAZXQJ`ےbdQZ|JltvpfH~f`˂pZd|ZQtlJ~HfXv`f˂rXQbHAZpdrtAJdQZ|vXn~f`HAbے˂pZZdQbtrd|~HfXv`f˂rXQbHAZpdrtAJdQZ|vXn~f`pZHAbے`JlJtArfpvv`f`ےbrXQJtbdQrtAJlpfH~XnvJXQrbے`lJtArdQbtvnX~Hfp`ےbrXQJtbdQrtAJlpfH~XnvJXQrbے`tArdJtArdf~HAZp˂rXQJ|drtbdQZf`vXfH~pZHAbXQr˂|ZdQJtArd`f~nXvZp˂ےbHA|drtbdQZf`vXfH~pZHAbXQr˂|ZdQJtArdXv`pvnrXQJ`pJltbdQZ|vpf`vXnے`JXQZHAbtlJ|ZdQbfpvf~HXQJ`ےp˂rJltdrtAvpf`vXnnXv`XQJ`ےp˂rdQZ|drtAJ`vXnbے`JXQr|ZdQbtArdf~HnXv`p˂rbHAZdrtAbdQZ|`vXnH~fZHAbr˂p|ZdQbtArdf~HnXv`p˂rbHAZdrtAbdQZ|~f`vXnHAXQrblJttArdpvn~HfJ`ے˂rXQltbdrtAJvpfHvXn`JXQrHAbےlJtAZdQbtpvn~HfJ`ے˂rXQltbdrtAJvpfHvXnے`JXQr˂d|ZnXvf~HfpHAZp˂`ےbZ|dtbdQf`vpfH~˂pZHAJXQrd|ZlJtArv`fvnXHAZp˂`ےbZ|dtbdQf`vpfH~˂pZHAJXQr|ZdQbtlJfpvrXQJ``ےbAtAJl|drnvpf`vXے`JpZHAbbtl|ZdQHfpv`f~rXQJ`Zp˂tAJl|drnvpf`vXے`JpZHAbbtl|ZdQvnXXQJ`p˂rXQbdQZ|drtH~fvpfr˂pے`JXQtArdtlJnXv`fpvbHAZXQJ`ےbdQZ|JltH~fvpfH~fZHAbr˂p|ZdQbtArdf~HnXv`bHAZp˂rXQdtbdQnvpfHH~f`JXQrHAbےlJtAZdQbtpvn~HfJ`ے˂rXQltbdrtAJvpfHvXnJXQr˂p`ZQXb㉀ەvˍpf`vXndrQt`vXnے`JXQZHAbtlJ|ZdQbfpvf~H˂bJ`ےZ|d~f``vXn˂pZ`JXQrrd|lJtAXv`fpvnbHAZpJ`ےdQZ|ltb~f`vpfH˂p`JQXb㉀ۑpJAHrH~ㅐfەvˍpfJltvpfr˂pے`JXQtArdtlJnXv`fpvHAZp˂bHAXQJrtAJlvXnvpfHAbے˂pZZdQbtrd|~HfXv`f˂rXQbHAZpdrtAJdQZ|vXn~f`XQr˂pJAHr󙐂ˁ`Z`vXnH~ㅐfbAdZ|H~fZHAbr˂p|ZdQbtArdf~HnXv`rXQJ`ےJltbdQvpfHH~fvX`JXQrHAbےlJtAZdQbtpvn~HfJ`ے˂rXQltbdrtAJvpfHvXnpZHAbˁ`pQXb㉀ەvˍpf`vXndrQt`vXnے`JXQZHAbtlJ|ZdQbfpvf~H`ےbtdrZ|d~f`nvp˂pZ`JXQrrd|lJtAXv`fpvnbHAZpJ`ےdQZ|ltb~f`vpfHے`JJAHr󙐑pJAHQXH~ㅐfەvˍp|Jltvpfr˂pے`JXQtArdtlJnXv`fpvHAZp˂tAJlrtAdQZvXnvfH~HAbے˂pZZdQbtrd|~HfXv`f˂rXQbHAZpdrtAJdQZ|vXn~f`XQr˂ˁ`ZQXb㉀ۑp`vXndrQtbAdZ|H~fZHAbr˂p|ZdQbtArdf~HnXv`rXQHAtbdQZ|drfH~f`vX`JXQrHAbےlJtAZdQbtpvn~HfJ`ے˂rXQltbdrtAJvpfHvXnpZHAXQb㉀ۑpJAHr󙐕vˍpfJltdrQt`vXnے`JXQZHAbtlJ|ZdQbfpvf~HZp˂|drtAJlf`vXnvp˂pZ`JXQrrd|lJtAXv`fpvnbHAZpJ`ےdQZ|ltb~f`vpfHr˂pJAHr󙐂ˁ`ZQXH~ㅐfbAdZ|Jltvpfr˂pے`JXQtArdtlJnXv`fpvrXQJ`tAJltbdQZnvpfH~HAbے˂pZZdQbtrd|~HfXv`f˂rXQbHAZpdrtAJdQZ|vXn~f`ZHAbˁ`ZQXb㉀ۑp`vXndrQtbAdZ|H~fZHAbr˂p|ZdQbtArdf~HnXv`ےbHAtbdQtA|drfH~fvn`JXQrHAے`lJtAZdQbtpvnHfpJ`ے˂rXQltbdtAJlvpfHvXnے`JXQAHr󙐂JAHfەvˍpfJltdrQt`vXnے`JXQZHAےtlJ|ZdQbfpvfHfZp˂JlttAJl|f`vXvpfے˂pZJXQrbrd|lJfXv`fvnrbHAZpJ`ےJdQZ|tbn~f`vpfZr˂p`ZQXb`vXnH~ㅐfbAdZ|Jltvpfr˂p`JXQrtArdtlJnXv`pvnrXQJ`bdQZ|drtAnvf`JXQrHAbےtlJZdQbtpvn~HfXQJ`ے˂rXQltbdrtAJvpfvXnHAbےZHAbۑpJvˍpf`vXndrQtbAdZ|ے`JXQZHAbbtl|ZdQbfpvf~HrXQJ`p˂rdrtAJlt~f`˂pZ`JXQrtAd|lJtAXv`fpvnHAZpJ`ےdQZ|ltbHf`vpfH`JXQr˂pZAHr󙐂˕H~ㅐfەvˍpfJltdrQtr˂pے`JXQJtAdtlJnXv`fpvp˂rXQJ`ےJltbdQZ|vXnHAbے˂pZZdQbtrd|~HfXv`f˂rXQbHAZpdrtAJdQZ|vXn~f`˂pZHAbے`ZQXb`vXnH~ㅐfbAdZ|JltZHAbr˂p|ZdQbtArdf~HnXv`XQJ`ےbHAZbdQZ|ltbvpfH`JXQrHAbےlJtAZdQbtpvn~HfJ`ے˂rXQltbdrtAJvpfHvXnHAbے`JXQrˁ`vˍpf`vXndrQtbAdZ|ے`JXQZHAbtlJ|ZdQbfpvf~HbHAZp˂rltbnvp~f`˂pZ`JXQrrd|lJtAXv`fpvnbHAZpJ`ےdQZ|ltb~f`vpfH`JXQr˂pZZQXb㉀H~ㅐfەvˍpfJltdrQtr˂pے`JXQtArdtlJnXv`fpvp`ےXQJ`ےdQZ|ff`vvXnHAbے˂pZZdQbtrd|~HfXv`f˂rXQbHAZpdrtAJdQZ|vXn~f`ے`HAbےۑpJAH`vXnH~ㅐfbAdZ|JltZHAbr˂p|ZdQbtArdf~HnXv`bHAZprXQdrtAJXnvvpf~f`JXQrHAbےlJtAZdQbtpvn~HfJ`ے˂rXQltbdrtAJvpfHvXnJXQr`pZHAr󙐂ˁ`vˍpf`vXndrQtbAdZ|ے`JXQZHAbtlJ|ZdQbfpvf~H˂rXQJ`ےltbpfH~`vXn˂pZ`JXQrrd|lJtAXv`fpvnbHAZpJ`ےdQZ|ltb~f`vpfH˂pZHAbے`ZQXb㉀H~ㅐfەvˍpfJltdrQtr˂pے`JXQtArdtlJnXv`fpvJ`ےbHAZpdQZ|f`vvpfHAbے˂pZZdQbtrd|~HfXv`f˂rXQbHAZpdrtAJdQZ|vXn~f`bے`JXQrۑp`Z`vXnH~ㅐfbAdZ|Jlt \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv36_2.dat b/mpdf/qrcode/data/qrv36_2.dat deleted file mode 100644 index 0687c2b..0000000 --- a/mpdf/qrcode/data/qrv36_2.dat +++ /dev/null @@ -1,321 +0,0 @@ -~}~}~}~}zyzyzyzyvuvuvuvutstststspopopopo~}~}~}~}zyzyzyzyvuvuvuvutstststspopopopo~}}}}}}~zyzyzyzyvuvuvuvutstststspopopopolklklklk}~}~}~}~zyzyzyzyvuvuvuvutstststspopopopolklklklk}~}~}~}~zyzyzyzyvuvuvuvutstststspopopopolklklklk}~}~}~}~zyzyzyzyvuvuvuvutstststspopopopolklklklk}~}~}~}~zyzyzyzyvuvuvuvutstststspopopopolklklklk}~}~}~}~zyzyzyzyvuvuvuvutstststspopopopolklklklk}}}}}}~}zyzyzyzyvuvuvuvutstststspopopopolklklklk~}~}~}|{zyzyzyzyvuvuvuvutstststspopopopolklklklk|{|{|{|{zyzyzyzyvuvuvuvutstststspopopopolklklklk|{|{|{|{zyzyzyzyvuvuvuvutststsrqpopopopolklklklk|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrqpopopopolklklklk|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrqpopopopolklklklk|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrqpopopopolklklklk|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrqpopopopolklklklk|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrqpopopopolklklklk|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrqpopopopolklklklk|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrqpopopopolklklklk|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrqpopopopolklklklk|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrqpopopopolklklklk|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrqpopopopolklklklk|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrqpopopopolklklklk|{|{|{|{zyzyzyxwvuvuvuvurqrqrqrqpopopopolklklklk|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqpopopopolklklklk|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqpopoponmlklklklk|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmlklklklk|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmlklklklk|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmlklklklk|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmlklklklk|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmlklklklk|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmlklklklk|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmlklklklk|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmlklklklk|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmlklklklk|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmlklklklk|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmlklklklk|{|{|{|{xwxwxwxwvuvuvutsrqrqrqrqnmnmnmnmlklklklk|{|{|{|{xwxwxwxwtstststsrqrqrqrqnmnmnmnmlklklklk|{|{|{|{xwxwxwxwtstststsrqrqrqrqnmnmnmnmlklklklk~}~}~}~}|{|{|{|{xwxwxwxwtstststsrqrqrqrqnmnmnmnmlklklklk}}}}~}~}|{|{|{|{xwxwxwxwtstststsrqrqrqrqnmnmnmnmlklklkji~}~}~}~}|{|{|{|{xwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijiji~}~}~}~}|{|{|{|{xwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijiji~}~}~}}}|{|{|{|{xwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijiji}}}~}~}~|{|{|{|{xwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijiji}~}~}~}~|{|{|{|{xwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijiji}~}~}~}~|{|{|{|{xwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijiji}~}~}~}~|{|{|{|{xwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijiji}~}~}~}~|{|{|{zyxwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijiji}~}~}}}}zyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijiji}}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqponmnmnmnmjijijiji~}~}~}~}zyzyzyzyxwxwxwxwtstststspopopoponmnmnmnmjijijiji~}~}~}~}zyzyzyzyxwxwxwxwtstststspopopoponmnmnmnmjijijiji~}~}~}~}zyzyzyzyxwxwxwxwtstststspopopoponmnmnmnmjijijiji~}~}~}~}zyzyzyzyxwxwxwxwtstststspopopoponmnmnmnmjijijiji~}~}}}}}zyzyzyzyxwxwxwxwtstststspopopoponmnmnmnmjijijiji}~}~}~}~zyzyzyzyxwxwxwxwtstststspopopoponmnmnmnmjijijiji}~}~}~}~zyzyzyzyxwxwxwxwtstststspopopoponmnmnmnmjijijiji}~}~}~}~zyzyzyzyxwxwxwxwtstststspopopoponmnmnmnmjijijiji}~}~}~}~zyzyzyzyxwxwxwxwtstststspopopoponmnmnmnmjijijiji}~}~}~}~zyzyzyzyxwxwxwxwtstststspopopoponmnmnmnmjijijiji}~}}}}}}zyzyzyzyxwxwxwxwtstststspopopoponmnmnmnmjijijiji~}~}~}~}zyzyzyzyxwxwxwvutstststspopopoponmnmnmnmjijijiji~}~}~}~}zyzyzyzyvuvuvuvutstststspopopoponmnmnmnmjijijiji~}~}~}~}zyzyzyzyvuvuvuvutstststspopopoponmnmnmlkjijijijijijijijifefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMIIIIIJIJFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#"!"!"!"! - - - - jijijijifefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMIJIJIJIJFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#"!"!"!"! - - - - jijijijifefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMIJIJIJIJFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#"!"!"!"! - - - jijijijifefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMIJIJIJIJFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#"!"!"!"! jijijijifefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMIJIJIJIJFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;:9:9:9:96565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"! jijijijifefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMIJIJIJIIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;:9:9:9:96565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"! jijijijifefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMIIIIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;:9:9:9:96565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#     jijijijifefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEDCBABABA@?@?@?@?<;<;<;<;:9:9:9:96565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#     jijijijifefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:96565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#     jijijijifefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:98787876565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#     jijijijifefefefebabababa^]^]^]^]\[\[ZYZYXWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;878787876565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#     jijijijifefefefebabababa^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMJIJIJIIIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;878787876565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#     jijijijifefefedcbabababa^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSRQRQPOPONMNMNMNMIIIJIJIJFEFEFEFEBABABABA@?@?@?@?<;<;<;<;878787876565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#     jijijijidcdcdcccbabababa^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPONMNMNMNMIJIJIJIJFEFEFEFEBABABABA@?@?@?@?<;<;<;<;878787876565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#     jijijijicccdcdcdbabababa^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPONMNMNMNMIJIJIJIJFEFEFEFEBABABABA@?@?@?@?<;<;<;<;878787876565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#     jijijihgcdcdcdcdbabababa^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPONMNMNMNMIJIJIJIJFEFEFEFEBABABABA@?@?@?@?<;<;<;<;878787876565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#        hghghghgcdcdcdcdbabababa^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPONMNMNMNMIJIJIJIJFEFEFEFEBABABABA@?@?@?@?<;<;<;<;878787876565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#        hghghghgcdcdcdcdbabababa^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPONMNMNMNMIJIJIIIIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;878787876565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#        hghghghgcdcdcdcdbabababa^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKIIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;878787876565656521212121.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#        hghghghgcdcdccccbabababa^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKJIHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;878787876565656521212121.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#        hghghghgccdcdcdcbabababa^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;8787878765656565210/0/0/.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#        hghghghgdcdcdcdcbabababa^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?>=>=>=<;<;<;<;87878787656565650//////0.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#        hghghghgdcdcdcdcbaba`_`_^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=<;<;<;<;8787878765656565/0/0/0/0.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#        hghghghgdcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=<;<;<;<;8787878765434343/0/0/0/0.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#        hghghghgdcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYXWXWVUVUTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=<;<;<;<;8787878743434343/0/0/0/0.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#        hghghghgdcdccccc`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=<;<;<;<;8787878743434343/0/0/0/0.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#        hghghghgcdcdcdcd`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=<;<;<;<;8787878743434343/0/0/0/0.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#        hghghghgcdcdcdcd`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=<;<;<;<;8787878743434343//////0/.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#        hghghghgcdcdcdcd`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=<;<;<;<;87878787434343430/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#        - hghghghgcdcdcdcd`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=<;<;<;<;87878787434343430/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#        - - - - hghghghgcdcdcdcd`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=<;<;<;<;87878787434343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        - - - - hghghghgcdcccccc`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=<;<;<;<;87878787434343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        - - - - hghghghgdcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=<;<;<;<;87878787434343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!        - - - - hghghghgdcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGFEDCDCDCBABABABA>=>=>=>=<;<;<;<;8787878743434343/////0/0,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!        - - - - hghghghgdcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;8787878743434343/0/0/0/0,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!        - - - - hghghghgdcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;:9:9:98787878743434343/0/0/0/0,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!        - - - - hghghghgdcdcdcdc`_`_`_`_^]^]\[\[ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:98787878743434343/0/0/0/0,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!        - - - - hghghghgdccccccd`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:98787878743434343/0/0/0/0,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!        - - - - hghghghgcdcdcdcd`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUTSTSRQRQPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:98787878743434343/0/0/0//,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!        - - - - hghghghgcdcdcdcd`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:98787878743434343////0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!        - - - - hghghghgcdcdcdcd`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:987878787434343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!        - - - - hghghghgcdcdcdcd`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:987878787434343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!        - - - - hghghghgcdcdcdcd`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:987878787434343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!        - - - - hghghghgccccccdc`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:987878787434343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!        - - - - hghghghgdcdcdcdc`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:987878787434343430/0/0///,+,+,+,+('('('('&%&%&%&%"!"!"!"!        - - - - hghghghgdcdcdcdc`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:98787878743434343///0/0/0,+,+,+,+('('('('&%&%&%&%"!"!"!"!        - - - - hghghghgdcdcdcdc`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:98787878743434343/0/0/0/0,+,+,+,+('('('('&%&%&%&%"!"!"!"!    - - - - hgfefefeccccdcdc`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDCBA@?@?@?>=>=>=>=:9:9:9:98787878743434343/0/0/0/0,+,+,+,+('('('('&%&%&%&%"!"!"!"!    - - - - fefefefedcdcbaba`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:98787878743434343/0/0/0/0,+,+,+,+('('('('&%&%&%&%"!"!"!"!    - - - - fefefefebabababa`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQPOPOPOPOLKLKJIJIHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:98765656543434343/0/0/0/0,+,+,+,+('('('('&%&%&%&%"!"!"!"!    - - - - fefefefebabababa`_`_`_`_\[\[\[\[ZYZYXWXWVUVUVUVURQRQRQRQPOPOPOPOJIJIIIIIHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:96565656543434343/0/0////,+,+,+,+('('('('&%&%&%&%"!"!"!"!    - - - - fefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQPOPOPOPOJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:96565656543434343//0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"!    - - - - fefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQPOPONMNMJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565434343430/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"!    - - - - fefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565434343430/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"!    - - - - fefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMJIIIIIIJHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565434343210/0/////,+,+,+,+('('('('&%&%&%&%"!"!"!"!   - - - - fefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMIJIJIJIJHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"! - - - - fefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMIJIJIJIJHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"! - - - - fefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMIJIJIJIJHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"! - - - - fefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMIJIJIJIJHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#"!"!"!"! - - - - fefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMIJIJIJIJHGFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#"!"!"!"! - - - - fefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMIIIIIIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#"!"!"!"! - - - - fefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=<;<;<;:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#"!"!"!"! - - - - fefefefebabababa`_`_^]^]\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#"!"!"!"! - - - - fefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#"!"!"!"! - - - - fefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWVUVUTSTSRQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#"!"!"!"! - - - - fefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#"!"!"!"! - - - - yyzz{{||mmnnoopp55667788<<;;::99ttssrrqquuvvwwxxuuvvwwxxBBCCDDEE - - //..--,,ggffeedd}}~~qqrrsstt99::;;<<88776655ppoonnmmyyzz{{||yyzz{{||FFGGHHII++**))((ccbbaa``uuvvwwxx==>>??@@44332211llkkjjii}}}}~JJKKLLMM''&&%%$$__^^]]\\yyzz{{||AABBCCDD - - 00//..--hhggffeeNNOOPPQQ##""!! [[ZZYYXX}}~~EEFFGGHH ,,++**))ddccbbaaRRSSTTUUWWVVUUTTIIJJKKLL((''&&%%``__^^]]VVWWXXYY !!SSRRQQPPMMNNOOPP$$##""!!\\[[ZZYYZZ[[\\]]""##$$%%OONNMMLLQQRRSSTT XXWWVVUU^^__``aa&&''(())KKJJIIHH~~}}UUVVWWXX TTSSRRQQbbccddee**++,,-- GGFFEEDD||{{zzyyYYZZ[[\\!!""##$$PPOONNMMffgghhii..//0011 - - CCBBAA@@xxwwvvuu]]^^__``%%&&''((LLKKJJIIjjkkllmm22334455??>>==<<~~}}||ttssrrqqaabbccdd))**++,, HHGGFFEE~~}}nnooppqq66778899;;::9988{{zzyyxxppoonnmm~}}||eeffgghh--..//00 - - DDCCBBAA||{{zzyyrrssttuu::;;<<==77665544wwvvuuttllkkjjii{{zzyyxxiijjkkll11223344@@??>>==xxwwvvuuvvwwxxyy>>??@@AA 33221100ssrrqqpphhggffeewwvvuuttmmnnoopp55667788<<;;::99ttssrrqq}}zz{{||}}BBCCDDEE - - //..--,,oonnmmllddccbbaassrrqqppqqrrsstt99::;;<<88776655ppoonnmm||{{zzyy~~FFGGHHII++**))((kkjjiihh``__^^]]}}||{{oonnmmlluuvvwwxx==>>??@@44332211llkkjjiixxwwvvuuJJKKLLMM''&&%%$$ggffeedd\\[[ZZYYzzyyxxwwkkjjiihgyyzz{{||AABBCCDD - - 00//..--hhggffeettssrrqqNNOOPPQQ##""!! ccbbaa``XXWWVVUUvvuuttssfedccbba}}~~EEFFGGHH ,,++**))ddccbbaappoonnmm~~}}||RRSSTTUU__^^]]\\TTSSRRQQrrqqppooa``__^^]IIJJKKLL((''&&%%``__^^]]llkkjjii{{zzyyxxVVWWXXYY !![[ZZYYXXPPOONNMMnnmmllkk]\\[[ZZYMMNNOOPP$$##""!!\\[[ZZYYccbbaa``wwvvuuttZZ[[\\]]""##$$%%WWVVUUTTLLKKJJIIjjiiccbbYXXWWVVU~~}}QQRRSSTT XXWWVVUU__^^]]\\ssrrqqpp^^__``aa&&''(())SSRRQQPPHHGGFFEEaa``__^^UTTSSRRQ||{{zzyyUUVVWWXX TTSSRRQQ[[ZZYYXXoonnmmllbbccddee**++,,-- OONNMMLLDDCCBBAA]]\\[[ZZQPPOONMLxxwwvvuuYYZZ[[\\!!""##$$PPOONNMMWWVVUUTTkkjjiihhffgghhii..//0011 - - KKJJIIHH@@??>>==YYXXWWVVKJIIHHGGttssrrqq]]^^__``%%&&''((LLKKJJIISSRRQQPPggffeeddjjkkllmm22334455GGFFEEDD<<;;::99UUTTSSRRFFEEDDCCppoonnmmaabbccdd))**++,, HHGGFFEEOOIIHHGGccbbaa``nnooppqq66778899CCBBAA@@88776655QQPPOOIIBBAA@@??llkkjjiieeffgghh--..//00 - - DDCCBBAAFFEEDDCC__^^]]\\rrssttuu::;;<<==??>>==<<44332211HHGGFFEE>>==<<;;hhggffeeiijjkkll11223344@@??>>==BBAA@@??[[ZZYYXXvvwwxxyy>>??@@AA ;;::998800//..--DDCCBBAA::998877ddccbbaammnnoopp55667788<<;;::99>>==<<;;WWVVUUTTzz{{||}}BBCCDDEE - - 77665544,,++**))@@??>>==66554321``__^^]]qqrrsstt99::;;<<88776655::998877SSRRQQPP~~FFGGHHII33221100((''&&%%<<;;::990//..--,\\[[ZZYYuuvvwwxx==>>??@@443322116655//..OONNMMLLJJKKLLMM//..--,,$$##""!!88776655,++**))(XXWWVVUUyyzz{{||AABBCCDD - - 00//..----,,++**KKJJIIHHNNOOPPQQ++**))(( //..--,,(''&&%%$TTSSRRQQ}}~~EEFFGGHH ,,++**))))((''&&GGFFEEDD~~}}||RRSSTTUU''&&%%$$++**))(($##""!! PPOONNMMIIJJKKLL((''&&%%%%$$##""CCBBAA@@{{zzyyxxVVWWXXYY !!##""!! ''&&%%$$ LLKKJJIIMMNNOOPP$$##""!!!! ??>>==<>==xxwwvvuuYYZZ[[\\!!""##$$ 33221100kkjjiihhffgghhii..//0011 - -  - -<<;;::99ttssrrqq]]^^__``%%&&''(( - - //..--,,ggffeeddjjkkllmm22334455  88776655ppoonnmmaabbccdd))**++,, ++**))((ccbbaa``nnooppqq66778899 - -  - - - -44332211llkkjjiieeffgghh--..//00 - - ''&&%%$$__^^]]\\rrssttuu::;;<<==  - - 00//..--hhggffeeiijjkkll11223344 - -##""!! [[ZZYYXXvvwwxxyy>>??@@AA ,,++**))ddccbbaammnnoopp55667788 WWVVUUTTzz{{||}}BBCCDDEE ((''&&%%``__^^]]qqrrsstt99::;;<<SSRRQQPP~~FFGGHHII !!""##$$$$##""!!\\[[ZZYYuuvvwwxx==>>??@@ - - OONNMMLLJJKKLLMM - - %%&&''(( !!""## XXWWVVUUyyzz{{||AABBCCDD KKJJIIHHNNOOPPQQ))**++,,$$%%&&'' TTSSRRQQ}}~~EEFFGGHH ! GGFFEEDD~~}}||RRSSTTUU--..//00(())**++!!""##$$PPOONNMMIIJJKKLL!""##$$% - - CCBBAA@@{{zzyyxxVVWWXXYY11223344,,--..//%%&&''((LLKKJJIIMMNNOOPP !!%&&''(()??>>==<>??@@==>>??@@11223344@@??>>==xxwwvvuuYYZZ[[\\**++,,--34556677 33221100kkjjiihhffgghhii&&''(())AABBCCDDAABBCCDD55667788<<;;::99ttssrrqq]]^^__``..//55668899::;; - - //..--,,ggffeeddjjkkllmm**++,,--EEFFGGHHEEFFGGHH99::;;<<88776655ppoonnmmaabbccdd778899::<<==>>??++**))((ccbbaa``nnooppqq..//0011IIJJKKLLIIOOPPQQ==>>??@@44332211llkkjjiieeffgghh;;<<==>>@@AABBCC''&&%%$$__^^]]\\rrssttuu22334455MMNNOOPPRRSSTTUUAABBCCDD - - 00//..--hhggffeeiijjkkll??@@AABBDDEEFFGG##""!! [[ZZYYXXvvwwxxyy66778899QQRRSSTTVVWWXXYYEEFFGGHH ,,++**))ddccbbaammnnooppCCDDEEFFHHIIJKLMWWVVUUTTzz{{||}}::;;<<==UUVVWWXXZZ[[\\]]IIJJKKLL((''&&%%``__^^]]qqrrssttGGHHIIOONOOPPQQR !!SSRRQQPP~~>>??@@AAYYZZ[[\\^^__``aaMMNNOOPP$$##""!!\\[[ZZYYuuvvwwxxPPQQRRSSRSSTTUUV""##$$%%OONNMMLLBBCCDDEE]]^^__``bbcciijjQQRRSSTT XXWWVVUUyyzz{{||TTUUVVWWVWWXXYYZ&&''(())KKJJIIHHFFGGHHIIaabbccddkkllmmnnUUVVWWXX TTSSRRQQ}}~~XXYYZZ[[Z[[\\]]^**++,,-- GGFFEEDD~~}}||JJKKLLMMeeffgghhooppqqrrYYZZ[[\\!!""##$$PPOONNMM\\]]^^__^__``aab..//0011 - - CCBBAA@@{{zzyyxxNNOOPPQQiijjkkllssttuuvv]]^^__``%%&&''((LLKKJJII``aabbccbccdefgh22334455??>>==<>==xxwwvvuuqqrrssttqqrrsstt>>??@@AA 33221100kkjjiihh^^__``aabbccddee__``aabbGGHHIIJJ**))((''bbaa``__ooppqqrrEEFFGGHHJKLMNOOPUUTTSSRR||}}~~DDEEFFGG<<==>>??))**++,, HHGGFFEE~~}}QQRRSSTT""##$$%%)**++,,-;;::9988ssrrqqppffgghhiicciijjkkKKLLMMNN&&%%$$##^^]]\\[[ssttuuvvIIOOPPQQPQQRRSST !!""##QQPPOONNHHIIJJKK@@AABBCC--..//00 - - DDCCBBAA||{{zzyyUUVVWWXX&&''(())-..//01277665544oonnmmll~~}}||jjkkllmmllmmnnooOOPPQQRR""!! ZZYYXXWWwwxxyyzzRRSSTTUUTUUVVWWX$$%%&&''MMLLKKJJLLMMNNOODDEEFFGG11223344@@??>>==xxwwvvuuYYZZ[[\\**++,,--34556677 33221100kkjjiihh{{zzyyxxnnooppqqppqqrrssSSTTUUVVVVUUTTSS{{||}}~~VVWWXXYYXYYZZ[[\(())**++IIHHGGFF~~PPQQRRSSHHIIOOPP55667788<<;;::99ttssrrqq]]^^__``..//55668899::;; - - //..--,,ggffeeddwwvvuuttrrssttuuttuuvvwwWWXXYYZZ !!""RRQQPPOOZZ[[\\]]\]]^^__`,,--..// - -EEDDCCBB}}||{{zzTTUUVVWWQQRRSSTT99::;;<<88776655ppoonnmmaabbccdd778899::<<==>>??++**))((ccbbaa``ssrrqqppvvwwxxyyxxyyzz{{[[\\]]^^##$$%%&&NNMMLLKK^^__``aa`aabbccd00112233 AA@@??>>yyxxwwvvXXYYZZ[[UUVVWWXX==>>??@@44332211llkkjjiieeffgghh;;<<==>>@@AABBCC''&&%%$$__^^]]\\oonnmmllzz{{||}}||}}__``aabb''(())**JJIIHHGGbbcciijjefghiijj44556677==<<;;::uuttssrr\\]]^^__YYZZ[[\\AABBCCDD - - 00//..--hhggffeeiijjkkll??@@AABBDDEEFFGG##""!! [[ZZYYXXkkjjiihh~~ccddeeff++,,--.. FFEEDDCC~~}}||{{kkllmmnnkkllmmnn8899::;;99887766qqppoonn``aabbcc]]^^__``EEFFGGHH ,,++**))ddccbbaammnnooppCCDDEEFFHHIIJKLMWWVVUUTTggffeeddgghhiijj//001122 - - BBAA@@??zzyyxxwwooppqqrrooppqqrr<<==>>??55443322mmllkkjjddeeffggaabbcciiIIJJKKLL((''&&%%``__^^]]qqrrssttGGHHIIOONOOPPQQR !!SSRRQQPP}}||{{ccbbaa``kkllmmnn33445566>>==<<;;vvuuttssssttuuvvssttuuvv@@AABBCC - - 1100//..iihhggffhhiijjkkjjkkllmmMMNNOOPP$$##""!!\\[[ZZYYuuvvwwxxPPQQRRSSRSSTTUUV""##$$%%OONNMMLLzzyyxxww__^^]]\\ooppqqrr778899::::998877rrqqppoowwxxyyzzwwxxyyzzDDEEFFGG --,,++**eeddccbbllmmnnoonnooppqqQQRRSSTT XXWWVVUUyyzz{{||TTUUVVWWVWWXXYYZ&&''(())KKJJIIHHvvuuttss[[ZZYYXXssttuuvv;;<<==>>66554433nnmmllkk{{||}}{{||}}~HHIIJJKK))((''&&aa``__^^ppqqrrssrrssttuuUUVVWWXX TTSSRRQQ}}~~XXYYZZ[[Z[[\\]]^**++,,-- GGFFEEDDrrqqppooWWVVUUTTwwxxyyzz??@@AABB - -221100//jjiihhggLLMMNNOO%%$$##""]]\\[[ZZttuuvvwwvvwwxxyyYYZZ[[\\!!""##$$PPOONNMM\\]]^^__^__``aab..//0011 - - CCBBAA@@nnmmllkkSSRRQQPP{{||}}~~CCDDEEFF ..--,,++ffeeddccPPQQRRSS!! YYXXWWVVxxyyzz{{zz{{||}}]]^^__``%%&&''((LLKKJJII``aabbccbccdefgh22334455??>>==<>==xxwwvvuuqqrrssttqqrrsstt>>??@@AA 33221100YYXXWWVVCCBBAA@@SSTTUUVVVVUUTTSS``aabbcc(())**++IIHHGGFF~~mmnnoopp55667788<<;;::99ttssrrqquuvvwwxxuuvvwwxxBBCCDDEE - - //..--,,UUTTSSRR??>>==<>yyxxwwvvuuvvwwxx==>>??@@44332211llkkjjii}}}}~JJKKLLMM''&&%%$$HHGGFFEE77665544~}}||{{__``aabb''(())**JJIIHHGGllmmnnoo44556677==<<;;::uuttssrryyzz{{||AABBCCDD - - 00//..--hhggffeeNNOOPPQQ##""!! DDCCBBAA33221100zzyyxxwwccddeeff++,,--.. FFEEDDCC~~}}||{{ppqqrrss8899::;;99887766qqppoonn}}~~EEFFGGHH ,,++**))ddccbbaaRRSSTTUU@@??>>==//..--,,}}||{{zzvvuuttssgghhiijj//001122 - - BBAA@@??zzyyxxwwttuuvvww<<==>>??55443322mmllkkjjIIJJKKLL((''&&%%``__^^]]VVWWXXYY !!<<;;::99++**))((yyxxwwvvrrqqppookkllmmnn33445566>>==<<;;vvuuttssxxyyzz{{@@AABBCC - - 1100//..iihhggffMMNNOOPP$$##""!!\\[[ZZYYZZ[[\\]]""##$$%%88776655''&&%%$$uuttssrrnnmmllkkooppqqrr778899::::998877rrqqppoo}}||{{||}}~~DDEEFFGG --,,++**eeddccbbQQRRSSTT XXWWVVUU^^__``aa&&''(())//..--,,##""!! qqppoonnjjiihgfessttuuvv;;<<==>>66554433nnmmllkkzzyyxxwwHHIIJJKK))((''&&aa``__^^UUVVWWXX TTSSRRQQbbccddee**++,,-- ++**))((mmllkkjjdccbbaa`wwxxyyzz??@@AABB - -221100//jjiihhggvvuuttssLLMMNNOO%%$$##""]]\\[[ZZYYZZ[[\\!!""##$$PPOONNMMffgghhii..//0011 - - ''&&%%$$iiccbbaa`__^^]]\{{||}}~~CCDDEEFF ..--,,++ffeeddccrrqqppoo~~PPQQRRSS!! YYXXWWVV~}}]]^^__``%%&&''((LLKKJJIIjjkkllmm22334455##""!! ``__^^]]\[[ZZYYXGGHHIIJJ**))((''bbaa``__nnmmllkk}}||{{zzTTUUVVWWUUTTSSRR||{{zzyyaabbccdd))**++,, HHGGFFEE~~}}nnooppqq66778899\\[[ZZYYXWWVVUUTKKLLMMNN&&%%$$##^^]]\\[[jjiiccbbyyxxwwvvXXYYZZ[[ !!""##QQPPOONN}}||xxwwvvuueeffgghh--..//00 - - DDCCBBAA||{{zzyyrrssttuu::;;<<== XXWWVVUUTSSRRQQPOOPPQQRR""!! ZZYYXXWWaa``__^^uuttssrr\\]]^^__$$%%&&''MMLLKKJJ{{zzyyxxttssrrqqiijjkkll11223344@@??>>==xxwwvvuuvvwwxxyy>>??@@AA  - - TTSSRRQQPOONMLKJ~~}}||{{SSTTUUVVVVUUTTSS]]\\[[ZZqqppoonn``aabbcc(())**++IIHHGGFFwwvvuuttppoonnmmmmnnoopp55667788<<;;::99ttssrrqq}}zz{{||}}BBCCDDEE - -  - - PPOOIIHHIIHHGGFFzzyyxxwwWWXXYYZZ !!""RRQQPPOOYYXXWWVVmmllkkjjddeeffgg,,--..// - -EEDDCCBBssrrqqppllkkjjiiqqrrsstt99::;;<<88776655ppoonnmm||{{zzyy~~FFGGHHII - - - -GGFFEEDDEEDDCCBBvvuuttss[[\\]]^^##$$%%&&NNMMLLKKUUTTSSRRiihhggffhhiijjkk00112233 AA@@??>>oonnmmllhgfedccbuuvvwwxx==>>??@@44332211llkkjjiixxwwvvuuJJKKLLMM CCBBAA@@AA@@??>>rrqqppoo__``aabb''(())**JJIIHHGGQQPPOOIIeeddccbbllmmnnoo44556677==<<;;::kkjjiiccbaa``__^yyzz{{||AABBCCDD - - 00//..--hhggffeettssrrqqNNOOPPQQ??>>==<<==<<;;::nnmmllkkccddeeff++,,--.. FFEEDDCCHHGGFFEEaa``__^^ppqqrrss8899::;;99887766bbaa``__^]]\\[[Z}}~~EEFFGGHH ,,++**))ddccbbaappoonnmm~~}}||RRSSTTUU;;::998899887766jjiihhgggghhiijj//001122 - - BBAA@@??DDCCBBAA]]\\[[ZZttuuvvww<<==>>??55443322^^]]\\[[ZYYXXWWVIIJJKKLL((''&&%%``__^^]]llkkjjii{{zzyyxxVVWWXXYY !! !!776655//5543210/ffeeddcckkllmmnn33445566>>==<<;;@@??>>==YYXXWWVVxxyyzz{{@@AABBCC - - 1100//..ZZYYXXWWVUUTTSSRMMNNOOPP$$##""!!\\[[ZZYYccbbaa``wwvvuuttZZ[[\\]]""##$$%% !!""##""##$$%%..--,,++/..--,,+bbaa``__ooppqqrr778899::::998877<<;;::99UUTTSSRR||}}~~DDEEFFGG --,,++**VVUUTTSSRQQPPOON~~}}QQRRSSTT XXWWVVUU__^^]]\\ssrrqqpp^^__``aa&&''(())$$%%&&''&&''(())**))((''+**))(('^^]]\\[[ssttuuvv;;<<==>>6655443388776655QQPPOONNHHIIJJKK))((''&&RRQQPPOOMLKJIIHH||{{zzyyUUVVWWXX TTSSRRQQ[[ZZYYXXoonnmmllbbccddee**++,,--(())**++**++,,--&&%%$$##'&&%%$$#ZZYYXXWWwwxxyyzz??@@AABB - -221100////..--,,MMLLKKJJLLMMNNOO%%$$##""IIHHGGFFGGFFEEDDxxwwvvuuYYZZ[[\\!!""##$$PPOONNMMWWVVUUTTkkjjiihhffgghhii..//0011,,--..//..//0011""!! #""!! VVUUTTSS{{||}}~~CCDDEEFF ..--,,++++**))((IIHHGGFF~~PPQQRRSS!! EEDDCCBBCCBBAA@@ttssrrqq]]^^__``%%&&''((LLKKJJIISSRRQQPPggffeeddjjkkllmm223344555566778822334455RRQQPPOOGGHHIIJJ**))((''''&&%%$$EEDDCCBB}}||{{zzTTUUVVWWAA@@??>>??>>==<>yyxxwwvvXXYYZZ[[ !!""##==<<;;::;;::9988llkkjjiieeffgghh--..//00 - - DDCCBBAAFFEEDDCC__^^]]\\rrssttuu::;;<<====>>??@@::;;<<==JJIIHHGGOOPPQQRR""!! ==<<;;::uuttssrr\\]]^^__$$%%&&''9988776677665543hhggffeeiijjkkll11223344@@??>>==BBAA@@??[[ZZYYXXvvwwxxyy>>??@@AAAABBCCDD>>??@@AA - - FFEEDDCC~~}}||{{SSTTUUVV99887766qqppoonn``aabbcc(())**++55//..--210//..-ddccbbaammnnoopp55667788<<;;::99>>==<<;;WWVVUUTTzz{{||}}BBCCDDEEEEFFGGHHBBCCDDEE  - - BBAA@@??zzyyxxwwWWXXYYZZ !!""55443322mmllkkjjddeeffgg,,--..// - -,,++**))-,,++**)``__^^]]qqrrsstt99::;;<<88776655::998877SSRRQQPP~~FFGGHHIIIIOOPPQQFFGGHHII>>==<<;;vvuuttss[[\\]]^^##$$%%&& 1100//..iihhggffhhiijjkk00112233 ((''&&%%)((''&&%\\[[ZZYYuuvvwwxx==>>??@@443322116655//..OONNMMLLJJKKLLMMRRSSTTUUJJKKLLMM - - ::998877rrqqppoo__``aabb''(())** - - --,,++**eeddccbbllmmnnoo44556677$$##""!!%$$##""!XXWWVVUUyyzz{{||AABBCCDD - - 00//..----,,++**KKJJIIHHNNOOPPQQVVWWXXYYNNOOPPQQ 66554433nnmmllkkccddeeff++,,--.. ))((''&&aa``__^^ppqqrrss8899::;; ! TTSSRRQQ}}~~EEFFGGHH ,,++**))))((''&&GGFFEEDD~~}}||RRSSTTUUZZ[[\\]]RRSSTTUU - -221100//jjiihhgggghhiijj//001122 - - %%$$##""]]\\[[ZZttuuvvww<<==>>??PPOONNMMIIJJKKLL((''&&%%%%$$##""CCBBAA@@{{zzyyxxVVWWXXYY^^__``aaVVWWXXYY ..--,,++ffeeddcckkllmmnn33445566 - - !! YYXXWWVVxxyyzz{{@@AABBCC - - LLKKJJIIMMNNOOPP$$##""!!!! ??>>==<> - -QQPPOONNHHIIJJKK - -  DDCCBBAA||{{zzyyUUVVWWXX 77665544oonnmmllbbccddeeooppqqrrbbccddee%%&&''((""!! ZZYYXXWWwwxxyyzz??@@AABB MMLLKKJJLLMMNNOO - - @@??>>==xxwwvvuuYYZZ[[\\!!""##$$ 33221100kkjjiihhffgghhiissttuuvvffgghhii))**++,,VVUUTTSS{{||}}~~CCDDEEFFIIHHGGFF~~PPQQRRSS <<;;::99ttssrrqq]]^^__``%%&&''(( - - //..--,,ggffeeddjjkkllmmwwxxyyzzjjkkllmm--..//55 !!""RRQQPPOOGGHHIIJJ !!""# - -EEDDCCBB}}||{{zzTTUUVVWW - - 88776655ppoonnmmaabbccdd))**++,, ++**))((ccbbaa``nnooppqq{{||}}nnooppqq66778899##$$%%&&NNMMLLKKKKLLMMNN#$$%%&&' AA@@??>>yyxxwwvvXXYYZZ[[ !!""##44332211llkkjjiieeffgghh--..//00 - - ''&&%%$$__^^]]\\rrssttuurrssttuu::;;<<==''(())**JJIIHHGGOOPPQQRR !!""##'(())**+==<<;;::uuttssrr\\]]^^__$$%%&&'' - - 00//..--hhggffeeiijjkkll11223344 - -##""!! [[ZZYYXXvvwwxxyyvvwwxxyy>>??@@AA++,,--.. FFEEDDCC~~}}||{{SSTTUUVV$$%%&&''+,,--../99887766qqppoonn``aabbcc(())**++ ,,++**))ddccbbaammnnoopp55667788 WWVVUUTTzz{{||}}zz{{||}}BBCCDDEE//001122 - - BBAA@@??zzyyxxwwWWXXYYZZ(())**++/012345555443322mmllkkjjddeeffgg,,--..// !!""((''&&%%``__^^]]qqrrsstt99::;;<<SSRRQQPP~~~~FFGGHHII33445566>>==<<;;vvuuttss[[\\]]^^,,--..//66778899 - - 1100//..iihhggffhhiijjkk00112233##$$%%&&$$##""!!\\[[ZZYYuuvvwwxx==>>??@@ - - OONNMMLLOOPPQQRR778899::::998877rrqqppoo__``aabb55667788::;;<<== --,,++**eeddccbbllmmnnoo44556677''(())** XXWWVVUUyyzz{{||AABBCCDD KKJJIIHHSSTTUUVV;;<<==>>66554433nnmmllkkccddeeff99::;;<<>>??@@AA))((''&&aa``__^^ppqqrrss8899::;;++,,--.. TTSSRRQQ}}~~EEFFGGHH ! GGFFEEDD~~}}||WWXXYYZZ??@@AABB - -221100//jjiihhgggghhiijj==>>??@@BBCCDDEE%%$$##""]]\\[[ZZttuuvvww<<==>>??//556677!!""##$$PPOONNMMIIJJKKLL!""##$$% - - CCBBAA@@{{zzyyxx[[\\]]^^CCDDEEFF ..--,,++ffeeddcckkllmmnnAABBCCDDFFGGHHII!! YYXXWWVVxxyyzz{{@@AABBCC8899::;;%%&&''((LLKKJJIIMMNNOOPP !!%&&''(()??>>==<=>=>=<;<;<;<;:9:9:9:96565656543434343/0/0/0/0.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!        - - - - ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;:9:9:9:96565656543434343/0/0/0//.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!        - - - - ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;:9:9:9:96565656543434343////0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!        - - - - ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;:9:9:9:965656565434343430/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!    - - - - ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;:9:9:9:965656565434343430/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!    - - - - ZYZYXWXWVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMIIIIIJIJHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;:9:9:9:965656565434343430/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!   - - - - XWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMIJIJIJIJHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;:9:9:9:965656565434343430/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - - XWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMIJIJIJIJHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;:9:9:9:965656565434343210/0/0///,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - - XWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMIJIJIJIJHGFEFEFEDCDCDCDCBABABABA>=>=>=>=<;<;<;<;:98787876565656521212121///0/0/0,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - - XWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMIJIJIJIJFEFEFEFEDCDCDCDCBABABABA>=>=>=>=<;<;<;<;878787876565656521212121/0/0/0/0,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - - XWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMIJIJIJIIFEFEFEFEDCDCDCDCBABABABA>=>=>=>=<;<;<;<;878787876565656521212121/0/0/0/0,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - - XWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMIIIIJIJIFEFEFEFEDCDCDCDCBABABABA>=>=>=>=<;<;<;<;878787876565656521212121/0/0/0/0,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"! - - - - XWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDCBABABABA>=>=>=>=<;<;<;<;878787876565656521212121/0/0/0/0,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"! - - - - XWXWXWXWVUVUVUVUTSTSRQRQPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDCBABABABA>=>=>=>=<;<;<;<;878787876565656521212121/0/0////,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"! - - - - XWXWXWXWVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDCBABABABA>=>=>=>=<;<;<;<;878787876565656521212121//0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"! - - - - XWXWXWXWVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDCBABABABA>=>=>=>=<;<;<;<;8787878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"! - - - - XWXWXWXWVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKJIJIJIIIFEFEFEFEDCDCDCDCBA@?@?@?>=>=>=>=<;<;<;<;8787878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"! - - - - XWXWXWXWVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKIIIJIJIJFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=<;<;<;<;8787878765656565212121210/0/////,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"! - - - - XWXWXWXWVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKIJIJIJIJFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=<;<;<;<;8787878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"! - - - - XWXWXWXWVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKIJIJIJIJFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=<;<;<;<;878787876565656521212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#     - - - - XWXWXWXWVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKIJIJIJIJFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=<;<;<;<;878787876565656521212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#     - - - - XWXWXWXWVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKIJIJIJIJFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=<;<;<;<;878787876565656521212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#     - - - - XWXWXWXWVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKIJIJIIIIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=<;<;<;<;878787876565656521212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        - - - - XWXWXWXWVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKIIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=<;<;<;<;878787876565656521212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        - - - - XWXWXWXWVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKJIHGHGHGFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=<;:9:9:9878787876565656521212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        - - - - XWXWXWXWVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:9878787876565656521212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        - - - - XWXWXWXWVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:9878787876565656521212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        - - - - XWXWXWXWVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:9878787876565656521212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#        - - - - XWXWXWXWVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:9878787876565656521212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#        - - - - XWXWXWXWVUVUTSTSRQRQRQRQPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:9878787876565656521212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#        - - - XWXWXWXWTSTSTSTSRQRQRQRQPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:9878787876565656521212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#        XWXWXWXWTSTSTSTSRQRQRQRQPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:9878787876565656521212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#        XWXWXWXWTSTSTSTSRQRQRQRQPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEDCBABABA@?@?@?@?>=>=>=>=:9:9:9:9878787876543434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#        XWXWXWXWTSTSTSTSRQRQRQRQPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?>=>=>=>=:9:9:9:9878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#        XWXWXWXWTSTSTSTSRQRQRQRQPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?>=>=>=>=:9:9:9:9878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#        XWXWXWXWTSTSTSTSRQRQRQRQPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?>=>=>=>=:9:9:9:9878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!        XWXWXWXWTSTSTSTSRQRQRQRQPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?>=>=>=>=:9:9:9:9878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!        XWXWXWXWTSTSTSTSRQRQRQRQPOPONMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?>=>=>=>=:9:9:9:9878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!        XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?>=>=>=>=:9:9:9:9878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!        XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?>=>=>=>=:9:9:9:98787878743434343210/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!        XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?>=<;<;<;:9:9:9:987878787434343430//////0.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!        XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:98787878743434343/0/0/0/0.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!        XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:98787878743434343/0/0/0/0.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!        XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:98787878743434343/0/0/0/0.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!        XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMLKLKJIJIHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:98787878743434343/0/0/0/0.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!        XWXWVUVUTSTSTSTSRQRQRQRQNMNMNMNMJIJIIIIIHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:98787878743434343/0/0/0/0.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!        - VUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:98787878743434343//////0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!        - - - - QQRRSSTT$$%%&&''llkkjjiiuuvvwwxxLLKKJJII55667788,,++**))[[ZZYYXXJJKKLLMMwwvvuuttjjkkllmm - - WWVVUUTT__``aabb !!""BBAA@@??UUVVWWXX(())**++hhggffeeyyzz{{||HHGGFFEE99::;;<<((''&&%%WWVVUUTTNNOOPPQQssrrqqppnnooppqqSSRRQQPPcciijjkk##$$%%&&>>==<<;;YYZZ[[\\,,--..// - -ddccbbaa}}~~ DDCCBBAA==>>??@@$$##""!!SSRRQQPPRRSSTTUU oonnmmllrrssttuuOONNMMLLllmmnnoo''(())**::998877]]^^__``55667788 ``__^^]]!!""##$$@@??>>==AABBCCDD OOIIHHGGVVWWXXYY - - kkjjiihhvvwwxxyyKKJJIIHHppqqrrss++,,--..66554433aabbccdd99::;;<<\\[[ZZYY%%&&''((<<;;::99EEFFGGHHFFEEDDCCZZ[[\\]]ggffeeddzz{{||}}GGFFEEDDttuuvvww//001122221100//eeffgghh==>>??@@ - - XXWWVVUU))**++,,88776655IIJJKKLLBBAA@@??^^__``aaccbbaa``~~ !!CCBBAA@@xxyyzz{{33445566..--,,++iijjkkllAABBCCDD TTSSRRQQ--..//0044332211MMNNOOPP>>==<<;;~~}}||bbccddee__^^]]\\""##$$%%??>>==<<||}}778899::**))((''mmnnooppEEFFGGHHPPOONNMM1122334400//..--QQRRSSTT ::998877{{zzyyxxffgghhii [[ZZYYXX&&''(());;::9988;;<<==>>&&%%$$##~~}}qqrrssttIIOOPPQQLLKKJJII55667788,,++**))UUVVWWXX - - 6655//..wwvvuuttjjkkllmm - - WWVVUUTT**++,,--77665544??@@AABB""!! ||{{zzyyuuvvwwxxRRSSTTUUHHGGFFEE99::;;<<((''&&%%YYZZ[[\\--,,++**ssrrqqppnnooppqqSSRRQQPP..//001133221100CCDDEEFF~~}}||{{xxwwvvuuyyzz{{||VVWWXXYY DDCCBBAA==>>??@@$$##""!!]]^^__``))((''&&oonnmmllrrssttuuOONNMMLL22334455//..--,,GGHHIIJJzzyyxxwwttssrrqq}}~~ZZ[[\\]]!!""##$$@@??>>==AABBCCDD ~~}}aabbccdd%%$$##""kkjjiihhvvwwxxyyKKJJIIHH66778899++**))((KKLLMMNNvvuuttssppoonnmm^^__``aa%%&&''((<<;;::99EEFFGGHH||{{zzyyeeffgghh - - !! ggffeeddzz{{||}}GGFFEEDD::;;<<==''&&%%$$}}||{{zzOOPPQQRRrrqqppoollkkjjiibbcciijj))**++,,88776655IIJJKKLLxxwwvvuuiijjkkll ccbbaa``~~ !!CCBBAA@@>>??@@AA##""!! yyxxwwvvSSTTUUVV nnmmllkkhhggffeekkllmmnn--..//0044332211MMNNOOPPttssrrqqmmnnoopp__^^]]\\""##$$%%??>>==<>??@@$$##""!!]]^^__``ddccbbaa}}~~&&''(())OONNMMLL22334455//..--,,RRSSTTUU ``__^^]]gghhiijj - -ZZYYXXWWTTSSRRQQAABBCCDD ~~}}aabbccdd``__^^]]**++,,-- - -KKJJIIHH66778899++**))((VVWWXXYY - - \\[[ZZYYkkllmmnn VVUUTTSSPPOONNMMEEFFGGHH||{{zzyyeeffgghh\\[[ZZYY..//5566 GGFFEEDD::;;<<==''&&%%$$ZZ[[\\]]XXWWVVUU~}}||{{ooppqqrrRRQQPPOOLLKKJJIIIIJJKKLLxxwwvvuuiijjkkll - - XXWWVVUU778899::CCBBAA@@>>??@@AA##""!! ^^__``aaTTSSRRQQzzyyxxwwssttuuvvNNMMLLKKHHGGFFEEMMNNOOPPttssrrqqmmnnoopp TTSSRRQQ;;<<==>>??>>==<>==UUVVWWXX - - llkkjjiiuuvvwwxxLLKKJJIICCDDEEFF !77665544JJKKLLMMwwvvuuttjjkkllmm - - CCBBAA@@nnmmllkk !!""BBAA@@??<<;;::99YYZZ[[\\hhggffeeyyzz{{||HHGGFFEEGGHHIIOO!""##$$%33221100NNOOPPQQssrrqqppnnooppqq??>>==<>==<<;;88776655}}||{{]]^^__``ddccbbaa}}~~ DDCCBBAAPPQQRRSS%&&''(()//..--,,RRSSTTUU oonnmmllrrssttuu;;::9988dccbbaa`''(())**::99887744332211zzyyxxwwaabbccdd``__^^]]!!""##$$@@??>>==TTUUVVWW)**++,,-++**))((VVWWXXYY - - kkjjiihhvvwwxxyy776655//`__^^]]\++,,--..6655443300//..--vvuuttsseeffgghh\\[[ZZYY%%&&''((<<;;::99XXYYZZ[[-..//012''&&%%$$ZZ[[\\]]ggffeeddzz{{||}}..--,,++\[[ZZYYX//001122221100//,,++**))rrqqppooiijjkkll - - XXWWVVUU))**++,,88776655\\]]^^__34556677##""!! ^^__``aaccbbaa``~~ !!**))((''XWWVVUUT33445566..--,,++((''&&%%nnmmllkkmmnnoopp TTSSRRQQ--..//0044332211``aabbcc8899::;;~~}}||bbccddee__^^]]\\""##$$%%&&%%$$##TSSRRQQP778899::**))((''$$##""!!jjiiccbbqqrrssttPPOONNMM1122334400//..--iijjkkll<<==>>??{{zzyyxxffgghhii [[ZZYYXX&&''(())""!! POONMLKJ;;<<==>>&&%%$$## aa``__^^~}}||uuvvwwxxLLKKJJII55667788,,++**))mmnnoopp@@AABBCCwwvvuuttjjkkllmm - - WWVVUUTT**++,,--IIHHGGFF??@@AABB""!! ]]\\[[ZZ{{zzyyxxyyzz{{||HHGGFFEE99::;;<<((''&&%%qqrrssttDDEEFFGGssrrqqppnnooppqqSSRRQQPP..//0011EEDDCCBBCCDDEEFFYYXXWWVVwwvvuutt}}~~ DDCCBBAA==>>??@@$$##""!!uuvvwwxxHHIIJKLM oonnmmllrrssttuuOONNMMLL22334455AA@@??>>GGHHIIJJUUTTSSRRssrrqqpp!!""##$$@@??>>==AABBCCDD ~~}}yyzz{{||NOOPPQQR - - kkjjiihhvvwwxxyyKKJJIIHH66778899 - -==<<;;::KKLLMMNN QQPPOOIIoonnmmll%%&&''((<<;;::99EEFFGGHH||{{zzyy}}RSSTTUUVggffeeddzz{{||}}GGFFEEDD::;;<<== 99887766OOPPQQRR - - HHGGFFEEkkjjiihg))**++,,88776655IIJJKKLLxxwwvvuuVWWXXYYZccbbaa``~~ !!CCBBAA@@>>??@@AA5543210/SSTTUUVV - - DDCCBBAAfedccbba--..//0044332211MMNNOOPPttssrrqqZ[[\\]]^__^^]]\\""##$$%%??>>==<>==a``__^^]1122334400//..--QQRRSSTT ppoonnmm^__``aab [[ZZYYXX&&''(());;::9988FFGGHHII +**))(('[[\\]]^^<<;;::99]\\[[ZZY55667788,,++**))UUVVWWXX - - llkkjjiibccdefgh - - WWVVUUTT**++,,--77665544JJKKLLMM'&&%%$$#__``aabb88776655YXXWWVVU99::;;<<((''&&%%YYZZ[[\\hhggffeeiijjkkllSSRRQQPP..//001133221100NNOOPPQQ#""!! ~~}}||{{ccddeeff//..--,,UTTSSRRQ==>>??@@$$##""!!]]^^__``ddccbbaammnnooppOONNMMLL22334455//..--,,RRSSTTUU zzyyxxwwgghhiijj - - ++**))((QPPOONMLAABBCCDD ~~}}aabbccdd``__^^]]qqrrssttKKJJIIHH66778899++**))((VVWWXXYY!!""##$$vvuuttsskkllmmnn !!""##$$''&&%%$$KJIIHHGGEEFFGGHH||{{zzyyeeffgghh\\[[ZZYYuuvvwwxxGGFFEEDD::;;<<==''&&%%$$ZZ[[\\]]%%&&''((rrqqppooooppqqrr%%&&''((##""!! FFEEDDCCIIJJKKLLxxwwvvuuiijjkkll - - XXWWVVUUyyzz{{|| !!CCBBAA@@>>??@@AA##""!! ^^__``aa))**++,, nnmmllkkssttuuvv))**++,,BBAA@@??MMNNOOPPttssrrqqmmnnoopp TTSSRRQQ}}~""##$$%%??>>==<>==<<;;QQRRSSTT ppoonnmmqqrrssttPPOONNMM&&''(());;::9988FFGGHHII{{zzyyxxffgghhii66778899ffeeddcc{{||}}~~CCDDEEFF11223344::998877UUVVWWXX - - llkkjjiiuuvvwwxxLLKKJJII}}**++,,--77665544JJKKLLMMwwvvuuttjjkkllmm::;;<<==bbaa``__ !!""GGHHIIJJ55667788 66554321YYZZ[[\\hhggffeeyyzz{{||HHGGFFEE||{{zzyy..//001133221100NNOOPPQQssrrqqppnnooppqq>>??@@AA^^]]\\[[##$$%%&&KKLLMMNN99::;;<< - - - -0//..--,]]^^__``ddccbbaa}}~~ DDCCBBAAxxwwvvuu22334455//..--,,RRSSTTUU oonnmmllrrssttuuBBCCDDEE - -ZZYYXXWW''(())**OOPPQQRR==>>??@@ ,++**))(~~}}aabbccdd``__^^]]!!""##$$@@??>>==ttssrrqq66778899++**))((VVWWXXYY - - kkjjiihhvvwwxxyyFFGGHHII VVUUTTSS++,,--..SSTTUUVVAABBCCDD(''&&%%$||{{zzyyeeffgghh\\[[ZZYY%%&&''((<<;;::99ppoonnmm::;;<<==''&&%%$$ZZ[[\\]]ggffeeddzz{{||}}OOPPQQRRRRQQPPOO//001122WWXXYYZZEEFFGGHH$##""!! xxwwvvuuiijjkkll - - XXWWVVUU))**++,,88776655llkkjjii>>??@@AA##""!! ^^__``aaccbbaa``~~SSTTUUVVNNMMLLKK33445566[[\\]]^^IIJJKKLL ttssrrqqmmnnoopp TTSSRRQQ--..//0044332211ccbbaa``BBCCDDEE~~}}||bbccddee__^^]]\\WWXXYYZZJJIIHHGG778899::__``aabbMMNNOOPP !!""##ppoonnmmqqrrssttPPOONNMM1122334400//..--__^^]]\\FFGGHHII{{zzyyxxffgghhii [[ZZYYXX[[\\]]^^FFEEDDCC;;<<==>>ccddeeffgghhiijj - -ZZYYXXWW55667788 EEDDCCBB<<==>>??%%$$##""\\]]^^__VVUUTTSS||{{zzyyqqrrssttPPOONNMM1122334400//..--iijjkkll<<==>>??{{zzyyxxffgghhii DDCCBBAA[[ZZYYXXkkllmmnn VVUUTTSS99::;;<<AA@@??>>@@AABBCC!! ~~``aabbccRRQQPPOOxxwwvvuuuuvvwwxxLLKKJJII55667788,,++**))mmnnoopp@@AABBCCwwvvuuttjjkkllmm - - @@??>>==WWVVUUTTooppqqrrRRQQPPOO==>>??@@==<<;;::DDEEFFGG}}||{{zzddeeffggIIHHGGFFttssrrqqyyzz{{||HHGGFFEE99::;;<<((''&&%%qqrrssttDDEEFFGGssrrqqppnnooppqq<<;;::99SSRRQQPPssttuuvvNNMMLLKKAABBCCDD99887766HHIIJJKKyyxxwwvvhhiijjkk - - EEDDCCBBppoonnmm}}~~ DDCCBBAA==>>??@@$$##""!!uuvvwwxxHHIIJKLM oonnmmllrrssttuu88776655OONNMMLLwwxxyyzzJJIIHHGGEEFFGGHH !!""#55443322LLMMNNOOuuttssrrllmmnnoo AA@@??>>llkkjjii!!""##$$@@??>>==AABBCCDD ~~}}yyzz{{||NOOPPQQR - - kkjjiihhvvwwxxyy//..--,,KKJJIIHH{{||}}~~FFEEDDCCIIOOPPQQ#$$%%&&'1100//..PPQQRRSSqqppoonnppqqrrss==<<;;::hgfedccb%%&&''((<<;;::99EEFFGGHH||{{zzyy}}RSSTTUUVggffeeddzz{{||}}++**))((GGFFEEDD !!""BBAA@@??RRSSTTUU'(())**+--,,++**TTUUVVWW - -mmllkkjjttuuvvww99887766baa``__^))**++,,88776655IIJJKKLLxxwwvvuuVWWXXYYZccbbaa``~~ !!''&&%%$$CCBBAA@@##$$%%&&>>==<<;;VVWWXXYY+,,--../))((''&&XXYYZZ[[ iihhggffxxyyzz{{55//..--^]]\\[[Z--..//0044332211MMNNOOPPttssrrqqZ[[\\]]^__^^]]\\""##$$%%##""!! ??>>==<<''(())**::998877ZZ[[\\]]/0123455%%$$##""\\]]^^__eeddccbb||}}~~,,++**))ZYYXXWWV1122334400//..--QQRRSSTT ppoonnmm^__``aab [[ZZYYXX&&''(());;::9988++,,--..66554433^^__``aa66778899!! ~~``aabbccaa``__^^ !!""##((''&&%%VUUTTSSR55667788,,++**))UUVVWWXX - - llkkjjiibccdefgh - - WWVVUUTT**++,,--77665544//001122221100//bbcciijj::;;<<==}}||{{zzddeeffgg]]\\[[ZZ$$%%&&''$$##""!!RQQPPOON99::;;<<((''&&%%YYZZ[[\\hhggffeeiijjkkllSSRRQQPP..//00113322110033445566..--,,++kkllmmnn>>??@@AAyyxxwwvvhhiijjkk - - YYXXWWVV(())**++ MLKJIIHH==>>??@@$$##""!!]]^^__``ddccbbaammnnooppOONNMMLL22334455 //..--,,778899::**))((''ooppqqrrBBCCDDEEuuttssrrllmmnnoo UUTTSSRR,,--..//GGFFEEDDAABBCCDD ~~}}aabbccdd``__^^]]qqrrssttKKJJIIHH66778899 - - - -++**))((;;<<==>>&&%%$$##ssttuuvvFFGGHHIIqqppoonnppqqrrssQQPPOONN00112233CCBBAA@@EEFFGGHH||{{zzyyeeffgghh\\[[ZZYYuuvvwwxxGGFFEEDD::;;<<== ''&&%%$$??@@AABB""!! wwxxyyzzJKLMNOOP - -mmllkkjjttuuvvwwMMLLKKJJ44556677 ??>>==<>??@@AA##""!! CCDDEEFF~~}}||{{{{||}}PQQRRSST iihhggffxxyyzz{{IIHHGGFF8899::;; - - ;;::9988MMNNOOPPttssrrqqmmnnoopp TTSSRRQQ}}~""##$$%%??>>==<>??77665543QQRRSSTT ppoonnmmqqrrssttPPOONNMM&&''(());;::9988FFGGHHIIKKLLMMNNvvuuttssXYYZZ[[\aa``__^^ !!""##AA@@??>>@@AABBCC 210//..-UUVVWWXX - - llkkjjiiuuvvwwxxLLKKJJII}}**++,,--77665544JJKKLLMM !!""##OOPPQQRRrrqqppoo\]]^^__`]]\\[[ZZ$$%%&&''==<<;;::DDEEFFGG - - -,,++**)YYZZ[[\\hhggffeeyyzz{{||HHGGFFEE||{{zzyy..//001133221100NNOOPPQQ$$%%&&''SSTTUUVV nnmmllkk`aabbccd - - YYXXWWVV(())**++99887766HHIIJJKK)((''&&%]]^^__``ddccbbaa}}~~ DDCCBBAAxxwwvvuu22334455//..--,,RRSSTTUU(())**++ WWXXYYZZ - - jjiihhggefghiijj UUTTSSRR,,--..//55443322LLMMNNOO%$$##""!~~}}aabbccdd``__^^]]!!""##$$@@??>>==ttssrrqq66778899++**))((VVWWXXYY,,--..// - - [[\\]]^^ffeeddcckkllmmnnQQPPOONN001122331100//..PPQQRRSS! ||{{zzyyeeffgghh\\[[ZZYY%%&&''((<<;;::99ppoonnmm::;;<<==''&&%%$$ZZ[[\\]]55667788 - - __``aabbbbaa``__ooppqqrrMMLLKKJJ44556677--,,++**TTUUVVWW !!""xxwwvvuuiijjkkll - - XXWWVVUU))**++,,88776655llkkjjii>>??@@AA##""!! ^^__``aa99::;;<<~~}}||{{ccddeeff^^]]\\[[ssttuuvvIIHHGGFF8899::;;))((''&&XXYYZZ[[##$$%%&&ttssrrqqmmnnoopp TTSSRRQQ--..//0044332211ccbbaa``BBCCDDEE~~}}||bbccddee==>>??@@zzyyxxwwgghhiijj - -ZZYYXXWWwwxxyyzzEEDDCCBB<<==>>??%%$$##""\\]]^^__''(())**ppoonnmmqqrrssttPPOONNMM1122334400//..--__^^]]\\FFGGHHII{{zzyyxxffgghhiiAABBCCDDvvuuttsskkllmmnn VVUUTTSS{{||}}~ !!""##AA@@??>>@@AABBCC!! ~~``aabbcc++,,--.. llkkjjiiuuvvwwxxLLKKJJII55667788,,++**))[[ZZYYXXJJKKLLMMwwvvuuttjjkkllmmEEFFGGHHrrqqppooooppqqrrRRQQPPOO$$%%&&''==<<;;::DDEEFFGG}}||{{zzddeeffgg//556677 - - hhggffeeyyzz{{||HHGGFFEE99::;;<<((''&&%%WWVVUUTTNNOOPPQQssrrqqppnnooppqqIIOOPPQQ !!nnmmllkkssttuuvvNNMMLLKK(())**++99887766HHIIJJKKyyxxwwvvhhiijjkk8899::;;ddccbbaa}}~~ DDCCBBAA==>>??@@$$##""!!SSRRQQPPRRSSTTUU oonnmmllrrssttuuRRSSTTUU""##$$%%jjiihhggwwxxyyzzJJIIHHGG}}||{{,,--..//55443322LLMMNNOOuuttssrrllmmnnoo<<==>>??``__^^]]!!""##$$@@??>>==AABBCCDD OOIIHHGGVVWWXXYY - - kkjjiihhvvwwxxyyVVWWXXYY&&''(())ffeeddcc{{||}}~~FFEEDDCCzzyyxxww001122331100//..PPQQRRSSqqppoonnppqqrrss@@AABBCC\\[[ZZYY%%&&''((<<;;::99EEFFGGHHFFEEDDCCZZ[[\\]]ggffeeddzz{{||}}ZZ[[\\]]**++,,--bbaa``__ !!""BBAA@@??vvuuttss44556677--,,++**TTUUVVWW - -mmllkkjjttuuvvwwDDEEFFGG - - XXWWVVUU))**++,,88776655IIJJKKLLBBAA@@??^^__``aaccbbaa``~~^^__``aa..//0011^^]]\\[[##$$%%&&>>==<<;;rrqqppoo8899::;;))((''&&XXYYZZ[[ iihhggffxxyyzz{{HHIIOOPP TTSSRRQQ--..//0044332211MMNNOOPP>>==<<;;~~}}||bbccddee__^^]]\\bbcciijj22334455ZZYYXXWW''(())**::998877nnmmllkk<<==>>??%%$$##""\\]]^^__eeddccbb||}}~~QQRRSSTTPPOONNMM1122334400//..--QQRRSSTT ::998877{{zzyyxxffgghhii [[ZZYYXXkkllmmnn66778899VVUUTTSS++,,--..66554433jjiiccbb@@AABBCC!! ~~``aabbccaa``__^^UUVVWWXXLLKKJJII55667788,,++**))UUVVWWXX - - 6655//..wwvvuuttjjkkllmm - - WWVVUUTTooppqqrr::;;<<==RRQQPPOO//001122221100//aa``__^^DDEEFFGG}}||{{zzddeeffgg]]\\[[ZZYYZZ[[\\HHGGFFEE99::;;<<((''&&%%YYZZ[[\\--,,++**ssrrqqppnnooppqqSSRRQQPPssttuuvv>>??@@AANNMMLLKK33445566..--,,++]]\\[[ZZHHIIJJKKyyxxwwvvhhiijjkk - - YYXXWWVV]]^^__`` DDCCBBAA==>>??@@$$##""!!]]^^__``))((''&&oonnmmllrrssttuuOONNMMLLwwxxyyzzBBCCDDEEJJIIHHGG778899::**))((''YYXXWWVVLLMMNNOOuuttssrrllmmnnoo UUTTSSRRaabbccii!!""##$$@@??>>==AABBCCDD ~~}}aabbccdd%%$$##""kkjjiihhvvwwxxyyKKJJIIHH{{||}}FFGGHHIIFFEEDDCC;;<<==>>&&%%$$##UUTTSSRRPPQQRRSSqqppoonnppqqrrssQQPPOONNjjkkllmm%%&&''((<<;;::99EEFFGGHH||{{zzyyeeffgghh - - !! ggffeeddzz{{||}}GGFFEEDDJJKKLLMMBBAA@@????@@AABB""!! QQPPOOIITTUUVVWW - -mmllkkjjttuuvvwwMMLLKKJJnnooppqq))**++,,88776655IIJJKKLLxxwwvvuuiijjkkll ccbbaa``~~ !!CCBBAA@@NNOOPPQQ>>==<<;;CCDDEEFFHHGGFFEEXXYYZZ[[ iihhggffxxyyzz{{IIHHGGFFrrssttuu--..//0044332211MMNNOOPPttssrrqqmmnnoopp__^^]]\\""##$$%%??>>==<>==~~``aabbccaa``__^^ !!""##AA@@??>>zz{{||}}55667788,,++**))UUVVWWXX - - llkkjjiiuuvvwwxx !! - - WWVVUUTT**++,,--77665544ZZ[[\\]]221100//OOPPQQRR<<;;::99}}||{{zzddeeffgg]]\\[[ZZ$$%%&&''==<<;;::99::;;<<((''&&%%YYZZ[[\\hhggffeeyyzz{{||""##$$%%SSRRQQPP..//001133221100^^__``aa..--,,++SSTTUUVV 88776655yyxxwwvvhhiijjkk - - YYXXWWVV(())**++99887766==>>??@@$$##""!!]]^^__``ddccbbaa}}~~&&''(())OONNMMLL22334455//..--,,bbccddee**))((''WWXXYYZZ - - //..--,,uuttssrrllmmnnoo UUTTSSRR,,--..//55443322AABBCCDD ~~}}aabbccdd``__^^]]**++,,-- - -KKJJIIHH66778899++**))((}}||{{ffgghhii&&%%$$##[[\\]]^^++**))((qqppoonnppqqrrssQQPPOONN001122331100//..EEFFGGHH||{{zzyyeeffgghh\\[[ZZYY..//5566 GGFFEEDD::;;<<==''&&%%$$zzyyxxwwjjkkllmm""!! __``aabb''&&%%$$mmllkkjjttuuvvwwMMLLKKJJ44556677--,,++**IIJJKKLLxxwwvvuuiijjkkll - - XXWWVVUU778899::CCBBAA@@>>??@@AA##""!! vvuuttssnnooppqq~~}}||{{ccddeeff - -##""!! iihhggffxxyyzz{{IIHHGGFF8899::;;))((''&&}}||MMNNOOPPttssrrqqmmnnoopp TTSSRRQQ;;<<==>>??>>==<>??%%$$##""{{zzyyxxQQRRSSTT ppoonnmmqqrrssttPPOONNMM??@@AABB;;::9988FFGGHHIInnmmllkk{{zzyyxxvvwwxxyyvvuuttsskkllmmnnaa``__^^ !!""##AA@@??>>@@AABBCC!! wwvvuuttUUVVWWXX - - llkkjjiiuuvvwwxxLLKKJJIICCDDEEFF !77665544JJKKLLMMjjiiccbbwwvvuuttzz{{||}}rrqqppooooppqqrr]]\\[[ZZ$$%%&&''==<<;;::DDEEFFGGssrrqqppYYZZ[[\\hhggffeeyyzz{{||HHGGFFEEGGHHIIOO!""##$$%33221100NNOOPPQQaa``__^^ssrrqqpp~~ nnmmllkkssttuuvv YYXXWWVV(())**++99887766HHIIJJKKoonnmmll]]^^__``ddccbbaa}}~~ DDCCBBAAPPQQRRSS%&&''(()//..--,,RRSSTTUU ]]\\[[ZZoonnmmll - - jjiihhggwwxxyyzz !!""## - - UUTTSSRR,,--..//55443322LLMMNNOOkkjjiiccaabbccdd``__^^]]!!""##$$@@??>>==TTUUVVWW)**++,,-++**))((VVWWXXYY - - YYXXWWVVkkjjiihhffeeddcc{{||}}~~$$%%&&''QQPPOONN001122331100//..PPQQRRSSbbaa``__eeffgghh\\[[ZZYY%%&&''((<<;;::99XXYYZZ[[-..//012''&&%%$$ZZ[[\\]]UUTTSSRRggffeeddbbaa``__(())**++MMLLKKJJ44556677--,,++**TTUUVVWW - -^^]]\\[[iijjkkll - - XXWWVVUU))**++,,88776655\\]]^^__34556677##""!! ^^__``aaQQPPOOIIccbbaa``^^]]\\[[,,--..// - - IIHHGGFF8899::;;))((''&&XXYYZZ[[ ZZYYXXWW~}}mmnnoopp TTSSRRQQ--..//0044332211``aabbcc8899::;;~~}}||bbccddeeHHGGFFEE__^^]]\\fpvp˂rnvppZHAbnXv`p˂r`vXnے`JXQtArdbHAZdrtAHAbے~HfJ`ےdQZ|˂pZZdQbt˂rXQltb~f`dQbtHAZp˂rtAJlpfے`nXv`XQJ`ےfH~ے`Jf~HXQJ`ےvpfr˂p|ZdQbp˂rJlt`JXQrpvnbHAZpdrtAJHAbےlJtAJ`ےdQZ|vXnl|ZdQrXQJtbdQJXQrf~HbHAZf`vXXQr˂fpvbHAZH~fZHAbtlJXQJ`ےbdQZ|˂pZXv`f˂rXQltb`JXQrrd|bHAZpdrtAJvpfHbtl`ےbZ|d˂pZHAfpvp˂rH~fpZHAbnXv`p˂r`vXnے`JXQfpvbHAZdrtAHAXQr~HfJ`ےdQZ|˂pZZdQbt˂rXQltb~f`JtArdHAZp˂rtAJlbے`nXv`XQJ`ے`vXnJAdf~HXQJ`ےvpfr˂pnXv`p˂rJlt˂pZHApvnbHAZpdtAJlHAbےlJtAJ`ےdQZ|vXn|ZdQrXQJtbdQJXQrf~HbHAZvpf|ZdQbfpvbHAZH~fZHAbf~HXQJ`ےbdQZ|bے`Xv`f˂rXQtbn`JXQrrd|bHAZpdrtAJvpfےbtl`ےbZ|d˂pZHAfpvp˂rH~ftlJnXv`p˂r`vXnے`JXQfpvbHAZdrtAJXQr~HfJ`ےvpf˂pZZdQbt˂rXQltb`JXQHAJtAdQbHAZp˂rtAJlbے`nXv`XQJ`ے`vXntArdf~HXQJ`ےvpfr˂pnXv`p˂rJlt˂pZHApvnbHAZpHf`HAbےlJtAJ`ےdQZ|bے`tlJrXQJtbdQJXQrf~HbHAZf`|ZdQbfpvbHAZH~fZHAbf~HXQJ`ےbdQZ|b˂Xv`f˂rXQvXn`JXQrrd|bHAZpdrtAJJXQrtArd`ےbZ|d˂pZHAfpvp˂rvXntlJnXv`p˂r`vXnے`JXQfpvbHAZdtAJpZHAb~HfJ`ےvpfH˂pZZdQbt˂rXQltb˂pZHA|ZdQbHAZp˂rtAJlbے`nXv`XQJ`ےvpfHtArdf~HXQJ`ےvpfr˂pnXv`p˂rltbے`JpvnbHAZp~f`HAbےlJtAJ`ےdQZ|bے`tlJrXQJtbdQJXQrf~HbHAZ~f`|ZdQbfpvJltH~fZHAbf~HXQJ`ےnvpXQr˂Xv`f˂rXQvXn`JXQrrd|bHAZpdrtAJJXQrtArdt`ےbZ|d˂pZHAfpvp˂rvXntlJnXv`bdQZ|`vXnے`JXQfpvbHAZ`vXnpZHAb~HfJ`ےvpfH˂pZZdQbt˂rXQltbے`JlJfHAZp˂rtAJlbے`nXv`XQJ`ےvp`vtArdf~HdrtAvpfr˂pnXv`p˂rvpfے`ppvnbHAZp~f`HAbےlJfJ`ےdQZ|XQr˂pvnrXQJtbdQJXQrf~HbHAZXnv|ZdQbfpvJltH~fZHAbf~HXQJ`ےH~fZHAbXv`f˂rXQvXn`JXQrpvnbHAZpdrtAJpZHAbvf~H`ےbZ|d˂pZHAfpvp˂rpfH~tlJnXv`bdQZ|`vXnے`JXQfpvbHAZ`pfHے`JXQ~HfJ`ےvpfH˂pZXv`f˂rXQltbے`JfpvHAZp˂tAJlbے`nXv`XQJ`ےf`vtArdf~HdrtAvpfr˂pnXv`p˂r~f`r˂ppvnbHAZp~f`HAbے~HfJ`ےdQZ|XQr˂nXv`rXQJtbnJXQrf~HbHAZXnv|ZdQbfpvJltH~fZHAےf~HXQJ`ےvXn`JXQrXv`f˂rXQvXn`JXQrpvnbHAZpdrtAJp`JXQf~H`ےbvpfH˂pZHAfpvp˂rpfHXtlJnXv`bdQZ|`vXn`JXQrfpvbHAZvpfHbtl~HfJ`ےvpfH˂pZXv`f˂rXQltbr˂pfpvHAZp˂f`vbے`nXv`XQJ`ےnvptArdf~HdrtAvpfbtlnXv`p˂r~f`JA|ZpvnbHAZp~f`HAbے~HfJ`ےdQZ|ZHAbnXvfrXQJXnvJXQrf~HJltfH~|ZdQbfpvJltH~fJtAdf~HXQJ`ےvXH~dQbtXv`f˂rXQvXn`JXQrpvnbHAZpdtAJlے`JXQ~Hfp`ےbpfH~˂pZHAfpvdrtAJf`vXtlJnXv`bdQZ|`vXn|ZdQbfpvbHAZf`vlJtAr~HfJ`ےJvpfH˂pZXv`f˂rXQtbnr˂pvnXHAZp˂f`vbے`nXv`ltbnvptArdf~HdrtAvpftlJnXv`p˂rXnvd|ZQpvnltb~f`HAbے~HfJ`ےvpfZHAXQrv`frXQJXnvJXQrf~HdQZ|fH~|ZdQbfpvJltH~ftArdf~HXQJ`ےpfH~blJtXv`fdQZ|vXn`JXQrpvnbHAZpHf`˂pZ~Hfp`ےbpfH~˂pZHAfpvdrtAJvpftlJnXv`bdQZ|`vXn|ZdQbfpvbHAZf`vArd|~HfdrtAJvpfH˂pZXv`f˂rXQvXnHAbےvnXHAZp˂f`vbے`nXv`ltbے`JXQtArdfHfdrtAvpftlJnXv`p˂rXnZdQbtpvnltb~f`HAbے~HfJ`ےvpfH`JXQrv`f~rXQJXnvJXQrf~HdQtAJlrZHA|ZdQbpvnJltH~ftArdf~HXQJ`ےf`vXlJtXv`fdQZ|vXn`JXQrpvnbHAZp~f`˂pZfpv`ےbpfH~˂pZHAfpvtbdQbے`tlJrXQJ`bdQZ|`vXn|ZdQbfpvJltnvpArd|~HfdrtAJvpfH˂pZXv`f˂rXQvXnHAbnXv`HAZp˂f`vbے`nXv`Z|dJXQrtArdےHAZdrtAvpftlJnXv`bdQZ|fH~ZdQbpvnltb~f`HAے`~HfJ`ےvpfH˂pZHAf~HrXQJXnvJXQrf~HrtAJlpZHA|ZdQbp˂rJltH~ftArdf~HdrtAf`vXJtArdXv`fdQZ|vXnJXQrbpvnbHAZp~f`bے`fpv`ےbpfH~˂pZHAfpvtbdQbے`tlJXQJ`ےbdQZ|`vXn|ZdQbfpvJltnvp|ZdQ~HfdrtAJvpfHtlJXv`f˂rXQvXnJXQrnXv`HAZp˂f`vbے`nXv`Z|lJXQrtArdbHAZdrtAvpftlJnXv`bdQZ|`vXnbtlpvnltb~f`tAd|~HfJ`ےvpfH˂pZHAf~fvrXQJXnvJXQrf~HtbdQZZAbے|ZdQbp˂rJltH~ftArdf~HdrtAvpfJtArdXv`fdQZ|vXnZdQbtpvnbHAZp~f`bے`nXv`ےJlpfH~˂pZHAfpv|dr`JXQrtlJXQJ`ےbdQZ|`vXn|ZdQbfpvJltH~f|ZdQ~HfdrtAJvpfHlJtAXv`f˂rXQvXnpZHAb`f~tbdQf`vbے`nXv`tAJl璀˂pZtArdbHAZdrtAvpftlJnXv`bdQZ|`vXnbtJApvnltb~f`rd|~HfJ`ےvpfHے`JHfpvZ|dXnvJXQrf~HtbdQZHAbے|ZdQbp˂rJltے`JXQtArdf~HdrtAvpfrd|Xv`fdQZ|vXnZdQbtpvnbHAZp~f`XQr˂nXvrtAJlpfH~˂pZHAfpv|dt`JXQrtlJXQJ`ےbdQZ|r˂p|ZdQbfpvJltHXnZdQbt琕HfpdrtAJvpfHlJtAXv`f˂rXQvXnp`JXQ`f~tbdQf`vbے`nXv`bdQZ|˂pZAtArdbHAZdrtAZHAbtlJnXv`bdQZ|vpfHlJtAvnrltb~f`rd|~HfJ`ےJvpfHrbtHfvnXZ|dXnvJXQrp˂rdrtAb`JX|ZdQbp˂rJltے`JXQtArdf~HdrtA~f`rd|XQJ`ےdQZ|vXnZdQbtpvnltb~f`l|ZdQv`frtAJlpfH~˂pZHAXQJ`ےJltQr˂ptlJXQJ`ےbdQZ|r˂p|ZdQbfpvJltvXnZdQbt琙HAZpdrtAJvpfHlJtAXv`fdQZ|vXnbtl~HfptbdQf`vے`JbHAZbdQZ|ZHAbtArdbHAZdrtAZHAbtlJnXv`bdQZ|vpfHlJAr˂rXQltb~f`rd|~HfdrtAJvpfHJtArdvnXZ|dXnvXQrbtp˂rdrtAے`JX|ZdQbp˂rJltے`JXQtArdfHfdrtA~v|ZdQbJ`ےdQZ|vXnZdQbtpvnltb~f`|lJv`frtAJlpfH~lJtAXQJ`ےdQZ|Qr˂ptlJXQJ`ےbdQZ|r˂p|ZdQbpvnJltpfے`tlJbHAZpdrtAJvpfHlJtAXv`fdQZ|vXntArd~HfptbdQf`vd|ZbHAZdrtAJZHAbfpvbHAZdrtAZHAbtlJrXQJ`bdQZ|JXQHAbtArd˂rXQltb~f`rd|~HfdrtAJvpfH|ZdQbvnv`Z|dXnvdQbtp˂rltbJXQrnXv`p˂rJltے`JXQtArdےHAZdrtAے`J|ZdQbJ`ےdQZ|vXnZdQbtpvnltb~f`tlJf~HrtAJlpfH~lJtArXQJ`ےdQZ|˂pZHAf~HXQJ`ےbdQZ|r˂p|ZdQbp˂rJltXQr˂tlJbHAZpdrtAJvpfےlJtAXv`fdQZ|vXntArdfpvtbdQf`vd|ZbHAZdrtAJbے`fpvbHAZdrtAZHAbtlJXQJ`ےbdQZ|pZHAbtArZd˂rXQltb`JXQrrd|~HfdrtAJvpfH|ZdQtAnXv`Z|dXnvdQbtlJtArp˂rl|dJXQrnXv`p˂rJltے`JXQtArdbHAZdrtAے`JQbtlJ`ےdQZ|˂pZZdQbtpvnltb~f`rd|ffpvrtAJlpfH~lJtArd|ZXQJ`ےrtAJl˂pZHAf~HXQJ`ےbdQZ|r˂p|ZdQbp˂rJltXQrJtArdbHAZpdrtAJHAbےlJtAXv`fdQZ|vXnZdQbtnrXQtbdQf`vd|ZdQbt璐bHAZtbdQbJQfpvbHAZdtAJZHAbtlJXQJ`ےbdQZ|ے`JXQ|Zd˂rXQltb`JXQrrd|~HfdrtAJvpfHlJtAJ`ےZ|dXnvdQbtlJtArp˂rZ|`vr˂pnXv`p˂rltbے`JXQtArdbHAZdrtAr˂pQbtlJ`ےdQZ|˂pZZdQbtpvnltb~f`rd|HAZp˂rtAJlpfH~lJtArd|ZXQJ`ےXnvZHAbf~HXQJ`ےnvpr˂p|ZdQbp˂rJltZHAbJtArdbHAZpdrtAJHAbےlJtAXv`fdQZ|vXnZdQbtrXQJtbdQf`vd|ZdQbt璐bHAZpfH~`JXQfpvbHAZfHfZHAbtlJXQJ`ےbdQZ|ے`JXQZQbt˂rXQltb`JXQrrd|HfpdrtAJvpfHd|Z`ےbZ|dXnvdQbtlJtArp˂rf`pr˂pnXv`p˂r`vXnے`JXQtArdbHAZdrtAr˂plJfJ`ےdQZ|˂pZZdQbtvnrltb~f`dQbtHAZp˂rtAJlpfH~lJtArd|ZXQJ`ےfH~ZHAbf~HXQJ`ےvpfr˂p|ZdQbp˂rJlt`JXQrpvnbHAZpdrtAJHAbےlJtAXQJ`ےdQZ|vXnlJtArrXQJtbdQf`vd|ZdQbt璐bHAZf`vX`JQrfpvbHAZH~fZHAbtlJXQJ`ےbdQZ|˂pZXv`f˂rXQltb`JXQrrd|HAZpdrtAJvpfHd|Z`ےbZ|dXnvdQbtlJtArd|ZHAZp˂rtAJlpfH~tArdXQJ`ے|drnvpbtlnXvtbdQZf`vXے`JXQvnXJltH~ftArdf~HXQJ`ےvpfr˂pnXv`p˂rnvp`JXQrpvnbHAZpHf`ZHAbH~ㅐfdQbt璀rXQJtbdQf`v|ZdQbbHAZtAJlfے`JJtArd`f~|drnvprbtv`fbdQZ|`vXn|ZdQbfpvbHAZH~fZHAbf~HXQJ`ےfH~˂pZXv`f˂rXQvXnے`JXQ`vXnlJtAr`ےbZ|dXnvtlJprQJ`tbdQZXQr˂|ZdQHfpvtAJlfH~lJtAdnXvdrtAvpftlJnXv`p˂r`vXnے`JXQfpvbHAZf`vXHAbے~HfJ`ےvpfHr˂pvˍpfd|ZHAZp˂rtAJlpfH~tArdےbH|drpZHAbbtlnXvtbdQZf`vX|ZdQ`f~JltH~ftArdf~HXQJ`ےvpfr˂pnXv`p˂rnvf`JXQrpvnbHAZp~f`ZHAbH~ㅐfdQbt璀rXQJtbdQf`v|ZdQbAZp˂tAJl璐ے`JJtArd`f~|drnvpbtlHfpvbdQZ|`vXn|ZdQbfpvJltH~fZHAbf~HXQJ`ے~f`˂pZXv`f˂rXQvXn˂pZ`vXnlJtAr`ےbZ|dXnvtd|rXQJ`tbdQZXQr˂|ZdQHfpvtAJlfH~JtArdnXvrAJl瀅vpftlJnXv`bdQZ|`vXnے`JXQfpvrXQvXnHAے`~HfJ`ےvpfHHAbےvˍpfd|ZHAZp˂rtAJlpfے`ZdQbtےbH|drpZHAbbtlnXvtbdQZf`vX|ZdQ`f~tbdQH~ftArdf~HdrtAvpfr˂pnXv`J`ےvpfHJXQrbpvnbHAZp~f``JXQrH~ㅐfdQbt璀rXQJtbdQJXQrlJtAAZp˂tAJl璐ے`JJtArd`fH|drnvpbtlHXv`Z|d`vXn|ZdQbfpvJltH~fZHAbf~HbHAZp~f`tlJXv`f˂rXQvXn˂pZ`vXnlJtAr`ےbZ|d˂pZHArd|rQJtbdQZXQr˂|ZdQfpvtAJlfH~JtArdf~HrtAJl瀅vpftlJnXv`bdQZ|`vXnے`JXQfpv˂rXQvXntAd|~HfJ`ےvpfHHAbےvˍpfd|ZHAZp˂rtAJlbے`ZdQbtbHAZp|drpZHAbbtlnrXQJtbdQZf`vX|ZdQfpvtbdQH~ftArdf~HdrtAvpfr˂pnXv`J`ےvpf~fZdQbtpvnbHAZp~f``pZHAH~ㅐfdQbt璀rXQJtbdQJXQrl|Z˂rXQtAJl璐ے`JJtArd`ےHA|drnvpbtlnXv`Z|dr`vXn|ZdQbfpvJltH~fZHAےf~HbHAXQJ`vXnlJtAXv`f˂rXQvXnbے``vXnlJtAr`ےbZ|d˂pZHAdQbtJ`ےtbdQZXQr˂|ZdQZp˂tAJlfH~JtArdf~HAJtbvpftlJnXv`bdQZ|`vXn`JXQrfpv`ےJlvpfrd|~HfJ`ےvpfHJXQrvˍpfd|ZHAZp˂rtAJlbے`lJtArbHAZp|drpZHAbbtlrXQJ`tbdQZf`vX|ZdQfp`fdQZ|ے`JXQtArdf~HdrtAvpfbtlnXv`tdrH~fZdQbtpvnbHAZp~f`˂p`ZH~ㅐfdQbt璀rXQJtbdQJXQrd|Z˂rXQtAJl璐ے`JJtArdےbHA|drnvpbtl~HfdrtAJr˂p|ZdQbfpvJltH~fJtAdf~HtAJl`vXnlJtAXv`f˂rXQvXnQXb㉀۝`vXnlJfp`ےbZ|d˂pZHAdQbtJbHAtbdQZXQr˂|ZdQZp˂tAJlfH~JtArdpvnltbZHAbtlJnXv`bdQZ|`vXn|ZdQbfpvtbdQZvpfrd|~HfJ`ےJvpfHpJAHrvˍpfvnXHAZp˂rtAJlbے`lJtAdQZp˂|dtApZHAbbtlrXQJ`tbdQZf`vX|ZdQXv`pdQZ|ے`JXQtArdf~HdrtAvpftlJnXv`|drH~fvXZdQbtpvnltb~f`ˁ`pH~ㅐfv`frXQJtbdQJXQrbtlrXQJ`Jltے`JJtArdےbHA|drnvpbtlvnrdrtAJr˂p|ZdQbfpvJltH~ftArdf~HtAJl璕nvplJtAXv`fdQZ|vXnJAHr󙐝`vXn~Hfp`ےbZ|d˂pZHAJtArdbHAbnvXQr˂|ZdQZp˂tAJlfے`JJtArdXQJ`pbdQZ|ZHAbtlJnXv`bdQZ|`vXn|ZdQbfpvtbdQtAfH~rd|~HfdrtAJvpfHˁ`ZQXvˍpfvnXHAZp˂rtAJlbے`|ZdQZp˂pfHpZHAbbtlrXQJ`tbdQZXQr˂|ZdQ˂rXQdrtے`JXQtArdfHfdrtAvpftlJnXv`Jltf`vXZdQbtpvnltb~f`b㉀ۑpH~ㅐfv`frXQJtbdQJXQrbtlrXQJ`f`vXے`JJtArdےbHA|drpZHAbbtlJ`ےAJltr˂p|ZdQbpvnJltH~ftArdf~HbdQZ|nvplJtAXv`fdQZ|vXnJAHr󙐝`vXn~Hfp`ےbZ|d˂pZHAJtArdbAZp˂nvpXQr˂|ZdQZp˂tAJl璐ے`JJtArdbHAZpbdQZ|ZHAbtlJrXQJ`bdQZ|`vXn|ZdQbfpvdrtAfH~rd|~HfdrtAJvpfHˁ`ZQXvˍp|vnXHAZp˂tAJlbے`tlJrXQJfH~pZHAbbtlrXQJ`tbdQZXQr˂|ZdQ`ےbdrtے`JXQtArdےHAZdrtAvpftlJnXv`JltfvnZdQbtpvnltb~f`AHr󙐂˂drQtv`frXQJtbnJXQrfpv`ےbf`vXے`JJtArdےbHA|drpZHAbbtlHAZp˂AJlbr˂p|ZdQbp˂rJltH~ftArdf~HbdQZ|vpfےlJtAXv`fdQZ|vXn`ZQXbJlt~Hfp`ےbvpfH˂pZHA~HfHAZp˂nvpXQr˂|ZdQZp˂tAJl璐ے`JJtArdrXQJQZ|dZHAbtlJXQJ`ےbdQZ|`vXn|ZdQbfpvltb`JXQrrd|~HfdrtAJvpfHۑpJbAdZ|vnXHAZp˂f`vbے`pvnrXQJfH~pZHAbbtlrXQJ`tbdQZXQr˂|ZdQ`ےbrtAJlے`JXQtArdbHAZdrtAvpftlJnXv`dQZ|˂pZZdQbtpvnltb~f`AHr󙐂˂drQtv`frXQJXnvJXQrXv`f`ےbAf`vXے`JJfpvےbHA|drpZHAbbtlHAZp˂tbdQr˂p|ZdQbp˂rJltH~ftArdf~HdrtAJHAbےlJtAXv`fdQZ|vXn`ZQXbJlt~Hfp`ےbpfH~˂pZHA~HfZrXnvpXQr˂nXvZp˂tAJl璐ے`JJtArdbHAZ|AJZHAbtlJXQJ`ےbdQZ|`vXn|ZdQbfpvltb`JXQrrd|~HfdrtAJvpfHˁ`bAdZ|vnXHAZp˂f`vbے`pvnQJ`ےfH~pZHAb`f~rXQJ`tbdQZXQr˂|ZdQZp˂ltbے`JXQtArdbHAZdrtAvpftlJnXv`dQZ|˂pZZdQbtpvnltb~f`ZQXb㉀drQtv`frXQJXnvJXQrXHfpbHAZpf`vXے`JHfpvےbHA|drpZHAbbtlrXQJ`nvpr˂p|ZdQbp˂rJltے`JXQtArdf~HdtbdQHAbےlJtAXv`fdQZ|vXnۑpJAHJlt~Hfp`ےbpfH~˂pZHAvnX˂rXnvpXQr˂nXvZp˂tAJl璐ے`JJtArdےbHAfHfZHAbtlJXQJ`ےbdQZ|r˂p|ZdQbfpvZ|d`JXQrrd|HfpdrtAJvpfHr󙐂ˁ`bAdZ|vnXHAZp˂f`vbے`v`fQJ`ےfH~pZHAb`f~rXQJ`tbdQZXQr˂|ZdQZp˂`vXnے`JXQtArdbHAZdrtAZHAbtlJnXv`rtAJl˂pZZdQbtvnrltb~f`ZQXb㉀drQtv`frXQJXnvJXQr~HfpbHAZf`vXے`JHfpvےbHA|dtApZHAbbtlrXQHAZvpfr˂p|ZdQbp˂rJltے`JXQtArdf~HtbdQHAbےlJtAXQJ`ےdQZ|vXnۑp`ZJlt~Hfp`ےbpfH~˂pZHAvnXrXQJ`nvpXQr˂nXvZp˂Jltے`JJtArdp˂rH~fZHAbtlJXQJ`ےbdQZ|r˂p|ZdQbfpvZ|d`JXQrrd|HAZpdrtAJvpfHQXb㉀bAdZ|vnXHAZp˂f`vbے`v`pvےJlfH~pZHAb`f~rXQJ`bnvXQr˂|ZdQXQJ`ے`vXnے`JXQtArdbHAZdrtAZHAbtlJnXv`rtAdQZ˂pZZdQbt˂rXQltb~f`pJAHrdrQtv`frXQJXnvJXQrnXvtbdQZf`vXے`JHfpvےbHApfHpZHAbbtlbHAZvpfr˂p|ZdQbp˂rJltے`JXQtArdfHf|drHAbےlJtAJ`ےdQZ|vXnˁ`ZJlt~Hfp`ےbpfH~˂pZHA`f~|drnvpXQr˂nXvZp˂f`vXے`JJtArdp˂rH~fZHAbtlJXQJ`ےbdQZ|r˂p|ZdQbpvntAJl`JXQrrd|bHAZpdrtAJvpfHQXb㉀bAdZ|vnXHAZp˂f`vbے`HfpvtAJlfH~pZHAb`f~rXQJ`nvpXQr˂|ZdQXQJ`p`vXnے`JXQfpvbHAZdrtAZHAbtlJrXQJ`tbdQZ˂pZZdQbt˂rXQltb~f`pJAHQXdrQtv`frXQJXnvJXQrnXvtbdQZf`vXے`JHfpvےbHAfH~pZHAbbtl˂rXQvpfr˂pnXv`p˂rJltے`JXQtArdp˂r|drHAbےlJtAJ`ےdQZ|vXnb㉀ۑpJlt~Hfp`ےJlpfH~˂pZHA`f|drnvpXQr˂nXvZp˂f`vXے`JJtArdJ`ےH~fZHAbf~HXQJ`ےbdQZ|r˂p|ZdQbXQJ`ےtAJl|`JXQrrd|bHAZpdrtAJvpfZJAHrbAdZ|vnXtbdQf`vbے`nXv`tAJlfH~pZHA`f~rXQJ`nvpXQr˂|ZdQbHAZp`vXnے`JXQfpvbHAZdrtAZHAbtlJbHAZdrtA˂pZZdQbt˂rXQltbHAbےˁ`ZQXdrQtv`fZ|dXnvJXQrf~HtbdQZf`vXے`JXQHfpvےbHAfH~pZHAbbtl˂rXQvpfr˂pnXv`p˂rJltے`JXQtArdp`ےJltHAbےlJtAJ`ےdQZ|`JXQrb㉀ۑpJlt~HfprtAJlpfH~˂pZHAfpv|drnvprbt璀nXvZp˂f`vXے`JJfpvJ`ےH~fZHAbf~HXQJ`ےbdQZ|r˂p|ZdQbbHAZpbdQZ|`JXQrrd|bHAZpdrtAJ˂pZJAHfbAdZ|vnXtbdQf`vbے`nXv`tAJlfH~lJtAd`f~rXQJ`nvpXQr˂~HrXQJ`vXnے`JXQfpvbHAZdtAJZHAbtlJ˂rXQltb˂pZZdQbt˂rXQltbHAbے`vXndrQtv`fZ|dXnvJXQrf~HtbdQZf`vX|ZdQHfpvےbHAfH~pZHAbfpv`ےbvpfr˂pnXv`p˂rltbے`JXQtArdJ`ےnvpHAbےlJtAJ`ےdQZ|`JXQrvˍpfJlt~HfprtAJlpfH~˂pZHAXv`f|drnvpbtlnXvZp˂f`vXے`JnXv`HAZp˂H~fZHAbf~HXQJ`ےnvpr˂p|ZdQbbHAZpff`v`JXQrrd|bHAZpdrtAJے`H~ㅐfbAdZ|vnXtbdQf`vے`J~HftAJlfH~JtArd`f~rXQJ`nvpXQr˂f~HrXQJ`vXnے`JXQfpvbHAZfHfZHAbtlJ˂bXnv˂pZZdQbt˂rXQltbJXQr`vXndrQtv`fZ|dXnvXQrbtpvntbdQZf`vX|ZdQHfpvےbHAfH~pZHAbfpv`ےbvpfr˂pnXv`p˂r`vXnے`JXQtArdHAZp˂pfH~HAbےlJfJ`ےdQZ|˂pZHAvˍpfJlt~HfprtAJlpfH~l|ZXv`f|drnvpbtlnXvZp˂f`vXے`JnXHfHAXQJ`H~fZHAbf~HXQJ`ےvpfr˂p|ZdQbrXQJf`v`JXQrpvnbHAZpdrtAJbے`H~ㅐfbAdZ|vnXtbdQf`vdQbt璐~HftAJlfH~JtArd`f~rXQJ`nvpXQr˂pvnےJl`vXnے`JXQfpvbHAZH~fZHAbtlJ`ےbnvpfH˂pZXv`f˂rXQltbJXQr`vXndrQtv`fZ|dXnvlJtArp`ftbdQZf`vX|ZdQHfpvےJlfH~pZHAbXv`ftbQZdvpfr˂pnXv`p˂r`vXnے`JXQtArdHAZp˂~f`HAbے~HfJ`ےdQZ|˂p`JvˍpfJlt~HfprtAJlpfH~d|l~Hfp|drnvpbtlnXvtbdQZf`vXے`J~HfrtAJlH~fZHAےf~HXQJ`ےvpfr˂p|ZdQbrXQHAvXn`JXQrpvnbHAZpdrtAJXQr˂H~ㅐfbAdZ|vnXtbdQf`vJtArdvnXtAJlfH~JtArd`f~|drnvpXQr˂pvntbd`vXn`JXQrfpvbHAZH~fZHAbtlJZp˂vpfH˂pZXv`f˂rXQltbpZHAb`vXndrQtv`fZ|dXnv|ZdQv`pvtbdQZf`vX|ZdQHfpvtAJlfH~pZHAbXv`pQZ|dvpfbtlnXv`p˂r`vXnے`JXQfpvrXQJ`~f`HAbے~HfJ`ےdQZ|ے`JvˍpfJltHfpvrtAJlpfH~btlnrXQ|drnvpbtlnXvtbdQZf`vXے`JvnXrtAJlH~fJtAdf~HXQJ`ےvpfr˂pnXv`ےbHAvXnv`JXQrpvnbHAZpdtAJlXQr˂H~ㅐfbAdZ|nrXQtbdQf`vJtArdJ`AZtAJlfH~JtArd`f~|drnvpXQr˂v`ftbd`vXn|ZdQbfpvbHAZH~fZHAbf~HZp˂fH~˂pZXv`f˂rXQtbnpZHAXQ`vXndrQtJ`ےZ|dXnv|ZdQp˂rtbdQZf`vX|ZdQHfpvtAJlfH~pZHA~HfpQZrtAvpftlJnXv`p˂r`vXnے`JXQfpvrXQJ`f`vXHAbے~HfJ`ےvpfr˂pvˍpfJlt66666666666666666666666666666666666666666666667777777777 \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv37_0.dat b/mpdf/qrcode/data/qrv37_0.dat deleted file mode 100644 index d670ed0..0000000 --- a/mpdf/qrcode/data/qrv37_0.dat +++ /dev/null @@ -1,329 +0,0 @@ -~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijihgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkhghghgggfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkggghghghfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMMMMMMNLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkghghghghfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQMNMNMNMNLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkghghghghfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQMNMNMNMNLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkghghghghfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQMNMNMNMNLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkghghghghfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQMNMNMNMNLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkghghggggfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPOMNMNMNMNLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkgghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPOMMMMMMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkhghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkhghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlkjijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmjijijijihghgggggfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmjijijijighghghghfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPOMMMMMNMNLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmjijijijighghghghfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPOMNMNMNMNLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmjijijijighghghghfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPOMNMNMNMNLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmjijijijighghghghfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSRQRQPOPOPOPOMNMNMNMNLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmjijijijighghghghfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQPOPOPOPOMNMNMNMNLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmjijijijighggggggfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUTSTSRQRQRQRQPOPOPOPOMNMNMNMMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQPOPOPOPOMMMMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmlkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBA@?@?@?~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopopolklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC@?@?@?@?~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopoponmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCBABABA@?@?@?@?~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEBABABABA@?@?@?@?~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqponmnmnmnmlklklklkjijijijihgggggghfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[ZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMMMLKLKLKLKJIJIJIJIHGHGHGHGFEDCDCDCBABABABA@?@?@?@?~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststspopopoponmnmnmnmlklklklkjijijijighghghghfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOMMMNMNMNLKLKLKLKJIJIJIJIHGHGHGHGDCDCDCDCBABABABA@?@?@?@?~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutststsrqpopopoponmnmnmnmlklklklkjijijijighghghghfefefefedcdcdcdcbabababa`_`_`_`_^]^]\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOMNMNMNMNLKLKLKLKJIJIJIJIHGFEFEFEDCDCDCDCBABABABA@?@?@?@?~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvurqrqrqrqpopopoponmnmnmnmlklklklkjijijijighghghghfefefefedcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOMNMNMNMNLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDCBABABABA@?@?@?@?@?@?@?@?~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvutsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijighghghghfefefefedcdcdcdcbabababa`_`_^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOMNMNMNMNLKLKLKLKJIHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?@?@?@?@?~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwtstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijighghghghfefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOMNMNMNMNLKLKLKLKHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?@?@?@?@?~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijigggggghgfefefefedcdcdcdcbaba`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOMNMNMMMMLKJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?@?@?@?@?~}~}~}~}|{|{|{|{zyzyzyzyvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOMMNMNMNMJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?@?@?@?@?~}~}~}~}|{|{|{|{zyzyzyxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcbaba`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?@?@?@?@?~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?@?@?@?@?~}~}~}~}|{|{|{zyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghghghgfefedcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?@?@?@?@?~}~}~}~}zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijigggghghgdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?@?@?@?@?~}~}~}|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghgfefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?@?@?@?@?|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?@?@?@?@?~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPONMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?@?@?@?@?~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMNMMMMMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?@?@?@?@?~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?@?@?@?@?@?@?@?@?>=>=>=>=<;<;<;<;:98787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!     - - - - @?@?@?@?>=>=>=>=<;<;<;<;878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!     - - - - @?@?@?@?>=>=>=>=<;:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!        - - - - @?@?@?@?>=>=>=>=:9:9:9:9878787876565656543434333212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!        - - - - @?@?@?@?>=<;<;<;:9:9:9:9878787876565656533343434212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!        - - - - @?@?@?@?<;<;<;<;:9:9:9:9878787876565656534343434212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!        - - - - @?>=>=>=<;<;<;<;:9:9:9:9878787876565656534343434212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - >=>=>=>=<;<;<;<;:9:9:9:9878787876565656534343434212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - >=>=>=>=<;<;<;<;:9:9:9:9878787876565656534343434212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - >=>=>=>=<;<;<;<;:9:9:9:9878787876565656534343333212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - >=>=>=>=<;<;<;<;:9:9:9:9878787876565656533434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - >=>=>=>=<;<;<;<;:9:9:9:9878787876565656543434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - >=>=>=>=<;<;<;<;:9:9:9:987878787656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - >=>=>=>=<;<;<;<;:9:9:9:987878787656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - >=>=>=>=<;<;<;<;:9:9:9:98787878765656565434333330/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - >=>=>=>=<;<;<;<;:9:9:9:98787878765656565434343430/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - >=>=>=>=<;<;<;<;:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - >=>=>=>=<;<;<;<;:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - >=>=>=>=<;<;<;<;:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - >=>=>=>=<;<;<;<;:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - >=>=>=>=<;<;<;<;:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - >=>=>=>=<;<;<;<;:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - >=>=>=>=<;<;<;<;:9:9:9:98787878765434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - >=>=>=>=<;<;<;<;:9:9:9:98787878743333334212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - >=>=>=>=<;<;<;<;:9:9:9:98787878734343434212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - >=>=>=>=<;<;<;<;:9:9:9:98787878734343434212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - >=>=>=>=<;<;<;<;:9:9:9:98787878734343434212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - >=>=>=>=<;<;<;<;:9:9:9:98787878734343434212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - >=>=>=>=<;<;<;<;:9:9:9:98787878734343434212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - >=>=>=>=<;<;<;<;:9:9:9:98787878733333343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - >=>=>=>=<;<;<;<;:9:9:9:98787878743434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - >=>=>=>=<;<;<;<;:9:9:9:98787878743434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - >=>=>=>=<;<;<;<;:9:9:9:98787876543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - >=>=>=>=<;<;<;<;:9:9:9:96565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - >=>=>=>=<;<;<;<;:9:9:9:96565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - >=>=>=>=<;<;<;<;:9:9:9:96565656533333434212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - >=>=>=>=<;<;<;<;:9:9:9:96565656534343434212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - >=>=>=>=<;<;<;<;:9:9:9:96565656534343434212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - >=>=>=>=<;<;<;<;:9:9:9:96565656534343434212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - >=>=>=>=<;<;<;<;:9:9:9:96565656534343434212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!    >=>=>=>=<;<;<;<;:9:9:9:96565656534343433212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!    - >=>=>=>=<;<;<;<;:9:9:9:96565656533334343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#        - - - - >=>=>=>=<;<;<;<;:9:9:9:96565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#       - - - - zzyyxxwwffggmmnn!!""##$$||{{zzyy11223344llkkjjiiTTUUVVWW!!  - - **++,,--ssrrqqpp::;;<<==ccbbaa``JJKKLLMM??>>==<<##$$%%&&zzyyxxww33445566jjiihhggCCDDEEFFZZYYXXWWSSTTUUVVJJIIHHGG{{||}}~~ ~~,,--..//qqppoonn<<==>>??aa``__^^LLMMNNOO vvuuttssooppqqrr%%&&''((xxwwvvuu55667788hhggffeeXXYYZZ[[ !!~~}}||..//0011oonnmmll>>??@@AA__^^]]\\NNOOPPQQ;;::9933''(())**vvuuttss778899::ffeeddccGGHHIIJJVVUUTTSSWWXXYYZZFFEEDDCC}}||{{zz00112233mmllkkjj@@AABBCC]]\\[[ZZPPQQRRSS!!""##$$rrqqppoossttuuvv - - ))**++,,ttssrrqq99::;;<>bbaa``__KKLLMMNNRRQQPPOO[[\\]]^^BBAA@@??yyxxwwvv44556677iihhggffDDEEFFGGYYXXWWVVTTUUVVWW%%&&''((nnmmggffwwxxyyzz - -  ~~}}--..//00ppoonnmm==>>??@@``__^^]]``aabbcc &&''(())wwvvuutt66778899ggffeeddFFGGHHIIWWVVUUTTVVWWXXYY..--,,++ !!""~~}}||{{//001122nnmmllkk??@@AABB^^]]\\[[OOPPQQRRNNMMLLKK__``aabb>>==<<;;uuttssrr8899::;;eeddccbbHHIIJJKKUUTTSSRRXXYYZZ[[))**++,,eeddccbb{{||}}~~ !!""##$$||{{zzyy11223344llkkjjiiAABBCCDD\\[[ZZYYddeeffgg - - **++,,--ssrrqqpp::;;<<==ccbbaa``JJKKLLMMSSRRQQPPZZ[[\\]]**))((''##$$%%&&zzyyxxww33445566jjiihhggCCDDEEFFZZYYXXWWSSTTUUVVJJIIHHGGccddeeff::998877 !!""#qqppoonn<<==>>??aa``__^^LLMMNNOOQQPPOONN\\]]^^__--..//00aa``__^^%%&&''((xxwwvvuu55667788hhggffeeEEFFGGHHXXWWVVUUmmnnoopp !!~~}}||..//0011oonnmmll>>??@@AA__^^]]\\NNOOPPQQOONNMMLL^^__``aa&&%%$$##''(())**vvuuttss778899::ffeeddccGGHHIIJJVVUUTTSSWWXXYYZZFFEEDDCCgghhiijj66554433#$$%%&&'mmllkkjj@@AABBCC]]\\[[ZZPPQQRRSSMMLLKKJJ``aabbcc11223344]]\\[[ZZ - - ))**++,,ttssrrqq99::;;<>bbaa``__KKLLMMNNRRQQPPOO[[\\]]^^BBAA@@??kkllmmnn221100//'(())**+iihhggffDDEEFFGGYYXXWWVVTTUUVVWWIIHHGGFFddeeffgg55667788YYXXWWVV  ~~}}--..//00ppoonnmm==>>??@@``__^^]]MMNNOOPPPPOONNMMuuvvwwxx - -&&''(())wwvvuutt66778899ggffeeddFFGGHHIIWWVVUUTTVVWWXXYYGGFFEEDDffgghhii//001122nnmmllkk??@@AABB^^]]\\[[OOPPQQRRNNMMLLKK__``aabb>>==<<;;ooppqqrr..--,,+++,,--../eeddccbbHHIIJJKKUUTTSSRRXXYYZZ[[EEDDCCBBhhiijjkk99::;;<>llmmnnoo~~}}==>>??@@LLKKJJII%%&&''((xxwwvvuu55667788hhggffeeEEFFGGHHXXWWVVUUUUVVWWXXHHGGFFEE}}~~~~}}||..//0011oonnmmll>>??@@AA__^^]]\\NNOOPPQQOONNMMLL^^__``aa??>>==<>bbaa``__KKLLMMNNRRQQPPOO[[\\]]^^BBAA@@??kkllmmnn221100//{{||}}~~""!! ::;;<<==YYXXWWVVTTUUVVWWIIHHGGFFddeeffgg99887766ttuuvvwwxxwwvvuuEEFFGGHHDDCCBBAA ~~}}--..//00ppoonnmm==>>??@@``__^^]]MMNNOOPPPPOONNMM]]^^__``@@??>>==wwvvuutt66778899ggffeeddFFGGHHIIWWVVUUTTVVWWXXYYGGFFEEDDffgghhii77665544vvwwxxyy zzyyxxww??@@AABB^^]]\\[[OOPPQQRRNNMMLLKK__``aabb>>==<<;;ooppqqrr..--,,++>>??@@AAUUTTSSRRXXYYZZ[[EEDDCCBBhhiijjkk55443322xxyyzz{{ttssrrqqIIJJKKLL@@??>>==!!""##$$||{{zzyy11223344llkkjjiiAABBCCDD\\[[ZZYYQQRRSSTTLLKKJJIIaabbccdd<<;;::99 !ssrrqqpp::;;<<==ccbbaa``JJKKLLMMSSRRQQPPZZ[[\\]]CCBBAA@@jjkkllmm33221100zz{{||}}vvuuttssCCDDEEFFZZYYXXWWSSTTUUVVJJIIHHGGccddeeff::998877ssttuuvv**))((''BBCCDDEEQQPPOONN\\]]^^__AA@@??>>llmmnnoo1100//..||}}~~ppoonnmmMMNNOOPP<<;;::99%%&&''((xxwwvvuu55667788hhggffeeEEFFGGHHXXWWVVUUUUVVWWXXHHGGFFEEeeffgghh88776655!""##$$%oonnmmll>>??@@AA__^^]]\\NNOOPPQQOONNMMLL^^__``aa??>>==<>??@@``__^^]]MMNNOOPPPPOONNMM]]^^__``@@??>>==mmnnoopp00//..--)**++,,-ggffeeddFFGGHHIIWWVVUUTTVVWWXXYYGGFFEEDDffgghhii77665544vvwwxxyy''&&%%$$hggffeedOOPPQQRRNNMMLLKK__``aabb>>==<<;;ooppqqrr..--,,++ ~~}}||{{NOPQRSSTEEDDCCBBhhiijjkk55443322xxyyzz{{%%$$##""ddccbbaaYYZZ[[\\++**))((11223344llkkjjiiAABBCCDD\\[[ZZYYQQRRSSTTLLKKJJIIaabbccdd<<;;::99qqrrsstt,,++**))-..//001ccbbaa``JJKKLLMMSSRRQQPPZZ[[\\]]CCBBAA@@jjkkllmm33221100zz{{||}}##""!! dccbbaa`SSTTUUVVJJIIHHGGccddeeff::998877ssttuuvv**))(('' - - zzyyxxwwTUUVVWWXAA@@??>>llmmnnoo1100//..||}}~~!! ``__^^]]]]^^__``''&&%%$$55667788hhggffeeEEFFGGHHXXWWVVUUUUVVWWXXHHGGFFEEeeffgghh88776655uuvvwwxx((''&&%%12233456__^^]]\\NNOOPPQQOONNMMLL^^__``aa??>>==<>??@@``__^^]]MMNNOOPPPPOONNMM]]^^__``@@??>>==mmnnoopp00//..--}}~~ <<==>>??WWVVUUTTVVWWXXYYGGFFEEDDffgghhii77665544vvwwxxyy''&&%%$$%%&&''((XWWVVUUT__``aabb>>==<<;;ooppqqrr..--,,++  - -nnmmggff`aabbccd55443322xxyyzz{{%%$$##""TTSSRRQQiijjkkll~~}}||AABBCCDD\\[[ZZYYQQRRSSTTLLKKJJIIaabbccdd<<;;::99qqrrsstt,,++**))@@AABBCCSSRRQQPPZZ[[\\]]CCBBAA@@jjkkllmm33221100zz{{||}}##""!! ))**++,,TSSRQPONccddeeff::998877ssttuuvv**))(('' - -  eeddccbbdeeffggh1100//..||}}~~!! PPOONNMMmmnnoopp{{zzyyxxEEFFGGHHXXWWVVUUUUVVWWXXHHGGFFEEeeffgghh88776655uuvvwwxx((''&&%%DDEEFFGGOONNMMLL^^__``aa??>>==<>==mmnnoopp00//..--}}~~  ~~}}LLMMNOPQGGFFEEDDffgghhii77665544vvwwxxyy''&&%%$$::;;<<==EEDDCCBBooppqqrr..--,,++ YYXXWWVVssttuuvv%%$$##""DDCCBBAAyyzz{{|| oonnmmlkQQRRSSTTLLKKJJIIaabbccdd<<;;::99qqrrsstt,,++**)) - - ||{{zzyyRSSTTUUVCCBBAA@@jjkkllmm33221100zz{{||}}##""!! >>??@@AAAA@@??>>ssttuuvv**))(('' - -  - - !!""##UUTTSSMMwwxxyyzz!! @@??>>==}}~~jihggffeUUVVWWXXHHGGFFEEeeffgghh88776655uuvvwwxx((''&&%%xxwwvvuuVWWXXYYZ??>>==<>==mmnnoopp00//..--}}~~  ppoonnmm^__``aab77665544vvwwxxyy''&&%%$$ - - JJKKLLMM3221100/ ,,--..//DDCCBBAA 44332211 !!""##]\\[[ZZYaabbccdd<<;;::99qqrrsstt,,++**)) - - - - ggffeeddbccddeef33221100zz{{||}}##""!! SSTTUUVV/..--,,+ - -  - -00112233@@??>>==00//..--$$%%&&''YXXWWVVUeeffgghh88776655uuvvwwxx((''&&%% ccbbaa``fgghijkl//..--,,~~ ~~WWXXYYZZ+**))((' 99::;;<<<<;;::99 - -QQPPOONN,,++**))(())**++UTTSSRQPiijjkkll44332211yyzz{{||$$##""!!__^^]]\\mmnnoopp++**))(( - -  }}||{{zz[[\\]]^^'&&%%$$# !!""~~}}||{{==>>??@@33221100  - - MMLLKKJJ((''&&%%,,--..//ONMMLLKKmmnnoopp00//..--}}~~  [[ZZYYXXqqrrsstt''&&%%$$ - - yyxxwwvv__``aabb#""!!  ##$$%%&&zzyyxxwwAABBCCDD//..--,, ~~IIHHGGFF$$##""!!00112233JJIIHHGGqqrrsstt,,++**)) - -  !!WWVVUUTTuuvvwwxx##""!!  !!uuttssrrccddeeff - -  - -''(())**vvuuttssEEFFGGHH++**))(( !!""##}}||{{zzEEDDCCBB 99::;;<>==>>??@@BBAA@@??yyzz{{||$$##""!! &&''(())JJIIHHGG}}~~ - -  &&''(())mmggffeeppqqrrss !!""~~}}||{{//001122nnmmllkkMMSSTTUU##""!!  - - (())**++uuttssrr==<<;;::AABBCCDD>>==<<;;}}~~  **++,,--FFEEDDCC - - **++,,--ddccbbaattuuvvww ##$$%%&&zzyyxxww33445566jjiihhggVVWWXXYY ~~,,--..//qqppoonn99887766EEFFGGHH::998765 - - ..//0011BBAA@@?? !!~~}}||..//0011``__^^]]xxyyzz{{ - -  - -''(())**vvuuttss778899::ffeeddccZZ[[\\]] !!""##}}||{{zz00112233mmllkkjj55443322 IIJJKKLL43322110 - - 223399::>>==<<;; ""##$$%%{{zzyyxx22334455\\[[ZZYY||}}~~ ++,,--..rrqqppoo;;<<==>>bbaa``__^^__``aa$$%%&&''yyxxwwvv44556677iihhggff1100//.. - - MMSSTTUU0//..--,  ~~}};;<<==>>::993322 - -  &&''(())wwvvuutt66778899XXWWVVUU !!""~~}}||{{//001122nnmmllkk??@@AABB^^]]\\[[bbccddee (())**++uuttssrr8899::;;eeddccbb--,,++** - - VVWWXXYY,++**))( !!""##$$||{{zzyy??@@AABB1100//.. - - **++,,--ssrrqqpp::;;<<==TTSSMMLL##$$%%&&zzyyxxww33445566jjiihhggCCDDEEFFZZYYXXWWffggmmnn - - ~~,,--..//qqppoonn<<==>>??aa``__^^))((''&& ZZ[[\\]](''&&%%$ - - %%&&''((xxwwvvuuCCDDEEFF--,,++** !!~~}}||..//0011oonnmmll>>??@@AAKKJJIIHH - -''(())**vvuuttss778899::ffeeddccGGHHIIJJVVUUTTSSooppqqrr !!""##}}||{{zz00112233mmllkkjj@@AABBCC]]\\[[ZZ%%$$##""^^__``aa$##""!!  - - ))**++,,ttssrrqqGGHHIIJJ))((''&&""##$$%%{{zzyyxx22334455kkjjiihhBBCCDDEEGGFFEEDD ++,,--..rrqqppoo;;<<==>>bbaa``__KKLLMMNNRRQQPPOOssttuuvv$$%%&&''yyxxwwvv44556677iihhggffDDEEFFGGYYXXWWVV!! ~~}}||{{bbccddee   ~~}}--..//00ppoonnmmKKLLMMSS%%$$##"" &&''(())wwvvuutt66778899ggffeeddFFGGHHIICCBBAA@@ !!""~~}}||{{//001122nnmmllkk??@@AABB^^]]\\[[OOPPQQRRNNMMLLKKwwxxyyzz - - (())**++uuttssrr8899::;;eeddccbbHHIIJJKKUUTTSSRR 3399::;;GGFFEEDDmmnnoopp00//..--}}~~  [[ZZYYXXqqrrsstt''&&%%$$ - - ZZ[[\\]]##""!! <<==>>??CCBBAA@@qqrrsstt,,++**)) - -  !!WWVVUUTTuuvvwwxx##""!! ^^__``aa@@AABBCC??>>==<>==<<;; ""##$$%%nnmmggffwwxxyyzz - - ~~}}||YYZZ[[\\)((''&&%  ~~}};;<<==>>::993322 - -  &&''(())eeddccbb{{||}}~~ - -  - - {{zzyyxx]]^^__``%$$##""! !!""##$$||{{zzyy??@@AABB1100//.. - - **++,,--aa``__^^ wwvvuuttaabbccdd!  - - %%&&''((xxwwvvuuCCDDEEFF--,,++** !!~~}}||..//0011]]\\[[ZZ !!""##ssrrqqppeeffggmm - - ))**++,,ttssrrqqGGHHIIJJ))((''&&""##$$%%{{zzyyxx22334455YYXXWWVV$$%%&&''oonnmmggnnooppqq  ~~}}--..//00ppoonnmmKKLLMMSS%%$$##"" &&''(())wwvvuutt66778899UUTTSSMM(())**++ffeeddccrrssttuu!!""##$$||{{zzyy11223344llkkjjiiTTUUVVWW!!  - - **++,,--ssrrqqpp::;;<<==LLKKJJII !!~~,,--..//bbaa``__vvwwxxyy %%&&''((xxwwvvuu55667788hhggffeeXXYYZZ[[ !!~~}}||..//0011oonnmmll>>??@@AAHHGGFFEE""##$$%% !!""##}}||{{zz00112233^^]]\\[[zz{{||}} - -  - - ))**++,,ttssrrqq99::;;<>??@@``__^^]]``aabbcc &&''(())wwvvuutt66778899ggffeeddFFGGHHII@@??>>==**++,,--(())**++uuttssrr8899::;;VVUUTTSS!!""##$$||{{zzyy11223344llkkjjiiAABBCCDD\\[[ZZYYddeeffgg - - **++,,--ssrrqqpp::;;<<==ccbbaa``JJKKLLMM<<;;::99..//0011,,--..//qqppoonn<<==>>??MMLLKKJJ%%&&''((xxwwvvuu55667788hhggffeeEEFFGGHHXXWWVVUUmmnnoopp !!~~}}||..//0011oonnmmll>>??@@AA__^^]]\\NNOOPPQQ332211002233445500112233mmllkkjj@@AABBCCIIHHGGFF - - ))**++,,ttssrrqq99::;;<>??@@``__^^]]MMNNOOPPPPOONNMMuuvvwwxx - -&&''(())wwvvuutt66778899ggffeeddFFGGHHIIWWVVUUTTVVWWXXYY++**))((::;;<<==8899::;;eeddccbbHHIIJJKKAA@@??>>!!""##$$||{{zzyy11223344llkkjjiiAABBCCDD\\[[ZZYYQQRRSSTTLLKKJJIIyyzz{{|| **++,,--ssrrqqpp::;;<<==ccbbaa``JJKKLLMMSSRRQQPPZZ[[\\]]''&&%%$$~~}}||>>??@@AA<<==>>??aa``__^^LLMMNNOO==<<;;::%%&&''((xxwwvvuu55667788hhggffeeEEFFGGHHXXWWVVUUUUVVWWXXHHGGFFEE}}~~~~}}||..//0011oonnmmll>>??@@AA__^^]]\\NNOOPPQQOONNMMLL^^__``aa##""!! {{zzyyxxBBCCDDEE@@AABBCC]]\\[[ZZPPQQRRSS99332211))**++,,ttssrrqq99::;;<>??@@``__^^]]MMNNOOPPPPOONNMM]]^^__``@@??>>==wwvvuutt66778899ggffeeddFFGGHHIIWWVVUUTTVVWWXXYYGGFFEEDDffgghhiissrrqqppJJKKLLMMHHIIJJKKUUTTSSRRXXYYZZ[[,,++**))!!""##$$||{{zzyy11223344llkkjjiiAABBCCDD\\[[ZZYYQQRRSSTTLLKKJJIIaabbccdd<<;;::99 !ssrrqqpp::;;<<==ccbbaa``JJKKLLMMSSRRQQPPZZ[[\\]]CCBBAA@@jjkkllmmoonnmmllNNOOPPQQLLMMNNOOQQPPOONN\\]]^^__((''&&%%%%&&''((xxwwvvuu55667788hhggffeeEEFFGGHHXXWWVVUUUUVVWWXXHHGGFFEEeeffgghh88776655!""##$$%oonnmmll>>??@@AA__^^]]\\NNOOPPQQOONNMMLL^^__``aa??>>==<>??@@``__^^]]MMNNOOPPPPOONNMM]]^^__``@@??>>==mmnnoopp00//..--)**++,,-ggffeeddFFGGHHIIWWVVUUTTVVWWXXYYGGFFEEDDffgghhii77665544vvwwxxyy ccbbaa``ZZ[[\\]]XXYYZZ[[EEDDCCBBhhiijjkk11223344llkkjjiiAABBCCDD\\[[ZZYYQQRRSSTTLLKKJJIIaabbccdd<<;;::99qqrrsstt,,++**))-..//001ccbbaa``JJKKLLMMSSRRQQPPZZ[[\\]]CCBBAA@@jjkkllmm33221100zz{{||}}__^^]]\\^^__``aa\\]]^^__AA@@??>>llmmnnoo55667788hhggffeeEEFFGGHHXXWWVVUUUUVVWWXXHHGGFFEEeeffgghh88776655uuvvwwxx((''&&%%12233456__^^]]\\NNOOPPQQOONNMMLL^^__``aa??>>==<>??@@``__^^]]MMNNOOPPPPOONNMM]]^^__``@@??>>==mmnnoopp00//..--}}~~ <<==>>??WWVVUUTTVVWWXXYYGGFFEEDDffgghhii77665544vvwwxxyy''&&%%$$ !!""##SSRRQQPPjjkkllmmhhiijjkk55443322xxyyzz{{xxwwvvuuAABBCCDD\\[[ZZYYQQRRSSTTLLKKJJIIaabbccdd<<;;::99qqrrsstt,,++**))@@AABBCCSSRRQQPPZZ[[\\]]CCBBAA@@jjkkllmm33221100zz{{||}}##""!! $$%%&&''OONNMMLLnnooppqqllmmnnoo1100//..||}}~~ ttssrrqqEEFFGGHHXXWWVVUUUUVVWWXXHHGGFFEEeeffgghh88776655uuvvwwxx((''&&%%DDEEFFGGOONNMMLL^^__``aa??>>==<>==mmnnoopp00//..--}}~~  ~~}}LLMMNOPQGGFFEEDDffgghhii77665544vvwwxxyy''&&%%$$00112233CCBBAA@@zz{{||}}xxyyzz{{%%$$##""feeddccbQQRRSSTTLLKKJJIIaabbccdd<<;;::99qqrrsstt,,++**)) - - ||{{zzyyRSSTTUUVCCBBAA@@jjkkllmm33221100zz{{||}}##""!! 99::;;<>==<<~~||}}~~!! baa``__^UUVVWWXXHHGGFFEEeeffgghh88776655uuvvwwxx((''&&%%xxwwvvuuVWWXXYYZ??>>==<>??@@;;::9988 !!""^]]\\[[ZYYZZ[[\\DDCCBBAAiijjkkll44332211yyzz{{||$$##""!!ttssrrqqZ[[\\]]^;;::9988rrssttuu++**))(( - - AABBCCDD77665544##$$%%&&ZYYXXWWV]]^^__``@@??>>==mmnnoopp00//..--}}~~  ppoonnmm^__``aab77665544vvwwxxyy''&&%%$$EEFFGGHH33221100''(())**VUUTTSSRaabbccdd<<;;::99qqrrsstt,,++**)) - - - - ggffeeddbccddeef33221100zz{{||}}##""!! IIJJKKLL//..--,,++,,--..QPONMMLLeeffgghh88776655uuvvwwxx((''&&%% ccbbaa``fgghijkl//..--,,~~ MMSSTTUU++**))(( - -//001122KKJJIIHHiijjkkll44332211yyzz{{||$$##""!!__^^]]\\mmnnoopp++**))(( - -  VVWWXXYY''&&%%$$ZHAbtlJvnXbHAXQJtbdQZvpfbtlnXv`bHAZdrtA`vXnے`JXQtlJnXv`rXQJ`|dtHAbےZdQbtpvnJ`ےdQZ|~f`HAbےZdQbtpvnJ`ےltb`vXHd|Z~HfprXQJtbdQpfH~˂pZHAd|Z~HfprXQJtbdQpfH~tlJ`f~Zp˂tAJlnvpXQr˂JtArdے`JXQtArdv`f`ےb|drH~fJtAdf~Hp˂rJltvpfr˂ptArdf~HےbHAbdQZ|`JXQrlJtAXv`fbHAZpdrtAJvXn`JXQrlJtAXv`fbHAZpdQZ|l~fZdQbtvnX`ےbZ|df`vbے`dQbtvnX`ےbZ|df`ptArdHfpvrXQJ`tbdQZfH~pZHAb|ZdQr˂p|ZdQb~HfpHAZp˂tAJlZHAb|ZdQbfpvXQJ`ےbdQZ|H~fZHAb|ZdQbfpvZp˂drtA˂pZrd|~Hf˂rXQltbvpfH˂pZrd|~Hf˂rXQtbdQHAblJtArv`fHAZp˂rtAJlXnvJXQrlJtArv`fHAZp˂rtAJlfH~|ZdQbnXvےbHA|drf`vXے`JbtlZHAbtlJv~rXQJtbdQZے`JXQtlJnXv`bHAZdrtA`vXnے`JXQtlJnXv`rXQJ`JltHAbےZdQbtpvnJ`ےdQZ|~f`HAbےZdQbtpvnJ`ےZ|dJQr˂pd|Z~HfprXQJtbdQpfH~˂pZHAd|Z~HfprXQJtbdQf`vXtJArd`f~Zp˂tAJlnvpXQr˂JtArdے`JXQtArdHfpv`ےb|dnr˂ptArdf~Hp˂rJltvpfr˂ptArdf~HےbHAbdQZ|`JXQrlJtAXv`fbHAZpdrtAJvXn`JXQrlJtAXv`fbHAZprtAJlZHAbdQbtvnX`ےbZ|df`vbے`dQbtvnX`ےbZ|dnvp|ZdHfpvrXQJ`tbdQZfH~pZHAb|ZdQr˂p|ZdQbnXvHAZp`vffZHAb|ZdQbfpvXQJ`ےbdQZ|H~fZHAb|ZdQbfpvXQJ`ےltb˂pZrd|~Hf˂rXQltbvpfH˂pZrd|~Hf˂rXQtbdQے`JXlJtArv`fHAZp˂rtAJlXnvJXQrlJtArv`fHAZp˂rtAJlfH~QbtlnXvےbHA|drf`vXے`JbtlZHAbtlJ`f~ےbHA`vXnے`JXQtlJnXv`bHAZdrtA`vXnے`JXQtlJnXv`bHAZnvpHAbےZdQbtpvnJ`ےdQZ|~f`HAbےZdQbtpvnJ`ےZ|dQr˂pd|Z~HfprXQJtbdQpfH~˂pZHAd|Z~HfprXQJtbdQf`vXJtArd`f~Zp˂tAJlnvpXQr˂JtArdے`JXQtArdHfpvZp˂vpfr˂ptArdf~Hp˂rJltvpfr˂ptArdf~Hp˂rff`v`JXQrlJtAXv`fbHAZpdrtAJvXn`JXQrlJtAXv`fbHAZptbdQZZHAbdQbtvnX`ےbZ|df`vbے`dQbtvnX`ےbZ|dH~f|ZdHfpvrXQJ`tbdQZfH~pZHAb|ZdQr˂p|ZdQbnXHrXQJ`H~fZHAb|ZdQbfpvXQJ`ےbdQZ|H~fZHAb|ZdQbfpvXQJ`ےXnv˂pZrd|~Hf˂rXQltbvpfH˂pZrd|~Hf˂rXQ|drے`JQrlJtArv`fHAZp˂rtAJlXnvJXQrlJtArv`fHAZp˂rtAJlZHAbQbtlnXvےbHA|drf`vXے`JbtlZHAbtlJfpvےbHA`vXnے`JXQtlJnXv`bHAZdrtA`vXnے`JXQtlJnXv`bHAZpfH~HAbےZdQbtpvnJ`ےdQZ|~f`HAbےZdQbtpvnJ`ےtAJl璉pZHAd|Z~HfprXQJtbdQpfH~˂pZHAd|Z~HfprXQJtbdQ˂pZJAr|`f~Zp˂tAJlnvpXQr˂JtArdے`JXQtArdnXv`Zp˂vpfr˂ptArdf~Hp˂rJltvpfr˂ptArdf~Hp`ےf`v`JXQrlJtAXv`fbHAZpdrtAJvXn`JXQrlJtAXv`fbHAZptbdQZbے`dQbtvnX`ےbZ|df`vbے`dQbtvnX`ےbZ|dHAbےZdQbtHfpvrXQJ`tbdQZfH~pZHAb|ZdQr˂p|ZdQbf~HbHAZH~fZHAb|ZdQbfpvXQJ`ےbdQZ|H~fZHAb|ZdQbfpvbHAZpXnv˂pZrd|~Hf˂rXQltbvpfH˂pZrd|~Hf˂rXQ|ltJXQrlJtArv`fHAZp˂rtAJlXnvJXQrlJtArv`fHAZp˂rtAJl`JXQrlJtAnXvےbHA|drf`vXے`JbtlZHAbtlJfpvdrtA`vXnے`JXQtlJnXv`bHAZdrtA`vXnے`JXQtlJnXv`˂rXQf~f`HAbےZdQbtpvnJ`ےdQZ|~f`HAbےZdQbtpvnJ`ےbnv˂pZHAd|Z~HfprXQJtbdQpfH~˂pZHAd|Z~HfprXQJtbdQ˂pZrd|`f~Zp˂tAJlnvpXQr˂JtArdے`JXQtArdnXv`JbdQ瀅vpfr˂ptArdf~Hp˂rJltvpfr˂ptArdf~HJ`ےvXn`JXQrlJtAXv`fbHAZpdrtAJvXn`JXQrlJtAXv`fbHAZpp`vXbے`dQbtvnX`ےbZ|df`vbے`dQbtvnX`ےbZ|dHAbےZdQbtHfpvrXQJ`tbdQZfH~pZHAb|ZdQr˂p|ZdQbpvnZ|dH~fZHAb|ZdQbfpvXQJ`ےbdQZ|H~fZHAb|ZdQbfpvbHAZpvpfH˂pZrd|~Hf˂rXQltbvpfH˂pZrd|~Hf˂rXQnvpJXQrlJtArv`fHAZp˂rtAJlXnvJXQrlJtArv`fHAZp˂rtAJl`pZHAlJtAnXvےbHA|drf`vXے`JbtlZHAbtlJXv`frtAJl`vXnے`JXQtlJnXv`bHAZdrtA`vXnے`JXQtlJnXv`˂b~f`HAbےZdQbtpvnJ`ےdQZ|~f`HAbےZdQbtpvnJ`ےfH~ZHAbd|Z~HfprXQJtbdQpfH~˂pZHAd|Z~HfprXQJtbdQbے`rZdQ`f~Zp˂tAJlnvpXQr˂JtArdے`JXQtArd~HftbdQ瀅vpfr˂ptArdf~Hp˂rJltvpfr˂ptArdf~HHAZdvXn`JXQrlJtAXv`fbHAZpdrtAJvXn`JXQrlJtAXv`fbHAZpf`vX`JXQdQbtvnX`ےbZ|df`vbے`dQbtvnX`ےbZ|dJXQrbtlHfpvrXQJ`tbdQZfH~pZHAb|ZdQr˂p|ZdQbpvnZ|dH~fZHAb|ZdQbfpvXQJ`ےbdQZ|H~fZHAb|ZdQbfpvrtAdQZvpf~˂pZrd|~Hf˂rXQltbvpfH˂pZrd|~Hf˂rXQnfr˂plJtArv`fHAZp˂rtAJlXnvJXQrlJtArv`fHAZp˂tAJl˂pZHAJtArdnXvےbHA|drf`vXے`JbtlZHAbtlJXv`frtAJl`vXnے`JXQtlJnXv`bHAZdrtA`vXnے`JXQtlJnXv`|drf`vXHAbےZdQbtpvnJ`ےdQZ|~f`HAbےZdQbtpvnJ`ے`vXnZHAbd|Z~HfprXQJtbdQpfH~˂pZHAd|Z~HfprXQJtbnbے`|ZdQ`f~Zp˂tAJlnvpXQr˂JtArdے`JXQtArdnXbQZ|vpfr˂ptArdf~Hp˂rJltvpfr˂ptArdf~HtAJlnvp`JXQrlJtAXv`fbHAZpdrtAJvXn`JXQrlJtAXv`fbHAZpvpf`JXQdQbtvnX`ےbZ|df`vbے`dQbtvnX`ےbvp`vJXQHAbbtlHfpvrXQJ`tbdQZfH~pZHAb|ZdQr˂p|ZdQbv`fdrtAJH~fZHAb|ZdQbfpvXQJ`ےbdQZ|H~fZHAb|ZdQbfpvtbdQZfH~˂pZrd|~Hf˂rXQltbvpfH˂pZrd|~Hf˂rXQH~frZAblJtArv`fHAZp˂rtAJlXnvJXQrlJtArv`fHAZdXnvے`JJtArdnXvےbHA|drf`vXے`JbtlZHAbtlJ~Hfpltb`vXnے`JXQtlJnXv`bHAZdrtA`vXnے`JXQtlJnXv`|drf`vXHAbےZdQbtpvnJ`ےdQZ|~f`HAbےZdQbtpvnJ`ے`vXnے`Jd|Z~HfprXQJtbdQpfH~˂pZHAd|ZHfpvrtAJlpfH~XQr˂ZQbt`f~Zp˂tAJlnvpXQr˂JtArdے`JXQtArdvnXdQZ|vpfr˂ptArdf~Hp˂rJltvpfr˂ptArdf~HtAJl|nvp`JXQrlJtAXv`fbHAZpdrtAJvXn`JXQrlJtAXv`fbHAZvp`XQr˂dQbtvnX`ےbZ|df`vbے`dQbt璀nrXQtbdQf`vpZHAblJtArHfpvrXQJ`tbdQZfH~pZHAf~r˂p|ZdQbv`p˂drtAJH~fZHAb|ZdQbfpvXQJ`ےbdQZ|H~fZHAb|ZdQbfpvdrtAfH~f˂pZrd|~Hf˂rXQltbvpfH˂pZrd|HfpdrtAdQvXnpZHAblJtArv`fHAZp˂rtAJlXnvJXQrlJtArJ`ےZ|dXnے`Jd|ZnXvےbHA|drf`vXے`JXQHfpvZHAbtlJrXQJltbQ`vXnے`JXQtlJnXv`bHAZdrtA`vXnے`JXQtlJnXv`JltvXnHAbےZdQbtpvnJ`ےdQZ|~f`HAbےZdQbtvnrZ|dvpfHے`Jd|Z~HfprXQJtbdQpfH~˂pZHAdfHAZp˂rtAJlf`vXXQrdQbt`f~Zp˂tAJlnvprbt璀nXvے`JXQtArd`ےbZdrtvpfr˂ptArdf~Hp˂rJltvpfr˂ptArdfHfbdQZ|vpfH`JXQrlJtAXv`fbHAZpdrtAJvXn`JXQrlJtAXQJ`ےrtAJl~f`XQr˂dQbtvnX`ےbZ|df`vے`J~HfprXQJtbdQnvpے`JXQlJtArHfpvrXQJ`tbdQZfH~lJtAd`f~r˂p|ZdQbHAZp˂AJltH~fZHAb|ZdQbfpvXQJ`ےbdQZ|H~fZHAb|ZdQbpvndrtA~f`˂pZrd|~Hf˂rXQltbvpfH˂pZrdfHAZptbdQvXnpZAb`lJtArv`fHAZp˂rtAJlXnvXQrbtvnX`ےbZ|dfH~r˂pd|ZQnXvےbHA|dtAfZHAb|ZdQHfpvZHAbtlJrXQHAbdQZ|`vXnے`JXQtlJnXv`bHAZdrtA`vXnے`JXQtlJrXQJ`JltvXnHAbےZdQbtpvnJ`ےdQZ|~f`HAے`~Hf˂rXQZ|dvpfHJXQrd|Z~HfprXQJtbdQpfH~lJtAv`fHAZp˂rtAJlf`vXZHAbblJt`f~Zp˂Jltے`JbtlnXvے`JXQtArdZp˂drtvpfr˂ptArdf~Hp˂rJltvpfr˂ptArdp˂rdrtAJvpfH`JXQrlJtAXv`fbHAZpdrtAJvXnJXQrbpvnJ`ےrtAJlXnv˂pZHdQbtvnX`ےbZ|dfZHAd|Z~HfprXQJtbdQnvpے`JXQArd|HfpvrXQJ`bnvXQr˂JtArd`f~r˂p|ZdQbrXQJ`AJltH~fZHAb|ZdQbfpvXQJ`ےbdQZ|H~fZHAےf~HXQJ`ےltb~fvn˂pZrd|~Hf˂rXQltbvpfHtlJXv`fbHAZp|drpfH~Abے`lJtArv`fHAZp˂tAJlbے`dQbtvnX`ےbZ|d`vXnr˂pZdQbtnXvےbHApfHpZHAb|ZdQHfpv`f~ZHAbtlJےbHAbdQZ`vXnے`JXQtlJnXv`bHAZdrtA`vXn`JXQrfpvbHAZdQZ|vpfHAbےZdQbtpvnJ`ےdQZ|~fZtAd|~Hf˂rXQtAJl璐f`vJXQrd|Z~HfprXQJtbnJXQrlJtArv`fHAZp˂rtAJlvpf`JXQrlJt`fHZdrf`vXے`JbtlnXvHfpvے`JXQtArdZp˂rtAJlvpfr˂ptArdf~Hp˂rJltvpfbtlnXv`p˂rdrtAJH~f`JXQrlJtAXv`fbHAZpdtAJlHAbےZdQbtpvnJ`ےtbdQZXnv˂pZHdQbtvnX`ےbvpfH˂pZHAd|Z~HfprXQJtbdQH~f˂pZArd|fpvtAJlnvpXQr˂JtArd`f~nXvr˂p|ZdQbrXQJ`tbdQH~fZHAb|ZdQbfpvXQJ`ےbdQZ|H~fJtAdf~HXQHAZpltb`vXn˂pZrd|~Hf˂rXQtbn`JXQrlJtAXv`fbHAZp|drpfH~AbJXQlJtArv`fHAZdf`vbے`dQbtvnX`ےbZ|d`vXnHAbےZdQbnrXQJtbdQZfH~pZHAb|ZdQHfpv`f~ZHAbtlJp˂rZ|d`vXnے`JXQtlJnXv`bHAZdtAJZHAb|ZdQbfpv˂rXQdQtAJlvpfHAbےZdQbtpvnJ`ےvpf˂pZrd|~Hf˂rXQtAJl璐vpr˂pd|ZHfpvrtAJlXnvJXQrlJtArv`fHAZp˂rtAJlvpf`JXQrJtArd`ےHA|drf`vXے`JbtlnXvHfpvے`JXQtArdXQJ`ےrtAJlvpfr˂ptArdf~Hp˂rltbے`JXQtlJnXv`J`ےtbdQH~f`JXQrlJtAXv`fbHAZHf`HAbےZdQbtpvnJ`ےtdrtAfH~ZHAbdQbt璀nrXQtbdQpfH~˂pZHAd|Z~HfprXQJtbdQHXn˂pZf~Zp˂tAJlnvpXQr˂JtArd`f~nXvr˂pf~HbHAZtbdQH~fZHAb|ZdQbfpvXQJ`ےnvpr˂ptArdf~HbHAZpZ|d`vnvp˂pZrd|HfpdrtAJvXn`JXQrlJtAXv`fbHAZpJltf`vXے`JXQlJtArJ`ےZ|df`vbے`dQbtvnX`ےbZ|dvpfHHAXQrHfpvrXQJ`tbdQZfH~pZHAb|ZdQHfpv`f~ZHAbXv`fp˂rZ|rA`vXnے`JXQtlJnXv`bHAZfHfZHAb|ZdQbfpv˂rXQrtAJlfH~HAbےZdQbtvnrltbvpfH˂pZrd|~Hf˂rXQbdQZ|nvpr˂pdfHAZp˂rtAJlXnvJXQrlJtArv`fHAZp˂rtAJl~f`˂pZHAnXvےbHA|drf`vXے`JbtlnXvHfpvے`JXQ~HfXQJ`ےJltvpfr˂ptArdfHfdrtA`vXnے`JXQtlJnXv`J`p˂tbdQf`vX`JXQrlJtAXQJ`ےdQZ|~f`HAbےZdQbtpvnJ`ےdrtAfH~ZA`J~HfprXQJtbdQpfH~˂pZHAd|Z~HfprXQJtbdQvXnbے``f~Zp˂tAJlnvpXQr˂JtArd`f~nXvr˂ppvnrXQbdQZ|H~fZHAb|ZdQbpvnJltvpfr˂ptArdf~HrXQJZ|l璕nvp˂pZrdfHAZpdrtAJvXn`JXQrlJtAXv`fbHAZpJltf`pfXQrbtvnX`ےbZ|df`vbے`dQbtvnX`ےbZ|dvpfHJXQrHfpvrXQJ`tbdQZfH~pZHAb|ZdQHfpv`f~|ZdQbXv`fJ`ےdrtA`vXnے`JXQtlJrXQJ`bdQZ|H~fZHAb|ZdQbfpv`ےbtbdQZfH~HAے`~Hf˂rXQltbvpfH˂pZrd|~Hf˂rXQbdQtAJH~flJtAv`fHAZp˂rtAJlXnvJXQrlJtArv`fHAZp˂rtAJl~v˂p`JnXvےbHA|drf`vXے`JbtlnXvHfpvtlJ~HfbHAZpJltvpfr˂ptArdےHAZdrtA`vXnے`JXQtlJnXv`HAZp˂|drf`vXJXQrbpvnJ`ےdQZ|~f`HAbےZdQbtpvnJ`ےltb`vXnd|Z~HfprXQJtbdQpfH~˂pZHAd|Z~HfprXQJtbdQpfH~XQrbt`f~Zp˂tAJlnvpXQr˂JtArd`f~nXvtArdp`f˂rXQbdQZ|H~fZHAےf~Hp˂rJltvpfr˂ptArdf~HrXQJtAJl璕nvfHtlJXv`fbHAZpdrtAJvXn`JXQrlJtAXv`fbHAZpdQZ|vpfdQbtvnX`ےbZ|df`vbے`dQbtvnX`ےbZ|df`vlJAHfpvrXQJ`tbdQZfH~pZHAb|ZdQHfpv`f~|ZdQb~HfpJ`ےdrAJ`vXn`JXQrfpvXQJ`ےbdQZ|H~fZHAb|ZdQbfpv`ےtbdQZ~fZtAd|~Hf˂rXQltbvpfH˂pZrd|~Hf˂rXQdrtAJH~flJtArv`fHAZp˂rtAJlXnvJXQrlJtArv`fHAZp˂rtAJlXnv|ZdQbnXvےbHA|drf`vXے`JbtlnXvHfpvnXvےbHA|dtAfZHAbl|ZdQXv`fXQJ`ےbdQZ|H~fZHAb|ZdQbfpvXQJ`ےnvpr˂p|ZdQb~HfbHAZltbvpfH˂pZrd|HfpdrtAJvXnHAbےr󙐂ˁ`vˍpf`f~Zp˂Jlt˂pbtl~HfbHAZdrtA`vXnے`JXQtlJnXv`bHAZfHfZHAbtd|pvnp˂rdQZ|~f`HAbےZdQbtvnrltbvpfH`pZHAZQXb㉀H~ㅐfHfpvrXQJ`bnvZHAbJtArdpvnp˂rJltvpfr˂ptArdfHfdrtA`vXnے`JXQZdQbtXHfpXQJ`ےdrtAJvXn`JXQrlJtAXQJ`ےdQZ|~f`bے`ۑpJAH`vXnnXvےbHApfHے`JXQ|ZdQXv`fXQJ`ےbdQZ|H~fZHAb|ZdQbpvnJltvpfr˂plJtAvnXbHAZltbvpfH˂pZrdfHAZpdrtAJvXnJXQrr󙐉ەvˍpf`fHZdrf`vXr˂pbtl~fpvbHAZdrtA`vXnے`JXQtlJrXQJ`bdQZ|H~fZHAbrd|v`fprQJ`dQZ|~f`HAے`~Hf˂rXQltbvpfH˂pZHApJAHrH~ㅐffpvtAJlnvpZHAbJtAdQbnXv`p˂rJltvpfr˂ptArdےHAZdrtA`vXnے`JXQZdQbt~HfpےbHdrtAJvXnJXQrbpvnJ`ےdQZ|~f`bے`ˁ`Z`vXnnrXQJtbdQZfH~ے`pZtlJf~HXQJ`ےbdQZ|H~fZHAےf~Hp˂rJltvpfr˂pl|ZvnXAZp˂ltbvpfHtlJXv`fbHAZpdrtAJvXnJXQHAbQXb㉀ەvˍp|`ےHA|drf`vXHAbےtArdfpvbHAZdrtA`vXn`JXQrfpvXQJ`ےbdQZ|H~fZHAbdQbtv`pvrXQJ`dQZ|~fZtAd|~Hf˂rXQltbvpfHے`JpJAHrdrQtZp˂tAJlnvp`JXQr|ZdQbnXv`p˂rJltvpfbtlnXv`bHAZdrtA`vXnے`JXQlJtArnXvےbHdtAJlHAbےZdQbtpvnJ`ےdQZ|~f`XQr˂ˁ`pJltrXQJ`tbdQZfH~˂pZtlJf~fXQJ`ےbdQZ|H~fJtAdf~Hp˂rJltvpfr˂pd|Z`f~AZp˂tbn`JXQrlJtAXv`fbHAZpdrtAJvXnpZHAbJAHrbAdZ|ےbHA|drf`vXHAbےtArdtvnXbHAZdtAJZHAb|ZdQbfpvXQJ`ےbdQZ|H~fZHAbdQbtHfpvrQJvpf˂pZrd|~Hf˂rXQltbvpfHے`Jˁ`ZQXdrQtZp˂tAJlnvp`JXQHAlJtAv`fp˂rltbے`JXQtlJnXv`bHAZdrtA`vXnے`JXQlJtAdQnXvbHAZHf`HAbےZdQbtpvnJ`ےdQZ|~f`XQrb㉀ۑpJltrXQJ`tbdQZfH~bے`rd|~HfpXQJ`ےnvpr˂ptArdf~Hp˂rJltvpfr˂pbtl`fdrtAJvXn`JXQrlJtAXv`fbHAZpdrtAJvXnے`JXQJAHrbAdZ|ےbHA|drf`vXJXQrZdQbtvnXbHAZfHfZHAb|ZdQbfpvXQJ`ےbdQZ|H~fZHAbJtArdnXv`ltbvpfH˂pZrd|~Hf˂rXQltbvpfHr˂pˁ`pfdrQtZp˂tAJlnvp˂pZHAlJtAv`ffdrtA`vXnے`JXQtlJnXv`bHAZdrtA`vXnے`JXQ|ZdQf~HdQZ|~f`HAbےZdQbtpvnJ`ےdQZ|~f`ZHAbH~ㅐfJltrXQJ`tbdQZfH~bے`rd|pvnJltvpfr˂ptArdf~Hp˂rJltvpfr˂pbtlfpvdrtAJvXn`JXQrlJtAXv`fbHAZpdrtAJvXnے`JXQ`vXnbAdZ|ےbHA|drf`vXJXQrlJtArrXQJ`bdQZ|H~fZHAb|ZdQbfpvXQJ`ےbdQZ|H~fZHAbJtArdnXv`ltbvpfH˂pZrd|~Hf˂rXQltbvpfHr˂pvˍpfdrQtZp˂tAJlnvpے`Jd|ZےHAZdrtA`vXnے`JXQtlJnXv`bHAZdrtA`vXnے`JXQtlJpvndQZ|~f`HAbےZdQbtpvnJ`ےdQZ|~f``JXQrH~ㅐfJltrXQJ`tbdQZfH~XQr˂dQbtp˂rJltvpfr˂ptArdf~Hp˂rJltvpfr˂ptArdrXQJ`drtAJvXn`JXQrlJtAXv`fbHAZpdrtAJvXn˂pZ`vXnbAdZ|ےbHA|drf`vXpZHAblJtArXQJ`ےbdQZ|H~fZHAb|ZdQbfpvXQJ`ےbdQZ|H~fZHAb|ZdQbAZp˂ltbvpfH˂pZrd|~Hf˂rXQltbvpfHHAbےvˍpfdrQtZp˂tAJlnvpے`Jd|ZbHAZdrtA`vXnے`JXQtlJnXv`bHAZdrtA`vXnے`JXQtlJrXQJdQZ|~f`HAbےZdQbtpvnJ`ےdQZ|~f``JXQrH~ㅐfJltrXQJ`tbdQZfH~XQr˂dQtArdp˂rJltvpfr˂ptArdf~Hp˂rJltvpfr˂ptArd`ےbdrtAJvXn`JXQrlJtAXv`fbHAZpdrtAJvXn˂pZ`vXnbAdZ|ےbHA|drf`vXp`JXQf~XQJ`ےbdQZ|H~fZHAb|ZdQbfpvXQJ`ےbdQZ|H~fZHAb|lJtAHAZp˂ltbvpfH˂pZrd|~Hf˂rXQltbvpfHHAXQrvˍpfdrQtZp˂tAJlnvpr˂pHfvnXbHAZdrtA`vXnے`JXQtlJnXv`bHAZdrtA`vXnے`JXQrd|rXQJdQZ|~f`HAbےZdQbtpvnJ`ےdQZ|~f`˂pZHAH~ㅐfJltrXQJ`tbdQZfH~ZHAbv`fp˂rJltvpfr˂ptArdf~Hp˂rJltvpfr˂pZdQbtbHAZpdrtAJvXn`JXQrlJtAXv`fbHAZpdrtAJvXnbے``vXnbAdZ|ےbHA|drf`vXے`JXQ~HfpXQJ`ےbdQZ|H~fZHAb|ZdQbfpvXQJ`ےbdQZ|H~fZHAblJtA˂rXltbvpfH˂pZrd|~Hf˂rXQltbvpfHJXQrvˍpfdrQtZp˂tAJlnvpr˂pvnXbHAZdrtA`vXnے`JXQtlJnXv`bHAZdrtA`vXnے`JXQrd|QJ`ےdQZ|~f`HAbےZdQbtpvnJ`ےdQZ|~f`˂p`ZH~ㅐfJltrXQJ`tbdQZfH~ZHAXQrv`fp˂rJltvpfr˂ptArdf~Hp˂rJltvpfr˂pZdQtArbHAZpdrtAJvXn`JXQrlJtAXv`fbHAZpdrtAJvXnQXb㉀۝`vXnbAdZ|ےbHA|drf`vX˂pZ~HfpXQJ`ےbdQZ|H~fZHAb|ZdQbfpvXQJ`ےbdQZ|H~fZHAbdf˂rXltbvpfH˂pZrd|~Hf˂rXQltbvpfHpJAHrvˍpfdrQtZp˂tAJlnvpHAbےvnv`bHAZdrtA`vXnے`JXQtlJnXv`bHAZdrtA`vXnے`JXQ~HXvQJ`bdQZ|~f`HAbےZdQbtpvnJ`ےdQZ|~f`ˁ`ZH~ㅐfJltrXQJ`tbdQZfH~`JXQrf~Hp˂rJltvpfr˂ptArdf~Hp˂rJltvpfr˂p`f~AZp˂drtAJvXn`JXQrlJtAXv`fbHAZpdrtAJvXnQXb㉀`vXnbAdZ|ےbHA|drf`vX˂p`fpvXQJ`ےbdQZ|H~fZHAb|ZdQbfpvXQJ`ےbdQZ|H~fZHAbHfpvrXQJ`ltbvpfH˂pZrd|~Hf˂rXQltbvpfHˁ`ZQXvˍpfdrQtZp˂tAJlnvpJXQrbnXv`bHAZdrtA`vXnے`JXQtlJnXv`bHAZdrtA`vXnے`JXQnXvےbHAdQZ|~f`HAbےZdQbtpvnJ`ےdQZ|~f`b㉀ۑpH~ㅐfJltrXQJ`tbdQZfH~tl|f~Hp˂rJltvpfr˂ptArdf~Hp˂rJltvpfr˂p`f~Zp˂drtAJvXn`JXQrlJtAXv`fbHAZpdrtAJvXnJAHr󙐝`vXnbAdZ|ےbHA|drf`vXZdQbtfpvXQJ`ےbdQZ|H~fZHAb|ZdQbfpvXQJ`ےbdQZ|H~fZHAbHfp`rXQJ`ltbvpfH˂pZrd|~Hf˂rXQltbvpfHˁ`ZQXvˍpfdrQtZp˂tAJlnvplJtAnvfbHAZdrtA`vXnے`JXQtlJnXv`bHAZdrtA`vXnے`JXQf~HےbAZdQZ|~f`HAbےZdQbtpvnJ`ےdQZ|~f`b㉀ۑpH~ㅐfJltrXQJ`tbdQZfH~rd|~Hfpp˂rJltvpfr˂ptArdf~Hp˂rJltvpfr˂pfpvrXQdrtAJvXn`JXQrlJtAXv`fbHAZpdrtAJvXn`ZQXb`vXnbAdZ|ےbHA|drf`vXZdQbtvnXXQJ`ےbdQZ|H~fZHAb|ZdQbfpvXQJ`ےbdQZ|H~fZHAےnXv`J`ےltbvpfH˂pZrd|~Hf˂rXQltbvpfHۑpJvˍpfdrQtZp˂tAJlnvpd|Zv`fbHAZdrtA`vXnے`JXQtlJnXv`bHAZdrtA`vXn`JXQrf~HbHAZpdQZ|~f`HAbےZdQbtpvnJ`ےdQZ|~frAHr󙐂˕H~ㅐfJltrXQJ`tbdQZfH~dQbt~Hfpp˂rJltvpfr˂ptArdf~Hp˂rJltvpfbtlfpvrXQdrtAJvXn`JXQrlJtAXv`fbHAZpdtAJl˂pZ`ZQXb`vXnbAdZ|ےbHA|drf`vXlJtArvnXvXQJ`ےbdQZ|H~fZHAb|ZdQbfpvXQJ`ےbdQZ|H~f|ZdQb~HfJ`ےltbvpfH˂pZrd|~Hf˂rXQtbnHAbےۑpJvˍpfdrQtZp˂tAJlnvpd|Zf~HfbHAZdrtA`vXnے`JXQtlJnXv`bHAZdtAJZHAbtlJpvnbHAZrdQZ|~f`HAbےZdQbtpvnJ`ےvpf`JXQrAHQXb㉀H~ㅐfJltrXQJ`tbdQZfH~dQbtpvnp˂rJltvpfr˂ptArdf~Hp˂rltbے`JXQtArdXv`fXQJ`ےdrtAJvXn`JXQrlJtAXv`fbHAZHf`˂pZۑpJAH`vXnbAdZ|JJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKK \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv37_1.dat b/mpdf/qrcode/data/qrv37_1.dat deleted file mode 100644 index 233b589..0000000 --- a/mpdf/qrcode/data/qrv37_1.dat +++ /dev/null @@ -1,329 +0,0 @@ -~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklkjijijijijijijijighghghghhghghghgfefefefefefefefedcdcdcdcdcdcbabababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPONMMMMMMNNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:98787878787878765656565656565653333434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklkjijijijijijijijighghghghgggghghgfefefefefefedcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOMNMNMNMNNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;:9:9:9:9:9:9:9878787878787878765656565656565654343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklkjijijijijijijijighghghghhghgfefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOMNMNMNMNNMNMNMMMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9878787878787878765656565654343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklkjijijijijijijijighghghghfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOMNMNMNMNMMMNMNMNLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9878787878787878765656565433333344343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklkjijijijijijijijighghghghfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQPOPOPOPOPOPOPOPOMNMNMNMNMNMNMNMNLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABA@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9878787878787878765656565343434344343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmlklklklklkjijijijijijijijighggggggfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQPOPOPOPOPOPOPOPOMNMNMNMNMNMNMNMNLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCBABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9878787878787878765656565343434344343433321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopoponmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQPOPOPOPOPOPOPOPOMMMMMMNMMNMNMNMNLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9878787878787878765656565343434343334343421212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqpopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijihghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMMNMNMNMNLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9878787878787878765656565343434343434343421212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutststststststsrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijihghghggghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMMNMNMMMMLKLKLKLKLKLKLKLKJIJIJIJIJIHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9878787878787878765656565343434343434343421212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvutststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijiggghghghhghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMMMNMNMNMLKLKLKLKLKJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9878787878787878765656565333333433434343421212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijighghghghhghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9878787878787878765656565434343433434343421212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#"!"!"!"!~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijighghghghhgggggghfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9878787878787876565656565434343433434333321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{zyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijighghghghghghghghfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQPOPOPOPOPOPOPOPOMMMMMNMNLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9878787876565656565656565434343433343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!~}~}~}~}~}~}~}|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijighghghghghghghghfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSRQRQRQRQRQRQPOPOPOPOPOPOPOPOMNMNMNMNLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9878787876565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijighghggggghghghghfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPOMNMNMNMNLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9878787876565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijigghghghgghghghghfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPONMNMMNMNMNMNLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9878787876565656565656565333334344343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijihghghghgghghghghfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPONMNMMMMMMNMNMNMNLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9878787876565656565656565343434344343333321212121212121210/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklklkjijijijijijijihghghghggggggghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[ZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPONMNMNMNMMNMNMNMMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:98787878765656565656565653434343443434343212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPONMNMNMNMMMMMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:98787878765656565656565653434343421212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:98787878765656565656565653434343421212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmnmlklklklkjijijijijijijijihghggggghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababa`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:98787878765656565656565653434343321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!"!"!"!"!                - - - - - - - - "!"!"!"!"!"!"!"!                - - - - - - - - "!"!"!"!"!"!"!"!                - - - - - - - - "!"!"!"!"!"!"!"!                - - - - - - - - "!"!"!"!"!"!"!"!            - - - - - - - - "!"!"!"!                - - - - - - - - "!"!"!"!                - - - - - - - - "!"!"!"!                - - - - - - - - "!"!"!"!                - - - - - - - - "!"!"!"!                - - - - - - - - "!"!"!"!                - - - - - - - - "!"!"!"!                - - - - - - - - "!"!"!"!                - - - - - - - - "!"!"!"!                - - - - - - - "!"!"!"!                - - - - - "!"!"!"!               - - - - - - - - "!"!"!"!             - - - - - - - - "!"!"!"!                - - - - - - - - "!"!"!"!                - - - - - - - - "!"!"!"!                - - - - - - - - "!"!"!"!                - - - - - - - - PPOONNMMiijjkkllZZ[[\\]],++**))(55667788llkkjjii==>>??@@ddccbbaa EEFFGGHH\\[[ZZYYMMNNOOPPTTSSRRQQUUVVWWXXLLKKJJII uuvvwwxxggffeedd^__``aab;;::9988nnooppqq33221100""##$$%%vvwwxxyy~~}}||++**))((**++,,--~~wwvvuutt##""!! 22334455oonnmmll::;;<<==XXWWVVUU||}}~~hggffeed - - KKLLMMNNVVUUTTSSSSTTUUVVNNMMLLKK - -[[\\]]^^FFEEDDCCccddeeff>>==<<;;kkllmmnn66554433(())**++LLKKJJIIwwxxyyzzyyxxwwvv%%$$##""00112233qqppoonn8899::;;iihhggff@@AABBCCaa``__^^ - -HHIIJJKKYYXXWWVVPPQQRRSS==<<;;:://001122QPONMMLL aabbccdd@@??>>==iijjkkll88776655 qqrrsstt00//..--%%&&''((yyzz{{||||{{zzyy((''&&%%LLKKJJIImmnnoopp~~}}||{{^^__``aa(''&&%%$99::;;<>??@@AATTSSMMLL dccbbaa`OOPPQQRRRRQQPPOOWWXXYYZZJJIIHHGG __``aabbBBAA@@??gghhiijj::998877ooppqqrr221100//,,--..//HHGGFFEE !!""#{{||}}~~uuttssrr!! 44556677mmllkkjj<<==>>??eeddccbbDDEEFFGG]]\\[[ZZ LLMMNNOOUUTTSSRRTTUUVVWW993322113399::;;KKJJIIHHeeffgghh<<;;::99mmnnoopp44332211!!""##$$uuvvwwxx~~}},,++**))))**++,,}}~~xxwwvvuu$$##""!!HHGGFFEE qqrrssttzzyyxxwwbbccddee~~}}||$##""!! ==>>??@@ddccbbaa EEFFGGHH\\[[ZZYYMMNNOOPPTTSSRRQQUUVVWWXXLLKKJJII - - ]]^^__``DDCCBBAA}}~~__^^]]\\ fgghijkl33221100""##$$%%vvwwxxyy~~}}||++**))((**++,,--~~wwvvuutt##""!! 22334455oonnmmll::;;<<==ggffeeddBBCCDDEEKKJJIIHH!!""##$$`__^^]]\SSTTUUVVNNMMLLKK - -[[\\]]^^FFEEDDCCccddeeff>>==<<;;kkllmmnn66554433 !!""ssttuuvv..--,,++00112233DDCCBBAA#$$%%&&'qqppoonn8899::;;iihhggff@@AABBCCaa``__^^ - -HHIIJJKKYYXXWWVVPPQQRRSSQQPPOONNXXYYZZ[[00//..--<<==>>??GGFFEEDDiijjkkll88776655 qqrrsstt00//..--%%&&''((yyzz{{||||{{zzyy((''&&%%--..//00ttssrrqq DDCCBBAA!!""##$$uuvvwwxxvvuuttss ffggmmnn{{zzyyxx AABBCCDD``__^^]] - - IIJJKKLLXXWWVVUUQQRRSSTTPPOONNMMYYZZ[[\\HHGGFFEE aabbccdd@@??>>== !![[ZZYYXXmmnnoopp//..--,,&&''(())zz{{||}}{{zzyyxx''&&%%$$..//0011ssrrqqpp66778899kkjjiihh>>??@@AAccbbaa`` FFGGHHIIGGFFEEDD%%&&''((\[[ZZYYXWWXXYYZZJJIIHHGG __``aabbBBAA@@??gghhiijj::998877ooppqqrr221100//##$$%%&&wwxxyyzz~~}}||{{**))((''99::;;<<@@??>>=='(())**+mmllkkjj<<==>>??eeddccbbDDEEFFGG]]\\[[ZZ LLMMNNOOUUTTSSRRTTUUVVWWMMLLKKJJ - - \\]]^^__,,++**))@@AABBCCCCBBAA@@mmnnoopp44332211!!""##$$uuvvwwxx~~}},,++**))))**++,,}}~~xxwwvvuu$$##""!!11223344ppoonnmm@@??>>==%%&&''((yyzz{{||rrqqppoo - - - -ooppqqrrwwvvuuttEEFFGGHH\\[[ZZYYMMNNOOPPTTSSRRQQUUVVWWXXLLKKJJII - - ]]^^__``DDCCBBAAeeffgghh<<;;::99""##$$%%WWVVUUTTqqrrsstt~~}}||++**))((**++,,--~~wwvvuutt##""!! 22334455oonnmmll::;;<<==ggffeeddBBCCDDEE__^^]]\\ - - JJKKLLMMCCBBAA@@))**++,,XWWVVUUT - -[[\\]]^^FFEEDDCCccddeeff>>==<<;;kkllmmnn66554433 !!""ssttuuvv..--,,++''(())**{{||}}~~zzyyxxww&&%%$$##==>>??@@<<;;::99+,,--../iihhggff@@AABBCCaa``__^^ - -HHIIJJKKYYXXWWVVPPQQRRSSQQPPOONNXXYYZZ[[IIHHGGFF ``aabbcc((''&&%%DDEEFFGG??>>==<< qqrrsstt00//..--%%&&''((yyzz{{||||{{zzyy((''&&%%--..//00ttssrrqq 55667788llkkjjii<<;;::99))**++,,}}~~nnmmggff ssttuuvvssrrqqppIIJJKKLLXXWWVVUUQQRRSSTTPPOONNMMYYZZ[[\\HHGGFFEE aabbccdd@@??>>==iijjkkll88776655&&''(())SSMMLLKKuuvvwwxx{{zzyyxx''&&%%$$..//0011ssrrqqpp66778899kkjjiihh>>??@@AAccbbaa`` FFGGHHII[[ZZYYXXNNOOPPQQ??>>==<<--..//00TSSRQPON __``aabbBBAA@@??gghhiijj::998877ooppqqrr221100//##$$%%&&wwxxyyzz~~}}||{{**))((''++,,--..vvuuttss""!! AABBCCDD33221100/0011223eeddccbbDDEEFFGG]]\\[[ZZ LLMMNNOOUUTTSSRRTTUUVVWWMMLLKKJJ - - \\]]^^__EEDDCCBBddeeffgg$$##""!!HHIIJJKK;;::9987!!""##$$uuvvwwxx~~}},,++**))))**++,,}}~~xxwwvvuu$$##""!!11223344ppoonnmm99::;;<>==<<;;kkllmmnn66554433 !!""ssttuuvv..--,,++''(())**{{||}}~~zzyyxxww&&%%$$##//001122rrqqppooEEFFGGHH//..--,,34567899aa``__^^ - -HHIIJJKKYYXXWWVVPPQQRRSSQQPPOONNXXYYZZ[[IIHHGGFF ``aabbccAA@@??>>hhiijjkk LLMMSSTT65433221%%&&''((yyzz{{||||{{zzyy((''&&%%--..//00ttssrrqq 55667788llkkjjii==>>??@@ddccbbaa 4433221111223344aa``__^^{{||}}~~jihggffe - -QQRRSSTTPPOONNMMYYZZ[[\\HHGGFFEE aabbccdd@@??>>==iijjkkll88776655 qqrrsstt00//..--..//0011FFEEDDCC!""##$$%}}~~ssrrqqpp66778899kkjjiihh>>??@@AAccbbaa`` FFGGHHII[[ZZYYXXNNOOPPQQSSRRQQPPVVWWXXYY221100//::;;<<==IIHHGGFFgghhiijj::998877ooppqqrr221100//##$$%%&&wwxxyyzz~~}}||{{**))((''++,,--..vvuuttss""!! 33445566nnmmllkkIIJJKKLL++**))((::;;<<==]]\\[[ZZ LLMMNNOOUUTTSSRRTTUUVVWWMMLLKKJJ - - \\]]^^__EEDDCCBBddeeffgg==<<;;::llmmnnoo~~}}||UUVVWWXX100//..-))**++,,}}~~xxwwvvuu$$##""!!11223344ppoonnmm99::;;<>??@@AAEEDDCCBBkkllmmnn66554433 !!""ssttuuvv..--,,++''(())**{{||}}~~zzyyxxww&&%%$$##//001122rrqqppoo778899::jjiihhggMMSSTTUU''&&%%$$>>??@@AAYYXXWWVVPPQQRRSSQQPPOONNXXYYZZ[[IIHHGGFF ``aabbccAA@@??>>hhiijjkk99887766ppqqrrss{{zzyyxxYYZZ[[\\-,,++**)--..//00ttssrrqq 55667788llkkjjii==>>??@@ddccbbaa EEFFGGHH\\[[ZZYY~~}},,++**))99::;;<>==iijjkkll88776655 qqrrsstt00//..--%%&&''((yyzz{{||||{{zzyy((''&&%%;;<<==>>>>==<<;;)**++,,-kkjjiihh>>??@@AAccbbaa`` FFGGHHII[[ZZYYXXNNOOPPQQSSRRQQPPVVWWXXYYKKJJIIHH - - ^^__``aa**))((''BBCCDDEEAA@@??>>ooppqqrr221100//##$$%%&&wwxxyyzz~~}}||{{**))((''++,,--..vvuuttss""!! 33445566nnmmllkk;;<<==>>ffeeddccVVWWXXYY##""!! BBCCDDEEUUTTSSRRTTUUVVWWMMLLKKJJ - - \\]]^^__EEDDCCBBddeeffgg==<<;;::llmmnnoo55443322 !!""##ttuuvvwwwwvvuutt ]]^^__``)((''&&%11223344ppoonnmm99::;;<>??@@UUTTSSMM$$%%&&'']\\[[ZZY - - ]]^^__``DDCCBBAAeeffgghh<<;;::99mmnnoopp44332211!!""##$$uuvvwwxx~~}},,++**))))**++,,}}~~xxwwvvuu$$##""!!??@@AABB::993322-..//001ggffeeddBBCCDDEE__^^]]\\ - - JJKKLLMMWWVVUUTTRRSSTTUUOONNMMLL ZZ[[\\]]GGFFEEDDbbccddee&&%%$$##FFGGHHII==<<;;:: !!""ssttuuvv..--,,++''(())**{{||}}~~zzyyxxww&&%%$$##//001122rrqqppoo778899::jjiihhgg??@@AABBbbaa``__ ZZ[[\\]]FFGGHHIIQQPPOONNXXYYZZ[[IIHHGGFF ``aabbccAA@@??>>hhiijjkk99887766ppqqrrss1100//..$$%%&&''xxyyzz{{ssrrqqpp - - aabbccdd~~}}%$$##""!55667788llkkjjii==>>??@@ddccbbaa EEFFGGHH\\[[ZZYYMMNNOOPPTTSSRRQQxxwwvvuu$$##""!!AABBCCDDLLKKJJII(())**++YXXWWVVU aabbccdd@@??>>==iijjkkll88776655 qqrrsstt00//..--%%&&''((yyzz{{||||{{zzyy((''&&%%--..//00ttssrrqq CCDDEEFF1100//..12233456ccbbaa`` FFGGHHII[[ZZYYXXNNOOPPQQSSRRQQPPVVWWXXYYKKJJIIHH - - ^^__``aaCCBBAA@@ffgghhii""!! JJKKLLMM99876543##$$%%&&wwxxyyzz~~}}||{{**))((''++,,--..vvuuttss""!! 33445566nnmmllkk;;<<==>>ffeeddccCCDDEEFF^^]]\\[[ - - ^^__``aa~~}}||{{JJKKLLMMMMLLKKJJ - - \\]]^^__EEDDCCBBddeeffgg==<<;;::llmmnnoo55443322 !!""##ttuuvvww~~--,,++**(())**++||}}~~oonnmmggeeffggmm||{{zzyy! 99::;;<>==<<jjkkllmm~~SSTTUUVV3221100/''(())**{{||}}~~zzyyxxww&&%%$$##//001122rrqqppoo778899::jjiihhgg??@@AABBbbaa``__ GGHHIIJJZZYYXXWWbbccddeezzyyxxwwNOPQRSSTIIHHGGFF ``aabbccAA@@??>>hhiijjkk99887766ppqqrrss1100//..$$%%&&''xxyyzz{{}}||{{zz))((''&&,,--..//ffeeddcc nnooppqqxxwwvvuu==>>??@@ddccbbaa EEFFGGHH\\[[ZZYYMMNNOOPPTTSSRRQQUUVVWWXXLLKKJJII - - ppoonnmmIIJJKKLLDDCCBBAA00112233ONMMLLKKiijjkkll88776655 qqrrsstt00//..--%%&&''((yyzz{{||||{{zzyy((''&&%%--..//00ttssrrqq 55667788llkkjjiiKKLLMMSS))((''&&<<==>>??[[ZZYYXXNNOOPPQQSSRRQQPPVVWWXXYYKKJJIIHH - - ^^__``aaCCBBAA@@ffgghhii;;::9988nnooppqq}}||{{zzWWXXYYZZ/..--,,+++,,--..vvuuttss""!! 33445566nnmmllkk;;<<==>>ffeeddccCCDDEEFF^^]]\\[[ - - KKLLMMNNVVUUTTSSffggmmnnvvuuttss TUUVVWWXEEDDCCBBddeeffgg==<<;;::llmmnnoo55443322 !!""##ttuuvvww~~--,,++**(())**++||}}~~yyxxwwvv%%$$##""00112233bbaa``__ - - rrssttuuttssrrqqAABBCCDD``__^^]] - - IIJJKKLLXXWWVVUUQQRRSSTTPPOONNMMYYZZ[[\\HHGGFFEE llkkjjiiMMNNOOPP@@??>>==99::;;<>==<<jjkkllmm77665544 !!rrssttuuyyxxwwvv[[\\]]^^+**))(('//001122rrqqppoo778899::jjiihhgg??@@AABBbbaa``__ GGHHIIJJZZYYXXWWOOPPQQRRRRQQPPOO - -ooppqqrrrrqqppoo - - XYYZZ[[\AA@@??>>hhiijjkk99887766ppqqrrss1100//..$$%%&&''xxyyzz{{}}||{{zz))((''&&,,--..//uuttssrr!! 44556677^^]]\\[[vvwwxxyyppoonnmmEEFFGGHH\\[[ZZYYMMNNOOPPTTSSRRQQUUVVWWXXLLKKJJII - - ]]^^__``DDCCBBAAhhggffeeQQRRSSTT<<;;::99==>>??@@FFEEDDCC qqrrsstt00//..--%%&&''((yyzz{{||||{{zzyy((''&&%%--..//00ttssrrqq 55667788llkkjjii==>>??@@ddccbbaa XXYYZZ[[!! DDEEFFGGSSRRQQPPVVWWXXYYKKJJIIHH - - ^^__``aaCCBBAA@@ffgghhii;;::9988nnooppqq33221100""##$$%%vvwwxxyyuuttssrr - -__``aabb'&&%%$$#33445566nnmmllkk;;<<==>>ffeeddccCCDDEEFF^^]]\\[[ - - KKLLMMNNVVUUTTSSSSTTUUVVNNMMLLKK ssttuuvvnnmmggff\]]^^__`==<<;;::llmmnnoo55443322 !!""##ttuuvvww~~--,,++**(())**++||}}~~yyxxwwvv%%$$##""00112233qqppoonn8899::;;ZZYYXXWWzz{{||}}lkjihggf IIJJKKLLXXWWVVUUQQRRSSTTPPOONNMMYYZZ[[\\HHGGFFEE aabbccdd@@??>>==ddccbbaa UUVVWWXX33221100AABBCCDDBBAA@@??!!""##$$uuvvwwxx~~}},,++**))))**++,,}}~~xxwwvvuu$$##""!!11223344ppoonnmm99::;;<>==<<jjkkllmm77665544 !!rrssttuu//..--,,&&''(())zz{{||}}qqppoonn ccddeeff~~}}||{{#""!! 778899::jjiihhgg??@@AABBbbaa``__ GGHHIIJJZZYYXXWWOOPPQQRRRRQQPPOOWWXXYYZZJJIIHHGGwwxxyyzzeeddccbb`aabbccd99887766ppqqrrss1100//..$$%%&&''xxyyzz{{}}||{{zz))((''&&,,--..//uuttssrr!! 44556677mmllkkjj<<==>>??VVUUTTSS~~feeddccb - - MMNNOOPPTTSSRRQQUUVVWWXXLLKKJJII - - ]]^^__``DDCCBBAAeeffgghh<<;;::99``__^^]] - - YYZZ[[\\//..--,,EEFFGGHH>>==<<;;%%&&''((yyzz{{||||{{zzyy((''&&%%--..//00ttssrrqq 55667788llkkjjii==>>??@@ddccbbaa EEFFGGHH\\[[ZZYY``aabbcc||{{zzyyLLMMNOPQKKJJIIHH - - ^^__``aaCCBBAA@@ffgghhii;;::9988nnooppqq33221100""##$$%%vvwwxxyy~~}}||++**))((**++,,--~~mmggffeeggmmnnoozzyyxxww;;<<==>>ffeeddccCCDDEEFF^^]]\\[[ - - KKLLMMNNVVUUTTSSSSTTUUVVNNMMLLKK - -[[\\]]^^FFEEDDCC{{||}}~~aa``__^^ - - deeffggh55443322 !!""##ttuuvvww~~--,,++**(())**++||}}~~yyxxwwvv%%$$##""00112233qqppoonn8899::;;iihhggff@@AABBCCMMLLKKJJ !!""baa``__^QQRRSSTTPPOONNMMYYZZ[[\\HHGGFFEE aabbccdd@@??>>==iijjkkll88776655 --..//00\\[[ZZYY - - ]]^^__``++**))((IIJJKKLL::998765))**++,,}}~~xxwwvvuu$$##""!!11223344ppoonnmm99::;;<>==<<jjkkllmm77665544 !!rrssttuu//..--,,&&''(())zz{{||}}{{zzyyxx''&&%%$$..//0011ddccbbaa - - ppqqrrssvvuuttss??@@AABBbbaa``__ GGHHIIJJZZYYXXWWOOPPQQRRRRQQPPOOWWXXYYZZJJIIHHGG __``aabbBBAA@@??]]\\[[ZZ ijklmmnn1100//..$$%%&&''xxyyzz{{}}||{{zz))((''&&,,--..//uuttssrr!! 44556677mmllkkjj<<==>>??eeddccbbDDEEFFGGIIHHGGFF##$$%%&&^]]\\[[ZUUVVWWXXLLKKJJII - - ]]^^__``DDCCBBAAeeffgghh<<;;::99mmnnoopp44332211!!""##$$11223344XXWWVVUU aabbccdd''&&%%$$MMSSTTUU43322110--..//00ttssrrqq 55667788llkkjjii==>>??@@ddccbbaa EEFFGGHH\\[[ZZYYMMNNOOPPTTSSRRQQmmnnooppttssrrqq - - VWWXXYYZCCBBAA@@ffgghhii;;::9988nnooppqq33221100""##$$%%vvwwxxyy~~}}||++**))((**++,,--~~wwvvuutt##""!! 22334455``__^^]] ttuuvvwwrrqqppooCCDDEEFF^^]]\\[[ - - KKLLMMNNVVUUTTSSSSTTUUVVNNMMLLKK - -[[\\]]^^FFEEDDCCccddeeff>>==<<;; !!""##YYXXWWVVooppqqrr~~--,,++**(())**++||}}~~yyxxwwvv%%$$##""00112233qqppoonn8899::;;iihhggff@@AABBCCaa``__^^ - -HHIIJJKKEEDDCCBB''(())**ZYYXXWWVYYZZ[[\\HHGGFFEE aabbccdd@@??>>==iijjkkll88776655 qqrrsstt00//..--%%&&''((55667788TTSSRRQQeeffgghh##""!! VVWWXXYY0//..--,11223344ppoonnmm99::;;<>==<<jjkkllmm77665544 !!rrssttuu//..--,,&&''(())zz{{||}}{{zzyyxx''&&%%$$..//0011ssrrqqpp66778899\\[[ZZYYxxyyzz{{nnmmlkji GGHHIIJJZZYYXXWWOOPPQQRRRRQQPPOOWWXXYYZZJJIIHHGG __``aabbBBAA@@??gghhiijj::998877$$%%&&''UUTTSSMMssttuuvv}}||{{zz))((''&&,,--..//uuttssrr!! 44556677mmllkkjj<<==>>??eeddccbbDDEEFFGG]]\\[[ZZ LLMMNNOOAA@@??>>++,,--..VUUTTSSR - - ]]^^__``DDCCBBAAeeffgghh<<;;::99mmnnoopp44332211!!""##$$uuvvwwxx~~}},,++**))))**++,,99::;;<<==>>??@@ddccbbaa XXYYZZ[[!! DDEEFFGGSSRRQQPPVVWWXXYYKKJJIIHH - - ^^__``aaCCBBAA@@ffgghhii;;::9988nnooppqqzzyyxxwwbbccddeessrrqqppFFGGHHIIAABBCCDD``__^^]] - - \\]]^^__~~}}HHIIJJKKOONNMMLL ZZ[[\\]]GGFFEEDDbbccddee??>>==<<jjkkllmm77665544 !!rrssttuuvvuuttss ffggmmnnoonnmmllJJKKLLMMEEFFGGHH\\[[ZZYY``aabbcc||{{zzyyLLMMNOPQKKJJIIHH - - ^^__``aaCCBBAA@@ffgghhii;;::9988nnooppqq33221100""##$$%%vvwwxxyyrrqqppoo - - - -ooppqqrrkkjjiihhNNOOPPQQIIJJKKLLXXWWVVUUddeeffggxxwwvvuu RSSTTUUVGGFFEEDDbbccddee??>>==<<jjkkllmm77665544 !!rrssttuu//..--,,&&''(())zz{{||}}nnmmggff ssttuuvvggffeeddRRSSTTUUMMNNOOPPTTSSRRQQmmnnooppttssrrqq - - VWWXXYYZCCBBAA@@ffgghhii;;::9988nnooppqq33221100""##$$%%vvwwxxyy~~}}||++**))((**++,,--~~eeddccbbwwxxyyzzccbbaa`` VVWWXXYYQQRRSSTTPPOONNMM - - qqrrssttppoonnmmZ[[\\]]^??>>==<<jjkkllmm77665544 !!rrssttuu//..--,,&&''(())zz{{||}}{{zzyyxx''&&%%$$..//0011aa``__^^{{||}}~~__^^]]\\ - - ZZ[[\\]]UUVVWWXXLLKKJJII uuvvwwxxggffeedd^__``aab;;::9988nnooppqq33221100""##$$%%vvwwxxyy~~}}||++**))((**++,,--~~wwvvuutt##""!! 22334455]]\\[[ZZ[[ZZYYXX - - ^^__``aaYYZZ[[\\HHGGFFEEyyzz{{||ccbbaa`` - -bccddeef77665544 !!rrssttuu//..--,,&&''(())zz{{||}}{{zzyyxx''&&%%$$..//0011ssrrqqpp66778899YYXXWWVV !!""##WWVVUUTTbbccddee]]^^__``DDCCBBAA}}~~__^^]]\\ fgghijkl33221100""##$$%%vvwwxxyy~~}}||++**))((**++,,--~~wwvvuutt##""!! 22334455oonnmmll::;;<<==UUTTSSMM$$%%&&''SSRRQQPPffgghhiiaabbccdd@@??>>== !![[ZZYYXXmmnnoopp//..--,,&&''(())zz{{||}}{{zzyyxx''&&%%$$..//0011ssrrqqpp66778899kkjjiihh>>??@@AALLKKJJII(())**++OONNMMLLjjkkllmmeeffgghh<<;;::99""##$$%%WWVVUUTTqqrrsstt~~}}||++**))((**++,,--~~wwvvuutt##""!! 22334455oonnmmll::;;<<==ggffeeddBBCCDDEEHHGGFFEE,,--..//KKJJIIHHnnooppqqiijjkkll88776655&&''(())SSMMLLKKuuvvwwxx{{zzyyxx''&&%%$$..//0011ssrrqqpp66778899kkjjiihh>>??@@AAccbbaa`` FFGGHHIIDDCCBBAA00112233GGFFEEDD !!rrssttuummnnoopp44332211**++,,--JJIIHHGG !yyzz{{||wwvvuutt##""!! 22334455oonnmmll::;;<<==ggffeeddBBCCDDEE__^^]]\\ - - JJKKLLMM@@??>>==99::;;<>??@@AAccbbaa`` FFGGHHII[[ZZYYXXNNOOPPQQ<<;;::99==>>??@@??>>==<<&&''(())zz{{||}}uuvvwwxx~~}},,++**))223399::BBAA@@??%&&''(()oonnmmll::;;<<==ggffeeddBBCCDDEE__^^]]\\ - - JJKKLLMMWWVVUUTTRRSSTTUU33221100AABBCCDD;;::9988**++,,--~~yyzz{{||||{{zzyy((''&&%%;;<<==>>>>==<<;;)**++,,-kkjjiihh>>??@@AAccbbaa`` FFGGHHII[[ZZYYXXNNOOPPQQSSRRQQPPVVWWXXYY//..--,,EEFFGGHH77665544..//0011}}~~xxwwvvuu$$##""!!??@@AABB::993322-..//001ggffeeddBBCCDDEE__^^]]\\ - - JJKKLLMMWWVVUUTTRRSSTTUUOONNMMLL ZZ[[\\]]++**))((IIJJKKLL3322110022334455ttssrrqq CCDDEEFF1100//..12233456ccbbaa`` FFGGHHII[[ZZYYXXNNOOPPQQSSRRQQPPVVWWXXYYKKJJIIHH - - ^^__``aa''&&%%$$MMSSTTUU//..--,,66778899ppoonnmmGGHHIIJJ--,,++**7899::;;__^^]]\\ - - JJKKLLMMWWVVUUTTRRSSTTUUOONNMMLL ZZ[[\\]]GGFFEEDDbbccddee##""!! VVWWXXYY~~}}||++**))((::;;<<==llkkjjiiKKLLMMSS))((''&&<<==>>??[[ZZYYXXNNOOPPQQSSRRQQPPVVWWXXYYKKJJIIHH - - ^^__``aaCCBBAA@@ffgghhiiZZ[[\\]]{{zzyyxx''&&%%$$>>??@@AAhhggffeeTTUUVVWW%%$$##""@@AABBCCWWVVUUTTRRSSTTUUOONNMMLL ZZ[[\\]]GGFFEEDDbbccddee??>>==<<jjkkllmm~~}}||{{^^__``aawwvvuutt##""!! BBCCDDEEZHAbZHAb|ZdQb|ZdQbp`fnXbHAZprtAJldrtAH~fH~fr˂pr˂ptlJtlJfpvfpvp˂rp˂rdrtAdtAJH~fH~fr˂pbtltlJfpvfpvXQJ`ےp˂rdrtAJnvpvXnۀ˂pZ˂pZlJtAlJtApvnpvn˂rXQ˂rXQdrtAJdrtAJ~f`~f`˂pZ˂pZlJtAlJtApvnpvn˂rXQ˂rXQJltf`vXfH~ZHAbr˂plJtArlJtArvnXnrXQrXQJrtAJlrtAJlf`vf`v˂pZHA˂pZHAlJtArlJtArvnXvnXrXQJrXQJrtAJlrtAJlfH~nvpے`JXQtJArddQbt璀nXvnXvrXQJ`rXQJ`tAJltAJlf`vXf`vXpZHAbpZHAbJtArdJtArdnXvnXvrXQJ`rXQJ`tAJlJltf`vXfZHAbXQr˂dQbtd|Zf~HfXQJ`ےXQJ`ےJltJlt`vXn`vXnZHAbZHAbtArdtArdnXv`nXv`XQJ`ےXQJ`ےJltJltے`JXQے`JXQtlJtlJ~Hfpv`f˂rXQbQZ|Jlt`vXn`vXnZHAbZHAbtArdtArdnXv`nXv`XQJ`ےXQJ`ےJltltb`vXnZHAbZHAbJtAdtArdnXv`nXv`bHAZXQJ`ےltbff`vvpfHHAbےHAbےrd|rd|Xv`fXv`fJ`ےJ`ےltbltbvXnvXnHAbےHAbےrd|rd|Xv`fXv`fJ`ےJ`ےbdQtAJnff`pf`JXQZA`Jd|Zdfv`fJ`ے`ےbtbdQtbdQXnvXnvbے`bے`d|Zd|Zv`fv`f`ےb`ےbtbdQtbdQf`vXfH~r˂p|ZdlJtAr`f~`f~ےbHAےbHAtbdQZtbdQZnvpnvpے`Jے`J|ZdQ|ZdQ`f~`fHےbHAےbHAtbdQZbnvnvp˂pp`JXQl|ZdQdQtArdpvnbHAZbHAZbdQZ|bdQZ|vpfvpfے`JXQے`JXQ|ZdQb|ZdQbf~Hf~HbHAZbHAZbdQZ|bdQZ|r˂pr˂ptArdtArdvnX~HfpJ`ےdrtAJbdQZ|vpfvpfے`JXQے`JXQ|ZdQb|ZdQbf~HfHfbHAZbHAZbdQZ|nvpvpfے`JXQے`JXQ|ZdQb|ZdQbf~Hf~Hp˂rbHAZdQZ|Xnv~fvn`JXQr`JXQrZdQbtZdQbt~Hf~HfbHAZpbHAZpdQZ|dQZ|vpfHvpfH`JXQr`JXQrZdQbtZdQbt~Hf~HfbHAZpbHAZpltb`vXnH~fr˂pXQrbtdQbt~Hfp~HfpHAZp˂HAZp˂Z|dZ|dpfH~pfH~JXQrJXQrdQbtdQbt~Hfp~HfpHAZp˂HAZp˂Z|dZ|dnvpf`vXZHAbQbtld|ZQHfpvHfpvZp˂Zp˂|dr|drfH~fH~XQr˂XQr˂btlbtlHfpvfpvZp˂Zdr|drpfHfH~ZHAbr˂pbtlf~Xv`fp˂rp˂rdrtAdrtAH~fH~fr˂pr˂ptlJtlJfpvfpvp˂rp˂rdrtAdrtAZHAbZHAb|ZdQb|ZdQbv`fvnXbHAXQJltbdrAJH~fH~fr˂pr˂ptlJtlJfpvpvnp˂rdrtAdrtAfHfH~fr˂pr˂ptlJtlJfpvfpvXQHAZpp`ےdrtAJpfH~vpf˂pZ˂pZlJtAlJtApvnpvn˂rXQ˂rXQdrtAJdrtAJ~f`~f`˂pZ˂pZlJtAlJtApvnpvn˂rXQ˂rXQdQZ|vpf`vXnZHAblJtAlJtArvnXvnXrXQJrXQJrtAJlrtAJlf`vf`v˂pZHA˂pZHAlJtArlJtArvnXvnXrXQJrXQJrtAJlrtAJl`vXnH~fے`JXQJtArdblJtnXvnXvrXQJ`rXQJ`tAJltAJlf`vXf`vXpZHAbpZHAJtArdJtArdnXvnrXQJrXQJ`tAJltAJlf`vXf`vXے`JXQZHAbJtArdHfvnX~HfXQJ`ےXQJ`ےJltJlt`vXn`vXnZHAbZHAbtArdtArdnXv`nXv`XQJ`ےXQJ`ےJltJltے`JXQے`JXQtlJtlJ~Hfpv`p˂`ےbdQZ|tbdQZ`vXn`vXnZHAbZHAےtArdtArdnXv`rXQJ`XQJ`ےJltJlt`vXn`vXnZHAbZHAbtArdtArdnXv`nXv`˂rXQbHAZpltbf`vH~fHAbےHAbےrd|rd|Xv`fXv`fJ`ےJ`ےltbltbvXnvXnHAbےHAbےrd|rd|Xv`fXv`fJ`ےJ`ےdrtAJH~fvpf`JXQd|Zd|Zv`fv`f`ےb`ےbtbdQtbdQXnvXnvbے`bے`d|Zd|Zv`fv`f`ےb`ےbtbdQtbdQvpfZHAbr˂p|ZdArd|`f~`f~ےbHAےbHAtbdQZtbdQZnvpnvpے`Jے`JXQ|ZdQf~`f~`ےHAےbHAtbdQZtbdQZnvpnvpr˂pے`JXQ|ZdQv`fpvnbHAZbHAZbdQZ|bdQZ|vpfvpfے`JXQے`JXQ|ZdQb|ZdQbf~Hf~HbHAZbHAZbdQZ|bdQZ|r˂pr˂ptArdtArdv~rXQJHAZp˂drtAJ|drvpfvpfے`JXQ`JXQr|ZdQbf~Hf~HےHAZbHAZbdQZ|bdQZ|vpfvpfے`JXQے`JXQ|ZdQb|ZdQbf~Hf~HJ`ے˂rXQdQtAJlXnv`vXn`JXQr`JXQrZdQbtZdQbt~Hf~HfbHAZpbHAZpdQZ|dQZ|vpfHvpfH`JXQr`JXQrZdQbtZdQbt~HfHfpbHAZpbHAZltb`vXnH~frZAbdQbtdQbt~Hfp~HfpHAZp˂HAZp˂Z|dZ|dpfH~pfH~JXQrJXQrdQbtdQbt~Hfp~HfpHAZp˂HAZp˂Z|dZ|dH~f˂pZ`JXQrQbtlZdQbtHfpvHfpvZp˂Zp˂|dr|dtAfH~fH~XQr˂rbtbtlHfpvHfpvZp˂Zp˂|dr|drfH~fH~ZHAbr˂pbtl~HfpXv`fp˂rp˂rdrtAdrtAH~fH~fr˂pr˂ptlJtlJfpvfpvp˂rp˂rdrtAdrtAZHAbZHAb|ZdQb|ZdQbHfpv`ےbrXQJltbQtAJlH~fH~fr˂pbtltlJfpvfpvp˂rp˂rdrtAdrtAH~fH~fr˂pr˂ptlJtlJfpvfpvbHAZpJ`ےtbdQf~f`vpf˂pZ˂pZlJtAlJtApvnpvn˂rXQ˂rXQdrtAJdrtAJ~f`~f`˂pZ˂pZlJtAlJtApvnvnr˂rXQdrtAdQdQZ|lvp``vXHے`JlJtArlJtArvnXvnXrXQJrXQJrtAJlrtAJlf`vf`v˂pZHA˂pZHAlJtArlJtArvnXvnXrXQJrXQJrtAJlrtAJl`vXnHAbے˂pZJAr|lJtnXvnXvrXQJ`rXQJ`tAJlJltf`vXfZHAbpZHAblJtAdJtArdnXvnXvrXQJ`rXQJ`tAJltAJlf`vXf`vXے`pZZHAXQrJtAdQbvnX~fpvXQJ`ےXQJ`ےJltJlt`vXn`vXnZHAbZHAbtArdtArdnXv`nXv`XQJ`ےXQJ`ےJltJltے`JXQے`JXQtlJtlJnXvHAZp˂`ےbZdrttbdQZ`vXnZHAbZHAbJtAdtArdnXv`nXv`XQJ`ےXQJ`ےJltJlt`vXn`vXnZHAbZHAbtArdtArdnXv`nXv`˂rXQbHAZpZ|dvXnH~fHAbےHAbےrd|rd|Xv`fXv`fJ`ےJ`ےltbltbvXnvXnHAbےHAے`rd|rdfXv`fXQJ`ےJ`ےZ|dtbdQvXn~fZXQr˂d|Zd|Zv`fv`f`ےb`ےbtbdQtbdQXnvXnvbے`bے`d|Zd|Zv`fv`f`ےb`ےbtbdQtbdQvpf`JXQrHAbےZdQbtArd|`f~`fHےbHAےbHAtbdQZbnvnvpے`Jے`J|ZdQ|ZdQ`f~`f~ےbHAےbHAtbdQZtbdQZnvpnvpHAbے˂pZtlJv`fnXv`bHAZbHAZbdQZ|bdQZ|vpfvpfے`JXQے`JXQ|ZdQb|ZdQbf~Hf~HbHAZbHAZbdQZ|bdQZ|r˂pr˂ptArdtArd`f~rXQHAHAZp`AJlt|dnvpfے`JXQے`JXQ|ZdQb|ZdQbf~Hf~HbHAZbHAZbdQZ|bdQZ|vpfvpfے`JXQے`JXQ|ZdQb|ZdQbf~Hf~HJ`p˂˂brtAJlvpfH`vnvp`JXQr`JXQrZdQbtZdQbt~Hf~HfbHAZpbHAZpdQZ|dQZ|vpfHvpfH`JXQrJXQrbZdQbt~Hf~HfHAZpbHAZprtAJlZ|dvpfHHAbpZHAbdQbtdQbt~Hfp~HfpHAZp˂HAZp˂Z|dZ|dpfH~pfH~JXQrJXQrdQbtdQbt~Hfp~HfpHAZp˂HAZp˂Z|dZ|dHXn˂pZ`JXQrlJtAZdQbHfpvfpvZp˂Zdr|drpfHfH~XQr˂XQr˂btlbtlHfpvHfpvZp˂Zp˂|dr|drfH~fH~`JXQrHAbےtArd~Hfpf~Hp˂rp˂rdrtAdrtAH~fH~fr˂pr˂ptlJtlJfpvfpvp˂rp˂rdrtAdtAJZHAbZHAb|ZdQb|ZdQbHfpvZp˂ےbHAbdQZ|vffH~fr˂pr˂ptlJtlJfpvfpvp˂rp˂rdrtAdrtAH~fH~fr˂pr˂ptlJtlJfpvfpvrXQJHAZdtbdQ~f`fH~˂pZ˂pZlJtAlJtApvnpvn˂rXQ˂rXQdrtAJdtAJl~f`~fZ˂pZtlJlJtApvnpvn˂rXQ˂rXQtbdQrtAJl~f`JQr˂pے`JlJtArlJtArvnXvnXrXQJrXQJrtAJlrtAJlf`vf`v˂pZHA˂pZHAlJtArlJtArvnXvnXrXQJrXQJrtAJlrtAJlvpfHHAbے˂pZrd|JtArdnXvnrXQJrXQJ`tAJltAJlf`vXf`vXpZHAbpZHAbJtArdJtArdnXvnXvrXQJ`rXQJ`tAJltAJlf`vXf`vX˂pZ`JXQr|ZdQbvnv`fpvXQJ`ےXQJ`ےJltJlt`vXn`vXnZHAbZHAbtArdtArdnXv`nXv`XQJ`ےXQJ`ےJltltbے`JXQے`JXQtlJtlJnXHrXQJ`Zp˂drt`vXn`vXnZHAbZHAbtArdtArdnXv`nXv`XQJ`ےXQJ`ےJltJlt`vXn`vXnZHAbZHAbtArdtArdnXv`nXv``ےbrtAdQZZ|l璍vXnf`vXHAbےHAbےrd|rd|Xv`fXv`fJ`ےJ`ےltbtbnvXnHAbےHAbےtAd|rd|Xv`fXv`fJ`ےJ`ےZ|dtbdQvXnZHAbXQr˂d|Zd|Zv`fv`f`ےb`ےbtbdQtbdQXnvXnvbے`bے`d|Zd|Zv`fv`f`ےb`ےbtbdQtbdQ~f``pZHAHAXQrZdQbtf~`f~`ےHAےbHAtbdQZtbdQZnvpnvpے`Jے`J|ZdQ|ZdQ`f~`f~ےbHAےbHAtbdQZtbdQZnvpnvpHAbے˂p`tlJf~HnXv`bHAZbHAZbdQZ|bdQZ|vpfvpfے`JXQے`JXQ|ZdQb|ZdQbf~HfHfbHAZbHAZbdQZ|nvpr˂pr˂ptArdtArdfpvےbHArXQJ`AJltvpfvpfے`JXQے`JXQ|ZdQb|ZdQbf~Hf~HbHAZbHAZbdQZ|bdQZ|vpfvpfے`JXQے`JXQ|ZdQb|ZdQbf~Hf~HHAZp˂|drtbdQZvpf~nvp`JXQr`JXQrZdQbtZdQbt~HfHfpbHAZpbHAZdQZ|vpfvpfH`JXQr`JXQrZdQbtZdQbt~Hf~HfbHAZpbHAZprtAJlZ|dvpfHے`JXpZAb`dQbtdQbt~Hfp~HfpHAZp˂HAZp˂Z|dZ|dpfH~pfH~JXQrJXQrdQbtdQbt~Hfp~HfpHAZp˂HAZp˂Z|dZ|dvXnbے`˂pZHAlJtAHfpvHfpvZp˂Zp˂|dr|drfH~fH~XQr˂XQr˂btlbtlHfpvHfpvZp˂Zp˂|dr|drfH~fH~`JXQHAJXQrbtArdtfpvf~fp˂rp˂rdrtAdrtAH~fH~fr˂pr˂ptlJtlJfpvpvnp˂rdrtAdrtAfHfZHAbZHAb|ZdQb|ZdQbnXv`Zp˂ےbHAbdQZH~fH~fr˂pr˂ptlJtlJfpvfpvp˂rp˂rdrtAdrtAH~fH~fr˂pr˂ptlJtlJfpvfpvrXQJtAJl|drf`vXfH~˂pZ˂pZlJtAlJtApvnvnr˂rXQdrtAJdrtAJHf`~f`˂pZ˂pZlJtAlJtApvnpvn˂rXQ˂rXQ|drtbdQZXnvQr˂pJXQrlJtArlJtArvnXvnXrXQJrXQJrtAJlrtAJlf`vf`v˂pZHA˂pZHAlJtArlJtArvnXvnXrXQJrXQJrtAJltAJlvpfHJXQrbے`rZdQnXvnXvrXQJ`rXQJ`tAJltAJlf`vXf`vXpZHAbpZHAbJtArdJtArdnXvnXvrXQJ`rXQJ`tAJltAJlf`vXf`vXbے`tl|lJtAnXv`vnXXQJ`ےXQJ`ےJltJlt`vXn`vXnZHAbZHAےtArdtArdnXv`rXQJ`XQJ`ےJltJlt`vXnے`JXQے`JXQtlJtlJf~HrXQJ`Zp˂rtAJl`vXn`vXnZHAbZHAbtArdtArdnXv`nXv`XQJ`ےXQJ`ےJltJlt`vXn`vXnZHAbZHAbtArdtArdnXv`nXv``ےtbdQZtAJlnvpf`vXHAbےHAے`rd|rdfXv`fXQJ`ےJ`ےltbltbvXnvXnHAbےHAbےrd|rd|Xv`fXv`fJ`ےJ`ےtAJl|drpfH~ZHAb˂pZHd|Zd|Zv`fv`f`ےb`ےbtbdQtbdQXnvXnvbے`bے`d|Zd|Zv`fv`f`ےb`ےbtbdQtbn~v˂pZHAJXQrbtl`f~`f~ےbHAےbHAtbdQZtbdQZnvpnvpے`Jے`J|ZdQ|ZdQ`f~`f~ےbHAےbHAtbdQZtbdQZnvpnvpJXQrZdQbtrd|f~Hv`fbHAZbHAZbdQZ|bdQZ|vpfvpfے`JXQ`JXQr|ZdQbf~Hf~HےHAZbHAZbdQZ|bdQZ|vpfr˂pr˂ptArdtArdfpvp˂rbHAZtbdQvpfvpfے`JXQے`JXQ|ZdQb|ZdQbf~Hf~HbHAZbHAZbdQZ|bdQZ|vpfvpfے`JXQے`JXQ|ZdQb|ZdQbf~Hf~HrXQJ`|drtbdQZfH~nvfH`JXQrJXQrbZdQbt~Hf~HfHAZpbHAZpdQZ|dQZ|vpfHvpfH`JXQr`JXQrZdQbtZdQbt~Hf~HfbHAZpbHAZptbdQZtAJl璐f`vے`JQrAbے`dQbtdQbt~Hfp~HfpHAZp˂HAZp˂Z|dZ|dpfH~pfH~JXQrJXQrdQbtdQbt~HfpHfpvHAZp˂HAZdZ|dvp`vpfH~bے`˂p`JJtArdHfpvHfpvZp˂Zp˂|dr|drfH~fH~XQr˂XQr˂btlbtlHfpvHfpvZp˂Zp˂|dr|drfH~fH~˂pZHAlJtAZdQbtfpv~Hfpp˂rp˂rdrtAdtAJH~fH~fr˂pbtltlJfpvfpvp˂rp˂rdrtAdrtAH~fZHAbZHAb|ZdQbf~HnXv`XQJ`ےdrtAZ|dH~fH~fr˂pr˂ptlJtlJfpvfpvp˂rp˂rdrtAdrtAH~fH~fr˂pr˂ptlJtlJfpvfpvےbHAtAJl||dtf`vX~fZ˂pZtlJlJtApvnpvn˂rXQ˂rXQdrtAJdrtAJ~f`~f`˂pZ˂pZlJtAlJtApvnpvn˂rXQ˂rXQ|drtbdQZXnvpZHAJXQrlJtArlJtArvnXvnXrXQJrXQJrtAJlrtAJlf`vf`v˂pZHA˂pZHAlJtArlJtArvnXnrXQrXQJrtAJlrtAJlXnvf`vJXQHAbXQrbt|ZdQnXvnXvrXQJ`rXQJ`tAJltAJlf`vXf`vXpZHAbpZHAbJtArdJtArdnXvnXvrXQJ`rXQJ`tAJltAJlf`vXf`vXbے`rd|lJtAnvfvnXXQJ`ےXQJ`ےJltltb`vXnZHAbZHAbJtAdtArdnXv`nXv`XQJ`ےXQJ`ےJltJlt`vXnے`JXQے`JXQtlJXv`fpvnbHAZJbdQrtAJl`vXn`vXnZHAbZHAbtArdtArdnXv`nXv`XQJ`ےXQJ`ےJltJlt`vXn`vXnZHAbZHAbtArdtArdnXv`nXv`Zp˂drtAbdQZ|nvpHAbےHAbےtAd|rd|Xv`fXv`fJ`ےJ`ےltbltbvXnvXnHAbےHAbےrd|rd|Xv`fXv`fJ`ےJ`ےtAJl|ltpfH~bے`˂pZHd|Zd|Zv`fv`f`ےb`ےbtbdQtbdQXnvXnvbے`ے`Jd|Zdfv`fJ`ے`ےbtbdQtbdQpfH~Xnvے`JlJAbtl`f~`f~ےbHAےbHAtbdQZtbdQZnvpnvpے`Jے`J|ZdQ|ZdQ`f~`f~ےbHAےbHAtbdQZtbdQZnvpnvpJXQrZdQbtrd|~Hfpv`ffbHAZbHAZbdQZ|nvpvpfے`JXQے`JXQ|ZdQb|ZdQbf~Hf~HbHAZbHAZbdQZ|bdQZ|vpfr˂pr˂ptArd~HfXv`fp˂rZ|dtbdQvpfvpfے`JXQے`JXQ|ZdQb|ZdQbf~Hf~HbHAZbHAZbdQZ|bdQZ|vpfvpfے`JXQے`JXQ|ZdQb|ZdQbf~HfHfrXQJ`JltdrtAfH~f`JXQr`JXQrZdQbtZdQbt~Hf~HfbHAZpbHAZpdQZ|dQZ|vpfHvpfH`JXQr`JXQrZdQbtZdQbt~Hf~HfbHAZpbHAZptdrtAbnvvpJXQrAbJXQdQbtdQbt~Hfp~HfpHAZp˂HAZp˂Z|dZ|dpfH~pfH~JXQrXQrbtdQbt~Hfp~HfpHAZp˂HAZp˂Z|dZ|df`vpfH~XQr˂|ZdQbJtArdHfpvHfpvZp˂Zp˂|dr|drfH~fH~XQr˂XQr˂btlbtlHfpvHfpvZp˂Zp˂|dr|drfH~fH~ے`Jd|ZlJtArvnXpvnp˂rdrtAdrtAfHfH~fr˂pr˂ptlJtlJfpvfpvp˂rp˂rdrtAdrtAH~f`vXnZHAb|ZdQb|ZdQbpvn~HfXQJ`ےrtAJlZ|rAH~fH~fr˂pr˂ptlJtlJfpvfpvp˂rp˂rdrtAdrtAH~fH~fr˂pr˂ptlJtlJfpvpvnےbHAbdQZ|JltvXnۀ˂pZ˂pZlJtAlJtApvnpvn˂rXQ˂rXQdrtAJdrtAJ~f`~f`˂pZ˂pZlJtAlJtApvnpvn˂rXQ˂rXQJltp`vXfH~˂pZHAr˂plJtArlJtArvnXvnXrXQJrXQJrtAJltAJl璐f`vfZHA˂pZHAlJtAlJtArvnXvnXrXQJrXQJrtAJlrtAJlXnf`ppZHAbtlJZQbt璀nXvnXvrXQJ`rXQJ`tAJltAJlf`vXf`vXpZHAbpZHAbJtArdJtArdnXvnXvrXQJ`rXQJ`tAJltAJlf`vXf`vXXQr˂dQbtd|Zv`frXQJ`XQJ`ےJltJlt`vXn`vXnZHAbZHAbtArdtArdnXv`nXv`XQJ`ےXQJ`ےJltJlt`vXnvpfے`JXQtlJtlJXv`fpvnrXQtbdQJlt`vXn`vXnZHAbZHAbtArdtArdnXv`nXv`XQJ`ےXQJ`ےJltJlt`vXn`vXnZHAbZHAےtArdtArdnXv`rXQJ`XQJ`ےdrtAbdQZ|vpfHHAbےHAbےrd|rd|Xv`fXv`fJ`ےJ`ےltbltbvXnvXnHAbےHAbےrd|rd|Xv`fXv`fJ`ےJ`ےbdQZ|nvpf`vXbے`ZHAbd|Zd|Zv`fv`f`ےb`ےbtbdQtbnXnvbے`bے`d|Zd|Zv`fv`f`ےb`ےbtbdQtbdQf`vXfH~ے`JtArdlJtAr`f~`f~ےbHAےbHAtbdQZtbdQZnvpnvpے`Jے`J|ZdQ|ZdQ`f~`f~ےbHAےbHAtbdQZtbdQZnvpnvppZHAblJtArdQbt~HfpےHAZbHAZbdQZ|bdQZ|vpfvpfے`JXQے`JXQ|ZdQb|ZdQbf~Hf~HbHAZbHAZbdQZ|bdQZ|vpfH~fr˂ptArdtArd~HfXv`fJ`ےZ|dbdQZ|vpfvpfے`JXQے`JXQ|ZdQb|ZdQbf~Hf~HbHAZbHAZbdQZ|bdQZ|vpfvpfے`JXQ`JXQr|ZdQbf~Hf~Hp˂rbHAZJltltb~f``JXQr`JXQrZdQbtZdQbt~Hf~HfbHAZpbHAZpdQZ|dQZ|vpfHvpfH`JXQr`JXQrZdQbtZdQbt~Hf~HfbHAZpbHAZpdrtAfH~nvpJXQrے`JXQdQbtdQbt~HfpHfpvHAZp˂HAZdZ|dvpfHpfH~JXQrJXQrdQbtdQbt~Hfp~HfpHAZp˂HAZp˂Z|dZ|dnvpf`vXXQr|ZdQbd|ZHfpvHfpvZp˂Zp˂|dr|drfH~fH~XQr˂XQr˂btlbtlHfpvHfpvZp˂Zp˂|dr|dtAfH~fH~ے`Jd|ZlJtArvnXvp˂rp˂rdrtAdrtAH~fH~fr˂pr˂ptlJtlJfpvfpvp˂rp˂rdrtAdrtAH~f`vXnvpfvpfے`JXQے`JXQJtArdHfp``fZp˂bHAZdQZ|vpfvpfH`JXQr`JXQrZdQbtZdQbt~Hf~HfbHAZpbHAZpdQZ|dQZ|vpfHvpfHJXQrbے`ۑpJAHH~ㅐfەH~ㅐfۂdrQtH~fH~fr˂pr˂p|ZdQf~HnXv`rXQJ`drtAJdrtAJHf`~f`˂pZ˂pZlJtAlJtApvnpvn˂rXQ˂rXQdrtAJdrtAJ~f`~f`˂pZHAJXQrr󙐉۝`vXn`vXnJlt`vXn`vXnZHAbZHAےbtlfpvf~HےbAZltbltbvXnvXnHAbےHAbےrd|rd|Xv`fXv`fJ`ےJ`ےltbltbvXnvXnbے`˂p`ZpJAHrvˍpfvˍpfbAdZ|vpfvpfے`JXQ`JXQrJtArdnXv`fpvrXQdQZ|dQZ|vpfHvpfH`JXQr`JXQrZdQbtZdQbt~Hf~HfbHAZpbHAZpdQZ|dQZ|vpfHvpfHJXQHAbQXb㉀ۙˁ`ZH~ㅐfەH~ㅐfۂdrQtH~fH~fr˂pbtltlJf~HnXv`J`ےdrtAJdrtAJ~f`~f`˂pZ˂pZlJtAlJtApvnpvn˂rXQ˂rXQdrtAJdrtAJ~f`~f`ے`JpJAHrQXb㉀۝`vXn`vXnJlt`vXnZHAbZHAb|ZdQbtArdfpvpvnbHAZpltbltbvXnvXnHAbےHAbےrd|rd|Xv`fXv`fJ`ےJ`ےltbltbvXnvXnXQr˂ˁ`ZpJAHrvˍpfvˍp|bAdZ|vpfے`JXQے`JXQtlJ|ZdQb~HfrXQJ`rXQdQZ|dQZ|vpfHvpfH`JXQr`JXQrZdQbtZdQbt~Hf~HfbHAZpbHAZpdQZ|dQZ|vpfHvpfHpZHAbQXb㉀ˁ`pH~ㅐfۂdrQtdrQtH~fr˂pr˂ptArdtlJpvnAZp˂J`ےdrtAJdrtAJ~f`~f`˂pZ˂pZlJtAlJtApvnpvn˂rXQ˂rXQdrtAJdrtAJ~f`~f`ے`Jˁ`ZQXJAHr󙐝`vXnJltJlt`vXnZHAbZHAb|ZdQbtArdXv`frXQJbHAZrltbltbvXnvXnHAbےHAbےrd|rd|Xv`fXv`fJ`ےJ`ےltbltbvXnvXnXQrb㉀ۑpˁ`ZQXvˍpfbAdZ|bAdZ|vpfے`JXQے`JXQtd||lJtA~Hf`ےbXQJ`ےdQZ|dQZ|vpfHvpfH`JXQr`JXQrZdQbtZdQbt~Hf~HfbHAZpbHAZpdQZ|dQZ|vpfHvpfHے`JXQJAHrb㉀ۑpH~ㅐfۂdrQtdrQtH~fr˂pr˂pZdQbtrd|pvnHAZp˂bHAZdrtAJdrtAJ~f`~f`˂pZ˂pZlJtAlJtApvnpvn˂rXQ˂rXQdrtAJdrtAJ~f`~f`r˂pˁ`ZQXJAHr󙐝`vXnJltJlt`vXnZHAbZHAblJtAZdQbtXHfprXQJp˂rltbltbvXnvXnHAbےHAbےrd|rd|Xv`fXv`fJ`ےJ`ےltbltbvXnvXnZHAbb㉀ۑpˁ`pfvˍpfbAdZ|bAdZ|vpfے`JXQے`JXQrd|lJtAvnXbHAZpXQJ`ےdQZ|dQZ|vpfHvpfH`JXQr`JXQrZdQbtZdQbt~Hf~HfbHAZpbHAZpdQZ|dQZ|vpfHvpfHے`JXQ`ZQXbH~ㅐfەH~ㅐfۂdrQtdrQtH~fr˂pr˂pZdQbtrd|v`f˂rXbHAZdrtAJdrtAJ~f`~f`˂pZ˂pZlJtAlJtApvnpvn˂rXQ˂rXQdrtAJdtAJl~f`~frr˂pۑpJ`vXn`vXnJltJlt`vXnZHAbZHAbl|ZZdQtAr~HfpQJ`ےprQJ`ltbltbvXnvXnHAbےHAbےrd|rd|Xv`fXv`fJ`ےJ`ےltbtbnvXn˂pZ`JXQrAHr󙐂˕vˍpfvˍpfbAdZ|bAdZ|vpfے`JXQے`JXQdQbtdfvnXbHAZpےbHdQZ|dQZ|vpfHvpfH`JXQr`JXQrZdQbtZdQbt~HfHfpbHAZpbHAZdQZ|vpfvpfHHAbے˂pZ`ZQXbH~ㅐfەH~ㅐfۂdrQtdrQtH~fr˂pr˂plJtAr~HXvv`pv˂rXAZp˂drtAJdrtAJ~f`~f`˂pZ˂pZlJtAlJtApvnvnr˂rXQdrtAJdrtAJHf`~f``JXQrHAbےۑpJ`vXn`vXnJltJlt`vXnZHAbZHAbd|Z`f~nXvQJ`brXQJ`ltbltbvXnvXnHAbےHAے`rd|rdfXv`fXQJ`ےJ`ےltbltbvXnvXn˂pZ`JXQrAHQXb㉀vˍpfvˍpfbAdZ|bAdZ|vpfے`JXQے`JXQdQbtHfpv`f~AZp˂ےbHdQZ|dQZ|vpfHvpfH`JXQrJXQrbZdQbt~Hf~HfHAZpbHAZpdQZ|dQZ|vpfHvpfHHAbے˂pZۑpJAHH~ㅐfەH~ㅐfۂdrQtdrQtH~fr˂pr˂plJtAdQnXvHfpvrXQJ`AZp˂drtAJdtAJl~f`~fZ˂pZtlJlJtApvnpvn˂rXQ˂rXQdrtAJdrtAJ~f`~f``pZHAHAXQrr󙐂ˁ``vXn`vXnJltJlt`vXnZHAbZHAbbtl`f~nXvےbHArQJltbtbnvXnHAbےHAbےtAd|rd|Xv`fXv`fJ`ےJ`ےltbltbvXnvXnbے`˂pZHAZQXb㉀vˍpfvˍpfbAdZ|bAdZ| \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv37_2.dat b/mpdf/qrcode/data/qrv37_2.dat deleted file mode 100644 index 6b2cc4e..0000000 --- a/mpdf/qrcode/data/qrv37_2.dat +++ /dev/null @@ -1,329 +0,0 @@ -|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrq|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrq|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrq|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrq|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrq|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrq|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrq|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrq|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrq|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrq|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrq|{|{|{|{zyzyzyxwvuvuvuvurqrqrqrq|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrq|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrq|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrq|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrq|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrq|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrq|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrq|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrq|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrq|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrq|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrq|{|{|{|{xwxwxwxwvuvuvutsrqrqrqrq|{|{|{|{xwxwxwxwtstststsrqrqrqrqpopopopo|{|{|{|{xwxwxwxwtstststsrqrqrqrqpopopopo|{|{|{|{xwxwxwxwtstststsrqrqrqrqpopopopo|{|{|{|{xwxwxwxwtstststsrqrqrqrqpopopopo~}|{|{|{|{xwxwxwxwtstststsrqrqrqrqpopopopo~}~}~}~}|{|{|{|{xwxwxwxwtstststsrqrqrqrqpopopopo~}~}~}~}|{|{|{|{xwxwxwxwtstststsrqrqrqrqpopoponm~}~}~}~}|{|{|{|{xwxwxwxwtstststsrqrqrqrqnmnmnmnm~}~}~}~}|{|{|{|{xwxwxwxwtstststsrqrqrqrqnmnmnmnm~}~}~}~}|{|{|{|{xwxwxwxwtstststsrqrqrqrqnmnmnmnm~}~}~}~}|{|{|{|{xwxwxwxwtstststsrqrqrqrqnmnmnmnm~}~}~}~}|{|{|{|{xwxwxwxwtstststsrqrqrqponmnmnmnm~}~}~}~}|{|{|{|{xwxwxwxwtstststspopopoponmnmnmnm~}~}~}~}|{|{|{|{xwxwxwxwtstststspopopoponmnmnmnm~}~}~}~}|{|{|{|{xwxwxwxwtstststspopopoponmnmnmnm~}~}~}~}|{|{|{|{xwxwxwxwtstststspopopoponmnmnmnm~}~}~}~}|{|{|{zyxwxwxwxwtstststspopopoponmnmnmnm~}~}~}~}zyzyzyzyxwxwxwxwtstststspopopoponmnmnmnm~}~}~}~}zyzyzyzyxwxwxwxwtstststspopopoponmnmnmnm~}~}~}~}zyzyzyzyxwxwxwxwtstststspopopoponmnmnmnm~}~}~}~}zyzyzyzyxwxwxwxwtstststspopopoponmnmnmnm~}~}~}~}zyzyzyzyxwxwxwxwtstststspopopoponmnmnmnm~}~}~}~}zyzyzyzyxwxwxwxwtstststspopopoponmnmnmnm~}~}~}~}zyzyzyzyxwxwxwxwtstststspopopoponmnmnmnm~}~}~}~}zyzyzyzyxwxwxwxwtstststspopopoponmnmnmnm~}~}~}~}zyzyzyzyxwxwxwxwtstststspopopoponmnmnmnm~}~}~}~}zyzyzyzyxwxwxwxwtstststspopopoponmnmnmnm~}~}~}~}zyzyzyzyxwxwxwxwtstststspopopoponmnmnmnm~}~}~}~}zyzyzyzyxwxwxwvutstststspopopoponmnmnmnm~}~}~}~}zyzyzyzyvuvuvuvutstststspopopoponmnmnmnm~}~}~}~}zyzyzyzyvuvuvuvutstststspopopoponmnmnmnm~}~}~}~}zyzyzyzyvuvuvuvutstststspopopoponmnmnmnm~}~}~}~}zyzyzyzyvuvuvuvutstststspopopoponmnmnmnm~}~}~}~}zyzyzyzyvuvuvuvutstststspopopoponmnmnmnm~}~}~}~}zyzyzyzyvuvuvuvutstststspopopoponmnmnmnm~}~}~}~}zyzyzyzyvuvuvuvutstststspopopoponmnmnmnm~}~}~}~}zyzyzyzyvuvuvuvutstststspopopoponmnmnmnm~}~}~}~}zyzyzyzyvuvuvuvutstststspopopoponmnmnmnm~}~}~}~}zyzyzyzyvuvuvuvutstststspopopoponmnmnmnm~}~}~}~}zyzyzyzyvuvuvuvutstststspopopoponmnmnmnm~}~}~}~}zyzyzyzyvuvuvuvutststsrqpopopoponmnmnmnm~}~}~}~}zyzyzyzyvuvuvuvurqrqrqrqpopopoponmnmnmnm~}~}~}~}zyzyzyzyvuvuvuvurqrqrqrqpopopoponmnmnmnm~}~}~}~}zyzyzyzyvuvuvuvurqrqrqrqpopopoponmnmnmnm~}~}~}~}zyzyzyzyvuvuvuvurqrqrqrqpopopoponmnmnmnm~}~}~}|{zyzyzyzyvuvuvuvurqrqrqrqpopopoponmnmnmnmnmnmnmnmghghghghfefefefebabababa^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=<;<;<;<;87878787343433330/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"! - - - - nmnmnmlkghghghghfefefefebabababa^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=<;<;<;<;87878787334343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"! - - - - lklklklkghghghghfefefefebabababa^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=<;<;<;<;87878787434343430/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"! - - - - lklklklkghghggggfefefefebabababa^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=<;<;<;<;87878787434343430/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"! - - - - lklklklkgghghghgfefedcdcbabababa^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=<;:9:9:987878787434343430/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"! - - - - lklklklkhghghghgdcdcdcdcbabababa^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=:9:9:9:987878787434333330/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"! - - - - lklklklkhghghghgdcdcdcdcbabababa^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=:9:9:9:987878787434343430/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"! - - - lklklklkhghghghgdcdcdcdcbabababa^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=:9:9:9:987878765212121210/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"! lklklklkhghghghgdcdcdcdcbabababa^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"! lklklklkhghgggggdcdcdcdcbabababa^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGFEDCDCDCBABABABA>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"! lklklklkghghghghdcdcdcdcbabababa^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"! lklklklkghghghghdcdcdcdcbabababa^]^]^]^]ZYZYZYZYXWXWVUVUTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"! lklklklkghghghghdcdcdcdcbabababa^]^]^]^]ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"! lklklklkghghghghdcdcdcdcbabababa^]^]^]^]ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"! lklklklkghghghghdcdcdcdcbabababa^]^]^]^]ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+('('('('$#$#$#$#"!"!"!"! lklklklkghggggggdcdcdcdcbabababa^]^]^]^]ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+('('('('$#$#$#$#"!"!"!"! lklklklkhghghghgdcdcdcdcbaba`_`_^]^]^]^]ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+('('('('$#$#$#$#"!"!"!"! lklklklkhghghghgdcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+('('('('$#$#$#$#"!"!"!"! lklklklkhghghghgdcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUTSTSTSTSPOPONMNMLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+('('('('$#$#$#$#"!"!"!"! lklklklkhghghghgdcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUTSTSTSTSNMNMMMMMLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#"!"!"!"! lklklklkhghghghgdcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUTSTSTSTSNMNMNMNMLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#"!"!"!"! lklklklkhgggggghdcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUTSTSTSTSNMNMNMNMLKLKLKLKHGHGHGHGDCDCDCDCBA@?@?@?>=>=>=>=:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#"!"!"!"! lklklklkghghghghdcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUTSTSTSTSNMNMNMNMLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#"!"!"!"! lklklklkghghghghdcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUTSTSRQRQNMNMNMNMLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#"!"!"!"! lklklklkghghghghdcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMMMMMMNLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#"!"!"!"!    lklklklkghghghghdcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQMNMNMNMNLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#"!"!"!"!    lklklklkghghghghdcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQMNMNMNMNLKJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#        lklklklkgggggghgdcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQMNMNMNMNJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#        lklklklkhghghghgdcdcdcdc`_`_`_`_^]^]\[\[ZYZYZYZYVUVUVUVURQRQRQRQMNMNMNMNJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#        lklklklkhghghghgdcdcdcdc`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQMNMNMNMNJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#        lklklklkhghghghgdcdcdcdc`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQMMMMMMNMJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#        lklklklkhghghghgdcdcdcdc`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:96565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#        lklklklkgggghghgdcdcdcdc`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:96565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#        lklklklkhghgfefedcdcdcdc`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?>=<;<;<;:9:9:9:96565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#        lkjijijifefefefedcdcdcdc`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;:9:9:9:96565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#        jijijijifefefefedcdcdcdc`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;:9:9:9:96565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#        - jijijijifefefefedcdcdcdc`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQMMMMMNMNJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;:9:9:9:96565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#        - - - - jijijijifefefefedcdcdcdc`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQMNMNMNMNJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;:9:9:9:96565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#        - - - - jijijijifefefefedcdcdcdc`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQMNMNMNMNJIJIJIJIHGFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;:9:9:9:96565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#        - - - - jijijijifefefefedcdcdcdc`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQMNMNMNMNJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;:9:9:9:96565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#        - - - - jijijijifefefefedcdcdcdc`_`_`_`_\[\[\[\[ZYZYXWXWVUVUVUVURQRQRQRQMNMNMNMNJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;:9:9:9:96543434321212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#        - - - - jijijijifefefefedcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQMNMNMNMMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;:9:9:9:94333333421212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#        - - - - jijijijifefefefedcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQMMMMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;:9:9:9:93434343421212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#        - - - - jijijijifefefefedcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;:9:9:9:93434343421212121.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#        - - - - jijijijifefefefedcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;:9:9:9:93434343421212121.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#        - - - - jijijijifefefefedcdcbaba`_`_`_`_\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;:98787873434343421212121.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#        - - - - jijijijifefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;878787873434343421212121.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#        - - - - jijijijifefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMMMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;878787873333334321212121.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#        - - - - jijijijifefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQMMMNMNMNJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;87878787434343430/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#        - - - - jijijijifefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQMNMNMNMNJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;87878787434343430/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#        - - - - jijijijifefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQMNMNMNMNJIJIJIJIFEFEFEFEDCBABABA@?@?@?@?<;<;<;<;87878787434343430/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#        - - - - jijijijifefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQMNMNMNMNJIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;87878787434343430/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#        - - - - jijijijifefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWVUVUTSTSRQRQRQRQMNMNMNMNJIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;87878787434343430/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#        - - - - jijijijifefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSRQRQRQRQMNMNMMMMJIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;87878787333334340/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#        - - - - jijijijifefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSRQRQRQRQMMNMNMNMJIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;87878787343434340/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#        - - - - jijijijifefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSRQRQRQRQNMLKLKLKJIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;87878787343434340/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"!        - - - - jijijijifefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;87878787343434340/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"!        - - - - jijijijifefefefebabababa`_`_^]^]\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;87878787343434340/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"!        - - - - jijijijifefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;87878787343434330/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"!        - - - - jijijijifefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;87878787333343430/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"!        - - - - jijijijifefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;87878787434343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!        - - - - jijijijifefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;87878787434343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!        - - - - jijijijifefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEBABABABA@?>=>=>=<;<;<;<;87878787434343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!        - - - - jijijijifefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEBABABABA>=>=>=>=<;<;<;<;87878787434343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!        - - - - jijijijifefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEBABABABA>=>=>=>=<;<;<;<;87878787434343330/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!       - - - - jijijijifefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEBABABABA>=>=>=>=<;<;<;<;87878787333434340/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!     - - - - jijijihgfefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEBABABABA>=>=>=>=<;<;<;<;87878787343434340/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!     - - - - hghghgggfefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKJIHGHGHGFEFEFEFEBABABABA>=>=>=>=<;<;<;<;87878787343434340/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"! - - - - ggghghghfefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=<;<;<;<;87878787343434340/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"! - - - - ghghghghfefefefebabababa^]^]^]^]\[\[ZYZYXWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=<;<;<;<;87878787343434340/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"! - - - - YYZZ[[\\))**++,,88776655hhggffeeggffeeddssrrqqppvvwwxxyyFFGGHHII]]^^__``--..//0044332211ddccbbaaccbbaa``oonnmmllzz{{||}}JJKKLLMMaabbccdd1122334400//..--``__^^]]__^^]]\\kkjjiihh~~NNOOPPQQ !!eeffgghh55667788,,++**))\\[[ZZYY[[ZZYYXXggffeeddRRSSTTUU""##$$%%iijjkkll99::;;<< - - ((''&&%%XXWWVVUUWWVVUUTTccbbaa``VVWWXXYY&&''(())mmnnoopp==>>??@@ $$##""!!TTSSRRQQSSMMLLKK__^^]]\\ZZ[[\\]]**++,,--qqrrssttAABBCCDD PPOONNMMJJIIHHGG[[ZZYYXX^^__``aa..//0011uuvvwwxxEEFFGGHHLLKKJJIIFFEEDDCCWWVVUUTTbbccddee22334455yyzz{{||IIJJKKLLHHGGFFEEBBAA@@??SSRRQQPPffgghhii66778899~~}}~~}}||}}~~MMNNOOPP DDCCBBAA>>==<<;;OONNMMLL~~}}||jjkkllmm::;;<<==||{{zzyy{{zzyyxxQQRRSSTT!!""##$$ @@??>>==::993322KKJJIIHH{{zzyyxxnnooppqq>>??@@AAxxwwvvuuwwvvuuttUUVVWWXX%%&&''(( - - <<;;::991100//..GGFFEEDDwwvvuuttrrssttuuBBCCDDEEttssrrqqssrrqqppYYZZ[[\\))**++,,88776655--,,++**CCBBAA@@ssrrqqppvvwwxxyyFFGGHHIIppoonnmmoonnmmlk]]^^__``--..//0044332211))((''&&??>>==<>??@@ $$##""!!//..--,,__^^]]\\ZZ[[\\]]\\[[ZZYYrrqqppooYXXWWVVUxxwwvvuuqqrrssttAABBCCDD  ++**))(([[ZZYYXX^^__``aaXXWWVVUUnnmmggffUTTSSRQPttssrrqquuvvwwxxEEFFGGHH - - ''&&%%$$WWVVUUTTbbccddeeTTSSRRQQeeddccbbONMMLLKKppoonnmmyyzz{{||IIJJKKLL##""!! SSRRQQPPffgghhiiPPOONNMMaa``__^^JJIIHHGGllkkjjii}}~~MMNNOOPP OONNMMLL~~}}||jjkkllmmLLKKJJII]]\\[[ZZFFEEDDCChhggffeeQQRRSSTT!!""##$$  - -KKJJIIHH{{zzyyxxnnooppqqHHGGFFEEYYXXWWVVBBAA@@??ddccbbaaUUVVWWXX%%&&''(( - - GGFFEEDDwwvvuuttrrssttuuDDCCBBAAUUTTSSMM>>==<<;;``__^^]]YYZZ[[\\))**++,,CCBBAA@@ssrrqqppvvwwxxyy@@??>>==LLKKJJII::998765\\[[ZZYY]]^^__``--..//00 ??>>==<>==,++**))(PPOONNMM~~}}iijjkkll99::;;<< !""##$$%33221100ccbbaa`` - - 00//..--<<;;::99(''&&%%$LLKKJJII||{{zzyymmnnoopp==>>??@@%&&''(()//..--,,__^^]]\\,,++**))33221100$##""!! HHGGFFEExxwwvvuuqqrrssttAABBCCDD)**++,,- ++**))(([[ZZYYXX((''&&%%//..--,, DDCCBBAAttssrrqquuvvwwxxEEFFGGHH !!-..//001 - - ''&&%%$$WWVVUUTT$$##""!!++**))((@@??>>==ppoonnmmyyzz{{||IIJJKKLL""##$$%%12233456##""!! SSRRQQPP ''&&%%$$<<;;::99llkkjjii}}~~MMNNOOPP&&''(())7899::;;OONNMMLL~~}}|| - - ##""!! 88776655hhggffeeQQRRSSTT**++,,--<<==>>??KKJJIIHH{{zzyyxx - -44332211ddccbbaaUUVVWWXX..//0011@@AABBCCGGFFEEDDwwvvuutt 00//..--``__^^]]YYZZ[[\\223399::DDEEFFGG !!CCBBAA@@ssrrqqpp ,,++**))\\[[ZZYY]]^^__``;;<<==>>HHIIJJKK""##$$%% ??>>==<>==ppoonnmmyyzz{{||\\]]^^__fgghijkl>>??@@AA##""!! SSRRQQPP66778899!!""##$$$$%%&&''%%&&''(( - - <<;;::99llkkjjii}}~~``aabbccmmnnooppBBCCDDEEOONNMMLL~~}}||::;;<<==%%&&''(((())**++))**++,,88776655hhggffeeddeeffggqqrrssttFFGGHHIIKKJJIIHH{{zzyyxx>>??@@AA))**++,,,,--..//--..//0044332211ddccbbaammnnooppuuvvwwxxJJKKLLMMGGFFEEDDwwvvuuttBBCCDDEE--..//00001122331122334400//..--``__^^]]qqrrssttyyzz{{||NNOOPPQQ !!CCBBAA@@ssrrqqppFFGGHHII1122334499::;;<<55667788,,++**))\\[[ZZYYuuvvwwxx}}~~RRSSTTUU""##$$%% ??>>==<>??@@99::;;<< - - ((''&&%%XXWWVVUUyyzz{{||VVWWXXYY&&''(()) - - ;;::9988kkjjiihhNNOOPPQQ99::;;<>??@@ $$##""!!TTSSRRQQ}}~~ZZ[[\\]]**++,,--77665544ggffeeddRRSSTTUU==>>??@@EEFFGGHHAABBCCDD PPOONNMM~~}}^^__``aa..//001133221100ccbbaa``VVWWXXYYAABBCCDDIIJJKKLLEEFFGGHHLLKKJJII||{{zzyybbccddee22334455//..--,,__^^]]\\ZZ[[\\]]EEFFGGHHMMSSTTUUIIJJKKLLHHGGFFEExxwwvvuuffgghhii66778899 ++**))(([[ZZYYXX^^__``aaIIJJKKLLVVWWXXYYMMNNOOPP DDCCBBAAttssrrqqjjkkllmm::;;<<== - - ''&&%%$$WWVVUUTTbbccddeeMMNNOOPPZZ[[\\]]QQRRSSTT!!""##$$ @@??>>==ppoonnmmnnooppqq>>??@@AA##""!! SSRRQQPPffgghhiiQQRRSSTT^^__``aaUUVVWWXX%%&&''(( - - <<;;::99llkkjjiirrssttuuBBCCDDEEOONNMMLLjjkkllmmUUVVWWXXbbccddeeYYZZ[[\\))**++,,88776655hhggffeevvwwxxyyFFGGHHIIKKJJIIHHnnooppqqYYZZ[[\\ffggmmnn]]^^__``--..//0044332211ddccbbaazz{{||}}JJKKLLMMGGFFEEDDrrssttuu]]^^__``ooppqqrraabbccdd1122334400//..--``__^^]]~~NNOOPPQQ !!CCBBAA@@vvwwxxyyaabbccddssttuuvveeffgghh55667788,,++**))\\[[ZZYYRRSSTTUU""##$$%% ??>>==<>??@@ $$##""!!TTSSRRQQZZ[[\\]]**++,,--77665544mmnnooppqqrrssttAABBCCDD PPOONNMM~~}}^^__``aa..//001133221100qqrrssttuuvvwwxxEEFFGGHHLLKKJJII||{{zzyy~~}}bbccddee22334455//..--,,uuvvwwxxyyzz{{||IIJJKKLLHHGGFFEExxwwvvuu||{{zzyyffgghhii66778899 ++**))((yyzz{{||}}~~MMNNOOPP DDCCBBAAttssrrqqxxwwvvuu~~}}||jjkkllmm::;;<<== - - ''&&%%$$}}~~QQRRSSTT!!""##$$ @@??>>==ppoonnmmttssrrqq{{zzyyxxnnooppqq>>??@@AA##""!! UUVVWWXX%%&&''(( - - <<;;::99llkkjjiippoonnmmwwvvuuttrrssttuuBBCCDDEEccddeeff33445566..--,,++^^]]\\[[]]\\[[ZZiihhggffPPQQRRSS !!""##((''&&%%! LLKKJJII||{{zzyymmnnoopp==>>??@@%&&''(()//..--,,__^^]]\\gghhiijj778899:: - -**))((''ZZYYXXWWYYXXWWVVeeddccbbTTUUVVWW$$%%&&'' - -$$##""!!HHGGFFEExxwwvvuuqqrrssttAABBCCDD)**++,,- ++**))(([[ZZYYXXkkllmmnn;;<<==>> &&%%$$##VVUUTTSSUUTTSSMMaa``__^^XXYYZZ[[(())**++  DDCCBBAAttssrrqquuvvwwxxEEFFGGHH !!-..//001 - - ''&&%%$$WWVVUUTTooppqqrr??@@AABB""!! RRQQPPOOLLKKJJII]]\\[[ZZ\\]]^^__,,--..//@@??>>==ppoonnmmyyzz{{||IIJJKKLL""##$$%%12233456##""!! SSRRQQPPssttuuvvCCDDEEFFNNMMLLKKHHGGFFEEYYXXWWVV``aabbcc00112233 <<;;::99llkkjjii}}~~MMNNOOPP&&''(())7899::;;OONNMMLL~~}}||~~}}||~~}}||{{wwxxyyzzGGHHIIJJJJIIHHGGDDCCBBAAUUTTSSRRddeeffgg44556677 - - 88776655hhggffeeQQRRSSTT**++,,--<<==>>??KKJJIIHH{{zzyyxx{{zzyyxxzzyyxxww{{||}}~~KKLLMMNNFFEEDDCC@@??>>==QQPPOONN~~hhiijjkk8899::;; - - - - 44332211ddccbbaaUUVVWWXX..//0011@@AABBCCGGFFEEDDwwvvuuttwwvvuuttvvuuttssOOPPQQRR !!""BBAA@@??<<;;::99MMLLKKJJ}}||{{zzllmmnnoo<<==>>?? 00//..--``__^^]]YYZZ[[\\223399::DDEEFFGG !!CCBBAA@@ssrrqqppssrrqqpp~~rrqqppooSSTTUUVV##$$%%&& >>==<<;;33221100IIHHGGFFyyxxwwvvppqqrrss@@AABBCC ,,++**))\\[[ZZYY]]^^__``;;<<==>>HHIIJJKK""##$$%% ??>>==<>qqppoonnxxyyzz{{HHIIJJKK $$##""!!TTSSRRQQeeffgghhCCDDEEFFRSSTTUUV**++,,--77665544ggffeeddggffeedduuttssrrdccbbaa`__``aabb//001122221100//''&&%%$$==<<;;::mmllkkjj||}}~~LLMMNNOO PPOONNMM~~}}iijjkkllGGHHIIJJVWWXXYYZ..//001133221100ccbbaa``ccbbaa``qqppoonn`__^^]]\ccddeeff33445566..--,,++##""!! 99887766iihhggffPPQQRRSS !!""##LLKKJJII||{{zzyymmnnooppKKLLMMSSZ[[\\]]^22334455//..--,,__^^]]\\__^^]]\\mmggffee\[[ZZYYXgghhiijj778899:: - -**))((''55443322eeddccbbTTUUVVWW$$%%&&'' !!""HHGGFFEExxwwvvuuqqrrssttTTUUVVWW^__``aab66778899 ++**))(([[ZZYYXX~~}}||{{[[ZZYYXXddccbbaaXWWVVUUT~~}}||{{kkllmmnn;;<<==>> &&%%$$##1100//..aa``__^^XXYYZZ[[(())**++##$$%%&& DDCCBBAAttssrrqquuvvwwxxXXYYZZ[[bccddeef::;;<<== - - ''&&%%$$WWVVUUTTzzyyxxwwWWVVUUTT``__^^]]TSSRQPONzzyyxxwwooppqqrr??@@AABB""!! --,,++**]]\\[[ZZ\\]]^^__,,--..//''(())**!!""##$$ @@??>>==ppoonnmmyyzz{{||\\]]^^__fgghijkl>>??@@AA##""!! SSRRQQPPvvuuttssSSRRQQPP\\[[ZZYYMMLLKKJJvvuuttssssttuuvvCCDDEEFF ))((''&&YYXXWWVV``aabbcc00112233++,,--..%%&&''(( - - <<;;::99llkkjjii}}~~``aabbccmmnnooppBBCCDDEEOONNMMLLrrqqppooOONNMMLLXXWWVVUUIIHHGGFFrrqqppoowwxxyyzzGGHHIIJJ - - %%$$##""UUTTSSRRddeeffgg44556677//001122))**++,,88776655hhggffeeddeeffggqqrrssttFFGGHHIIKKJJIIHHnnmmggffKKJJIIHHTTSSMMLLEEDDCCBBnnmmllkk{{||}}~~KKLLMMNN!! QQPPOONN~~hhiijjkk8899::;;3399::;;--..//0044332211ddccbbaammnnooppuuvvwwxxJJKKLLMMGGFFEEDDeeddccbbGGFFEEDDKKJJIIHHAA@@??>>jjiihhggOOPPQQRR !!""MMLLKKJJ}}||{{zzllmmnnoo<<==>>??<<==>>??1122334400//..--``__^^]]qqrrssttyyzz{{||NNOOPPQQ !!CCBBAA@@aa``__^^CCBBAA@@GGFFEEDD==<<;;::ffeeddccSSTTUUVV##$$%%&& - - IIHHGGFFyyxxwwvvppqqrrss@@AABBCC@@AABBCC55667788,,++**))\\[[ZZYYuuvvwwxx}}~~RRSSTTUU""##$$%% ??>>==<<]]\\[[ZZ??>>==<>==<<3221100/^^]]\\[[[[\\]]^^++,,--..AA@@??>>qqppoonnxxyyzz{{HHIIJJKKHHIIJJKK==>>??@@ $$##""!!TTSSRRQQ}}~~ZZ[[\\]]**++,,--77665544UUTTSSMM77665544;;::9933/..--,,+ZZYYXXWW__``aabb//001122 - -==<<;;::mmllkkjj||}}~~LLMMNNOOLLMMSSTTAABBCCDD PPOONNMM~~}}^^__``aa..//001133221100LLKKJJII33221100221100//+**))(('VVUUTTSSccddeeff33445566 - - 99887766iihhggffPPQQRRSSUUVVWWXXEEFFGGHHLLKKJJII||{{zzyybbccddee22334455//..--,,HHGGFFEE//..--,,..--,,++'&&%%$$#RRQQPPOOgghhiijj778899::  !!""#55443322eeddccbbTTUUVVWWYYZZ[[\\IIJJKKLLHHGGFFEExxwwvvuuffgghhii66778899 ++**))((DDCCBBAA++**))((**))((''#""!! NNMMLLKK~~}}||{{kkllmmnn;;<<==>>#$$%%&&'1100//..aa``__^^XXYYZZ[[]]^^__``MMNNOOPP DDCCBBAAttssrrqqjjkkllmm::;;<<== - - ''&&%%$$@@??>>==''&&%%$$&&%%$$##JJIIHHGGzzyyxxwwooppqqrr??@@AABB'(())**+--,,++**]]\\[[ZZ\\]]^^__aabbccddQQRRSSTT!!""##$$ @@??>>==ppoonnmmnnooppqq>>??@@AA##""!! <<;;::99##""!! ""!! FFEEDDCCvvuuttssssttuuvvCCDDEEFF+,,--../ - - ))((''&&YYXXWWVV``aabbcceeffggmmUUVVWWXX%%&&''(( - - <<;;::99llkkjjiirrssttuuBBCCDDEE33221100BBAA@@??rrqqppoowwxxyyzzGGHHIIJJ !!""##/0011223 %%$$##""UUTTSSRRddeeffggnnooppqqYYZZ[[\\))**++,,88776655hhggffeevvwwxxyyFFGGHHII//..--,, >>==<<;;nnmmllkk{{||}}~~KKLLMMNN$$%%&&''34567899!! QQPPOONN~~hhiijjkkrrssttuu]]^^__``--..//0044332211ddccbbaazz{{||}}JJKKLLMM++**))(( - - ::998877jjiihhggOOPPQQRR(())**++::;;<<==MMLLKKJJ}}||{{zzllmmnnoovvwwxxyyaabbccdd1122334400//..--``__^^]]~~NNOOPPQQ !!''&&%%$$ - -66554433ffeeddccSSTTUUVV,,--..//>>??@@AAIIHHGGFFyyxxwwvvppqqrrsszz{{||}}eeffgghh55667788,,++**))\\[[ZZYYRRSSTTUU""##$$%% ##""!!  221100//bbaa``__WWXXYYZZ00112233BBCCDDEEEEDDCCBBuuttssrrttuuvvww~~iijjkkll99::;;<< - - ((''&&%%XXWWVVUUVVWWXXYY&&''(()) - -  - - ..--,,++^^]]\\[[[[\\]]^^99::;;<>qqppoonnxxyyzz{{mmnnoopp==>>??@@ $$##""!!TTSSRRQQZZ[[\\]]**++,,-- - -  - -  - -**))((''ZZYYXXWW__``aabb==>>??@@JJKKLLMM$$%%&&'' - -==<<;;::mmllkkjj||}}~~qqrrssttAABBCCDD PPOONNMM~~}}^^__``aa..//0011  &&%%$$##VVUUTTSSccddeeffAABBCCDDNOPQRSST(())**++ 99887766iihhggffuuvvwwxxEEFFGGHHLLKKJJII||{{zzyy~~}}bbccddee22334455 ""!! RRQQPPOOgghhiijjEEFFGGHHTUUVVWWX,,--..//55443322eeddccbbyyzz{{||IIJJKKLLHHGGFFEExxwwvvuu||{{zzyyffgghhii66778899 - - - -NNMMLLKK~~}}||{{kkllmmnnIIJJKKLLXYYZZ[[\001122331100//..aa``__^^}}~~MMNNOOPP DDCCBBAAttssrrqqxxwwvvuu~~}}||jjkkllmm::;;<<== - -  JJIIHHGGzzyyxxwwooppqqrrMMSSTTUU\]]^^__`44556677--,,++**]]\\[[ZZQQRRSSTT!!""##$$ @@??>>==ppoonnmmttssrrqq{{zzyyxxnnooppqq>>??@@AA !!!!""##$$FFEEDDCCvvuuttssssttuuvvVVWWXXYY`aabbccd8899::;; - - ))((''&&YYXXWWVVUUVVWWXX%%&&''(( - - <<;;::99llkkjjiippoonnmmwwvvuuttrrssttuuBBCCDDEE""##$$%%%%&&''(( !!""BBAA@@??rrqqppoowwxxyyzzZZ[[\\]]deeffggh<<==>>?? %%$$##""UUTTSSRRYYZZ[[\\))**++,,88776655hhggffeeggffeeddssrrqqppvvwwxxyyFFGGHHII&&''(())))**++,,##$$%%&& >>==<<;;nnmmllkk{{||}}~~^^__``aaijklmmnn@@AABBCC!! QQPPOONN~~]]^^__``--..//0044332211ddccbbaaccbbaa``oonnmmllzz{{||}}JJKKLLMM !!""##**++,,----..//00''(())** - - ::998877jjiihhggbbccddeeooppqqrrDDEEFFGGMMLLKKJJ}}||{{zzaabbccdd1122334400//..--``__^^]]__^^]]\\kkjjiihh~~NNOOPPQQ !!$$%%&&''..//001111223399++,,--..66554433ffeeddccffggmmnnssttuuvvHHIIJJKKIIHHGGFFyyxxwwvveeffgghh55667788,,++**))\\[[ZZYY[[ZZYYXXggffeeddRRSSTTUU""##$$%%(())**++22334455::;;<<==//001122221100//bbaa``__ooppqqrrwwxxyyzzLLMMNNOOEEDDCCBBuuttssrriijjkkll99::;;<< - - ((''&&%%XXWWVVUUWWVVUUTTccbbaa``VVWWXXYY&&''(()),,--..//66778899>>??@@AA33445566..--,,++^^]]\\[[ssttuuvv{{||}}~~PPQQRRSS !!""##AA@@??>>qqppoonnmmnnoopp==>>??@@ $$##""!!TTSSRRQQSSMMLLKK__^^]]\\ZZ[[\\]]**++,,--00112233::;;<<==BBCCDDEE778899:: - -**))((''ZZYYXXWWwwxxyyzzTTUUVVWW$$%%&&'' - -==<<;;::mmllkkjjqqrrssttAABBCCDD PPOONNMMJJIIHHGG[[ZZYYXX^^__``aa..//001199::;;<<>>??@@AAFFGGHHII;;<<==>> &&%%$$##VVUUTTSS{{||}}~~XXYYZZ[[(())**++ 99887766iihhggff~~}}uuvvwwxxEEFFGGHHLLKKJJIIFFEEDDCCWWVVUUTTbbccddee22334455==>>??@@BBCCDDEEJJKKLLMM??@@AABB""!! RRQQPPOO\\]]^^__,,--..//55443322eeddccbb||{{zzyyyyzz{{||IIJJKKLLHHGGFFEEBBAA@@??SSRRQQPPffgghhii66778899AABBCCDDFFGGHHIISSTTUUVVCCDDEEFFNNMMLLKK~~}}||{{``aabbcc001122331100//..aa``__^^xxwwvvuu}}~~MMNNOOPP DDCCBBAA>>==<<;;OONNMMLL~~}}||jjkkllmm::;;<<==EEFFGGHHJJKKLLMMWWXXYYZZGGHHIIJJJJIIHHGGzzyyxxwwddeeffgg44556677--,,++**]]\\[[ZZttssrrqqQQRRSSTT!!""##$$ @@??>>==::993322KKJJIIHH{{zzyyxxnnooppqq>>??@@AAIIJJKKLLNNOOPPQQ[[\\]]^^KKLLMMNNFFEEDDCCvvuuttsshhiijjkk8899::;; - - ))((''&&YYXXWWVV~~}}||ppoonnmmUUVVWWXX%%&&''(( - - <<;;::991100//..GGFFEEDDwwvvuuttrrssttuuBBCCDDEEMMSSTTUURRSSTTUU__``aabbOOPPQQRR !!""BBAA@@??rrqqppoollmmnnoo<<==>>?? %%$$##""UUTTSSRR{{zzyyxxlkjihggfYYZZ[[\\))**++,,88776655--,,++**CCBBAA@@ssrrqqppvvwwxxyyFFGGHHIIVVWWXXYYVVWWXXYYccddeeffSSTTUUVV##$$%%&& >>==<<;;nnmmllkkppqqrrss@@AABBCC!! QQPPOONNwwvvuuttfeeddccb]]^^__``--..//0044332211))((''&&??>>==<>bbaa``__VUUTTSSR||{{zzyymmnnoopp==>>??@@ $$##""!!//..--,,__^^]]\\ZZ[[\\]]ooppqqrrjjkkllmm||}}~~gghhiijj778899:: - -**))((''ZZYYXXWWTTUUVVWW$$%%&&'' - -==<<;;::^^]]\\[[QPONMMLLxxwwvvuuqqrrssttAABBCCDD  ++**))(([[ZZYYXX^^__``aassttuuvvnnooppqqkkllmmnn;;<<==>> &&%%$$##VVUUTTSSXXYYZZ[[(())**++ 99887766ZZYYXXWWKKJJIIHHttssrrqquuvvwwxxEEFFGGHH - - ''&&%%$$WWVVUUTTbbccddeewwxxyyzzrrssttuuooppqqrr??@@AABB""!! RRQQPPOO\\]]^^__,,--..//55443322VVUUTTSSGGFFEEDDppoonnmmyyzz{{||IIJJKKLL##""!! SSRRQQPPffgghhii{{||}}~~vvwwxxyyssttuuvvCCDDEEFFNNMMLLKK~~}}||{{``aabbcc001122331100//..MMLLKKJJCCBBAA@@llkkjjii}}~~MMNNOOPP OONNMMLL~~}}||jjkkllmmzz{{||}}wwxxyyzzGGHHIIJJJJIIHHGGzzyyxxww~~}}||{{ddeeffgg44556677--,,++**IIHHGGFF??>>==<>?? %%$$##""AA@@??>>65433221``__^^]]YYZZ[[\\))**++,,CCBBAA@@ssrrqqppvvwwxxyySSTTUUVV##$$%%&& >>==<<;;nnmmllkkrrqqppooyyxxwwvvppqqrrss@@AABBCC!! ==<<;;::100//..-\\[[ZZYY]]^^__``--..//00 ??>>==<=>=>=>=<;<;<;<;878787873333334321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#        \[\[\[\[ZYZYXWXWVUVUVUVUTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=<;<;<;<;878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#        \[\[\[\[XWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=<;<;<;<;878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#        - \[\[\[\[XWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=<;<;<;<;878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#        - - - - \[\[\[\[XWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=<;<;<;<;878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!        - - - - \[\[\[\[XWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=<;:9:9:9878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!        - - - - \[\[\[\[XWXWXWXWVUVUVUVUTSTSRQRQPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:9878787873333343421212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!        - - - - \[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:9878787873434343421212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!        - - - - \[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:9878787873434343421212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!        - - - - \[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:9878787873434343421212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!        - - - - \[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:9878787873434343421212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!        - - - - \[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:9878787873434343321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!        - - - - \[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQPOPONMNMLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:987878787333343430/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!        - - - - \[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMMMMMLKLKLKLKJIHGHGHGFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:987878787434343430/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!        - - - - \[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:987878787434343430/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!        - - - - \[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:987878787434343430/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!        - - - - \[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:987878787434343430/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!        - - - - \[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:987878787434343330/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!        - - - - \[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMMMMMMNLKLKLKLKHGHGHGHGFEFEFEFEDCBABABA@?@?@?@?>=>=>=>=:9:9:9:987878787333434340/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!        - - - - \[\[ZYZYXWXWXWXWVUVUVUVURQRQRQRQMNMNMNMNLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?>=>=>=>=:9:9:9:987878765343434340/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!        - - - - ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQMNMNMNMNLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?>=>=>=>=:9:9:9:965656565343434340/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!       - - - - ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQMNMNMNMNLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?>=>=>=>=:9:9:9:965656565343434340/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"!     - - - - ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQMNMNMNMNLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?>=>=>=>=:9:9:9:965656565343434340/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!     - - - - ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQMNMNMNMNLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?>=<;<;<;:9:9:9:965656565343433330/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!     - - - - ZYZYZYZYXWXWXWXWVUVUTSTSRQRQRQRQMMMMMMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565334343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!     - - - - ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!     - - - - ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!     - - - - ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - - ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565434333330/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - - ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - - ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQMMMMMNMNLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - - ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQMNMNMNMNLKJIJIJIHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - - ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQMNMNMNMNJIJIJIJIHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - - ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQMNMNMNMNJIJIJIJIHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - - ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQMNMNMNMNJIJIJIJIHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - - ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQMNMNMNMMJIJIJIJIHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - - ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQMMMMNMNMJIJIJIJIHGHGHGHGFEDCDCDCBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - - ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - - ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - - ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!    - - - - ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!    - - - - ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPONMNMNMMMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA@?>=>=>=<;<;<;<;:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!    - - - - ZYZYZYZYXWXWVUVUTSTSTSTSPOPOPOPOMMMNMNMNJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!    - - - - ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOMNMNMNMNJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!    - - - ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOMNMNMNMNJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!    ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOMNMNMNMNJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOMNMNMNMNJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;:987878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOMNMNMMMMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;8787878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOMMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;8787878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPONMLKLKLKJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;8787878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;8787878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;8787878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;8787878765434343212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;878787874333333421212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIHGFEFEFEDCDCDCDCBABABABA>=>=>=>=<;<;<;<;878787873434343421212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDCBABABABA>=>=>=>=<;<;<;<;878787873434343421212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDCBABABABA>=>=>=>=<;<;<;<;878787873434343421212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDCBABABABA>=>=>=>=<;<;<;<;878787873434343421212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDCBABABABA>=>=>=>=<;<;<;<;878787873434343421212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#        YYZZ[[\\00112233XXWWVVUU99::;;<<$$##""!!~~}}mmnnoopp - - SSRRQQPP>>??@@AA{{zzyyxxrrssttuu..--,,++XWWVVUUTCCDDEEFF]]^^__``99::;;<< - - TTSSRRQQ==>>??@@ ||{{zzyyqqrrsstt !!OONNMMLLBBCCDDEEwwvvuuttvvwwxxyy**))((''TSSRQPONGGHHIIJJaabbccdd==>>??@@ PPOONNMMAABBCCDDxxwwvvuuuuvvwwxx""##$$%%KKJJIIHHFFGGHHIIssrrqqppzz{{||}} !!&&%%$$##MMLLKKJJKKLLMMNNeeffgghhAABBCCDDLLKKJJIIEEFFGGHHttssrrqqyyzz{{||&&''(()) - -GGFFEEDDJJKKLLMMoonnmmll~~""##$$%%""!! IIHHGGFFOOPPQQRR iijjkkllEEFFGGHHHHGGFFEEIIJJKKLLppoonnmm}}~~**++,,-- CCBBAA@@NNOOPPQQ kkjjiihh&&''(())EEDDCCBBSSTTUUVV - - mmnnooppIIJJKKLLDDCCBBAAMMNNOOPP llkkjjii..//0011??>>==<>WWXXYYZZqqrrssttMMSSTTUU @@??>>==QQRRSSTT - - hhggffee223399::;;::9988VVWWXXYYccbbaa``..//0011==<<;;::[[\\]]^^uuvvwwxxVVWWXXYY!!""##$$<<;;::99UUVVWWXXddccbbaa;;<<==>>77665544ZZ[[\\]]__^^]]\\22334455 - -99876543__``aabbyyzz{{||ZZ[[\\]]%%&&''((88776655YYZZ[[\\``__^^]]??@@AABB !33221100^^__``aa[[ZZYYXX66778899 3221100/ccddeeff - -~~}}}}~~^^__``aa))**++,,44332211]]^^__``\\[[ZZYYCCDDEEFF!""##$$%//..--,,bbccddee WWVVUUTT::;;<<==/..--,,+gghhiijj ||{{zzyybbccddee--..//0000//..--aabbccddXXWWVVUUGGHHIIJJ%&&''(()++**))((ffgghhii - - SSRRQQPP>>??@@AA - - +**))(('kkllmmnnxxwwvvuuffggmmnn11223344,,++**))eeffgghh - - TTSSRRQQKKLLMMSS)**++,,-''&&%%$$jjkkllmmOONNMMLLBBCCDDEE '&&%%$$#~~}}||{{ooppqqrrttssrrqqooppqqrr55667788((''&&%%iijjkkll PPOONNMMTTUUVVWW-..//001##""!! ~~}}||nnooppqqKKJJIIHHFFGGHHII#""!! zzyyxxwwssttuuvvppoonnmmssttuuvv99::;;<<$$##""!!~~}}mmnnooppLLKKJJIIXXYYZZ[[12233456{{zzyyxxrrssttuuGGFFEEDDJJKKLLMMvvuuttsswwxxyyzzllkkjjiiwwxxyyzz==>>??@@ ||{{zzyyqqrrssttHHGGFFEE\\]]^^__7899::;;wwvvuuttvvwwxxyyCCBBAA@@NNOOPPQQ rrqqppoo{{||}}~~ !!""hhggffee{{||}}~~AABBCCDDxxwwvvuuuuvvwwxxDDCCBBAA``aabbcc<<==>>??ssrrqqppzz{{||}} !!??>>==<>==ddeeffgg@@AABBCCoonnmmll~~""##$$%%;;::9988VVWWXXYY%%&&''(( jjiihhgg''(())**``__^^]]IIJJKKLLppoonnmm}}~~!!""##$$<<;;::99mmnnooppDDEEFFGG kkjjiihh&&''(())77665544ZZ[[\\]]))**++,, - - ffeeddcc++,,--..\\[[ZZYYMMNNOOPP llkkjjii%%&&''((88776655qqrrssttHHIIJJKK - - ggffeedd**++,,--33221100^^__``aa--..//00bbaa``__//001122XXWWVVUUQQRRSSTT - - hhggffee))**++,,44332211uuvvwwxxLLMMNOPQccbbaa``..//0011//..--,,bbccddee11223399^^]]\\[[33445566TTSSRRQQUUVVWWXXddccbbaa--..//0000//..--yyzz{{||RSSTTUUV__^^]]\\22334455++**))((ffgghhii::;;<<==ZZYYXXWW778899::PPOONNMMYYZZ[[\\``__^^]]11223344,,++**))}}~~VWWXXYYZ[[ZZYYXX66778899''&&%%$$jjkkllmm>>??@@AA - -VVUUTTSS;;<<==>>LLKKJJII]]^^__``\\[[ZZYY55667788((''&&%%Z[[\\]]^ WWVVUUTT::;;<<==##""!! ~~}}||nnooppqqBBCCDDEE RRQQPPOO??@@AABBHHGGFFEEaabbccddXXWWVVUU99::;;<<$$##""!!~~}}^__``aab - - SSRRQQPP>>??@@AA{{zzyyxxrrssttuuFFGGHHIINNMMLLKKCCDDEEFFDDCCBBAAeeffgghh - - TTSSRRQQ==>>??@@ ||{{zzyybccddeefOONNMMLLBBCCDDEEwwvvuuttvvwwxxyyJJKKLLMMJJIIHHGGGGHHIIJJ@@??>>==iijjkkll PPOONNMMAABBCCDDxxwwvvuufgghijklKKJJIIHHFFGGHHIIssrrqqppzz{{||}}SSTTUUVVFFEEDDCCKKLLMMNN<<;;::99~~}}||{{mmnnooppLLKKJJIIEEFFGGHHttssrrqqmmnnooppGGFFEEDDJJKKLLMMoonnmmll~~WWXXYYZZBBAA@@??OOPPQQRR88776655zzyyxxwwqqrrssttHHGGFFEEIIJJKKLLppoonnmmqqrrssttCCBBAA@@NNOOPPQQ kkjjiihh[[\\]]^^ !!"">>==<<;;SSTTUUVV44332211vvuuttssuuvvwwxxDDCCBBAAMMNNOOPP llkkjjiiuuvvwwxx !!??>>==<>==QQRRSSTT - - hhggffeeyyzz{{||""##$$%%;;::9988VVWWXXYYccbbaa``ccddeeff''(())**66554433[[\\]]^^,,++**))nnmmggff}}~~!!""##$$<<;;::99UUVVWWXXddccbbaa}}~~&&''(())77665544ZZ[[\\]]__^^]]\\ggmmnnoo++,,--..221100//__``aabb((''&&%%eeddccbb~~}}||%%&&''((88776655YYZZ[[\\``__^^]]**++,,--33221100^^__``aa[[ZZYYXXppqqrrss//001122..--,,++ccddeeff$$##""!!aa``__^^{{zzyyxx))**++,,44332211]]^^__``\\[[ZZYY..//0011//..--,,bbccddee WWVVUUTTttuuvvww33445566**))((''gghhiijj ]]\\[[ZZwwvvuutt--..//0000//..--aabbccddXXWWVVUU22334455++**))((ffgghhii - - SSRRQQPPxxyyzz{{778899::&&%%$$##kkllmmnnYYXXWWVVssrrqqpp11223344,,++**))eeffgghh - - TTSSRRQQ66778899''&&%%$$jjkkllmmOONNMMLL||}}~~;;<<==>>""!! ~~}}||{{ooppqqrrUUTTSSMMoonnmmlk55667788((''&&%%iijjkkll PPOONNMM~~}}::;;<<==##""!! ~~}}||nnooppqqKKJJIIHH??@@AABBzzyyxxwwssttuuvvLLKKJJIIjihggffe99::;;<<$$##""!!~~}}mmnnooppLLKKJJII||{{zzyy>>??@@AA{{zzyyxxrrssttuuGGFFEEDDCCDDEEFFvvuuttsswwxxyyzz HHGGFFEEeddccbba==>>??@@ ||{{zzyyqqrrssttHHGGFFEExxwwvvuuBBCCDDEEwwvvuuttvvwwxxyyCCBBAA@@GGHHIIJJrrqqppoo{{||}}~~ - - DDCCBBAAa``__^^]AABBCCDDxxwwvvuuuuvvwwxxDDCCBBAAttssrrqqFFGGHHIIssrrqqppzz{{||}} !!??>>==<>==]\\[[ZZYEEFFGGHHttssrrqqyyzz{{|| @@??>>==ppoonnmmJJKKLLMMoonnmmll~~""##$$%%;;::9988OOPPQQRR jjiihhgg <<;;::99YXXWWVVUIIJJKKLLppoonnmm}}~~!!""##$$<<;;::99ggffeeddNNOOPPQQ kkjjiihh&&''(())77665544SSTTUUVV - - ffeeddcc33221100UTTSSRQPMMNNOOPP llkkjjii%%&&''((88776655ccbbaa``RRSSTTUU - - ggffeedd**++,,--33221100WWXXYYZZbbaa``__//..--,,ONMMLLKKQQRRSSTT - - hhggffee))**++,,44332211__^^]]\\VVWWXXYYccbbaa``..//0011//..--,,~~[[\\]]^^^^]]\\[[++**))((JJIIHHGGUUVVWWXXddccbbaa--..//0000//..--[[ZZYYXXZZ[[\\]]__^^]]\\22334455++**))((}}||{{zz__``aabbZZYYXXWW ''&&%%$$FFEEDDCCYYZZ[[\\``__^^]]11223344,,++**))WWVVUUTT^^__``aa[[ZZYYXX66778899''&&%%$$yyxxwwvvccddeeff - -VVUUTTSS!!""##$$##""!! BBAA@@??]]^^__``\\[[ZZYY55667788((''&&%%SSMMLLKKbbccddee WWVVUUTT::;;<<==##""!! uuttssrrgghhiijj RRQQPPOO%%&&''((>>==<<;;aabbccddXXWWVVUU99::;;<<$$##""!!JJIIHHGGffgghhii - - SSRRQQPP>>??@@AAqqppoonnkkllmmnnNNMMLLKK))**++,,::998765eeffgghh - - TTSSRRQQ==>>??@@ FFEEDDCCjjkkllmmOONNMMLLBBCCDDEEmmggffeeooppqqrrJJIIHHGG--..//0043322110iijjkkll PPOONNMMAABBCCDDBBAA@@??~~}}||nnooppqqKKJJIIHHFFGGHHIIddccbbaassttuuvvFFEEDDCC11223344 0//..--,~~}}mmnnooppLLKKJJIIEEFFGGHH>>==<<;;{{zzyyxxrrssttuuGGFFEEDDJJKKLLMM``__^^]]wwxxyyzzBBAA@@??vvuuttss55667788 - - - -,++**))(||{{zzyyqqrrssttHHGGFFEEIIJJKKLL::993322wwvvuuttvvwwxxyyCCBBAA@@NNOOPPQQ \\[[ZZYY~~}}||{{{{||}}~~ !!"">>==<<;;rrqqppoo99::;;<< (''&&%%$xxwwvvuuuuvvwwxxDDCCBBAAMMNNOOPP 1100//..ssrrqqppzz{{||}} !!??>>==<>??@@$##""!! ttssrrqqyyzz{{|| @@??>>==QQRRSSTT - - --,,++**oonnmmll~~""##$$%%;;::9988VVWWXXYYTTSSMMLLvvuuttss''(())**66554433jjiihhggAABBCCDD ppoonnmm}}~~!!""##$$<<;;::99UUVVWWXX))((''&&kkjjiihh&&''(())77665544ZZ[[\\]]KKJJIIHHrrqqppoo++,,--..221100//ffeeddccEEFFGGHHllkkjjii%%&&''((88776655YYZZ[[\\%%$$##""ggffeedd**++,,--33221100^^__``aaGGFFEEDDnnmmlkji//001122..--,,++bbaa``__IIJJKKLL !!""##hhggffee))**++,,44332211]]^^__``!! ccbbaa``..//0011//..--,,bbccddee CCBBAA@@hggffeed33445566**))((''^^]]\\[[MMNNOOPP$$%%&&''ddccbbaa--..//0000//..--aabbccdd - - __^^]]\\22334455++**))((ffgghhii - - ??>>==<>""!! ~~}}||{{VVUUTTSSUUVVWWXX,,--..// \\[[ZZYY55667788((''&&%%iijjkkll WWVVUUTT::;;<<==##""!! ~~}}||nnooppqq221100//\[[ZZYYX??@@AABBzzyyxxwwRRQQPPOONNMMLLKKCCDDEEFF@@??>>==}}||{{zzppqqrrssIIHHGGFFHHIIJJKKbbaa``__uuvvwwxxDDCCBBAAMMNNOOPP llkkjjiiuuvvwwxx !!??>>==<>==QQRRSSTT - - hhggffeeyyzz{{||""##$$%%;;::9988VVWWXXYYLLKKJJII__^^]]\\FFEEDDCCKKLLMMNN33221100uuttssrrxxyyzz{{AA@@??>>PPQQRRSS - -ZZYYXXWW||{{zzyy}}~~!!""##$$<<;;::99UUVVWWXXddccbbaa}}~~&&''(())77665544ZZ[[\\]]HHGGFFEE[[ZZYYXXBBAA@@??OOPPQQRR //..--,,qqppoonn||}}~~ !!""##==<<;;::TTUUVVWW VVUUTTSSxxwwvvuu%%&&''((88776655YYZZ[[\\``__^^]]**++,,--33221100^^__``aaDDCCBBAAWWVVUUTT>>==<<;;SSTTUUVV - - ++**))((mmllkkjj$$%%&&''99887766XXYYZZ[[MMLLKKJJttssrrqq))**++,,44332211]]^^__``\\[[ZZYY..//0011//..--,,bbccddee @@??>>==SSRRQQPP::998877WWXXYYZZ''&&%%$$iihhggff(())**++55443322\\]]^^__IIHHGGFFppoonnmm--..//0000//..--aabbccddXXWWVVUU22334455++**))((ffgghhii - - <<;;::99OONNMMLL66554433[[\\]]^^##""!! eeddccbb,,--..//1100//..``aabbccEEDDCCBBlkjihggf11223344,,++**))eeffgghh - - TTSSRRQQ66778899''&&%%$$jjkkllmm33221100KKJJIIHH221100//__``aabb - -aa``__^^00112233--,,++**ddeeffgg - - AA@@??>>feeddccb55667788((''&&%%iijjkkll PPOONNMM~~}}::;;<<==##""!! ~~}}||nnooppqq//..--,,GGFFEEDD..--,,++ccddeeff ]]\\[[ZZ44556677))((''&&hhiijjkk ==<<;;::baa``__^99::;;<<$$##""!!~~}}mmnnooppLLKKJJII||{{zzyy>>??@@AA{{zzyyxxrrssttuu++**))((CCBBAA@@**))((''gghhiijjYYXXWWVV8899::;;%%$$##""~~llmmnnoo99332211^]]\\[[Z==>>??@@ ||{{zzyyqqrrssttHHGGFFEExxwwvvuuBBCCDDEEwwvvuuttvvwwxxyy''&&%%$$??>>==<<&&%%$$##kkllmmnn UUTTSSRR<<==>>??!! }}||{{zzppqqrrss00//..--ZYYXXWWVAABBCCDDxxwwvvuuuuvvwwxxDDCCBBAAttssrrqqFFGGHHIIssrrqqppzz{{||}} !!##""!! ;;::9988""!! ~~}}||{{ooppqqrr - - QQPPOONN@@AABBCCyyxxwwvvttuuvvww,,++**))VUUTTSSREEFFGGHHttssrrqqyyzz{{|| @@??>>==ppoonnmmJJKKLLMMoonnmmll~~""##$$%%77665544zzyyxxwwssttuuvv !!""##MMLLKKJJDDEEFFGGuuttssrrxxyyzz{{((''&&%%QPONMMLLIIJJKKLLppoonnmm}}~~!!""##$$<<;;::99ggffeeddNNOOPPQQ kkjjiihh&&''(())33221100vvuuttsswwxxyyzz$$%%&&''IIHHGGFFHHIIJJKKqqppoonn||}}~~ !!""##$$##""!!KKJJIIHHMMNNOOPP llkkjjii%%&&''((88776655ccbbaa``RRSSTTUU - - ggffeedd**++,,--//..--,,rrqqppoo{{||}}~~(())**++ - - EEDDCCBBLLMMNNOOmmllkkjj$$%%&&'' GGFFEEDDQQRRSSTT - - hhggffee))**++,,44332211__^^]]\\VVWWXXYYccbbaa``..//0011 ++**))((nnmmllkk,,--..// AA@@??>>PPQQRRSS - -iihhggff(())**++CCBBAA@@UUVVWWXXddccbbaa--..//0000//..--[[ZZYYXXZZ[[\\]]__^^]]\\22334455 - - - -''&&%%$$ jjiihhgg00112233==<<;;::TTUUVVWW eeddccbb,,--..//??>>==<>??@@55443322\\]]^^__]]\\[[ZZ44556677 - - 65433221aabbccddXXWWVVUU99::;;<<$$##""!!JJIIHHGGffgghhii - - SSRRQQPP>>??@@AA^^]]\\[[AABBCCDD !!""#1100//..``aabbccYYXXWWVV8899::;;100//..-eeffgghh - - TTSSRRQQ==>>??@@ FFEEDDCCjjkkllmmOONNMMLLBBCCDDEEZZYYXXWWEEFFGGHH#$$%%&&'--,,++**ddeeffgg - - UUTTSSRR<<==>>?? -,,++**)iijjkkll PPOONNMMAABBCCDDBBAA@@??~~}}||nnooppqqKKJJIIHHFFGGHHII !!""## - -VVUUTTSSIIJJKKLL'(())**+))((''&&hhiijjkk QQPPOONN@@AABBCC - - )((''&&%~~}}mmnnooppLLKKJJIIEEFFGGHH>>==<<;;{{zzyyxxrrssttuuGGFFEEDDJJKKLLMM$$%%&&'' RRQQPPOOMMSSTTUU+,,--../%%$$##""~~llmmnnooMMLLKKJJDDEEFFGG%$$##""!||{{zzyyqqrrssttHHGGFFEEIIJJKKLL::993322wwvvuuttvvwwxxyyCCBBAA@@NNOOPPQQ(())**++ - - NNMMLLKKVVWWXXYY/0011223!! }}||{{zzppqqrrssIIHHGGFFHHIIJJKK! xxwwvvuuuuvvwwxxDDCCBBAAMMNNOOPP 1100//..ssrrqqppzz{{||}} !!??>>==<>==QQRRSSTT - - --,,++**oonnmmll~~""##$$%%;;::9988VVWWXXYY00112233FFEEDDCC^^__``aa::;;<<==uuttssrrxxyyzz{{AA@@??>>PPQQRRSS !!""ppoonnmm}}~~!!""##$$<<;;::99UUVVWWXX))((''&&kkjjiihh&&''(())77665544ZZ[[\\]]99::;;<<BBAA@@??bbccddee>>??@@AAqqppoonn||}}~~ !!""##==<<;;::TTUUVVWW##$$%%&&llkkjjii%%&&''((88776655YYZZ[[\\%%$$##""ggffeedd**++,,--33221100^^__``aa==>>??@@ !!"">>==<<;;ffggmmnnBBCCDDEEmmllkkjj$$%%&&''99887766XXYYZZ[[''(())** hhggffee))**++,,44332211]]^^__``!! ccbbaa``..//0011//..--,,bbccddeeAABBCCDD##$$%%&&::998877ooppqqrrFFGGHHII - -iihhggff(())**++55443322\\]]^^__++,,--.. - - ddccbbaa--..//0000//..--aabbccdd - - __^^]]\\22334455++**))((ffgghhiiEEFFGGHH !!''(())**66554433ssttuuvvJJKKLLMM eeddccbb,,--..//1100//..``aabbcc//001122``__^^]]11223344,,++**))eeffgghh [[ZZYYXX66778899''&&%%$$jjkkllmmIIJJKKLL""##$$%%++,,--..221100//wwxxyyzzNOPQRSSTaa``__^^00112233--,,++**ddeeffgg3399::;;\\[[ZZYY55667788((''&&%%iijjkkll WWVVUUTT::;;<<==##""!! ~~}}||nnooppqqMMSSTTUU&&''(())//001122..--,,++{{||}}~~TUUVVWWX]]\\[[ZZ44556677))((''&&hhiijjkk<<==>>??XXWWVVUU99::;;<<$$##""!!~~}}mmnnoopp - - SSRRQQPP>>??@@AA{{zzyyxxrrssttuuVVWWXXYY**++,,--33445566**))((''XYYZZ[[\YYXXWWVV8899::;;%%$$##""~~llmmnnoo@@AABBCC - - TTSSRRQQ==>>??@@ ||{{zzyyqqrrsstt !!OONNMMLLBBCCDDEEwwvvuuttvvwwxxyyZZ[[\\]]..//0011778899::&&%%$$##\]]^^__` - - UUTTSSRR<<==>>??!! }}||{{zzppqqrrssDDEEFFGG PPOONNMMAABBCCDDxxwwvvuuuuvvwwxx""##$$%%KKJJIIHHFFGGHHIIssrrqqppzz{{||}}^^__``aa22334455;;<<==>>""!! ~~}}||{{`aabbccd QQPPOONN@@AABBCCyyxxwwvvttuuvvwwHHIIJJKKLLKKJJIIEEFFGGHHttssrrqqyyzz{{||&&''(()) - -GGFFEEDDJJKKLLMMoonnmmll~~bbccddee66778899??@@AABBzzyyxxwwdeeffgghMMLLKKJJDDEEFFGGuuttssrrxxyyzz{{LLMMSSTTHHGGFFEEIIJJKKLLppoonnmm}}~~**++,,-- CCBBAA@@NNOOPPQQ kkjjiihhffggmmnn::;;<<==CCDDEEFFvvuuttssijklmmnnIIHHGGFFHHIIJJKKqqppoonn||}}~~UUVVWWXXDDCCBBAAMMNNOOPP llkkjjii..//0011??>>==<>??@@AAGGHHIIJJrrqqppooooppqqrrEEDDCCBBLLMMNNOOmmllkkjjYYZZ[[\\ @@??>>==QQRRSSTT - - hhggffee223399::;;::9988VVWWXXYYccbbaa``ssttuuvvBBCCDDEEKKLLMMNNnnmmllkkssttuuvvAA@@??>>PPQQRRSS - -iihhggff]]^^__``!!""##$$<<;;::99UUVVWWXXddccbbaa;;<<==>>77665544ZZ[[\\]]__^^]]\\wwxxyyzzFFGGHHIIOOPPQQRR jjiihhggwwxxyyzz !!""##==<<;;::TTUUVVWW eeddccbbaabbccdd%%&&''((88776655YYZZ[[\\``__^^]]??@@AABB !33221100^^__``aa[[ZZYYXX{{||}}~~JJKKLLMMSSTTUUVV - - ffeeddcc{{||}}~~$$%%&&''99887766XXYYZZ[[aa``__^^eeffggmm))**++,,44332211]]^^__``\\[[ZZYYCCDDEEFF!""##$$%//..--,,bbccddee WWVVUUTTNNOOPPQQWWXXYYZZbbaa``__(())**++55443322\\]]^^__]]\\[[ZZnnooppqq--..//0000//..--aabbccddXXWWVVUUGGHHIIJJ%&&''(()++**))((ffgghhii - - SSRRQQPPRRSSTTUU[[\\]]^^^^]]\\[[,,--..//1100//..``aabbccYYXXWWVVrrssttuu11223344,,++**))eeffgghh - - TTSSRRQQKKLLMMSS)**++,,-''&&%%$$jjkkllmmOONNMMLLVVWWXXYY__``aabbZZYYXXWW00112233--,,++**ddeeffgg - - UUTTSSRRvvwwxxyy55667788((''&&%%iijjkkll PPOONNMMTTUUVVWW-..//001##""!! ~~}}||nnooppqqKKJJIIHHZZ[[\\]]ccddeeff - -VVUUTTSS44556677))((''&&hhiijjkk QQPPOONNzz{{||}}99::;;<<$$##""!!~~}}mmnnooppLLKKJJIIXXYYZZ[[12233456{{zzyyxxrrssttuuGGFFEEDD^^__``aagghhiijj RRQQPPOO8899::;;%%$$##""~~llmmnnooMMLLKKJJ~~==>>??@@ ||{{zzyyqqrrssttHHGGFFEE\\]]^^__7899::;;wwvvuuttvvwwxxyyCCBBAA@@bbccddeekkllmmnnNNMMLLKK~~}}||{{<<==>>??!! }}||{{zzppqqrrssIIHHGGFFAABBCCDDxxwwvvuuuuvvwwxxDDCCBBAA``aabbcc<<==>>??ssrrqqppzz{{||}} !!??>>==<>==ddeeffgg@@AABBCCoonnmmll~~""##$$%%;;::9988jjkkllmmssttuuvvFFEEDDCCvvuuttssDDEEFFGGuuttssrrxxyyzz{{AA@@??>>IIJJKKLLppoonnmm}}~~!!""##$$<<;;::99mmnnooppDDEEFFGG kkjjiihh&&''(())77665544nnooppqqwwxxyyzzBBAA@@??rrqqppooHHIIJJKKqqppoonn||}}~~ !!""##==<<;;::MMNNOOPP llkkjjii%%&&''((88776655qqrrssttHHIIJJKK - - ggffeedd**++,,--33221100rrssttuu{{||}}~~ !!"">>==<<;;nnmmggffLLMMNNOOmmllkkjj$$%%&&''99887766QQRRSSTT - - hhggffee))**++,,44332211uuvvwwxxLLMMNOPQccbbaa``..//0011//..--,,~~}}||{{vvwwxxyy##$$%%&&::998877eeddccbbPPQQRRSS - -iihhggff(())**++55443322UUVVWWXXddccbbaa--..//0000//..--yyzz{{||RSSTTUUV__^^]]\\22334455++**))((zzyyxxwwzz{{||}}''(())**66554433aa``__^^TTUUVVWW eeddccbb,,--..//1100//..YYZZ[[\\``__^^]]11223344,,++**))}}~~VWWXXYYZ[[ZZYYXX66778899''&&%%$$vvuuttss~~}}||~~++,,--..221100//]]\\[[ZZXXYYZZ[[aa``__^^00112233--,,++**~~}}||]]^^__``\\[[ZZYY55667788((''&&%%Z[[\\]]^ WWVVUUTT::;;<<==##""!! rrqqppoo{{zzyyxx//001122..--,,++YYXXWWVV\\]]^^__]]\\[[ZZ44556677))((''&&{{zzyyxxaabbccddXXWWVVUU99::;;<<$$##""!!~~}}^__``aab - - SSRRQQPP>>??@@AAnnmmggffwwvvuutt33445566**))((''UUTTSSMM``aabbccYYXXWWVV8899::;;%%$$##""wwvvuutteeffgghh - - TTSSRRQQ==>>??@@ ||{{zzyybccddeefOONNMMLLBBCCDDEEeeddccbbssrrqqpp778899::&&%%$$##LLKKJJIIddeeffgg - - UUTTSSRR<<==>>??!! ssrrqqppiijjkkll PPOONNMMAABBCCDDxxwwvvuufgghijklKKJJIIHHFFGGHHIIaa``__^^oonnmmll;;<<==>>""!! HHGGFFEEhhiijjkk QQPPOONN@@AABBCCoonnmmggmmnnooppLLKKJJIIEEFFGGHHttssrrqqmmnnooppGGFFEEDDJJKKLLMM]]\\[[ZZkkjjiihh??@@AABBDDCCBBAA~~llmmnnooMMLLKKJJDDEEFFGGffeeddccqqrrssttHHGGFFEEIIJJKKLLppoonnmmqqrrssttCCBBAA@@NNOOPPQQ YYXXWWVVggffeeddZHAbtArdrXQJ`vffے`JXQtArdp˂rbdQZ|ZHAbtlJp˂rbdQZ|˂pZZdQbtJ`ےdrtAJ`JXQrrd|˂rXQZ|d`JXQlJtArHAZp˂tbdQے`JXQ|ZdQbp˂r`vXnr˂p|ZdQbXQJ`ےdrtAے`JXQtArdXQHAZpltbHAbےlJtAbHAZpltb˂pZZdQbtJ`ےrtAJlrZAbdfrXQJZ|dr˂ptlJXQJ`ےvpfZHAbtlJbHAZJltr˂p|ZdQb˂rXQnvp`JXQrrdf˂rXQdQZ|HAbےlJtAbHAZptbdQے`J~Hfp`ےbrtAJlZHAbtArdbHAZH~fے`JXQtArdp˂rbdQZ|ZHAbtlJJ`ےff`v˂pZ~HfJ`ےdrtAJ`JXQrrd|˂rXQZ|dXQr˂vnXHAZp˂tbdQے`JXQ|ZdQbp˂r`vXnr˂pf~HXQJ`ےdrtAے`JXQtArdbHAZpXnvHAbےpvnbHAZpltb˂pZZdQbtJ`ےtbdQZpZHAbv`frXQJZ|dr˂ptlJXQJ`ےvpfZHAbfpvbHAZJltr˂p|ZdQb˂rXQpfH~`JXQrXv`f˂rXQdQZ|HAbےlJtAbHAZp|drے`J~Hfp`ےbtAJlZHAbtArdrXQH~fے`JXQnXv`p˂rbdQZ|ZHAbtlJJ`p˂f`v˂pZ~HfJ`ےdtAJl`JXQrrd|˂rXQtAJlXQr˂vnXHAZp˂tbnے`JXQ|ZdQbJ`ے`vXnr˂pf~HXQJ`ےdtAJے`JXQtArdrXQJXnvHAbےpvnbHAZptbn˂pZZdQbtJ`ےtbdQZpZAb`v`frXQJvpfHr˂ptlJbHAZpvpfZHAbfpvbHAZltbr˂p|ZdQb`ےbf~f``JXQrXv`f˂rXQvpfHAbےlJtAbHAZp|ltJXQr~Hfp`ےbf`vZHAbtArd˂rXQH~fے`JXQnXv`p˂rnvpZHAbtlJHAZp˂vXn˂pZ~HfJ`ےHf``JXQrrd|˂rXQbnv˂pZHvnXHAZp˂Xnvے`JXQ|ZdQbJ`ے`vXnr˂pf~HXQJ`ےfHfے`JXQtArdrXQJvpfHHAbےpvnbHAZpvXn˂pZZdQbtJ`ےp`vXAbے`v`frXQJpfH~r˂ptlJbHAXQJvpfZHAbfpvbHAZ`vXnr˂p|ZdQb`ے~f``JXQrXv`f˂rXQvpfHHAbےlJtAbHAZpnvpJXQr~Hfp`ےbf`vZHAbtArd`ےbH~fے`JXQnXv`p˂rvpfZHAbtlJrXQJ`vXn˂pZ~HfJ`ے~f``JXQrrdf˂rXQfH~˂pZHvnXHAZp˂Xnvے`JXQ|ZdQbHAZp˂`vXnr˂pf~HXQJ`ےH~fے`JXQtArdےbHAvpf~HAbےpvnbHAZpvXn˂pZ~HfJ`ےf`vXAbJXQv`frXQJpfH~r˂ptlJrXQJvpfZHAbfpvbHAZ`vXnr˂pf~HZp˂f`vX`JXQrXv`f˂rXQvpfHHAbےpvnbHAZpnfr˂p~Hfp`ےbf`vZHAbtArd`ےbH~fے`JXQnXv`p˂rvpfZHAbfpvrXQJ`nvp˂pZ~HfJ`ے~f``JXQrXv`f˂rXQ`vXnZHAbvnXHAZp˂Xnvے`JXQ|ZdQbHAZp``vXnr˂pf~HXQJ`ےH~fے`JXQnXv`ےbHAfH~HAbےpvnbHAZpvXn˂pZ~HfJ`ےvpfے`JXQv`frXQJpfH~r˂ptlJےbHAvpfZHAbfpvbHAZ`vXnr˂pf~HXQJ`ےf`vX`JXQrXv`f˂rXQvpfHHAbےpvnbHAZpH~fr˂p~Hfp`ےbf`vZHAbtArdZp˂H~fے`JXQnXv`p˂rvpfZHAbfpvbHAZnvp˂pZ~HfJ`ے~f``JXQrXv`f˂rXQ`vXnZA`JvnXHAZp˂Xnvے`JXQf~HrXQJ``vXnr˂pf~HXQJ`ےH~fے`JXQnXv`p˂rfH~fHAے`pvnbHAZpvXn˂pZ~HfJ`ےvp`XQrbtv`frXQJpfH~r˂pXv`fےbHAvpfZHAےfpvbHAZ`vXnr˂pf~HXQJ`ےvXnJXQrbXv`f˂rXQvpfHHAbےpvnbHAZpvXnlJtA~Hfp`ےbf`vZHAb~HfZp˂H~f`JXQrnXv`p˂rvpfZHAbfpvbHAZvpfHtlJ~HfJ`ے~f``JXQrXv`f˂rXQvpfHd|ZvnXHAZp˂Xnvے`JXQpvnbHAZ`vXnbtlf~HXQJ`ےH~fے`JXQnXv`p`ے~f`tAd|pvnbHAZpvXn˂pZ~HfJ`ے~f`dQbtv`frXQJpfH~r˂pXv`fdrtAvpfJtAdfpvbHAZ`vXnr˂pf~HbHAZpvXnZdQbtXv`f˂rXQvpfHHAbےpvnbHAZpvXnlJtAr~Hfp`ےbf`vZHAb~HfJbdQH~f|ZdQbnXv`p˂rvpfZHAbfpv˂rXQvpfHlJtA~HfJ`ے~f``JXQrXv`f˂rXQvpfHd|ZvnXHAZdXnvے`JXQp`fZ|d`vXntlJf~HXQJ`ےH~fے`JXQnXv`J`ے~fvnrd|pvnbHAZvXn˂pZ~HfJ`ےXnvdQbtv`frtAJlpfH~r˂p~HfprtAJl瀅vpftArdfpvbHAZ`vXnr˂pf~HbHAZpvpfZdQbtXv`fdrtAJvpfHHAbےpvnbHAZppfH~lJtAr~HfptbdQf`vZHAbvnXtbdQH~f|ZdQbnXv`drtAvpfZHAbfpv˂bH~flJtA~Hfltb~f``JXQrXv`f˂rXQf`vd|ZvnXZ|dXnvے`JXQv`fZ|d`vXntlJf~HJltH~fے`JXQnXv`HAZd`vXnrd|pvndQZ|vXn˂pZ~HfJ`ےXnvdQbtv`frtAJlpfH~r˂p~HfprtAJlvpftArdfpvbdQZ|`vXnr˂pf~HrtAdQZvpfZdQbtXv`fdrtAJvpfHHAے`pvnbHAZppfH~lJtAr~HfptbdQf`vZHAbv~bQZ|H~f|ZdQbnXv`drtAvpfZHAےfpv|drH~flJtA~Hfltb~f`JXQrbXv`f˂rXQvpd|ZvnXZ|dXnvے`JXQHfpvdrtAJ`vXntlJf~HJltH~f`JXQrnXv`tAJl`vnvprd|pvndQZ|vXntlJ~HfJ`ےfH~dQbtv`frtAJlpfH~r˂pnXvltbvpftArdfpvbdQZ|`vXnbtlf~HtbdQZfH~ZdQbtXv`fdrtAJvpfHtAd|pvnbHAZpf`vXlJtAr~HfptbdQf`vZHAb`f~dQZ|H~f|ZdQbnXv`drtAvpfJtAdfpv|drf`vXlJtA~Hfltb~f`ZdQbtXv`f˂rXQnvpd|ZvnXZ|dXnvے`JXQHfpvdrtAJ`vXntlJf~HJltH~f|ZdQbnXv`tAJl|nvprd|pvndQZ|vXnlJtA~HfJ`ےfH~dQbtv`frtAJlpfH~r˂pnXHltbQvpftArdfpvbdQZ|`vXntlJf~HdrtAfH~ZdQbtXv`fdrtAJvpfHrd|pvnbHAZf`pflJtAr~HfptbdQf`vZHAbfpvZdrtH~f|ZdQbnXv`drtAvpftArdfpvJltf`vXlJtA~Hfltb~f`ZdQbtXv`fdrtAdQH~fd|ZvnXZ|dXnvے`JXQnXv`AJlt`vXntlJf~HJltH~f|ZdQbnXv`bdQZ|nvfHrd|pvndQZ|vXnlJtA~HfZ|d`vXndQbtv`frtAJlpfH~r˂pf~HbdQZ|vpftArdfpvbdQZ|`vXntlJf~HdrtA~fZZdQbtXv`fdrtAJvpfHrd|pvnrtAJlvpflJtAr~HfptbdQf`v|ZdQbfpvdrtH~f|ZdQbnXv`drtAvpftArdfpvJltHAbےlJtA~Hfltb~f`ZdQbtXv`ftbdQH~fd|ZvnXZ|dXnvtlJnXv`AJltZHAbtlJf~HJltH~f|ZdQbnXv`drtAJ`JXQrrd|pvndQZ|vXnlJtA~HfZ|d`vXHdQbtv`frtAJlpfH~tArdpvnbdQZے`JXQtArdfpvbdQZ|`vXntlJf~Hltb˂pZZdQbtXv`fdrtAJvpfHrd|pvnrtAJl~fZlJtArHfpvtbdQf`v|ZdQbXv`frtAJlr˂p|ZdQbnXv`drtAvpftArdfpvdQZ|HAbےlJtAHfpltb~f`ZdQbtXv`f|drHAbd|ZnrXQZ|dXnvtlJ~HftbdQZHAbtlJfHfJltH~f|ZdQbnXv`drtAJ`JXQrrd|vnrdQZ|vXnlJtA~HftAJlJQr˂pdQbtJ`ےrtAJlpfH~tArdpvnZ|dے`JXQtArdpvnbdQZ|`vXntlJf~Hltb˂pZZdQbtXQJ`ےdrtAJvpfHrd|pvntbdQZZHAblJtArHAZp˂tbdQf`v|ZdQbXv`frtAJlr˂p|ZdQbrXQJ`drtAvpftArdfpvdQtAJlHAbےlJtAHAZpltb~f`ZdQbtXv`f|drے`JXd|ZrXQJZ|dXnvtlJnXtbdQZHAbtlJےHAZJltH~f|ZdQbnXv`tbdQ`JXQrrd|˂rXQdQZ|vXnlJtA~HftAJlQr˂pdQbt`ےbrtAJlpfH~tArdv`fZ|rAے`JXQtArdp˂rbdQZ|`vXntlJf~HZ|d˂pZZdQbtJ`ےdrtAJvpfHrd|pvntdrtAZHAblJtArHAZp˂tbdQfZHA|ZdQb~HfpJltr˂p|ZdQbXQJ`ےdrtAvpftArdfpvrtAJlHAbےlJtAbHAZpltb~fZZdQbtXv`fJltے`JQrd|ZrXQJZ|dbے`tlJvnXbdQZ|ZHAbtlJbHAZJltH~f|ZdQbnXv`tbdQ`JXQrrd|˂rXQdQZ|HAbےlJtA~HfbdQZ|pZHAdQbt`ےbrtAJlJXQr˂pZHAtArdv`p˂drtAے`JXQtArdp˂rbdQZ|ZHAbtlJf~HZ|l璀˂pZZdQbtJ`ےdrtAJ`JXQrrd|pvndrtAbے`lJtArHAZp˂tbdQ˂pZHAbے`|ZdQbrXQJJltr˂p|ZdQbXQJ`ےdrtAے`JXQtArdfpvtbdQZHAbےlJtAbHAZpltb˂pZZdQbtXv`fJltJXQrd|ZrXQJZ|dbے`JXQrtlJ`ےbbdQZ|ZHAbtlJbHAZJltr˂p|ZdQbnXv`|dr`JXQrrd|˂rXQdQZ|HAbےlJtAHfpbdQtAJ˂pZHAdQbt`ےbrtAJlJXQr˂pZHAtArdHAZp˂drAJے`JXQtArdp˂rbdQZ|ZHAbtlJfHftAJl璀˂pZZdQbtJ`ےdrtAJ`JXQrrd|vnrltbbے`lJtArHAZp˂tbdQ˂pZHAbے`|ZdQbrXQHAtbdQZr˂p|ZdQbXQJ`ےdrtAے`JXQtArdpvntbdQZHAbےlJtAbHAZpltb˂pZZdQbtXQJ`ےdQZ|JXQrd|ZrXQJZ|dbے`JXQrtlJZp˂|drZHAbtlJbHAZJltr˂p|ZdQbrXQJ`|dt`JXQrrd|˂rXQdQZ|HAbےlJtAHAZpdrtAJZHAbdQbt`ےbrtAJlJXQr˂pZHAtArdrXQJ`tAJlے`JXQtArdp˂rbdQZ|ZHAbtlJp˂rbdQZ|˂pZZdQbtJ`ےdrtAJ`JXQrrd|˂rXQltb`JXQlJtArHAZp˂tbdQ˂pZHAbے`|ZdQbےbHAtbdQZr˂p|ZdQbXQJ`ےdrtAے`JXQtArdXQJ`ےdrtAHAbےlJtAbHAZpltb˂pZZdQbtJ`ےdQZ|lr˂pd|ZrXQJZ|dbے`JXQrtlJZp˂|dnZHAbtlJbHAZJltr˂p|ZdQbbHAZJlt`JXQrrd|˂rXQdQZ|HAbےlJtAbHAZptbdQZHAbdQbt`ےbrtAJlJXQr˂pZHAbے`lJtArHAZp˂tbdQے`JXQHfpvےbHAf`vXXQr˂f~rXQJ`|drJXQrvnv`p˂rvpfZHAbfpvbHAZJltr˂pdfp˂r~f``JXQrXv`f˂rXQdQZ|XQr`vXnJXQrdfrXQJZ|dr˂pnXvZp˂nvppZHAbHfpvےbHAtAJl˂pZHAf~HXQJ`ےH~fے`JXQnXv`p˂rbdQZ|ZHAb~HXvXQJ`ےvXn˂pZ~HfJ`ےdtAJlے`JXQvˍpf˂pZHA~Hfp`ےbrtAJl`JXQr`f~rXQJ`fH~ے`JnXvZp˂tbdQZbے`fpvbHAZ`vXnr˂pf~HXQJ`ےdtAJے`JXQ`f~bHAZvpfHHAbےpvnbHAZptbnr˂pH~ㅐfbے`vnXHAZp˂tbdQ˂pZHfpvےbHAf`vXXQr˂`f~rXQJ`|dtAJXQrnXv`p˂rvpfZHAbfpvbHAZltbr˂pHfpvprQJ`~f``JXQrXv`f˂rXQvpfZHAb`vXnJXQrv`frXQJZ|dHAbےnXvZp˂nvppZHAbHfpvےbHAJltے`Jf~HXQJ`ےH~fے`JXQnXv`p˂rnvpZHAbnXvےbHvXn˂pZ~HfJ`ےHf`ے`JXQvˍpf˂pZHA~Hfp`ےbtAJl`JXQr`f~rXQJ`fH~ے`JnXvZp˂bnvXQr˂fpvbHAZ`vXnr˂pf~HXQJ`ےfHfے`JXQ`f~AZp˂vpfHHAbےpvnbHAZpvXnr˂pH~ㅐfbے`vnXHAZp˂tbn˂pZHfpvےbHAf`vXXQr˂`f~rXQJ`pfHpZHAbnvfp˂rvpfZHAbfpvbHAZ`vXnr˂pHfp`rXQJ`~f``JXQrXv`f˂rXQvpfH`JXQr`vXnJXQrv`frXQJvp`vHAXQrnXvZp˂nvppZHAbHfpvےbHAf`vXے`J~HfpXQJ`ےH~fے`JXQnXv`p˂rvpfZHAbf~HےbHvXn˂pZ~HfJ`ے~f`˂pZvˍpf˂pZHA~Hfp`ےbXnv˂pZHA`f~rXQJ`fH~ے`JnXvZp˂nvpXQr˂vnXbHAZ`vXnr˂pf~HXQJ`ےH~fے`JXQfpvAZp˂vpfHHAbےpvnbHAZpvXnHAbےH~ㅐfbے`vnXHAZp˂pfH~bے`HfpvےbHAf`vXXQr˂`f~rXQJ`fH~p`JXQv`fp˂rvpfZHAbfpvbHAZ`vXnr˂pnXv`rQJ~f``JXQrXv`f˂rXQvpfH`JXQr`vXnJXQrv`frXQJf`vJXQrnXvZp˂nvppZHAbHfpvےbHAf`vXr˂p~HfpXQJ`ےH~fے`JXQnXv`p˂rvpfZHAbf~HbHAZvXn˂pZ~HfJ`ے~f`˂pZvˍpf˂pZHA~Hfp`ےbXn˂p`J`f~rXQJ`fH~ے`JnXvZp˂nvpZHAbvnXvbHAZ`vXnr˂pf~HXQJ`ےH~fے`JXQfpvdrtAJvpfHHAbےpvnbHAZpvXnHAXQrH~ㅐfbے`vnXHAZp˂f`vXXQrbtHfpvےbHAf`vXXQr˂`f~rXQJ`fH~ے`JXQf~HfdrtAvpfZHAbfpvbHAZ`vXnr˂p~Hfltb~f``JXQrXv`f˂rXQvpfH˂pZHA`vXnJXQrv`frXQJnvplJAnXvZdrnvppZHAbHfpvےbHAf`vXr˂ppvnJltH~fے`JXQnXv`p˂rvpfZHAbpvndQZ|vXn˂pZ~HfJ`ے~f`bے`vˍpf˂pZHA~Hfp`ےbfH~|ZdQb`f~tAJlfH~ے`JnXvZp˂nvpZHAXQrXv`fbdQZ|`vXnr˂pf~HXQJ`ےH~fے`JXQXv`fdrtAJvpfHHAے`pvnbHAZpvXnJXQrH~ㅐfbے`vnXHAZp˂f`vXtlJHfpvtbdQZf`vXXQr˂`f~rXQJ`fH~˂pZ~HfdrtAvpfZHAےfpvbHAZ`vXnr˂p~Hfltb~f`JXQrbXv`f˂rXQvpfH˂p`Z`vXnJXQrv`frXQJnvptArdnXv|drnvppZHAHfpvےbHAf`vXHAbےpvnJltH~f`JXQrnXv`p˂rvpfZHAbpvndQZ|vXntlJ~HfJ`ے~f`QXb㉀ەvˍpf˂pZHA~Hfp`ےb`vXn|ZdQb`f~tAJlfH~ے`JXQnXvZp˂nvp`JXQrXv`fbdQZ|`vXnbtlf~HXQJ`ےH~fے`JXQXHfpdrtAJvpfHtAd|pvnbHAZpvXnpJAHrH~ㅐfېے`JvnXHAZp˂vpftJArdHfpvtbdQZf`vXrbt`f~rXQJ`fH~˂p`~fpvdrtAvpfJtAdfpvbHAZ`vXnr˂pvnXltb~f`ZdQbtXv`f˂rXQvpfHˁ`Z`vXnXQrbtv`frXQJH~f|ZdnXv|drnvplJtAdHfpvےbHAf`vXJXQrbnXv`JltH~f|ZdQbnXv`p˂rvpfZHAbv`fdQZ|vXnlJtA~HfJ`ے~f`QXb㉀vˍpflJtA~Hfp`ےb`vXnQbtl`f~tAJlfH~|ZdQnXvZp˂nvptl|f~HbdQZ|`vXntlJf~HXQJ`ےH~fے`JXQ~HfpdrtAJvpfHrd|pvnbHAZvXnˁ`ZQXH~ㅐfd|ZvnXHAZp˂vpfJtArdHfpvtbdQZf`vXbtl`f~rXQJ`fH~ZdQbtfpvdrtAvpftArdfpvbHAZ`vXnr˂pvnXltb~f`ZdQbtXv`fdrtAJvpfHb㉀ۑp`vXndQbtv`frXQJHXn|ZdnXv|drnvpJtArdHfpvےbHAf`vXlJtAnXv`JltH~f|ZdQbnXv`drtAvpfZHAbv`pvdQZ|vXnlJtA~Hfltb~f`JAHr󙐕vˍp|lJtAr~Hfp`ےbvpfHQbtl`f~tAJlfH~|ZdQnXvZdrnvprd|f~fbdQZ|`vXntlJf~HJltH~fے`JXQnXvdrtAJvpfHrd|pvndQZ|vXnˁ`ZQXdrQtd|ZvnXHAZd~f`JAr|HfpvtbdQZf`vXbtl`f~tAJlfH~ZdQbtvnXdrtAvpftArdfpvbdQZ|`vXnr˂p`f~ltb~f`ZdQbtXv`fdrtAJvpfHb㉀ۑpJltdQbtv`frtAJlvXnZdQbtnXv|drnvpJtArdHfpvtbdQZf`vXd|Zv`fJltH~f|ZdQbnXv`drtAvpfZHAےHfpvdQZ|vXnlJtA~Hfltb~f``ZQXbbAdZ|lJtAr~HfptbdQvpfHlJtA`f~tAJlfH~|ZdQnXv|drnvpdQbt~HfpbdQZ|`vXntlJf~HJltH~f`JXQrnXvdrtAJvpfHrd|pvndQZ|vXnۑpJdrQtd|ZvnXZ|d~vrd|HfpvtbdQZf`vXbtl`f~tAJlfH~lJtArvnXdrtAvpftArdfpvbdQZ|`vXnbtl`fltb~f`ZdQbtXv`fdrtAJvpfHAHr󙐂JltdQbtv`frtAJlpfH~ZdQbtnXv|drnvpJtArdHfpvtbdQZf`vXd|Zv`ffJltH~f|ZdQbnXv`drtAvpf|ZdQbnXv`dQZ|vXnlJtA~Hfltb~f``ZQXbbAdZ|lJtAr~HfptbdQf`vlJtA`fHtAJlfH~|ZdQnXv|drnvpdQbtpvnbdQZ|`vXntlJf~HJltH~ftlJf~HdrtAJvpfHrd|pvndQZ|vXnۑpJdrQtd|ZvnXZ|dXnvrZdQfpvtbdQZf`vXbtl`f~tAJlfH~l|ZdQrXQJ`drtAvpftArdfpvbdQZ|`vXntArdfpvltb~f`ZdQbtXv`fdrtAJvpfHAHQXb㉀JltdQbtv`frtAJlpfH~btlnrXQJ|drnvpJtArdHfpvtbdQZf`vXbtlےHAZJltH~f|ZdQbnXv`drtAvpf|ZdQbnXv`dQZ|vXnlJtA~Hfltb~f`ۑpJAHbAdZ|lJtAr~HfptbdQf`pJtArd`ےHAtAJlfH~|ZdQnXv|drnvpJtArdp˂rbdQZ|`vXntlJf~HJltH~ftd|pvndrtAJvpfHrd|pvndQZ|vXnr󙐂ˁ`drQtd|ZvnXZ|dfH~|ZdQZp˂tbdQZf`vXbtl`f~tAJlfH~|ZdQXQJ`ےdrtAvpftArdfpvbdQZ|`vXnZdQbtrXQJ`ltb~fZZdQbtXv`fdrtAJvpfHZQXb㉀JltdQbtv`frtAJlf`vXbtlrXQJ`|drnvpJtArdHfpvtbdQZf`vXbtlbHAZJltH~f|ZdQbnXv`drtAvpflJtAAZp˂dQZ|HAbےlJtA~Hfltb~f`ۑpJAHbAdZ|lJtAr~HfptbdQnvpJtArdےbHAtAJlfH~|ZdQnXv|drnvpJtAdQbp˂rbdQZ|ZHAbtlJf~HJltH~frd|rXQJdrtAJ`JXQrrd|pvndQZ|vXnr󙐉ۂdrQtd|ZvnXZ|dfH~ZQbtZp˂tbdQZfZHAbbtl`f~tAJlfH~tlJXQJ`ےdrtAے`JXQtArdfpvbdQZ|`vXnZdQbt`ےbltb˂pZZdQbtXv`fdrtAJvpfHpJAHrJltdQbtv`frtAJlf`vXlJtArrXQJ`|drے`JJtArdHfpvtbdQZf`vXtArdbHAZJltr˂p|ZdQbnXv`drtAvpfl|ZHAZp˂dQZ|HAbےlJtAHfpltb~f`ˁ`ZbAdZ|lJtAr~HfptbdQH~fd|ZےbHAtAJlXQr˂|ZdQnXv|drnvp|ZdQbp˂rbdQZ|ZHAbtlJfHfJltH~fdQbt璀rXQJdrtAJ`JXQrrd|vnrdQZ|vXnQXb㉀ۂdrQtd|ZvnXZ|dZHAbdQbtZp˂tbdQZpZHAbbtl`fHtAJlfH~tlJXQJ`ےdrtAے`JXQtArdpvnbdQZ|`vXnlJtArbHAZpltb˂pZZdQbtXQJ`ےdrtAJvpfHpJAHrJltdQbtv`frtAJl˂pZlJtArrXQJ`|drے`JJtArdfpvtbdQZf`vXtArdtbHAZJltr˂p|ZdQbrXQJ`drtAvpfd|Z˂rXdQZ|HAbےlJtAHAZpltb~f`ˁ`pbAdZ|lJtArHfpvtbdQHAbےd|ZQےbHAtAJlXQr˂|ZdQnrXQJ|drnvplJtAp˂rbdQZ|ZHAbtlJےHAZJltH~fdQbtQJ`ےdrtAJ`JXQrrd|˂rXQdQZ|vXnJAHr󙐂drQtd|ZnrXQZ|d`JXQrblJtZp˂tbdQZpZHAbbtl`ےHAtAJlfH~rd|XQJ`ےdrtAے`JXQtArdp˂rbdQZ|`vXnlJtAdQbHAZpltb˂pZZdQbtJ`ےdrtAJvpfHˁ`ZQXJltdQbtJ`ےrtAJl˂pZArd|rXQJ`|drے`JJtArdZp˂tbdQZf`vXZdQbtbHAZJltr˂p|ZdQbXQJ`ےdrtAvpfbtl˂rXdQZ|HAbےlJtAbHAZpltb~frb㉀ۑpbAdZ|lJtArHAZp˂tbdQHAbےZdQbtےbHAtAJlXQr˂|ZdQrXQJ`|drnvplJtAp˂rbdQZ|ZHAbtlJbHAZJltH~fJtArdQJ`bdrtAJ`JXQrrd|˂rXQdQZ|˂pZJAHr󙐂drQtd|ZrXQJZ|d`pZHAlJtZp˂tbdQZpZHAbbtlےbHAtAJlfH~rd|XQJ`ےdrtAے`JXQtArdp˂rbdQZ|ZHAb|ZdQAZp˂ltb˂pZZdQbtJ`ےdrtAJHAbےˁ`pfJltdQbt`ےbrtAJlbے`Ard|rXQJ`|drے`JJtArdZp˂tbdQZfZHAblJtArbHAZJltr˂p|ZdQbXQJ`ےdrtAے`JXQbtlrXQJ`dQZ|HAbےlJtAbHAZpltb`JXQrH~ㅐfbAdZ|lJtArHAZp˂tbdQJXQrZdQbےbHAtAJlXQr˂|ZdQrXQJ`|dr˂pd|Zp˂rbdQZ|ZHAbtlJbHAZJltr˂pJtArdےbHAdrtAJ`JXQrrd|˂rXQdQZ|˂pZ`vXndrQtd|ZrXQJZ|d˂pZHAJtArdZp˂tbdQZpZHAbbtlےbHAtAJlZHAbdQbtXQJ`ےdrtAے`JXQtArdp˂rbdQZ|ZHAbtlJZp˂ltb˂pZZdQbtJ`ےdrtAJHAbےvˍpfJltdQbt`ےbrtAJlbے`f~rXQJ`|drے`JJtArdZp˂tbdQZے`JXQlJtArbHAZJltr˂p|ZdQbXQJ`ےdrtAے`JXQtArdrXQJ`dQZ|HAbےlJtAbHAZpltb`pZHAH~ㅐfbAdZ|lJtArHAZp˂tbdQJXQHAbHfpvےbHAtAJlXQr˂|ZdQrXQJ`|drr˂pd|Zp˂rbdQZ|ZHAbtlJbHAZJltr˂p|ZdQbےbAZdtAJl`JXQrrd|˂rXQdQZ|bے``vXndrQtd|ZrXQJZ|dے`JnXvZp˂tbdQZpZHAbbtlےbHAtAJlZHAbdQtArdXQJ`ےdtAJے`JXQtArdp˂rbdQZ|ZHAbtlJrXQtbn˂pZZdQbtJ`ےdrtAJJXQrvˍpfJltdQbt`ےbrtAJlXQr˂`f~rXQJ`|dtAے`JJtArdZp˂tbdQZے`pZf~bHAZltbr˂p|ZdQbXQJ`ےdrtAے`JXQtArdJ`ے々vpfHAbےlJtAbHAZpltb˂pZHAH~ㅐfbAdZ|lJtArHAZp˂tbdQpZHAbHfpvےbHAJltXQr˂|ZdQrXQJ`|drHAbےHfvnXp˂rnvpZHAbtlJbHAZJltr˂p|lJtAbHAZpHf``JXQrrd|˂rXQdQZ|bے``vXndrQtd|ZrXQJZ|dے`JnXvZp˂bnvpZHAbbtlےbHAtAJl`JXQrv`fXQJ`ےfHfے`JXQtArdp˂rbdQZ|ZHAbrd|rXQvXn˂pZZdQbtJ`ےdrtAJJXQHAbvˍpfJltdQbt`ےbrtAJlXQr`f~rXQJ`pfHے`JJtArdZp˂tbdQZ˂pZ~HfpbHAZ`vXnr˂p|ZdQbXQJ`ےdrtAے`JXQZdQbtJ`ےvpfHHAbےlJtAbHAZpltbے`JH~ㅐfbAdZ|lJtArHAZp˂tbdQے`JXQHfpvےbHAf`vXXQr˂|ZdQrXQJ`|drHAbےvnXp˂rvpfZHAbtlJbHAZJltr˂plJtAbHAZr~f``JXQrrdf˂rXQdQZ|XQr˂`vXndrQtd|ZrXQJZ|dr˂pnXvZp˂nvppZHAbbtlےbHAtAJl`JXQHAv`fXQJ`ےH~fے`JXQtArdp˂rbdQZ|ZHAbrd|XQJ`ےvXn˂pZ~HfJ`ےdrtAJpZHAbvˍpfJltdQbt`ےbrtAJlZHAb`f~rXQJ`fH~ے`JJtArdZp˂tbdQZbے`~HfpbHAZ`vXnr˂pf~HXQJ`ےdrtAے`JXQZdQtArbHAZvpfHHAbےpvnbHAZpltbے`JH~ㅐfbAdZ|66666666666666666666666666666666666666666666666667777777777 \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv38_0.dat b/mpdf/qrcode/data/qrv38_0.dat deleted file mode 100644 index 02972f2..0000000 --- a/mpdf/qrcode/data/qrv38_0.dat +++ /dev/null @@ -1,337 +0,0 @@ -~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbaba`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststspopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststspopopoponmnmnmnmlkkkkkkljijijijihghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutststsrqpopopoponmnmnmnmklklklkljijijijihghghghgfefefefedcdcbaba`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvurqrqrqrqpopopoponmnmnmnmklklklkljijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvurqrqrqrqpopopoponmnmnmnmklklklkljijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvutsrqrqrqrqpopopoponmnmnmnmklklklkljijijijihghghghgfefedcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwtstststsrqrqrqrqpopopoponmnmnmnmklklklkljijijijihghghghgdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwtstststsrqrqrqrqpopopoponmnmnmnmkkkkkklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQQQQQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijihghgfefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijihghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkhghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmkkkklklkhghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQQQQQQRPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA~}~}~}~}|{|{|{zyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklkjijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUQRQRQRQRPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA~}~}~}~}zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUQRQRQRQRPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA~}~}~}~}zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUQRQRQRQRPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA~}~}~}|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUQRQRQRQRPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSQRQRQRQRPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSQQQQQQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmlkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopopolklklkkkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopopokkklklkljijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCBABABABABABABA~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopopoklklklkljijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEBABABABABABABABA~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopopoklklklkljijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSQQQQQRQRPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEBABABABABABABABA~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopopoklklklkljijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSQRQRQRQRPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEDCDCDCBABABABABABABABA~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopopoklklklkljijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSQRQRQRQRPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGDCDCDCDCBABABABABABABABA~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopopoklklkkkkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSQRQRQRQRPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGDCDCDCDCBABABABABABABABA~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopopokklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWVUVUTSTSTSTSQRQRQRQRPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGFEFEFEDCDCDCDCBABABABABABABABA~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopopolklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSQRQRQRQQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDCBABABABABABABABA~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopopolklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSQQQQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDCBABABABABABABABA~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopopolklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIHGHGHGFEFEFEFEDCDCDCDCBABABABABABABABA~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqponmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEDCDCDCDCBABABABABA@?@?@?~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqnmnmnmnmlklkkkkkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqnmnmnmnmklklklkljijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[ZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqnmnmnmnmklklklkljijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQQQPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqnmnmnmnmklklklkljijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSQQQRQRQRPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqnmnmnmnmklklklkljijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSQRQRQRQRPOPOPOPONMLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqnmnmnmnmklklklkljijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSQRQRQRQRPOPOPOPOLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqnmnmnmnmklkkkkkkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSQRQRQRQRPOPOPOPOLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSQRQRQRQRPONMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSQRQRQQQQNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSQQRQRQRQNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA@?@?@?@?@?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:96565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!    - @?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:96565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!      - - - - @?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:96565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#        - - - - @?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:96565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#       - - - - @?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:96565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#     - - - - @?@?@?@?>=>=>=>=<;<;<;<;:98787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#     - - - - @?@?@?@?>=>=>=>=<;<;<;<;877777786565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#     - - - - @?@?@?@?>=>=>=>=<;<;<;<;787878786565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#        - - - - @?@?@?@?>=>=>=>=<;<;<;<;787878786565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#        - - - - @?@?@?@?>=>=>=>=<;<;<;<;787878786565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#        - - - - @?@?@?@?>=>=>=>=<;<;<;<;787878786565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#        - - - - @?@?@?@?>=>=>=>=<;<;<;<;787878786565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#        - - - - @?@?@?@?>=>=>=>=<;<;<;<;777777876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#        - - - - @?@?@?@?>=>=>=>=<;<;<;<;878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!        - - - - @?@?@?@?>=>=>=>=<;<;<;<;878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!        - - - - @?@?@?@?>=>=>=>=<;<;<;<;878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!        - - - - @?@?@?@?>=>=>=>=<;<;<;:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!        - - - - @?@?@?@?>=>=>=>=:9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!        - - - - @?@?@?@?>=>=>=>=:9:9:9:9777778786565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!        - - - - @?@?@?@?>=>=>=>=:9:9:9:9787878786565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!        - - - - @?@?@?@?>=>=>=>=:9:9:9:9787878786565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!        - - - - @?@?@?@?>=>=>=>=:9:9:9:9787878786565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!        - - - - @?@?@?@?>=>=>=>=:9:9:9:9787878786565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - @?@?@?@?>=>=>=>=:9:9:9:9787878776565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - @?@?@?@?>=>=>=>=:9:9:9:9777787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - @?@?@?@?>=>=>=>=:9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - @?@?@?@?>=>=>=>=:9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - @?@?@?@?>=>=>=>=:9:9:9:9878787876565656543434343212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - @?@?@?@?>=<;<;<;:9:9:9:9878787876565656543434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - @?@?@?@?<;<;<;<;:9:9:9:9878787776565656543434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - @?@?@?@?<;<;<;<;:9:9:9:9777878786565656543434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - @?>=>=>=<;<;<;<;:9:9:9:978787878656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - >=>=>=>=<;<;<;<;:9:9:9:978787878656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - >=>=>=>=<;<;<;<;:9:9:9:978787878656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - >=>=>=>=<;<;<;<;:9:9:9:97878787865656565434343430/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - >=>=>=>=<;<;<;<;:9:9:9:97878777765656565434343430/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!    - - - - >=>=>=>=<;<;<;<;:9:9:9:97787878765656565434343430/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!    - - - - >=>=>=>=<;<;<;<;:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!    - - - - >=>=>=>=<;<;<;<;:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!    - - - - >=>=>=>=<;<;<;<;:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!    - - - - >=>=>=>=<;<;<;<;:9:9:9:98787878743434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!    - - - - >=>=>=>=<;<;<;<;:9:9:9:98787777743434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!    - - - - >=>=>=>=<;<;<;<;:9:9:9:98787878743434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!    - - - >=>=>=>=<;<;<;<;:9:9:9:96565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!    >=>=>=>=<;<;<;<;:9:9:9:96565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!     vvuuttsswwxxyyzz - ---..//00ppoonnmmEEFFGGHHXXWWVVUU]]^^__``@@??>>== !"##$$%oonnmmllFFGGHHIIWWVVUUTT^^__``aa??>>==<>??aa``__^^!!""##$$rrqqkkjj{{||}}~~ 11223344llkkjjiiIIJJKKLLTTSSRRQQaabbccdd<<;;::99%&&''(()kkjjiihhJJKKLLMMSSRRQQPPbbccddee;;::9988zz{{||}}##""!! - - >>??@@AAAA@@??>>{{||}}~~""!!  - - ''(())**vvuuttssMMNNOOPP##(())**++uuttssrr@@AABBCC]]\\[[ZZ%%&&''((iihhggff ~~}}55667788hhggffeeMMNNOOPPPPOONNMMeeffgghh88776655)**++,,-ggffeeddNNOOPPQQOONNMMLLffgghhii77665544~~BBCCDDEE==<;:987++,,--..rrqqppooQQWWXXYY,,--..//qqppoonnDDEEFFGGYYXXWWVV))**++,,eeddccbb - - !!""##$$||{{zzyy99::;;<>??@@``__^^]]UUVVWWXXHHGGFFEEmmnnoopp00//..--12233445__^^]]\\VVWWXXYYGGFFEEDDnnooppqq//..--,,JJKKLLMM3221100/33445566jjiihhgg^^__``aa~~44556677iihhggffLLMMNNOOQQPPOONN11223344]]\\[[ZZ))**++,,ttssrrqqAABBCCDD\\[[ZZYYYYZZ[[\\DDCCBBAAqqrrsstt,,++**))5667789:[[ZZYYXXZZ[[\\]]CCBBAA@@rrssttuu++**))(( NNOOPPQQ/..--,,+ - - !!""~~}}||{{778899::ffeeddccbbccddee !!""##}}||{{zz8899::;;eeddccbbPPQQRRSSMMLLKKJJ55667788YYXXWWQQ--..//00ppoonnmmEEFFGGHHXXWWVVUU]]^^__``@@??>>==uuvvwwxx((''&&%%;<==>>??WWVVUUTT^^__``aa??>>==<>bbaa``__ffgghhii - - $$%%&&''yyxxwwvv<<==>>??aa``__^^TTUUVVWWIIHHGGFF99::;;<>??@@LLKKJJII ~~}}55667788hhggffeeMMNNOOPPPPOONNMMeeffgghh88776655}}~~ DDEEFFGGOONNMMLLffgghhii77665544~~~~__``aabb#"! ++,,--..rrqqppooCCDDEEFFZZYYXXWWssttuuvv,,--..//qqppoonnDDEEFFGGYYXXWWVV\\]]^^__AA@@??>>AABBCCDDHHGGFFEE!!""##$$||{{zzyy99::;;<>??@@``__^^]]UUVVWWXXHHGGFFEEmmnnoopp00//..--LLMMNNOOGGFFEEDDnnooppqq//..--,,yyxxwwvvgghhiijj33445566jjiihhggKKLLMMNNRRQQPPOO{{||}}~~ ~~44556677iihhggffLLMMNNOOQQPPOONNddeeffgg99887766||{{zzyyIIJJKKLL@@??>>==))**++,,ttssrrqqAABBCCDD\\[[ZZYYYYZZ[[\\DDCCBBAAqqrrsstt,,++**))PPQQRSTUCCBBAA@@rrssttuu++**))((  !!uuttssrrkkqqrrss - - !!""~~}}||{{778899::ffeeddccOOPPQQRRNNMMLLKK}}||{{zz8899::;;eeddccbbPPQQRRSSMMLLKKJJhhiijjkk55443322xxwwvvuuMMNNOOPP77665544--..//00ppoonnmmEEFFGGHHXXWWVVUU]]^^__``@@??>>==uuvvwwxx((''&&%% ~~}}VWWXXYYZ??>>==<>bbaa``__SSTTUUVVJJIIHHGGyyxxwwvv<<==>>??aa``__^^TTUUVVWWIIHHGGFFllmmnnoo1100//..ttssrrqqQQRRSSTT3322110011223344llkkjjiiIIJJKKLLTTSSRRQQaabbccdd<<;;::99yyzz{{||$$##""!! - - ||{{zzyyZ[[\\]]^;;::9988zz{{||}}##""!! - - &&''(())hhggffeexxyyzz{{ - - ''(())**vvuuttss??@@AABB^^]]\\[[WWXXYYZZFFEEDDCCuuttssrr@@AABBCC]]\\[[ZZXXYYZZ[[EEDDCCBBppqqrrss--,,++**TTUUVVWWppoonnmmUUVVWWXX//..--,,55667788hhggffeeMMNNOOPPPPOONNMMeeffgghh88776655}}~~ xxwwvvuu^__``aab77665544~~**++,,--ddccbbaa||}}~~++,,--..rrqqppooCCDDEEFFZZYYXXWW[[\\]]^^BBAA@@?? !"#qqppoonnDDEEFFGGYYXXWWVV\\]]^^__AA@@??>>ttuuvvww))((''&&XXYYZZ[[llkkjjiiYYZZ[[\\++**))((99::;;<>==<<;;#$$%%&&'mmllkkjjHHIIJJKKUUTTSSRR``aabbcc==<<;;::xxyyzz{{%%$$##""\\]]^^__hhggffee]]^^__``''&&%%$$==>>??@@``__^^]]UUVVWWXXHHGGFFEEmmnnoopp00//..--kkjjiihhfgghhiij//..--,,22334455\\[[ZZYY33445566jjiihhggKKLLMMNNRRQQPPOOccddeeff::998877'(())**+iihhggffLLMMNNOOQQPPOONNddeeffgg99887766||}}~~!! ``aabbccddccbbaaaabbccdd##AABBCCDD\\[[ZZYYYYZZ[[\\DDCCBBAAqqrrsstt,,++**)) - - ggffeeddjkklmnop++**))((  !!~~}}||66778899XXWWQQPP - - !!""~~}}||{{778899::ffeeddccOOPPQQRRNNMMLLKKgghhiijj66554433+,,--../eeddccbbPPQQRRSSMMLLKKJJhhiijjkk55443322ddeeffgg``__^^]]eeffgghhEEFFGGHHXXWWVVUU]]^^__``@@??>>==uuvvwwxx((''&&%% ccbbaa``qqrrsstt''&&%%$$ - - ""##$$%%{{zzyyxx::;;<<==OONNMMLL ##$$%%&&zzyyxxww;;<<==>>bbaa``__SSTTUUVVJJIIHHGGkkllmmnn221100///0011223aa``__^^TTUUVVWWIIHHGGFFllmmnnoo1100//..hhiijjkk\\[[ZZYYiijjkkll~~}}||IIJJKKLLTTSSRRQQaabbccdd<<;;::99yyzz{{||$$##""!! - - __^^]]\\uuvvwwxx##""!! - - &&''(())wwvvuutt>>??@@AAKKJJIIHH''(())**vvuuttss??@@AABB^^]]\\[[WWXXYYZZFFEEDDCCooppqqrr..--,,++34455667]]\\[[ZZXXYYZZ[[EEDDCCBBppqqrrss--,,++**llmmnnooXXWWVVUUmmnnoopp{{zzyyxxMMNNOOPPPPOONNMMeeffgghh88776655}}~~ [[ZZYYXXyyzz{{||**++,,--ssrrqqppBBCCDDEEGGFFEEDD++,,--..rrqqppooCCDDEEFFZZYYXXWW[[\\]]^^BBAA@@??ssttuuvv**))((''789:;<==YYXXWWVV\\]]^^__AA@@??>>ttuuvvww))((''&&ppqqrrssTTSSRRQQqqrrsstt wwvvuuttQQRRSSTTLLKKJJIIiijjkkll44332211WWQQPPOO}}~~..//0011oonnmmllFFGGHHIICCBBAA@@//001122nnmmllkkGGHHIIJJVVUUTTSS__``aabb>>==<<;;wwxxyyzz&&%%$$##>>??@@AAUUTTSSRR``aabbcc==<<;;::xxyyzz{{%%$$##"" - -ttuuvvwwPPOONNMMuuvvwwxx - - - -ssrrqqpoUUVVWWXXHHGGFFEEmmnnoopp00//..--##$$%%NNMMLLKK22334455kkjjiihhJJKKLLMM??>>==7733445566jjiihhggKKLLMMNNRRQQPPOOccddeeff::998877{{||}}~~""!! BBCCDDEEQQPPOONNddeeffgg99887766||}}~~!!  xxyyzz{{LLKKJJIIyyzz{{|| nmlkkjjiYYZZ[[\\DDCCBBAAqqrrsstt,,++**))&&''(())JJIIHHGG  !!~~}}||66778899ggffeeddNNOOPPQQ66554433 !!""~~}}||{{778899::ffeeddccOOPPQQRRNNMMLLKKgghhiijj66554433FFGGHHIIMMLLKKJJhhiijjkk55443322||}}~~HHGGFFEE}}~~ihhggffe]]^^__``@@??>>==uuvvwwxx((''&&%% - - **++,,--FFEEDDCC - - ""##$$%%{{zzyyxx::;;<<==ccbbaa``RRSSTTUU221100//##$$%%&&zzyyxxww;;<<==>>bbaa``__SSTTUUVVJJIIHHGGkkllmmnn221100//JJKKLLMMIIHHGGFFllmmnnoo1100//..DDCCBBAAeddccbbaaabbccdd<<;;::99yyzz{{||$$##""!! - - ..//0011BBAA@@?? - - &&''(())wwvvuutt>>??@@AA__^^]]\\VVWWXXYY..--,,++''(())**vvuuttss??@@AABB^^]]\\[[WWXXYYZZFFEEDDCCooppqqrr..--,,++NNOOPPQQEEDDCCBBppqqrrss--,,++**@@??>>==a``__^^]eeffgghh88776655}}~~ 22334455>>==7766**++,,--ssrrqqppBBCCDDEE[[ZZYYXXZZ[[\\]]**))((''++,,--..rrqqppooCCDDEEFFZZYYXXWW[[\\]]^^BBAA@@??ssttuuvv**))((''RSTUVWWXAA@@??>>ttuuvvww))((''&& - - <<;;::99##]\\[[ZZYiijjkkll443322116677==>>55443322..//0011oonnmmllFFGGHHIIWWVVUUTT^^__``aa&&%%$$##//001122nnmmllkkGGHHIIJJVVUUTTSS__``aabb>>==<<;;wwxxyyzz&&%%$$## ~~}}||{{XYYZZ[[\==<<;;::xxyyzz{{%%$$##"" - - 88776655$$%%&&''YXXWWVUTmmnnoopp00//..--??@@AABB1100//..22334455kkjjiihhJJKKLLMMSSRRQQPPbbccddee33445566jjiihhggKKLLMMNNRRQQPPOOccddeeff::998877{{||}}~~""!!  - - zzyyxxww\]]^^__`99887766||}}~~!!  44332211(())**++SRQQPPOOqqrrsstt,,++**)) ~~}}CCDDEEFF--,,++**  !!~~}}||66778899ggffeeddNNOOPPQQOONNMMLLffgghhii778899::ffeeddccOOPPQQRRNNMMLLKKgghhiijj66554433vvuuttss`aabbccd5544332200//..--,,--..//NNMMLLKKuuvvwwxx((''&&%% - - !!""##$$||{{zzyyGGHHIIJJ))((''&& - - ""##$$%%{{zzyyxx::;;<<==ccbbaa``RRSSTTUUKKJJIIHHjjkkllmm;;<<==>>bbaa``__SSTTUUVVJJIIHHGGkkllmmnn221100//rrqqkkjjdeeffggh1100//..,,++**))00112233JJIIHHGGyyzz{{||$$##""!! - - %%&&''((xxwwvvuuKKLLMMNN%%$$##&&''(())wwvvuutt>>??@@AA__^^]]\\VVWWXXYYGGFFEEDDnnooppqq??@@AABB^^]]\\[[WWXXYYZZFFEEDDCCooppqqrr..--,,++ - -iihhggffhiijjkkl--,,++**((''&&%%44556677FFEEDDCC}}~~ ))**++,,ttssrrqqOOPPQQWW**++,,--ssrrqqppBBCCDDEE[[ZZYYXXZZ[[\\]]CCBBAA@@rrssttuu - -~~}}||{{CCDDEEFFZZYYXXWW[[\\]]^^BBAA@@??ssttuuvv**))(('' eeddccbbmnopqqrr))((''&& - - !!""##$$##""!!==>>??@@BBAA@@??--..//00ppoonnmmXXYYZZ[[..//0011oonnmmllFFGGHHIIWWVVUUTT^^__``aa??>>==<>==<<;;wwxxyyzz&&%%$$## aa``__^^ssttuuvv%%$$##"" - - $$%%&&'' AABBCCDD>>==<;:911223344llkkjjii\\]]^^__22334455kkjjiihhJJKKLLMMSSRRQQPPbbccddee;;::9988zz{{||}}vvuuttssKKLLMMNNRRQQPPOOccddeeff::998877{{||}}~~""!!  - - ]]\\[[ZZwwxxyyzz!!  (())**++EEFFGGHH87766554 ~~}}55667788hhggffee``aabbcc  !!~~}}||66778899ggffeeddNNOOPPQQOONNMMLLffgghhii77665544~~ - - rrqqponmOOPPQQRRNNMMLLKKgghhiijj66554433YYXXWWQQ{{||}}~~,,--..//IIJJKKLL43322110 - - !!""##$$||{{zzyy99::;;<>??@@``__^^]]hhiijjkk&&''(())wwvvuutt>>??@@AA__^^]]\\VVWWXXYYGGFFEEDDnnooppqq//..--,,hggffeedWWXXYYZZFFEEDDCCooppqqrr..--,,++$$%%&&''LLKKJJII~~44556677 QQWWXXYY,++**))())**++,,ttssrrqqAABBCCDD\\[[ZZYYqqrrsstt**++,,--ssrrqqppBBCCDDEE[[ZZYYXXZZ[[\\]]CCBBAA@@rrssttuu++**))((dccbbaa`[[\\]]^^BBAA@@??ssttuuvv**))(('' - -(())**++HHGGFFEE - - !!""##}}||{{zz8899::;; - - ZZ[[\\]](''&&%%$--..//00ppoonnmmEEFFGGHHXXWWVVUUuuvvwwxx - -..//0011oonnmmllFFGGHHIIWWVVUUTT^^__``aa??>>==<>==<<;;wwxxyyzz&&%%$$## ,,--..//DDCCBBAA - - $$%%&&''yyxxwwvv<<==>>?? - - ^^__``aa$##"! 11223344llkkjjiiIIJJKKLLTTSSRRQQyyzz{{|| 22334455kkjjiihhJJKKLLMMSSRRQQPPbbccddee;;::9988zz{{||}}##""!! ##$$\[[ZZYYXccddeeff::998877{{||}}~~""!!  - - 00112233@@??>>== (())**++uuttssrr@@AABBCC bbccddee ~~}}55667788hhggffeeMMNNOOPPPPOONNMM}}~~~~}}||66778899ggffeeddNNOOPPQQOONNMMLLffgghhii77665544~~%%&&''((XWWVUTSRgghhiijj665544334455667777665544,,--..//qqppoonnDDEEFFGGffgghhii - - !!""##$$||{{zzyy99::;;<>??@@3322110000112233mmllkkjjHHIIJJKK~~}}||{{jjkkqqrr %%&&''((xxwwvvuu==>>??@@``__^^]]UUVVWWXXHHGGFFEEwwvvuutt>>??@@AA__^^]]\\VVWWXXYYGGFFEEDDnnooppqq//..--,,--..//00MMLLKKJJooppqqrr..--,,++AABBCCDD//..--,,~~44556677iihhggffLLMMNNOOzzyyxxwwssttuuvv))**++,,ttssrrqqAABBCCDD\\[[ZZYYYYZZ[[\\DDCCBBAAssrrqqppBBCCDDEE[[ZZYYXXZZ[[\\]]CCBBAA@@rrssttuu++**))((11223344IIHHGGFFssttuuvv**))(('' - - !!""~~}}||{{EEFFGGHH++**))(( - - !!""##}}||{{zz8899::;;eeddccbbPPQQRRSS~~}}||{{zz8899::;;QQPPOONN - - !!""##$$||{{zzyy99::;;<>??MMLLKKJJ %%&&''((xxwwvvuu==>>??@@``__^^]]UUVVWWXXHHGGFFEEmmnnoopp00//..--12233445__^^]]\\VVWWXXYYGGFFEEDDnnooppqq//..--,,ZZ[[\\]]##""!! uuttssrr@@AABBCCIIHHGGFF))**++,,ttssrrqqAABBCCDD\\[[ZZYYYYZZ[[\\DDCCBBAAqqrrsstt,,++**))5667789:[[ZZYYXXZZ[[\\]]CCBBAA@@rrssttuu++**))(( ^^__``aaqqppoonnDDEEFFGGEEDDCCBB--..//00ppoonnmmEEFFGGHHXXWWVVUU]]^^__``@@??>>==uuvvwwxx((''&&%%;<==>>??WWVVUUTT^^__``aa??>>==<>11223344llkkjjiiIIJJKKLLTTSSRRQQaabbccdd<<;;::99yyzz{{||$$##""!!@@AABBCCSSRRQQPPbbccddee;;::9988zz{{||}}##""!! - - ffgghhiiiihhggffLLMMNNOO==776655 ~~}}55667788hhggffeeMMNNOOPPPPOONNMMeeffgghh88776655}}~~ DDEEFFGGOONNMMLLffgghhii77665544~~~~}}||{{jjkkqqrreeddccbbPPQQRRSS44332211!!""##$$||{{zzyy99::;;<>??@@``__^^]]UUVVWWXXHHGGFFEEmmnnoopp00//..--LLMMNNOOGGFFEEDDnnooppqq//..--,,vvuuttsswwxxyyzz - - ]]\\[[ZZXXYYZZ[[,,++**))))**++,,ttssrrqqAABBCCDD\\[[ZZYYYYZZ[[\\DDCCBBAAqqrrsstt,,++**))PPQQRSTUCCBBAA@@rrssttuu++**))((  !!rrqqkkjj{{||}}~~ - - YYXXWWVV\\]]^^__((''&&%%--..//00ppoonnmmEEFFGGHHXXWWVVUU]]^^__``@@??>>==uuvvwwxx((''&&%% ~~}}VWWXXYYZ??>>==<>??@@``__^^]]UUVVWWXXHHGGFFEEmmnnoopp00//..--kkjjiihhfgghhiij//..--,,22334455YYXXWWQQ !!EEDDCCBBppqqrrss ~~}}AABBCCDD\\[[ZZYYYYZZ[[\\DDCCBBAAqqrrsstt,,++**)) - - ggffeeddjkklmnop++**))((  !!~~}}||66778899PPOONNMM""##$$%%AA@@??>>ttuuvvww - - ||{{zzyyEEFFGGHHXXWWVVUU]]^^__``@@??>>==uuvvwwxx((''&&%% ccbbaa``qqrrsstt''&&%%$$ - - ""##$$%%{{zzyyxx::;;<<==LLKKJJII&&''(())==<<;;::xxyyzz{{xxwwvvuuIIJJKKLLTTSSRRQQaabbccdd<<;;::99yyzz{{||$$##""!! - - __^^]]\\uuvvwwxx##""!! - - &&''(())wwvvuutt>>??@@AAHHGGFFEE**++,,--99887766||}}~~ ttssrrqqMMNNOOPPPPOONNMMeeffgghh88776655}}~~ [[ZZYYXXyyzz{{||**++,,--ssrrqqppBBCCDDEEDDCCBBAA..//001155443322 - - ponmlkkjQQRRSSTTLLKKJJIIiijjkkll44332211WWQQPPOO}}~~..//0011oonnmmllFFGGHHII@@??>>==223344551100//..jiihhggfUUVVWWXXHHGGFFEEmmnnoopp00//..--##$$%%NNMMLLKK22334455kkjjiihhJJKKLLMM7766554466778899--,,++**feeddccbYYZZ[[\\DDCCBBAAqqrrsstt,,++**))&&''(())JJIIHHGG  !!~~}}||66778899ggffeeddNNOOPPQQ33221100::;;<<==))((''&&baa``__^]]^^__``@@??>>==uuvvwwxx((''&&%% - - **++,,--FFEEDDCC - - ""##$$%%{{zzyyxx::;;<<==ccbbaa``RRSSTTUU//..--,,>>??@@AA%%$$##""^]]\\[[Zaabbccdd<<;;::99yyzz{{||$$##""!! - - ..//0011BBAA@@?? - - &&''(())wwvvuutt>>??@@AA__^^]]\\VVWWXXYY++**))((BBCCDDEE!! ##$$%%&&ZYYXXWWVeeffgghh88776655}}~~ 22334455>>==7766**++,,--ssrrqqppBBCCDDEE[[ZZYYXXZZ[[\\]]''&&%%$$~~}}||FFGGHHII''(())**UTSRQQPPiijjkkll443322116677==>>55443322..//0011oonnmmllFFGGHHIIWWVVUUTT^^__``aa##{{zzyyxxJJKKLLMM++,,--..OONNMMLLmmnnoopp00//..--??@@AABB1100//..22334455kkjjiihhJJKKLLMMSSRRQQPPbbccddeewwvvuuttNNOOPPQQ//001122KKJJIIHHqqrrsstt,,++**)) ~~}}CCDDEEFF--,,++**  !!~~}}||66778899ggffeeddNNOOPPQQOONNMMLLffgghhiissrrqqppRRSSTTUU33445566GGFFEEDDuuvvwwxx((''&&%% - - !!""##$$||{{zzyyGGHHIIJJ))((''&& - - ""##$$%%{{zzyyxx::;;<<==ccbbaa``RRSSTTUUKKJJIIHHjjkkllmmoonnmmllVVWWXXYY - -77==>>??CCBBAA@@yyzz{{||$$##""!! - - %%&&''((xxwwvvuuKKLLMMNN%%$$##&&''(())wwvvuutt>>??@@AA__^^]]\\VVWWXXYYGGFFEEDDnnooppqq kkjjiihhZZ[[\\]] @@AABBCC??>>==<;}}~~ ))**++,,ttssrrqqOOPPQQWW**++,,--ssrrqqppBBCCDDEE[[ZZYYXXZZ[[\\]]CCBBAA@@rrssttuu - - - -ggffeedd^^__``aaDDEEFFGG:9877665--..//00ppoonnmmXXYYZZ[[..//0011oonnmmllFFGGHHIIWWVVUUTT^^__``aa??>>==<>??@@``__^^]]hhiijjkk&&''(())wwvvuutt>>??@@AA__^^]]\\VVWWXXYYGGFFEEDDnnooppqq//..--,,##SSRRQQPPrrssttuu]]^^__``%$$##"! ))**++,,ttssrrqqAABBCCDD\\[[ZZYYqqrrsstt**++,,--ssrrqqppBBCCDDEE[[ZZYYXXZZ[[\\]]CCBBAA@@rrssttuu++**))(($$%%&&''OONNMMLLvvwwxxyy~~}}||aabbccdd--..//00ppoonnmmEEFFGGHHXXWWVVUUuuvvwwxx - -..//0011oonnmmllFFGGHHIIWWVVUUTT^^__``aa??>>==<>==<<$$%%&&''jjiihhggvvwwxxyy %%&&''((xxwwvvuu==>>??@@``__^^]]UUVVWWXXHHGGFFEEwwvvuutt>>??@@AA__^^]]\\VVWWXXYYGGFFEEDDnnooppqq//..--,,==>>??@@;;::9988(())**++ffeeddcczz{{||}} - - ))**++,,ttssrrqqAABBCCDD\\[[ZZYYYYZZ[[\\DDCCBBAAssrrqqppBBCCDDEE[[ZZYYXXZZ[[\\]]CCBBAA@@rrssttuu++**))((AABBCCDD77665544,,--..//bbaa``__~~--..//00ppoonnmmEEFFGGHHXXWWVVUU]]^^__``@@??>>== !"##$$%oonnmmllFFGGHHIIWWVVUUTT^^__``aa??>>==<=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:978787878878787776565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopoponmnmnmnmnmnmnmnmklkkkkkkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSRQRQQRQRQRQRPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABA@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:978787878777878786565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopoponmnmnmnmnmnmnmnmlklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSRQRQQQQQQRQRQRQRPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:978787878787878786565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqpopopopoponmnmnmnmnmnmnmnmlklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQQRQRQRQQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCBABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:978787878787878786565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqpopopopopopopoponmnmnmnmnmnmnmlklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[ZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQQQQQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:978787878787878786565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutststststststsrqrqrqrqrqpopopopopopopoponmnmnmnmlklklkkklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:977777787787878786565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmkkklklkllklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:987878787787877776565656565656565434343434343434321212121212121210/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvutststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmklklklkllkkkkkkljijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:987878787778787876565656565656565434343434343434321212121212121210/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmklklklklklklklkljijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSRQQQQQQRRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;:9:9:9:9:9878787878787878765656565656565654343434343434343212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmklklklklklklklkljijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSQRQRQRQRRQRQRQQQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;:9:9:9:9:9:9:9:9878787878787878765656565656565654343434343434343212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmklklklklklklklkljijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababa`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSQRQRQRQRQQQRQRQRPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;:9:9:9:9:9:9:9:9878787878787878765656565656565654343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmklklkkkkklklklkljijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSQRQRQRQRQRQRQRQRPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;:9:9:9:9:9:9:9:9777778788787878765656565656565654343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmkklklklkklklklkljijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcbabababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSTSTSTSTSQRQRQRQRQRQRQRQRPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;:9:9:9:9:9:9:9:9787878788787777765656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{zyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmlklklklkkkkkkklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSTSTSTSTSQRQRQRQRQRQRQRQRPOPOPOPOPOPOPOPONMNMNMNMNMLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;:9:9:9:9:9:9:9:9787878788787878765656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#~}~}~}~}~}~}~}~}|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefedcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSTSTSTSTSQQQQQQRQQRQRQRQRPOPOPOPOPOPOPOPONMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;:9:9:9:9:9:9:9:9787878786565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#~}~}~}~}~}~}~}|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopoponmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQQRQRQQQQPOPOPOPOPONMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;:9:9:9:9:9:9:9:9787878786565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghgfefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQQQRQRQRQPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;:9:9:9:9:9:9:9:9787878776565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopoponmnmnmnmnmnmnmnmlklkkkkklklklklkjijijijijijijijihghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;:9:9:9:9:9:9:9:9777787876565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopoponmnmnmnmnmnmnmnmklklklkllklklklkjijijijijijihghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;:9:9:9:9:9:9:9:9878787876565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopoponmnmnmnmnmnmnmnmklklklklkkkklklkjijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=<;<;<;<;<;<;<;:9:9:9:9:9:9:9:9878787876565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopoponmnmnmnmnmnmnmnmklklklkllklkjijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSTSTSTSTSQQQQQRQRPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9878787878787876565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopoponmnmnmnmnmnmnmnmklklklkljijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSTSTSTSTSQRQRQRQRPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:987777778878787876565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!"!"!"!"!         - - - - - - - - "!"!"!"!"!"!"!"!            - - - - - - - - "!"!"!"!"!"!"!"!            - - - - - - - - "!"!"!"!"!"!"!"!            - - - - - - - - "!"!"!"!"!"!"!"!            - - - - - - - - "!"!"!"!"!"!"!"!            - - - - - - - - "!"!"!"!"!"!"!"!            - - - - - - - - "!"!"!"!"!"!"!"!            - - - - - - - - "!"!"!"!"!"!"!"!            - - - - - - - - "!"!"!"!"!"!              - - - - - - - - "!"!"!"!                - - - - - - - - "!"!"!"!                - - - - - - - - "!"!"!"!                - - - - - - - - "!"!"!"!                - - - - - - - - "!"!"!"!                - - - - - - - - "!"!"!"!                - - - - - - - - "!"!"!"!                - - - - - - - "!"!"!"!                - - - - "!"!"!"!                - - - - - "!"!"!"!                - - - - - - - - "!"!"!"!               - - - - - - - - "!"!"!"!        - - - - - - - - PPOONNMMqqrrsstt~~}}||{{ffgghhii~~}}||EEFFGGHH\\[[ZZYYUUVVWWXXLLKKJJII eeffgghh<<;;::99 uuvvwwxx,,++**))--..//00ttssrrqqKKLLMMNN))((''&&@@AABBCCWWVVUUTTZZ[[\\]]GGFFEEDDjjkkllmm77665544""##$$%%zz{{||}}~~}}||''&&%%$$22334455oonnmmllBBCCDDEEKKJJIIHH%%&&''((\[[ZZYYX - -__``aabbBBAA@@??ooppqqrr221100//''(())**zzyyxxww""!! 778899::jjiihhggGGHHIIJJZZYYXXWWjjkkqqrrvvuuttss - - \]]^^__`==<<;;::ttuuvvww--,,++**,,--..//uuttssrr<<==>>??eeddccbb - -LLMMNNOOUUTTSSRR\\]]^^__,,++**))DDEEFFGG??>>==<;!!""##$$yyzz{{||~~}}((''&&%%11223344ppoonnmmAABBCCDD``__^^]]QQRRSSTTPPOONNMM - - aabbccddLLKKJJII uuvvwwxxzzyyxxww jjkkqqrr{{zzyyxxIIJJKKLLXXWWVVUUYYZZ[[\\HHGGFFEEiijjkkll88776655!!""##$$yyzz{{||~~}}((''&&%%11223344ppoonnmmOOPPQQWW%%$$##DDEEFFGGSSRRQQPP ^^__``aaCCBBAA@@nnooppqq33221100&&''(())~~{{zzyyxx##""!! 66778899kkjjiihhFFGGHHIIGGFFEEDD))**++,,XWWVUTSR ccddeeff>>==<<;;ssttuuvv..--,,++++,,--..vvuuttss;;<<==>>ffeeddcc KKLLMMNNVVUUTTSS - -ssttuuvvrrqqkkjj`aabbccd99887766 !!""##xxyyzz{{~~))((''&&00112233qqppoonn@@AABBCCaa``__^^ PPQQRRSSQQPPOONN - - ``aabbcc((''&&%%HHIIJJKK:9877665%%&&''((}}~~||{{zzyy$$##""!!55667788llkkjjiiEEFFGGHH\\[[ZZYYUUVVWWXXLLKKJJII eeffgghhHHGGFFEE!!""##$$yyzz{{||vvuuttss - - - -ssttuuvvwwvvuuttMMNNOOPPTTSSRRQQ]]^^__``DDCCBBAAmmnnoopp44332211%%&&''((}}~~||{{zzyy$$##""!!55667788llkkjjiiXXYYZZ[[HHIIJJKKOONNMMLL - - bbccddee??>>==<<rrssttuu//..--,,**++,,--wwvvuutt::;;<<==ggffeedd JJKKLLMMCCBBAA@@--..//00QQPPOONNgghhiijj::998877 !!""wwxxyyzz**))((''//001122rrqqppoo??@@AABBbbaa``__ - - OOPPQQRRRRQQPPOO wwxxyyzziihhggffdeeffggh55443322$$%%&&''||}}~~}}||{{zz%%$$##""44556677mmllkkjjDDEEFFGG]]\\[[ZZTTUUVVWWMMLLKKJJ ddeeffgg$$##LLMMNNOO54433221))**++,,xxwwvvuu 99::;;<>==qqrrsstt00//..--))**++,,xxwwvvuu 99::;;<>??@@AAccbbaa`` - - NNOOPPQQ??>>==7711223344MMLLKKJJkkllmmnn66554433##$$%%&&{{||}}~~~~}}||{{&&%%$$##33445566nnmmllkkCCDDEEFF^^]]\\[[SSTTUUVVNNMMLLKK{{||}}~~eeddccbb - - hiijjkkl1100//..(())**++yyxxwwvv!! 8899::;;iihhggffHHIIJJKKYYXXWWVVXXYYZZ[[IIHHGGFFhhiijjkkPPQQWWXX100//..---..//00ttssrrqq==>>??@@ddccbbaa - - MMNNOOPPTTSSRRQQ]]^^__``DDCCBBAAmmnnoopp@@??>>==))**++,,iihhggff{{||}}~~nmlkkjji - -UUVVWWXXLLKKJJII eeffgghh<<;;::99 uuvvwwxx,,++**))--..//00ttssrrqq==>>??@@ddccbbaa - - ``aabbcc~~}}PPQQRSTUGGFFEEDDjjkkllmm77665544""##$$%%zz{{||}}~~}}||''&&%%$$22334455oonnmmllBBCCDDEE__^^]]\\RRSSTTUU66554433556677==IIHHGGFFooppqqrr221100//''(())**zzyyxxww""!! 778899::jjiihhggGGHHIIJJZZYYXXWWWWXXYYZZJJIIHHGGaa``__^^ mnopqqrr--,,++**,,--..//uuttssrr<<==>>??eeddccbb - -LLMMNNOOUUTTSSRR\\]]^^__EEDDCCBBllmmnnooYYZZ[[\\-,,++**)11223344ppoonnmmAABBCCDD``__^^]]QQRRSSTTPPOONNMM - - aabbccdd@@??>>==qqrrsstt@@??>>==<<;;::99--..//00eeddccbbihhggffe YYZZ[[\\HHGGFFEEiijjkkll88776655!!""##$$yyzz{{||~~}}((''&&%%11223344ppoonnmmAABBCCDD``__^^]]ddeeffgg||{{zzyy VWWXXYYZCCBBAA@@nnooppqq33221100&&''(())~~{{zzyyxx##""!! 66778899kkjjiihhFFGGHHII[[ZZYYXXVVWWXXYY221100//>>??@@AAEEDDCCBBssttuuvv..--,,++++,,--..vvuuttss;;<<==>>ffeeddcc KKLLMMNNVVUUTTSS[[\\]]^^FFEEDDCC]]\\[[ZZssttuuvv~~))((''&&00112233qqppoonn@@AABBCCaa``__^^ PPQQRRSSQQPPOONN - - ``aabbccAA@@??>>ppqqrrss~~}}||]]^^__``)((''&&%55667788llkkjjiiEEFFGGHH\\[[ZZYYUUVVWWXXLLKKJJII eeffgghh<<;;::99 uuvvwwxx<<;;::998877665511223344aa``__^^eddccbba]]^^__``DDCCBBAAmmnnoopp44332211%%&&''((}}~~||{{zzyy$$##""!!55667788llkkjjiiEEFFGGHH\\[[ZZYYhhiijjkkxxwwvvuu - - Z[[\\]]^??>>==<<rrssttuu//..--,,**++,,--wwvvuutt::;;<<==ggffeedd JJKKLLMMWWVVUUTTZZ[[\\]]..--,,++BBCCDDEEAA@@??>> !!""wwxxyyzz**))((''//001122rrqqppoo??@@AABBbbaa``__ - - OOPPQQRRRRQQPPOO - -__``aabbBBAA@@??##YYXXWWQQwwxxyyzz}}||{{zz%%$$##""44556677mmllkkjjDDEEFFGG]]\\[[ZZTTUUVVWWMMLLKKJJ ddeeffgg==<<;;::ttuuvvww{{zzyyxx aabbccdd%$$##"! 99::;;<>==qqrrsstt00//..--))**++,,xxwwvvuu 99::;;<>??@@AAccbbaa`` - - NNOOPPQQSSRRQQPP ^^__``aa**))((''FFGGHHII==<;:987##$$%%&&{{||}}~~~~}}||{{&&%%$$##33445566nnmmllkkCCDDEEFF^^]]\\[[SSTTUUVVNNMMLLKK ccddeeff>>==<<;;$$%%&&''PPOONNMM{{||}}~~yyxxwwvv!! 8899::;;iihhggffHHIIJJKKYYXXWWVVXXYYZZ[[IIHHGGFFhhiijjkk99887766 !!""##xxyyzz{{wwvvuutt - - eeffgghh~~}}==>>??@@ddccbbaa - - MMNNOOPPTTSSRRQQ]]^^__``DDCCBBAAmmnnoopp44332211%%&&''((}}~~||{{zzyy4433221100//..--99::;;<>??@@ddccbbaa - - MMNNOOPPTTSSRRQQ - - uuvvwwxxkkjjiihhbccddeef77665544""##$$%%zz{{||}}~~}}||''&&%%$$22334455oonnmmllBBCCDDEE__^^]]\\RRSSTTUUOONNMMLL - - bbccddee&&%%$$##JJKKLLMM76655443''(())**zzyyxxww""!! 778899::jjiihhggGGHHIIJJZZYYXXWWWWXXYYZZJJIIHHGGgghhiijj::998877(())**++LLKKJJII !"#uuttssrr<<==>>??eeddccbb - -LLMMNNOOUUTTSSRR\\]]^^__EEDDCCBBllmmnnoo55443322$$%%&&''||}}~~ssrrqqkkiijjkkqq||{{zzyyAABBCCDD``__^^]]QQRRSSTTPPOONNMM - - aabbccdd@@??>>==qqrrsstt00//..--))**++,,xxwwvvuu00//..--,,++**))==>>??@@PPOONNMM(())**++YXXWWVUTiijjkkll88776655!!""##$$yyzz{{||~~}}((''&&%%11223344ppoonnmmAABBCCDD``__^^]]QQRRSSTTPPOONNMM yyzz{{||ggffeedd - -fgghhiij33221100&&''(())~~{{zzyyxx##""!! 66778899kkjjiihhFFGGHHII[[ZZYYXXVVWWXXYYKKJJIIHHffgghhiiNNOOPPQQ3221100/++,,--..vvuuttss;;<<==>>ffeeddcc KKLLMMNNVVUUTTSS[[\\]]^^FFEEDDCCkkllmmnn66554433,,--..//HHGGFFEE#$$%%&&'qqppoonn@@AABBCCaa``__^^ PPQQRRSSQQPPOONN - - ``aabbccAA@@??>>ppqqrrss1100//..(())**++jjiihhgg rrssttuuxxwwvvuuEEFFGGHH\\[[ZZYYUUVVWWXXLLKKJJII eeffgghh<<;;::99 uuvvwwxx,,++**))--..//00ttssrrqq,,++**))~~}}((''&&%%AABBCCDDLLKKJJII,,--..//SRQQPPOOmmnnoopp44332211%%&&''((}}~~||{{zzyy$$##""!!55667788llkkjjiiEEFFGGHH\\[[ZZYYUUVVWWXXLLKKJJII}}~~ccbbaa`` jkklmnop//..--,,**++,,--wwvvuutt::;;<<==ggffeedd JJKKLLMMWWVVUUTTZZ[[\\]]GGFFEEDDjjkkllmmWWXXYYZZ/..--,,+//001122rrqqppoo??@@AABBbbaa``__ - - OOPPQQRRRRQQPPOO - -__``aabbBBAA@@??ooppqqrr221100//00112233DDCCBBAA'(())**+mmllkkjjDDEEFFGG]]\\[[ZZTTUUVVWWMMLLKKJJ ddeeffgg==<<;;::ttuuvvww--,,++**,,--..//ffeeddcc - - vvwwxxyyttssrrqqIIJJKKLLXXWWVVUUYYZZ[[\\HHGGFFEEiijjkkll88776655!!""##$$yyzz{{||~~}}((''&&%%11223344ppoonnmm((''&&%%||{{zzyy$$##""!!EEFFGGHHHHGGFFEE00112233NNMMLLKKqqrrsstt00//..--))**++,,xxwwvvuu 99::;;<>??@@AAccbbaa`` - - NNOOPPQQSSRRQQPP ^^__``aaCCBBAA@@nnooppqq~~[[\\]]^^+**))(('33445566nnmmllkkCCDDEEFF^^]]\\[[SSTTUUVVNNMMLLKK ccddeeff>>==<<;;ssttuuvv..--,,++44556677@@??>>==+,,--../iihhggffHHIIJJKKYYXXWWVVXXYYZZ[[IIHHGGFFhhiijjkk99887766 !!""##xxyyzz{{~~))((''&&00112233bbaa``__zz{{||}}ponmlkkj MMNNOOPPTTSSRRQQ]]^^__``DDCCBBAAmmnnoopp44332211%%&&''((}}~~||{{zzyy$$##""!!55667788llkkjjii$$##""!!xxwwvvuu IIJJKKLLDDCCBBAA44556677JJIIHHGG uuvvwwxx,,++**))--..//00ttssrrqq==>>??@@ddccbbaa - - MMNNOOPPTTSSRRQQ]]^^__``DDCCBBAA[[ZZYYXXuuvvwwxx~~}}||''&&%%$$22334455oonnmmllBBCCDDEE__^^]]\\RRSSTTUUOONNMMLL - - bbccddee??>>==<<rrssttuu}}||{{zz__``aabb'&&%%$$#778899::jjiihhggGGHHIIJJZZYYXXWWWWXXYYZZJJIIHHGGgghhiijj::998877 !!""wwxxyyzz**))((''==>>??@@77665544/0011223eeddccbb - -LLMMNNOOUUTTSSRR\\]]^^__EEDDCCBBllmmnnoo55443322$$%%&&''||}}~~}}||{{zz%%$$##""44556677^^]]\\[[~~jiihhggf - - QQRRSSTTPPOONNMM - - aabbccdd@@??>>==qqrrsstt00//..--))**++,,xxwwvvuu 99::;;<>====>>??@@FFEEDDCC!!""##$$yyzz{{||~~}}((''&&%%11223344ppoonnmmAABBCCDD``__^^]]QQRRSSTTPPOONNMM - - aabbccdd@@??>>==##$$%%WWQQPPOOyyzz{{||{{zzyyxx##""!! 66778899kkjjiihhFFGGHHII[[ZZYYXXVVWWXXYYKKJJIIHHffgghhii;;::9988 !!vvwwxxyyyyxxwwvv - -ccddeeff#"! ;;<<==>>ffeeddcc KKLLMMNNVVUUTTSS[[\\]]^^FFEEDDCCkkllmmnn66554433##$$%%&&{{||}}~~~~}}||{{&&%%$$##AABBCCDD3322110034455667aa``__^^ PPQQRRSSQQPPOONN - - ``aabbccAA@@??>>ppqqrrss1100//..(())**++yyxxwwvv!! 8899::;;ZZYYXXWWfeeddccbUUVVWWXXLLKKJJII eeffgghh<<;;::99 uuvvwwxx,,++**))--..//00ttssrrqq==>>??@@ddccbbaappoonnmmQQRRSSTT77665544AABBCCDDBBAA@@??%%&&''((}}~~||{{zzyy$$##""!!55667788llkkjjiiEEFFGGHH\\[[ZZYYUUVVWWXXLLKKJJII eeffgghh<<;;::99&&''(())NNMMLLKK}}~~wwvvuutt::;;<<==ggffeedd JJKKLLMMWWVVUUTTZZ[[\\]]GGFFEEDDjjkkllmm77665544""##$$%%zz{{||}}uuttssrr gghhiijj~~}}||{{??@@AABBbbaa``__ - - OOPPQQRRRRQQPPOO - -__``aabbBBAA@@??ooppqqrr221100//''(())**zzyyxxww""!! EEFFGGHH//..--,,789:;<==]]\\[[ZZTTUUVVWWMMLLKKJJ ddeeffgg==<<;;::ttuuvvww--,,++**,,--..//uuttssrr<<==>>??QQPPOONNbaa``__^YYZZ[[\\HHGGFFEEiijjkkll88776655!!""##$$yyzz{{||~~}}((''&&%%11223344ppoonnmmAABBCCDD``__^^]]llkkjjiiUUVVWWXX33221100EEFFGGHH>>==<;:9))**++,,xxwwvvuu 99::;;<>??@@AAccbbaa`` - - NNOOPPQQSSRRQQPP ^^__``aaCCBBAA@@nnooppqq33221100&&''(())~~qqkkjjiikkqqrrsszzyyxxwwCCDDEEFF^^]]\\[[SSTTUUVVNNMMLLKK ccddeeff>>==<<;;ssttuuvv..--,,++++,,--..vvuuttssIIJJKKLL++**))((>>??@@AAYYXXWWVVXXYYZZ[[IIHHGGFFhhiijjkk99887766 !!""##xxyyzz{{~~))((''&&00112233qqppoonn@@AABBCCMMLLKKJJ##$$%%&&^]]\\[[Z]]^^__``DDCCBBAAmmnnoopp44332211%%&&''((}}~~||{{zzyy$$##""!!55667788llkkjjiiEEFFGGHH\\[[ZZYYhhggffee YYZZ[[\\//..--,,IIJJKKLL87766554--..//00ttssrrqq==>>??@@ddccbbaa - - MMNNOOPPTTSSRRQQ]]^^__``DDCCBBAAmmnnoopp44332211..//0011FFEEDDCC%&&''(()oonnmmllBBCCDDEE__^^]]\\RRSSTTUUOONNMMLL - - bbccddee??>>==<<rrssttuu//..--,,**++,,--hhggffee - - ttuuvvwwvvuuttssGGHHIIJJZZYYXXWWWWXXYYZZJJIIHHGGgghhiijj::998877 !!""wwxxyyzz**))((''//001122rrqqppooMMNNOOPP''&&%%$$BBCCDDEEUUTTSSRR\\]]^^__EEDDCCBBllmmnnoo55443322$$%%&&''||}}~~}}||{{zz%%$$##""44556677mmllkkjjDDEEFFGGIIHHGGFF''(())**ZYYXXWWV - - aabbccdd@@??>>==qqrrsstt00//..--))**++,,xxwwvvuu 99::;;<>==qqrrsstt00//..--22334455BBAA@@??)**++,,-kkjjiihhFFGGHHII[[ZZYYXXVVWWXXYYKKJJIIHHffgghhii;;::9988 !!vvwwxxyy++**))((..//0011ddccbbaa xxyyzz{{rrqqponm KKLLMMNNVVUUTTSS[[\\]]^^FFEEDDCCkkllmmnn66554433##$$%%&&{{||}}~~~~}}||{{&&%%$$##33445566nnmmllkkQQWWXXYY##FFGGHHIIQQPPOONN - - ``aabbccAA@@??>>ppqqrrss1100//..(())**++yyxxwwvv!! 8899::;;iihhggffHHIIJJKKEEDDCCBB++,,--..UTSRQQPP eeffgghh<<;;::99 uuvvwwxx,,++**))--..//00ttssrrqq==>>??@@ddccbbaa - - MMNNOOPPTTSSRRQQ - - ``__^^]] - - aabbccdd''&&%%$$QQWWXXYY0//..--,55667788llkkjjiiEEFFGGHH\\[[ZZYYUUVVWWXXLLKKJJII eeffgghh<<;;::99 uuvvwwxx,,++**))6677==>>>>==7766-..//001ggffeedd JJKKLLMMWWVVUUTTZZ[[\\]]GGFFEEDDjjkkllmm77665544""##$$%%zz{{||}}~~}}||''&&%%$$22334455``__^^]]||}}~~lkkjjiih - - OOPPQQRRRRQQPPOO - -__``aabbBBAA@@??ooppqqrr221100//''(())**zzyyxxww""!! 778899::jjiihhggZZ[[\\]]JJKKLLMMMMLLKKJJ ddeeffgg==<<;;::ttuuvvww--,,++**,,--..//uuttssrr<<==>>??eeddccbb - -LLMMNNOOAA@@??>>//001122OONNMMLLiijjkkll88776655!!""##$$yyzz{{||~~}}((''&&%%11223344ppoonnmmAABBCCDD``__^^]]QQRRSSTTPPOONNMM\\[[ZZYY eeffgghh##ZZ[[\\]],++**))(99::;;<>==<<;;ssttuuvv..--,,++++,,--..vvuuttss;;<<==>>ffeeddcc ^^__``aaNNOOPPQQIIHHGGFFhhiijjkk99887766 !!""##xxyyzz{{~~))((''&&00112233qqppoonn@@AABBCCaa``__^^ PPQQRRSS==77665533445566KKJJIIHHmmnnoopp44332211%%&&''((}}~~||{{zzyy$$##""!!55667788llkkjjiiEEFFGGHH\\[[ZZYYUUVVWWXXLLKKJJIIXXWWVVUUiijjkkll^^__``aa(''&&%%$==>>??@@ddccbbaa - - MMNNOOPPTTSSRRQQ]]^^__``DDCCBBAAmmnnoopp44332211%%&&''((}}~~||{{zzyy$$##""!!CCDDEEFF1100//..5667789:__^^]]\\RRSSTTUUOONNMMLL - - bbccddee??>>==<<rrssttuu//..--,,**++,,--wwvvuutt::;;<<==XXWWQQPPdccbbaa`WWXXYYZZJJIIHHGGgghhiijj::998877 !!""wwxxyyzz**))((''//001122rrqqppoo??@@AABBbbaa``__ - - bbccddee~~}}||{{RSTUVWWXEEDDCCBBllmmnnoo55443322$$%%&&''||}}~~}}||{{zz%%$$##""44556677mmllkkjjDDEEFFGG]]\\[[ZZTTUUVVWW4433221177==>>??GGFFEEDDqqrrsstt00//..--))**++,,xxwwvvuu 99::;;<>==qqrrsstt00//..--))**++,,xxwwvvuu GGHHIIJJ--,,++**;<==>>??[[ZZYYXXVVWWXXYYKKJJIIHHffgghhii;;::9988 !!vvwwxxyy++**))((..//0011ssrrqqpp>>??@@AAOONNMMLL##$$`__^^]]\[[\\]]^^FFEEDDCCkkllmmnn66554433##$$%%&&{{||}}~~~~}}||{{&&%%$$##33445566nnmmllkkCCDDEEFF^^]]\\[[ffgghhiizzyyxxww XYYZZ[[\AA@@??>>ppqqrrss1100//..(())**++yyxxwwvv!! 8899::;;iihhggffHHIIJJKKYYXXWWVVXXYYZZ[[00//..--@@AABBCCCCBBAA@@ uuvvwwxx,,++**))--..//00ttssrrqq==>>??@@ddccbbaa - - MMNNOOPPTTSSRRQQ]]^^__``DDCCBBAA - - yyzz{{||ggffeedd - -fgghhiij33221100&&''(())~~{{zzyyxx##""!! 66778899kkjjiihhFFGGHHII[[ZZYYXXVVWWXXYYKKJJIIHHffgghhii^^__``aa{{zzyyxx##""!! FFGGHHII}}~~ccbbaa`` jkklmnop//..--,,**++,,--wwvvuutt::;;<<==ggffeedd JJKKLLMMWWVVUUTTZZ[[\\]]GGFFEEDDjjkkllmmbbccddeewwvvuuttJJKKLLMM__^^]]\\qqrrsstt++**))((..//0011ssrrqqpp>>??@@AAccbbaa`` - - NNOOPPQQSSRRQQPP ^^__``aaCCBBAA@@nnooppqq~~}}||{{ffgghhiissrrqqppNNOOPPQQ[[ZZYYXXuuvvwwxx~~}}||''&&%%$$22334455oonnmmllBBCCDDEE__^^]]\\RRSSTTUUOONNMMLL - - bbccddee??>>==<<rrssttuuzzyyxxww jjkkqqrroonnmmllRRSSTTUU##$$%%WWQQPPOOyyzz{{||{{zzyyxx##""!! 66778899kkjjiihhFFGGHHII[[ZZYYXXVVWWXXYYKKJJIIHHffgghhii;;::9988 !!vvwwxxyyvvuuttss - - - -ssttuuvvkkjjiihhVVWWXXYY&&''(())NNMMLLKK}}~~wwvvuutt::;;<<==ggffeedd JJKKLLMMWWVVUUTTZZ[[\\]]GGFFEEDDjjkkllmm77665544""##$$%%zz{{||}}rrqqkkjj wwxxyyzzggffeedd ZZ[[\\]]**++,,--JJIIHHGG !"##$$%ssrrqqpp>>??@@AAccbbaa`` - - NNOOPPQQSSRRQQPP ^^__``aaCCBBAA@@nnooppqq33221100&&''(())~~iihhggff{{||}}~~ccbbaa`` - - ^^__``aa..//0011FFEEDDCC%&&''(()oonnmmllBBCCDDEE__^^]]\\RRSSTTUUOONNMMLL - - bbccddee??>>==<<rrssttuu//..--,,**++,,--eeddccbb__^^]]\\ - - bbccddee22334455BBAA@@??)**++,,-kkjjiihhFFGGHHII[[ZZYYXXVVWWXXYYKKJJIIHHffgghhii;;::9988 !!vvwwxxyy++**))((..//0011aa``__^^[[ZZYYXXffgghhii6677==>>>>==7766-..//001ggffeedd JJKKLLMMWWVVUUTTZZ[[\\]]GGFFEEDDjjkkllmm77665544""##$$%%zz{{||}}~~}}||''&&%%$$22334455]]\\[[ZZ##WWVVUUTTjjkkllmm??@@AABB5544332212233445ccbbaa`` - - NNOOPPQQSSRRQQPP ^^__``aaCCBBAA@@nnooppqq33221100&&''(())~~{{zzyyxx##""!! 66778899YYXXWWQQ$$%%&&''SSRRQQPPnnooppqqCCDDEEFF1100//..5667789:__^^]]\\RRSSTTUUOONNMMLL - - bbccddee??>>==<<rrssttuu//..--,,**++,,--wwvvuutt::;;<<==PPOONNMM(())**++OONNMMLLrrssttuuGGHHIIJJ--,,++**;<==>>??[[ZZYYXXVVWWXXYYKKJJIIHHffgghhii;;::9988 !!vvwwxxyy++**))((..//0011ssrrqqpp>>??@@AALLKKJJII,,--..//KKJJIIHH !!vvwwxxyyKKLLMMNN))((''&&@@AABBCCWWVVUUTTZZ[[\\]]GGFFEEDDjjkkllmm77665544""##$$%%zz{{||}}~~}}||''&&%%$$22334455oonnmmllBBCCDDEEHHGGFFEE00112233GGFFEEDD""##$$%%zz{{||}}OOPPQQWW%%$$##DDEEFFGGSSRRQQPP ^^__``aaCCBBAA@@nnooppqq33221100&&''(())~~{{zzyyxx##""!! 66778899kkjjiihhFFGGHHIIDDCCBBAA44556677CCBBAA@@&&''(())~~XXYYZZ[[HHIIJJKKOONNMMLL - - bbccddee??>>==<<rrssttuu//..--,,**++,,--wwvvuutt::;;<<==ggffeedd JJKKLLMM@@??>>====>>??@@??>>==<<**++,,--\\]]^^__LLMMNNOOKKJJIIHHffgghhii;;::9988 !!vvwwxxyy++**))((..//0011ssrrqqpp>>??@@AAccbbaa`` - - NNOOPPQQ77665544AABBCCDD;;::9988..//0011``aabbcc~~}}PPQQRSTUGGFFEEDDjjkkllmm77665544""##$$%%zz{{||}}~~}}||''&&%%$$22334455oonnmmllBBCCDDEE__^^]]\\RRSSTTUU33221100EEFFGGHH7766554422334455ddeeffgg||{{zzyy VWWXXYYZCCBBAA@@nnooppqq33221100&&''(())~~{{zzyyxx##""!! 66778899kkjjiihhFFGGHHII[[ZZYYXXVVWWXXYY//..--,,IIJJKKLL3322110066778899hhiijjkkxxwwvvuu - - Z[[\\]]^??>>==<<rrssttuu//..--,,**++,,--wwvvuutt::;;<<==ggffeedd JJKKLLMMWWVVUUTTZZ[[\\]]++**))((MMNNOOPP//..--,,::;;<<==qqrrssttttssrrqq^__``aab;;::9988 !!vvwwxxyy++**))((..//0011ssrrqqpp>>??@@AAccbbaa`` - - NNOOPPQQSSRRQQPP ^^__``aa''&&%%$$QQWWXXYY++**))((>>??@@AAuuvvwwxxkkjjiihhbccddeef77665544""##$$%%zz{{||}}~~}}||''&&%%$$22334455oonnmmllBBCCDDEE__^^]]\\RRSSTTUUOONNMMLL - - bbccddee##ZZ[[\\]]~~}}||''&&%%$$BBCCDDEEbdQZ|drtAvpfH~fbے`bے`rd|~HfHfpvp˂rXQJ`ےdrtAltbvpfZHAbے`JXQtlJtArdfpvnXv`bHAZp˂rbdQZ|drtA`vXnvpfZHAbے`JXQlJtArHfpvHfpvےbHAbAZpltbvpf~f``JXQr˂pZrd|ZdQbtXv`f~Hf˂rXQJ`ےdrtAJltbvpfH~f``JXQr˂pZrd|ZdQbtpvnXQJ`ےXQJ`ےdrtAf`vXnv˂pZHAbے`dQbtlJtAr~HfpvnX`ےbHAZp˂tbdQZ|df`vXnv˂pZHAbے`dQbtlJtAr~HfpnrXQ˂bZ|dZ|lf`vX㐙ے`JXQr˂JtArd|ZdQnXv`f~Zp˂rXQJ`|drtAJlnvpfH~ے`JXQr˂JtArd|ZdQnXv`ےHAZp˂drtAdrtAf`vXJXQr`JXQr|ZdQbtlJf~HfpvXQJ`ےbHAZJltbdQZ|H~f`vXnr˂pZHAے|ZdQbnXv`f~Hp˂rXQJ`ےdrtAdrtAJltH~f`vXnJXQrJXQrZdQtArpvnnXvXQJ`ےbHAZJltnvpH~fے`JXQr˂ptArd|ZdQbnXv`f~Hp˂rXQJ`ےdrtAJltvpfH~fے`JXQr˂pd|lnXvnXHZp˂˂rbdQZ|Hf`vXn˂pZHAbےZdQbtlJtA~HfpvnJ`ےbHAZpltbdQZ|~f`vXn˂pZHAbےZdQbtlJtAXv`fbHAZbHAZJlbQZXnvpfH~bے`JXQrlJtArd|ZvnXv`fHAZp˂rXQJZ|drtAJlXnvpfH~bے`JXQrlJtArd|ZvnXJ`p˂HAZp˂rtAdQZtbnnvpXQr˂pZHAb|ZdQbtl`f~HfpvrXQJ`ےbHAtAJltbdQZfH~f`vXXQr˂pZHA|ZdQbnXv`f~Zp˂rXQJ`JltJltnvp˂pZHZHAbtlJtArdfpvnXv`bHAZp˂rbdQZ|drtA`vXnvpfZHAb`JXQrtlJf~HfpvXQJ`ےbHAZJltJltbdQZ|`vXnvpf˂pZHA˂p|Zd|ZXv`f`f~bHAZp˂rbdQZ|fHf`vXnr˂pZHAb|ZdQbtlJf~HfpvXQJ`ےbHAZJltbdQZ|H~f`vXnr˂pZHAbJtArd`ffpvrXQJ`dQZ|drtAJvXnvpfHHAbے`JXQrlJtArd|pvnXv`fbHAZp˂rXQdQZ|drtAJvXnvpfHHAbے`JXQrlJtArd|~Hfp˂rp˂r|drpfH~f`vJXQr˂pZHAd|ZdQbtv`f~HfprXQJ`ےbrtAJltbdQpfH~f`vJXQr˂pZHAd|ZdQbnXv`frXQJrXQJ|drvpfffH~pZHAbے`JbtlJtArdHfpvnXvےbHAZp˂tbdQZ|drf`vXnvppZHAbے`JXQbtl`f~HfpvrXQJ`ےbHAbdQZ|bdQtAJfH~Abے`ے`JXtArd|ZdQbnXv`f~Hp˂rXQJ`ےdrtAJltvpfH~fے`JXQbtltArdfpvnXv`bHAZp˂rbdQZ|bdQZ|drtAvpfH~fb˂dQbtdQbt璐~HfHfpvp˂rbdQZ|drtA`vXnvpfZHAbے`JXQtlJtArdfpvnXv`bHAZp˂rbdQZ|drtA`vXnvpfZHAbے`JXQ|ZdQnXv`nXv`ےbHAdrtAJltbvpfH~f``JXQr˂pZrd|ZdQbtXv`f~Hf˂rXQJ`ےdrtAJltbvpfH~f``JXQr˂pZrd|ZdQbnpvXQJ`ےXQJ`ptAJl璐f`vXnv˂pZHAbے`dQbtlJtAr~HfpvnX`ےbHAZp˂tbdQZ|df`vXnv˂pZHAے`JdQbtv`f~Hfp`ےb`ےbtAJl`vXnf`vXnے`JXQr˂JtArd|ZdQnXv`f~Zp˂rXQJ`|drtAJlnvpfH~ے`JrbtJtArdHfpvnXvےbHAZp˂dtbltbf`pfJXQrQr˂p|ZdQbtlJf~HfpvXQJ`ےbHAZJltbdQZ|H~f`vXnr˂pJtAd|ZdQbnXv`f~Hp˂rXQJ`ےdrtAdrtAJltH~f`vXnpZHAblJtArlJtArvnXv`nXvXQJ`ےdrtAJltvpfH~fے`JXQr˂ptArd|ZdQbnXv`f~Hp˂rXQJ`ےdrtAJltvpfH~fے`JXQr˂pbtlf~Hf~HZprQltbdQZ|~f`vXn˂pZHAbےZdQbtlJtA~HfpvnJ`ےbHAZpltbdQZ|~f`vXn˂pZHAے`ZdQbtXv`p~HfpbHAXQ˂rbtbdQZXnvpfH~bے`JXQrlJtArd|ZvnXv`fHAZp˂rXQJZ|drtAJlXnvpfH~bے`XQrbtlJtAr~HfpvnXHAZp˂HAZp˂tbdQZvpfvfH~XQr˂pZHAb|ZdQbtl`f~HfpvrXQJ`ےbHAtAJltbdQZfH~f`vXXQr˂lJtAd|ZdQnXv`f~Zp˂rXQJ`dQZ|dQZ|H~f˂pZHZHAbtlJtArdfpvnXv`bHAZp˂rbdQZ|dtAJ`vXnr˂pZHAb|ZdQbtlJf~HfpvXQJ`ےbHAZJltJltJltbdQZ|`vXnvpfے`Jd|Zd|Zf~H`frQbHAZJltbdQZ|H~f`vXnr˂pZHAb|ZdQbtlJf~HfpvXQJ`ےbHAZJltbdQZ|H~f`vXnr˂pZHAےJtArdfpvfpvJ`ےdQZ|drtAJvXnvpfHHAbے`JXQrlJtArd|pvnXv`fbHAZp˂rXQdQZ|drtAJvXnvpfHHAbےJXQrblJtAvnXvnXJ`ےdQZ||drpfH~f`vJXQr˂pZHAd|ZdQbtv`f~HfprXQJ`ےbrtAJltbdQpfH~f`vJXQrlJtAd|ZvnXv`frXQJrXQHA|drH~ff`vpZHAbے`JbtlJtArdHfpvnXvےbHAZp˂tbdQZ|dtAf`vXnr˂pZHAb|ZdQbtl`f~HfpvrXQJ`ےbHAdrtAJdrtAJ`vXnAbJXQے`JXtArd|ZdQbnXv`f~Hp˂rXQJ`ےdrtAltbvpfZHAbے`JXQtlJtArdfpvnXv`bHAZp˂rbdQZ|bdQZ|bdQZ|drtAvpfH~fXQr˂dQbtdQbtdfpvJHAZp˂rbdQZ|drtA`vXnvpfZHAbے`JXQtlJtArdfpvnXv`bHAZp˂rbdQZ|drtA`vXnvpfZHAb`JXQr|ZdQnXv`nXv`bHAZpdrtAJltbvpfH~f``JXQr˂pZrd|ZdQbtXv`f~Hf˂rXQJ`ےdrtAJltbvpfH~f``JXQrtlJrd|v`fv`fbHAZprAJlttAJl璐f`vXnv˂pZHAbے`dQbtlJtAr~HfpvnX`ےbHAZp˂tbdQZ|df`vXnr˂pZHAd|ZdQbtv`f~Hfp`ےZp˂tAJl|`vXnXnvے`JXQr˂JtArd|ZdQnXv`f~Zp˂rXQJ`|drJltnvppZHAbے`JbtlJtArdHfpvnXvےbHAZp˂ltbltbvpfr˂pQrZ|ZdQbtlJf~HfpvXQJ`ےbHAZJltnvpH~fے`JXQr˂ptArd|ZdQbnXv`f~Hp˂rXQJ`ےdrtAdrtAdrtAJltH~f`vXnpZHAblJtAdQ|ZdQnXv`p˂rXQJ`ےdrtAJltvpfH~fے`JXQr˂ptArd|ZdQbnXv`f~Hp˂rXQJ`ےdrtAJltvpfH~fے`JXQbtltArdf~HpvnrXQltbdQZ|~f`vXn˂pZHAbےZdQbtlJtA~HfpvnJ`ےbHAZpltbdQZ|~f`vXnr˂pZtAd|ZdQbt~Hfp~Hfp˂rXQbdQZ|tbQZdXnvpfH~bے`JXQrlJtArd|ZvnXv`fHAZp˂rXQJZ|dtAJlXnv˂pZHAbے`dQbtlJtAr~HfpvnXrXQJ`rXQJ`drtAvpfpfH~XQr˂pZHAb|ZdQbtl`f~HfpvrXQJ`ےbHAtAJlbnvfH~ے`JXQr˂JtArd|ZdQnXv`f~Zp˂rXQJ`dQZ|dQZ|lH~fZHAbAbے`tlJtArdfpvnXv`bHAZp˂rbdQZ|fHf`vXnr˂pZHAb|ZdQbtlJf~HfpvXQJ`ےbHAZJltJltJltbdQZ|`vXnvpfے`pbtlbtlf~HXQJ`ےbHAZJltbdQZ|H~f`vXnr˂pZHAb|ZdQbtlJf~HfpvXQJ`ےbHAZJltbdQZ|H~f`vXnr˂p|ZdQb|ZdQbXv`frXQJ`J`ےdQZ|drtAJvXnvpfHHAbے`JXQrlJtArd|pvnXv`fbHAZp˂rXQdQZ|dtAJlvXn˂pZHAbےZdQbtlJtAvnXvnXJ`ےdrtrtAJlpfH~f`vJXQr˂pZHAd|ZdQbtv`f~HfprXQJ`ےbrtAJltbnpfH~bے`JXQrlJtArd|ZvnXv`fےbHAےbHAJltH~fvXf`vpZHAbے`JbtlJtArdHfpvnXvےbHAZp˂tbdQZpfHf`vXXQr˂pZHAb|ZdQbtl`f~HfpvrXQJ`ےbHAdrtAdQtbn`vXHے`JXQJXQrtArd|ZdQbnXv`fHfp˂rbdQZ|drtA`vXnvpfZHAbے`JXQtlJtArdfpvnXv`bHAZp˂rbdQZ|bdQZ|bdQZ|drtAvpfH~fZHAbJtArdJtArdfpvnbHAZp˂rbdQZ|drtA`vXnvpfZHAbے`JXQtlJtArdfpvnXv`bHAZp˂rbdQZ|dtAJ`vXnr˂pZHAbtlJtlJ~HfAZp˂bHAZpdrtAJltbvpfH~f``JXQr˂pZrd|ZdQbtXv`f~Hf˂rXQJ`ےdrtAJtbnvpfHHAbے`JXQrlJtArd|v`fHfpvbHAZpAJlttbdf`vXnv˂pZHAbے`dQbtlJtAr~HfpvnX`ےbHAZp˂tbdQvpfHf`vJXQr˂pZHAd|ZdQbtv`f~HfpZp˂Zp˂bdQZ|nvpXnvے`JXQr˂JtArd|ZdQnXv`fHZp˂rbdQZ|drf`vXnvppZHAbے`JbtlJtArdHfpvnXvےbHAZp˂Z|dvp`~f`r˂p˂pZHA|ZdQbtlJf~HpvnXQJ`ےdrtAJltvpfH~fے`JXQr˂ptArd|ZdQbnXv`f~Hp˂rXQJ`ےdrtAdrtAdrtAJltH~f`vXnے`JXQ|ZdQ|ZdQv`fp˂rXQJ`ےdrtAJltvpfH~fے`JXQr˂ptArd|ZdQbnXv`f~Hp˂rXQJ`ےdrtAltbvpfZHAbے`JXQtArdtArdpvnrXQJrQJltbdQZ|~f`vXn˂pZHAbےZdQbtlJtA~HfpvnJ`ےbHAZpltbvpf~f``JXQr˂pZrd|ZdQbtnXvnXv`ےbbdQZ|QZ|dXnvpfH~bے`JXQrlJtArd|ZvnXv`fHAZp˂rbdQZ|df`vXnv˂pZHAbے`dQbtlJtAr~HfpvnXrXQJ`rXQJ`drtAfH~f~f`XQr˂pZHAb|ZdQbtl`f~fpvrXQJ`|drtAJlnvpfH~ے`JXQr˂JtArd|ZdQnXv`f~Zp˂rXQJ`rtAJlvXnvXnZHAbbے`tlJtArdfpvrXQJ`bHAZJltbdQZ|H~f`vXnr˂pZHAb|ZdQbtlJf~HfpvXQJ`ےbHAZJltJltJltbdQZ|`vXnvpfr˂pbtlbtl~HfpXQJ`ےbHAZJltbdQZ|H~f`vXnr˂pZHAb|ZdQbtlJf~HfpvXQJ`ےbHAZJltnvpH~fے`JXQr˂p|ZdQb|ZdQbXv`f`ےbbHAZdQZ|drtAJvXnvpfHHAbے`JXQrlJtArd|pvnXv`fbHAZp˂rbdQZ|Hf`vXn˂pZHAbےZdQbtlJtA`f~`f~HAZp˂drAJrtAJlpfH~f`vJXQr˂pZHAd|ZdQbtv`fHfpvrXQJZ|drtAJlXnvpfH~bے`JXQrlJtArd|ZvnXv`fےbHAp˂rJltf`vXvXnpZHAbے`JbtlJtArdHfpvnrXQJےbHAtAJltbdQZfH~f`vXXQr˂pZHAb|ZdQbtl`f~HfpvrXQJ`ےbHAtbdQvpfHvpfHJQrJXQrtArd|ZdQbnXv`ےHAZp˂rbdQZ|drtA`vXnvpfZHAbے`JXQtlJtArdfpvnXv`bHAZp˂rbdQZ|bdQZ|bdQZ|drtAvpfH~fZHAbJtArd|ZdQbvnXbHAZp˂rbdQZ|drtA`vXnvpfZHAbے`JXQtlJtArdfpvnXv`bHAZp˂rbdQZ|fHf`vXnr˂pZHAbtlJtd|~HfHAZp˂p˂rdrtAJltbvpfH~f``JXQr˂pZrd|ZdQbtXv`fHfp˂rXQdQZ|drtAJvXnvpfHHAbے`JXQrlJtArd|HfpvHfpvrXQJtbdQtbdf`vXnv˂pZHAbے`dQbtlJtAr~HfpnrXQ`ےbrtAJltbdQpfH~f`vJXQr˂pZHAd|ZdQbtv`f~HfpXQJ`ےbdQZ|drtAJnvpvpfHے`JXQr˂JtArd|ZdQnXv`ےHAZp˂tbdQZ|drf`vXnvppZHAbے`JbtlJtArdHfpvnXvےbHAZp˂Z|d~f`~f`pZHA˂pZA|ZdQbnXv`f~Hp˂rXQJ`ےdrtAJltvpfH~fے`JXQr˂ptArd|ZdQbnXv`f~Hp˂rXQJ`ےdrtAdrtAdrtAJltH~f`vXnے`JXQtlJnXv`v`fp˂rXQJ`ےdrtAJltvpfH~fے`JXQr˂ptArd|ZdQbnXv`fHfp˂rbdQZ|drtA`vXnvpfZHAbے`JXQtAdQbtZdQbtp`frXQJXQJ`ےltbdQZ|~f`vXn˂pZHAbےZdQbtlJtA~HfvnrJ`ےdrtAJltbvpfH~f``JXQr˂pZrd|ZdQbtnXvnXv`ےbZ|dQZrtAXnvpfH~bے`JXQrlJtArd|ZvnXJ`ےHAZp˂tbdQZ|df`vXnv˂pZHAbے`dQbtlJtAr~HfpvnXbHAZltbltbfH~~f`XQr˂pZHA|ZdQbnXv`f~Zp˂rXQJ`|drtAJlnvpfH~ے`JXQr˂JtArd|ZdQnXv`f~Zp˂rXQJ`rtAJlvXnvXnbے``JXQrtlJf~HfpvXQJ`ےbHAZJltbdQZ|H~f`vXnr˂pZHAb|ZdQbtlJf~HfpvXQJ`ےbHAZJltJltJltbdQZ|`vXnr˂pHAbےtArdf~fp~HfpXQJ`ےbHAZJltbdQZ|H~f`vXnr˂pZHAb|ZdQbtlJf~HpvnXQJ`ےdrtAJltvpfH~fے`JXQr˂plJtAlJtA~Hfp`ےbAbHAZdQZ|drtAJvXnvpfHHAbے`JXQrlJtArd|pvnXQJ`ےbHAZpltbdQZ|~f`vXn˂pZHAbےZdQbtlJtA`f~`pvHAZp˂rtAJlJltpfH~f`vJXQr˂pZHAd|ZdQbnXv`fHAZp˂rXQJZ|drtAJlXnvpfH~bے`JXQrlJtArd|ZvnXv`fp˂rdQZ|dQZ|fvnvXnpZHAbے`JXQbtl`f~HfpvrXQJ`ےbHAtAJltbdQZfH~f`vXXQr˂pZHAb|ZdQbtl`f~HfpvrXQJ`ےbHA|drvpfHf`vJXQrbtltArdfpvnXv`bHAZp˂rbdQZ|drtA`vXnvpfZHAbے`JXQtlJtArdfpvnXv`bHAZp˂rbdQZ|bdQZ|bdQZ|drtAvpf`JXQr`JXQr|ZdQbvnXvnvbHAZp˂rbdQZ|drtA`vXnvpfZHAbے`JXQtlJtArdfpvrXQJ`bHAZJltbdQZ|H~f`vXnr˂pZHAbrd|rd|vnXZrXp˂rdrtAJltbvpfH~f``JXQr˂pZrd|ZdQbnXv`fHAZp˂rXQdQZ|drtAJvXnvpfHHAbے`JXQrlJtArd|HXv`nrXQJbHAtbdQbdQZ|f`vXnv˂pZHAے`JdQbtv`f~HfprXQJ`ےbrtAJltbdQpfH~f`vJXQr˂pZHAd|ZdQbtv`f~HfpXQJ`ےdrtAJdrtAJvpfHvpf~ے`JrbtJtArdHfpvnXvےbHAZp˂tbdQZ|drf`vXnvppZHAbے`JbtlJtArdHfpvnXvےbHAZp˂tAJlXnvXnvpZHAJtAd|ZdQbnXv`f~Hp˂rXQJ`ےdrtAJltvpfH~fے`JXQr˂ptArd|ZdQbnXv`f~Hp˂rXQJ`ےdrtAdrtAdrtAJltH~f˂pZ˂pZtlJv`ff~Hp˂rXQJ`ےdrtAJltvpfH~fے`JXQr˂ptArd|ZdQbnXv`ےHAZp˂rbdQZ|drtA`vXnvpfZHAbے`JXQZdQbtZdQbtv`fQJ`ےXQJbHltbdQZ|~f`vXn˂pZHAے`ZdQbtXv`f~Hf˂rXQJ`ےdrtAJltbvpfH~f``JXQr˂pZrd|ZdQbtf~H`p˂Zp˂Z|ddrtAXnvpfH~bے`XQrbtlJtAr~HfpvnX`ےbHAZp˂tbdQZ|df`vXnv˂pZHAbے`dQbtlJtAr~HfpvnXbHAZltbltb~f`f`vXXQr˂lJtAd|ZdQnXv`f~Zp˂rXQJ`|drtAJlnvpfH~ے`JXQr˂JtArd|ZdQnXv`f~Zp˂rXQJ`tbdQZpfH~pfH~bے`J|ZdQbtlJf~HfpvXQJ`ےbHAZJltbdQZ|H~f`vXnr˂pZHAb|ZdQbtlJf~HfpvXQJ`ےbHAZJltJltJltbdQZ|`vXnHAbےHAbےtArd~HfpfpvXQJ`ےbHAZJltbdQZ|H~f`vXnr˂pZHAے|ZdQbnXv`f~Hp˂rXQJ`ےdrtAJltvpfH~fے`JXQr˂plJtAl|Z~HfpbHAZpAZp˂dQZ|drtAJvXnvpfHHAbےJXQrblJtA~HfpvnJ`ےbHAZpltbdQZ|~f`vXn˂pZHAbےZdQbtlJtAfpvrXQJ`rXQJ`rtAJJltpfH~f`vJXQrlJtAd|ZvnXv`fHAZp˂rXQJZ|drtAJlXnvpfH~bے`JXQrlJtArd|ZvnXv`fp`ےdQZ|dQtAJlvXnnr˂pZHAb|ZdQbtl`f~HfpvrXQJ`ےbHAtAJltbdQZfH~f`vXXQr˂pZHAb|ZdQbtl`f~HfpvrXQJ`ےbHA|drf`vf`vQrpZtlJtArdfpvnXv`bHAZp˂rbdQZ|drtA`vXnvpfZHAbے`JXQtlJtArdfpvnXv`bHAZp˂rbdQZ|bdQZ|bdQZ|`vXnvpf`JXQr`JXQr|lJtAvnXnXv`ːbHAZp˂rbdQZ|drtA`vXnvpfZHAb`JXQrtlJf~HfpvXQJ`ےbHAZJltbdQZ|H~f`vXnr˂pZHAbrdtdQbnXv~˂rXrXQJ`drtAJltbvpfH~f``JXQrtlJrd|pvnXv`fbHAZp˂rXQdQZ|drtAJvXnvpfHHAbے`JXQrlJtArd|nXv`ےbHAےbHAbdQZ|bdQZ|f`vXnr˂pZHAd|ZdQbtv`f~HfprXQJ`ےbrtAJltbdQpfH~f`vJXQr˂pZHAd|ZdQbtv`f~HfpbHAZpdtbdQtbdQvpfHpZHAbے`JbtlJtArdHfpvnXvےbHAZp˂tbdQZ|drf`vXnvppZHAbے`JbtlJtArdHfpvnXvےbHAZp˂tAJlXnvXnvHAbےtArd|ZdQbnXv`f~Hp˂rXQJ`ےdrtAJltvpfH~fے`JXQr˂ptArd|ZdQbnXv`fHfp˂rbdQZ|drtAdtAJdrtAvpfH~f˂pZے`rd|v`f~f~Hp˂rXQJ`ےdrtAJltvpfH~fے`JXQbtltArdfpvnXv`bHAZp˂rbdQZ|drtA`vXnvpfZHAbے`JXQlJtArv`pvHfpvQJ`ےےbHltbdQZ|~f`vXnr˂pZtAd|ZdQbtXv`f~Hf˂rXQJ`ےdrtAJltbvpfH~f``JXQr˂pZrd|ZdQbtf~HZp˂Zp˂drtAAJlXnv˂pZHAbے`dQbtlJtAr~HfpvnX`ےbHAZp˂tbdQZ|df`vXnv˂pZHAbے`dQbtlJtAr~HfpvnX˂rXQZ|dZ|d~f`ے`JXQr˂JtArd|ZdQnXv`f~Zp˂rXQJ`|drtAJlnvpfH~ے`JXQr˂JtArd|ZdQnXv`fHZp˂rbdQZtdrtApfH~p`vX`JXQr|ZdQbtlJf~HfpvXQJ`ےbHAZJltbdQZ|H~f`vXnr˂pZHAb|ZdQbtlJf~HpvnXQJ`ےdrtAJltltbJltH~f`vXnHAXQrJXQrZdQbtfvnfpvXQJ`ےbHAZJltbdQZ|H~f`vXnr˂pJtAd|ZdQbnXv`f~Hp˂rXQJ`ےdrtAJltvpfH~fے`JXQr˂pd|ZnXvnXvbHAZAZp˂dQZ|dtAJlvXn˂pZHAbےZdQbtlJtA~HfpvnJ`ےbHAZpltbdQZ|~f`vXn˂pZHAbےZdQbtlJtAfp`frXQJ`rXQHAZJlttbnpfH~bے`JXQrlJtArd|ZvnXv`fHAZp˂rXQJZ|drtAJlXnvpfH~bے`JXQrlJtArd|ZvnXv`fJ`ےrtAJlrtAJlvnvpXQr˂pZHAb|ZdQbtl`f~HfpvrXQJ`ےbHAtAJltbdQZfH~f`vXXQr˂pZHAb|ZdQbtl`f~fpvrXQJ`|ltJltvpnr˂˂pZtlJtArdfpvnXv`bHAZp˂rbdQZ|drtA`vXnvpfZHAbے`JXQtlJtArdfpvrXQJ`bHAZJltbdQZ|nvpbdQZ|`vXnvpf˂pZHA˂pZHAlJtAXv`fnXvf~bHAZp˂rbdQZ|dtAJ`vXnr˂pZHAb|ZdQbtlJf~HfpvXQJ`ےbHAZJltbdQZ|H~f`vXnr˂pZHAbdQbt`f~`f~rXQJ`rXQJ`drtAJtbnvpfHHAbے`JXQrlJtArd|pvnXv`fbHAZp˂rXQdQZ|drtAJvXnvpfHHAbے`JXQrlJtArd|~Hfےrp˂rbdQZ|vpfHf`vJXQr˂pZHAd|ZdQbtv`f~HfprXQJ`ےbrtAJltbdQpfH~f`vJXQr˂pZHAd|ZdQbtv`fHfpvbHAZptbdQtbdQfH~pZHAbے`JbtlJtArdHfpvnXvےbHAZp˂tbdQZ|drf`vXnvppZHAbے`JbtlJtArdHfpvnrXQJےbHAbdQZ|bdQZ|fH~pZAb`HAbےtArd|ZdQbnXv`f~Hp˂rXQJ`ےdrtAJltvpfH~fے`JXQr˂ptArd|ZdQbnXv`ےHAZp˂rbdQZ|drtA`vXnvpfvpfHAbےJA|Zrd|琕~HfpvnJ`ےbHAZpltbdQZ|~f`vXn˂pZHAbےZdQbtlJtA~HfvnrJ`ےdrtAJltbvpfH~f`HAXQrJXQrZQXb㉀`vXnvˍpfdrQtH~fH~f`JXQrdQbtZdQbJpvnXv`fbHAZp˂rXQdQZ|drtAJvXnvpfHHAbے`JXQrlJtArd|pvnXQJ`ےbHAZpltbdQZ|~f`vXn˂pZHA˂pZHAۑpJAHvˍpfH~ㅐfJlt`vXn`vXn˂pZlJtArtArdXv`f~Hf˂rXQJ`ےdrtAJltbvpfH~f``JXQr˂pZrd|ZdQbnXv`fHAZp˂rXQdQZ|drtAJvXnvpfHbے`bے`r󙐂ˁ`H~ㅐf۝`vXnbAdZ|vpff`HAbےd|Z|ZdQb~HfpvnJ`ےbHAZpltbdQZ|~f`vXn˂pZHAے`ZdQbtXv`f~Hf˂rXQJ`ےdrtAJltbvpfH~f`JXQrJXQrZQXAHr`vXnvˍpfdrQtHXnvXn`pZHAdQbttlJpvnXv`fbHAZp˂rXQdQZ|drtAJvXnvpfHHAbےJXQrblJtA~HfpvnJ`ےbHAZpltbdQZ|~f`vXn˂pZHA˂p`Zˁ`ZvˍpfH~ㅐfJltvpfHvpfHbے`lJtArtArdXv`f~Hf˂rXQJ`ےdrtAJltbvpfH~f``JXQrtlJrd|pvnXv`fbHAZp˂rXQdQZ|drtAJvXnvpfHb˂QXb㉀QXb㉀ەH~ㅐf۝`vXnbAdZ|~f`~f`JXQrZdQbt|ZdQb~HfpvnJ`ےbHAZpltbdQZ|~f`vXnr˂pZtAd|ZdQbtXv`f~Hf˂rXQJ`ےdrtAJltbvpfH~f`pZHAbpJAHrpJAHr`vXnvˍp|drQtvXnvXn˂pZHAlJttJArdpvnXv`fbHAZp˂rXQdQZ|dtAJlvXn˂pZHAbےZdQbtlJtA~HfpvnJ`ےbHAZpltbdQZ|~f`vXnے`Jˁ`Zˁ`ZvˍpfdrQtJltvpfHvp`vbے`Ard||ZdXv`f~Hf˂rXQJ`ےdrtAJtbnvpfHHAbے`JXQrlJtArd|pvnXv`fbHAZp˂rXQdQZ|drtAJvXnvpfHXQr˂QXb㉀QXb㉀H~ㅐfJltbAdZ|~vXnrJXQHAbZdQbtQbtl~HfpvnJ`ےbHAZpltbvpf~f``JXQr˂pZrd|ZdQbtXv`f~Hf˂rXQJ`ےdrtAJltbvpfH~f`pZHAbpJAHQXˁ`ZQX`vXnbAdZ|drQtpfH~˂p`Jے`JlJtJtArdpvnXv`fbHAZp˂rbdQZ|Hf`vXn˂pZHAbےZdQbtlJtA~HfpvnJ`ےbHAZpltbdQZ|~f`vXnے`pb㉀ۑpb㉀ۑpvˍpfdrQtJltf`vXQr˂XQr˂ArdZ|ZdXv`fHfp˂rXQdQZ|drtAJvXnvpfHHAbے`JXQrlJtArd|pvnXv`fbHAZp˂rXQdQZ|drtAJvXnvpfHZHAbJAHrJAHr󙐕H~ㅐfJltbAdZ|XnvpZHAbpZHAbQbtlQbtl~HfvnrJ`ےdrtAJltbvpfH~f``JXQr˂pZrd|ZdQbtXv`f~Hf˂rXQJ`ےdrtAJltbvpfH~f`ے`JXQˁ`ZQXˁ`ZQX`vXnbAdZ|drQtpfH~ے`Jے`JJtArdJAr|pvnXQJ`ےbHAZpltbdQZ|~f`vXn˂pZHAbےZdQbtlJtA~HfpvnJ`ےbHAZpltbdQZ|~f`vXnr˂pb㉀ۑpb㉀XnvˍpfdrQtJltf`pXQr˂XQr|ZdQZdQbnXv`fHAZp˂rXQdQZ|drtAJvXnvpfHHAbے`JXQrlJtArd|pvnXv`fbHAZp˂rXQdQZ|drtAJvXnvpfHZHAbJAHr󙐕vˍpfH~ㅐfJltbAdZ|fH~pZHAXQے`JXQbtlXv`f~Hf˂rXQJ`ےdrtAJltbvpfH~f``JXQr˂pZrd|ZdQbtXv`f~Hf˂rXQJ`ےdrtAJltbvpfH~f`ے`JXQۑpJH~ㅐf۝`vXnbAdZ|drQtf`vXr˂pr˂pJtArd~HfpvnJ`ےbHAZpltbdQZ|~f`vXn˂pZHAbےZdQbtlJtA~HfpvnJ`ےbHAZpltbdQZ|~f`vXnےHAbےAHr󙐂˝`vXnvˍpfdrQtJltnvpZHAbZHAb|ZQbpvnXv`fbHAZp˂rXQdQZ|drtAJvXnvpfHHAbے`JXQrlJtArd|pvnXv`fbHAZp˂rXQdQZ|dtAJlvXn`JXQr`JXQr`ZQXb㕀vˍpfH~ㅐfJltbAdZ|fH~ے`JXQے`JXQlJtAXv`f~Hf˂rXQJ`ےdrtAJltbvpfH~f``JXQr˂pZrd|ZdQbtXv`f~Hf˂rXQJ`ےdrtAJtbnvpfH˂pZ˂pZۑpJH~ㅐf۝`vXnbAdZ|drQtf`vXr˂pr˂prd|琕~HfpvnJ`ےbHAZpltbdQZ|~f`vXn˂pZHAbےZdQbtlJtA~HfpvnJ`ےbHAZpltbvpf~f`HAbےHAbےAHr󙐂˝`vXnvˍpfdrQtJltH~fZHAb`JXQrZdQbtpvnXv`fbHAZp˂rXQdQZ|drtAJvXnvpfHHAbے`JXQrlJtArd|pvnXv`fbHAZp˂rbdQZ|Hf`vXn`JXQr`JXQr`pJAHvˍpfH~ㅐfJltbAdZ|`vXn˂pZbtllJtAXv`f~Hf˂rXQJ`ےdrtAJltbvpfH~f``JXQr˂pZrd|ZdQbtXv`fHfp˂rXQdQZ|drtAJvXnvpfH˂pZے`r󙐂ˁ`H~ㅐf۝`vXnbAdZ|drQt \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv38_2.dat b/mpdf/qrcode/data/qrv38_2.dat deleted file mode 100644 index 8839d79..0000000 --- a/mpdf/qrcode/data/qrv38_2.dat +++ /dev/null @@ -1,337 +0,0 @@ -|{|{|{|{xwxwxwxwvuvuvuvu|{|{|{|{xwxwxwxwvuvuvuvu|{|{|{|{xwxwxwxwvuvuvuvu|{|{|{|{xwxwxwxwvuvuvuvu|{|{|{|{xwxwxwxwvuvuvuvu|{|{|{|{xwxwxwxwvuvuvuts|{|{|{|{xwxwxwxwtstststs|{|{|{|{xwxwxwxwtstststs|{|{|{|{xwxwxwxwtstststs|{|{|{|{xwxwxwxwtstststs|{|{|{|{xwxwxwxwtstststs|{|{|{|{xwxwxwxwtstststs|{|{|{|{xwxwxwxwtstststs|{|{|{|{xwxwxwxwtstststs|{|{|{|{xwxwxwxwtstststs|{|{|{|{xwxwxwxwtstststs|{|{|{|{xwxwxwxwtstststs~}|{|{|{|{xwxwxwxwtstststs~}~}~}~}|{|{|{|{xwxwxwxwtstststs~}~}~}~}|{|{|{|{xwxwxwxwtstststs~}~}~}~}|{|{|{|{xwxwxwxwtstststs~}~}~}~}|{|{|{|{xwxwxwxwtstststs~}~}~}~}|{|{|{|{xwxwxwxwtstststs~}~}~}~}|{|{|{|{xwxwxwxwtstststs~}~}~}~}|{|{|{|{xwxwxwxwtstststs~}~}~}~}|{|{|{|{xwxwxwxwtstststs~}~}~}~}|{|{|{|{xwxwxwxwtstststs~}~}~}~}|{|{|{zyxwxwxwxwtstststs~}~}~}~}zyzyzyzyxwxwxwxwtstststs~}~}~}~}zyzyzyzyxwxwxwxwtstststs~}~}~}~}zyzyzyzyxwxwxwxwtstststs~}~}~}~}zyzyzyzyxwxwxwxwtstststs~}~}~}~}zyzyzyzyxwxwxwxwtstststs~}~}~}~}zyzyzyzyxwxwxwxwtstststs~}~}~}~}zyzyzyzyxwxwxwxwtstststs~}~}~}~}zyzyzyzyxwxwxwxwtstststs~}~}~}~}zyzyzyzyxwxwxwxwtstststs~}~}~}~}zyzyzyzyxwxwxwvutstststs~}~}~}~}zyzyzyzyvuvuvuvutstststs~}~}~}~}zyzyzyzyvuvuvuvutstststs~}~}~}~}zyzyzyzyvuvuvuvutstststs~}~}~}~}zyzyzyzyvuvuvuvutstststs~}~}~}~}zyzyzyzyvuvuvuvutstststsrqrqrqrq~}~}~}~}zyzyzyzyvuvuvuvutstststsrqrqrqrq~}~}~}~}zyzyzyzyvuvuvuvutstststsrqrqrqrq~}~}~}~}zyzyzyzyvuvuvuvutstststsrqrqrqrq~}~}~}~}zyzyzyzyvuvuvuvutstststsrqrqrqrq~}~}~}~}zyzyzyzyvuvuvuvutststsrqrqrqrqrq~}~}~}~}zyzyzyzyvuvuvuvurqrqrqrqrqrqrqrq~}~}~}~}zyzyzyzyvuvuvuvurqrqrqrqrqrqrqrq~}~}~}~}zyzyzyzyvuvuvuvurqrqrqrqrqrqrqrq~}~}~}~}zyzyzyzyvuvuvuvurqrqrqrqrqrqrqrq~}~}~}~}zyzyzyzyvuvuvuvurqrqrqrqrqrqrqrq~}~}~}~}zyzyzyzyvuvuvuvurqrqrqrqrqrqrqrq~}~}~}~}zyzyzyzyvuvuvuvurqrqrqrqrqrqrqrq~}~}~}~}zyzyzyzyvuvuvuvurqrqrqrqrqrqrqrq~}~}~}~}zyzyzyzyvuvuvuvurqrqrqrqrqrqrqrq~}~}~}~}zyzyzyzyvuvuvuvurqrqrqrqrqrqrqpo~}~}~}~}zyzyzyzyvuvuvuvurqrqrqrqpopopopo~}~}~}|{zyzyzyzyvuvuvuvurqrqrqrqpopopopo|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrqpopopopo|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrqpopopopo|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrqpopopopo|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrqpopopopo|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrqpopopopo|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrqpopopopo|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrqpopopopo|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrqpopopopo|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrqpopopopo|{|{|{|{zyzyzyxwvuvuvuvurqrqrqrqpopopopo|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqpopopopo|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqpopopopo|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqpopopopo|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqpopopopopopopopolklklklkhghghghgdcdcdcdcbabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;878787874343434321212121.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#   - - - - popopopolkkkkkklhghghghgdcdcdcdcbabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;878787874343434321212121.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$# - - - - popopopoklklklklhghghghgdcdcdcdcbaba`_`_^]^]^]^]ZYZYZYZYVUVUVUVUQQQQQRQRNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;878787874343434321212121.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$# - - - - popopopoklklklklhghghghgdcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUQRQRQRQRNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;777778784343434321212121.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$# - - - - popopopoklklklklhghghghgdcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUQRQRQRQRNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;787878784343434321212121.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"! - - - - popopopoklklklklhghghghgdcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUQRQRQRQRNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;787878784343434321212121.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"! - - - - popopopoklklklklhghghghgdcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUQRQRQRQRNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;78787878434343430/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"! - - - - popopopokkkkkklkhghghghgdcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUQRQRQRQQNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;78787878434343430/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"! - - - - popopopolklklklkhghghghgdcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUQQQQRQRQNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;78787877434343430/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"! - - - - popopopolklklklkhghghghgdcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIHGFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;77778787434343430/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"! - - - - popopopolklklklkhghghghgdcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;87878787434343430/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"! - - - popopopolklklklkhghghghgdcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;87878787434343430/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"! popopopolklklklkhghghghgdcdcdcdc`_`_`_`_^]^]\[\[ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;87878787434343430/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"! popopopokkkklklkhghghghgdcdcdcdc`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQQQNMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;87878787434343430/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"! popopopolklkjijihghghghgdcdcdcdc`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUQQQRQRQRNMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;87878777434343430/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"! popopopojijijijihghghghgdcdcdcdc`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUQRQRQRQRNMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;77787878434343430/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"! popopopojijijijihghghghgdcdcdcdc`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUQRQRQRQRNMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;78787878434343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"! ponmnmnmjijijijihghghghgdcdcdcdc`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUQRQRQRQRNMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;78787878434343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"! nmnmnmnmjijijijihghghghgdcdcdcdc`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUQRQRQRQRNMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;78787878434343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"! nmnmnmnmjijijijihghghghgdcdcdcdc`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUQRQRQQQQNMNMNMNMJIJIJIJIFEFEFEFEDCBABABA@?@?@?@?<;<;<;<;78787878434343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"! nmnmnmnmjijijijihghghghgdcdcdcdc`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUQQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;78787777434343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"! nmnmnmnmjijijijihghghghgdcdcdcdc`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQPOPOPONMNMNMNMJIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;77878787434343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"! nmnmnmnmjijijijihghghghgdcdcdcdc`_`_`_`_\[\[\[\[ZYZYXWXWVUVUVUVUPOPOPOPONMNMNMNMJIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;87878787434343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"! nmnmnmnmjijijijihghghghgdcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWVUVUVUVUPOPOPOPONMNMNMNMJIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;87878787434343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"! nmnmnmnmjijijijihghgfefedcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;87878787434343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"! nmnmnmnmjijijijifefefefedcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;87878787434343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"! nmnmnmnmjijijijifefefefedcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;87877777434343430/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"! nmnmnmnmjijijijifefefefedcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;87878787434343430/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"! nmnmnmnmjijijijifefefefedcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;65656565434343430/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"! nmnmnmnmjijijijifefefefedcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIFEFEFEFEBABABABA@?>=>=>=<;<;<;<;65656565434343430/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"! nmnmnmnmjijijijifefefefedcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIFEFEFEFEBABABABA>=>=>=>=<;<;<;:965656565434343430/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"! nmnmnmnmjijijijifefefefedcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPONMLKLKLKJIJIJIJIFEFEFEFEBABABABA>=>=>=>=:9:9:9:965656565434343430/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"! nmnmnmnmjijijijifefefefedcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEBABABABA>=>=>=>=:9:9:9:965656565434343430/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"! nmnmnmnmjijijijifefefefedcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEBABABABA>=>=>=>=:9:9:9:965656565434343430/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"!    nmnmnmnmjijijijifefefefedcdcbaba`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEBABABABA>=>=>=>=:9:9:9:965656565434343430/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"!    nmnmnmnmjijijijifefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEBABABABA>=>=>=>=:9:9:9:965656565434343430/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"!    nmnmnmnmjijijijifefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEBABABABA>=>=>=>=:9:9:9:965656565434343430/0/0/0/,+,+,+,+('('('('$#$#$#$#"!"!"!"!    nmnmnmnmjijijijifefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEBABABABA>=>=>=>=:9:9:9:965656565434343430/0/0/0/,+,+,+,+('('('('$#$#$#$#"!"!      nmnmnmnmjijijijifefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEBABABABA>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+('('('('$#$#$#$#        nmnmnmnmjijijijifefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEBABABABA>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+('('('('$#$#$#$#        nmnmnmnmjijijijifefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEBABABABA>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+('('('('$#$#$#$#        nmnmnmnmjijijijifefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKJIHGHGHGFEFEFEFEBABABABA>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+('('('('$#$#$#$#        nmnmnmnmjijijijifefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+('('('('$#$#$#$#        - nmnmnmnmjijijijifefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+('('('('$#$#$#$#        - - - - nmnmnmnmjijijijifefefefebabababa`_`_^]^]\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+('('('('$#$#$#$#        - - - - nmnmnmnmjijijijifefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+('('('('$#$#$#$#        - - - - nmnmnmnmjijijijifefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+('('('('$#$#$#$#        - - - - nmnmnmnmjijijijifefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+('('('('$#$#$#$#        - - - - nmnmnmnmjijijijifefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#        - - - - nmnmnmnmjijijijifefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#        - - - - nmnmnmlkjijijijifefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#        - - - - lklklkkkjijijijifefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGFEDCDCDCBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#        - - - - kkklklkljijijijifefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#        - - - - klklklkljijijijifefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#        - - - - klklklkljijijijifefefefebabababa^]^]^]^]\[\[ZYZYXWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#        - - - - klklklkljijijijifefefefebabababa^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#        - - - - klklklkljijihghgfefefefebabababa^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#        - - - - klklkkkkhghghghgfefefefebabababa^]^]^]^]ZYZYZYZYXWXWXWXWTSTSRQRQPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#        - - - - kklklklkhghghghgfefefefebabababa^]^]^]^]ZYZYZYZYXWXWXWXWRQRQQQQQPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#        - - - - lklklklkhghghghgfefefefebabababa^]^]^]^]ZYZYZYZYXWXWXWXWRQRQRQRQPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#        - - - - lklklklkhghghghgfefefefebabababa^]^]^]^]ZYZYZYZYXWXWXWXWRQRQRQRQPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#        - - - - lklklklkhghghghgfefefefebabababa^]^]^]^]ZYZYZYZYXWXWXWXWRQRQRQRQPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDCBA@?@?@?>=>=>=>=:9:9:9:96565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#        - - - - lklklklkhghghghgfefefefebabababa^]^]^]^]ZYZYZYZYXWXWXWXWRQRQRQRQPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:96565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#        - - - - lklkkkkkhghghghgfefefefebabababa^]^]^]^]ZYZYZYZYXWXWXWXWRQRQRQRQPONMNMNMLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:96565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#        - - - - klklklklhghghghgfefefefebabababa^]^]^]^]ZYZYZYZYXWXWVUVURQQQQQQRNMNMNMNMLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=:98787876565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#        - - - - klklklklhghghghgfefefefebabababa^]^]^]^]ZYZYZYZYVUVUVUVUQRQRQRQRNMNMNMNMLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=877777786565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#        - - - - klklklklhghghghgfefedcdcbabababa^]^]^]^]ZYZYZYZYVUVUVUVUQRQRQRQRNMNMNMNMLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=787878786565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#        - - - - klklklklhghghghgdcdcdcdcbabababa^]^]^]^]ZYZYZYZYVUVUVUVUQRQRQRQRNMNMNMNMLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=787878786565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#        - - - - klklklklhghghghgdcdcdcdcbabababa^]^]^]^]ZYZYZYZYVUVUVUVUQRQRQRQRNMNMNMNMLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=787878786565656521212121.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#        - - - - klkkkkkkhghghghgdcdcdcdcbabababa^]^]^]^]ZYZYZYZYVUVUVUVUQRQRQRQRNMNMNMNMLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=787878786565656521212121.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#        - - - - lklklklkhghghghgdcdcdcdcbabababa^]^]^]^]ZYZYZYZYVUVUVUVUQQQQQQRQNMNMNMNMLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=787878784343434321212121.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#        - - - - lklklklkhghghghgdcdcdcdcbabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?>=<;<;<;777777874343434321212121.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#    - - - - lklklklkhghghghgdcdcdcdcbabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;878787874343434321212121.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#    - - - - lklklklkhghghghgdcdcdcdcbabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMLKJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;878787874343434321212121.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#    - - - - }}~~UUVVWWXX--..//00$$##""!! - - GGFFEEDDoonnmmllYYZZ[[\\11223344 - - CCBBAA@@kkjjiihh]]^^__``55667788 ??>>==<>??@@  77665544__^^]]\\iijjkkllAABBCCDD  - - 33221100[[ZZYYXX~~}}||mmnnooppEEFFGGHH - - //..--,,WWVVUUTT~~}}||{{zzyyxxqqrrssttIIJJKKLL!!""##$$++**))((SSRRQQPP{{zzyyxxwwvvuuttuuvvwwxxMMNNOOPP%%&&''((''&&%%$$OONNMMLLwwvvuuttssrrqqpoyyzz{{||QQRRSSTT))**++,, !"##$$% ##""!! KKJJIIHHssrrqqpp~~}}nmlkkjji}}~~UUVVWWXX--..//00 - - %&&''(() - - GGFFEEDDoonnmmll||{{zzyyihhggffe~~}}YYZZ[[\\11223344 )**++,,-CCBBAA@@kkjjiihhxxwwvvuueddccbba||{{zzyy]]^^__``55667788-..//001??>>==<>??@@5667789: 77665544__^^]]\\llkkjjiizzyyxxwwYXXWWVUTppoonnmmiijjkkllAABBCCDD##$$%%;<==>>?? !! - - 33221100[[ZZYYXXhhggffeevvuuttssSRQQPPOOllkkjjiimmnnooppEEFFGGHH&&''(())@@AABBCC""##$$%%//..--,,WWVVUUTT~~}}||ddccbbaarrqqkkjjNNMMLLKKhhggffeeqqrrssttIIJJKKLL**++,,--DDEEFFGG&&''(())++**))((SSRRQQPP{{zzyyxx``__^^]]iihhggffJJIIHHGGddccbbaauuvvwwxxMMNNOOPP..//0011HHIIJJKK**++,,--''&&%%$$OONNMMLLwwvvuutt\\[[ZZYYeeddccbbFFEEDDCC``__^^]]yyzz{{||QQRRSSTT22334455LLMMNNOO..//0011 ##""!! KKJJIIHHssrrqqppXXWWVVUUaa``__^^BBAA@@??\\[[ZZYY}}~~UUVVWWXX6677==>>PPQQRSTU22334455 - - GGFFEEDDoonnmmllTTSSRRQQ]]\\[[ZZ>>==<;:9XXWWVVUU~~}}YYZZ[[\\??@@AABBVWWXXYYZ66778899CCBBAA@@kkjjiihhPPOONNMMYYXXWWQQ87766554TTSSRRQQ||{{zzyy]]^^__``CCDDEEFFZ[[\\]]^::;;<<==??>>==<>??@@AA;;::9988ccbbaa``HHGGFFEELLKKJJII0//..--,LLKKJJIIttssrrqqeeffgghhKKLLMMNNbccddeefBBCCDDEE 77665544__^^]]\\DDCCBBAAHHGGFFEE,++**))(HHGGFFEEppoonnmmiijjkkllOOPPQQWWfgghhiijFFGGHHII !! - - 33221100[[ZZYYXX@@??>>==DDCCBBAA(''&&%%$DDCCBBAAllkkjjiimmnnooppXXYYZZ[[jkklmnopJJKKLLMM""##$$%%//..--,,WWVVUUTT<<;;::99@@??>>==$##"! @@??>>==hhggffeeqqrrsstt\\]]^^__qqrrssttNNOOPPQQ&&''(())++**))((SSRRQQPP8877665577665544<<;;::99ddccbbaauuvvwwxx``aabbccuuvvwwxxRRSSTTUU**++,,--''&&%%$$OONNMMLL443322113322110088776655``__^^]]yyzz{{||ddeeffggyyzz{{||VVWWXXYY..//0011 ##""!! KKJJIIHH00//..--//..--,,44332211\\[[ZZYY}}~~hhiijjkk}}~~ZZ[[\\]]22334455 - - GGFFEEDD,,++**))++**))((00//..--XXWWVVUU~~}}qqrrsstt^^__``aa66778899CCBBAA@@((''&&%%''&&%%$$ - -,,++**))TTSSRRQQ||{{zzyyuuvvwwxxbbccddee::;;<<==??>>==<<$$##""!!## ((''&&%%PPOONNMMxxwwvvuuyyzz{{||ffgghhii>>??@@AA;;::9988 $$##""!!LLKKJJIIttssrrqq}}~~jjkkllmmBBCCDDEE 77665544 - - HHGGFFEEppoonnmmnnooppqqFFGGHHII !! - - 33221100 DDCCBBAAllkkjjiirrssttuuJJKKLLMM""##$$%%//..--,, @@??>>==hhggffeevvwwxxyyNNOOPPQQ&&''(())++**))(( - - - -<<;;::99ddccbbaazz{{||}}RRSSTTUU**++,,--''&&%%$$ - -  88776655``__^^]]~~VVWWXXYY..//0011 ##""!! - -  - - 44332211\\[[ZZYYZZ[[\\]]22334455 - -  !!""##$$00//..--XXWWVVUU~~}}^^__``aa66778899%%&&''((,,++**))TTSSRRQQ||{{zzyybbccddee::;;<<==jjkkllmm##))**++,,((''&&%%PPOONNMMxxwwvvuuffgghhii>>??@@AAnnooppqq$$%%&&''--..//00$$##""!!LLKKJJIIttssrrqqjjkkllmmBBCCDDEE rrssttuu (())**++11223344 - - HHGGFFEEppoonnmmnnooppqqFFGGHHII !! - - vvwwxxyy!!""##$$,,--..//55667788 DDCCBBAAllkkjjiirrssttuuJJKKLLMM""##$$%%zz{{||}}%%&&''((0011223399::;;<<@@??>>==hhggffeevvwwxxyyNNOOPPQQ&&''(())~~))**++,,44556677==>>??@@<<;;::99ddccbbaazz{{||}}RRSSTTUU**++,,----..//00==>>??@@AABBCCDD 88776655``__^^]]~~VVWWXXYY..//0011 11223344AABBCCDDEEFFGGHH - - 44332211\\[[ZZYY~~}}~~}}||ZZ[[\\]]22334455 - - 55667788EEFFGGHHIIJJKKLL!!""##$$00//..--XXWWVVUU~~}}||{{zzyy{{zzyyxx^^__``aa6677889999::;;<>??@@MMNNOOPPQQRRSSTT))**++,,((''&&%%PPOONNMMxxwwvvuuttssrrqqssrrqqppffgghhii>>??@@AAAABBCCDDQQWWXXYYUUVVWWXX--..//00$$##""!!LLKKJJIIttssrrqqkkjjiihhoonnmmlljjkkllmmBBCCDDEEEEFFGGHHZZ[[\\]]YYZZ[[\\11223344 - - HHGGFFEEppoonnmmggffeeddkkjjiihhnnooppqqFFGGHHII !!IIJJKKLL^^__``aa]]^^__``55667788 DDCCBBAAllkkjjiiccbbaa``ggffeeddrrssttuuJJKKLLMM""##$$%%MMNNOOPPbbccddeeaabbccdd99::;;<<@@??>>==hhggffee__^^]]\\ccbbaa``vvwwxxyyNNOOPPQQ&&''(())QQRRSSTTffgghhiieeffgghh==>>??@@<<;;::99ddccbbaa[[ZZYYXX__^^]]\\zz{{||}}RRSSTTUU**++,,--UUVVWWXXjjkkqqrriijjkkllAABBCCDD 88776655``__^^]]WWQQPPOO[[ZZYYXX~~VVWWXXYY..//0011YYZZ[[\\ssttuuvvmmnnooppEEFFGGHH - - 44332211\\[[ZZYYNNMMLLKKWWVVUUTT~~}}||ZZ[[\\]]22334455]]^^__``wwxxyyzzqqrrssttIIJJKKLL!!""##$$00//..--XXWWVVUUJJIIHHGGSSRRQQPP{{zzyyxx^^__``aa66778899aabbccdd{{||}}~~uuvvwwxxMMNNOOPP%%&&''((,,++**))TTSSRRQQFFEEDDCCOONNMMLLwwvvuuttbbccddee::;;<<==eeffgghhyyzz{{||QQRRSSTT))**++,,((''&&%%PPOONNMMBBAA@@??KKJJIIHHssrrqqppffgghhii>>??@@AAiijjkkll}}~~UUVVWWXX--..//00$$##""!!LLKKJJII>>==7766GGFFEEDDoonnmmlljjkkllmmBBCCDDEEmmnnooppYYZZ[[\\11223344 - - HHGGFFEE55443322CCBBAA@@kkjjiihhnnooppqqFFGGHHII~~qqrrsstt]]^^__``55667788 DDCCBBAA1100//..??>>==<>==--,,++**;;::9988ccbbaa``vvwwxxyyNNOOPPQQyyxxwwvvyyzz{{||eeffgghh==>>??@@<<;;::99))((''&&77665544__^^]]\\zz{{||}}RRSSTTUUuuttssrr}}~~iijjkkllAABBCCDD 88776655%%$$##33221100[[ZZYYXX~~VVWWXXYYqqkkjjiimmnnooppEEFFGGHH - - 44332211//..--,,WWVVUUTT~~}}||ZZ[[\\]]hhggffeeqqrrssttIIJJKKLL!!""##$$00//..--++**))((SSRRQQPP{{zzyyxx^^__``aaddccbbaauuvvwwxxMMNNOOPP%%&&''((,,++**))''&&%%$$OONNMMLLwwvvuuttbbccddee``__^^]]yyzz{{||QQRRSSTT))**++,,((''&&%% ##""!! KKJJIIHHssrrqqppffgghhii\\[[ZZYYXXWWQQPPAA@@??>>bbaa``__wwxxyyzzOOPPQQRR00112233JJKKLLMM,,--..//%%$$##""MMLLKKJJuuttssrr||{{zzyyiijjkkllAABBCCDD  - - 33221100[[ZZYYXX~~OONNMMLL==<;:987^^]]\\[[{{||}}~~SSTTUUVV44556677NNOOPPQQ00112233 - - !! IIHHGGFFqqppoonnxxwwvvuummnnooppEEFFGGHH - - //..--,,WWVVUUTT~~}}||KKJJIIHH76655443ZZYYXXWWWWXXYYZZ==>>??@@RSTUVWWX44556677 EEDDCCBBmmllkkjjttssrrqqqqrrssttIIJJKKLL!!""##$$++**))((SSRRQQPP{{zzyyxxGGFFEEDD3221100/VVUUTTSS~~}}||{{[[\\]]^^AABBCCDDXYYZZ[[\8899::;;AA@@??>>iihhggffponmlkkjuuvvwwxxMMNNOOPP%%&&''((''&&%%$$OONNMMLLwwvvuuttCCBBAA@@/..--,,+RRQQPPOOzzyyxxww__``aabbEEFFGGHH\]]^^__`<<==>>??==<<;;::eeddccbbjiihhggfyyzz{{||QQRRSSTT))**++,, !"##$$% ##""!! KKJJIIHHssrrqqpp??>>==77+**))(('NNMMLLKKvvuuttssccddeeffIIJJKKLL`aabbccd@@AABBCC99887766aa``__^^~~}}||feeddccb}}~~UUVVWWXX--..//00 - - %&&''(() - - GGFFEEDDoonnmmll66554433'&&%%$$#JJIIHHGGrrqqppoogghhiijjMMNNOOPPdeeffgghDDEEFFGG - -55443322]]\\[[ZZ{{zzyyxxbaa``__^~~}}YYZZ[[\\11223344 )**++,,-CCBBAA@@kkjjiihh221100//#"! FFEEDDCCnnmmllkkkkllmmnnQQWWXXYYhiijjkklHHIIJJKK !!""## 1100//..YYXXWWVVwwvvuutt^]]\\[[Z||{{zzyy]]^^__``55667788-..//001??>>==<>==<<;;ffeeddccssttuuvv^^__``aassttuuvvPPQQRRSS(())**++))((''&&QQPPOONNjjiihhggUTSRQQPPttssrrqqeeffgghh==>>??@@5667789: 77665544__^^]]\\wwvvuutt&&%%$$##::998877bbaa``__wwxxyyzzbbccddeewwxxyyzzTTUUVVWW,,--..//%%$$##""MMLLKKJJffeeddccOONNMMLLppoonnmmiijjkkllAABBCCDD##$$%%;<==>>?? !! - - 33221100[[ZZYYXXssrrqqpp 66554433^^]]\\[[{{||}}~~ffgghhii{{||}}~~XXYYZZ[[00112233 - - !! IIHHGGFFbbaa``__KKJJIIHHllkkjjiimmnnooppEEFFGGHH&&''(())@@AABBCC""##$$%%//..--,,WWVVUUTT~~}}||oonnmmll - - 221100//ZZYYXXWWjjkkqqrr\\]]^^__44556677 EEDDCCBB^^]]\\[[GGFFEEDDhhggffeeqqrrssttIIJJKKLL**++,,--DDEEFFGG&&''(())++**))((SSRRQQPP{{zzyyxxkkjjiihh..--,,++VVUUTTSS~~}}||{{ssttuuvv``aabbcc8899::;;AA@@??>>ZZYYXXWWCCBBAA@@ddccbbaauuvvwwxxMMNNOOPP..//0011HHIIJJKK**++,,--''&&%%$$OONNMMLLwwvvuuttggffeedd**))((''RRQQPPOOzzyyxxwwwwxxyyzzddeeffgg<<==>>??==<<;;::QQPPOONN??>>==<;``__^^]]yyzz{{||QQRRSSTT22334455LLMMNNOO..//0011 ##""!! KKJJIIHHssrrqqppccbbaa`` - -&&%%$$##NNMMLLKKvvuuttss{{||}}~~hhiijjkk@@AABBCC99887766MMLLKKJJ:9877665\\[[ZZYY}}~~UUVVWWXX6677==>>PPQQRSTU22334455 - - GGFFEEDDoonnmmll__^^]]\\  - -""!! JJIIHHGGrrqqppoollmmnnooDDEEFFGG - -55443322IIHHGGFF54433221XXWWVVUU~~}}YYZZ[[\\??@@AABBVWWXXYYZ66778899CCBBAA@@kkjjiihh[[ZZYYXX FFEEDDCCnnmmllkkppqqrrssHHIIJJKK !!""## 1100//..EEDDCCBB100//..-TTSSRRQQ||{{zzyy]]^^__``CCDDEEFFZ[[\\]]^::;;<<==??>>==<>-,,++**)PPOONNMMxxwwvvuuaabbccddGGHHIIJJ^__``aab>>??@@AA;;::9988ccbbaa``~~}}||{{SSRRQQPP >>==<<;;ffeeddccxxyyzz{{PPQQRRSS(())**++))((''&&==776655)((''&&%LLKKJJIIttssrrqqeeffgghhKKLLMMNNbccddeefBBCCDDEE 77665544__^^]]\\zzyyxxwwOONNMMLL::998877bbaa``__||}}~~TTUUVVWW,,--..//%%$$##""44332211%$$##"! HHGGFFEEppoonnmmiijjkkllOOPPQQWWfgghhiijFFGGHHII !! - - 33221100[[ZZYYXXvvuuttssKKJJIIHH 66554433^^]]\\[[XXYYZZ[[00112233 - - !! 00//..--DDCCBBAAllkkjjiimmnnooppXXYYZZ[[jkklmnopJJKKLLMM""##$$%%//..--,,WWVVUUTTrrqqkkjjGGFFEEDD !!"" - - 221100//ZZYYXXWW\\]]^^__44556677 ,,++**))@@??>>==hhggffeeqqrrsstt\\]]^^__qqrrssttNNOOPPQQ&&''(())++**))((SSRRQQPPiihhggffCCBBAA@@##$$##$$%%&&..--,,++VVUUTTSS~~}}||{{``aabbcc8899::;;((''&&%%<<;;::99ddccbbaauuvvwwxx``aabbccuuvvwwxxRRSSTTUU**++,,--''&&%%$$OONNMMLLeeddccbb??>>==<<%%&&''((''(())****))((''RRQQPPOOzzyyxxwwddeeffgg<<==>>??$$##88776655``__^^]]yyzz{{||ddeeffggyyzz{{||VVWWXXYY..//0011 ##""!! KKJJIIHHaa``__^^;;::9988))**++,,++,,--..&&%%$$##NNMMLLKKvvuuttsshhiijjkk@@AABBCC 44332211\\[[ZZYY}}~~hhiijjkk}}~~ZZ[[\\]]22334455 - - GGFFEEDD]]\\[[ZZ77665544--..//00//001122 - -""!! JJIIHHGGrrqqppoollmmnnooDDEEFFGG - - - - 00//..--XXWWVVUU~~}}qqrrsstt^^__``aa66778899CCBBAA@@YYXXWWQQ332211001122334433445566 FFEEDDCCnnmmllkkppqqrrssHHIIJJKK !!""## ,,++**))TTSSRRQQ||{{zzyyuuvvwwxxbbccddee::;;<<==??>>==<>??@@AA;;::9988LLKKJJII++**))((>>??@@AA;;<<==>>>>==<<;;ffeeddccxxyyzz{{PPQQRRSS(())**++ - - $$##""!!LLKKJJIIttssrrqq}}~~jjkkllmmBBCCDDEE 77665544HHGGFFEE''&&%%$$BBCCDDEE??@@AABB::998877bbaa``__||}}~~TTUUVVWW,,--..// - - HHGGFFEEppoonnmmnnooppqqFFGGHHII !! - - 33221100DDCCBBAA##""!! FFGGHHIICCDDEEFF 66554433^^]]\\[[~~XXYYZZ[[00112233 - -  DDCCBBAAllkkjjiirrssttuuJJKKLLMM""##$$%%//..--,,@@??>>==JJKKLLMMGGHHIIJJ !!"" - - 221100//ZZYYXXWW~~}}||{{}}||{{zz\\]]^^__44556677  - - @@??>>==hhggffeevvwwxxyyNNOOPPQQ&&''(())++**))((77665544NNOOPPQQKKLLMMNN##$$%%&&..--,,++VVUUTTSS~~}}||{{zzyyxxwwyyxxwwvv``aabbcc8899::;;<<;;::99ddccbbaazz{{||}}RRSSTTUU**++,,--''&&%%$$33221100WWXXYYZZOOPPQQRR''(())****))((''RRQQPPOOzzyyxxwwvvuuttssuuttssrrddeeffgg<<==>>?? 88776655``__^^]]~~VVWWXXYY..//0011 ##""!! //..--,,[[\\]]^^SSTTUUVV++,,--..&&%%$$##NNMMLLKKvvuuttssrrqqkkjjqqppoonnhhiijjkk@@AABBCC - - 44332211\\[[ZZYYZZ[[\\]]22334455 - - ++**))(( __``aabbWWXXYYZZ//001122 - -""!! JJIIHHGGrrqqppooiihhggffmmllkkjjllmmnnooDDEEFFGG!!""##$$00//..--XXWWVVUU~~}}^^__``aa66778899''&&%%$$ - - ccddeeff[[\\]]^^33445566 FFEEDDCCnnmmllkkeeddccbbiihhggffppqqrrssHHIIJJKK !!""####$$%%&&%%&&''((,,++**))TTSSRRQQ||{{zzyybbccddee::;;<<==## - - gghhiijj__``aabb778899::BBAA@@??jjiihhggaa``__^^eeddccbbttuuvvwwLLMMNNOO$$%%&&''''(())**))**++,,((''&&%%PPOONNMMxxwwvvuuffgghhii>>??@@AAkkqqrrssccddeeff;;<<==>>>>==<<;;ffeeddcc]]\\[[ZZaa``__^^xxyyzz{{PPQQRRSS(())**++++,,--..--..//00$$##""!!LLKKJJIIttssrrqqjjkkllmmBBCCDDEE ttuuvvwwgghhiijj??@@AABB::998877bbaa``__YYXXWWQQ]]\\[[ZZ||}}~~TTUUVVWW,,--..////00112211223344 - - HHGGFFEEppoonnmmnnooppqqFFGGHHII !! - - xxyyzz{{kkllmmnnCCDDEEFF 66554433^^]]\\[[PPOONNMMYYXXWWVV~~XXYYZZ[[001122333344556655667788 DDCCBBAAllkkjjiirrssttuuJJKKLLMM""##$$%% ||}}~~ooppqqrrGGHHIIJJ !!"" - - 221100//ZZYYXXWWLLKKJJIIUUTTSSRR}}||{{zz\\]]^^__4455667777==>>??99::;;<<@@??>>==hhggffeevvwwxxyyNNOOPPQQ&&''(()) - - - - !!ssttuuvvKKLLMMNN##$$%%&&..--,,++VVUUTTSSHHGGFFEEQQPPOONNyyxxwwvv``aabbcc8899::;;@@AABBCC==>>??@@<<;;::99ddccbbaazz{{||}}RRSSTTUU**++,,-- ""##$$%%wwxxyyzzOOPPQQRR''(())****))((''RRQQPPOODDCCBBAAMMLLKKJJuuttssrrddeeffgg<<==>>??DDEEFFGGAABBCCDD 88776655``__^^]]~~VVWWXXYY..//0011 &&''(()){{||}}~~SSTTUUVV++,,--..&&%%$$##NNMMLLKK@@??>>==IIHHGGFFqqppoonnhhiijjkk@@AABBCCHHIIJJKKEEFFGGHH - - 44332211\\[[ZZYY~~}}~~}}||ZZ[[\\]]22334455 - - **++,,--WWXXYYZZ//001122 - -""!! JJIIHHGG77665544EEDDCCBBmmllkkjjllmmnnooDDEEFFGGLLMMNNOOIIJJKKLL!!""##$$00//..--XXWWVVUU~~}}||{{zzyy{{zzyyxx^^__``aa66778899..//0011[[\\]]^^33445566 FFEEDDCC33221100AA@@??>>iihhggffppqqrrssHHIIJJKKPPQQWWXXMMNNOOPP%%&&''((,,++**))TTSSRRQQ||{{zzyyxxwwvvuuwwvvuuttbbccddee::;;<<==##22334455__``aabb778899::BBAA@@??//..--,,==<<;;::eeddccbbttuuvvwwLLMMNNOOYYZZ[[\\QQRRSSTT))**++,,((''&&%%PPOONNMMxxwwvvuuttssrrqqssrrqqppffgghhii>>??@@AA$$%%&&''66778899ccddeeff;;<<==>>>>==<<;;++**))((99887766aa``__^^xxyyzz{{PPQQRRSS]]^^__``UUVVWWXX--..//00$$##""!!LLKKJJIIttssrrqqkkjjiihhoonnmmlljjkkllmmBBCCDDEE(())**++::;;<<==gghhiijj??@@AABB::998877''&&%%$$55443322]]\\[[ZZ||}}~~TTUUVVWWaabbccddYYZZ[[\\11223344 - - HHGGFFEEppoonnmmggffeeddkkjjiihhnnooppqqFFGGHHII !!,,--..//>>??@@AAkkllmmnnCCDDEEFF 66554433##1100//..YYXXWWVV~~XXYYZZ[[eeffgghh]]^^__``55667788 DDCCBBAAllkkjjiiccbbaa``ggffeeddrrssttuuJJKKLLMM""##$$%%00112233BBCCDDEEooppqqrrGGHHIIJJ !!"" - - 221100//--,,++**UUTTSSRR}}||{{zz\\]]^^__iijjkkqqaabbccdd99::;;<<@@??>>==hhggffee__^^]]\\ccbbaa``vvwwxxyyNNOOPPQQ&&''(())44556677FFGGHHIIssttuuvvKKLLMMNN##$$%%&&..--,,++))((''&&QQPPOONNyyxxwwvv``aabbccrrssttuueeffgghh==>>??@@<<;;::99ddccbbaa[[ZZYYXX__^^]]\\zz{{||}}RRSSTTUU**++,,--==>>??@@JJKKLLMMwwxxyyzzOOPPQQRR''(())****))((''%%$$##""MMLLKKJJuuttssrrddeeffggvvwwxxyyiijjkkllAABBCCDD 88776655``__^^]]WWQQPPOO[[ZZYYXX~~VVWWXXYY..//0011AABBCCDDNNOOPPQQ{{||}}~~SSTTUUVV++,,--..&&%%$$## !! IIHHGGFFqqppoonnhhiijjkkzz{{||}}mmnnooppEEFFGGHH - - 44332211\\[[ZZYYNNMMLLKKWWVVUUTT~~}}||ZZ[[\\]]22334455EEFFGGHHRRSSTTUUWWXXYYZZ//001122 - -""!!  - - EEDDCCBBmmllkkjjllmmnnoo~~qqrrssttIIJJKKLL!!""##$$00//..--XXWWVVUUJJIIHHGGSSRRQQPP{{zzyyxx^^__``aa66778899IIJJKKLLVVWWXXYY[[\\]]^^33445566 AA@@??>>iihhggffppqqrrssuuvvwwxxMMNNOOPP%%&&''((,,++**))TTSSRRQQFFEEDDCCOONNMMLLwwvvuuttbbccddee::;;<<==MMNNOOPPZZ[[\\]]__``aabb778899::==<<;;::eeddccbbttuuvvwwyyzz{{||QQRRSSTT))**++,,((''&&%%PPOONNMMBBAA@@??KKJJIIHHssrrqqppffgghhii>>??@@AAQQWWXXYY^^__``aaccddeeff;;<<==>> - - 99887766aa``__^^xxyyzz{{}}~~UUVVWWXX--..//00$$##""!!LLKKJJII>>==7766GGFFEEDDoonnmmlljjkkllmmBBCCDDEEZZ[[\\]]bbccddee~~}}||{{gghhiijj??@@AABB  - -55443322]]\\[[ZZ||}}~~YYZZ[[\\11223344 - - HHGGFFEE55443322CCBBAA@@kkjjiihhnnooppqqFFGGHHII^^__``aaffgghhiizzyyxxwwkkllmmnnCCDDEEFF  1100//..YYXXWWVV~~]]^^__``55667788 DDCCBBAA1100//..??>>==<>==--,,++**;;::9988ccbbaa``vvwwxxyyNNOOPPQQffgghhiinnooppqqrrqqponmssttuuvvKKLLMMNN##$$%%&&))((''&&QQPPOONNyyxxwwvveeffgghh==>>??@@<<;;::99))((''&&77665544__^^]]\\zz{{||}}RRSSTTUUjjkkqqrrrrssttuulkkjjiihwwxxyyzzOOPPQQRR''(())** !"#%%$$##""MMLLKKJJuuttssrriijjkkllAABBCCDD 88776655%%$$##33221100[[ZZYYXX~~VVWWXXYYssttuuvvvvwwxxyyhggffeed{{||}}~~SSTTUUVV++,,--.. - -#$$%%&&' - - !! IIHHGGFFqqppoonnmmnnooppEEFFGGHH - - 44332211//..--,,WWVVUUTT~~}}||ZZ[[\\]]wwxxyyzzzz{{||}}dccbbaa`WWXXYYZZ//001122 '(())**+ EEDDCCBBmmllkkjjqqrrssttIIJJKKLL!!""##$$00//..--++**))((SSRRQQPP{{zzyyxx^^__``aa{{||}}~~~~`__^^]]\~~}}||{{[[\\]]^^33445566+,,--../AA@@??>>iihhggffuuvvwwxxMMNNOOPP%%&&''((,,++**))''&&%%$$OONNMMLLwwvvuuttbbccddee\[[ZZYYXzzyyxxww__``aabb778899::/0011223==<<;;::eeddccbbyyzz{{||QQRRSSTT))**++,,((''&&%% ##""!! KKJJIIHHssrrqqppffgghhiiXWWVUTSRvvuuttssccddeeff;;<<==>>3445566799887766aa``__^^}}~~UUVVWWXX--..//00$$##""!! - - GGFFEEDDoonnmmlljjkkllmmQQPPOONNrrqqppoogghhiijj??@@AABB##789:;<== - -55443322]]\\[[ZZYYZZ[[\\11223344 - - CCBBAA@@kkjjiihhnnooppqqMMLLKKJJnnmmllkkkkllmmnnCCDDEEFF$$%%&&''>>??@@AA !!""## 1100//..YYXXWWVV~~]]^^__``55667788 ??>>==<>??@@  77665544__^^]]\\zz{{||}}bdQZ|vpfv`fp˂rH~ftlJp˂rfHfr˂pnXv`drtAJ˂pZpvndrtAJvpfHdrtAH~f~HfpbdQZ|`vXntArdXQJ`ے`vXnZHAbpvnltbHAbےXv`fltb~f`Jlt`vXnvnXdrtAvpf|ZdQbbHAZvpfے`JXQrXQJ`dQZ|`JXQr~HfdQZ|vXnbdQZ|vpfv`f~JltH~ftlJp˂rH~fr˂pAZp˂drtAJ˂pZpvndrtAJvpfHdrtAH~ffvnbdQZ|`vXntArdXQJ`ے`vXnZHAbrXQJltbHAbےXv`fltb~f`Jlt`vXnXv`fdrtAvpf|ZdQbbHAZvpfے`JXQ`ےbdQZ|`JXQr~HfdQZ|vXnrbdQZ|r˂p~HfJltH~ftlJp˂rH~fr˂pHAZp˂dtAJl˂pZpvndrtAJ˂pZdrtA`JXQrpvnbdQZ|`vXntArdXQJ`ے`vXnZHAےrXQJtbnHAbےXv`fltbHAbےJlt˂pZXv`fdrtAvpf|ZdQbbHAZvpf`JXQr`ےbAvpf`JXQr~HfdQZ|`JXQrbdQZ|HAbے~HfJltH~ftlJp˂rH~fbtlZrXHf`˂pZpvndrtAJ˂pZdrtA`JXQrvnXv`bdQZ|`vXntArdXQJ`ے`vXn|ZdQbQJ`ےvXnHAbےXv`fltbHAbےJlt˂pZf~HdrtAr˂p|ZdQbbHAZvpftlJbHAZpvpfH`JXQr~HfdQZ|`JXQrbdQZ|HAXQrfpvJltZHAbtlJp˂rH~ftArd˂rX~f`˂pZpvndrtAJ˂pZdrtA˂pZHAnXv`bdQZ|ے`JXQtArdXQJ`ے`vXn|ZdQbQJ`ےvXnHAbےXv`fltbHAbےJltbے`f~HdrtAr˂p|ZdQbbHAZvpftlJbHAZvpfH`JXQr~HfdQZ|`JXQrbdQZ|JXQrfpvnJltZHAbtlJp˂rH~ftAdQbtrXQJ`~f`˂pZpvndrtAJ˂pZdrtA˂pZHAv`fbdQZ|ے`JXQtArdXQJ`ے`vXnlJtAےbHAvXnHAے`Xv`fltbHAbےJltb˂~HfpdrtAr˂p|ZdQbbHAZvpfrd|Zp˂vpfHJXQrb~HfdQZ|`JXQrbdQZ|pZHAbvnXJltZHAbtlJp˂rH~fZdQbtrXQJ`~f`tlJpvndrtAJ˂pZdrtAے`Jv`fbdQZ|ے`JXQtArdXQJ`ے`vXnlJtAےbHAvXntAd|Xv`fltbHAbےJltXQr˂~HfpdrtAr˂p|ZdQbbHAZvpfrdtZprQvpfHZdQbt~HfdQZ|`JXQrbdQZ|pZHAbvnvJltZHAbnXv`p˂rH~flJtArJ`ے~f`lJtApvndrtAJ˂pZdrtAے`pf~HbdQZ|ے`JXQf~HXQJ`ے`vXnd|ZbHAZpvXnrd|Xv`fltbHAbےJltZHAbfpvdrtAr˂pfpvbHAZvpfdQbt璂rXQvpfHZdQbt~HfdQZ|`JXQrbdQZ|ے`JXQnXv`JltZHAbnXv`p˂rH~flJtArJ`ے~f`lJtApvndrtAJ˂pZdrtAr˂pf~HbdQZ|ے`JXQf~HXQJ`ے`vXnd|lbHAZpvXnrd|Xv`fltbHAbےJltZHAbfpvdrtAr˂pfpvbHAZvpfJtArdrQJvpfHZdQbtHfpdQZ|`JXQrbdQZ|ے`JXQnXvf~JltZHAbnXv`p˂rH~f|ZdQbHAZ~f`lJtAvnrdrtAJ˂pZdrtAHAbےHfpvbdQZ|ے`JXQf~HXQJ`ے`vXnbtlp˂rvXnrd|XQJ`ےltbHAbےJlt`JXQrnXvdrtAr˂pfpvbHAZvpfJtArdXQJ`ےvpfHZdQbtHAZpdQZ|`JXQrbdQZ|˂pZ`f~JltZHAbnXv`p˂rH~f|ZdQbHAZ~f`lJtA˂rXQdrtAJ˂pZdrtAHAbےHfpvbdQZ|ے`JXQf~HbdQZ|`vXntArdp˂rvXnrd|J`ےltbHAbےJlt`JXQrnXvdrtAr˂pfpvdrtAvpf|ZdQbXQJbHvpfHZdQbtbHAZpdQZ|`JXQrbdQZ|ے``frQJltZHAbnXv`JltH~ftlJAZp˂~f`lJtA˂rXQdrtAJ˂pZdrtAJXQrJHAZbdQZ|ے`JXQf~HbdQZ|`vXntArdrXQJ`vXnrd|J`ےltbHAbےJlt˂pZHAp˂rdrtAr˂pfpvdrtAvpf|ZdQbےbHvpfHZdQbtbHAZpdQZ|`JXQrbdQZ|bے`XQJ`ےJltZHAbnXv`JltH~ftd|AZp˂~f`lJtA˂rXQdtAJl˂pZdrtAJXQrbHAZbdQZ|ے`JXQf~HbdQZ|`vXnZdQbtrXQJ`vXnrd|J`ےtbnHAbےJlt˂p|Zp˂rdrtAr˂pfpvdrtAvpflJtAbAZpvpfHZdQbtbHAZpvpf`JXQrbdQZ|dQbtXQJ`ےJltZHAbnXv`JltH~frd|˂rb~f`lJtA˂rXQHf`˂pZ`vXnlJtArbHAZbdQZ|ے`JXQf~HbdQZ|`vXnZdQbtdQZ|vXnrd|J`ےvXnHAbےvpfd|Zp˂rdtAJr˂pfpvdrtAr˂pl|ZdrtAJvpfHZdQbtbHAZpvpfH`JXQrH~fdQbtXQJ`ےltbZHAbnXv`JltZHAbdQbnXltb~f`lJtA˂rXQ~f`˂pZZdQbt`vXnlJtAdQbHAZnvpے`JXQf~HbdQZ|ے`JXQv`pvdQZ|vXnrd|J`ےvXnHAbےlJtAvpfbtlp˂rfHfr˂pfpvdrtAr˂pnXvdrtAJvpfHZdQbtbHAZpvpfH`JXQrrd|H~fJtArdXQJ`ے`vXnZHAbnXv`JltZHAb`f~ltb~f`lJtA˂rXQ~f`˂pZZdQbt`vXn|ZdQbHAZvpfے`JXQf~HbdQZ|ے`JXQHfpvdQZ|vXnrd|J`ےvXnHAے`lJtAvpfbtlp˂rH~fr˂pfpvdrtAr˂pnXvdrtAJvpfHZdQbtbHAZpvpfHJXQrbrd|H~fJtArdXQJ`ے`vXnZHAbnXv`JltZHAb`fltb~f`lJtA˂rXQ~f`tlJZdQbt`vXntlJbHAZvpfے`JXQf~HbdQZ|ے`JXQnXv`dQZ|vXnrrd|J`ےvXntAd|lJtAvpftArdp˂rH~fr˂pfpvdrtAr˂pf~HdrtAJ˂pZZdQbtbHAZpvpfHZdQbtrd|H~f|ZdQbXQJ`ے`vXnZHAےnXv`JltZHAbfpvltbHAbےlJtA˂rXQ~f`lJtAZdQbt`vXntlJbHAZvpf`JXQrf~HbdQZ|ے`JXQnXv`dQZ|`JXQrrd|J`ےvXnrd|lJtAvpftArdp˂rH~fbtlfpvdrtAr˂pf~HdrtAJ˂pZZdQbtbHAZpvpfHZdQbtrd|H~f|lJtAXQJ`ے`vXnJtAdnXv`JltZHAbXv`fltbHAbےlJtA˂rXQ~f`lJtAZdQbt`vXnrd|bHAZvpf|ZdQbf~HbdQZ|ے`JXQ~HfdQZ|`JXQrrd|J`ےvXnrd|lJtAvpfZdQbtp˂rH~ftlJfpvdrtAr˂ppvndrtAJ˂pZZdQbtbHAZpvpfHZdQbtrd|H~flJtAXQJ`ے`vXntArdnXv`JltZHAbXv`fltbHAbےlJtA˂rXQ~f`lJtAZdQbn`vXnrd|bHAZvpf|ZdQbf~HbdQZ|ے`JXQ~HfdQZ|`JXQrrd|J`ےvXnrd|Xv`pvpfZdQtArp˂rH~ftlJfpvdrtAr˂pp`fdrtAJ˂pZZdQbnbHAZpvpfHZdQbtvnXH~fd|ZXQJ`ے`vXntArdnXv`JltZHAb~HfpltbHAbےXv`f˂rXQ~f`lJtAv`f`vXndQbt璐bHAZvpf|ZdQbfHfbdQZ|ے`JXQvnXdQZ|`JXQr~HfJ`ےvXnrd|~HfpvpflJtArp˂rH~ftlJpvndrtAr˂pv`fdrtAJ˂pZpvnbHAZpvpfHZdQbtvnXH~fd|ZXQJ`ے`vXntArdrXQJ`JltZHAb~HfpltbHAbےXv`f˂rXQ~f`lJtAv`f`vXndQbtdbHAZvpf|ZdQbےHAZbdQZ|ے`JXQv~dQZ|`JXQr~HfJ`ےvXnrd|nXvvpf|ZdQp˂rH~ftlJp˂rdrtAr˂pHfpvdrtAJ˂pZpvnbHAZpvpfHZdQbt`f~H~fbtlXQJ`ے`vXntArdXQJ`ےJltZHAbnXvltbHAbےXv`f˂rXQ~f`lJtAHfpv`vXnJtArdbHAZvpf|ZdQbbHAZbdQZ|ے`JXQ`f~dQZ|`JXQr~HfJ`ےvXnrd|nXvvpf|ZdQp˂rH~ftlJp˂rdrtAr˂pHfpvdrtAJ˂pZpvnbHAZpvpfHZdQbt`f~H~fbtlXQJ`ے`vXntArdXQJ`ےJltZHAbnXHltbHAbےXv`f˂rb~f`lJtAHXv``vXn|ZdQbbHAZvpf|ZdQbbHAZbdQZ|ے`JXQfpvdQZ|`JXQr~HfdQZ|vXnrd|f~HvpfnXv`p˂rH~ftlJp˂rdtAJr˂pnXv`drtAJ˂pZpvndrtAJvpfHZdQbtfpvH~ff~fpXQJ`ے`vXntArdXQJ`ےltbZHAbf~HltbHAbےXv`fltb~f`lJtAnXv``vXnvnXbHAZvpf|ZdQbbHAZnvpے`JXQfpvdQZ|`JXQr~HfdQZ|vXnrd|f~Hfp`ftAJlJXQr~Hfp`ےbXnvd|ZrXQJ`vpfH|ZdQ`ےHAtbdQZے`J`f~drtAے`JXQf~HXQJ`ے`vXntArdXQJ`ےJltlJtArXv`fltbHAbےXv`f˂rb~f`vˍpf~HftbQZd˂pZHAvnXHAZp˂pfH~dQbtےbHA~f`btlZp˂|drXQr˂HfpvJltr˂pfpvbHAZvpf|ZdQbbHAZbdQZ|d|ZHfpdQZ|`JXQr~HfdQZ|vXnH~ㅐfpvnrtAJlbے`v`frbdQf`vlJtArXQJ`ےvnvpJtArdrXQJ`tAJlpZHAbnXvbdQZ|ZHAbnXv`p˂rH~ftlJp˂rdtAJdQbtvnrdrtAJ˂pZpvndrtAJvpfH`vXnXv`ftbdJXQr~HfpZ|dXnvd|ZbHAZfH~|ZdQےbHAtbdQZے`J`f~dtbJQrf~HXQJ`ے`vXntArdXQJ`ےltblJtArXQJ`ےltbHAbےXv`fltb~f`vˍpf~HfQZ|d˂pZHAvnXrtAJlpfH~dQbtp˂rf`vXbtlZp˂|drXQr˂HfpvdQZ|pZHAfpvbHAZvpf|ZdQbbHAZnvpZdQbtHAZpdQZ|`JXQr~HfdQZ|vXnH~ㅐfpvrtAJlbے`v`ftbdQf`vlJtArXQJ`ےnvpJtArdrXQJ`tAJlpZHAbnXvdrtAJbے`nXv`p˂rH~ftlJp˂r`vXnlJt˂rXQdrtAJ˂pZpvndrtAJvpfH`vXn~HfptbdJXQr~HfpZ|dXnvd|ZbHAZfH~|ZdQےbHAtbdQZے`J`f~ltbJXQrf~HbdQZ|`vXntArdXQJ`ےvpfArd|J`ےltbHAbےXv`fltb~f`vˍpfvnXQZrtA˂pZHAvnXrtAJlpfH~dQbtp`ےf`vXnbtlZp˂|dtAXQr˂HfpvdQZ|pZHAfpvdrtAvpf|ZdQbbHAZH~fZdQbtbHAZpdQZ|`JXQr~HfdQZ|vXnH~ㅐfv`fJltbے`v`ftbdQf`vlJtArbHAZpvfH~JtArdrXQJ`JltpZHAbnXvdrtAdQbے`JnXv`JltH~ftlJp˂r`vXnlJt˂rXQdrtAJ˂pZpvndrtAJvpfH`vXn~HfpbdQZ|JXQr~HfpZ|dXnvd|Z˂rXQf`v|ZdQےbHAbnvے`J`f~Z|dQrpZf~HbdQZ|`vXntArdXQJ`ےvpfArdZJ`ےltbHAbےXv`fltb~f`vˍpfvnXdrtA˂pZHAvnXrtAJlpfH~dQbtJ`ےXnvbtlZp˂pfHXQr˂HfpvrtAJlHAbےfpvdrtAvpf|ZdQbbHAZHXnQbtlbHAZpdQZ|`JXQr~HfdQZ|vXnےH~ㅐfHfpvJltbے`v`ftbdQf`vlJtArbHAZppfH~JtArdrXQJ`f`vXpZHAbnXvtbdQ`JXQrnXv`JltH~ftlJp˂rvpfHJtArd˂rXQdtAJl˂pZpvndrtAJ`JXQr`vXnnXvbdQZ|JXQr~HfpZ|dXnrd|Z˂bf`v|ZdQےbHAnvpے`J`f~Z|d˂pZf~HbdQZ|`vXntArdXQJ`ے~f`|ZdQJ`ےtbnHAbےXv`fltb˂pZvˍpf`f~AJl˂pZHAvnXrtAJl˂pZHAdQbtHAZp˂XnvbtlZp˂fH~XQr˂HfpvrtAJlHAbےfpvdrtAvpf|ZdQbbHAZvXnbtlbHAZpvpf`JXQr~HfdQZ|HAbےH~ㅐfHfpvtbnbے`v`ftbdQbے`lJtArrXQJf~f`JtArdrXQJ`f`vXpZHAbnXv|dr`JXQrnXv`JltH~ftlJp˂rvpfHJtArd˂rXQHf`˂pZpvndrtAJ`JXQr`vXnnXvvpfHJXQr~HfpZ|dJXQrd|Z`ےbvXn|ZdQےbHAnvpے`J`f~tAJl璂ZHAbf~HbdQZ|`vXntArdXQJ`ے~v|ZQbJ`ےvXnHAbےXv`fltb˂pZvˍpf`pvf`v˂pZHAvnXrtAJl˂pZHAdQbtHAZp˂vpfHbtlZp˂fH~XQr˂HfpvtbdQZے`JXfpvdrtAr˂p|ZdQbbHAZpfH~lJtAbHAZpvpfH`JXQr~HfdQZ|HAXQrH~ㅐfnrXQJXnvbے`v`ftbdQbے`lJtArrXQHA~f`JtArdrXQJ`f`vXpZHAnXv|drQr˂pnXv`JltZHAbtlJp˂rf`vrd|˂rXQ~f`˂pZpvndrtAJ˂pZHA`vXn`p˂pfH~JXQr~HfpZ|dJXQrd|ZZp˂vXn|ZdQےbHAnvpے`JXQ`f~tAJl璑ZHAbf~HbdQZ|ے`JXQtArdXQJ`ےXnvZdQbtJ`ےvXnHAbےXv`fltbbے`vˍpfrXQJ`f`v˂pZHAvnXrtAJl˂pZHAdQbtrXQJ`vpf~btlZp˂fH~rbtHfpvtdrtAے`JXfpvdrtAr˂p|ZdQbbHAZpfH~lJtAbHAZpvpfH`JXQr~HfdQZ|JXQrH~ㅐfےbHAXnvbے`v`ftbdQbے`lJtArےbHAf`vXJtArdrXQJ`f`vXlJtAdnXvJltQrZnXv`JltZHAbtlJp˂rf`prd|˂rXQ~f`˂pZpvndrtAJ˂pZHA`vXnZp˂pfH~JXQr~HfpZ|dJXQrd|ZZp˂nr˂|ZdQےbHAnvp|ZdQ`f~bdQZ|Abے`f~HbdQZ|ے`JXQtArdXQJ`ےfH~ZdQbJJ`ےvXnHAے`Xv`fltbb˂vˍpfrXQJ`f`v˂pZHAvnXrtAJl˂pZHAdQbnXrXQJ`pZHAbbtlZp˂fH~btlHfpvdrtAJXQrfpvdrtAr˂p|ZdQbbHAZf`vXtArdbHAZpvpfHJXQrb~HfdQZ|pZHAbH~ㅐfےrXnvے`Jv`ftbdQbے`v`fp˂rے`JJtArdrXQJ`f`vXJtArdnXvJlt˂pZHAnXv`JltZHAbtlJp˂rnvp|ZdQb˂rXQ~f`tlJpvndrtAJے`J`vXnXQJ`ےpfH~XQrbt~HfpZ|dJXQr~HfpbdQZ|XQr˂|ZdQےbHAnvp|ZdQ`f~bdQtAJbے`f~HbdQZ|ے`JXQtArdXQJ`ےfH~tlJJ`ےvXntAd|Xv`fltbXQr˂vˍpfbHAZf`vlJtAvnXrtAJl˂pZHAvnXltbpZHAbbtlZp˂fH~btlHfpvltbJXQrfpvdrtAr˂p|ZdQbbHAZf`vXtArdbHAZpvpfHZdQbt~HfdQZ|pZHAbH~ㅐfp˂rXnvd|Zv`ftbdQbے`v`fdQZ|ے`JJtArdrXQJ`f`vXJtArdnXvdQZ|˂pZAnXv`JltZHAbnXv`p˂rH~f|ZdQb˂rXQ~f`lJtApvndrtAJے`p`vXnXQJ`ےpfH~dQbt~HfpZ|dJXQr~HfpdrtAJXQr˂|ZdQےbHAnvp|ZdQ`fHdrtAJ`JXQrf~HbdQZ|ے`JXQf~HXQJ`ے`vXntJArdJ`ےvXnrd|Xv`fltbZHAbvˍpfbHAXQf`vlJtArvnXrtAJl˂pZHAvnXltbpZHAbbtlZp˂fH~btlfpvltbbtlfpvdrtAr˂pfpvbHAZvpf|ZdbHAZpvpfHZdQbt~HfdQZ|ے`JXQH~ㅐfJ`ےXnvd|Zv`ftbdQbے`v`fdQZ|ے`JJtArdrXQJ`f`vXJtArdnrXQJdQZ|lJtAdnXv`JltZHAbnXv`p˂rH~fQbtl˂rXQ~f`lJtApvndrtAJr˂p`vXnbHAZppfH~dQbt~HfpZ|dJXQr~HfpdtbdQXQr˂|ZdQےbHAnvp|ZdQ`ےHAtbn|ZdQbf~HbdQZ|ے`JXQf~HXQJ`ے`vXnJtArdJ`ےvXnrd|Xv`fltbZHAbvˍpf˂rXQf`vlJtArvnXrtAJl˂pZHAvnXZ|dpZHAbbnXvZp˂fH~btlZp˂vp`tlJfpvdrtAr˂pfpvbHAZf`|ZdbHAZpvpfHZdQbtHfpdQZ|ے`JXQH~ㅐfJ`ےXnvd|Zv`ftbdQbے`v`frtAJlے`J`f~rXQJ`f`vXJtArdrXQJ`vXntArdnXv`JltZHAbnXv`p˂rvXnQbtl˂rXQ~f`lJtAvnrdrtAJHAbے`vXnbHAZppfH~dQbtHfpvZ|dJXQr~HfptbdQXQr˂HfpvےbHAnvp|ZdQےbHAvpfH|ZdQbf~HbdQZ|ے`JXQf~HXQJ`ےvpfHJAr|J`ےvXnrd|XQJ`ےltb`JXQrvˍpf`ےbf`vlJtArnrXQrtAJl˂pZHAvnXZ|dpZHAbnXvZp˂fH~btlZp˂~f`tlJfpvdrtAr˂pfpvbHAZ~f`ZdQbnbHAZpvpfHZdQbtHAZpdQZ|˂pZH~ㅐfHAZp˂Xnvd|ZJ`ےtbdQbے`v`frtAdQZے`J`f~rXQJ`f`vXJtArdrXQJ`vXntArdnXv`JltZHAbnXv`p˂rvXnXv`f˂rXQ~f`lJtA˂rXQdrtAJHAbے`vXnrXQJpfH~dQbtHAZp˂Z|dJXQr~Hfp|drXQr˂HfpvےbHAnvp|ZdQےbHAvpfH|ZdQbfHfbdQZ|ے`JXQf~HbdQZ|vp`v~HfJ`ےvXnrd|J`ےltb`JXQrvˍp|`ےbf`vlJtArrXQJrtAJl˂pZHAvnXtAJlpZHAbnXvZp˂fH~btlZp˂XnvtlJpvndrtAr˂pfpvdrtAXnrpvnbHAZpvpfHZdQbtbHAZpdQZ|ے`drQtHAZp˂Xnvd|Z`ےbtbdQbے`v`ftbdQZے`J`f~rXQJ`f`vXJtArdrXQJ`pfH~tArdrXQJ`JltZHAbnXv`Jlt˂p`JXv`f˂rXQ~f`lJtA˂rXQdrtAJJXQrJltbHApfH~dQbtHAZp˂Z|dJXQr~Hfp|drXQr˂HfpvےbHAnvp|ZdQےbHAf`v|ZdQbےHAZbdQZ|ے`JXQf~HbdQZ|XQr˂~HfJ`ےvXnrd|J`ےltb˂pZHAbAdZ|Zp˂f`vlJtArrXQJrtAJl˂pZHAvnXtAJl|pZHAbnXvZp˂fH~btlZp˂XnvtlJp˂rdrtAr˂pfpvdrtApZHAbpvnbHAZpvpfHZdQbtbHAZpdQZ|bے`drQtrXQJ`Xnvd|Z`ےbtbdQbے`v`fdrtAے`J`f~rbdQZf`vXJtArdrXQJ`pfH~tArdXQJ`ےJltZHAbnXv`Jltے`JXv`f˂rXQ~f`lJtA˂rXQdtAJlJXQrJltےbHApfH~dQbtHAZp˂Z|dJXQr~HfpJltXQr˂Hfpv|drnvp|ZdQےbHAvp|ZdQbbHAZbdQZ|ے`JXQf~HbdQZ|XQr˂~HfJ`ےvXnrd|J`ےtbn˂p`ZbAdZ|Zp˂f`vlJtArrXQJtAJl˂pZHAvnXbdQZ|pZHAbnXvtAJlfH~btlZp˂fH~tlJp˂rdrtAr˂pfpvdrtApZHAXQpvnbHAZpvpfHZdQbtbHAZpvpfQXb㉀ۂdrQtrXQHAZXnvd|Z`ےbtbnbے`v`fdrtAے`J`f~tbdQZf`vXJtArdrXQJ`f`vXtArdXQJ`ےJltZHAbnXv`Jltr˂pXv`f˂rb~f`lJtA˂rXQHf`pJAHrJltp˂rpfH~dQbtHAZp˂vpfHJXQr~HfpJltXQr˂Hfpv|drnvp|ZdQےbHAnvp|ZdQbbHAZbdQZ|ے`JXQf~HbdQZ|ZHAb~HfdQZ|vXnrd|J`ےvXnˁ`ZbAdZ|XQJ`ےf`vlJtArrXQJf`v˂pZHAvnXdrtAJpZHAbnXvtAJlfH~btlZp˂fH~tlJp˂rdtAJr˂pfpvdrtAے`JXQpvndrtAJvpfHZdQbtbHAZpvpfHQXb㉀ۂdrQtbHAZXnvd|Z`ےbXnvbے`v`fltbے`J`f~tbdQZf`vXJtArdrXQJ`f`pftArdXQJ`ےltbZHAbnXv`Jltr˂pXv`fltb~f`lJtA˂rXQ~f`pJAHQXJltp˂rpfH~dQbtHAZp˂pfH~JXQr~HfpdQZ|XQr˂Hfpv|drnvp|ZdQےbHAH~f|ZdQbbHAZnvpے`JXQf~HbdQZ|ZHAb~HfdQZ|vXnrd|J`ےvXnb㉀ۑpbAdZ|XQJ`pf`vlJtArrXQJf`v˂pZHAvnXdrtAJpZHAbnXvtAJlfH~btlZp˂`vXntlJp˂rfHfr˂pfpvdrtA˂pZpvndrtAJvpfHZdQbtbHAZpvpfHJAHr󙐂drQt˂rbXnvd|Z`ےbXnvbے`v`fltbے`J`f~tbdQZf`vXJtArdrXQJ`vpftArdXQJ`ے`vXnZHAbnXv`JltHAbےXv`fltb~f`lJtA˂rXQ~f`ˁ`ZQXJltdQZ|pfH~dQbtHAZp˂pfH~JXQr~HfpdQtAJlXQr˂Hfpv|drnr˂|ZdQےbHAH~f|ZdQbbHAZvpfے`JXQf~HbdQZ|`JXQr~HfdQZ|vXnrd|J`ےvXnb㉀ۑpbAdZ|rAJltf`vlJtArrXQJf`v˂pZHAvnXtbdQpZHAbnXvtAJlpZHAbbtlZp˂`vXHtlJp˂rH~fr˂pfpvdrtA˂pZpvndrtAJvpfHZdQbtbHAZpvpfHJAHr󙐂drQtbdQZ|Xnvd|Z`ےbXnvے`Jv`fZ|dے`J`f~tbdQZے`JJtArdrXQJ`~f`tArdXQJ`ے`vXnZHAbnXv`JltHAbےXv`fltb~f`lJtA˂rXQ~f`ۑpJJltdrtpfH~dQbtHAZp˂pfH~XQrbt~HfprtAJlXQr˂Hfpv|drXQr˂|ZdQےbHAvXn|ZdQbbHAZvpfے`JXQf~HbdQZ|`pZHA~HfdQZ|vXnrrd|J`ےvXnAHr󙐂bAdZ|AJltf`vlJtArrXQJf`vlJtAvnXtbdQpZHAbnXvtAJlpZHAbbtlZp˂vpfHtlJp˂rH~fr˂pfpvdrtAbے`pvndrtAJ˂pZZdQbtbHAZpvpfH`ZQXbdrQtbdQZ|Xnrd|Z`ےbXnvd|Zv`fZ|l璐ے`J`f~tbdQZے`JJtArdrXQJ`~f`tArdXQJ`ے`vXnZHAےnXv`JltJXQrXv`fltbHAbےlJtA˂rXQ~f`ۑpJJltdrAJ˂pZHAdQbtHAZp˂pfH~dQbt~HfptbnXQr˂Hfpv|drXQr˂|ZdQےbHAvXn|ZdQbbHAZvpf`JXQrf~HbdQZ|˂pZHA~HfdQZ|`JXQrrd|J`ےvXnAHr󙐂bAdZ|tbdQbے`lJtArrXQJf`vlJtArvnXvpffpZHAbnXvtAJlpZHAbbtlZp˂f`vtlJp˂rH~fbtlfpvdrtAbے`pvndrtAJ˂pZZdQbtbHAZpvpfH`pJAHdrQtZ|dJXQrd|Z`ےbXnvd|Zv`f`vXnے`J`f~tbdQZے`JJtArdrXQJ`XnvtArdXQJ`ے`vXnJtAdnXv`JltJXQHAbXv`fltbHAbےlJtA˂rXQ~f`r󙐂ˁ`JltrtAJl˂pZHAdQbtHAZp˂pfH~dQbt~HfpvpfXQr˂Hfpv|drXQr˂|ZdQےbHApfH~|ZdQbbHAZvpf|ZdQbf~HbdQZ|ے`J~HfdQZ|`JXQrrd|J`ےvXnZQXb㉀bAdZ|tbdQbے`lJtArrXQJf`vlJtArvnXH~fpZHAnXvtAJlpZHAbbnXvZp˂f`vtlJp˂rH~ftlJfpvdrtAXQr˂pvndrtAJ˂pZZdQbtbHAZpvpfHۑpJAHdrQtZ|dJXQrd|Z`ےbXnvd|Zv`f`vXnے`JXQ`f~tbdQZے`J`f~rXQJ`XnvtArdXQJ`ے`vXntArdnXv`JltpZHAbXv`fltbHAbےlJtA˂rXQ~f`r󙐂ˁ`JltrtAJ˂pZHAdQbtHAZp˂pfH~dQbtHfpvvpfrbtHfpv|drXQr˂HfpvےbHAp`vX|ZdQbbHAZvpf|ZdQbf~HbdQZ|ے`J~HfdQZ|`JXQrrd|J`ےvXnZQXAHrbAdZ|bdQZ|bے`lJtArrXQJf`vlJtArnrXQH~fvXlJtAdnXvtAJlpZHAbnXvZp˂nr˂tlJp˂rH~ftlJfpvdrtAXQrpvndrtAJ˂pZZdQbnbHAZpvpfHˁ`ZdrQtdrtAJXQrd|Z`ےbXnvd|ZJ`p˂nvp|ZdQ`f~tbdQZے`J`f~rXQJ`pZAb`tArdXQJ`ے`vXntArdnXv`Jltے`JXQXv`fltbHAbےXv`f˂rXQ~f`QXb㉀JltJlt˂pZHAdQbnXHAZp˂pfH~dQbt璀rXQJfH~btlHfpv|drXQr˂HfpvےbHAJXQr|ZdQbbHAZvpf|ZdQbfHfbdQZ|r˂p~HfdQZ|`JXQr~HfJ`ےvXnpJAHrbAdZ|bdQZ|bے`v`frXQJf`vlJtAr`ےbf`vXJtArdnXvtAJlpZHAbnXvZp˂˂pZHtlJp˂rH~ftlJpvndrtAZHAbpvndrtAJ˂pZpvnbHAZpvpfHˁ`ZdrQtdrtAJXQr~Hfp`ےbXnvd|ZHAZp˂nvp|ZdQ`f~tbdQZے`J`f~rXQJ`Abے`tArdXQJ`ے`vXntArdrXQJ`Jltے`JXQXv`fltbHAbےXv`f˂rXQ~f`QXb㉀JltJlbQZ˂pZHAvnXHAZp˂pfH~dQbt璀rXQJfH~btlHfpv|drXQr˂HfpvےbHAJXQr|ZdQbbHAZvpf|ZdQbےHAZbdQZ|r˂p~HfdQZ|`JXQr~HfJ`ےvXnˁ`ZQXbAdZ||drbے`v`frXQJf`vlJtAr`ےfvnJtArdnXvtAJlpZHAbnXvZp˂˂pZHnXv`p˂rH~ftlJp˂rdrtA`JXQrpvndrtAJ˂pZpvnbHAZpvpfHb㉀ۑpdrQttAJlJXQr~Hfp`ےbXnvd|ZrXQJ`vpfH|ZdQ`fHtbdQZے`J`f~rbdQZAbJXQf~HXQJ`ے`vXntArdXQJ`ےJltbtlXv`fltbHAbےXv`f˂rXQ~f`JAHrJlttbdQZ˂pZHAvnXHAZp˂pfH~dQbtےbHA~f`btlfpv|drXQr˂Hfpv|ltr˂pfpvbHAZvpf|ZdQbbHAZbdQZ|JA|Z~HfdQZ|`JXQr~HfJ`ےvXnˁ`ZQXbAdZ||drbے`v`frXQJf`vlJtArZp˂vXnJtArdnrXQJtAJlpZHAbnXvbdQZ|ZHAbnXv`p˂rH~ftlJp˂rdrtAdQbtpvndrtAJ˂pZpvnbHAZpvpfHb㉀XndrQt------------------------------------------................................ \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv38_3.dat b/mpdf/qrcode/data/qrv38_3.dat deleted file mode 100644 index 48fce79..0000000 --- a/mpdf/qrcode/data/qrv38_3.dat +++ /dev/null @@ -1,337 +0,0 @@ -~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdcbabababa~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdcbabababa~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdcbabababa~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdcbabababa~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdcbabababa~}~}~}|{zyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdcbabababa|{|{|{|{zyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdcbabababa|{|{|{|{zyzyzyzyxwxwxwvutstststsrqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdcbabababa|{|{|{|{zyzyzyzyvuvuvuvutstststsrqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdcbabababa|{|{|{|{zyzyzyzyvuvuvuvutstststsrqrqrqponmnmnmnmjijijijihghghghgdcdcdcdcbabababa|{|{|{|{zyzyzyzyvuvuvuvutstststspopopoponmnmnmnmjijijijihghghghgdcdcdcdcbabababa|{|{|{|{zyzyzyzyvuvuvuvutstststspopopoponmnmnmnmjijijijihghghghgdcdcdcdcbabababa|{|{|{|{zyzyzyzyvuvuvuvutstststspopopoponmnmnmnmjijijijihghgfefedcdcdcdcbabababa|{|{|{|{zyzyzyzyvuvuvuvutstststspopopoponmnmnmnmjijijijifefefefedcdcdcdcbabababa|{|{|{|{zyzyzyzyvuvuvuvutstststspopopoponmnmnmlkjijijijifefefefedcdcdcdcbaba`_`_|{|{|{|{zyzyzyzyvuvuvuvutstststspopopopolklklkkkjijijijifefefefedcdcdcdc`_`_`_`_|{|{|{|{zyzyzyzyvuvuvuvutstststspopopopokkklklkljijijijifefefefedcdcdcdc`_`_`_`_|{|{|{|{zyzyzyzyvuvuvuvutstststspopopopoklklklkljijijijifefefefedcdcdcdc`_`_`_`_|{|{|{|{zyzyzyzyvuvuvuvutstststspopopopoklklklkljijijijifefefefedcdcdcdc`_`_`_`_|{|{|{|{zyzyzyzyvuvuvuvutstststspopopopoklklklkljijijijifefefefedcdcdcdc`_`_`_`_|{|{|{|{zyzyzyzyvuvuvuvutstststspopopopoklklklkljijijijifefefefedcdcdcdc`_`_`_`_|{|{|{|{zyzyzyzyvuvuvuvutstststspopopopoklklkkkkjijijijifefefefedcdcdcdc`_`_`_`_|{|{|{|{zyzyzyzyvuvuvuvutstststspopopopokklklklkjijijijifefefefedcdcdcdc`_`_`_`_|{|{|{|{zyzyzyzyvuvuvuvutstststspopopopolklklklkjijijijifefefefedcdcdcdc`_`_`_`_|{|{|{|{zyzyzyzyvuvuvuvutstststspopopopolklklklkjijijijifefefefedcdcdcdc`_`_`_`_~}|{|{|{|{zyzyzyzyvuvuvuvutstststspopopopolklklklkjijijijifefefefedcdcdcdc`_`_`_`_~}~}~}~}|{|{|{|{zyzyzyzyvuvuvuvutstststspopopopolklklklkjijijijifefefefedcdcdcdc`_`_`_`_~}~}~}~}|{|{|{|{zyzyzyxwvuvuvuvutstststspopopopolklkkkkkjijijijifefefefedcdcdcdc`_`_`_`_~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvutstststspopopopoklklklkljijijijifefefefedcdcdcdc`_`_`_`_~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvutststsrqpopopopoklklklkljijijijifefefefedcdcdcdc`_`_`_`_~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqpopopopoklklklkljijijijifefefefedcdcdcdc`_`_`_`_~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqpopopopoklklklkljijijijifefefefedcdcdcdc`_`_`_`_~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqpopopopoklklklkljijihghgfefefefedcdcdcdc`_`_`_`_~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqpopopopoklkkkkkkhghghghgfefefefedcdcdcdc`_`_`_`_~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqpopopopolklklklkhghghghgfefefefedcdcbaba`_`_`_`_~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqpopopopolklklklkhghghghgfefefefebabababa`_`_`_`_~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqpopopopolklklklkhghghghgfefefefebabababa`_`_`_`_~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqpopopopolklklklkhghghghgfefefefebabababa`_`_`_`_~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqpopopopolklklklkhghghghgfefefefebabababa`_`_`_`_~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqpopopopolkkkkkklhghghghgfefefefebabababa`_`_`_`_~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqpopopopoklklklklhghghghgfefefefebabababa`_`_`_`_~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqpopopopoklklklklhghghghgfefefefebabababa`_`_`_`_~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqpopopopoklklklklhghghghgfefefefebabababa`_`_`_`_~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqponmnmnmklklklklhghghghgfefefefebabababa`_`_`_`_~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmklklklklhghghghgfefefefebabababa`_`_`_`_~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmkkkkkklkhghghghgfefefefebabababa`_`_`_`_~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmlklklklkhghghghgfefefefebabababa`_`_`_`_~}~}~}~}|{|{|{zyxwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmlklklklkhghghghgfefefefebabababa`_`_`_`_~}~}~}~}zyzyzyzyxwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmlklklklkhghghghgfefefefebabababa`_`_`_`_^]^]^]^]~}~}~}~}zyzyzyzyxwxwxwxwvuvuvutsrqrqrqrqnmnmnmnmlklklklkhghghghgfefefefebabababa`_`_`_`_^]^]^]^]~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmlklklklkhghghghgfefefefebabababa`_`_`_`_^]^]^]^]~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmkkkklklkhghghghgfefefefebabababa`_`_`_`_^]^]^]^]~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmlklkjijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijijihghghghgfefedcdcbabababa`_`_`_`_^]^]^]^]~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdcbabababa`_`_`_`_^]^]^]^]~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdcbabababa`_`_^]^]^]^]^]^]~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdcbabababa^]^]^]^]^]^]^]^]~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdcbabababa^]^]^]^]^]^]^]^]~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdcbabababa^]^]^]^]^]^]^]^]~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdcbabababa^]^]^]^]^]^]^]^]~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdcbabababa^]^]^]^]^]^]^]^]^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSQRQRQRQRNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;7878787865656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        ^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSQRQRQRQRNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;7878787865656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        ^]^]^]^]\[\[ZYZYXWXWXWXWTSTSTSTSQRQRQRQRNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;7878787865656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        ^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSQRQRQQQQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;7777778765656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        ^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSQQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;8787878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        ^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSRQPOPOPONMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;8787878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        ^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPONMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;8787878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        - ^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPONMNMNMNMLKJIJIJIHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;8787878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        - - - - ^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;8787878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        - - - - ^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGFEDCDCDCBABABABA@?@?@?@?<;<;<;<;7777787865656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        - - - - ^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA@?@?@?@?<;<;<;<;7878787865656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        - - - - ^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA@?>=>=>=<;<;<;<;7878787865656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        - - - - ^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;7878787865656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        - - - - ^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;7878787865656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        - - - - ^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;7878787743434343212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        - - - - ^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;7777878743434343212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        - - - - ^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;878787874343434321212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        - - - - ^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;878787874343434321212121.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        - - - - ^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#        - - - - ^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#        - - - - ^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;878787774343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!        - - - - ^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;777878784343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!        - - - - ^]^]\[\[ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;787878784343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!        - - - - \[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;787878784343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!        - - - - \[\[\[\[ZYZYZYZYXWXWVUVUTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;:9787878784343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!        - - - - \[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:9787878784343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!    - - - - \[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:9787877774343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!   - - - - \[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPONMLKLKLKJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:9778787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"! - - - - \[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:9878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"! - - - - \[\[\[\[ZYZYZYZYVUVUVUVUTSTSRQRQPOPOPOPOLKLKLKLKJIJIJIJIHGFEFEFEDCDCDCDCBABABABA>=>=>=>=:9:9:9:9878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"! - - - - \[\[\[\[ZYZYZYZYVUVUVUVURQRQQQQQPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDCBABABABA>=>=>=>=:9:9:9:9878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"! - - - - \[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDCBA@?@?@?>=>=>=>=:9:9:9:9878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"! - - - - \[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:9878777774343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"! - - - - \[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:9878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"! - - - - \[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:9656565654343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"! - - - - \[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:9656565654343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"! - - - - \[\[\[\[ZYZYZYZYVUVUVUVURQQQQQQRPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565434343430/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"! - - - - \[\[\[\[ZYZYZYZYVUVUVUVUQRQRQRQRPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565434343430/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"! - - - - \[\[\[\[ZYZYZYZYVUVUVUVUQRQRQRQRPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"! - - - - \[\[\[\[ZYZYZYZYVUVUVUVUQRQRQRQRPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%"!"!"!"! - - - - \[\[\[\[ZYZYZYZYVUVUVUVUQRQRQRQRPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - - \[\[\[\[ZYZYZYZYVUVUVUVUQRQRQRQRPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - - \[\[\[\[ZYZYZYZYVUVUVUVUQQQQQQRQPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - - \[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - - \[\[\[\[ZYZYXWXWVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - - \[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - - \[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"! - - - - \[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQPONMNMNMLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!    - - - - \[\[\[\[XWXWXWXWVUVUVUVUQQQQQRQRNMNMNMNMLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!    - - - \[\[\[\[XWXWXWXWVUVUVUVUQRQRQRQRNMNMNMNMLKLKLKLKJIHGHGHGFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!    \[\[\[\[XWXWXWXWVUVUVUVUQRQRQRQRNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!    \[\[\[\[XWXWXWXWVUVUVUVUQRQRQRQRNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEDCBABABA@?@?@?@?>=>=>=>=:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!    \[\[\[\[XWXWXWXWVUVUVUVUQRQRQRQRNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?>=>=>=>=:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!    \[\[\[\[XWXWXWXWVUVUVUVUQRQRQRQQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?>=<;<;<;:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!      \[\[\[\[XWXWXWXWVUVUVUVUQQQQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#        \[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#        \[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#        \[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#        \[\[\[\[XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:987878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#        \[\[\[\[XWXWXWXWTSTSTSTSRQRQRQQQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;8777777865656565212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('$#$#$#$#        \[\[\[\[XWXWXWXWTSTSTSTSQQQRQRQRNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;7878787865656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        \[\[\[\[XWXWXWXWTSTSTSTSQRQRQRQRNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;7878787865656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        aabbccddAABBCCDDDDCCBBAA]]^^__``TTSSRRQQ``aabbcc@@AABBCC ggffeedd::;;<<==wwvvuutt__``aabb''(())**221100//ooppqqrreeffgghhEEFFGGHH@@??>>==aabbccdd - - PPOONNMMddeeffggDDEEFFGG - - ccbbaa``>>??@@AAssrrqqppccddeeff++,,--....--,,++ssttuuvviijjkkllIIJJKKLL <<;;::99eeffgghh LLKKJJIIhhiijjkkHHIIJJKK__^^]]\\BBCCDDEEoonnmmllgghhiijj//001122**))((''wwxxyyzzmmnnooppMMNNOOPP!!""##$$88776655iijjkkllHHGGFFEEqqrrssttLLMMNNOO[[ZZYYXXFFGGHHIIkkjjiihhkkqqrrss33445566&&%%$$##~~}}||{{{{||}}~~qqrrssttQQWWXXYY%%&&''((44332211mmnnooppDDCCBBAAuuvvwwxxPPQQRSTUWWVVUUTTJJKKLLMM ggffeeddttuuvvww778899::""!! zzyyxxwwuuvvwwxxZZ[[\\]]))**++,,00//..--qqrrsstt@@??>>==yyzz{{||VWWXXYYZ SSRRQQPPNNOOPPQQ - - ccbbaa``xxyyzz{{;;<<==>>vvuuttssyyzz{{||^^__``aa--..//00,,++**))uuvvwwxx <<;;::99}}~~Z[[\\]]^ - - OONNMMLLRRSSTTUU__^^]]\\||}}~~??@@AABBrrqqppoo}}~~bbccddee11223344((''&&%%~~}}yyzz{{||!!""##$$88776655^__``aabKKJJIIHHVVWWXXYY[[ZZYYXXCCDDEEFFnnmmllkkffgghhii55667788$$##""!!||{{zzyy}}~~%%&&''((44332211bccddeefGGFFEEDDZZ[[\\]]WWVVUUTTGGHHIIJJjjiihhggjjkkqqrr99::;;<< xxwwvvuu))**++,,00//..--fgghhiijCCBBAA@@^^__``aa SSRRQQPPKKLLMMNN ffeeddcc~~}}ssttuuvv==>>??@@ttssrrqq--..//00,,++**))jkklmnop??>>==<>??@@ttssrrqq}}~~**++,,--//..--,,rrssttuu??>>==<<__``aabb - -RRQQPPOOllkkjjiiQQRRSSTT``__^^]]AABBCCDDppoonnmm..//0011++**))((vvwwxxyy !!;;::9988ccddeeff NNMMLLKKhhggffeeUUVVWWXX\\[[ZZYYEEFFGGHHllkkjjii22334455''&&%%$$~~}}||zz{{||}}""##$$%%77665544gghhiijjJJIIHHGGddccbbaaYYZZ[[\\XXWWVVUUIIJJKKLL hhggffee66778899##""!! {{zzyyxx~~&&''(())33221100~~kkllmmnnFFEEDDCC``__^^]]]]^^__``TTSSRRQQMMNNOOPP - - ddccbbaa::;;<<==wwvvuutt**++,,--//..--,,}}||{{zzooppqqrrBBAA@@??\\[[ZZYYaabbccdd - - PPOONNMMQQRRSSTT``__^^]]>>??@@AAssrrqqpp..//0011++**))((yyxxwwvvssttuuvv>>==<<;;XXWWVVUUeeffgghh LLKKJJIIUUVVWWXX\\[[ZZYYBBCCDDEEoonnmmll22334455''&&%%$$uuttssrrwwxxyyzz !!""::998877TTSSRRQQiijjkkllHHGGFFEEYYZZ[[\\XXWWVVUUFFGGHHIIkkjjiihh66778899##""!! qqkkjjii{{||}}~~##$$%%&&66554433PPOONNMMmmnnooppDDCCBBAA]]^^__``TTSSRRQQ~~}}JJKKLLMM ggffeedd::;;<<==hhggffee''(())**221100//LLKKJJIIqqrrsstt@@??>>==aabbccdd - - PPOONNMM||{{zzyyNNOOPPQQ - - ccbbaa``>>??@@AAddccbbaa++,,--....--,,++HHGGFFEEuuvvwwxx <<;;::99eeffgghh LLKKJJIIxxwwvvuuRRSSTTUU__^^]]\\BBCCDDEE``__^^]]~~}}||{{//001122**))((''DDCCBBAAyyzz{{||!!""##$$88776655iijjkkllHHGGFFEEttssrrqqVVWWXXYY[[ZZYYXXFFGGHHII\\[[ZZYYzzyyxxww33445566&&%%$$##~~}}||{{@@??>>==~~}}||{{}}~~%%&&''((44332211mmnnooppDDCCBBAAkkjjiihhZZ[[\\]]WWVVUUTTJJKKLLMM XXWWQQPPvvuuttss778899::""!! zzyyxxww<<;;::99zzyyxxww))**++,,00//..--qqrrsstt@@??>>==ggffeedd^^__``aa SSRRQQPPNNOOPPQQ - - OONNMMLLrrqqponm;;<<==>>vvuuttss88776655vvuuttss--..//00,,++**))uuvvwwxx <<;;::99ccbbaa``bbccddee - - OONNMMLLRRSSTTUUKKJJIIHHlkkjjiih??@@AABBrrqqppoo44332211rrqqkkjj11223344((''&&%%~~}}yyzz{{||!!""##$$88776655__^^]]\\ffgghhiiKKJJIIHHVVWWXXYYGGFFEEDDhggffeedCCDDEEFFnnmmllkk00//..--iihhggff~~}}||55667788$$##""!!||{{zzyy}}~~%%&&''((44332211[[ZZYYXXjjkkllmmGGFFEEDDZZ[[\\]]CCBBAA@@dccbbaa`GGHHIIJJjjiihhgg,,++**))eeddccbb{{zzyyxx99::;;<< xxwwvvuu))**++,,00//..--WWQQPPOOnnooppqqCCBBAA@@^^__``aa ??>>==77`__^^]]\KKLLMMNN ffeeddcc((''&&%%aa``__^^wwvvuutt==>>??@@ttssrrqq--..//00,,++**))NNMMLLKKrrssttuu??>>==<>??@@>>==7766wwvvuutt**++,,--//..--,,rrssttuu&&%%$$##IIHHGGFF__``aabb - -RRQQPPOOHHGGFFEEa``__^^]QQRRSSTT``__^^]]AABBCCDD55443322ssrrqqpp..//0011++**))((vvwwxxyy !!EEDDCCBBccddeeff NNMMLLKK DDCCBBAA]\\[[ZZYUUVVWWXX\\[[ZZYYEEFFGGHH1100//..oonnmmll22334455''&&%%$$~~}}||zz{{||}}""##$$%%AA@@??>>gghhiijjJJIIHHGG - - @@??>>==YXXWWVUTYYZZ[[\\XXWWVVUUIIJJKKLL --,,++**kkjjiihh66778899##""!! {{zzyyxx~~&&''(())==<;:987kkllmmnnFFEEDDCC - - 77665544SRQQPPOO]]^^__``TTSSRRQQMMNNOOPP - - ))((''&&ggffeedd::;;<<==wwvvuutt**++,,--76655443ooppqqrrBBAA@@?? 33221100NNMMLLKKaabbccdd - - PPOONNMMQQRRSSTT%%$$##ccbbaa``>>??@@AAssrrqqpp..//0011 - -3221100/ssttuuvv>>==<<;;//..--,,JJIIHHGGeeffgghh LLKKJJIIUUVVWWXX__^^]]\\BBCCDDEEoonnmmll22334455 /..--,,+wwxxyyzz !!""::998877++**))((FFEEDDCCiijjkkllHHGGFFEEYYZZ[[\\[[ZZYYXXFFGGHHIIkkjjiihh66778899+**))(('~~}}||{{{{||}}~~##$$%%&&66554433''&&%%$$BBAA@@??mmnnooppDDCCBBAA]]^^__`` - - WWVVUUTTJJKKLLMM ggffeedd::;;<<== - - '&&%%$$#zzyyxxww''(())**221100// ##>>==<;:9qqrrsstt@@??>>==aabbccdd  SSRRQQPPNNOOPPQQ - - ccbbaa``>>??@@AA #"! vvuuttss++,,--....--,,++!!""##$$87766554uuvvwwxx <<;;::99eeffgghh - - OONNMMLLRRSSTTUU__^^]]\\BBCCDDEErrqqppoo//001122**))((''%%&&''((43322110~~}}yyzz{{||!!""##$$88776655iijjkkllKKJJIIHHVVWWXXYY[[ZZYYXXFFGGHHIInnmmllkk33445566&&%%$$##))**++,,0//..--,||{{zzyy}}~~%%&&''((44332211mmnnooppGGFFEEDDZZ[[\\]]WWVVUUTTJJKKLLMMjjiihhgg778899::""!! --..//00 ,++**))(xxwwvvuu))**++,,00//..--qqrrsstt##$$%% - -CCBBAA@@^^__``aa SSRRQQPPNNOOPPQQ##$$ ffeeddcc;;<<==>>11223344 - - - -(''&&%%$ttssrrqq--..//00,,++**))uuvvwwxx&&''(()) ??>>==<>??@@hhggffee99::;;<< xxwwvvuu2233445533221100nnooppqqCCBBAA@@^^__``aa11223344VVUUTTSSKKLLMMNN ++,,--..AABBCCDDddccbbaa==>>??@@ttssrrqq6677==>>//..--,,rrssttuu??>>==<>??@@AA NNMMLLKKSSTTUUVV33445566IIJJKKLL$$%%&&'' - -\\[[ZZYYEEFFGGHHllkkjjiiCCDDEEFF%&&''(()''&&%%$$~~}}||zz{{||}}""##$$%%77665544jjkkllmmBBCCDDEEJJIIHHGGWWXXYYZZ778899::MMNNOOPP(())**++ XXWWVVUUIIJJKKLL hhggffeeGGHHIIJJ)**++,,-##""!! {{zzyyxx~~&&''(())33221100nnooppqqFFGGHHIIFFEEDDCC[[\\]]^^;;<<==>>QQRRSSTT,,--..//TTSSRRQQMMNNOOPP - - ddccbbaaKKLLMMNN-..//001wwvvuutt**++,,--//..--,,rrssttuuJJKKLLMMBBAA@@??__``aabb - -??@@AABBUUVVWWXX00112233 - - PPOONNMMQQRRSSTT``__^^]]OOPPQQWW12233445ssrrqqpp..//0011++**))((vvwwxxyyNNOOPPQQ>>==<<;;ccddeeff CCDDEEFFYYZZ[[\\44556677 LLKKJJIIUUVVWWXX\\[[ZZYYXXYYZZ[[5667789:oonnmmll22334455''&&%%$$~~}}||zz{{||}}WWXXYYZZ !!""::998877gghhiijjGGHHIIJJ]]^^__``==>>??@@HHGGFFEEYYZZ[[\\XXWWVVUU\\]]^^__;<==>>??kkjjiihh66778899##""!! {{zzyyxx~~[[\\]]^^##$$%%&&66554433kkllmmnnKKLLMMNNOOPPQQRR - - bbaa``__<<==>>??uuttssrr,,--..//--,,++**{{zzyyxxqqrrsstt@@??>>==aabbccdd - - PPOONNMM||{{zzyyNNOOPPQQ - - ccbbaa``>>??@@AAaa``__^^kkjjiihhSSTTUUVV^^]]\\[[@@AABBCCqqppoonn00112233))((''&&wwvvuuttuuvvwwxx <<;;::99eeffgghh LLKKJJIIxxwwvvuuRRSSTTUU__^^]]\\BBCCDDEE]]\\[[ZZggffeeddWWXXYYZZZZYYXXWWDDEEFFGGmmllkkjj44556677%%$$##""ssrrqqkkyyzz{{||!!""##$$88776655iijjkkllHHGGFFEEttssrrqqVVWWXXYY[[ZZYYXXFFGGHHIIYYXXWWQQccbbaa``[[\\]]^^VVUUTTSSHHIIJJKKiihhggff8899::;;!! jjiihhgg}}~~%%&&''((44332211mmnnooppDDCCBBAAkkjjiihhZZ[[\\]]WWVVUUTTJJKKLLMM PPOONNMM__^^]]\\__``aabb - -RRQQPPOO~~}}||{{LLMMNNOO - -eeddccbb<<==>>??ffeeddcc))**++,,00//..--qqrrsstt@@??>>==ggffeedd^^__``aa SSRRQQPPNNOOPPQQ - - LLKKJJII[[ZZYYXXccddeeff NNMMLLKKzzyyxxwwPPQQRRSS aa``__^^@@AABBCCbbaa``__~~}}--..//00,,++**))uuvvwwxx <<;;::99ccbbaa``bbccddee - - OONNMMLLRRSSTTUUHHGGFFEEWWVVUUTTgghhiijjJJIIHHGGvvuuttssTTUUVVWW]]\\[[ZZDDEEFFGG^^]]\\[[||{{zzyy11223344((''&&%%~~}}yyzz{{||!!""##$$88776655__^^]]\\ffgghhiiKKJJIIHHVVWWXXYYDDCCBBAASSRRQQPPkkllmmnnFFEEDDCCrrqqkkjjXXYYZZ[[YYXXWWVVHHIIJJKKZZYYXXWWxxwwvvuu55667788$$##""!!||{{zzyy}}~~%%&&''((44332211[[ZZYYXXjjkkllmmGGFFEEDDZZ[[\\]]@@??>>==OONNMMLLooppqqrrBBAA@@??iihhggff\\]]^^__UUTTSSRRLLMMNNOO - -QQPPOONNttssrrqq99::;;<< xxwwvvuu))**++,,00//..--WWQQPPOOnnooppqqCCBBAA@@^^__``aa 77665544KKJJIIHHssttuuvv>>==<<;;eeddccbb``aabbcc - - QQPPOONNPPQQRRSS MMLLKKJJponmlkkj==>>??@@ttssrrqq--..//00,,++**))NNMMLLKKrrssttuu??>>==<>==<<''(())**221100//YYXXWWQQllmmnnooEEDDCCBB\\]]^^__AA@@??>>baa``__^IIJJKKLL hhggffee99::;;<< BBAA@@??{{zzyyxx~~&&''(())33221100nnooppqq''&&%%$$;;::9988++,,--....--,,++PPOONNMMppqqrrssAA@@??>>``aabbcc - - ==776655^]]\\[[ZMMNNOOPP - - ddccbbaa==>>??@@>>==7766wwvvuutt**++,,--//..--,,rrssttuu##77665544//001122**))((''LLKKJJIIttuuvvww==<<;;::ddeeffgg 44332211ZYYXXWWVQQRRSSTT``__^^]]AABBCCDD55443322ssrrqqpp..//0011++**))((vvwwxxyy !!3322110033445566&&%%$$##HHGGFFEE~~xxyyzz{{ !!""##99887766hhiijjkk00//..--UTSRQQPPUUVVWWXX\\[[ZZYYEEFFGGHH1100//..oonnmmll22334455''&&%%$$~~}}||zz{{||}}""##$$%%//..--,,778899::""!! DDCCBBAA}}||{{zz||}}~~$$%%&&''55443322llmmnnoo,,++**))OONNMMLLYYZZ[[\\XXWWVVUUIIJJKKLL --,,++**kkjjiihh66778899##""!! {{zzyyxx~~&&''(())++**))((;;<<==>>@@??>>==yyxxwwvv(())**++1100//..ppqqrrss((''&&%%KKJJIIHH]]^^__``TTSSRRQQMMNNOOPP - - ))((''&&ggffeedd::;;<<==wwvvuutt**++,,-- ''&&%%$$??@@AABB77665544uuttssrr,,--..//--,,++**ttuuvvww$$##GGFFEEDDaabbccdd - - PPOONNMMQQRRSSTT%%$$##ccbbaa``>>??@@AAssrrqqpp..//0011 - - - -##""!! CCDDEEFF33221100qqppoonn00112233))((''&&~~xxyyzz{{ !!""##CCBBAA@@eeffgghh LLKKJJIIUUVVWWXX__^^]]\\BBCCDDEEoonnmmll22334455 GGHHIIJJ//..--,,mmllkkjj44556677%%$$##""}}||{{zz||}}~~$$%%&&''??>>==<;iijjkkllHHGGFFEEYYZZ[[\\[[ZZYYXXFFGGHHIIkkjjiihh66778899KKLLMMNN ++**))((iihhggff8899::;;!! yyxxwwvv(())**++:9877665mmnnooppDDCCBBAA]]^^__`` - - WWVVUUTTJJKKLLMM ggffeedd::;;<<==OOPPQQRR - - ''&&%%$$eeddccbb<<==>>??uuttssrr,,--..// 54433221qqrrsstt@@??>>==aabbccdd  SSRRQQPPNNOOPPQQ - - ccbbaa``>>??@@AASSTTUUVV##aa``__^^@@AABBCCqqppoonn00112233 - - 100//..-uuvvwwxx <<;;::99eeffgghh - - OONNMMLLRRSSTTUU__^^]]\\BBCCDDEE## WWXXYYZZ]]\\[[ZZDDEEFFGGmmllkkjj44556677-,,++**)~~}}yyzz{{||!!""##$$88776655iijjkkllKKJJIIHHVVWWXXYY[[ZZYYXXFFGGHHII$$%%&&'' - - [[\\]]^^ - -YYXXWWVVHHIIJJKKiihhggff8899::;; )((''&&%||{{zzyy}}~~%%&&''((44332211mmnnooppGGFFEEDDZZ[[\\]]WWVVUUTTJJKKLLMM(())**++ - - __``aabb UUTTSSRRLLMMNNOO - -eeddccbb<<==>>?? - - %$$##"! xxwwvvuu))**++,,00//..--qqrrsstt##$$%% - -CCBBAA@@^^__``aa SSRRQQPPNNOOPPQQ,,--..//ccddeeff QQPPOONNPPQQRRSS aa``__^^@@AABBCCttssrrqq--..//00,,++**))uuvvwwxx&&''(()) ??>>==<>??@@ooppqqrr##EEDDCCBB\\]]^^__UUTTSSRRLLMMNNOOhhggffee99::;;<< xxwwvvuu2233445533221100nnooppqqCCBBAA@@^^__``aaAABBCCDD !!ssttuuvv$$%%&&'' - - AA@@??>>``aabbcc - - QQPPOONNPPQQRRSS##$$%%&& ddccbbaa==>>??@@ttssrrqq6677==>>//..--,,rrssttuu??>>==<>``aabbcc33445566TTSSRRQQMMNNOOPP - - ddccbbaaKKLLMMNN-..//001wwvvuutt**++,,--//..--,,rrssttuuZZ[[\\]]22334455rrqqppoo==>>??@@ !"#--,,++**ttuuvvww==<<;;::ddeeffgg77==>>?? - - PPOONNMMQQRRSSTT``__^^]]OOPPQQWW12233445ssrrqqpp..//0011++**))((vvwwxxyy^^__``aa66778899nnmmllkkAABBCCDD#$$%%&&'))((''&&~~xxyyzz{{ !!""##99887766hhiijjkk@@AABBCC LLKKJJIIUUVVWWXX\\[[ZZYYXXYYZZ[[5667789:oonnmmll22334455''&&%%$$~~}}||zz{{||}}bbccddee::;;<<==jjiihhggEEFFGGHH'(())**+%%$$##""}}||{{zz||}}~~$$%%&&''55443322llmmnnooDDEEFFGGHHGGFFEEYYZZ[[\\XXWWVVUU\\]]^^__;<==>>??kkjjiihh66778899##""!! {{zzyyxx~~ffgghhii>>??@@AAffeeddccIIJJKKLL+,,--../!! yyxxwwvv(())**++1100//..ppqqrrssHHIIJJKKDDCCBBAA]]^^__``TTSSRRQQ``aabbcc@@AABBCC ggffeedd::;;<<==wwvvuuttjjkkqqrrBBCCDDEEbbaa``__MMNNOOPP/0011223uuttssrr,,--..//--,,++**ttuuvvwwLLMMNNOO@@??>>==aabbccdd - - PPOONNMMddeeffggDDEEFFGG - - ccbbaa``>>??@@AAssrrqqppssttuuvvFFGGHHII^^]]\\[[QQWWXXYY34455667qqppoonn00112233))((''&&~~xxyyzz{{PPQQWWXX <<;;::99eeffgghh LLKKJJIIhhiijjkkHHIIJJKK__^^]]\\BBCCDDEEoonnmmllwwxxyyzzJJKKLLMMZZYYXXWWZZ[[\\]]789:;<==mmllkkjj44556677%%$$##""}}||{{zz||}}~~YYZZ[[\\!!""##$$88776655iijjkkllHHGGFFEEqqrrssttLLMMNNOO[[ZZYYXXFFGGHHIIkkjjiihh{{||}}~~NNOOPPQQVVUUTTSS^^__``aa>>??@@AAiihhggff8899::;;!! yyxxwwvv]]^^__``%%&&''((44332211mmnnooppDDCCBBAAuuvvwwxxPPQQRSTUWWVVUUTTJJKKLLMM ggffeeddRRSSTTUURRQQPPOObbccddeeBBCCDDEE - -eeddccbb<<==>>??uuttssrraabbccdd))**++,,00//..--qqrrsstt@@??>>==yyzz{{||VWWXXYYZ SSRRQQPPNNOOPPQQ - - ccbbaa``VVWWXXYYNNMMLLKKffgghhiiFFGGHHII aa``__^^@@AABBCCqqppoonneeffgghh--..//00,,++**))uuvvwwxx <<;;::99}}~~Z[[\\]]^ - - OONNMMLLRRSSTTUU__^^]]\\ZZ[[\\]]JJIIHHGGjjkkqqrrJJKKLLMM]]\\[[ZZDDEEFFGGmmllkkjjiijjkkqq11223344((''&&%%~~}}yyzz{{||!!""##$$88776655^__``aabKKJJIIHHVVWWXXYY[[ZZYYXX^^__``aaFFEEDDCCssttuuvvNNOOPPQQYYXXWWVVHHIIJJKKiihhggffrrssttuu55667788$$##""!!||{{zzyy}}~~%%&&''((44332211bccddeefGGFFEEDDZZ[[\\]]WWVVUUTTbbccddeeBBAA@@??wwxxyyzzRSTUVWWXUUTTSSRRLLMMNNOO - -eeddccbbvvwwxxyy99::;;<< xxwwvvuu))**++,,00//..--fgghhiijCCBBAA@@^^__``aa SSRRQQPPffgghhii>>==<<;;{{||}}~~XYYZZ[[\ - - QQPPOONNPPQQRRSS aa``__^^zz{{||}}==>>??@@ttssrrqq--..//00,,++**))jkklmnop??>>==<>``aabbcc - - QQPPOONNMMNNOOPP - - ddccbbaa==>>??@@ttssrrqq}}~~**++,,--//..--,,rrssttuu??>>==<>]]^^__``TTSSRRQQMMNNOOPP - - ddccbbaa::;;<<==wwvvuutt**++,,--//..--,,zzyyxxww~~}}||rrqqppoo,,--..//--,,++**ttuuvvww==<<;;::aabbccdd - - PPOONNMMQQRRSSTT``__^^]]>>??@@AAssrrqqpp..//0011++**))((vvuuttss{{zzyyxxnnmmllkk00112233))((''&&~~xxyyzz{{ !!""##99887766eeffgghh LLKKJJIIUUVVWWXX\\[[ZZYYBBCCDDEEoonnmmll22334455''&&%%$$rrqqkkjjwwvvuuttjjiihhgg44556677%%$$##""}}||{{zz||}}~~$$%%&&''55443322iijjkkllHHGGFFEEYYZZ[[\\XXWWVVUUFFGGHHIIkkjjiihh66778899##""!! iihhggffssrrqqpp ffeeddcc8899::;;!! yyxxwwvv(())**++1100//..~~}}||mmnnooppDDCCBBAA]]^^__``TTSSRRQQ~~}}JJKKLLMM ggffeedd::;;<<==eeddccbboonnmmllbdQZ|vpftArdp˂rdrtAr˂p|ZdQbےHAZbdQZ|`vXnbtlےbHAltbHAbےlJtA˂rXQdrtAJ˂pZZdQbtrXQJpfH~JXQr~Hfp`ےbdrtAH~f|ZdQbXQJ`ےJltZHAbtlJp˂rdrtAr˂pJtArdZp˂dQZ|`JXQrrd|J`ےltbHAbےlJtA`ےbf`v˂pZHAvnXHAZp˂Jlt`vXntlJbHAZbdQZ|ے`JXQtArdXQJ`ےJltZHAb|ZdQrXQJ`dtAJl˂pZZdQbtbHAZpdQZ|`JXQrrd|HAZp˂Xnvbے`v`frXQJbdQZ|vpftArdp˂rdrtAr˂p|ZdQbbHAZbdQZ|ے`JXQtArdےbHAtbnHAbےlJtA˂rXQdrtAJ˂pZZdQbtbHApfH~JXQr~Hfp`ےbdrtAH~f|lJtAXQJ`ےJltZHAbtlJp˂rdrtAr˂p|ZdQbZprQvpf`JXQrrd|J`ےltbHAbےlJtAZp˂f`v˂pZHAvnXHAZp˂Jlt`vXnrd|bHAZbdQZ|ے`JXQtArdXQJ`ےJltZHAbtlJJ`ےHf`˂pZZdQbnbHAZpdQZ|`JXQrrd|rXQJ`Xnvbے`v`frXQJbdQZ|vpfZdQbtp˂rdrtAr˂p|ZdQbbHAZbdQZ|ے`JXQtArdbHAZpvXnHAbےXv`f˂rXQdtAJl˂pZZdQbtےbHApfH~JXQr~Hfp`ےbdrtAH~flJtAXQJ`ےJltZHAbtlJp˂rdrtAr˂p|ZdQbrXQvpfH`JXQr~HfJ`ےtbnHAbےlJtAZp˂f`v˂pZHAvnXHAZp˂Jlt`vXnrd|bHAZbdQZ|ے`JXQtArdXQJ`ےJltZHAbtd|J`ے~f`˂pZpvnbHAZpvpf`JXQrrd|rXQHAZXnvbے`v`frXQJbdQZ|vpfZdQtArp˂rdrtAr˂p|ZdQbbHAZbdQZ|ے`JXQZdQbtbHAZpvXnHAbےXv`f˂rXQHf`˂pZZdQbnp˂rpfH~JXQr~Hfp`ےbdrtAH~fd|ZXQJ`ےJltZHAbtlJp˂rdrtAr˂plJtArQJvpfH`JXQr~HfJ`ےvXnHAbےXv`pXQJ`ےf`v˂pZHAvnXHAZp˂Jlt`vXndQbt璐bHAZbdQZ|ے`JXQtArdXQJ`ےJltZHAbrd|bHAZ~f`˂pZpvnbHAZpvpfH`JXQrvnXbHAZXnvے`Jv`frXQJbdQZ|vpflJtArp˂rdrtAr˂p|ZdQbbHAZbdQZ|ے`JXQZdQbtp˂rvXnHAbےXv`f˂rXQ~f`˂pZv`fp˂rpfH~XQrbt~Hfp`ےbdrtAH~fd|ZXQJ`ےJltZHAbtlJp˂rdrtAr˂pl|ZXQJ`ےvpfH`JXQr~HfJ`ےvXnHAbے~HfpXQJ`pf`vlJtAvnXHAZp˂Jlt`vXndQbtdbHAZbdQZ|ے`JXQtArdXQJ`ےJltZHAbdQbnXbHAZ~f`˂pZpvnbHAZpvpfH`JXQrvnX˂rbXnvd|Zv`frbdQbdQZ|vpf|ZdQp˂rdtAJr˂p|ZdQbbHAZbdQZ|ے`JXQv`pvp˂rvXnHAbےXv`f˂rXQ~f`˂pZv`fdQZ|pfH~dQbt~HfpZ|ddrtAH~fbtlXQJ`ےltbZHAbtlJp˂rdrtAr˂pnXvXQJbHvpfH`JXQr~HfJ`ےvXnHAbےnXvrAJltf`vlJtArvnXrtAJlJlt`vXnJtArdbHAZnvpے`JXQtArdXQJ`ےJltZHAb`f~AZp˂~f`˂pZpvnbHAZpvpfH`JXQr`f~bdQZ|Xnvd|Zv`ftbdQbdQZ|r˂p|ZdQp˂rfHfr˂p|ZdQbbHAZbdQZ|ے`JXQHfpvrXQJ`vXnHAbےXv`f˂rXQ~f`˂pZHfpvdrtpfH~dQbt~HfpZ|ddrtA`JXQrbtlXQJ`ے`vXnZHAbnXv`p˂rdtAJr˂pnXvےbHvpfH`JXQr~HfJ`ےvXnHAbےnXvAJltf`vlJtArvnXrtAJlJlt˂pZ|ZdQbbHAZvpfے`JXQf~HXQJ`ےltbZHAb`fAZp˂~f`˂pZpvnbHAZpvpfH`JXQr`f~bdQZ|Xnvd|Zv`ftbdQbdQZ|HAbےnXv`p˂rH~fr˂pfpvbHAZnvpے`JXQnXv`rXQJ`vXnHAbےXv`f˂rXQ~f`˂pZHXv`drAJpfH~dQbt~HfpZ|ddrtA`JXQrf~fpXQJ`ے`vXnZHAbnXv`p˂rfHfr˂pf~HbAZpvpfH`JXQr~HfJ`ےvXnHAbےf~HtbdQf`vlJtArvnXrtAJlJlt˂pZvnXbHAZvpfے`JXQf~HXQJ`ے`vXnZHAbfpv˂rb~f`˂pZpvnbHAZpvpfH`JXQrfpvZ|dXnvd|Zv`ftbdQbdQZ|HAXQrv`fp˂rH~fr˂pfpvbHAZvpfے`JXQnXv`dQZ|vXnHAے`Xv`f˂rXQ~f`˂pZnXv`rtAJlpfH~dQbt~HfpZ|ddrtA˂pZHA~HfpXQJ`ے`vXnZHAbnXv`p˂rH~fr˂pf~HdrtAJvpfHJXQrb~HfJ`ےvXnHAbےf~HtbdQf`vlJtArvnXrtAJlJltbے`vnXbHAZvpfے`JXQf~HXQJ`ے`vXnZHAbXv`fltb~f`tlJpvnbHAZpvpfH`JXQrfp`fZ|dXnvd|Zv`ftbdQbdQZ|JXQrv`f~p˂rH~fr˂pfpvbHAZvpfے`JXQ~HfdQZ|vXntAd|Xv`f˂rb~f`˂pZ~HfrtAJpfH~dQbt~HfpZ|ddrtA˂pZHAfvnXQJ`ے`vXnZHAbnXv`p˂rH~fr˂ppvndrtAJvpfHZdQbt~HfdQZ|vXnHAے`pvnbdQZ|f`vlJtArvnXrtAJlJltb˂Xv`fbHAZvpfے`JXQf~HXQJ`ے`vXnZHAbXv`fltb~f`lJtApvndrtAJvpfHJXQrbXv`fdrtAXnvd|Zv`ftbdQbdQZ|pZHAb~Hfp˂rH~fr˂pfpvbHAZvpfے`JXQ~HfdQZ|vXnrd|Xv`fltb~f`tlJ~HfJltpfH~dQbt~HfpZ|ddrtAے`JpvnXQJ`ے`vXnZHAbnXv`p˂rH~fr˂pp`fdrtAJvpfHZdQbt~HfdQZ|vXntAd|pvbdQZ|f`vlJtArvnXrtAJlJltXQr˂Xv`fbHAZvpfے`JXQf~HXQJ`ے`vXnZHAb~Hfpltb~f`lJtApvndrtAJvpfHZdQbt~HfpdrtAXnrd|Zv`ftbdQbdQZ|pZHAb~Hfp˂rH~fr˂pfpvbHAZvpfے`JXQvnXdQZ|vXnrd|Xv`fltb~f`lJtAvnXJlbQZ˂pZHAdQbtHfpvZ|ddrtAے`pvnXv`XQJ`ے`vXnZHAbnXv`p˂rH~fr˂pv`fdrtAJvpfHZdQbt~HfdQZ|vXnrd|v`f|drbے`lJtArnrXQrtAJlJltZHAbf~HbHAZvpfے`JXQf~HXQJ`ے`vXnZHAb~Hfpltb~f`lJtApvndrtAJvpfHZdQbt~HfptAJlJXQrd|ZJ`ےtbdQbdQZ|ے`JXQfpvp˂rH~fr˂pfpvbHAZvpfے`JXQv~dQZ|vXnrd|Xv`fltb~f`lJtAvnXtbdQZ˂pZHAdQbtHAZp˂Z|ddrtAr˂pnXv`bdQZ|`vXnZHAےnXv`p˂rH~fr˂pHfpvdrtAJvpfHZdQbt~HfdQZ|vXnrd|Hfpv|drbے`lJtArrXQJrtAJlJltZHAbf~HdrtAvpf`JXQrf~HXQJ`ے`vXnZHAbnXvltb~f`lJtApvndrtAJvpfHZdQbtnXvtAJlJXQrd|Z`ےbtbdQbdQZ|ے`JXQfpvnJltH~fbtlfpvbHAZvpfے`JXQ`f~dQZ|vXnrd|Xv`fltb~f`lJtA`f~tbQZd˂pZHAdQbtHAZp˂Z|d`vXnHAbےv`fbdQZ|`vXnJtAdnXv`p˂rH~fr˂pHfpvdrtAJvpfHZdQbt~HfdQZ|vXnrd|HfpvrtAJlbے`lJtArrXQJrtAJlvpf`JXQr~HfpdrtAvpf|ZdQbf~HbdQZ|`vXnZHAےnXHltb~f`lJtApvndrtAJvpfHZdQbtnXvtbdJXQrd|Z`ےbtbdQH~f˂pZvnXJltH~ftlJfpvdrtAvpf`JXQrfpvdQZ|vXnrd|Xv`fltb~f`lJtA`pvQZ|d˂pZHAdQbtHAZp˂Z|d`vXnHAbےv`fbdQZ|`vXntArdnXv`JltH~fbtlnXv`drtAJvpfHZdQbt~HfdQZ|vXnrd|nrXQJrtAJlbے`lJtArrXQJrtAJlvpf`JXQr~HfpdrtAvpf|ZdQbf~HbdQZ|`vXn|ZdQbf~Hltb~f`lJtApvndrtAJvpfHZdQbt`p˂tbdJXQrd|Z`ےbtbdQH~fے`vnvJltH~ftlJfpvdrtAvpftlJfpvdQZ|vXnrrd|Xv`fltb~f`lJtArXQJ`QZrtA˂pZHAdQbtHAZp˂Z|d`vXnJXQrf~HbdQZ|`vXntArdnXv`JltH~ftArdnXv`drtAJ˂pZZdQbtHfpdQZ|vXnrd|ےbHAJltbے`lJtArrXQJrtAJlvpf˂pZHAfpvdrtAvpf|ZdQbf~HbdQZ|`vXn|ZdQbpvnltbHAbےlJtAvnrdrtAJvpfHZdQbtZp˂bdQZ|JXQrd|Z`ےbtbdQH~fbے`nXv`JltH~ftlJfpvdrtAvpftlJrXQJ`dQZ|`JXQrrd|XQJ`ےltb~f`lJtArXQJ`drtA˂pZHAdQbtHAZp˂Z|dXnv`vXnJXQrf~HbdQZ|`vXntArdnXv`JltH~ftAdQbtAZp˂drtAJ˂pZZdQbtHAZpdQZ|vXnrrd|ےrJltbے`lJtArrXQJrtAJlpfH~vpf˂p|ZfpvdrtAvpf|ZdQbf~HbdQZ|`vXnlJtArXQJltbHAbےlJtA˂rXQdrtAJ˂pZZdQbtXQJ`ےbdQZ|JXQrd|Z`ےbtbdQf`vH~fdQbtnXvf~JltH~ftlJfpvdrtAvpfrd|`ےbdQZ|`JXQrrd|J`ےltbHAbےlJtAbHAZAJl˂pZHAdQbtHAZp˂Z|dXnv`vXnlJtArHfpvbdQZ|`vXntArdnXv`JltH~fZdQbtHAZp˂drtAJ˂pZZdQbtbHAZpdQZ|`JXQrrd|p˂rtbnbے`lJtArrXQJrtAJlpfH~vpfd|ZnXvdrtAvpf|ZdQbf~HbdQZ|`vXnlJtArXQJltbHAbےlJtA˂rXQdrtAJ˂pZZdQbtXQJ`ےvpfHJXQrd|Z`ےbtbdQf`vH~fdQbt`f~JltH~ftlJfpvdrtAvpfrdt`ےbAdQZ|`JXQrrd|J`ےltbHAbےlJtAbHAXQf`v˂pZHAdQbnXHAZp˂Z|dXnv`vXnlJtAdQHfpvbdQZ|`vXntArdnXv`JltH~flJtArZrXdrtAJ˂pZZdQbtbHAZpdQZ|`JXQrrd|J`ےXnvbے`v`frXQJtAJlpfH~vpfbtlnXvdrtAvpf|ZdQbf~HbdQZ|`vXnd|ZQJ`ےltbHAbےlJtA˂rXQdrtAJ˂pZZdQbtbHAZppfH~JXQr~Hfp`ےbtbnf`vH~fJtArd`frQJltH~ftlJfpvdrtAvpfdQbt璙bHAZpdQZ|`JXQrrd|J`ےltbHAbےlJtA˂rXQf`v˂pZHAvnXHAZp˂vpfHXnv`vXn|ZdQJHAZbdQZ|`vXntArdnXv`JltH~flJtAr˂rXdrtAJ˂pZZdQbtbHAZpdQZ|`JXQrrd|J`ےXnvbے`v`frXQJf`vpfH~vpfbtlp˂rdrtAr˂p|ZdQbfHfbdQZ|`vXnd|lQJ`ےltbHAbےlJtA˂rXQdrtAJ˂pZZdQbtbHAZppfH~JXQr~Hfp`ےbXnvf`vH~fJtArdXQJ`ےJltZHAbtlJpvndrtAvpfJtArdbHAZdQZ|`JXQrrd|J`ےltbHAbےlJtA`ےbf`v˂pZHAvnXHAZp˂pfH~Xnv`vXntlJbHAZbdQZ|ے`JXQtArdrXQJ`JltH~f|ZdQrXQJ`drtAJ˂pZZdQbtbHAZpdQZ|`JXQrrd|HAZp˂Xnvbے`v`frXQJf`vpfH~f`v˂pZHAvnXltbvpfHbtlHfpv|drnvp|ZdQ`f~ltbAbے`tArdXQJ`ےJltZHAbtlJp˂rdrtAے`JXQZdQbnbHAZpdQZ|`JXQrrd|J`ےltbXQr˂vˍpfXnvے`Jv`fdQZ|~f`JtArdnXvtAJlfH~btlHfpvdQZ|JXQr|ZdQbbHAZbdQZ|ے`JXQtArdXQJ`ےJltr˂pXv`f˂rXQdtAJl˂pZZdQbtbHAZpdQZ|pZHAbH~ㅐfpfH~XQrbt~HfpdtbdQvXn|ZdQ`f~tbdQZf`vXJtArdnXvdrtAdQ˂pZHtlJp˂rdrtAr˂p|ZdQbbHAZbdQZ|ZHAb~HfJ`ےtbnHAbےlJtA˂rXQdrtAJے`p`vXnf`vlJtAvnXZ|dvpf~btlHfpv|drnvp|ZdQ`f~Z|dAbJXQtArdXQJ`ےJltZHAbtlJp˂rdrtA˂pZpvnbHAZpvpf`JXQrrd|J`ےltbZHAbvˍpfXnvd|Zv`frtAJlf`vXJtArdnXvtAJlfH~btlHfpvrtAJlr˂p|ZdQbbHAZbdQZ|ے`JXQtArdXQJ`ےJltHAbےXv`f˂rXQHf`˂pZZdQbnbHAZpdQZ|ے`JXQH~ㅐfpfH~dQbt~HfptbdQnr˂|ZdQ`fHtbdQZf`vXJtArdnXvtbdQZHAbtlJp˂rdrtAr˂p|ZdQbbHAZbdQZ|`JXQr~HfJ`ےvXnHAbےXv`f˂rXQdtAJlr˂p`vXnf`vlJtArvnXZ|dpZHAbbtlfpv|drnvp|ZdQ`f~Z|dے`JXQtArdXQJ`ےJltZHAbtlJp˂rdrtA˂pZpvnbHAZpvpfH`JXQr~HfJ`ےtbnZHAbvˍpfXnvd|Zv`frtAdQZے`JJtArdnrXQJtAJlfH~btlHfpvrtAJlr˂p|ZdQbbHAZbdQZ|ے`JXQtArdXQJ`ےJltHAbےXv`f˂rXQ~f`˂pZpvnbHAZpvpfے`JXQH~ㅐfpfH~dQbt~Hfp|drXQr˂|ZdQ`ےHAtbdQZf`vXJtArdnXv|drZHAbtlJp˂rdrtAr˂p|ZdQbbHAZbdQZ|`pZHA~HfJ`ےvXnHAbےXv`f˂rXQHf`HAbے`vXnf`vlJtArvnXtAJlpZHAbbtlZp˂|drnr˂|ZdQ`fHtAJl璒JQrtArdXQJ`ےJltZHAbtlJp˂rdrtAbے`pvnbHAZpvpfH`JXQr~HfJ`ےvXn`JXQrvˍpfXnvd|Zv`ftbdQZے`JJtArdrXQJ`tAJlpZHAbbtlfpvtbdQZpZHA|ZdQbbHAZbdQZ|ے`JXQtArdXQJ`ےJltJXQrXv`f˂rXQ~f`˂pZpvnbHAZpvpfH˂pZH~ㅐfpfH~dQbt~Hfp|drXQr˂|ZdQےbHAtbdQZے`JJtArdnrXQJ|drbے`tlJp˂rdrtAr˂p|ZdQbbHAZbdQZ|˂pZHA~HfJ`ےvXnHAbےXv`f˂rXQ~f`HAbے`vXnf`vlJtArvnXtAJl|pZHAbbtlZp˂|drXQr˂|ZdQ`ےHAtAJlJXQrtArdXQJ`ےJltZHAbtlJp˂rdrtAbے`pvnbHAZpvpfH`JXQr~HfJ`ےvXn`JXQrvˍpfXnvd|Zv`fdrtAے`JJtArdrXQJ`tAJlpZHAbbtlZp˂tdrtApZHA|ZdQbbHAZbdQZ|ے`JXQtArdXQJ`ےJltJXQHAbXv`f˂rXQ~f`˂pZpvnbHAZpvpfHے`H~ㅐfpfH~dQbt~HfpJltXQr˂|ZdQےbHAtbdQZے`JJtArdrXQJ`Jltbے`JnXv`p˂rdtAJr˂p|ZdQbbHAZbdQZ|ے`J~HfJ`ےvXnHAbےXv`f˂rXQ~f`JXQr`vXnf`vlJtArvnXbdQZ|pZHAbbtlZp˂|drXQr˂|ZdQےbHAbdQZ|QrpZf~HXQJ`ےltbZHAbtlJp˂rdrtAXQr˂pvnbHAZpvpfH`JXQr~HfJ`ےvXn˂pZHAvˍpfXnvd|Zv`fdrtAے`JJtArdrXQJ`tAJlpZHAbbtlZp˂drtAHAbےfpvbHAZnvpے`JXQtArdXQJ`ےJltpZHAbXv`f˂rXQ~f`˂pZpvnbHAZpvpfHbے`H~ㅐfpfH~dQbt~HfpJltXQr˂|ZdQےbHAtbdQZے`JJtArdrXQJ`Jlt`JXQrnXv`p˂rfHfr˂p|ZdQbbHAZbdQZ|ے`J~HfJ`ےvXnHAbےXv`f˂rXQ~f`JXQr`vXnf`vlJtArvnXdrtAJpZHAbbtlZp˂|drXQr˂|ZdQےbHAbdQtAJ˂pZf~HXQJ`ے`vXnZHAbnXv`p˂rdtAJXQrpvnbHAZpvpfH`JXQr~HfJ`ےvXn˂p`ZvˍpfXnvd|Zv`fltbے`JJtArdrXQJ`tAJlpZHAbbtlZp˂ltbHAbےfpvbHAZvpfے`JXQf~HXQJ`ےltbے`JXQXv`f˂rXQ~f`˂pZpvnbHAZpvpfHQXb㉀ەH~ㅐfpfH~dQbt~HfpdQZ|XQr˂|ZdQےbHAtbdQZے`JJtArdrXQJ`dQZ|`JXQrnXv`p˂rH~fr˂pfpvbHAZnvpr˂p~HfJ`ےvXnHAbےXv`f˂rXQ~f`pJAHr`vXnf`vlJtArvnXdrtAJpZHAbbtlZp˂|drXQr˂|ZdQےbHAdrtAJZHAbf~HXQJ`ے`vXnZHAbnXv`p˂r`vXnZHAbpvnbHAZpvpfH`JXQr~HfJ`ےvXnˁ`ZvˍpfXnrd|Zv`fltbے`JJtArdrXQJ`tAJlpZHAbbtlZp˂ltbے`JXfpvbHAZvpfے`JXQf~HXQJ`ےvpfے`JXQXv`f˂rb~f`˂pZpvnbHAZpvpfHQXb㉀ەH~ㅐf˂pZHAdQbtHfpvdQtAJlXQr˂|ZdQےbHAtbdQZے`JJtArdrXQJ`dQZ|lQr˂pnXv`p˂rH~fr˂pfpvbHAZH~fr˂p~HfdQZ|vXnHAے`Xv`f˂rXQ~f`pJAHQX`vXnbے`lJtArnrXQtbdQpZHAbbtlZp˂|drXQr˂|ZdQےbHAtbnZHAbf~HXQJ`ے`vXnZHAbnXv`p˂r`vXn`JXQrpvndrtAJvpfHJXQrb~HfJ`ےvXnb㉀ۑpvˍp|JXQrd|ZJ`p˂Z|dے`JJtArdrXQJ`tAJlpZHAbbtlZp˂vp`ے`JXfpvbHAZvpfے`JXQf~HXQJ`ےvpfbtlXv`fltb~f`tlJpvnbHAZpvpfHJAHr󙐂drQt˂pZHAdQbt璀rXQJrtAJlXQr˂|ZdQےbHAtbdQZے`JJtArdrXQJ`vXnQrZnXv`p˂rH~fr˂pfpvbHAZHXnJA|Z~HfdQZ|vXntAd|Xv`f˂rb~f`ˁ`ZQXJltbے`lJtAr`ےbtbdQpZHAbbnXvZp˂|dtAXQr˂|ZdQےbHAvpfHAbے`f~HXQJ`ے`vXnZHAbnXv`p˂rvpfHdQbtpvndrtAJvpfHZdQbt~HfdQZ|vXnb㉀ۑpbAdZ|JXQrd|ZHAZp˂Z|l璐ے`J`f~rXQJ`JltpZHAbbtlZp˂~f`JXQrfpvbHAZvpfے`JXQf~HXQJ`ے~f`lJtArXv`fltb~f`lJtApvndrtAJvpfHJAHr󙐂drQt˂pZHAdQbt璀rXQJtbnXQr˂HfpvےbHAbnvے`JJtArdrXQJ`vXn˂pZHAnXv`p˂rH~fr˂pfpvbHAZvXnd|Z~HfdQZ|vXnrd|Xv`fltb~f`ۑpJJltbے`lJtAr`ےvpffpZHAbnXvZp˂pfHXQr˂|ZdQےbHAvpfHbے`f~HXQJ`ے`vXnZHAbnXv`p˂rvpfHdQbtpvndrtAJvpfHZdQbt~HfdQZ|vXnAHr󙐂bAdZ|JXQrd|ZrXQJ``vXnے`J`f~rXQJ`f`vXpZHAbbnXvZp˂XnvJXQrfpvbHAZvpfے`JXQf~HXQJ`ے~vlJtArXv`fltb~f`lJtApvndrtAJvpfH`ZQXbdrQt˂pZHAdQbtےbHAvpfXQr˂HfpvےbHAnvpے`J`f~rXQJ`pfH~˂pZAnXv`p˂rH~fr˂pfpvbHAZpfH~ZdQbt~HfdQZ|vXnrd|Xv`fltb~f`ۑpJJltbے`lJtArZp˂H~fpZHAbnXvZp˂fH~XQr˂HfpvےbHAf`v`JXQrf~HXQJ`ے`vXnZHAbnXv`p˂rf`vlJtpvndrtAJvpfHZdQbt~HfdQZ|vXnAHr󙐂bAdZ|JXQrd|ZrXQJ``vXnے`J`f~rXQJ`f`vXpZHAbnXvZp˂XnvbtlfpvbHAZvpfے`JXQf~HXQJ`ےXnvArd|Xv`fltb~f`lJtApvndrtAJvpfH`pJAHdrQt˂pZHAdQbtےbHAvpfXQr˂HfpvےbHAnvpے`J`f~rXQJ`pfH~JtAdnXv`p˂rH~fr˂pfpvbHAZpfH~ZdQbt~HfdQZ|vXnrd|Xv`fltb~f`r󙐂ˁ`Jltbے`lJtArXQJ`ےH~fvXpZHAbnXvZp˂fH~XQr˂HfpvےbHAvp|ZdQbf~HbdQZ|`vXnZHAےnXv`p˂rf`plJtpvndrtAJvpfHZdQbt~HfdQZ|vXnZQXb㉀bAdZ|JXQrd|ZbHAZnvpے`J`f~rXQJ`f`vXpZHAbnXvZp˂fH~tlJfpvdrtAvpf`JXQrf~HXQJ`ےfH~ArdZXv`fltb~f`lJtApvndrtAJvpfHۑpJAHdrQt˂pZHAdQbtp˂rfH~XQr˂HfpvےbHAnvpے`J`f~rXQJ`f`vXtArdnXv`JltH~fbtlfpvbHAZf`vXQbtl~HfdQZ|vXnrd|Xv`fltb~f`r󙐂ˁ`Jltbے`lJtArXQJ`ےf`vXpZHAbnXvZp˂fH~XQr˂HfpvےbHAnvp|ZdQbf~HbdQZ|`vXnJtAdnXv`p˂rnvpJtArdpvndrtAJvpfHZdQbt~HfdQZ|vXnZQXAHrbAdZ|JXQrd|ZbHAZnvpے`J`f~rXQJ`f`vXpZHAbnXvZp˂fH~tlJfpvdrtAvpf|ZdQbf~HbdQZ|fH~|ZdQXv`fltb~f`lJtApvndrtAJvpfHˁ`ZdrQt˂pZHAdQbtp`ےfH~XQr˂HfpvےbHAnvpے`J`f~rXQJ`f`pftArdnXv`JltH~ftlJfpvdrtAf`vXbtlHfpdQZ|vXnrd|Xv`fltb~f`QXb㉀Jltbے`lJtArbHAZpfvnpZHAbnXvZp˂fH~XQr˂HfpvےbHAH~f|ZdQbf~HbdQZ|`vXntArdnXv`JltH~fJtArdvnrdrtAJvpfHZdQbt~HfdQZ|vXnpJAHrbAdZ|JXQrd|Z˂rXQvpfHے`J`f~rXQJ`f`vXpZHAbnXvZp˂`vXntlJfpvdrtAvpf|ZdQbf~HbdQZ|`vXn|ZQbXQJ`ےltb~f`lJtApvndrtAJvpfHˁ`ZdrQt˂pZHAdQbnXJ`ے~f`XQr˂HfpvےbHAnvpے`J`f~rXQJ`vpftArdnXv`JltH~ftlJfpvdrtAvpflJtAHAZpdQZ|vXnrrd|Xv`fltb~f`QXb㉀Jltbے`v`fbHAZpvXnpZHAnXvZp˂fH~XQr˂HfpvےbHAH~f|ZdQbf~HbdQZ|`vXntArdnXv`JltH~frd|˂rXQdrtAJ˂pZZdQbtHfpdQZ|vXnˁ`ZQXbAdZ|JXQr~Hfp˂bvpfHے`JXQ`f~rXQJ`f`vXpZHAbnXvZp˂`vXHtlJfpvdrtAvpf|ZdQbf~HbdQZ|`vXnZdQbtJ`ےltbHAbےlJtAvnrdrtAJvpfHb㉀ۑpdrQt˂pZHAvnXHAZp˂~f`rbtHfpvےbHAnvpے`J`f~rXQJ`~f`tArdnXv`JltH~ftlJfpvdrtAf`lJtAbHAZpdQZ|`JXQrrd|XQJ`ےltb~f`JAHrJltbے`v`frXQJvnvplJtAdnXvZp˂fH~XQr˂HfpvےbHAvXn|ZdQbf~HbdQZ|`vXntArdnXv`JltvXnrd|˂rXQdrtAJ˂pZZdQbtHAZpdQZ|vXnےˁ`ZQXbAdZ|JXQr~Hfp`ےbfH~|ZdQ`f~rbdQZf`vXpZHAnXvZp˂vpfHtlJfpvdrtAvpf|ZdQbf~HbdQZ|vpfHZdQbJJ`ےltbHAbےlJtA˂rXQdrtAJ`JXQrb㉀XndrQt˂pZHAvnXHAZp˂f`vXbtlHfpv|drnvpے`JXQ`f~rXQJ`~f`tArdnXv`JltH~ftlJfpvdrtA~f`tArdbHAZpdQZ|`JXQrrd|J`ےltb˂pZvˍpfJltbے`v`frXQHAnvpJtArdnXvtAJlfH~rbtHfpvےbHAvXn|ZdQbf~HbdQZ|`vXntArdnXv`JltvXn|ZdQb˂rXQdrtAJ˂pZZdQbtbHAZpdQZ|HAbےH~ㅐfbAdZ|JXQr~HfpZp˂fH~|ZdQ`f~tbdQZf`vXlJtAdnXvZp˂f`vtlJfpvdrtAvpf|ZdQbf~HbdQZ|vp`vtlJJ`ےltbHAbےlJtA˂rXQdrtAJ`JXQr`vXndrQt˂pZHAvnXrXQJ`f`vXnbtlHfpv|drnvp|ZdQ`f~rbdQZXnvtArdnXv`JltH~ftlJfpvdrtAXnrtArdbHAZpdQZ|`JXQrrd|J`ےltb˂pZvˍpfJltbے`v`fےbHAvfH~JtArdnXvtAJlfH~btlHfpv|ltpfH~|ZdQbfHfbdQZ|`vXntArdnXv`Jlt˂p`J|ZdQb˂rXQdrtAJ˂pZZdQbtbHAZpdQZ|HAXQrH~ㅐfbAdZ|JXQr~HfpZp˂f`v|ZdQ`f~tbdQZf`vXJtArdnXvbdQZ|f`vtlJpvndrtAvpf|ZdQbf~HbdQZ|XQr˂tJArdJ`ےltbHAbےlJtA˂rXQdrtAJ˂pZHA`vXndrQt˂pZHAvnXrXQJ`XnvbtlHfpv|drnvp|ZdQ`f~drtAXnvtArdrXQJ`JltH~ftlJfpvdrtApZHAb|ZdbHAZpdQZ|`JXQrrd|J`ےltbbے`vˍpfJltbے`v`fp˂rpfH~JtArdnXvtAJlfH~btlHfpvJltp`vX|ZdQbےHAZbdQZ|`vXntArdnXv`Jltے`JQbtl˂rXQdrtAJ˂pZZdQbtbHAZpdQZ|JXQrH~ㅐfbAdZ|JXQr~HfpbdQZ|f`v|ZdQ`f~tbdQZf`vXJtArdnXvbdQZ|nr˂tlJp˂rdrtAr˂p|ZdQbfHfbdQZ|XQr˂JtArdJ`ےltbHAbےlJtA˂rXQdrtAJ˂pZHA`vXndrQt˂pZHAvnXltbXnvbtlHfpv|drnvp|ZdQ`f~dtbpZAb`tArdXQJ`ےJltZHAbtlJpvndrtApZHAXQ|ZdbHAZpdQZ|`JXQrrd|J`ےltbb˂vˍpfJltbے`v`fdQZ|f~f`JtArdnXvtAJlfH~btlHfpvdQZ|JXQr|ZdQbbHAZbdQZ|ے`JXQtArdrXQJ`Jltr˂pQbtl˂rXQdrtAJ˂pZZdQbtbHAZpdQZ|pZHAbH~ㅐfbAdZ|JXQr~HfpdrtAJvXn|ZdQ`f~tbdQZf`vXJtArdnXvdrtAJ˂pZHtlJp˂rdrtAr˂p|ZdQbےHAZbdQZ|ZHAbJAr|J`ےltbHAbےlJtA˂rXQdrtAJے`J`vXndrQt66666666666666666666666666666666666666666666666677777777777777 \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv39_0.dat b/mpdf/qrcode/data/qrv39_0.dat deleted file mode 100644 index c7955f1..0000000 --- a/mpdf/qrcode/data/qrv39_0.dat +++ /dev/null @@ -1,345 +0,0 @@ -~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopopokkkkkklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQOOPOPOPOLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopopolklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPONMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopopolklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopopolklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopopolklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqponmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqnmnmnmnmlklkkkkkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqnmnmnmnmklklklkljijijijihghghghgfefefefedcdcdcdcbabababa`_`_^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqnmnmnmnmklklklkljijijijihghghghgfefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqnmnmnmnmklklklkljijijijihghghghgfefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqnmnmnmnmklklklkljijijijihghghghgfefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSPOPOOOOONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqnmnmnmnmklklklkljijijijihghghghgfefefefedcdcdcdcbaba`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSOPOPOPOPNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqnmnmnmnmklklklkkjijijijihghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSOPOPOPOPNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqnmnmnmnmkkkklklkjijijijihghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSOPOPOPOPNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSOPOPOPOPNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcbaba`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSOPOPOPOPNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqnmnmnmnmlklklklkjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSOPOPOPOONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqponmnmnmnmlklklklkjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSOOOOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststspopopoponmnmnmnmlklklklkjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststspopopoponmnmnmnmlkkkkkkljijijijihghghghgfefedcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststspopopoponmnmnmnmklklklkljijijijihghghghgdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutststsrqpopopoponmnmnmnmklklklkljijijijihghghghgdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvurqrqrqrqpopopoponmnmnmnmklklklkljijijijihghghghgdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvurqrqrqrqpopopoponmnmnmnmklklklkljijijijihghgfefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQPOOOOOOPNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvurqrqrqrqpopopoponmnmnmnmklklklkljijijijifefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQOPOPOPOPNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCBABABA~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvutsrqrqrqrqpopopoponmnmnmnmklklkkkkjijijijifefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQOPOPOPOPNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEBABABABA~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwtstststsrqrqrqrqpopopoponmnmnmnmkklklklkjijijijifefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQOPOPOPOPNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEBABABABA~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwtstststsrqrqrqrqpopopoponmnmnmnmlklklklkjijihghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQOPOPOPOPNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEBABABABA~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwtstststsrqrqrqrqpopopoponmnmnmnmlklklklkhghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQOPOPOPOPNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEDCDCDCBABABABA~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwvutstststsrqrqrqrqpopopoponmnmnmnmlklklklkhghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQOPOPOOOONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGDCDCDCDCBABABABA~}~}~}~}|{|{|{|{zyzyzyzyvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmkkkklklkhghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQOOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGDCDCDCDCBABABABA~}~}~}~}|{|{|{|{zyzyzyzyvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmlklkjijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGDCDCDCDCBABABABA~}~}~}~}|{|{|{|{zyzyzyzyvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGFEFEFEDCDCDCDCBABABABA~}~}~}~}|{|{|{|{zyzyzyxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDCBABABABA~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDCBABABABA~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDCBABABABA~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQOOOOOPOPNMNMNMNMLKLKLKLKJIHGHGHGFEFEFEFEDCDCDCDCBABABABA~}~}~}~}|{|{|{zyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQOPOPOPOPNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEDCDCDCDCBABABABA~}~}~}~}zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmnmjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWVUVUTSTSTSTSRQRQRQRQOPOPOPOPNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEDCDCDCDCBABABABA~}~}~}~}zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopoponmnmnmlkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQOPOPOPOPNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEDCDCDCDCBABABABA~}~}~}~}zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopopolklklkkkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQOPOPOPOPNMNMNMNMLKJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABABABABABA~}~}~}|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopopokkklklkljijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQOPOPOPOPNMNMNMNMJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABABABABABA|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopopoklklklkljijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYXWXWVUVUVUVUTSTSTSTSRQRQRQRQOPOOOOOONMNMNMNMJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABABABABABA|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopopoklklklkljijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABABABABABA|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopopoklklklkljijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABABABABABA~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopopoklklklkljijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABABABABABA~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqpopopopoklklklkljijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[ZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOOOLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABABABABABABABABABA@?@?@?@?>=>=>=>=<;<;<;<;878787876565656534343434212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        BABABABA@?@?@?@?>=>=>=>=<;:9:9:9878787876565656534343434212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        BABABABA@?@?@?@?>=>=>=>=:9:9:9:9878787876565656534343434212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        BABABABA@?@?@?@?>=>=>=>=:9:9:9:987878787656565653434343421212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - BABABABA@?@?@?@?>=>=>=>=:9:9:9:987878787656565653434343421212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - BABABABA@?@?@?@?>=<;<;<;:9:9:9:987878787656565653333334321212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - BABABABA@?@?@?@?<;<;<;<;:9:9:9:987878787656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - BABABABA@?@?@?@?<;<;<;<;:9:9:9:98787878765656565434343430/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!       - - - - BABABABA@?@?@?@?<;<;<;<;:9:9:9:98787878765656565434343430/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!     - - - - BABABABA@?>=>=>=<;<;<;<;:9:9:9:98787878765656565434333330/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!     - - - - BABABABA>=>=>=>=<;<;<;<;:9:9:9:98787878765656565434343430/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!     - - - - BABABABA>=>=>=>=<;<;<;<;:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!     - - - - BABABABA>=>=>=>=<;<;<;<;:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - BA@?@?@?>=>=>=>=<;<;<;<;:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - @?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - @?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - @?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - @?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - @?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!    - - - - @?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:98787878765434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!    - - - - @?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:98787878743333334212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!    - - - - @?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:98787878734343434212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!    - - - - @?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:98787878734343434212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#        - - - - @?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:98787878734343434212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#        - - - - @?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:98787878734343434212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#        - - - - @?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:98787878734343434212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#        - - - - @?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:98787878734343333212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!        - - - - @?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:98787878733434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!        - - - - @?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:98787878743434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!        - - - - @?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:98787878743434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!        - - - - @?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:98787878743434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!        - - - - @?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:98787876543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!        - - - - @?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:96565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!        - - - - @?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:96565656533333434212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!        - - - - @?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:96565656534343434212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!        - - - - @?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:96565656534343434212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!        - - - - @?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:96565656534343434212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!        - - - - @?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:96565656534343434212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!        - - - - @?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:96565656534343434212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - @?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:96565656534333333212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - @?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:96565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - @?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:96565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - @?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:96565656543434343212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - @?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:96565656543434343212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - @?@?@?@?>=>=>=>=<;<;<;<;:98787876565656543434343212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - @?@?@?@?>=>=>=>=<;<;<;<;878787876565656543434333212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - @?@?@?@?>=>=>=>=<;<;<;<;878787876565656533343434212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - !!""##$$rrqqkkjj - - ))**++,,ttssrrqqIIJJKKLLTTSSRRQQiijjkkll44332211==>>??@@BBAA@@?? &&''(())wwvvuuttFFGGHHIIWWVVUUTTffgghhii??@@AABB^^]]\\[[__``aabb>>==<<;;##$$%%&&kkjjiihh}}~~~~<<==>>??aa``__^^%%&&''((iihhggff --..//00ppoonnmmMMNNOOPPPPOONNMMmmnnoopp00//..-- AABBCCDD>>==<<;; - - **++,,--ssrrqqppJJKKLLMMSSRRQQPPjjkkllmmCCDDEEFFZZYYXXWWccddeeff::998877 - -''(())**ggffeedd !!""##}}||{{zz@@AABBCC]]\\[[ZZ))**++,,eeddccbb11223344llkkjjiiQQRRSSTTLLKKJJIIqqrrsstt,,++**)) - - EEFFGGHH::998765..//0011oonnmmllNNOOPPQQOONNMMLLnnooppqqGGHHIIJJVVUUTTSSgghhiijj66554433 ++,,--..ccbbaa``$$%%&&''yyxxwwvvDDEEFFGGYYXXWWVV--..//00aa``__^^55667788hhggffeeUUVVWWXXHHGGFFEEuuvvwwxx((''&&%%IIJJKKLL43322110 22334455kkjjiihhRRSSTTUUKKJJIIHHrrssttuu - -~~}}||{{KKLLMMNNRRQQPPOOkkllmmnn221100////001122__^^]]\\ - - (())**++uuttssrrHHIIJJKKUUTTSSRR11223344]]\\[[ZZ99::;;<>??@@``__^^]]]]^^__``@@??>>==}}~~ VVWWXXYY,++**))(::;;<<==ccbbaa``ZZ[[\\]]CCBBAA@@zz{{||}}vvuuttssSSTTUUVVJJIIHHGGssttuuvv**))(('' - - 778899::WWVVUUOO00112233mmllkkjjPPQQRRSSMMLLKKJJ99::;;<>??@@AA__^^]]\\^^__``aa??>>==<<~~ - - rrqqponmWWXXYYZZFFEEDDCCwwxxyyzz&&%%$$##;;<<==>>NNMMLLKK44556677iihhggffTTUUVVWWIIHHGGFF==>>??@@LLKKJJII%%&&''((xxwwvvuuEEFFGGHHXXWWVVUUeeffgghh88776655 - - ^^__``aa$##""!! ""##$$%%{{zzyyxxBBCCDDEE[[ZZYYXXbbccddee;;::9988 lkkjjiih[[\\]]^^BBAA@@??{{||}}~~""!!  !!""~~}}||{{??@@AABBJJIIHHGG8899::;;eeddccbbXXYYZZ[[EEDDCCBBAABBCCDDHHGGFFEE))**++,,ttssrrqqIIJJKKLLTTSSRRQQiijjkkll44332211 bbccddee  &&''(())wwvvuuttFFGGHHIIWWVVUUTTffgghhii77665544hggffeed__``aabb>>==<<;;##$$%%&&zzyyxxwwCCDDEEFFFFEEDDCC~~<<==>>??aa``__^^\\]]^^__AA@@??>>EEFFGGHHDDCCBBAA--..//00ppoonnmmMMNNOOPPPPOONNMMmmnnoopp00//..-- ffgghhii - - **++,,--ssrrqqppJJKKLLMMSSRRQQPPjjkkllmm33221100dccbbaa`ccddeeff::998877 - -''(())**vvuuttssGGHHIIJJBBAA@@?? !!""##}}||{{zz@@AABBCC]]\\[[ZZ``aabbcc==<<;;::IIJJKKLL@@??>>==11223344llkkjjiiQQRRSSTTLLKKJJIIqqrrsstt,,++**)) - - ~~}}||{{jjkkqqrr..//0011oonnmmllNNOOPPQQOONNMMLLnnooppqq//..--,, `__^^]]\gghhiijj66554433 ++,,--..rrqqppooKKLLMMNN>>==<<;;$$%%&&''yyxxwwvvDDEEFFGGYYXXWWVVddeeffgg99887766~~}}MMNNOOPP<<;;::9955667788hhggffeeUUVVWWXXHHGGFFEEuuvvwwxx((''&&%%zzyyxxwwssttuuvv22334455kkjjiihhRRSSTTUUKKJJIIHHrrssttuu++**))((!!""##$$\[[ZZYYXkkllmmnn221100////001122nnmmllkkOOPPQQRR::993322(())**++uuttssrrHHIIJJKKUUTTSSRRhhiijjkk55443322||{{zzyyQQRRSSTT3322110099::;;<>??@@``__^^]]]]^^__``@@??>>==}}~~ !!""##$$rrqqkkjj{{||}}~~ ::;;<<==ccbbaa``ZZ[[\\]]CCBBAA@@zz{{||}}##""!! ))**++,,SRQPOONNssttuuvv**))(('' - - 778899::ffeeddccWWXXYYZZ--,,++**00112233mmllkkjjPPQQRRSSMMLLKKJJppqqrrss--,,++**ttssrrqqYYZZ[[\\++**))((AABBCCDD\\[[ZZYYaabbccdd<<;;::99%%&&''((iihhggff !!~~}}||>>??@@AA__^^]]\\^^__``aa??>>==<<~~--..//00MMLLKKJJwwxxyyzz&&%%$$##;;<<==>>bbaa``__[[\\]]^^))((''&&44556677iihhggffTTUUVVWWIIHHGGFFttuuvvww))((''&&ppoonnmm]]^^__``''&&%%$$EEFFGGHHXXWWVVUUeeffgghh88776655 - - ))**++,,eeddccbb""##$$%%{{zzyyxxBBCCDDEE[[ZZYYXXbbccddee;;::998811223399IIHHGGFF{{||}}~~""!!  !!""~~}}||{{??@@AABB^^]]\\[[__``aabb%%$$##""8899::;;eeddccbbXXYYZZ[[EEDDCCBBxxyyzz{{%%$$##""llkkjjiiaabbccdd##""!! IIJJKKLLTTSSRRQQiijjkkll44332211 --..//00aa``__^^ &&''(())wwvvuuttFFGGHHIIWWVVUUTTffgghhii77665544::;;<<==EEDDCCBB##$$%%&&zzyyxxwwCCDDEEFFZZYYXXWWccddeeff!! <<==>>??aa``__^^\\]]^^__AA@@??>>||}}~~!! hhggffeeeeffgghhMMNNOOPPPPOONNMMmmnnoopp00//..-- 11223344]]\\[[ZZ - - **++,,--ssrrqqppJJKKLLMMSSRRQQPPjjkkllmm33221100>>??@@AAAA@@??>> - -''(())**vvuuttssGGHHIIJJVVUUTTSSgghhiijj@@AABBCC]]\\[[ZZ``aabbcc==<<;;::ddccbbaaiijjkkll~~}}||QQRRSSTTLLKKJJIIqqrrsstt,,++**)) - - 55667788YYXXWWVV..//0011oonnmmllNNOOPPQQOONNMMLLnnooppqq//..--,, BBCCDDEE==<<;;:: ++,,--..rrqqppooKKLLMMNNRRQQPPOOkkllmmnnDDEEFFGGYYXXWWVVddeeffgg99887766``__^^]]mmnnoopp{{zzyyxxUUVVWWXXHHGGFFEEuuvvwwxx((''&&%%99::;;<>??@@LLKKJJII66778899ggffeeddVVWWXXYYGGFFEEDDvvwwxxyy''&&%%$$JJKKLLMM3221100/ 33445566jjiihhggSSTTUUVVJJIIHHGGssttuuvv - - }}||{{zzLLMMNNOOQQPPOONNllmmnnoo1100//..XXWWVVUUuuvvwwxx - - - -ssrrqqpo]]^^__``@@??>>==}}~~ !!""##$$||{{zzyyAABBCCDDHHGGFFEE::;;<<==ccbbaa``ZZ[[\\]]CCBBAA@@zz{{||}}##""!! NNOOUUVV/..--,,+ - - 778899::ffeeddccWWXXYYZZFFEEDDCCwwxxyyzzyyxxwwvvPPQQRRSSMMLLKKJJppqqrrss--,,++** - -TTSSRRQQyyzz{{|| nmlkkjjiaabbccdd<<;;::99%%&&''((xxwwvvuuEEFFGGHHDDCCBBAA !!~~}}||>>??@@AA__^^]]\\^^__``aa??>>==<<~~WWXXYYZZ+**))((';;<<==>>bbaa``__[[\\]]^^BBAA@@??{{||}}~~uuttssrrTTUUVVWWIIHHGGFFttuuvvww))((''&& PPOONNMM}}~~ihhggffeeeffgghh88776655 - - ))**++,,ttssrrqqIIJJKKLL@@??>>==""##$$%%{{zzyyxxBBCCDDEE[[ZZYYXXbbccddee;;::9988 [[\\]]^^'&&%%$$# !!""~~}}||{{??@@AABB^^]]\\[[__``aabb>>==<<;; - - qqponmlkXXYYZZ[[EEDDCCBBxxyyzz{{%%$$##""LLKKJJIIeddccbbaiijjkkll44332211 --..//00ppoonnmmMMNNOOPP<<;;::99&&''(())wwvvuuttFFGGHHIIWWVVUUTTffgghhii77665544 - - __``aabb#""!! ##$$%%&&zzyyxxwwCCDDEEFFZZYYXXWWccddeeff::998877 kjjiihhg\\]]^^__AA@@??>>||}}~~!! HHGGFFEEa``__^^]mmnnoopp00//..-- 11223344llkkjjiiQQRRSSTT33221100**++,,--ssrrqqppJJKKLLMMSSRRQQPPjjkkllmm33221100ccddeeff - -''(())**vvuuttssGGHHIIJJVVUUTTSSgghhiijj66554433gffeeddc``aabbcc==<<;;::DDCCBBAA !!""##]\\[[ZZYqqrrsstt,,++**)) - - 55667788hhggffeeUUVVWWXX//..--,,..//0011oonnmmllNNOOPPQQOONNMMLLnnooppqq//..--,, ~~gghhiijj ++,,--..rrqqppooKKLLMMNNRRQQPPOOkkllmmnn221100//cbbaa``_ddeeffgg99887766 - - @@??>>==$$%%&&''YXXWWVVUuuvvwwxx((''&&%%99::;;<>??@@``__^^]]]]^^__``''&&%%$$66778899ggffeeddVVWWXXYYGGFFEEDDvvwwxxyy''&&%%$$yyxxwwvvttuuvvww 33445566jjiihhggSSTTUUVVJJIIHHGGssttuuvv**))((''""##$$%%[ZZYYXXWllmmnnoo1100//..88776655,,--..//NNMMLLKK}}~~ !!""##$$||{{zzyyAABBCCDD\\[[ZZYYaabbccdd##""!! ::;;<<==ccbbaa``ZZ[[\\]]CCBBAA@@zz{{||}}##""!!  !!uuttssrrxxyyzz{{ - - 778899::ffeeddccWWXXYYZZFFEEDDCCwwxxyyzz&&%%$$##&&''(())WVVUUTSRppqqrrss--,,++** - -4433221100112233JJIIHHGG%%&&''((xxwwvvuuEEFFGGHHXXWWVVUUeeffgghh>>??@@AA__^^]]\\^^__``aa??>>==<<~~""##$$%%qqkkjjii||}}~~;;<<==>>bbaa``__[[\\]]^^BBAA@@??{{||}}~~""!! **++,,--QPOONNMMttuuvvww))((''&& 00//..--99::;;<>==<<;;..//0011LLKKJJIIxxyyzz{{%%$$##"",,++**))==>>??@@BBAA@@?? --..//00ppoonnmmMMNNOOPPPPOONNMMmmnnooppFFGGHHIIWWVVUUTTffgghhii77665544 - - **++,,--ddccbbaa##$$%%&&zzyyxxwwCCDDEEFFZZYYXXWWccddeeff::998877223399::HHGGFFEE||}}~~!!  !!""##((''&&%%AABBCCDD>>==<<;; 11223344llkkjjiiQQRRSSTTLLKKJJIIqqrrsstt ~~}}||JJKKLLMMSSRRQQPPjjkkllmm33221100..//0011``__^^]] - -''(())**vvuuttssGGHHIIJJVVUUTTSSgghhiijj66554433;;<<==>>DDCCBBAA$$%%&&''$$##""!!EEFFGGHH::998765 - - 55667788hhggffeeUUVVWWXXHHGGFFEEuuvvwwxx - - {{zzyyxxNNOOPPQQOONNMMLLnnooppqq//..--,, 22334455\\[[ZZYY ++,,--..rrqqppooKKLLMMNNRRQQPPOOkkllmmnn221100//??@@AABB@@??>>== - - (())**++ IIJJKKLL4332211099::;;<>??@@``__^^]]]]^^__``@@??>>==}}~~ - -ssrrqqpoVVWWXXYYGGFFEEDDvvwwxxyy''&&%%$$::;;<<==OONNMMLL33445566jjiihhggSSTTUUVVJJIIHHGGssttuuvv**))(('' - - GGHHIIJJ8765433200112233VVWWXXYY,++**))(!!""##$$||{{zzyyAABBCCDD\\[[ZZYYaabbccdd<<;;::99 nmlkkjjiZZ[[\\]]CCBBAA@@zz{{||}}##""!!  !!~~}}||>>??@@AAKKJJIIHH778899::ffeeddccWWXXYYZZFFEEDDCCwwxxyyzz&&%%$$##KKLLMMNN21100//. - -44556677ZZ[[\\]](''&&%%$%%&&''((xxwwvvuuEEFFGGHHXXWWVVUUeeffgghh88776655ihhggffe^^__``aa??>>==<<~~""##$$%%{{zzyyxxBBCCDDEEGGFFEEDD;;<<==>>bbaa``__[[\\]]^^BBAA@@??{{||}}~~""!! OOUUVVWW.--,,++* 8899::;; ^^__``aa$##""!! - - ))**++,,ttssrrqqIIJJKKLLTTSSRRQQiijjkkll44332211eddccbbabbccddee;;::9988 &&''(())wwvvuuttFFGGHHIICCBBAA@@ !!""~~}}||{{??@@AABB^^]]\\[[__``aabb>>==<<;;XXYYZZ[[*))((''&~~<<==>>?? - - bbccddee  --..//00ppoonnmmMMNNOOPPPPOONNMMmmnnoopp00//..--a``__^^]ffgghhii77665544 - - **++,,--ssrrqqppJJKKLLMM??>>==<<##$$%%&&zzyyxxwwCCDDEEFFZZYYXXWWccddeeff::998877 - -\\]]^^__&%%$$##" !!""##}}||{{zz@@AABBCC\\]]^^__ - - ffgghhii11223344llkkjjiiQQRRSSTTLLKKJJIIqqrrsstt,,++**)) !!""##]\\[[ZZYjjkkllmm33221100..//0011oonnmmllNNOOPPQQ;;::9933''(())**vvuuttssGGHHIIJJVVUUTTSSgghhiijj66554433 ``aabbcc"!! $$%%&&''yyxxwwvvDDEEFFGG``aabbcc jjkkqqrr55667788hhggffeeUUVVWWXXHHGGFFEEuuvvwwxx((''&&%%$$%%&&''YXXWWVVUnnooppqq//..--,, 22334455kkjjiihhRRSSTTUU221100//++,,--..rrqqppooKKLLMMNNRRQQPPOOkkllmmnn221100//ddeeffgg - - (())**++uuttssrrHHIIJJKKddeeffggssttuuvv99::;;<>??@@``__^^]]]]^^__``@@??>>==}}~~ ,,--..//NNMMLLKKvvwwxxyy''&&%%$$::;;<<==ccbbaa``ZZ[[\\]]**))((''33445566jjiihhggSSTTUUVVJJIIHHGGssttuuvv**))(('' - - ||{{zzyyqqrrsstt00112233mmllkkjjPPQQRRSSllmmnnoozzyyxxww{{||}}~~ !!""##$$||{{zzyyAABBCCDD\\[[ZZYYaabbccdd<<;;::9900112233JJIIHHGGzz{{||}}##""!!  !!~~}}||>>??@@AA__^^]]\\^^__``aa&&%%$$##778899::ffeeddccWWXXYYZZFFEEDDCCwwxxyyzz&&%%$$##xxwwvvuuuuvvwwxx 44556677iihhggffTTUUVVWWppqqrrss vvuuttss%%&&''((xxwwvvuuEEFFGGHHXXWWVVUUeeffgghh8877665599::;;<>bbaa``__[[\\]]^^BBAA@@??{{||}}~~""!!  !!""ttssrrqqyyzz{{|| - - 8899::;;eeddccbbXXYYZZ[[ttuuvvwwxxyyzz{{%%$$##""LLMMNNOO100//..- - - 55667788hhggffeeUUVVWWXXHHGGFFEEuuvvwwxx - - {{zzyyxxNNOOPPQQOONNMMLLnnooppqq//..--,, MMNNOOUU++**))((||}}~~!! UUVVWWXX-,,++**)99::;;<>??@@``__^^]]]]^^__``@@??>>==}}~~ - -ssrrqqpoVVWWXXYYGGFFEEDDvvwwxxyy''&&%%$$ZZ[[\\]]##""!!  - - ]]^^__``%$$##""!!!""##$$||{{zzyyAABBCCDD\\[[ZZYYaabbccdd<<;;::99 nmlkkjjiZZ[[\\]]CCBBAA@@zz{{||}}##""!! ^^__``aa aabbccdd! %%&&''((xxwwvvuuEEFFGGHHXXWWVVUUeeffgghh88776655ihhggffe^^__``aa??>>==<<~~bbccddeeeeffgghh - - ))**++,,ttssrrqqIIJJKKLLTTSSRRQQiijjkkll44332211eddccbbabbccddee;;::9988 ffgghhii - -~~}}||iijjkkqq --..//00ppoonnmmMMNNOOPPPPOONNMMmmnnoopp00//..--a``__^^]ffgghhii77665544 - - jjkkqqrr {{zzyyxxrrssttuu11223344llkkjjiiQQRRSSTTLLKKJJIIqqrrsstt,,++**)) !!""##]\\[[ZZYjjkkllmm33221100ssttuuvv wwvvuuttvvwwxxyy 55667788hhggffeeUUVVWWXXHHGGFFEEuuvvwwxx((''&&%%$$%%&&''YXXWWVVUnnooppqq//..--,, ~~}}||{{wwxxyyzz - -  !!""##ssrrqqkkzz{{||}} - - 99::;;<>??@@``__^^]]]]^^__``@@??>>==}}~~ ,,--..//NNMMLLKKvvwwxxyy''&&%%$$vvuuttss - - (())**++ffeeddcc!!""##$$||{{zzyyAABBCCDD\\[[ZZYYaabbccdd<<;;::9900112233JJIIHHGGzz{{||}}##""!!  !!rrqqkkjj ,,--..//bbaa``__%%&&''((xxwwvvuuEEFFGGHHXXWWVVUUeeffgghh8877665599::;;<>??@@BBAA@@?? &&''(())eeddccbb44556677ZZYYXXWW --..//00ppoonnmmMMNNOOPPPPOONNMMmmnnoopp00//..-- AABBCCDD>>==<<;; - - **++,,--aa``__^^ !!8899::;;VVUUOONN11223344llkkjjiiQQRRSSTTLLKKJJIIqqrrsstt,,++**)) - - EEFFGGHH::998765..//0011]]\\[[ZZ""##$$%%~~<<==>>??MMLLKKJJ55667788hhggffeeUUVVWWXXHHGGFFEEuuvvwwxx((''&&%%IIJJKKLL43322110 22334455YYXXWWVV&&''(()) !!""##}}||{{zz@@AABBCCIIHHGGFF99::;;<>??@@``__^^]]]]^^__``@@??>>==}}~~ VVWWXXYY,++**))(::;;<<==LLKKJJII..//0011(())**++uuttssrrHHIIJJKKAA@@??>>!!""##$$||{{zzyyAABBCCDD\\[[ZZYYaabbccdd<<;;::99ZZ[[\\]](''&&%%$ !!~~}}||>>??@@AAHHGGFFEE22334455,,--..//qqppoonnLLMMNNOO==<<;;::%%&&''((xxwwvvuuEEFFGGHHXXWWVVUUeeffgghh88776655 - - ^^__``aa$##""!! ""##$$%%{{zzyyxxBBCCDDEEDDCCBBAA6677889900112233mmllkkjjPPQQRRSS99332211))**++,,ttssrrqqIIJJKKLLTTSSRRQQiijjkkll44332211 bbccddee  &&''(())wwvvuuttFFGGHHII@@??>>==::;;<<==44556677iihhggffTTUUVVWW00//..----..//00ppoonnmmMMNNOOPPPPOONNMMmmnnoopp00//..-- ffgghhii - - **++,,--ssrrqqppJJKKLLMM<<;;::99>>??@@AA8899::;;eeddccbbXXYYZZ[[,,++**))11223344llkkjjiiQQRRSSTTLLKKJJIIqqrrsstt,,++**)) - - ~~}}||{{jjkkqqrr..//0011oonnmmllNNOOPPQQ33221100BBCCDDEE~~<<==>>??aa``__^^\\]]^^__((''&&%%55667788hhggffeeUUVVWWXXHHGGFFEEuuvvwwxx((''&&%%zzyyxxwwssttuuvv22334455kkjjiihhRRSSTTUU//..--,,FFGGHHII}}||{{zz@@AABBCC]]\\[[ZZ``aabbcc$$##""!!99::;;<>??@@``__^^]]]]^^__``@@??>>==}}~~ !!""##$$rrqqkkjj{{||}}~~ ::;;<<==ccbbaa``ZZ[[\\]]''&&%%$$~~}}||NNOOPPQQuuttssrrHHIIJJKKUUTTSSRRhhiijjkkAABBCCDD\\[[ZZYYaabbccdd<<;;::99%%&&''((iihhggff !!~~}}||>>??@@AA__^^]]\\^^__``aa##""!! {{zzyyxxRRSSTTUUqqppoonnLLMMNNOOQQPPOONNllmmnnooEEFFGGHHXXWWVVUUeeffgghh88776655 - - ))**++,,eeddccbb""##$$%%{{zzyyxxBBCCDDEE[[ZZYYXXbbccddeewwvvuuttVVWWXXYYmmllkkjjPPQQRRSSMMLLKKJJppqqrrss ~~}}IIJJKKLLTTSSRRQQiijjkkll44332211 --..//00aa``__^^ &&''(())wwvvuuttFFGGHHIIWWVVUUTTffgghhiissrrqqppZZ[[\\]]iihhggffTTUUVVWWIIHHGGFFttuuvvww - - ||{{zzyyMMNNOOPPPPOONNMMmmnnoopp00//..-- 11223344]]\\[[ZZ - - **++,,--ssrrqqppJJKKLLMMSSRRQQPPjjkkllmmoonnmmll^^__``aaeeddccbbXXYYZZ[[EEDDCCBBxxyyzz{{xxwwvvuuQQRRSSTTLLKKJJIIqqrrsstt,,++**)) - - 55667788YYXXWWVV..//0011oonnmmllNNOOPPQQOONNMMLLnnooppqq kkjjiihhbbccddeeaa``__^^\\]]^^__AA@@??>>||}}~~ ttssrrqqUUVVWWXXHHGGFFEEuuvvwwxx((''&&%%99::;;<>??@@LLKKJJII66778899ggffeeddVVWWXXYYGGFFEEDDvvwwxxyy ccbbaa``jjkkllmmYYXXWWVVddeeffgg99887766jiihhggf]]^^__``@@??>>==}}~~ !!""##$$||{{zzyyAABBCCDDHHGGFFEE::;;<<==ccbbaa``ZZ[[\\]]CCBBAA@@zz{{||}}__^^]]\\nnooppqqUUTTSSRRhhiijjkk55443322feeddccbaabbccdd<<;;::99%%&&''((xxwwvvuuEEFFGGHHDDCCBBAA !!~~}}||>>??@@AA__^^]]\\^^__``aa??>>==<<~~[[ZZYYXXrrssttuuQQPPOONNllmmnnoo1100//..baa``__^eeffgghh88776655 - - ))**++,,ttssrrqqIIJJKKLL@@??>>==""##$$%%{{zzyyxxBBCCDDEE[[ZZYYXXbbccddee;;::9988WWVVUUTTvvwwxxyyMMLLKKJJppqqrrss--,,++** !!""^]]\\[[Ziijjkkll44332211 --..//00ppoonnmmMMNNOOPP<<;;::99&&''(())wwvvuuttFFGGHHIIWWVVUUTTffgghhii77665544 !!""##SSRRQQPPzz{{||}}IIHHGGFFttuuvvww))((''&&##$$%%&&ZYYXXWWVmmnnoopp00//..-- 11223344llkkjjiiQQRRSSTT33221100**++,,--ssrrqqppJJKKLLMMSSRRQQPPjjkkllmm33221100$$%%&&''OONNMMLL~~EEDDCCBBxxyyzz{{%%$$##""''(())**VUUTSRQPqqrrsstt,,++**)) - - 55667788hhggffeeUUVVWWXX//..--,,..//0011oonnmmllNNOOPPQQOONNMMLLnnooppqq//..--,,(())**++KKJJIIHHAA@@??>>||}}~~!! ++,,--..OONNMMLLuuvvwwxx((''&&%%99::;;<>??@@``__^^]]]]^^__``''&&%%$$66778899ggffeeddVVWWXXYYGGFFEEDDvvwwxxyy''&&%%$$00112233CCBBAA@@998877663399::;;GGFFEEDD}}~~ !!""##$$||{{zzyyAABBCCDD\\[[ZZYYaabbccdd##""!! ::;;<<==ccbbaa``ZZ[[\\]]CCBBAA@@zz{{||}}##""!! 99::;;<>==<<55443322<<==>>??CCBBAA@@%%&&''((xxwwvvuuEEFFGGHHXXWWVVUUeeffgghh>>??@@AA__^^]]\\^^__``aa??>>==<<~~==>>??@@;;::99881100//..@@AABBCC??>>==<< - - ))**++,,ttssrrqqIIJJKKLLTTSSRRQQiijjkkllBBCCDDEE[[ZZYYXXbbccddee;;::9988AABBCCDD77665544--,,++** - -DDEEFFGG;;::9987 --..//00ppoonnmmMMNNOOPPPPOONNMMmmnnooppFFGGHHIIWWVVUUTTffgghhii77665544EEFFGGHH33221100))((''&& HHIIJJKK65433221 11223344llkkjjiiQQRRSSTTLLKKJJIIqqrrsstt ~~}}||JJKKLLMMSSRRQQPPjjkkllmm33221100IIJJKKLL//..--,,fpvp˂rrtAdQZXnv|ZdQbfpvbHAZdrtAvpfr˂p|ZdQbfpvbHAZdrtAvpftlJ~Hfp˂rXQltb~f`tAd|~HfJ`ےdQZ|vXn`JXQrrd|~HXvrAJlpfH~˂pZHAdQbtvnXHAZp˂rtAJlpfH~lJtAv`frXQJdQZ|H~f`JXQHfpvےbHA|drnvpXQr˂nXv`XQJ`ے|drp`vXtlJnXv`p˂rJltH~fZHAbtlJnXv`p˂rJltے`JXQtArdvnXJ`ےdQZ|vXnZdQbtpvnbHAZpdrtAJvpfH˂pZZdQbt`f~tbdQf`vbے`lJtArv`frXQJtbdQf`vd|Z~Hfp`ےbdrtAJ`vXnrbt璀nXvZp˂tAJlfH~pZHAbf~HbHAZtAJlnvptArdf~HXQJ`ےbdQZ|`vXnے`JXQtArdf~HXQJ`ےbdQZ|HAbے|ZdQbv`f~bHAZpdrtAJvpfےlJtAXv`f˂rXQltb~f`HAbےlJtAHfpvZ|dXnvJXQrd|Z~Hfp`ےbZ|dXnvdQbtvnXHAZp˂ltbvp`lJtAd`f~rXQJ`tbdQZf`vXے`Jfpvp˂rtbdQZfH~|ZdQbfpvbHAZdrtAvpfr˂p|ZdQbfpvbHAZdtAJ`JXQrtlJfpv˂rXQltb`JXQrrd|~HfJ`ےdQZ|vXn`JXQrrd|nXvrtAJlpfH~˂pZHAdQbtvnXHAZp˂rtAJlpfے`lJtArv`frXQJdQZ|vXn|ZdQHfpvےbHA|drnvpXQr˂nXv`XQJ`ے|drf`vXtlJnXv`p˂rJltH~fZHAbtlJnXv`p˂rltb˂pZtArdtnXv`J`ےdQZ|˂pZZdQbtpvnbHAZpdrtAJvpfH˂pZZdQbt`pvtbdQf`vbے`lJtArv`frXQJtbdQJXQrd|Z~Hfp`ےbdrtAJvpfHbtlnXvZp˂tAJlfH~pZHAbf~HbHAZtAJlnvptArdf~HXQJ`ےbdQZ|`vXnے`JXQtArdf~HXQJ`ےnvpHAbےlJtAf~HbHAZpdtAJlHAbےlJtAXv`f˂rXQltb~f`HAbےlJtAnrXQJZ|dXnvJXQrd|Z~Hfp`ےbZ|d˂pZHAdQbtvnXHAZp˂ltd~f`JtArd`f~rXQJ`tbdQZf`vXے`Jfpvp˂rtdrtAfH~|ZdQbfpvbHAZdrtAvpfr˂p|ZdQbfpvbHAZfHf`JXQrrd|fpv˂rXQtbn`JXQrrd|~HfJ`ےdQZ|vXn`JXQrrd|`p˂rtAJpfH~˂pZHAdQbtvnXHAZp˂tAJlbے`lJtArv`frXQJrtAJlvXn|ZdQHfpvےbHA|drnvpXQr˂nXv`XQJ`ےJltvpftlJnXv`p˂rJltH~fZHAbtlJnXv`p˂r`vXn˂p`ZdQbtnXv`J`ےvpf˂pZZdQbtpvnbHAZpdrtAJvpfH˂pZZdQbtrXQJ`bdQZ|f`vbے`lJtArv`frXQJtbnJXQrd|Z~Hfp`ےbtbdQvpfHbtlnXvZp˂tAJlfH~pZHAbf~HbHAZbdQZ|ے`JXQtArdf~HXQJ`ےbdQZ|`vXnے`JXQtArdf~HXQJ`ےvpfJXQrlJtAf~HfbHAZpHf`HAbےlJtAXv`f˂rXQltb~f`HAbےlJtAےbHAdrtAXnvJXQrd|Z~Hfp`ےbvpfH˂pZHAdQbtvnXHAZp˂Z|d~vJtArd`f~rXQJ`tbdQZf`vXے`Jfpvp˂rdrtArZHA|ZdQbfpvbHAZdrtAvpfr˂p|ZdQbfpvJltH~f˂pZHArd|vnXv˂rXQvXn`JXQrrd|~HfJ`ےdQZ|vXn`JXQrrd|Zp˂JltpfH~˂pZHAdQbtvnXHAZp˂f`vbے`lJtArv`frXQJrtAJlpfے`|ZdQHfpvےbHA|drnvpXQr˂nXv`XQJ`ےJltbے`tlJnXv`p˂rJltH~fZHAbtlJnXv`bdQZ|`vXnbے`ZdQtAr`f~J`ےJvpfH˂pZZdQbtpvnbHAZpdrtAJvpfH˂pZZdQbtbHAZbdQZ|f`vbے`lJtArv`frXQJXnvJXQrd|Z~Hfp`ےbtbdQJXQrbtlnXvZp˂tAJlfH~pZHAbf~HbHAZbdQZ|JXQrtArdf~HXQJ`ےbdQZ|`vXnے`JXQtArdfHfdrtAvpfJXQrd|ZHfpvltb~f`HAbےlJtAXv`f˂rXQltb~f`HAbےlJtAp˂rdrtAXnvJXQrd|Z~Hfp`ےJlpfH~˂pZHAdQbtvnXHAZp˂Z|lZHAbJtArd`f~rXQJ`tbdQZf`vXے`Jfpvp˂rltbpZHA|ZdQbfpvbHAZdrtAvpfr˂p|ZdQbpvnJltH~f˂pZHAdQbt璀nXvdQZ|vXn`JXQrrd|~HfJ`ےdQZ|vXn`JXQrrd|XQJ`ےJltbpfH~˂pZHAdQbtvnXtbdQf`vbے`lJtArv`frXQJtbdQZ`JXQ|ZdQHfpvےbHA|drnvpXQr˂nXv`XQJ`ےdQZ|bے`tlJnXv`p˂rJltH~fZHAbtlJrXQJ`bdQZ|`vXnb˂lJtAr`ffpdrtAJvpfH˂pZZdQbtpvnbHAZpdrtAJvpfH˂pZZdQbtbHAZQZdrf`vbے`lJtArv`fZ|dXnvJXQrd|Z~Hfp`ےb|drr˂pbtlnXvZp˂tAJlfH~pZHAbf~HbHAZdrtAJJXQrtArdf~HXQJ`ےbdQZ|`vXnے`JXQtArdےHAZdrtAvpfpZHAbd|Zvnrltb~f`HAbےlJtAXv`f˂rXQltb~f`HAbےlJtAp˂rtAJlXnvJXQrd|ZHfpvrtAJlpfH~˂pZHAdQbtvnXHAZp˂tAJlZHAbJtArd`f~rXQJ`tbdQZf`vXے`Jfpvp˂rltbpZAb|ZdQbfpvbHAZdrtAvpfr˂p|ZdQbp˂rJltH~fے`JdQbtXQJ`ےdQZ|vXn`JXQrrd|~HfJ`ےdQZ|vXn`JXQrrd|XQJ`ptbdQZpfH~˂pZHAdQbt璀nrXQtbdQf`vbے`lJtArv`frXQJtbdQZ`JXQ|ZdQHfpvےbHA|drnvpXQr˂nXv`XQJ`ےdQZ|`JXQrtlJnXv`p˂rJltH~fZHAbtlJXQJ`ےbdQZ|`vXnXQr˂l|ZdQHAZpdrtAJvpfH˂pZZdQbtpvnbHAZpdrtAJvpfH˂pZZdQbt˂rXQ|drf`vbے`lJtArJ`ےZ|dXnvJXQrd|Z~Hfp`ےb|drr˂pZbtlnXvZp˂tAJlfH~pZHAbf~HbHAZdrtAdQ˂pZtArdf~HXQJ`ےbdQZ|`vXnے`JXQfpvbHAZdrtAvpfpZHAbbtl˂rXQltb~f`HAbےlJtAXv`f˂rXQltb~f`HAbےlJfJ`ےtAJlXnvJXQrd|ZHAZp˂rtAJlpfH~˂pZHAdQbtvnXHAZp˂tAdQZ|Ab`JJtArd`f~rXQJ`tbdQZf`vXے`Jfpvp˂rZ|dHAbے|ZdQbfpvbHAZdrtAvpfr˂pnXv`p˂rJltH~fے`JJtArdJ`ےdQZ|vXn`JXQrrd|~HfJ`ےdQZ|vXn`JXQrpvbHAZptbdQZpfH~˂pZHAdQbt璀rXQJtbdQf`vbے`lJtArv`frXQJdrtAXQr˂|ZdQHfpvےbHA|drnvpXQr˂nXv`XQJ`ےrtAJl`JXQrtlJnXv`p˂rJltH~fZHAےf~HXQJ`ےbdQZ|`vXnXQHAb|ZdQbHAZpdrtAJvpfH˂pZZdQbtpvnbHAZpdrtAJvpfH˂pZ~Hfp˂rXQ|rAJlf`vbے`lJfp`ےbZ|dXnvJXQrd|Z~Hfp`ےbJltpZHAbbtlnXvZp˂tAJlfH~pZHAbf~HbHAZtbdQ˂pZtArdf~HXQJ`ےbdQZ|`vXn`JXQrfpvbHAZdrtAvpfے`JXQbtl˂rXQltb~f`HAbےlJtAXv`f˂rXQltb~f`HAے`vnXJ`ےtbdXnvJXQrvnXHAZp˂rtAJlpfH~˂pZHAdQbtvnXHAZp˂bdQZ|ے`JJtArd`f~rXQJ`tbdQZf`vXے`Jfpvp˂rZ|`vHAb|ZdQbfpvbHAZdrtAvpfbtlnXv`p˂rJltH~fr˂pJtArdJ`ےdQZ|vXn`JXQrrd|~HfJ`ےdQZ|vXnJXQrbv`fbHAXQJQZ|dpfH~˂pZHAv`frXQJtbdQf`vbے`lJtArv`frXQJltbXQr˂|ZdQHfpvےbHA|drnvpXQr˂nXv`XQJ`ےXnvJQr˂ptlJnXv`p˂rJltH~fJtAdf~HXQJ`ےbdQZ|`vXnZHAbtlJbHAZpdrtAJvpfH˂pZZdQbtpvnbHAZpdrtAJvpfHtlJ~Hfp`ےbrtAJlf`vے`J~Hfp`ےbZ|dXnvJXQrd|Z~Hfp`ےbnvppZHAbbtlnXvZp˂tAJlfH~pZHAf~HbHAZpfH~ZHAbtArdf~HXQJ`ےbdQZ|`vXn|ZdQbfpvbHAZdrtAvpfے`JXQfpv˂rXQltb~f`HAbےlJtAXv`f˂rXQltb~f`tAd|vnXHAZp˂tbdXnvXQrbtvnXHAZp˂rtAJlpfH~˂pZHAdQbtvnXHAZp˂`vXnJQrJtArd`f~rXQJ`tbdQZf`vXے`JXQfpvp˂rf`vے`JX|ZdQbfpvbHAZdrtAvpftlJnXv`p˂rJltH~fr˂pnvfJ`ےdQZ|vXn`JXQrrd|~HfJ`ےdQZ|vXnZdQbtv`pvrXQJQZ|dpfH~lJtAv`frXQJtbdQf`vbے`lJtArv`frXQJvpf˂pZH|ZdQHfpvےbHA|drnvprbtnXv`XQJ`ےXH~Qr˂ptlJnXv`p˂rJltے`JXQtArdf~HXQJ`ےbdQZ|`vXn`JXQr~HfpbHAZpdrtAJvpfH˂pZZdQbtpvnbHAZpdrtAJvpfےlJtAnXv`ےbrtAJf`vd|Z~Hfp`ےbZ|dXnvJXQrd|Z~Hfp`ےbH~fAbے`btlnXvZp˂tAJlfH~lJtAdf~HbHAZf`vXZHAbtArdf~HXQJ`ےbdQZ|r˂p|ZdQbfpvbHAZdrtAvpf˂pZvnX˂rXQltb~f`HAbےlJtAXv`f˂rXQltb`JXQrrd|`f~HAZp˂bdQZ|XnvdQbtvnXHAZp˂rtAJlpfH~˂pZHAdQbtvnXHAZp˂`vXHJXQrJtArd`f~rXQJ`tbdQZf`vX|ZdQfpvp˂rnvpے`JX|ZdQbfpvbHAZdtAJZHAbtlJnXv`p˂rJltH~fHAbےv`fJ`ےdQZ|vXn`JXQrrd|~HfJ`ےdQZ|˂pZZdQbtHfpvbHAdrtApfے`lJtArv`frXQJtbdQf`vbے`lJtArv`frXQJ~f`˂pZH|ZdQHfpvےbHA|drnvpbtlnXv`XQJ`ےfH~QrZHAtlJnXv`p˂rltbے`JXQtArdf~HXQJ`ےbdQZ|`vXn`JXQr~HfpbHAZpdrtAJvpfH˂pZZdQbtpvnbHAZpdtAJlHAbےlJtAnXvZp˂JltJXQrd|Z~Hfp`ےbZ|dXnvJXQrd|Z~Hfp`ےbvXnAbے`btlnXvZp˂tAJlfے`JJtArdf~HbHAZf`vXbے`tArdf~HXQJ`ےnvpr˂p|ZdQbfpvbHAZdrtAvpf˂pZvnX˂rXQltb~f`HAbےlJtAXv`f˂rXQtbn`JXQrrd|`f~rXQJ`bdQZ|˂pZHAdQbtvnXHAZp˂rtAJlpfH~˂pZHAdQbtvnXHAZp˂vpfHJXQrJtArd`f~rXQJ`tbdQZXQr˂|ZdQfpvp˂rnvpJXQr|ZdQbfpvbHAZfHfZHAbtlJnXv`p˂rJltH~fHAbv`f~fJ`ےdQZ|vXn`JXQrrd|~HfJ`ےvpf˂pZZdQbtHXv`ےbHAAJlbے`lJtArv`frXQJtbdQf`vbے`lJtArv`frXQJ~f`ZHAb|ZdQHfpvےbHA|dtApZHAbbtlnXv`XQJ`ے`vXn˂pZHAtlJnXv`p˂r`vXnے`JXQtArdf~HXQJ`ےbdQZ|`vXn˂pZHApvnbHAZpdrtAJvpfH˂pZZdQbtpvnbHAZpHf`HAbےlJtAf~HZp˂tbnJXQrd|Z~Hfp`ےbZ|dXnvJXQrd|Z~Hfp`ےbvXnے`JXQbtlnXvZp˂Jltے`JJtArdf~HbHAZvpfbے`tArdf~HXQJ`ےvpfr˂p|ZdQbfpvbHAZdrtAvpfbے`Xv`f˂rXQltb~f`HAbےlJtAXv`f˂rXQvXn`JXQrrd|fpvrXQJ`vpfH˂pZHAdQbtvnXHAZp˂rtAJlpfH~˂pZHAdQbtvnXHAZp˂vp`vr˂pJtArd`f~rXQJ`bnvXQr˂|ZdQfpvp˂rH~fJXQr|ZdQbfpvJltH~fZHAbtlJnXv`p˂rJltH~fJXQr~HfJ`ےdQZ|vXn`JXQrrd|~HfJ`ےJvpfH˂pZZdQbtnXv`p˂rf`vbے`lJtArv`frXQJtbdQf`vbے`lJtArv`frXQJXnvZHAb|ZdQHfpvےbHApfHpZHAbbtlnXv`XQJ`ے`vXn˂pZAbtlJnXv`bdQZ|`vXnے`JXQtArdf~HXQJ`ےbdQZ|`vXn˂p`JpvnbHAZpdrtAJvpfH˂pZZdQbtpvnltb~f`HAbےlJtAf~HXQJ`ےXnvJXQrd|Z~Hfp`ےbZ|dXnvJXQrd|Z~Hfp`ےJlpfH~ے`JXQbtlnXvZp˂f`vXے`JJtArdf~HJltvpf`JXQtArdfHfdrtAvpfr˂p|ZdQbfpvbHAZdrtAvpfXQrbtXv`f˂rXQltb~f`HAbےlJtAXv`fdQZ|vXn`JXQrrd|fpvbHAZpfH~˂pZHAdQbtvnXHAZp˂rtAJlpfH~˂pZHAdQbtvnXtdrf`vr˂pJtArd`f~rXQJ`nvpXQr˂|ZdQfpvdrtAJH~r˂p|ZdQbpvnJltH~fZHAbtlJnXv`p˂rJltH~fl|Z~HfJ`ےdQZ|vXn`JXQrrd|HfpdrtAJvpfH˂pZZdQbt~Hfp˂rf`vbے`lJtArv`frXQJtbdQf`vbے`lJtArv`ftAJlXnvZAb`|ZdQHfpvےJlfH~pZHAbbtlnXv`ltbvpfHZHAbtlJrXQJ`bdQZ|`vXnے`JXQtArdf~HXQJ`ےbdQZ|`vXndQbtvnXv`bHAZpdrtAJvpfH˂pZZdQbtvnrltb~f`HAbےlJtApvnXQJ`ےXnvJXQrd|Z~Hfp`ےbZ|dXnvJXQrd|ZHfpvtbdQZpfH~JXQrbtlnXvtbdQZf`vXے`JJtArdf~HdQZ|~f``JXQtArdےHAZdrtAvpfr˂p|ZdQbfpvbHAZdrtAvpflJtArf~H˂rXQltb~f`HAbےlJtAXQJ`ےdQZ|vXn`JXQrrd|Xv`fbHAXQpfH~˂pZHAdQbtvnXHAZp˂rtAJlpfH~˂pZHAdQbt璀nrXQ|drvppZHAJtArd`fH|drnvpXQr˂|ZdQfpvdrtAJvXnr˂p|ZdQbp˂rJltH~fZHAbtlJnXv`p˂rJltH~fd|ZfpvJ`ےdQZ|vXn`JXQrrd|HAZpdrtAJvpfH˂pZZdQbt~HfJ`ےJf`vbے`lJtArv`frXQJtbdQf`vbے`lJtArJ`ےtAJlfH~bے`|ZdQfpvtAJlfH~pZHAbbtlnXv`ltbvpfHZHAbtlJXQJ`ےbdQZ|`vXnے`JXQtArdf~HXQJ`ےbdQZ|`vXndQtArdnXv`bHAZpdrtAJvpfH˂pZZdQbt˂rXQltb~f`HAbےlJtApvnltbQXnvJXQrd|Z~Hfp`ےbZ|dXnvJXQrd|ZHAZp˂tbdQZf`vXJXQrbtlnrXQJtbdQZf`vXے`JJtArd|ZdQp˂rdQZ|l~f`JQr˂fpvbHAZdrtAvpfr˂p|ZdQbfpvbHAZdrtAvpf|ZdQf~H˂rXQltb~f`HAbےlJfJ`ےdQZ|vXn`JXQrrd|Xv`pZdrtpfH~˂pZHAdQbtvnXHAZp˂rtAJlpfH~˂pZHAdQbt璀rXQJ|ltnvppZHAJtArd`ےHA|drnvpXQr˂|ZdQbtlXQJ`ےtbdQvXH~pZHAbnXv`p˂rJltH~fZHAbtlJnXv`p˂rJltH~fbtlfpvJ`ےdQZ|vXn`JXQrpvnbHAZpdrtAJvpfH˂pZZdQbtvnXAJltf`vbے`lJtArv`frXQJtbdQf`vbے`lJfp`ےbbdQZ|fH~bJQr|ZdQZp˂tAJlfH~pZHAbbtlJtArdbHAZZ|df`vے`Jf~HXQJ`ےbdQZ|`vXnے`JXQtArdf~HXQJ`ےbdQZ|`vXnJtArdnvfbHAZpdrtAJvpfH˂pZXv`f˂rXQltb~f`HAbےlJtAv`fbdQZ|XnvJXQrd|Z~Hfp`ےbZ|dXnvJXQrvnXHAZp˂drtAf`vX˂pZbtlrXQJ`tbdQZf`vXے`JJtArd|ZdQp˂rrtAJlXnvXQr˂fpvbHAZdrtAvpfr˂p|ZdQbfpvbHAZdrtAvpf|ZdQ~Hfp˂rXQltb~f`HAے`~HfJ`ےdQZ|vXn`JXQrrd|~HfpdrtpfH~˂pZHAdQbtvnXHAZp˂rtAJlpfH~˂pZHAv`frXQJJltH~fHAbےJfpvےbHA|drnvpXQr˂|ZdQbtlXQJ`ےtbdQpfH~pZHAbnXv`p˂rJltH~fZHAbtlJnXv`p˂rJltH~fbtlvnXJ`ےdQZ|vXnJXQrbpvnbHAZpdrtAJvpfH˂pZZdQbtvnXAJltf`vbے`lJtArv`frXQJtbdQf`vے`J~Hfp`ےbbdQZ|`vXn`JXQrnXvZp˂tAJlfH~pZHAbbtlJtArdbHAZZ|df`vJAdf~HXQJ`ےbdQZ|`vXnے`JXQtArdf~HXQJ`ےbdQZ|`vXn|ZdQbv`fbHAZpdrtAJvpfHtlJXv`f˂rXQltb~f`HAbےlJtAv`fbdQZ|XnvJXQrd|Z~Hfp`ےbZ|dXnvXQrbtvnXHAZp˂drtAvpf˂pZA`f~rXQJ`tbdQZf`vXے`JJtArd|ZdQbtlnXvZp˂Jltr˂pJtArdnXv`XQJ`ےbdQZ|r˂p|ZdQbfpvbHAZdrtAvpfr˂p|ZdQbv`pvltb~f`HAbےlJtAXv`f˂rXQltbHAbےAHr󙐉H~ㅐfJtArd`f~rXQJ`bnvZHAbtlJf~HbHAZdtAJZHAbtlJnXv`p˂rJltH~fZHAbtlJnrXQdQZ|vXn`JXQrrd|~HfJ`ےdQZ|`JXQrۑpJAH`vXn|ZdQHfpvےbHApfHے`JXQtArdfpvp˂rltbے`JXQtArdf~HXQJ`ےbdQZ|`vXnے`JXQtArdJ`p˂drtAJvpfH˂pZZdQbtpvnbHAZpdtAJl˂pZr󙐂ˁ`vˍpfbtlnXvZp˂f`vXr˂p|ZdQbnXv`XQJ`ےnvpr˂p|ZdQbfpvbHAZdrtAvpfr˂p|ZdQbrXQJbdQZ|~f`HAbےlJtAXv`f˂rXQtbnHAbےZQXb㉀H~ㅐfJtArd`f~rXQJ`nvp`JXQrtlJf~HbHAZfHfZHAbtlJnXv`p˂rJltH~fZHAbtlJ`ےbdrtvXn`JXQrrd|~HfJ`ےvpf`JXQrۑpJAH`vXn|ZdQHfpvےJlfH~˂pZtArdfvnXp˂r`vXnے`JXQtArdf~HXQJ`ےbdQZ|`vXnے`JXQtArdHAZp˂AJltvpfH˂pZZdQbtpvnbHAZpHf`˂p`r󙐂ˁ`vˍpfbtlnXvtbdQZf`vXHAbے|ZdQtAv`fXQJ`ےvpfr˂p|ZdQbfpvbHAZdrtAvpfr˂p|ZdQbbHAbdQZ|~f`HAbےlJtAXv`f˂rXQvXnJXQrZQXAHrH~ㅐfJtArd`fH|drnvp`JXQrrd|~HfpJltH~fZHAbtlJnXv`p˂rJltH~fZHAbtlJZp˂drtvXn`JXQrrd|~HfJ`ےJvpfH˂pZHAˁ`Z`vXn|ZdQfpvtAJlfH~˂pZZdQbtvnXbdQZ|`vXnے`JXQtArdf~HXQJ`ےbdQZ|`vXnے`JXQtArdrXQJ`AJltvpfH˂pZZdQbtpvnltb~f`bے`QXb㉀ەvˍp|btlnrXQJtbdQZf`vXHAblJtAv`ffdrtAvpfr˂p|ZdQbfpvbHAZdrtAvpfr˂p|ZdQbےbHAbQZd~f`HAbےlJtAXv`fdQZ|vXnJXQrpJAHrdrQtJtArd`ےHA|drnvp˂pZHArd|pvnJltH~fZHAbtlJnXv`p˂rJltH~fZHAbtlJZp˂rtAJlvXn`JXQrrd|HfpdrtAJvpfH˂pZHAˁ`ZJlt|ZdQZp˂tAJlfH~bے`ZdQbtrXQJ`bdQZ|`vXnے`JXQtArdf~HXQJ`ےbdQZ|`vXnے`JXQtArdrXQJ`tbdQvpfH˂pZZdQbtvnrltb~f`b˂QXb㉀bAdZ|btlrXQJ`tbdQZf`vXJXQrl|ZےHAZdrtAvpfr˂p|ZdQbfpvbHAZdrtAvpfr˂p|ZdQbp˂rZ|d~f`HAbےlJtAXQJ`ےdQZ|vXnpZHAbp`ZQXdrQtJfpvےbHA|drnvp˂pZHAdQbtp˂rJltH~fZHAbtlJnXv`p˂rJltH~fZHAbtlJXQJ`ےrtAJlvXn`JXQrrd|HAZpdrtAJvpfHے`Jb㉀ۑpJltnXvZp˂tAJlfH~bے`lJtArXQJ`ےbdQZ|`vXnے`JXQtArdf~HXQJ`ےbdQZ|`vXnے`JXQfpvbHAZtbdQvpfH˂pZZdQbt˂rXQltb~f`XQr˂JAHrbAdZ|`f~rXQJ`tbdQZf`vXJXQHAbd|ZbHAZdrtAvpfr˂p|ZdQbfpvbHAZdrtAvpfr˂p~Hfp˂rZ|rA~f`HAbےlJfJ`ےdQZ|vXnpZHAbˁ`ZQXdrQtHfpvےbHA|drnvpے`JdQbtp˂rJltH~fZHAbtlJnXv`p˂rJltH~fZHAےpvnXQJ`ےJltvXn`JXQrpvnbHAZpdrtAJvpfHے`Jb㉀ۑpJltnXvZp˂tAJlfH~XQr˂lJtArXQJ`ےbdQZ|`vXnے`JXQtArdf~HXQJ`ےbdQZ|`vXn`JXQrXv`fbHAXQbdQZ|vpfH˂pZXv`f˂rXQltb~f`XQHAbJAHfbAdZ|`f~rXQJ`tbdQZf`vXpZHAbdtlbHAZdrtAvpfr˂p|ZdQbfpvbHAZdrtAvpfbtl~HfJ`ےdrtA~f`HAے`~HfJ`ےdQZ|vXnے`JXQ`vXndrQtHfpvےbHA|drnvpے`JJfpvp˂rJltH~fZHAbtlJnXv`p˂rJltH~fJtAdpvnbHAZpJltvXnJXQrbpvnbHAZpdrtAJvpfHr˂pvˍpfJltnXvZp˂tAJlfH~XQr˂nvfXQJ`ےbdQZ|`vXnے`JXQtArdf~HXQJ`ےbdQZ|`vXn|ZdQbXv`p˂rXQbdQZ|vpfHtlJXv`f˂rXQltb~f`ZHAbH~ㅐfbAdZ|`f~rXQJ`tbdQZf`vXp`JXQ~HfpbHAZdrtAvpfr˂p|ZdQbfpvbHAZdrtAvpftlJvnXJ`ےdrtAJ~f`tAd|~HfJ`ےdQZ|vXnے`JXQ`vXndrQtHfpvےbHA|drnvpr˂pvnXp˂rJltH~fZHAbtlJnXv`p˂rJltے`JXQtArdv`fbHAZpbdQZvXnZdQbtpvnbHAZpdrtAJvpfHr˂pvˍpfJltnXvZp˂tAJlfH~ZHAbv`fXQJ`ےbdQZ|`vXnے`JXQtArdf~HXQJ`ےbdQZ|r˂p|ZdQb~Hfp˂b|drvpfےlJtAXv`f˂rXQltb~f``JXQrH~ㅐfbAdZ|`f~rXQJ`tbdQZf`vXے`JXQ~HfpbHAZdrtAvpfr˂p|ZdQbfpvbHAZdtAJZHAbtlJvnXHAZp˂tAJl`JXQrrd|~HfJ`ےdQZ|vXn˂pZ`vXndrQtHfpvےbHA|drnvpr˂pvnXp˂rJltH~fZHAbtlJnXv`p˂rltbے`JXQtArdv`frXQJtbdQZ˂pZZdQbtpvnbHAZpdrtAJvpfHHAbےvˍpfJltnXvZp˂tAJlfH~ZHAbv`f~XQJ`ےbdQZ|`vXnے`JXQtArdf~HXQJ`ےnvpr˂p|ZdQb~HXv`ےb|AJlHAbےlJtAXv`f˂rXQltb~f``JXQrH~ㅐfbAdZ|`f~rXQJ`tbdQZf`vX˂pZfpvbHAZdrtAvpfr˂p|ZdQbfpvbHAZfHfZHAbtlJ`f~HAZp˂tbn`JXQrrd|~HfJ`ےdQZ|vXn˂pZ`vXndrQtHfpvےbHA|drnvpHAbےnXv`p˂rJltH~fZHAbtlJnXv`p˂r`vXnے`JXQtArdHfpvrXQJvpf˂pZZdQbtpvnbHAZpdrtAJvpfHHAbvˍpfJltnXvZp˂tAJlfH~`JXQrf~HXQJ`ےbdQZ|`vXnے`JXQtArdf~HXQJ`ےvpfr˂p|ZdQbnXv`p˂Hf`HAbےlJtAXv`f˂rXQltb~f`˂pZHAH~ㅐfbAdZ|`f~rXQJ`tbdQZf`vX˂p`fpvbHAZdrtAvpfr˂p|ZdQbfpvJltH~fZHAbtlJ`f~rXQJ`vXn`JXQrrd|~HfJ`ےdQZ|vXnbے``vXndrQtHfpvےbHA|drnvpJXQrbnXv`p˂rJltH~fZHAbtlJnXv`bdQZ|`vXnے`JXQtArdHfpvےbHAvpfH˂pZZdQbtpvnbHAZpdrtAJvpfHJXQrvˍpfJltnXvZp˂tAJlfH~tl|f~HXQJ`ےbdQZ|`vXnے`JXQtArdfHfdrtAvpfr˂p|ZdQb~HZp˂~f`HAbےlJtAXv`f˂rXQltb~f`˂p`ZH~ㅐfbAdZ|`f~rXQJ`tbdQZf`vXZdQbtfvnXbHAZdrtAvpfr˂p|ZdQbpvnJltH~fZHAbtlJfpvrXQJ`vXn`JXQrrd|~HfJ`ےdQZ|vXnQXb㉀۝`vXndrQtHfpvےbHA|drnvplJtAv`fp˂rJltH~fZHAbtlJrXQJ`bdQZ|`vXnے`JXQtArdnXv`ےbHAvpfH˂pZZdQbtpvnbHAZpdrtAJvpfHpJAHrvˍpfJltnXvZp˂tAJlfH~rd|~HfpXQJ`ےbdQZ|`vXnے`JXQtArdےHAZdrtAvpfr˂p|ZdQbf~HXQJ`ے~f`HAbےlJtAXv`f˂rXQltb~f`ˁ`ZH~ㅐfbAdZ|`f~rXQJ`tbdQZf`vXZdQtArvnXbHAZdrtAvpfr˂p|ZdQbp˂rJltH~fZHAbtlJfpvJltvXn`JXQrrd|~HfJ`ےdQZ|vXnQXAHr󙐝`vXndrQtHfpvےbHA|drnvpd|Zv`fp˂rJltH~fZHAbtlJXQJ`ےbdQZ|`vXnے`JXQtArdnXv`bQZdvpfH˂pZZdQbtpvnbHAZpdrtAJvpfHˁ`ZQXvˍpfJltnXvZp˂tAJlfH~dQbt~HfpXQJ`ےbdQZ|`vXnے`JXQfpvbHAZdrtAvpfr˂p|ZdQbpvnrtAJl~f`HAbےlJtAXv`f˂rXQltb~f`b㉀ۑpH~ㅐfbAdZ|`f~rXQJ`tbdQZf`vXlJtArvnvfbHAZdrtAvpfr˂pnXv`p˂rJltH~fZHAbtlJXv`ftbdQvXn`JXQrrd|~HfJ`ےdQZ|vXnJAHr󙐝`vXndrQtHfpvےbHA|drnvpd|Z~Hfp˂rJltH~fZHAےf~HXQJ`ےbdQZ|`vXnے`JXQtArd~HfZ|dvpfH˂pZZdQbtpvnbHAZpdrtAJvpfHˁ`ZQXvˍpfJltnXvZp˂tAJlfH~dQbtpvnXQJ`ےbdQZ|`vXn`JXQrfpvbHAZdrtAvpfr˂p|ZdQbpvnrtAJl~f`HAbےlJtAXv`f˂rXQltb~f`b㉀ۑpH~ㅐfbAdZ|`f~rXQJ`tbdQZf`vXl|ZdQXv`fbHAZdrtAvpfbtlnXv`p˂rJltH~fZHAbtlJXv`ftbdQvXn`JXQrrd|~HfJ`ےdQZ|vXn`ZQXb`vXndrQtHfpvےbHA|drnvpbtl~Hfp˂rJltH~fJtAdf~HXQJ`ےbdQZ|`vXnے`JXQtArd~HXZ|rAJvpfH˂pZZdQbtpvnbHAZpdrtAJvpfHۑpJvˍpfJltnXvZp˂tAJlfے`JJtArdpvnXQJ`ےbdQZ|`vXn|ZdQbfpvbHAZdrtAvpfr˂p|ZdQbv`fltb~f`HAbےlJtAXv`f˂rXQltb~f`AHr󙐂˕H~ㅐfbAdZ|`f~rXQJ`tbdQZXQHAb|ZdQXv`fbHAZdrtAvpftlJnXv`p˂rJltH~fZHAbtlJ~HfpdQZ|vXn`JXQrrd|~HfJ`ےdQZ|vXn`ZQXb`vXndrQtHfpvےbHA|dtAے`JXQbtl~fpvp˂rJltے`JXQtArdf~HXQJ`ےbdQZ|`vXnے`JXQtArdvnXdrtAJvpfH˂pZZdQbtpvnbHAZpdrtAJvpfZۑpJvˍpfJltKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLL \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv39_1.dat b/mpdf/qrcode/data/qrv39_1.dat deleted file mode 100644 index 3e9029b..0000000 --- a/mpdf/qrcode/data/qrv39_1.dat +++ /dev/null @@ -1,345 +0,0 @@ -~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmlklklklklklklklkjijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQOPOPOPOOOPOPOPOPNMNMNMNMNMNMNMNMLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:98787878765656565343434344343433321212121212121210/0/0/0/0/0/0/0/.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvutststststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmlklklklklklklklkjijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQOOOOPOPOOPOPOPOPNMNMNMNMNMNMNMNMLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:98787878787878765656565343434343334343421212121212121210/0/0/0/0/0/0/0/.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopopoponmnmnmnmnmnmnmlklkkkkkkkkklklkjijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababa`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQPOPOPOPOOPOOOOOONMNMNMNMNMNMNMNMLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCBABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9878787878787878765656565343434343434343421212121212121210/0/0/0/0/0/0/0/.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopoponmnmnmnmnmnmnmnmklklklkllklkjijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9878787878787878765656565343434343434343421212121212121210/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopoponmnmnmnmnmnmnmnmklklklkljijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9878787878787878765656565343434343434343421212121212121210/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopoponmnmnmnmnmnmnmnmklklklkljijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9878787878787878765656565343433333434343421212121212121210/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopoponmnmnmnmnmnmnmnmklklklkljijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQPOPOPOPOPOPOPOOONMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;:9:9:9:9:9:9:9878787878787878765656565334343433434343421212121212121210/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopoponmnmnmnmnmnmnmnmklklklkljijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcbabababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQRQRQRQRQPOOOOOOPOOPOPOPONMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;:9:9:9:9:9:9:9:9878787878787878765656565434343433333334321212121212121210/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%&%&%&%&%~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopoponmnmnmnmnmnmnmnmklklklkkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQRQRQRQRQOPOPOPOPPONMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;:9:9:9:9:9:9:9:98787878787878787656565654343434343434343212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%&%&%&%&%~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopoponmnmnmnmnmnmnmnmkkkklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQRQRQRQRQOPOPOPOPNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;:9:9:9:9:9:9:9:98787878787878787656565654343434343434343212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%&%&%&%&%~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopoponmnmnmnmnmnmnmnmlklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQRQRQRQRQOPOPOPOPNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;:9:9:9:9:9:9:9:98787878787878787656565654343434343434343212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%&%&%&%&%~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopoponmnmnmnmnmnmnmnmlklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[ZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQRQRQRQRQOPOPOPOPNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=<;<;<;<;<;<;<;:9:9:9:9:9:9:9:98787878787878765656565654343434343433333212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%&%&%&%&%~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopoponmnmnmnmnmnmnmlklklklklkjijijijijijijijihghghghghghghghgfefefefefefedcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQRQRQRQRQOPOPOPOPNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:98787878765656565656565653333343443434343212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopoponmnmnmnmlklklkkklklklklkjijijijijijijijihghghghghghghghgfefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQRQRQRQRQOPOPOOOONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:98787878765656565656565653434343421212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqrqpopopoponmnmnmnmkkklklkllklklklkjijijijijijijijihghghghghghghghgfefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQRQRQRQRQOOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:98787878765656565656565653434343421212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqrqrqrqpopopopoponmnmnmnmklklklkllkkkkkkljijijijijijijijihghghghghghghghgfefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:98787878765656565656565653434343421212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{zyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqpopopopopopopoponmnmnmnmklklklklklklklkljijijijijijijijihghghghghghghghgfefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:98787878765656565656565653434343421212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%~}~}~}~}~}~}~}~}|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqpopopopopopopoponmnmnmnmklklklklklklklkljijijijijijijijihghghghghghgfefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQRQRQPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:98787878765656565656565653434343421212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%~}~}~}~}~}~}~}~}|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqpopopopopopopoponmnmnmnmklklklklklklklkljijijijijijijijihghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQPOPOOOOOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:98787878765656565656565653433333321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%~}~}~}~}~}~}~}~}|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqpopopopopopopoponmnmnmnmklklklklklklklkljijijijijijijijihghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQOPOPOPOPPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:98787878765656565656565654343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%~}~}~}~}~}~}~}~}|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutststststststsrqrqrqrqrqpopopopopopopoponmnmnmnmkkkkkklkklklklkljijijijijijijijihghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUVUVUTSTSTSTSTSTSRQRQRQRQOPOPOPOPOOOOOPOPNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:98787878765656565656565654343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%~}~}~}~}~}~}~}|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmlklklklkklklkkkkjijijijijijijijihghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQOPOPOPOPOPOPOPOPNMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABA@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:98787878765656565656565654343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%&%&%&%&%~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmlklklklkkklklklkjijijijijijihghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQOPOPOPOPOPOPOPOPNMNMNMNMNMNMNMNMLKLKLKLKLKJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:98787878765656565654343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststsrqrqrqrqrqrqrqrqpopopopopopopoponmnmnmnmlklklklklklklklkjijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQOPOPOPOPOPOPOPOPNMNMNMNMNMNMNMNMLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9:9:9:9:98787878765656565433333344343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!                - - - - - - - - $#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!                - - - - - - - - $#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!                - - - - - - - $#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!                - - - - $#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!                - - - - $#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!                - - - - $#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!                - - - - $#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!            - - - - - $#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!            - - - - - - - - $#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!            - - - - - - - - $#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!            - - - - - - - - $#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!            - - - - - - - - $#$#$#$#$#$#$#$#"!"!"!"!               - - - - - - - - $#$#$#$#$#$#$#$#"!"!"!"!            - - - - - - - - $#$#$#$#$#$#$#$#"!"!"!"!            - - - - - - - - $#$#$#$#$#$#$#$#"!"!"!"!            - - - - - - - - $#$#$#$#$#$#$#$#"!"!"!"!            - - - - - - - - $#$#$#$#"!"!"!"!"!"!"!"!             - - - - - - - - $#$#$#$#"!"!"!"!"!"!"!"!                - - - - - - - - $#$#$#$#"!"!"!"!"!"!"!"!                - - - - - - - - $#$#$#$#"!"!"!"!"!"!"!"!                - - - - - - - - $#$#$#$#"!"!"!"!"!"!"!"!                - - - - - - - - $#$#$#$#"!"!"!"!"!"!"!"!                - - - - - - - - $#$#$#$#"!"!"!"!"!"!"!"!                - - - - - - - - LLKKJJII%%&&''((eeddccbb !!""##YXXWWVVUyyzz{{||~~}} AABBCCDDXXWWVVUU - - iijjkkll00//..--11223344hhggffeeYYZZ[[\\@@??>>==!!""##$$iihhggffeddccbba ffgghhii33221100..//0011kkjjiihh - - VVWWXXYYCCBBAA@@ !!~~{{zzyyxxFFGGHHIISSRRQQPPnnooppqq~~ - -kkqqrrsszzyyxxww SSTTUUVVFFEEDDCC{{||}}~~~~}}||{{CCDDEEFFVVUUTTSS kkllmmnn..--,,++33445566ffeeddcc[[\\]]^^%%$$##""XXYYZZ[[&%%$$##"@@AABBCCYYXXWWVV - - hhiijjkk1100//..00112233iihhggff XXYYZZ[[AA@@??>> !!""##yyxxwwvvHHIIJJKK==<<;;::@@AABBCC;;::9987--..//00llkkjjii - - UUVVWWXXDDCCBBAA }}~~||{{zzyyEEFFGGHHHHGGFFEE))**++,,aa``__^^$$%%&&''UTSRQPOO }}~~||{{zzyyEEFFGGHHTTSSRRQQ mmnnoopp,,++**))55667788ddccbbaa]]^^__``<<;;::99%%&&''((eeddccbba``__^^] - - jjkkllmm//..--,,22334455ggffeeddZZ[[\\]]??>>==<<""##$$%%wwvvuuttJJKKLLMMOONNMMLLrrssttuu}}||{{zz ttuuvvwwvvuuttss - - WWXXYYZZBBAA@@?? !!""zzyyxxwwGGHHIIJJRRQQPPOOooppqqrr**))((''778899::bbaa``____``aabb!! \\]]^^__"!! DDEEFFGGUUTTSSRR llmmnnoo--,,++**44556677eeddccbb\\]]^^__==<<;;::$$%%&&''uuttssrrLLMMNNOO99332211DDEEFFGG6543322111223344hhggffeeYYZZ[[\\@@??>>==!!""##$$xxwwvvuuIIJJKKLLDDCCBBAA--..//00]]\\[[ZZ(())**++NNMMLLKK!!""##$$xxwwvvuuIIJJKKLLPPOONNMMqqrrsstt((''&&%%99::;;<<``__^^]]aabbccdd88776655))**++,,aa``__^^]\\[[ZZYnnooppqq++**))((66778899ccbbaa``^^__``aa;;::9988&&''(())ssrrqqppNNOOPPQQKKJJIIHHvvwwxxyyyyxxwwvvxxyyzz{{rrqqponm[[\\]]^^>>==<<;;##$$%%&&vvuuttssKKLLMMNNNNMMLLKKssttuuvv&&%%$$##;;<<==>>^^]]\\[[ccddeeff``aabbccHHIIJJKKQQPPOONNppqqrrss))((''&&8899::;;aa``__^^``aabbcc99887766(())**++qqppoonnPPQQRRSS00//..--HHIIJJKK100//..-55667788ddccbbaa]]^^__``<<;;::99%%&&''((ttssrrqqMMNNOOPP@@??>>==11223344YYXXWWVV,,--..//JJIIHHGG%%&&''((ttssrrqqMMNNOOPPLLKKJJIIuuvvwwxx$$##""!!==>>??@@\\[[ZZYYeeffgghh44332211--..//00]]\\[[ZZ !!""##YXXWWVVUrrssttuu''&&%%$$::;;<<==__^^]]\\bbccddee77665544**++,,--oonnmmll RRSSTTUUGGFFEEDDzz{{||}}uuttssrr - - ||}}~~lkkjjiih__``aabb::998877''(())**rrqqppooOOPPQQRRJJIIHHGGwwxxyyzz""!! ??@@AABBZZYYXXWW - -gghhiijjddeeffgg~~LLMMNNOOMMLLKKJJttuuvvww%%$$##""<<==>>??]]\\[[ZZddeeffgg55443322,,--..//mmllkkjj - -TTUUVVWW,,++**))LLMMNNOO-,,++**)99::;;<<``__^^]]aabbccdd88776655))**++,,ppoonnmm QQRRSSTT<<;;::9955667788UUOONNMM00112233FFEEDDCC))**++,,ppoonnmm QQRRSSTTHHGGFFEEyyzz{{||~~}} AABBCCDDXXWWVVUU - - iijjkkll00//..--11223344YYXXWWVV$$%%&&''UTSRQPOOvvwwxxyy##""!! >>??@@AA[[ZZYYXX ffgghhii33221100..//0011kkjjiihh - - VVWWXXYYCCBBAA@@ !!~~qqkkjjii hggffeedccddeeff66554433++,,--..nnmmllkk SSTTUUVVFFEEDDCC{{||}}~~~~}}||{{CCDDEEFFVVUUTTSS kkllmmnn hhiijjkk}}||{{zzPPQQRRSSIIHHGGFFxxyyzz{{~~!! @@AABBCCYYXXWWVV - - hhiijjkk1100//..00112233iihhggff XXYYZZ[[((''&&%%UUVVWWXX)((''&&%==>>??@@\\[[ZZYYeeffgghh44332211--..//00llkkjjii - - UUVVWWXX8877665599::;;<>==<<""##$$%%hhggffeedccbbaa` - -gghhiijj221100////001122jjiihhgg - - WWXXYYZZBBAA@@?? !!""zzyyxxwwGGHHIIJJRRQQPPOOooppqqrr~~}} - - qqrrssttyyxxwwvv TTUUVVWWEEDDCCBB||}}~~}}||{{zzDDEEFFGGUUTTSSRR llmmnnoo--,,++**44556677eeddccbb\\]]^^__$$##""!!YYZZ[[\\%$$##""!AABBCCDDXXWWVVUU - - iijjkkll00//..--11223344hhggffeeYYZZ[[\\44332211==>>??@@HHGGFFEE==>>??@@>>==<<;;11223344hhggffeeYYZZ[[\\@@??>>==!!""##$$xxwwvvuuIIJJKKLLPPOONNMMqqrrsstt((''&&%%99::;;<>==<<;;##$$%%&&vvuuttssKKLLMMNNNNMMLLKKssttuuvv||{{zzyyuuvvwwxxuuttssrr - - XXYYZZ[[AA@@??>> !!""##yyxxwwvvHHIIJJKKQQPPOONNppqqrrss))((''&&8899::;;aa``__^^``aabbcc ]]^^__``! EEFFGGHHTTSSRRQQ mmnnoopp,,++**))55667788ddccbbaa]]^^__``00//..--AABBCCDDDDCCBBAAAABBCCDD::99876555667788ddccbbaa]]^^__``<<;;::99%%&&''((ttssrrqqMMNNOOPPLLKKJJIIuuvvwwxx$$##""!!==>>??@@HHGGFFEE00112233FFEEDDCC""##$$%%wwvvuuttJJKKLLMMOONNMMLLrrssttuu''&&%%$$::;;<<==__^^]]\\bbccddee77665544**++,,--``__^^]] \[[ZZYYXooppqqrr**))((''778899::bbaa``____``aabb::998877''(())**rrqqppooOOPPQQRRJJIIHHGGwwxxyyzzxxwwvvuuyyzz{{||qqponmlk\\]]^^__==<<;;::$$%%&&''uuttssrrLLMMNNOOMMLLKKJJttuuvvww%%$$##""<<==>>??]]\\[[ZZddeeffggaabbccddIIJJKKLLPPOONNMMqqrrsstt((''&&%%99::;;<<``__^^]]aabbccdd,,++**))EEFFGGHH@@??>>==EEFFGGHH4332211099::;;<<``__^^]]aabbccdd88776655))**++,,ppoonnmm QQRRSSTTHHGGFFEEyyzz{{||~~}} AABBCCDDDDCCBBAA99::;;<>??@@AA[[ZZYYXX ffgghhii33221100..//0011\\[[ZZYY!!""##$$XWWVVUUTssttuuvv&&%%$$##;;<<==>>^^]]\\[[ccddeeff66554433++,,--..nnmmllkk SSTTUUVVFFEEDDCC{{||}}~~ttssrrqq - - }}~~kjjiihhg``aabbcc99887766(())**++qqppoonnPPQQRRSSIIHHGGFFxxyyzz{{~~!! @@AABBCCYYXXWWVV - - hhiijjkkeeffgghh~~}}MMNNOOPPLLKKJJIIuuvvwwxx$$##""!!==>>??@@\\[[ZZYYeeffgghh((''&&%%IIJJKKLL<<;;::99IIJJKKLL0//..--,==>>??@@\\[[ZZYYeeffgghh44332211--..//00llkkjjii - - UUVVWWXXDDCCBBAA }}~~||{{zzyyEEFFGGHH@@??>>====>>??@@>>==<<;;**++,,--oonnmmll RRSSTTUUGGFFEEDDzz{{||}}~~}}||BBCCDDEEWWVVUUTT - - jjkkllmm//..--,,22334455XXWWVVUU%%&&''((SRQPOONNwwxxyyzz""!! ??@@AABBZZYYXXWW - -gghhiijj221100////001122jjiihhgg - - WWXXYYZZBBAA@@?? !!""kkjjiihh gffeeddcddeeffgg55443322,,--..//mmllkkjj - -TTUUVVWWEEDDCCBB||}}~~}}||{{zzDDEEFFGGUUTTSSRR llmmnnoo iijjkkqq||{{zzyyQQRRSSTTHHGGFFEEyyzz{{||~~}} AABBCCDDXXWWVVUU - - iijjkkll$$##""!!MMNNOOPP33221100MMNNOOUU,++**))(AABBCCDDXXWWVVUU - - iijjkkll00//..--11223344hhggffeeYYZZ[[\\@@??>>==!!""##$$xxwwvvuuIIJJKKLL<<;;::99AABBCCDD::998765..//0011kkjjiihh - - VVWWXXYYCCBBAA@@ !!~~{{zzyyxxFFGGHHIISSRRQQPPnnooppqq++**))((66778899OONNMMLL))**++,,MMLLKKJJ{{||}}~~~~}}||{{CCDDEEFFVVUUTTSS kkllmmnn..--,,++33445566ffeeddcc[[\\]]^^>>==<<;;##$$%%&&ggffeeddcbbaa``_ - - hhiijjkk1100//..00112233iihhggff XXYYZZ[[AA@@??>> !!""##yyxxwwvvHHIIJJKKQQPPOONNppqqrrss~~}}|| - - rrssttuuxxwwvvuu UUVVWWXXDDCCBBAA }}~~||{{zzyyEEFFGGHHTTSSRRQQ mmnnoopp~~}} QQRRSSTT//..--,,VVWWXXYY(''&&%%$EEFFGGHHTTSSRRQQ mmnnoopp,,++**))55667788ddccbbaa]]^^__``<<;;::99%%&&''((ttssrrqqMMNNOOPP33221100EEFFGGHH4332211022334455ggffeeddZZ[[\\]]??>>==<<""##$$%%wwvvuuttJJKKLLMMOONNMMLLrrssttuu''&&%%$$::;;<<==KKJJIIHH--..//00IIHHGGFF !!""zzyyxxwwGGHHIIJJRRQQPPOOooppqqrr**))((''778899::bbaa``____``aabb::998877''(())**ccbbaa``_^^]]\\[ llmmnnoo--,,++**44556677eeddccbb\\]]^^__==<<;;::$$%%&&''uuttssrrLLMMNNOOMMLLKKJJttuuvvww{{zzyyxxvvwwxxyyttssrrqq - - YYZZ[[\\@@??>>==!!""##$$xxwwvvuuIIJJKKLLPPOONNMMqqrrsstt||{{zzyyUUVVWWXX++**))((ZZ[[\\]]$##""!! IIJJKKLLPPOONNMMqqrrsstt((''&&%%99::;;<<``__^^]]aabbccdd88776655))**++,,ppoonnmm QQRRSSTT//..--,,IIJJKKLL0//..--,66778899ccbbaa``^^__``aa;;::9988&&''(())ssrrqqppNNOOPPQQKKJJIIHHvvwwxxyy##""!! >>??@@AAGGFFEEDD11223399EEDDCCBB##$$%%&&vvuuttssKKLLMMNNNNMMLLKKssttuuvv&&%%$$##;;<<==>>^^]]\\[[ccddeeff66554433++,,--..__^^]]\\ !![ZZYYXXWppqqrrss))((''&&8899::;;aa``__^^``aabbcc99887766(())**++qqppoonnPPQQRRSSIIHHGGFFxxyyzz{{wwvvuutt zz{{||}}ponmlkkj]]^^__``<<;;::99%%&&''((ttssrrqqMMNNOOPPLLKKJJIIuuvvwwxxxxwwvvuuYYZZ[[\\''&&%%$$^^__``aa MMNNOOPPLLKKJJIIuuvvwwxx$$##""!!==>>??@@\\[[ZZYYeeffgghh44332211--..//00llkkjjii - - UUVVWWXX++**))((MMNNOOUU,++**))(::;;<<==__^^]]\\bbccddee77665544**++,,--oonnmmll RRSSTTUUGGFFEEDDzz{{||}}~~}}||BBCCDDEECCBBAA@@::;;<<==AA@@??>>''(())**rrqqppooOOPPQQRRJJIIHHGGwwxxyyzz""!! ??@@AABBZZYYXXWW - -gghhiijj221100////001122[[ZZYYXX""##$$%%WVVUUTSRttuuvvww%%$$##""<<==>>??]]\\[[ZZddeeffgg55443322,,--..//mmllkkjj - -TTUUVVWWEEDDCCBB||}}~~ssrrqqkk - - ~~jiihhggfaabbccdd88776655))**++,,ppoonnmm QQRRSSTTHHGGFFEEyyzz{{||ttssrrqq]]^^__``##""!! bbccddeeQQRRSSTTHHGGFFEEyyzz{{||~~}} AABBCCDDXXWWVVUU - - iijjkkll00//..--11223344hhggffeeYYZZ[[\\''&&%%$$VVWWXXYY(''&&%%$>>??@@AA[[ZZYYXX ffgghhii33221100..//0011kkjjiihh - - VVWWXXYYCCBBAA@@ !!~~{{zzyyxxFFGGHHII??>>==<<>>??@@AA==<<;;::++,,--..nnmmllkk SSTTUUVVFFEEDDCC{{||}}~~~~}}||{{CCDDEEFFVVUUTTSS kkllmmnn..--,,++33445566WWVVUUOO&&''(())QPOONNMMxxyyzz{{~~!! @@AABBCCYYXXWWVV - - hhiijjkk1100//..00112233iihhggff XXYYZZ[[AA@@??>> !!""##jjiihhggfeeddccbeeffgghh44332211--..//00llkkjjii - - UUVVWWXXDDCCBBAA }}~~ppoonnmm aabbccddffgghhii~~}}||UUVVWWXXDDCCBBAA }}~~||{{zzyyEEFFGGHHTTSSRRQQ mmnnoopp,,++**))55667788ddccbbaa]]^^__``##""!! ZZ[[\\]]$##""!! BBCCDDEEWWVVUUTT - - jjkkllmm//..--,,22334455ggffeeddZZ[[\\]]??>>==<<""##$$%%wwvvuuttJJKKLLMM;;::9933BBCCDDEE99876543//001122jjiihhgg - - WWXXYYZZBBAA@@?? !!""zzyyxxwwGGHHIIJJRRQQPPOOooppqqrr**))((''778899::NNMMLLKK**++,,--LLKKJJII||}}~~}}||{{zzDDEEFFGGUUTTSSRR llmmnnoo--,,++**44556677eeddccbb\\]]^^__==<<;;::$$%%&&''ffeeddccbaa``__^ - - iijjkkll00//..--11223344hhggffeeYYZZ[[\\@@??>>==!!""##$$llkkjjii - - eeffgghhjjkkqqrr{{zzyyxxYYZZ[[\\@@??>>==!!""##$$xxwwvvuuIIJJKKLLPPOONNMMqqrrsstt((''&&%%99::;;<<``__^^]]aabbccdd^^__``aa FFGGHHIISSRRQQPPnnooppqq++**))((66778899ccbbaa``^^__``aa;;::9988&&''(())ssrrqqppNNOOPPQQ221100//FFGGHHII3221100/33445566ffeeddcc[[\\]]^^>>==<<;;##$$%%&&vvuuttssKKLLMMNNNNMMLLKKssttuuvv&&%%$$##;;<<==>>JJIIHHGG..//0011HHGGFFEE !!""##yyxxwwvvHHIIJJKKQQPPOONNppqqrrss))((''&&8899::;;aa``__^^``aabbcc99887766(())**++bbaa``__^]]\\[[Z mmnnoopp,,++**))55667788ddccbbaa]]^^__``<<;;::99%%&&''((hhggffee - - iijjkkllssttuuvvwwvvuutt - -]]^^__``<<;;::99%%&&''((ttssrrqqMMNNOOPPLLKKJJIIuuvvwwxx$$##""!!==>>??@@\\[[ZZYYeeffgghhbbccddeeJJKKLLMMOONNMMLLrrssttuu''&&%%$$::;;<<==__^^]]\\bbccddee77665544**++,,--oonnmmll RRSSTTUU..--,,++JJKKLLMM/..--,,+778899::bbaa``____``aabb::998877''(())**rrqqppooOOPPQQRRJJIIHHGGwwxxyyzz""!! ??@@AABBFFEEDDCC223399::DDCCBBAA$$%%&&''uuttssrrLLMMNNOOMMLLKKJJttuuvvww%%$$##""<<==>>??]]\\[[ZZddeeffgg55443322,,--..//^^]]\\[[ !!""ZYYXXWWVqqrrsstt((''&&%%99::;;<<``__^^]]aabbccdd88776655))**++,,ddccbbaa mmnnoopp wwxxyyzzssrrqqpo aabbccdd88776655))**++,,ppoonnmm QQRRSSTTHHGGFFEEyyzz{{||~~}} AABBCCDDXXWWVVUU - - iijjkkllffgghhii~~}}||NNOOPPQQKKJJIIHHvvwwxxyy##""!! >>??@@AA[[ZZYYXX ffgghhii33221100..//0011kkjjiihh - - VVWWXXYY**))((''NNOOUUVV+**))((';;<<==>>^^]]\\[[ccddeeff66554433++,,--..nnmmllkk SSTTUUVVFFEEDDCC{{||}}~~~~}}||{{CCDDEEFFBBAA@@??;;<<==>>@@??>>==(())**++qqppoonnPPQQRRSSIIHHGGFFxxyyzz{{~~!! @@AABBCCYYXXWWVV - - hhiijjkk1100//..00112233ZZYYXXWW##$$%%&&VUUTSRQPuuvvwwxx$$##""!!==>>??@@\\[[ZZYYeeffgghh44332211--..//00``__^^]]qqrrsstt~~}}||{{ - - - -{{||}}~~nmlkkjjieeffgghh44332211--..//00llkkjjii - - UUVVWWXXDDCCBBAA }}~~||{{zzyyEEFFGGHHTTSSRRQQ mmnnoopp jjkkqqrr{{zzyyxxRRSSTTUUGGFFEEDDzz{{||}}~~}}||BBCCDDEEWWVVUUTT - - jjkkllmm//..--,,22334455ggffeeddZZ[[\\]]&&%%$$##WWXXYYZZ'&&%%$$#??@@AABBZZYYXXWW - -gghhiijj221100////001122jjiihhgg - - WWXXYYZZBBAA@@?? !!""zzyyxxwwGGHHIIJJ>>==<<;;??@@AABB<<;;::99,,--..//mmllkkjj - -TTUUVVWWEEDDCCBB||}}~~}}||{{zzDDEEFFGGUUTTSSRR llmmnnoo--,,++**44556677VVUUOONN''(())**OONNMMLLyyzz{{||~~}} AABBCCDDXXWWVVUU - - iijjkkll00//..--11223344\\[[ZZYYuuvvwwxxzzyyxxww ihhggffe - - iijjkkll00//..--11223344hhggffeeYYZZ[[\\@@??>>==!!""##$$xxwwvvuuIIJJKKLLPPOONNMMqqrrsstt~~}}||{{ - - ssttuuvvwwvvuutt - -VVWWXXYYCCBBAA@@ !!~~{{zzyyxxFFGGHHIISSRRQQPPnnooppqq++**))((66778899ccbbaa``^^__``aa""!! [[\\]]^^#""!! CCDDEEFFVVUUTTSS kkllmmnn..--,,++33445566ffeeddcc[[\\]]^^>>==<<;;##$$%%&&vvuuttssKKLLMMNN::993322CCDDEEFF8765433200112233iihhggff XXYYZZ[[AA@@??>> !!""##yyxxwwvvHHIIJJKKQQPPOONNppqqrrss))((''&&8899::;;MMLLKKJJ++,,--..KKJJIIHH }}~~||{{zzyyEEFFGGHHTTSSRRQQ mmnnoopp,,++**))55667788XXWWVVUUyyzz{{||vvuuttsseddccbba mmnnoopp,,++**))55667788ddccbbaa]]^^__``<<;;::99%%&&''((ttssrrqqMMNNOOPPLLKKJJIIuuvvwwxxzzyyxxwwwwxxyyzzssrrqqpo ZZ[[\\]]??>>==<<""##$$%%wwvvuuttJJKKLLMMOONNMMLLrrssttuu''&&%%$$::;;<<==__^^]]\\bbccddee__``aabbGGHHIIJJRRQQPPOOooppqqrr**))((''778899::bbaa``____``aabb::998877''(())**rrqqppooOOPPQQRR1100//..GGHHIIJJ21100//.44556677eeddccbb\\]]^^__==<<;;::$$%%&&''uuttssrrLLMMNNOOMMLLKKJJttuuvvww%%$$##""<<==>>??IIHHGGFF//001122GGFFEEDD!!""##$$xxwwvvuuIIJJKKLLPPOONNMMqqrrsstt((''&&%%99::;;<>??@@AA[[ZZYYXX ffgghhiiccddeeffKKLLMMNNNNMMLLKKssttuuvv&&%%$$##;;<<==>>^^]]\\[[ccddeeff66554433++,,--..nnmmllkk SSTTUUVV--,,++**KKLLMMNN.--,,++*8899::;;aa``__^^``aabbcc99887766(())**++qqppoonnPPQQRRSSIIHHGGFFxxyyzz{{~~!! @@AABBCCEEDDCCBB3399::;;CCBBAA@@%%&&''((ttssrrqqMMNNOOPPLLKKJJIIuuvvwwxx$$##""!!==>>??@@PPOONNMM!!""##$$iihhggff]\\[[ZZYuuvvwwxx$$##""!!==>>??@@\\[[ZZYYeeffgghh44332211--..//00llkkjjii - - UUVVWWXXDDCCBBAA }}~~rrqqkkjj ihhggffebbccddee77665544**++,,--oonnmmll RRSSTTUUGGFFEEDDzz{{||}}~~}}||BBCCDDEEWWVVUUTT - - jjkkllmmgghhiijj~~}}||{{OOPPQQRRJJIIHHGGwwxxyyzz""!! ??@@AABBZZYYXXWW - -gghhiijj221100////001122jjiihhgg - - WWXXYYZZ))((''&&OOUUVVWW*))((''&<<==>>??]]\\[[ZZddeeffgg55443322,,--..//mmllkkjj - -TTUUVVWWEEDDCCBB||}}~~}}||{{zzDDEEFFGGAA@@??>><<==>>????>>==<<))**++,,ppoonnmm QQRRSSTTHHGGFFEEyyzz{{||~~}} AABBCCDDDDCCBBAA }}~~||{{zzyyEEFFGGHH@@??>>====>>??@@>>==<<;;**++,,--oonnmmll RRSSTTUUGGFFEEDDzz{{||}}~~}}||BBCCDDEE@@??>>==EEFFGGHH//..--,,BBCCDDEE@@??>>==!!""##$$xxwwvvuuIIJJKKLL<<;;::99AABBCCDD::998765..//0011kkjjiihh - - VVWWXXYYCCBBAA@@ !!~~{{zzyyxxFFGGHHII<<;;::99IIJJKKLL++**))((FFGGHHII<<;;::99%%&&''((ttssrrqqMMNNOOPP33221100EEFFGGHH4332211022334455ggffeeddZZ[[\\]]??>>==<<""##$$%%wwvvuuttJJKKLLMM33221100MMNNOOUU''&&%%$$JJKKLLMM88776655))**++,,ppoonnmm QQRRSSTT//..--,,IIJJKKLL0//..--,66778899ccbbaa``^^__``aa;;::9988&&''(())ssrrqqppNNOOPPQQ//..--,,VVWWXXYY##""!! NNOOPPQQ44332211--..//00llkkjjii - - UUVVWWXX++**))((MMNNOOUU,++**))(::;;<<==__^^]]\\bbccddee77665544**++,,--oonnmmll RRSSTTUU++**))((ZZ[[\\]]~~}}||RRSSTTUU00//..--11223344hhggffeeYYZZ[[\\''&&%%$$VVWWXXYY(''&&%%$>>??@@AA[[ZZYYXX ffgghhii33221100..//0011kkjjiihh - - VVWWXXYY''&&%%$$^^__``aa{{zzyyxxVVWWXXYY,,++**))55667788ddccbbaa]]^^__``##""!! ZZ[[\\]]$##""!! BBCCDDEEWWVVUUTT - - jjkkllmm//..--,,22334455ggffeeddZZ[[\\]]##""!! bbccddeewwvvuuttZZ[[\\]]((''&&%%99::;;<<``__^^]]aabbccdd^^__``aa FFGGHHIISSRRQQPPnnooppqq++**))((66778899ccbbaa``^^__``aaffgghhiissrrqqpp^^__``aa$$##""!!==>>??@@\\[[ZZYYeeffgghhbbccddeeJJKKLLMMOONNMMLLrrssttuu''&&%%$$::;;<<==__^^]]\\bbccddeejjkkqqrroonnmmll bbccddee~~}} AABBCCDDXXWWVVUU - - iijjkkllffgghhii~~}}||NNOOPPQQKKJJIIHHvvwwxxyy##""!! >>??@@AA[[ZZYYXX ffgghhiissttuuvvkkjjiihh - - ffgghhii||{{zzyyEEFFGGHHTTSSRRQQ mmnnoopp jjkkqqrr{{zzyyxxRRSSTTUUGGFFEEDDzz{{||}}~~}}||BBCCDDEEWWVVUUTT - - jjkkllmm wwxxyyzzggffeedd - - jjkkllmmxxwwvvuuIIJJKKLLPPOONNMMqqrrsstt~~}}||{{ - - ssttuuvvwwvvuutt - -VVWWXXYYCCBBAA@@ !!~~{{zzyyxxFFGGHHIISSRRQQPPnnooppqq~~}}||{{ - - - -{{||}}~~ccbbaa``nnooppqqttssrrqqMMNNOOPPLLKKJJIIuuvvwwxxzzyyxxwwwwxxyyzzssrrqqpo ZZ[[\\]]??>>==<<""##$$%%wwvvuuttJJKKLLMMOONNMMLLrrssttuuzzyyxxww __^^]]\\rrssttuuppoonnmm QQRRSSTTHHGGFFEEyyzz{{||vvuuttss - -{{||}}~~nmlkkjji^^__``aa;;::9988&&''(())ssrrqqppNNOOPPQQKKJJIIHHvvwwxxyyvvuuttss[[ZZYYXXvvwwxxyyllkkjjii - - UUVVWWXXDDCCBBAA }}~~rrqqkkjj ihhggffebbccddee77665544**++,,--oonnmmll RRSSTTUUGGFFEEDDzz{{||}}rrqqkkjjWWVVUUTTzz{{||}}hhggffeeYYZZ[[\\@@??>>==!!""##$$iihhggffeddccbba ffgghhii33221100..//0011kkjjiihh - - VVWWXXYYCCBBAA@@ !!~~iihhggffSSRRQQPP !!~~ddccbbaa]]^^__``<<;;::99%%&&''((eeddccbba``__^^] - - jjkkllmm//..--,,22334455ggffeeddZZ[[\\]]??>>==<<""##$$%%eeddccbb !!""##OONNMMLL""##$$%%``__^^]]aabbccdd88776655))**++,,aa``__^^]\\[[ZZYnnooppqq++**))((66778899ccbbaa``^^__``aa;;::9988&&''(())aa``__^^$$%%&&''KKJJIIHH&&''(())\\[[ZZYYeeffgghh44332211--..//00]]\\[[ZZ !!""##YXXWWVVUrrssttuu''&&%%$$::;;<<==__^^]]\\bbccddee77665544**++,,--]]\\[[ZZ(())**++GGFFEEDD**++,,--XXWWVVUU - - iijjkkll00//..--11223344YYXXWWVV$$%%&&''UTSRQPOOvvwwxxyy##""!! >>??@@AA[[ZZYYXX ffgghhii33221100..//0011YYXXWWVV,,--..//CCBBAA@@..//0011TTSSRRQQ mmnnoopp,,++**))55667788UUOONNMM(())**++NNMMLLKKzz{{||}}~~}}||BBCCDDEEWWVVUUTT - - jjkkllmm//..--,,22334455UUOONNMM00112233??>>==<<22334455PPOONNMMqqrrsstt((''&&%%99::;;<>??@@HHGGFFEE00112233FFEEDDCC""##$$%%wwvvuuttJJKKLLMMOONNMMLLrrssttuu''&&%%$$::;;<<==HHGGFFEE==>>??@@77665544::;;<<==HHGGFFEEyyzz{{||~~}} AABBCCDDDDCCBBAA99::;;<>??@@AADDCCBBAAAABBCCDD33221100>>??@@AAfpvfpvXQJ`ےXQJ`ےtAJlf`vXfH~ے`JXtlJtlJf~Hf~HbHAZbHAZJlt`vXn`vXnr˂pr˂ptlJtlJf~HfHfbHAZJltJlt`vXn`vXnpZHAblJtArdQbt璅fpvHAZpbHAZpltbltbvXnvXn˂pZ˂pZlJtA~Hf~HfbHAZpbHAZpltbltbvXnvXn˂pZlJtAlJtA`f~nXvbHAtbdQJltXnv˂pZHA˂pZHAlJtArlJtAr~Hfp~HfpHAZp˂HAZp˂tbdQXnvXnv˂pZHA˂pZHAlJtArlJtAr~HfpHfpvHAZp˂|drtbdQZfH~r˂pZJXQrJtArdJtArdHfpvZp˂Zp˂tbdQZtbdQZnvpnvppZHAbpZHAJtArdHfpvHfpvZp˂Zp˂tbdQZtbdQZnvpnvpXQr˂JtArd~HfpXv`fp˂rp˂rbdQZ|bdQZ|vpfZHAbZHAbtArdtArdfpvfpvp˂rnXv`nXv`bHAZbHAZtbdQZnvpf`vXQrZHAtArdtArdfpvfpvp˂rp˂rbdQZ|vpfvpfZHAbZHAbtArdtArdfpvpvnp˂rbdQZ|bdQZ|vpfvpfے`Jd|Zl|ZdQnXv`˂rXQ˂rXQdQZ|dQZ|vpfHvpfHHAbےHAے`rd|pvnpvn˂rXQ˂rXQdQZ|dQZ|vpfHvpfےHAbےrd|rd|Hfpv`pvZp˂Z|dbdQZ|pfH~bے`bے`d|Zd|ZvnXvnXrXQJrXQJZ|dpfH~pfH~bے`bے`d|Zd|ZvnXnrXQrXQJtAJl|drf`vXAb`JpZHA|ZdQ|ZdQnXvrXQJ`rXQJ`|dr|drfH~fH~ے`Jے`JXQ|ZdQnXvnXvrXQJ`rXQJ`|dr|drfH~fے`Jp`JXQ|ZdQvnX~fpvXQJ`ےXQJ`ےdrtAdtAJH~fے`JXQے`JXQ|ZdQb|ZdQbnXv`nXv`XQJ`ےf~Hf~Hp˂rp˂r|drfH~nvpbے`|ZdQb|ZdQbnXv`nXv`XQJ`ےXQJ`ےdrtAH~fH~fے`JXQے`JXQ|ZdQb|ZdQbnXv`rXQJ`XQJ`ےdrtAdrtAH~fH~fXQr˂dQtArdbtlf~HJ`ےJ`ےdrtAJdrtAJ~f`~f``JXQrJXQrbZdQbtXv`fXv`fJ`ےJ`ےdrtAJdrtAJ~f``JXQr`JXQrZdQbtZdQbtnXvnrXQJrXQJ`rtAJAJl璐f`vJXQrJXQrdQbtdQbtv`fv`f`ےb`ےJlrtAJlf`vf`vJXQrJXQrdQbtdQbtv`fJ`ے`ےbtbdQZtAdQZ|nvpXQr˂bJQrbtlbtl`f~ےbHAےbHAtAJltAJlf`vXf`vXXQr˂rbtbtl`f~`f~ےbHAےbHAtAJltAJlf`vXXQHAbr˂pbtlv`fnXv`bHAZbHAZJltltb`vXnr˂pr˂ptlJtlJf~Hf~HbHAZfpvfpvXQJ`ےXQJ`ےtAJlf`vXfH~JXQrtlJtlJf~Hf~HbHAZJltJlt`vXn`vXnr˂pr˂ptlJtlJf~HےHAZbHAZJltJlt`vXn`vXnpZHAb|ZdQJtArdfpvbHAZpbHAZpltbltbvXnvXn˂pZtlJlJtA~Hf~HfbHAZpbHAZpltbltbvXn˂pZ˂pZlJtAlJtA`f~`p˂ےbHAbdQZ|tbnXnv˂pZHA˂pZHAlJtArlJtAr~Hfp~HfpHAZp˂tbdQtbdQXnvXnv˂pZHA˂pZHAlJtArlJtAr~HfpHAZp˂HAZp˂|ltdrtAfH~pZHAb˂pZJtArdJfpvHfpvZp˂Zp˂tbdQZtbdQZnvpnvppZHAblJtAdJtArdHfpvHfpvZp˂Zp˂tbdQZtbdQZnvpے`JXQZHAbJtArd~Hfpf~Hp˂rp˂rbdQZ|nvpvpfZHAbZHAbtArdtArdfpvfpvp˂rnXv`nXv`bHAZbHAZtdrtAnvpvpf˂pZHAtArdtArdfpvfpvp˂rbdQZ|bdQZ|vpfvpfZHAbZHAbtArdtArdfpvp˂rp˂rbdQZ|bdQZ|vpfvpfے`Jbtl|ZdQnvf˂rXQ˂rXQdQZ|dQZ|vpfHvpfHHAbےtAd|rd|pvnpvn˂rXQ˂rXQdQZ|dQZ|vpfHHAbےHAbےrd|rd|HXv`rXQJ`Zp˂drtAvpfHpfH~bے`bے`d|Zd|ZvnXvnXrXQJZ|dZ|dpfH~pfH~bے`bے`d|Zd|ZvnXrXQJrXQJbdQZ|Jltf`vXے`JHAbے|ZdQnXvnXvrXQJ`rXQJ`|dr|drfH~fH~ے`J|ZdQ|ZdQnXvnXvrXQJ`rXQJ`|dr|dtAfH~r˂pے`JXQtlJvnXfpvXQJ`ےXQJ`ےdrtAfHfH~fے`JXQے`JXQ|ZdQb|ZdQbnXv`nXv`XQJ`ےf~Hf~Hp˂rp˂rJlt`vXnے`JXQbے`|ZdQb|ZdQbnXv`nXv`XQJ`ےdrtAdrtAH~fH~fے`JXQے`JXQ|ZdQb|ZdQbnXv`XQJ`ےXQJ`ےdrtAdrtAH~fH~fXQHAbJtArdbtl~HfpJ`ےJ`ےdrtAJdrtAJ~f`~f``JXQrZdQbtZdQbtXv`fXv`fJ`ےJ`ےdrtAJdtAJl~f``JXQr`JXQrZdQbtZdQbtf~HےbHArXQJ`Jltf`vf`vJXQrJXQrdQbtdQbtv`fv`f`ےbrtAJlrtAJlf`vf`vJXQrJXQrdQbtdQbtv`f`ےb`ےbdrtAbdQZ|H~fXQr˂`JXQrbtl`f~`f~ےbHAےbHAtAJltAJlf`vXf`vXXQr˂btlbtl`f~`f~ےbHAےbHAtAJlJltf`vXZHAbr˂ptArdv`f~nXv`bHAZbHAZJlt`vXn`vXnr˂pr˂ptlJtlJf~HfHfbHAZfpvfpvXQJ`ےXQJ`ےbdQZ|vpfrZHAJXQrtlJtlJf~HfHfbHAZJltJlt`vXn`vXnr˂pr˂ptlJtlJf~HbHAZbHAZJltJlt`vXn`vXnے`JXQ|ZdQJtArdvnXbHAZpbHAZpltbltbvXnvXn˂pZlJtAlJtA~Hf~HfbHAZpbHAZpltbtbnvXn˂pZ˂pZlJtAlJtAfpvZp˂p˂rbdQZ|XnvXnv˂pZHA˂pZHAlJtArlJtAr~HfpHfpvHAZp˂tbdQtbdQXnvXnv˂pZHA˂pZHAlJtArlJfp~HfpHAZp˂HAZp˂Jltltb`vXnpZHAb˂pZAJtArdHfpvHfpvZp˂Zp˂tbdQZtbdQZnvpnvppZHAbJtArdJtArdHfpvHfpvZp˂Zp˂tbdQZbnvnvpے`JXQZHAb|ZdQbfpvf~Hp˂rp˂rbdQZ|vpfvpfZHAbZHAbtArdtArdfpvpvnp˂rnXv`nXv`bHAZbHAZdrtAH~fbے`˂pZAbtArdtArdfpvpvnp˂rbdQZ|bdQZ|vpfvpfZHAbZHAbtArdfpvfpvp˂rp˂rbdQZ|bdQZ|vpfvpfr˂pbtltlJv`f˂rXQ˂rXQdQZ|dQZ|vpfHvpfےHAbےrd|rd|pvnpvn˂rXQ˂rXQdQZ|vpfvpfHHAbےHAbےrd|rd|nXv`bHAZXQJ`ےdrtApfH~pfH~bے`bے`d|Zd|ZvnXnrXQrXQJZ|dZ|dpfH~pfH~bے`bے`d|ZvnXvnXrXQJrXQJbdQZ|nvpvpfJQr`JXQ|ZdQnXvnXvrXQJ`rXQJ`|dr|drfH~fے`Jے`J|ZdQ|ZdQnXvnXvrXQJ`rXQJ`|drpfHfH~r˂p˂pZtlJnXv`fvnXXQJ`ےXQJ`ےdrtAH~fH~fے`JXQے`JXQ|ZdQb|ZdQbnXv`rXQJ`XQJ`ےf~Hf~Hp˂rp˂rJlt`vXnJXQr˒`JXQ|ZdQb|ZdQbnXv`rXQJ`XQJ`ےdrtAdrtAH~fH~fے`JXQے`JXQ|ZdQbnXv`nXv`XQJ`ےXQJ`ےdrtAdrtAH~fH~fZHAb|ZdQbfpv~HfpJ`ےJ`ےdrtAJdrtAJ~f``JXQr`JXQrZdQbtZdQbtXv`fXv`fJ`ےJ`ےdrtAJHf`~f``JXQr`JXQrZdQbtZdQbtf~Hp˂rbHAZJltbf`vf`vJXQrJXQrdQbtdQbtv`fJ`ے`ےbrtAJlrtAJlf`vf`vJXQrJXQrdQbtv`fv`f`ےb`ےbdrtA`vXnH~f˂pZHrbtbtl`f~`f~ےbHAےbHAtAJltAJlf`vXXQr˂XQr˂btlbtl`f~`f~ےbHAےbHAtAJlf`vXf`vX`JXQrHAbےtArdf~Hv`fbHAZJltJlt`vXn`vXnr˂pr˂ptlJtlJf~HےHAZbHAZfpvfpvXQJ`ےXQJ`ےbdQZ|vpfpZHAr˂ptlJtlJf~HےHAZbHAZJltJlt`vXn`vXnr˂pr˂ptlJf~Hf~HbHAZbHAZJltJlt`vXn`vXnے`JXQtlJnvfvnXbHAZpbHAZpltbltbvXn˂pZ˂pZlJtAlJtA~Hf~HfbHAZpbHAZpltbvXnvXn˂pZ˂pZlJtAlJtAfpvXQJ`ےp˂rQZdrXnvXnv˂pZHA˂pZHAlJtArlJtAr~HfpHAZp˂HAZp˂tbdQtbdQXnvXnv˂pZHA˂pZHAlJtAr~Hfp~HfpHAZp˂HAZp˂dQZ|vpf`vXnAbے`lJtAdJtArdHfpvHfpvZp˂Zp˂tbdQZtbdQZnvppZHAbpZHAbJtArdJtArdHfpvHfpvZp˂Zp˂tbdQZnvpnvp˂pZ`JXQr|ZdQtAfpv~Hfpp˂rbdQZ|bdQZ|vpfvpfZHAbZHAbtArdtArdfpvp˂rp˂rnXv`nXv`bHAZJltltbH~bے`ZHAbtArdtArdfpvp˂rp˂rbdQZ|bdQZ|vpfvpfZHAbZHAےtArdfpvfpvp˂rp˂rbdQZ|bdQZ|vpfvpfr˂ptArd~Hfpv`f~˂rXQ˂rXQdQZ|dQZ|vpfHHAbےHAbےrd|rd|pvnpvn˂rXQ˂rXQdQZ|vpfHvpfHHAbےHAbےrd|rd|~HfbHAZXQJ`ےtAJlpfH~pfH~bے`bے`d|Zd|ZvnXrXQJrXQJZ|dZ|dpfH~pfH~bے`ے`Jd|ZvnXvnXrXQJrXQJdrtAJH~fvp`JXQr|ZdQ|ZdQnXvnXvrXQJ`rXQJ`|dr|dtAfH~ے`Jے`J|ZdQ|ZdQnXvnXvrXQJ`rXQJ`|drfH~fH~HAbے˂p`rd|nXv`vnXXQJ`ےdrtAdrtAH~fH~fے`JXQے`JXQ|ZdQb|ZdQbnXv`XQJ`ےXQJ`ےf~Hf~Hp˂rdrtAJdQZ|vpfHJXQr˒`JXQ|ZdQb|ZdQbnXv`XQJ`ےXQJ`ےdrtAdrtAH~fH~fے`JXQ`JXQr|ZdQbnXv`nXv`XQJ`ےXQJ`ےdrtAdrtAH~fے`JXQ`JXQr|ZdQbvnXfpvJ`ےJ`ےdrtAJdtAJl~f``JXQr`JXQrZdQbtZdQbtXv`fXv`fJ`ےJ`ےJdrtAJ~f`~f``JXQr`JXQrZdQbtZdQbtpvnp˂rbHAXQtbdQZf`vf`vJXQrJXQrdQbtdQbtv`f`ےb`ےbrtAJlrtAJlf`vf`vJXQrXQrbtdQbtv`fv`f`ےb`ےbltb`vXHvXn˂pZHbtlbtl`f~`f~ےbHAےbHAtAJlJltf`vXXQr˂XQr˂btlbtl`f~`f~ےbHAےJltAJlf`vXf`vX`JXQrJXQrbZdQbtf~Hv`ffbHAZJltJlt`vXn`vXnr˂pr˂ptlJtlJf~HbHAZbHAZfpvfpvXQJ`ےltbdrtAJ~f`pZAbr˂ptlJtlJf~HbHAZbHAZJltJlt`vXn`vXnr˂pbtltlJf~Hf~HbHAZbHAZJltJlt`vXnHAbے˂pZtlJv`fnXv`bHAZpbHAZpltbtbnvXn˂pZ˂pZlJtAlJtA~Hf~HfbHAZpltbltbvXnvXn˂pZ˂pZlJtAlJtAXv`fXQJ`pJ`ےJ|drXnvXnv˂pZHA˂pZHAlJtArlJfp~HfpHAZp˂HAZp˂tbdQtbdQXnvXnv˂pZHAlJtAlJtAr~Hfp~HfpHAZp˂HAZp˂dQZ|~f`vpfHAbے`JtArdJtArdHfpvHfpvZp˂Zp˂tbdQZbnvnvppZHAbpZHAbJtArdJtArdHfpvHfpvZp˂tbdQZtbdQZnvpnvp˂pZtl|lJtAfvnXpvnp˂rbdQZ|bdQZ|vpfvpfZHAbZHAbtArdfpvfpvp˂rp˂rnXv`nXv`bHAZdQZ|ltbvXn`JXQrZHAbtArdfpvfpvp˂rp˂rbdQZ|bdQZ|vpfvpfZHAbJtAdtArdfpvfpvp˂rp˂rbdQZ|bdQZ|vpf`JXQrHAbےtArdt~Hfpf~H˂rXQ˂rXQdQZ|vpfvpfHHAbےHAbےrd|rd|pvnpvn˂rXQdQZ|dQZ|vpfHvpfHHAbےHAbےrd|rd|~Hf˂rXQltbQtAJlpfH~pfH~bے`bے`d|ZvnXvnXrXQJrXQJZ|dZ|dpfH~pfH~bے`d|Zd|ZvnXvnXrXQJrXQJdrtAJvXn~f`JXQr|ZdQ|ZdQnXvnXvrXQJ`rXQJ`|drpfHfH~ے`Jے`J|ZdQ|ZdQnXvnXvrXQJ`|dr|drfH~fH~HAbZdQbtrd|v`frXQJ`XQJ`ےdrtAdrtAH~fH~fے`JXQے`JXQ|ZdQbnXv`nXv`XQJ`ےXQJ`ےf~Hf~Hp˂rdrtAJdQZ|vpfH˂pZJQr˂|ZdQbnXv`nXv`XQJ`ےXQJ`ےdrtAdrtAH~fH~fے`JXQ|ZdQb|ZdQbnXv`nXv`XQJ`ےXQJ`ےdrtAdtAJH~f˂pZ`JXQrlJtAvnXfpvJ`ےJ`ےdrtAJHf`~f``JXQr`JXQrZdQbtZdQbtXv`fXv`fJ`ےdrtAJdrtAJ~f`~f``JXQr`JXQrZdQbtZdQbtpvnJ`ےZdrttbdQZf`vf`vJXQrJXQrdQbtv`fv`f`ےb`ےbrtAJlrtAJlf`vf`vJXQrdQbtdQbtv`fv`f`ےb`ےbltdvpfHvXnZHAbbtlbtl`f~`f~ےbHAےbHAtAJlf`vXf`vXXQr˂XQr˂btlbtl`f~`fHےbHAtAJltAJlf`vXf`vX˂pZHAlJtAZdQbt~HfpےHAZbHAZJltJlt`vXn`vXnr˂pr˂ptlJf~Hf~HbHAZbHAZfpvfpvXQJ`ےltbdrtAdQ~f`HAbےpZHAbtlJf~Hf~HbHAZbHAZJltJlt`vXn`vXnr˂ptlJtlJf~Hf~HbHAZbHAZJltltb`vXnHAbے˂pZrd|v`f~fnXv`bHAZpbHAZpltbvXnvXn˂pZ˂pZlJtAlJtA~HfHfpbHAZpltbltbvXnvXn˂pZ˂pZlJtAlJfXv`pbHAZpAJlt|rAJlXnvXnv˂pZHA˂pZHAlJtAr~Hfp~HfpHAZp˂HAZp˂tbdQtbdQXnvXnv˂pZHAlJtArlJtAr~Hfp~HfpHAZp˂HAZp˂rtAJl~f`vpfHے`JXQJtArdJtArdHfpvHfpvZp˂Zp˂tbdQZnvpnvppZHAbpZHAbJtArdJtArdHfpvfpvZp˂tbdQZtbdQZnvpnvpbے`rd|l|ZvnXp˂rp˂rbdQZ|bdQZ|vpfvpfZHAbZHAےtArdfpvfpvp˂rp˂rnXv`nXv`bHAZdQZ|lZ|dvXH~`JXQrے`JtArdfpvfpvp˂rp˂rbdQZ|bdQZ|vpfvpfZHAbtArdtArdfpvfpvp˂rp˂rbdQZ|nvpvpf`JXQrHAbZdQbtpvnf~Hf˂rXQ˂rXQdQZ|vpfHvpfHHAbےHAbےrd|rd|pvnvnr˂rXQdQZ|dQZ|vpfHvpfHHAbےHAbےrd|pvvnX˂rXQbdQZ|tbdpfH~pfH~bے`ے`Jd|ZvnXvnXrXQJrXQJZ|dZ|dpfH~pfے`bے`d|Zd|ZvnXvnXrXQJrXQJtbdQvXn~vr˂p|ZdQ|ZdQnXvnXvrXQJ`rXQJ`|drfH~fH~ے`Jے`J|ZdQ|ZdQnXvnrXQJrXQJ`|dr|drfH~fH~JXQrZdQtArdQbtv`fXQJ`ےXQJ`ےdrtAdrtAH~fH~fے`JXQ`JXQr|ZdQbnXv`nXv`XQJ`ےXQJ`ےf~Hp˂rp˂rtbdQrtAJlf`v˂pZXQr˂|ZdQbnXv`nXv`XQJ`ےXQJ`ےdrtAdrtAH~fے`JXQے`JXQ|ZdQb|ZdQbnXv`nXv`XQJ`ےXQJ`ےdrtAfHfH~f˂p`˂pZHAlJtAXv`fvnXvJ`ےJ`ےJdrtAJ~f`~f``JXQr`JXQrZdQbtZdQbtXv`fXQJ`ےJ`ےdrtAJdrtAJ~f`~f``JXQr`JXQrZdQbt~Hfpv`fJ`ےdrtQZ|df`vf`vJXQrXQrbtdQbtv`fv`f`ےb`ےbrtAJlrtAJlf`vJXQrJXQrdQbtdQbtv`fv`f`ےb`ےbZ|dvp`vpfے`ZHAbbtlbtl`f~`f~ےbHAےJltAJlf`vXf`vXXQr˂XQr˂btlbtl`f~`ےHAےbHAtAJltAJlf`vXf`vX˂pZHAd|ZlJtAr~HfpېbHAZbHAZJltJlt`vXn`vXnr˂pbtltlJf~Hf~HbHAZbHAZfpvXQJ`ےXQJ`ےZ|dtbdQXnvHAbpZHAbtlJf~Hf~HbHAZbHAZJltJlt`vXnr˂pr˂ptlJtlJf~Hf~HbHAZbHAZJlt`vXn`vXnJXQrbے`rd|~Hf`f~bHAZpltbltbvXnvXn˂pZ˂pZlJtAlJtA~HfHAZpbHAZpltbltbvXnvXn˂pZ˂pZlJtAvnX~HfpbHAXQJAJltrtAJlXnvXnv˂pZHAlJtAlJtAr~Hfp~HfpHAZp˂HAZp˂tbdQtbdQXnv˂pZHA˂pZHAlJtArlJtAr~Hfp~HfpHAZp˂HAZp˂rtAJlXnvJXQrے`JXQJtArdJtArdHfpvHfpvZp˂tbdQZtbdQZnvpnvppZHAbpZHAbJtArdJtArdHfpvZp˂Zp˂tbdQZtbdQZnvpnvpbے`dQbtd|Zvnvfp˂rp˂rbdQZ|bdQZ|vpfvpfZHAbJtAdtArdfpvfpvp˂rp˂rnXv`bHAZbHAZrtAJlZ|`vpfH~JQr˂pJAdtArdfpvfpvp˂rp˂rbdQZ|bdQZ|vpfZHAbZHAbtArdtArdfpvfpvp˂rp˂rbdQZ|vpfvpf˂pZHAJXQrZdQtArpvnHfpv˂rXQdQZ|dQZ|vpfHvpfHHAbےHAbےrd|rd|pvn˂rXQ˂rXQdQZ|dQZ|vpfHvpfHHAbےHAے`rd|v`fvnX`ےbbdQZ|tbdpfH~pfH~bے`d|Zd|ZvnXvnXrXQJrXQJZ|dZ|dpfH~bے`bے`d|Zd|ZvnXvnXrXQJrXQJtbdQpfH~ZHAbr˂p|ZdQ|ZdQnXvnXvrXQJ`|dr|drfH~fH~ے`Jے`J|ZdQ|ZdQnXvrXQJ`rXQJ`|dr|drfH~fH~JXQHAblJtArdQbt璐~HfXQJ`ےXQJ`ےdrtAdrtAH~fH~fے`JXQ|ZdQb|ZdQbnXv`nXv`XQJ`ےXQJ`ےf~Hp˂rp˂rtbdQXnvf`vZHAb|ZdQb|ZdQbnXv`nXv`XQJ`ےXQJ`ےdrtAdtAJH~fے`JXQے`JXQ|ZdQb|ZdQbnXv`nXv`XQJ`ےXQJ`ےdrtAH~fH~fbے`˂p`Jd|ZXv`fnXvJ`ےdrtAJdrtAJ~f`~f``JXQr`JXQrZdQbtZdQbtXv`fJ`ےJ`ےdrtAJdrtAJ~f`~f``JXQrJXQrbZdQbt~Hfpv`fHAZp˂rAJlQZ|df`vf`vJXQrdQbtdQbtv`fv`f`ےb`ےbrtAJltAJl璐f`vJXQrJXQrdQbtdQbtv`fv`f`ےb`ےJlZ|l璐f`v`JXQZAb`btlbtl`f~`fHےbHAtAJltAJlf`vXf`vXXQr˂XQr˂btlbtl`f~ےbHAےbHAtAJltAJlf`vXf`vXے`Jd|ZlJtArpvnbHAZbHAZJltJlt`vXn`vXnr˂ptlJtlJf~Hf~HbHAZbHAZp˂rfpvXQJ`ےXQJ`ےZ|dpfH~Xnvے`JXtlJtlJf~Hf~HbHAZbHAZJltltb`vXnr˂pr˂ptlJtlJf~Hf~HbHAZJltJlt`vXn`vXnJXQrXQrbtdQbt璐~Hf`ffpbHAZpltbltbvXnvXn˂pZ˂pZlJtAlJf~HfbHAZpbHAZpltbltbvXnvXn˂pZtlJlJtAvnX~HXvrXQJtbdQrtAJXnvXnv˂pZHAlJtArlJtAr~Hfp~HfpHAZp˂HAZp˂tbdQtbnXnv˂pZHA˂pZHAlJtArlJtAr~Hfp~HfpHAZp˂tdrtbdQZXnvr˂pJXQrJtArdJtArdHfpvfpvZp˂tbdQZtbdQZnvpnvppZHAbpZHAbJtArdJfpvHfpvZp˂Zp˂tbdQZtbdQZnvpnvpXQr˂dQbtdtlXv`fp˂rp˂rbdQZ|bdQZ|vpfvpfZHAbtArdtArdfpvfpvp˂rp˂rXQJ`ےnXv`bHAZbHAZrtAdQZf`vp`vXQr˂ptArdtArdfpvfpvp˂rp˂rbdQZ|nvpvpfZHAbZHAbtArdtArdfpvfpvp˂rbdQZ|bdQZ|vpfvpf˂pZHAl|ZlJtArvnXv`vnr˂rXQdQZ|dQZ|vpfHvpfHHAbےHAbےrd|pvnpvn˂rXQ˂rXQdQZ|dQZ|vpfHvpfHHAbےtAd|rd|v`pv`f~`ےbZ|dbdQZ|pfH~pfے`bے`d|Zd|ZvnXvnXrXQJrXQJZ|dvpfHpfH~bے`bے`d|Zd|ZvnXvnXrXQJtAJl|drpfH~ZHAbۂpZHA|ZdQ|ZdQnXvnrXQJrXQJ`|dr|drfH~fH~ے`Jے`J|ZdQnXvnXvrXQJ`rXQJ`|dr|drfH~fH~pZHAbl|ZdQJfpv~HfXQJ`ےXQJ`ےdrtAdrtAH~fے`JXQے`JXQ|ZdQb|ZdQbnXv`nXv`XQJ`ےXQJ`ےJltf~Hp˂rp˂r|drXH~nvpZHAb|ZdQb|ZdQbnXv`nXv`XQJ`ےXQJ`ےdrtAfHfH~fے`JXQے`JXQ|ZdQb|ZdQbnXv`nXv`XQJ`ےdrtAdrtAH~fH~fb˂dQbtd|Zf~HXQJ`ےJ`ےdrtAJdrtAJ~f`~f``JXQr`JXQrZdQbtXv`fXv`fJ`ےJ`ےdrtAJdrtAJ~f`~f``JXQrZdQbtZdQbtnXvHfpvHAZp˂rtAJldrtAf`vJXQrJXQrdQbtdQbtv`fv`f`ےb`ےbrtAJlf`vf`vJXQrJXQrdQbtdQbtv`fv`f`ےbtbdQZtAJl璐vp`JXQbے`btlbtl`f~`ےHAےbHAtAJltAJlf`vXf`vXXQr˂XQr˂btl`f~`f~ےbHAےbHAtAJltAJlf`vXf`vXے`JbtlnvfpvnbHAZbHAZJltJlt`vXnr˂pr˂ptlJtlJf~Hf~HbHAZbHAZbdQZ|drtAdrtAH~fH~fے`JXQے`JXQ|ZdQb|ZdQbfpvXQJ`ےbQZdtbdQ~f`~f``JXQr`JXQrZdQbtXv`fXv`fJ`ےJ`ےdrtAJdrtAJ~f`~f`ے`JXQ`ZQXb㕀vˍpfvˍpfbAdZ|JltJlt`vXn`vXnr˂pr˂ptlJtlJnXv`bHAZrtAJlZ|rAvXnvXn˂pZ˂pZlJtA~Hf~HfbHAZpbHAZpltbltbvXnvXnr˂pۑpJH~ㅐfەH~ㅐfۂdrQtbdQZ|bdQZ|vpfvpfZHAbZHAbtArdfpvpvnp˂rtbdQJltvpfHvpfHHAbےHAے`rd|pvnpvn˂rXQ˂rXQdQZ|dQZ|vpfHvpfZ`JXQrAHr󙐉`vXn`vXnJltdrtAdrtAH~fH~fے`JXQے`JXQ|ZdQb~HfXv`fXQJ`ےZ|dbdQZ|~f`~f``JXQrJXQrbZdQbtXv`fXv`fJ`ےJ`ےdrtAJdrtAJ~f`HAbے˂pZۑpJAHvˍpfvˍpfbAdZ|JltJlt`vXn`vXnr˂pr˂ptlJpvn~HfbHAXQrtAJldrtAvXnvXn˂pZtlJlJtA~Hf~HfbHAZpbHAZpltbltbvXn`JXQrHAbےr󙐂ˁ`H~ㅐfەH~ㅐfۂdrQtbdQZ|bdQZ|vpfvpfZHAbZHAےtArdXv`fpvnJ`ےtbdQJltvpfHvpfHHAbےtAd|rd|pvnpvn˂rXQ˂rXQdQZ|dQZ|vpfH˂pZ`JXQrZQXb㉀`vXn`vXnJltdrtAdrtAH~fH~fے`JXQ`JXQr|ZdQb~HfXv`fbHAZpZ|rAJbdQZ|~f`~f``JXQrZdQbtZdQbtXv`fXv`fJ`ےJ`ےdrtAJdtAJl~f`HAbے˂pZۑpJAHvˍpfvˍpfbAdZ|JltJlt`vXn`vXnr˂pbtltlJpvn~HX˂rXQltbdrtAJvXnvXn˂pZlJtAlJtA~Hf~HfbHAZpbHAZpltbtbnvXn`JXQrHAbr󙐂ˁ`H~ㅐfەH~ㅐfۂdrQtbdQZ|bdQZ|vpfvpfZHAbJtAdtArdXv`pv`fJ`ےdQZ|bdQZvpfHvpfےHAbےrd|rd|pvnpvn˂rXQ˂rXQdQZ|vpfvpfH˂p`˂pZHAZQXAHr`vXn`vXnJltdrtAdrtAH~fH~fے`JXQ|ZdQb|ZdQbvnX~HfpbHAZpdrtAJ|dr~f``JXQr`JXQrZdQbtZdQbtXv`fXv`fJ`ےJ`ےdrtAJHf`~f`JXQrbے`ˁ`Zvˍpfvˍp|bAdZ|JltJlt`vXn`vXnr˂ptlJtlJv`fvnX˂bltbtAJlvXn˂pZ˂pZlJtAlJtA~Hf~HfbHAZpbHAZpltbvXnvXn˂pZHAJXQrQXb㉀ەH~ㅐfۂdrQtdrQtbdQZ|bdQZ|vpfvpfZHAbtArdtArd~Hfpv`pvHAZp˂dQZ|tbdQZvpfHHAbےHAbےrd|rd|pvnpvn˂rXQ˂rXQdQZ|vpfHvpfHbے`˂p`ZpJAHr`vXnJltJltdrtAdrtAH~fے`JXQے`JXQ|ZdQb|ZdQbvnXnrXQrXQJdrtAJ|AJl~f``JXQr`JXQrZdQbtZdQbtXv`fXv`fJ`ےJ`ےJdrtAJ~f`~f`JXQrQXb㉀ۙˁ`ZvˍpfbAdZ|bAdZ|JltJlt`vXnr˂pr˂ptlJtlJv`fJ`p˂`ےbbdQZ|tbnvXn˂pZ˂pZlJtAlJtA~Hf~HfbHAZpltbltbvXnvXn˂pZHApJAHrQXb㉀ەH~ㅐfۂdrQtdrQtbdQZ|bdQZ|vpfZHAbZHAbtArdtArd~HXvrXQJHAZp˂drtvpfvpfHHAbےHAbےrd|rd|pvnpvn˂rXQdQZ|dQZ|vpfHvpfHb˂ˁ`Zp`ZQX`vXnJltJltdrtAdtAJH~fے`JXQے`JXQ|ZdQb|ZdQb`f~`ےbrXQJAJltHf`~f``JXQr`JXQrZdQbtZdQbtXv`fXv`fJ`ےdrtAJdrtAJ~f`~f`pZHAbQXAHrb㉀ۑpvˍpfbAdZ|bAdZ|Jltltb`vXnr˂pr˂ptlJtlJHfpvHAZp˂`p˂bdQZ|vXnvXn˂pZ˂pZlJtAlJtA~HfHfpbHAZpltbltbvXnvXnے`Jˁ`ZQXJAHr󙐕H~ㅐfۂdrQtdrQtbdQZ|nvpvpfZHAbZHAbtArdtArdnXvbHArXQJ`drtvpfHvpfHHAbےHAbےrd|rd|pvnvnr˂rXQdQZ|dQZ|vpfHvpfHXQr˂b㉀ۑpˁ`ZQX`vXnJltJltdrtAfHfH~fے`JXQے`JXQ|ZdQb|ZdQb`f~Zp˂ےbHAAJlt~f`~f``JXQr`JXQrZdQbtZdQbtXv`fXQJ`ےJ`ےdrtAJdrtAJ~f`~f`pZHAbJAHrb㉀ۑpvˍpfbAdZ|bAdZ|Jlt`vXn`vXnr˂pr˂ptlJtlJHfpvrXQJ`Zp˂bQZdvXnvXn˂pZ˂pZlJtAlJtA~HfHAZpbHAZpltbltbvXnvXnے`Jˁ`ZQXJAHfەH~ㅐfۂdrQtdrQtbdQZ|vpfvpfZHAbZHAbtArdtArd~HےbHArXQJ`rtAJlvpfHvpfHHAbےHAbےrd|rd|pvn˂rXQ˂rXQdQZ|dQZ|vpfHvpfHXQHAbb㉀ۑp`vXn`vXnJltJltdrtAH~fH~fے`JXQے`JXQ|ZdQb|ZdQbfpvZp˂ےbHAtbdQ~f`~f``JXQr`JXQrZdQbtZdQbtXv`fJ`ےJ`ےdrtAJdrtAJ~f`~f`ے`JXQ`ZQXb㕀vˍpfvˍpfbAdZ|bAdZ|Jlt`vXn`vXnr˂pr˂ptlJtlJnXv`rXQJ`XQJ`ےZ|dvXnvXn˂pZ˂pZlJtAlJf~HfbHAZpbHAZpltbltbvXnvXnr˂pۑpJH~ㅐfەH~ㅐfۂdrQtdrQtbdQZ|vpfvpfZHAbZHAbtArdtArdf~Hp˂rJltrtAJlvpfHvpfHHAbےHAbےrd|pvnpvn˂rXQ˂rXQdQZ|dQZ|vpfHvpfHZHAbAHr󙐂˝`vXn`vXnJltJlt \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv39_2.dat b/mpdf/qrcode/data/qrv39_2.dat deleted file mode 100644 index 8637f14..0000000 --- a/mpdf/qrcode/data/qrv39_2.dat +++ /dev/null @@ -1,345 +0,0 @@ -|{|{|{|{xwxwxwxw|{|{|{|{xwxwxwxw|{|{|{|{xwxwxwxw|{|{|{|{xwxwxwxw|{|{|{|{xwxwxwxw|{|{|{|{xwxwxwxw|{|{|{|{xwxwxwxw|{|{|{|{xwxwxwxw|{|{|{|{xwxwxwxw|{|{|{|{xwxwxwxw|{|{|{|{xwxwxwxwtstststs|{|{|{|{xwxwxwxwtstststs|{|{|{|{xwxwxwxwtstststs|{|{|{|{xwxwxwxwtstststs~}|{|{|{|{xwxwxwxwtstststs~}~}~}~}|{|{|{|{xwxwxwxwtstststs~}~}~}~}|{|{|{|{xwxwxwxwtstststs~}~}~}~}|{|{|{|{xwxwxwxwtstststs~}~}~}~}|{|{|{|{xwxwxwxwtstststs~}~}~}~}|{|{|{|{xwxwxwxwtstststs~}~}~}~}|{|{|{|{xwxwxwxwtstststs~}~}~}~}|{|{|{|{xwxwxwxwtstststs~}~}~}~}|{|{|{|{xwxwxwxwtstststs~}~}~}~}|{|{|{zyxwxwxwxwtstststs~}~}~}~}zyzyzyzyxwxwxwxwtstststs~}~}~}~}zyzyzyzyxwxwxwxwtstststs~}~}~}~}zyzyzyzyxwxwxwxwtstststs~}~}~}~}zyzyzyzyxwxwxwxwtstststs~}~}~}~}zyzyzyzyxwxwxwxwtstststs~}~}~}~}zyzyzyzyxwxwxwxwtstststs~}~}~}~}zyzyzyzyxwxwxwxwtstststs~}~}~}~}zyzyzyzyxwxwxwxwtstststs~}~}~}~}zyzyzyzyxwxwxwvutstststs~}~}~}~}zyzyzyzyvuvuvuvutstststs~}~}~}~}zyzyzyzyvuvuvuvutstststs~}~}~}~}zyzyzyzyvuvuvuvutstststs~}~}~}~}zyzyzyzyvuvuvuvutstststs~}~}~}~}zyzyzyzyvuvuvuvutstststs~}~}~}~}zyzyzyzyvuvuvuvutstststs~}~}~}~}zyzyzyzyvuvuvuvutstststs~}~}~}~}zyzyzyzyvuvuvuvutstststs~}~}~}~}zyzyzyzyvuvuvuvutstststs~}~}~}~}zyzyzyzyvuvuvuvutstststs~}~}~}~}zyzyzyzyvuvuvuvutstststs~}~}~}~}zyzyzyzyvuvuvuvutstststs~}~}~}~}zyzyzyzyvuvuvuvutstststs~}~}~}~}zyzyzyzyvuvuvuvutstststs~}~}~}~}zyzyzyzyvuvuvuvutstststs~}~}~}~}zyzyzyzyvuvuvuvutstststs~}~}~}~}zyzyzyzyvuvuvuvutstststs~}~}~}~}zyzyzyzyvuvuvuvutstststs~}~}~}~}zyzyzyzyvuvuvuvutststsrq~}~}~}~}zyzyzyzyvuvuvuvurqrqrqrq~}~}~}~}zyzyzyzyvuvuvuvurqrqrqrq~}~}~}~}zyzyzyzyvuvuvuvurqrqrqrq~}~}~}~}zyzyzyzyvuvuvuvurqrqrqrq~}~}~}~}zyzyzyzyvuvuvuvurqrqrqrq~}~}~}|{zyzyzyzyvuvuvuvurqrqrqrq|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrq|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrq|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrq|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrq|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrq|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrq|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrq|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrq|{|{|{|{zyzyzyxwvuvuvuvurqrqrqrq|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrq|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrq|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrq|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrq|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrq|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrq|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrq|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrq|{|{|{|{xwxwxwxwvuvuvutsrqrqrqrq|{|{|{|{xwxwxwxwtstststsrqrqrqrqrqrqrqrqnmnmnmnmjijijijifefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#        - - - - rqrqrqrqnmnmnmnmjijijijifefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSOOOOOPOPLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#        - - - - rqrqrqrqnmnmnmnmjijijijifefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSOPOPOPOPLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#        - - - - rqrqrqrqnmnmnmnmjijijijifefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSOPOPOPOPLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#       - - - - rqrqrqrqnmnmnmnmjijijijifefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSOPOPOPOPLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#     - - - - rqrqrqrqnmnmnmnmjijijijifefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSOPOPOPOPLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#     - - - - rqrqrqrqnmnmnmnmjijijijifefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSOPOPOPOPLKLKLKLKHGHGHGHGDCDCDCDCBA@?@?@?>=>=>=>=:9:9:9:96565656521212121.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#     - - - - rqrqrqrqnmnmnmnmjijijijifefefefebabababa^]^]^]^]\[\[ZYZYXWXWXWXWTSTSTSTSOPOOOOOOLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:96565656521212121.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#     - - - - rqrqrqrqnmnmnmnmjijijijifefefefebabababa^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:96565656521212121.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#     - - - - rqrqrqrqnmnmnmlkjijijijifefefefebabababa^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:96565656521212121.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#     - - - - rqrqrqrqlklklkkkjijijijifefefefebabababa^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:96565656521212121.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#     - - - - rqrqrqrqkkklklkljijijijifefefefebabababa^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOOOLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:96565656521212121.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#     - - - - rqrqrqrqklklklkljijijijifefefefebabababa^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSOOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:96565656521212121.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#     - - - rqrqrqrqklklklkljijijijifefefefebabababa^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPONMNMNMLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:96565656521212121.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#     rqrqrqrqklklklkljijihghgfefefefebabababa^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSNMNMNMNMLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:96565656521212121.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"!     rqrqrqrqklklklklhghghghgfefefefebabababa^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSNMNMNMNMLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?>=<;<;<;:9:9:9:96565656521212121.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"!     rqrqrqrqklklklklhghghghgfefefefebabababa^]^]^]^]ZYZYZYZYXWXWVUVUTSTSTSTSNMNMNMNMLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;:9:9:9:96543434321212121.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"!     rqrqrqpokkkkkklkhghghghgfefefefebabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;:9:9:9:94333333421212121.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"!     popopopolklklklkhghghghgfefefefebabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;:9:9:9:93434343421212121.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"!     popopopolklklklkhghghghgfefefefebabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;:9:9:9:93434343421212121.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"!     popopopolklklklkhghghghgfefefefebabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;:9:9:9:93434343421212121.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"!     popopopolklklklkhghghghgfefefefebabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;:9:9:9:9343434340/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"!     popopopolklklklkhghghghgfefefefebabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMLKJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;:9:9:9:9343434340/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"!     popopopolklkkkkkhghghghgfefedcdcbabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;:9:9:9:9343433330/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"! popopopoklklklklhghghghgdcdcdcdcbabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;:9878787334343430/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"! popopopoklklklklhghghghgdcdcdcdcbabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;87878787434343430/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"! popopopoklklklklhghghghgdcdcdcdcbabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;87878787434343430/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"! popopopoklklklklhghghghgdcdcdcdcbabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;87878787434343430/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"! popopopoklklklklhghghghgdcdcdcdcbabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;87878787434343430/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"! popopopoklklklkkhghghghgdcdcdcdcbabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;87878787434343430/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"! popopopokkkklklkhghghghgdcdcdcdcbabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;87878787333334340/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"! popopopolklklklkhghghghgdcdcdcdcbabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIHGFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;87878787343434340/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"! popopopolklklklkhghghghgdcdcdcdcbaba`_`_^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;87878787343434340/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"! popopopolklklklkhghghghgdcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;87878787343434340/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"! popopopolklklklkhghghghgdcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;87878787343434340/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"! popopopolklklklkhghghghgdcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;87878787343434340/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"! popopopolkkkkkklhghghghgdcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;87878787343333330/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"! popopopoklklklklhghghghgdcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;87878787434343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"! popopopoklklklklhghghghgdcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;87878787434343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!    popopopoklklklklhghghghgdcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;87878787434343430/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"!    popopopoklklklklhghghghgdcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEDCBABABA@?@?@?@?<;<;<;<;87878787434343430/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"!    popopopoklklklklhghghghgdcdcdcdc`_`_`_`_^]^]\[\[ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;87878787434343430/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"!    popopopoklklkkkkhghghghgdcdcdcdc`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;87878787434343330/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"!    popopopokklklklkhghghghgdcdcdcdc`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;87878787333434340/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"!    popopopolklklklkhghghghgdcdcdcdc`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;87878787343434340/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"!    popopopolklklklkhghghghgdcdcdcdc`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;87878787343434340/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"!    popopopolklklklkhghghghgdcdcdcdc`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;87878787343434340/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"!    - popopopokkkklklkhghghghgdcdcdcdc`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;87878787343434340/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"!    - - - - popopopolklkjijihghghghgdcdcdcdc`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;87878787343434340/0/0/0/,+,+,+,+('('('('$#$#$#$#"!"!"!"!    - - - - popopopojijijijihghghghgdcdcdcdc`_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEBABABABA@?>=>=>=<;<;<;<;87878787333333430/0/0/0/,+,+,+,+('('('('$#$#$#$#"!"!"!"!    - - - - popopopojijijijihghghghgdcdcdcdc`_`_`_`_\[\[\[\[ZYZYXWXWVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEBABABABA>=>=>=>=<;<;<;<;87878787434343430/0/0/0/,+,+,+,+('('('('$#$#$#$#"!"!"!"!    - - - - popopopojijijijihghghghgdcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWVUVUVUVURQRQPOPONMNMNMNMJIJIJIJIFEFEFEFEBABABABA>=>=>=>=<;<;<;<;87878787434343430/0/0/0/,+,+,+,+('('('('$#$#$#$#"!"!"!"!    - - - - ponmnmnmjijijijihghghghgdcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWVUVUVUVUPOPOOOOONMNMNMNMJIJIJIJIFEFEFEFEBABABABA>=>=>=>=<;<;<;<;87878787434343430/0/0/0/,+,+,+,+('('('('$#$#$#$#"!"!"!"!    - - - - nmnmnmnmjijijijihghghghgdcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWVUVUVUVUOPOPOPOPNMNMNMNMJIJIJIJIFEFEFEFEBABABABA>=>=>=>=<;<;<;<;87878787434333330/0/0/0/,+,+,+,+('('('('$#$#$#$#"!"!"!"!    - - - - nmnmnmnmjijijijihghghghgdcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWVUVUVUVUOPOPOPOPNMNMNMNMJIJIJIJIFEFEFEFEBABABABA>=>=>=>=<;<;<;<;87878787434343430/0/0/0/,+,+,+,+('('('('$#$#$#$#"!"!"!"!    - - - - nmnmnmnmjijijijihghghghgdcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWVUVUVUVUOPOPOPOPNMNMNMNMJIJIJIJIFEFEFEFEBABABABA>=>=>=>=<;<;<;<;87878787212121210/0/0/0/,+,+,+,+('('('('$#$#$#$#"!"!"!"!    - - - - nmnmnmnmjijijijihghghghgdcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWVUVUVUVUOPOPOPOPNMLKLKLKJIJIJIJIFEFEFEFEBABABABA>=>=>=>=<;<;<;<;87878787212121210/0/0/0/,+,+,+,+('('('('$#$#$#$#"!"!"!"!    - - - - nmnmnmnmjijijijihghgfefedcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWVUVUVUVUOPOPOPOPLKLKLKLKJIJIJIJIFEFEFEFEBABABABA>=>=>=>=<;<;<;<;87878787212121210/0/0/0/,+,+,+,+('('('('$#$#$#$#        - - - - nmnmnmnmjijijijifefefefedcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWVUVUVUVUOPOPOPOOLKLKLKLKJIJIJIJIFEFEFEFEBABABABA>=>=>=>=<;:9:9:987878765212121210/0/0/0/,+,+,+,+('('('('$#$#$#$#        - - - - nmnmnmnmjijijijifefefefedcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWVUVUTSTSOOOOPOPOLKLKLKLKJIJIJIJIFEFEFEFEBABABABA>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+('('('('$#$#$#$#        - - - - nmnmnmnmjijijijifefefefedcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEBABABABA>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+('('('('$#$#$#$#        - - - - nmnmnmnmjijijijifefefefedcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEBABABABA>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+('('('('$#$#$#$#        - - - - nmnmnmnmjijijijifefefefedcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEBABABABA>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+('('('('$#$#$#$#        - - - - nmnmnmnmjijijijifefefefedcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEBABABABA>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+('('('('$#$#$#$#        - - - - nmnmnmnmjijijijifefefefedcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#        - - - - nmnmnmnmjijijijifefefefedcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSPOOOOOOPLKLKLKLKJIHGHGHGFEFEFEFEBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#        - - - - nmnmnmnmjijijijifefefefedcdcbaba`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSOPOPOPOPLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#        - - - - nmnmnmnmjijijijifefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSOPOPOPOPLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#        - - - - nmnmnmnmjijijijifefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSOPOPOPOPLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#        - - - - nmnmnmnmjijijijifefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSOPOPOPOPLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#        - - - - nmnmnmnmjijijijifefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSOPOPOPOPLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#        - - - - nmnmnmnmjijijijifefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSOPOPOOOOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#        - - - - nmnmnmnmjijijijifefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSOOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#        - - - - nmnmnmnmjijijijifefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#        - - - - nmnmnmnmjijijijifefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGFEDCDCDCBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#        - - - - nmnmnmnmjijijijifefefefebabababa`_`_^]^]\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#        - - - - nmnmnmnmjijijijifefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#        - - - - mmnnooppIIJJKKLL%%&&''((;;::9988__^^]]\\qqrrssttMMNNOOPP))**++,, - -77665544[[ZZYYXX~~}}||uuvvwwxxQQRRSSTT--..//00 - -  33221100WWVVUUTT{{zzyyxxyyzz{{||UUVVWWXX11223344  - - //..--,,SSRRQQPPwwvvuutt}}~~YYZZ[[\\55667788 !!++**))((OONNMMLLssrrqqpp~~}}||]]^^__``99::;;<<""##$$%%''&&%%$$KKJJIIHHoonnmmll{{zzyyxxaabbccdd==>>??@@ !!""##&&''(())##""!! GGFFEEDDkkjjiihhwwvvuutteeffgghhAABBCCDD $$%%&&''**++,,-- CCBBAA@@ggffeeddssrrqqpoiijjkkllEEFFGGHH!!""##$$(())**++..//0011 - - ??>>==<>??@@>>??@@AA - - //..--,,SSRRQQPPxxwwvvuu]\\[[ZZYppoonnmm}}~~YYZZ[[\\55667788AABBCCDDBBCCDDEE !!++**))((OONNMMLLttssrrqq~~}}||{{YXXWWVVUllkkjjii]]^^__``99::;;<>??@@IIJJKKLLJJKKLLMM&&''(())##""!! GGFFEEDDllkkjjiivvuuttssNNMMLLKKddccbbaaeeffgghhAABBCCDDMMNNOOUUNNOOPPQQ**++,,-- CCBBAA@@hhggffeerrqqkkjjJJIIHHGG``__^^]]iijjkkllEEFFGGHHVVWWXXYYRRSSTTUU..//0011 - - ??>>==<>==<<;;TTSSRRQQxxwwvvuuuuvvwwxxQQRRSSTTbbccddee^^__``aa::;;<<== 33221100~~}}||XXWWVVUU]]\\[[ZZ::998765PPOONNMMttssrrqqyyzz{{||UUVVWWXXffgghhiibbccddee>>??@@AA - - //..--,,{{zzyyxxTTSSRRQQYYXXWWVV43322110LLKKJJIIppoonnmm}}~~YYZZ[[\\jjkkqqrrffgghhiiBBCCDDEE !!++**))((wwvvuuttPPOONNMMUUOONNMM0//..--,HHGGFFEEllkkjjii]]^^__``ssttuuvvjjkkllmmFFGGHHII""##$$%%''&&%%$$ssrrqqppLLKKJJIILLKKJJII,++**))(DDCCBBAAhhggffeeaabbccddwwxxyyzznnooppqqJJKKLLMM&&''(())##""!! oonnmmllHHGGFFEEHHGGFFEE(''&&%%$@@??>>==ddccbbaaeeffgghh{{||}}~~rrssttuuNNOOPPQQ**++,,-- kkjjiihhDDCCBBAADDCCBBAA$##""!! <<;;::99``__^^]]iijjkkllvvwwxxyyRRSSTTUU..//0011 - - ggffeedd@@??>>==@@??>>== 88776655\\[[ZZYY~~}}mmnnooppzz{{||}}VVWWXXYY22334455ccbbaa``<<;;::99<<;;::9944332211XXWWVVUU||{{zzyyqqrrsstt~~ZZ[[\\]]66778899__^^]]\\887766553322110000//..--TTSSRRQQxxwwvvuuuuvvwwxx^^__``aa::;;<<== [[ZZYYXX44332211//..--,,,,++**))PPOONNMMttssrrqqyyzz{{||bbccddee>>??@@AA - - WWVVUUTT00//..--++**))(( - -((''&&%%LLKKJJIIppoonnmm}}~~ffgghhiiBBCCDDEE !!SSRRQQPP,,++**))''&&%%$$ $$##""!!HHGGFFEEllkkjjiijjkkllmmFFGGHHII""##$$%%OONNMMLL((''&&%%##""!!  DDCCBBAAhhggffeennooppqqJJKKLLMM&&''(())KKJJIIHH$$##""!! - - @@??>>==ddccbbaarrssttuuNNOOPPQQ**++,,-- GGFFEEDD  <<;;::99``__^^]]vvwwxxyyRRSSTTUU..//0011 - - CCBBAA@@88776655\\[[ZZYY~~}}zz{{||}}VVWWXXYY22334455??>>==<<  44332211XXWWVVUU||{{zzyy~~ZZ[[\\]]66778899;;::9988 - - - - - - 00//..--TTSSRRQQxxwwvvuu^^__``aa::;;<<==77665544  ,,++**))PPOONNMMttssrrqqbbccddee>>??@@AA33221100 - - !!""##$$((''&&%%LLKKJJIIppoonnmmffgghhiiBBCCDDEE !!//..--,, - - %%&&''(($$##""!!HHGGFFEEllkkjjiijjkkllmmFFGGHHII""##$$%%++**))(( ))**++,, DDCCBBAAhhggffeennooppqqJJKKLLMM&&''(())''&&%%$$ !!""##--..//00 - - @@??>>==ddccbbaarrssttuuNNOOPPQQ**++,,--##""!! $$%%&&''11223344 <<;;::99``__^^]]vvwwxxyyRRSSTTUU..//0011(())**++5566778888776655\\[[ZZYY~~}}~~}}||zz{{||}}VVWWXXYY22334455 ,,--..//99::;;<< 44332211XXWWVVUU||{{zzyy{{zzyyxx~~ZZ[[\\]]66778899!!""##$$00112233==>>??@@ - - 00//..--TTSSRRQQxxwwvvuuwwvvuutt^^__``aa::;;<<==%%&&''((99::;;<>??@@AA ))**++,,==>>??@@EEFFGGHH!!""##$$((''&&%%LLKKJJIIppoonnmmnmlkkjjiffgghhiiBBCCDDEE - - --..//00AABBCCDDIIJJKKLL%%&&''(($$##""!!HHGGFFEEllkkjjiiihhggffejjkkllmmFFGGHHII11223344EEFFGGHHMMNNOOPP))**++,, DDCCBBAAhhggffeeeddccbba~~}}||nnooppqqJJKKLLMM55667788IIJJKKLLQQRRSSTT--..//00 - - @@??>>==ddccbbaa~~}}||{{a``__^^]{{zzyyxxrrssttuuNNOOPPQQ99::;;<>??@@VVWWXXYYYYZZ[[\\5566778888776655\\[[ZZYYvvuuttssYXXWWVVUssrrqqppzz{{||}}VVWWXXYY - - AABBCCDDZZ[[\\]]]]^^__``99::;;<< 44332211XXWWVVUUrrqqkkjjUTSRQPOOoonnmmll~~ZZ[[\\]]EEFFGGHH^^__``aaaabbccdd==>>??@@ - - 00//..--TTSSRRQQiihhggffNNMMLLKKkkjjiihh^^__``aaIIJJKKLLbbccddeeeeffgghhAABBCCDD ,,++**))PPOONNMMeeddccbbJJIIHHGGggffeeddbbccddeeMMNNOOPPffgghhiiiijjkkllEEFFGGHH!!""##$$((''&&%%LLKKJJIIaa``__^^FFEEDDCCccbbaa``ffgghhiiQQRRSSTTjjkkqqrrmmnnooppIIJJKKLL%%&&''(($$##""!!HHGGFFEE]]\\[[ZZBBAA@@??__^^]]\\jjkkllmm !!UUVVWWXXssttuuvvqqrrssttMMNNOOPP))**++,, DDCCBBAAYYXXWWVV>>==<<;;[[ZZYYXX~~}}||nnooppqq""##$$%%YYZZ[[\\wwxxyyzzuuvvwwxxQQRRSSTT--..//00 - - @@??>>==UUOONNMM::998765WWVVUUTT{{zzyyxxrrssttuu&&''(())]]^^__``{{||}}~~yyzz{{||UUVVWWXX11223344 <<;;::99LLKKJJII43322110SSRRQQPPwwvvuuttvvwwxxyy**++,,--aabbccdd}}~~YYZZ[[\\5566778888776655HHGGFFEE0//..--,OONNMMLLssrrqqppzz{{||}}..//0011eeffgghh]]^^__``99::;;<< 44332211DDCCBBAA,++**))(KKJJIIHHoonnmmll~~22334455iijjkkllaabbccdd==>>??@@ - - 00//..--@@??>>==(''&&%%$GGFFEEDDkkjjiihh66778899mmnnooppeeffgghhAABBCCDD ,,++**))<<;;::99$##""!! CCBBAA@@ggffeedd::;;<<==qqrrssttiijjkkllEEFFGGHH!!""##$$((''&&%%33221100 ??>>==<>??@@AAuuvvwwxxmmnnooppIIJJKKLL%%&&''(($$##""!!//..--,,;;::9988__^^]]\\BBCCDDEEyyzz{{||qqrrssttMMNNOOPP))**++,, ++**))((77665544[[ZZYYXX~~}}||FFGGHHII}}~~uuvvwwxxQQRRSSTT--..//00 - - ''&&%%$$33221100WWVVUUTT{{zzyyxxJJKKLLMMyyzz{{||UUVVWWXX11223344 ##""!! - -//..--,,SSRRQQPPwwvvuuttNNOOPPQQ}}~~YYZZ[[\\55667788 ++**))((OONNMMLLssrrqqppRRSSTTUU]]^^__``99::;;<< ''&&%%$$KKJJIIHHoonnmmllVVWWXXYYaabbccdd==>>??@@ - - ##""!! GGFFEEDDkkjjiihhZZ[[\\]]eeffgghhAABBCCDD   CCBBAA@@ggffeedd^^__``aaiijjkkllEEFFGGHH!!""##$$ - -  - - ??>>==<>==<<;;NNMMLLKK87654332UUTTSSRRyyxxwwvvttuuvvwwPPQQRRSSaabbccdd]]^^__``99::;;<< 44332211XXWWVVUUrrqqkkjjUTSRQPOOoonnmmll~~nnooppqq{{||}}~~WWXXYYZZ33445566::998877JJIIHHGG21100//.QQPPOONNuuttssrrxxyyzz{{TTUUVVWWeeffgghhaabbccdd==>>??@@ - - 00//..--TTSSRRQQiihhggffNNMMLLKKkkjjiihhrrssttuu[[\\]]^^778899::66554433FFEEDDCC.--,,++*MMLLKKJJqqppoonn||}}~~XXYYZZ[[iijjkkqqeeffgghhAABBCCDD ,,++**))PPOONNMMeeddccbbJJIIHHGGggffeeddvvwwxxyy__``aabb;;<<==>> 221100//BBAA@@??*))((''&IIHHGGFFmmllkkjj\\]]^^__rrssttuuiijjkkllEEFFGGHH!!""##$$((''&&%%LLKKJJIIaa``__^^FFEEDDCCccbbaa``zz{{||}}ccddeeff??@@AABB - - ..--,,++>>==<<;;&%%$$##"EEDDCCBBiihhggff``aabbccvvwwxxyymmnnooppIIJJKKLL%%&&''(($$##""!!HHGGFFEE]]\\[[ZZBBAA@@??__^^]]\\~~gghhiijjCCDDEEFF !!""**))((''::993322"!! AA@@??>>eeddccbbddeeffggzz{{||}}qqrrssttMMNNOOPP))**++,, DDCCBBAAYYXXWWVV>>==<<;;[[ZZYYXX~~}}||kkllmmnnGGHHIIJJ##$$%%&&&&%%$$##1100//..==<<;;::aa``__^^hhiijjkk~~uuvvwwxxQQRRSSTT--..//00 - - @@??>>==UUOONNMM::998765WWVVUUTT{{zzyyxxooppqqrrKKLLMMNN''(())**""!! --,,++**99887766]]\\[[ZZ~~llmmnnooyyzz{{||UUVVWWXX11223344 <<;;::99LLKKJJII43322110SSRRQQPPwwvvuuttssttuuvvOOPPQQRR++,,--.. - -))((''&&55443322YYXXWWVV}}||{{zzppqqrrss}}~~YYZZ[[\\5566778888776655HHGGFFEE0//..--,OONNMMLLssrrqqpp~~}}||wwxxyyzzSSTTUUVV//001122 %%$$##"" 1100//..UUTTSSRRyyxxwwvvttuuvvww]]^^__``99::;;<< 44332211DDCCBBAA,++**))(KKJJIIHHoonnmmll{{zzyyxx{{||}}~~WWXXYYZZ33445566!!  - - --,,++**QQPPOONNuuttssrrxxyyzz{{aabbccdd==>>??@@ - - 00//..--@@??>>==(''&&%%$GGFFEEDDkkjjiihhwwvvuutt[[\\]]^^778899::))((''&&MMLLKKJJqqppoonn||}}~~eeffgghhAABBCCDD ,,++**))<<;;::99$##""!! CCBBAA@@ggffeeddssrrqqpp__``aabb;;<<==>> %%$$##""IIHHGGFFmmllkkjjiijjkkllEEFFGGHH!!""##$$((''&&%%33221100 ??>>==<>eeddccbbqqrrssttMMNNOOPP))**++,, ++**))((77665544[[ZZYYXX~~}}||ggffeeddkkllmmnnGGHHIIJJ##$$%%&& ==<<;;::aa``__^^uuvvwwxxQQRRSSTT--..//00 - - ''&&%%$$33221100WWVVUUTT{{zzyyxxccbbaa``ooppqqrrKKLLMMNN''(())**99887766]]\\[[ZZ~~yyzz{{||UUVVWWXX11223344 ##""!! - -//..--,,SSRRQQPPwwvvuutt__^^]]\\ssttuuvvOOPPQQRR++,,--.. - - - - 55443322YYXXWWVV}}||{{zz}}~~YYZZ[[\\55667788 ++**))((OONNMMLLssrrqqpp[[ZZYYXXwwxxyyzzSSTTUUVV//001122   - -1100//..UUTTSSRRyyxxwwvv]]^^__``99::;;<< ''&&%%$$KKJJIIHHoonnmmllWWVVUUTT~~}}||{{{{||}}~~WWXXYYZZ33445566 --,,++**QQPPOONNuuttssrraabbccdd==>>??@@ - - ##""!! GGFFEEDDkkjjiihhSSRRQQPPzzyyxxww[[\\]]^^778899:: !!""##))((''&&MMLLKKJJqqppoonneeffgghhAABBCCDD   CCBBAA@@ggffeedd~~}}||{{OONNMMLLvvuuttss__``aabb;;<<==>> !!$$%%&&''%%$$##""IIHHGGFFmmllkkjjiijjkkllEEFFGGHH!!""##$$ - -  - - ??>>==<>eeddccbbqqrrssttMMNNOOPP))**++,, - -77665544[[ZZYYXXrrqqkkjjCCBBAA@@hggffeedkkllmmnnGGHHIIJJ##$$%%&&**++,,--00112233 ==<<;;::aa``__^^uuvvwwxxQQRRSSTT--..//00 - -  33221100WWVVUUTTiihhggff??>>==<<~~dccbbaa`~~}}||{{ooppqqrrKKLLMMNN''(())**..//00114455667799887766]]\\[[ZZ~~~~}}yyzz{{||UUVVWWXX11223344  - - //..--,,SSRRQQPPeeddccbb;;::9988}}||{{zz`__^^]]\zzyyxxwwssttuuvvOOPPQQRR++,,--..223399::8899::;;55443322YYXXWWVV}}||{{zz||{{zzyy}}~~YYZZ[[\\55667788 !!++**))((OONNMMLLaa``__^^77665544yyxxwwvv\[[ZZYYXvvuuttsswwxxyyzzSSTTUUVV//001122;;<<==>><<==>>?? - -1100//..UUTTSSRRyyxxwwvvxxwwvvuu]]^^__``99::;;<<""##$$%%''&&%%$$KKJJIIHH]]\\[[ZZ33221100uuttssrrXWWVVUUTrrqqppoo{{||}}~~WWXXYYZZ33445566??@@AABB@@AABBCC --,,++**QQPPOONNuuttssrrttssrrqqaabbccdd==>>??@@ !!""##&&''(())##""!! GGFFEEDDYYXXWWVV//..--,,qqkkjjiiSRQPOONNnnmmllkk[[\\]]^^778899::CCDDEEFFDDEEFFGG !!""##))((''&&MMLLKKJJqqppoonnponmlkkjeeffgghhAABBCCDD $$%%&&''**++,,-- CCBBAA@@UUOONNMM++**))((hhggffeeMMLLKKJJjjiihhgg__``aabb;;<<==>>GGHHIIJJHHIIJJKK$$%%&&''%%$$##""IIHHGGFFmmllkkjjjiihhggfiijjkkllEEFFGGHH!!""##$$(())**++..//0011 - - ??>>==<>eeddccbb~~}}||baa``__^||{{zzyyqqrrssttMMNNOOPP))**++,,001122336677889977665544DDCCBBAA\\[[ZZYYAA@@??>>^^]]\\[[kkllmmnnGGHHIIJJXXYYZZ[[TTUUVVWW00112233 ==<<;;::aa``__^^{{zzyyxx^]]\\[[ZxxwwvvuuuuvvwwxxQQRRSSTT--..//0099::;;<<::;;<<== 33221100@@??>>==XXWWVVUU==<<;;::ZZYYXXWW~~}}||{{ooppqqrrKKLLMMNN\\]]^^__XXYYZZ[[4455667799887766]]\\[[ZZwwvvuuttZYYXXWWVttssrrqqyyzz{{||UUVVWWXX11223344==>>??@@>>??@@AA - - //..--,,<<;;::99OONNMMLL99876543VVUUTTSSzzyyxxwwssttuuvvOOPPQQRR``aabbcc\\]]^^__8899::;;55443322YYXXWWVVssrrqqkkVUUTSRQPppoonnmm}}~~YYZZ[[\\55667788AABBCCDDBBCCDDEE !!++**))((33221100KKJJIIHH3221100/RRQQPPOOvvuuttsswwxxyyzzSSTTUUVVddeeffgg``aabbcc<<==>>?? - -1100//..UUTTSSRRjjiihhggOONNMMLLllkkjjii]]^^__``99::;;<>??@@IIJJKKLLJJKKLLMM&&''(())##""!! ++**))(( - - CCBBAA@@+**))(('JJIIHHGGnnmmllkk[[\\]]^^qqrrsstthhiijjkkDDEEFFGG !!""##))((''&&MMLLKKJJbbaa``__GGFFEEDDddccbbaaeeffgghhAABBCCDDMMNNOOUUNNOOPPQQ**++,,-- ''&&%%$$ - - ??>>==<<'&&%%$$#FFEEDDCCjjiihhgg__``aabbuuvvwwxxllmmnnooHHIIJJKK$$%%&&''%%$$##""IIHHGGFF^^]]\\[[CCBBAA@@``__^^]]iijjkkllEEFFGGHHVVWWXXYYRRSSTTUU..//0011 - - ##""!! ;;::9933#""!! BBAA@@??ffeeddccccddeeffyyzz{{||ppqqrrssLLMMNNOO(())**++!! EEDDCCBBZZYYXXWW??>>==<<\\[[ZZYY~~}}mmnnooppIIJJKKLLZZ[[\\]]VVWWXXYY22334455221100//>>==<<;;bbaa``__gghhiijj}}~~ttuuvvwwPPQQRRSS,,--..// - - AA@@??>>VVUUOONN;;::9987XXWWVVUU||{{zzyyqqrrssttMMNNOOPP^^__``aaZZ[[\\]]66778899..--,,++::998877^^]]\\[[kkllmmnnxxyyzz{{TTUUVVWW00112233 ==<<;;::MMLLKKJJ65433221TTSSRRQQxxwwvvuuuuvvwwxxQQRRSSTTbbccddee^^__``aa::;;<<== **))((''66554433ZZYYXXWW~~}}||{{ooppqqrr||}}~~XXYYZZ[[4455667799887766IIHHGGFF100//..-PPOONNMMttssrrqqyyzz{{||UUVVWWXXffgghhiibbccddee>>??@@AA - -   !!&&%%$$## 221100//VVUUTTSSzzyyxxwwssttuuvv\\]]^^__8899::;;55443322EEDDCCBB-,,++**)LLKKJJIIppoonnmm}}~~YYZZ[[\\jjkkqqrrffgghhiiBBCCDDEE !! - - - -""##$$%%""!!  - - ..--,,++RRQQPPOOvvuuttsswwxxyyzz``aabbcc<<==>>?? - -1100//..AA@@??>>)((''&&%HHGGFFEEllkkjjii]]^^__``ssttuuvvjjkkllmmFFGGHHII""##$$%% &&''(())**))((''NNMMLLKKrrqqppoo{{||}}~~ddeeffgg@@AABBCC --,,++**==<<;;::%$$##""!DDCCBBAAhhggffeeaabbccddwwxxyyzznnooppqqJJKKLLMM&&''(())**++,,--&&%%$$##JJIIHHGGnnmmllkkhhiijjkkDDEEFFGG !!""##))((''&&99332211! @@??>>==ddccbbaaeeffgghh{{||}}~~rrssttuuNNOOPPQQ**++,,-- ..//0011""!! FFEEDDCCjjiihhggllmmnnooHHIIJJKK$$%%&&''%%$$##""00//..--<<;;::99``__^^]]iijjkkllvvwwxxyyRRSSTTUU..//0011 - - 22334455 - - - -BBAA@@??ffeeddccppqqrrssLLMMNNOO(())**++!! ,,++**))88776655\\[[ZZYY~~}}mmnnooppzz{{||}}VVWWXXYY22334455 !!""##66778899  >>==<<;;bbaa``__ttuuvvwwPPQQRRSS,,--..// - - ((''&&%%44332211XXWWVVUU||{{zzyyqqrrsstt~~ZZ[[\\]]66778899$$%%&&''::;;<<==::998877^^]]\\[[xxyyzz{{TTUUVVWW00112233 $$##""!! 00//..--TTSSRRQQxxwwvvuuuuvvwwxx^^__``aa::;;<<==(())**++>>??@@AA - - 66554433ZZYYXXWW~~}}||{{||}}~~XXYYZZ[[44556677  - - ,,++**))PPOONNMMttssrrqqyyzz{{||bbccddee>>??@@AA,,--..//BBCCDDEE  221100//VVUUTTSSzzyyxxww\\]]^^__8899::;;((''&&%%LLKKJJIIppoonnmm}}~~ffgghhiiBBCCDDEE !!00112233FFGGHHII - - ..--,,++RRQQPPOOvvuuttss``aabbcc<<==>>?? - -$$##""!!HHGGFFEEllkkjjiijjkkllmmFFGGHHII""##$$%%99::;;<>??@@NNOOPPQQ ##$$%%&&&&%%$$##JJIIHHGGnnmmllkkhhiijjkkDDEEFFGG !!""## - -  - - @@??>>==ddccbbaarrssttuuNNOOPPQQ**++,,--AABBCCDDRRSSTTUU!!""##$$''(())**""!! FFEEDDCCjjiihhggllmmnnooHHIIJJKK$$%%&&'' <<;;::99``__^^]]vvwwxxyyRRSSTTUU..//0011EEFFGGHHVVWWXXYY%%&&''((++,,--.. - -BBAA@@??ffeeddccppqqrrssLLMMNNOO(())**++ 88776655\\[[ZZYY~~}}zz{{||}}VVWWXXYY22334455IIJJKKLLZZ[[\\]]))**++,,//001122 >>==<<;;bbaa``__ttuuvvwwPPQQRRSS,,--..// - - - -  44332211XXWWVVUU||{{zzyy~~ZZ[[\\]]66778899MMNNOOUU^^__``aa--..//0033445566::998877^^]]\\[[~~xxyyzz{{TTUUVVWW00112233  - - 00//..--TTSSRRQQxxwwvvuu^^__``aa::;;<<==VVWWXXYYbbccddee11223399778899::66554433ZZYYXXWW~~}}||{{}}||{{zz||}}~~XXYYZZ[[44556677 ,,++**))PPOONNMMttssrrqqbbccddee>>??@@AAZZ[[\\]]ffgghhii::;;<<==;;<<==>> 221100//VVUUTTSSzzyyxxwwyyxxwwvv\\]]^^__8899::;;!!""##$$((''&&%%LLKKJJIIppoonnmmffgghhiiBBCCDDEE^^__``aajjkkllmm>>??@@AA??@@AABB - - ..--,,++RRQQPPOOvvuuttssuuttssrr``aabbcc<<==>>?? !!""%%&&''(($$##""!!HHGGFFEEllkkjjiijjkkllmmFFGGHHIIbbccddeennooppqqBBCCDDEECCDDEEFF !!""**))((''NNMMLLKKrrqqppooqqponmlkddeeffgg@@AABBCC##$$%%&&))**++,, DDCCBBAAhhggffeennooppqqJJKKLLMMffgghhiirrssttuuFFGGHHIIGGHHIIJJ##$$%%&&&&%%$$##JJIIHHGGnnmmllkkkjjiihhghhiijjkkDDEEFFGG !!""##''(())**--..//00 - - @@??>>==ddccbbaarrssttuuNNOOPPQQjjkkqqrrvvwwxxyyJJKKLLMMKKLLMMNN''(())**""!! FFEEDDCCjjiihhgggffeeddc~~llmmnnooHHIIJJKK$$%%&&''++,,--..11223344 <<;;::99``__^^]]vvwwxxyyRRSSTTUUssttuuvvzz{{||}}NNOOUUVVOOPPQQRR++,,--.. - -BBAA@@??ffeeddcc~~}}cbbaa``_}}||{{zzppqqrrssLLMMNNOO(())**++//0011225566778888776655\\[[ZZYY~~}}~~}}||zz{{||}}VVWWXXYYwwxxyyzz~~WWXXYYZZSSTTUUVV//001122 >>==<<;;bbaa``__||{{zzyy_^^]]\\[yyxxwwvvttuuvvwwPPQQRRSS,,--..//3399::;;99::;;<< 44332211XXWWVVUU||{{zzyy{{zzyyxx~~ZZ[[\\]]{{||}}~~[[\\]]^^WWXXYYZZ33445566::998877^^]]\\[[xxwwvvuu[ZZYYXXWuuttssrrxxyyzz{{TTUUVVWW00112233<<==>>??==>>??@@ - - 00//..--TTSSRRQQxxwwvvuuwwvvuutt^^__``aa__``aabb[[\\]]^^778899::66554433ZZYYXXWWttssrrqqWVVUUTSRqqppoonn||}}~~XXYYZZ[[44556677@@AABBCCAABBCCDD ,,++**))PPOONNMMttssrrqqssrrqqpobbccddeeccddeeff__``aabb;;<<==>> 221100//VVUUTTSSkkjjiihhQPOONNMMmmllkkjj\\]]^^__8899::;;DDEEFFGGEEFFGGHH!!""##$$((''&&%%LLKKJJIIppoonnmmnmlkkjjiffgghhiigghhiijjccddeeff??@@AABB - - ..--,,++RRQQPPOOggffeeddLLKKJJIIiihhggff``aabbcc<<==>>??HHIIJJKKIIJJKKLL%%&&''(($$##""!!HHGGFFEEllkkjjiiihhggffejjkkllmmkkqqrrssgghhiijjCCDDEEFF !!""**))((''NNMMLLKKccbbaa``HHGGFFEEeeddccbbddeeffgg@@AABBCCLLMMNNOOMMNNOOPP))**++,, DDCCBBAAhhggffeeeddccbba~~}}||nnooppqqttuuvvwwkkllmmnnGGHHIIJJ##$$%%&&&&%%$$##JJIIHHGG__^^]]\\DDCCBBAAaa``__^^hhiijjkkDDEEFFGGUUVVWWXXQQRRSSTT--..//00 - - @@??>>==ddccbbaa~~}}||{{a``__^^]{{zzyyxxrrssttuuxxyyzz{{ooppqqrrKKLLMMNN''(())**""!! FFEEDDCC[[ZZYYXX@@??>>==]]\\[[ZZ~~llmmnnooHHIIJJKKYYZZ[[\\UUVVWWXX11223344 <<;;::99``__^^]]zzyyxxww]\\[[ZZYwwvvuuttvvwwxxyyfpvp˂rbے`f~HXQJ`ےvpftlJXQJ`ےnvpXQrbtJ`ےdQZ|˂pZXv`fdQZ|nXv`XQJ`ےJXQrfpvbHAZH~ftArdbHAZfHfl|ZbHAZpdrtAJHAbے~HfdrtAJf~HbHAZpZAbnXv`p˂r`vXn|ZdQbp˂r`vXndQbt˂rXQltb`JXQrpvnltbfpvp˂r`JXQrf~HXQJ`ےvpftlJXQJ`ےvpflJtArJ`ےdQZ|˂pZXv`fdQZ|nXv`XQJ`ے˂pZfpvbHAZH~ftArdbHAZH~fd|ZbHAZpdtAJlHAbے~HfdrtAJf~HJltHAbےnXv`p˂r`vXn|ZdQbp˂r`vXndQtArd˂rXQtbn`JXQrpvnltbfpvdrtAJ`JXQrf~HXQJ`ےvpftlJXQJ`ےvpf|ZdQJ`ےvpf˂pZXv`fdQZ|nXv`ltb˂pZfpvJltH~ftArdbHAZH~fbtlbHAZpHf`HAbے~HfdrtAJf~HdQZ|HAbnXv`bdQZ|`vXn|ZdQbp˂r`vXnJtArd˂rXQvXn`JXQrpvnltbfpvdrtAJJQr˂pf~HdrtAvpftlJXQJ`ےvpf|ZdQJ`ےvpfH˂pZXv`fdQZ|nXv`ltbZHAbfpvJltH~ftArdbHAZH~fbtlbHAZp~f`HAbے~HfdrtAJ˂pZf~HdQZ|lے`JXnXv`bdQZ|`vXn|ZdQbp˂r`vXn|ZdQb˂rXQvXn`JXQrpvnltbHAbےfpvtbdQQr˂pf~HdrtAvpftlJXQJ`ےvpftlJJ`ےvpfH˂pZXv`fdQZ|`JXQrnXv`Z|dZHAbfpvJltH~ftArdbHAZH~ftArdbHAZp~f`HAے`~HfdrtAJ˂pZf~HrtAJlے`JXnXv`bdQZ|`vXn|ZdQbp˂r`vXn|ZdQb˂rXQvXnJXQrbpvnltbHAbےfpvtbdQQrZHAf~HdrtAvpftlJXQJ`ےvpftlJJ`ےvpfHtlJXv`fdQZ|`JXQrnXv`Z|dbے`fpvJltے`JXQtArdbHAZH~ftArdtbHAZp~f`tAd|~HfdrtAJ˂pZf~HrtAdQZJXQrnXv`bdQZ|r˂p|ZdQbp˂r`vXnlJtA˂rXQvXnZdQbtpvnltbHAbےfpv|dr˂pZHAf~HdrtAZHAbtlJXQJ`ےvpfrd|J`ےvpfHlJtAXv`fdQZ|`JXQrnXv`tAJlbے`fpvJltے`JXQtArdbHAZH~fZdQbtbHAZp~f`rd|~HfdrtAJ˂pZf~HtbdQZJXQrnXv`bdQZ|r˂p|ZdQbp˂r`vXnlJtA˂rXQvXnZdQbtpvnltbHAbےfpv|dr˂pZAbf~HdrtAZHAbtlJXQJ`ےvpfrd|J`ےvpfHlJtAXv`fdQZ|`JXQrnXv`tAJl璒`JXQfpvJltے`JXQtArdbHAZH~fZdQtArbHAZp~f`rd|HfpdrtAJ˂pZf~HtdrtAr˂pnXv`bdQZ|r˂p|ZdQbp˂r`vXnd|Z˂rXQvXnZdQbtvnrltbHAbےfpvJltZHAbf~HdrtAZHAbtlJXQJ`ےvpfdQbtJ`ےvpfHlJtAXQJ`ےdQZ|`JXQrnXv`bdQZ|`JXQfpvJltے`JXQfpvbHAZH~flJtArbHAZp~f`rd|HAZpdrtAJ˂pZf~HdrtAr˂pnXv`bdQZ|r˂pnXv`p˂r`vXnd|Z˂rXQvXnZdQbt˂rXQltbHAbےfpvJltZHAbf~HdrtAZHAbf~HXQJ`ےvpfdQbtJ`ےvpfHlJtAJ`ےdQZ|`JXQrnXv`bdQZ|JQr˂fpvJltے`JXQfpvbHAZH~fl|ZdQbHAZp~f`rd|bHAZpdrtAJ˂pZf~HltbpZHAbnXv`bdQZ|r˂pnXv`p˂r`vXnbtl˂rXQvXnZdQbt˂rXQltbHAbےfpvdQZ|ے`Jf~HdrtAZHAbf~HXQJ`ےvpfJtArdJ`ےvpfHlJtAJ`ےdQZ|`JXQrnXv`drtAJXQr˂fpvJltے`JXQfpvbHAZH~f|ZdQbHAZp~f`rd|bHAZpdtAJl˂pZf~HltbpZHAbnXv`bdQZ|r˂pnXv`p˂r`vXnbtl˂rXQvXnZdQbt˂rXQtbnHAbےfpvdQZ|JAdf~HdrtAZHAbf~HXQJ`ےvpfJtArdJ`ےvpfHlJtAJ`ےvpf`JXQrnXv`drtAdQ|ZdQbfpvJltے`JXQfpvJltH~ftlJbHAZp~f`rd|bHAZpHf`˂pZf~HZ|dtlJnXv`bdQZ|r˂pnXv`bdQZ|`vXnfpv˂rXQvXnZdQbt˂rXQvXnHAbےfpvrtAJltArdf~HdrtAZHAbf~HdrtAvpfnvfJ`ےvpfHlJtAJ`ےvpfH`JXQrnXv`tbdQ|ZdQbfpvJltے`JXQfpvJltH~f~HfpbHAZp~f`rd|bHAZp~f`˂pZf~HZ|`vtlJnXv`bdQZ|r˂pnXv`bdQZ|`vXnvnX˂rXQvXnZdQbt˂rXQvXnHAbےfpvXnvtArdfHfdrtAZHAbf~HdrtAvpfv`fJ`ےJvpfHlJtAJ`ےvpfH`JXQrnXv`pfH~|ZdQbpvnJltے`JXQfpvJltH~f~Hfpltb~f`rd|bHAZp~f`˂pZp˂rf`vtlJrXQJ`bdQZ|r˂pnXv`bdQZ|`vXnvnXdQZ|vXnZdQbt˂rXQvXnHAbےXQJ`ےXH~tArdےHAZdrtAZHAbf~HdrtAvpfv`f~fdrtAJvpfHlJtAJ`ےvpfH`JXQrbHAZf`vX|ZdQbp˂rJltے`JXQfpvJltے`JXQpvnltb~f`rd|bHAZp~f`˂pZp˂rnvptlJXQJ`ےbdQZ|r˂pnXv`bdQZ|HAbےXv`fdQZ|vXnZdQbt˂rXQvXnHAbےXQJ`ےfH~tArdbHAZdrtAZHAbf~HdrtA`JXQr~HfdrtAJvpfHlJtAJ`ےvpfH`JXQrbHAZf`vX|ZdQbp˂rJltے`JXQfpvJlt˂pZpvnltb~f`rd|bHAZp~f`˂pZp˂rnvptlJXQJ`ےbdQZ|r˂pnXv`bdQZ|HAbےXv`fdQZ|vXnZdQbt˂rXQvXnHAbےXQJ`ے`vXntArdbHAZdtAJZHAbf~HdrtA`JXQr~HfdrtAJvpfےlJtAJ`ےvpfH`JXQrbHAZvpf|ZdQbp˂rltbے`JXQfpvJlt˂p`vnXv`ltb`JXQrrd|bHAZp~f`˂pZp˂rH~ftlJXQJ`ےnvpr˂pnXv`bdQZ|JXQrf~HdQZ|˂pZZdQbt˂rXQvXnHAے`XQJ`ے`vXntArdbHAZfHfZHAbf~HdrtA˂pZHAfpvdrtAJHAbےlJtAJ`ےvpfHJXQrbbHAZvpf|ZdQbp˂r`vXnے`JXQfpvJltbے`nXv`ltb`JXQrrd|bHAZp~f`tlJp˂rH~tlJXQJ`ےvpfr˂pnXv`bdQZ|JXQrf~HdQZ|˂pZZdQbt˂rXQvXntAd|XQJ`ےvpfHtArdbHAZH~fZHAbf~HdrtA˂pZHAfpvdrtAJHAbےlJtAJ`ےvpfHZdQbtbHAZ~f`|ZdQbp˂r`vXnے`JXQfpvJltb˂nvfltb`JXQrrd|bHAZp~f`lJtAp˂rvXntlJXQJ`ےvpfr˂pnXv`bdQZ|pZHAb~HfpdQZ|˂pZZdQbt˂rXQvXnrd|XQJ`ےvpfHtArdbHAZH~fZHAےf~HdrtAے`JvnXdrtAJHAbےlJfJ`ےvpfHZdQbtbHAZ~f`|ZdQbp˂r`vXn`JXQrfpvJltXQr˂v`fltb`JXQrpvnbHAZp~f`lJtAp˂rvXH~tlJXQJ`ےvpfbtlnXv`bdQZ|pZHAb~HfpdQZ|˂pZXv`f˂rXQvXnrd|XQJ`ےf`vtArdbHAZH~fJtAdf~HdrtAے`JvnXdrtAJHAbے~HfJ`ےvpfHZdQbtbHAZXnv|ZdQbp˂r`vXn|ZdQbfpvJltXQHAbv`f~ltb`JXQrpvnbHAZp~f`lJtAp˂rpfH~tlJXQJ`ےvpftlJnXv`bdQZ|ے`JXQfpvdQZ|˂pZXv`f˂rXQvXnrd|XQJ`ےf`vtArdbHAZH~ftArdf~HdrtAr˂pnXv`drtAJHAbے~HfJ`ےvpfHZdQbtbHAZXnv|ZdQbp˂r`vXn|ZdQbfpvJltZHAbf~Hltb`JXQrpvnbHAZp~f`lJtAp˂rp`vXtlJXQJ`ےvpftlJnXv`bdQZ|ے`JXQfpvdQZ|˂pZXv`f˂rXQvXnrd|XQJ`ےnvptArdbHAZH~ftArdfHfdrtAr˂pnXv`drtAJHAbے~HfJ`ےJvpfHZdQbtbHAZfH~|ZdQbp˂r`vXn|ZdQbpvnJlt`JXQrf~Hfltb`JXQrpvnltb~f`lJtAp˂rf`vXtlJXQJ`ےvpftlJrXQJ`bdQZ|˂pZvnXvdQZ|˂pZXv`fdQZ|vXnrd|XQJ`ےnvptArdbHAZH~ftArdےHAZdrtAHAbے`f~drtAJHAbے~HfdrtAJvpfHZdQbtbHAZfH~|ZdQbp˂r`vXn|ZdQbp˂rJlt`JXQrHfpvltb`JXQrpvnltb~f`lJtAp˂rvpftlJXQJ`ےvpftlJXQJ`ےbdQZ|˂pZnXvdQZ|˂pZXv`fdQZ|vXnrd|XQJ`ےے`JXQtArdbHAZH~ftArdbHAZdrtAHAb`ffpdrtAJHAbے~HfdrtAJvpfHZdQbtbHAZrZHA|ZdQbp˂r`vXn|ZdQbp˂rJlt˂pZHAvnrltb`JXQrpvnltb~f`lJtAp˂rbے`tlJXQJ`ےvpftlJXQJ`ےbdQZ|bے`XQJ`ےdQZ|˂pZXv`fdQZ|vXnrd|XQJ`ےJXQrfpvbHAZH~ftArdbHAZdtAJJXQrHAZpdrtAJHAbے~HfdrtAJvpfےZdQbtbHAZpZHAnXv`p˂r`vXn|ZdQbp˂rltb˂p`J˂rXQltb`JXQrpvnltb`JXQrlJtArd|ےbHAf`vd|ZHAZp˂f`vbے`~Hfpltdr˂pHfpvtAJl璐ے`JJtArdےbHAfH~|ZdQbbHAZH~ftArdf~HdrtAZHAbv`fAJltHAbے~HfJ`ےvpfHJAHfZdQbtZp˂XnvdQbt璀rXQJXnvJXQrvnXrtAJlZAb`nXvtbdQZXQr˂|ZdQZp˂f`vXtlJp˂r`vXn|ZdQbfpvJltے`JXQ~HXvbQZd`JXQrpvnbHAZp~f``vXnlJtArXQJ`pfH~lJtAr`ےbpfH~˂pZHAv`ftbdQJXQr`f~|drpZHAbbtlrXQJ`nvptArdXQJ`ےvpftlJnXv`bdQZ|r˂p`f~rtAJl˂pZXv`f˂rXQvXnvˍpfrd|p˂rf`vd|ZHAZp˂f`vbے`~HfpZ|dpZHAHfpvtAJl璐ے`JJtArdےbHAfH~|ZdQtAbHAZH~ftArdfHfdrtAZHAbHfpvtbdQHAbے~HfJ`ےJvpfHH~ㅐfZdQbtXQJ`ےXnvdQbt璀rXQJXnvJXQrvnXrtAJlbے`nXvtbdQZXQr˂|ZdQZp˂f`vXrd|p˂r`vXn|ZdQbpvnJltے`JXQnXvZ|d`JXQrpvnltb~f``vXnlJtAbHAZpfH~lJtAr`ےbpfH~˂pZHAv`ftbdQJXQr`f~|drpZHAbbtlrXQJ`nvpZdQbtXQJ`ےvpftlJrXQJ`bdQZ|r˂p`f~rtAJl˂pZXv`fdQZ|vXnvˍpfrd|p˂rf`vd|ZHAZp˂f`vے`J~HfpZ|l璂pZHAHfpvtAJl璐ے`JJfpvےbHAfH~lJtAbHAZH~ftArdےHAZdrtAZHAbHfpvtbdQHAbے~HfdrtAJvpfHH~ㅐfZdQbtXQJ`ےXnvdQbt璀rXQJXnvXQrbtvnXtbdQZbJQrnXvtbdQZXQr˂nXvZp˂f`vXrd|p˂r`vXn|ZdQbp˂rJltے`JXQ~HZ|rA`JXQrpvnltb~f``vXnlJtAbHAXQpfH~lJtAr`ےbpfH~lJtAv`f|dr˂pZ`f~|drpZHAb`f~rXQJ`nvpZdQbtXQJ`ےvpftlJXQJ`ےbdQZ|r˂pfpvJlt˂pZXv`fdQZ|vXnvˍpfrd|J`ےJf`vd|ZHAZp˂f`vd|Z~HfptAJlHAbےHfpvtAJl璐ے`JHfpvےbHAfH~l|ZbHAZH~ftArdbHAZdrtAZHAbnXv`bdQZ|HAbے~HfdrtAJvpfHH~ㅐfZdQbtltbQXnvdQbt璀rXQJXnvdQbtvnXtbdQZ`JXQrnXvtbdQZXQr˂nXvZp˂f`vXdQbtp˂r`vXn|ZdQbp˂rJltے`JXQf~HdrtA`JXQrpvnltb~f``vXnlJtAZdrtpfH~lJtAr`ےbpfH~lJtArv`f|dr˂pZA`f~|drpZHAb`f~rXQJ`nvplJtArXQJ`ےvpftlJXQJ`ےbdQZ|r˂pfpvJlt˂pZXv`fdQZ|vXnvˍpfrd|AJltf`vd|ZHAZp˂f`vd|Z~HfptAdQZ|`JXQHfpvtAJl璐ے`JHfpvےbHAfH~d|ZbHAZH~ftArdbHAZdtAJZHAbnXv`bdQZ|HAbے~HfdrtAJvpfZH~ㅐfZdQbtbdQZ|XnvdQbt璀rXQJXnvdQbtvnXdrtArbt璀nXvtbdQZXQr˂nXvZp˂f`vXdQbtp˂r`vXn|ZdQbp˂rltbے`JXQpvndrtAJ`JXQrpvnltbHAbے`vXnlJtAdrtpfے`lJtAr`ےbpfH~lJtArv`fJltlJtAd`f~|drpZHAb`f~rXQJ`nvplJtArXQJ`ےvpftlJXQJ`ےnvpr˂pXv`fbdQZ˂pZXv`fdQZ|`JXQrvˍpfrd|AJltJXQrd|ZHAZp˂f`vd|ZHfpvbdQZ||ZdQHfpvtAJl璐ے`JHfpvےJlfH~dtlbHAZH~ftArdbHAZfHfZHAb~Hf|drHAbے~HfdrtAJ˂pZH~ㅐfZdQbtbdQZ|˂pZHAdQbt璀rXQJXnvdQbt璀nrXQltbbtlnXvtbdQZXQr˂nXvtbdQZf`vXJfpvp˂r`vXn|ZdQbp˂r`vXnے`JXQpvntAJl`JXQrpvnltbHAbے`vXnlJfrAJlbے`lJtAr`ےbpfH~lJtArJ`ےnvpJtArd`f~|drpZHAb`f~|drnvpnvfXQJ`ےvpftlJXQJ`ےvpfr˂pXv`ftbdQZ˂pZXv`fdQZ|`JXQrvˍpfpvtbdQJXQrd|ZHAZp˂f`vd|ZHAZp˂`vXn|ZdQHfpvtAJl璐ے`JHfpvtAJlfH~~HfpbHAZH~ftArdbHAZH~fZHAb~HX|AJlHAbے~HfdrtAJ˂p`H~ㅐf~HfpZ|d˂pZHAdQbt璀rXQJXnvdQbt璀rXQJvpfbtlnXvtbdQZXQr˂nXvtbdQZf`vXvnXp˂r`vXn|ZdQbp˂r`vXnے`JXQv`ftbn`JXQrpvnltbJXQr`vXnvnXrtAJlbے`lJtAr`ےbpfH~lJtAr`ےbH~fJtArd`fH|drpZHAb`f~|drnvpv`fXQJ`ےvpftlJXQJ`ےvpfr˂p~Hfpvpf˂pZXv`fdQZ|˂pZHAvˍpfv`ftbdQJXQrd|ZHAZp˂f`vd|ZHAZp˂`vXH|ZdQfpvtAJl璐ے`JHfpvtAJlfH~~HfpJltH~ftArdbHAZH~fZHAےvnXHf`HAbے~HfdrtAJbے`H~ㅐf~HfpZ|d˂pZHAdQbt璀rXQJXnvdQbt璀rXQJ~f`btlnrXQJtbdQZXQr˂nXvtbdQZf`vXvnXbdQZ|`vXn|ZdQbp˂r`vXn`JXQrv`pvvXn`JXQrpvnltbJXQr`vXnvnXrtAJbے`lJfp`ےbpfH~lJtAr`ےbvXnJtArd`ےHA|drpZHAb`f~|drnvpv`f~drtAvpftlJXQJ`ےvpfbtlnrXQvpfH˂pZXv`fdQZ|˂pZHAvˍpfv`pvbdQZ|JXQrvnXHAZp˂f`vd|ZHAZp˂vpfH|ZdQZp˂tAJl璐ے`JHfpvtAJlfے`JfpvJltH~ftArdbHAZH~fJtAdJ`p˂~f`HAbے~HfdrtAJb˂H~ㅐfۀnXvdrtA˂pZHAv`frXQJXnvdQbt璀rXQJ~f`btlrXQJ`tbdQZXQr˂nXvtbdQZXQHAbnXv`bdQZ|`vXn|ZdQbp˂r`vXn|ZdQbrXQJvXn`JXQrpvnltbpZHAb`vXn`f~Jltbے`~Hfp`ےbpfH~lJtAr`ےbvXnJtArdےbHA|drpZHAb`f~|drے`JXQf~HdrtAvpftlJXQJ`ےvpftlJ`ےbvpfH˂pZXv`fdQZ|ے`JvˍpfHfpvbdQZ|JXQrvnXHAZp˂f`vd|ZHAZp˂vp`v|ZdQZp˂tAJl璐ے`JHfpvtAJlr˂pfpvJltH~ftArdbHAZH~ftArdHAZp˂~f`HAے`~HfdrtAJXQr˂H~ㅐfۀnXvdrtA˂pZHAv`frXQJXnvdQbt璀rXQJXnvbtlrXQJ`tbdQZXQr˂nXvtbdQZZHAbnXv`bdQZ|`vXn|ZdQbp˂r`vXn|ZdQbbHAvXnJXQrbpvnltbpZHAb`vXn`f~Jltbbے`~Hfp`ےbpfH~lJtAr`ےbpfH~JtArdےbHA|dtApZHAb`f~|drے`JXQf~HdrtAvpftlJXQJ`ےvpftlJZp˂vpfHtlJXv`fdQZ|ے`JvˍpfHXv`QZdrJXQrvnXHAZp˂f`vd|ZHAZp˂f`v|ZdQZp˂Jltے`JHfpvtAJlr˂pfvnXJltے`JXQtArdbHAZH~ftArdrXQJ`~f`tAd|~HfdrtAJXQHAbH~ㅐff~HtAJl˂pZHAv`frXQJXnvdQbt璀rXQJXnvbtlrXQJ`bnvXQr˂nXvtbdQZ`JXQrv`fbdQZ|r˂p|ZdQbp˂r`vXn|ZdQbےbHAvXnZdQbtpvnltbے`JXQ`vXnfpvtbdQZbے`~Hfp`ےJlpfH~lJtAr`ےbpfH~JtArdےbHApfHpZHAb`f~|dr˂pZ~HfpdrtAZHAbtlJXQJ`ےvpftlJZp˂vpfHlJtAXv`fdQZ|r˂pvˍpfnXv`|drJXQrvnXtbdQf`vd|ZHAZp˂vp|ZdQZp˂f`vXے`JHfpvtAJlHAbےvnXJltے`JXQtArdbHAZH~ftArdrXQJ`~f`rd|~HfdrtAJZHAbH~ㅐff~HtAJl˂pZHAv`fZ|dXnvdQbt璀rXQJfH~btlrXQJ`nvpXQr˂nXvtbdQZ`JXQrv`fbdQZ|r˂p|ZdQbp˂r`vXn|ZdQbp˂rvXnZdQbtpvnltbے`JXQ`vXnfpvtbdQZbے`~HfprtAJlpfH~lJtAr`ےbf`vXJtArdےbHAfH~pZHAb`f~|dr˂pZ~HfpdrtAZHAbtlJXQJ`ےvpftlJXQJ`ےvpfHlJtAXv`fdQZ|r˂pvˍpf~Hf|rAJlJXQrvnXtbdQf`vd|ZHAZp˂nvp|ZdQZp˂f`vXے`JHfpvtAJlHAbvnvfJltے`JXQtArdbHAZH~ftArdbHAZ~f`rd|HfpdrtAJ`JXQrH~ㅐfpvntbd˂pZHAv`fZ|dXnvdQbt璀rXQJfH~btlrXQJ`nvpXQr˂nXvtbdQZ˂pZHA~HfbdQZ|r˂p|ZdQbp˂r`vXn|ZdQbp˂rvXnZdQbtvnrltb˂pZ`vXnXv`fQZ|dbے`~HfprtAJlpfH~lJtAr`ےbf`vXJtArdےbHAfH~pZHA`f~|drbے`pvndrtAZHAbtlJXQJ`ےvpftlJXQJ`ےvpfHlJtAXQJ`ےdQZ|HAbےvˍp|~HfrtAJlJXQrvnXtbdQf`vd|ZHAZp˂H~f|ZdQZp˂f`vXے`JXQHfpvtAJlJXQrXv`fJltے`JXQfpvbHAZH~ftArdbHAXQ~f`rd|HAZpdrtAJ`JXQrdrQtpvntbd˂pZHAv`fZ|dXnvdQbt璀rXQJ`vXnbtlrXQJ`nvprbt璀nXvtbdQZ˂pZHA~HfbdQZ|r˂pnXv`p˂r`vXn|ZdQbJ`ےvXnZdQbt˂rXQltb˂pZJltXv`pQZ|dbے`~HfprtAJlpfے`lJtAr`ےbvpfJtArdےbHAfH~lJtAd`f~|drbے`pvndrtAZHAbf~HXQJ`ےvpftlJbHAZpvpfHlJtAJ`ےdQZ|HAbbAdZ|vnXrtAJJXQrvnXtbdQJXQrd|ZHAZp˂H~f|ZdQZp˂f`vX|ZdQHfpvtAJlJXQHAbXv`fJltے`JXQfpvbHAZH~ftArd˂rXQ~f`rd|bHAZpdrtAJ˂pZHAdrQtv`fbdQZ|˂pZHAv`fZ|d˂pZHAdQbt璀rXQJ`vXnbtlrXQJ`nvpbtlnXvtbdQZے`J~fpvbdQZ|r˂pnXv`p˂r`vXn|ZdQbJ`ےvXnZdQbt˂rXQltbbے`Jlt~HfpdrtAbے`~HfprtAJlbے`lJtAr`ےbvp`JtArdےbHAfH~JtArd`f~|drXQr˂nXv`drtAZHAbf~HXQJ`ےvpftlJbHAZpvpfHlJtAJ`ےdQZ|JXQrbAdZ|vnXJltJXQrvnXtbdQJXQrd|ZHAZp˂vXn|ZdQZp˂f`vX|ZdQHfpvtAJlpZHAbf~HJltے`JXQfpvbHAZH~ftArd˂b~f`rd|bHAZpdtAJl˂p`ZdrQtv`fbdQZ|˂pZHAv`fZ|d˂pZHAdQbt璀rXQJvpfHbtlrXQJ`nvpbtlnXvtbdQZے`JfpvbdQZ|r˂pnXv`p˂r`vXn|ZdQbHAZp˂vXnZdQbt˂rXQtbnQXb㉀Jlt~HXvAJlbے`~HfprtAJlbے`lJtAr`ےb~f`JtArdےbHAfH~JtArd`fH|drXQr˂nXv`drtAZHAbf~HXQJ`ےvpftlJrXQJvpfHlJtAJ`ےvpfpJAHrbAdZ|`f~tbnJXQrvnXtbdQJXQrd|ZHAZp˂vXn|ZdQZp˂f`vX|ZdQfpvtAJlp`JXQf~HJltے`JXQfpvJltH~ftArd`ےb~f`rd|bHAZpHf`ˁ`ZdrQtHfpvvpfH˂pZHAv`fZ|d˂pZHAdQbt璀rXQJvpfHbtlrXQJ`nvpbtlnrXQJtbdQZr˂pfvnXbdQZ|r˂pnXv`bdQZ|`vXn|ZdQbHAZp˂vXnZdQbt˂rXQvXnQXAHrJltnXvf`vbے`~HfprtAJlbے`lJfp`ےb~vJtArdےbHAfH~JtArd`ےHA|drZHAbv`fdrtAZHAbf~HdrtAvpftlJrXQJvpfHlJtAJ`ےvpfHˁ`ZQXbAdZ|`pvXnvJXQrvnXtbdQJXQrvnXHAZp˂pfے`|ZdQZp˂f`vX|ZdQZp˂tAJlے`JXQ~HfpJltے`JXQfpvJltH~ftArd`p˂~f`rd|bHAZp~f`b㉀ۑpdrQtnrXQJpfH~˂pZHAv`fZ|d˂pZHAv`frXQJJXQrbtlrXQJ`nvpbtlrXQJ`tbdQZr˂pvnXbdQZ|r˂pnXv`bdQZ|`vXn|ZdQbrXQJ`vXnZdQbt˂rXQvXnJAHrJlt`p˂f`vbے`~HfprtAJlbے`~Hfp`ےbZHAbJtArdےbHAfH~JtArdےbHA|drZHAbv`ffdrtAZHAbf~HdrtAvpftlJےbHAvpfHlJtAJ`ےvpfHˁ`ZQXbAdZ|rXQJ`XnvJXQrvnXtbdQJXQrvnXHAZp˂`JXQ|ZdQZp˂f`vX|ZdQZp˂tAJl璀˂pZpvnJltے`JXQfpvJltH~ftArdZp˂~f`rd|bHAZp~f`b㉀ۑpdrQtےbHApfH~˂pZHAv`fZ|d˂pZHAv`frXQJr˂pbtlrXQJ`nvpbtlrXQJ`tbdQZHAbےrXQJ`bdQZ|r˂pnXv`bdQZ|`vXn|ZdQbrXQJ`vXnZdQbt˂rXQvXn`ZQXbJltZp˂f`vے`J~HfprtAJlbے`~Hfp`ےbZHAbJfpvےbHAfH~JtArdےbHA|dtA`JXQrےHAZdrtAZHAbf~HdrtAvpftlJےbHAvpfHlJtAJ`ےvpfHۑpJbAdZ|bHAZXnvXQrbtvnXtbdQJXQrvnXHAZp˂`JXQnXvZp˂f`vX|ZdQZp˂Jlt˂p`p˂rJltے`JXQfpvJltے`JXQtArdXQJ`ے~f`rd|bHAZp~f`AHr󙐂˂drQtp˂rpfH~lJtAv`fZ|d˂pZHAv`frXQJr˂pZ`f~rXQJ`nvpbtlrXQJ`bnvJXQrbXQJ`ےbdQZ|r˂pnXv`bdQZ|r˂p|ZdQbJltvXnZdQbt˂rXQvXn`ZQXbJltXQJ`ےf`vd|Z~HfprtAJlbے`~Hfp`ےJlAb`JHfpvےbHAfH~JtArdےbHApfHtl|bHAZdrtAZHAbf~HdrtAZHAbtlJbQZdvpfHlJtAJ`ےvpfHۑpJbAdZ|bHAZXnvdQbtvnXtbdQJXQrvnXtdrXQr˂nXvZp˂f`vX|ZdQZp˂f`vXZdQbtp˂rJltے`JXQfpvJltے`JXQtArdrtAJl~f`rd|bHAZp~f`AHr󙐉drQtp˂rpfH~lJtArv`fZ|d˂pZHAv`ftAJlpZHAb`f~rXQJ`nvpbtlrXQJ`nvplJtAXQJ`ےbdQZ|r˂pnXv`bdQZ|r˂p|ZdQbtbdQvXnZdQbt˂rXQvXnۑpJAHJltXQJ`pf`vd|Z~HfprtAJlbے`~HfptbdQZے`JHfpvےbHAfH~JtArdےbHAfH~rd|bHAZdtAJZHAbf~HdrtAZHAbtlJZ|dvpfےlJtAJ`ےvpfHr󙐂ˁ`bAdZ|˂rXQXnvdQbtvnXtbdQJXQrvnX|drXQr˂nXvZp˂f`vX|ZdQZp˂f`vXZdQtArp˂rltbے`JXQfpvJltے`JXQtArdrtAJl`JXQrrd|bHAZp~f`ZQXb㉀drQtJ`ےpfH~lJtArv`fZ|d˂pZHAv`ftAJlpZHAb`f~rXQJ`nvpbtlrXQJ`nvpd|ZXQJ`ےnvpr˂pnXv`bdQZ|r˂p|ZdQbtbdQ瀉˂pZZdQbt˂rXQvXnۑpJAHJltbHAZpf`vd|ZHfpvrtAJlbے`~HfptbdQZJQrHfpvےJlfH~JtArdےbHAfH~dQbt璐bHAZfHfZHAbf~HdrtAZHAbtlJZ|rAJHAbےlJtAJ`ےvpfHr󙐂ˁ`bAdZ|˂rXQXnvdQbt璀nrXQtbdQJXQrvnX|lt˂pZHnXvtbdQZf`vX|ZdQZp˂f`vXlJtArp˂r`vXnے`JXQfpvJltے`JXQfpvltb`JXQrrd|bHAZp~f`ZQXAHrdrQtJ`ےpfH~lJtArJ`ےZ|d˂pZHAv`fbdQZ|Abے``f~|drnvpbtlrXQJ`nvpd|ZXQJ`ےvpfr˂pnXv`bdQZ|r˂p~HfdQZ|˂pZZdQbt˂rXQvXnˁ`ZJltbHAXQJf`vd|ZHAZp˂rtAJlbے`~HfpdrtAJXQrHfpvtAJlfH~JtArdےbHAfH~dQbt璐bHAZH~fZHAbf~HdrtAZHAbpvndrtAJHAbےlJtAJ`ےvpfHQXb㉀bAdZ|`ےbXnvdQbt璀rXQJtbdQJXQrvnXJlt˂pZHnXvtbdQZf`vX|ZdQZp˂f`vXl|ZdQp˂r`vXnے`JXQfpvJltے`JXQXv`fltb`JXQrrd|bHAZp~f`pJAHrdrQtHAZp˂pfH~lJtAr`ےbZ|d˂pZHAv`fbdQZ|Abے``f~|drnvpbtlrXQJ`nvpbtlXQJ`ےvpfr˂pnXv`bdQZ|r˂p~HfdQZ|˂pZZdQbt˂rXQvXnˁ`ZJltrXQJf`vd|ZHAZp˂rtAJlbے`~HfpdrtAJXQrHfpvtAJlfH~JtArdےbHAfH~JtArdbHAZH~fZHAےf~HdrtAZHAbpvndrtAJHAbےlJfJ`ےvpfHQXb㉀bAdZ|`ےbXnvdQbt璀rXQJtbdQJXQrvnXdQZ|ZHAbnXvtbdQZf`vX|ZdQZp˂f`vX|ZdQp˂r`vXn`JXQrfpvJltے`JXQXv`pbdQZ|`JXQrpvnbHAZp~f`p`ZQXdrQtHAZp˂pfH~lJtAr`ےbZ|d˂pZHAv`fdrtAJے`JXQ`f~|drnvpbtlrXQJ`nvpbtlXQJ`ےvpfbtlnXv`bdQZ|r˂pvnXdrt˂pZXv`f˂rXQvXnb㉀ۑpJltbHAf`vd|ZHAZp˂tAJlbے`~Hfpltbr˂pHfpvtAJlfے`JJtArdےbHAfH~JtArdbHAZH~fJtAdf~HdrtAZHAbv`fAJltHAbے~HfJ`ےvpfHJAHrbAdZ|Zp˂XnvdQbt璀rXQJtbnJXQrvnXdQZ|ZHAbnXvtbdQZXQr˂|ZdQZp˂f`vXtlJp˂r`vXn|ZdQbfpvJltے`JXQ~HfpbdQZ|`JXQrpvnbHAZp~f`ˁ`ZQXdrQtrXQJ`pfH~lJtAr`ےbvpfH˂pZHAv`fdrtAJے`JXQ`f~|drpZHAbbtlrXQJ`nvptArdXQJ`ےvpftlJnXv`bdQZ|r˂pvnXdrt˂pZXv`f˂rXQvXnb㉀ۑpJlt----------................................................................... \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv39_3.dat b/mpdf/qrcode/data/qrv39_3.dat deleted file mode 100644 index 792dee0..0000000 --- a/mpdf/qrcode/data/qrv39_3.dat +++ /dev/null @@ -1,345 +0,0 @@ -~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdc~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdc~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdc~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijijihghgfefedcdcdcdc~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqponmnmnmnmjijijijifefefefedcdcdcdc~}~}~}~}zyzyzyzyxwxwxwvutstststspopopoponmnmnmnmjijijijifefefefedcdcdcdc~}~}~}|{zyzyzyzyvuvuvuvutstststspopopoponmnmnmnmjijijijifefefefedcdcdcdc|{|{|{|{zyzyzyzyvuvuvuvutstststspopopoponmnmnmnmjijijijifefefefedcdcdcdc|{|{|{|{zyzyzyzyvuvuvuvutstststspopopoponmnmnmlkjijijijifefefefedcdcdcdc|{|{|{|{zyzyzyzyvuvuvuvutstststspopopopolklklkkkjijijijifefefefedcdcdcdc|{|{|{|{zyzyzyzyvuvuvuvutstststspopopopokkklklkljijijijifefefefedcdcdcdc|{|{|{|{zyzyzyzyvuvuvuvutstststspopopopoklklklkljijijijifefefefedcdcdcdc|{|{|{|{zyzyzyzyvuvuvuvutstststspopopopoklklklkljijijijifefefefedcdcdcdc|{|{|{|{zyzyzyzyvuvuvuvutstststspopopopoklklklkljijijijifefefefedcdcdcdc|{|{|{|{zyzyzyzyvuvuvuvutstststspopopopoklklklkljijijijifefefefedcdcdcdc|{|{|{|{zyzyzyzyvuvuvuvutstststspopopopoklklklkljijijijifefefefedcdcdcdc|{|{|{|{zyzyzyzyvuvuvuvutstststspopopopokkkkkklkjijijijifefefefedcdcdcdc|{|{|{|{zyzyzyzyvuvuvuvutstststspopopopolklklklkjijijijifefefefedcdcdcdc|{|{|{|{zyzyzyzyvuvuvuvutstststspopopopolklklklkjijijijifefefefedcdcdcdc|{|{|{|{zyzyzyzyvuvuvuvutstststspopopopolklklklkjijijijifefefefedcdcdcdc|{|{|{|{zyzyzyzyvuvuvuvutstststspopopopolklklklkjijijijifefefefedcdcdcdc|{|{|{|{zyzyzyzyvuvuvuvutstststspopopopolklklklkjijijijifefefefedcdcdcdc|{|{|{|{zyzyzyzyvuvuvuvutstststspopopopolklkkkkkjijijijifefefefedcdcdcdc|{|{|{|{zyzyzyzyvuvuvuvutstststspopopopoklklklkljijijijifefefefedcdcdcdc|{|{|{|{zyzyzyzyvuvuvuvutstststspopopopoklklklkljijijijifefefefedcdcbaba|{|{|{|{zyzyzyzyvuvuvuvutstststspopopopoklklklkljijihghgfefefefebabababa|{|{|{|{zyzyzyzyvuvuvuvutststsrqpopopopoklklklklhghghghgfefefefebabababa|{|{|{|{zyzyzyxwvuvuvuvurqrqrqrqpopopopoklklklklhghghghgfefefefebabababa~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqpopopopoklklklkkhghghghgfefefefebabababa~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqpopopopokkkklklkhghghghgfefefefebabababa~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqpopopopolklklklkhghghghgfefefefebabababa~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqpopopopolklklklkhghghghgfefefefebabababa~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqpopopopolklklklkhghghghgfefefefebabababa~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqpopopopolklklklkhghghghgfefefefebabababa~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqpopopopolklklklkhghghghgfefefefebabababa~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqpopopopolkkkkkklhghghghgfefefefebabababa~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqpopopopoklklklklhghghghgfefefefebabababa~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqpopopopoklklklklhghghghgfefefefebabababa~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqpopopopoklklklklhghghghgfefefefebabababa~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqponmnmnmklklklklhghghghgfefefefebabababa~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmklklklklhghghghgfefefefebabababa~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmklklkkkkhghghghgfefefefebabababa~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmkklklklkhghghghgfefefefebabababa~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmlklklklkhghghghgfefefefebabababababababa~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmlklklklkhghghghgfefefefebabababababababa~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmlklklklkhghghghgfefefefebabababababa`_`_~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmkkkklklkhghghghgfefedcdcbabababa`_`_`_`_~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmlklkjijihghghghgdcdcdcdcbabababa`_`_`_`_~}~}~}~}|{|{|{|{xwxwxwxwvuvuvutsrqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdcbabababa`_`_`_`_~}~}~}~}|{|{|{zyxwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdcbabababa`_`_`_`_~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdcbabababa`_`_`_`_~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdcbabababa`_`_`_`_~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdcbabababa`_`_`_`_~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdcbabababa`_`_`_`_~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdcbabababa`_`_`_`_~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdcbabababa`_`_`_`_~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdcbabababa`_`_`_`_~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdcbabababa`_`_`_`_~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdcbabababa`_`_`_`_~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdcbabababa`_`_`_`_~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdcbabababa`_`_`_`_~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdcbabababa`_`_`_`_~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdcbabababa`_`_`_`_~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdcbabababa`_`_`_`_~}~}~}~}zyzyzyzyxwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdcbabababa`_`_`_`_`_`_`_`_^]^]^]^]ZYZYZYZYXWXWVUVUTSTSTSTSOPOPOPOPLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:987878787434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!    `_`_`_`_^]^]\[\[ZYZYZYZYVUVUVUVUTSTSTSTSOPOPOPOPLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:987878787434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!    `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSOPOPOOOOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:987878787434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!    `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSOOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:987878787434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!    `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:987878787434343330/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!    `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:987878787333434340/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!    `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:987878787343434340/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!    `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:987878787343434340/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!    `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:987878765343434340/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!    `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSOOOOOPOPLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565343434340/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!    `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSOPOPOPOPLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565343434340/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!    - `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSOPOPOPOPLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565333333430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!    - - - - `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSOPOPOPOPLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!    - - - - `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQOPOPOPOPLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!    - - - - `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQOPOPOPOPLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#        - - - - `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQOPOOOOOOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565434333330/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#        - - - - `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565434343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        - - - - `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        - - - - `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=<;<;<;:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        - - - - `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQPOPOPOOOLKLKLKLKJIJIJIJIFEFEFEFEDCBABABA@?@?@?@?<;<;<;<;:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        - - - - `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQOOPOPOPOLKLKLKLKJIHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        - - - - `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQPONMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        - - - - `_`_`_`_\[\[\[\[ZYZYXWXWVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        - - - - `_`_^]^]\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        - - - - ^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        - - - - ^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        - - - - ^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        - - - - ^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        - - - - ^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        - - - - ^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        - - - - ^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        - - - - ^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        - - - - ^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#       - - - - ^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#     - - - - ^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#     - - - - ^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#     - - - - ^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!     - - - - ^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:965656565212121210/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"!     - - - - ^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     - - - - ^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;:98787876565656521212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     - - - - ^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?>=>=>=<;<;<;<;878787876565656521212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     - - - - ^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEDCDCDCBABABABA>=>=>=>=<;<;<;<;878787876565656521212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     - - - - ^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMLKJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;878787876565656521212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     - - - - ^]^]^]^]\[\[\[\[XWXWXWXWVUVUTSTSRQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;878787876543434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     - - - - ^]^]^]^]\[\[ZYZYXWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;878787874333333421212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     - - - - ^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;878787873434343421212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     - - - - ^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;878787873434343421212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     - - - - ^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSRQRQPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;878787873434343421212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     - - - - ^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOOOOONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;878787873434343421212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     - - - - ^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSOPOPOPOPNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;878787873434343421212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     - - - - ^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSOPOPOPOPNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;878787873434333321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     - - - - ^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSOPOPOPOPNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;878787873343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     - - - - ^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSOPOPOPOPNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     - - - - ^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSOPOPOPOPNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     - - - ^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSOPOPOPOONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     ^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSOOOOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!        ^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!        ^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;878787873333343421212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!    ^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;878787873434343421212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#"!"!"!"!    ^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;878787873434343421212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!    ^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;87878787343434340/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!    ^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOOOOOOPNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;:9:9:987878787343434340/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!    ^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSOPOPOPOPNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBA@?@?@?>=>=>=>=:9:9:9:987878787343434340/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!    ^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSOPOPOPOPNMNMNMNMJIJIJIJIHGFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:987878787343333330/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!    ^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSOPOPOPOPNMLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:987878787434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!    iijjkkllMMNNOOUU%%&&''((00//..----..//00((''&&%%||{{zzyyjjkkqqrr66778899ssrrqqpp>>??@@AAkkjjiihhGGHHIIJJ bbaa``__mmnnooppVVWWXXYY))**++,,,,++**))~~}}11223344$$##""!!xxwwvvuussttuuvv::;;<<==oonnmmllBBCCDDEEggffeeddKKLLMMNN - - ^^]]\\[[qqrrssttZZ[[\\]]--..//00((''&&%%||{{zzyy55667788 ttssrrqqwwxxyyzz>>??@@AAkkjjiihhFFGGHHII ccbbaa``OOPPQQRRZZYYXXWWuuvvwwxx^^__``aa11223344$$##""!!xxwwvvuu99::;;<<ppoonnmm{{||}}~~BBCCDDEEggffeeddJJKKLLMM - - __^^]]\\SSTTUUVVVVUUTTSSyyzz{{||bbccddee55667788 ttssrrqq==>>??@@llkkjjiiFFGGHHII ccbbaa``NNOOPPQQ[[ZZYYXXWWXXYYZZRRQQPPOO}}~~ffgghhii99::;;<<ppoonnmmAABBCCDDhhggffeeJJKKLLMM - - __^^]]\\RRSSTTUUWWVVUUTT[[\\]]^^ - -NNMMLLKKjjkkqqrr==>>??@@llkkjjiiEEFFGGHH ddccbbaaNNOOPPQQ[[ZZYYXXVVWWXXYYSSRRQQPP__``aabb JJIIHHGGssttuuvvAABBCCDDhhggffeeIIJJKKLL - - ``__^^]]RRSSTTUUWWVVUUTTZZ[[\\]] OONNMMLLccddeeffFFEEDDCCwwxxyyzzEEFFGGHH ddccbbaaMMNNOOPP\\[[ZZYYVVWWXXYYSSRRQQPP^^__``aa - - KKJJIIHHgghhiijjBBAA@@??{{||}}~~IIJJKKLL - - ``__^^]]QQRRSSTTXXWWVVUUZZ[[\\]] OONNMMLLbbccddeeGGFFEEDDkkllmmnn>>==<<;;MMNNOOPP\\[[ZZYYUUVVWWXXTTSSRRQQ^^__``aa - - KKJJIIHHffgghhiiCCBBAA@@ooppqqrr::998877~~}}QQRRSSTTXXWWVVUUYYZZ[[\\PPOONNMMbbccddeeGGFFEEDDjjkkllmm??>>==<>==<>==rrssttuu !!77665544zz{{||}}&&''(())//..--,,yyxxwwvv//001122&&%%$$##llkkjjiieeffgghhDDCCBBAAmmnnoopp<<;;::99vvwwxxyy""##$$%%33221100~~**++,,--++**))((uuttssrr33445566""!! hhggffeeiijjkkll@@??>>==qqrrsstt 88776655zz{{||}}&&''(())//..--,,..//0011''&&%%$$qqkkjjii778899::ddccbbaammnnoopp<<;;::99uuvvwwxx!!""##$$44332211~~}}||{{~~**++,,--++**))((~~}}||22334455##""!! hhggffee;;<<==>>``__^^]]qqrrsstt 88776655yyzz{{||%%&&''((00//..--zzyyxxww..//0011''&&%%$${{zzyyxx66778899ddccbbaa~~}}||{{??@@AABB\\[[ZZYYuuvvwwxx!!""##$$44332211}}~~))**++,,,,++**))vvuuttss22334455##""!! wwvvuutt::;;<<==``__^^]]zzyyxxwwCCDDEEFFXXWWVVUUyyzz{{||%%&&''((00//..----..//00((''&&%%rrqqkkjj66778899ssrrqqpp>>??@@AA\\[[ZZYYvvuuttssGGHHIIJJ TTSSRRQQ}}~~))**++,,,,++**))~~}}11223344$$##""!!iihhggff::;;<<==oonnmmllBBCCDDEEXXWWVVUUrrqqponmKKLLMMNN - - PPOONNMM--..//00((''&&%%||{{zzyy55667788 eeddccbb~~}}||>>??@@AAkkjjiihhFFGGHHII OONNMMLLlkkjjiihOOPPQQRRLLKKJJII11223344$$##""!!xxwwvvuu99::;;<<aa``__^^{{zzyyxxBBCCDDEEggffeeddJJKKLLMM - - KKJJIIHHhggffeedSSTTUUVVHHGGFFEE55667788 ttssrrqq==>>??@@]]\\[[ZZwwvvuuttFFGGHHII ccbbaa``NNOOPPQQGGFFEEDDdccbbaa`WWXXYYZZDDCCBBAA~~}}||{{99::;;<<ppoonnmmAABBCCDDYYXXWWVVssrrqqpoJJKKLLMM - - __^^]]\\RRSSTTUUCCBBAA@@`__^^]]\[[\\]]^^ - -@@??>>==zzyyxxww==>>??@@llkkjjiiEEFFGGHH UUOONNMMnmlkkjjiNNOOPPQQ[[ZZYYXXVVWWXXYY??>>==<<\[[ZZYYX__``aabb <<;;::99vvuuttssAABBCCDDhhggffeeIIJJKKLL - - LLKKJJIIihhggffeRRSSTTUUWWVVUUTTZZ[[\\]] ;;::9933XWWVVUUTccddeeff88776655rrqqkkjj~~}}||EEFFGGHH ddccbbaaMMNNOOPPHHGGFFEEeddccbbaVVWWXXYYSSRRQQPP^^__``aa - - 221100//SRQPOONNgghhiijj44332211iihhggff{{zzyyxxIIJJKKLL - - ``__^^]]QQRRSSTTDDCCBBAAa``__^^]ZZ[[\\]] OONNMMLLbbccddee..--,,++MMLLKKJJkkllmmnn00//..--eeddccbbwwvvuuttMMNNOOPP\\[[ZZYYUUVVWWXX@@??>>==]\\[[ZZY^^__``aa - - KKJJIIHHffgghhii**))((''IIHHGGFFooppqqrr,,++**))aa``__^^ssrrqqpoQQRRSSTTXXWWVVUUYYZZ[[\\<<;;::99YXXWWVVUbbccddeeGGFFEEDDjjkkllmm&&%%$$##EEDDCCBBssttuuvv !!""((''&&%%]]\\[[ZZnmlkkjjiUUVVWWXXTTSSRRQQ]]^^__`` - - 33221100UTSRQPOOffgghhiiCCBBAA@@nnooppqq""!! AA@@??>>wwxxyyzz##$$%%&&$$##""!!YYXXWWVVihhggffeYYZZ[[\\PPOONNMMaabbccdd //..--,,NNMMLLKKjjkkllmm??>>==<>==qqrrsstt >>==<<;;zz{{||}}&&''(())//..--,,..//0011 +**))(('zzyyxxww778899:: @@??>>==UTSRQPOOmmnnoopp<<;;::99uuvvwwxx!!""##$$::998765~~**++,,--++**))((~~}}||22334455'&&%%$$#vvuuttss;;<<==>> - - <<;;::99NNMMLLKKqqrrsstt 88776655yyzz{{||%%&&''((43322110..//0011''&&%%$${{zzyyxx66778899 - - #""!! rrqqppoo??@@AABB - - 33221100JJIIHHGGuuvvwwxx!!""##$$44332211}}~~))**++,, 0//..--,~~}}||22334455##""!! wwvvuutt::;;<<== nnmmllkkCCDDEEFF //..--,,FFEEDDCCyyzz{{||%%&&''((00//..----..//00 - - ,++**))({{zzyyxx66778899ssrrqqpp>>??@@AAjjiihhggGGHHIIJJ++**))((BBAA@@??}}~~))**++,,,,++**))~~}}11223344(''&&%%$wwvvuutt::;;<<==oonnmmllBBCCDDEEffeeddccKKLLMMNN''&&%%$$>>==<<;;--..//00((''&&%%||{{zzyy55667788 - -$##""!! ssrrqqpp>>??@@AAkkjjiihhFFGGHHII  bbaa``__OOPPQQRR##""!! ::998765~~}}11223344$$##""!!xxwwvvuu99::;;<<  oonnmmllBBCCDDEEggffeeddJJKKLLMM!!""##$$ - - ^^]]\\[[SSTTUUVV 43322110||{{zzyy55667788 ttssrrqq==>>??@@kkjjiihhFFGGHHII ccbbaa``NNOOPPQQ%%&&''((ZZYYXXWWWWXXYYZZ!!""##$$0//..--,xxwwvvuu99::;;<<ppoonnmmAABBCCDDggffeeddJJKKLLMM - - __^^]]\\RRSSTTUU))**++,,VVUUTTSS[[\\]]^^%%&&''((,++**))(ttssrrqq==>>??@@llkkjjiiEEFFGGHHccbbaa``NNOOPPQQ[[ZZYYXXVVWWXXYY--..//00RRQQPPOO__``aabb))**++,, (''&&%%$ppoonnmmAABBCCDDhhggffeeIIJJKKLL !!""## - -__^^]]\\RRSSTTUUWWVVUUTTZZ[[\\]]11223399 - -NNMMLLKKccddeeff--..//00 - - - -$##""!! llkkjjiiEEFFGGHH ddccbbaaMMNNOOPP$$%%&&'' [[ZZYYXXVVWWXXYYSSRRQQPP^^__``aa::;;<<== JJIIHHGGgghhiijj11223344  hhggffeeIIJJKKLL - - ``__^^]]QQRRSSTT(())**++WWVVUUTTZZ[[\\]] OONNMMLLbbccddee>>??@@AAFFEEDDCCkkllmmnn55667788ddccbbaaMMNNOOPP\\[[ZZYYUUVVWWXX,,--..//SSRRQQPP^^__``aa - - KKJJIIHHffgghhiiBBCCDDEEBBAA@@??ooppqqrr99::;;<<``__^^]]QQRRSSTTXXWWVVUUYYZZ[[\\00112233 OONNMMLLbbccddeeGGFFEEDDjjkkllmmFFGGHHII>>==<<;;ssttuuvv==>>??@@\\[[ZZYYUUVVWWXXTTSSRRQQ]]^^__``99::;;<< - - KKJJIIHHffgghhiiCCBBAA@@nnooppqqJJKKLLMM::998877wwxxyyzzAABBCCDD !!""## - -XXWWVVUUYYZZ[[\\PPOONNMMaabbccdd==>>??@@GGFFEEDDjjkkllmm??>>==<>==<>==qqrrssttMMNNOOUU !!77665544zz{{||}}&&''(())//..--,,ccddeeff//001122&&%%$$##zzyyxxwwvvuuttssUUVVWWXX99::;;<<DDCCBBAAmmnnoopp<<;;::99uuvvwwxxVVWWXXYY""##$$%%33221100~~**++,,--++**))((~~}}||gghhiijj33445566""!! vvuuttssrrqqppooYYZZ[[\\==>>??@@@@??>>==qqrrsstt 88776655yyzz{{||ZZ[[\\]]&&''(())//..--,,..//0011''&&%%$${{zzyyxxkkqqrrss778899::rrqqppoonnmmllkk]]^^__``AABBCCDD<<;;::99uuvvwwxx!!""##$$44332211}}~~^^__``aa**++,,--++**))((~~}}||22334455##""!! wwvvuuttttuuvvww;;<<==>>nnmmllkkjjiihhggaabbccddEEFFGGHH 88776655yyzz{{||%%&&''((00//..--bbccddee..//0011''&&%%$${{zzyyxx66778899ssrrqqppxxyyzz{{??@@AABBjjiihhggffeeddcceeffgghhIIJJKKLL!!""##$$44332211}}~~))**++,,,,++**))~~}}ffgghhii22334455##""!! wwvvuutt::;;<<==oonnmmll||}}~~CCDDEEFFffeeddccbbaa``__^^]]\\[[SSTTUUVVBBAA@@??_^^]]\\[\\]]^^__ - - MMLLKKJJddeeffgg,,++**))KKJJIIHHmmnnoopp<<;;::99uuvvwwxx!!""##$$::998765~~**++,,--++**))((rrqqkkjjssrrqqppZZYYXXWWWWXXYYZZ>>==<<;;[ZZYYXXW``aabbcc IIHHGGFFhhiijjkk((''&&%%GGFFEEDDqqrrsstt 88776655yyzz{{||%%&&''((43322110..//0011''&&%%$$iihhggffoonnmmllVVUUTTSS[[\\]]^^ - -::993322WVVUUTSRddeeffggEEDDCCBBllmmnnoo$$##""!!CCBBAA@@uuvvwwxx!!""##$$44332211}}~~))**++,, 0//..--,~~}}||22334455##""!! eeddccbbkkjjiihhRRQQPPOO__``aabb 1100//..QPOONNMMhhiijjkkAA@@??>>ppqqrrss ??>>==<>??@@AAYYXXWWVV__^^]]\\FFEEDDCCkkllmmnn%%$$##""DDCCBBAAttuuvvww !!""##55443322||}}~~(())**++ 100//..-~~}}11223344$$##""!!xxwwvvuu99::;;<<  oonnmmllBBCCDDEEUUOONNMM[[ZZYYXXBBAA@@??ooppqqrr!! @@??>>==xxyyzz{{$$%%&&''1100//..,,--..// - - -,,++**)||{{zzyy55667788 ttssrrqq==>>??@@kkjjiihhFFGGHHII LLKKJJIIWWVVUUTT>>==<<;;ssttuuvv !!""<<;;::99||}}~~(())**++--,,++**~~00112233)((''&&%xxwwvvuu99::;;<<ppoonnmmAABBCCDDggffeeddJJKKLLMM - - HHGGFFEESSRRQQPP::998877wwxxyyzz##$$%%&&87654332,,--..//))((''&&}}||{{zz44556677 %$$##""!ttssrrqq==>>??@@llkkjjiiEEFFGGHHccbbaa``NNOOPPQQDDCCBBAAOONNMMLL66554433{{||}}~~''(())** 21100//.~~00112233%%$$##""yyxxwwvv8899::;; - - ! ppoonnmmAABBCCDDhhggffeeIIJJKKLL !!""## - -__^^]]\\RRSSTTUU@@??>>==KKJJIIHH221100//++,,--.. - - .--,,++*}}||{{zz44556677!! uuttssrr<<==>>??llkkjjiiEEFFGGHH ddccbbaaMMNNOOPP$$%%&&'' [[ZZYYXXVVWWXXYY<<;;::99GGFFEEDD..--,,++//001122*))((''&yyxxwwvv8899::;;qqppoonn@@AABBCChhggffeeIIJJKKLL - - ``__^^]]QQRRSSTT(())**++WWVVUUTTZZ[[\\]] 33221100CCBBAA@@**))((''~~}}||{{33445566&%%$$##"uuttssrr<<==>>??mmllkkjjDDEEFFGGddccbbaaMMNNOOPP\\[[ZZYYUUVVWWXX,,--..//SSRRQQPP^^__``aa - - //..--,,??>>==<<&&%%$$##zzyyxxww778899:: - - "!! qqppoonn@@AABBCCiihhggffHHIIJJKK !!"" ``__^^]]QQRRSSTTXXWWVVUUYYZZ[[\\00112233 OONNMMLLbbccddee++**))((;;::9988""!! vvuuttss;;<<==>> mmllkkjjDDEEFFGGeeddccbbLLMMNNOO##$$%%&& - - \\[[ZZYYUUVVWWXXTTSSRRQQ]]^^__``99::;;<< - - KKJJIIHHffgghhii''&&%%$$77665544rrqqppoo??@@AABBiihhggffHHIIJJKK - -aa``__^^PPQQRRSS''(())**XXWWVVUUYYZZ[[\\PPOONNMMaabbccdd==>>??@@GGFFEEDDjjkkllmm##""!! 33221100nnmmllkkCCDDEEFFeeddccbbLLMMNNOO ]]\\[[ZZTTUUVVWW++,,--..TTSSRRQQ]]^^__`` - - LLKKJJIIeeffgghhAABBCCDDCCBBAA@@nnooppqq//..--,,jjiihhggGGHHIIJJ !! aa``__^^PPQQRRSSYYXXWWVVXXYYZZ[[//001122PPOONNMMaabbccdd HHGGFFEEiijjkkllEEFFGGHH??>>==<>?? HHGGFFEEiijjkkll@@??>>==qqrrssttMMNNOOUU !!77665544zz{{||}}&&''(()) ##""!! - - ^^]]\\[[SSTTUUVV**++,,--UUTTSSRR\\]]^^__ - - MMLLKKJJddeeffgg@@AABBCCDDCCBBAAmmnnoopp<<;;::99uuvvwwxxVVWWXXYY""##$$%%33221100~~**++,,-- - - - -ZZYYXXWWWWXXYYZZ..//0011QQPPOONN``aabbcc IIHHGGFFhhiijjkkDDEEFFGG@@??>>==qqrrsstt 88776655yyzz{{||ZZ[[\\]]&&''(())//..--,,..//0011 VVUUTTSS[[\\]]^^223399:: - - MMLLKKJJddeeffggEEDDCCBBllmmnnooHHIIJJKK<<;;::99uuvvwwxx!!""##$$44332211}}~~^^__``aa**++,,--++**))((~~}}||22334455RRQQPPOO__``aabb;;<<==>> IIHHGGFFhhiijjkkAA@@??>>ppqqrrssLLMMNNOO 88776655yyzz{{||%%&&''((00//..--bbccddee..//0011''&&%%$${{zzyyxx66778899 - -NNMMLLKKccddeeff??@@AABBEEDDCCBBllmmnnoo==<<;;::ttuuvvwwUUVVWWXX!!""##$$44332211}}~~))**++,,,,++**))~~}}ffgghhii22334455##""!! wwvvuutt::;;<<== JJIIHHGGgghhiijjCCDDEEFFAA@@??>>ppqqrrss99887766xxyyzz{{YYZZ[[\\%%&&''((00//..----..//00((''&&%%||{{zzyyjjkkqqrr66778899ssrrqqpp>>??@@AA !!""## - - FFEEDDCCkkllmmnnGGHHIIJJ==<<;;::ttuuvvww !!""##55443322||}}~~]]^^__``))**++,,,,++**))~~}}11223344$$##""!!xxwwvvuussttuuvv::;;<<==oonnmmllBBCCDDEE$$%%&&'' - - BBAA@@??ooppqqrrKKLLMMNN99887766xxyyzz{{$$%%&&''1100//..aabbccdd--..//00((''&&%%||{{zzyy55667788 ttssrrqqwwxxyyzz>>??@@AAkkjjiihhFFGGHHII(())**++>>==<<;;ssttuuvvOOUUVVWW !!""##55443322||}}~~(())**++--,,++**~~eeffgghh11223344$$##""!!xxwwvvuu99::;;<<ppoonnmm{{||}}~~BBCCDDEEggffeeddJJKKLLMM,,--..//::998877wwxxyyzzXXYYZZ[[$$%%&&''1100//..,,--..//))((''&&}}||{{zziijjkkqq55667788 ttssrrqq==>>??@@llkkjjiiFFGGHHII ccbbaa``NNOOPPQQ00112233 !!""66554433{{||}}~~\\]]^^__(())**++--,,++**~~00112233%%$$##""yyxxwwvvrrssttuu99::;;<<ppoonnmmAABBCCDDhhggffeeJJKKLLMM - - __^^]]\\RRSSTTUU99::;;<<##$$%%&&221100//``aabbcc,,--..//))((''&&}}||{{zz44556677!! uuttssrrvvwwxxyy==>>??@@llkkjjiiEEFFGGHH ddccbbaaNNOOPPQQ[[ZZYYXXVVWWXXYY==>>??@@ !!''(())**..--,,++ddeeffgg00112233%%$$##""yyxxwwvv8899::;;qqppoonnzz{{||}}AABBCCDDhhggffeeIIJJKKLL - - ``__^^]]RRSSTTUUWWVVUUTTZZ[[\\]]AABBCCDD""##$$%%++,,--..**))((''~~}}||{{hhiijjkk44556677!! uuttssrr<<==>>??mmllkkjj~~EEFFGGHH ddccbbaaMMNNOOPP\\[[ZZYYVVWWXXYYSSRRQQPP^^__``aaEEFFGGHH&&''(())//001122&&%%$$##zzyyxxwwqqrrsstt8899::;;qqppoonn@@AABBCCiihhggffIIJJKKLL - - ``__^^]]QQRRSSTTXXWWVVUUZZ[[\\]] OONNMMLLbbccddeeIIJJKKLL**++,,--33445566""!! vvuuttssuuvvwwxx<<==>>??mmllkkjjDDEEFFGGeeddccbbMMNNOOPP\\[[ZZYYUUVVWWXXTTSSRRQQ^^__``aa - - KKJJIIHHffgghhiiMMNNOOUU..//0011778899::rrqqppooyyzz{{||@@AABBCCiihhggffHHIIJJKK - -aa``__^^QQRRSSTTXXWWVVUUYYZZ[[\\PPOONNMMbbccddeeGGFFEEDDjjkkllmmVVWWXXYY22334455;;<<==>>nnmmllkk}}~~DDEEFFGGeeddccbbLLMMNNOO ]]\\[[ZZUUVVWWXXTTSSRRQQ]]^^__`` - - LLKKJJIIffgghhiiCCBBAA@@nnooppqqZZ[[\\]]66778899??@@AABBjjiihhggHHIIJJKK - -aa``__^^PPQQRRSSYYXXWWVVYYZZ[[\\PPOONNMMaabbccdd HHGGFFEEjjkkllmm??>>==<>??@@AAGGHHIIJJ bbaa``__PPQQRRSSYYXXWWVVXXYYZZ[[QQPPOONNaabbccdd HHGGFFEEiijjkkll@@??>>==rrssttuu !!77665544zz{{||}}ffgghhiiBBCCDDEEKKLLMMNN - - ^^]]\\[[TTUUVVWWUUTTSSRR\\]]^^__ - - MMLLKKJJeeffgghhDDCCBBAAmmnnoopp<<;;::99vvwwxxyy""##$$%%33221100~~jjkkqqrrFFGGHHIIOOPPQQRRZZYYXXWWXXYYZZ[[QQPPOONN``aabbcc IIHHGGFFiijjkkll@@??>>==qqrrsstt 88776655zz{{||}}&&''(())//..--,,ssttuuvvJJKKLLMMSSTTUUVVVVUUTTSS\\]]^^__ - - MMLLKKJJddeeffggEEDDCCBBmmnnoopp<<;;::99uuvvwwxx!!""##$$44332211~~}}||{{~~**++,,--++**))((~~}}||wwxxyyzzNNOOPPQQWWXXYYZZRRQQPPOO``aabbcc IIHHGGFFhhiijjkkAA@@??>>qqrrsstt 88776655yyzz{{||%%&&''((00//..--zzyyxxww..//0011''&&%%$${{zzyyxx{{||}}~~RRSSTTUU[[\\]]^^ - -NNMMLLKKddeeffggEEDDCCBBllmmnnoo==<<;;::uuvvwwxx!!""##$$44332211}}~~))**++,,,,++**))vvuuttss22334455##""!! wwvvuuttVVWWXXYY__``aabb JJIIHHGGhhiijjkkAA@@??>>ppqqrrss99887766yyzz{{||%%&&''((00//..----..//00((''&&%%rrqqkkjj66778899ssrrqqppZZ[[\\]]ccddeeffFFEEDDCCllmmnnoo==<<;;::ttuuvvww !!""##55443322~~}}||}}~~))**++,,,,++**))~~}}11223344$$##""!!iihhggff::;;<<==oonnmmll^^__``aagghhiijjBBAA@@??ppqqrrss99887766xxyyzz{{$$%%&&''1100//..{{zzyyxx--..//00((''&&%%||{{zzyy55667788 eeddccbb~~}}||>>??@@AAkkjjiihhbbccddeekkllmmnn>>==<<;;ttuuvvww !!""##55443322||}}~~(())**++--,,++**wwvvuutt11223344$$##""!!xxwwvvuu99::;;<<aa``__^^{{zzyyxxBBCCDDEEggffeeddffgghhiiooppqqrr::998877xxyyzz{{$$%%&&''1100//..,,--..//))((''&&ssrrqqkk55667788 ttssrrqq==>>??@@]]\\[[ZZwwvvuuttFFGGHHII ccbbaa``jjkkllmmssttuuvv !!""66554433~~}}||}}~~(())**++--,,++**~~00112233%%$$##""jjiihhgg99::;;<<ppoonnmmAABBCCDDYYXXWWVVssrrqqpoJJKKLLMM - - __^^]]\\nnooppqqwwxxyyzz##$$%%&&221100//||{{zzyy,,--..//))((''&&}}||{{zz44556677!! ffeeddcc~~}}==>>??@@llkkjjiiEEFFGGHH UUOONNMMnmlkkjjiNNOOPPQQ[[ZZYYXXrrssttuu{{||}}~~''(())**..--,,++xxwwvvuu00112233%%$$##""yyxxwwvv8899::;;bbaa``__||{{zzyyAABBCCDDhhggffeeIIJJKKLL - - LLKKJJIIihhggffeRRSSTTUUWWVVUUTTvvwwxxyy++,,--..**))((''ttssrrqq44556677!! uuttssrr<<==>>??^^]]\\[[xxwwvvuuEEFFGGHH ddccbbaaMMNNOOPPHHGGFFEEeddccbbaVVWWXXYYSSRRQQPPzz{{||}}//001122&&%%$$##kkjjiihh8899::;;qqppoonn@@AABBCCZZYYXXWWttssrrqqIIJJKKLL - - ``__^^]]QQRRSSTTDDCCBBAAa``__^^]ZZ[[\\]] OONNMMLL~~33445566""!! ggffeedd~~<<==>>??mmllkkjjDDEEFFGGVVUUOONNponmlkkjMMNNOOPP\\[[ZZYYUUVVWWXX@@??>>==]\\[[ZZY^^__``aa - - KKJJIIHH778899::ccbbaa``}}||{{zz@@AABBCCiihhggffHHIIJJKK - -MMLLKKJJjiihhggfQQRRSSTTXXWWVVUUYYZZ[[\\<<;;::99YXXWWVVUbbccddeeGGFFEEDD;;<<==>>__^^]]\\yyxxwwvvDDEEFFGGeeddccbbLLMMNNOO IIHHGGFFfeeddccbUUVVWWXXTTSSRRQQ]]^^__`` - - 33221100UTSRQPOOffgghhiiCCBBAA@@??@@AABB[[ZZYYXXuuttssrrHHIIJJKK - -aa``__^^PPQQRRSSEEDDCCBBbaa``__^YYZZ[[\\PPOONNMMaabbccdd //..--,,NNMMLLKKjjkkllmm??>>==<>^]]\\[[Z]]^^__`` - - LLKKJJIIeeffgghh++**))((JJIIHHGGnnooppqq;;::9988GGHHIIJJ NNMMLLKKkjjiihhgPPQQRRSSYYXXWWVVXXYYZZ[[==<<;;::ZYYXXWWVaabbccdd HHGGFFEEiijjkkll''&&%%$$FFEEDDCCrrssttuu !!77665544~~}}||{{~~}}||KKLLMMNN - - JJIIHHGGgffeeddcTTUUVVWWUUTTSSRR\\]]^^__ - - 99332211VUUTSRQPeeffgghhDDCCBBAAmmnnoopp##""!! BBAA@@??vvwwxxyy""##$$%%33221100zzyyxxww{{zzyyxxOOPPQQRRFFEEDDCCcbbaa``_XXYYZZ[[QQPPOONN``aabbcc 00//..--OONNMMLLiijjkkll@@??>>==qqrrsstt >>==<<;;zz{{||}}&&''(())//..--,,vvuuttsswwvvuuttfpvp˂rH~tlJnXv`bdQZ|`vXn|ZdQbfpvJltH~fZdQtArbHAZpdrtAJHAbےlJtAJ`ےdQZ|˂pZZdQbtZp˂XnvJXQrvnXnXv`XQJ`ےvpfHtArdf~HdrtAvpftlJnXv`bdQZ|`vXnd|Z˂rXQltb`JXQrrd|bHAZpdrtAJHAbےlJtArXQJ`pfH~˂pZHAv`ff~HbHAZ~f`|ZdQbfpvJltH~ftArdf~HdrtAvpfdQbtJ`ےdQZ|˂pZZdQbt˂rXQltb`JXQrrd|p˂rf`vے`J~Hfpfpvp˂rvXntlJnXv`bdQZ|`vXn|ZdQbfpvJltH~flJtArbHAZpdrtAJHAbےlJtAJ`ےdQZ|˂pZZdQbtXQJ`ےXnvXQrbtvnXnXv`XQJ`ےvpfHtArdf~HdrtAvpftlJnXv`bdQZ|`vXnd|Z˂rXQltb`JXQrrd|bHAZpdtAJlHAbےlJfbHAZpfH~lJtAv`ff~HbHAZ~f`|ZdQbfpvJltH~ftArdf~HdrtAvpfdQbtJ`ےdQZ|˂pZZdQbt˂rXQtbn`JXQrpvp˂rf`vd|Z~Hfpfpvp˂rvXH~tlJnXv`bdQZ|`vXn|ZdQbfpvJltH~fl|ZdQbHAZpdtAJlHAbےlJfJ`ےvpf˂pZ~HfpXQJ`ےXnvdQbtvnXnXv`XQJ`ےf`vtArdf~HdrtAvpftlJnXv`bdQZ|`vXnbtl˂rXQtbn`JXQrpvnbHAZpHf`HAbےvnXbHAXQpfH~lJtArv`ff~HbHAZXnv|ZdQbfpvJltH~ftArdfHfdrtAvpfJtArdJ`ےvpf˂pZXv`f˂rXQvXn`JXQrv`fJ`ےJf`vd|Z~Hfpfpvp˂rpfH~tlJnXv`bdQZ|`vXn|ZdQbpvnJltے`JXQ|ZdQbHAZpHf`HAbے~HfJ`ےvpfH˂pZ~HfpltbQXnvdQbtvnXnXv`XQJ`ےf`vtArdfHfdrtAvpftlJrXQJ`bdQZ|HAbےbtl˂rXQvXn`JXQrpvnbHAZp~f`HAbےvnXZdrtpfH~lJtArv`ff~HbHAZXnv|ZdQbpvnJltے`JXQtArdےHAZdrtA`JXQrJtArdJ`ےvpfH˂pZXv`f˂rXQvXn`JXQrv`pvAJltf`vd|Z~Hfpfpvp˂rp`vXtlJrXQJ`bdQZ|r˂p|ZdQbp˂rJlt˂pZtlJbHAZp~f`HAbے~HfJ`ےvpfH˂pZnXvbdQZ|XnvdQbtvnXnXv`XQJ`ےnvptArdےHAZdrtAZHAbtlJXQJ`ےbdQZ|HAbےfpv˂rXQvXn`JXQrpvnbHAZp~f`HAbے`f~drtpfH~lJtArv`ff~HbHAZfH~|ZdQbp˂rJltے`JXQtArdbHAZdrtA`JXQrnvfJ`ےvpfH˂pZXv`f˂rXQvXn`JXQrHfpvAJltf`vd|Z~Hfpfpvp˂rf`vXtlJXQJ`ےbdQZ|r˂p|ZdQbp˂rJlt˂p`~HfpbHAZp~f`HAbے~HfJ`ےvpfH˂pZnXvbdQZ|XnvdQbtvnXnXv`XQJ`ےnvptArdbHAZdrtAZHAbtlJXQJ`ےbdQZ|JXQrvnX˂rXQvXn`JXQrpvnbHAZp~f`HAbے`f~rAJlpfH~lJtArv`ff~HJltfH~|ZdQbp˂rJltے`JXQtArdbHAZdrtA˂pZHAv`fJ`ےvpfH˂pZXv`f˂rXQvXn`JXQrHXv`tbdQf`vd|Z~HfpfpvdrtAJvpftlJXQJ`ےbdQZ|r˂p|ZdQbp˂rJltbے`~HfpbHAZp~f`HAbے~HfJ`ےvpfH˂pZf~HZ|dXnvdQbtvnXnXv`ltbے`JXQtArdbHAZdrtAZHAbtlJXQJ`ےbdQZ|JXQrvnX˂rXQvXn`JXQrpvnbHAZp~f`HAbےfpvrtAJlpfH~lJtArv`ff~HdQZ|rZHA|ZdQbp˂rJltے`JXQtArdbHAZdrtA˂pZHAv`f~fJ`ےvpfH˂pZXv`f˂rXQvXn`JXQrnXv`tbdQf`vd|Z~HfpfpvdrtAJbے`tlJXQJ`ےbdQZ|r˂p|ZdQbp˂rJltb˂pvnbHAZp~f`HAbے~HfJ`ےvpfH˂pZf~HZ|dXnvdQbtvnXnXv`ltbJXQrtArdbHAZdrtAZHAbtlJXQJ`ےbdQZ|pZHAbXv`f˂rXQvXn`JXQrpvnbHAZp~f`HAbےfpvrtAJpfH~lJtArv`ff~HdQZ|lpZHA|ZdQbp˂rJltے`JXQtArdbHAZdrtAے`J~HfJ`ےvpfH˂pZXv`f˂rXQvXn`JXQr~HfbdQZ|f`vd|ZHfpvfpvtbdQbے`tlJXQJ`ےbdQZ|r˂p|ZdQbp˂rJltXQr˂pvnbHAZp~f`HAbے~HfJ`ےvpfH˂pZpvndrtAXnvdQbt璀nrXQnXv`Z|dJXQrtArdbHAZdrtAZHAbtlJXQJ`ےbdQZ|pZHAbXv`f˂rXQvXn`JXQrpvnbHAZp~f`HAے`Xv`fJltpfے`lJtArJ`ےf~HrtAJlpZAb|ZdQbp˂rJltے`JXQtArdbHAZdrtAے`J~HfJ`ےvpfH˂pZXv`f˂rXQvXnJXQrb~HfbdQZ|JXQrd|ZHAZp˂fpvtbdQ`JXQrtlJXQJ`ےbdQZ|r˂p|ZdQbp˂rJltXQHAbvnXv`bHAZp~f`HAے`~HfJ`ےJvpfHtlJpvndrtA˂pZHAdQbt璀rXQJnXv`Z|d˂pZtArdbHAZdrtAZHAbtlJXQJ`ےbdQZ|ے`JXQf~H˂rXQvXnJXQrbpvnltb~f`tAd|Xv`pJltbbے`lJtAr`ےbf~HrtAdQZHAbے|ZdQbp˂rJltے`JXQtArdbHAZdtAJr˂pfpvJ`ےJvpfHtlJXv`fdQZ|vXnZdQbtvnXQZdrJXQrd|ZHAZp˂fpv|dr`JXQrtlJXQJ`ےbdQZ|r˂p|ZdQbp˂rltbZHAbnXv`ltb~f`tAd|~HfdrtAJvpfHlJtAv`ftAJl˂pZHAdQbt璀rXQJnXv`tAJl璀˂pZtArdbHAZdtAJZHAbtlJXQJ`ےnvpے`JXQf~HdQZ|vXnZdQbtpvnltb~f`rd|~HfptbdQZbے`lJtAr`ےbf~HtbdQZHAb|ZdQbp˂rltbے`JXQfpvbHAZfHfr˂pfpvdrtAJvpfHlJtAXv`fdQZ|vXnZdQbtvnX|drJXQrd|ZHAZp˂fpv|drJQr˂ptlJXQJ`ےnvpr˂pnXv`p˂r`vXn`JXQrnvfltb~f`rd|~HfdrtAJvpfHlJtAv`ftAJl˂pZHAdQbt璀rXQJnXv`tAJl璑ZHAbfpvbHAZfHfZHAbf~HXQJ`ےvpf˂pZ~HfpdQZ|vXnZdQbtpvnltb~f`rd|~HXvtbdQZbے`lJtAr`ےbf~HtdrtAے`JXnXv`p˂r`vXnے`JXQfpvbHAZH~fHAbےvnXdrtAJvpfHlJtAXv`fdQZ|vXnZdQbt`f~|rAJlJXQrd|ZHAZp˂fpvJltQr˂pf~HXQJ`ےvpfr˂pnXv`p˂r`vXn`JXQrv`fltb~f`rd|~HfdrtAJvpfHlJtAHfpvtbd˂pZHAdQbt璀rXQJnXv`bdQZ|ZHAbfpvbHAZH~fZHAbf~HXQJ`ےvpf˂pZ~HfpdQZ|vXnZdQbtpvnltb~f`rd|nXvQZ|dbے`lJtAr`ےbf~HdrtAے`JXnXv`p˂r`vXnے`JXQfpvbHAZH~fHAbvnXdrtAJvpfHlJtAXv`fdQZ|vXnZdQbt`pvrtAJlJXQrd|ZHAZp˂fpvJltQrZHAf~HXQJ`ےvpfr˂pnXv`p˂r`vXn˂pZHAv`f~ltb~f`rd|~HfdrtAJvpfHlJtAnrXQJtbd˂pZHAdQbt璀rXQJnXv`bdQZ|bے`fpvbHAZH~fZHAbf~HXQJ`ےvpfbے`fpvdQZ|vXnZdQbtpvnltb~f`rd|`p˂QZ|dbے`lJtAr`ےbp˂rltbJXQrnXv`p˂r`vXnے`JXQfpvbHAZH~fJXQrnXv`drtAJvpfHlJtAXv`fdQZ|vXnZdQbtrXQJ`rtAJJXQrd|ZHAZp˂XQJ`ےdQZ|˂pZHAf~HXQJ`ےvpfr˂pnXv`p˂r`vXn˂p`Jf~Hltb~f`rd|~HfdrtAJvpfHlJtAےbHAbdQZ|˂pZHAdQbt璀rXQJbHAZdrtAJbے`fpvbHAZH~fZHAbf~HXQJ`ےvpfXQrbtfpvdQZ|vXnZdQbtpvnltb~f`rd|Zp˂drtAbے`lJtAr`ےbHAZp˂p˂rltbJXQrnXv`p˂r`vXnے`JXQfpvbHAZH~fl|ZnXv`drtAJvpfHlJtAXv`fdQZ|vXnZdQbtbHAZJltJXQrd|ZHAZp˂rXQJXQJ`ےdQZ|˂pZAbf~HXQJ`ےvpfr˂pnXv`p˂r`vXndQbtf~Hfltb~f`rd|~HfdrtAJvpfHlJtAp˂rbdQZ|˂pZHAdQbt璀rXQJ`ےJlbHAZdrtAdQ`JXQfpvbHAZH~fZHAbf~HXQJ`ےvpflJtArvnXvdQZ|vXnZdQbtpvnltb~f`rd|XQJ`ےAJlbے`lJfp`ےbtbdQp˂rZ|dr˂pnXv`p˂r`vXnے`JXQfpvbHAZH~fd|Z`f~drtAJvpfHlJtAXv`fdQZ|vXnZdQbtbHAZtbnJXQrvnXHAZp˂Z|dXQJ`ےrtAJlZHAbf~HXQJ`ےvpfr˂pnXv`p˂r`vXndQtArdHfpvltb~f`rd|HfpdrtAJvpfےlJtAp˂rvpfH˂pZHAv`frXQJrtAJlbHAZtbdQ`JXQfpvbHAZH~fZHAbf~HXQJ`ےvpf|ZdQnXvdQZ|vXnZdQbtvnrltb`JXQrrd|XQJ`pf`vbے`~Hfp`ےbtbdQp˂rZ|`vr˂pnXv`p˂r`vXnے`JXQfpvbHAZH~fbtl`ffpdrtAJvpfےlJtAXQJ`ےdQZ|˂pZZdQbt˂rXQXnvJXQrvnXHAZp˂Z|dXQJ`ےXnvZHAbf~HXQJ`ےvpfr˂pnXv`p˂r`vXnJtArdvnrltb`JXQrrd|HAZpdrtAJHAbےlJtAJ`ےpfH~˂pZHAv`frXQJrtAJlbHAZpfH~JQr˂fpvbHAZH~fZHAےf~HXQJ`ےvpf|ZdQXQJ`ےdQZ|˂pZZdQbt˂rXQltb`JXQrrd|bHAZpf`vbے`~Hfp`ےbtbdQp˂rf`vpZHAbnXv`p˂r`vXn`JXQrfpvJltH~fbtlHAZpdrtAJHAbےlJtAJ`ےdQZ|˂pZZdQbt˂rXQXnvJXQrvnXHAZp˂Z|dXQJ`ےXH~ے`Jf~HXQJ`ےvpfbtlnXv`bdQZ|`vXn|ZdQb˂rXQltb`JXQrrd|bHAZpdrtAJHAbےlJtAJ`ےpfH~˂pZHAv`frXQJrtAJlbHAZf`vXXQr˂fpvJltH~fJtAdf~HdrtAvpftlJJ`ےdQZ|˂pZZdQbt˂rXQltb`JXQrrd|bHAXQJf`vbے`~Hfp`ےbtbdQp˂rnvppZHAbnXv`bdQZ|`vXn|ZdQbfpvJltH~ftArdbHAZpdrtAJHAbےlJtAJ`ےdQZ|˂pZZdQbt`ےbXnvJXQrvnXHAZp˂Z|dXQJ`ےfH~JAdf~HdrtAvpftlJnXv`bdQZ|`vXn|ZdQb˂rXQltb`JXQrrd|bHAZpdrtAJHAbےlJtAHAZp˂pfH~˂pZHAv`frXQJrtAJlbHAZf`vX|ZdQbfpvJltH~ftArdf~HdrtAvpftlJJ`ےdQZ|˂pZZdQbt˂rXQltb`JXQrrd|rXQJf`vbے`~Hfp`ےbtbdQp˂rnvptlJnXv`bdQZ|`vXn|ZdQbfpvJltH~ftArdtbHAZpdrtAJHAbےlJtAJ`ےdQZ|˂pZZdQbt`ےbXnvJXQrvnXHAZp˂Z|dXQJ`ے`vXntArdf~HdrtAvpftlJnXv`bdQZ|`vXnlJtA˂rXQltb`JXQrrd|bHAZpdrtAJHAbےlJtAHAZp˂pfH~˂pZHAv`frXQJrtAJlbHAZvpf|ZdQbfpvJltH~ftArdf~HdrtAvpfrd|J`ےdQZ|˂pZZdQbt˂rXQltb`JXQrrd|bHAf`vbے`~Hfp`ےbtbdQp˂rH~ftlJnXv`bdQZ|`vXn|ZdQbfpvJltH~fZdQbtbHAZpdrtAJHAbےlJtAJ`ےdQZ|˂pZZdQbtZp˂XnvJXQrvnXHAZp˂Z|dXQJ`ے`vXntArdf~HdrtAvpftlJnXv`bdQZ|`vXnlJtA˂rXQltb`JXQrrd|bHAZpdrtAJHAbےlJtArXQJ`pfH~˂pZHAv`frXQJrtAJlbHAZvpf|ZdQbfpvJltH~ftArdf~HdrtAvpfrd|J`ےdQZ|˂pZZdQbt˂rXQltb`JXQrrd|ےbHAf`vbے`~Hfp`ےbtbdQZ|dXnvdQbt璀nrXQrtAJl˂pZHnXvZp˂f`vXے`JHfpvےbHAfH~ZHAbpvndrtAvpftlJnXv`bdQZ|`vXn|ZdQbv`fZ|rA`JXQrrd|bHAZpdrtAJb˂H~ㅐfrtAJlpfے`lJtArJ`ےtbdQAbے``f~rXQJ`nvpXQr˂nXvZp˂f`vXے`JXQXv`fJltH~ftArdf~HdrtAvpftlJ~HfpJlt˂pZZdQbt˂rXQltbpZHAb`vXntbdQJXQrd|ZHAZp˂Z|l璁JXQrHfpvےbHAfH~pZHAb`f~rXQJ`nvpr˂p~HfbdQZ|`vXn|ZdQbfpvJltH~ftArdvnXbdQZ|HAbےlJtAJ`ےdQZ|ے`JvˍpfZ|d˂pZHAdQbt璀rXQJtbdQZZHAbnXvZp˂f`vXے`JHfpvےbHAfH~ZHAbpvndrtAvpftlJnXv`bdQZ|`vXn|ZdQbv`pvdrtA`JXQrrd|bHAZpdrtAJXQr˂H~ㅐfrtAJlbے`lJtAr`ےb|drے`JXQ`f~rXQJ`nvpXQr˂nXvZp˂f`vX˂pZXv`fJltH~ftArdf~HdrtAvpftlJnrXQJlt˂pZZdQbt˂rXQltbpZHAb`vXntbdQJXQrd|ZHAZp˂tAJlr˂pHfpvےbHAfH~pZHAb`f~rXQJ`nvpHAbے~fpvbdQZ|`vXn|ZdQbfpvJltH~ftArdJ`p˂bdQZ|HAbےlJtAJ`ےdQZ|ے`JvˍpfZ|d˂pZHAdQbt璀rXQJtbdQZZHAbnXvZp˂f`vXے`JHfpvےbHAfH~`JXQrnXv`drtAvpftlJnXv`bdQZ|`vXn|ZdQbrXQJdrtAJ`JXQrrd|bHAZpdrtAJXQHAbH~ㅐfrtAJlbے`lJtAr`ےb|drے`JXQ`f~rXQJ`nvpXQr˂nXvZp˂f`vX˂p`f~HJltH~ftArdf~HdrtAvpftlJ`ےbbdQZ˂pZZdQbt˂rXQltbے`JXQ`vXntbdQJXQrd|ZHAZp˂tAdQZ|r˂pHfpvےbHAfH~pZHAb`f~rXQJ`nvpJXQrbfpvbdQZ|`vXn|ZdQbfpvJltH~ftArdHAZp˂|drHAbےlJtAJ`ےdQZ|r˂pvˍpfZ|d˂pZHAdQbt璀rXQJdrtAZAb`nXvZp˂f`vXے`JHfpvےbHAfH~tl|nXv`drtAvpftlJnXv`bdQZ|`vXn|ZdQbbHAtAJl`JXQrrd|bHAZpdtAJlZHAbH~ㅐfrtAJlbے`lJtAr`ےbJltJXQr`f~rXQJ`nvpXQr˂nXvZp˂f`vXZdQbtf~HJltH~ftArdf~HdrtAvpftlJZp˂tbdQZ˂pZZdQbt˂rXQtbnے`JXQ`vXntbdQJXQrd|ZHAZp˂bdQZ|pZHAHfpvےbHAfH~pZHAb`f~rXQJ`nvplJtAfvnXbdQZ|`vXn|ZdQbfpvJltH~ftArdrXQJ`|AJlHAbےlJfJ`ےvpfr˂pvˍpfZ|d˂pZHAdQbt璀rXQJltbbے`nXvZp˂f`vXے`JHfpvےbHAfH~rd|v`fdrtAvpftlJnXv`bdQZ|`vXn|ZdQbےbHAtbn`JXQrpvnbHAZpHf``JXQrH~ㅐfrtAJlbے`lJtAr`ےbnvpJXQr`f~rXQJ`nvpXQr˂nXvZp˂f`vXZdQtAr~HfpJltH~ftArdfHfdrtAvpftlJZp˂vpf˂pZXv`f˂rXQvXn˂pZ`vXntbdQJXQrd|ZHAZp˂`vXnpZHAHfpvےbHAfH~pZHAb`f~rXQJ`nvpd|ZvnXbdQZ|`vXn|ZdQbpvnJltے`JXQtArdrXQJ`Hf`HAbے~HfJ`ےvpfHHAbےvˍpfZ|d˂pZHAdQbt璀rXQJvpfbJQrnXvZp˂f`vXے`JHfpvےbHAfH~dQbtv`ffdrtAvpftlJrXQJ`bdQZ|r˂p|ZdQbp˂rvXn`JXQrpvnbHAZp~f``JXQrH~ㅐfrtAJlbے`lJtAr`ےbH~f˂pZ`f~rXQJ`nvpXQr˂nXvZp˂f`vXlJtArpvnJltے`JXQtArdےHAZdrtAZHAbtlJXQJ`ےvpfH˂pZXv`f˂rXQvXn˂pZ`vXntbdQJXQrd|ZHAZp˂`vXHHAbےHfpvےbHAfH~pZHA`f~rXQJ`nvpd|ZrXQJ`bdQZ|r˂p|ZdQbp˂rJltے`JXQtArdbHAZ~f`HAbے~HfJ`ےvpfHHAbvˍpfZ|d˂pZHAdQbt璀rXQJ~f``JXQrnXvZp˂f`vXے`JXQHfpvےJlfH~dQbtےHAZdrtAZHAbtlJXQJ`ےbdQZ|r˂p|ZdQbp˂rvXn`JXQrpvnbHAZp~f`˂pZHAH~ㅐfrtAJlbے`lJtAr`ےbvXn˂pZA`f~rXQJ`nvprbt璀nXvtbdQZf`vXl|ZdQp˂rJltے`JXQtArdbHAZdrtAZHAbtlJXQJ`ےvpfH˂pZXv`f˂rXQvXnbے``vXntbdQJXQrd|ZHAZp˂vpfH`JXQHfpvےJlfH~lJtAd`f~|drnvpbtlXQJ`ےbdQZ|r˂p|ZdQbp˂rJltے`JXQtArdbHAXQ~f`HAbے~HfJ`ےvpfHJXQrvˍpfZ|d˂pZHAdQbt璀rXQJ~f`rbt璀nXvtbdQZf`vX|ZdQHfpvtAJlfH~JtArdbHAZdrtAZHAbtlJXQJ`ےbdQZ|r˂p|ZdQbJ`ےvXn`JXQrpvnbHAZp~f`˂p`ZH~ㅐftAJlbے`lJfp`ےbvXnlJtAd`f~|drnvpbtlnXvtbdQZf`vX|ZdQp˂rJltے`JXQtArdbHAZdrtAZHAbtlJbHAZpvpfH˂pZXv`f˂rXQvXnQXb㉀۝`vXntbnJXQrvnXHAZp˂vp`v|ZdQHfpvtAJlfH~JtArd`f~|drnvpbtlXQJ`ےbdQZ|r˂p|ZdQbp˂rJltے`JXQtArd˂rXQ~f`HAbے~HfJ`ےvpfHpJAHrvˍpfvpfH˂pZHAv`frXQJXnvbtlnXvtbdQZf`vX|ZdQHfpvtAJlfH~JtArdbHAZdrtAZHAbtlJXQJ`ےbdQZ|r˂p|ZdQbJ`ےvXn`JXQrpvnbHAZp~f`ˁ`ZH~ㅐfېf`vbے`~Hfp`ےbpfH~JtArd`f~|drnvpbtlnXvtbdQZf`vXtlJp˂rJltے`JXQtArdbHAZdrtAZHAbtlJbHAZpvpfH˂pZXv`f˂rXQvXnQXAHr󙐝`vXnXnvJXQrvnXHAZp˂f`v|ZdQHfpvtAJlfH~JtArd`f~|drnvptArdXQJ`ےbdQZ|r˂p|ZdQbp˂rJltے`JXQtArd˂b~f`HAbے~HfJ`ےvpfHˁ`ZQXvˍp|pfH~˂pZHAv`frXQJXnvbtlnXvtbdQZf`vX|ZdQHfpvtAJlfH~|ZdQbbHAZdrtAZHAbtlJXQJ`ےbdQZ|r˂p|ZdQbHAZp˂vXn`JXQrpvnbHAZp~f`b㉀ۑpdrQtf`vbے`~Hfp`ےbpfH~JtArd`f~|drnvpbtlnXvtbdQZf`vXtlJp˂rJltے`JXQtArdbHAZdrtAZHAbtlJrXQJvpfH˂pZXv`f˂rXQvXnJAHrJltXnvJXQrvnXHAZp˂vp|ZdQHfpvtAJlfH~JtArd`f~|drnvptArdXQJ`ےbdQZ|r˂p|ZdQbp˂rJltے`JXQtArd`ےb~f`HAbے~HfJ`ےvpfHˁ`ZQXbAdZ|pfH~˂pZHAv`frXQJfH~btlnXvtbdQZf`vX|ZdQHfpvtAJlfH~|ZdQtAbHAZdrtAZHAbtlJXQJ`ےbdQZ|r˂p|ZdQbHAZp˂vXn`JXQrpvnbHAZp~f`b㉀ۑpdrQtf`vbے`~Hfp`ےbf`vXJtArd`f~|drnvpbtlnXvtbdQZf`vXrd|p˂rJltے`JXQtArdbHAZdrtAZHAbtlJrXQJvpfH˂pZXv`f˂rXQvXn`ZQXbJltXnvJXQrvnXHAZp˂nvp|ZdQHfpvtAJlfH~JtArd`f~|drnvpZdQbtXQJ`ےbdQZ|r˂p|ZdQbp˂rJltے`JXQtArd`p˂~f`HAے`~HfJ`ےJvpfHۑpJbAdZ|pfH~˂pZHAv`frXQJfH~btlnXvtbdQZf`vX|ZdQHfpvtAJlfH~lJtAbHAZdrtAZHAbtlJXQJ`ےbdQZ|r˂p|ZdQbrXQJ`vXnJXQrbpvnltb~f`AHr󙐂˂drQtf`vbے`~Hfp`ےbf`vXJtArd`f~|drnvpbtlnXvtbdQZf`vXrd|p˂rJltے`JXQtArdbHAZdtAJZHAbtlJےbHAvpfHtlJXv`fdQZ|vXn`ZQXbJltXnvJXQrvnXHAZp˂H~f|ZdQHfpvtAJlfH~JtArd`f~|drnvpZdQbtXQJ`ےbdQZ|r˂p|ZdQbp˂rltbے`JXQfpvZp˂~f`tAd|~HfdrtAJvpfHۑpJbAdZ|pfH~˂pZHAv`frXQJ`vXnbtlnXvtbdQZf`vX|ZdQHfpvtAJlfH~l|ZbHAZdtAJZHAbtlJXQJ`ےnvpr˂p~HfrXQJ`vXnZdQbtpvnltb~f`AHr󙐉drQtf`vbے`~Hfp`ےbvpfJtArd`f~|drnvpbtlnXvtbdQZf`vXdQbtp˂rltbے`JXQfpvbHAZfHfZHAbpvnےbHAvpfHlJtAXv`fdQZ|vXnۑpJAHJltXnvJXQrvnXHAZp˂H~f|ZdQHfpvtAJlfH~JtArd`fH|drnvplJtArXQJ`ےnvpr˂pnXv`p˂r`vXnے`JXQXv`fXQJ`ے~f`rd|~HfdrtAJvpfHr󙐂ˁ`bAdZ|pfH~˂pZHAv`frXQJ`vXnbtlnXvtbdQZf`vX|ZdQfpvtAJlfے`Jd|ZbHAZfHfZHAbf~HXQJ`ےvpfr˂p~HfJltvXnZdQbtpvnltb~f`ZQXb㉀drQtf`vbے`~Hfp`ےbvp`JtArd`fH|drnvpbtlnrXQJtbdQZXQHAbdQbtp˂r`vXnے`JXQfpvbHAZH~fZHAbpvnbQZdvpfHlJtAXv`fdQZ|vXnۑpJAHJltXnvJXQrvnXHAZp˂vXn|ZdQfpvtAJlfے`JJtArd`ےHA|drے`JXQlJtArXQJ`ےvpfr˂pnXv`p˂r`vXnے`JXQXv`prtAJl~f`rd|~HfdrtAJvpfHr󙐂ˁ`bAdZ|pfH~˂pZHAv`frXQJvpfHbtlnrXQJtbdQZXQr˂|ZdQZp˂tAJlr˂pdtlbHAZH~fZHAbf~HXQJ`ےvpfr˂pvnXtbdQvXnZdQbtpvnltb~f`ZQXAHrdrQtf`vے`J~Hfp`ےJl~f`JtArd`ےHA|drpZHAbbtlrXQJ`tbdQZZHAbJfpvp˂r`vXnے`JXQfpvbHAZH~fZHAbv`fZ|dvpfHlJtAXv`fdQZ|vXnˁ`ZJltXnvXQrbtvnXtdrvXn|ZdQZp˂tAJl璐ے`JJtArdےbHA|drے`JXQnvfXQJ`ےvpfr˂pnXv`p˂r`vXnے`JXQ~HfprtAJl~f`rd|~HfdrtAJvpfHQXb㉀bAdZ|pfH~lJtAv`ftAJlvpfHbtlrXQJ`tbdQZXQr˂|ZdQZp˂tAJlr˂p~HfpbHAZH~fZHAbf~HXQJ`ےvpfr˂pvnXtbdQvXnZdQbtpvnltb~f`pJAHrdrQtf`vd|Z~HfptbdQZ~vJtArdےbHA|drpZHAbbtlrXQJ`tbdQZ`JXQrvnXp˂r`vXnے`JXQfpvbHAZH~fZHAbv`fZ|rAJvpfHlJtAXv`fdQZ|vXnˁ`ZJltXnvdQbtvnX|drpfے`|ZdQZp˂tAJl璐ے`JJtArdےbHA|dr˂pZv`fXQJ`ےvpfr˂pnXv`p˂r`vXnے`JXQ~HXvltb~f`rd|~HfdrtAJvpfHQXb㉀bAdZ|pfH~lJtArv`ftAJlJXQrbtlrXQJ`tbdQZXQr˂|ZdQZp˂tAJlHAbے~HfpbHAZH~fZHAbf~HXQJ`ےvpfr˂p`f~dQZ|vXnZdQbtpvnltb~f`p`ZQXdrQtf`vd|Z~HfptbdQZZHAbJtArdےbHA|drpZHAbbtlrXQJ`tbdQZ`JXQrvnXp˂r`vXnے`JXQfpvbHAZH~fZHAbHfpvdrtAJvpfHlJtAXv`fdQZ|vXnb㉀ۑpJltXnvdQbtvnX|lt`JXQ|ZdQZp˂tAJl璐ے`JJtArdےbHA|dr˂pZv`f~XQJ`ےvpfr˂pnXv`p˂r`vXnے`JXQnXvltb~f`rd|~HfdrtAJvpfHJAHrbAdZ|pfH~lJtArv`fbdQZ|r˂pbtlrXQJ`tbdQZXQr˂|ZdQZp˂tAJlHAbfpvbHAZH~fZHAbf~HXQJ`ےvpfr˂p`f~dQZ|vXnZdQbtpvnltb~f`ˁ`ZQXdrQtf`vd|Z~HfpdrtAZHAbJtArdےbHA|drpZHAbbtlrXQJ`tbdQZ˂pZHAnXv`p˂r`vXnے`JXQfpvbHAZH~fZHAbHfpvdrtAJvpfHlJtAXv`fdQZ|vXnb㉀ۑpJltXnvdQbtvnXJlt`JXQ|ZdQZp˂tAJl璐ے`JJtArdےbHA|drbے`f~HXQJ`ےvpfr˂pnXv`p˂r`vXnے`JXQ~HbdQZ|~f`rd|HfpdrtAJvpfZJAHfbAdZ|pfH~lJtArv`fbdQZ|r˂pZbtlrXQJ`tbdQZXQr˂|ZdQZp˂tAJlJXQrfpvbHAZH~fZHAbf~HXQJ`ےvpfr˂pfpvdrtvXnZdQbtvnrltbHAbے`vXndrQtf`vd|Z~HfpdrtAAb`JJtArdےbHA|drpZHAbbtlrXQJ`tbdQZ˂pZHAnXv`p˂r`vXnے`JXQfpvbHAZH~fZHAےnXv`AJltvpfےlJtAXQJ`ےdQZ|`JXQrvˍpfJltXnvdQbtvnXdQZ|XQr˂|ZdQZp˂tAJl璐ے`JJtArdےbHA|drbے`f~HXQJ`ےvpfr˂pnXv`p˂r`vXn`JXQrf~HbdQZ|`JXQrrd|HAZpdrtAJ˂pZH~ㅐfbAdZ|pfH~lJtArv`fdrtAJpZHAbbtlrXQJ`tbdQZXQr˂|ZdQZp˂tAJlJXQHAbfvnXbHAZH~fZHAےf~HXQJ`ےvpfbtlfpvdrt˂pZZdQbt˂rXQltbHAbے`vXndrQtf`vd|Z~Hfpltbے`JJtArdےbHA|drpZHAbbtlrXQJ`tbdQZے`Jv`fp˂r`vXn`JXQrfpvJltH~fJtAdnXv`AJltHAbےlJtAJ`ےdQZ|`JXQrvˍpfJltXnvdQbtvnXdQZ|XQr˂|ZdQZp˂tAJl璐ے`JJtArdےbHA|dtAXQr˂~HfpXQJ`ےvpfbtlnXv`bdQZ|`vXn|ZdQbpvnbQZd`JXQrrd|bHAZpdrtAJ˂p`H~ㅐfbAdZ|pfH~lJtArv`fdrtAJpZHAbbtlrXQJ`tbdQZXQr˂|ZdQZp˂JltpZHAbvnXJltH~fJtAdf~HdrtAvpftlJXv`frtAJl˂pZZdQbt˂rXQltbJXQr`vXndrQtf`vd|Z~HfpltdJQrJtArdےbHA|dtApZHAbbtlrXQJ`bnvے`Jv`fbdQZ|`vXn|ZdQbfpvJltH~ftArd~HftbdQHAbےlJtAJ`ےdQZ|˂pZHAvˍpfJltXnvdQbtvnXrtAJl˂pZH|ZdQZp˂Jltے`JJfpvےbHApfHXQr˂~HfpdrtAvpftlJnXv`bdQZ|`vXn|ZdQbpvnZ|d`JXQrrd|bHAZpdrtAJbے`H~ㅐfbAdZ|pfH~lJtArv`ftbdQAbے`btlrXQJ`bnvXQr˂nXvZp˂f`vXp`JXQvnvfJltH~ftArdf~HdrtAvpftlJXv`frtAJl˂pZZdQbt˂rXQltbJXQr`vXndrQtf`vd|ZHfpvZ|dJXQrJfpvےbHApfHpZHAb`f~rXQJ`nvpr˂p~HfbdQZ|`vXn|ZdQbfpvJltH~ftArd~HXtbdQHAbےlJtAJ`ےdQZ|˂pZHAvˍpfJlt66666666666666666666666666666666666666666667777777777777777777777 \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv3_0.dat b/mpdf/qrcode/data/qrv3_0.dat deleted file mode 100644 index 07a0af5..0000000 Binary files a/mpdf/qrcode/data/qrv3_0.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv3_1.dat b/mpdf/qrcode/data/qrv3_1.dat deleted file mode 100644 index 4a1fa32..0000000 Binary files a/mpdf/qrcode/data/qrv3_1.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv3_2.dat b/mpdf/qrcode/data/qrv3_2.dat deleted file mode 100644 index 6e60276..0000000 Binary files a/mpdf/qrcode/data/qrv3_2.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv3_3.dat b/mpdf/qrcode/data/qrv3_3.dat deleted file mode 100644 index cb5289e..0000000 Binary files a/mpdf/qrcode/data/qrv3_3.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv40_0.dat b/mpdf/qrcode/data/qrv40_0.dat deleted file mode 100644 index 7bbfe5a..0000000 --- a/mpdf/qrcode/data/qrv40_0.dat +++ /dev/null @@ -1,353 +0,0 @@ -~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwvutstststsrqrqrqrqopopopopnmnmnmnmjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMLKLKLKJIJIJIJIHGHGHGHGFEFEFEFE~}~}~}~}|{|{|{|{zyzyzyzyvuvuvuvutstststsrqrqrqrqopopoooonmnmnmnmjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFE~}~}~}~}|{|{|{|{zyzyzyzyvuvuvuvutstststsrqrqrqrqoopopoponmnmnmnmjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYXWXWVUVUVUVUSSSSSTSTRQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFE~}~}~}~}|{|{|{|{zyzyzyzyvuvuvuvutstststsrqrqrqrqpopopoponmnmlklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUSTSTSTSTRQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFE~}~}~}~}|{|{|{|{zyzyzyzyvuvuvuvutstststsrqrqrqrqpopopopolklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUSTSTSTSTRQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFE~}~}~}~}|{|{|{|{zyzyzyxwvuvuvuvutstststsrqrqrqrqpopopopolklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUSTSTSTSTRQRQRQRQPONMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFE~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvutstststsrqrqrqrqpopopopolklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[XWXWXWXWVUVUVUVUSTSTSTSTRQRQRQRQNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFE~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvutstststsrqrqrqrqoooopopolklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[ZYZYXWXWXWXWVUVUVUVUSTSTSTSTRQRQRQRQNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFE~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvutstststsrqrqrqrqpoponmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVUSTSSSSSSRQRQRQRQNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFE~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvutstststsrqrqrqrqnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFE~}~}~}~}|{|{|{zyxwxwxwxwvuvuvuvutstststsrqrqrqrqnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSRQPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFE~}~}~}~}zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFE~}~}~}~}zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFE~}~}~}~}zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSTSTSSSPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFE~}~}~}~}zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUSSTSTSTSPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFE~}~}~}|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVUTSRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFE|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqrqnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFE|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsrqrqrqponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa`_`_^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFE|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststspopopooonmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsooopopopnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsopopopopnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsopopopopnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbabababa^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsopopopopnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdcbaba`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsopopopopnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUVUVURQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsopopopopnmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWVUVUTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststsooooooponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWTSTSSSSSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststspopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcdcdc`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWSTSTSTSTRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststspopopoponmnmnmnmlklklklkjijijijihghghghgfefefefedcdcbaba`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWSTSTSTSTRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststspopopoponmnmnmnmlklklklkjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWSTSTSTSTRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststspopopoponmnmnmnmlklklklkjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWSTSTSTSTRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGFEDCDCDCDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutstststspopopoponmnmnmnmlklklklkjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWSTSTSTSTRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGDCDCDCDCDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvutsrqrqrqpopooooonmnmnmnmlklklklkjijijijihghghghgfefefefebabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWSTSTSTSSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGDCDCDCDCDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvurqrqrqrqopopopopnmnmnmnmlklklklkjijijijihghghghgfefedcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWSSSSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGDCDCDCDCDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvurqrqrqrqopopopopnmnmnmnmlklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGHGHGHGDCDCDCDCDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvurqrqrqrqopopopopnmnmnmnmlklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIHGFEFEFEDCDCDCDCDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvurqrqrqrqopopopopnmnmnmnmlklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDCDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvurqrqrqrqopopopopnmnmnmnmlklklklkjijijijihghghghgdcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDCDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvurqrqrqrqopopopoonmnmnmnmlklklklkjijijijihghgfefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYXWXWXWXWTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDCDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvurqrqrqrqoooopoponmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSSSSSSTRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDCDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvurqrqrqrqpopopoponmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUSTSTSTSTRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKJIHGHGHGFEFEFEFEDCDCDCDCDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvurqrqrqrqpopopoponmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUSTSTSTSTRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEDCDCDCDCDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvurqrqrqrqpopopoponmnmnmnmlklklklkjijijijifefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUSTSTSTSTRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEDCDCDCDCDCDCDCDC~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvurqrqrqrqpopopoponmnmnmnmlklklklkjijihghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUSTSTSTSTRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEDCDCDCDCDCBABABA~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvuvurqrqrqrqpopopoponmnmnmnmlklklklkhghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUSTSTSTSTRQRQRQRQPOPOPOPONMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEDCDCDCDCBABABABA~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwvuvuvutsrqrqrqrqpoooooopnmnmnmnmlklklklkhghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUSTSTSSSSRQRQRQRQPOPOPOPONMNMNMNMLKJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwtstststsrqrqrqrqopopopopnmnmnmnmlklklklkhghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUSSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwtstststsrqrqrqrqopopopopnmnmnmnmlklklklkhghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwtstststsrqrqrqrqopopopopnmnmnmnmlklkjijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABA~}~}~}~}|{|{|{|{zyzyzyzyxwxwxwxwtstststsrqrqrqrqopopopopnmnmnmnmjijijijihghghghgfefefefedcdcdcdcbabababa`_`_`_`_^]^]^]^]\[\[\[\[ZYZYZYZYVUVUVUVUTSTSTSTSRQRQRQRQPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGFEFEFEFEDCDCDCDCBABABABABABABABA@?@?@?@?>=>=>=>=<;<;<;<;:98787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!        - - - - BABABABA@?@?@?@?>=>=>=>=<;<;<;<;877777786565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!        - - - BABABABA@?@?@?@?>=>=>=>=<;<;<;<;787878786565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!        BABABABA@?@?@?@?>=>=>=>=<;<;<;<;787878786565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!        BABABABA@?@?@?@?>=>=>=>=<;<;<;<;787878786565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#"!"!"!"!        BABABABA@?@?@?@?>=>=>=>=<;<;<;<;787878786565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#"!"!"!"!        BABABABA@?@?@?@?>=>=>=>=<;<;<;<;787878786565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - BABABABA@?@?@?@?>=>=>=>=<;<;<;<;787877776565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - BABABABA@?@?@?@?>=>=>=>=<;<;<;<;778787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - BABABABA@?@?@?@?>=>=>=>=<;<;<;<;878787876565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - BABABABA@?@?@?@?>=>=>=>=<;<;<;<;878787876565656543434343212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - BABABABA@?@?@?@?>=>=>=>=<;<;<;<;878787876565656543434343212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!       - - - - BABABABA@?@?@?@?>=>=>=>=<;<;<;<;878787876565656543434343212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!     - - - - BABABABA@?@?@?@?>=>=>=>=<;<;<;:9878787876565656543434343212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!     - - - - BABABABA@?@?@?@?>=>=>=>=:9:9:9:9777778786565656543434343212121210/0/0/0/.-.-.-.-*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!     - - - - BABABABA@?@?@?@?>=>=>=>=:9:9:9:9787878786565656543434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!     - - - - BABABABA@?@?@?@?>=>=>=>=:9:9:9:9787878786565656543434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!     - - - - BABABABA@?@?@?@?>=>=>=>=:9:9:9:9787878786565656543434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - BABABABA@?@?@?@?>=>=>=>=:9:9:9:9787878786565656543434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - BABABABA@?@?@?@?>=>=>=>=:9:9:9:9787878786565656543434343212121210/0/0/0/,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!        - - - - BABABABA@?@?@?@?>=>=>=>=:9:9:9:978777777656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!      - - - - BABABABA@?@?@?@?>=>=>=>=:9:9:9:987878787656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!    - - - - BABABABA@?@?@?@?>=>=>=>=:9:9:9:987878787656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!    - - - - BABABABA@?@?@?@?>=>=>=>=:9:9:9:987878787656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!    - - - - BABABABA@?@?@?@?>=>=>=>=:9:9:9:987878787656565654343434321212121.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!    - - - - BABABABA@?@?@?@?>=>=>=>=:9:9:9:98787878765656565434343430/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!    - - - - BABABABA@?@?@?@?>=>=>=>=:9:9:9:98787877765656565434343430/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!    - - - - BABABABA@?@?@?@?>=<;<;<;:9:9:9:97778787865656565434343430/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!    - - - - BABABABA@?@?@?@?<;<;<;<;:9:9:9:97878787865656565434343430/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!    - - - - BABABABA@?@?@?@?<;<;<;<;:9:9:9:97878787865656565434343430/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!    - - - - BABABABA@?@?@?@?<;<;<;<;:9:9:9:97878787865656565212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!    - - - - BABABABA@?@?@?@?<;<;<;<;:9:9:9:97878787865656565212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!    - - - - BABABABA@?>=>=>=<;<;<;<;:9:9:9:97878787865656565212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!    - - - - BABABABA>=>=>=>=<;<;<;<;:9:9:9:97777778765656565212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#"!"!"!"!    - - - - BABABABA>=>=>=>=<;<;<;<;:9:9:9:98787878765656565212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#        - - - - BABABABA>=>=>=>=<;<;<;<;:9:9:9:98787878743434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#        - - - - BABABABA>=>=>=>=<;<;<;<;:9:9:9:98787878743434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#        - - - - BA@?@?@?>=>=>=>=<;<;<;<;:9:9:9:98787878743434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#        - - - - @?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:98787777743434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%$#$#$#$#        - - - - @?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:98787878743434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!        - - - - @?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:96565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!        - - - - @?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:96565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!        - - - - @?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:96565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!        - - - - @?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:96565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('&%&%&%&%"!"!"!"!        - - - - @?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:96565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!        - - - - @?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:96565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!        - - - - @?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:96565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!        - - - - @?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:96565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!        - - - - @?@?@?@?>=>=>=>=<;<;<;<;:9:9:9:96565656543434343212121210/0/0/0/.-.-.-.-,+,+,+,+*)*)*)*)('('('('$#$#$#$#"!"!"!"!        - - - - %%&&''((iihhggff==>>??@@``__^^]]eeffgghh88776655 zzyyxxww{{||}}~~ ""##$$%%{{zzyyxxJJKKLLMMSSRRQQPPrrssttuu++**))(([[\\]]^^'&&%%$$# - -//001122nnmmllkkWWXXYYZZFFEEDDCC6677==>>DDCCBBAA<<==>>??))**++,,eeddccbbAABBCCDD\\[[ZZYYiijjkkll44332211 - -  vvuuoonn&&''(())wwvvuuttNNOOPPQQOONNMMLLvvwwxxyy''&&%%$$__``aabb#""!!  33445566jjiihhgg[[\\]]^^BBAA@@????@@AABB@@??>>==@@AABBCC--..//00aa``__^^ ~~}}EEFFGGHHXXWWVVUUmmnnoopp00//..--!!""##$$mmllkkjj**++,,--ssrrqqppRRSSTTUUKKJJIIHHzz{{||}}##""!!  ccddeeff778899::ffeeddcc__``aabb>>==<<;;CCDDEEFF<;:98776 - -~~DDEEFFGG11223344]]\\[[ZZ!!""##$$||{{zzyyIIJJKKLLTTSSRRQQqqrrsstt,,++**))%%&&''((iihhggff ..//0011oonnmmllVVWWXXYYGGFFEEDD~~ - - gghhiijj;;<<==>>bbaa``__ccddeeff::998877GGHHIIJJ65544332  !!""##}}||{{zzHHIIJJKK55667788YYSSRRQQ%%&&''((xxwwvvuuMMNNOOPPPPOONNMMuuvvwwxx((''&&%%))**++,,eeddccbb - - 22334455kkjjiihhZZ[[\\]]CCBBAA@@kkllmmnn??@@AABB^^]]\\[[gghhiijj66554433 KKLLMMNN21100//.$$%%&&''yyxxwwvvLLMMNNOO99::;;<>==<<~~oouuvvww CCDDEEFFZZYYXXWWkkllmmnn221100// - - OOPPQQRR.--,,++*(())**++uuttssrrPPQQRRSS==>>??@@LLKKJJII--..//00ppoonnmmUUVVWWXXHHGGFFEE}}~~  - - 11223344]]\\[[ZZ::;;<<==ccbbaa``bbccddee;;::9988}}||{{zzxxyyzz{{ - -  !!""~~}}||{{GGHHIIJJVVUUTTSSooppqqrr..--,,++SSYYZZ[[*))((''&,,--..//qqppoonnTTUUVVWWAABBCCDDHHGGFFEE11223344llkkjjiiYYZZ[[\\DDCCBBAA 55667788YYSSRRQQ>>??@@AA__^^]]\\ffgghhii77665544 yyxxwwvv||}}~~##$$%%&&zzyyxxwwKKLLMMNNRRQQPPOOssttuuvv**))((''\\]]^^__&%%$$##" - - 00112233mmllkkjjXXYYZZ[[EEFFGGHHDDCCBBAA55667788hhggffee]]^^__``@@??>>==99::;;<>==99::;;<>??@@LLKKJJII !!~~}}||FFGGHHIIWWVVUUTTnnooppqq//..--,,""##$$%%llkkjjii++,,--..rrqqppooSSTTUUVVJJIIHHGG{{||}}~~""!!  - -ddeeffgg8899::;;eeddccbb``aabbccMMNNOOPP77665544==>>??@@``__^^]]eeffgghh88776655 AABBCCDDHHGGFFEE""##$$%%{{zzyyxxJJKKLLMMSSRRQQPPrrssttuu++**))((&&''(())hhggffee - -//001122nnmmllkkWWXXYYZZFFEEDDCC hhiijjkk<<==>>??aa``__^^ddeeffggQQRRSSTT33221100AABBCCDD\\[[ZZYYiijjkkll44332211 - -  ~~}}EEFFGGHHDDCCBBAA&&''(())wwvvuuttNNOOPPQQOONNMMLLvvwwxxyy''&&%%$$**++,,--ddccbbaa 33445566jjiihhgg[[\\]]^^BBAA@@??llmmnnoo@@AABBCC]]\\[[ZZhhiijjkk~~}}UUVVWWXX//..--,,EEFFGGHHXXWWVVUUmmnnoopp00//..--!!""##$$||{{zzyyIIJJKKLL@@??>>==**++,,--ssrrqqppRRSSTTUUKKJJIIHHzz{{||}}##""!!  ..//0011``__^^]]778899::ffeeddcc__``aabb>>==<<;;~~}}uuvvwwxx ~~DDEEFFGGYYXXWWVVllmmnnoo||{{zzyyYYZZ[[\\++**))((IIJJKKLLTTSSRRQQqqrrsstt,,++**))%%&&''((xxwwvvuuMMNNOOPP77665544..//0011oonnmmllVVWWXXYYGGFFEEDD~~ - - 22334455\\[[ZZYY;;<<==>>bbaa``__ccddeeff::998877||{{zzyyyyzz{{|| - -  !!""##}}||{{zzHHIIJJKKUUTTSSRRppqqrrssxxwwvvuu]]^^__``''&&%%$$MMNNOOPPPPOONNMMuuvvwwxx((''&&%%))**++,,ttssrrqqQQRRSSTT3322110022334455kkjjiihhZZ[[\\]]CCBBAA@@66778899SSRRQQPP??@@AABB^^]]\\[[gghhiijj66554433 xxwwvvuu}}~~$$%%&&''yyxxwwvvLLMMNNOOQQPPOONNttuuvvwwttssrrqqaabbccdd##""!!QQRRSSTTLLKKJJIIyyzz{{||$$##""!!--..//00ppoonnmmUUVVWWXX//..--,,66778899ggffeedd^^__``aa??>>==<<::;;<<==OONNMMLLCCDDEEFFZZYYXXWWkkllmmnn221100// - -  !!""oonnmmll(())**++uuttssrrPPQQRRSSMMLLKKJJxxyyzz{{ppoonnmmeeffgghhUUVVWWXXHHGGFFEE}}~~  - - 11223344llkkjjiiYYZZ[[\\++**))((::;;<<==ccbbaa``bbccddee;;::9988>>??@@AAKKJJIIHH !!""~~}}||{{GGHHIIJJVVUUTTSSooppqqrr..--,,++##$$%%&&kkjjiihh,,--..//qqppoonnTTUUVVWWIIHHGGFF||}}~~llkkjjiiiijjkkll~~}}||YYZZ[[\\DDCCBBAA 55667788hhggffee]]^^__``''&&%%$$>>??@@AA__^^]]\\ffgghhii77665544 BBCCDDEEGGFFEEDD##$$%%&&zzyyxxwwKKLLMMNNRRQQPPOOssttuuvv**))((''''(())**ggffeedd - - 00112233mmllkkjjXXYYZZ[[EEDDCCBBhhggffeemmnnoopp{{zzyyxx]]^^__``@@??>>==99::;;<>aa``__^^ddccbbaaqqrrsstt wwvvuutsaabbccdd<<;;::99==>>??@@``__^^]]eeffgghhFFGGHHIIWWVVUUTTnnooppqq//..--,,""##$$%%{{zzyyxxJJKKLLMM??>>==77++,,--..rrqqppooSSTTUUVVJJIIHHGG{{||}}~~""!!  - -//001122__^^]]\\8899::;;eeddccbb``aabbcc==<<;;::]]\\[[ZZ``__^^]]uuvvwwxx - - - -rqpoonnmeeffgghh88776655 AABBCCDD\\[[ZZYYiijjkkllJJKKLLMMSSRRQQPPrrssttuu++**))((&&''(())wwvvuuttNNOOPPQQ66554433//001122nnmmllkkWWXXYYZZFFEEDDCC 33445566[[ZZYYSS<<==>>??aa``__^^ddeeffgg99887766YYXXWWVV\\[[ZZYYyyzz{{|| mllkkjjiiijjkkll44332211 - -  ~~}}EEFFGGHHXXWWVVUUmmnnooppNNOOPPQQOONNMMLLvvwwxxyy''&&%%$$**++,,--ssrrqqppRRSSTTUU221100//33445566jjiihhgg[[\\]]^^BBAA@@??778899::RRQQPPOO@@AABBCC]]\\[[ZZhhiijjkk55443322UUTTSSRRXXWWVVUU}}~~ihhggffemmnnoopp00//..--!!""##$$||{{zzyyIIJJKKLLTTSSRRQQqqrrsstt ~~}}||RRSSTTUUKKJJIIHHzz{{||}}##""!!  ..//0011oonnmmllVVWWXXYY..--,,++778899::ffeeddcc__``aabb>>==<<;;;;<<==>>NNMMLLKK~~DDEEFFGGYYXXWWVVllmmnnoo1100//..QQPPOONNTTSSRRQQeddccbbaqqrrsstt,,++**))%%&&''((xxwwvvuuMMNNOOPPPPOONNMMuuvvwwxx - - {{zzyyxxVVWWXXYYGGFFEEDD~~ - - 22334455kkjjiihhZZ[[\\]]**))(('';;<<==>>bbaa``__ccddeeff::998877??@@AABBJJIIHHGG !!""##}}||{{zzHHIIJJKKUUTTSSRRppqqrrss--,,++**MMLLKKJJPPOONNMMa``__^^]uuvvwwxx((''&&%%))**++,,ttssrrqqQQRRSSTTLLKKJJIIyyzz{{||wwvvuutsZZ[[\\]]CCBBAA@@66778899ggffeedd^^__``aa&&%%$$##??@@AABB^^]]\\[[gghhiijj66554433 CCDDEEFFFFEEDDCC$$%%&&''yyxxwwvvLLMMNNOOQQPPOONNttuuvvww))((''&&IIHHGGFFLLKKJJII!!""##]\\[[ZZYyyzz{{||$$##""!!--..//00ppoonnmmUUVVWWXXHHGGFFEE}}~~ - -rqpoonnm^^__``aa??>>==<<::;;<<==ccbbaa``bbccddee""!!CCDDEEFFZZYYXXWWkkllmmnn221100// - -  !!""~~}}||{{GGHHIIJJBBAA@@??(())**++uuttssrrPPQQRRSSMMLLKKJJxxyyzz{{%%$$##""EEDDCCBBHHGGFFEE$$%%&&''YXWVUTSS}}~~  - - 11223344llkkjjiiYYZZ[[\\DDCCBBAA mllkkjjibbccddee;;::9988>>??@@AA__^^]]\\ffgghhiiGGHHIIJJVVUUTTSSooppqqrr..--,,++##$$%%&&zzyyxxwwKKLLMMNN>>==7766,,--..//qqppoonnTTUUVVWWIIHHGGFF||}}~~!! AA@@??>>DDCCBBAA(())**++RRQQPPOO 55667788hhggffee]]^^__``@@??>>==ihhggffeffgghhii77665544 BBCCDDEE[[ZZYYXXjjkkllmmKKLLMMNNRRQQPPOOssttuuvv**))((''''(())**vvuuttssOOPPQQRR5544332200112233mmllkkjjXXYYZZ[[EEDDCCBB==<<;;::@@??>>==,,--..//NNMMLLKK99::;;<>99887766<<;;::9900112233JJIIHHGG==>>??@@``__^^]]eeffgghh88776655a``__^^]nnooppqq//..--,,""##$$%%{{zzyyxxJJKKLLMMSSRRQQPPrrssttuu - -~~}}||{{SSTTUUVVJJIIHHGG{{||}}~~""!!  - -//001122nnmmllkkWWXXYYZZ--,,++**8899::;;eeddccbb``aabbcc==<<;;::554433228877665544556677FFEEDDCC AABBCCDD\\[[ZZYYiijjkkll44332211!!""##]\\[[ZZYrrssttuu++**))((&&''(())wwvvuuttNNOOPPQQOONNMMLLvvwwxxyy zzyyxxwwWWXXYYZZFFEEDDCC 33445566jjiihhgg[[\\]]^^))((''&&<<==>>??aa``__^^ddeeffgg998877661100//..44332211==>>??@@BBAA@@?? - -  ~~}}EEFFGGHHXXWWVVUUmmnnoopp00//..--$$%%&&''YXWVUTSSvvwwxxyy''&&%%$$**++,,--ssrrqqppRRSSTTUUKKJJIIHHzz{{||}}vvuutsrq[[\\]]^^BBAA@@??778899::ffeeddcc__``aabb%%$$##""@@AABBCC]]\\[[ZZhhiijjkk55443322 - ---,,++**00//..--AABBCCDD>>==<;:9!!""##$$||{{zzyyIIJJKKLLTTSSRRQQqqrrsstt,,++**))(())**++RRQQPPOOzz{{||}}##""!!  ..//0011oonnmmllVVWWXXYYGGFFEEDD~~ - - poonnmml__``aabb>>==<<;;;;<<==>>bbaa``__ccddeeff!!DDEEFFGGYYXXWWVVllmmnnoo1100//.. ))((''&&,,++**))EEFFGGHH87766554%%&&''((xxwwvvuuMMNNOOPPPPOONNMMuuvvwwxx((''&&%%,,--..//NNMMLLKK~~ - - 22334455kkjjiihhZZ[[\\]]CCBBAA@@ lkkjjiihccddeeff::998877??@@AABB^^]]\\[[gghhiijjHHIIJJKKUUTTSSRRppqqrrss--,,++**%%$$##""((''&&%%IIJJKKLL43322110))**++,,ttssrrqqQQRRSSTTLLKKJJIIyyzz{{||$$##""!!00112233JJIIHHGG66778899ggffeedd^^__``aa??>>==<<hggffeedgghhiijj66554433 CCDDEEFFZZYYXXWWkkllmmnnLLMMNNOOQQPPOONNttuuvvww))((''&&!! $$##""!!MMNNOOPP0//..--,--..//00ppoonnmmUUVVWWXXHHGGFFEE}}~~ 44556677FFEEDDCC::;;<<==ccbbaa``bbccddee;;::9988dccbbaa`kkllmmnn221100// - -  !!""~~}}||{{GGHHIIJJVVUUTTSSooppqqrr ~~PPQQRRSSMMLLKKJJxxyyzz{{%%$$##"" QQRRSSYY,++**))( - - 11223344llkkjjiiYYZZ[[\\DDCCBBAA==>>??@@BBAA@@??>>??@@AA__^^]]\\ffgghhii77665544`__^^]]\ooppqqrr..--,,++##$$%%&&zzyyxxwwKKLLMMNNRRQQPPOOssttuuvv - - }}||{{zzTTUUVVWWIIHHGGFF||}}~~!!  - - ZZ[[\\]](''&&%%$ 55667788hhggffee]]^^__``@@??>>==AABBCCDD>>==<;:9 BBCCDDEE[[ZZYYXXjjkkllmm33221100!!""##$$\[[ZZYYXssttuuvv**))((''''(())**vvuuttssOOPPQQRRNNMMLLKKwwxxyyzzyyxxwwvvXXYYZZ[[EEDDCCBB ^^__``aa$##""!! 99::;;<>bbccddee==>>??@@``__^^]]eeffgghh88776655 IIJJKKLL43322110""##$$%%{{zzyyxxJJKKLLMMSSRRQQPPrrssttuu++**))(())**++,,QQPPOONN{{||}}~~""!!  - -//001122nnmmllkkWWXXYYZZFFEEDDCC - - onnmmllk``aabbcc==<<;;:: - - ffgghhiiAABBCCDD\\[[ZZYYiijjkkll44332211 - - MMNNOOPP0//..--,&&''(())wwvvuuttNNOOPPQQOONNMMLLvvwwxxyy''&&%%$$--..//00MMLLKKJJ 33445566jjiihhgg[[\\]]^^BBAA@@?? kjjiihhgddeeffgg99887766  - - jjkkllmm ~~}}EEFFGGHHXXWWVVUUmmnnoopp00//..--QQRRSSYY,++**))(**++,,--ssrrqqppRRSSTTUUKKJJIIHHzz{{||}}##""!! 11223344IIHHGGFF778899::ffeeddcc__``aabb>>==<<;;gffeeddchhiijjkk55443322 - -~~ - - nnoouuvv!!""##$$||{{zzyyIIJJKKLLTTSSRRQQqqrrsstt,,++**))ZZ[[\\]](''&&%%$ ..//0011oonnmmllVVWWXXYYGGFFEEDD~~556677==EEDDCCBB;;<<==>>bbaa``__ccddeeff::998877cbbaa``_llmmnnoo1100//..  !!""##}}||{{zz wwxxyyzz - -%%&&''((xxwwvvuuMMNNOOPPPPOONNMMuuvvwwxx((''&&%%^^__``aa$##""!! - - 22334455kkjjiihhZZ[[\\]]CCBBAA@@>>??@@AAAA@@??>>??@@AABB^^]]\\[[gghhiijj66554433!!_^^]]\\[ppqqrrss--,,++**$$%%&&''yyxxwwvv{{||}}~~ ))**++,,ttssrrqqQQRRSSTTLLKKJJIIyyzz{{||$$##""!!bbccddee66778899ggffeedd^^__``aa??>>==<<BBCCDDEE==<;:987 CCDDEEFFZZYYXXWWkkllmmnn221100//""##$$%%[ZZYYXWVttuuvvww))((''&&(())**++uuttssrr - - ~~}}||{{--..//00ppoonnmmUUVVWWXXHHGGFFEE}}~~  - - ffgghhii::;;<<==ccbbaa``bbccddee;;::9988FFGGHHII76655443 - -  !!""~~}}||{{GGHHIIJJVVUUTTSSooppqqrr..--,,++&&''(())UTSSRRQQxxyyzz{{%%$$##"",,--..//qqppoonn zzyyxxww - - 11223344llkkjjiiYYZZ[[\\DDCCBBAA jjkkllmm>>??@@AA__^^]]\\ffgghhii77665544 JJKKLLMM3221100/##$$%%&&zzyyxxwwKKLLMMNNRRQQPPOOssttuuvv**))((''**++,,--PPOONNMM||}}~~!!  - - 00112233mmllkkjj vvuuoonn 55667788hhggffee]]^^__``@@??>>==nnoouuvvBBCCDDEE[[ZZYYXXjjkkllmm33221100 - - NNOOPPQQ/..--,,+''(())**vvuuttssOOPPQQRRNNMMLLKKwwxxyyzz&&%%$$##..//0011LLKKJJII 44556677iihhggff!!""##$$mmllkkjj99::;;<>))**++,,ttssrrqqQQRRSSTTLLKKJJIIyyzz{{||$$##""!!--..//00aa``__^^66778899ggffeedd^^__``aa??>>==<<MMNNOOPP++**))(($$%%&&''yyxxwwvvLLMMNNOO==776655--..//00ppoonnmmUUVVWWXXHHGGFFEE}}~~  - - 11223344]]\\[[ZZ::;;<<==ccbbaa``bbccddee;;::9988QQRRSSYY''&&%%$$(())**++uuttssrrPPQQRRSS4433221111223344llkkjjiiYYZZ[[\\DDCCBBAA 55667788YYSSRRQQ>>??@@AA__^^]]\\ffgghhii77665544 ZZ[[\\]]##""!! ,,--..//qqppoonnTTUUVVWW00//..--55667788hhggffee]]^^__``@@??>>==99::;;<>??@@LLKKJJII !!~~}}||FFGGHHIIWWVVUUTTnnooppqq//..--,,bbccddee44556677iihhggff\\]]^^__((''&&%%==>>??@@``__^^]]eeffgghh88776655 AABBCCDDHHGGFFEE""##$$%%{{zzyyxxJJKKLLMMSSRRQQPPrrssttuu++**))((ffgghhii8899::;;eeddccbb``aabbcc$$##""!!AABBCCDD\\[[ZZYYiijjkkll44332211 - -  ~~}}EEFFGGHHDDCCBBAA&&''(())wwvvuuttNNOOPPQQOONNMMLLvvwwxxyy''&&%%$$jjkkllmm<<==>>??aa``__^^ddeeffggEEFFGGHHXXWWVVUUmmnnoopp00//..--!!""##$$||{{zzyyIIJJKKLL@@??>>==**++,,--ssrrqqppRRSSTTUUKKJJIIHHzz{{||}}##""!!  nnoouuvv @@AABBCC]]\\[[ZZhhiijjkkIIJJKKLLTTSSRRQQqqrrsstt,,++**))%%&&''((xxwwvvuuMMNNOOPP77665544..//0011oonnmmllVVWWXXYYGGFFEEDD~~ - - wwxxyyzz - - DDEEFFGGYYXXWWVVllmmnnooMMNNOOPPPPOONNMMuuvvwwxx((''&&%%))**++,,ttssrrqqQQRRSSTT3322110022334455kkjjiihhZZ[[\\]]CCBBAA@@{{||}}~~ - - HHIIJJKKUUTTSSRRppqqrrss ~~}}QQRRSSTTLLKKJJIIyyzz{{||$$##""!!--..//00ppoonnmmUUVVWWXX//..--,,66778899ggffeedd^^__``aa??>>==<<~~}}||{{LLMMNNOOQQPPOONNttuuvvww - - ||{{zzyyUUVVWWXXHHGGFFEE}}~~  - - 11223344llkkjjiiYYZZ[[\\++**))((::;;<<==ccbbaa``bbccddee;;::9988zzyyxxwwPPQQRRSSMMLLKKJJxxyyzz{{xxwwvvuuYYZZ[[\\DDCCBBAA 55667788hhggffee]]^^__``''&&%%$$>>??@@AA__^^]]\\ffgghhii77665544 vvuuoonnTTUUVVWWIIHHGGFF||}}~~ tsrqpoon]]^^__``@@??>>==99::;;<>??@@``__^^]]eeffgghhFFGGHHIIWWVVUUTTnnooppqq//..--,,""##$$%%iihhggff !!\\]]^^__AA@@??>>jiihhggfeeffgghh88776655 AABBCCDD\\[[ZZYYiijjkkllJJKKLLMMSSRRQQPPrrssttuu++**))((&&''(())eeddccbb""##$$%%``aabbcc==<<;;::feeddccbiijjkkll44332211 - -  ~~}}EEFFGGHHXXWWVVUUmmnnooppNNOOPPQQOONNMMLLvvwwxxyy''&&%%$$**++,,--aa``__^^&&''(())ddeeffgg99887766baa``__^mmnnoopp00//..--!!""##$$||{{zzyyIIJJKKLLTTSSRRQQqqrrsstt ~~}}||RRSSTTUUKKJJIIHHzz{{||}}##""!!  ..//0011]]\\[[ZZ**++,,--hhiijjkk55443322!!""^]]\\[[Zqqrrsstt,,++**))%%&&''((xxwwvvuuMMNNOOPPPPOONNMMuuvvwwxx - - {{zzyyxxVVWWXXYYGGFFEEDD~~ - - 22334455YYSSRRQQ..//0011llmmnnoo1100//..##$$%%&&ZYYXWVUTuuvvwwxx((''&&%%))**++,,ttssrrqqQQRRSSTTLLKKJJIIyyzz{{||wwvvuutsZZ[[\\]]CCBBAA@@66778899PPOONNMM22334455ppqqrrss--,,++**''(())**SSRRQQPPyyzz{{||$$##""!!--..//00ppoonnmmUUVVWWXXHHGGFFEE}}~~ - -rqpoonnm^^__``aa??>>==<<::;;<<==LLKKJJII66778899ttuuvvww))((''&&++,,--..OONNMMLL}}~~  - - 11223344llkkjjiiYYZZ[[\\DDCCBBAA mllkkjjibbccddee;;::9988>>??@@AAHHGGFFEE::;;<<==xxyyzz{{%%$$##""//001122KKJJIIHH 55667788hhggffee]]^^__``@@??>>==ihhggffeffgghhii77665544 BBCCDDEEDDCCBBAA>>??@@AA||}}~~!! 33445566GGFFEEDD99::;;<>==BBCCDDEE77==>>??CCBBAA@@==>>??@@``__^^]]eeffgghh88776655a``__^^]nnooppqq//..--,,""##$$%%{{zzyyxxJJKKLLMM77665544FFGGHHII@@AABBCC??>>==<; AABBCCDD\\[[ZZYYiijjkkll44332211!!""##]\\[[ZZYrrssttuu++**))((&&''(())wwvvuuttNNOOPPQQ33221100JJKKLLMMDDEEFFGG:9877665 - -  ~~}}EEFFGGHHXXWWVVUUmmnnoopp00//..--$$%%&&''YXWVUTSSvvwwxxyy''&&%%$$**++,,--ssrrqqppRRSSTTUU//..--,,NNOOPPQQHHIIJJKK54433221!!""##$$||{{zzyyIIJJKKLLTTSSRRQQqqrrsstt,,++**))(())**++RRQQPPOOzz{{||}}##""!!  ..//0011oonnmmllVVWWXXYY++**))((RRSSTTUU - -LLMMNNOO100//..-%%&&''((xxwwvvuuMMNNOOPPPPOONNMMuuvvwwxx((''&&%%,,--..//NNMMLLKK~~ - - 22334455kkjjiihhZZ[[\\]]''&&%%$$~~}}||VVWWXXYY PPQQRRSS-,,++**)))**++,,ttssrrqqQQRRSSTTLLKKJJIIyyzz{{||$$##""!!00112233JJIIHHGG66778899ggffeedd^^__``aa##""!!{{zzyyxxZZ[[\\]]YYZZ[[\\)((''&&%--..//00ppoonnmmUUVVWWXXHHGGFFEE}}~~ 44556677FFEEDDCC::;;<<==ccbbaa``bbccddeewwvvuutt^^__``aa]]^^__``%$$##""! - - 11223344llkkjjiiYYZZ[[\\DDCCBBAA==>>??@@BBAA@@??>>??@@AA__^^]]\\ffgghhiissrrqqppbbccddeeaabbccdd!  55667788hhggffee]]^^__``@@??>>==AABBCCDD>>==<;:9 BBCCDDEE[[ZZYYXXjjkkllmmoonnmmllffgghhii - - eeffgghh99::;;<>??@@``__^^]]eeffgghh88776655 IIJJKKLL43322110""##$$%%{{zzyyxxJJKKLLMMSSRRQQPPrrssttuu - - - -ggffeeddnnooppqqmmnnoouuAABBCCDD\\[[ZZYYiijjkkll44332211 - - MMNNOOPP0//..--,&&''(())wwvvuuttNNOOPPQQOONNMMLLvvwwxxyy ccbbaa``rrssttuu~~}}||vvwwxxyy  ~~}}EEFFGGHHXXWWVVUUmmnnoopp00//..--QQRRSSYY,++**))(**++,,--ssrrqqppRRSSTTUUKKJJIIHHzz{{||}}__^^]]\\vvwwxxyy{{zzyyxxzz{{||}} - - !!""##$$||{{zzyyIIJJKKLLTTSSRRQQqqrrsstt,,++**))ZZ[[\\]](''&&%%$ ..//0011oonnmmllVVWWXXYYGGFFEEDD~~[[ZZYYXXzz{{||}}wwvvuuoo~~%%&&''((xxwwvvuuMMNNOOPPPPOONNMMuuvvwwxx((''&&%%^^__``aa$##""!! - - 22334455kkjjiihhZZ[[\\]]CCBBAA@@WWVVUUTT~~ !!""##nnmmllkk))**++,,ttssrrqqQQRRSSTTLLKKJJIIyyzz{{||$$##""!!bbccddee66778899ggffeedd^^__``aa??>>==<<!!""##SSRRQQPP$$%%&&''jjiihhgg--..//00ppoonnmmUUVVWWXXHHGGFFEE}}~~  - - ffgghhii::;;<<==ccbbaa``bbccddee;;::9988$$%%&&''OONNMMLL(())**++ffeeddcc - - 11223344llkkjjiiYYZZ[[\\DDCCBBAA jjkkllmm>>??@@AA__^^]]\\ffgghhii77665544(())**++KKJJIIHH,,--..//bbaa``__ 55667788hhggffee]]^^__``@@??>>==nnoouuvvBBCCDDEE[[ZZYYXXjjkkllmm33221100,,--..//GGFFEEDD00112233^^]]\\[[99::;;<>??@@``__^^]]eeffgghh88776655 zzyyxxww{{||}}~~ ""##$$%%{{zzyyxxJJKKLLMMSSRRQQPPrrssttuu++**))((44556677??>>==<<8899::;;QQPPOONNAABBCCDD\\[[ZZYYiijjkkll44332211 - -  vvuuoonn&&''(())wwvvuuttNNOOPPQQOONNMMLLvvwwxxyy''&&%%$$==>>??@@;;::9988<<==>>??MMLLKKJJ ~~}}EEFFGGHHXXWWVVUUmmnnoopp00//..--!!""##$$mmllkkjj**++,,--ssrrqqppRRSSTTUUKKJJIIHHzz{{||}}##""!! AABBCCDD77665544@@AABBCCIIHHGGFF!!""##$$||{{zzyyIIJJKKLLTTSSRRQQqqrrsstt,,++**))%%&&''((iihhggff ..//0011oonnmmllVVWWXXYYGGFFEEDD~~EEFFGGHH33221100ZHAbtlJ`f~ےbHA`vXnے`JXQtlJnXv`bHAZdrtA`vXnے`JXQfpvXQJ`ےtbdQpfH~pZA`~Hf˂rXQltbvpfH˂pZrd|~Hf˂rXQtbn˂pZHAd|ZvnXHAZp˂f`vbے`dQbtvnX`ےbZ|df`vbے`dQbtbHAXQJdrtAfH~pZHAbf~Zp˂tAJlnvpے`JXQtArdHfpvZp˂vpfr˂ptArdf~Hp˂rJltvpfr˂pnXv`bHAZZ|l璐f`vJXQrbpvnJ`ےdQZ|~f`HAbےZdQbtpvnJ`ےvpfbے`dQbt璕v`f~rXQJXnvJXQrlJtArv`fHAZp˂rtAJlXnvJXQrlJtAr`ےbJltf`vXے`JHfpvrXQJ`tbdQZfH~r˂p|ZdQbnXvrXQJ`H~fZHAb|ZdQbfpvXQJ`ےbdQZ|H~fZHAےf~Hp˂rtbdQZXnvtlJXv`fbHAZpdrtAJvXn`JXQrlJtAXv`fbHAZpHf`JXQHAblJtArfpv`ےbpfH~˂pZHAd|Z~HfprXQJtbdQpfH~˂pZHAdfHAZp˂bQZdnvpXQr˂nXvےbHA|drf`vXZHAbtlJ`f~ےbHA`vXnے`JXQtlJnXv`bHAZdrtA`vXn`JXQrfpvXQJ`ے|drpfH~tAd|~Hf˂rXQltbvpfH˂pZrd|~Hf˂rXQvXnے`Jd|ZnXv`HAZdf`vbے`dQbtvnX`ےbZ|df`vbے`~HXvrXQJrtAJlfH~pZHA`f~Zp˂tAJlnvpے`JXQtArdHXv`Zp˂vpfr˂ptArdf~Hp˂rJltvpfbtlnXv`bHAZtAJl璐vpZdQbtpvnJ`ےdQZ|~f`HAbےZdQbtpvnJ`ےvpfHXQr˂dQbtf~HrtAJlXnvJXQrlJtArv`fHAZp˂rtAJlXnvJXQr`f~`ےbtbdQf`vXے`JXQHfpvrXQJ`tbdQZfH~r˂p|ZdQbf~HbHAZH~fZHAb|ZdQbfpvXQJ`ےbdQZ|H~fJtAdf~Hp˂rtbdQZfH~lJtAXv`fbHAZpdrtAJvXn`JXQrlJtAXv`fbHAZ~f`pZHAbl|ZdQfpvtbdQpfH~˂pZHAd|Z~HfprXQJtbdQpfH~˂pZHAHfpvHAZp˂Z|dnvprbt璀nXvےbHA|drf`vXZHAbtlJfpvdrtA`vXnے`JXQtlJnXv`bHAZdrtA`vXn|ZdQbfpvXQJ`ے|drf`vXrd|~Hf˂rXQltbvpfH˂pZrd|~HfdrtAJvXnے`JbtlnXv`Z|df`vbے`dQbtvnX`ےbZ|df`vے`JnXvbHArtAJlfH~lJtAd`f~Zp˂tAJlnvpے`JXQtArdnXv`JbdQ瀅vpfr˂ptArdf~Hp˂rJltvpftlJnXv`bHAZtAdQZ|nvpZdQbtpvnJ`ےdQZ|~f`HAbےZdQbtpvnltbvpfHXQr˂JtArdffpvrtAJlXnvJXQrlJtArv`fHAZp˂rtAJlXnvXQrbt`f~Zp˂tbdQf`vX|ZdQHfpvrXQJ`tbdQZfH~r˂p|ZdQbf~HZ|dH~fZHAb|ZdQbfpvXQJ`ےbdQZ|H~ftArdf~Hp˂rdrtAfH~lJtAXv`fbHAZpdrtAJvXn`JXQrlJtAXv`fdQZ|~f`p`JXQ|ZdQnrXQtbdQpfH~˂pZHAd|Z~HfprXQJtbdQpfH~lJtAHfpvrXQJ`Z|rAJnvpbtlnXvےbHA|drf`vXZHAbtlJfpvrtAJl`vXnے`JXQtlJnXv`bHAZdrtAZHAb|ZdQbfpvXQJ`ےJltf`vXrd|~Hf˂rXQltbvpfH˂pZrd|HfpdrtAJvXnr˂pbtlJ`ےZ|df`vbے`dQbtvnX`ےbZ|df`vd|Z~HےbHAltbfH~JtArd`f~Zp˂tAJlnvpے`JXQtArd~HftbdQ瀅vpfr˂ptArdf~Hp˂rJltے`JXQtlJnXv`bHAZbdQZ|H~fZdQbtpvnJ`ےdQZ|~f`HAbےZdQbtvnrltbvpfHZHAbJtArdHAZp˂rtAJlXnvJXQrlJtArv`fHAZp˂rtAJlXnvdQbtfpvZp˂dQZ|fZHAb|ZdQHfpvrXQJ`tbdQZfH~r˂p|ZdQbpvnZ|dH~fZHAb|ZdQbfpvXQJ`ےbdQZ|r˂ptArdf~Hp˂rdrtAZHAblJtAXv`fbHAZpdrtAJvXn`JXQrlJtAXQJ`ےdQZ|~f`ے`JXQtlJrXQJtbdQpfH~˂pZHAd|Z~HfprXQJtbdQpfH~lJtArnXv`rXQJ`drtAJے`JbtlnXvےbHA|drf`vXZHAbtlJXv`frtAJl`vXnے`JXQtlJnXv`bHAZdtAJZHAb|ZdQbfpvXQJ`ےJltJQrrd|~Hf˂rXQltbvpfH˂pZrd|HAZpdrtAJvXnr˂ptArd`ےbZ|df`vbے`dQbtvnX`ےbZ|dfZHAd|Zf~Hp˂rltbXQr˂JtArd`f~Zp˂tAJlnvpے`JXQtArd~HftbQZvpfr˂ptArdf~Hp˂rltbے`JXQtlJnXv`bHAZdrtAJpZHAZdQbtpvnJ`ےdQZ|~f`HAbےZdQbt˂rXQltbvpfHZHAb|ZdQbHAZp˂rtAJlXnvJXQrlJtArv`fHAZp˂rtAJlbے`dQbtfpvXQJ`ےdQZ|pZHAb|ZdQHfpvrXQJ`tbdQZfH~r˂p|ZdQbpvndrtAJH~fZHAb|ZdQbfpvXQJ`ےnvpr˂ptArdf~Hp˂rltbbے`lJtAXv`fbHAZpdrtAJvXn`JXQrlJtAJ`ےdQZ|~f`˂pZtlJrXQJtbdQpfH~˂pZHAd|Z~HfprXQJtbdQJXQrlJtArnXv`bHAZAJltے`JbtlnXvےbHA|drf`vXZHAbtlJXv`pltb`vXnے`JXQtlJnXv`bHAZfHfZHAb|ZdQbfpvXQJ`ےdQZ|JXQrrd|~Hf˂rXQltbvpfH˂pZrdfbHAZpdrtAJvXnHAbےtArd`ےbZ|df`vbے`dQbtvnX`ےbZ|d˂pZHAd|Zpvnp˂rbnvXQr˂JtArd`f~Zp˂tAJlnvpے`JXQtArdvnXdQZ|vpfr˂ptArdf~Hp˂r`vXnے`JXQtlJnXv`bHAZdrtAJpZHAZdQbtpvnJ`ےdQZ|~f`HAbے~Hf˂rXQltbvpfH`JXQr|ZdQtAHAZp˂rtAJlXnvJXQrlJtArv`fHAZp˂tAJlbے`dQbtXv`fXQJ`ےpfHpZHAb|ZdQHfpvrXQJ`tbdQZfH~r˂p|ZdQbv`fdrtAJH~fZHAb|ZdQbfpvXQJ`ےvpfr˂ptArdf~Hp˂rltbbے`lJtAXv`fbHAZpdrtAJvXn`JXQrpvnJ`ےdQZ|~f`˂pZrdfrXQJtbdQpfH~˂pZHAd|Z~HfprXQJtbnJXQrlJtAr~HfbHAXQf`vXے`JbtlnXvےbHA|drf`vXZHAbtlJ~Hfpltb`vXnے`JXQtlJnXv`bHAZH~fZHAb|ZdQbfpvXQJ`ےdQZ|lJXQrZrd|~Hf˂rXQltbvpfH˂pZXv`fbHAZpdrtAJvXnHAbے~Hf`ےbZ|df`vbے`dQbtvnX`ےbvpfH˂pZHAd|ZpvnJ`ےnvpXQr˂JtArd`f~Zp˂tAJlnvpXQr˂ے`JXQtArdvnXdQZ|vpfr˂ptArdf~HdrtA`vXnے`JXQtlJnXv`bHAZtbdQHAbےZdQbtpvnJ`ےdQZ|~f`HAے`~Hf˂rXQltbvpfH`JXQHAvnXv`HAZp˂rtAJlXnvJXQrlJtArv`fHAZp˂f`vbے`dQbtXv`fbHAZpfH~pZHAb|ZdQHfpvrXQJ`tbdQZfH~pZHAbr˂p|ZdQbv`p˂rAJltH~fZHAb|ZdQbfpvJltvpfr˂ptArdf~Hp˂rZ|d`JXQrlJtAXv`fbHAZpdrtAJvXnJXQrbpvnJ`ےdQZ|~f`bے`f~HrXQJtbdQpfH~˂pZHAd|Z~HfprXQJXnvJXQrlJtAr~HX˂rXQf`vXے`JbtlnXvےbHA|drf`vXے`JZHAbtlJrXQJbdQZ|`vXnے`JXQtlJnXv`bdQZ|H~fZHAb|ZdQbfpvXQJ`ےrtAJl˂pZrd|~Hf˂rXQltbvpfHtlJXv`fbHAZpdrtAJvXnJXQrfpv`ےbZ|df`vbے`dQbtvnX`ےbpfH~˂pZHAd|Zv`fJ`ےnvpXQr˂JtArd`f~Zp˂tAJlnvpXQr˂ے`JXQtArd`ےbdrtvpfr˂ptArdfHfdrtA`vXnے`JXQtlJnXv`bHAZtbdQHAbےZdQbtpvnJ`ےdQZ|~f`tAd|~Hf˂rXQltbvpfH˂pZHAnXv`HAZp˂rtAJlXnvJXQrlJtArv`fHAZdf`vbے`dQbt~HfpbHAZpfH~pZHAb|ZdQHfpvrXQJ`tbdQZfH~pZHAbr˂p|ZdQbHAZp˂AJltH~fZHAb|ZdQbpvnJltvpfr˂ptArdf~Hp˂rZ|l`JXQrlJtAXv`fbHAZpdrtAJvXnZdQbtpvnJ`ےdQZ|~f`bے`f~HrXQJtbdQpfH~˂pZHAd|Z~HfprtAJlXnvJXQrlJtArvnX˂bf`vXے`JbtlnXvےbHA|drf`vXے`JZHAbtlJrXQJbdQZ|`vXnے`JXQtlJrXQJ`bdQZ|H~fZHAb|ZdQbfpvXQJ`ےtbn˂pZArd|~Hf˂rXQltbvpfHlJtAXv`fbHAZpdrtAJvXnJXQrfpv`ےbZ|df`vbے`dQbtvnXtbdQpfH~˂pZHAd|Zv`fHAZdnvpXQr˂JtArd`f~Zp˂tAJlnvpXQr˂ے`JXQtArd`p˂drtvpfr˂ptArdےHAZdrtA`vXnے`JXQtlJnXv`bHAZvp`vb`JXZdQbtpvnJ`ےdQZ|~fZrd|~Hf˂rXQltbvpfH˂p`JnvfHAZp˂rtAJlXnvJXQrlJtArv`fZ|df`vbے`dQbt~HfprtAJfH~pZHAb|ZdQHfpvrXQJ`tbdQZfH~pZHAbr˂p|ZdQbrXQJ`AJbdQH~fZHAb|ZdQbp˂rJltvpfr˂ptArdf~Hp˂rXnvQr˂plJtAXv`fbHAZpdrtAJHAbےZdQbtpvnJ`ےdQZ|~f`XQr˂~HfprXQJtbdQpfH~˂pZHAd|ZHfpvrtAJlXnvJXQrlJtArv~bdQZ|f`vXے`JbtlnXvےbHA|drf`vXے`JZHAbtlJےbHAZ|d`vXnے`JXQtlJXQJ`ےbdQZ|H~fZHAb|ZdQbfpvXQJ`ےpfH~ZHAbrd|~Hf˂rXQltb`JXQrlJtAXv`fbHAZpdrtAJvXnpZHAbvnX`ےbZ|df`vbے`dQbt璀nrXQtbdQpfH~˂pZHAd|ZHfpvdrtAnvpXQr˂JtArd`f~Zp˂tAJlnvpXQr˂ے`JXQtArdZp˂rtAJlvpfr˂ptArdbHAZdrtA`vXnے`JXQtlJnXv`bHAZf`vے`JXZdQbtpvnJ`ےdQZ|˂pZrd|~Hf˂rXQltbvpfHے`Jv`fHAZp˂rtAJlXnvJXQrlJtArJ`ےZ|df`vbے`dQbt璀nXvJltfH~pZHAb|ZdQHfpvrXQJ`tbdQZfH~pZHAbr˂p|ZdQbrXQJ`tbdQH~fZHAbf~Hp˂rJltvpfr˂ptArdf~Hp˂rXnvQr˂plJtAXv`fbHAZpdtAJlHAbےZdQbtpvnJ`ےdQZ|~f`XQr˂~HfprXQJtbdQpfH~˂pZHAd|ZHAZp˂rtAJlXnvJXQrlJtAr`f~bdQZ|f`vXے`JbtlnXvےbHA|drfZHAbے`JZHAbtlJےbHAZ|d`vXnے`JXQfpvXQJ`ےbdQZ|H~fZHAb|ZdQbfpvXQJ`ےp`vXZHAbrd|~Hf˂rXQtbn`JXQrlJtAXv`fbHAZpdrtAJvXnp`JXQvnX`ےbZ|df`vbے`dQbt璀rXQJtbdQpfH~˂pZHAd|ZHfpvdrtAnvpXQr˂JtArd`f~Zp˂tAJl璐ے`JXQr˂ے`JXQtArdXQJ`ےrtAJlvpfr˂pnXv`bHAZdrtA`vXnے`JXQtlJnXv`bHAZnvpJQrZdQbtpvnJ`ےvpf˂pZrd|~Hf˂rXQltbvpfHrbtv`f~HAZp˂rtAJlXnvJXQrlJtAr`ےbZ|df`vbے`dQbt璀nXvJltbfH~pZHAb|ZdQHfpvrXQJ`tbdQZXQr˂pZHAbr˂p|ZdQbbHAZtbQZH~fZHAےf~Hp˂rJltvpfr˂ptArdf~Hp˂rfH~˂pZHAlJtAXv`fbHAZpHf`HAbےZdQbtpvnJ`ےdQZ|~f`l|ZdQfpv〉rXQJtbdQpfH~˂pZHAdfHAZp˂rtAJlXnvJXQrlJtAr`pvQZdrf`vXے`JbtlnXvےbHA|dtApZHAbے`JZHAbtlJp˂rdrtA`vXn`JXQrfpvXQJ`ےbdQZ|H~fZHAb|ZdQbfpvXQJ`ےf`vXbے`rd|~Hf˂rXQvXn`JXQrlJtAXv`fbHAZpdrtAJvXnbtlnXv``ےbZ|df`vbے`~HfprXQJtbdQpfH~˂pZHAd|ZnXv`tAJlnvpXQr˂JtArd`f~Zp˂Jltے`JXQr˂ے`JXQtArdXQJ`ےJltvpfbtlnXv`bHAZdrtA`vXnے`JXQtlJnXv`bHAZnvpJXQrZdQbtpvnJ`ےvpfH˂pZrd|~Hf˂rXQltbvpfHJtArdf~HHAZp˂rtAJlXnvJXQrvnX`ےbZ|df`vbے`dQbtf~HtbdQZfH~pZHAb|ZdQHfpvrXQJ`bnvXQr˂pZHAbr˂pf~HbHAZbdQZ|H~fJtAdf~Hp˂rJltvpfr˂ptArdf~Hp˂rfH~˂pZHAlJtAXv`fbHAZ~f`HAbےZdQbtpvnJ`ےdQZ|~f`|ZdQfpv〉rXQJtbdQpfH~˂pZHAv`fHAZp˂rtAJlXnvJXQrlJtArfpv|drf`vXے`JbtlnXvےbHApfHpZHAbے`JZHAbXv`fp˂drtA`vXn|ZdQbfpvXQJ`ےbdQZ|H~fZHAb|ZdQbfpvXQJ`ےvpfbے`rd|~HfdrtAJvXn`JXQrlJtAXv`fbHAZpdrtAJvXnbtlnXv``ےbZ|df`vے`J~HfprXQJtbdQpfH~˂pZHAd|ZnXv`tAJlnvpXQr˂JtArd`f~Zp˂f`vXے`JXQr˂ے`JXQ~HfbHAZpJltvpftlJnXv`bHAZdrtA`vXnے`JXQtlJnXv`bHAZH~fJXQrZdQbtpvnltbvpfH˂pZrd|~Hf˂rXQltbvpfH|ZdQbf~HfHAZp˂rtAJlXnvXQrbtvnX`ےbZ|df`vbے`dQbtpvntbdQZfH~pZHAb|ZdQHfpvrXQJ`nvpXQr˂pZHAbr˂ppvn˂rXQbdQZ|H~ftArdf~Hp˂rJltvpfr˂ptArdf~HdrtA`vXnZHAblJtAXv`fdQZ|~f`HAbےZdQbtpvnJ`ےdQZ|~f`tlJvnXvrXQJtbdQpfH~lJtAv`fHAZp˂rtAJlXnvJXQrlJtArrXQJ`|rAJlf`vXے`JbtlnXvےbHAfH~pZHAbے`JZHAbXv`fJ`ےrAJlZHAb|ZdQbfpvXQJ`ےbdQZ|H~fZHAb|ZdQbfpvdQZ|vpf`JXQrd|HfpdrtAJvXn`JXQrlJtAXv`fbHAZpdrtAJvXntArd`f~`ےbZ|df`vd|Z~HfprXQJtbdQpfH~˂pZHAd|Zp˂rtbdnvpXQr˂JtArd`f~Zdrf`vXے`JXQr˂ے`JXQ~HfbHAZptbdQZے`JXQtlJnXv`bHAZdrtA`vXnے`JXQtlJnXv`drtAJH~fr˂pZdQbtvnrltbvpfH˂pZrd|~Hf˂rXQltbvpfH|ZdQbHfpvHAZp˂rtAJlXnvdQbtvnX`ےbZ|df`vbے`dQbtXQJ`ےQZ|dfH~pZHAb|ZdQHfpvtAJlnvpXQr˂pZHAr˂ppv˂rXQ|drr˂ptArdf~Hp˂rJltvpfr˂ptArdfHfltb`vXHZHAblJtAXQJ`ےdQZ|~f`HAbےZdQbtpvnJ`ےdQZ|~f`tlJnXvrXQJtbdQpfH~lJtArv`fHAZp˂rtAJlXnvJXQrlJtArbHAZrtAJlf`vXے`JbtlnXvtbdQZfH~pZHAbے`JXQ|ZdQb~HfpJ`p˂tAJlZHAb|ZdQbfpvXQJ`ےbdQZ|H~fZHAb|ZdQbpvndQZ|~f``JXQrd|HAZpdrtAJvXn`JXQrlJtAXv`fbHAZpdrtAJvXntArdt`f~`ےbZ|dfZHAd|Z~HfprXQJtbdQpfH~˂pZHAd|Zp˂rtbdnvpXQr˂JtArd`fH|drf`vXے`JrbttlJvnXrXQJtbdQZے`JXQtlJnXv`bHAZdrtA`vXnے`JXQtlJrXQJ`drtAJvXnr˂pZZdQbt˂rXQltbvpfH˂pZrd|~Hf˂rXQltbvpfHlJtAHfpvHAZp˂rtAJlbے`dQbtvnX`ےbZ|df`vbے`dQbtXQJ`pQZ|dfH~pZHAb|ZdQfpvtAJlnvpXQr˂lJtAdtArdv`f`ےb|dnr˂ptArdf~Hp˂rJltvpfr˂ptArdےHAZltdvpfHAb`JlJtAJ`ےdQZ|~f`HAbےZdQbtpvnJ`ےdQZ|~fZrd|nvfrXQJtbdQJXQrlJtArv`fHAZp˂rtAJlXnvJXQrlJtAr˂rXQrtAJf`vXے`JbtlnrXQJtbdQZfH~pZHAb|ZdQ|ZdQb~HfpHAZp˂vffZHAb|ZdQbfpvXQJ`ےbdQZ|H~fZHAb|ZdQbp˂rrtAJl~f`XQr˂rdfbHAZpdrtAJvXn`JXQrlJtAXv`fbHAZpdrtAJHAbZdQbt~Hfp`ےbZ|d˂pZHAd|Z~HfprXQJtbdQpfH~˂pZHAd|ZJ`ےbdQZ|nvpXQr˂JtArd`ےHA|drf`vXے`JbtltlJvnXrXQJ`vXnے`JXQtlJnXv`bHAZdrtA`vXnے`JXQtlJXQJ`ےtbdQvXnpZHAb~Hf˂rXQltbvpfH˂pZrd|~Hf˂rXQltb˂pZHAlJtAvnXHAZp˂tAJlbے`dQbtvnX`ےbZ|df`vbے`dQbtbHAZpdrtAfH~pZHAb|ZdQZp˂tAJlnvpXQr˂JtArdtArdv`pv`ےbvpfr˂ptArdf~Hp˂rJltvpfr˂ptArdbHAZZ|dvp`vے`JpvnJ`ےdQZ|~f`HAbےZdQbtpvnJ`ےdQZ|bے`rd|v`frXQJtbnJXQrlJtArv`fHAZp˂rtAJlXnvJXQrlJtAr˂rXQJltf`vXے`JbtlrXQJ`tbdQZfH~pZHAb|ZdQ|ZdQbnXvHAXQJ`H~fZHAb|ZdQbfpvXQJ`ےbdQZ|H~fZHAbf~Hp˂rrtAJlXnvXQr˂Xv`fbHAZpdrtAJvXn`JXQrlJtAXv`fbHAZpdtAJlJXQrZdQtAr~Hfp`ےbvpfH˂pZHAd|Z~HfprXQJtbdQpfH~˂pZHAd|ZJ`ےbdQZ|nvpXQr˂JtArdےbHA|drf`vXے`JbtlJtArd`f~Zp˂|drfZHAbtlJnXv`bHAZdrtA`vXnے`JXQtlJrXQJ`bdQZ|H~fے`Jdtl˂rXQltbvpfH˂pZrd|~Hf˂rXQltbvpfHۑpJvˍpf|ZdQHfpvrXQJ`tAJl璐JQrtArdf~Hp˂rJltvpfr˂ptArdےHAZdrtA`vXnXQr˂JtArdJ`ےdQZ|~f`HAbےZdQbtpvnJ`ےdQZ|~frAHr󙐂˕H~ㅐfbtlnXvےbHAtdrtA˂pZH|ZdQbfpvXQJ`ےbdQZ|H~fZHAb|ZdQbp˂rJltvpfpZHAb|ZdQbHAZpdrtAJvXn`JXQrlJtAXv`fbHAZpdrtAJ˂pZ`ZQXAH`vXnJtArd`f~Zp˂JltAbے`tlJnXv`bHAZdrtA`vXnے`JXQtlJXQJ`ےbdQZ|H~f˂pbtl˂rXQltbvpfH˂pZrd|~Hf˂rXQltbHAbےr󙐂ˁ`vˍpf|ZdQHfpvrXQJ`bdQZ|JXQrtArdf~Hp˂rJltvpfr˂ptArdbHAZdrtA`vXnZHAbJtArdJ`ےdQZ|~f`HAbےZdQbtpvnJ`ےdQZ|`JXQrZQXb㉀H~ㅐfbtlnXvےbHAdrtA˂pZH|ZdQbfpvXQJ`ےbdQZ|H~fZHAbf~Hp˂rJltvpfے`JXQ|ZdQbHAZpdrtAJvXn`JXQrlJtAXv`fbHAZpdtAJl˂pZۑpJAH`vXnJtArd`f~Zp˂JltAbے`tlJnXv`bHAZdrtA`vXnے`JXQfpvXQJ`ےbdQZ|H~fr˂ptArd˂rXQltbvpfH˂pZrd|~Hf˂rXQtbnHAbےr󙐂ˁ`vˍpf|ZdQHfpvrXQJ`bdQZ|JXQrtArdf~Hp˂rJltvpfr˂pnXv`bHAZdrtA`vXnZHAbf~HJ`ےdQZ|~f`HAbےZdQbtpvnJ`ےvpf`JXQHAZQXb㉀H~ㅐfbtlnXvےbHAltbZHAb|ZdQbfpvXQJ`ےbdQZ|H~fZHAےf~Hp˂rJltvpfے`JXQfvnXbHAZpdrtAJvXn`JXQrlJtAXv`fbHAZpHf`bے`ۑp`Z`vXnJtArd`f~Zp˂dQZ|ے`JXQtlJnXv`bHAZdrtA`vXn`JXQrfpvXQJ`ےbdQZ|H~fHAbےv`f˂rXQltbvpfH˂pZrd|~Hf˂rXQvXnJXQrQXb㉀ەvˍp||ZdQHfpvrXQJ`drtAJr˂ptArdf~Hp˂rJltvpfbtlnXv`bHAZdrtA`vXn`JXQr~HfpJ`ےdQZ|~f`HAbےZdQbtpvnJ`ےvpfH˂pZHApJAHrdrQtbtlnXvےbHAltbZHAb|ZdQbfpvXQJ`ےbdQZ|H~fJtAdf~Hp˂rJltvpf˂pZvnXbHAZpdrtAJvXn`JXQrlJtAXv`fbHAZ~f`bے`ˁ`ZJltJtArd`f~Zp˂dQZ|lے`JXQtlJnXv`bHAZdrtA`vXn|ZdQbfpvXQJ`ےbdQZ|H~fHAbےv`f˂rXQltbvpfH˂pZrd|~HfdrtAJvXnJXQrQXb㉀bAdZ||ZdQHfpvrXQJ`tbnr˂ptArdf~Hp˂rJltvpftlJnXv`bHAZdrtA`vXn`JXQr~HfpJ`ےdQZ|~f`HAbےZdQbtpvnltbvpfH˂p`JpJAHrdrQtbtlnXvےbHAvp`ZAb`|ZdQbfpvXQJ`ےbdQZ|H~ftArdf~Hp˂rJltvpf˂p`vnvfbHAZpdrtAJvXn`JXQrlJtAXv`fdQZ|~f`XQr˂ۑpJltJtArd`f~Zp˂vXnJXQrtlJnXv`bHAZdrtAZHAb|ZdQbfpvXQJ`ےbdQZ|H~fJXQr~Hf˂rXQltbvpfH˂pZrd|HfpdrtAJvXnpZHAbJAHrbAdZ||ZdQHfpvrXQJ`vpfHpZHAtArdf~Hp˂rJltے`JXQtlJnXv`bHAZdrtA`vXn˂pZHApvnJ`ےdQZ|~f`HAbےZdQbtvnrltbvpfHے`Jˁ`ZQXdrQtbtlnXvےbHA~f`bے`|ZdQbfpvXQJ`ےbdQZ|r˂ptArdf~Hp˂rJltvpfbے`Xv`fbHAZpdrtAJvXn`JXQrlJtAXQJ`ےdQZ|~f`XQr˂b㉀ۑpJltJtArd`f~Zp˂vXnJXQrtlJnXv`bHAZdtAJZHAb|ZdQbfpvXQJ`ےbdQZ|H~fJXQr~Hf˂rXQltbvpfH˂pZrd|HAZpdrtAJvXnpZHAbJAHrbAdZ||ZdQHfpvrXQJ`vp`vpZHAtArdf~Hp˂rltbے`JXQtlJnXv`bHAZdrtA`vXn˂p`JpvnJ`ےdQZ|~f`HAbےZdQbt˂rXQltbvpfH˂pˁ`pfdrQtbtlnXvےbHAXnvbJQr|ZdQbfpvXQJ`ےnvpr˂ptArdf~Hp˂rJltvpfXQrbtXv`fbHAZpdrtAJvXn`JXQrlJtAJ`ےdQZ|~f`ZHAbH~ㅐfJltJtArd`f~Zp˂pfH~˂pZtlJnXv`bHAZfHfZHAb|ZdQbfpvXQJ`ےbdQZ|H~fl|Z~fpv˂rXQltbvpfH˂pZrdfbHAZpdrtAJvXnے`JXQ`vXnbAdZ||ZdQHfpvrXQJ`f`vHAbےtArdf~Hp˂r`vXnے`JXQtlJnXv`bHAZdrtA`vXndQbt璅nXv`J`ےdQZ|~f`HAbے~Hf˂rXQltbvpfHr˂pvˍpfdrQtbtlnXvےbHAXnv`JXQr|ZdQbfpvXQJ`ےvpfr˂ptArdf~Hp˂rJltvpflJtArf~HbHAZpdrtAJvXn`JXQrpvnJ`ےdQZ|~f`ZHAbH~ㅐfJltJtArd`f~Zp˂pfH~˂pZtlJnXv`bHAZH~fZHAb|ZdQbfpvXQJ`ےbdQZ|H~fd|Zfpv˂rXQltbvpfH˂pZXv`fbHAZpdrtAJvXnے`JXQ`vXnbAdZ||ZdQHfpvrXQJ`vpHAbےtArdf~HdrtA`vXnے`JXQtlJnXv`bHAZdrtA`vXndQbt璅nXv`J`ےdQZ|~f`HAے`~Hf˂rXQltbvpfHHAbےvˍpfdrQtbtlnXvےbHAfH~`JXQr|ZdQbfpvJltvpfr˂ptArdf~Hp˂rJltvpfl|ZdQf~HbHAZpdrtAJvXnJXQrbpvnJ`ےdQZ|~f``JXQrH~ㅐfJltJtArd`f~Zdrf`vXZHAbtlJnXv`bdQZ|H~fZHAb|ZdQbfpvXQJ`ےbdQZ|H~fbtlfvnX˂rXQltbvpfHtlJXv`fbHAZpdrtAJvXn˂pZ`vXnbAdZ||ZdQHfpvtAdQZ|nvpے`JXtArdfHfdrtA`vXnے`JXQtlJnXv`bHAZdrtA`vXnJtArdv`fJ`ےdQZ|~f`tAd|~Hf˂rXQltbvpfHHAbےvˍpfdrQtbtlnXvdrtAfH~Qr˂p|ZdQbpvnJltvpfr˂ptArdf~Hp˂rJltvpf|ZdQ~HfpbHAZpdrtAJvXnZdQbtpvnJ`ےdQZ|~f``JXQrH~ㅐfJltJtArd`fHJltf`vXZHAbtlJrXQJ`bdQZ|H~fZHAb|ZdQbfpvXQJ`ےbdQZ|H~fbtlvnX˂rXQltbvpfHlJtAXv`fbHAZpdrtAJvXn˂p``vXnbAdZ||ZdQfpvbdQZ|H~fے`JXtArdےHAZdrtA`vXnے`JXQtlJnXv`bHAZdrtA`vXnJtArdv`fJ`ےdQZ|~fZrd|~Hf˂rXQltbvpfHJXQrvˍpfdrQtbtlnrXQJdrtA`vXnQr˂p|ZdQbp˂rJltvpfr˂ptArdf~Hp˂rJltvpftlJ~HfpbHAZpdrtAJHAbےZdQbtpvnJ`ےdQZ|~f`˂pZHAH~ㅐfJltJtArd`ےHAJltvpfZAb`tlJXQJ`ےbdQZ|H~fZHAb|ZdQbfpvXQJ`ےbdQZ|H~ftArdvnv˂rXQltb`JXQrlJtAXv`fbHAZpdrtAJvXnbے``vXnbAdZ||ZdQZp˂drtAJH~fJXQrtArdbHAZdrtA`vXnے`JXQtlJnXv`bHAZdrtAZHAb|ZdQbf~HJ`ےdQZ|˂pZrd|~Hf˂rXQltbvpfHJXQrvˍpfdrQtbtlrXQJ`ltb`vXn˂pZHAf~Hp˂rJltvpfr˂ptArdf~Hp˂rJlt˂pZtlJfpvbHAZpdtAJlHAbےZdQbtpvnJ`ےdQZ|~f`˂p`ZH~ㅐfJltJtArdےbHAdQZ|vp`bے`fpvXQJ`ےbdQZ|H~fZHAb|ZdQbfpvXQJ`ےbdQZ|HAbےtArdnXv`˂rXQtbn`JXQrlJtAXv`fbHAZpdrtAJvXnQXb㉀۝`vXnbAdZ|f~Zp˂drtAJvXnJXQrnXv`bHAZdrtA`vXnے`JXQtlJnXv`bHAZdtAJ`JXQr|ZdQtAf~HJ`ےvpf˂pZrd|~Hf˂rXQltbvpfHpJAHrvˍpfdrQtHfpvrXQJ`ltbvpfH˂pZAf~Hp˂rJltvpfr˂ptArdf~Hp˂rltb˂pZrd|fpvbHAZpHf`HAbےZdQbtpvnJ`ےdQZ|~f`ˁ`ZH~ㅐfJltnXvےbHAdQZ|l~f``JXQrfpvXQJ`ےbdQZ|H~fZHAb|ZdQbfpvXQJ`ےnvpHAbےZdQbtnXv`f˂rXQvXn`JXQrlJtAXv`fbHAZpdrtAJvXnQXb㉀۝`vXnbAdZ|`f~Zp˂tbdQvXnbtlnXv`bHAZdrtA`vXnے`JXQtlJnXv`bHAZfHf`JXQHAlJtA~fpvJ`ےvpfH˂pZrd|~Hf˂rXQltbvpfHp`ZQXvˍpfdrQtHfpvrXQJ`Z|dvpfHJtAdf~Hp˂rJltvpfr˂ptArdf~Hp˂r`vXnbے`rd|nXvbHAZ~f`HAbےZdQbtpvnJ`ےdQZ|~f`b㉀ۑpH~ㅐfJltnXvےbHArtAJl~v|ZdQbfpvXQJ`ےbdQZ|H~fZHAb|ZdQbfpvXQJ`ےvpfJXQrZdQbt`f~drtAJvXn`JXQrlJtAXv`fbHAZpdrtAJvXnJAHr󙐝`vXnbAdZ|`f~Zp˂tbdQpfH~tlJnXv`bHAZdrtA`vXnے`JXQtlJnXv`bHAZH~f˂pZHAl|ZHfpvltbvpfH˂pZrd|~Hf˂rXQltbvpfHˁ`ZQXvˍpfdrQtHfpvrXQJ`Z|df`vtArdf~Hp˂rJltvpfr˂ptArdf~HdrtA`vXnbے`dQbt璀nXvdQZ|~f`HAbےZdQbtpvnJ`ےdQZ|~f`b㉀ۑpH~ㅐfJltnXvےbHArtAdQZXnv|ZdQbfpvXQJ`ےbdQZ|H~fZHAb|ZdQbfpvJltvpfJXQrlJtAr`ffpdrtAJvXn`JXQrlJtAXv`fbHAZpdrtAJvXnJAHr󙐝`vXnbAdZ|`f~Zp˂|drpfH~tlJnXv`bHAZdrtA`vXnے`JXQtlJnXv`bdQZ|H~f˂p`Jd|ZvnrltbvpfH˂pZrd|~Hf˂rXQltbvpfHۑpJvˍpfdrQtHfpvrXQJ`tAJl璐f`vtArdf~Hp˂rJltvpfr˂ptArdfHfdrtA`vXnXQr˂dQbtXQJ`ےdQZ|~f`HAbےZdQbtpvnJ`ےdQZ|~f`AHr󙐂˕H~ㅐfJltnXvےbHAtbdQZXH~|ZdQbfpvXQJ`ےbdQZ|H~fZHAb|ZdQbpvnJltvpfpZHAblJtArHAZpdrtAJvXn`JXQrlJtAXv`fbHAZpdrtAJvXn`ZQXb`vXnbAdZ|KKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv40_1.dat b/mpdf/qrcode/data/qrv40_1.dat deleted file mode 100644 index 4edce7d..0000000 --- a/mpdf/qrcode/data/qrv40_1.dat +++ /dev/null @@ -1,353 +0,0 @@ -~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwvuvuvuvuvutstststststststsrqrqrqrqpopopopopopopoponmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefefefedcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUVUVUVUVUSTSTSTSTTSRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;:9:9:9:9:9:9:9:9787777776565656565656565434343434343434321212121212121210/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqpopopopopopopoponmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUVUVUVUVUSTSTSTSTRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;:9:9:9:9:9:9:9:9878787876565656565656565434343434343434321212121212121210/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqpopopopopopopoponmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUVUVUVUVUSTSTSTSTRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCBABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;:9:9:9:9:9:9:9:98787878765656565656565654343434343434343212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqpopopopopopopoponmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUVUVUVUVUSTSTSTSTRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;:9:9:9:9:9:9:9:98787878765656565656565654343434343434343212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwvuvuvuvuvuvuvuvutstststststststsrqrqrqrqpopooooooooopoponmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUVUVUVUVUSTSTSTSTRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;:9:9:9:9:9:9:9:98787878765656565656565654343434343434343212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwvuvuvuvuvuvuvuvutststststsrqrqrqrqrqrqrqopopopoppoponmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghghghgfefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUVUVUVUVUSTSTSSSSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;:9:9:9:9:98787878787878765656565656565654343434343434343212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyxwxwxwxwxwvuvuvuvuvuvuvuvutstststsrqrqrqrqrqrqrqrqopopopopnmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghghghgfefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUVUVUVUVUSSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;:9:9:9:9877777788787877765656565656565654343434343434343212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststsrqrqrqrqrqrqrqrqopopopopnmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_`_`_^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;:9:9:9:9787878787778787865656565656565654343434343434343212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststsrqrqrqrqrqrqrqrqopopopopnmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;:9:9:9:9787878787878787865656565656565654343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)('('('('('('('('&%&%&%&%~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststsrqrqrqrqrqrqrqrqopopopopnmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUVUVUVUVUTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=<;<;<;<;<;<;<;:9:9:9:9787878787878787865656565656565654343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststsrqrqrqrqrqrqrqrqopopopoonmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUVUVUTSTSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9787878787878787865656565656565654343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststsrqrqrqrqrqrqrqrqoooopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijijijihghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUTSTSSSSSTSTSTSTSRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9787878787878787865656565656565654343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%~}~}~}~}~}~}~}~}|{|{|{|{|{|{|{zyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststsrqrqrqrqrqrqrqrqpopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijijijihghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababababa`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUSTSTSTSTSSSSSTSTRQRQRQRQRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9787877777878787865656565656565654343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%~}~}~}~}~}~}~}~}|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststsrqrqrqrqrqrqrqrqpopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababababa`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWVUVUVUVUSTSTSTSTSTSTSTSTRQRQRQRQRQRQRQRQPOPOPOPOPONMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9778787877777778765656565656565654343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%~}~}~}~}~}~}~}~}|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststsrqrqrqrqrqrqrqrqpopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYZYZYXWXWXWXWXWXWVUVUVUVUSTSTSTSTSTSTSTSTRQRQRQRQRQRQRQRQPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGHGFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?@?@?@?>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9878787878787878765656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%~}~}~}~}~}~}~}~}|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststsrqrqrqrqrqrqrqpopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUSTSTSTSTSTSTSTSTRQRQRQRQRQRQRQRQPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?@?>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9878787878787878765656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%~}~}~}~}~}~}~}~}|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststsrqrqrqrqpopopooopopopoponmnmnmnmnmnmnmnmlklklklklklklklkjijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUSTSTSTSTSTSTSTSTRQRQRQRQRQRQRQRQPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9878787878787878765656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%~}~}~}~}~}~}~}~}|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststsrqrqrqrqooopopoppoooooopnmnmnmnmnmnmnmnmlklklklklklklklkjijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUSTSTSTSSSTSTSTSTRQRQRQRQRQRQRQRQPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9878787878787878765656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%~}~}~}~}~}~}~}|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvuvutstststsrqrqrqrqopopopopopopopopnmnmnmnmnmnmnmnmlklklklklklkjijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcdcdcbabababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUSSSSTSTSSTSSSSSSRQRQRQRQRQRQRQRQPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;<;:9:9:9:9878787878787777765656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvuvuvuvutststststsrqrqrqrqopopopopopopopopnmnmnmnmnmnmnmnmlklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcdcdcbabababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[\[\[ZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQRQPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIJIJIJIHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;<;<;<;:9:9:9:9:9777778788787878765656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvutstststststststsrqrqrqrqopopopopopopopopnmnmnmnmnmnmnmnmlklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[\[\[ZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIJIHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABABABABA@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;:9:9:9:9:9:9:9:9787878786565656565656565434343434343434321212121212121210/0/0/0/0/0/0/0/.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvutstststststststsrqrqrqrqopopopopopopopopnmnmnmnmnmnmnmnmlklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABABA@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;:9:9:9:9:9:9:9:9787878786565656565656565434343434343434321212121212121210/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('('('('('&%&%&%&%&%&%&%&%~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvutstststststststsrqrqrqrqopopopopopopopopnmnmnmnmnmnmnmnmlklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSTSTSTSTSRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;:9:9:9:9:9:9:9:9787878786565656565656565434343434343434321212121212121210/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%&%&%&%&%&%&%&%&%~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvutstststststststsrqrqrqrqoooooopoopopoooonmnmnmnmnmnmnmnmlklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSTSTSTSTSTSTSSSRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;:9:9:9:9:9:9:9:9787878786565656565656565434343434343434321212121212121210/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%&%&%&%&%&%&%&%&%~}~}~}~}~}|{|{|{|{|{|{|{|{zyzyzyzyzyzyzyzyxwxwxwxwxwxwxwxwvuvuvuvutstststststststsrqrqrqrqpopopopooopopoponmnmnmnmnmnmlklklklklklkjijijijijijijijihghghghghghghghgfefefefefefefefedcdcdcdcbabababababababa`_`_`_`_`_`_`_`_^]^]^]^]^]^]^]^]\[\[\[\[ZYZYZYZYZYZYZYZYXWXWXWXWXWXWXWXWVUVUVUVUTSSSSSSTSSTSTSTSRQRQRQRQPOPOPOPOPOPOPOPONMNMNMNMNMNMNMNMLKLKLKLKLKLKLKLKJIJIJIJIHGHGHGHGHGHGHGHGFEFEFEFEFEFEFEFEDCDCDCDCDCDCDCDCBABABABA@?@?@?@?@?@?@?@?>=>=>=>=>=>=>=>=<;<;<;<;:9:9:9:9:9:9:9:9787878786565656565656565434343434343434321212121212121210/0/0/0/.-.-.-.-.-.-.-.-,+,+,+,+,+,+,+,+*)*)*)*)*)*)*)*)('('('('&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!                - - - - - - - - &%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!                - - - - - - - - &%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!                - - - - - - - - &%&%&%&%$#$#$#$#$#$#$#$#"!"!"!"!                - - - - - - - - &%&%&%&%$#$#$#$#"!"!"!"!"!"!"!"!                - - - - - - - &%&%&%&%$#$#$#$#"!"!"!"!"!"!"!"!                - - - - &%&%&%&%$#$#$#$#"!"!"!"!"!"!"!"!                - - - - &%&%&%&%$#$#$#$#"!"!"!"!"!"!"!"!                - - - - &%&%&%&%$#$#$#$#"!"!"!"!"!"!"!"!              - - - - &%&%&%&%$#$#$#$#"!"!"!"!"!"!"!"!            - - - - $#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!            - - - - - $#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!            - - - - - - - - $#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!            - - - - - - - - $#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!            - - - - - - - - $#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!            - - - - - - - - $#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!            - - - - - - - - $#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!           - - - - - - - - $#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        - - - - - - - - $#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        - - - - - - - - $#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        - - - - - - - - $#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        - - - - - - - - $#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!        - - - - - - - - $#$#$#$#$#$#$#$#"!"!"!"!"!"!"!"!         - - - - - - - - $#$#$#$#$#$#$#$#"!"!"!"!                - - - - - - - - $#$#$#$#$#$#$#$#"!"!"!"!                - - - - - - - - LLKKJJII))**++,,aa``__^^(())**++NNMMLLKK%%&&''((ttssrrqq UUVVWWXXDDCCBBAA!!""##$$xxwwvvuuQQRRSSTTHHGGFFEE ||{{zzyyMMNNOOPP33221100IIJJKKLL0//..--,::;;<<==__^^]]\\ jjkkllmm//..--,,66778899ccbbaa``ffgghhii3322110022334455ggffeeddbbccddeeccddeeffOOPPQQRRJJIIHHGG~~}}||{{KKLLMMNNNNMMLLKK{{||}}~~GGHHIIJJRRQQPPOOwwxxyyzz||{{zzyy}}~~onnmmllkddeeffgg5544332200112233iihhggff``aabbcc99887766,,--..//mmllkkjj \\]]^^__==<<;;::(())**++bbaa``__!!""ZYYXWVUTyyzz{{|| EEFFGGHHTTSSRRQQuuvvwwxx$$##""!!AABBCCDDXXWWVVUU HHGGFFEE--..//00]]\\[[ZZ,,--..//JJIIHHGG))**++,,ppoonnmm - - YYZZ[[\\@@??>>==%%&&''((ttssrrqq UUVVWWXXDDCCBBAA!!""##$$xxwwvvuuQQRRSSTT//..--,,MMNNOOPP,++**))(>>??@@AA[[ZZYYXX - - nnooppqq++**))((::;;<<==__^^]]\\ jjkkllmm//..--,,66778899ccbbaa``ffgghhiigghhiijjSSTTUUVVFFEEDDCC !!""zzyyxxwwOOPPQQRRJJIIHHGG~~}}||{{KKLLMMNNNNMMLLKK{{||}}~~xxwwvvuu - - kjjiihhghhiijjkk1100//..44556677eeddccbbddeeffgg5544332200112233iihhggff``aabbcc99887766,,--..//^^]]\\[[##$$%%&&SSRRQQPP}}~~~~}}IIJJKKLLPPOONNMMyyzz{{|| EEFFGGHHTTSSRRQQDDCCBBAA11223344YYSSRRQQ00112233FFEEDDCC--..//00llkkjjii]]^^__``<<;;::99))**++,,ppoonnmm - - YYZZ[[\\@@??>>==%%&&''((ttssrrqq UUVVWWXX++**))((QQRRSSYY(''&&%%$BBCCDDEEWWVVUUTTrrssttuu''&&%%$$>>??@@AA[[ZZYYXX - - nnooppqq++**))((::;;<<==__^^]]\\ jjkkllmmkkllmmnn~~}}||{{ WWXXYYZZBBAA@@??##$$%%&&vvuuttssSSTTUUVVFFEEDDCC !!""zzyyxxwwOOPPQQRRJJIIHHGGoonnmmll gffeeddc - - llmmnnoo--,,++**8899::;;aa``__^^hhiijjkk1100//..44556677eeddccbbddeeffgg5544332200112233ZZYYSSRR''(())**OONNMMLL ||{{zzyyMMNNOOPPLLKKJJII}}~~~~}}IIJJKKLLPPOONNMM@@??>>==55667788PPOONNMM44556677BBAA@@??11223344hhggffeeaabbccdd88776655--..//00llkkjjii]]^^__``<<;;::99))**++,,ppoonnmm - - YYZZ[[\\''&&%%$$ZZ[[\\]]$##""!! FFGGHHIISSRRQQPPvvwwxxyy##""!! BBCCDDEEWWVVUUTTrrssttuu''&&%%$$>>??@@AA[[ZZYYXX - - nnooppqq - -oouuvvwwzzyyxxww - - [[\\]]^^>>==<<;;''(())**rrqqppoo WWXXYYZZBBAA@@??##$$%%&&vvuuttssSSTTUUVVFFEEDDCC !!""kkjjiihhcbbaa``_ ppqqrrss))((''&&<<==>>??]]\\[[ZZ - - llmmnnoo--,,++**8899::;;aa``__^^hhiijjkk1100//..44556677QQPPOONN++,,--..KKJJIIHH!!""##$$xxwwvvuuQQRRSSTTHHGGFFEE ||{{zzyyMMNNOOPPLLKKJJII<<;;::9999::;;<>??@@>>==<;:955667788ddccbbaaeeffgghh4433221111223344hhggffeeaabbccdd88776655--..//00llkkjjii]]^^__``##""!!^^__``aaJJKKLLMMOONNMMLLzz{{||}}FFGGHHIISSRRQQPPvvwwxxyy##""!! BBCCDDEEWWVVUUTTrrssttuu~~ xxyyzz{{vvuutsrq__``aabb::998877++,,--..nnmmllkk - - [[\\]]^^>>==<<;;''(())**rrqqppoo WWXXYYZZBBAA@@??##$$%%&&ggffeedd_^^]]\\[ttuuvvww%%$$##""@@AABBCCYYXXWWVV ppqqrrss))((''&&<<==>>??]]\\[[ZZ - - llmmnnoo--,,++**8899::;;MMLLKKJJ//001122GGFFEEDD%%&&''((ttssrrqq UUVVWWXXDDCCBBAA!!""##$$xxwwvvuuQQRRSSTTHHGGFFEE 88776655==>>??@@HHGGFFEEAABBCCDD8776655499::;;<<``__^^]]iijjkkll00//..--55667788ddccbbaaeeffgghh4433221111223344hhggffeeaabbccddbbccddeeNNOOPPQQKKJJIIHH~~~~}}||JJKKLLMMOONNMMLLzz{{||}}FFGGHHIISSRRQQPPvvwwxxyy}}||{{zz||}}~~poonnmmlccddeeff66554433//001122jjiihhgg__``aabb::998877++,,--..nnmmllkk - - [[\\]]^^>>==<<;;''(())**ccbbaa``!![ZZYYXWVxxyyzz{{!! DDEEFFGGUUTTSSRRttuuvvww%%$$##""@@AABBCCYYXXWWVV ppqqrrss))((''&&<<==>>??IIHHGGFF33445566CCBBAA@@))**++,,ppoonnmm - - YYZZ[[\\@@??>>==%%&&''((ttssrrqq UUVVWWXXDDCCBBAA!!""##$$44332211AABBCCDDDDCCBBAAEEFFGGHH43322110==>>??@@\\[[ZZYY - - mmnnoopp,,++**))99::;;<<``__^^]]iijjkkll00//..--55667788ddccbbaaeeffgghhffgghhiiRRSSTTUUGGFFEEDD !!{{zzyyxxNNOOPPQQKKJJIIHH~~~~}}||JJKKLLMMOONNMMLLzz{{||}}yyxxwwvv - - lkkjjiihgghhiijj221100//33445566ffeeddccccddeeff66554433//001122jjiihhgg__``aabb::998877++,,--..__^^]]\\""##$$%%UTSSRRQQ||}}~~~~HHIIJJKKQQPPOONNxxyyzz{{!! DDEEFFGGUUTTSSRRttuuvvww%%$$##""@@AABBCCEEDDCCBB77==>>????>>==<;--..//00llkkjjii]]^^__``<<;;::99))**++,,ppoonnmm - - YYZZ[[\\@@??>>==%%&&''((00//..--EEFFGGHH@@??>>==IIJJKKLL0//..--,AABBCCDDXXWWVVUU qqrrsstt((''&&%%==>>??@@\\[[ZZYY - - mmnnoopp,,++**))99::;;<<``__^^]]iijjkklljjkkllmm~~}}||VVWWXXYYCCBBAA@@""##$$%%wwvvuuttRRSSTTUUGGFFEEDD !!{{zzyyxxNNOOPPQQKKJJIIHH~~uuoonnmm hggffeed - -kkllmmnn..--,,++778899::bbaa``__gghhiijj221100//33445566ffeeddccccddeeff66554433//001122[[ZZYYSS&&''(())PPOONNMM}}||{{zzLLMMNNOOMMLLKKJJ||}}~~~~HHIIJJKKQQPPOONNxxyyzz{{!! DDEEFFGGAA@@??>>@@AABBCC:987766511223344hhggffeeaabbccdd88776655--..//00llkkjjii]]^^__``<<;;::99))**++,,,,++**))IIJJKKLL77665544MMNNOOPP,++**))(EEFFGGHHTTSSRRQQuuvvwwxx$$##""!!AABBCCDDXXWWVVUU qqrrsstt((''&&%%==>>??@@\\[[ZZYY - - mmnnoopp nnoouuvv{{zzyyxx - -ZZ[[\\]]??>>==<<&&''(())ssrrqqpp VVWWXXYYCCBBAA@@""##$$%%wwvvuuttRRSSTTUUGGFFEEDD !!llkkjjiidccbbaa` ooppqqrr**))(('';;<<==>>^^]]\\[[ - -kkllmmnn..--,,++778899::bbaa``__gghhiijj221100//33445566RRQQPPOO**++,,--LLKKJJII !!""##yyxxwwvvPPQQRRSSIIHHGGFF}}||{{zzLLMMNNOOMMLLKKJJ||}}~~~~HHIIJJKK==776655DDEEFFGG5443322155667788ddccbbaaeeffgghh4433221111223344hhggffeeaabbccdd88776655--..//00((''&&%%MMNNOOPP33221100QQRRSSYY(''&&%%$IIJJKKLLPPOONNMMyyzz{{|| EEFFGGHHTTSSRRQQuuvvwwxx$$##""!!AABBCCDDXXWWVVUU qqrrsstt - - wwxxyyzzwwvvuuts ^^__``aa;;::9988**++,,--oonnmmll - - ZZ[[\\]]??>>==<<&&''(())ssrrqqpp VVWWXXYYCCBBAA@@""##$$%%hhggffee`__^^]]\ssttuuvv&&%%$$##??@@AABBZZYYXXWW ooppqqrr**))(('';;<<==>>^^]]\\[[ - -kkllmmnn..--,,++778899::NNMMLLKK..//0011HHGGFFEE$$%%&&''uuttssrrTTUUVVWWEEDDCCBB !!""##yyxxwwvvPPQQRRSSIIHHGGFF}}||{{zzLLMMNNOO44332211HHIIJJKK100//..-99::;;<<``__^^]]iijjkkll00//..--55667788ddccbbaaeeffgghh4433221111223344$$##""!!QQRRSSTT//..--,,ZZ[[\\]]$##""!! MMNNOOPPLLKKJJII}}~~~~}}IIJJKKLLPPOONNMMyyzz{{|| EEFFGGHHTTSSRRQQuuvvwwxx~~}}||{{{{||}}~~rqpoonnmbbccddee77665544..//0011kkjjiihh^^__``aa;;::9988**++,,--oonnmmll - - ZZ[[\\]]??>>==<<&&''(())ddccbbaa\[[ZZYYXwwxxyyzz""!! CCDDEEFFVVUUTTSSssttuuvv&&%%$$##??@@AABBZZYYXXWW ooppqqrr**))(('';;<<==>>JJIIHHGG22334455DDCCBBAA(())**++qqppoonn - -XXYYZZ[[AA@@??>>$$%%&&''uuttssrrTTUUVVWWEEDDCCBB !!""##yyxxwwvvPPQQRRSS00//..--LLMMNNOO-,,++**)==>>??@@\\[[ZZYY - - mmnnoopp,,++**))99::;;<<``__^^]]iijjkkll00//..--55667788 UUVVWWXX++**))((^^__``aaQQRRSSTTHHGGFFEE ||{{zzyyMMNNOOPPLLKKJJII}}~~~~}}IIJJKKLLPPOONNMMyyzz{{||zzyyxxww - -mllkkjjiffgghhii3322110022334455ggffeeddbbccddee77665544..//0011kkjjiihh^^__``aa;;::9988**++,,--``__^^]]!!""##$$WVUTSSRR{{||}}~~GGHHIIJJRRQQPPOOwwxxyyzz""!! CCDDEEFFVVUUTTSSssttuuvv&&%%$$##??@@AABBFFEEDDCC6677==>>@@??>>==,,--..//mmllkkjj \\]]^^__==<<;;::(())**++qqppoonn - -XXYYZZ[[AA@@??>>$$%%&&''uuttssrrTTUUVVWW,,++**))PPQQRRSS)((''&&%AABBCCDDXXWWVVUU qqrrsstt((''&&%%==>>??@@\\[[ZZYY - - mmnnoopp,,++**))99::;;<<~~}}YYZZ[[\\''&&%%$$bbccddeeUUVVWWXXDDCCBBAA!!""##$$xxwwvvuuQQRRSSTTHHGGFFEE ||{{zzyyMMNNOOPPLLKKJJII}}~~vvuuoonn ihhggffe jjkkllmm//..--,,66778899ccbbaa``ffgghhii3322110022334455ggffeeddbbccddee77665544..//0011\\[[ZZYY%%&&''((QQPPOONN~~}}||{{KKLLMMNNNNMMLLKK{{||}}~~GGHHIIJJRRQQPPOOwwxxyyzz""!! CCDDEEFFBBAA@@????@@AABB<;:9877600112233iihhggff``aabbcc99887766,,--..//mmllkkjj \\]]^^__==<<;;::(())**++qqppoonn - -XXYYZZ[[((''&&%%YYZZ[[\\%$$##""!EEFFGGHHTTSSRRQQuuvvwwxx$$##""!!AABBCCDDXXWWVVUU qqrrsstt((''&&%%==>>??@@||{{zzyy]]^^__``##""!!ffgghhiiYYZZ[[\\@@??>>==%%&&''((ttssrrqq UUVVWWXXDDCCBBAA!!""##$$xxwwvvuuQQRRSSTTHHGGFFEE mmllkkjjeddccbba - - nnooppqq++**))((::;;<<==__^^]]\\ jjkkllmm//..--,,66778899ccbbaa``ffgghhii3322110022334455SSRRQQPP))**++,,MMLLKKJJ !!""zzyyxxwwOOPPQQRRJJIIHHGG~~}}||{{KKLLMMNNNNMMLLKK{{||}}~~GGHHIIJJ>>==7766CCDDEEFF6554433244556677eeddccbbddeeffgg5544332200112233iihhggff``aabbcc99887766,,--..//mmllkkjj \\]]^^__$$##""!!]]^^__``! IIJJKKLLPPOONNMMyyzz{{|| EEFFGGHHTTSSRRQQuuvvwwxx$$##""!!AABBCCDDxxwwvvuuaabbccddjjkkllmm~~}}||]]^^__``<<;;::99))**++,,ppoonnmm - - YYZZ[[\\@@??>>==%%&&''((ttssrrqq UUVVWWXXDDCCBBAA!!""##$$iihhggffa``__^^]rrssttuu''&&%%$$>>??@@AA[[ZZYYXX - - nnooppqq++**))((::;;<<==__^^]]\\ jjkkllmm//..--,,66778899OONNMMLL--..//00IIHHGGFF##$$%%&&vvuuttssSSTTUUVVFFEEDDCC !!""zzyyxxwwOOPPQQRRJJIIHHGG~~}}||{{KKLLMMNN55443322GGHHIIJJ21100//.8899::;;aa``__^^hhiijjkk1100//..44556677eeddccbbddeeffgg5544332200112233iihhggff``aabbccaabbccddMMNNOOPPLLKKJJII}}~~~~}}IIJJKKLLPPOONNMMyyzz{{|| EEFFGGHHttssrrqq eeffgghhnnoouuvv{{zzyyxx - -aabbccdd88776655--..//00llkkjjii]]^^__``<<;;::99))**++,,ppoonnmm - - YYZZ[[\\@@??>>==%%&&''((eeddccbb]\\[[ZZYvvwwxxyy##""!! BBCCDDEEWWVVUUTTrrssttuu''&&%%$$>>??@@AA[[ZZYYXX - - nnooppqq++**))((::;;<<==KKJJIIHH11223344EEDDCCBB''(())**rrqqppoo WWXXYYZZBBAA@@??##$$%%&&vvuuttssSSTTUUVVFFEEDDCC !!""zzyyxxwwOOPPQQRR1100//..KKLLMMNN.--,,++*<<==>>??]]\\[[ZZ - - llmmnnoo--,,++**8899::;;aa``__^^hhiijjkk1100//..44556677eeddccbbddeeffggeeffgghhQQRRSSTTHHGGFFEE ||{{zzyyMMNNOOPPLLKKJJII}}~~~~}}IIJJKKLLppoonnmm - - iijjkkllwwxxyyzzwwvvuuts eeffgghh4433221111223344hhggffeeaabbccdd88776655--..//00llkkjjii]]^^__``<<;;::99))**++,,aa``__^^!!""##YXWVUTSSzz{{||}}FFGGHHIISSRRQQPPvvwwxxyy##""!! BBCCDDEEWWVVUUTTrrssttuu''&&%%$$>>??@@AAGGFFEEDD556677==AA@@??>>++,,--..nnmmllkk - - [[\\]]^^>>==<<;;''(())**rrqqppoo WWXXYYZZBBAA@@??##$$%%&&vvuuttssSSTTUUVV--,,++**OOPPQQRR*))((''&@@AABBCCYYXXWWVV ppqqrrss))((''&&<<==>>??]]\\[[ZZ - - llmmnnoo--,,++**8899::;;aa``__^^hhiijjkkiijjkkll~~}}UUVVWWXXDDCCBBAA!!""##$$xxwwvvuuQQRRSSTTHHGGFFEE ||{{zzyyMMNNOOPPllkkjjii - - mmnnoopp {{||}}~~rqpoonnmiijjkkll00//..--55667788ddccbbaaeeffgghh4433221111223344hhggffeeaabbccdd88776655--..//00]]\\[[ZZ$$%%&&''RRQQPPOO~~~~}}||JJKKLLMMOONNMMLLzz{{||}}FFGGHHIISSRRQQPPvvwwxxyy##""!! BBCCDDEECCBBAA@@>>??@@AA==<;:987//001122jjiihhgg__``aabb::998877++,,--..nnmmllkk - - [[\\]]^^>>==<<;;''(())**rrqqppoo WWXXYYZZ))((''&&SSYYZZ[[&%%$$##"DDEEFFGGUUTTSSRRttuuvvww%%$$##""@@AABBCCYYXXWWVV ppqqrrss))((''&&<<==>>??]]\\[[ZZ - - llmmnnoo mmnnoouu||{{zzyy YYZZ[[\\@@??>>==%%&&''((ttssrrqq UUVVWWXXDDCCBBAA!!""##$$xxwwvvuuQQRRSSTThhggffee qqrrsstt - - - -mllkkjji - - mmnnoopp,,++**))99::;;<<``__^^]]iijjkkll00//..--55667788ddccbbaaeeffgghh4433221111223344YYSSRRQQ(())**++NNMMLLKK !!{{zzyyxxNNOOPPQQKKJJIIHH~~~~}}||JJKKLLMMOONNMMLLzz{{||}}FFGGHHII??>>==77BBCCDDEE7665544333445566ffeeddccccddeeff66554433//001122jjiihhgg__``aabb::998877++,,--..nnmmllkk - - [[\\]]^^%%$$##""\\]]^^__"!! HHIIJJKKQQPPOONNxxyyzz{{!! DDEEFFGGUUTTSSRRttuuvvww%%$$##""@@AABBCCYYXXWWVV ppqqrrss - - vvwwxxyyxxwwvvuu - - ]]^^__``<<;;::99))**++,,ppoonnmm - - YYZZ[[\\@@??>>==%%&&''((ttssrrqq UUVVWWXXddccbbaauuvvwwxx~~}}||{{ ihhggffe qqrrsstt((''&&%%==>>??@@\\[[ZZYY - - mmnnoopp,,++**))99::;;<<``__^^]]iijjkkll00//..--55667788PPOONNMM,,--..//JJIIHHGG""##$$%%wwvvuuttRRSSTTUUGGFFEEDD !!{{zzyyxxNNOOPPQQKKJJIIHH~~~~}}||JJKKLLMM66554433FFGGHHII3221100/778899::bbaa``__gghhiijj221100//33445566ffeeddccccddeeff66554433//001122jjiihhgg__``aabb!!``aabbccLLMMNNOOMMLLKKJJ||}}~~~~HHIIJJKKQQPPOONNxxyyzz{{!! DDEEFFGGUUTTSSRRttuuvvww~~}}||zz{{||}}tsrqpoonaabbccdd88776655--..//00llkkjjii]]^^__``<<;;::99))**++,,ppoonnmm - - YYZZ[[\\qqrrsstt``__^^]]yyzz{{||zzyyxxwweddccbbauuvvwwxx$$##""!!AABBCCDDXXWWVVUU qqrrsstt((''&&%%==>>??@@\\[[ZZYY - - mmnnoopp,,++**))99::;;<>^^]]\\[[ - -kkllmmnn..--,,++778899::bbaa``__gghhiijj221100//33445566ffeeddccccddeeffddeeffggPPQQRRSSIIHHGGFF}}||{{zzLLMMNNOOMMLLKKJJ||}}~~~~HHIIJJKKQQPPOONNxxyyzz{{{{zzyyxx ~~nmmllkkjeeffgghh4433221111223344hhggffeeaabbccdd88776655--..//00llkkjjii]]^^__``uuvvwwxx\\[[ZZYY}}~~vvuuoonna``__^^]yyzz{{|| EEFFGGHHTTSSRRQQuuvvwwxx$$##""!!AABBCCDDXXWWVVUU qqrrsstt((''&&%%==>>??@@HHGGFFEE44556677BBAA@@??**++,,--oonnmmll - - ZZ[[\\]]??>>==<<&&''(())ssrrqqpp VVWWXXYYCCBBAA@@""##$$%%wwvvuuttRRSSTTUU..--,,++NNOOPPQQ+**))(('??@@AABBZZYYXXWW ooppqqrr**))(('';;<<==>>^^]]\\[[ - -kkllmmnn..--,,++778899::bbaa``__gghhiijjhhiijjkk~~TTUUVVWWEEDDCCBB !!""##yyxxwwvvPPQQRRSSIIHHGGFF}}||{{zzLLMMNNOOMMLLKKJJ||}}~~wwvvuuoo - - jiihhggfiijjkkll00//..--55667788ddccbbaaeeffgghh4433221111223344hhggffeeaabbccddyyzz{{||XXWWVVUU mmllkkjj]\\[[ZZY}}~~~~}}IIJJKKLLPPOONNMMyyzz{{|| EEFFGGHHTTSSRRQQuuvvwwxx$$##""!!AABBCCDDDDCCBBAA==>>??@@>>==<;:9..//0011kkjjiihh^^__``aa;;::9988**++,,--oonnmmll - - ZZ[[\\]]??>>==<<&&''(())ssrrqqpp VVWWXXYY**))((''RRSSYYZZ'&&%%$$#CCDDEEFFVVUUTTSSssttuuvv&&%%$$##??@@AABBZZYYXXWW ooppqqrr**))(('';;<<==>>^^]]\\[[ - -kkllmmnn llmmnnoo}}||{{zz XXYYZZ[[AA@@??>>$$%%&&''uuttssrrTTUUVVWWEEDDCCBB !!""##yyxxwwvvPPQQRRSSIIHHGGFFnnmmllkkfeeddccb - - mmnnoopp,,++**))99::;;<<``__^^]]iijjkkll00//..--55667788ddccbbaaeeffgghh}}~~TTSSRRQQ!!""##$$iihhggff!!""##YXWVUTSS ||{{zzyyMMNNOOPPLLKKJJII}}~~~~}}IIJJKKLLPPOONNMMyyzz{{|| EEFFGGHH@@??>>==AABBCCDD8776655422334455ggffeeddbbccddee77665544..//0011kkjjiihh^^__``aa;;::9988**++,,--oonnmmll - - ZZ[[\\]]&&%%$$##[[\\]]^^#""!! GGHHIIJJRRQQPPOOwwxxyyzz""!! CCDDEEFFVVUUTTSSssttuuvv&&%%$$##??@@AABBZZYYXXWW ooppqqrr - - uuvvwwxxyyxxwwvv - - \\]]^^__==<<;;::(())**++qqppoonn - -XXYYZZ[[AA@@??>>$$%%&&''uuttssrrTTUUVVWWEEDDCCBB !!""##jjiihhggbaa``__^ qqrrsstt((''&&%%==>>??@@\\[[ZZYY - - mmnnoopp,,++**))99::;;<<``__^^]]iijjkkllPPOONNMM%%&&''((eeddccbb$$%%&&''RRQQPPOO!!""##$$xxwwvvuuQQRRSSTTHHGGFFEE ||{{zzyyMMNNOOPPLLKKJJII}}~~~~}}IIJJKKLL77665544EEFFGGHH4332211066778899ccbbaa``ffgghhii3322110022334455ggffeeddbbccddee77665544..//0011kkjjiihh^^__``aa""!!__``aabbKKLLMMNNNNMMLLKK{{||}}~~GGHHIIJJRRQQPPOOwwxxyyzz""!! CCDDEEFFVVUUTTSSssttuuvv~~}}yyzz{{||uutsrqpo``aabbcc99887766,,--..//mmllkkjj \\]]^^__==<<;;::(())**++qqppoonn - -XXYYZZ[[AA@@??>>$$%%&&''ffeeddcc^]]\\[[Zuuvvwwxx$$##""!!AABBCCDDXXWWVVUU qqrrsstt((''&&%%==>>??@@\\[[ZZYY - - mmnnooppttssrrqq UUVVWWXX++**))((QQRRSSYY(''&&%%$BBCCDDEEWWVVUUTTrrssttuu''&&%%$$>>??@@AA[[ZZYYXX - - nnooppqq++**))((::;;<<==HHGGFFEEAABBCCDD33221100BBCCDDEEppoonnmm - - YYZZ[[\\''&&%%$$ZZ[[\\]]$##""!! FFGGHHIISSRRQQPPvvwwxxyy##""!! BBCCDDEEWWVVUUTTrrssttuu''&&%%$$>>??@@AADDCCBBAAEEFFGGHH//..--,,FFGGHHIIllkkjjii]]^^__``##""!!^^__``aaJJKKLLMMOONNMMLLzz{{||}}FFGGHHIISSRRQQPPvvwwxxyy##""!! BBCCDDEE@@??>>==IIJJKKLL++**))((JJKKLLMMhhggffeeaabbccddbbccddeeNNOOPPQQKKJJIIHH~~~~}}||JJKKLLMMOONNMMLLzz{{||}}FFGGHHII77665544MMNNOOPP''&&%%$$NNOOPPQQddccbbaaeeffgghhffgghhiiRRSSTTUUGGFFEEDD !!{{zzyyxxNNOOPPQQKKJJIIHH~~~~}}||JJKKLLMM33221100QQRRSSYY##""!! RRSSTTUU``__^^]]iijjkklljjkkllmm~~}}||VVWWXXYYCCBBAA@@""##$$%%wwvvuuttRRSSTTUUGGFFEEDD !!{{zzyyxxNNOOPPQQ//..--,,ZZ[[\\]]VVWWXXYY\\[[ZZYY - - mmnnoopp nnoouuvv{{zzyyxx - -ZZ[[\\]]??>>==<<&&''(())ssrrqqpp VVWWXXYYCCBBAA@@""##$$%%wwvvuuttRRSSTTUU++**))((^^__``aa~~}}||ZZ[[\\]]XXWWVVUU qqrrsstt - - wwxxyyzzwwvvuuts ^^__``aa;;::9988**++,,--oonnmmll - - ZZ[[\\]]??>>==<<&&''(())ssrrqqpp VVWWXXYY''&&%%$$bbccddee{{zzyyxx^^__``aaTTSSRRQQuuvvwwxx~~}}||{{{{||}}~~rqpoonnmbbccddee77665544..//0011kkjjiihh^^__``aa;;::9988**++,,--oonnmmll - - ZZ[[\\]]##""!!ffgghhiiwwvvuuttbbccddeePPOONNMMyyzz{{||zzyyxxww - -mllkkjjiffgghhii3322110022334455ggffeeddbbccddee77665544..//0011kkjjiihh^^__``aajjkkllmmssrrqqpp ffgghhiiLLKKJJII}}~~vvuuoonn ihhggffe jjkkllmm//..--,,66778899ccbbaa``ffgghhii3322110022334455ggffeeddbbccddeennoouuvvoonnmmll - - jjkkllmmHHGGFFEE mmllkkjjeddccbba - - nnooppqq++**))((::;;<<==__^^]]\\ jjkkllmm//..--,,66778899ccbbaa``ffgghhiiwwxxyyzzkkjjiihh - - nnooppqqDDCCBBAA!!""##$$iihhggffa``__^^]rrssttuu''&&%%$$>>??@@AA[[ZZYYXX - - nnooppqq++**))((::;;<<==__^^]]\\ jjkkllmm {{||}}~~ggffeeddrrssttuu@@??>>==%%&&''((eeddccbb]\\[[ZZYvvwwxxyy##""!! BBCCDDEEWWVVUUTTrrssttuu''&&%%$$>>??@@AA[[ZZYYXX - - nnooppqq - - - -ccbbaa``vvwwxxyy<<;;::99))**++,,aa``__^^!!""##YXWVUTSSzz{{||}}FFGGHHIISSRRQQPPvvwwxxyy##""!! BBCCDDEEWWVVUUTTrrssttuu~~}}||{{ __^^]]\\zz{{||}}88776655--..//00]]\\[[ZZ$$%%&&''RRQQPPOO~~~~}}||JJKKLLMMOONNMMLLzz{{||}}FFGGHHIISSRRQQPPvvwwxxyyzzyyxxww[[ZZYYXX~~4433221111223344YYSSRRQQ(())**++NNMMLLKK !!{{zzyyxxNNOOPPQQKKJJIIHH~~~~}}||JJKKLLMMOONNMMLLzz{{||}}vvuuoonnWWVVUUTT !!00//..--55667788PPOONNMM,,--..//JJIIHHGG""##$$%%wwvvuuttRRSSTTUUGGFFEEDD !!{{zzyyxxNNOOPPQQKKJJIIHH~~mmllkkjjSSRRQQPP""##$$%%,,++**))99::;;<>??@@HHGGFFEE44556677BBAA@@??**++,,--oonnmmll - - ZZ[[\\]]??>>==<<&&''(())ssrrqqpp VVWWXXYYCCBBAA@@""##$$%%eeddccbb$$%%&&''KKJJIIHH**++,,--$$##""!!AABBCCDDDDCCBBAA==>>??@@>>==<;:9..//0011kkjjiihh^^__``aa;;::9988**++,,--oonnmmll - - ZZ[[\\]]??>>==<<&&''(())aa``__^^(())**++GGFFEEDD..//0011 EEFFGGHH@@??>>==AABBCCDD8776655422334455ggffeeddbbccddee77665544..//0011kkjjiihh^^__``aa;;::9988**++,,--]]\\[[ZZ,,--..//CCBBAA@@22334455~~}}IIJJKKLL77665544EEFFGGHH4332211066778899ccbbaa``ffgghhii3322110022334455ggffeeddbbccddee77665544..//0011YYSSRRQQ00112233??>>==<<66778899||{{zzyyMMNNOOPP33221100IIJJKKLL0//..--,::;;<<==__^^]]\\ jjkkllmm//..--,,66778899ccbbaa``ffgghhii3322110022334455PPOONNMM44556677;;::9988::;;<<==xxwwvvuuQQRRSSTT//..--,,MMNNOOPP,++**))(>>??@@AA[[ZZYYXX - - nnooppqq++**))((::;;<<==__^^]]\\ jjkkllmm//..--,,66778899LLKKJJII==>>??@@77665544>>??@@AAZHAbے`JXQtArd|ZdQbnXvےbHAےbHArtAJlvpfH~fZHAbے`JXQtlJnXv`f~Hp˂rXQJ`ےbdQZ|drtA`vXnے`JXQr˂ptArd|ZdQbfpvnXv`bHAZdrtAltbvpfJXQrr˂pZdQbtlJtAXv`fHAZp˂rXQltbdQZ|~f`vXn`JXQrtlJrd|~HfpvnJ`ےbHAZpdrtAJtbnvpfHbے`XQr˂lJtArvnXnXv`HAZp˂rtAJltbdQpfH~f`vbے`JXQrlJtArdf~HfprXQJ`ےbZ|drtAJlXnvpfH~˂pZHAd|ZdQbtfpvrXQJ`bHAZtbdbnvfH~pZHAbے`JbtlJtArd`f~fpvrXQJ`tbdQZ|drf`vXnvpXQr˂pZHA|ZdQHfpvnXvےbHAZp˂tbdQvp`vf`vbJQr|ZdQbtlJnXv`f~Hp˂rXQJ`ےbdQZ|H~f`vXnے`JXQr˂ptArd|ZdQbfpvXQJ`ےے`JXQr˂p|ZdQbtlJ`f~Zp˂Zp˂tbdQH~f`vXnے`JXQr˂ptArdf~HfpvXQJ`ےbHAZdrtAJltvpfr˂pZHAb|ZdQbtlJnXv`f~Hp˂rdQZ|dQZ|H~fpZHAZHAblJtArd|~Hf˂rXQJ`ےdQZ|drtAJvXnvpfH˂pZtAd|ZdQbtpvnXv`fbHAZp˂rXQltbvpf~f`JXQHAbpZHAbd|Zv`ff~HrXQJtbdQZ|df`vXnvJXQr˂pZHAd|Z~HfpvnX`ےbHAZp˂rtAJltbdQpfH~fZHAbے`dQbtlJtArnXv`p˂rp˂rQZ|dpfHf`vXے`JXQr˂JtArd|ZdQHfpvnrXQJےbHA|drtAJlnvpfH~pZHAbے`JXQbtlnXv`f~Zp˂rXQJ`Z|dXnvXnv˂pZtlJtArdf~HfpvXQJ`ےbHAZdrtA`vXnvpfr˂pZHAb|ZdQbtlJnXv`bHAZr˂pZHAbtlJtArdHXv`rXQJ`bHAZZ|d`vXnvpfr˂pZHAے|ZdQbfpvnXv`bHAZp˂rJltbdQZ|H~fZHAbے`JXQtlJtArdf~HfpvXQJ`ےdrtAJdrtAJ`vXHbے``JXQrd|ZdQbtpvnJ`ےbHAZpdrtAJltbvpfH~f`HAbےZdQbtlJtAXv`f~Hf˂rXQJ`ےdQZ|Hf`vXnے`Jے`JdQbt~Hfpfpv`ےbZ|drtAJlXnvpfH~˂pZHAbے`dQbtvnXv`fHAZp˂rXQJtbdQZ|df`vbے`JXQrlJtArd|ZpvnXQJ`ےXQJ`ےrtAJlf`vXnvpXQr˂pZHAb|ZdQbtlnXv`ےHAZp˂tAJltbdQZfH~f`vXے`JrbtJtArd`f~HfpvrXQJ`ےbHArtAdQZpfH~pfH~HAbےtArd|ZdQbfpvnXv`bHAZdrtAJltvpfH~fZHAbے`JXQtlJtArdf~Hp˂rZHAbے`JXQtArd|ZdQbf~HےbHAdrtArtAJlvpfH~fZHAb`JXQrtlJnXv`f~Hp˂rXQJ`ےbdQZ|dtAJ`vXnے`JXQr˂ptArd|ZdQbfpvnXv`bHAZltbltb~f`JXQrZr˂pZZdQbtlJtAXv`fbHAZp˂rXQltbdQZ|~f`vXn`JXQrlJtArd|~HfpvnJ`ےbHAZpdrtAJvXnvpfHXQr˂XQr˂l|ZdQvnXnXv`HAZp˂rtAJltbdQpfH~f`vbے`JXQrlJtArv`f~HfprXQJ`ےbZ|drtAJlXnvJXQr˂pZHAd|ZdQbtXv`fbHAZbHAXQtbdnvpfH~pZHAbے`JbtlJtArd`f~Zp˂rXQJ`tbdQZ|drf`vXnvpXQr˂lJtAd|ZdQHfpvnXvےbHAZp˂|drf`vf`v`JXQr|ZdQbtlJnXv`f~Hp˂rJltbdQZ|H~f`vXnے`JXQr˂ptArdf~HfpvXQJ`ےے`JXQr˂p|ZdQbtlJfpvXQJ`ےJbdQtbQZH~f`vXnے`JXQbtltArdf~HfpvXQJ`ےbHAZdrtAltbvpfr˂pZHAb|ZdQbtlJnXv`fHfp˂rdQZ|dQZ|lvXnHAbےAb`JlJtArdf~Hf˂rXQJ`ےdQZ|drtAJvXnvpfH˂pZrd|ZdQbtpvnXv`fbHAZp˂rXQltbvpfH~f`pZHAbp`JXQbtlv`f~ffpvrXQJtbdQZ|df`vXnvJXQr˂pZHAd|Z~HfpvnX`ےbHAZp˂rtAJltbdQpfH~˂pZHAbے`dQbtlJtAr~Hfp˂rJ`ےQZ|dfH~f`vXے`JXQr˂JtArd|ZdQHfpvrXQJ`ےbHA|drtAJlnvpfH~pZHAb|ZdQbtlnXv`f~Zp˂rXQJ`tAJlXnvXH~˂pZtlJtArdf~HfpvXQJ`ےbdQZ|drtA`vXnvpfr˂pZHAb|ZdQbfpvnXv`bHAZr˂pZHAbtlJtArdnXv`bHAZZ|ddrtA`vXnvpfr˂pJtAd|ZdQbfpvnXv`bHAZp˂rJltnvpH~fZHAbے`JXQtlJtArdf~HpvnXQJ`ےdrtAJtbdQvpfH`JXQrXQr˂rd|~HfpvnJ`ےbHAZpdrtAJltbvpfH~fZHAbےZdQbtlJtAXv`f~Hf˂rXQJ`ےdQZ|~f`vXnے`JrbtJtArdfpv々nrXQ`ےbZ|drtAJlXnvpfH~˂pZHAے`JdQbtvnXv`fHAZp˂rXQJtbdQZ|df`vbے`JXQrlJtArd|ZpvnXQJ`pbHAZprtAJf`vXnvpXQr˂pZHAb|ZdQbtlnXvےbHAZp˂tAJltbdQZfH~f`vXے`JbtlJtArd`f~HfpvrXQJ`ےbHAtbdQZpfH~fZHAbHAbےtArd|ZdQbfpvnXv`bHAZdrtAJltvpfH~fZHAbے`JXQtlJnXv`f~Hp˂rZHAbے`JXQtArd|ZdQbf~Hp˂rrtAJlJltvpfH~fZHAb|ZdQbtlJnXv`f~Hp˂rXQJ`ےbdQZ|fHf`vXnے`JXQr˂ptArd|ZdQbfpvrXQJ`bHAZltdZ|d~f`˂pZpZHAbZdQbtpvnXv`fbHAZp˂rXQltbdQZ|~f`HAbے`JXQrlJtArd|~HfpvnJ`ےbHAZdrtAJvXnvpfHXQr˂l|ZdQ|ZdQnXv`J`ےHAZp˂rtAJltbdQpfH~f`vbے`XQrbtlJtArv`f~HfprXQJ`ےbZ|dtAJlXnvJXQr˂pZHAd|ZdQbtXv`f˂rXQ˂rXQbdQZ|nvpfH~pZHAbے`JbtlJtArd`f~Zp˂rXQJ`tbdQZ|drf`vXnvpXQr˂JtArd|ZdQHfpvnXvےbHAZp˂|drvpJQr`JXQr|ZdQbtlJnXv`fHfp˂rJltbdQZ|H~f`vXnے`JXQr˂ptArdf~HfpvXQJ`ےے`JXQr˂p|ZdQbtlJfpvXQJ`ےtbdQbdQZ|H~f`vXnے`JXQtlJtArdf~HfpvXQJ`ےbHAZdrtA`vXnvpfr˂pZHAb|ZdQbtlJnXv`ےHAZp˂rrtAJlrtAJlvXnHAbےے`JlJtAXv`f~Hf˂rXQJ`ےdQZ|drtAJvXn`JXQr˂pZrd|ZdQbtpvnXv`fbHAZpdrtAJltbvpfH~f`p`JXQbtlbtlf~HHAZp˂rXQJtbdQZ|df`vXnvJXQrlJtAd|Z~HfpvnX`ےbHAZp˂rtAJltbnpfH~˂pZHAbے`dQbtlJtAr~HXJ`ےJ`ےdrtAfH~f`vXے`JXQr˂JtArdf~HfpvrXQJ`ےbHA|drtAJlnvpfH~pZHAb|ZdQbtlnXv`f~Zp˂rXQJ`tAJlfH~˂pZHZHAbtlJtArdf~HpvnXQJ`ےbdQZ|drtA`vXnvpfr˂pZHAے|ZdQbfpvnXv`bHAZr˂pZHAbtlJtArd~HfbHAZZ|ddrtA`vXnvpfr˂ptArd|ZdQbfpvnXv`bHAZp˂rJltvpfH~fZHAbے`JXQtlJtArdf~Hp˂rXQJ`ےtbdQtbdQvp`v`JXQrXQr˂rd|~HfpvnJ`ےbHAZpdrtAJltbvpfH˂pZHAbےZdQbtlJtAXv`f~Hf˂rXQltbdQZ|~f`vXnr˂pJtArdJtArdfpv〉rXQJ`ےbZ|drtAJlXnvpfH~˂pZHAd|ZdQbtvnXv`fHAZp˂rXQJtbdQvpfHf`vbے`JXQrlJtArd|Zv`fbHAZpbHAZpJltf`vXnvpXQr˂pZHAb|ZdQHfpvnXvےbHAZp˂tAJltbdQZfH~fZHAbے`JbtlJtArd`f~HfpvrXQJ`ےbHAtdrtAf`vXAbے`ے`JXtArd|ZdQbfpvrXQJ`bHAZdrtAJltvpfH~fZHAb`JXQrtlJnXv`f~Hp˂rZHAbے`JXQtArdf~Hpvnp˂rtAJlJltvpfH~fZHAb|ZdQbtlJnXv`f~Hp˂rXQJ`ےbdQZ|H~f`vXnے`JXQr˂ptArd|ZdQbfpvXQJ`ےbHAZZ|dZ|lXnv˂pZApZA`ZdQbtpvnXv`fbHAZp˂rXQltbdQZ|~f`HAbے`JXQrlJtArd|~HfpvnJ`ےdQZ|drtAJvXnvpfHZHAb|ZdQtlJnXv``ےbHAZp˂rtAJltbdQpfH~f`vbے`dQbtlJtArv`f~HfprXQJ`ےbZ|df`vXnvJXQr˂pZHAd|ZdQbt~Hfp˂rXQ˂bbdQZ|nvpfH~pZHAbے`JbtlnXv`f~Zp˂rXQJ`tbdQZ|drf`vXے`JXQr˂JtArd|ZdQHfpvnXvےbHAZdrJltnvpJXQrQr˂p|ZdQbtlJnXv`ےHAZp˂rJltbdQZ|H~f`vXnے`JXQbtltArdf~HfpvXQJ`ےے`JXQr˂p|ZdQbXv`fXv`fbHAZptbQZbdQZ|H~fZHAbے`JXQtlJtArdf~HfpvXQJ`ےbHAZdrtA`vXnvpfr˂pZHAb|ZdQbtlJnXv`bHAZp˂rrtAJltbnpfH~b`JXJXQrblJtAXv`f~Hf˂rXQJ`ےdQZ|dtAJlvXn`JXQr˂pZrd|ZdQbtpvnXv`fbHAZpdrtAJltbvpfH~f`ے`JXQbtltArdf~HfHAZp˂rXQJtbdQZ|df`vXnvJXQrlJtArd|Z~HfpvnX`ےbHAZp˂rtAJlXnvpfH~˂pZHAbے`dQbtlJtArvnXJ`ےHAZddrtAfH~f`vXے`JXQr˂JtArd`f~HfpvrXQJ`ےbHA|drtAJlnvpXQr˂pZHAb|ZdQbtlnXv`f~Zp˂tAdQZ|bdQZ|fH~˂pZHZHAbtlJtArdf~Hp˂rXQJ`ےbdQZ|drtA`vXnvpfr˂pJtAd|ZdQbfpvnXv`bHAZr˂pZHAbtlJ~Hf~Hf˂rXQdrtAJrAJl`vXnے`JXQr˂ptArd|ZdQbfpvnXv`bHAZdrtAJltvpfH~fZHAbے`JXQtlJtArdf~Hp˂rXQJ`ےtbdQvp`vf`vQr˂ptlJrd|~HfpvnJ`ےbHAZpdrtAJtbnvpfH˂pZHAbےZdQbtlJtAXv`fHfp˂rXQltbdQZ|~f`vXnr˂p|ZdQb|ZdQbvnXvrXQJ`ےbZ|drtAJlXnvpfH~˂pZHAd|ZdQbtvnXv`fHAZp˂rXQJtbdQpfH~f`vbے`JXQrlJtArd|Zv`fbHAXQJrtAJJltf`vXnvpXQr˂pZHA|ZdQHfpvnXvےbHAZp˂tAJltbdQZfH~pZHAbے`JbtlJtArd`f~HfpvrXQJ`drtAdrtAf`vXAbے`ے`JXtArd|ZdQbfpvXQJ`ےbHAZdrtAJltvpfH~fZHAb|ZdQbtlJnXv`f~Hp˂rZHAbے`JXQtArdpvnpvnJ`ےltbtbdQZvpfr˂pZHAb|ZdQbtlJnXv`f~Hp˂rJltbdQZ|H~f`vXnے`JXQr˂ptArdf~HfpvXQJ`ےbHAZZ|lXnvXnvZHAbtAd|ZdQbtpvnXv`fbHAZp˂rXQltbvpf~f`HAbے`JXQrlJtArd|~HfvnrJ`ےdQZ|drtAJvXnvpfHZHAbtlJtlJ`f~`ےbHAZp˂rtAJltbdQpfH~fZHAbے`dQbtlJtArv`f~HfprXQJ`ےbZ|df`vXnvJXQr˂pZHAd|ZdQbt~Hfp`ےbbdQZ|bQZdnvpfH~pZHAbے`JXQbtlnXv`f~Zp˂rXQJ`tbdQZ|dtAf`vXے`JXQr˂JtArd|ZdQHfpvnXvےbHAJltJltH~fJXQrQr˂p|ZdQbtlJnXv`bHAZp˂rJltbdQZ|H~f`vXnے`JXQtlJtArdf~HfpvXQJ`ےے`JXQr˂p|ZdQbXv`fXv`pbHAZpdQZ||drH~fZHAbے`JXQtlJtArdf~HfpvXQJ`ےbdQZ|drtA`vXnvpfr˂pZHAb|ZdQbfpvnXv`bHAZp˂rtbdQZpfH~pfH~ے`JXZdQbtlJtAXv`f~Hf˂rXQJ`ےdQZ|Hf`vXn`JXQr˂pZrd|ZdQbtpvnXQJ`ےbHAZpdrtAJltbvpfH~f`˂pZtArdtArdHfpvHAZp˂rXQJtbdQZ|df`vbے`JXQrlJtArd|Z~HfpvnX`ےbHAZdrtAJlXnvpfH~˂pZHAbے`dQbtlJtArv~HAZp˂drtArtAJlfH~f`vXے`JrbtJtArd`f~HfpvrXQJ`ےbHA|drJltnvpXQr˂pZHAb|ZdQbtlnXv`fHZp˂bdQZ|bdQZ|`vXnZHAbZAb`tlJtArdf~Hp˂rXQJ`ےbdQZ|drtA`vXnvpfr˂ptArd|ZdQbfpvnXv`bHAZr˂pZHAbtlJ~HfvnX˂rXQdrtAJtAJl`vXnے`JXQr˂ptArd|ZdQbfpvnXv`bHAZdrtAJltvpfH~fZHAbے`JXQtlJnXv`f~Hp˂rXQJ`ے|drf`vvpQr˂plJtArd|~HfpvnJ`ےbHAZpdrtAJvXnvpfH˂pZHAbےZdQbtlJtAXv`fHAZp˂rXQltbdQZ|~f`vXnHAbے|ZdQb|ZdQtAnXvrXQJ`ےbZ|drtAJlXnvJXQr˂pZHAd|ZdQbtvnXv`fHAZp˂rtAJltbdQpfH~f`vbے`JXQrlJtArdfHfpvrXQJJlttbdQf`vXnvpXQr˂lJtAd|ZdQHfpvnXvےbHAZp˂tAJlbnvfH~pZHAbے`JbtlJtArd`f~fpvrXQJ`drtAltbvpfے`JXQJXQrtArdf~HfpvXQJ`ےbHAZdrtAJltvpfH~fZHAb|ZdQbtlJnXv`f~Hp˂rZHAbے`JXQtArdpvv`fJ`p˂ltbtbdQZvpfr˂pZHAb|ZdQbtlJnXv`fHfp˂rJltbdQZ|H~f`vXnے`JXQr˂ptArdf~HfpvXQJ`ےbHAZtAJlXnvfH~ZHAbrd|ZdQbtpvnXv`fbHAZp˂rXQltbvpfH~f`HAbے`JXQrlJtArd|~Hf˂rXQJ`ےdQZ|drtAJvXnvpfH`JXQrtlJrdf`f~`ےbHAZp˂rtAJltbdQpfH~˂pZHAbے`dQbtlJtArv`f~HfprXQJtbdQZ|df`vXnvJXQr˂pZHAd|Z~HXvnXv`ےbbdQZ|Z|dnvpfH~pZHAb|ZdQbtlnXv`f~Zp˂rXQJ`tbdQZpfHf`vXے`JXQr˂JtArd|ZdQHfpvnrXQJےbHAJltdQZ|H~fr˂p˂pZHA|ZdQbfpvnXv`bHAZp˂rJltbdQZ|H~fZHAbے`JXQtlJtArdf~HfpvXQJ`ےے`JXQr˂p|ZdQb~Hfp~HfprXQJdQZ||dnH~fZHAbے`JXQtlJtArdf~HpvnXQJ`ےbdQZ|drtA`vXnvpfr˂pZHAے|ZdQbfpvnXv`bHAZp˂rtbdQZp`vXf`vXJQrZdQbtlJtAXv`f~Hf˂rXQJ`ےdQZ|~f`vXn`JXQr˂pZrd|ZdQbtpvnJ`ےbHAZpdrtAJltbvpfH~f`˂pZtArdt~HfHfpvHAZp˂rXQJtbdQZ|df`vbے`JXQrlJtArd|Z~HfpvnX`ےbZ|drtAJlXnvpfH~˂pZHAbے`dQbt`f~`f~HAZp˂drtArtAJlfH~f`vXے`JbtlJtArd`f~HfpvrXQJ`ےbHA|drf`vXnvpXQr˂pZHAb|ZdQbtlnXv`ےHAZp˂drtAJdrtAJ`vXnZHAbbے`tlJnXv`f~Hp˂rXQJ`ےbdQZ|drtA`vXnے`JXQr˂ptArd|ZdQbfpvnXv`bHAZr˂p|ZdQbtlJvnXvnX`ےbrAJltvff`vXnے`JXQr˂ptArd|ZdQbfpvrXQJ`bHAZdrtAJltvpfH~fZHAb`JXQrtlJnXv`f~Hp˂rXQJ`ے|drnvpnvp˂pZHAlJtArd|~HfpvnJ`ےbHAZdrtAJvXnvpfH˂pZHAbےZdQbtlJtAXv`fbHAZp˂rXQltbdQZ|~f`vXnHAbےlJtAvnXv`nvfrXQJ`ےbZ|dtAJlXnvJXQr˂pZHAd|ZdQbtvnXv`fHAZp˂rtAJltbdQpfH~f`vbے`JXQrlJtArHfpvHfpvbHAJltbtbdQf`vXnvpXQr˂JtArd|ZdQHfpvnXvےbHAZp˂tAJlnvpfH~pZHAbے`JbtlJtArd`f~Zp˂rXQJ`ltbltbvp`ے`JXQJXQrtArdf~HfpvXQJ`ےbHAZdrtAJltvpfr˂pZHAb|ZdQbtlJnXv`f~Hp˂rZHAbtlJtArdv`fv`p˂HAZp˂bdQZ|`vXnvpfr˂pZHAb|ZdQbtlJnXv`ےHAZp˂rJltbdQZ|H~f`vXnے`JXQbtltArdf~HfpvXQJ`ےbHAZtAdQZ|fH~fH~bے`rd|ZdQbtpvnXv`fbHAZpdrtAJltbvpfH~f`HAbے`JXQrlJtArdf~Hf˂rXQJ`ےdQZ|drtAJvXnvpfH`JXQHArd|f~H~Hfp`ےbHAZp˂rtAJltbnpfH~˂pZHAbے`dQbtlJtArv`fHfpvrXQJtbdQZ|df`vXnvJXQr˂pZHAd|ZnXvnXvZp˂QZdrZ|rAJnvpfH~pZHAb|ZdQbtlnXv`f~Zp˂rXQJ`tbdQZfH~f`vXے`JXQr˂JtArd|ZdQHfpvrXQJ`ےbHAdQZ|dQZ|lvXnr˂p˂pZA|ZdQbfpvnXv`bHAZp˂rJltbdQZ|H~fZHAbے`JXQtlJtArdf~HfpvXQJ`ےے`JXQtArd|ZdQb~HfprXQJrXQJdrtvpfH~fZHAbے`JXQtlJtArdf~Hp˂rXQJ`ےbdQZ|drtA`vXnvpfr˂pJtAd|ZdQbfpvnXv`bHAZp˂rdrtAf`vXf`vXJXQrZdQbtlJtAXv`f~Hf˂rXQltbdQZ|~f`vXn`JXQr˂pZrd|~HfpvnJ`ےbHAZpdrtAJltbvpfH~fZbے`ZdQbtfpvvnXHAZp˂rXQJtbdQvpfHf`vbے`JXQrlJtArd|Z~HfpnrXQ`ےbZ|drtAJlXnvpfH~˂pZHAے`JdQbt`f~`pvrXQJ`tAJlltbfH~fZHAbے`JbtlJtArd`f~HfpvrXQJ`ےbHA|drf`vXnvpXQr˂pZHAb|ZdQbtlnXvےbHAZp˂drtAJtbnvpfHZAb``JXQrtlJnXv`f~Hp˂rXQJ`ےbdQZ|dtAJ`vXnے`JXQr˂ptArd|ZdQbfpvnXv`bHAZbHAZr˂p|ZdQbtlJvnX`ےb`ےbAJltH~f`vXnے`JXQr˂ptArd|ZdQbfpvXQJ`ےbHAZdrtAJltvpfH~fZHAb|ZdQbtlJnXv`f~Hp˂rXQJ`ےJltnvpH~f˂pZHAlJtArd|~HfpvnJ`ےdQZ|drtAJvXnvpfH˂pZHAbےZdQbtpvnXv`fbHAZp˂rXQltbdQZ|~f`HAbJXQrlJtAnXv`v`frXQJ`ےbZ|df`vXnvJXQr˂pZHAd|ZdQbtvnXJ`ےHAZp˂rtAJltbdQpfH~f`vbے`XQrbtlJtArHfpvnXv`ےbHAtbdQZdQZ|f`vXے`JXQr˂JtArd|ZdQHfpvnXvےbHAZdrtAJlnvpfH~pZHAbے`JbtlJtArd`f~Zp˂rXQJ`ltbvp`~f`JXQrbtltArdf~HfpvXQJ`ےbHAZdrtAltbvpfr˂pZHAb|ZdQbtlJnXv`fHfp˂rp˂rZHAbtlJtArdv`pvHAZp˂HAXQJ`bdQZ|`vXnvpfr˂pZHAb|ZdQbtlJnXv`bHAZp˂rJltbdQZ|H~f`vXnے`JXQtlJtArdf~HfpvXQJ`ےbHAZbdQZ|fH~ZHAbbے`rd|ZdQbtpvnXv`fbHAZpdrtAJltbvpfH~f`HAbے`JXQrlJtAXv`f~Hf˂rXQJ`ےdQZ|drtAJvXn˂pZHA˂pZHArd|f~H~Hfp`ےbHAZp˂rtAJlXnvpfH~˂pZHAbے`dQbtlJtArv`fHAZp˂rXQJtbdQZ|df`vXnvJXQrlJtAd|Z~Hf~HZp˂|drdrtAJnvpXQr˂pZHAb|ZdQbtlnXv`f~Zp˂tAJltbdQZfH~f`vXے`JXQr˂JtArdf~HfpvrXQJ`ےbHAdQZ|lvXnvXnpZHAJtAd|ZdQbfpvnXv`bHAZp˂rJltnvpH~fZHAbے`JXQtlJtArdf~HpvnXQJ`ےXQJ`ےے`JXQtArd|ZdQbnXvrXQJےbHAdrtvpfH~fZHAbے`JXQtlJtArdf~Hp˂rXQJ`ےbdQZ|drtA`vXnvpfr˂ptArd|ZdQbfpvnXv`bHAZp˂rdrtAvpfJQrJXQrZdQbtlJtAXv`fHfp˂rXQltbdQZ|~f`vXn`JXQr˂pZrd|~HfpvnJ`ےbHAZpdrtAJltbvpfHbے`bے`ZdQtArfpvvnXHAZp˂rXQJtbdQpfH~f`vbے`JXQrlJtArd|Z~HfprXQJ`ےbZ|drtAJlXnvpfH~˂pZHAd|ZdQbtfpvfpvrXQJ`tAJlltbfH~pZHAbے`JbtlJtArd`f~HfpvrXQJ`tbdQZ|drf`vXnvpXQr˂pZHAb|ZdQHfpvnXvےbHAZp˂tbdQvpfHvpfHbے`|ZdQbtlJnXv`f~Hp˂rXQJ`ےbdQZ|fHf`vXnے`JXQr˂ptArd|ZdQbfpvrXQJ`bHAZbHAZr˂p|ZdQbtlJ`f~`p˂Zp˂AJbdQH~f`vXnے`JXQr˂ptArdf~HfpvXQJ`ےbHAZdrtAJltvpfH~fZHAb|ZdQbtlJnXv`f~Hp˂rXQJ`ےJltH~fpZHAZHAblJtArd|~HfvnrJ`ےdQZ|drtAJvXnvpfH˂pZHAے`ZdQbtpvnXv`fbHAZp˂rXQltbdQZ|~f`JXQrJXQrd|Znvfv`f~rXQJ`ےbZ|df`vXnvJXQr˂pZHAd|ZdQbtvnX`ےbHAZp˂rtAJltbdQpfH~f`vbے`dQbtlJtArnXv`nXv`p˂rtbdQZdQZ|f`vXے`JXQr˂JtArd|ZdQHfpvnXvےbHA|drtAJlnvpfH~pZHAbے`JbtlnXv`f~Zp˂rXQJ`Z|d~f`~vJXQrtlJtArdf~HfpvXQJ`ےbHAZdrtA`vXnvpfr˂pZHAb|ZdQbtlJnXv`ےHAZp˂rp˂rZHAbtlJtArdHfpvrXQJ`rXQJ`Z|d`vXnvpfr˂pZHAb|ZdQbfpvnXv`bHAZp˂rJltbdQZ|H~fZHAbے`JXQtlJtArdf~HfpvXQJ`ےbHAZdrtAJ`vXnbے``JXQrd|ZdQbtpvnXQJ`ےbHAZpdrtAJltbvpfH~f`HAbےJXQrblJtAXv`f~Hf˂rXQJ`ےdQZ|dtAJlvXn˂pZHA˂p`JdQbt~Hfpfpv`ےbHAZdrtAJlXnvpfH~˂pZHAbے`dQbtlJtArv`fHAZp˂rXQJtbdQZ|df`vXnvJXQrlJtArd|Zf~HpvnXQJ`ے|rAJlAJltnvpXQr˂pZHAb|ZdQbtlnXv`fHZp˂tAJltbdQZfH~f`vXے`JXQr˂JtArd`f~HfpvrXQJ`ےbHArtAJlvXnpfH~pZHAtArd|ZdQbfpvnXv`bHAZp˂rJltvpfH~fZHAbے`JXQtlJtArdf~Hp˂rXQJ`ےXQJ`ےbHAZdrtAJltvpfHAbےHAbے|ZdQtA~HfpfpvbHAZp˂rXQltbvpfH~f`HAbے`JXQrlJtArd|~Hf˂rXQJ`ےdQZ|drtAJvXnvpfHr˂pAHr󙐂˕H~ㅐf۝`vXnbAdZ|p˂rJltbdQZ|H~f`JXQr`JXQrrd|vnvfnXv`f˂rXQJ`ےdQZ|~f`vXn`JXQr˂pZrd|ZdQbtpvnJ`ےbHAZpdrtAJltbvpfH~f`ZHAb`ZQXb`vXnvˍpfdrQtXQJ`ےbdQZ|dtAJ`vXn˂pZ˂p`ZdQbt~Hf~fpvJ`ےbHAZdrtAJvXnvpfH˂pZHAbےZdQbtlJtAXv`fbHAZp˂rXQltbdQZ|~f`vXnے`JXQۑpJvˍpfH~ㅐfJltbHAZdrtAltbvpfHAbےJXQrlJtApvnnXvbHAZpdrtAJltbvpfH~f`HAbے`JXQrlJtArdf~Hf˂rXQJ`ےdQZ|drtAJvXnvpfHHAbےAHr󙐂˕H~ㅐf۝`vXnbAdZ|p˂rJltnvpH~f`JXQHA˂pZHArd|Xv`f`f~˂rXQltbdQZ|~f`vXn`JXQr˂pZrd|~HfpvnJ`ےbHAZpdrtAJltbvpfH~fr`JXQr`ZQXAH`vXnvˍpfdrQtXQJ`ےbdQZ|fHf`vXnbے`bے`ZdQbt~HfHfpvJ`ےdQZ|drtAJvXnvpfH˂pZHAbےZdQbtpvnXv`fbHAZp˂rXQltbdQZ|~f`˂pZ˂pZr󙐂ˁ`vˍpfH~ㅐfJltbHAZdrtA`vXnvpfJXQrJXQrl|ZpvnnXvbHAZpdrtAJltbvpfH~f`HAbے`JXQrlJtAXv`f~Hf˂rXQJ`ےdQZ|drtAJvXnHAbےHAbےZQXb㉀H~ㅐf۝`vXnbAdZ|p˂rJltvpfH~f˂pZHA˂p`JdQbtXv`f`ffp˂rXQltbdQZ|~f`vXn`JXQr˂pZrd|~HfpvnJ`ےbHAZpdrtAJltbvpfH`JXQr`JXQrۑpJAH`vXnvˍpfdrQtXQJ`ےbdQZ|H~f`vXnbے`XQrbtlJtAr~fpvvnrJ`ےdQZ|drtAJvXnvpfH˂pZHAے`ZdQbtpvnXv`fbHAZp˂rXQltbdQZ|~f`˂pZ˂p`r󙐂ˁ`vˍpfH~ㅐfJltbHAZdrtA`vXnvpfJXQrl|Zd|ZnXv`XQJ`ےbHAZpdrtAJltbvpfH~f`HAbےJXQrblJtAXv`f~Hf˂rXQJ`ےdQZ|dtAJlvXnHAbےJXQrZQXb㉀H~ㅐf۝`vXnbAdZ|drtAJltvpfH~f˂p`JdQbtdQbt璍f~HHAZp˂rXQltbdQZ|~f`vXn`JXQrtlJrd|~HfpvnJ`ےbHAZpdrtAJtbnvpfH`JXQHA˂pZHAۑp`Z`vXnvˍp|drQtJltbdQZ|H~f`vXnXQr˂lJtArlJtArfpv˂rXQJ`ےdQZ|drtAJvXnvpfH˂pZtAd|ZdQbtpvnXv`fbHAZp˂rXQltbvpf~f`bے`bے`QXb㉀ەvˍpfdrQtJltbdQZ|drtA`vXnvpfpZHAbd|ZdtlnXv`J`ےbHAZpdrtAJltbvpfH~f`HAbےZdQbtlJtAXv`f~Hf˂rXQJ`ےdQZ|Hf`vXnJXQrJXQrpJAHrH~ㅐfJltbAdZ|drtAJltvpfH~fے`JdQbtJtArdf~HbHAZp˂rXQltbdQZ|~f`vXn`JXQrlJtArd|~HfpvnJ`ےbHAZpdrtAJvXnvpfH˂pZHA˂p`Zˁ`Z`vXnbAdZ|drQtJltbdQZ|H~f`vXnXQr˂l|ZdQ|ZdQfvnX˂rXQJ`ےdQZ|drtAJvXnvpfH˂pZrd|ZdQbtpvnXv`fbHAZp˂rXQltbvpfH~f`bے`QXb㉀QXb㉀ەvˍpfdrQtJltbdQZ|drtA`vXnvpfpZHAbbtlbtlv`fJ`ےbHAZpdrtAJltbvpfH~fZHAbےZdQbtlJtAXv`f~Hf˂rXQJ`ےdQZ|~f`vXnJXQrpJAHrpJAHrH~ㅐfJltbAdZ|drtAJltvpfH~f˂pJtArdJtArd~HfpbHAZp˂rXQltbdQZ|~f`HAbے`JXQrlJtArd|~HfpvnJ`ےbHAZdrtAJvXnvpfH˂p`Jˁ`Zۑp`vXnbAdZ|drQtJltbdQZ|H~f`vXnZHAb|ZdQ|ZdQvnX˂rXQJ`ےdQZ|drtAJvXn`JXQr˂pZrd|ZdQbtpvnXv`fbHAZpdrtAJltbvpfH~f`XQr˂QXb㉀JAHr󙐕vˍpfdrQtJltbdQZ|drtA`vXnvpfے`JXQbtltArdv`fJ`ےbHAZpdrtAJltbvpfH˂pZHAbےZdQbtlJtAXv`f~Hf˂rXQltbdQZ|~f`vXnpZHAbp`ZQXˁ`ZQXH~ㅐfJltbAdZ|drtAJltvpfH~fr˂pJtArdf~H~HfpbHAZp˂rXQltbdQZ|~f`HAbے`JXQrlJtArd|~HfpvnJ`ےdQZ|drtAJvXnvpfHے`Jb㉀ۑpb㉀ۑp`vXnbAdZ|drQtJltbdQZ|H~f`vXnZHAbtlJfvnXvnv˂rXQJ`ےdQZ|dtAJlvXn`JXQr˂pZrd|ZdQbtpvnXv`fbHAZpdrtAJltbvpfH~f`XQr˂JAHrJAHr󙐕vˍpfdrQtJltbdQZ|drtA`vXnvpfے`JXQtArdv`ff~HJ`ےbHAZpdrtAJtbnvpfH˂pZHAbےZdQbtlJtAXv`fHfp˂rXQltbdQZ|~f`vXnpZHAbˁ`ZQXˁ`pfH~ㅐfJltbAdZ|drtAJltvpfH~fHAbے|ZdQb~HfpfpvbHAZp˂rXQltbvpf~f`HAbے`JXQrlJtArd|~HfvnrJ`ےdQZ|drtAJvXnvpfH˂pb㉀ۑpH~ㅐf۝`vXnbAdZ|drQtJltbdQZ|H~fZHAb`JXQrtlJvnXnXv`˂rXQJ`ےdQZ|Hf`vXn`JXQr˂pZrd|ZdQbtpvnXQJ`ےbHAZpdrtAJltbvpfH~f`ZHAbJAHr󙐝`vXnvˍpfdrQtJltbdQZ|drtA`vXn˂pZ˂pZtArdv`ff~HJ`ےbHAZpdrtAJvXnvpfH˂pZHAbےZdQbtlJtAXv`fHAZp˂rXQltbdQZ|~f`vXnے`JXQۑpJvˍpfH~ㅐfJltbAdZ| \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv40_2.dat b/mpdf/qrcode/data/qrv40_2.dat deleted file mode 100644 index 5a0e723..0000000 --- a/mpdf/qrcode/data/qrv40_2.dat +++ /dev/null @@ -1,353 +0,0 @@ -~}~}~}~}|{|{|{|{~}~}~}~}|{|{|{|{~}~}~}~}|{|{|{|{~}~}~}~}|{|{|{zy~}~}~}~}zyzyzyzy~}~}~}~}zyzyzyzy~}~}~}~}zyzyzyzy~}~}~}~}zyzyzyzy~}~}~}~}zyzyzyzy~}~}~}~}zyzyzyzy~}~}~}~}zyzyzyzy~}~}~}~}zyzyzyzy~}~}~}~}zyzyzyzy~}~}~}~}zyzyzyzy~}~}~}~}zyzyzyzy~}~}~}~}zyzyzyzy~}~}~}~}zyzyzyzy~}~}~}~}zyzyzyzy~}~}~}~}zyzyzyzy~}~}~}~}zyzyzyzy~}~}~}~}zyzyzyzyxwxwxwxw~}~}~}~}zyzyzyzyxwxwxwxw~}~}~}~}zyzyzyzyxwxwxwxw~}~}~}~}zyzyzyzyxwxwxwxw~}~}~}~}zyzyzyzyxwxwxwxw~}~}~}~}zyzyzyzyxwxwxwxw~}~}~}~}zyzyzyzyxwxwxwxw~}~}~}~}zyzyzyzyxwxwxwxw~}~}~}~}zyzyzyzyxwxwxwxw~}~}~}~}zyzyzyzyxwxwxwxw~}~}~}~}zyzyzyzyxwxwxwvu~}~}~}~}zyzyzyzyvuvuvuvu~}~}~}~}zyzyzyzyvuvuvuvu~}~}~}~}zyzyzyzyvuvuvuvu~}~}~}~}zyzyzyzyvuvuvuvu~}~}~}~}zyzyzyzyvuvuvuvu~}~}~}~}zyzyzyzyvuvuvuvu~}~}~}~}zyzyzyzyvuvuvuvu~}~}~}~}zyzyzyzyvuvuvuvu~}~}~}~}zyzyzyzyvuvuvuvu~}~}~}|{zyzyzyzyvuvuvuvu|{|{|{|{zyzyzyzyvuvuvuvu|{|{|{|{zyzyzyzyvuvuvuvu|{|{|{|{zyzyzyzyvuvuvuvu|{|{|{|{zyzyzyzyvuvuvuvu|{|{|{|{zyzyzyzyvuvuvuvu|{|{|{|{zyzyzyzyvuvuvuvu|{|{|{|{zyzyzyxwvuvuvuvu|{|{|{|{xwxwxwxwvuvuvuvu|{|{|{|{xwxwxwxwvuvuvuvu|{|{|{|{xwxwxwxwvuvuvuvu|{|{|{|{xwxwxwxwvuvuvuvu|{|{|{|{xwxwxwxwvuvuvuvu|{|{|{|{xwxwxwxwvuvuvuvu|{|{|{|{xwxwxwxwvuvuvuvu|{|{|{|{xwxwxwxwvuvuvuvu|{|{|{|{xwxwxwxwvuvuvuvu|{|{|{|{xwxwxwxwvuvuvuvu|{|{|{|{xwxwxwxwvuvuvuvu|{|{|{|{xwxwxwxwvuvuvuvu|{|{|{|{xwxwxwxwvuvuvuvu|{|{|{|{xwxwxwxwvuvuvuvu|{|{|{|{xwxwxwxwvuvuvuvu|{|{|{|{xwxwxwxwvuvuvuvu|{|{|{|{xwxwxwxwvuvuvuvu|{|{|{|{xwxwxwxwvuvuvuvu|{|{|{|{xwxwxwxwvuvuvuvu|{|{|{|{xwxwxwxwvuvuvuvu|{|{|{|{xwxwxwxwvuvuvuvu|{|{|{|{xwxwxwxwvuvuvuvu|{|{|{|{xwxwxwxwvuvuvuvu|{|{|{|{xwxwxwxwvuvuvuvu|{|{|{|{xwxwxwxwvuvuvuvu|{|{|{|{xwxwxwxwvuvuvuvu|{|{|{|{xwxwxwxwvuvuvuts|{|{|{|{xwxwxwxwtstststs|{|{|{|{xwxwxwxwtstststs~}|{|{|{|{xwxwxwxwtstststs~}~}~}~}|{|{|{|{xwxwxwxwtstststs~}~}~}~}|{|{|{|{xwxwxwxwtstststs~}~}~}~}|{|{|{|{xwxwxwxwtstststststststsopopopoplklklklkhghghghgfefedcdcbabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;65656565434343430/0/0/0/,+,+,+,+('('('('$#$#$#$#        - - - - tstststsopopopoplklklklkhghghghgdcdcdcdcbabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;65656565434343430/0/0/0/,+,+,+,+('('('('$#$#$#$#        - - - - tstststsopopopoplklklklkhghghghgdcdcdcdcbabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;65656565434343430/0/0/0/,+,+,+,+('('('('$#$#$#$#        - - - - tstststsopopopoolklklklkhghghghgdcdcdcdcbabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;:965656565434343430/0/0/0/,+,+,+,+('('('('$#$#$#$#        - - - - tstststsoooopopolklklklkhghghghgdcdcdcdcbabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEBABABABA@?@?@?@?:9:9:9:965656565434343430/0/0/0/,+,+,+,+('('('('$#$#$#$#        - - - - tstststspopopopolklklklkhghghghgdcdcdcdcbabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEBABABABA@?>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+('('('('$#$#$#$#        - - - - tstststspopopopolklklklkhghghghgdcdcdcdcbabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEBABABABA>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+('('('('$#$#$#$#        - - - - tstststspopopopolklklklkhghghghgdcdcdcdcbaba`_`_^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEBABABABA>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+('('('('$#$#$#$#        - - - - tstststspopopopolklklklkhghghghgdcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEBABABABA>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+('('('('$#$#$#$#        - - - - tstststspopopopolklklklkhghghghgdcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEBABABABA>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+('('('('$#$#$#$#       - - - - tstststspooooooplklklklkhghghghgdcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEBABABABA>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+('('('('$#$#$#$#     - - - - tstststsopopopoplklklklkhghghghgdcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYVUVUTSTSRQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEBABABABA>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+('('('('$#$#$#$#     - - - - tstststsopopopoplklklklkhghghghgdcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYTSTSSSSSRQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#     - - - - tstststsopopopoplklklklkhghghghgdcdcdcdc`_`_`_`_^]^]^]^]ZYZYZYZYSTSTSTSTRQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#     - - - - tstststsopopopoplklklklkhghghghgdcdcdcdc`_`_`_`_^]^]\[\[ZYZYZYZYSTSTSTSTRQPOPOPONMNMNMNMJIJIJIJIFEFEFEFEBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#     - - - - tstststsopopopoplklklklkhghghghgdcdcdcdc`_`_`_`_\[\[\[\[ZYZYZYZYSTSTSTSTPOPOPOPONMNMNMNMJIJIJIJIFEFEFEFEBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#     - - - - tstststsopopoooolklklklkhghghghgdcdcdcdc`_`_`_`_\[\[\[\[ZYZYZYZYSTSTSTSTPOPOPOPONMNMNMNMJIJIJIJIFEFEFEFEBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#     - - - tstststsoopopopolklklklkhghghghgdcdcdcdc`_`_`_`_\[\[\[\[ZYZYZYZYSTSTSTSTPOPOPOPONMNMNMNMJIJIJIJIFEFEFEFEBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#     tstststspopopopolklklklkhghghghgdcdcdcdc`_`_`_`_\[\[\[\[ZYZYZYZYSTSTSTSSPOPOPOPONMNMNMNMJIJIJIJIFEFEFEFEBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#     tstststspopopopolklklklkhghghghgdcdcdcdc`_`_`_`_\[\[\[\[ZYZYZYZYSSSSTSTSPOPOPOPONMNMNMNMJIJIJIJIFEFEFEFEBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#     tstststspopopopolklklklkhghghghgdcdcdcdc`_`_`_`_\[\[\[\[ZYZYZYZYTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIFEFEFEFEBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#     tstststspopopopolklklklkhghghghgdcdcdcdc`_`_`_`_\[\[\[\[ZYZYXWXWTSTSTSTSPOPOPOPONMLKLKLKJIJIJIJIFEFEFEFEBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#     tstststsoooopopolklklklkhghghghgdcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#     tstststspoponmnmlklklklkhghghghgdcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#     tstststsnmnmnmnmlklklklkhghghghgdcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#     tstststsnmnmnmnmlklklklkhghghghgdcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWTSSSSSSTPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#     tstststsnmnmnmnmlklklklkhghghghgdcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWSTSTSTSTPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#     tstststsnmnmnmnmlklklklkhghghghgdcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWSTSTSTSTPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#     tstststsnmnmnmnmlklklklkhghghghgdcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWSTSTSTSTPOPOPOPOLKLKLKLKJIHGHGHGFEFEFEFEBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#     tsrqrqrqnmnmnmnmlklklklkhghghghgdcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWSTSTSTSTPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#     rqrqrqrqnmnmnmnmlklkjijihghghghgdcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWSTSTSTSTPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#     rqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWSTSTSSSSPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#   rqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWSSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$# rqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"! rqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"! rqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGFEDCDCDCBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"! rqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"! rqrqrqrqnmnmnmnmjijijijihghgfefedcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"! rqrqrqrqnmnmnmnmjijijijifefefefedcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWSSSSSTSTPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:96565656521212121.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"! rqrqrqrqnmnmnmnmjijijijifefefefedcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWSTSTSTSTPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:98787876565656521212121.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"! rqrqrqrqnmnmnmnmjijijijifefefefedcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWSTSTSTSTPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=877777786565656521212121.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"! rqrqrqrqnmnmnmnmjijijijifefefefedcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWSTSTSTSTPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=787878786565656521212121.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"! rqrqrqrqnmnmnmnmjijijijifefefefedcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWSTSTSTSTPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDCBA@?@?@?>=>=>=>=787878784343434321212121.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"! rqrqrqrqnmnmnmnmjijijijifefefefedcdcdcdc`_`_`_`_\[\[\[\[XWXWXWXWSTSTSTSTPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=787878784343434321212121.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"! rqrqrqrqnmnmnmnmjijijijifefefefedcdcbaba`_`_`_`_\[\[\[\[XWXWXWXWSTSSSSSSPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=787878784343434321212121.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"! rqrqrqrqnmnmnmnmjijijijifefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=787878784343434321212121.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"! rqrqrqrqnmnmnmnmjijijijifefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=787877774343434321212121.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"! rqrqrqrqnmnmnmnmjijijijifefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=778787874343434321212121.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"!    rqrqrqrqnmnmnmnmjijijijifefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=878787874343434321212121.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"!    rqrqrqrqnmnmnmnmjijijijifefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWTSTSTSSSPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?>=<;<;<;87878787434343430/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"!    rqrqrqrqnmnmnmnmjijijijifefefefebabababa`_`_`_`_\[\[\[\[XWXWXWXWSSTSTSTSPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;87878787434343430/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"!    rqrqrqrqnmnmnmnmjijijijifefefefebabababa`_`_^]^]\[\[\[\[XWXWXWXWTSRQRQRQPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;87878787434343430/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"!    rqrqrqrqnmnmnmnmjijijijifefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWRQRQRQRQPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;87878787434343430/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"!    rqrqrqrqnmnmnmnmjijijijifefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWRQRQRQRQPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;77777878434343430/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"!    - rqrqrqrqnmnmnmnmjijijijifefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWRQRQRQRQPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;78787878434343430/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"!    - - - - rqrqrqrqnmnmnmnmjijijijifefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWRQRQRQRQPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;78787878434343430/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%"!"!"!"!    - - - - rqrqrqrqnmnmnmnmjijijijifefefefebabababa^]^]^]^]\[\[\[\[XWXWXWXWRQRQRQRQPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;78787878434343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!    - - - - rqrqrqrqnmnmnmnmjijijijifefefefebabababa^]^]^]^]\[\[\[\[VUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;78787878434343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!    - - - - rqrqrqrqnmnmnmnmjijijijifefefefebabababa^]^]^]^]\[\[ZYZYVUVUVUVURQRQRQRQPONMNMNMLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;78787878434343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!    - - - - rqrqrqrqnmnmnmnmjijijijifefefefebabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;78777777434343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!    - - - - rqrqrqrqnmnmnmnmjijijijifefefefebabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;87878787434343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!    - - - - rqrqrqrqnmnmnmnmjijijijifefefefebabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;87878787434343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!    - - - - rqrqrqrqnmnmnmnmjijijijifefefefebabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;87878787434343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!    - - - - rqrqrqrqnmnmnmnmjijijijifefefefebabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;87878787434343430/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"!    - - - - rqrqrqponmnmnmnmjijijijifefefefebabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;87878787434343430/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"!    - - - - popopooonmnmnmnmjijijijifefefefebabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMLKJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;87878777434343430/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"!    - - - - ooopopopnmnmnmnmjijijijifefefefebabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;77787878434343430/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"!    - - - - opopopopnmnmlklkjijijijifefefefebabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;78787878434343430/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"!    - - - - opopopoplklklklkjijijijifefefefebabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;78787878434343430/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"!    - - - - opopopoplklklklkjijijijifefefefebabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;78787878434343430/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"!    - - - - opopopoplklklklkjijijijifefefefebabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;78787878434343430/0/0/0/,+,+,+,+('('('('$#$#$#$#"!"!"!"!    - - - - opopopoplklklklkjijijijifefefefebabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?<;<;<;<;78787878434343430/0/0/0/,+,+,+,+('('('('$#$#$#$#"!"!"!"!    - - - - oooooopolklklklkjijijijifefefefebabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIHGFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;77777787434343430/0/0/0/,+,+,+,+('('('('$#$#$#$#"!"!"!"!    - - - - popopopolklklklkjijijijifefefefebabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;87878787434343430/0/0/0/,+,+,+,+('('('('$#$#$#$#"!"!"!"!    - - - - popopopolklklklkjijihghgfefefefebabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;87878787434343430/0/0/0/,+,+,+,+('('('('$#$#$#$#"!"!"!"!    - - - - popopopolklklklkhghghghgfefefefebabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;87878787434343430/0/0/0/,+,+,+,+('('('('$#$#$#$#"!"!"!"!    - - - - popopopolklklklkhghghghgfefefefebabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;87878787434343430/0/0/0/,+,+,+,+('('('('$#$#$#$#"!"!"!"!    - - - - popopopolklklklkhghghghgfefefefebabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;87877777434343430/0/0/0/,+,+,+,+('('('('$#$#$#$#        - - - - popooooolklklklkhghghghgfefefefebabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;87878787434343430/0/0/0/,+,+,+,+('('('('$#$#$#$#        - - - - opopopoplklklklkhghghghgfefefefebabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEDCBABABA@?@?@?@?<;<;<;<;65656565434343430/0/0/0/,+,+,+,+('('('('$#$#$#$#        - - - - opopopoplklklklkhghghghgfefefefebabababa^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMJIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;65656565434343430/0/0/0/,+,+,+,+('('('('$#$#$#$#        - - - - }}~~aabbccddEEFFGGHH^^__``aabbccddeeFFGGHHII**++,,-- eeffgghhIIJJKKLLbbccddeeffgghhiiJJKKLLMM..//0011 - - ~~}}||iijjkkllMMNNOOPPffgghhiijjkkllmmNNOOPPQQ22334455{{zzyyxxmmnnooppQQRRSSTTjjkkllmmnnooppqqRRSSTTUU66778899wwvvuuts~~}}qqrrssttUUVVWWXXnnoouuvvrrssttuuVVWWXXYY::;;<<== !!rqpoonnm||{{zzyyuuvvwwxxYYZZ[[\\wwxxyyzzvvwwxxyyZZ[[\\]]>>??@@AA""##$$%% mllkkjjixxwwvvuuyyzz{{||]]^^__``{{||}}~~zz{{||}}^^__``aaBBCCDDEE&&''(()) - - ihhggffettssrrqq}}~~aabbccdd~~bbccddeeFFGGHHII**++,,--eddccbbappoonnmmeeffgghhffgghhiiJJKKLLMM..//0011a``__^^]llkkjjiiiijjkklljjkkllmmNNOOPPQQ22334455]\\[[ZZYhhggffeemmnnooppnnooppqqRRSSTTUU66778899YXWVUTSSddccbbaa~~}}qqrrssttrrssttuuVVWWXXYY::;;<<== !!~~}}RRQQPPOO``__^^]]||{{zzyyuuvvwwxxvvwwxxyyZZ[[\\]]>>??@@AA""##$$%%||{{zzyy~~}}||{{NNMMLLKK\\[[ZZYYxxwwvvuuyyzz{{||zz{{||}}^^__``aaBBCCDDEE&&''(())xxwwvvuuzzyyxxwwJJIIHHGGXXWWVVUUttssrrqq}}~~~~bbccddeeFFGGHHII**++,,--ttssrrqqvvuuoonnFFEEDDCCTTSSRRQQppoonnmmffgghhiiJJKKLLMM..//0011ppoonnmmmmllkkjjBBAA@@??PPOONNMMllkkjjiijjkkllmmNNOOPPQQ22334455llkkjjiiiihhggff>>==<;:9LLKKJJIIhhggffeennooppqqRRSSTTUU66778899hhggffeeeeddccbb87766554HHGGFFEEddccbbaa~~}}rrssttuuVVWWXXYY::;;<<==ddccbbaaaa``__^^43322110DDCCBBAA``__^^]]||{{zzyyvvwwxxyyZZ[[\\]]>>??@@AA``__^^]]]]\\[[ZZ0//..--,@@??>>==\\[[ZZYYxxwwvvuuzz{{||}}^^__``aaBBCCDDEE++**))((\\[[ZZYYYYSSRRQQ,++**))(<<;;::99XXWWVVUUttssrrqq~~bbccddeeFFGGHHII''&&%%$$XXWWVVUUPPOONNMM(''&&%%$88776655TTSSRRQQppoonnmmffgghhiiJJKKLLMM##""!! TTSSRRQQLLKKJJII$##""!! 44332211PPOONNMMllkkjjiijjkkllmmNNOOPPQQPPOONNMMHHGGFFEE00//..--LLKKJJIIhhggffeennooppqqRRSSTTUULLKKJJIIDDCCBBAA,,++**))HHGGFFEEddccbbaa~~}}rrssttuuVVWWXXYYHHGGFFEE@@??>>==((''&&%%DDCCBBAA``__^^]]||{{zzyyvvwwxxyyZZ[[\\]]DDCCBBAA77665544$$##""!!@@??>>==\\[[ZZYYxxwwvvuuzz{{||}}^^__``aa @@??>>==33221100 - - <<;;::99XXWWVVUUttssrrqq~~}}||~~bbccddee - - <<;;::99//..--,, 88776655TTSSRRQQppoonnmm{{zzyyxxffgghhii88776655++**))((44332211PPOONNMMllkkjjiiwwvvuutsjjkkllmm44332211''&&%%$$ - - 00//..--LLKKJJIIhhggffeerqpoonnmnnooppqq00//..--##""!!  ,,++**))HHGGFFEEddccbbaa~~}}mllkkjji~~}}||rrssttuu ,,++**)) - - ((''&&%%DDCCBBAA``__^^]]||{{zzyyihhggffe{{zzyyxxvvwwxxyy - - ((''&&%%$$##""!!@@??>>==\\[[ZZYYxxwwvvuueddccbbawwvvuuttzz{{||}}$$##""!! <<;;::99XXWWVVUUttssrrqqa``__^^]ssrrqqpp~~   88776655TTSSRRQQppoonnmm]\\[[ZZYoonnmmll - - - -!!""##$$44332211PPOONNMMllkkjjii~~}}||{{YXWVUTSSkkjjiihh %%&&''(( - - 00//..--LLKKJJIIhhggffeezzyyxxwwRRQQPPOOggffeedd !!))**++,,  ,,++**))HHGGFFEEddccbbaavvuuoonnNNMMLLKKccbbaa``~~}}||""##$$%% --..//00 - - ((''&&%%DDCCBBAA``__^^]]mmllkkjjJJIIHHGG__^^]]\\{{zzyyxx&&''(()) - - 11223344$$##""!!@@??>>==\\[[ZZYYiihhggffFFEEDDCC[[ZZYYXXwwvvuutt**++,,-- - - !!""##55667788 <<;;::99XXWWVVUUeeddccbbBBAA@@??WWVVUUTTssrrqqpp..//0011 $$%%&&''99::;;<< 88776655TTSSRRQQaa``__^^>>==<;:9SSRRQQPPoonnmmll22334455(())**++==>>??@@!!""##$$44332211PPOONNMM]]\\[[ZZ87766554OONNMMLLkkjjiihh66778899,,--..//AABBCCDD%%&&''(( - - 00//..--LLKKJJIIYYSSRRQQ43322110KKJJIIHHggffeedd::;;<<==00112233EEFFGGHH))**++,,  ,,++**))HHGGFFEEPPOONNMM0//..--,GGFFEEDDccbbaa``~~}}||>>??@@AA 44556677IIJJKKLL--..//00 - - ((''&&%%DDCCBBAALLKKJJII,++**))(CCBBAA@@__^^]]\\{{zzyyxxBBCCDDEE!!""##$$==>>??@@MMNNOOPP11223344$$##""!!@@??>>==HHGGFFEE(''&&%%$??>>==<<[[ZZYYXXwwvvuuttFFGGHHII%%&&''((AABBCCDDQQRRSSTT55667788 <<;;::99DDCCBBAA$##""!! ;;::9988WWVVUUTTssrrqqppJJKKLLMM))**++,,EEFFGGHHUUVVWWXX99::;;<< 88776655@@??>>==77665544SSRRQQPPoonnmmllNNOOPPQQ--..//00IIJJKKLLYYZZ[[\\==>>??@@!!""##$$443322117766554433221100OONNMMLLkkjjiihhRRSSTTUU11223344MMNNOOPP]]^^__``AABBCCDD%%&&''(( - - 00//..--33221100//..--,,KKJJIIHHggffeeddVVWWXXYY55667788QQRRSSYYaabbccddEEFFGGHH))**++,,  ,,++**))//..--,,++**))((GGFFEEDDccbbaa``~~}}||ZZ[[\\]]99::;;<>??@@^^__``aaiijjkkllMMNNOOPP11223344$$##""!!''&&%%$$ ##""!! ??>>==<<[[ZZYYXXwwvvuuttbbccddeeAABBCCDDbbccddeemmnnooppQQRRSSTT55667788 ##""!!;;::9988WWVVUUTTssrrqqppffgghhiiEEFFGGHHffgghhiiqqrrssttUUVVWWXX99::;;<< 77665544SSRRQQPPoonnmmlljjkkllmmIIJJKKLLjjkkllmmuuvvwwxxYYZZ[[\\==>>??@@!!""##$$ 33221100OONNMMLLkkjjiihhnnooppqqMMNNOOPPnnoouuvvyyzz{{||]]^^__``AABBCCDD%%&&''(( - -  - - //..--,,KKJJIIHHggffeeddrrssttuuQQRRSSTTwwxxyyzz}}~~aabbccddEEFFGGHH))**++,,    ++**))((GGFFEEDDccbbaa``~~}}||vvwwxxyyUUVVWWXX{{||}}~~eeffgghhIIJJKKLL--..//00 - - - -  - - ''&&%%$$CCBBAA@@__^^]]\\{{zzyyxxzz{{||}}YYZZ[[\\iijjkkllMMNNOOPP11223344##""!! ??>>==<<[[ZZYYXXwwvvuutt~~]]^^__``mmnnooppQQRRSSTT55667788 - -;;::9988WWVVUUTTssrrqqppaabbccddqqrrssttUUVVWWXX99::;;<<   !!77665544SSRRQQPPoonnmmlleeffgghhuuvvwwxxYYZZ[[\\==>>??@@!!""##$$""##$$%% 33221100OONNMMLLkkjjiihhiijjkkllyyzz{{||]]^^__``AABBCCDD%%&&''(( - - &&''(()) - - //..--,,KKJJIIHHggffeeddmmnnoopp}}~~aabbccddEEFFGGHH))**++,, **++,,-- ++**))((GGFFEEDDccbbaa``qqrrsstteeffgghhIIJJKKLL--..//00!!""##..//0011 - - ''&&%%$$CCBBAA@@__^^]]\\uuvvwwxxiijjkkllMMNNOOPP11223344$$%%&&''22334455##""!! ??>>==<<[[ZZYYXXyyzz{{||mmnnooppQQRRSSTT55667788(())**++66778899;;::9988WWVVUUTT}}~~qqrrssttUUVVWWXX99::;;<< ,,--..//::;;<<== !!77665544SSRRQQPPuuvvwwxxYYZZ[[\\==>>??@@!!""##$$00112233>>??@@AA""##$$%% 33221100OONNMMLLyyzz{{||]]^^__``AABBCCDD%%&&''((44556677BBCCDDEE&&''(()) - - //..--,,KKJJIIHH}}~~aabbccddEEFFGGHH))**++,,==>>??@@FFGGHHII**++,,-- ++**))((GGFFEEDDeeffgghhIIJJKKLL--..//00AABBCCDDJJKKLLMM..//0011 - - ''&&%%$$CCBBAA@@iijjkkllMMNNOOPP11223344EEFFGGHHNNOOPPQQ22334455##""!! ??>>==<>??@@QQRRSSYYZZ[[\\]]>>??@@AA""##$$%% 33221100yyzz{{||]]^^__``AABBCCDDZZ[[\\]]^^__``aaBBCCDDEE&&''(()) - - //..--,,hggffeedzzyyxxwwwwxxyyzz[[\\]]^^yyzz{{||xxyyzz{{\\]]^^__@@AABBCC$$%%&&'' - -  - - 00//..--LLKKJJIIhhggffeerqpoonnmnnooppqqdccbbaa`vvuuttss{{||}}~~__``aabb}}~~||}}~~``aabbccDDEEFFGG(())**++   ,,++**))HHGGFFEEddccbbaa~~}}mllkkjji~~}}||rrssttuu`__^^]]\rrqqppooccddeeffddeeffggHHIIJJKK,,--..// - - - -  - - ((''&&%%DDCCBBAA``__^^]]||{{zzyyihhggffe{{zzyyxxvvwwxxyy~~\[[ZZYYXnnmmllkkgghhiijjhhiijjkkLLMMNNOO00112233 $$##""!!@@??>>==\\[[ZZYYxxwwvvuueddccbbawwvvuuttzz{{||}}}}||{{zzWVUTSSRRjjiihhggkkllmmnnllmmnnooPPQQRRSS44556677  <<;;::99XXWWVVUUttssrrqqa``__^^]ssrrqqpp~~yyxxwwvvQQPPOONNffeeddccooppqqrrppqqrrssTTUUVVWW8899::;; - -  88776655TTSSRRQQppoonnmm]\\[[ZZYoonnmmlluuoonnmmMMLLKKJJbbaa``__~~}}||{{ssttuuvvttuuvvwwXXYYZZ[[<<==>>?? !!""##!!""##$$44332211PPOONNMMllkkjjii~~}}||{{YXWVUTSSkkjjiihhllkkjjiiIIHHGGFF^^]]\\[[zzyyxxwwwwxxyyzzxxyyzz{{\\]]^^__@@AABBCC$$%%&&'' - - %%&&''(( - - 00//..--LLKKJJIIhhggffeezzyyxxwwRRQQPPOOggffeeddhhggffeeEEDDCCBBZZYYXXWWvvuuttss{{||}}~~||}}~~``aabbccDDEEFFGG(())**++ ))**++,,  ,,++**))HHGGFFEEddccbbaavvuuoonnNNMMLLKKccbbaa``~~}}||ddccbbaaAA@@??>>VVUUTTSSrrqqppooddeeffggHHIIJJKK,,--..//!!""--..//00 - - ((''&&%%DDCCBBAA``__^^]]mmllkkjjJJIIHHGG__^^]]\\{{zzyyxx``__^^]]==<;:987RRQQPPOOnnmmllkkhhiijjkkLLMMNNOO00112233##$$%%&&11223344$$##""!!@@??>>==\\[[ZZYYiihhggffFFEEDDCC[[ZZYYXXwwvvuutt\\[[ZZYY76655443NNMMLLKKjjiihhggllmmnnooPPQQRRSS44556677''(())**55667788 <<;;::99XXWWVVUUeeddccbbBBAA@@??WWVVUUTTssrrqqppSSRRQQPP3221100/JJIIHHGGffeeddccppqqrrssTTUUVVWW8899::;;++,,--..99::;;<< 88776655TTSSRRQQaa``__^^>>==<;:9SSRRQQPPoonnmmll~~}}||OONNMMLL/..--,,+FFEEDDCCbbaa``__~~}}||{{ttuuvvwwXXYYZZ[[<<==>>?? !!""##//001122==>>??@@!!""##$$44332211PPOONNMM]]\\[[ZZ87766554OONNMMLLkkjjiihh{{zzyyxxKKJJIIHH+**))(('BBAA@@??^^]]\\[[zzyyxxwwxxyyzz{{\\]]^^__@@AABBCC$$%%&&''33445566AABBCCDD%%&&''(( - - 00//..--LLKKJJIIYYSSRRQQ43322110KKJJIIHHggffeeddwwvvuuttGGFFEEDD'&&%%$$#>>==<<;;ZZYYXXWWvvuuttss||}}~~``aabbccDDEEFFGG(())**++77==>>??EEFFGGHH))**++,,  ,,++**))HHGGFFEEPPOONNMM0//..--,GGFFEEDDccbbaa``~~}}||ssrrqqppCCBBAA@@#""!! ::998877VVUUTTSSrrqqppooddeeffggHHIIJJKK,,--..//@@AABBCCIIJJKKLL--..//00 - - ((''&&%%DDCCBBAALLKKJJII,++**))(CCBBAA@@__^^]]\\{{zzyyxxoonnmmll??>>==7766554433RRQQPPOOnnmmllkkhhiijjkkLLMMNNOO00112233DDEEFFGGMMNNOOPP11223344$$##""!!@@??>>==HHGGFFEE(''&&%%$??>>==<<[[ZZYYXXwwvvuuttkkjjiihh66554433221100//NNMMLLKKjjiihhggllmmnnooPPQQRRSS44556677HHIIJJKKQQRRSSTT55667788 <<;;::99DDCCBBAA$##""!! ;;::9988WWVVUUTTssrrqqppggffeedd221100//..--,,++JJIIHHGGffeeddccppqqrrssTTUUVVWW8899::;;LLMMNNOOUUVVWWXX99::;;<< 88776655@@??>>==77665544SSRRQQPPoonnmmllccbbaa``..--,,++ **))((''FFEEDDCCbbaa``__~~}}||{{ttuuvvwwXXYYZZ[[<<==>>??PPQQRRSSYYZZ[[\\==>>??@@!!""##$$443322117766554433221100OONNMMLLkkjjiihh__^^]]\\**))(('' - - &&%%$$##BBAA@@??^^]]\\[[zzyyxxwwxxyyzz{{\\]]^^__@@AABBCCYYZZ[[\\]]^^__``AABBCCDD%%&&''(( - - 00//..--33221100//..--,,KKJJIIHHggffeedd[[ZZYYXX&&%%$$##""!! >>==<<;;ZZYYXXWWvvuuttss~~||}}~~``aabbccDDEEFFGG]]^^__``aabbccddEEFFGGHH))**++,,  ,,++**))//..--,,++**))((GGFFEEDDccbbaa``~~}}||WWVVUUTT""!!::998877VVUUTTSSrrqqppoo}}||{{zzddeeffggHHIIJJKKaabbccddeeffgghhIIJJKKLL--..//00 - - ((''&&%%++**))(( - -''&&%%$$CCBBAA@@__^^]]\\{{zzyyxxSSRRQQPP66554433RRQQPPOOnnmmllkkyyxxwwvvhhiijjkkLLMMNNOOeeffgghhiijjkkllMMNNOOPP11223344$$##""!!''&&%%$$ ##""!! ??>>==<<[[ZZYYXXwwvvuuttOONNMMLL - -221100//NNMMLLKKjjiihhgguutsrqpollmmnnooPPQQRRSSiijjkkllmmnnooppQQRRSSTT55667788 ##""!!;;::9988WWVVUUTTssrrqqppKKJJIIHH ..--,,++JJIIHHGGffeeddcconnmmllk~~ppqqrrssTTUUVVWWmmnnoouuqqrrssttUUVVWWXX99::;;<< 77665544SSRRQQPPoonnmmll~~}}||{{GGFFEEDD - - **))((''FFEEDDCCbbaa``__~~}}||{{kjjiihhg}}||{{zzttuuvvwwXXYYZZ[[vvwwxxyyuuvvwwxxYYZZ[[\\==>>??@@!!""##$$ 33221100OONNMMLLkkjjiihhzzyyxxwwCCBBAA@@  - - &&%%$$##BBAA@@??^^]]\\[[zzyyxxwwgffeeddcyyxxwwvvxxyyzz{{\\]]^^__zz{{||}}yyzz{{||]]^^__``AABBCCDD%%&&''(( - -  - - //..--,,KKJJIIHHggffeeddvvuuoonn??>>==<<""!! >>==<<;;ZZYYXXWWvvuuttsscbbaa``_uuttssrr||}}~~``aabbcc~~}}~~aabbccddEEFFGGHH))**++,,    ++**))((GGFFEEDDccbbaa``mmllkkjj;;::9988 - - ::998877VVUUTTSSrrqqppoo_^^]]\\[qqppoonnddeeffggeeffgghhIIJJKKLL--..//00 - - - -  - - ''&&%%$$CCBBAA@@__^^]]\\iihhggff77665544  !!""66554433RRQQPPOOnnmmllkk~~}}[ZZYYXWVmmllkkjjhhiijjkkiijjkkllMMNNOOPP11223344##""!! ??>>==<<[[ZZYYXXeeddccbb33221100##$$%%&& - -221100//NNMMLLKKjjiihhgg||{{zzyyUTSSRRQQiihhggffllmmnnoommnnooppQQRRSSTT55667788 - -;;::9988WWVVUUTTaa``__^^//..--,,''(())** ..--,,++JJIIHHGGffeeddccxxwwvvuuPPOONNMMeeddccbb~~ppqqrrssqqrrssttUUVVWWXX99::;;<<   !!77665544SSRRQQPP]]\\[[ZZ++**))((++,,--.. **))((''FFEEDDCCbbaa``__oonnmmllLLKKJJIIaa``__^^}}||{{zzttuuvvwwuuvvwwxxYYZZ[[\\==>>??@@!!""##$$""##$$%% 33221100OONNMMLLYYSSRRQQ''&&%%$$!!""##$$//001122 - - &&%%$$##BBAA@@??^^]]\\[[kkjjiihhHHGGFFEE]]\\[[ZZyyxxwwvvxxyyzz{{yyzz{{||]]^^__``AABBCCDD%%&&''(( - - &&''(()) - - //..--,,KKJJIIHHPPOONNMM##""!! %%&&''((33445566""!! >>==<<;;ZZYYXXWWggffeeddDDCCBBAAYYXXWWVVuuttssrr||}}~~}}~~aabbccddEEFFGGHH))**++,, **++,,-- ++**))((GGFFEEDDLLKKJJII))**++,,778899::::998877VVUUTTSSccbbaa``@@??>>==UUTTSSRRqqppoonneeffgghhIIJJKKLL--..//00!!""##..//0011 - - ''&&%%$$CCBBAA@@HHGGFFEE--..//00;;<<==>> !!""66554433RRQQPPOO__^^]]\\<;:98776QQPPOONNmmllkkjjiijjkkllMMNNOOPP11223344$$%%&&''22334455##""!! ??>>==<>==556677==CCDDEEFF''(())** ..--,,++JJIIHHGGRRQQPPOO21100//.IIHHGGFFeeddccbb~~qqrrssttUUVVWWXX99::;;<< ,,--..//::;;<<== !!7766554477665544 >>??@@AAGGHHIIJJ++,,--.. **))((''FFEEDDCCNNMMLLKK.--,,++*EEDDCCBBaa``__^^}}||{{zzuuvvwwxxYYZZ[[\\==>>??@@!!""##$$00112233>>??@@AA""##$$%% 3322110033221100 - - BBCCDDEEKKLLMMNN//001122 - - &&%%$$##BBAA@@??JJIIHHGG*))((''&AA@@??>>]]\\[[ZZyyxxwwvvyyzz{{||]]^^__``AABBCCDD%%&&''((44556677BBCCDDEE&&''(()) - - //..--,,//..--,, - - FFGGHHIIOOPPQQRR33445566""!! >>==<<;;FFEEDDCC&%%$$##"==<<;;::YYXXWWVVuuttssrr}}~~aabbccddEEFFGGHH))**++,,==>>??@@FFGGHHII**++,,-- ++**))((++**))((JJKKLLMMSSTTUUVV778899::::998877BBAA@@??"!! 99887766UUTTSSRRqqppoonneeffgghhIIJJKKLL--..//00AABBCCDDJJKKLLMM..//0011 - - ''&&%%$$''&&%%$$NNOOPPQQWWXXYYZZ;;<<==>> !!""66554433>>==776655443322QQPPOONNmmllkkjjiijjkkllMMNNOOPP11223344EEFFGGHHNNOOPPQQ22334455##""!! ##""!!RRSSYYZZ[[\\]]^^??@@AABB##$$%%&& - -221100//554433221100//..MMLLKKJJiihhggffmmnnooppQQRRSSTT55667788IIJJKKLLRRSSTTUU66778899[[\\]]^^__``aabbCCDDEEFF''(())** ..--,,++1100//..--,,++**IIHHGGFFeeddccbb~~qqrrssttUUVVWWXX99::;;<>??@@QQRRSSYYZZ[[\\]]>>??@@AA""##$$%% ""##$$%%ccddeeffgghhiijjKKLLMMNN//001122 - - &&%%$$##))((''&& - - %%$$##""AA@@??>>]]\\[[ZZyyxxwwvvyyzz{{||]]^^__``AABBCCDDZZ[[\\]]^^__``aaBBCCDDEE&&''(()) - -  &&''(())gghhiijjkkllmmnnOOPPQQRR33445566""!! %%$$##""!! ==<<;;::YYXXWWVVuuttssrr~~}}}}~~aabbccddEEFFGGHH^^__``aabbccddeeFFGGHHII**++,,-- - - - -**++,,--kkllmmnnooppqqrrSSTTUUVV778899::!!99887766UUTTSSRRqqppoonn||{{zzyyeeffgghhIIJJKKLLbbccddeeffgghhiiJJKKLLMM..//0011 - -  ..//0011oouuvvwwssttuuvvWWXXYYZZ;;<<==>> !!""55443322QQPPOONNmmllkkjjxxwwvvuuiijjkkllMMNNOOPPffgghhiijjkkllmmNNOOPPQQ2233445522334455xxyyzz{{wwxxyyzz[[\\]]^^??@@AABB##$$%%&& - - - - 1100//..MMLLKKJJiihhggfftsrqpoonmmnnooppQQRRSSTTjjkkllmmnnooppqqRRSSTTUU6677889966778899||}}~~{{||}}~~__``aabbCCDDEEFF''(())**  --,,++**IIHHGGFFeeddccbb~~nmmllkkj~~}}qqrrssttUUVVWWXXnnoouuvvrrssttuuVVWWXXYY::;;<<== !!::;;<<==ccddeeffGGHHIIJJ++,,--.. - -  - -))((''&&EEDDCCBBaa``__^^}}||{{zzjiihhggf||{{zzyyuuvvwwxxYYZZ[[\\wwxxyyzzvvwwxxyyZZ[[\\]]>>??@@AA""##$$%% !!""##>>??@@AAgghhiijjKKLLMMNN//001122 - -  %%$$##""AA@@??>>]]\\[[ZZyyxxwwvvfeeddccbxxwwvvuuyyzz{{||]]^^__``{{||}}~~zz{{||}}^^__``aaBBCCDDEE&&''(()) - - $$%%&&''BBCCDDEEkkllmmnnOOPPQQRR33445566!! ==<<;;::YYXXWWVVuuttssrrbaa``__^ttssrrqq}}~~aabbccdd~~bbccddeeFFGGHHII**++,,--(())**++FFGGHHIIooppqqrrSSTTUUVV778899:: - - 99887766UUTTSSRRqqppoonn^]]\\[[ZppoonnmmeeffgghhffgghhiiJJKKLLMM..//0011,,--..//JJKKLLMMssttuuvvWWXXYYZZ;;<<==>> !!""  !!""##55443322QQPPOONNmmllkkjj~~}}||ZYYXWVUTllkkjjiiiijjkklljjkkllmmNNOOPPQQ2233445500112233NNOOPPQQwwxxyyzz[[\\]]^^??@@AABB##$$%%&& - -$$%%&&'' - - 1100//..MMLLKKJJiihhggff{{zzyyxxSSRRQQPPhhggffeemmnnooppnnooppqqRRSSTTUU6677889944556677RRSSTTUU{{||}}~~__``aabbCCDDEEFF''(())** (())**++ --,,++**IIHHGGFFeeddccbbwwvvuuooOONNMMLLddccbbaa~~}}qqrrssttrrssttuuVVWWXXYY::;;<<== !!==>>??@@VVWWXXYYccddeeffGGHHIIJJ++,,--..!!,,--..// - -))((''&&EEDDCCBBaa``__^^nnmmllkkKKJJIIHH``__^^]]||{{zzyyuuvvwwxxvvwwxxyyZZ[[\\]]>>??@@AA""##$$%%AABBCCDDZZ[[\\]]gghhiijjKKLLMMNN//001122""##$$%%00112233 %%$$##""AA@@??>>]]\\[[ZZjjiihhggGGFFEEDD\\[[ZZYYxxwwvvuuyyzz{{||zz{{||}}^^__``aaBBCCDDEE&&''(())EEFFGGHH^^__``aakkllmmnnOOPPQQRR33445566&&''(())44556677!! ==<<;;::YYXXWWVVffeeddccCCBBAA@@XXWWVVUUttssrrqq}}~~~~bbccddeeFFGGHHII**++,,--IIJJKKLLbbccddeeooppqqrrSSTTUUVV778899::**++,,--8899::;;99887766UUTTSSRRbbaa``__??>>==<;TTSSRRQQppoonnmmffgghhiiJJKKLLMM..//0011MMNNOOPPffgghhiissttuuvvWWXXYYZZ;;<<==>> !!""..//0011<<==>>?? !!""##55443322QQPPOONN^^]]\\[[:9877665PPOONNMMllkkjjiijjkkllmmNNOOPPQQ22334455QQRRSSYYjjkkllmmwwxxyyzz[[\\]]^^??@@AABB##$$%%&&22334455@@AABBCC$$%%&&'' - - 1100//..MMLLKKJJZZYYSSRR54433221LLKKJJIIhhggffeennooppqqRRSSTTUU66778899ZZ[[\\]]nnooppqq{{||}}~~__``aabbCCDDEEFF''(())**6677==>>DDEEFFGG(())**++ --,,++**IIHHGGFFQQPPOONN100//..-HHGGFFEEddccbbaa~~}}rrssttuuVVWWXXYY::;;<<==^^__``aarrssttuuccddeeffGGHHIIJJ++,,--..??@@AABBHHIIJJKK,,--..// - -))((''&&EEDDCCBBMMLLKKJJ-,,++**)DDCCBBAA``__^^]]||{{zzyyvvwwxxyyZZ[[\\]]>>??@@AAbbccddeevvwwxxyygghhiijjKKLLMMNN//001122CCDDEEFFLLMMNNOO00112233 %%$$##""AA@@??>>IIHHGGFF)((''&&%@@??>>==\\[[ZZYYxxwwvvuuzz{{||}}^^__``aaBBCCDDEEffgghhiizz{{||}}kkllmmnnOOPPQQRR33445566GGHHIIJJPPQQRRSS44556677!! ==<<;;::EEDDCCBB%$$##""!<<;;::99XXWWVVUUttssrrqq~~bbccddeeFFGGHHIIjjkkllmm~~ooppqqrrSSTTUUVV778899::KKLLMMNNTTUUVVWW8899::;;99887766AA@@??>>! 88776655TTSSRRQQppoonnmmffgghhiiJJKKLLMMnnoouuvvssttuuvvWWXXYYZZ;;<<==>>OOPPQQRRXXYYZZ[[<<==>>?? !!""##55443322==77665544332211PPOONNMMllkkjjiijjkkllmmNNOOPPQQwwxxyyzzwwxxyyzz[[\\]]^^??@@AABBSSYYZZ[[\\]]^^__@@AABBCC$$%%&&'' - - 1100//..4433221100//..--LLKKJJIIhhggffeennooppqqRRSSTTUU{{||}}~~{{||}}~~__``aabbCCDDEEFF\\]]^^__``aabbccDDEEFFGG(())**++ --,,++**00//..--,,++**))HHGGFFEEddccbbaa~~}}rrssttuuVVWWXXYY~~}}||{{ccddeeffGGHHIIJJ``aabbccddeeffggHHIIJJKK,,--..// - -))((''&&,,++**)) ((''&&%%DDCCBBAA``__^^]]||{{zzyyvvwwxxyyZZ[[\\]]zzyyxxwwgghhiijjKKLLMMNNddeeffgghhiijjkkLLMMNNOO00112233 %%$$##""((''&&%% - - $$##""!!@@??>>==\\[[ZZYYxxwwvvuuzz{{||}}^^__``aavvuutsrqkkllmmnnOOPPQQRRhhiijjkkllmmnnooPPQQRRSS44556677!! $$##""!! <<;;::99XXWWVVUUttssrrqq~~}}||~~bbccddeepoonnmmlooppqqrrSSTTUUVVllmmnnooppqqrrssTTUUVVWW8899::;;88776655TTSSRRQQppoonnmm{{zzyyxxffgghhiilkkjjiih~~}}||{{ssttuuvvWWXXYYZZuuvvwwxxttuuvvwwXXYYZZ[[<<==>>?? !!""##44332211PPOONNMMllkkjjiiwwvvuutsjjkkllmmZHAb|ZdQbltbr˂pfpvp˂rH~ftlJp˂rvXnlJtA˂rXQ~f`lJtApvnے`JXQtlJdQZ|ZHAbnXv`XQJ`ے`vXntArdXQJ`ےvpfHrd|J`ےvXnrd|Xv`fr˂ptArddrtAJے`JXQf~HbHAZvpf|ZdQbbHAZ~f`ZdQbtbHAZpvpfHZdQbtHfpZHAbf~Hltbr˂pfpvp˂rH~ftlJp˂rvXnlJtA˂rXQ~f`lJtAvnrے`JXQXv`fdQZ|ZHAbnXv`XQJ`ے`vXntArdXQJ`ےvp`vrd|J`ےvXnrd|XQJ`ےr˂p~HfrAJltے`JXQf~HbHAZvpf|ZdQbbHAZXnvZdQbtbHAZpvpfHZdQbtHAZpZHAbpvnbdQZ|r˂pfpvdrtAH~ftlJp˂rpfH~lJtA˂rXQ~f`lJtA˂rXQے`JXQXv`fdrtZHAbnXv`Jlt`vXntArdXQJ`ےf`vrd|J`ےvXnrd|J`ےr˂p~HfAJltے`JXQf~HbdQZ|vpf|ZdQbbHAZXnvZdQbtbHAZpvpfHZdQbtbHAZpZHAbpvbdQZ|r˂pfpvdrtAH~ftlJp˂rpfH~lJtA˂rXQ~f`lJtA˂rXQے`JXQ~HfpdrtZHAbnXv`Jlt`vXntArdXQJ`ےvprd|J`ےvXnrd|J`ےr˂pvnXAJbdQے`JXQf~HbdQZ|vpf|ZdQbbHAZfH~ZdQbtbHAZpvpfHZdQbtbHAZpZHAbv`fZ|dr˂pfpvdrtAH~ftlJp˂rf`vXlJtA˂rXQ~f`lJtA˂rXQے`JXQ~HfprtAJlZHAbnXv`JltZHAbtArdXQJ`ےnvprd|J`ےvXnrd|J`ےr˂pvnXtbdQے`JXQf~HbdQZ|ے`JXQ|ZdQbbHAZfH~ZdQbtbHAZpvpfHZdQbtbHAZpZHAbv`pvZ|dr˂pfpvdrtAr˂ptlJp˂rf`vXlJtA˂rXQ~f`lJtA˂rXQے`JXQnXvrtAJlZHAbnXv`JltZHAbtArdXQJ`ےH~frd|J`ےvXnrd|J`ےr˂p`f~tbQZے`JXQf~HbdQZ|ے`JXQ|ZdQbbHAZZHAbZdQbtbHAZpvpfHZdQbtbHAZpZHAbHfpvdrtAr˂pfpvdrtAr˂ptlJp˂rJQrlJtA˂rXQ~f`lJtA˂rXQے`JXQnXvJltZHAbnXv`JltZHAbtArdXQJ`ےpZHArdfJ`ےvXnrd|J`ےr˂p`f~bdQZ|ے`JXQf~HbdQZ|ے`JXQf~HbHAZbے`~HfbHAZpvpfHZdQbtbHAZpdrtAJZHAbHXv`drtAr˂pfpvdrtAr˂pfpvp˂rJXQrpvn˂rXQ~f`lJtA˂rXQltbے`JXQf~HJltZHAbnXv`JltZHAbnXv`XQJ`ےpZHAXv`fJ`ےvXnrd|J`ےdQZ|r˂pfpvbdQZ|ے`JXQf~HbdQZ|ے`JXQf~HbHAZbے`~HfbHAZpvpfHZdQbtbHAZpdrtAJZHAbnXv`rAJlr˂pfpvdrtAr˂pfpvp˂rJXQrZpvn˂rXQ~f`lJtA˂rXQltbے`JXQf~HtbdQZZHAbnXv`JltZHAbnXv`XQJ`ےHAbےXv`fJ`ےvXnrd|J`ےdQZ|r˂pfpv|drے`JXQf~HbdQZ|ے`JXQf~HbHAZ`JXQr~HfbHAZvpfHZdQbtbHAZpdrtAJZHAb~HftAJlr˂pfpvdrtAr˂pfpvdrtA˂pZpvndrtAJ~f`lJtA˂rXQltbے`JXQpvntbdQZZHAbnXv`JltZHAbnXv`dQZ|HAbےXv`fltbvXnrd|J`ےdQZ|r˂pXv`f|dnے`JXQf~HbdQZ|ے`JXQf~HdrtAJ`JXQr~HfdQZ|vpfHZdQbtbHAZpdtAJlZHAb~Hfvffr˂pfpvdrtAr˂pfpvltb˂pZApvndrtAJ~f`lJtA˂rXQtbnے`JXQpvn`vXnZHAbnXv`JltZHAbnXv`dQZ|b`JXXv`fltbvXnrd|J`ےvpfr˂pXv`pvpfے`JXQf~HbdQZ|ے`JXQf~HdrtAJQr˂p~HfdQZ|vpfHZdQbtbHAZpHf`ZHAbvnXH~fr˂pfpvdrtAr˂pfpvltdZHAbpvndrtAJ~fZlJtA˂rXQvXnے`JXQv`f`vXnZHAےnXv`JltZHAbnXv`rtAJlے`JXXv`fltbHAbےrd|J`ےvpfHr˂p~Hfpvpf`JXQrf~HbdQZ|ے`JXQf~HtbdQQr˂p~HfdQZ|`JXQrZdQbtbHAZp~f`ZHAbvnXH~fbtlfpvdrtAr˂pfpvZ|dZHAbpvndrtAJ˂pZlJtA˂rXQvXnے`JXQv`p˂`vXnJtAdnXv`JltZHAbnXv`rtAJlJQrXv`fltbHAbےrd|J`ےvpfHr˂prXQJvpf|ZdQbf~HbdQZ|ے`JXQf~HtbdQ˂pZHA~HfdQZ|`JXQrZdQbtbHAZp~f`ZHAb`ےbH~ftlJfpvdrtAr˂pfpvZ|lbے`pvndrtAJ˂pZlJtA˂rXQvXnے`JXQHAZp˂`vXntArdnXv`JltZHAbnXv`tbdQZJXQrXv`fltbHAbےrdfJ`ےvpfHr˂prXQJvpf|ZdQbfHfbdQZ|ے`JXQf~H|dr˂pZHA~HfdQZ|`JXQr~HfbHAZp~f`|ZdQb`p˂H~ftlJpvndrtAr˂pfpvtAJlbے`pvndrtAJ˂pZpvn˂rXQvXntlJrXQJ``vXntArdrXQJ`JltZHAbnXv`tbdQZJXQrXv`fltbHAbےXv`fJ`ےvpfHtArdےbHAvpf|ZdQbےHAZbdQZ|ے`JXQf~H|drZHAbې~HfdQZ|`JXQr~HfbHAZp~f`|ZdQbZp˂H~ftlJp˂rdrtAr˂pfpvtAdQZ|`JXQpvndrtAJ˂pZpvn˂rXQvXntlJrXQJ``vXntArdXQJ`ےJltZHAbnXv`drtAr˂pXv`fltbHAbےXv`fJ`ےvpfHtArdےbHAvpf|ZdQbbHAZbdQZ|ے`JXQf~HJltZHAbې~HfdQZ|`JXQr~HfbHAZ~f`|ZdQbXQJ`ےH~ftlJp˂rdtAJr˂pfpvbdQZ|`JXQpvndrtAJ˂pZpvndrtAJvXntlJbHAZ`vXntArdXQJ`ےltbZHAbnXv`drtAr˂pZXv`fltbHAbےXv`fltbvpfHtArdp˂rvpf|ZdQbbHAZnvpے`JXQf~HJltAb`J~HfdQZ|`JXQr~HfdQZ|~f`|ZdQbXQJ`ےH~ftlJp˂rfHfr˂pfpvdrtAJXQr˂pvndrtAJ˂pZpvndrtAJvXntlJbHAZ`vXntArdXQJ`ے`vXnZHAbnXv`ltbpZHAbXv`fltbHAbےXv`fltbvpfHtArdp˂vpf|ZdQbbHAZvpfے`JXQf~HdQZ|ے`J~HfdQZ|`JXQr~HfdQZ|~f`|ZdQbbHAZpH~ftlJp˂rH~fr˂pfpvdrtAJXQr˂pvndrtAJ˂pZpvndrtAJvXntlJ˂rXQ`vXntArdXQJ`ے`vXnZHAےnXv`ltbpZA`Xv`fltbHAbےXv`fltbvpfHtArdJ`ےvpf|ZdQbbHAZvpf`JXQrf~HdQZ|lJXQrb~HfdQZ|`JXQr~HfdQZ|~f`|ZdQbbHAZpH~ftlJp˂rH~fbtlfpvtbdQtlJpvndrtAJ˂pZpvndrtAJvXntlJ˂rXQ`vXntArdXQJ`ے`vXnJtAdnXv`Z|dtAd|Xv`fltbHAbےXv`fltbvpfHtArdJ`p˂vpf|ZdQbbHAZvpf|ZdQbf~HrtAJlZdQbt~HfdQZ|`JXQr~HfdQZ|~f`|ZdQbrXQJH~ftlJp˂rH~ftlJfpvtbdQlJtApvndrtAJ˂pZpvndrtAJvXntlJ`ےb`vXntArdXQJ`ے`vXntArdnXv`Z|lrd|Xv`fltbHAbےXv`fltbvpfHtArdHAZp˂vpf|ZdQbbHAZvpf|ZdQbfHftbnZdQbtHfpdQZ|`JXQr~HfdQZ|~f`|ZdQbrXQJH~ftlJp˂rH~ftlJpvnvp`vlJtAvnrdrtAJ˂pZpvndrtAJvXntlJ`ےb`vXntArdXQJ`ے`vXntArdrXQJ`Xnvrd|XQJ`ےltbHAbےXv`fltbvpfHtArdHAXQJ`vpf|ZdQbbHAZvpf|ZdQbےHAZpfH~ZdQbtHAZpdQZ|`JXQr~HfdQZ|~f`|ZdQbےbHAH~ftlJp˂rH~ftlJp˂rf`vlJtA˂rXQdrtAJ˂pZpvndrtAJvXntlJZp˂`vXntArdXQJ`ے`vXntArdXQJ`ےXnvrd|J`ےltbHAbےXv`fltbvpfHtArdrXQJ`vpf|ZdQbbHAZvpf|ZdQbbHAZp`vXZdQbtbHAZpdQZ|`JXQr~HfdQZ|~f`|ZdQbےbHAH~ftlJp˂rH~ftlJp˂rnvplJtA˂rXQdtAJl˂pZpvndrtAJvXntlJZp˂`vXntArdXQJ`ے`vXntArdXQJ`ےfH~rd|J`ےtbnHAbےXv`fltbvpfHtArdbHAZvpf|ZdQbbHAZvpf|ZdQbbHAZf`vXZdQbtbHAZpvpf`JXQr~HfdQZ|~f`|ZdQbdrtAH~ftlJp˂rH~ftlJp˂rnvplJtA˂rXQHf`˂pZpvndrtAJvXntlJJbdQZHAbtArdXQJ`ے`vXntArdXQJ`ےfH~rd|J`ےvXnHAbےXv`fltbvpfHtArdZ|dے`JXQ|ZdQbbHAZvpf|ZdQbbHAZvpfZdQbtbHAZpvpfH`JXQr~HfdQZ|~fZ|ZdQbrtAJlr˂ptlJp˂rH~ftlJp˂rH~flJtA˂rXQ~f`˂pZpvndrtAJHAbtlJtbdQZHAbtArdXQJ`ے`vXntArdXQJ`ے`vXnrd|J`ےvXnHAے`Xv`fltb˂pZHAtArdZ|dے`JXQ|ZdQbbHAZvpf|ZdQbbHAZvpfZdQbtbHAZpvpfHJXQrb~HfdQZ|bے`|ZdQbrtAJlr˂ptlJp˂rH~ftlJp˂rH~flJtA˂rXQ~f`tlJpvndrtAJJXQrtlJtbQZZHAbtArdXQJ`ے`vXntArdXQJ`ے`vXHrd|J`ےvXntAd|Xv`fltb˂pZHAtArddrtAJے`JXQf~HbHAZvpf|ZdQbbHAZ~f`ZdQbtbHAZpvpfHZdQbt~HfdQZ|bے`JXQHAbf~HtbdQbے`df`ےbXnvd|ZXQJ`ےnvp|ZdQےbHAnvp|ZdQ`f~drtAJ|ZdQbf~HbdQZ|ے`JXQf~HbdQZ|˂pZ~fpvdQZ|`JXQrZdQbtbHAZpvpfHb㉀ۑpے`JfpvZ|dJXQr~HfpHAZp˂pfH~dQbt璐bHAZfH~btlZp˂fH~btlHfpvltbtlJfpvdrtAr˂pfpvdrtAHAbےnXv`drtAJ˂pZlJtA˂rXQ~f`JAHrXQr˂nXv`rtAJl˂pZHAvnXrXQJf`vlJtArp˂rf`vXJtArdrXQJ`f`vXJtArdnXvdQZ|ltArdnXv`JltZHAbnXv`Jlt`JXQHAf~HltbHAbےrdfJ`ےvXnˁ`pfpZHAbf~HftbdQbے`v`f`ےbXnvd|ZXQJ`ےnvp|ZdQےbHAnvp|ZdQ`fHtbn|ZdQbfHfbdQZ|ے`JXQf~HbdQZ|bے`fpvdQZ|`JXQr~HfbHAZpvpfHH~ㅐfېے`JvnXvZ|dJXQr~HfpHAZp˂pfH~dQbt璐bHAXQfH~btlZp˂fH~btlfpvvp`tlJpvndrtAr˂pfpvdrtAJXQrnXv`drtAJ˂pZpvn˂rXQ~f``vXnXQr˂`f~rtAJl˂pZHAvnXrXQJf`vlJtArJ`ےf`vXJtArdrXQJ`f`vXJtArdnrXQJvXntArdrXQJ`JltZHAbnXv`Jlt˂pZHAf~HltbHAbےXv`fJ`ےvXnvˍpfp`JXQHfpvtbdQbے`v`f`ےbXnvd|ZbHAZpnvp|ZdQےbHAnvp|ZdQ`ےHAvpfH|ZdQbےHAZbdQZ|ے`JXQf~HbdQZ|bے`fvnXdQZ|`JXQr~HfbHAZpvpfHH~ㅐfr˂pnXvZ|dJXQr~HfpHAZdpfH~dQbt˂rXQfH~btlZp˂fH~btlZp˂~f`tlJp˂rdrtAr˂pfpvdrtAJXQrv`fdrtAJ˂pZpvn˂rXQ~f``vXnZHAb`f~rtAJl˂pZHAvnXrtAJlf`vlJtArJ`ےf`vXJtArdrXQJ`f`vXJtArdrXQJ`vXntArdXQJ`ےJltZHAbnXv`Jlt˂p`J~HfpltbHAbےXv`fJ`ےvXnvˍpfے`JXQHfpvtbdQbے`v`ftbdQXnvd|ZbHAZpnvp|ZdQےbHAnvp|ZdQےbHAvp`v|ZdQbbHAZbdQZ|ے`JXQf~HbdQZ|XQr˂vnXdQZ|`JXQr~HfbHAZvpfHH~ㅐfr˂pnvfZ|dJXQr~HfpZ|dpfH~dQbt˂bfH~btlZp˂fH~btlZp˂XnvtlJp˂rdtAJr˂pfpvdrtApZHAbv`fdrtAJ˂pZpvndrtAJ~f``vXnZHAb~HfprtAJl˂pZHAvnXrtAJlf`vlJtArHAZdf`vXJtArdrXQJ`f`vXJtArdrXQJ`pfH~tArdXQJ`ےltbZHAbnXv`Jltے`J~HfpltbHAbےXv`fltbvXnvˍpf˂pZvnXtbdQbے`v`ftbdQXnvd|ZrtAJnvp|ZdQےbHAnvp|ZdQےbHAf`v|ZdQbbHAZnvpے`JXQf~HbdQZ|XQr˂vnvdQZ|`JXQr~HfdQZ|vpfHH~ㅐfHAbےv`fZ|dJXQr~HfpZ|dpfH~dQbtbdQZ|fH~btlZp˂fH~btlZp˂XnvtlJp˂rfHfr˂pfpvdrtApZHAbf~HdrtAJ˂pZpvndrtAJ~f``vXn`JXQr~HfprtAJl˂pZHAvnXrtAJlfZHAlJtArdrtAfZHAbJtArdrXQJ`f`vXJtArdrXQJ`pfH~tArdXQJ`ے`vXnZHAbnXv`Jlt˂pfpvltbHAbےXv`fltbvXnvˍpf˂pZvnXtbdQbے`v`ftbdQbے`d|ZJltے`J|ZdQےbHAnvp|ZdQےbHAvp|ZdQbbHAZvpfے`JXQf~HbdQZ|ZHAbnXv`dQZ|`JXQr~HfdQZ|vpfHH~ㅐfHAbےv`f~Z|dJXQr~HfpZ|dJXQrdQbtbdQZ|XQr˂btlZp˂fH~btlZp˂fH~tlJp˂rH~fr˂pfpvdrtAے`JXQf~HdrtAJ˂pZpvndrtAJ~fr`vXn`JXQHAfpvrtAJl˂pZHAvnXrtAJl˂pZHAlJtArdrtApZHAbJtArdrXQJ`f`vXJtArdrXQJ`f`vXtArdXQJ`ے`vXnZHAےnXv`Jltr˂pfpvltbHAbےXv`fltb˂pZvˍpfbے`nXv`tbdQbے`v`ftbdQbے`d|ZJltbے`J|ZdQےbHAnvp|ZdQےbHAnvp|ZdQbbHAZvpf`JXQrf~HbdQZ|ZHAbnXv`fdQZ|`JXQr~HfdQZ|HAbےH~ㅐfJXQrf~HZ|dJXQr~HfpZ|dJXQrdQbtQZdrXQr˂btlZp˂fH~btlZp˂fH~tlJp˂rH~fbtlfpvdrtAے`JXQ~fpvdrtAJ˂pZpvndrtAJ`JXQr`vXn˂pZHAfpvrtAJl˂pZHAvnXrtAJl˂pZHAlJtArtAJlpZHAbJtArdrXQJ`f`vXJtArdrXQJ`f`vXtArdXQJ`ے`vXnJtAdnXv`JltHAbےnXvltbHAbےXv`fltb˂pZvˍpfbے`nXv`tbdQbے`v`ftbdQbے`dftbdQZے`Jf~ےbHAnvp|ZdQےbHAH~f|ZdQbbHAZvpf|ZdQbf~HbdQZ|`JXQr`f~dQZ|`JXQr~HfdQZ|HAbےH~ㅐfJXQrffpvZ|dJXQr~HfpZ|dJXQr~HXv|drXQr˂HfpvZp˂fH~btlZp˂`vXntlJp˂rH~ftlJfpvdrtA˂pZHfpvdrtAJ˂pZpvndrtAJ`JXQHA`vXn˂p`JnrXQrtAJl˂pZHAvnXrtAJl˂pZHA`f~tAJlpZHAbnXvrXQJ`f`vXJtArdrXQJ`vpftArdXQJ`ے`vXntArdnXv`JltHAbےnXvltbHAbےXv`fltbbے`vˍpfXQr˂J`ےtbdQbے`v`ftbdQbے`HfpvtbdQZے`J`f~ےbHAnvp|ZdQےbHAH~f|ZdQbbHAZvpf|ZdQbfHfbdQZ|`JXQr`ffpdQZ|`JXQr~HfdQZ|JXQrH~ㅐfpZHAbHAZp˂Z|dJXQr~HfpZ|dJXQrnXv|rAJlXQr˂HfpvZp˂fH~btlZp˂`vXntlJp˂rH~ftlJpvndrtA˂p`vnrdrtAJ˂pZpvndrtAJ˂pZHA`vXnے`JrXQJrtAJl˂pZHAvnXrtAJl˂pZHA`f~tbdpZHAbnXvrXQJ`f`vXJtArdrXQJ`vp`tArdXQJ`ے`vXntArdrXQJ`JltJXQrXQJ`ےltbHAbےXv`fltbbے`vˍpfXQr˂`ےbtbdQbے`v`ftbdQbے`HfpvQZ|dے`J`f~ےbHAnvp|ZdQےbHAvXn|ZdQbbHAZvpf|ZdQbےHAZbdQZ|˂pZHAHAZpdQZ|`JXQr~HfdQZ|JXQrH~ㅐfp`JXQHAZp˂Z|dJXQr~HfpZ|dJXQr~HrtAJlXQr˂HfpvZdrfH~btlZp˂vpfHtlJp˂rH~ftlJp˂rdrtAbے`˂rXQdrtAJ˂pZpvndrtAJ˂p`J`vXnrbt璀rXQJtAJl˂pZHAvnXrtAJl˂pZHAfpvtbdpZHAbnXvtAJlf`vXJtArdrXQJ`~f`tArdXQJ`ے`vXntArdXQJ`ےJltJXQrJ`ےltbHAbےXv`fltbXQr˂vˍpfl|ZdQ`ےbtbnbے`v`ftbdQbے`nXv`QZ|dے`J`f~tbdQZnvp|ZdQےbHAvXn|ZdQbbHAZvpf|ZdQbbHAZbdQZ|˂p`JbHAZpdQZ|`JXQr~HfdQZ|pZHAbH~ㅐfbtlHAZp˂vpfHJXQr~HfpZ|dJXQrf~HrtAJXQr˂Hfpv|drfH~btlZp˂vpfHtlJp˂rH~ftlJp˂rdtAJXQrbt˂rXQdtAJl˂pZpvndrtAJے`J`vXnJtArdrXQJf`v˂pZHAvnXrtAJl˂pZHAfpvbdQZ|pZHAbnXvtAJlf`vXJtArdrXQJ`~vtArdXQJ`ے`vXntArdXQJ`ےltbl|ZJ`ےtbnHAbےXv`fltbXQr˂vˍpf|ZdQ`ےbXnvbے`v`ftbdQbے`nXv`drtAے`J`f~tbdQZnvp|ZdQےbHApfH~|ZdQbbHAZvpf|ZdQbbHAZnvpdQbtbHAZpvpf`JXQr~HfdQZ|pZHAbH~ㅐfbtlHAZp˂pfH~JXQr~HfpZ|dJXQrpvnJltXQr˂Hfpv|drfH~btlZp˂f`vtlJp˂rH~ftlJp˂rfHflJtAr˂rXQHf`˂pZpvndrtAJ˂p`vXn|ZdQbrXQJf`v˂pZHAvnXrtAJl˂pZHAXv`fbdQZ|pZHAbnXvtAJlfZHAbJtArdrXQJ`XnvtArdXQJ`ے`vXntArdXQJ`ے`vXnd|ZJ`ےvXnHAbےXv`fltbZHAbvˍpftlJ`ےbXnvے`Jv`ftbdQbے`~HfdrtAے`J`f~tbdQZے`J|ZdQےbHApfH~|ZdQbbHAZvpf|ZdQbbHAZvpfdQbtbHAZpvpfH`JXQr~HfdQZ|ے`JXQH~ㅐftArdHAZp˂pfH~XQrbt~HfpZ|dJXQrpvnJltXQr˂Hfpv|drXQr˂btlZp˂f`vtlJp˂rH~ftlJp˂rH~fl|ZdQ˂rXQ~f`˂pZpvndrtAJr˂p`vXn|ZdQbrXQJf`vlJtAvnXrtAJl˂pZHAXv`fbQZdpZHAbnXvtAJlpZHAbJtArdrXQJ`XH~tArdXQJ`ے`vXntArdXQJ`ے`vXnbtlJ`ےvXnHAے`Xv`fltbZHAbvˍpftlJ`ےbXnvd|Zv`ftbdQbے`~HXrtAJl琙ے`J`f~tbdQZے`J|ZdQےbHAfZHAb|ZdQbbHAZvpf|ZdQbbHAZvpfJtArdbHAZpvpfHJXQrb~HfdQZ|ے`JXQH~ㅐftArdtHAZp˂pfH~dQbt~HfpZ|dJXQrv`ftbdQXQr˂Hfpv|drXQr˂btlZp˂JQrtlJp˂rH~ftlJp˂rH~f|ZdQ˂rXQ~f`tlJpvndrtAJHAbے`vXnlJtArXQJf`vlJtArvnXrtAJl˂pZHA~HfpZ|dpZHAbnXvtAJlpZHAbJtArdrXQJ`˂pZHtArdXQJ`ے`vXntArdXQJ`ے`vXnbtlJ`ےvXntAd|Xv`fltb`JXQrvˍp|rd|`ےbXnvd|Zv`ftbdQbے`vnXrtAJl琙ے`J`f~tbdQZے`Jf~ےbHAAbے`f~HbHAZvpf|ZdQbbHAZvpfJtArdbHAZpvpfHZdQbt~HfdQZ|˂pZdrQtZdQbtHAZp˂pfH~dQbtHfpvZ|dJXQrv`ftbdQXQr˂Hfpv|drXQr˂HfpvZp˂JXQrfpvp˂rH~ftlJp˂rH~ftlJ˂rXQ~f`lJtApvndrtAJHAbےJltlJtArXQJf`vlJtArnrXQrtAJl˂pZHA~HfpZ|rAJpZHAbnXvtAJlpZHAbnXvrXQJ`˂pZHnXv`XQJ`ے`vXntArdXQJ`ے`vXntArdJ`ےvXnrd|Xv`fltb`JXQrbAdZ|rd|`ےbXnvd|ZJ`ےtbdQbے`v~ltbے`J`f~tbdQZے`J`f~ےbHAAbے`f~HbHAZvpf|ZdQbbHAZvpf|ZdQbbHAZpvpfHZdQbtHfpdQZ|˂p`drQtZdQtArHAZp˂pfH~dQbtHAZp˂Z|dJXQrHfpvdQZ|XQr˂Hfpv|drXQr˂HfpvZp˂JXQrfpvp˂rH~ftlJp˂rH~ftlJ˂rXQ~f`lJtAvnrdrtAJJXQrJltd|ZrXQJf`vlJtArrXQJrtAJl˂pZHAnXvdrtAJpZHAbnXvtAJlpZHAbnXvrXQJ`ZHAbnXv`XQJ`ے`vXntArdXQJ`ے`vXntArdJ`ےvXnrd|XQJ`ےltb˂pZHAbAdZ|dQbt`ےbXnvd|Z`ےbtbdQbے``f~ltbے`J`f~tbdQZے`J`f~ےbHAے`JXQf~HbHAZvpf|ZdQbbHAZvpf|ZdQtAbHAZpvpfHZdQbtHAZpdQZ|bے`drQtlJtArHAZp˂pfH~dQbtHAZp˂Z|dJXQrHfpvdQZ|XQr˂Hfpv|drXQr˂HfpvZdrr˂pfpvdrtAH~ftlJp˂rH~frd|˂rXQ~f`lJtA˂rXQdrtAJJXQrJltd|ZrXQJf`vlJtArrXQJtAJl˂pZHAnXvAJltpZHAbnXvtAJlpZHAbnXvtAdQZ|ZHAbnXv`Jlt`vXntArdXQJ`ے`vXnZdQbtJ`ےvXnrd|J`ےltb˂p`ZbAdZ|dQbt`ےbXnvd|Z`ےbtbnbے``pvbnvے`J`f~tbdQZے`J`f~drtAے`JXQf~HbdQZ|vpf|ZdQbbHAZvpflJtAbHAZpvpfHZdQbtbHAZpdQZ|QXb㉀ۂdrQtl|ZdQHAZp˂pfH~dQbtHAZp˂vpfHJXQrnXv`pfHXQr˂Hfpv|drXQr˂HfpvJltr˂pfpvdrtAH~ftlJp˂rH~frd|˂rXQ~f`lJtA˂rXQdtAJlpJAHrJltbtlrXQJf`vlJtArrXQJf`v˂pZHAf~Hf`vXpZHAbnXvtAJlpZHAbnXvbdQZ|ZAb`nXv`Jlt`vXntArdXQJ`ے`vXnZdQbtJ`ےvXnrd|J`ےtbnˁ`ZbAdZ|JtArd`ےbXnvd|Z`ےbXnvbے`fpvnvpے`J`f~tbdQZے`J`f~drtAJXQrf~HbdQZ|vpf|ZdQbbHAZvpfl|ZbHAZpvpfHZdQbtbHAZpvpfQXb㉀ۂdrQt|ZdQHAZp˂pfH~dQbtHAZp˂pfH~JXQrnXv`fH~XQr˂Hfpv|drXQr˂HfpvJltpZHAfpvdrtAH~ftlJp˂rH~fdQbt˂rXQ~f`lJtA˂rXQHf`p`ZQXJltbtlrXQJf`vlJtArrXQJf`v˂pZHApvnf`vXpZHAnXvtAJlpZHAbnXvdrtAJbے`nXv`JltZHAbtArdXQJ`ے`vXnlJtArJ`ےvXnrd|J`ےvXnb㉀ۑpbAdZ|JtArd`ےbXnvd|Z`ےbXnvے`JrXQJ`nvpے`JXQ`f~tbdQZے`J`f~ltbJXQrf~HbdQZ|ے`JXQ|ZdQbbHAZvpfd|ZbHAZpvpfHZdQbtbHAZpvpfHJAHr󙐂drQttlJHAZp˂pfH~dQbtHAZp˂pfH~XQrbtp˂rfH~rbtHfpv|drXQr˂HfpvdQZ|pZHAfpvdrtAr˂ptlJp˂rH~fdQbt˂rXQ~f`lJtA˂rXQ~f`ˁ`ZQXJlttArdrXQJf`vlJtArrXQJf`vlJtAXQJ`ےf`vXlJtAdnXvtAJlpZHAbnXvdrtAJbJQrnXv`JltZHAbtArdXQJ`ے`vXnlJtArJ`ےvXnrd|J`ےvXnb㉀ۑpbAdZ||ZdQb`ےbXnvd|Z`ےbXnvd|ZbHAZnvp|ZdQ`f~tbdQZے`J`f~ltb˂pZf~HbdQZ|ے`JXQ|ZdQbbHAZvpfdtlbHAZpvpfHZdQbtbHAZpvpfHJAHr󙐂drQttlJHAZp˂pfH~dQbtHAZp˂pfH~dQbtp˂rfH~btlHfpv|drXQr˂HfpvdQZ|lHAbےfpvdrtAr˂ptlJp˂rH~fJtArd˂rXQ~f`lJtA˂rXQ~f`ۑpJJlttArdrXQJf`vlJtArrXQJf`vlJtArXQJ`pf`vXJtArdnXvtAJlpZHAbnXvtbdQ`JXQrnXv`JltZHAbtArdXQJ`ے`vXn|ZdQJ`ےvXnrd|J`ےvXnAHr󙐂bAdZ||ZdQtA`ےbXnvd|Z`ےbXnvd|Z˂rXQnvp|ZdQ`fHtbdQZے`J`f~Z|d˂pZf~HbdQZ|ے`JXQf~HbHAZvpfbtlbHAZpvpfHZdQbtbHAZpvpfH`ZQXbdrQtrdfHAZp˂pfH~dQbtHAZp˂pfH~dQbtJ`ےfH~btlfpv|drXQr˂HfpvrtAJlHAbےfpvdrtAr˂pfpvp˂rH~fJtArd˂rXQ~f`lJtA˂rXQ~f`ۑpJJlt~HfrXQJf`vlJtArrXQJf`vlJtArbHAZpf`vXJtArdnrXQJtAJlpZHAbnXvtbdQ`JXQrnXv`JltZHAbnXv`XQJ`ے`vXn|ZdQJ`ےvXnrd|J`ےvXnAHr󙐂bAdZ|vnXv``ےbXnvd|Z`ےbXnvd|Z˂rXQnvp|ZdQ`ےHAtbdQZے`J`f~Z|dZHAbf~HbdQZ|ے`JXQf~HbHAZvpftArdbHAZpvpfHZdQbtbHAZpvpfH`ZQXAHdrQtf~HHAZdpfH~dQbtHAZp˂pfH~dQbtJ`ےfH~btlZp˂|drXQr˂HfpvrtAdQZے`JXfpvdrtAr˂pfpvp˂rH~ff~H˂rXQ~f`lJtA˂rXQ~f`r󙐂ˁ`JltfpvrtAJlf`vlJtArrXQJf`vlJtArbHAXQJf`vXJtArdrXQJ`tAJlpZHAbnXv|drQr˂pnXv`JltZHAbnXv`XQJ`ے`vXnfvnXJ`ےvXnrd|J`ےvXnZQXb㉀bAdZ|nXv`tbdQXnvd|Z`ےbXnvd|Z`ےbnvp|ZdQےbHAtbdQZے`J`f~tAJl璑ZHAbf~HbdQZ|ے`JXQf~HbHAZvpfv`fbHAZvpfHZdQbtbHAZpvpfHۑpJAHdrQtf~HZ|dpfH~dQbtHAZp˂pfH~dQbtHAZp˂fH~btlZp˂|dtAXQr˂HfpvtbdQZے`JXfpvdrtAr˂pfpvdrtAH~f~HfpdrtAJ~f`lJtA˂rXQ~f`r󙐂ˁ`JltfpvrtAJlf`vlJtArrXQJf`vlJtArrXQJf`vXJtArdrXQJ`JltpZHAbnXv|drQr˂pnXv`JltZHAbnXv`Jlt`vXnvnXltbvXnrd|J`ےvXnZQXb㉀bAdZ|nvftbdQXnvd|Z`ےbXnvd|Z`ےbnvp|ZdQےbHAbnvے`J`f~tAJl璑ZAb`f~HbdQZ|ے`JXQf~HbdQZ|vpfv`fdQZ|vpfHZdQbtbHAZpvpfHۑp`ZdrQt~HfpZ|dpfH~dQbtHAZp˂pfH~dQbtHAZp˂fH~btlZp˂pfHXQr˂HfpvtdrtAJXQrfpvdrtAr˂pfpvdrtAH~f~HfpdrtAJ~f`lJtA˂rXQ~f`QXb㉀JltvnXrtAJlfZHAlJtArrXQJf`vlJtArbHAf`vXJtArdrXQJ`f`vXpZHAbnXvJlt˂pZHAnXv`JltZHAbnXv`Jlt`vXnvnvfltbvXnrd|J`ےvXnpJAHrbAdZ|v`ftbdQbے`d|Z`ےbXnvd|ZZp˂nvp|ZdQےbHAnvpے`J`f~bdQZ|bے`f~HbdQZ|ے`JXQf~HbdQZ|vpf~HfdQZ|vpfHZdQbtbHAZpvpfHˁ`ZdrQt~HfpZ|dJXQrdQbtHAZp˂pfH~dQbtrXQJ`fH~btlZp˂fH~XQr˂HfpvdrtAJXQrfpvdrtAr˂pfpvdrtAH~fpvndrtAJ~fZlJtA˂rXQ~f`QXb㉀JltvnXrtAJl˂pZHAlJtArrXQJf`vlJtArےbHAf`vXJtArdrXQJ`f`vXpZHAnXvJlt˂pZAnXv`JltZHAbnXv`JltZHAbXv`fltbHAbےrd|J`ےvXnpJAHrbAdZ|v`f~tbdQbے`d|Z`ےbXnvd|ZZp˂nvp|ZdQےbHAnvpے`JXQ`f~bdQZ|`JXQrf~HbdQZ|ے`JXQf~HbdQZ|˂pZ~HfdQZ|`JXQrZdQbtbHAZpvpfHۑpdrQtfpvZ|dJXQrdQbtHAZp˂pfH~dQbtrXQJ`fH~btlZp˂fH~rbtHfpvltbbtlfpvdrtAr˂pfpvdrtAHAbےpvndrtAJ˂pZlJtA˂rXQ~f`JAHrJltnXv`rtAJl˂pZHAlJtArrXQJf`vlJtArp˂rf`vXJtArdrXQJ`f`vXlJtAdnXvdQZ|JtAdnXv`JltZHAbnXv`Jlt`JXQrXv`fltbHAbےrd|J`ےvXnˁ`ZQXbAdZ|--------------------............................................................. \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv40_3.dat b/mpdf/qrcode/data/qrv40_3.dat deleted file mode 100644 index 03defc8..0000000 --- a/mpdf/qrcode/data/qrv40_3.dat +++ /dev/null @@ -1,353 +0,0 @@ -~}~}~}~}zyzyzyzyxwxwxwxwtstststsopopopoolklklklkjijijijifefefefe~}~}~}~}zyzyzyzyxwxwxwvutstststsoooopopolklklklkjijijijifefefefe~}~}~}~}zyzyzyzyvuvuvuvutstststspopopopolklklklkjijijijifefefefe~}~}~}~}zyzyzyzyvuvuvuvutstststspopopopolklklklkjijijijifefefefe~}~}~}~}zyzyzyzyvuvuvuvutstststspopopopolklklklkjijijijifefefefe~}~}~}|{zyzyzyzyvuvuvuvutstststspopopopolklklklkjijijijifefefefe|{|{|{|{zyzyzyzyvuvuvuvutstststspopopopolklklklkjijijijifefefefe|{|{|{|{zyzyzyzyvuvuvuvutstststspooooooplklklklkjijijijifefefefe|{|{|{|{zyzyzyzyvuvuvuvutstststsopopopoplklklklkjijijijifefefefe|{|{|{|{zyzyzyzyvuvuvuvutstststsopopopoplklklklkjijijijifefefefe|{|{|{|{zyzyzyzyvuvuvuvutstststsopopopoplklklklkjijijijifefefefe|{|{|{|{zyzyzyzyvuvuvuvutstststsopopopoplklklklkjijijijifefefefe|{|{|{|{zyzyzyzyvuvuvuvutstststsopopopoplklklklkjijijijifefefefe|{|{|{|{zyzyzyzyvuvuvuvutsrqrqrqopopoooolklklklkjijijijifefefefe|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrqoopopopolklklklkjijijijifefefefe|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrqpopopopolklklklkjijijijifefefefe|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrqpopopopolklklklkjijihghgfefefefe|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrqpopopopolklklklkhghghghgfefefefe|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrqpopopopolklklklkhghghghgfefefefe|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrqoooopopolklklklkhghghghgfefefefe|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrqpoponmnmlklklklkhghghghgfefefefe|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrqnmnmnmnmlklklklkhghghghgfefefefe|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrqnmnmnmnmlklklklkhghghghgfefefefe|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrqnmnmnmnmlklklklkhghghghgfefefefe|{|{|{|{zyzyzyzyvuvuvuvurqrqrqrqnmnmnmnmlklklklkhghghghgfefefefe|{|{|{|{zyzyzyxwvuvuvuvurqrqrqrqnmnmnmnmlklklklkhghghghgfefefefe|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmlklklklkhghghghgfefefefe|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmlklklklkhghghghgfefefefe|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmlklklklkhghghghgfefefefe~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmlklklklkhghghghgfefefefe~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmlklklklkhghghghgfefefefe~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmlklklklkhghghghgfefefefe~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmlklklklkhghghghgfefefefe~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmlklklklkhghghghgfefefefe~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmlklklklkhghghghgfefefefedcdcdcdc~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmlklklklkhghghghgfefefefedcdcdcdc~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmlklklklkhghghghgfefedcdcdcdcdcdc~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmlklklklkhghghghgdcdcdcdcdcdcdcdc~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmlklklklkhghghghgdcdcdcdcdcdcdcdc~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmlklklklkhghghghgdcdcdcdcdcdcdcdc~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmlklkjijihghghghgdcdcdcdcdcdcdcdc~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdcdcdcdcdc~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdcdcdcdcdc~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdcdcdcdcdc~}~}~}~}|{|{|{|{xwxwxwxwvuvuvuvurqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdcdcdcdcdc~}~}~}~}|{|{|{|{xwxwxwxwvuvuvutsrqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdcdcdcdcdc~}~}~}~}|{|{|{|{xwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdcdcdcbaba~}~}~}~}|{|{|{|{xwxwxwxwtstststsrqrqrqrqnmnmnmnmjijijijihghghghgdcdcdcdcbabababa~}~}~}~}|{|{|{|{xwxwxwxwtstststsrqrqrqponmnmnmnmjijijijihghghghgdcdcdcdcbabababa~}~}~}~}|{|{|{zyxwxwxwxwtstststspopopooonmnmnmnmjijijijihghghghgdcdcdcdcbabababa~}~}~}~}zyzyzyzyxwxwxwxwtstststsooopopopnmnmnmnmjijijijihghghghgdcdcdcdcbabababa~}~}~}~}zyzyzyzyxwxwxwxwtstststsopopopopnmnmnmnmjijijijihghghghgdcdcdcdcbabababa~}~}~}~}zyzyzyzyxwxwxwxwtstststsopopopopnmnmnmnmjijijijihghghghgdcdcdcdcbabababa~}~}~}~}zyzyzyzyxwxwxwxwtstststsopopopopnmnmnmnmjijijijihghghghgdcdcdcdcbabababa~}~}~}~}zyzyzyzyxwxwxwxwtstststsopopopopnmnmnmnmjijijijihghghghgdcdcdcdcbabababa~}~}~}~}zyzyzyzyxwxwxwxwtstststsopopopopnmnmnmnmjijijijihghghghgdcdcdcdcbabababa~}~}~}~}zyzyzyzyxwxwxwxwtstststsooooooponmnmnmnmjijijijihghghghgdcdcdcdcbabababa~}~}~}~}zyzyzyzyxwxwxwxwtstststspopopoponmnmnmnmjijijijihghghghgdcdcdcdcbabababa~}~}~}~}zyzyzyzyxwxwxwxwtstststspopopoponmnmnmnmjijijijihghghghgdcdcdcdcbabababa~}~}~}~}zyzyzyzyxwxwxwxwtstststspopopoponmnmnmnmjijijijihghghghgdcdcdcdcbabababa~}~}~}~}zyzyzyzyxwxwxwxwtstststspopopoponmnmnmnmjijijijihghgfefedcdcdcdcbabababa~}~}~}~}zyzyzyzyxwxwxwxwtstststspopopoponmnmnmnmjijijijifefefefedcdcdcdcbabababa~}~}~}~}zyzyzyzyxwxwxwxwtstststspopooooonmnmnmnmjijijijifefefefedcdcdcdcbabababa~}~}~}~}zyzyzyzyxwxwxwxwtstststsopopopopnmnmnmnmjijijijifefefefedcdcdcdcbabababa~}~}~}~}zyzyzyzyxwxwxwxwtstststsopopopopnmnmlklkjijijijifefefefedcdcdcdcbabababa~}~}~}~}zyzyzyzyxwxwxwxwtstststsopopopoplklklklkjijijijifefefefedcdcdcdcbabababa~}~}~}~}zyzyzyzyxwxwxwxwtstststsopopopoplklklklkjijijijifefefefedcdcdcdcbabababa~}~}~}~}zyzyzyzyxwxwxwxwtstststsopopopoplklklklkjijijijifefefefedcdcdcdcbabababababababa^]^]^]^]\[\[\[\[XWXWXWXWSTSTSTSTRQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;787777774343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!    babababa^]^]^]^]\[\[\[\[XWXWXWXWSTSTSTSTRQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?>=>=>=<;<;<;<;878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!    babababa^]^]^]^]\[\[\[\[XWXWXWXWSTSTSTSTRQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=<;<;<;<;878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!    babababa^]^]^]^]\[\[\[\[XWXWXWXWSTSTSTSTRQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=<;<;<;<;878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!    babababa^]^]^]^]\[\[\[\[XWXWXWXWSTSTSTSSRQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA>=>=>=>=<;<;<;<;878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!    babababa^]^]^]^]\[\[\[\[XWXWXWXWSSSSTSTSRQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEDCDCDCBABABABA>=>=>=>=<;<;<;<;878787874343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!    babababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;878787774343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!    babababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;777878784343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!    babababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;787878784343434321212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#"!"!"!"!    babababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMLKJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;787878784343434321212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#"!"!"!"!    babababa^]^]^]^]\[\[\[\[XWXWXWXWTSTSTSTSRQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;787878784343434321212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#"!"!"!"!    babababa^]^]^]^]\[\[\[\[XWXWXWXWTSSSSSSTRQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;<;787878784343434321212121.-.-.-.-,+,+,+,+('('('('$#$#$#$#"!"!"!"!    babababa^]^]^]^]\[\[\[\[XWXWXWXWSTSTSTSTRQRQRQRQNMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=<;<;<;:9787878784343434321212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!    babababa^]^]^]^]\[\[\[\[XWXWXWXWSTSTSTSTRQPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:9777777874343434321212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!    babababa^]^]^]^]\[\[\[\[XWXWXWXWSTSTSTSTPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:9878787874343434321212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!    - babababa^]^]^]^]\[\[\[\[XWXWXWXWSTSTSTSTPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:9878787874343434321212121.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!    - - - - babababa^]^]^]^]\[\[\[\[XWXWXWXWSTSTSTSTPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:987878787434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!    - - - - babababa^]^]^]^]\[\[\[\[XWXWXWXWSTSTSSSSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:987878787434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!    - - - - babababa^]^]^]^]\[\[ZYZYXWXWXWXWSSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:987877777434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!    - - - - babababa^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:987878787434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!    - - - - babababa^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!    - - - - babababa^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!    - - - - baba`_`_^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!    - - - - `_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!    - - - - `_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWSSSSSTSTPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBABABABA>=>=>=>=:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!    - - - - `_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWSTSTSTSTPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDCBA@?@?@?>=>=>=>=:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!    - - - - `_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWSTSTSTSTPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!    - - - - `_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWSTSTSTSTPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#"!"!"!"!    - - - - `_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWSTSTSTSTPOPOPOPONMNMNMNMJIJIJIJIHGHGHGHGDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#        - - - - `_`_`_`_^]^]^]^]ZYZYZYZYXWXWXWXWSTSTSTSTPOPOPOPONMNMNMNMJIJIJIJIHGFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#        - - - - `_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUSTSSSSSSPOPOPOPONMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#        - - - - `_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)('('('('$#$#$#$#        - - - - `_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPONMNMNMNMJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#        - - - - `_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPONMLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#        - - - - `_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUTSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#        - - - - `_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUTSTSTSSSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565434343430/0/0/0/.-.-.-.-*)*)*)*)&%&%&%&%$#$#$#$#        - - - - `_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUSSTSTSTSPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565434343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        - - - - `_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVUTSRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565434343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#        - - - - `_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565434343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#       - - - - `_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565434343430/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#     - - - - `_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#     - - - - `_`_`_`_^]^]^]^]ZYZYZYZYVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#     - - - - `_`_`_`_^]^]\[\[ZYZYZYZYVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#     - - - - `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#     - - - - `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=>=>=>=:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#     - - - - `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?>=<;<;<;:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#     - - - - `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#     - - - - `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;:9:9:9:965656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#     - - - - `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCDCDCDC@?@?@?@?<;<;<;<;:987878765656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#     - - - - `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEDCBABABA@?@?@?@?<;<;<;<;8777777865656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#     - - - - `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;7878787865656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#     - - - - `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;7878787865656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%$#$#$#$#     - - - - `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKJIJIJIJIFEFEFEFEBABABABA@?@?@?@?<;<;<;<;7878787865656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!     - - - - `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKJIHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;7878787865656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!     - - - - `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;7878787865656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!     - - - - `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;7878777765656565212121210/0/0/0/,+,+,+,+*)*)*)*)&%&%&%&%"!"!"!"!     - - - - `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQPOPOPOPOLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;7787878765656565212121210/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"!     - - - - `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQPONMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;8787878765656565212121210/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"!     - - - - `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;8787878765656565212121210/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"!     - - - `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;8787878765656565212121210/0/0/0/,+,+,+,+('('('('&%&%&%&%"!"!"!"!     `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;878787876565656521212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     `_`_`_`_\[\[\[\[ZYZYZYZYVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;878787876565656521212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     `_`_`_`_\[\[\[\[ZYZYXWXWVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;777778786565656521212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!     `_`_`_`_\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;787878786565656521212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!      `_`_`_`_\[\[\[\[XWXWXWXWVUVUVUVURQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;787878784343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!    `_`_`_`_\[\[\[\[XWXWXWXWVUVUTSTSRQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;787878784343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!    `_`_^]^]\[\[\[\[XWXWXWXWTSTSSSSSRQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;787878784343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!    ^]^]^]^]\[\[\[\[XWXWXWXWSTSTSTSTRQRQRQRQNMNMNMNMLKLKLKLKHGHGHGHGFEFEFEFEBABABABA@?@?@?@?<;<;<;<;787878784343434321212121.-.-.-.-,+,+,+,+('('('('&%&%&%&%"!"!"!"!    qqrrsstt^^__``aa55667788llkkjjiiUUVVWWXXLLKKJJIIzz{{||}}**++,,--''&&%%$$wwvvuuttJJKKLLMMCCBBAA@@\[[ZZYYXooppqqrr !!""uuvvwwxxbbccddee99::;;<<hhggffeeYYZZ[[\\ - - HHGGFFEE~~..//0011##""!! ssrrqqppNNOOPPQQ??>>==77WVUTSSRRssttuuvv##$$%%&&yyzz{{||ffgghhii==>>??@@ddccbbaa]]^^__`` DDCCBBAA22334455oonnmmllRRSSTTUU66554433QQPPOONNwwxxyyzz''(())**}}~~jjkkllmmAABBCCDD ``__^^]]aabbccdd@@??>>==66778899kkjjiihhVVWWXXYY 221100//MMLLKKJJ{{||}}~~++,,--..nnoouuvvEEFFGGHH - - \\[[ZZYYeeffgghh<<;;::99::;;<<==ggffeeddZZ[[\\]] - - ..--,,++IIHHGGFF//001122wwxxyyzzIIJJKKLLXXWWVVUUiijjkkll88776655~~}}||{{>>??@@AAccbbaa``^^__``aa**))((''EEDDCCBB33445566{{||}}~~MMNNOOPPTTSSRRQQmmnnoopp 44332211zzyyxxwwBBCCDDEE __^^]]\\bbccddee&&%%$$##AA@@??>>778899::QQRRSSTTPPOONNMMqqrrsstt!!""##$$00//..--vvuuoonnFFGGHHII - - [[ZZYYXXffgghhii""!!==<;:987;;<<==>>UUVVWWXXLLKKJJIIuuvvwwxx%%&&''((,,++**))mmllkkjjJJKKLLMMWWVVUUTTjjkkllmm76655443??@@AABBYYZZ[[\\ - - HHGGFFEEyyzz{{||))**++,,((''&&%%iihhggff~~}}||NNOOPPQQSSRRQQPPnnooppqq !!3221100/~~}}||{{CCDDEEFF]]^^__`` DDCCBBAA}}~~--..//00$$##""!!eeddccbb{{zzyyxxRRSSTTUUOONNMMLLrrssttuu""##$$%%/..--,,+zzyyxxwwGGHHIIJJaabbccdd@@??>>==11223344 aa``__^^wwvvuutsVVWWXXYY KKJJIIHHvvwwxxyy&&''(()) - -+**))(('vvuuttssKKLLMMNN~~}}eeffgghh<<;;::9955667788]]\\[[ZZrqpoonnmZZ[[\\]] - - GGFFEEDDzz{{||}}**++,,-- '&&%%$$#rrqqppooOOPPQQRR||{{zzyyiijjkkll8877665599::;;<<YYSSRRQQmllkkjji^^__``aaCCBBAA@@~~..//0011#""!! nnmmllkkSSTTUUVVxxwwvvuummnnoopp 44332211==>>??@@PPOONNMMihhggffebbccddee??>>==<<22334455 - - jjiihhggWWXXYYZZttssrrqqqqrrsstt!!""##$$00//..--~~}}AABBCCDD LLKKJJIIeddccbbaffgghhii;;::998866778899 ffeeddcc[[\\]]^^ppoonnmmuuvvwwxx%%&&''((,,++**))||{{zzyyEEFFGGHH - - HHGGFFEEa``__^^]jjkkllmm77665544::;;<<==bbaa``____``aabbllkkjjiiyyzz{{||))**++,,((''&&%%xxwwvvuuIIJJKKLLDDCCBBAA]\\[[ZZYnnooppqq !!33221100>>??@@AA ^^]]\\[[ccddeeffhhggffee}}~~--..//00$$##""!!ttssrrqqMMNNOOPP@@??>>==YXWVUTSSrrssttuu""##$$%%//..--,,~~}}||BBCCDDEE - - ZZYYXXWWgghhiijjddccbbaa11223344 ppoonnmmQQRRSSTT77665544RRQQPPOOvvwwxxyy&&''(())++**))(({{zzyyxxFFGGHHII!!""##$$VVUUTTSSkkllmmnn``__^^]]55667788llkkjjiiUUVVWWXX33221100NNMMLLKKzz{{||}}**++,,--''&&%%$$wwvvuuttJJKKLLMM%%&&''((RRQQPPOOooppqqrr\\[[ZZYY99::;;<<hhggffeeYYZZ[[\\ - - //..--,,JJIIHHGG~~..//0011##""!! ssrrqqppNNOOPPQQ))**++,,NNMMLLKKssttuuvvXXWWVVUU==>>??@@ddccbbaa]]^^__`` ++**))((FFEEDDCC22334455oonnmmllRRSSTTUU--..//00 - -JJIIHHGGwwxxyyzzTTSSRRQQAABBCCDD ``__^^]]aabbccdd''&&%%$$BBAA@@??66778899kkjjiihhVVWWXXYY11223344 FFEEDDCC{{||}}~~PPOONNMMEEFFGGHH - - \\[[ZZYYeeffgghh##""!!>>==<;:9::;;<<==ggffeeddZZ[[\\]]556677==BBAA@@??LLKKJJIIIIJJKKLLXXWWVVUUiijjkkll87766554>>??@@AAccbbaa``^^__``aa>>??@@AA>>==<<;;HHGGFFEE~~}}||{{MMNNOOPPTTSSRRQQmmnnoopp 43322110~~}}||BBCCDDEE __^^]]\\bbccddeeBBCCDDEE::998877DDCCBBAAzzyyxxwwQQRRSSTTPPOONNMMqqrrsstt!!""##$$0//..--,{{zzyyxxFFGGHHII - - [[ZZYYXXffgghhiiFFGGHHII66554433@@??>>==vvuuoonn~~}}||UUVVWWXXLLKKJJIIuuvvwwxx%%&&''(( ,++**))(wwvvuuttJJKKLLMMWWVVUUTTjjkkllmmJJKKLLMM !!""221100//<<;;::99mmllkkjj{{zzyyxxYYZZ[[\\ - - HHGGFFEEyyzz{{||))**++,, - - (''&&%%$ssrrqqppNNOOPPQQSSRRQQPPnnooppqqNNOOPPQQ##$$%%&&..--,,++~~}}||{{88776655iihhggffwwvvuuts]]^^__`` DDCCBBAA}}~~--..//00$##""!! oonnmmllRRSSTTUUOONNMMLLrrssttuuRRSSYYZZ''(())****))((''zzyyxxww44332211eeddccbbrqpoonnmaabbccdd@@??>>==11223344 - -kkjjiihhVVWWXXYY KKJJIIHHvvwwxxyy[[\\]]^^++,,--..&&%%$$##vvuuttss00//..--aa``__^^mllkkjjieeffgghh<<;;::9955667788 ggffeeddZZ[[\\]] - - GGFFEEDDzz{{||}}__``aabb//001122""!! rrqqppoo,,++**))]]\\[[ZZihhggffeiijjkkll8877665599::;;<<ccbbaa``^^__``aaCCBBAA@@~~ccddeeff33445566nnmmllkk((''&&%%YYSSRRQQeddccbbammnnoopp 44332211==>>??@@__^^]]\\bbccddee??>>==<>ffeeddcc..--,,++ LLKKJJII]\\[[ZZYuuvvwwxx%%&&''((,,++**))||{{zzyyEEFFGGHH!!""## WWVVUUTTjjkkllmm77665544oouuvvww??@@AABBbbaa``__**))((''HHGGFFEEYXWVUTSSyyzz{{||))**++,,((''&&%%xxwwvvuuIIJJKKLL$$%%&&''SSRRQQPPnnooppqq !!33221100xxyyzz{{CCDDEEFF ^^]]\\[[&&%%$$##DDCCBBAARRQQPPOO}}~~--..//00$$##""!!ttssrrqqMMNNOOPP(())**++OONNMMLLrrssttuu""##$$%%//..--,,~~}}||||}}~~GGHHIIJJ - - ZZYYXXWW""!! @@??>>==NNMMLLKK11223344 ppoonnmmQQRRSSTT,,--..// KKJJIIHHvvwwxxyy&&''(())++**))(({{zzyyxxKKLLMMNNVVUUTTSS 77665544JJIIHHGG55667788llkkjjiiUUVVWWXX00112233 - - GGFFEEDDzz{{||}}**++,,--''&&%%$$wwvvuuttOOPPQQRRRRQQPPOO - - 33221100FFEEDDCC99::;;<<hhggffeeYYZZ[[\\44556677CCBBAA@@~~..//0011##""!! ssrrqqppSSTTUUVVNNMMLLKK - - //..--,,BBAA@@??==>>??@@ddccbbaa]]^^__``==>>??@@??>>==<<22334455oonnmmllWWXXYYZZ - -JJIIHHGG ++**))((>>==<;:9~~}}AABBCCDD ``__^^]]aabbccddAABBCCDD;;::998866778899kkjjiihh[[\\]]^^ FFEEDDCC ''&&%%$$87766554||{{zzyyEEFFGGHH - - \\[[ZZYYeeffgghhEEFFGGHH77665544::;;<<==ggffeedd__``aabbBBAA@@?? - - ##""!!43322110xxwwvvuuIIJJKKLLXXWWVVUUiijjkkllIIJJKKLL !!33221100>>??@@AAccbbaa``ccddeeff>>==<<;;0//..--,ttssrrqqMMNNOOPPTTSSRRQQmmnnooppMMNNOOPP""##$$%%//..--,,~~}}||BBCCDDEE __^^]]\\gghhiijj::998877 ,++**))(ppoonnmmQQRRSSTTPPOONNMMqqrrssttQQRRSSYY&&''(())++**))(({{zzyyxxFFGGHHII - - [[ZZYYXXkkllmmnn66554433!!""##$$(''&&%%$llkkjjiiUUVVWWXXLLKKJJIIuuvvwwxxZZ[[\\]]**++,,--''&&%%$$wwvvuuttJJKKLLMMWWVVUUTTooppqqrr !!""221100// - -%%&&''(( $##""!! hhggffeeYYZZ[[\\ - - HHGGFFEEyyzz{{||^^__``aa..//0011##""!! ssrrqqppNNOOPPQQSSRRQQPPssttuuvv##$$%%&&..--,,++~~}}||{{ ))**++,, - - - -ddccbbaa]]^^__`` DDCCBBAA}}~~bbccddee22334455oonnmmllRRSSTTUUOONNMMLLwwxxyyzz''(())****))((''zzyyxxww--..//00 ``__^^]]aabbccdd@@??>>==ffgghhii66778899kkjjiihhVVWWXXYY KKJJIIHH{{||}}~~++,,--..&&%%$$##vvuuttss11223344\\[[ZZYYeeffgghh<<;;::99jjkkllmm::;;<<==ggffeeddZZ[[\\]] - - GGFFEEDD//001122""!! rrqqppoo55667788XXWWVVUUiijjkkll88776655nnoouuvv>>??@@AAccbbaa``^^__``aaCCBBAA@@33445566nnmmllkk99::;;<< - -TTSSRRQQmmnnoopp 44332211wwxxyyzzBBCCDDEE __^^]]\\bbccddee??>>==<<778899::jjiihhgg !!""==>>??@@!!""## PPOONNMMqqrrsstt!!""##$$00//..--~~}}{{||}}~~FFGGHHII - - [[ZZYYXXffgghhii;;::9988~~;;<<==>>ffeeddcc##$$%%&&AABBCCDD$$%%&&''LLKKJJIIuuvvwwxx%%&&''((,,++**))||{{zzyyJJKKLLMMWWVVUUTTjjkkllmm77665544}}||{{zz??@@AABBbbaa``__''(())**EEFFGGHH(())**++ - - HHGGFFEEyyzz{{||))**++,,((''&&%%xxwwvvuuNNOOPPQQSSRRQQPPnnooppqq !!33221100yyxxwwvvCCDDEEFF ^^]]\\[[++,,--..IIJJKKLL,,--..// DDCCBBAA}}~~--..//00$$##""!!ttssrrqqRRSSTTUUOONNMMLLrrssttuu""##$$%%//..--,,uuoonnmmGGHHIIJJ - - ZZYYXXWW//001122MMNNOOPP00112233@@??>>==11223344 ppoonnmmVVWWXXYY KKJJIIHHvvwwxxyy&&''(())++**))((llkkjjiiKKLLMMNNVVUUTTSS33445566QQRRSSTT44556677<<;;::9955667788llkkjjiiZZ[[\\]] - - GGFFEEDDzz{{||}}**++,,--''&&%%$$hhggffee~~}}||{{OOPPQQRRRRQQPPOO778899::UUVVWWXX==>>??@@8877665599::;;<<hhggffee^^__``aaCCBBAA@@~~..//0011##""!! ddccbbaazzyyxxwwSSTTUUVVNNMMLLKK;;<<==>>YYZZ[[\\AABBCCDD 44332211==>>??@@ddccbbaabbccddee??>>==<<22334455``__^^]]vvuutsrqWWXXYYZZ - -JJIIHHGG??@@AABB]]^^__``EEFFGGHH!!""##$$00//..--~~}}AABBCCDD ``__^^]]ffgghhii;;::998866778899\\[[ZZYYpoonnmml[[\\]]^^ FFEEDDCCCCDDEEFFaabbccddIIJJKKLL%%&&''((,,++**))||{{zzyyEEFFGGHH - - \\[[ZZYYjjkkllmm77665544::;;<<==SSRRQQPPlkkjjiih__``aabbBBAA@@??GGHHIIJJeeffgghhMMNNOOPP))**++,,((''&&%%xxwwvvuuIIJJKKLLXXWWVVUUnnooppqq !!33221100>>??@@AAOONNMMLLhggffeedccddeeff>>==<<;;KKLLMMNNiijjkkllQQRRSSYY--..//00$$##""!!ttssrrqqMMNNOOPPTTSSRRQQrrssttuu""##$$%%//..--,,~~}}||BBCCDDEE KKJJIIHHdccbbaa`gghhiijj::998877OOPPQQRRmmnnooppZZ[[\\]]11223344 ppoonnmmQQRRSSTTPPOONNMMvvwwxxyy&&''(())++**))(({{zzyyxxFFGGHHII - - GGFFEEDD`__^^]]\kkllmmnn66554433SSTTUUVVWWXXYYZZ - -JJIIHHGG||}}~~,,--..//%%$$##""uuttssrrLLMMNNOOAA@@??>>ZYYXWVUTqqrrsstt!!""##$$00//..--~~}}AABBCCDD - -[[ZZYYXXffgghhii;;::9988~~}}||{{{{zzyyxx[[\\]]^^ FFEEDDCC00112233!! qqppoonnPPQQRRSS==776655SSRRQQPPuuvvwwxx%%&&''((,,++**))||{{zzyyEEFFGGHH!!""## WWVVUUTTjjkkllmm77665544zzyyxxwwwwvvuutt__``aabbBBAA@@??44556677mmllkkjjTTUUVVWW44332211OONNMMLLyyzz{{||))**++,,((''&&%%xxwwvvuuIIJJKKLL$$%%&&''SSRRQQPPnnooppqq !!33221100vvuuoonnssrrqqppccddeeff>>==<<;;8899::;;iihhggffXXYYZZ[[ - - 00//..--KKJJIIHH}}~~--..//00$$##""!!ttssrrqqMMNNOOPP(())**++OONNMMLLrrssttuu""##$$%%//..--,,mmllkkjjoonnmmllgghhiijj::998877~~}}<<==>>??eeddccbb\\]]^^__ ,,++**))GGFFEEDD11223344 ppoonnmmQQRRSSTT,,--..// KKJJIIHHvvwwxxyy&&''(())++**))((iihhggffkkjjiihhkkllmmnn66554433||{{zzyy@@AABBCCaa``__^^``aabbcc((''&&%%CCBBAA@@55667788llkkjjiiUUVVWWXX00112233 - - GGFFEEDDzz{{||}}**++,,--''&&%%$$eeddccbbggffeeddooppqqrr !!""221100//xxwwvvuuDDEEFFGG - -]]\\[[ZZddeeffgg$$##""!!??>>==<;99::;;<<hhggffeeYYZZ[[\\44556677CCBBAA@@~~..//0011##""!! aa``__^^ccbbaa``ssttuuvv##$$%%&&..--,,++oonnmmllHHIIJJKK YYXXWWVVhhiijjkk:9877665==>>??@@ddccbbaa]]^^__``==>>??@@??>>==<<22334455]]\\[[ZZ__^^]]\\wwxxyyzz''(())****))((''kkjjiihh~~LLMMNNOOUUTTSSRRllmmnnoo54433221~~}}AABBCCDD ``__^^]]aabbccddAABBCCDD;;::998866778899YYSSRRQQ[[ZZYYXX{{||}}~~++,,--..&&%%$$##ggffeedd}}||{{zzPPQQRRSSQQPPOONNppqqrrss !!""##100//..-||{{zzyyEEFFGGHH - - \\[[ZZYYeeffgghhEEFFGGHH77665544::;;<<==PPOONNMMWWVVUUTT//001122""!! ccbbaa``yyxxwwvvTTUUVVWWMMLLKKJJttuuvvww$$%%&&'' -,,++**)xxwwvvuuIIJJKKLLXXWWVVUUiijjkkllIIJJKKLL !!33221100>>??@@AALLKKJJIISSRRQQPP33445566__^^]]\\uutsrqpoXXYYZZ[[ - - IIHHGGFFxxyyzz{{(())**++ - - )((''&&%ttssrrqqMMNNOOPPTTSSRRQQmmnnooppMMNNOOPP""##$$%%//..--,,~~}}||BBCCDDEE HHGGFFEEOONNMMLL778899::[[ZZYYSSonnmmllk\\]]^^__ EEDDCCBB||}}~~,,--..//%$$##""!ppoonnmmQQRRSSTTPPOONNMMqqrrssttQQRRSSYY&&''(())++**))(({{zzyyxxFFGGHHII - - DDCCBBAAKKJJIIHH;;<<==>>RRQQPPOOkjjiihhg``aabbccAA@@??>>00112233 ! llkkjjiiUUVVWWXXLLKKJJIIuuvvwwxxZZ[[\\]]**++,,--''&&%%$$wwvvuuttJJKKLLMM@@??>>==GGFFEEDD??@@AABBNNMMLLKKgffeeddcddeeffgg==<<;;::44556677 - - hhggffeeYYZZ[[\\ - - HHGGFFEEyyzz{{||^^__``aa..//0011##""!! ssrrqqppNNOOPPQQ77665544CCBBAA@@CCDDEEFF JJIIHHGGcbbaa``_hhiijjkk998877668899::;;ddccbbaa]]^^__`` DDCCBBAA}}~~bbccddee22334455oonnmmllRRSSTTUU33221100??>>==<>??``__^^]]aabbccdd@@??>>==ffgghhii66778899kkjjiihhVVWWXXYY //..--,,;;::9988KKLLMMNNBBAA@@??[ZZYYXWVppqqrrss !!""##1100//..~~@@AABBCC \\[[ZZYYeeffgghh<<;;::99jjkkllmm::;;<<==ggffeeddZZ[[\\]] - - ++**))((77665544OOPPQQRR>>==7766UTSSRRQQttuuvvww$$%%&&''--,,++**}}||{{zzDDEEFFGG!!"" - - XXWWVVUUiijjkkll88776655nnoouuvv>>??@@AAccbbaa``^^__``aa''&&%%$$33221100SSTTUUVV55443322PPOONNMMxxyyzz{{(())**++))((''&&yyxxwwvvHHIIJJKK##$$%%&&TTSSRRQQmmnnoopp 44332211wwxxyyzzBBCCDDEE __^^]]\\bbccddee##""!!//..--,,WWXXYYZZ - -1100//..LLKKJJII||}}~~,,--..//%%$$##""uuttssrrLLMMNNOO''(())**PPOONNMMqqrrsstt!!""##$$00//..--~~}}{{||}}~~FFGGHHII - - [[ZZYYXXffgghhii++**))(([[\\]]^^ --,,++**HHGGFFEE00112233!! qqppoonnPPQQRRSS++,,--..LLKKJJIIuuvvwwxx%%&&''((,,++**))||{{zzyyJJKKLLMMWWVVUUTTjjkkllmm''&&%%$$__``aabb))((''&&DDCCBBAA44556677mmllkkjjTTUUVVWW//001122 - - HHGGFFEEyyzz{{||))**++,,((''&&%%xxwwvvuuNNOOPPQQSSRRQQPPnnooppqq !!##""!! ccddeeff%%$$##""@@??>>==8899::;;iihhggffXXYYZZ[[33445566 DDCCBBAA}}~~--..//00$$##""!!ttssrrqqRRSSTTUUOONNMMLLrrssttuu""##$$%% gghhiijj!!<;:98776<<==>>??eeddccbb\\]]^^__77==>>??@@??>>==11223344 ppoonnmmVVWWXXYY KKJJIIHHvvwwxxyy&&''(()) - - - -kkllmmnn65544332~~@@AABBCCaa``__^^``aabbcc@@AABBCC<<;;::9955667788llkkjjiiZZ[[\\]] - - GGFFEEDDzz{{||}}**++,,-- ooppqqrr !!""21100//.}}||{{zzDDEEFFGG - -]]\\[[ZZddeeffggDDEEFFGG8877665599::;;<<hhggffee^^__``aaCCBBAA@@~~..//0011ssttuuvv##$$%%&& .--,,++*yyxxwwvvHHIIJJKK YYXXWWVVhhiijjkkHHIIJJKK 44332211==>>??@@ddccbbaabbccddee??>>==<<22334455 wwxxyyzz''(())** - - *))((''&uuttssrrLLMMNNOOUUTTSSRRllmmnnooLLMMNNOO!!""##$$00//..--~~}}AABBCCDD ``__^^]]ffgghhii;;::998866778899 - - {{||}}~~++,,--..&%%$$##"qqppoonnPPQQRRSSQQPPOONNppqqrrssPPQQRRSS%%&&''((,,++**))||{{zzyyEEFFGGHH - - \\[[ZZYYjjkkllmm77665544::;;<<==!!""## - - //001122"!! mmllkkjjTTUUVVWWMMLLKKJJttuuvvwwYYZZ[[\\))**++,,((''&&%%xxwwvvuuIIJJKKLLXXWWVVUUnnooppqq !!33221100>>??@@AA$$%%&&''33445566 - - iihhggffXXYYZZ[[ - - IIHHGGFFxxyyzz{{]]^^__``--..//00$$##""!!ttssrrqqMMNNOOPPTTSSRRQQrrssttuu""##$$%%//..--,,~~}}||BBCCDDEE(())**++778899:: eeddccbb\\]]^^__ EEDDCCBB||}}~~aabbccdd11223344 ppoonnmmQQRRSSTTPPOONNMMvvwwxxyy&&''(())++**))(({{zzyyxxFFGGHHII,,--..//;;<<==>>aa``__^^``aabbccAA@@??>>eeffgghh55667788llkkjjiiUUVVWWXXLLKKJJIIzz{{||}}**++,,--''&&%%$$wwvvuuttJJKKLLMM00112233??@@AABB ]]\\[[ZZddeeffgg==<<;;::iijjkkll99::;;<<hhggffeeYYZZ[[\\ - - HHGGFFEE~~..//0011##""!! ssrrqqppNNOOPPQQ44556677 !!~~}}||{{CCDDEEFF!! - - YYXXWWVVhhiijjkk99887766mmnnoouu==>>??@@ddccbbaa]]^^__`` DDCCBBAA22334455oonnmmllRRSSTTUU==>>??@@""##$$%%zzyyxxwwGGHHIIJJ""##$$%%UUTTSSRRllmmnnoo55443322vvwwxxyyAABBCCDD ``__^^]]aabbccdd@@??>>==66778899kkjjiihhVVWWXXYYAABBCCDD&&''(())vvuuttssKKLLMMNN&&''(())QQPPOONNppqqrrss !!""##1100//..~~zz{{||}}EEFFGGHH - - \\[[ZZYYeeffgghh<<;;::99::;;<<==ggffeeddZZ[[\\]]EEFFGGHH**++,,--rrqqppooOOPPQQRR**++,,--MMLLKKJJttuuvvww$$%%&&''--,,++**}}||{{zz~~IIJJKKLLXXWWVVUUiijjkkll88776655~~}}||{{>>??@@AAccbbaa``^^__``aaIIJJKKLL..//0011nnmmllkkSSTTUUVV..//0011 - - IIHHGGFFxxyyzz{{(())**++))((''&&yyxxwwvvMMNNOOPPTTSSRRQQmmnnoopp 44332211zzyyxxwwBBCCDDEE __^^]]\\bbccddeeMMNNOOPP22334455jjiihhggWWXXYYZZ22334455 EEDDCCBB||}}~~,,--..//%%$$##""uuttssrrQQRRSSTTPPOONNMMqqrrsstt!!""##$$00//..--vvuuoonnFFGGHHII - - [[ZZYYXXffgghhiiQQRRSSYY66778899ffeeddcc[[\\]]^^6677==>>AA@@??>>00112233!! qqppoonnUUVVWWXXLLKKJJIIuuvvwwxx%%&&''((,,++**))mmllkkjjJJKKLLMMWWVVUUTTjjkkllmmZZ[[\\]]::;;<<==bbaa``____``aabb??@@AABB==<<;;::44556677mmllkkjjYYZZ[[\\ - - HHGGFFEEyyzz{{||))**++,,((''&&%%iihhggff~~}}||NNOOPPQQSSRRQQPPnnooppqq^^__``aa>>??@@AA^^]]\\[[ccddeeffCCDDEEFF998877668899::;;iihhggff]]^^__`` DDCCBBAA}}~~--..//00$$##""!!eeddccbb{{zzyyxxRRSSTTUUOONNMMLLrrssttuubbccddeeBBCCDDEEZZYYXXWWgghhiijjGGHHIIJJ55443322<<==>>??eeddccbbaabbccdd@@??>>==11223344 aa``__^^wwvvuutsVVWWXXYY KKJJIIHHvvwwxxyyffgghhiiFFGGHHIIVVUUTTSSkkllmmnnKKLLMMNN !!""##1100//..~~@@AABBCCaa``__^^eeffgghh<<;;::9955667788]]\\[[ZZrqpoonnmZZ[[\\]] - - GGFFEEDDzz{{||}}jjkkllmmJJKKLLMMRRQQPPOOooppqqrrOOPPQQRR$$%%&&''--,,++**}}||{{zzDDEEFFGG - -]]\\[[ZZiijjkkll8877665599::;;<<YYSSRRQQmllkkjji^^__``aaCCBBAA@@~~nnoouuvvNNOOPPQQNNMMLLKKssttuuvvSSYYZZ[[(())**++))((''&&yyxxwwvvHHIIJJKK YYXXWWVVmmnnoopp 44332211==>>??@@PPOONNMMihhggffebbccddee??>>==<>==<<;;hhiijjkk8899::;;iihhggffXXYYZZ[[ - - IIHHGGFF}}~~--..//00$$##""!!ttssrrqqMMNNOOPP@@??>>==YXWVUTSSrrssttuu""##$$%%//..--,,~~}}||bbccddee::998877llmmnnoo<<==>>??eeddccbb\\]]^^__ EEDDCCBB11223344 ppoonnmmQQRRSSTT77665544RRQQPPOOvvwwxxyy&&''(())++**))(({{zzyyxxffgghhii66554433uuvvwwxx@@AABBCCaa``__^^``aabbccAA@@??>>55667788llkkjjiiUUVVWWXX33221100NNMMLLKKzz{{||}}**++,,--''&&%%$$wwvvuuttjjkkllmm221100//yyzz{{||DDEEFFGG - -]]\\[[ZZddeeffgg==<<;;::99::;;<<hhggffeeYYZZ[[\\ - - //..--,,JJIIHHGG~~..//0011##""!! ssrrqqppnnooppqq..--,,++~~}}||{{}}~~HHIIJJKK YYXXWWVVhhiijjkk99887766~~}}||==>>??@@ddccbbaa]]^^__`` ++**))((FFEEDDCC22334455oonnmmllrrssttuu**))((''zzyyxxwwLLMMNNOOUUTTSSRRllmmnnoo55443322{{zzyyxxAABBCCDD ``__^^]]aabbccdd''&&%%$$BBAA@@??66778899kkjjiihhvvwwxxyy&&%%$$##vvuuttssPPQQRRSSQQPPOONNppqqrrss !!""##1100//..wwvvuuooEEFFGGHH - - \\[[ZZYYeeffgghh##""!!>>==<;:9::;;<<==ggffeeddzz{{||}}""!! rrqqppooTTUUVVWWMMLLKKJJttuuvvww$$%%&&''--,,++**nnmmllkkIIJJKKLLXXWWVVUUiijjkkll87766554>>??@@AAccbbaa``~~nnmmllkkXXYYZZ[[ - - IIHHGGFFxxyyzz{{(())**++))((''&&jjiihhgg~~}}MMNNOOPPTTSSRRQQmmnnoopp 43322110~~}}||BBCCDDEE __^^]]\\jjiihhgg\\]]^^__ EEDDCCBB||}}~~,,--..//%%$$##""ffeeddcc||{{zzyyQQRRSSTTPPOONNMMqqrrsstt!!""##$$0//..--,{{zzyyxxFFGGHHII - - [[ZZYYXXffeeddcc``aabbccAA@@??>>00112233!! bbaa``__xxwwvvuuUUVVWWXXLLKKJJIIuuvvwwxx%%&&''(( ,++**))(wwvvuuttJJKKLLMMWWVVUUTTbbaa``__ddeeffgg==<<;;::44556677^^]]\\[[tsrqpoonYYZZ[[\\ - - HHGGFFEEyyzz{{||))**++,, - - (''&&%%$ssrrqqppNNOOPPQQSSRRQQPP ^^]]\\[[hhiijjkk998877668899::;;ZZYYSSRRnmmllkkj]]^^__`` DDCCBBAA}}~~--..//00$##""!! oonnmmllRRSSTTUUOONNMMLL - - ZZYYXXWWllmmnnoo55443322<<==>>??QQPPOONNjiihhggfaabbccdd@@??>>==11223344 - -kkjjiihhVVWWXXYY KKJJIIHHVVUUTTSSppqqrrss !!""##1100//..~~@@AABBCCMMLLKKJJfeeddccbeeffgghh<<;;::9955667788 ggffeeddZZ[[\\]] - - GGFFEEDDRRQQPPOOttuuvvww$$%%&&''--,,++**}}||{{zzDDEEFFGG - -IIHHGGFFbaa``__^iijjkkll8877665599::;;<<ccbbaa``^^__``aaCCBBAA@@NNMMLLKKxxyyzz{{(())**++))((''&&yyxxwwvvHHIIJJKK EEDDCCBB^]]\\[[Zmmnnoopp 44332211==>>??@@__^^]]\\bbccddee??>>==<<~~}}||ZHAbtArd˂rXQH~fے`JXQnXv`p˂rvpfJtAdfpvdrtAJpZHAlJtAbHAZpltb˂pZZdQbtJ`ےdtAJlHAbےf~HfrtAJlpfH~d|Zے`JXQ|ZdQbJ`ے`vXnr˂pf~HXQJ`ےH~f|ZdQbnXv`ltdbے`rd|˂rXQdQZ|HAbےlJtAbHAZptbn`JXQHAvnXvtbdQf`vdQbtr˂ptlJbHAZpvpfZHAbfpvbHAZ`vXntlJf~HrtAJlJXQrZdQbtJ`ےdrtAJ`JXQrrd|˂rXQvpfbے``f~Z|dXnvlJtArZHAbtArd˂rXQH~fے`JXQnXv`drtAvpftArdfpvtbdQpZHAlJtAbHAZpltb˂pZZdQbtJ`ےHf`JXQrHfpvrtAJlpfH~d|Zے`JXQ|ZdQbJ`p˂`vXnr˂pf~HJltH~f|ZdQbnXv`Z|dbے`rd|˂rXQdQZ|HAbےlJtAbHAZpvXn˂pZHAnXvtbdQf`vdQbtr˂ptlJrXQJvpfZHAےfpvbdQZ|`vXntlJf~HrtAJlJXQrZZdQbtJ`ےdrtAJ`JXQrrdf˂rXQvpfHbے``f~Z|dXnvlJtArZHAbtArd`ےbH~f`JXQrnXv`drtAvpftArdfpvtbdQHAbےlJtAbHAZpltb˂pZ~HfJ`ے~f`JXQrHfpvrtAJlpfH~d|Zے`JXQ|ZdQbHAZp˂`vXnbtlf~HJltH~f|ZdQbnXv`Z|l`JXQrrd|˂rXQdQZ|HAbےpvnbHAZpvXn˂p`JnvftbdQf`vdQbtr˂ptlJrXQJvpfJtAdfpvbdQZ|`vXntlJf~HtbdQZ˂pZZdQbtJ`ےdtAJl`JXQrXv`f˂rXQvpfHXQr˂~HfpZ|dXnvlJtArZHAbtArd`ےbH~f|ZdQbnXv`drtAvpftArdfpv|drHAbےlJtAbHAZptbn˂pZ~HfJ`ے~f`pZHAbvnXrtAJlpfH~d|Zے`JXQ|ZdQbHAXQJ``vXntlJf~HJltH~f|ZdQbnXv`tAJl`JXQrrd|˂rXQvpfHAbےpvnbHAZpvXnے`Jv`ftbdQf`vdQbtr˂ptlJےbHAvpftArdfpvbdQZ|`vXntlJf~HtbdQZ˂pZAZdQbtJ`ےHf``JXQrXv`f˂rXQvpfHXQr˂~HfpZ|dXnvlJtArZHAbtArdZp˂H~f|ZdQbnXv`drtAvpftArdfpv|drb`JXlJtAbHAZpvXn˂pZ~HfJ`ے~f`p`JXQvnXrtAJlpfH~d|Zے`JXQ|ZdQbrXQJ``vXntlJf~HJltH~f|ZdQbnXv`tAdQZ|Qr˂prdf˂rXQvpfHHAbےpvnbHAZpvXnrbt璕v`f~tbdQf`vdQbtr˂ptlJےbHAvpftArdfpvbdQZ|`vXntlJf~HdrtAZHAb~HfJ`ے~f``JXQrXv`f˂rXQvpfHl|ZdQfpvZ|dXnvlJtArZHAbtArdZp˂H~f|ZdQbnXv`drtAvpftArdfpvJltے`JXpvnbHAZpvXn˂pZ~HfJ`ے~f`btlnXv`rtAJlpfH~d|Zے`JXQf~HbHAZ`vXntlJf~HJltH~f|ZdQbnXv`bdQZ|Qr˂pXv`f˂rXQvpfHHAbےpvnbHAZpvXnJtArdf~HtbdQfZHAdQbtr˂pXv`fdrtAvpftArdfpvbdQZ|`vXntlJfHfdrtAZHAb~HfJ`ے~f``JXQrXv`f˂rXQvpfH|ZdQfpvZ|dbے`lJtArZHAb~HfJbdQH~f|ZdQbnXv`drtAvpftArdpvnJltJQrpvnbHAZpvXn˂pZ~HfJ`ے~f`btlnXv`rtAJlJXQrd|Zے`JXQpvnZ|d`vXntlJf~HJltH~f|ZdQbrXQJ`drtAJ˂pZHAXv`f˂rXQvpfHHAbےpvnbHAZpvXn|ZdQbffpvtbdQ˂pZHAdQbtr˂pXv`frtAJl瀅vpftArdfpvbdQZ|`vXntlJےHAZltbbے`~HfJ`ے~f``JXQrXv`f˂rXQvpfHtlJnrXQZ|dbے`lJtArZHAb~HftbdQH~f|ZdQbnXv`drtAvpftArdp˂rdQZ|JXQrpvnbHAZpvXn˂pZ~HfJ`ے~f`tArdJ`ےrtAJlJXQrd|Zے`JXQpvZ|d`vXntlJf~HJltH~f|ZdQbXQJ`ےdrtAJ˂pZHAXv`f˂rXQvpfHHAbےpvnbHAZpvXn|ZdQbHAZp˂tbdQ˂pZHAdQbtr˂p~HfprtAJl瀅vpftArdfpvbdQZ|ZHAbtlJbHAZltbbے`~HfJ`ے~f``JXQrXv`f˂rXQvpfHtlJrXQJZ|dbے`lJtArZHAbvnXtbQZH~f|ZdQbnXv`drtAے`JXQtArdp˂rdQZ|lJXQrpvnbHAZpvXn˂pZ~HfJ`ے~f`tArdt`ےbrtAJlJXQrd|Zے`JXQv`fdrtAJ`vXntlJfHfJltr˂p|ZdQbXQJ`ےtbdQZHAbXv`f˂rXQvpfHHAbےpvnbHAZvXnlJtAHAZp˂tbdQ˂pZHAdQbtr˂p~HfpltbvpftArdpvnbdQZ|ZHAbtlJbHAZZ|d`JXQ~HfJ`ے~f``JXQrXv`fdrtAJvpfHrd|rXQJZ|dbے`lJtArZHAbvnXdQZ|H~f|ZdQbrXQJ`drtAے`JXQtArdp˂rrtAJlr˂ppvnbHAZpvXn˂pZ~Hfltb~f`ZdQbt`ےbrtAJlJXQrd|Zے`JXQv`pvdrtAJ`vXntlJےHAZJltr˂p|ZdQbXQJ`ےtbdQZHAbXv`f˂rXQvpfHHAے`pvndQZ|vXnlJtAHAZp˂tbdQ˂pZHAdQbtr˂pnXvltbvpftArdp˂rbdQZ|ZHAbtlJbHAZZ|l璒`JXQ~HfJ`ے~f`JXQrbXv`fdrtAJvpfHrd|rXQJZ|dbے`lJtArZHAb`f~dQZ|H~f|ZdQbXQJ`ےdrtAے`JXQtArdp˂rtbnr˂pZpvnbHAZpvXntlJ~Hfltb~f`ZdQtAr`ےbrtAJlJXQrd|Zے`JXQHfpvrAJltZHAbtlJbHAZJltr˂p|ZdQbXQJ`ےvp`vAb`JXv`f˂rXQvpfHtAd|pvndQZ|vXnd|ZHAZp˂tbdQ˂pZHAdQbtr˂pnXvbdQZ|ے`JXQtArdp˂rbdQZ|ZHAbtlJbHAZXnvXQr˂~HfJ`ے~f`ZdQbtXv`fdrtAJvpfHdQbt璀rXQJZ|dbے`lJtArZHAb`f~drtr˂p|ZdQbXQJ`ےdrtAے`JXQtArdp˂rpfH~pZHAbpvnbHAZvXnlJtA~Hfltb~f`lJtAr`ےbrtAJlJXQrd|Zے`JXQHXv`AJltZHAbtlJbHAZJltr˂p|ZdQbXQJ`ےf`vے`JXv`fdrtAJvpfHrd|pvndQZ|vXnd|ZHAZp˂tbdQ˂pZHAdQbtvnXr˂pf~HbdQZ|ے`JXQtArdp˂rbdQZ|ZHAbtlJbHAZXnvXQr˂~Hfltb~f`ZdQbtXv`fdrtAJvpfHdQbt璀rXQJZ|dbے`lJtArv`fZHAbfpvdrtr˂p|ZdQbXQJ`ےdrtAے`JXQtArdp˂rp`vXpZA`pvndQZ|vXnlJtA~Hfltb~f`l|ZdQ`ےbrtAJlJXQrdf~Hfpے`JXQnXv`AJbdQZHAbtlJbHAZJltr˂p|ZdQbXQJ`ےnvpJXQrbXv`fdrtAJvpfHrd|pvndQZ|vXnbtlHAZp˂tbdQ˂pZHA~HfpvnXr˂pf~HZ|dے`JXQtArdp˂rbdQZ|ZHAbtlJbHAZfH~tlJ~Hfltb~f`ZdQbtXv`fdrtAJvpfHJtArdrXQJZ|dbے`vnXv`fZHAbfpvrtAJlr˂p|ZdQbXQJ`ےdrtAے`JXQtArdp˂rf`vXtAd|pvndQZ|vXnlJtA~Hfltb~f`|ZdQ`ےbtAJlJXQrv`f~Hfpے`JXQ~HftbdQZHAbtlJbHAZJltr˂p|ZdQbXQJ`ےnvpZdQbtXv`fdrtAJvpfHrd|pvndQZ|vXnbtlHAZp˂tbn˂pZHA~HfpvnXr˂ppvnZ|dے`JXQtArdp˂rbdQZ|ZHAbtlJbHAZfH~lJtA~Hfltb~f`ZdQbtXv`fdrtAJvpfHJtArdrXQJvpfHbے`vnXv`f|ZdQbXv`frtAJlr˂p|ZdQbXQJ`ےdrtAے`JXQtArdp˂rvpfrd|pvndQZ|vXnlJtA~Hfltb~f`tlJ`ےbf`vJXQrv`f~HfptlJ~HftbQZZHAbtlJbHAZJltr˂pf~HXQJ`ےH~fZdQbtXv`fdrtAJvpfHrd|pvndQZ|vXntArdHAZp˂Xnv˂pZHA~HfpvnXtArdpvndrtAے`JXQtArdp˂rbdQZ|ZHAbfpvbHAZ`vXnlJtA~Hfltb~f`ZdQbtXv`fdrtAJvpfH|ZdQbrXQJpfH~bے`vnXv`f|ZdQbXv`pJltr˂p|ZdQbXQJ`ےdtAJے`JXQnXv`p˂rvpfrd|pvndQZ|vXnlJtA~Hfltb~fZtlJ`ےbf`vJXQrv`fHfpvtlJvnXbdQZ|ZHAbtlJbHAZltbr˂pf~HXQJ`ےH~fZdQbtXv`fdrtAJvpfHrd|pvndQZ|HAbtArdHAZp˂Xnv˂pZHA~HfpnrXQtArdv`fdrtAے`JXQtArdp˂rnvpZHAbfpvbHAZ`vXHlJtA~Hfltb~f`ZdQbtXv`fdrtAJ˂pZHA|ZdQtArXQJpfH~bے`vnXJ`ے|ZdQb~HfpJltr˂p|ZdQbXQJ`ےfHfے`JXQnXv`p˂r~f`rd|pvndQZ|vXnlJtAHfpltbbے`rdf`ےbf`vJXQrv`fHAZp˂tlJvnXbdQZ|ZHAbtlJbHAZ`vXnr˂pf~HXQJ`ےvXnZdQbtXv`fdrtAJvpfHrd|vnrdQZ|JXQr~HfHAZp˂Xnv˂pZHA~HfprXQJtArdv`p˂rAJlے`JXQtArdp˂rvpfZHAbfpvbHAZvpfHlJtA~Hfltb~f`ZdQbtXQJ`ےdrtAJ˂pZHAvnXv`rXQJpfH~bے`vnX`ےb|ZdQbrXQJtbdQZr˂pf~HXQJ`ےH~fے`JXQnXv`p˂r~f`rd|pvndQZ|vXnlJtAHAZpltbbے`f~H`ےbf`vJXQrv`fHAZp˂tlJ`ےb|drZHAbfpvbHAZ`vXnr˂pf~HXQJ`ےvXnZdQbtXv`fdrtAJvpfHrd|˂rXQdQZ|JXQHAbfpvHAZp˂Xnv˂pZHA~HfprXQJtArdHAZp˂tAJlے`JXQnXv`p˂rvpfZHAbfpvbHAZvp`vlJtA~Hfltb~fZZdQbtJ`ےdrtAJے`JnXv`rXQJpfH~bے`vnX`ےb|ZdQbrXQJtbdQZr˂pf~HXQJ`ےH~fے`JXQnXv`p˂rXnvrd|pvndQZ|HAbےlJtAbHAZpltbXQr˂f~H`ےbf`vJXQrv`fHAZp˂tlJ`p˂|dnZHAbfpvbHAZ`vXnr˂pf~HXQJ`ےpfH~ZdQbtXv`fdrtAJ`JXQrrd|˂rXQdQZ|pZHAbfpvHAZp˂Xnv˂pZHA~HfprXQJtArdrXQJ`vffے`JXQnXv`p˂rvpfZHAbfpvbHAZf`vlJtAHfpltb˂pZZdQbtJ`ےdrtAJے`JnvfrXQJpfH~bے`vnX`ےb|ZdQbےbHA`vXnr˂pf~HXQJ`ےH~fے`JXQnXv`p˂rXnvrd|vnrdQZ|HAbےlJtAbHAZpltbXQr˂~Hfp`ےbf`vJXQrv`fHAZp˂tlJZp˂vpfZHAbfpvbHAZ`vXnr˂pf~HXQJ`ےpfH~ZdQbtXQJ`ےdrtAJ`JXQrrd|˂rXQdQZ|p`JXQvnXHAZp˂Xnv˂pZHA~HfprXQJtArdrXQJ`H~fے`JXQnXv`p˂rvpfZHAbfpvbHAZvplJtAHAZpltb˂pZZdQbtJ`ےdrtAJr˂pv`frXQJpfH~ے`JvnX`ےb|ZdQbےbHA`vXnr˂pf~HXQJ`ےH~fے`JXQnXv`p˂rfH~rd|˂rXQdQZ|HAbےlJtAbHAZpltbZHAb~Hfp`ےbf`vXQrbtv`fHAZp˂tlJXQJ`ےvpfZHAbfpvbHAZ`vXnr˂pf~HXQJ`ےf`vXZdQbtJ`ےdrtAJ`JXQrrd|˂rXQdQZ|ے`JXQvnXHAZp˂XnvlJtA~HfprXQJtArdbHAZH~fے`JXQnXv`p˂rvpfZHAbfpvbHAZnvplJtAbHAZpltb˂pZZdQbtJ`ےdrtAJr˂pv`f~rXQJpfH~d|ZvnX`ےb|ZdQbp˂r`vXnr˂pf~HXQJ`ےH~fے`JXQnXv`drtAfH~rd|˂rXQdQZ|HAbےlJtAbHAZpltbZHAbfpv`ےbf`vdQbtv`fHAZp˂tlJXQJ`ےvpfZHAbfpvbHAZ`vXnr˂pf~HdQZ|f`vXZdQbtJ`ےdrtAJ`JXQrrd|˂rXQdQZ|˂pZnXv`HAZdXnvlJtAr~HfprXQJtArdbHAZH~fے`JXQnXv`p˂rvpfZHAےfpvdrtAJH~flJtAbHAZpltb˂pZZdQbtJ`ےdrtAJHAbےf~HrtAJlpfH~d|ZvnX`ےb|ZdQbp˂`vXnr˂pf~HXQJ`ےH~f`JXQrnXv`ltbZHAbrd|˂rXQdQZ|HAbےlJtAbHAZpltb`JXQrfpvtbdQf`vdQbtv`fHAZp˂tlJbHAZpvpfZHAbfpvbHAZ`vXnbtlf~HdQZ|JQrZdQbtJ`ےdrtAJ`JXQrrd|˂rXQdQZ|˂pZnXv`Z|dXnvlJtAr~HfprXQJ`ےbf`vJXQrHfpvdrtAfH~|ZdQnXv|drnvpJtArdfpvtAJlbJQrfpvbHAZ`vXnr˂pf~HXQJ`ےH~fdQbt璀nXvdrtAJ`JXQrrd|˂rXQdQZ|bے``vXnHAZp˂Xnv˂pZHA~HJltf`vXbtl`f~tAJlfH~|ZdQnrXQJtdrtA˂pZnXv`p˂rvpfZHAbfpvbHAZ`vXnl|ZdQ`ffpltb˂pZZdQbtJ`ےdrtAJJXQrvˍpfrXQJpfH~bے`fpvbdQZ|nvpJtArdHfpvtbdQZf`vXbtl`ےHAJltHAbےf~HXQJ`ےH~fے`JXQnXv`p˂rvpfbtlvnrdQZ|HAbےlJtAbHAZpltb˂p`JH~ㅐf`ےbf`vJXQrnXv`drtAfH~|ZdQnXv|drnvpJtArdZp˂bdQZ|`JXQrfpvbHAZ`vXnr˂pf~HXQJ`ےH~fJtArdXQJ`ےdrtAJ`JXQrrd|˂rXQdQZ|XQr˂`vXnHAZp˂Xnv˂pZHAf~HJltbf`vXbtl`f~tAJlfH~|ZdQrXQJ`drtA˂pZnXv`p˂rvpfZHAbfpvbHAZ`vXn|ZdQHAZpltb˂pZZdQbtJ`ےdrtAJpZHAbvˍpfrXQJpfH~bے`fpvQZdrnvpJtArdHfpvtbdQZfZHAbbtlےbHAJltHAbےf~HXQJ`ےH~fے`JXQnXv`p˂rvpfbtl˂rXQdQZ|HAbےlJtAbHAZpltbے`JH~ㅐf`ےbf`vJXQrnXv`tAJlfH~|ZdQnXv|drے`JJtArdZp˂bdQZ|`JXQrfpvbHAZ`vXnr˂pf~HXQJ`ےH~fJtArdJ`ےdrtAJ`JXQrrd|˂rXQdQZ|XQr˂`vXnHAZp˂Xnv˂pZHApvntbdQZf`vXbtl`fHtAJlXQr˂|ZdQrXQJ`ltbZHAbnXv`p˂rvpfZHAbfpvbHAZ`vXntlJbHAZpltb˂pZZdQbtJ`ےdrtAJpZHAbvˍpfrXQJpfH~bے`Xv`f|drnvpJtArdfpvtbdQZpZHAbbtlےbHAdQZ|ے`JXf~HXQJ`ےH~fے`JXQnXv`drtAvpftArd˂rXQdQZ|HAbےlJtAbHAZpltb˂pH~ㅐf`ےbf`vJXQr~HftAJlfH~|ZdQnrXQJ|drے`JJtArdZp˂drtAJQr˂pfpvbHAZ`vXnr˂pf~HJltH~f|ZdQbJ`ےdrtAJ`JXQrrd|˂rXQdQZ|ZHAb`vXnHAZp˂Xnv˂pZHApvntbdQZf`vXbtl`ےHAtAJlXQr˂|ZdQrXQJ`ltbZHAbnXv`p˂rvpfZHAےfpvbdQZ|`vXntlJbHAZpltb˂pZZdQbtJ`ےdrtAJے`JXQvˍpfrXQJpfH~bے`Xv`f|rAJlnvpJtArdZp˂tbdQZpZHAbbtlےbHAdQZ|lے`JXf~HXQJ`ےH~f`JXQrnXv`drtAvpftArd˂rXQdQZ|HAbےlJtAbHAZpltbr˂pH~ㅐf`ےbf`vJXQr~HXtbdfH~|ZdQrXQJ`|drے`JJtArdZp˂tbnQr˂pfpvbHAZ`vXnbtlf~HJltH~f|ZdQtAJ`ےdrtAJ`JXQrrd|˂rXQdQZ|ZHAb`vXnHAZp˂Xnv˂pZHAv`fQZ|dfZHAbbtlےbHAtAJlXQr˂|ZdQrXQJ`vp`ZAb`nXv`p˂rvpfJtAdfpvbdQZ|`vXnrd|bHAZpltb˂pZZdQbtJ`ےdtAJlے`JXQvˍpfrXQJpfH~bے`~HfprtAJlے`JJtArdZp˂tbdQZpZHAbbtlےbHAvXnJXQrf~HXQJ`ےH~f|ZdQbnXv`drtAvpfZdQbt˂rXQdQZ|HAbےlJtAbHAZptbnHAbےH~ㅐf`ےbf`vJXQrvnXtbdXQr˂|ZdQrXQJ`|drے`JJtArdZp˂vpfH˂pZHAfpvbHAZ`vXntlJf~HJltH~flJtAJ`ےdrtAJ`JXQrrd|˂rXQvpf`JXQr`vXnHAZp˂Xnv˂pZHAv`fQZ|dpZHAbbtlےbHAtAJlXQr˂|ZdQrXQJ`~f`bے`nXv`drtAvpftArdfpvbdQZ|`vXnrd|bHAZpltb˂pZZdQbtJ`ےHf`˂pZvˍpfrXQJpfH~ے`J~HfprtAJے`JJtArdZp˂tbdQZpZHAbbtlےbHAvXnJXQrf~HJltH~f|ZdQbnXv`drtAvpfZdQbt˂rXQdQZ|HAbےlJtAbHAZpvXnHAbےH~ㅐf`ےbf`vXQrbtv~bdQZ|XQr˂|ZdQrXQJ`|drے`JJtArdZp˂vp`v˂pZAfpvbdQZ|`vXntlJf~HJltH~fl|ZJ`ےdrtAJ`JXQrrdf˂rXQvpfH`JXQr`vXnHAZp˂XnvlJtAHfpvdrtApZHAbbtlےbHAtAJlXQr˂|ZdQrXQJ`Xnv`JXQrnXv`drtAvpftArdfpvbdQZ|`vXndQbtbHAZpltb˂pZ~HfJ`ے~f`˂p`vˍpfrXQJpfH~d|ZnXvJltے`JJtArdZp˂tbdQZpZHAbbtlےbHApfH~btlf~HJltH~f|ZdQbnXv`drtAvpflJtAr˂rXQdQZ|HAbےpvnbHAZpvXnJXQrH~ㅐf`ےbf`vdQbt`f~bdQZ|XQr˂|ZdQrXQJ`|drے`JJtArdZp˂f`vJtAdfpvbdQZ|`vXntlJf~HJltH~fd|ZJ`ےdtAJl`JXQrXv`f˂rXQvpfH˂pZHA`vXnHAZdXnvlJtArHfpvdrtApZHAbbtlےbHAtAJlXQr˂|ZdQrXQJ`Xnv|ZdQbnXv`drtAvpftArdfpvbdQZ|`vXndQbtbHAZptbn˂pZ~HfJ`ے~f`bے`vˍpfrtAJlpfH~d|ZnXvJltے`JJtArdZp˂tbdQZpZHAbbtlےbHApfH~tlJf~HJltH~f|ZdQbnXv`drtAvpflJtAr˂rXQvpfHAbےpvnbHAZpvXnJXQrH~ㅐftbdQf`vdQbt`pvbQZdXQr˂|ZdQrXQJ`|drے`JJtArdZp˂vptArdfpvbdQZ|`vXntlJf~HJltH~fdtlJ`ےHf``JXQrXv`f˂rXQvpfH˂p`Z`vXnZ|dXnvlJtArnXv`rtAJlpZHAbbtlےbHAtAJlXQr˂f~rXQJ`fH~|ZdQbnXv`drtAvpftArdfpvbdQZ|`vXnJtArdbHAZpvXn˂pZ~HfJ`ے~f`QXb㉀ەvˍpfrtAJlpfH~d|Zf~HtbdQ琙ے`JJtArdZp˂tbdQZpZHAbHfpvےbHAf`vXtlJf~HJltH~f|ZdQbnXv`drtAvpf|ZdQ˂rXQvpfHHAbےpvnbHAZpvXnpJAHrH~ㅐftbdQf`vdQbtfpvZ|dXQr˂|ZdQrXQJ`|dtAے`JnXvZp˂nvptArdfpvbdQZ|`vXntlJf~HJltH~fbtlJ`ے~f``JXQrXv`f˂rXQvpfHˁ`Z`vXnZ|dXnvlJtArnXv`rtAJlpZHAbbtlےbHAJltXQr˂`f~rXQJ`fH~|ZdQbnXv`drtAvpftArdfpvbdQZ|ZHAbJtArdbHAZpvXn˂pZ~HfJ`ے~f`QXb㉀ەvˍp|rtAJlpfH~d|ZpvntbdQ琙ے`JJtArdZp˂bnvpZHAbHfpvےbHAf`vXtlJf~HJltH~f|ZdQbnXv`drtA˂pZ|ZdQ˂rXQvpfHHAbےpvnbHAZpvXnp`ZQXdrQttbdQf`vdQbtrXQJ`Z|rAJXQr˂|ZdQrXQJ`pfHے`JnXvZp˂H~ftArdfpvbdQZ|`vXntlJfHfJltHAbےtArdJ`ے~f``JXQrXv`f˂rXQvpfHb㉀ۑpJltZ|dXnvlJtArp˂rltbpZHAbbtlےbHAf`vXXQr˂`f~rXQJ``vXn|ZdQbnXv`drtAvpftArdpvnbdQZ|`JXQrf~HbHAZpvXn˂pZ~HfJ`ے~f`JAHrbAdZ|rtAJlpfH~d|ZXQJ`ےdQZ|ے`JJtArdZp˂nvppZHAbHfpvےbHAvpftlJf~HJltH~f|ZdQbrXQJ`drtA˂pZfvnX˂rXQvpfHHAbےpvnbHAZpvXnˁ`ZQXdrQttbdQf`vdQbt璐bHAZdrtAJXQr˂f~rXQJ`fH~ے`JnXvZp˂H~ftArdfpvbdQZ|`vXntlJےHAZJltHAbےv`fJ`ے~f``JXQrXv`f˂rXQvpfHb㉀ۑpJltZ|dXnvlJtArp˂rltbpZHAbHfpvےbHAf`vXXQr˂`f~rXQJ``vXn|ZdQbnXv`drtAvpftArdp˂rbdQZ|`JXQHA~HfpbHAZpvXn˂pZ~HfJ`ے~f`JAHrbAdZ|rtAJlpfH~d|ZXQJ`pdQZ|ے`JnXvZp˂nvppZHAbHfpvےbHAvp`tlJf~HJltH~f|ZdQbXQJ`ےdrtAbے`vnX˂rXQvpfHHAbےpvnbHAZpvXnۑpJdrQttbdQf`vdQbt˂rXQAJltXQr˂`f~rXQJ`fH~ے`JnXvZp˂vXntArdfpvbdQZ|ZHAbtlJbHAZJltJXQrv`fJ`ے~f``JXQrXv`f˂rXQvpfHAHr󙐂JltZ|dXnvlJtArJ`ےbnvpZHAbHfpvےbHAf`vXXQr˂`f~rXQJ`vpfH|ZdQbnXv`drtAے`JXQtArdp˂rbdQZ|˂pZHA~HfpbHAZpvXn˂pZ~HfJ`ے~f``ZQXbbAdZ|rtAJlpfH~d|ZbHAZppfHے`JnXvZp˂nvppZHAbHfpvےbHA~f`tlJfHfJltr˂p|ZdQbXQJ`ےdrtAbے`vnvf˂rXQvpfHHAbےpvnbHAZvXnۑpJdrQttbdQf`vdQbt˂rXQf`vXXQr˂`f~rXQJ`fH~ے`JnXvZp˂vXntArdpvnbdQZ|ZHAbtlJbHAZJltJXQr~HfJ`ے~f``JXQrXv`fdrtAJvpfHAHr󙐂JltZ|dXnvlJtArJ`ےnvppZHAbHfpvےbHAf`vXXQr˂`f~rXQJ`vpfH|ZdQbrXQJ`drtAے`JXQtArdp˂rbdQZ|˂p`JpvnbHAZpvXn˂pZ~Hfltb~f``ZQXAHbAdZ|rtAJlpfH~d|ZbHAXQJfH~ے`JnXvZp˂nvppZHAbHfpvےbHA~vtlJےHAZJltr˂p|ZdQbXQJ`ےdrtAXQr˂Xv`f˂rXQvpfHHAے`pvndQZ|vXnr󙐂ˁ`drQttbdQfZHAdQbt`ےbf`vXXQr˂`f~rXQJ`fH~ے`JnXvZp˂pfH~tArdp˂rbdQZ|ZHAbtlJbHAZJltpZHAb~HfJ`ے~f`JXQrbXv`fdrtAJvpfHZQXb㉀JltZ|dbے`lJtArHAZp˂nvppZHAbHfpvےbHAf`vXXQr˂`f~rXQJ`f`v|ZdQbXQJ`ےdrtAے`JXQtArdp˂rbdQZ|ے`JpvnbHAZpvXntlJ~Hfltb~f`ۑpJAHbAdZ|rtAJlJXQrd|ZrXQJfH~ے`JnXvZp˂nvppZHAbHfpvےbHAXnvtlJbHAZJltr˂p|ZdQbXQJ`ےdrtAXQr˂Xv`f˂rXQvpfHtAd|pvndQZ|vXnr󙐂ˁ`drQttbdQ˂pZHAdQbt`ےbf`vXXQr˂`f~rXQJ`fH~ے`JnXvZdrpfH~tArdp˂rbdQZ|ZHAbtlJbHAZJltpZHAb~fpvJ`ے~f`ZdQbtXv`fdrtAJvpfHZQXb㉀JltZ|dbے`lJtArHAZp˂nvppZHAbHfpvےbHAf`vXXQr˂`f~tAdQZ|f`v|ZdQbXQJ`ےdrtAے`JXQtArdp˂rbdQZ|˂pnXv`bHAZvXnlJtA~Hfltb~f`ۑp`ZbAdZ|rtAJlJXQrd|ZbHAfH~ے`JnXvZp˂nvppZHAHfpvdrtAXH~tlJbHAZJltr˂p|ZdQbXQJ`ےdrtAZHAbf~HdrtAJvpfHrd|pvndQZ|vXnQXb㉀ۂdrQttbdQ˂pZHAdQbtZp˂f`vXXQr˂`f~rXQJ`fH~ے`JXQnXvJltfZHAbtArdp˂rbdQZ|ZHAbtlJbHAZJltے`JXQfpvltb~f`ZdQbtXv`fdrtAJvpfHpJAHrJltZ|dbے`lJtArrXQJ`nvppZHAbHfpvےbHAf`vXrbt`f~bdQZ|JQr|ZdQbXQJ`ےdrtAے`JXQtArdp˂rbdQZ|r˂pnXv`dQZ|vXnlJtA~Hfltb~f`ˁ`ZbAdZ|rtAJlJXQrd|ZےbHAfH~ے`JnXvZp˂nvplJtAdHfpvdrtA˂pZHtlJbHAZJltr˂p|ZdQbXQJ`ےdtAJZHAbf~HdrtAJvpfHrd|pvndQZ|vXnQXb㉀ۂdrQttbdQ˂pZHAdQbtZp˂f`vXXQr˂`f~rXQJ`fH~|ZdQnXvJltAbے`tArdp˂rbdQZ|ZHAbtlJbHAZltbے`JXQfvnXltb~f`ZdQbtXv`fdrtAJvpfHpJAHrJltZ|dbے`lJtArrXQJ`nvppZHAbHfpvےbHAf`vXbtl`f~drtAJJXQr|ZdQbXQJ`ےdrtAے`JXQtArdp˂rnvpHAbےv`fdQZ|vXnlJtA~Hfltb~f`ۑpbAdZ|rtAJlJXQrd|Zp˂rfH~ے`JnXvZdrnvpJtArdHfpvltb˂pZHtlJbHAZJltr˂p|ZdQbXQJ`ےfHf`JXQr~HfpdrtAJvpfHrd|pvndQZ|vXnJAHr󙐂drQttbdQ˂pZHAdQbtXQJ`ےf`vXXQr˂`f~tAJlfH~|ZdQnXvdQZ|Abے`tArdp˂rbdQZ|ZHAbtlJbHAZ`vXn˂pZvnXltb~f`ZdQbtXv`fdrtAJvpfHˁ`ZQXJltZ|dbے`lJtArbHAZnvppZHAHfpvtbdQZf`vXbtl`f~drtAJJXQr|ZdQbXQJ`ےdrtAے`JXQtArdp˂rvpfHAbےv`fdQZ|vXnlJtA~Hfltb~f`b㉀ۑpbAdZ|rtAJlJXQrd|Zp˂rfH~ے`JXQnXv|drnvpJtArdHfpvltbZHAbtlJbHAZJltr˂pf~HXQJ`ےH~f`JXQr~HfpdrtAJvpfHrd|pvndQZ|vXnJAHr󙐂drQttbdQ˂pZHAdQbtXQJ`ےf`vXrbt`f~tAJlfH~|ZdQnXvdQZ|lے`JXQtArdp˂rbdQZ|ZHAbfpvbHAZ`vXn˂p`vnvltb~f`ZdQbtXv`fdrtAJvpfHˁ`pfJltZ|dbے`lJtArbHAXQnvplJtAdHfpvtbdQZf`vXbtl`f~tbdQr˂p|ZdQbXQJ`ےdtAJے`JXQnXv`p˂rvpfJXQrf~HdQZ|vXnlJtA~Hfltb~frH~ㅐfbAdZ|rtAJlJXQrd|ZJ`ےfH~|ZdQnXv|drnvpJtArdHfpvZ|dZHAbtlJbHAZltbr˂pf~HXQJ`ےH~f˂pZHAfpvdrtAJvpfHrd|pvndQZ|˂pZ`vXndrQttbdQ˂pZHAdQbtbHAZpf`vXbtl`f~tAJlfH~|ZdQnXvrtAJlے`JXQtArdp˂rnvpZHAbfpvbHAZ`vXnbے`nXv`ltb~f`ZdQbtXv`fdrtAJHAbےvˍpfJltZ|dbے`lJtAr˂rXQnvpJtArdHfpvtbdQZf`vXbtl`f~tbdQr˂p|ZdQbXQJ`ےfHfے`JXQnXv`p˂rvpfJXQrf~HdQZ|vXnlJtAHfpltb`JXQrH~ㅐfbAdZ|rtAJlJXQrdfJ`ےfH~|ZdQnXv|drnvpJtArdHfpvZ|dZAb`tlJbHAZ`vXnr˂pf~HXQJ`ےH~f˂p`JfpvdrtAJvpfHrd|vnrdQZ|˂pZ`vXndrQttbdQ˂pZHA~HXvbHAZpf`vXbtl`f~tAJlfH~|ZdQnXvrtAdQZJXQrtArdp˂rvpfZHAbfpvbHAZ`vXnXQrbtnXv`fltb~f`ZdQbtXQJ`ےdrtAJHAbےvˍpfJltZ|dbے``f~˂bnvpJtArdHfpvtbdQZf`vXbtl`f~|drpZHAf~HXQJ`ےH~fے`JXQnXv`p˂rvpfl|Z~fpvdQZ|vXnlJtAHAZpltb`JXQHAH~ㅐfbAdZ|tAJlJXQrHfpvHAZdfH~|ZdQnXv|drnvpJtArdHfpvtAJlbے`fpvbHAZ`vXnr˂pf~HXQJ`ےH~fdQbt璀nXvdrtAJvpfHrd|˂rXQdQZ|bے``vXndrQttbn˂pZHAnXvrtAJf`vXbtl`f~tAJlfH~|ZdQnXvtbdQZJXQrnXv`p˂rvpfZHAbfpvbHAZ`vXnlJtAr`f~ltb~fZZdQbtJ`ےdrtAJJXQrvˍpfJltvpfHbے``f~bdQZ|nvpJtArdHfpvtbdQZf`vXbtl`fH|drpZHAf~HXQJ`ےH~fے`JXQnXv`p˂rvpfd|ZHfpvdQZ|HAbےlJtAbHAZpltb˂pZHAH~ㅐfbAdZ|66666666666666666666666666666666667777777777777777777777777777777777 \ No newline at end of file diff --git a/mpdf/qrcode/data/qrv4_0.dat b/mpdf/qrcode/data/qrv4_0.dat deleted file mode 100644 index 041616c..0000000 Binary files a/mpdf/qrcode/data/qrv4_0.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv4_1.dat b/mpdf/qrcode/data/qrv4_1.dat deleted file mode 100644 index 59889fb..0000000 Binary files a/mpdf/qrcode/data/qrv4_1.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv4_2.dat b/mpdf/qrcode/data/qrv4_2.dat deleted file mode 100644 index 29c2756..0000000 Binary files a/mpdf/qrcode/data/qrv4_2.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv4_3.dat b/mpdf/qrcode/data/qrv4_3.dat deleted file mode 100644 index 84713c5..0000000 Binary files a/mpdf/qrcode/data/qrv4_3.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv5_0.dat b/mpdf/qrcode/data/qrv5_0.dat deleted file mode 100644 index b8db1f0..0000000 Binary files a/mpdf/qrcode/data/qrv5_0.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv5_1.dat b/mpdf/qrcode/data/qrv5_1.dat deleted file mode 100644 index 0a7ccf7..0000000 Binary files a/mpdf/qrcode/data/qrv5_1.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv5_2.dat b/mpdf/qrcode/data/qrv5_2.dat deleted file mode 100644 index 3b3cbd9..0000000 Binary files a/mpdf/qrcode/data/qrv5_2.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv5_3.dat b/mpdf/qrcode/data/qrv5_3.dat deleted file mode 100644 index 1d403f7..0000000 Binary files a/mpdf/qrcode/data/qrv5_3.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv6_0.dat b/mpdf/qrcode/data/qrv6_0.dat deleted file mode 100644 index f184ac9..0000000 Binary files a/mpdf/qrcode/data/qrv6_0.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv6_1.dat b/mpdf/qrcode/data/qrv6_1.dat deleted file mode 100644 index 930399d..0000000 Binary files a/mpdf/qrcode/data/qrv6_1.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv6_2.dat b/mpdf/qrcode/data/qrv6_2.dat deleted file mode 100644 index 2162d80..0000000 Binary files a/mpdf/qrcode/data/qrv6_2.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv6_3.dat b/mpdf/qrcode/data/qrv6_3.dat deleted file mode 100644 index fecc622..0000000 Binary files a/mpdf/qrcode/data/qrv6_3.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv7_0.dat b/mpdf/qrcode/data/qrv7_0.dat deleted file mode 100644 index b14f7b9..0000000 Binary files a/mpdf/qrcode/data/qrv7_0.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv7_1.dat b/mpdf/qrcode/data/qrv7_1.dat deleted file mode 100644 index f4cae7a..0000000 Binary files a/mpdf/qrcode/data/qrv7_1.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv7_2.dat b/mpdf/qrcode/data/qrv7_2.dat deleted file mode 100644 index 57d216c..0000000 Binary files a/mpdf/qrcode/data/qrv7_2.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv7_3.dat b/mpdf/qrcode/data/qrv7_3.dat deleted file mode 100644 index aca8da0..0000000 Binary files a/mpdf/qrcode/data/qrv7_3.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv8_0.dat b/mpdf/qrcode/data/qrv8_0.dat deleted file mode 100644 index 2f1fb26..0000000 Binary files a/mpdf/qrcode/data/qrv8_0.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv8_1.dat b/mpdf/qrcode/data/qrv8_1.dat deleted file mode 100644 index abeb98f..0000000 Binary files a/mpdf/qrcode/data/qrv8_1.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv8_2.dat b/mpdf/qrcode/data/qrv8_2.dat deleted file mode 100644 index 57f789b..0000000 Binary files a/mpdf/qrcode/data/qrv8_2.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv8_3.dat b/mpdf/qrcode/data/qrv8_3.dat deleted file mode 100644 index 545a500..0000000 Binary files a/mpdf/qrcode/data/qrv8_3.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv9_0.dat b/mpdf/qrcode/data/qrv9_0.dat deleted file mode 100644 index e88c008..0000000 Binary files a/mpdf/qrcode/data/qrv9_0.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv9_1.dat b/mpdf/qrcode/data/qrv9_1.dat deleted file mode 100644 index 9c3724d..0000000 Binary files a/mpdf/qrcode/data/qrv9_1.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv9_2.dat b/mpdf/qrcode/data/qrv9_2.dat deleted file mode 100644 index f07f6a3..0000000 Binary files a/mpdf/qrcode/data/qrv9_2.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrv9_3.dat b/mpdf/qrcode/data/qrv9_3.dat deleted file mode 100644 index 539445e..0000000 Binary files a/mpdf/qrcode/data/qrv9_3.dat and /dev/null differ diff --git a/mpdf/qrcode/data/qrvfr1.dat b/mpdf/qrcode/data/qrvfr1.dat deleted file mode 100644 index 3d889a7..0000000 --- a/mpdf/qrcode/data/qrvfr1.dat +++ /dev/null @@ -1,21 +0,0 @@ -111111100000001111111 -100000100000001000001 -101110100000001011101 -101110100000001011101 -101110100000001011101 -100000100000001000001 -111111101010101111111 -000000000000000000000 -000000100000000000000 -000000000000000000000 -000000100000000000000 -000000000000000000000 -000000100000000000000 -000000001000000000000 -111111100000000000000 -100000100000000000000 -101110100000000000000 -101110100000000000000 -101110100000000000000 -100000100000000000000 -111111100000000000000 diff --git a/mpdf/qrcode/data/qrvfr10.dat b/mpdf/qrcode/data/qrvfr10.dat deleted file mode 100644 index e2f028f..0000000 --- a/mpdf/qrcode/data/qrvfr10.dat +++ /dev/null @@ -1,57 +0,0 @@ -111111100000000000000000000000000000000000000011001111111 -100000100000000000000000000000000000000000000001001000001 -101110100000000000000000000000000000000000000011001011101 -101110100000000000000000000000000000000000000001001011101 -101110100000000000000000001111100000000000000001001011101 -100000100000000000000000001000100000000000000010001000001 -111111101010101010101010101010101010101010101010101111111 -000000000000000000000000001000100000000000000000000000000 -000000100000000000000000001111100000000000000000000000000 -000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000 -000011111000000000000000001111100000000000000000111110000 -000010001000000000000000001000100000000000000000100010000 -000010101000000000000000001010100000000000000000101010000 -000010001000000000000000001000100000000000000000100010000 -000011111000000000000000001111100000000000000000111110000 -000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000 -101001100000000000000000000000000000000000000000000000000 -111110000000000000000000000000000000000000000000000000000 -000000100000000000000000001111100000000000000000111110000 -000000001000000000000000001000100000000000000000100010000 -111111100000000000000000001010100000000000000000101010000 -100000100000000000000000001000100000000000000000100010000 -101110100000000000000000001111100000000000000000111110000 -101110100000000000000000000000000000000000000000000000000 -101110100000000000000000000000000000000000000000000000000 -100000100000000000000000000000000000000000000000000000000 -111111100000000000000000000000000000000000000000000000000 diff --git a/mpdf/qrcode/data/qrvfr11.dat b/mpdf/qrcode/data/qrvfr11.dat deleted file mode 100644 index 0a7ecb0..0000000 --- a/mpdf/qrcode/data/qrvfr11.dat +++ /dev/null @@ -1,61 +0,0 @@ -1111111000000000000000000000000000000000000000000001101111111 -1000001000000000000000000000000000000000000000000001101000001 -1011101000000000000000000000000000000000000000000011101011101 -1011101000000000000000000000000000000000000000000010101011101 -1011101000000000000000000000111110000000000000000011001011101 -1000001000000000000000000000100010000000000000000010001000001 -1111111010101010101010101010101010101010101010101010101111111 -0000000000000000000000000000100010000000000000000000000000000 -0000001000000000000000000000111110000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000 -0000111110000000000000000000111110000000000000000000111110000 -0000100010000000000000000000100010000000000000000000100010000 -0000101010000000000000000000101010000000000000000000101010000 -0000100010000000000000000000100010000000000000000000100010000 -0000111110000000000000000000111110000000000000000000111110000 -0000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000 -0011111000000000000000000000000000000000000000000000000000000 -1110100000000000000000000000000000000000000000000000000000000 -1111001000000000000000000000111110000000000000000000111110000 -0000000010000000000000000000100010000000000000000000100010000 -1111111000000000000000000000101010000000000000000000101010000 -1000001000000000000000000000100010000000000000000000100010000 -1011101000000000000000000000111110000000000000000000111110000 -1011101000000000000000000000000000000000000000000000000000000 -1011101000000000000000000000000000000000000000000000000000000 -1000001000000000000000000000000000000000000000000000000000000 -1111111000000000000000000000000000000000000000000000000000000 diff --git a/mpdf/qrcode/data/qrvfr12.dat b/mpdf/qrcode/data/qrvfr12.dat deleted file mode 100644 index c184f27..0000000 --- a/mpdf/qrcode/data/qrvfr12.dat +++ /dev/null @@ -1,65 +0,0 @@ -11111110000000000000000000000000000000000000000000000001001111111 -10000010000000000000000000000000000000000000000000000000101000001 -10111010000000000000000000000000000000000000000000000010101011101 -10111010000000000000000000000000000000000000000000000011001011101 -10111010000000000000000000000011111000000000000000000000101011101 -10000010000000000000000000000010001000000000000000000010001000001 -11111110101010101010101010101010101010101010101010101010101111111 -00000000000000000000000000000010001000000000000000000000000000000 -00000010000000000000000000000011111000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000 -00001111100000000000000000000011111000000000000000000000111110000 -00001000100000000000000000000010001000000000000000000000100010000 -00001010100000000000000000000010101000000000000000000000101010000 -00001000100000000000000000000010001000000000000000000000100010000 -00001111100000000000000000000011111000000000000000000000111110000 -00000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000 -00110110000000000000000000000000000000000000000000000000000000000 -10010000000000000000000000000000000000000000000000000000000000000 -01101010000000000000000000000011111000000000000000000000111110000 -00000000100000000000000000000010001000000000000000000000100010000 -11111110000000000000000000000010101000000000000000000000101010000 -10000010000000000000000000000010001000000000000000000000100010000 -10111010000000000000000000000011111000000000000000000000111110000 -10111010000000000000000000000000000000000000000000000000000000000 -10111010000000000000000000000000000000000000000000000000000000000 -10000010000000000000000000000000000000000000000000000000000000000 -11111110000000000000000000000000000000000000000000000000000000000 diff --git a/mpdf/qrcode/data/qrvfr13.dat b/mpdf/qrcode/data/qrvfr13.dat deleted file mode 100644 index 16a111f..0000000 --- a/mpdf/qrcode/data/qrvfr13.dat +++ /dev/null @@ -1,69 +0,0 @@ -111111100000000000000000000000000000000000000000000000000011101111111 -100000100000000000000000000000000000000000000000000000000000001000001 -101110100000000000000000000000000000000000000000000000000010001011101 -101110100000000000000000000000000000000000000000000000000000101011101 -101110100000000000000000000000001111100000000000000000000010101011101 -100000100000000000000000000000001000100000000000000000000010001000001 -111111101010101010101010101010101010101010101010101010101010101111111 -000000000000000000000000000000001000100000000000000000000000000000000 -000000100000000000000000000000001111100000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000 -000011111000000000000000000000001111100000000000000000000000111110000 -000010001000000000000000000000001000100000000000000000000000100010000 -000010101000000000000000000000001010100000000000000000000000101010000 -000010001000000000000000000000001000100000000000000000000000100010000 -000011111000000000000000000000001111100000000000000000000000111110000 -000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000 -101011100000000000000000000000000000000000000000000000000000000000000 -100000000000000000000000000000000000000000000000000000000000000000000 -100110100000000000000000000000001111100000000000000000000000111110000 -000000001000000000000000000000001000100000000000000000000000100010000 -111111100000000000000000000000001010100000000000000000000000101010000 -100000100000000000000000000000001000100000000000000000000000100010000 -101110100000000000000000000000001111100000000000000000000000111110000 -101110100000000000000000000000000000000000000000000000000000000000000 -101110100000000000000000000000000000000000000000000000000000000000000 -100000100000000000000000000000000000000000000000000000000000000000000 -111111100000000000000000000000000000000000000000000000000000000000000 diff --git a/mpdf/qrcode/data/qrvfr14.dat b/mpdf/qrcode/data/qrvfr14.dat deleted file mode 100644 index 8b15012..0000000 --- a/mpdf/qrcode/data/qrvfr14.dat +++ /dev/null @@ -1,73 +0,0 @@ -1111111000000000000000000000000000000000000000000000000000000010101111111 -1000001000000000000000000000000000000000000000000000000000000010001000001 -1011101000000000000000000000000000000000000000000000000000000000001011101 -1011101000000000000000000000000000000000000000000000000000000011001011101 -1011101000000000000000001111100000000000000011111000000000000001101011101 -1000001000000000000000001000100000000000000010001000000000000010001000001 -1111111010101010101010101010101010101010101010101010101010101010101111111 -0000000000000000000000001000100000000000000010001000000000000000000000000 -0000001000000000000000001111100000000000000011111000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000 -0000111110000000000000001111100000000000000011111000000000000000111110000 -0000100010000000000000001000100000000000000010001000000000000000100010000 -0000101010000000000000001010100000000000000010101000000000000000101010000 -0000100010000000000000001000100000000000000010001000000000000000100010000 -0000111110000000000000001111100000000000000011111000000000000000111110000 -0000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000 -0000111110000000000000001111100000000000000011111000000000000000111110000 -0000100010000000000000001000100000000000000010001000000000000000100010000 -0000101010000000000000001010100000000000000010101000000000000000101010000 -0000100010000000000000001000100000000000000010001000000000000000100010000 -0000111110000000000000001111100000000000000011111000000000000000111110000 -0000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000 -1101011000000000000000000000000000000000000000000000000000000000000000000 -0001100000000000000000000000000000000000000000000000000000000000000000000 -1000101000000000000000001111100000000000000011111000000000000000111110000 -0000000010000000000000001000100000000000000010001000000000000000100010000 -1111111000000000000000001010100000000000000010101000000000000000101010000 -1000001000000000000000001000100000000000000010001000000000000000100010000 -1011101000000000000000001111100000000000000011111000000000000000111110000 -1011101000000000000000000000000000000000000000000000000000000000000000000 -1011101000000000000000000000000000000000000000000000000000000000000000000 -1000001000000000000000000000000000000000000000000000000000000000000000000 -1111111000000000000000000000000000000000000000000000000000000000000000000 diff --git a/mpdf/qrcode/data/qrvfr15.dat b/mpdf/qrcode/data/qrvfr15.dat deleted file mode 100644 index ab8232d..0000000 --- a/mpdf/qrcode/data/qrvfr15.dat +++ /dev/null @@ -1,77 +0,0 @@ -11111110000000000000000000000000000000000000000000000000000000000000001111111 -10000010000000000000000000000000000000000000000000000000000000000010101000001 -10111010000000000000000000000000000000000000000000000000000000000000101011101 -10111010000000000000000000000000000000000000000000000000000000000000101011101 -10111010000000000000000011111000000000000000001111100000000000000011101011101 -10000010000000000000000010001000000000000000001000100000000000000010001000001 -11111110101010101010101010101010101010101010101010101010101010101010101111111 -00000000000000000000000010001000000000000000001000100000000000000000000000000 -00000010000000000000000011111000000000000000001111100000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000 -00001111100000000000000011111000000000000000001111100000000000000000111110000 -00001000100000000000000010001000000000000000001000100000000000000000100010000 -00001010100000000000000010101000000000000000001010100000000000000000101010000 -00001000100000000000000010001000000000000000001000100000000000000000100010000 -00001111100000000000000011111000000000000000001111100000000000000000111110000 -00000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000 -00001111100000000000000011111000000000000000001111100000000000000000111110000 -00001000100000000000000010001000000000000000001000100000000000000000100010000 -00001010100000000000000010101000000000000000001010100000000000000000101010000 -00001000100000000000000010001000000000000000001000100000000000000000100010000 -00001111100000000000000011111000000000000000001111100000000000000000111110000 -00000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000 -01001110000000000000000000000000000000000000000000000000000000000000000000000 -00001000000000000000000000000000000000000000000000000000000000000000000000000 -01111010000000000000000011111000000000000000001111100000000000000000111110000 -00000000100000000000000010001000000000000000001000100000000000000000100010000 -11111110000000000000000010101000000000000000001010100000000000000000101010000 -10000010000000000000000010001000000000000000001000100000000000000000100010000 -10111010000000000000000011111000000000000000001111100000000000000000111110000 -10111010000000000000000000000000000000000000000000000000000000000000000000000 -10111010000000000000000000000000000000000000000000000000000000000000000000000 -10000010000000000000000000000000000000000000000000000000000000000000000000000 -11111110000000000000000000000000000000000000000000000000000000000000000000000 diff --git a/mpdf/qrcode/data/qrvfr16.dat b/mpdf/qrcode/data/qrvfr16.dat deleted file mode 100644 index 04edd07..0000000 --- a/mpdf/qrcode/data/qrvfr16.dat +++ /dev/null @@ -1,81 +0,0 @@ -111111100000000000000000000000000000000000000000000000000000000000000000001111111 -100000100000000000000000000000000000000000000000000000000000000000000011101000001 -101110100000000000000000000000000000000000000000000000000000000000000010101011101 -101110100000000000000000000000000000000000000000000000000000000000000010101011101 -101110100000000000000000111110000000000000000000111110000000000000000000001011101 -100000100000000000000000100010000000000000000000100010000000000000000001001000001 -111111101010101010101010101010101010101010101010101010101010101010101010101111111 -000000000000000000000000100010000000000000000000100010000000000000000000000000000 -000000100000000000000000111110000000000000000000111110000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000011111000000000000000111110000000000000000000111110000000000000000000111110000 -000010001000000000000000100010000000000000000000100010000000000000000000100010000 -000010101000000000000000101010000000000000000000101010000000000000000000101010000 -000010001000000000000000100010000000000000000000100010000000000000000000100010000 -000011111000000000000000111110000000000000000000111110000000000000000000111110000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000011111000000000000000111110000000000000000000111110000000000000000000111110000 -000010001000000000000000100010000000000000000000100010000000000000000000100010000 -000010101000000000000000101010000000000000000000101010000000000000000000101010000 -000010001000000000000000100010000000000000000000100010000000000000000000100010000 -000011111000000000000000111110000000000000000000111110000000000000000000111110000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000 -011100100000000000000000000000000000000000000000000000000000000000000000000000000 -010001000000000000000000000000000000000000000000000000000000000000000000000000000 -011100100000000000000000111110000000000000000000111110000000000000000000111110000 -000000001000000000000000100010000000000000000000100010000000000000000000100010000 -111111100000000000000000101010000000000000000000101010000000000000000000101010000 -100000100000000000000000100010000000000000000000100010000000000000000000100010000 -101110100000000000000000111110000000000000000000111110000000000000000000111110000 -101110100000000000000000000000000000000000000000000000000000000000000000000000000 -101110100000000000000000000000000000000000000000000000000000000000000000000000000 -100000100000000000000000000000000000000000000000000000000000000000000000000000000 -111111100000000000000000000000000000000000000000000000000000000000000000000000000 diff --git a/mpdf/qrcode/data/qrvfr17.dat b/mpdf/qrcode/data/qrvfr17.dat deleted file mode 100644 index 41d0011..0000000 --- a/mpdf/qrcode/data/qrvfr17.dat +++ /dev/null @@ -1,85 +0,0 @@ -1111111000000000000000000000000000000000000000000000000000000000000000000010101111111 -1000001000000000000000000000000000000000000000000000000000000000000000000011001000001 -1011101000000000000000000000000000000000000000000000000000000000000000000010001011101 -1011101000000000000000000000000000000000000000000000000000000000000000000001001011101 -1011101000000000000000000000111110000000000000000000111110000000000000000010001011101 -1000001000000000000000000000100010000000000000000000100010000000000000000001001000001 -1111111010101010101010101010101010101010101010101010101010101010101010101010101111111 -0000000000000000000000000000100010000000000000000000100010000000000000000000000000000 -0000001000000000000000000000111110000000000000000000111110000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -0000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -0000101010000000000000000000101010000000000000000000101010000000000000000000101010000 -0000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -0000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -0000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -0000101010000000000000000000101010000000000000000000101010000000000000000000101010000 -0000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -0000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -1110101000000000000000000000000000000000000000000000000000000000000000000000000000000 -0101010000000000000000000000000000000000000000000000000000000000000000000000000000000 -1000001000000000000000000000111110000000000000000000111110000000000000000000111110000 -0000000010000000000000000000100010000000000000000000100010000000000000000000100010000 -1111111000000000000000000000101010000000000000000000101010000000000000000000101010000 -1000001000000000000000000000100010000000000000000000100010000000000000000000100010000 -1011101000000000000000000000111110000000000000000000111110000000000000000000111110000 -1011101000000000000000000000000000000000000000000000000000000000000000000000000000000 -1011101000000000000000000000000000000000000000000000000000000000000000000000000000000 -1000001000000000000000000000000000000000000000000000000000000000000000000000000000000 -1111111000000000000000000000000000000000000000000000000000000000000000000000000000000 diff --git a/mpdf/qrcode/data/qrvfr18.dat b/mpdf/qrcode/data/qrvfr18.dat deleted file mode 100644 index d5e513e..0000000 --- a/mpdf/qrcode/data/qrvfr18.dat +++ /dev/null @@ -1,89 +0,0 @@ -11111110000000000000000000000000000000000000000000000000000000000000000000000011101111111 -10000010000000000000000000000000000000000000000000000000000000000000000000000001001000001 -10111010000000000000000000000000000000000000000000000000000000000000000000000000001011101 -10111010000000000000000000000000000000000000000000000000000000000000000000000010101011101 -10111010000000000000000000001111100000000000000000000011111000000000000000000001001011101 -10000010000000000000000000001000100000000000000000000010001000000000000000000001001000001 -11111110101010101010101010101010101010101010101010101010101010101010101010101010101111111 -00000000000000000000000000001000100000000000000000000010001000000000000000000000000000000 -00000010000000000000000000001111100000000000000000000011111000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00001111100000000000000000001111100000000000000000000011111000000000000000000000111110000 -00001000100000000000000000001000100000000000000000000010001000000000000000000000100010000 -00001010100000000000000000001010100000000000000000000010101000000000000000000000101010000 -00001000100000000000000000001000100000000000000000000010001000000000000000000000100010000 -00001111100000000000000000001111100000000000000000000011111000000000000000000000111110000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00001111100000000000000000001111100000000000000000000011111000000000000000000000111110000 -00001000100000000000000000001000100000000000000000000010001000000000000000000000100010000 -00001010100000000000000000001010100000000000000000000010101000000000000000000000101010000 -00001000100000000000000000001000100000000000000000000010001000000000000000000000100010000 -00001111100000000000000000001111100000000000000000000011111000000000000000000000111110000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -10010010000000000000000000000000000000000000000000000000000000000000000000000000000000000 -11001100000000000000000000000000000000000000000000000000000000000000000000000000000000000 -10010010000000000000000000001111100000000000000000000011111000000000000000000000111110000 -00000000100000000000000000001000100000000000000000000010001000000000000000000000100010000 -11111110000000000000000000001010100000000000000000000010101000000000000000000000101010000 -10000010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -10111010000000000000000000001111100000000000000000000011111000000000000000000000111110000 -10111010000000000000000000000000000000000000000000000000000000000000000000000000000000000 -10111010000000000000000000000000000000000000000000000000000000000000000000000000000000000 -10000010000000000000000000000000000000000000000000000000000000000000000000000000000000000 -11111110000000000000000000000000000000000000000000000000000000000000000000000000000000000 diff --git a/mpdf/qrcode/data/qrvfr19.dat b/mpdf/qrcode/data/qrvfr19.dat deleted file mode 100644 index bd42051..0000000 --- a/mpdf/qrcode/data/qrvfr19.dat +++ /dev/null @@ -1,93 +0,0 @@ -111111100000000000000000000000000000000000000000000000000000000000000000000000000001001111111 -100000100000000000000000000000000000000000000000000000000000000000000000000000000001101000001 -101110100000000000000000000000000000000000000000000000000000000000000000000000000000101011101 -101110100000000000000000000000000000000000000000000000000000000000000000000000000001001011101 -101110100000000000000000000011111000000000000000000000001111100000000000000000000011001011101 -100000100000000000000000000010001000000000000000000000001000100000000000000000000001001000001 -111111101010101010101010101010101010101010101010101010101010101010101010101010101010101111111 -000000000000000000000000000010001000000000000000000000001000100000000000000000000000000000000 -000000100000000000000000000011111000000000000000000000001111100000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000011111000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -000010001000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -000010101000000000000000000010101000000000000000000000001010100000000000000000000000101010000 -000010001000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -000011111000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000011111000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -000010001000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -000010101000000000000000000010101000000000000000000000001010100000000000000000000000101010000 -000010001000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -000011111000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -110111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -011000100000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -000000001000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -111111100000000000000000000010101000000000000000000000001010100000000000000000000000101010000 -100000100000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -101110100000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -101110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -101110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -100000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000 diff --git a/mpdf/qrcode/data/qrvfr2.dat b/mpdf/qrcode/data/qrvfr2.dat deleted file mode 100644 index bdb0a60..0000000 --- a/mpdf/qrcode/data/qrvfr2.dat +++ /dev/null @@ -1,25 +0,0 @@ -1111111000000000001111111 -1000001000000000001000001 -1011101000000000001011101 -1011101000000000001011101 -1011101000000000001011101 -1000001000000000001000001 -1111111010101010101111111 -0000000000000000000000000 -0000001000000000000000000 -0000000000000000000000000 -0000001000000000000000000 -0000000000000000000000000 -0000001000000000000000000 -0000000000000000000000000 -0000001000000000000000000 -0000000000000000000000000 -0000001000000000111110000 -0000000010000000100010000 -1111111000000000101010000 -1000001000000000100010000 -1011101000000000111110000 -1011101000000000000000000 -1011101000000000000000000 -1000001000000000000000000 -1111111000000000000000000 diff --git a/mpdf/qrcode/data/qrvfr20.dat b/mpdf/qrcode/data/qrvfr20.dat deleted file mode 100644 index de93b4e..0000000 --- a/mpdf/qrcode/data/qrvfr20.dat +++ /dev/null @@ -1,97 +0,0 @@ -1111111000000000000000000000000000000000000000000000000000000000000000000000000000000001101111111 -1000001000000000000000000000000000000000000000000000000000000000000000000000000000000000101000001 -1011101000000000000000000000000000000000000000000000000000000000000000000000000000000001101011101 -1011101000000000000000000000000000000000000000000000000000000000000000000000000000000000101011101 -1011101000000000000000000000000011111000000000000000000000001111100000000000000000000000101011101 -1000001000000000000000000000000010001000000000000000000000001000100000000000000000000001001000001 -1111111010101010101010101010101010101010101010101010101010101010101010101010101010101010101111111 -0000000000000000000000000000000010001000000000000000000000001000100000000000000000000000000000000 -0000001000000000000000000000000011111000000000000000000000001111100000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -0000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -0000101010000000000000000000000010101000000000000000000000001010100000000000000000000000101010000 -0000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -0000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -0000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -0000101010000000000000000000000010101000000000000000000000001010100000000000000000000000101010000 -0000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -0000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -1010010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -1111101000000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -0000000010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -1111111000000000000000000000000010101000000000000000000000001010100000000000000000000000101010000 -1000001000000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -1011101000000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -1011101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -1011101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -1000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -1111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 diff --git a/mpdf/qrcode/data/qrvfr21.dat b/mpdf/qrcode/data/qrvfr21.dat deleted file mode 100644 index 830f6e0..0000000 --- a/mpdf/qrcode/data/qrvfr21.dat +++ /dev/null @@ -1,101 +0,0 @@ -11111110000000000000000000000000000000000000000000000000000000000000000000000000000000000011001111111 -10000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001 -10111010000000000000000000000000000000000000000000000000000000000000000000000000000000000001001011101 -10111010000000000000000000000000000000000000000000000000000000000000000000000000000000000011001011101 -10111010000000000000000000111110000000000000000011111000000000000000001111100000000000000010101011101 -10000010000000000000000000100010000000000000000010001000000000000000001000100000000000000001001000001 -11111110101010101010101010101010101010101010101010101010101010101010101010101010101010101010101111111 -00000000000000000000000000100010000000000000000010001000000000000000001000100000000000000000000000000 -00000010000000000000000000111110000000000000000011111000000000000000001111100000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00001111100000000000000000111110000000000000000011111000000000000000001111100000000000000000111110000 -00001000100000000000000000100010000000000000000010001000000000000000001000100000000000000000100010000 -00001010100000000000000000101010000000000000000010101000000000000000001010100000000000000000101010000 -00001000100000000000000000100010000000000000000010001000000000000000001000100000000000000000100010000 -00001111100000000000000000111110000000000000000011111000000000000000001111100000000000000000111110000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00001111100000000000000000111110000000000000000011111000000000000000001111100000000000000000111110000 -00001000100000000000000000100010000000000000000010001000000000000000001000100000000000000000100010000 -00001010100000000000000000101010000000000000000010101000000000000000001010100000000000000000101010000 -00001000100000000000000000100010000000000000000010001000000000000000001000100000000000000000100010000 -00001111100000000000000000111110000000000000000011111000000000000000001111100000000000000000111110000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00001111100000000000000000111110000000000000000011111000000000000000001111100000000000000000111110000 -00001000100000000000000000100010000000000000000010001000000000000000001000100000000000000000100010000 -00001010100000000000000000101010000000000000000010101000000000000000001010100000000000000000101010000 -00001000100000000000000000100010000000000000000010001000000000000000001000100000000000000000100010000 -00001111100000000000000000111110000000000000000011111000000000000000001111100000000000000000111110000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -10011010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -10110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00001010000000000000000000111110000000000000000011111000000000000000001111100000000000000000111110000 -00000000100000000000000000100010000000000000000010001000000000000000001000100000000000000000100010000 -11111110000000000000000000101010000000000000000010101000000000000000001010100000000000000000101010000 -10000010000000000000000000100010000000000000000010001000000000000000001000100000000000000000100010000 -10111010000000000000000000111110000000000000000011111000000000000000001111100000000000000000111110000 -10111010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -10111010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -10000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -11111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 diff --git a/mpdf/qrcode/data/qrvfr22.dat b/mpdf/qrcode/data/qrvfr22.dat deleted file mode 100644 index d2f2861..0000000 --- a/mpdf/qrcode/data/qrvfr22.dat +++ /dev/null @@ -1,105 +0,0 @@ -111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001111111 -100000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001000001 -101110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000011001011101 -101110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101011101 -101110100000000000000000111110000000000000000000111110000000000000000000111110000000000000000001101011101 -100000100000000000000000100010000000000000000000100010000000000000000000100010000000000000000001001000001 -111111101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101111111 -000000000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000000000000 -000000100000000000000000111110000000000000000000111110000000000000000000111110000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000011111000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -000010001000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -000010101000000000000000101010000000000000000000101010000000000000000000101010000000000000000000101010000 -000010001000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -000011111000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000011111000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -000010001000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -000010101000000000000000101010000000000000000000101010000000000000000000101010000000000000000000101010000 -000010001000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -000011111000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000011111000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -000010001000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -000010101000000000000000101010000000000000000000101010000000000000000000101010000000000000000000101010000 -000010001000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -000011111000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -111000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -001011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000110100000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -000000001000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -111111100000000000000000101010000000000000000000101010000000000000000000101010000000000000000000101010000 -100000100000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -101110100000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -101110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -101110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -100000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 diff --git a/mpdf/qrcode/data/qrvfr23.dat b/mpdf/qrcode/data/qrvfr23.dat deleted file mode 100644 index 7d08b5b..0000000 --- a/mpdf/qrcode/data/qrvfr23.dat +++ /dev/null @@ -1,109 +0,0 @@ -1111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101111111 -1000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010101000001 -1011101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011101011101 -1011101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011001011101 -1011101000000000000000000000111110000000000000000000111110000000000000000000111110000000000000000011101011101 -1000001000000000000000000000100010000000000000000000100010000000000000000000100010000000000000000001001000001 -1111111010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101111111 -0000000000000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000000000000 -0000001000000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -0000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -0000101010000000000000000000101010000000000000000000101010000000000000000000101010000000000000000000101010000 -0000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -0000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -0000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -0000101010000000000000000000101010000000000000000000101010000000000000000000101010000000000000000000101010000 -0000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -0000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -0000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -0000101010000000000000000000101010000000000000000000101010000000000000000000101010000000000000000000101010000 -0000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -0000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0111101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -1110101000000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -0000000010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -1111111000000000000000000000101010000000000000000000101010000000000000000000101010000000000000000000101010000 -1000001000000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -1011101000000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -1011101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -1011101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -1000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -1111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 diff --git a/mpdf/qrcode/data/qrvfr24.dat b/mpdf/qrcode/data/qrvfr24.dat deleted file mode 100644 index b418221..0000000 --- a/mpdf/qrcode/data/qrvfr24.dat +++ /dev/null @@ -1,113 +0,0 @@ -11111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101111111 -10000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001 -10111010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011001011101 -10111010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011101011101 -10111010000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000001011101 -10000010000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000011001000001 -11111110101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101111111 -00000000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000000000000 -00000010000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00001111100000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -00001000100000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -00001010100000000000000000101010000000000000000000001010100000000000000000000010101000000000000000000000101010000 -00001000100000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -00001111100000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00001111100000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -00001000100000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -00001010100000000000000000101010000000000000000000001010100000000000000000000010101000000000000000000000101010000 -00001000100000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -00001111100000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00001111100000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -00001000100000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -00001010100000000000000000101010000000000000000000001010100000000000000000000010101000000000000000000000101010000 -00001000100000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -00001111100000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -10010010000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -00000000100000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -11111110000000000000000000101010000000000000000000001010100000000000000000000010101000000000000000000000101010000 -10000010000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -10111010000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -10111010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -10111010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -10000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -11111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 diff --git a/mpdf/qrcode/data/qrvfr25.dat b/mpdf/qrcode/data/qrvfr25.dat deleted file mode 100644 index 0386cf1..0000000 --- a/mpdf/qrcode/data/qrvfr25.dat +++ /dev/null @@ -1,117 +0,0 @@ -111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001111111 -100000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101000001 -101110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011101011101 -101110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001011101 -101110100000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000010001011101 -100000100000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000011001000001 -111111101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101111111 -000000000000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000000000000 -000000100000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -000010101000000000000000000000101010000000000000000000001010100000000000000000000010101000000000000000000000101010000 -000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -000010101000000000000000000000101010000000000000000000001010100000000000000000000010101000000000000000000000101010000 -000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -000010101000000000000000000000101010000000000000000000001010100000000000000000000010101000000000000000000000101010000 -000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -101011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -001001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -011000100000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -000000001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -111111100000000000000000000000101010000000000000000000001010100000000000000000000010101000000000000000000000101010000 -100000100000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -101110100000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -101110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -101110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -100000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 diff --git a/mpdf/qrcode/data/qrvfr26.dat b/mpdf/qrcode/data/qrvfr26.dat deleted file mode 100644 index 09a680c..0000000 --- a/mpdf/qrcode/data/qrvfr26.dat +++ /dev/null @@ -1,121 +0,0 @@ -1111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011001111111 -1000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010101000001 -1011101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001101011101 -1011101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011101011101 -1011101000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000001001011101 -1000001000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000011001000001 -1111111010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101111111 -0000000000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000000000000 -0000001000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000111110000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -0000100010000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -0000101010000000000000000000101010000000000000000000000010101000000000000000000000001010100000000000000000000000101010000 -0000100010000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -0000111110000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000111110000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -0000100010000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -0000101010000000000000000000101010000000000000000000000010101000000000000000000000001010100000000000000000000000101010000 -0000100010000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -0000111110000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000111110000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -0000100010000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -0000101010000000000000000000101010000000000000000000000010101000000000000000000000001010100000000000000000000000101010000 -0000100010000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -0000111110000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -1101011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -1011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0111001000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -0000000010000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -1111111000000000000000000000101010000000000000000000000010101000000000000000000000001010100000000000000000000000101010000 -1000001000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -1011101000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -1011101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -1011101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -1000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -1111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 diff --git a/mpdf/qrcode/data/qrvfr27.dat b/mpdf/qrcode/data/qrvfr27.dat deleted file mode 100644 index 36fd3dc..0000000 --- a/mpdf/qrcode/data/qrvfr27.dat +++ /dev/null @@ -1,125 +0,0 @@ -11111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001101111111 -10000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001000001 -10111010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001011101 -10111010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001011101 -10111010000000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000011001011101 -10000010000000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000011001000001 -11111110101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101111111 -00000000000000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000000000000 -00000010000000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -00001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -00001010100000000000000000000000101010000000000000000000000010101000000000000000000000001010100000000000000000000000101010000 -00001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -00001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -00001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -00001010100000000000000000000000101010000000000000000000000010101000000000000000000000001010100000000000000000000000101010000 -00001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -00001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -00001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -00001010100000000000000000000000101010000000000000000000000010101000000000000000000000001010100000000000000000000000101010000 -00001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -00001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -01001110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -10101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -10000010000000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -00000000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -11111110000000000000000000000000101010000000000000000000000010101000000000000000000000001010100000000000000000000000101010000 -10000010000000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -10111010000000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -10111010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -10111010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -10000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -11111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 diff --git a/mpdf/qrcode/data/qrvfr28.dat b/mpdf/qrcode/data/qrvfr28.dat deleted file mode 100644 index 711dfb7..0000000 --- a/mpdf/qrcode/data/qrvfr28.dat +++ /dev/null @@ -1,129 +0,0 @@ -111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001111111 -100000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011001000001 -101110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001011101 -101110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001101011101 -101110100000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000101011101 -100000100000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000011001000001 -111111101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101111111 -000000000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000000000000 -000000100000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000011111000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -000010001000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -000010101000000000000000101010000000000000000000101010000000000000000000101010000000000000000000101010000000000000000000101010000 -000010001000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -000011111000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000011111000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -000010001000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -000010101000000000000000101010000000000000000000101010000000000000000000101010000000000000000000101010000000000000000000101010000 -000010001000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -000011111000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000011111000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -000010001000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -000010101000000000000000101010000000000000000000101010000000000000000000101010000000000000000000101010000000000000000000101010000 -000010001000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -000011111000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000011111000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -000010001000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -000010101000000000000000101010000000000000000000101010000000000000000000101010000000000000000000101010000000000000000000101010000 -000010001000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -000011111000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -010001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -110101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000110100000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -000000001000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -111111100000000000000000101010000000000000000000101010000000000000000000101010000000000000000000101010000000000000000000101010000 -100000100000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -101110100000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -101110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -101110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -100000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 diff --git a/mpdf/qrcode/data/qrvfr29.dat b/mpdf/qrcode/data/qrvfr29.dat deleted file mode 100644 index f42a10a..0000000 --- a/mpdf/qrcode/data/qrvfr29.dat +++ /dev/null @@ -1,133 +0,0 @@ -1111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011101111111 -1000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011101000001 -1011101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101011101 -1011101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001011101 -1011101000000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000010101011101 -1000001000000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000011001000001 -1111111010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101111111 -0000000000000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000000000000 -0000001000000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -0000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -0000101010000000000000000000101010000000000000000000101010000000000000000000101010000000000000000000101010000000000000000000101010000 -0000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -0000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -0000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -0000101010000000000000000000101010000000000000000000101010000000000000000000101010000000000000000000101010000000000000000000101010000 -0000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -0000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -0000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -0000101010000000000000000000101010000000000000000000101010000000000000000000101010000000000000000000101010000000000000000000101010000 -0000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -0000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -0000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -0000101010000000000000000000101010000000000000000000101010000000000000000000101010000000000000000000101010000000000000000000101010000 -0000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -0000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -1101111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -1100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -1110101000000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -0000000010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -1111111000000000000000000000101010000000000000000000101010000000000000000000101010000000000000000000101010000000000000000000101010000 -1000001000000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -1011101000000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -1011101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -1011101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -1000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -1111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 diff --git a/mpdf/qrcode/data/qrvfr3.dat b/mpdf/qrcode/data/qrvfr3.dat deleted file mode 100644 index 6052b4a..0000000 --- a/mpdf/qrcode/data/qrvfr3.dat +++ /dev/null @@ -1,29 +0,0 @@ -11111110000000000000001111111 -10000010000000000000001000001 -10111010000000000000001011101 -10111010000000000000001011101 -10111010000000000000001011101 -10000010000000000000001000001 -11111110101010101010101111111 -00000000000000000000000000000 -00000010000000000000000000000 -00000000000000000000000000000 -00000010000000000000000000000 -00000000000000000000000000000 -00000010000000000000000000000 -00000000000000000000000000000 -00000010000000000000000000000 -00000000000000000000000000000 -00000010000000000000000000000 -00000000000000000000000000000 -00000010000000000000000000000 -00000000000000000000000000000 -00000010000000000000111110000 -00000000100000000000100010000 -11111110000000000000101010000 -10000010000000000000100010000 -10111010000000000000111110000 -10111010000000000000000000000 -10111010000000000000000000000 -10000010000000000000000000000 -11111110000000000000000000000 diff --git a/mpdf/qrcode/data/qrvfr30.dat b/mpdf/qrcode/data/qrvfr30.dat deleted file mode 100644 index 5d76142..0000000 --- a/mpdf/qrcode/data/qrvfr30.dat +++ /dev/null @@ -1,137 +0,0 @@ -11111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010101111111 -10000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001101000001 -10111010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010101011101 -10111010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001101011101 -10111010000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000001101011101 -10000010000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000011001000001 -11111110101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101111111 -00000000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000000000000 -00000010000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00001111100000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -00001000100000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -00001010100000000000000010101000000000000000000000101010000000000000000000001010100000000000000000000010101000000000000000000000101010000 -00001000100000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -00001111100000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00001111100000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -00001000100000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -00001010100000000000000010101000000000000000000000101010000000000000000000001010100000000000000000000010101000000000000000000000101010000 -00001000100000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -00001111100000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00001111100000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -00001000100000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -00001010100000000000000010101000000000000000000000101010000000000000000000001010100000000000000000000010101000000000000000000000101010000 -00001000100000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -00001111100000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00001111100000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -00001000100000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -00001010100000000000000010101000000000000000000000101010000000000000000000001010100000000000000000000010101000000000000000000000101010000 -00001000100000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -00001111100000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -10100110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -01011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -11111010000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -00000000100000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -11111110000000000000000010101000000000000000000000101010000000000000000000001010100000000000000000000010101000000000000000000000101010000 -10000010000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -10111010000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -10111010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -10111010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -10000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -11111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 diff --git a/mpdf/qrcode/data/qrvfr31.dat b/mpdf/qrcode/data/qrvfr31.dat deleted file mode 100644 index 0028f54..0000000 --- a/mpdf/qrcode/data/qrvfr31.dat +++ /dev/null @@ -1,141 +0,0 @@ -111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111 -100000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001000001 -101110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001011101 -101110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001011101 -101110100000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000011101011101 -100000100000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000011001000001 -111111101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101111111 -000000000000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000000000000 -000000100000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000011111000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -000010001000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -000010101000000000000000000010101000000000000000000000101010000000000000000000001010100000000000000000000010101000000000000000000000101010000 -000010001000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -000011111000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000011111000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -000010001000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -000010101000000000000000000010101000000000000000000000101010000000000000000000001010100000000000000000000010101000000000000000000000101010000 -000010001000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -000011111000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000011111000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -000010001000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -000010101000000000000000000010101000000000000000000000101010000000000000000000001010100000000000000000000010101000000000000000000000101010000 -000010001000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -000011111000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000011111000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -000010001000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -000010101000000000000000000010101000000000000000000000101010000000000000000000001010100000000000000000000010101000000000000000000000101010000 -000010001000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -000011111000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -001111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -010011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000010100000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -000000001000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -111111100000000000000000000010101000000000000000000000101010000000000000000000001010100000000000000000000010101000000000000000000000101010000 -100000100000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -101110100000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -101110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -101110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -100000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 diff --git a/mpdf/qrcode/data/qrvfr32.dat b/mpdf/qrcode/data/qrvfr32.dat deleted file mode 100644 index 2d26d15..0000000 --- a/mpdf/qrcode/data/qrvfr32.dat +++ /dev/null @@ -1,145 +0,0 @@ -1111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010101111111 -1000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001000001 -1011101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011101011101 -1011101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101011101 -1011101000000000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000001011101 -1000001000000000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000101000001 -1111111010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101111111 -0000000000000000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000000000000 -0000001000000000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000111110000000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -0000100010000000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -0000101010000000000000000000000010101000000000000000000000101010000000000000000000001010100000000000000000000010101000000000000000000000101010000 -0000100010000000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -0000111110000000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000111110000000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -0000100010000000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -0000101010000000000000000000000010101000000000000000000000101010000000000000000000001010100000000000000000000010101000000000000000000000101010000 -0000100010000000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -0000111110000000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000111110000000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -0000100010000000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -0000101010000000000000000000000010101000000000000000000000101010000000000000000000001010100000000000000000000010101000000000000000000000101010000 -0000100010000000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -0000111110000000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000111110000000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -0000100010000000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -0000101010000000000000000000000010101000000000000000000000101010000000000000000000001010100000000000000000000010101000000000000000000000101010000 -0000100010000000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -0000111110000000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -1010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -1011011000000000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -0000000010000000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -1111111000000000000000000000000010101000000000000000000000101010000000000000000000001010100000000000000000000010101000000000000000000000101010000 -1000001000000000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -1011101000000000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -1011101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -1011101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -1000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -1111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 diff --git a/mpdf/qrcode/data/qrvfr33.dat b/mpdf/qrcode/data/qrvfr33.dat deleted file mode 100644 index eac0964..0000000 --- a/mpdf/qrcode/data/qrvfr33.dat +++ /dev/null @@ -1,149 +0,0 @@ -11111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111 -10000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001101000001 -10111010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011001011101 -10111010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011001011101 -10111010000000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000010001011101 -10000010000000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000101000001 -11111110101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101111111 -00000000000000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000000000000 -00000010000000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00001111100000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -00001000100000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -00001010100000000000000000001010100000000000000000000000101010000000000000000000000010101000000000000000000000001010100000000000000000000000101010000 -00001000100000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -00001111100000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00001111100000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -00001000100000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -00001010100000000000000000001010100000000000000000000000101010000000000000000000000010101000000000000000000000001010100000000000000000000000101010000 -00001000100000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -00001111100000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00001111100000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -00001000100000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -00001010100000000000000000001010100000000000000000000000101010000000000000000000000010101000000000000000000000001010100000000000000000000000101010000 -00001000100000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -00001111100000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00001111100000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -00001000100000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -00001010100000000000000000001010100000000000000000000000101010000000000000000000000010101000000000000000000000001010100000000000000000000000101010000 -00001000100000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -00001111100000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00111010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -01110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -01000110000000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -00000000100000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -11111110000000000000000000001010100000000000000000000000101010000000000000000000000010101000000000000000000000001010100000000000000000000000101010000 -10000010000000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -10111010000000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -10111010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -10111010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -10000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -11111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 diff --git a/mpdf/qrcode/data/qrvfr34.dat b/mpdf/qrcode/data/qrvfr34.dat deleted file mode 100644 index 8b09e2c..0000000 --- a/mpdf/qrcode/data/qrvfr34.dat +++ /dev/null @@ -1,153 +0,0 @@ -111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001111111 -100000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011101000001 -101110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001011101 -101110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101011101 -101110100000000000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000001001011101 -100000100000000000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000101000001 -111111101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101111111 -000000000000000000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000000000000 -000000100000000000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000011111000000000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -000010001000000000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -000010101000000000000000000000001010100000000000000000000000101010000000000000000000000010101000000000000000000000001010100000000000000000000000101010000 -000010001000000000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -000011111000000000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000011111000000000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -000010001000000000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -000010101000000000000000000000001010100000000000000000000000101010000000000000000000000010101000000000000000000000001010100000000000000000000000101010000 -000010001000000000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -000011111000000000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000011111000000000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -000010001000000000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -000010101000000000000000000000001010100000000000000000000000101010000000000000000000000010101000000000000000000000001010100000000000000000000000101010000 -000010001000000000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -000011111000000000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000011111000000000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -000010001000000000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -000010101000000000000000000000001010100000000000000000000000101010000000000000000000000010101000000000000000000000001010100000000000000000000000101010000 -000010001000000000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -000011111000000000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -010000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -111010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -010101100000000000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -000000001000000000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -111111100000000000000000000000001010100000000000000000000000101010000000000000000000000010101000000000000000000000001010100000000000000000000000101010000 -100000100000000000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -101110100000000000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -101110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -101110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -100000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 diff --git a/mpdf/qrcode/data/qrvfr35.dat b/mpdf/qrcode/data/qrvfr35.dat deleted file mode 100644 index 82ba5bc..0000000 --- a/mpdf/qrcode/data/qrvfr35.dat +++ /dev/null @@ -1,157 +0,0 @@ -1111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011101111111 -1000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011001000001 -1011101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001101011101 -1011101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011001011101 -1011101000000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000011001011101 -1000001000000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000101000001 -1111111010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101111111 -0000000000000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000000000000 -0000001000000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -0000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -0000101010000000000000000000101010000000000000000000101010000000000000000000101010000000000000000000101010000000000000000000101010000000000000000000101010000 -0000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -0000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -0000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -0000101010000000000000000000101010000000000000000000101010000000000000000000101010000000000000000000101010000000000000000000101010000000000000000000101010000 -0000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -0000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -0000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -0000101010000000000000000000101010000000000000000000101010000000000000000000101010000000000000000000101010000000000000000000101010000000000000000000101010000 -0000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -0000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -0000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -0000101010000000000000000000101010000000000000000000101010000000000000000000101010000000000000000000101010000000000000000000101010000000000000000000101010000 -0000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -0000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -0000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -0000101010000000000000000000101010000000000000000000101010000000000000000000101010000000000000000000101010000000000000000000101010000000000000000000101010000 -0000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -0000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -1101101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -1111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -1010011000000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -0000000010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -1111111000000000000000000000101010000000000000000000101010000000000000000000101010000000000000000000101010000000000000000000101010000000000000000000101010000 -1000001000000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000000000000000000100010000 -1011101000000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000000000000000000111110000 -1011101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -1011101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -1000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -1111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 diff --git a/mpdf/qrcode/data/qrvfr36.dat b/mpdf/qrcode/data/qrvfr36.dat deleted file mode 100644 index 17f90b8..0000000 --- a/mpdf/qrcode/data/qrvfr36.dat +++ /dev/null @@ -1,161 +0,0 @@ -11111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011001111111 -10000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001000001 -10111010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101011101 -10111010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010101011101 -10111010000000000000001111100000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000101011101 -10000010000000000000001000100000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000101000001 -11111110101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101111111 -00000000000000000000001000100000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000000000000 -00000010000000000000001111100000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00001111100000000000001111100000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -00001000100000000000001000100000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -00001010100000000000001010100000000000000000000010101000000000000000000000101010000000000000000000001010100000000000000000000010101000000000000000000000101010000 -00001000100000000000001000100000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -00001111100000000000001111100000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00001111100000000000001111100000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -00001000100000000000001000100000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -00001010100000000000001010100000000000000000000010101000000000000000000000101010000000000000000000001010100000000000000000000010101000000000000000000000101010000 -00001000100000000000001000100000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -00001111100000000000001111100000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00001111100000000000001111100000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -00001000100000000000001000100000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -00001010100000000000001010100000000000000000000010101000000000000000000000101010000000000000000000001010100000000000000000000010101000000000000000000000101010000 -00001000100000000000001000100000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -00001111100000000000001111100000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00001111100000000000001111100000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -00001000100000000000001000100000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -00001010100000000000001010100000000000000000000010101000000000000000000000101010000000000000000000001010100000000000000000000010101000000000000000000000101010000 -00001000100000000000001000100000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -00001111100000000000001111100000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00001111100000000000001111100000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -00001000100000000000001000100000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -00001010100000000000001010100000000000000000000010101000000000000000000000101010000000000000000000001010100000000000000000000010101000000000000000000000101010000 -00001000100000000000001000100000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -00001111100000000000001111100000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -11010010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00111110000000000000001111100000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -00000000100000000000001000100000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -11111110000000000000001010100000000000000000000010101000000000000000000000101010000000000000000000001010100000000000000000000010101000000000000000000000101010000 -10000010000000000000001000100000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -10111010000000000000001111100000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -10111010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -10111010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -10000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -11111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 diff --git a/mpdf/qrcode/data/qrvfr37.dat b/mpdf/qrcode/data/qrvfr37.dat deleted file mode 100644 index 8bdf9a6..0000000 --- a/mpdf/qrcode/data/qrvfr37.dat +++ /dev/null @@ -1,165 +0,0 @@ -111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001101111111 -100000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010101000001 -101110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001011101 -101110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001011101 -101110100000000000000000001111100000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000010101011101 -100000100000000000000000001000100000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000101000001 -111111101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101111111 -000000000000000000000000001000100000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000000000000 -000000100000000000000000001111100000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000011111000000000000000001111100000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -000010001000000000000000001000100000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -000010101000000000000000001010100000000000000000000010101000000000000000000000101010000000000000000000001010100000000000000000000010101000000000000000000000101010000 -000010001000000000000000001000100000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -000011111000000000000000001111100000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000011111000000000000000001111100000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -000010001000000000000000001000100000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -000010101000000000000000001010100000000000000000000010101000000000000000000000101010000000000000000000001010100000000000000000000010101000000000000000000000101010000 -000010001000000000000000001000100000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -000011111000000000000000001111100000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000011111000000000000000001111100000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -000010001000000000000000001000100000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -000010101000000000000000001010100000000000000000000010101000000000000000000000101010000000000000000000001010100000000000000000000010101000000000000000000000101010000 -000010001000000000000000001000100000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -000011111000000000000000001111100000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000011111000000000000000001111100000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -000010001000000000000000001000100000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -000010101000000000000000001010100000000000000000000010101000000000000000000000101010000000000000000000001010100000000000000000000010101000000000000000000000101010000 -000010001000000000000000001000100000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -000011111000000000000000001111100000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000011111000000000000000001111100000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -000010001000000000000000001000100000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -000010101000000000000000001010100000000000000000000010101000000000000000000000101010000000000000000000001010100000000000000000000010101000000000000000000000101010000 -000010001000000000000000001000100000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -000011111000000000000000001111100000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -010010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -110011100000000000000000001111100000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -000000001000000000000000001000100000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -111111100000000000000000001010100000000000000000000010101000000000000000000000101010000000000000000000001010100000000000000000000010101000000000000000000000101010000 -100000100000000000000000001000100000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -101110100000000000000000001111100000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -101110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -101110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -100000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 diff --git a/mpdf/qrcode/data/qrvfr38.dat b/mpdf/qrcode/data/qrvfr38.dat deleted file mode 100644 index b156abe..0000000 --- a/mpdf/qrcode/data/qrvfr38.dat +++ /dev/null @@ -1,169 +0,0 @@ -1111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101111111 -1000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101000001 -1011101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001011101 -1011101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010101011101 -1011101000000000000000000000001111100000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000001101011101 -1000001000000000000000000000001000100000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000101000001 -1111111010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101111111 -0000000000000000000000000000001000100000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000000000000 -0000001000000000000000000000001111100000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -0000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -0000101010000000000000000000001010100000000000000000000010101000000000000000000000101010000000000000000000001010100000000000000000000010101000000000000000000000101010000 -0000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -0000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -0000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -0000101010000000000000000000001010100000000000000000000010101000000000000000000000101010000000000000000000001010100000000000000000000010101000000000000000000000101010000 -0000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -0000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -0000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -0000101010000000000000000000001010100000000000000000000010101000000000000000000000101010000000000000000000001010100000000000000000000010101000000000000000000000101010000 -0000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -0000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -0000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -0000101010000000000000000000001010100000000000000000000010101000000000000000000000101010000000000000000000001010100000000000000000000010101000000000000000000000101010000 -0000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -0000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -0000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -0000101010000000000000000000001010100000000000000000000010101000000000000000000000101010000000000000000000001010100000000000000000000010101000000000000000000000101010000 -0000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -0000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -1101111000000000000000000000001111100000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -0000000010000000000000000000001000100000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -1111111000000000000000000000001010100000000000000000000010101000000000000000000000101010000000000000000000001010100000000000000000000010101000000000000000000000101010000 -1000001000000000000000000000001000100000000000000000000010001000000000000000000000100010000000000000000000001000100000000000000000000010001000000000000000000000100010000 -1011101000000000000000000000001111100000000000000000000011111000000000000000000000111110000000000000000000001111100000000000000000000011111000000000000000000000111110000 -1011101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -1011101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -1000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -1111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 diff --git a/mpdf/qrcode/data/qrvfr39.dat b/mpdf/qrcode/data/qrvfr39.dat deleted file mode 100644 index 39157fc..0000000 --- a/mpdf/qrcode/data/qrvfr39.dat +++ /dev/null @@ -1,173 +0,0 @@ -11111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001111111 -10000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001 -10111010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010101011101 -10111010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001011101 -10111010000000000000000011111000000000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000011101011101 -10000010000000000000000010001000000000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000101000001 -11111110101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101111111 -00000000000000000000000010001000000000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000000000000 -00000010000000000000000011111000000000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00001111100000000000000011111000000000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -00001000100000000000000010001000000000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -00001010100000000000000010101000000000000000000000001010100000000000000000000000101010000000000000000000000010101000000000000000000000001010100000000000000000000000101010000 -00001000100000000000000010001000000000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -00001111100000000000000011111000000000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00001111100000000000000011111000000000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -00001000100000000000000010001000000000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -00001010100000000000000010101000000000000000000000001010100000000000000000000000101010000000000000000000000010101000000000000000000000001010100000000000000000000000101010000 -00001000100000000000000010001000000000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -00001111100000000000000011111000000000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00001111100000000000000011111000000000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -00001000100000000000000010001000000000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -00001010100000000000000010101000000000000000000000001010100000000000000000000000101010000000000000000000000010101000000000000000000000001010100000000000000000000000101010000 -00001000100000000000000010001000000000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -00001111100000000000000011111000000000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00001111100000000000000011111000000000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -00001000100000000000000010001000000000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -00001010100000000000000010101000000000000000000000001010100000000000000000000000101010000000000000000000000010101000000000000000000000001010100000000000000000000000101010000 -00001000100000000000000010001000000000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -00001111100000000000000011111000000000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00001111100000000000000011111000000000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -00001000100000000000000010001000000000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -00001010100000000000000010101000000000000000000000001010100000000000000000000000101010000000000000000000000010101000000000000000000000001010100000000000000000000000101010000 -00001000100000000000000010001000000000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -00001111100000000000000011111000000000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -10101010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00101110000000000000000011111000000000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -00000000100000000000000010001000000000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -11111110000000000000000010101000000000000000000000001010100000000000000000000000101010000000000000000000000010101000000000000000000000001010100000000000000000000000101010000 -10000010000000000000000010001000000000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -10111010000000000000000011111000000000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -10111010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -10111010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -10000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -11111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 diff --git a/mpdf/qrcode/data/qrvfr4.dat b/mpdf/qrcode/data/qrvfr4.dat deleted file mode 100644 index defeebd..0000000 --- a/mpdf/qrcode/data/qrvfr4.dat +++ /dev/null @@ -1,33 +0,0 @@ -111111100000000000000000001111111 -100000100000000000000000001000001 -101110100000000000000000001011101 -101110100000000000000000001011101 -101110100000000000000000001011101 -100000100000000000000000001000001 -111111101010101010101010101111111 -000000000000000000000000000000000 -000000100000000000000000000000000 -000000000000000000000000000000000 -000000100000000000000000000000000 -000000000000000000000000000000000 -000000100000000000000000000000000 -000000000000000000000000000000000 -000000100000000000000000000000000 -000000000000000000000000000000000 -000000100000000000000000000000000 -000000000000000000000000000000000 -000000100000000000000000000000000 -000000000000000000000000000000000 -000000100000000000000000000000000 -000000000000000000000000000000000 -000000100000000000000000000000000 -000000000000000000000000000000000 -000000100000000000000000111110000 -000000001000000000000000100010000 -111111100000000000000000101010000 -100000100000000000000000100010000 -101110100000000000000000111110000 -101110100000000000000000000000000 -101110100000000000000000000000000 -100000100000000000000000000000000 -111111100000000000000000000000000 diff --git a/mpdf/qrcode/data/qrvfr40.dat b/mpdf/qrcode/data/qrvfr40.dat deleted file mode 100644 index b4e5bbe..0000000 --- a/mpdf/qrcode/data/qrvfr40.dat +++ /dev/null @@ -1,177 +0,0 @@ -111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001111111 -100000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010101000001 -101110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001011101 -101110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001101011101 -101110100000000000000000000011111000000000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000001011101 -100000100000000000000000000010001000000000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000010101000001 -111111101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101111111 -000000000000000000000000000010001000000000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000000000000 -000000100000000000000000000011111000000000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000011111000000000000000000011111000000000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -000010001000000000000000000010001000000000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -000010101000000000000000000010101000000000000000000000001010100000000000000000000000101010000000000000000000000010101000000000000000000000001010100000000000000000000000101010000 -000010001000000000000000000010001000000000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -000011111000000000000000000011111000000000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000011111000000000000000000011111000000000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -000010001000000000000000000010001000000000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -000010101000000000000000000010101000000000000000000000001010100000000000000000000000101010000000000000000000000010101000000000000000000000001010100000000000000000000000101010000 -000010001000000000000000000010001000000000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -000011111000000000000000000011111000000000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000011111000000000000000000011111000000000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -000010001000000000000000000010001000000000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -000010101000000000000000000010101000000000000000000000001010100000000000000000000000101010000000000000000000000010101000000000000000000000001010100000000000000000000000101010000 -000010001000000000000000000010001000000000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -000011111000000000000000000011111000000000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000011111000000000000000000011111000000000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -000010001000000000000000000010001000000000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -000010101000000000000000000010101000000000000000000000001010100000000000000000000000101010000000000000000000000010101000000000000000000000001010100000000000000000000000101010000 -000010001000000000000000000010001000000000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -000011111000000000000000000011111000000000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000011111000000000000000000011111000000000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -000010001000000000000000000010001000000000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -000010101000000000000000000010101000000000000000000000001010100000000000000000000000101010000000000000000000000010101000000000000000000000001010100000000000000000000000101010000 -000010001000000000000000000010001000000000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -000011111000000000000000000011111000000000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -111001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -010101100000000000000000000011111000000000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -000000001000000000000000000010001000000000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -111111100000000000000000000010101000000000000000000000001010100000000000000000000000101010000000000000000000000010101000000000000000000000001010100000000000000000000000101010000 -100000100000000000000000000010001000000000000000000000001000100000000000000000000000100010000000000000000000000010001000000000000000000000001000100000000000000000000000100010000 -101110100000000000000000000011111000000000000000000000001111100000000000000000000000111110000000000000000000000011111000000000000000000000001111100000000000000000000000111110000 -101110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -101110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -100000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 diff --git a/mpdf/qrcode/data/qrvfr5.dat b/mpdf/qrcode/data/qrvfr5.dat deleted file mode 100644 index 8f2898d..0000000 --- a/mpdf/qrcode/data/qrvfr5.dat +++ /dev/null @@ -1,37 +0,0 @@ -1111111000000000000000000000001111111 -1000001000000000000000000000001000001 -1011101000000000000000000000001011101 -1011101000000000000000000000001011101 -1011101000000000000000000000001011101 -1000001000000000000000000000001000001 -1111111010101010101010101010101111111 -0000000000000000000000000000000000000 -0000001000000000000000000000000000000 -0000000000000000000000000000000000000 -0000001000000000000000000000000000000 -0000000000000000000000000000000000000 -0000001000000000000000000000000000000 -0000000000000000000000000000000000000 -0000001000000000000000000000000000000 -0000000000000000000000000000000000000 -0000001000000000000000000000000000000 -0000000000000000000000000000000000000 -0000001000000000000000000000000000000 -0000000000000000000000000000000000000 -0000001000000000000000000000000000000 -0000000000000000000000000000000000000 -0000001000000000000000000000000000000 -0000000000000000000000000000000000000 -0000001000000000000000000000000000000 -0000000000000000000000000000000000000 -0000001000000000000000000000000000000 -0000000000000000000000000000000000000 -0000001000000000000000000000111110000 -0000000010000000000000000000100010000 -1111111000000000000000000000101010000 -1000001000000000000000000000100010000 -1011101000000000000000000000111110000 -1011101000000000000000000000000000000 -1011101000000000000000000000000000000 -1000001000000000000000000000000000000 -1111111000000000000000000000000000000 diff --git a/mpdf/qrcode/data/qrvfr6.dat b/mpdf/qrcode/data/qrvfr6.dat deleted file mode 100644 index ab4aeb7..0000000 --- a/mpdf/qrcode/data/qrvfr6.dat +++ /dev/null @@ -1,41 +0,0 @@ -11111110000000000000000000000000001111111 -10000010000000000000000000000000001000001 -10111010000000000000000000000000001011101 -10111010000000000000000000000000001011101 -10111010000000000000000000000000001011101 -10000010000000000000000000000000001000001 -11111110101010101010101010101010101111111 -00000000000000000000000000000000000000000 -00000010000000000000000000000000000000000 -00000000000000000000000000000000000000000 -00000010000000000000000000000000000000000 -00000000000000000000000000000000000000000 -00000010000000000000000000000000000000000 -00000000000000000000000000000000000000000 -00000010000000000000000000000000000000000 -00000000000000000000000000000000000000000 -00000010000000000000000000000000000000000 -00000000000000000000000000000000000000000 -00000010000000000000000000000000000000000 -00000000000000000000000000000000000000000 -00000010000000000000000000000000000000000 -00000000000000000000000000000000000000000 -00000010000000000000000000000000000000000 -00000000000000000000000000000000000000000 -00000010000000000000000000000000000000000 -00000000000000000000000000000000000000000 -00000010000000000000000000000000000000000 -00000000000000000000000000000000000000000 -00000010000000000000000000000000000000000 -00000000000000000000000000000000000000000 -00000010000000000000000000000000000000000 -00000000000000000000000000000000000000000 -00000010000000000000000000000000111110000 -00000000100000000000000000000000100010000 -11111110000000000000000000000000101010000 -10000010000000000000000000000000100010000 -10111010000000000000000000000000111110000 -10111010000000000000000000000000000000000 -10111010000000000000000000000000000000000 -10000010000000000000000000000000000000000 -11111110000000000000000000000000000000000 diff --git a/mpdf/qrcode/data/qrvfr7.dat b/mpdf/qrcode/data/qrvfr7.dat deleted file mode 100644 index 4d6bebf..0000000 --- a/mpdf/qrcode/data/qrvfr7.dat +++ /dev/null @@ -1,45 +0,0 @@ -111111100000000000000000000000000000101111111 -100000100000000000000000000000000001001000001 -101110100000000000000000000000000001001011101 -101110100000000000000000000000000001101011101 -101110100000000000001111100000000011101011101 -100000100000000000001000100000000000001000001 -111111101010101010101010101010101010101111111 -000000000000000000001000100000000000000000000 -000000100000000000001111100000000000000000000 -000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000 -000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000 -000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000 -000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000 -000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000 -000000000000000000000000000000000000000000000 -000011111000000000001111100000000000111110000 -000010001000000000001000100000000000100010000 -000010101000000000001010100000000000101010000 -000010001000000000001000100000000000100010000 -000011111000000000001111100000000000111110000 -000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000 -000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000 -000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000 -000000000000000000000000000000000000000000000 -000000100000000000000000000000000000000000000 -000000000000000000000000000000000000000000000 -000010100000000000000000000000000000000000000 -011110000000000000000000000000000000000000000 -100110100000000000001111100000000000111110000 -000000001000000000001000100000000000100010000 -111111100000000000001010100000000000101010000 -100000100000000000001000100000000000100010000 -101110100000000000001111100000000000111110000 -101110100000000000000000000000000000000000000 -101110100000000000000000000000000000000000000 -100000100000000000000000000000000000000000000 -111111100000000000000000000000000000000000000 diff --git a/mpdf/qrcode/data/qrvfr8.dat b/mpdf/qrcode/data/qrvfr8.dat deleted file mode 100644 index ffe6d35..0000000 --- a/mpdf/qrcode/data/qrvfr8.dat +++ /dev/null @@ -1,49 +0,0 @@ -1111111000000000000000000000000000000000101111111 -1000001000000000000000000000000000000011101000001 -1011101000000000000000000000000000000001101011101 -1011101000000000000000000000000000000001001011101 -1011101000000000000000111110000000000000001011101 -1000001000000000000000100010000000000010001000001 -1111111010101010101010101010101010101010101111111 -0000000000000000000000100010000000000000000000000 -0000001000000000000000111110000000000000000000000 -0000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000 -0000111110000000000000111110000000000000111110000 -0000100010000000000000100010000000000000100010000 -0000101010000000000000101010000000000000101010000 -0000100010000000000000100010000000000000100010000 -0000111110000000000000111110000000000000111110000 -0000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000 -0000001000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000 -0100011000000000000000000000000000000000000000000 -0111000000000000000000000000000000000000000000000 -1110001000000000000000111110000000000000111110000 -0000000010000000000000100010000000000000100010000 -1111111000000000000000101010000000000000101010000 -1000001000000000000000100010000000000000100010000 -1011101000000000000000111110000000000000111110000 -1011101000000000000000000000000000000000000000000 -1011101000000000000000000000000000000000000000000 -1000001000000000000000000000000000000000000000000 -1111111000000000000000000000000000000000000000000 diff --git a/mpdf/qrcode/data/qrvfr9.dat b/mpdf/qrcode/data/qrvfr9.dat deleted file mode 100644 index 5be7495..0000000 --- a/mpdf/qrcode/data/qrvfr9.dat +++ /dev/null @@ -1,53 +0,0 @@ -11111110000000000000000000000000000000000010001111111 -10000010000000000000000000000000000000000011001000001 -10111010000000000000000000000000000000000001001011101 -10111010000000000000000000000000000000000010101011101 -10111010000000000000000011111000000000000010001011101 -10000010000000000000000010001000000000000010001000001 -11111110101010101010101010101010101010101010101111111 -00000000000000000000000010001000000000000000000000000 -00000010000000000000000011111000000000000000000000000 -00000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000 -00001111100000000000000011111000000000000000111110000 -00001000100000000000000010001000000000000000100010000 -00001010100000000000000010101000000000000000101010000 -00001000100000000000000010001000000000000000100010000 -00001111100000000000000011111000000000000000111110000 -00000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000 -00000010000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000 -11011110000000000000000000000000000000000000000000000 -01100000000000000000000000000000000000000000000000000 -00010010000000000000000011111000000000000000111110000 -00000000100000000000000010001000000000000000100010000 -11111110000000000000000010101000000000000000101010000 -10000010000000000000000010001000000000000000100010000 -10111010000000000000000011111000000000000000111110000 -10111010000000000000000000000000000000000000000000000 -10111010000000000000000000000000000000000000000000000 -10000010000000000000000000000000000000000000000000000 -11111110000000000000000000000000000000000000000000000 diff --git a/mpdf/qrcode/data/rsc10.dat b/mpdf/qrcode/data/rsc10.dat deleted file mode 100644 index 0cd0d17..0000000 --- a/mpdf/qrcode/data/rsc10.dat +++ /dev/null @@ -1,11 +0,0 @@ -Ÿo^_qŸo^_q#ޓ'u[Tᓺ^G/F;eaN#;>e;i2toJ}^_v¯FV0#ǯv|M0"(#<&qMveUOd *vOMBh;쉙C%~+2M%&`5'tkxПFCkQpn -`DPFxL03 C[W ]$ "{? U5PΡ@&:5P/fxeDj(eT2vsۦMe -a/JڧQpį)Vdmw>Б[EJLjN_&ӯ94.om#0q̾x;>)CTQtXK! yS`:' l`_OӁfA2O|.Bmc">)oH@,:'Hvn}dWVDI~!4սmkoj_i51F6􍇃_LtjUE+n ^ʈP?1 Iʨ!d)jZNwJ -g1Qsy0 —^ -P@` ˩S7qs.TCRc{?)' k%`G|q?ǁ*6[`wԜLRV&ϕ' Crh"\/$,6}-ͻ<ڱgFoyASۮ`"I CabS1v|{Rݴɘ#,G2+yp-/u& BYW@ȲbdtNi:7lGE(# ]-SLZ& -_s!Ynۂ68d$cDf;U"a\D|\g3bڅٽRqm̕O.CΫ6=}usdQAXitN,Bm*O? {Ȯ4=*r$۳8BIP3 I߈%h"g e.Mp9R] jK2bGl+hK\3r4фryƷfB8-$V6rHz GA@<] B|(a~bA7?5g hMBR*{gQ- u -$Դ[@Z+ݛb7K)N4iӴ'c=`@y9mRժ1(3<"5KbSե G}Ҕ(g]JOn8Y{7dW?Mc\:҉\n!*:Y,A0]6DْxUDf_4OB9c3!9$Vu=lpH]4v.9[(vDU8)|!WrאK9ofĩsgzQ H2 C<["3ԁ4c|B<ߡ7\цy@KlzG=XܛrY$ =Ȣ>7K˥byUc =XZ/k/AT~F -2AEs{i.4h{z1TiJo% 9H{p=$Sf;Œ xTI>JDsʱ+EWpI\rK.?',:p>a[c*?殅.8d=?K jXLĎVLltZw6iŖfqhOQ9&6:a-͵UsvڣsW̄{}5,&QEI pZHl88SE! @ux`P 3TΗXJ SVZz5FetHu%5/wJqj^u,V%}ͧ+=ɔ#Լ:ĿnYRY <0(,]h(uNjwz )fU3krڤSIb;mE˔ \ No newline at end of file diff --git a/mpdf/qrcode/data/rsc13.dat b/mpdf/qrcode/data/rsc13.dat deleted file mode 100644 index 1381350..0000000 --- a/mpdf/qrcode/data/rsc13.dat +++ /dev/null @@ -1,14 +0,0 @@ -I4 .+SxI4 .+Sx""h\V833\r}9DD4Q*pHUOU9pff.? w0w#Ѥu>;Ǩ9[f=I!Ib&.XXL [ViOk^k>pzz[D݅>ڸ4>xLKA]M𶆯ŲmZv -cq>!HRU=bS5 9tNV}_GA1ν My  "G88_XKv )m)tG3^]^gFgyOO*?>~A|"|vMErh7mmBçzBsL\EGgC$5=Ϙ J|B/¶1Ҟּ֣|A3[2 ǗR - &QTEr)1|mshxD`]a|55w/M$$zt SSyY/ϕAB3BMTK홚qqCye4`L`%NRO^C쟝I= -, 057|B2ԬSHl zGc1jr#3FX[jj^-{{pyU#HyH<ݕYY,ol1^i7Yƿu:O>ÄfϖǷ ו#/)"38ʦ`PVk- hJo:)~A8Bu#'#( -<&22{zX@`4j]tNgkngg>=Uvhv3цd-EE$ke@dVTT)@6vIƫbQ0+mwocFfUx >/u#źlW%8EVxaބq[S2aX_G-L.AshhΞ$)n:'yy+ðJJwrT<&a[x[CY^Jo,H,&+p==Sش7zWTVWࢦaP}1RHlJIԓT(ʼ7h]ڷә8$rKWLqǵFeRӴʪֆB!Fޙa[DjܲvBGX4QǸ!Ol {gNi }X;IU:nrrs7-@dmcc~4.PjPik{q}AAdEP ^66GNֽ'Z'5JB i]׷[`Df%]P+ԾlZh0]EXtC$Fe؋>D%z:0 (5 -/ijw":Μu56-č8FoBc̾ n{nÌJH`и]]޹N[LL괟]6q{;4;fU HC2+**R{ b;~K ]:'vwS0(+ ˀ⻘Yy?Ʈ!\TcܴWN M ճ8N겤@`de6BXdLTһJ3#,Ħ\\6EM\M7V}~~`-Mo#o¾K~"5 Niڙ@ zG8 o:l:&5|&5++/& #s)ZŽ̒Xzc")$6sK%mv8FxͧƥC*+I7XWT~;q^k&Ք!o> ΜiIrQ qLIϭU^K )XHPuu ޙ%ww3k8𽬠/*!iAE<~1&z<.L4; -Jy;aNW+canp`魭m(neht6.>N~(TΧ#.X߯uKc!۠ǎu}}~^P0JR ı^S -"AyyO5sG^Ϥm>F1ճD 3V$ !>қ8bN_tYexo{{َ VqR -tLW¯Qw__}. !=66Ȝ)㮍v 4sW g`cBkHh8z 4H]Blֆ44`{()@1]]!900Q^}WYYJuCZѵO*h,&f_F0>ȖorxG\јhvY2e3r"|ݥ/cv96Շ헗FSg}-V,, -gEEMF*GG_5mcZ..Pym A`%/ICw87a?Y.G Dr7\MII+cDSj ~l4Y:-"y#oU&|0Ӂ ieM;fby{KK@fH -H q""~F*R@B|OO+pĬ-Fs6&&2]ދ՜>C 9LwSI?;س5$=>+$$%{&RN!MM/[n&Ci)\4;jҤcq;GBz}llvvܙ& Aqx(҆ZIb*ٮ}vǵs,Rq||51俣`; b-(dJ]~~6>QfD#W^ G򬬨#~@5[ᇳr%.O(=4Oو 7Ul 33Ae?{cGZZ"EaAZ.XX '\ -^11={[$8'fKrś ݗT󃎎8jSk>$ c)ƴg\\x{Ƶe-55+vX+ƫ77ظHdʈ^^6IO5{piRYÎ=\|%Ms??ክyVVT`? °;U@g_tT0m_S1܌D}x[1+ 2QBOTT$ߕC@E==I5K'#PPO;" wm)99xˬ"d8*d$7ZB7 =sޟbu d| e]JytjXnʢFP^Œ:;;pn~C-1JRReWd\:5U,@@7eQ#(U%f))zq2nl` v}cԼb; ,./s E3Q_9XÊDDT Tu ---kҾ.oVkbDtv$wK-EZl:LLdC+X5/&0%%D < %a''y|sJ« NN1":;Yri,攙K"ӗۦ~C,vE*tȆVi_{Aj##H6qj^1L`JJÓxkz|VHHU(J- \!!ެK7LK3B^=yĈyHչZ \ No newline at end of file diff --git a/mpdf/qrcode/data/rsc16.dat b/mpdf/qrcode/data/rsc16.dat deleted file mode 100644 index e44c7a9..0000000 --- a/mpdf/qrcode/data/rsc16.dat +++ /dev/null @@ -1,17 +0,0 @@ -; hDA)b2$;; hDA)b2$;vg<[RdHvMn"{2VlM4 cx Ȑ9sIf(XVך.mD0dQؚ# Z8N߁3hg@q2U{7=e<^Hs|UryP*u[֨X.IQ)\O`+ȢE)QSthdj-w_F -(pf!_dKb˪x?d4dnzݦp@A% 5^x.!c2vߘQ{s9T}E{@l}#<'@ M\? 6 uw]6R.W VYGRi#j0h;ci$y1ԭZ$D9/k+P#4u%O[>B׾|gkrۮpȖ7I~ &󛬊ZW݌ j3>h?I3,z`<EQY J&jE~9Q! 2zX~߉C"r^7cV>NJ5@uv0)ʇlPkjLJi( *C;mMlV^&]HX_<;&ka3jrmWkPw%t3sP4߶)퓁"8K.3.byX$= yFXc)UIMݓy$cb7ܖ9$ FtC9W8VE-|F5 -5Cdk4\ن"qlBn 6TPg N\V_CVSQ8 Dχ/Vm;|L bd m Yy:K425l` 21UOтDkTi,D䷪Y3,+}Zޟ --'mΗO~ޓ4"߮1\mf7 |S+6[mFc9?[`ZͼX"[ `- z[- H=EdY'i*M)>z7'% ܴ;C90N LeqhU=H`L -qvfQn{zsllGӔa/_Ŕ(\rB*ΔfHbݛz rIOBМ K8HIXw=0 -_h?UrR쌞=,L?s\ip6~{Ba9Y'ĉio]|`yM"ORKd~qb -`oGؠ$I,ԡ(Jjq:AD|̷(e]oPYwTvښe^PQ^:G)%i>:Բ!H މL G9wxvLw `k1>^[Rw/ef ])s" 4?KA5Jf 栛8S'%›hqRx1yhSd]Si#)3!U1%-ׂTۖb:w"߻*e{UcS"z'.+ZPav>&s12S+>p#CI6b!7=yY#x=t&‹ƭ(\Kc?ѬUlS=XG0KpnWA}-z:upMRUTpY @:kW2u͏Zꏘ@4kCeTE{ܝ}tɜaÎ X}jY$^Fo 0G/ )%5N">f/(]i -gj\T/b? !GbY2?10YS5B.*Al[LҢpݍCn:N`ӭḰ߈|u ts[F^fuN-uL{ oBN:ac.87İk{=l -8\|;{Dp\gq[a1s{g*f\CAÃ*k] ̤Hz3i%o[EHV;Q(:]R;#AH _/v%+ -h*97n1,r&H@-5ultga"5x޾¹NÌ̄IxCBP/3){CkMj \ No newline at end of file diff --git a/mpdf/qrcode/data/rsc17.dat b/mpdf/qrcode/data/rsc17.dat deleted file mode 100644 index f44d14e..0000000 --- a/mpdf/qrcode/data/rsc17.dat +++ /dev/null @@ -1,18 +0,0 @@ -wBSxwS)U5}cOwBSxwS)U5}cO,Rjƞ:R{_QX3Qä"I!WN:n/ /t,3WXӤuXbaߊn4*矰fU D?Bh覣b|ǀ\ qqtU85Wo4W.mH^?^UX -fa&c)}b)؅T[,UU wq hN$> #TY#}Y+9w~T -Tk -҃lB#Q[y[G=є(UA.%pj凌[V3:[',% Ů h\ɐ);{{u=Jt~4̫ͪLAslĹn{i9Ei!Ez5>P{euق\JG9zǔQ)(öVкeheI}(KʧދxMM+bD:k'@麕zG.MqӫɿGn!Wx pJmeJQ-'.=/O=(O<0aI7/I$,WӍ!G*ޜR 'sF{Mcc }ͨV&s;r;o%",LK -LyK;eOGC@!:DlUN3ito9#Myky`6***UKebߛbŀCc N#E@MX(M$(o6f8t :{:{ D܎fde)%ԞԋvyMRJXgیYq7l^vthd%dO#A'}|u}ؕoO.c#.!ɉ+~rqBcj|?KI0  Jjm(<,<-,1imKK; 8xݶ[s؂s~AHALhj{wO]0606ՑC"2>n qEnqD~b\ -N"=-"6W!i׵׫}>ʄR'k=ۯ^03_0$mtOzGq'G2xDP6ǣ޷$*$?wibrwשw -A\=&Ӣ|rד5͆dچjK&rSVuRPu0q嬽iSh&*hF&ɲcP/-?WߑPzp$am $?mSXS)>܀ip - K9V5Ĉ|U|]dVٳιQtN6oqo/ڢ C-Ui7Uia\S&}":O"1:QE2Kǻcώ_B ̙we8ʔ8*ZqMN \kk[{vz^:zPMxY`$q B ʹQ鱒n^qHXg{x(Xm54B4>#K2T%pwgpT g -P)j((6mNG_搆_ ;: eeML0b6v ?6*SKv0v80J$D=aXcc ]h;򯖥vGʗg]lj\_L²(a aBt92a2p! Y -YfASrF.H.Ynfl .E94՟lTrءr롼OT&Tk%ʜ\^|SBL*rď+ėKFuSI~%:* *i6!]IV]OVJc㤚P1HPlpG*Ii'ECދYt4tS1>a@Y.vE@u$M[['{RJy7,R,1RE[7x!< CcD) F&Ϋ&nؼQ}Q'W:ݒʟJ Ȟu ۭFoN^^xT+h 7ޞ<8񐙩TQ {[ _\ F\BeݏVo~p~ЃLR Zc  ~] ΦZAZ [~+h]W`W.7P "j 8Xo3CxXxZX6b7 gLr K]\bduv 0˝3-7` ^MNbC2@mC5@p9qw+A4p4#nYD -H杭<"(  |X.'m`eB{]B)y/l`lA? -Dd|WƯz܅%}5ĸZq s`wL2Dz2ZDgwlBҝEE^pʛ? wK_|Q"jOj;ನu)%,miNzCFF]vȃO `f`Hg8豞U$J^Jg736Nd׈4l[6r5.d&aYssHCTH~1;Wa`OO<,}z88*b(a5LY ;j!ZksYF ԖLfNfSNhbV>Y>2`+EgIImQRLTЌLy (=8,`vPn@8U^w׋&9髠.1^Z2~0/dk'Q1gS-Mg --?4~5k~,ݗH@H~ -* x_?8?hω&)-F|R|]Ie/DX/!&`9̪n[)LM0;(7 ]/DtDwbt-SC#d3E'3a'z41v^+kkƃA01M%c/Q%EPv9v2x -5p5pYT⚜sB#BV#};dϩk-yֶ0&oO/8ueÑi!t!H♃r erc=F}87uy"$mzmԌ>W,xGH9ܼ9#CAk=j~yjF<$!!+P2ڻV̎V̩kjhh|F -d_Jy(;yJ;o_Q< ΓRԗsݝj=;/PUPlڛ$g)'ș'zݞ0f=@M=v{ot7ɓniVn2.Z T@4Eg`d",:Gl~lAT2??hg+`p`Hz°i33ma-/Ӡ%{Э8vqu]u"3->1(-C1W쎉3+!Z|bPZbf&VBúԗyPĠALs2sr CJӑ4 iGp❅d=dOBI37+D7fx-*|ϲI%̹͡V_5 K}\5?\e5# +fG+swfZ^c] \ No newline at end of file diff --git a/mpdf/qrcode/data/rsc18.dat b/mpdf/qrcode/data/rsc18.dat deleted file mode 100644 index 1da90b2..0000000 --- a/mpdf/qrcode/data/rsc18.dat +++ /dev/null @@ -1,19 +0,0 @@ -qIRK CْqIRK Cْs7CG@9,ēTd y`vn;{W9U1Crt0Q)p#zRX ;YŨɧK"Jjo.d5+ѯvӮrb"pfI!#r;)=a_v`MRE. F])<~"ש\}O@7vM4KS3Ŗ_'8Z%"psD>\[ݵjP{9 e=V C"AI:Dչ20+&KG̡aBFvERz¾z{θ8?Zg~Yˤ׊\UR";^ ]ʔN!5+*xD9OcН iHQof(ڐ$ }ny3h'f1{ٝ]И3߱%NkNp JGD0g8QceM{GK5|wC ?Dfd ܇4 % 2r={z[LYt@gJDzcWDkՒt"C(^T%od`VL'G6C4fdHMT7݅_9NJa&2.m9S| 'ڸW6m7qp~c2A̛.71`y\n)U ,8iShfXtHjI}Dv˼ E5Ba), jv)mU|* oVTӈr_{m!p|O?&>߽'Ґ P=H0FcG?REa~f)1QN3bkg xn9'%-fAJ[ VP}jݺ-. Ea:u7`p-m OբHA%+=I1*[)M> F:xbі j.w_mCq3S>mؘ/ -#xsl}~4K@h 3+-J]@d:z$\^T3v$I/fQw0ΔyYfM/ 0Cc߳:_E,97 Dsq`;'P4&k|NǵP+%OJi< dÇ`l2 1Nlh1UkO>+MH_ޓ S*M?+(8[b<7Ulqnrœ U/—\6&klLd\ErW7NõmB-uqe㈕F<*/U}Xw6+\IEnb5.|5 -'0mN'yR {mXSp -IU#ŝ" -4 -<衐Me?7F/v`!.# 쟋e,@ij%RXg(z#w)rFKiRowT޹[ vn2`8׻ ! kBWB3N*h( -GWCS~L|{lnuWY,LgN$=6YOz0LU,H}Q(o9I`=Ǝ~,+6? wbTyo}/:Rb flcMG+ƿV*uΏ@>K4*a[ x]@orCNJigZ[% -?宰/<$0 ԧiZ\^5=WhN|QS±t8%$n5 -JIr=YS9ZYJV!O1pcLbYzK[b)TR%Fy`.!z|"tǻgA0 kujVrKi,as1\چfwPʭAy:ϰ-|i6k-^FIG(!G ]$ 2h፿W&4cK|BAQ-+%(-fVZ8dAjFBȔ{tH{A| -P%O(gWQ[(fHe^̸" /&^q-y`2#5;{4O,~k̚^@:`φ_ƣ{t#a1L?Zk[7,X"A 3۱2srne&SԢ A: %YQtIvNhLW'ߦHUgKMw/VeJ'_M ˔h$wu3mHxț؃ d=hg\[t-ν?@E-b 8N(@HG{אb83o_֞9|V;Ä?Io.Ѱx:T~V8=P)Mp%f5uq2vpjնxn)ثIbQv*2{u0;S.a/* -s;^33qi@]lLU<6 -CFËN -LwGȸQ$nwOAc#<1W ӄsZw< 7uxk +(E5]uvF8>|#Hn )þ?E43,}:o$xw5T^;]Ԥ>gi|lV>ĝjm\fUpV0J.7ja/N`o*@݄T32w$ -*&NI$ڰQɵEՃ1*lﲹs奁F! -e'4DSmh -^67@}&W}x_=矵9#R~ ` -;70~ngO^B \yF#;0DCpYF # X J,>z_G҄'.PaFR6!hԶgDuZҤ޻I$oyr1q|~M6UU0(>d'A206quDdlpEMkaB?ֻ&- tb>(fT QP\UtNl_/뎫>!{uOHByvz25E#!d(eꮲ{XߘCAWǞouʋߠ -rc][ΜHozl#_0]=`5+9իByQ%X9OPrYwX͖8G&1KzWXU Vl~/S@4'> s6먭^c+TC|hDXpL;#EVuT@ }o xuy#'&|L3δ;85Jq 1;DYpv'~A}I $E^xHBxmX<4`E]Sҏ -$ 4Ƚ.b:AgБjQzwМ:S$^TB}pJHj S@v_,iP?Z}z!ϲ] _ryo,K@$!s;=WB2OرeP9G_}KbƘ:1 .:'6D¡~q虲9ߖ>?Rq[]"26qJ=a \iBL4Zj[^"b-)?0Dk΂`hwm“O"8#DԬs6YX/ZQ n}cb4a Q"-nuXq7GWt }[ZAOr&-5/1ZlGZ(юPReCk"a?t;B[(kiԹtzx KHd1csLhƧRk/*!lTS"Z8 ;d!&p!=Ȃ *2Px.5)yBi]5i6kڒ,ZOJttX}ƦHQqe\F] spEЁ$fw -<ɵfUTp_R{ܑSYx1}"bSQ)A<>5R.L65I($߂l7XXVX 4):!!>-Df∪*7n'eQNi?7~(eW߀&5]pHXV :dؐzPմ1V'am |XY+$rm%푑TQ]> `>!\{Nh|ccB -ߙHx~Yziӯ; -hhˏw?7W#;I9S6lvO>rsC%#?/$*U&N L*թ㖔2Γ~~TM%C/bSE,DI*Ǐ5i RAY15աx]"|j_a4V}Bjy.;\l%jPH  T>3`N)F=uu#߽]Yn2+fMz[Gϝ%Ɏ@}Q>hRIt?BB| Wgm)_e;;CyZE*;ёK II.ḪmCZr]=00 TnNIi -[٢g oW-OqZw~n&m5P<L__jǞГEk &&"a@tŏݭ="cMgL:P~,ԘZ͠]ubìxs7Uy2siNat˃qymITTvxvX $--6Vg=ڤ{`nss9r;Z_xl - - 0{á1Dv3 B]_V 74k3T[q ^Ṽ%y6?ӕ#Q 8 7!1b0)(`xxP] S/ :f !ՅBX tFz%-; sbjvM)N(9d.!nnW؊ !*h2#jLeeF F”򼐨I㫕ϛ=>[mlD )?RlZN(׼}±'2=cVVd{A!Jxdهu//#LG+B"3:(r-K2{RݖbV8F?e4g ԌMW%9(qC0Jos3/b]]N`[5 ٭$$8;cb/n͹%ڒ@uji : .9)S\KKrՎowM啿াE!22{agyz&Z'@@u c~1C499.Lxn8K rcWkH6hy -'GsIOb$HA\aCoKx˞PggOK M -apPC8_$,+v2pllH=8[Y\U9ֶ퓍,XSUឞ|7U]q'No ZA $[ӶdiVyG|L9c/kވhvqq^e43heHL`pYe|+u!5V}*Hlt}0'#VGH'&KJg??*ЪIɔLoFF?=Yى|mi44k 6;9L{MMv|B9ۜAƄ*t0I.'W4>! 2/g>("") 0–G@PP`#aJFUW~Qy^HTۈO)6-']^lwwZu=L@TO15d;lEٞre 4J^ğXQYDv[z3Sg{T9j-ҡ<6+QVaX*||bj_CD'<;Bgv ,`TlOhǬ ETmϽ&`(?jjL-\Uv-J9@fsט]Nt-aa3|f=REzGKXy ^q隡Fg[2+>&d}}VE4Q$&08k̚'JU - ujꗰRcbn3}|.Ф~k[DŽp^FSh]i1}$e.ڃRvvKwk8DZ  -( Tv?\jDknY$4KmIˆ G5wz``@GԹpS_M峨Sۥ҉Y%kk0ep{Zwi%<2ʹ -^9yÉ)rK13ܷLj'xA[:wE,/ܶб\M^q!;@0*w LL6*ѸT0Fa 55&i";D=}EGGz˦+ ,ia>>[DMƩΘt -/X6-6xDOG9̈]sEIQQnwuaK ((02da ǜw/2 བྷDT) xg݃ځ&٨;E:tOўB$6:M+HZZlhU優GJ&]ώ## G:zU O!4BU|u%{GꏁrMv o`Hkp"*ךRl5o*?P%!ri\Bc%JBc8︄? ;CBTՉ..46J] KpmWW~md?ۏ*Fӱʌ -Z:,B|ų)@5I&AYe=M88K5i0j* ?1s+TAA~7=+z2|!I/<33"s.}4 c_JJ&R~!>Pieuɂ$˻8hMskg \ No newline at end of file diff --git a/mpdf/qrcode/data/rsc22.dat b/mpdf/qrcode/data/rsc22.dat deleted file mode 100644 index 5cf0985..0000000 --- a/mpdf/qrcode/data/rsc22.dat +++ /dev/null @@ -1,23 +0,0 @@ -YE({CVYE({CV{}q&gP8:笩4?Ș5x$'s7.y6L ptEOh~ EJT_sLliR.Yrˍ-jHN4n\A>7%yTS|ɿaИ_ tKò xwŒ7@hnqRK 5M a-fULny՛ٺmrlh2iE -2rHHiۈBg˶P.3I Ay+Dw}F>]2|Y9-1@S<+5NovVM1IyɖyA*W .8ϦMgQ8$n0˙;}f#*hԧ\~!:j¿Z4Go$m+0DB,[Er_ůidU,4u#Y]eLcJHowbř2dxqS7ջݓMU=Wt +[CI6֟ !#=Yq:j4,o]Tn^,L6Y(R [#&ݑX#2?[9s$"{5 .Dt_ߜ5~4 -۽^;='_.VDޢ1h=T>,%hz2J+k$`ٝ/_nw.6Բb(Ĩa2#M(hmx!/`4" ~ҥy2xZVvӷV,:.L*G˴|S $?γhī0?OtNLr^"~q\f>k)]V-|(Aʁ_w{4&ȫ-qdUv1o ;sV}$lvu:FTеS>G2BtzUDWY(&X:$)0chHI-sV`cdĊ@ 3 -'{iǕ_Xſ>8= (Gi1{Ō]bCҩ.խX hF(a*}3>0fS27ƔOC/d1 wr4q5=5n6ka;fpF7_r0+(|;nz@6',eV A Kl#k748iMJ?:{]H#4M,BFzt%hFw^._=9OEX޺ckK%&xUNZ] -5x`:!e˿zj,8 Bػ pg6Ʈd@ui(s脉 ƚ`HC%Ro[rU!ۘЋ@}̵BUb'עs }_ґ#13I%SۋFV"[KwS %DD֗Vc Q&ﴱɆqv1|ܼXyz'e~a!+c Nl m&P@,>Fy!;ML5C0[bF+W6?$: Fd/~rH3;H)nx͔ wDjI\ 20U%ٿL(F9% >@/sdE?HJ2Wj])uY ?ht/)5Di=^g)*.:vQzceGN \>3y ~Ŕ_:/1,Yk-bz|X>؜.E0",r1fnJ٩adV8HG`O-I:} -ŀRQZ'6^([\Il㷵y }P~HatJ쥕ME}d FePBst)n!$ϖ&O -jD#hX[zЬʀ+ms dL펔m<C }WbTVpX{^A4<;IKZ\+g^&/Mυ~SC^i4yqm={_%G0`\) YO{TBsU" :RNq{~-r2N3 `jΛ!/Ԋ0zN:gf ^W|˪bwNv*,?Rp="!mv9Hg -]{mݠ&%$ڹ1S twm|dZ3G4j.?[(ψӲMP"L#'Bur͆;P+ftStH#R`/uZW-<{0T =538# 9fN>ғ7xa%W$ Oc|pq azP3T cp9XmI¶Cƿ2bEo IvwVҳUF`kg|1O\Gg+IoɌ6P; -=g"Tj,4T!f $s6|`]omqבLŭnu*9Oyidn-5=3^.Ȧߐ4+ <\D=M4b}:h'&9/j?keSUdopʍzQjolsSv)[I+xKodBq?A?n$:`VP%ovfc:7Kةu)ÀlNXʬq937حN0]@p)-F:nhpҚ~"tAG/UMm{͗? JF$hXC7PrJ|O^*Ȋ~@<ľ ]TCPldadԫR;~(K b_*Nc@( 62ӥ^oRjz \[c`*zvlZIeRT6\t"ʎ;o@a䀨ɩ>}۱6mFZM|I)Gf<,5t^O%ʙ]#rGKXnϺEbG X;_ZĽMыw_G^UrE:|%\}`2;DXbGY68'P}Ix>M<>O.5p Ce' Y[\HA3N %Zit*ݤ\p(z/1N ijKq;3ANla{Psw?ͤb!(kU -K距E.][ǡW$QXUi!T7k )ʠ2Sn) +/S֍0R]dgOR BHǃ1LGxɻRV^ϱ` -,Ξ*QЈ.$o'luE[.S8W=s'\5_VCYW/QŤq9WUHEeK(<BkYkr@TbE#-xeqWm9,7]w1DP' nG_.~UW0=;6[-BP֪ \ No newline at end of file diff --git a/mpdf/qrcode/data/rsc24.dat b/mpdf/qrcode/data/rsc24.dat deleted file mode 100644 index e480c83..0000000 --- a/mpdf/qrcode/data/rsc24.dat +++ /dev/null @@ -1,25 +0,0 @@ -zvFfsIH=+ِuzvFfsIH=+ِuOyǭ1גzV=ꎚ*u2ۛG}O*vŞGb92=Czɏ7C@~Vpuɇ~ )щTI7Sd+TG#{_x92/DŁP`5V! -;{rdzE>;߆LKVqR;2n _d{n#Y} -!)ey 2*cI8q ^YR ɒnKVG! >ŎFx$IE0-< EA3rod^O{ojY8͟Fn#3Bv.c|vˣER]HJʡ =d"gTƒOYyp"ü l:3'PwaD[,4$"UcM9QBM |~XW_h.?NH,o":`Zxӂ8gIM7VE g$aȼ 3>c]۝{ET]V3~H3, 0ep=#5(c{F/ tkf(\7Ս ["-nq:"6!|$gsˤ+ &Ge_y"+xubwS-t#ƏTZ-1EUB$patճkdç=:)%ŸOUHd~X}f&Dΰ%9U0sp7$@ب'Ut; P ":׌KyL(`v d:T- -eok;g):}C!]5|G*z >ckCT|rWA1+dҮ4;'DΨ9۲,Dey@BazY-l>5 tfN "X.hHDwnd=6 E@j/nU<,r1E0@3r#ozw4xI9J1wpU]CУ\~2]? v05C3DyEX9 Dtw8YJ^B?TG!Pn@ D )(9#A(ɝcy Ztw_(%gDlBHeVPql/oC72^ UiVC=@ L5DVWd"ۻ[3Ƿ24T ;|ƗL`4͚uP_#v@ŰֆŨm䮂bV -A,c/M -7>fIW -?u`YhvNM?r!yݯX+?eS>h)1aYeܵ -b9O&M郋.ZO4|jaF+ؘ@0[/K_K]D q\+I`A b$Q 0Z~]'TIނ$+J50awF!(hrMbs90wsN<OfZclo}Aa;[? -d{ %~ß;WX:weWs@}` -jɡf}C)ka4#EgS\=rux^+hk2K4P Yl0uiM9`%?j՘OoiVj8Y}:Gu#dk8o].wSv9)E 4lӣLh1lJi#`^ 4mlgz9a*FbsnFc- bȽܬXGN{oR'l_4Bip_KNw z*߬GZºq1a|uΘ/[frm5|ur`k].&suO\\MiE@OKp =vt̰4l*/!)86u!G< -i[qkv CQ*ƫ5p ydL@9w.B&_fNd݋& -Wxdnx[ Qf7yW(7$m9Tf?pzSo^8lNw/TM{NlcXZj0xH|[pO%>)ՄS}k:'#0c[_ !.~0BoQwݻi_˅*+m?s$ǀqz LJ: zQkm?ie,RP4crFP'Ej}Ǫ{Ѩ+YV>@OPJ<؄ˁD6k闎("ʬ)$%^eYnd;Ro.:B{bX.,N< ҬzjaFd`A^}H#J7A -ןD&k+f)Osd7xkP2}`QY/xו ?Qz+8X?OMu^<"q(0+=;#Yl3KA$gHGMseUl;8h C\IҙBv %/DO!u *@nZ'8&xߗf:&.,63,~|'L][Ss6rNƍ+:r&3tҷ_Cvr)jL9=O -kq9ʛ2iW :׻I2ܐ@GI\]@~}Ay8 lT:(7m -Ng>󽷴~1qc{H Z:՟cm*-0㮈{ -1-?{* JZW}N%jUsk4b{n1yHB#QlL }_PpQܡ&0M(; fv׿P˨[D3sѪ01c/xθv ס/5FK=KG8.D*obJHt@&F/i|h@v,&ģ\@5e4Cϩh3h)F> {IiHjӈ[|NjrtZU2ãMAӍoXHǸQ>?W $Э>zk-]^ noq| c~+M( 6N^Q/ ~BKC VEڵy ɺҌbih7<~ʦ|O3Rb²ʥwMJ -V'~֙* 'RT6rLKW{y \hLcGs82& sZ!=YV-`_a]ݶY^W>S>90޻e\v.K4G͖6%0/}6V= N1dL]nV,zy'ɳJ)(ËH6`N0x+\5P]2K S , NbF~w[վHN@eHȧ.5nuboA%bIJOYǏ'a҆m3-B6 I?R ծ 6*RZ?Գ$L-aԥp|ɕHVj`•9c5:{xy;.WKexFՌBKPЯ;95&rݯ,6 FJqٱ,YV!`y;朙xo"̴ O7[G?>w&zBIivgm~siJZb6XɄgl#2Qv0/G$t%ʮqYD0ChUm[CRU'59:-(Ti"kUw܌ZsQ^ka"~a1%$%čg-KiE'K5N_$!6& o(8ߦn/sh?ྖYSXSa7og/T -yE:aiSyebAU]{#")B㔒R.%݁-I ^(-m}T3jqa4*tjQ_։\mLꞃ1pJ<,@l-Pi(D,ҊAcz}Ch V38hXs*b+Q"h !sR\ٲaS*NF×`5eӾB\`M:WP8%S 6 -(wA~"ޢ Ok,o -Ԡ \JeR!JIL) \ No newline at end of file diff --git a/mpdf/qrcode/data/rsc26.dat b/mpdf/qrcode/data/rsc26.dat deleted file mode 100644 index efafc0f..0000000 --- a/mpdf/qrcode/data/rsc26.dat +++ /dev/null @@ -1,27 +0,0 @@ -3bǘM8(u*DFM+^3bǘM8(u*DFM+^fs ē-p0?PT=9VU THO(xn&~ʭ};Z)`~cɃ& zr)e QdxjICd;QwPA#L5GK"3oPH Vֲч 47vR>]ƏML -REf$U,mug^Ldvn(9ȭ ye_v,"qR%=3YO8(I70.M{=!Fj{z4v6t3qSI6/D8#fMWy<[un,پ#=M@hnu|庑64դ-$D +韲t@v߰pReG*qHeX>.΋>5B{Lȸs3K X~sk$YPr/Gcʵ29&T -2#\9}W5 ս*X?D7ͤJM zfpP#\]Z,5bUL*" Z[8n`\YzB]W-.1CΡd;]YBEφSjXhQ l -m&fǦ<l?Ǫlt!2 u9 @Ԭ!^pF̡ߚ]=gG4E#{Cc&1m?tήf%o0GUug]ђHx68xK2E Xa+᫗FzE5 L|j.?Zڈfī.cUS'i?l)-h(U ]ԄXrk6?FAs,ng%"QZHV#y9}>ʎ_{Uz_yQJWZtT⅐I|G\ e-|j2B+9(1)_8፺!kW14Ǎmfw% SAOo2P n؈H^+4wdar"SLžltJ(N6dJg/ sGdFc0r>jyOvaMƉυLQ1'gT~.nهU@G'y!.ATvOcVļK5;acF')Xj%;TD2{ܱ&ҲӳԊBp9)2ӮZ\<b񃆆 -k0Jp2z؁_ȵvk ԰?[k:wl=}*&˒|!&d:Т'LsQ9x/yƍ*E],U[01肕~IدBds#r&OٵE)By_'Fp\ SeջR _+)zΎhAF6Le瘳tb_~pfb~A9Y;J`κ˿9 # taR`gm[-tlpdqɥ. CVK3j)C\rk!6+|XufAw\$*~ ÿzE4Ca- -U葔qi8P!l;+QPm/ IȶV( uoM^@'Ꮃ(Ȍm`A|'4(IG<~j@]JcFjEš˽3,4aAbNh[AJSYKp%IsΨ} \ܯ5)NB\]yiʐa ; bu8%Ƭ.#ej:ѝv{ƋtlqdZY;MG2_鋠Nmi6RuV0O֕`eY[{/d09eM'a(ZA/to(fCwiy - "7Q}~ַt-3;$*0z(TLe9%K)B=CL뇁J=]E!cL\yʖtYN$(+懅6;r ^ù, VF4`uT7X8o`b(*7gp"z`d6Hn]z#9;C̈́4FL,wR -%˹Uwn59Ŵ1 ]N['knV}KxS{H> -c'S\;eV[Ri l[Vٍuyj)|kh*ai-{"ľQoM($<0р&/y{@\zĩ rvIɁicr=2KɗB?nbcN/?5ϏF! * ZkA8$ѹ9Q_'7]M&ȥ@1 W4}\f R.|BzD,tp$ gD )<[ϓB lV8̓ߵ񴆜W$x7Z^ީ',-+ oHTuOc x74 mWLԤ:.%mSiJ^&q`d<ʥPB. y '|5i -mD3ktbg2j!FDCb5,rU6g: qjVMYitw*}`. `YG.M-1N&-"pY:I ;X8)n!&d\`ԫaNr|o,?u=@S`E;\:aV7D_쟐VJ[3^xl}y/&2;7JrhĶt)Tlk` -I~a2l,3~[bu+nr򞡠]rLw:1STj?83 -w JvO:)0{@E~:Wcja -tADPn#8.jyqߧӉ)Cbhw^f%Q8 =Ix^Tl6 f -^IN`M>H{2*Z;N+b^s`׿XH^lnKvziYjE!_LR6:c%[]~O's2%é;Vhc& _tW|hQJ!˚]FGծNUT(7lDjB,_9 #w̏U7 VF=ơAՉ%Rq-A:=򺷋e?Ո Q-3˥E?1Q:=k(ΜQmOeHr|ي]1h{:62-Jp BPZ?5 pB%؍v#5V4i%| -xCXq8x3EFdNSkAHU!Ŋ)g?.-fXYh‡gĜrK|*-BtU*й(O+}ٲwQ3UgM/l~MC&IjRW݈>Bh=i>!="v:8CiĽ"ԉZCNo 4d ]co@uF n_KR S.]Fv=lx}7ZM `p7+c<@$EpʿН.bp֊g+x#^s0YpQXnt8=02O $7\=zGWØb˗[okwN y%fZ&.瀎eK YHx~J+YtK-eI:Yڹ3W'F*kum6"+#RcޮYCSai)|,$/67ky;=|5y`ڱ+_T4efSz:>4K"(7g5^`rʚG3HX/'0tO$uN?ͣ 1Pg^79 -yOP%}u;E˩_zB \?L>a*46DnwqsR1fj -%3lXA+Z" fqvH+%T94B kcGfb[:N*H60Qf -`P騘 rJ'Rzߍ7|2.0j۾'9>0zBuƘ"Gs:1qODZIm5+OogH3GPVO-ClvY@G_c: -hWbFm -oX 8ehy,k7:g}e.PI?w sinI/SqpPT2n s k#7Y)#;Y}Dl!4Cm Frj{-'ܹ AĘ+*m,v9G>hь՘X!:C aECX@ 6X?JOojru)b4#K j2'~_$„W>g$2 -Dq~Zܬ_ߐ| gN[Qh%8T!}(v4 -.a"?-L4*lgDAosG,S R֋ЍT,iq𫏈5aݱzӍ?WRaBωҷZD͕aۚw݅PH5eٝn|s]bLҸx`4L^a1U#QiSCH ڰD q(HO>y5_{ zc|R{ЀA"-rw[TQd)3݄5~ mwƜ^6~,[!C31M'$m3j$,B͙UT:qւڀ=M !h.V&ܛp)HoWreNn[LW>mǛ*xѼ}3v˧D=`݋b@h,/E[1 -[<"JA_;`pkdoue_\os/XH@7ΈOlK@TB ;\FRmxն;Oج})[h@ڮ9Ut\J*ڦI ѯؗ߀v SL7i>xEW1&Äai\ G Ā$AmX"^b$wU@A&SNG6x"OX -xDv=ȑޥ )ʾ! \ No newline at end of file diff --git a/mpdf/qrcode/data/rsc28.dat b/mpdf/qrcode/data/rsc28.dat deleted file mode 100644 index c0e7d4e..0000000 --- a/mpdf/qrcode/data/rsc28.dat +++ /dev/null @@ -1,29 +0,0 @@ -  Жgd) 8uwdyJ:  Жgd) 8uwdyJ:8$1ARSpw;}t$6m{H&¬NR$p4Hgb0v53+-l9Z0,< ؼj[J26H.l SOE(#/LE M?T#~ -(m!R$VX`,!r7aHhUQ`ݏjfOAepRxc|ltcY VZr`sXxeq!הSc.t=^dD$4dl\@P=F^>/_%UeQʻy05P\3)qAo ~FPBHMWXBnQ}wKP7t&DuǾ&2ށk{= >2˧#6ԇ̇/QYj="ĥ$2% `MK(3[UۚE}_܋Qr,0 -Gl\unL (ꯓacL'di[E F( r(^U=z7|dIYSFl[# -4hϡx`|ks1$x3)@/^% -x#쨣Ti!g&LrՋ2J?Nk]!׉2xUpχ͑by˄ &ÚHXxrs 6d3Y%i DY!8T = tP;=I^EuGc}`wt{j|[fe5W ڕ&gvl­זPf]O=)A'} Y/m:q 1\Xq-Ac}W%XY` -E؟-'=^)acg<h}1]7͘ PC;ƓN_><璻c;6L+&7[t +5P@_ 8P"ŋ&MZu"4iTܢGQ4`NzSg,>n8' ضF8+3w& sOjf\+y1\R=hk}ǃ_6?bH1fRawpS3EOw?å#;,lfScEwJ@i=(Bi6>G^J{?D:b9p!*z1oB?YKu(H9nYq?1mA+܀01=lūrKWMUDGU~VxܰV}G?جj:4o!@]* Jop /Kڝ"g]Xa0Aҽd5q -oa-e)ac6x+]\Iz)#k(U2#_HqH J? G֜"FMG&1Q,:ZRU˜Xo`s ǟ"xDXi}g9Ŭ߭;*9\r5vfxOcz-=fT dPz0@`jXQ -R-FC^|) -1̺*qIzKR N*saW^5pZ0NXvj|k1ON -\t#b"MZ*e !kq -nOp8ɚ Y>Ǯ;J(#ZmWE38\HFG_Сi`Na$z]oRC*Qcox,з.}) ^_'. `?ϟb#n-$v;-|83o1A)I WpI6E*xQ9kvKSlVoLn քu h_%s1jVkq j$*[oOpՠeDI 䲥[yCĩ&W:`hLO[Dh2YՎh9A]ad͍ J>_'.< SYX|p9yNQqpVf6L.磬J#BimrD9/vѳ#̸k*V!b]Kz8H{DbBZN0|(l~.bۤh( xrיփ|xN5όf;*n5]+OЊ1틃vQ+jN]Q$OLFeӲwl(.Mw߄HZw(b:E" -_oλ~A8)<տ>{6}tyP:KUbS߿[{:/2"Z6-zsȎl^[5O@%i{g*?)T+,09oS~ hKW22X%삃Vz -$aVTo')d{SIӿ~ێ&~:xmgڨ-ߴ|*nQr0Ip'avC@x.T,dgu_ CzP/پS 4䅰S@ *+R=7}&3l#ѯI'cJ5ڲ.LHFER30s'|;e.f8 ͊;~WFJ[/=_L"^M~>?_}m7,vX3̦yƊ6+ yzOP%{J#-irgܠ
    l|3籔[~WO󥱈tmr.7an^*eIս~2c ݎHBTM$b,]x<9eOy*K:(꓉Z/rX4ރe<0>K}^ ֿ3[{_;.@w"{2 &!Z )'^rEtǩܟm/WMr׃?XYkz"Eh܂pz-jk5N@;5sw|3.ӄ~O.)Pېit8aꦝJ#wDŽBJPk4rYܣE~bڂV`0b4zgP2u%hw⢗K乖_Oa 8wGkBU4ΡvR΅Q5}.Y~$#EԡthB0TYtuUIW/Z}֝k0 -@oe8-',w;^5>O'y.Düf̞軇C7 K8RC|Md~<",esxVeؓ= 05,ltJ@)DK#/$%~݀kNx#qa -A-'g0 f3jp^;[S5LjK1@+uCF[>oi2Ag79S v8Hw=(itM_BЧirXv -\O *n O_A ̃\m+=ag+*tX-۵1GZq|`gȤ1֧ѣnbH - je4Z<9 Rk>Oly;ps5'P\u]V%E -o!9" -CR;sA$"1n!- Nx'ng>u(y<'+wFiPCdUFM4t.L"(Υ!hbݪ"R0 c~6S:% D"Lٙbl n -oz3e58/:XMtE˥ϙ-kGx^3D@fOt[hڈ)>u2?G(`WP_td4{eqQ!|ZBg;)AygNզKV 4nAT8=5XAQ| ' :_uS%}ʵB!%(mV#D /krۗE㉣GvTM`D/9~:Vnr%?jmQZz̨ -Ƞ{(ĺB91U$2%ϨљAXe`?װ{5 Z17i2/&`j%m۸`#<̆R{b]i!TT®,yNi05ag\0QfCyj_ധ`e!bӸ +vMr0"fV?+mjc7/" 3:F4mD}TӞ>-!Rq oȚ|ysf'SJʅ:B&gܞ41Up)67W@ALu=i DuK|Av8SÔ}yPC(S .GFڷqC7dA'<7p f.py同 wͽ_:MRk7y1$H"#eTXs\`E$:¨q!hs 9f,yRI9A6uN\c(~_2^Urh#r{p#FiWZH04]/?vZ%ap*T 0>a8;d@>\Ѳĵf1ba!Rc,s<l8py3 YKu &"Tr֑-ޘqCYk?1QۭZE-+,*ICU2c .JYbM8~{bG_Z{WVX0koH -]aTޞs4]눒3bsB/94XAݟ9x8 yW KO2LEt8G)pKsf@auACEL}DO)uɈйdM>WY3r%Fҥ &`h"^~J]'ȇ|N\x.3T;9`g|3pIv+|5yw \ No newline at end of file diff --git a/mpdf/qrcode/data/rsc30.dat b/mpdf/qrcode/data/rsc30.dat deleted file mode 100644 index 26235e7..0000000 --- a/mpdf/qrcode/data/rsc30.dat +++ /dev/null @@ -1,31 +0,0 @@ -MIKbFgي3H.J jMIKbFgي3H.J j񚒛 -, fw2$\Ք1aX]ݦʩ:vU+6r1uXw)9+'1XC=dH5G+,2b dpzCON[ u}ZS'߰QOtVlb:a+Ssz3(0b5,O~ʆ2s1 RrVNb7( -ᰆ$zȐmsjVXwd:;)U-LxP_t2тC VSR["ў)-1#N}䅩'/BEc{K}iS<6I/G_}tVM69Iz 0,f6P`j?/XמdbO%437ҳ%i|ۤ䬜nP>}H=ȕ-o\ URYnk$*-/oJt*>v7RZQAq*d3@7:Ѥs?_ޗGgB], -tPS2$݇D!%RZq$ubQF[bD{AWؐ3ҁgLD1xaO&c?Nq^ SYQ>u#Z(]K$َ#C`?3߁aP/8ҦYx!>͗l^8E虬Qλ9;}XFN\qW9.ǚlaO0rA8e)w@*"aM`N?!M{wԈǜ?VnŤ`'7X߯l~^dz!",315ܮi]q m18!F6E=Jhfn{w86#SeJ9tJjc  rk -}UْUE%ܠ(|".#zѵE}7K]޾n]h5چv*ZG޸֍HTZe5^!kxHzmT{-,Lkw`T|nI-]aTc2fEnQtU<1+k촸xz ?ʝZ=]~23"΋XQMGdS76_yTSHcW^06L$qHk"cBJHĢߌ%JЫd\}>WFT.keĹ5a/=f ͕ΘwK!3bO|K6*Mʌp7 OWܶK8rT.8L~'g |8 ۑAca >,TARiYF P,>H{F" ~f gE`ؓKr(%2ΰj$4`@6^p1Qʔ3WIruy/dC&?tWrMƿCY&g9 -5k]̍߶uUm%Qk ̤S#KJ7]P[D=\FKOwnI|Xoa[=I0%סaW6$4:1g<jK_BL}lRQ2 L/%=q!Tm0IUy/jBC*5 BbMRLޥBsb@E:Cٷڝ&EZX:,=5TU0ۖFkqjA96˔ͨUuZYهd"ܢc^p O2^v (WRb47^KnlkӨ;-.s Ʈ`lHP'~nϊ;@PhJoS& DƄUuKِɕY&Jq6fC5xlfKۻAMmWaKe|-aɌ7\ʃو~.moJ#ۨh}p~WT\o'j ^AGzg7o>-B fAj#1< v -ܚm lT͉n@եq;phU`h̷_H7U{zf> s\!p%Ne$QsyKY*ɋp?؅hXڞ 2 -1RK΃Sl)Ƴ8/|Xoy}]&Ҳmt(LZ*pқt`o(0{u[i1KX|CD/@[>]z8Q 4 ?*jI1Cz 6ny5}"6;ǖP?Jd}5Hha(gl}>UFW4'2"# boyxfre nχ^Yh+ >I'AJȊ 4 eT4J?ɤ;VTh(2-6).'"_s[H}K%?m^A;'؎;b]5>wtp=':~L(yg_ c? -NJ淬qSG&<(SW[:A+ħs)rƝ`[ExhrQS!Zߊ28t=s'ML񣊴-KtXz |q=v1|?eCj{`1# E{$ r%l5AK,Seg;Ϥal9o,_݇M헥9i2MD: YISf[ؤ@OjapfRD2w><86;dP>OxJ:LUw~zJߺ6|Ds]Į/R c:2Nux+$DM5&PHDrEM~vEC^< h=u)CǤcurF -{YЬ6?޶;hoiF¾̈*Ү}YX)PX0l9ƜgX5@J_0 - _%wh^2.L_k|u#*hnh>teF8irn[ǎ9*QaֻMvZ\, uչхsn|!&6iu)M_B&aGڶiNB-?JH0T $ K~ #tO{^b(ð#/f"{!@adGb{2ROyopCEVr!*eQ~9o{ -p^.4MULy2E[I!:~k{ PTKtm\KQ3Pu;aŴ DlGv1ՠ~:j8PU @^'%sVd #xt^[N4 Y|ѝh %NdEDoFyYm\JMpeăY&Gܙ  +@r\0+L 8@֋$,yVC6|ے -cN, % h4ۃT:#ı97Gy"hg~U($"9vIikK? ;ԇk9#hVqo[Gk4cFPo3dyZlR \NSөDm583)"s%&?=D}%]Zr>"w>Ր; - Jca >~ڑKmv_PpʼmR6ÃKZ@>+$N vsj|zg/N]tG9fmc0¬<49Ξ-Vu -P qCg~_(7=wA2޹CP7 *=l݂I0e*sEx˒0ӌXRheqF%OT5"<'ƛv)zijG /B+2[U< :M /R'p -iLM.%8Cݲ XhMwr"`W٠w@:.a( -y xwZne ?txJE#Pǥk}G fi2DŽqf:ͩmd/1Y]PX矙3t\8q+9jyB?\YhJRy 4[+vWfI'y%X̴ɚSbE!NHm[O'uiob"e:.+‰!Q" $-#VR|x!>D=-9z3Rאq"\Ҝ*XɶXg{R0 '+iD\ -v!noҬ̱ -. &v.GiNv{x ,n}.X;LB7]\ iVfeO,]fZMT1Aެa'_$ظ]xqaʞHT+q)>M -<{s"(S谄q3IBȶYa.VtO5h!^S.I4q8xvAkYQ&Ϩ`px\CovTH \A~FSŎZ<_v-@covlhO(~F6 -Ac*Su{jzy|c; XS=`bסd~ (8e^@)_dI- pu3s`aVpSgO+{cjZ{Q4+jsǻ#xR~"ks-9xP֛W  Hq[9.屛&j kmB*t^]bmnI;jg@WvFjޓL[_C"0 &[MTשΆ\g@P\b>lGU!Z.2:_ݳp&z2-׷LR;A@9oR8\HA&~rvre"-p4L^ݯ Ew*FYgC-Us DZU8hm=N@<)jw?HpyXNPϘ<( !:/1k7I|YB`5J=ֲ>bM,01I\dt0 +8 uI{ཀྵLdZsi[+ɎI:YB4w/QvG$.?_#G --Yԡ; @,&!Oe.@+3köeOSD$ `@sL*yO \ No newline at end of file diff --git a/mpdf/qrcode/data/rsc32.dat b/mpdf/qrcode/data/rsc32.dat deleted file mode 100644 index d18d778..0000000 --- a/mpdf/qrcode/data/rsc32.dat +++ /dev/null @@ -1,33 +0,0 @@ -t@46~¢!! ;7䔹7Xt@46~¢!! ;7䔹7XhAl YBB'}vn5o{o0 (nE\Z0[ccR>MY1(Hlc:׀^yf[`ťsԡ$ z44YlF@BخFoX+ WWx\Ί-\LJUvv&$4etBuw9w觡J'mu2qˑUP)yhľ6hy>gY5CLгiO\N *ƴƸN/ߢn'H_|?71t/*0hDd rϩr̉ jotg2G**%̶Wk__Hk]Wg4Sq ~P  W̬`!L–I`s+O=%hh[i9300Au 9WY;1- IIq7qaiV]@k5{Q߁ Z -)(MQ⏏:@EK88E46} -LHh _rS_% $B_mȻ+6Ң`~WW٢1q|N+d??&RЕa]l  )$o i-qGGE-ŷK|βj{}}[=2$7@Tume7 ^İ歹p\\Ӵʤ((uYS -29ܙN." =~.n->jl\ƟK%=6b^}T`С@>OO w@œVFhMpw0wx&d{:eTTJq3w'ֺ$Rʸ*[uu3@+5P?+h%mE1Bј1a( ->77NO~h+h̆'VzJKyҭrf``Gr*H`js3E٦_Euv:bZ#! (nww5B J칒+Wݶo֝+GZs}#;AAj* mm -5ՒGҪ"``K&KUPPÉKdA%;KWB{(Zy|t "It|UOdrkk/=a\D@@zG\? RaEJJn}1Zk^bvSkZ&|+))ظC%2#//Jo2zl.fH>܉Ih}),u%R{4ͼ_? | cjb (''d(;1"2&I`*2?{"x;NHH2m+\IĹt﨨'fAaaN=i AH8f7dM +]vL[zhVL}vۤMm -TSf=?/Vj~4VA!/ 3 '[tD.E3+OfUkQJ4],,$Ab-./b9"em$' GQ6-niP9 |nnݱV&#N OO`,vx9%iix+<Ѭ!qG -:* -$Ay_V4BXK(yyݪ!#wT /f_ՊQ%W7`>m޲?#SStĴ$99FBwO8{P ٙ&8rBy۸{t$ħo$g\j8"}{{auo9V>eqq>'V*.FZZ$caJƈåa"_FEivTY[>$>u4(Zj+Tp;y,d!'χ' !29*IDLx=nQ_Q|=)xyY- jOhO6x)Y. 1g d*֨9 ''b-& -YaYp|Oz$^9\ DDS(k;nL+dj"TeeEPߐ66X9؃[(d-=4a*՟Qa,SoMƶx&f& ۜ03nɱ= -@*ПB݆#X- DC s1y{.II;{xa3wcǎoA#AsC.oa޿ t22wKMXOyqkOРXu _QQDsUH.X.CJU/]^׎i\-pp -ܒ6D[60j%ONޘUgn8ig0lLe{^mC(Wrnؚ ffq'Ǿ'qn6OL#CY1)C~ퟟdU}_8 A.}￶8.Whxxb03 231xaBYY dцI=g}5IJiOo;.::6]S nn9S3]; >_*jR!SW^%z¸ ,ǀ 8~ 0@CFfvl9t9o񚶏@ߤs*b]9;tqcHA nVVfML"G6qrff<&FsFLYjQz-Dv92dڃV?玣9$$Y>~}3))|P~BʘMM56.N̂c«œz@+#4Kall8BU{{εN?(\fV0Ks&saKC0_ZODjm -ʕ붾&h׺XXH. 'cZc\^rD'k:Xxyy4oc"29D9f5=HN]6I# ! lW#ZEIQ}{XA;;:D~!tN~p Ҡrw(%{!:֊y:>׮n|[ڡy~Fg +,,Q) KgM?.%Ax΃PjIPg ŦukHrr4p<</LpxeSSAGR4ٜR;G'PIiU00mH#SSHMθ IE06 -)m镵)b$0p5D귗r|AS|Nu!%X_ZrvI^[[k-)T}e\ݣ H›( WOD]Ijx'?fpk44fC蝾o錊:,|H|hP,/G.88nITV"ţ`T|V﹨vuc[[X25b*](LJH r,ǒi*8Z2eS{]s5^`4}tvt{`ݩA9Ul!]RC \:bݹ{T.MX^#Bp--~%d -dcDھvMr+NN!Z,LW²KU0{booYͧw q SMTHr񈈭PUvOVU7S_S0;b<V(?!L -eEޚɑqq} %6LL%Y14 3PP5 %"e! "O`fY܏zT#iAFeZ,@FR%ؖ0\/DD^:qԐ #3b;6\:vM[i:I^$ԮM7 ++n3 YŨ*! fO&&ƓEsy'ׂFy\ޯ^a?lP_[#ĤC;; ¡c -oddk۰=֏]wW-l9wrqKf[-p@KLEUU"5[eej[_Gv훟|66TC!Aͤ BxAcg1,li>-)0 - -Zw>wDτ=:Ohq~rʑ=|R0lXE/pͿ ;*G*g# -#)QlKK.Hv"y"/vjH@ ~c[/jjWϕidʛ7TAI5 eQ&XMMk&u((pՔlQl@Dnc 1IN]~]+Fl1Ë4DpcV7䗡RoӨ,/!8?v ю_{22"nm_;1\ݵhxzh*c1A^^Vu$9nIYBQLAe/0:;:0e]zaLq7b*+0*>o Fkq==ww)6,o,ys3LRVV8ыFmu8 &xwG\ȣ~b5tٖ6g^-y^YyLWP:MΌ*DDuXz)#W͊/O-jjpE=NfW 9鲤pbbUpv 0v ,S#-r'Mk#ӈPUFGbb~mz ewz:`$EaUV CCpMjG\}bjM87ϻ'ap4:sBlBhs\x:XSѵ85 ypH B V_R3~#,xT>--XtyT}kMt" CciL@i`cV,*C_\ zdX?$Tw7>>+]%)%]țK~,]]ԀG8G${!s ~Hn||:Vam&JRJ 0+f -g;^RT˟Ș9㨻|DQf+8FX5|Z.Z15KlK ]uxL/M 挘/},= ED@ҩ5U58Z{ - -r%d'C/S=k=ȩ~Cm9߱n&k)N++htDŽ؄#taCq2[rHH;|Q-fRR-(71gKiiw:pj* \ No newline at end of file diff --git a/mpdf/qrcode/data/rsc34.dat b/mpdf/qrcode/data/rsc34.dat deleted file mode 100644 index 7864d34..0000000 --- a/mpdf/qrcode/data/rsc34.dat +++ /dev/null @@ -1,36 +0,0 @@ -o~C -o~C -x) 꽴4>2fs,V |ޕ..OD -m.!+ΑUĎ:}BQ99Rguh|d*̹Xie7\&_\(Ȩ/rc}OQN4;KRK"{;#\;BV?Wktلr5r0ЯT?oE4_nL"P>6P\fn0a`ZM1+~6|3 p/&(9&o.xt [x^)* pjPC~ӟ,S rUR Jܝ[7}*ABPO#mE>An\kC*df&kVyw -\x"~6vS%b\fY+wAcQV?'~ ^BZ"C4nm -ٌhP@]5HE(V5i!^cF&@wؓ9DN0 Dv8qRma?H_x/Au4^ܒD1W85K}!BE+H -Gu LĐ԰fӪgM.c oa{-]60s}ɟԁ"X2QaWyd;Sd5X:Hs_ճ0>cIʙraI,mY{utUMC#_x_c]gmjk u)b.޺.zq2tB[4UVCf[ѽ%N;Q"rǼbba|b X?X 󝠘v\gl@QuuGV'clу= fy^LPr,Lj䌈fuvp1aZ'<[.o[\@C3RgwTԠ>IG#>%Ɓ5fJŁ\ 1Tv8)7)/Xu }&' >nAiT=1ccbr2̐w({3B.~\;4ŠF*|9ֆTyȵ̣JepN5a -kr0j2}L'#'D_յl:(4JpLVV t'l=1dn(J! ܎ĭ3V:/~N-U7m)imI3KpƯ*⽒S"&DhՓI y_Рр[]ԀSݜwL^}sR'Xү˺[jP -jB 7ƌLt[,5ޏy!Ya~;r`>p{~ ^!h!=B$iS q 1F6m+b69 C7b&c,p -ojm)A! SBSkŽ6x±?OC\pyA0wNDXD$A QmVQ{C<ו=}y}} Z7L -%/UqjxK:=jI >[\_;WZ #`yY`o6q95@NGl`惷<$#:DdG‡ -I8S% @ eo89yst搤KȅYvjt {c`|\iM]*\UduhC??^-0-Jt_Ӓc* 6,h(X(̶gJvgDKe.<M0>xM%?Gl`(&F8SZ}ZMΖ*(B);s[- Rc8#cփ rX6u@25g;Sl_tFtܑ\RsR~2Kyg|EI_`#zoi#a5xb]:O;E -&$5~G@']-S -+Y$]_J>:PuVNؿz -84ݼX2@˜iQ(GS:xcy8gi,e /i< b´Nx)\&YQ5#̴҃[cIJFl"pء,̀q Kef$]#|kF|Ja"zR2i/L!k (k@.ّj̔ysb<mpRnR^ n΍n`UladRSE9ETQ$IU$/L5WN|q8 wz b~mpU<U6*V1>`jZsf7 /97h1)٣Yd=P'f\GvY{UݐW슔F ~;ګ3{X$;ܽnaoRMڒfCTg9" (!DdgW*i#܄9Mدb4euLХ穷;(C -]Ys9XI ϼV-A%hW2od<y5%q]פN>C0{!r?r)8nV\=sŮi= EԹ'ge no.>:G,;|pVIxUQr @h M61 6XjiB$û0G0S&G7ͫ:G0mTz-'{E'Yv %0| U6=aBeBoC~|#jf|hѕKl <`Ոe%6A`g䩴=k7& H@O ڬ=(8,-x+7zw ?:ـ"1SiDr5i@n@GJ$^.& =tz+1d41lyMoT8R&Î7!k"'|";)׸$g}Y8 pAZ9)Xa%GnDW]jHKY3;yJ7ʻpr =聍=Ush5NvhfS!/̉**_6QW}=@<aSs&897bKFiJ.X{O3xo}Xeo(h.[3S7^JU0-҅MhjE֔wΤl'fdT^ՙ9TWyh'Icg)Ϋ(Z% +#%1G]3YjgMh- B= D/b?ͯo"wǞgܤbGq!֦AJ챒aGF=F)jq́{t&vL p7g70ä6P2)ѧIZ W* Hj}}NZmVYEty6pN/%:FIJ4Au,zX^x -2ęuRq qLЉT-LDgrH(iftfF0òwj0FuC _D'_XQ}AǧpAYċ r~H:gdsHRC_m@[UMHw"F9֌ch2A{H6^W*)GR'D_o/ٓ>7d^BP-ր tut0]zMrZX`\?>ԅ53>m4Mx6 'ӤOUo)Orb~L MC$ ܓ>8SK+<]Ȥc9u 4Ar댭KLwao*v@=V^}H,H^+j4p@M2@ijS99G 7+Nc.v}WʷW઻xlTb|Դ̳,n^rn2z۽ ADu QXŸnByl1MybR[K㑕:ղzN7 kmn.#d6~ͻeyK J u즳 *sks= 5vKf2xc2-(&1#^O3t+u % %*3BO32W &6"M[ABa_UB \7Q׈Z0R"|s4=yiTh٫Ѷ{і 3$ -`Ş1leh/a9#"ZK_߅z5 %p'v(X~Gκ*=o1hHK -OE7X7DleN!Rͬ$[ۀHzd:yBH y]}u[DEK`\Ö-P aזs^Т5^\OýcnR1XfkSI%vIUV~q1[~ns\#%Tp,p[iqv45BYkJ -gR6wg -ERE,͜7`"čX5$W4';43CI^X|fdKgV.çZ~1${5,ɗ,D֘͆t <\9q#o;(;V7ppE2L?[ƫ%vS׋s bZ/V_M: yO~xƒ{M'w|;Hevgs=Ј"d馄,]a7!ITt6▨mIܩޤ91?&rDQPB[Fīt&} \; L+/VQȿK4 Kɳ$YT}/FrC)Oo:AW:xj=ʨ9m-H,0CćEh* &"߽WOsvP9$agK3c:qi3#|8NbE9^I?YՏ$2$)=r=eZJǯd)7'L` L|#ф%  -᮴ -=w:xQjSJ3-eѳU}|o`6o w$ Pw*၉h~ Ztx#xBQ~Rp$;%ǸAzA8~˕dGR_(ݪ-VIVqz](oN@4? --:\<|ßt<?|g2p z)MsU+Dܪ+S{XWv>WQ'1G/iG&p0d&N>okUBϜ WZ #lb:@lq_.yH&k`+`ϹdZ hP<5eT$wbwL -n1Kt-C`+ڨZENeNhDWn2Z~ESBd*:YqKTYJ`ݯO/,lz>3e2ʄ"OkLC:k.|FRVzQ -mFw.п7)@,3x[OW;kʣf@։a;T!V%qc)xRTQ`4$N=2T!$O"0.Krv!^I!Ջ.Dp-)>*4J4PX˙Pʒ-WL`uT=i$CVݞ(bQ[Q.`ؾd  #)+=[҈{ -j]3 Gk[{* JQ+ӜjК<`Ҁ2Wu-4(H*I\L zٵ1VAH4"7-?}! P_wOU2*\b>hb8=e -ApL"nUBa82'@xs!Nˈ-H \ No newline at end of file diff --git a/mpdf/qrcode/data/rsc36.dat b/mpdf/qrcode/data/rsc36.dat deleted file mode 100644 index cf64fb2..0000000 --- a/mpdf/qrcode/data/rsc36.dat +++ /dev/null @@ -1,73 +0,0 @@ -CL{I|~I h-+JY;v`;CL{I|~I h-+JY;v`;8o>6Z_V4vǭ>v$Qԍ]Lۄ!-w}ށ.pME*u!Mp7-'99|l,5yhKG|lRa0gppcw'ՙ rח~cH BZ:m\)TB]Tf|zWig]A1@`F;_B2]=n"ZN6rrXguaEjЖ<;'ap; ;SXn MV8G ӵ`? -+N/>!@=3{#0?rzwC UE8^戺 -KÇY3wi-@K* 2Kt_>)"R Ʉ )p;uV -L~AҢ$E̵ٺb -9v_-odz_4aPib!`dL(dDl _Šԣ1x3vN\ͭ򶻦cܠEԛx.I,0vkOvӛ@]Kwߑp`n ?1?̀v< -"AY\t̃ڭUw~Vݑs^|&Bz{fF`{/i{;8(ڗs -=ϡ@@~&+OO#pu2 -i"믛 -M;W)[?k -6l^3hs6=fZTdu詟Ͼ| mRDM@iR!v%g{G( -nRw|iڠW - i'vOk+Cy*Y $KH"+$:(MM4X]`C>Wg4HMwAK i+crZaiQA45v|H+73vXu[h O=A}=W/qB5c1GUeWP4iԲ` -[t=tH4٬\U+PHT󧥈u%; {G}ə [gb3f8 3a9G!\v8"$}y0-[G"GqkQ_!]SE+\EMVxh#j`9gtkI~v}w<~גX*`$+Q<}')?EVQ &٥%।0ZTPgaܟ@6~.&b~G'xD$;O\_Ͷ7R'7L -^;}!Yh9zU0衒G˪/$k(?%L߄6׌?[c_!f) .YgD/E:T 3^,mvp5*P536Kz_!;{co6|x+.|8^1Jks7LV,IC [Fed߿41DC+&+8N:xm-7\3%ˠ=d![B\F!i=#v . }R~lؼf}l~XFE/Eb4WTtnb#Wzy8101*O#[aSU$*ҤfCy{Xx1x5'+O#w5sBJY$7P24۟y҇]{^(  -7,3J Ty#av r -Nɞ?E4-V/ToH# DVkOH^`-A95SAIꚺDf6sI/s2[t?,=P6њh"ͺy݆>|h>.8D7wJRh -f#1wc@Co8C2(V: ' -a*Kaӭ׼7Mm -9a -)@{AXZ=LU͸Zh1j}/ї: eV>n.f 5F+OJΆ;!Ļզ$,2XoCU, 6Й]zƝb-2ʮhMV'3=3E%AtxU#qSҵy.Mz>hE<8/V%g[q:bMH?xs-zGvL,hSW -J,av@/wfp%fONЊb -Aw9=ɚ]t(܌E]k‹r].%B -%pDHqo w>&#l\L:N(HvOߞym6O}O M!cQbltV豀tSqnN8n) vB9r`)_9_I(~|'OF'6}9 XiY?I^H'>SPES~#Je혣:sl~kO -3܇Q;a8AHLjci. ^an ʶƾKBQR@\?7G^t@fڌŋ7aSLj_Wi}]e)p_˼XsjTjOflS4C:k Bvx?1Y#tU#Tm܋e&L͚&)OlYV\ 2q+(اe9e=#Q] Q5cZT.ۭN&G"o.7^ġ(m'hAaF:wK_ۺ# "ZX!7 1۵qpou:bM`bTɇF,U -H)TU6 f+1a+KҌk0u}n܀KngѰbqjNMV -#Fjy#У@K29* cu&1HflLJ0 -suŔHn[dh[(# UoOA($ -e7Kߩs 6W7DP*wnXfWcF} -ϠQf "׀$g ) -4 ŏ!C~hZ3^2y01=F֞XJYi$Y -ԑvuMc뫸KP%, !]yZrj')i%-^0b|kˍd~Xz)gl)}Diӧ{|/A=|xoƗ`m`f,׬ GlcG\>0pۑϻnCK6 -% - Fb -@s<[jvo=PCRL? 1b51).+1p>d7PtNuT_5g39Ϣq@Ϧ<8պ\1LߦeGen&rR!+ǂg :urWYb^3tۿ=#|.k\S@}j.EݓJOu5kif*!ڎ -aVI1-v'-> -=BkQHwXd X}HNdwYd%Uo4@.GRc5uc@ql/!xAo7|'IZdA]Մ=}Aey^d_6~^$q;,J̺jY0T{::$V.›Nn(z$*;Q ij -7Yrz)>imP׊ Hhs,tY0pa}$֙ 亳\JJGmŃې @OG ]Hsh}jXvAp6/X4 |L.xsy[SOnPuVjy<V07ʑf@; Ǯmڢ.:fwmF8qc+&ٱYv?aiQ m Z{(HWXHº1[J0K2Rd&A^ -2~U BG8 ӊړ柳,`7Peck+bG9=õگZ/sD]D6)Ej8ƌ8ͱO9H? *3j>=qq 0I#L!b&`Ҫ>?4ޛ% -;dl0jȠ&kBA㞘\o8CMP{r^}+SB֬Y霮:b<[ ֧[g1$<ɷR=p;&`4 Td`C^O ,-Zq&\-_#%UgCKLLDHbS,| EOPY/0CuM]"3TﷁsrNL "c~%p)ELBN433ȯs,<>Y/{B%d+m -aUpR-*(CGeyrIRr.Fݡ[)M&Bl/I4=MtIӾPNNl.;r[xml|~z+dl#ǰC{,\6~b*.F誡F:> 4L$[):1L4u2 %`Xtmwj%QwR˞زxe ^*5xl֍}Ƥg -&NkD>g 'ShE1lDFQGMj:]\nFd6y:6Y|ڕpZ+Y̛s-E#BD9B$q [ho - hD< 8G / -AS _SBPpLм/2zZw?om`Tla";ה ݏoL}D\ n _PNзAMͥ•"APJ3@u@D[{e_zHBztc]3iF{DIװ7Bn@bow7h 꿉ҴrM$36k  #tĚĨ!q6XOQIR :o=To%yIӸU?XԷlCiVbV.` -9{ѨmduÅKGFa!xy2}w?8Ϛ&!'FKF -EBj9>DĴ Ŝ4nYx=}_,"}[drToo)Lb8ؓ0 `*20ڜ&`&"$O1r j >R 5y]жPWKFso&ޞiPHo Sv5dP!ɮOL@.ԱXgTVZO(T- -_m$,$na]O%gl)2/n -1͐mRmqzV-A"DCq"e$T4܏5,;gM8,ՃydgweK3 l`􌆊WmQ3鵸]5*D߳H -q+Ra'7=hAc$ -T4ϷT -zC:Px8ξа -u(%SB д E"fMd`=bz$ -E!=4xIEiuiZ9K DZBAH{?<ٚKm{JK tCo*6dWMJpxdpXBe"Q9NR -xؚ+|J9ZDROP/P&U:;2CZ&`"_M֭xRF{jsSp||Cn8Ѥ`cm3[%Ν?RKq ]RcR'S"^zԏ2>sm -8-כJ[fU -326ڟXIE]Q.ƎqQ䋉Jቜ0d,: w5r|` -+?k#܆k5lUZ*J@(#vd:"_"ލ]~X%sPf/^Mab/x(z3~bOKij[b-4v/UʍВ(dYƲ;YR\V;2b|onE?,(3/o1N@;XXpehIf2cY`Sp“jfrY Qxpib%yQ3v -Z~r%Ns2B\Cl{N9S"k{)(L(BV}@xu-Inu>7Rza0a IuSZN}g )N J[$kljd_9 -Cq=Yo')hz KEˮzqs*\ZΉfea؟_O'rYeW{ Ѵ  -Dـq?g74,DZK#c3e(&ѭCуc]4(H ׀1>#c3e(&GSiƺhP %b|FfuP%Lk nŒnӥ \x -ydSBaeUsxjoc..c6ґiРW=4{:JwOJ?#Rh4`u9$!^ ־*ɗ99-W@.'8o>WCo dԼR 4.#4<&+ޓ"\Q\l? ]0zht?]- k#a\u6r*2e!T]:&\Dj}u g~.yFKKywh < $rEiHB[C7ż aިΥΨj5+%:բ-Ư`%-GT43rrZkm(8G\NpQ|Iц#޵ct"pPtkY.%QZΏB`+Mz BȵeeAhK$\F>S3i,h/xLVA9e¸ \1"6KlgWc )gߡ;Do~g`AK57[ -~!˺5ZsK@==@[SfZ&h)${;<|F.E¯.lTdBUtLq8.*V*@^6;j8,ǕuWdDoBRNŒ0\UНxHҐ?ne0#!#mv2~ʹ]Rozb2wMӁWM)jVJtY9sZCe)]JZQfvnJ7broFOƠ}J84bƨhWfWAkPpࡢ*/AF wP%aTa7l"6V3Ƶ=,"et=QED诿ֲ\JVI3ӷ;e9vv9,=Z~VchNj̾$o4wU4 -GH|;f'X^G— 4OO_}>oNdb&wWٌm*,owɩr݋m]bDl#ϻ8YR(Σ{zZgXXZuV?Bk;'R589u 7m?R_vk?mYm?o,iK͖jn.B<ij.d2A^(Mi_HK7Y|A曖Cz -z:9'eLuO W*R:Hvx9O4cfQMQ5 Y E-P=ѩqY{10\CC\ mըȉM kim p ,I|'Xƍ[L* YSwU<] -\qTTelvpWX7]ޫ`[2`\ 2BҬjQ)vȷ~(tF11gý's4, =~që3`4SH(鴯(BݠGa9b@2V~b8EFB,&[&FdoϺۙWudoYfZ/LUWm$!G< -tf dLG"_RԬ{sr?Rg <گK& Kt1G(4Ҿ1TIߔl('WϢ%=%ܔngތ"]+۔:pUhđM7Ra~Zof3}j lg2 kMЮծu:Ӡm%_YT^9c"@_, P\P ѝI`٥"hj= -G8G-AJ¨nDlfw8>z;( XD_zX GGb'1zj -?{'lMD愑7͈]CcysEKe/ர;nA -. KU%/ -@ -*}-- -p(83<_6In(&UddEQ !Ԣ/Rs4P/dm::Wh, -T]l@&QWm -IbbΛgNhX=oz*"Kfh//> ->t:@K}6x=7@} :PMuCuP]݅8“rĉWd]- 38ct`>n!3۠vfX5G>HXEpXLL -6>iU/ -c;ȫz])]*iS./v^7: Ai07w3[[3u̴^!HBMx C%ȘnB1ϯjv Ƚ|F˯ҙ@?D) k>A>)wE[5yu~ ';i@+5uN(po*13.O/w $xCL))b3eSW2Pmhab5ePNQGᮬGkReMǏȀ-SmBHƁ/MhYJzJť5΋աD! -?V{5tЕ?|{(9@FV%} HרV1'nf,<ؕd*#ŖT$o$]v; IΐWOkᚽA AtO]JǼ<rD3bM2L2iz{[G,JX"9hzA!w"Xw@K 'Q>"WD& zops뛍/@%%/rVTWx׻Y'Ą]Z"M"ܭE>?gp|vP˰{Y\/_3CwhGnS[3h7Nb4KIim,~N KHWLhQ LD~-?cO0`M%-b.cM3? n 뇆&cm5x> *'EdR9&XKk*VnnV|E>k0={EĂ.xζʆ8J!8ٴaY#E9񁹘TcbyNy_gLt{3\+ oPΉ䃶 -"FubE`㽻%;&F`t6y5.@@53Wns F(҃EͧgnR#t[0O[}q?Jy՜"4EZq]ScE8;ۄisWW(~>띑ٰDndm>@I2gb(=v -싅o}6geZKYU);:"QbV=?>)LoIGo)y@Q1f^}pNQ+ Bty7x.?2-S0KOy2/f᳀!!a%>7AC -`b-Hbx<̉#Qd3A]pޙrG]% V66 0")(j[$%#뢿0CODsjݜSɤ/)+x\kS|xi2SS^Xi\ tbG?3XyUC\L%Ǣֿ;t \oV!G;ӣ0Wt'(HeDKDE` Rxˤ:r&uП6S :'x&xz=I$ TuK[C V -$2u}}uh{ɳE#NV`Uz,6ܩ[U.# ¤, q[lcD0Htjjs )-!LpQJܨpb?k7JlTZ@iAq8lyEsh_Daűy_ס'21bvFP׸ =A-Y,,- [+! )Hsϕ)(LCW*C6{w+ch -޼:y鐦 -м;;rFC-K?+ٿ~ 4'5rf_ V ߇F;?e)a=1FtZyrN3HxN;7%19#wFcP%GR1cT ٍ rI3-^4Z܄I>e[t+ ^/a5ĴF2"P!)'aFVb:8(:sꉦ-g!0AU=!m{ppa\.P@6|vQq -̽V{.pʴ9z*R.["5CoTggTz5MQI՘c^0MhPБY)ێY4y0rD V]kcyv/Dk_iu2j^)^WGFl ]` lyi|xد]n$@NjmZN7uIzI7L.<l2ҧ!ܤ<5 -m^mV0xGs*)Z4|ՊEML+AkO{GSyʜ7*+yUMYomSKeʥX2oɝ$.S/ ${M - Nf59? GAB{9گ9O?}?`8q-_$y:*QVIf8c{gi&(}1 ںX[,ƜYr'A Vgw$[PыV(.({S045Eҭd,`v`1 U]w=5\s y6Ȩ"sBm٫|MM:ʭ^wA}v܏\i_*J6^̕)z?-z3Fvq5{ }6b|pv$TZZ!Ppf{xloa1e PL+?1ux~ŢZ3-&}OaT:3N2&q>ȝmc,c [&o@BY^äh^R0.d!iVSOp5;d? :#Gwttw2}c/]X{$L>{I3w񦔈DIeU(EaɆo> #+Μzs$TD+W^K*AA;HwlN~^ C۪ gHjCx^'|Ss|8tWilznU׭WVVR)td@CfK!$cΙf4Qt=Sp;G_/ȺZEfpƃq7o!oq5X;hsJd >#uzi QX :|i Bf]̰maj|< :a0pFxrx΍@7]P;y3,\_ϭk$b, qO8l|Ҫ_K^7AvKs2Ը̂wA|XP4*o6 bw rUYR6"TQҦ\ۻ^anZJcgѐ_[ MC bA8B;DӴJ^Ee&ٻkɭeNw˕K|ϙϏgCJ'3Ss}!ⳒmD5//DG #6|~0} a6BDv=&nY6`iݞ_^nRwiWI^88.(Kf }Ў>;Mfj*n*=JNr֪}L/4|(NLn}S'$<'hҟC#(X@) *:g/Ǿn bZ#f(k# אТoZ~ƞw`J$IZ\ƚfh^I}ȓI F9#HG?{93 @~SiLj y|TNȤrL󰖅TŬ,·NN’+/ܶt6pQ/j1!!]:ܬ -|5`czaq,)4\%q}YY}B!ޥ(n9Dҩ;pBp'Cݯu)q=MFr?o-q]-ˡ9`h`Y@e,a( P1S9˔R[y%t+#]69yF趕`K}~,4%D2h=a,pg8#<9y'&l1 8lel>K`D=RPԶHJFYc`2*՞>ɽ T%EJIwWqIŧ*{6{%"U^+&R -V$֣_uZ5vyivLdaX)n_.lFq낇l!d,ۦ0,O7G6> ~;f]>qG##?94M1q'E(2WJY]c&v_MޅmBe v[`=JqB44B$NkIR,s[aZGYNPOʈO!Y8MUtL!#lt[= 1 'B0cUp _B"gFQ0NLşzH[Q@wUHQ%]!zb!N'y`ƪ)Iͷ-DΌ`̓da{ي*F%cXlO\-;;SL&2,m7E6#@kA6zFUX2U˟I&csƏ׈<`%I>o:Ei҂pоň%{-F3F~r=8hqbY"NÊPdI=Y \ No newline at end of file diff --git a/mpdf/qrcode/data/rsc42.dat b/mpdf/qrcode/data/rsc42.dat deleted file mode 100644 index d004026..0000000 --- a/mpdf/qrcode/data/rsc42.dat +++ /dev/null @@ -1,43 +0,0 @@ -lE-iEAgk4)&\BN" 5"8ų2lE-iEAgk4)&\BN" 5"8ų2 Z!}:WhRLDjD p{cd -wé'\v{jf_f HRV*v B tCm%$Ԉ83ȓCL(JLXi 䚍1Wk-6Ey~u -c0kOgNՑ6$T 87( S\5?*a>5G4u@o2AU-*J H p,f;(+WX HYWsx_| h/A/1~B.-_9/ -Pѩ)abIZI:l'"); X$ϳ.G>kSkb49M'. `+m?ola,H:=UWE<ņ^X h^jJYؓ}!eTFwE92#pnPj~ T1M|4!o6j^y -xm7s1Sw>'Zuϋ3h$0$d>͂gZTwX?vPa3Nja%Y'Sȃ|8B8iӆ L5UVe64 (^^bS [\cZ:5e맗Cp;g0MF|(|؇7Q\_g#r- <^Wg5-}O ,RAtN -G DROh?sh<$'ń:FA:vHq{\|-֦֍E 7hr"N 9) $u c΅%K$\6(&6V!%ڗws~Xt zMxs+ؖsF8fNQ/<55Bo}NQ.Űc[W8;BSʨS -=ur8} -. -< 1 qÝqS2rgwdF?$+?O0Qm -[kbhBlz 'Malz[ L> rB)#E逢\Kp3i K -"qڡn -k:b{ g|Ni &f{!\l vV )I0cH`* H|"IO54=4+ݰS~"mX c>!3 `{4;k@P<f <" sJ7N,p/p#j+Ue#N \T2ޫnR&R 0+XƯTAl}h8$=yAPa,":aBoP%5q;* -~^6-stj'I&-S3vο`9 P=!nۢOi -:'%TEBF{e&dUFZx0(]jZcoXs9u[9譜׈*l{0)UrG}51|n&P:}~*MxHU N-}g1}ti a}2+Eu9#H/gqD_n_Ʊ3St,}wS/ZQn)KDvw%r6-u DS>'XVWy>3rR4.ma,!HM@CGJ/H_{qS/e] K<kQJ -&,nlP#? 0LlBJ3..=IA 30)S1)%tW>Ⱥ B3č;wWVy21.p^x=jjI!g"m];=UT"3āomiE:sHH/hԝ_E"e\}4ƶeî>5ypGv鄦M_z pN* _&5 #MnP׫ʄx u,Y8Z\$67 xb:3m'dߖ'Y7}{vj%<o/VT~\("[#Ȍ~HV8~]`<#,#sM)/Єص;K{%.9y;:  l`CO^oLlN ,:|䏄RwgFgQYf| M!;ūh](Hͩ9EsEx_Da}% ҋewD(<_wt[QΫuL2 2Gg=2ƻ/;} ͉n{Y٨~/B>{"#Y@GRӒei`u(YAF*?Dul񆘀i1ڧ͗gRNÀT@:_2DuMjhzhV} ]Dn5?â~A26̟?S$JsJhC.(Xڰ>u|B*f6 >)e9&,h,v!րxW8_C"_NQb42za]E JR2<;xDᙔyn?`RS>kjcb664[.)qL_t8P{1bS:{*o1B#CE,UIM#!ϽT8.GǪ6Z b"3* MG3fUQ 3ϵNWq-a72"dVS7rF2I^Gc8+fJrWr3-ƍj`ݾ =)mم -`śX=^6[m37 ,ܽR%ӧi7=[nY㚾57+To -D$q]6]9xfe -,6JlZ<@,Y6 3|?NU(;i;+-*1O/|digz[Uiph f\%*f4䤇h\WǯX4B_ɚ&.<#^1 -s]>w?_IdՏK+l4I%^ʅ%@9x?8 /LX:;?~`58j_ -`R5edCtH1>m F~@`'E> +Of_\G/\}z08)foԣka/(Uԉ{獧~N~tFW= `Rզ_b7,RJծ|'ɉiaUEf1Cvɷ!1Bc?EU-!5#:\p:vhM^Dw׬o P +@3V}ϟKCe+qk 8$WsUbk&m*7T~$9m*-bw -8S3Τ?40Ӯ(ށM(ɍD+Hvf/'Y6ݞg= t6=&d9!ЬS@Q.8hx.6|׆xF;+Q}ؚ^]qiZ -zQj~YdlK#u~3w'kHUOA!І\P't lDCB\Az|c9n}4|T4l|R˝rLXKXCkB]#qt \n|q_ yOoTͿz~zeg̉qpDձĉhd> m!wC&@äd}ULů}u8I#>>HylO.CS/xv,4/5x%lݼ*o#DHZt/j[C4@?E!ky,j[ayxvLud1V㆝xI&nh%&,smrM_UUFl{}?Mc{cm{.FywwrKT O҃6DzOXz.!'yGZ鎌 Ўy.;5rci33 @$)dn+;p`c]px@d7HT?\# I\"6CL@ԌmŽ)'e @R䲄ѱ60J܎vίIu/[&6>q4֠zq$l<"Ǿi']zR쇟H7(eB@7 ߅M[(ȰyĂĒe$Ui"ء7cmi`!t({蜔HMtw \b?/OON˷SzI\ GZG *j!K#cammr2HӅ,rZdʃEM^}0Iu  O (Ԥu_Ꟍ '͋.uPI*o7))Q,c*u`ʂiuϑB`}Ѫp^n2q䇎JPH6{i?05av0)sYx2pDu:n$sݺ7yM_*"ֶ}~AQr<3R2a=£qx 8a 43.JG`Qܨ|~3IO|'llh\R☾]%9cS^ƥA9wcv50_eNN]  0pb$ĦYt2T%biFX((WS>/F( 1QN!] - -cݪvBg;)p\g=I'n0Z^PyOۗqj=Znd DȬ ɦnd=o aapV?Os&o+&=+h 7ͅOC%CY;sA>#7Qe?fZӧa%z%R{WOi4,[e|ʯrk'1e`=\Ow%)Q +zQlfuYnXg1 JWo ޱoqZb"$;P3`֝ObSnzܲ)ajnVHKlrYU@?ZW()zhK ͡n#BY|5xg'E&XlشxX. lQf~sPv}vVZETAb^JM¹K-0IfR!W1TtTX}s[!ҙ/٪0ۙ"W,2o2 -J[5:YTW@mjڷMqm?:NfD QChUиCh =)L?>\xF56b=cx%#ר?Aq-@gɝ2'|~ceȣٷ&5]=Vhxni"һ^Z~iLWKC - 0SmKaJQ#iJ1r~+pY{5g{0&(^2tv~ ykֽ~Vk,TYD Z*=?=ּflwNa |J`}&^ٰs T -$6S4C<#EdflMyUy/g -=ѦXqyEL:6yb"EK!@.[`[ݮ=>7mfk?+*)ahP&#$:OnKwVR̯LOq(JdTh0<ɲPNk<ȜlTNƒrS Ci bEGr<7FhViք/F-?&zEvj_Gu%Laҫ3Lz)]{*:*,jy뷣I Ÿb5mŶXG{'A3|"B_ZG -goTe -ud并-A1n(nw0kQp1-OMd=O4Mu7PL!L>I<φHum؎P 4HD[T̩`Vdl~[޼v>eن9ޝS 0p}ΐ._PjxVsILgڞv^+*,t-D[xmؕ{TIpdҒۖT@I7g-/(oMɩvsk5-by/cܮŵLd;pE'rH'M\nmqfKzݦAׄ'KyV {}RnUe;TaJ޾;G{J^l<8c`"c@o7K]|Аa߶R<]CnEzAiAFNe%@0n -=EKS@BiOP+)7pg*Gk_>hH[)_d7 =Ů#'y SB7o^;CoK^8AgHȡ(5!rDe-SƘ2 -M{GDto(&Q&|JVtrf7Oc+)f&%2@@ *s4†Y#]4+kB#A]=y|b;b5 ݭ}\@>X%0R/GpvXZh*UYtyboh,&EF1Gٱ v0WAIhj3}#jsG:}4`YJ]oEu MBe8Y G 8_Y}lΓZK1*`$)C3iS.=+G@ a v0o{+[*; (8[3 :++o,']~5)tZ/1#Dt9ZUAxMͻM}w~S qY1,A+-p1^ Ra]h6oĎosѻ\9:yzC[HS6N+~Seh|t<&QVo,ʗxLxRBq VӣG[Hy\UkrC|ɠ?yޖWٮ8U/wW)4zCbG{.v:[YVf#YVO;ypH}45zYJEᡢ~f6gLJp-DU0cLTnHr ɭT"Z:pOfU~>%kh`+:ğC]!ŸLƠnV>1F1ذZ.AP4$_P{u2VW]W^Nl !U`UL® -ҢuTumvw>J$L \ No newline at end of file diff --git a/mpdf/qrcode/data/rsc44.dat b/mpdf/qrcode/data/rsc44.dat deleted file mode 100644 index ac3b30d..0000000 --- a/mpdf/qrcode/data/rsc44.dat +++ /dev/null @@ -1,45 +0,0 @@ -ov/}Ae:M xTf>c2)J.D1ov/}Ae:M xTf>c2)J.D1Ae^]Wʗt&$̓|/(d+Rה\>bLq>RN5/6TB["}/H+I5ރps`jiy6[> $#Jucn!@ӼUu /bp5s@&i[ aQ+ -dwvh,j}u?; Eb93RpyYP_Ol;+98!ZTv.AC}J1uxw?p+ᤆZLV(J0e4߭9*A.":4f 1+top72L_]@"r*h -jj?H-2.=>l4~ V­PZ*+P>_F1˕-!,6JOhoY`4a@aLAmNO$8弡҇ЭB[>i#-f&/<ȯ'\:^fp$ry!vgW軞)M\:_"REߙ<;9V!p2& SWF; bp"!7>A1u U}Hn5daf؉q`<UZ@}Rz\œIhxnM -fcY@)I.Bvbh:S<`,_%п{[NJfg|DkMKc^V:j&! PǔDO e]o5F`3L|YX:2k;=5!l|HQF2kmBewHwh 3os1JZ>KC 9U G,?!O@k^ Sj!0LGҶ<m¢VM jq9 D8Eui䵫#NL<s)"֐lp^c4}>EX*x3P%\|K~v&?rf9Q+!p˩{V&JBR.A$-t@5o 6<m.x~tT3n`· Y2 N]K$kN-\S9}YV84&SGdb$/}Uj6;T.+]5h8t76hb.VkQnd c(DmT/;n2ioU&Bfq}'_5  -~ۯZ5dq\z|;ChU6GTVQKzg`q _οF(jb"Ւhpn}QI|,b7ZaBXle]+;՟ch; -,CZvY(2nzʃ9]FG)<چwOQ˜&>ڜWH-/Ype_GcU| FZ$M }*KHcrSA0L^.x_ۍCN-9t(I<{oHBӮ1XAW'(]M}tځvb {/Nlk!Rt?D/xvrBdAM,L5>KUcNqVGًǰz -O~;*t9v7 #DBn4|,=b?(@j"E9DA N]~YP=J0+i|ԏ[ȇ<o26x&Gk;i YwOfb KĂGP}.=a:퉚 Y.Q2e=ƲR0\ě 8tG#Ax"(Xy'sV~ܱNEh}߆*Xy?@UJ#ͩ=Jc &Aߔ$΃q֚Ƽ=t9_6 -LB= Jyu9ϔt[kN-ש5) 5˞%;j[fAg?td֫Uvz ғ/(?nXW^vT˵aMp~K[jBswq,+&>'d5ɑ"kIs- TEXѵ?jv&謹ݣ>"aW t$xC4[$f=޽b -0|@crXS~UBg+>n,l[~|#/ XRPJS<ּB`qsx,*.kKYc7(ISOixmכ9sW '>L(khJqb+rp$4wKFxIRD=1 )OhŢA/$eQMUlC6 o|3ŽTfۡJCɖ{4L8 ~TvȨCA&u )aڻrVBoOkLՔ\H%YZ]gj7@lEeꍴ@Bj2*ɉ٬Wl0qMCr;}_(xU:y]\I'թfE@ -d[-/ղLEV!-sj*m2=yu:+ipၵ_ 9H֜Y'ZI(r%=phxL1mqZ65^@ݺϡ#3MK8^F5bחVl- $n <\AoB3 si@*k޼(>R5ȥ!:Zh{T؎37mOʢx]#*f'b"2?J"u+-ED5[RCTܞvrP!WiŒgz &KBW}FG؋|LǦAeđH ^(lv\Vj0C09+٭{(rƚX -$ND3<ut.pon:lЅ0\֢͡ȫ-aiP^(vmT, ѹd盱_ʠUnNVuXp7MGom܃d15>ު6L̽,2N-jc=1"KwCbDζ9G{=-eҏ), y%>=C㿴jwKvߪ7l$E&s/]u'KH)6.1eDO8; {fEg⥳\#"Q=c7PkD:?9[<ג*EZMrBe䦶zC…(YpIOɟ'Gvnt7]aX_ck n:5!Vv#Wy*Ɲ3Я㙄2ݗpav/*)3۲udD؃87e#SvXPd:rq 3Rx o'ؙb.z6Um^S(B`KQtCAcڰ-L|%!Z^[27:ʾo&gq<0"rc `?бNC|?vnS yMB/)m~aU8 [^oE#ȂX.j$ |QA)V-x3MR0EDHdZ1;: f6^`!˜w0* }Ey-%[AvT #rhK}cX@Ѝj1nrlw,_v#`ZCn4F݈ - hCskXz~P<_0I=ԫlw4D]jb"oD=' ˊr1sUzO`V4ݵ,qRQx*ɁsY"^\]8rlB%W懍xGdl.LIu -U/m3v89;#Ĉ1~8Fvf  H -o$7Gi@3:8S&ѡ - \9k4z5tb( o#Ę_|@%^Pg4rnB0q)8@\d(zy`9ŕ+pQFDP&GaW6o_؞-*;{SLϰ%ߴ<X8PN49͝T۰љ$~oFOzy8{ഉkә18DݔO غB\㾦bTf|2gq{L%5H )1ϑezErlç0:dMTctVaIOw*f%E})z%r]Y5 g0A.Zѕ>O/jR{w(= -JU׼$Pz 3SMNnZkc]g;j !J,v{i2̂-~cy"}G+Kg.7mSWX?]t6Ose&W@;^P~w<*o 3¿ -Ú%"eM&y)'LD~U*![+X=o9f'w+ ocXV=YL|NC߱j?W:D։{HxC"'K?R}(%ʛ ̺>pj ZQa$uw~M9OLEo[|D®HPf,gQhA:m;Dc1 i'6E=s0hSHzg#`5u1I487VAG-{;7~=eϒ#w[ŚmCEҵg|Xس6FW^2{1c -w5*eq G4\7d|KJ򁹤ȃm!3hpnl 㡱LʔюHx!e74 Q:-oXT\֖/EnP).WBҞ]A<ӹ/ -.J2nbO;`16璦͛8ӳ+r%!)NQ|: PДuVeIɻ'Q.U -NHh+@jn`3K?\[_T$4 Hh %-ђzbeRÊ5"v r۟'&gqUdkH6K8/MeQS^H3ʿ !;14اW0 -lY(h~J|"NA#0ߗW&{>C,lsRfg }w̫_/#]m1+h6p[7ՅG^PI -neQ<_hS3W1\H|YO&:*wM<+ 8YGLe@R"k] CIy c[sT`( j EƘkY&+ E5cUJǴ8Cn؊d6PK}"v ]xpWl -#,UD$@>*u;dTïEQ`x^a|vӾPmyuZ !5VS6_-~9\t<͒NOM̥S&yȻ4%i1Zϛ^^*SfݮFżOKɍ @G6w܉ k{tQoy*S_k,B ZԑTIdz5;tVw:G<76?>lܙKъa,)Jϱ^[(% r%NmPQJzgyE:w W'sbx”iǙ}a7,/;@*GE|ξA8?Ng^3]@1ŏfibAxso(CIB FJ +?It`n'4C,sa ﲑ %ڐY6Fi]rgظ}$."U51Au) -]Nw;7 gqWϲ{r| 9kR@b0ǑD hqrVM,. Sd?ZVz򼣃q~F{Usp˟0uHaY;hed'L kBG8E;ꚗm|Y2"ljqilv1\ -|=Fָ/ow !0n :zmX_ǫFf$apij"3Z@Hqs. -ߨ9I!L{ZrS[=kaHM8ϩ;7:@x*ބfҀT2֡eP|mjW7Bt'+,81ǎ"g[ܭx ۘFiɚbefnO];G9(ߞYaFTQNAKm= yDd~!ϯ UC`9cMS,\'u^"PJ:E[IDV;Z]9jɝդM2$Ѩm y4?%>'^PJťhcsQ6)H!iO[ByҙMY%71@0L  ӝ`LIX'k$4Q 5 70rБ.GN*Ǯ Q -ʍ?@IPأMi`i.2>%]yRdϸ|4~87[6XA&eJG$Ȍ$`rV{bD?#O;3qrWz$KZcRXJ1GދsKbL>O z/(9w7Q!dv _{w|zKcuԍmGInR#lk\b -pv7̊GuS=W{Ѹ,Tʪl&^-h9ىf$ -QUuzؓydrFDg٢z.0an'֓t~srݶYx9T>[+=RHy^Mbz?#8VfL$ٓ42&[S9G-ugQq<c=)P#Nܷ%X$4dKiB'0 xޓk}n° -ƕu t}jBi>g_sFT'fC/՛~:07kvVXgYRi}tmH/d3W# ^sSTRfyȈ pnF:˦ wgp6nAEFj%zB/fl2(;uy<8Kt6ifO"N Bt^d-힔zueq+ȧ [¡T?ْX -./m(\lG7P4.$>Ʃ}sMKx| ӣIQݷG*05̬cL!Y:/Z2OJAB=ydnt{aL*I,xouUY<>yCem~iխ -˔fVpA&`D?U;~+ ,xB _Ec)N:$Quċ~tƁ87as_ M#5k=|!3 -N6Dc)$/[1=RB+3 Z&_QF^z , D2XJI!j?t,ˮ`ok%sdF n{`S(*W,f\d K}7]:a9Vw -|ym/~(Wi% 4׿ @A՚$UuS0&R,zꕱx9h'U^Rڃ& pՊF)\-H1I 1j}zhgϵ_?+TJ'HOauRZ0 f#8 `犈%"bkevtIlB,5#'?E"Ń$]vjp [`{d3b)&У -s%ٟE`Tc_+?#C;Z(J"w! K—y'" \ No newline at end of file diff --git a/mpdf/qrcode/data/rsc46.dat b/mpdf/qrcode/data/rsc46.dat deleted file mode 100644 index f4764fd..0000000 --- a/mpdf/qrcode/data/rsc46.dat +++ /dev/null @@ -1,47 +0,0 @@ -qGp|܆ PiL%ٹX 6wp Z&qGp|܆ PiL%ٹX 6wp Z&$@>.ҘOyJ o:l;($L6y>`!9/X2o0vC'Z&<b6hj>>HW"]|\-+@C}4t؃vP sH$uk!FZB cKqa7V@ -Pg%90ijDZ-/!;>!l=3|Br^kѰd `͆. NLMx -l/=6ԠJ~Mi.]exs9p5L#Sl ~XM?||ǮD[#oZ!V{5h۠搟H-]E׻rº=K_ep*3A cMBcG? U]Ɩnͬ)Jr`$QqGZ^ma<˦7Ce}Jف ԎI2Zw]=D՜7SGBv|Bz*fw} \@u8^zlD -V%R;-QCq @) -en]]\w'G}rj7FW"~+cꮀݓmY%oRKP/26wqC[=SA:imF޴Bj _< G6ū]0=#SɱZy2yC/#W9zo]O" qVZI3/T#b|硺kizC , 7! $=0Y+Tu6fͳ} -fDf 8ZTie`$&-gma5 Ë'0ƚu~41g܇E(]R3H 8 n-KQ2_$D})V ;D;@YdhvaTV: 6灰LGb' -Y ɥƥA.W;[J靁<{Oޤk^adl"ⷣ$8$ӹ=yp~Hճ />n[vh!&d톶z; qtڌuE@:"xlK`zF=lHlOhG^Tb9-qB*횸cjh14լdW^F'4rMs&D⣬f^F/;ssL6O"bF -Th';J?EeL6&a_i 2{/􏻆XnB1@Hza`wVl2{,R.RN 3ߤqeJj꽄&`rYo  -̽̇.p> /UH -LZ6: Wj{i N`MvMR<6p/NJZ4 Ii|F) -,I*ih?b/:P5f՝o#w{xYueXMqI8 uAc oR}mfra{q|?zX)Ln]CT pvUO@o2~7g -ܑxU [uCKV%HyQӞ&};@nʯ {k5C>0w;89uXHiV sJt*Q.4.Lmhe\)NzPZ>x^woXJ'+$\(3vm̪JX9H!IQljwT-#'0_XivP44+Ƚ1FhŔtYc`lGPC=}Z+Jț:-90Zwz}8EnWNK Y9=ijNiRomS|Ջp@ZdA;GHRI"G}sQyN|grlmR-SK]ō"vvC!($t/l}oN?QV36ƫONvÖ4>g5{McBpWW:?\Svy'xU1]ּD;s[oHe DW*:z/'<ˊ+[)G.Lȃ}HQpHoz}{.6^U|Y+ '?BLom ƩCtjYbp~׀HI&M`+A71qQv蹓_tDag,3icQzuF`FW! -Ŝ錾6I)d:j71g}ö!sY-S؞б =črZ(T3y})miAbhE9YnY`܈I*>PچD2kp<4[UaȮN8AhNjLi!4Sg[Eu9M^vxPxV璾Ht"b$5^zք-Ů:W,F*O柘lc)(D[4_:kNvI ]~ʧlL.g[g؊7̵]m~NqiD@}{rEһd^k&04܄byM؅d2(X:,:UvkXStYaХy!$\*LPvd;~\3@IOfU?({GSʔmgL 2@ ]%-%Rf5ɇJ( d҄ĴwCRf)@2g ,+\|u^M7;lt@,+CT>[ [Ɛ暅욝ˤEm5)cx[l^.qh!QA<(ؙ$6t2IL[{,|.fєK r+?R*?XT~C^W& tߠiU>j̷'F=4ɯO/#ԾSraӭy2pe gr㐜 p@S IQE*!A~c5a!j _l:~;Y#肏7^36$'ER8s K)Ã쪞mdnο$ Rt6r2Q?`_4n9YO /pi?(-<놖m J!Lv? ܷOv'2}#/UM$`6K(XOQLCCY"j|`vprӟ߬6TY0 ŒwQK^*P:kH߳?ϲ -&W+KGիzJ$\h\}ESЏʸR<9| [G :!}E"Nno5A1EOUА(@F٥IxȼӲ6o5h}$V}xϡO7 W)[~AgB3vl'xUUP}rMog7>eA$[I_!bƷb57s>4?.]Tx_W5II'Kc/weiP E'h蝻**MkTsXaNfL:Ӡ܎G9_1Gr;Kdg8 D^fB]7,ǣ NR5u&5>Lj]H,T!+nɰѮ{"k$U8:شѸg‭uJEKw<~ *Ւ 量Sg\bN*506(/G佪%1W7> *cY?^ZS z0x3V8dVP5SȁѬ˪ŰuT~|"Hs:UPfWI] )DZq9\JaFg " #IV+-ޜ~(y0[m|mZ OQ;gUJ䋮q30&dʟ_ j%ߙ(YflKӜ<31h2$|,jƙOr\r*F{"ҫy#B0) -J'ͱ3i{?#t~AOq5N>!_be.#v/ -/Y1se]^&=[f(`oASp\:>1s5ޱʡ-齮T7t^N#xQ VR\]0 0 L@H`mQu?%Aܐk#;=s\l0"VqŽN~k޻ڍ.Xy<"흟kFzo[؋hjMy^@O> {EԲ$#,LV/OY>n6b1]NpZn[\MFw)Aa8hOǃ#`)YTܲ y=T|ds{xh+-*1>3h"3D-f*0Rzbʎuܾ׋]˝A"e+p)ѓ _B hcίr e7nnewuW@cǸߢ}`gxڹ)(ә_fwuoA9a]u DO H Qj8yZAtXq^qS缰%jG- Xx "NBS_T#-R!Pht+ (Mw5 "S-[ؘ\_P%`Pd?pؠX<Β8&Ao6?,Ïyζέ 8>nC(w&Y,e - 8-OǁOHB0xjs,;kt-T1Hw45kak$so"L`}h=SE&dPGcځ:V5 1fv8?@$ sr0kQmtXt֭ '>½W96BH)Tev{a -+Qc۩'r;K C ua!8UfU%,$w[~P65C*yߡd,@;(ɘb\-W i=_MC7'cFˢ\IJZJj7P ȹqO1u,?G0sӤ Rd+y춼] Gb֔3g=>}w~[TSB&XV4.o'In=(-u<vOA/XV,%aJ&~1fk0 /eƅP{#iܰ;$J&%U,|@xݿhDb)USVl39OtF|W>=щ]n#6$64k/H*Al1dC -!YXM\]W54kVIڷ&M -s 1#*4UPj%C&o~T~(װ9L]Ҫ|ԅsNzhyCɉ^ժotlIhvZ_sŌO~(b|4tMxaFa/(w»G$őYd iʅ@Ϋ=%7KṔSɮMݬhH #[ܪT3PJ ӈ9U;Cl,:d~hIr.sM&^(;2C?)3g%2iB[KbZ n{)E3 <(<+W~I_P$Zxq:1EoS/=YkBW~#뽣ֽlEٱ -gfԠ?Q'G ^" ϰ9EjL#0#sNdF_S^ HA2l5P[s󞷢A7ay0nDYHri(mC"ջ8LaK,WD}ϻ#=El45ͨ`WY@/k'8-7.DE#besq !}'P"Tt/{3~yL0V8.KHt& $0z -̦{UKќ ʄBGn>и-m_x%rW]u@tB2e}5D9O.9jz\#riGxw!D|u%qto1jQbC)S=PqW?e"yMlOjo&&-cyLpe>2s+?IRW duzLo_;m5PK֛0*M{n"|ʂ-Hiow.% -#Bed۳d`&b{y+5kKT/ޣ-5ߒEEhx]Q>c ~3^ɾMgb툆=xI]Matk}:]rf Ͽ&8JǼGT@O)ubf 3{KPBT"v1MW_gP( ~ : B`D=n\kfS}ZNdeB!W7k63jP\y[]/X|Fu5V&xQQqwd7"U$9t ߱&RvGBw_|=ϸ6a BUFש!2; *G(ns%DäNLtNJub -E!m1-cl7~zp𚬗M7#uXoR"T A %?d1 -4yrSpowJop_OFxk,Q:(y2z4{ VU:6ѪA4;x-CaF?^]1>V:`i%г WĦ_Y 2QB]: -\نAr);_!>g'&:'M%дt1N]߸yۖ˿6r?j=8xMVŨdAl93LY`{%^*z UQ1i3 ~!0" w7.3tzr-Rcs'E2!yؕh[6-N+jv:B9Uy7hKȇױ2Y3BõlJ97m4 c:fgL/ #&hk|Z .7%P`DkxD}lNF@3Ss86qGƵ&)':e gڴv a Aif`Lȉ#KϾ J[[b~/,N|ȤALjE(k}z$9 blY;/PE?!%xf+bdH".X)/ݞzz|_SmxʒvۈE3h%*Z_O!䵇sTmCDK F `RNc+/8͡fePFe)Ҍ-V]8'_2 ,A~A֡Fvz<`eI;yDWg4-sk\(#yщiFVeql+ZQxmbz"<"A x6wD'# ֌޶ cAy£1q?x'[Jl>dR& 5=CO1pGo6?|yHFӗ{:=9X)㿷^|OlĂx dK!6%ka^ Fb۶*8 [Rтx\]h׈hZ:z'VAO\KL95q<+T2 \ No newline at end of file diff --git a/mpdf/qrcode/data/rsc48.dat b/mpdf/qrcode/data/rsc48.dat deleted file mode 100644 index f26e340..0000000 --- a/mpdf/qrcode/data/rsc48.dat +++ /dev/null @@ -1,49 +0,0 @@ -=.5D,o|-EΩbhSU;u Aqkc5N=.5D,o|-EΩbhSU;u Aqkc5Nz\y)ojXK_#ZOSЦ٪v7[= -jGEr˳֌u|_tRwO7;M1%_m RG[ F3 QIn6*,z%gϖ@gI=L7YMS'Xok -{enQmvY#-b?:J;GgWڳ B92'v@aiPx3RNV1ڢJ 4 -m }_1afu>!c7QgCqlsTX2(?JCK>Vi^Q0XWUISsd-\1#ߒ%z>?/n8*ewANMɩ"sK2w џ04CqTWxm~BE6۹OG!vnYb$d?i#s3 >0U_qw4b̓$|BnY9樰d&CP~w3]ٮBpc a  -dl0Av[,%2eUBQ6|0`)&[k _ᒹ3(Z<5Y$扔t (<3Vv@9XC_(F<bF*9J|C~^-cys)p{TQ}OD>?L8}fp_:shu[%@^md.ɱ#`hⓨ?W  lxN)-[D9^ִW3V>),:N]6iUv` "KJc(.ST6BcYūRyV5xAO?+ڙkGWjo(sC;T'i07qxݝ}"x.oؑ"d?=ż,ty]$Nf@ZƥR%_)[;{ꈔTn6Q^Y& C BF.Xn1|~C'p?!1ྦྷtG#/[6Jcw 3x>H1lA}sɰ(:x˕CM^i)PY89z#ft1|\:$cFS;M~[A@3 y/RZwRzxк;_m% 3!p5t0D1fr u9f|A(GRXt$lE&aD qtsгP.|zZVWGo$ cԒЈP$s,(\ߦ[I#lWOK;u7ͬj9S]eXL? )Jo\'ugpa킴tN~V/U֎+0K,PyvMN`n.'?D=#CUaL7vƐgnF,T `PÚtoOV's\#ޭ?.DMQ~0IzEeX']8HCxM_l7xDֿ9 UEWs .dKmpx)ZP-k'{j9">&XU7 Ex'DYf1(Ծ߁JO>uS۱^vȏVH*[@$%,Fn:/oV~4(Ia.JDyj`ؽ,PK0gUB<{;tN @6Z5ߑf NBr/' F6^e ;A s`˶{FwMol薨Ys1w?}!#^&,u ]\[s9=D-' "~K!wy {@C/󛹇,78G刕'N%Z2kmrKŶ_6ÒB^ !gݒÆJz$6Z_E:w4&3QRBAhHzyNꟼ-@oܷ -D !lÉZpOIa`•/v?y"f G]j>øa)> -#w*]; y[p`cX$`czXp7lZaN\jU W#5=PqsuѨE_F+ Wߎ N^bR@SwifCcR$;0(q֔ȉnItOY2Ͽہ] S 0<"fR{oU4L u2e!U'HqcasQGrTB/jݥ*CH2i6J ovLVmݶRbZ9!W:[$FJ4~"blotʲNq4\xavrރ+΢ut 3۶ wyRAD#}(JcϗpAn t~įo'BCIR{V}Ei0۴=F\:vMI;P^+,D$#5Mk4.Z&_|-z+yj4<2B\N̪EŊ?OhJ{䎦 g}aKױ"%땃.SQA ce,jt?`zd(KGqi`OZyդM2,9+3$@kʙ*<[ H vb9DLԡ}ՅJue)Ьn lt>x5|eW MY2JR! 1Ɔw\LH_sFʞzAV#Jov 5Q{ lm2L?>(C}w<儌'\ks;]bK)翯p(Aa{ޱmi՟"hW*>,k-N~BbaSWѽF^lq eƩf9| -b4Y,W-t@`<"&X* -miWqg}Pa* t7>kR,; priAFGe._M67=%l뺌r/qBԄ0kPY1߉{3-= btH#ƌ"vAO4<*fۭ^%q?"&S6dLm-x^=a|BpEb5 6w&ivӾ*J,.9K8f$>BgjsY`ψ/bi(̾'F Ib\2<&r!giZwܰyukn_*\f e@ArEP2ێϤ%i HعIŝL>*$15ב0npDK~A @cS,)C{HXP;/&QMFy3Uv -nׇEԗ>/_!5yf -W1k8HLnliSi[r_FpLO^VA`X -M#߹\SN~zFp+ٙmldߔĦK~c_=y?4ӘnUÑ=܌W{6X[@(y,8iM#Z+j!DACc)-"ן|֞({Op.x 5Vm FSkȿmRå 5G| YFe*Tvܒ*#&`C^ҩ;W[j712atbdc +@/M`,xD̤{i}ho2 -.@Y@eukw*gs14qߴrBtH'h9kF>f:p^)BsSz\Q|LƀЉܡiDǝ y'U-h9[VYc a]@!4jv]$WUH='\u^[| `qnaR"6-fqۤ}!u:'i F-MPOƃ3o@[6tKT|E b􎏟/H^FYδD. 6CN<Ɇ"kђ]}Mm`2uzt8AıNK=l-Zc+sQ -jIhD㓳uDJS*7\/@Ɓ -GX~!#,P7[X_pɄ<ʯ~/Ӛ( D=]W3^13CU(d,*X.7rVf] A-H/T =}[]ژYxr)GT~B bI({& wfdagxͶm r_a=;REZ4^ORh[_1S=ؒ?”pn0-.٢978| -Mqj"u? @U#da B+qc%ZҒDFXfn0 ă9kV՜)HDbUk]2&Oso !8gqMF1}_E#|1.I9SpH-nXb D7.3ߏjMYeyd:~| 0Px,N}vyɐ6]FS9|!jB(폢ʳ ِԖRcCP.&G$ҷ#DeOw=[T+K%|Xtz8j腇ʾ ogr^H4ߥNiZ¦gq5:O0r =2ītds\$;i1l"&jְ`_H%ǼzhV7w}[h)XGOyZ]x"DϟL{T%8Ү7(/ pc"XȨNi`-wh>WU=yà§T n3)e|֤]Xyv҂&$QTu%iw;&+иKp [)1-#%c\lnzJGiQ^턵`֠bf80Z,Czw^씐(}vOӷTy|Q#FG'A/1) O\m# <F'gD QC)qӞhxT$GJUu õg3):8 Eχ%J1S&hxH/ꯖiO63;2I~DL릟liȘZz£!ѡ -4#2)j@l_ȁd~@Y-q5W -Cva%ce]9hbtTEYU?Lg aTX\rp$H|ׄ> ^P& {GDa չpHmNb(Of[UaN ĸdx9LBQ=Gw}>60 ܾT8\Ć'>+b9 TVE-tG(6KUwq.Qaʀɂ䅊dUC}J o '|TH bj?,'LS;k]Uv 4xdt~rYwؼ9g q`G܇()s;{IXRxj0h٣]Џ5zTh7@S"2+}t'N  aZq۠~mA8 \g]62nJbSGu?EA[PӑwrvgKmRqם{r%ùz."t6[;sRT@du3or ~f}Υ$&{L76䱺EFsJ|= ܈J(n8:) $Q`ꖅ- G9#MCy^8&]Ѱۣ v^mL[q<9*?A!f1ܳ3|2^B-^XA/ԩk)`4 У䖧lI؄dzOaJ87]BQkj[̣4.b'p6-ط x54"WXգ{hu,y -8BkbevT?~]MQ"Il/QiB}K-`4z -w85gmxFZk?2r󣊛%R_G)$Еn +-}|4ڛW5;$Yb./>L|07侌)OeT:*>QլK1XOkzG$/ #BgZ"PypIHEIw1_]"ŚF)%o3K FV#Z3k8/!ڷħ=.zT>&Kc@Nlhn޺\C0Vm/ciOȥ5Qɖ qz]:k~ˁh1@΂ Es َp[cn\"e=vV{Q&I-ܪś?zlM Pʮi`){2+hȈ'Il4 -;kOXh8U{NH4:yDfC )\zb+9`m _ )Y9 fV}i=J:pL)*nD%E7k0uK̘a·]߭bޟ{m/dkW&C;b<2VX:?t9K}U -l^TC~hy=*4x{vT MF:W'p -P?va"J\TDV ҀI8 ROA$'13.bCF1*+ŇJkh:ЭiXAtigM^R\Q -Ȭ͜%4ަɟ#Ah.hs:2.˓d6I5okXz0$rfZ^M=4+Upm8Ï , JdT' 0e4xL@ò`yTxHN{gl#w[>5! QKesLHEjzM:=5} -Wtle_׹k\9]r/mj$܄w'} -QiI"#,37ybϒP+pGN$"ס|U>O]8$lj7,YZ1"G=xsq:f6Eһ.9wC5d nBGΰ]>`VKAUIyh6L5j-gzeoBō;%$ -Xr7ڍ-+YoSpnx4WKM8 -{ы%2*]fL͍ɀimqS{`*iVDjc,=y͋Q!-(8~$/, jڻ0h~strKH6lB2=% !LqxI,߳4u!@1;*?g -˦HPtŎ6 $B1_*3p2@0n`zV& -c)|.:us믋N`P"3/5td?g7Q n 9 -FZOuK/DŽc(x*>CȤ7vaSWz+5ԏ"!֕ʅC/$eͱnvH<%uCȱgՖ1^3sa؊\|?X/p!:{4%a&xJ95ꆣ6O1bf­ ~^B&tk>F_yV'AB0(xD:2i何M yhJ=Lrj[lsbke̯љGm}o Le㄁Sr+"5KӐuwa ²ИY?rUrZ YGo Ӊ^qaPTS|U$(nw:G›7,z~ Y2dkBtM5Iɯ35/-VjյDq>Bѕ7c^HS0*-w=&z%nڏFǴ'W/( K+pu(uY%H דbTfdCA,`:"eˬL.}>o0+Rk̮ʤڲ4P &d5 QK=b{!R\atC EwD3 f&^j ~n)$ \ No newline at end of file diff --git a/mpdf/qrcode/data/rsc50.dat b/mpdf/qrcode/data/rsc50.dat deleted file mode 100644 index c3a84e5..0000000 --- a/mpdf/qrcode/data/rsc50.dat +++ /dev/null @@ -1,51 +0,0 @@ -3:ǟd$f.m3:ǟd$f.mft#Y2%Y}H#'Y\}}xw'>a3^z|3SUbnWNT=+O=l7r7,D!ߤqGB d,sc?;F"dJ F&NS=Lcymc+xe +OQ3³HcYqCYYwt'[JT[!"Qy UP ϔu_ 1f,;HEЄ)"0n-Xq$nQ0&TT$$i{&Fh+hIA%Mf`!jܒD /҄[pz@tUiBhiUO:i:_K1O=<+k=Z_P/"Qw)pBn)y ^ nsnZuXm:{iK>s<kv0ɇgx0n&vh80ޜUI:hFWlQё򈦍5|Ϧz%.V%/KV˞<$@:+PFPjF^ HP *N&<8qf.m&{Ʋ{2&⫆NݨB8DBɸ  3 z]!6W!z)V0ۢoC@@c5Cky@by55qXkv?07w#U,9L"+StY>vot]"ZýMRD`ZKHܢ`Lg>HHoL(yCVs9W4!=<Ƹ,/<*NNSѰ2GD}G4 7WJEB &GԹ9&}&^I*I} סDp])J\=)mcS$C_)C&$ -ހ?В׼T> (w[(Ǟtt[[b)5+zxVz $U95p[np +5@pŒQ^b4iEh=cQ$f^D49R!9]R9ܴit/Җ;/|xU,m{fPh8w蛓lPujڛ!l ljvʸ<}ĸ ,(8,2``Lp`Sˡ%tWM]%( &Zsyo -R(osfM-}-r#MHb'ϡ.? - QjQ --J\#2J^,!Y|j#)[[6x3Еw:[w3C3eέi(C|LxHtgV)5O y)>m@@oTm?$׉u$Lox -{Q]l,NlۦNN恳 p\LK/c =KydL .K.y7y#sq5kMq7p9z5)@ӌȿ?x$":ULS؇X{Kmo>+Q-fY+,o#M[#Bk}lB7Rt2H%=scgCD@)Qt? `Y޳I]jɆaKjj.?~'= `n(]t"bU"K-"hڊWK yL;@LhF - XMG߁r#٘#DV|D[d;̐:{?GE{?:l{ŧj IlA<!mdg*62k}2ٖYGM2|M CPrǮlTKb O_E(u E}_R ⹦\*ϸG*l h%5BkzxmkX^xTk {_}dgh2Hx| eɖ:]5|"zdz]0]"b!Č0pZ@9n) _ LoWr sWLL 4+o*qCT:ݒ@ -߮ÕJv2] |5l9j"\_,R*zR1*,HR/191L˅H~(>9eDl N}ʡ˾!``ցp~ 62C6jD&|IPPI!a1Rj!Vua]LF!U:>=I c͒ZcL{Hrjඍ0WˍVj9;9ˢ/%hǡzƢHq2FB0mŬB3{mr]B{M{ wlPPMhgY_rBr4er4ѥu}^&1v^ѫ\]cGD[WtqD~n0>znV ̇ډ/>\ X?-̠+yp+;y+Bk -mxmKX*0 ?Virʼnh?mIωlhhdPI7WjG^Pp Xd&_#߽_J_I9轮*8A8JPY C.ڞZbe?bkZX mbmF& 8QRT4L$P"k̚Z,Z""WAFK =qN 0_T%e0y;t> 8;4>OyKJ;ԼfX}QBfT \c~&:8Z?O?EFd.;X1.E BoPMBH2M#\Bы Ma٫3  ι4/:FR7 <*lf7Itff1ʳQGP hè%m"֟.=i.c~yx-iFάR]8j]eR|ڀ=]K%~HH.ksH/UD4tyѦװ$mbm?̤$kmPk?B?EJFIsFqBۖ$|V -Z$̲VX0F*$iF.AnE&# -P9ARָ|ALY3sAdwI}m/J}Mzu#a2}2u6u a)R6~@MbkB߃k4bԀŲ^68 l] -K+{6±\}~ Nz7xg>훼}_Rd䫎E,dd`l*,a-<1¥<73-P2DٱĪD2і(ZD(Щ $Ӗ@v3CЁ|/9Xޚ9V <? _LKnfv?k;I@W竚.WF-F..+7<Qyši;u̴]s 6C7 @ߞC;cbu g$kbZV:.^Zgv3=t~ՎsS~WtؗqSKS5@<0'xBKȯ?ңCT'TspEqT_q:E#iFi ?B+T)Ul dWKud1=W-d=8=o- -gEg8+AVPRaU ||׍`/.3ب=NJyP=.@ -KM=K@@qoQ -kTm2TWI/6G"Y!Aj`j!+~ѾSeÀ/$'Jj6/?ְ"ۨc%@%ǣSQc -:'1򛬾Dtr6t~wD/btnwLw\mCv30%HL'W@#d-ʏ1t-jDȏ`M)Dĩ2Bw2,`#WE$=bg-c- -Ng<-2 - -B4GmJԍrA25R '$wޮ殘heVT9t9cwA "/@(%CHH((TCK\5XwLskA=O.;7O.I=d(O*j -rԿD -*s'/e{"?ZUmdN픙UU ,du=OTxń{" iX5Tm -bTXQa^brb&( _:P|_gr{MzthҴ pҝ)>@ 7nȰ{$_a{B8Ald,4lԱLZ=_iFM_Ei*&_,&^7I* K`^}k:L$oS*go+#q<;BoqqbB{E k,V @ضoG@ +ͥ+-m߳b{b=-A8݌6B}w6 }t(e?6  |zeƽ9YoXp.ĝdP.Ysf-Q_QoN;Isq`G4 rv3rY^eJ й_ דYg5*KO;K;;QY‘p4(Fgc][d`ڗEWf+o@=;+ؠs?4"c_On+$^Kh&:_&{F:hE&AEFuFO!lf7.N7u2Ke βUi*WU{hvE?]U?Ib$?{N^7{W߿S\! [~:@ WÌ -Lc@5CwpCWShKx1+fL;gfs;*+7R`۴"(D cvJ/`v|pvh9|eve99"%˄)%̨_y٧mn mԛ#uI8€#_JL3(4Ytp6Y(5~mÞ~66k5;e\vb\ۊy-uva)|a ӷ3 aeW9$1H[ eqC"8 %.dFK ¯KIKfo@ -{ohI^*g8d7 l8d I8I/N1o4~3tnqxTqgn{q&b{G:;:-G`NJӐac\|C''||X"Fw@x ЛM(#JD(Y5#/M\$(zұ'\y eZ !\ҊSFLQ BT=ߠpfxX=+= :́Ep -!4w -ʤzߡ߫MJ{ɐ-( - ;ͽ<7o;4oNo4BT#P6N -[\ևa$x̶ׂ̢b:%dp*b{hBTA7,A7l*A*ҏ#4 -Yٛ4I|SYi~Rk%ZK%:%f >c0V:b†4S}M(M~}YzDeDՕZ\za]a)cQCpNQg2Xps3QsXXԥ_ř17'*^Ő V6^J]U9"a]R!R2zݯmO-11~-,C1D#J)**¼:uI^%j^I3I,N!MN3*w|.ɠ޿Lh"h:"?7ihi=d7+fm.u+º94ᑸ6442(}[5}N٭/&cdp#kXԃXk -^ƃG|^hI-QG&}P߶#!V!j9!᳨@Hõ6(Gw (ӱWwHڏ%;~UHy -ڠ~~>y65i."6`'mx esx_eqמ0lx0k8?iW 5k"6*1HYHy`TH)[qS.\6U$z~L@KL>=2=TMg1mbF} 8-LFr:qk1mqs -u -m4mE & fa&o4ŏ2fHorݑ6[J56 2~ =^ Fddlg<Rs &Ysl,:WUxX\$œXTZx_XZZhE_M" ͦp:>5wģ{&ɳY[M6X'6L[xS{S'@'vxs|ZE@K؝yV_":9i:?l"1:7&.;KK$& je1Ca' W !ܸ%w jȇn|+ec()ycKX>ck>0TXZxbWxns50fqpx5o ؛Ex -x?m_@ -fZ -idI Od1PPOOHA1-+/-_f iq -*Of A*O8*Rt쬟G#кRa!<^G -rMYѡ)2rGxӁ2~2 06ua~bh>sT,QsoM+gsg B&Z_73;brv(C}[K)Ck\[>&CZ\ \VEnx_ vq JG1!1R~j@tjYy/~6|⁇օu(ln9!v]]!!H=:ôt\a΅0"rFkf1NǑfRAY(!GY%}#JC#!r]fz_ 33j9x`NᩖCz9@|wSSЂwt0Sye5n0gva${v~yz.p~[ن(˨N!$.!oUtFcgU~@4T - -QJkTg -kk{BYE?^-s l=7u?& D^uP&JuP P*AOj1#A 3$׹9Venzvףv%U`WO\q?([z \v+n5\zPiT $cCTom0X} ea]vezia\UexdUİܣC'xؙaCDҰUjUOĨ?="U"L- .=P@tRܝ/Hi+tH/%Ĥt tCyO)[؞) =A {u uw 'RU|n!*(}'S4!*M L[ S 6h ]iׇq>n 0'%OH. >sG>>pos,Xh#ص -C՗TLXLCCnTk$o RIrJ26Dn2JɪvSa' ]|VH?|S tH9ަ]TVF]x9v 7UEəXi!^׏| |"R\a|%aRvR ZH`ڴ`v!5%ì qއ׎0eV7WVZO"{ą5zZ%:Ҧ}ϣ%1`%/`>Q%y//sL>d)SS-?psllIP8~l8ǻ94gruÑ- ҡa?·WΝިW&H.L<eڜhY6q\5';5e'\C5eeZU9i +)jeK'×ЧgDŽpԗ.y p5T0U5.)F;=v >WhA E:f ʔ7o;g;?=8EG *dN\%a*H]!`Ѭ/YL]z%jwTev )?5 :5vqv?h>Pqk9#nj \u3|y\'3) F\ƞƭV΢U%կ[9ƺ3wV[i[):zvV]~h]D)ƾ14glFI*AIl˽AA!-ۡʓ195V HLtLtqLꌞB qn\㵋n5d؎QOW38`K.cWQ#. -cOcG+gQNX餜OPfmi޾Zpg qAsgT fpo goTTߥE$&OmN45xŇh{Bb8jϲ8 *k#`a/S>Cdc>L).S>);)pq-$0zmZ0;giS ̜0Zku0 -qXXԙ&2UPdoi}O{gݟSG˺wGHG(w3n1H}Ê|)9%"7%U;UKꈠ>+ $>槊d)Knv$m:$PbRIb::_PlOryCW& Wħ̈́4WgdͶ Qqr Udy7\,E^3޽^[9  ӽ]9ADJӆeqZfcþI;= c.} < 2s -bXnJX'Za 3['a5a9v΂RҎ65]y0J-쁢ۅ`>쨬S6Sw})'9qwڪ|~Ѫ~/Hk~') nemӅcYB*ُ<11t! !(~twD#S[DRYĦOButכu}"ƀjYUMЖQ"m,q7K7+K8OD74O+A+ -(-߲AQ1Uwb%V̘vQ0vTVnxFxmlh mU -ŢD!Xnn{Vp:nhVVPZ?:ߵ"yI")gbX-3^_P^]_Ru^uARz1,7%,6aAk; < iI6^98 ϓ88N%Re2ڻA[E>UGhbu|_auDPisE2 OT}xb{EbBBE2EP]u[F92M^<4r!15wrr}YDJ RJMǺXfNK-|NAf,SNY,jrMݤ(2lj`6Sڵ%ţ%i";+Fc.;8yopyFEI"<Cj}8EDN,βu>I,#5k=s>kߤ!3 #"_$fi:G2Ffun뒛Lo)5Oof|DŏxpX(?O&BO/8te_dJGB,|cU`efO)Jl&N?"*y|+eUYXFjֳz|;֣UBf@)FDžHt*<0c20^›qy7޴j҉Af;P߮P\ɥrV-Ϧ!2C/ -3"wJ};UnUWJn0xع>sFW2sxEnB8mkêZrZWi&ٶ}p; >@{ isN/paW^Q ִ.__tS!'z%s -R!>6%(|#G.D! DFC!K`͉a΍5n -I`!5% -AeA4xܐt^J"crᴄStXvc 43N^N`^@GwuH xwЯkV@^H֘ KKq3+aGRihTZ?<+_ 2GzhlHq閨x>x>rI#y@K}& +I@ ->3&=o P}}W .y玲e  -!5HۂPErA%r^"2AzN̓l*[( -2jz+H1Ap[^S! -EwKw75;HQ&!`̃i4H=>&/ߝqol\lNe/VߋRN5t/iauMoؗiq2i=Pq Xs `’l*DʸvX}`kq#lQ=ԃ҂ffe P%CߩEYשWP]CI|u۽zccxps,:ʩ{UopF{HWYIixzvA$q -W Z_UQBqd_^ ,f D$4v]/ڐtNCI3 3잎Wܝa)=$;`o|!%d?$8apIcmwOma/o4kNl1O4) /mNRcC]䴮EҿL]q9v70|y -_0q^ৣ]:y׮uI슱3=c栬i1ל3H."OLim/I\"8 -o"*BN?J0+ -B|lOJ"PF\aVG0$#[^~ [C՚m9.eGakB-*Be݇j*})?'BU[jG-9J -xTkZL?3whSJXSyL 3̇ n[\=ʂh!=Ѽ;D8Ku<8;+=1h}fr:)>,?k,5c_p"ˉ+O.ꐥC+4oӏ7-"%ڙ -ݙ hY_ -M*Jpj17rN@|rG#04]cb#Mr?]ND(7;M|6E|F -waLcVq*:U -|fLz6.އḾ&ǐ(gs<d,+&,5s#ɬf 3s\,a{9QGk1*'G5{&%1BsjX]v޳6Pu)B&V6 $)8Ɓ^HXJDdwI3ka;TP,dVSkbM -Br3$3?ci o(CzmC -cIBZo|3OxeɔrgnjvLJML(Bˍ(hqz|L^'2 gLU1ZLP>cM{m_Z;lPw`c -@L {.U+啟؝?!^.K Oj ^ҟK1 w,?#7ޭ&,ݓU},>AD'}V͎ڴ,!&3dz C8Omə9yTCm콰.4Fآzg3S -?SBCL*KthK7CX*SshE -˳c̵?c8@=JO>_?ͳO*8۠c_굫gosޑZSlthcSQql^@yg -X mw[tO"QK [qO")C í\y7f$]>" $訚\U ][]H[m.Ew .4X[SHh5 XX꡹Y;l=B^f`l%峺'OJW$^W -=7$휆ђ0f-!= $˫fk -,{!R0Rqܜ$ 6i;}֟'cxV;dw\ӯ+I'ICA5RzHvGޗуB"AJ~Hp #ੱ"+LILn,U1}Qa8} Q?nŽӘCC,q{^h֜b# *h{R^M#Ɔ>FkF+6k3bͺT,8[C󓴉kJ,+>uuAcCrn,`$Ѿ`%kS[#tAeY$p pRX u.F?WBXϲut.-= 6ABG7O 'fz]E& -b,%f\DU&!^u%jztgz$t -FB8 /?i>- FJs8tu+?ycjaDpaQDT6~`(VU&Sg6؞[D&@ddgAƉ~sݜbY3~Egϫ@Uk;k`H;ѷ(+76]FKu')r]g;\u-'U֭nn"$b r>ٷUdk&$d8 6>y"; -, -ZT1 (TR~9N.ԎZr(/5BݵM54jH1 nç^e>W\J3QT11̬ۛU Mut.a$έ=|.b{4*4uMD*Ė,NLx^|8wMU|vN%x*wuj{hn;;as2FE`[kh-/s 2FA[~&P/nv>Ul>0gUAxŢ" -Ƶ7Uш -:0F|l91˜09T.t4/l\0bIrIl3(r3\K?*Ic(~bw)L=P -8x*XeV.o1LuX -j FE)?1w6qs6b[7ۊ(UεC=uT076 pUЅ:)]fA0X_rbT20.N _(joLJb=K2]ϥJ:Ƿȣ q\ҴSр?\7{qRҘJ]Űy{yGlM -R7Lc 3o7AlH -4Rpy sg3H4#ȋ5@^)i YnȦTqH ef%v?qX4ȵ8?{=ݚqeQ4 ШP)l -7b<%-e@)Ib%KڨrsfH %f~-AP7< }5چƒ-f , ʏ5&ڌu.ײQ4CTzv+ZTQ_41ż07홻1kK=Y:P6k7P=[Nd6Ο6V_C^KV I0r);͸rV{;xC?6#˘˪bi|ӚQ ھ7vؠ?Q$\V7#)UGh)75yu;SCF:dUr;f75b)F@qہ'm~%B'E\C@[WU8%@ͼ#b'XW)~Fn8GYE+ePВ\=0s+2eזAm5dxYMLX;[8X km -|*N96muX2*;B9LSߢr٧1+ȚhqG+B1 - TYfȹ@p]ٞ02}$/r#: -/g}\hYw6:fohXghRMj{w?irg|Mv*whǹEXP eYi~T/;Y]nE"T+a9;{sz5~ސu2D`۵D~Tuƾ`} sq2:w~&Ƨp]z[ |y<~{TpA]i9wK<2ʀwTQwk{HLD6棲) -L^x'wPiȲߏ2$?"C3W}'=ƙ'5C2='@+A"U2nޢs; -@h`UI2s-' 88 ID6>=˞A8y9DR>? -Q_VWNjW玡3 -D3KW*FODV9 5^c;8$NmVoQc:mBPdUoZ5hiʮ3(+]s(qXb"E]opw(_@~ܙSE-Cp4?mZ7˼{#4iubp&EC'!X :2%F!T> 0׼3%6U'Fi}/afVM%aۡV-5˕*w1i|7VlAf-Uui%XpmGWi_Ł;uٔXV G|gY^gRwQo萷ǻRMgv3Ʉi o-i6X:4HoaJe6Fi/{ H.юDJNqTo3KpIƎNtTMX؀Ig.kǤ{\~yw"Iy+G\mZzlCǎnIk|Q]}!F&m:4GQP}V,d÷4_kI9NkLWGX{J=!L-s>< BJ9&|-v&](S}E-}6(0S & `MHp2^~K|Z錔pV~3MK,Y;oYT(Dk!e+WD -YEc/$,mˆ‹4%8l5PL4.l!5>]Lm9'_ >9dVLpm1FWߨ9h'"•<*뻂-&4%mqM,&ϗf}7m΃K.MxFRb -9F˚duhݑ -I]u dFݿbl8xvEvsPVnlqe N$qsR&vOZNR+ӭvxs -tăP/Z?vfMt͒PZmLRG DmH :@a|'s LOHep@l|s D vOGٸ赩 [׾@A'6˄s~T')`X -"bK'S&[WP>;Kr'<\Iq5P4K6IӃ^jwjx=! QwFZxPW`j -9Q^ ]+g/ -U˅x5$ߖ7UA/y~ۥ.x%]ߦ*t>M du-xcQ5nOR k}Q-6&$ϥOq>lbmRt Z 3Z?kRYpx$O G'?PY:Z`mNE{܌!{ԨGHO7~zE2rS*7z2I{(,ASa%O85*%<"V:Ⰲk5:&7%#U - Wa 22Lcj -?N1\[T ࢇt?X\ۅT d7Ea7\e1E9_դ2{^z2|ղEn88),ɴ#Yԥ!`U,Yô:\!Up5=:=T|:#h!f}#%:T5z& -&7P -[gVPrҏ`x -7aGVL##WwvL1RyZ]*N\رܣ]vgZʻq%C`F -,uv,rnuҢUy6!/W306F]yuz۩r% W -X))޶nNTEknAEY<+2Ok.RJJ K'>@!p:zvX:kzܦHXpO{O -ɸ{Y&_MNuMYn_aп{3 -ܓ^pe@*@RWh$&"sY&u/]WA<(ldYeEDEO~ Лwj\7oQ 4tj0LJYOrםO^4S^,Lya4)5GN𑺀 9ZY>֨m;G4Ҁ,v(ZO[=[\?oH_]"0\O"h?r*c_DžB0TԷTKTib`BK(|hI .Ԑ[bIS|Ki2f<[ZQQ9` OPǖ{FdM4JՃ LO!MA*Zb+bE/+og[9A\EHAgG9Q+z<\gg]4ܕӉ#2Ҥl93j1OՆ# ѶhT}h(6T1XQpq A]1՜JmT9]mmF{YDow*=;^{-*Ros^Fvv%d.iZ^@.Od -)giL%{ -^$sdjsrd /\ٺ}\7dSRPY*$1||`o9ΪWk6wYD_9s.Wwn -t`?C_1yy̷؆QN1iEgدE* 8hd) ; RK;zpTʬ\bcׅR0~bPyl*"ZMbgyib "MghlG"Yl%'Ķ*n P8wcG z':*`n,l@ઽtRc݌>鰞#xra(yİ+C2VD т`m 3[+YĨd`\@P+ ѵzdBʽ}Z/U) JtH)O;t }]BWsŔ/ts[ -'+gue~!n -(2sׁ-4eW~8^ ljf- |^jqDx 18믝}i[_ؚ]n>@fEn,h?>e[=f}C"iCBOcNՌ"p4Yv~ml7А*> 4rʞA3]L˰rwGZ*Y=F-NjIu-]S)8<anuϭ]~(-0HI'nF l mbH+qXAIBwތb^H}AR iRWnjkvtovnjk!Rs" coSuK OZX -<Krங^?Ϡ9,wzq`W9VQd1jȅqJHhH{tFd9eOact&XNu9-cvJSSvIpT -rlEOGdT"vWr`VVڑ4ԔC)A=SF -= )AQ>&p`uYϣY36Sϝ0K!];bV)5s6V$0- !b)3@su\~\<-~QtԈHǙ0L21op~;b>ooຯ!`dH'^FGMt8^ϸ'Glt4jjYXb%>:  k> $a0Yz4!eQe-ФS%~:$uyTCГo:Š@u!`a?`/{ah -\d653>/׉5 -"]a#a -7lHYVg? 7(%vp:9DWlj}k`F3mS,_4%%ak sĥv¸,["Fvi@c 1C+kǚ%50#7])?k`s_Y`Oku-f Eo1z#罎p۸\晶[`Ԙty*Jӟ`Vfe~r 4RxxسPAL&Q9VdeKؾ9 QM*l[x7C0fVދ;"Z`@!qM8\=ZQ|soƋLW‚Æ$˅%oG:,g Gq!jiTl򣟳}PCxL *҅$əLQirn[__WZ?C%#r΀L+Rw%=$xчm1'oS9kkD y.6"gkb._H&{hrS F^Hc܂3O23Et~:7lD&Uj8}+w#:8)yu{1ei)r&QG8!}@wH_656n/dSC@` Yw2qUJ _thn!LoL8VD=\5_p};pY^(wo!fCVGG5ɝG@v XRqAW0&<M$yl*qɎ\ !2EZ_8IPe:Jb.7tO)5pHgugÖ"C SFN@PW, yy쬄ɤ,ťԭRF N\ϕz>-Vo#9Z„p[Gj$&$( PP|U֧GmɕH8NoeVIQƹ/L8w7z\=Han>b,6 I k ':Rݾ 0ǿ_s)~,Z#C^|^d۴dxh&j5}Vysn0?ZJ>Ddz)(^U\wSl>Kr}BR5>D:(Y=Mti\Å@ñ)`~Ҋؕ.dFrƠΐ.!GAv/HaP)1 #DӖ ;VݞRy_6SWKuZ> ڿ77YV`P҃+ 8o1N\YgjjFa?7׈>ߊz`{grjJ}Mc,=a-KEȪu ѝwC*̹@#Kjn{@6D;7JէɺOд26Z-ɲՊbA!Ց+RMGL("Qf/KsƯwk{< w -? NB2qMM&qlvyäO;@+8NA'Zf5_$͍WÐ  -]_|"i 1f>EڦXshJJՌyX;7є6M9";}1H&i]L_lJ͊[‘ q7ݕWmXDA!]+@bV֓)J,jb(_cTR [o Um-&EŬ+SiHx4`FnR~)Ie]ͅ59["Z1$MYbFgmm~LUA\oU-!:1q~8z­Ƶ6/qC-U4T,# ̳ף6]8hϗ1QVZwFb ]hcb}'ܶg_ӬD6b81n.4 2߆響ʥf](K:Nd~y~J!:~ J FcV 4(JzHmbNަr֭.YO9Jcaz-GAp迳FM }A3o'94P0q>@2\<*lSDi}<!)\L&A=uq䟦6KKI{_LW(:TXWf`6?In t hCWQfe84( edm*ftn؈ LŪpVxdm;Q p7m^z-&g.F1H1 -)F7<,t0:pRWabRL+pBOwkeK[ɾljl;-r#Y{s%TIw0fXK{4]Pީt^Ȧ -%d׫u,ѷ04q8a>E6Bޘ*!5 Bݖ_;B).Nx಼:P-2AC*B) {x;ǔ#i!՞*u2U8u0̣:y{eŜ<ﱯI1>3"Wq,Hv?.> -FYGtZEӪ,П5=K竆LO%_|yGL9%ģ|;(_j{'Kّ/(鰤`ULx ""HtRZ`g>#iN?- zsP#Tnh{teő ]>,T -Bd]3Ӵ0pIU!gt\o=4on6[UuK\l%0[l]"X MWn2͟V3~:*gQRj=I0,OM%[QΓ{1D@$#*X3Wu=Q[mtEfW[`SL}%To:242_EU(X ,髗WGE72|Z FrඎH!LHC- 7Ǟa.1C~:hd2|I-$\&R=PIeY[){A㽠;=%IE3w6Se4ڏ7/p O]2 \r5 y_VO5#M` W+^ ](nm(Aʬ{I%"y&I|'jy| E74tP(z -5Ҹ?2k靛ML hf4c&HG -ٹ󄕱 1uW/;[[.=R ̓7\{ ]=\B87^/  RbY@FM;j|sB<_IF;Wk<ÞpPjDd3J3l1"gv8!k3:1lk[M9!eɖ|"c(nCn]7}>3ݢ*@/7ٲ2* p͓B~+ D뮹%q]2끙V=%2p:7bm(.$!-c/Q?#ڵ±a&.n#]T_"0Vی)§*~n? | Kk)i; Ԕ}Xz86"ZI_IH/G:_JM"@IQ/!'x+?cų -DX@ 'ATŅoeFO} &.C2 d}oŇÚiALWe":N('H{ߟS{jɰHc·gW #Zn_ZmyUў$v.u< Vp?UkϜNỸj)Hg}&'(mI^LWMȭbLB<^?Y.d#~',`c}'Q=;(eA${'DAҭ@bK.|Q&aДcj!ix$mտ4aE!ԌD)0Are,i[;tTT;+!u) vn5lrD+vbALI!{ؔ -pJXq8Y"- ~Ƽ|>e;M -ɮR?4Gn7/gq6?/<.BŹV ;RXó]9yqXκCnӣ9 cFؒlQOzss0 3Py;Mƨ/8(Q:32%CZLE*VKh..5 fNxi؍ |5ЍFإ7[O]mv=u?e>i/×RʧѺayjr!DɴbH$ ڟK0j;BJf_ʺ6ϒ2bN9pPӐmUU -ۥ}͘Â/7ުsZyE*B߃tb#p;GwGőa# ?kjA)qwZhͷX"5kFE{[:l0pU33 TIc+}fA~ -h Jf6Ȗ>u_,^Tۧw=-=Cb_"QqA -NGxvhIi``r$^/Q-6fmWQɀȈ)¨ I$ۻ3rG]b-JYE`1GƏHY) -q&[3FA6;\nYRqs ZA qDrR'Q`-3MXaKГ+O)hKߧTIO^u-@m -yzP#MDFE=0MF]9D5%X̘UdUE_kuك)_mJuYѡ線G?-AB/>/2Y.BU6z~9!)qYvV~ " -J:.Ƃ}` Sf:8H$cU TNSKcF# ' (fxU^QߋMWh(qHbxNUV(o>sh~kݭ^ $rrw+" .8谓Hfbw8/LWلB3M+FFqIN1>m -ޔfqc ;i -},)AΥRFE訆{["~A]{XO1Ma$W4HZ[f9#M}c{  _}9ְk ^۵c$|u+o˓R]-V0 Go.V^N-Y>xrTl|c&wqOaaAiGM(x<&Xlik&r9Ij7mСcE[lpb;a\hd#caW{O;P 鯛tM ze.s[Σ0jLR :re C%0E+3?9@fP)<G\:)-0k'v{=᷃|(Cޟ *n74ijTA:wq@BqVrZ!K]c{!@Qf'<NrWh,I`,gZJ݁OoPnTf߉ڲ -VJUN~< |d2xTئx8BR/a=Lz#Ql[$ژT9G b*C3, ܳ](RoȱNV\:V%=GO8Pto#OS̗le~( U mN泡H&ls|*d,ݥ30e^i`x7: -R4e=gW2!>pChGPKT_o : ߗIV"17_C_e3Ǡ}|T'2?x?%ۯ4:{8MvG> onUڼZ-2L\sYbqb4ݗm%} =h{R˸-h|CEw! -nvR?nxX`t&ĉ.Ϲ՘YVʖ?=Ǐacv+g-w޵#1ϊS4[1W{;jy<3 U]CdOZMF,J`̰$WghiwU&O6%EmEw1YT*)r -SłNV$w<ljGׇQ'J$yȧIӳK5X$sagͽ`hp|l-7-Th\O/&]jd؁1&!v/@QS2?aqM0Bj?/u@21iv -R8Y2\x_%kAV&9f0E9-z3 S9l5Ȕ%\K/p>peE Xma־^xz 7|yetZdT*REv -+ -$}frh[H%ͨ Hq<vֿU}d"T,u5FS>B!Td#]p`M[t{O8(E5"I2%6 LK QI Áv͙GYRx8 !?]W"WҹxC钫b|ofDXo/~\|Վ,[y x`AcQc'}@&43gwP`$rwBb@jѣO,xDhjX - s|?IX6#[]jzOKۑ7JYm0~ Rma<(7JʹaSЧfAwc0*>s>rJ[OvPN˯?o4^P}U2>AK -.{D)DJ_.r9s[~e+Zݔц[0Iz/WY7t褴.g|F6Ҝ~Z6_F,7M+?Eߥ텴QyM:3LeIMX`0 &찜*׹E |X<m,6Ⱥf ua`Sg9]Bs5߸zh=agz5&)9Yz^~ 3( }v8l'oJ3u`Da[Wg )d#fCtTC b@MYnZK^f]MSOmjkX/>ރsJ΢!z=?ے`XJɁ;+b? -QHF%T]cA0fk -/x˨4$1<'+4wjpR?}/\ub9a9[g.7Yz)-"9c)k}W0Jg{ tdh,d_pkBc"#e#В"XT, Hx_CfLVo2Z*P@XK3?wUs4%3mndK_Eou/*qBShO/@3XǦi@dDFMaT\ ӗPEPKZ5nq!]w\ %b t3e]ICd1'8Z(H L zƀbApq VS5ߚ'HLV䒹 @"objK͞ʲӶ,R{g]vz7J]_Kfg#SlI6׃hn=^dي3'i^Ev۔h_#lܕJڠ;[򃴑wYw5da<qj徉uSjFc"gqO9VA:y*P*8y J]%z,ö䘱wz?c^>LNΆSH[W)%PE9JDxY?޼-JCThm=ÙP@~B -B:hZbHSr\V|&Cx,0nvXNhҬ ް T{ }(09}Όqi!bk1DK~ZB 5yt?JFd)̸%AZeѧh3pY °3؀94$TlUSO$j;ackѤvu2*eeĈX&p;ĭq)<bt`ij -4\U.T5F2lΖ;k Qg nXC3OA﬒Ƅ=mth6dJ.lwUzL88KSoԟECP꣖FXlu5  2e I쵖 -ޢ*a9ҧ@A'R\LVv+B] 6r5{̭+rK ˂}znmP -sێq>*z~yqp`7Q;GQx|mL*Q1NUԯ ۊnh yPj)͹m~d'+.+U's$l6m -~i>m2ܗvez/0o7b*^vc !+-%]OrZkR(7Z *3t|ymY+%^C}Av'?v\zo6Gn@?zw pn; =^ϙ]cIJ" |pg9Be-A)w|-e:@y>囜/R;;vKoQMxᾍi v).qx&+;! 9ff p \*NXEHsך.B`pL=?sٶ8wV0O䕉ꦓ^nyUdsT<7 ;,'4iV@AAo:h %#2D̚f\_t -Bht-m_G48WѢ obՁ2JyE]o6d /z;J4dt6n%mP\HByZ^~LA%j=[FQrLb=/&'gC^A$GTuauF 4}we SL,\FSͺu 2"M#*.DU `(C(c@1_8`+zӔWM@{$&+rI҈ Dd1}m5]ORSxގطp 85s!grgD;dVՈukHƢqGԛ5 ڎ#;9belsK*ĹL~(*Utym.J xasEΘN>Kޥwÿ%Tʿ` ÒU"uCi4KX\J:P:ڷ7ujs<'k^s~ tzU)PC-⻮Y N@ -@\s۹nu$8xN72ERCZkA] ۲<"B2V + D~TO Dg$cQ{߭jÔmG1Z6݉oGɵ Hpnd*e0I]ւy,.%x(m*z1?g+^$*(4|%'d sٗ)҂)*,we :TQoۙ,PT6\52-՜|{&YDtPN5 #C9&k1}љΝ/*FߴܾM W[0c=J c9iD"2ht۠t2>W+!&H\x2~փ%'u>Ra/4Ɯ"fM3.:b!NwW4:^|spjQB1L>N{wP8ڒm!i -G>Ęx ~Y\QFNX)WƓ8v.'E,$ M!08& Y[w+jFvruSS \ No newline at end of file diff --git a/mpdf/qrcode/data/rsc56.dat b/mpdf/qrcode/data/rsc56.dat deleted file mode 100644 index a3015fa..0000000 --- a/mpdf/qrcode/data/rsc56.dat +++ /dev/null @@ -1,57 +0,0 @@ -4;hÁc%8pz@rQעB*b6t"ISco ȃ9pot4;hÁc%8pz@rQעB*b6t"ISco ȃ9pothvз[6JpMOYTlA0,7D3IrQu\MbWX -oH取dJI~Zp(g:fvFEKs?+>l՞Y{K`Xnf9QC06ݢզ?wح]27Wۂ,xNp<ϵ8ݭ^ιmĮ!*ZWސ=1딑QP%tYUW(-ۖ=%hsNA4M{CxIY^3;mHQb5E4$BqMU+Qg~V| q?5ݧ:)!y&*.M7 r?_`l9էY_3k$\׍zň!hgUM*(I/[;_\0l}0ճQc~(*GdSnE =$XoOI)xwpGo߄),Z7y̋!Alg3~khW@tKڞ7m)ڕA}BT0Ǵ=z'b5?9u8J貅KP Z1z#JY@ì4d̈́ -xgZi}C5>W'=͑\ -]>_ -"]8hMI>fvڐ0ąUjh HACV 1db%A|{;tYIcTë)U7b%- /sY/-b,Jx~/Ӭ0`+^Gl ѹ = {ٞV&$z|4uҹa3,jhFt_OuP:͹m3EvGS)܎bKd'&W4ղ"a8sya&j#lz\kց -([Ut?R џ.NJ߷REQt򛈂q:#FhPL,=}ɴ%n`p$G:F(vΒ~9ݲsc!jY6u(ApbnWzERGT^YЉ}586к3KIV)G렢9qam?v{*TRI0e tASFc+`YH_v楰ܮ }]v{K\4 -ÛusU 7 9*Ս:WwB~EΔ?囊B6M/5۝X{ Y owǘ7]qz,(qwsY堨 ҍQ@ d#}!J9ۧ>6ݦ >G͎] Ķqv%# "sZN/a\LC}נQBwq~Q6 -R90/O_o =[*8"Run;r2~sl^屽AR1OB܂ l!3b.ڴ1PVH`MdQp*>1t{$l5ϸEŔ?< OZ`tk*> HAռ0.13]$uˌ5'*Ę̅r^o٩(Ag xQ"Y4gְ`d !p@mvO}ǚߘՠuXMR8%JquE\sA־!B/eKh ;d&>POQyfkda(giJ2)R"9rd;Oz7.#^CI=*RE Z@]|&)ޮ"wPNh/?Rb! -l1("4|?$v3{Y &ƨK+uROAnJZqgm{^%c0^ZH,0aqf:ʜ#>5R. ET1)oLZe1.čXW^,ɏ -Ey`Vo@8z,! -/=0!.W_EO:p퐅1Tb,|rU)c iyՉ3K/ON嬗N ELHhUo;60fGX%'*Cw Y4toa- sp{a;("2U͜Wh޾nfc׊嵦QU -MmRĖNLh.yD0'pGQL]wIF !4Mx7gfV8u;J*+!T8F#ֱM!5Z[Pamoi~ř,%#?\s+YW@e G -g$,['f l2v@s356sQ+ t!F"]>Xz0ُuJ.ܱH(3tcwqGPce.bx ~dgv"ORT6 -U{ ;X 9ry:BԲk6lP#+$ im{jpli rg>N*mSt3{bUqu2I-W:cF.p,S;xf\,WO-h:K+&n$rTtS"5KIy4sv+xm3%#z>)DH6l MO -K*wir &`^x=ejq? -k5cݒ&΀IXTinٯ5` NJn rg|# ]*8k2RgW>. K_[%+Oܣq*)Kz'c-Zxüka6π]m_ HZ[m Ne&3@!tG(;Fo9Oglr @_LRA"D9^~5 Ӥ<đ,Bk4ثb) -PDhÑto;LlId4mF5wxqT ]gb¬ni4K.~Hf"yL9:M+VꤞIܕ62ڿ4'JSy`7mɁ l zA'Rc&d4 MF{ =X=`y>0™t;u%m F|wj]\S-e0bRb\cUrs%S阌ܵb7$J( ~d6BaS ^2l (752X>k<ߛ e4cހKp0"XBZ^z`CB<_>v/F;sn+"[?kBS\),ic(;-s-q\!t=bX" RCf^E316Jm0'QǓoe3f]҆?qhb"-/ŇdƙbE늘Sɪov>&l`/̎JNT3a!*]h©3qMI ˪W6Tȷ|.׋LGʐ{၄2k誌&B*dG-Z/>]?#;vK -5PqDdۭه%_=2sa>=2Fl'NojԆHz:@|{LglR> XN5hR>Ƴ :CwQˇ@*ZڤW1[A\s`יNѢ +Vu=>Riұ̓ a54N#:QB( _wq"(27=!B?A[eMh_n>̬pvoT'GVmByGpCQ 6,r2EGO)8\X?b<&r(ZT2( "*mF>0BjqI U$/X:JcF8~%5[8U`J,.Vv%ƉDژwӄ&#!z%Wr/; RW!VS"[}C( HXu-N̽ dfjlG -潓m;z3& @ZREĊIrdC>V%j ~'ɢ Y _V2B9Eٗl'VfK'L`‰f~8΁BPƾیJ[sklqN@H4o_7H- >troWsI('4hJj)e1c ӎ 6oqMc$HuvY ra3ZeN\@ԔP)݈F}L^* &-aBMdpU9j8,bJQۑy=aFBo8`W,iF%Mn[.\k_!ș]Ϋ4y2`([3\O2JbLf9n/Kmڂ_hD|Qtƽ<\uXv{̸X',f^C.ŏ<5xO -ǟwIڢ($u)7ɼ7Ş1mZt(+VL{I$H0s2A D8 jx:VJx $0^so &y u dYlx催Zƣ:V&xGFhRBPb[;IMo`-'ʄ.&wP!C?/fxV(Y3GcA 4׸z" BOI#8>i,3ɐr*)Jfˋ:KN}#ۛ0y$;ZVOsX\i nW!IBWRNd@~,pXsSLm d=n}5C6GB=.kTOJu:_\]e)va @Nx'%k)I?YF5Ӄ81i7=j ˉ]\`)*/hʰGah]yVL~F+0oPY$:2bz黾5K@x+#S׬K9]H:tJ/+Lp,GR#sHt&ʹoa^prCQῗcEO\V5!x4&U8z&VশbkJH@+-ևt"}>IǝwI" -ig@t,*7rR0D_'u%Tksmxl-{YF"Ys5(j߯1ک2<*e|bgh-{NB06kQ6ieҽ_w|}91ShVq8f*JAO( F|R49s]^h>?aXIKqַ;s<[̗W -D=" I$l:؟( ߣU'TCL!a{9z,~OjwƧ9XJك؞Hwӽڜ&)ZP^cM_wȿNrML(͒ܯC3jU - acɔxM^K˩FDy[T#Cy0w`B53Ixi\{Sh#Z8׉<3.e1<]?~2HV; [h)*Brݤao}y~{, 9'HI~S:OBK1CvපiRݘiԠ[# -CHOW^Tp<핁3+%C؛\b*Yݎ@i mwX٭ -ZL3hbE6F; hhqxUɥW\X*dȎf>&eHBtUF!W2FS}l#p6'[XE5jC$= u>ٳ^&Y Jb6) x,'4);{e#ݓշ7YΣf C!m.Edп IhgcE%M۹׼ -3ĠwiC41rj2c^A1fە˸O·]E6Zr=zs)p2YF`v{Hw#ͳj`RS9mx}LFnԍlyP1%V^HT?2!/ N6ވlP╱5j†[=#&v<2W9;Nj9:t“&Z6a2 #iʁ׵`Ih}o;lD` wO[J \L婌^-c9/hЩ~o>|'FrWM߀`i/D1K? oU @'i2zn8X(6/w}IJtrӊ; -Y@;/pWw2k0]H狛%qE:g[~aS'Tɉ0NDT[)RwN<}j6l( +/ -f$*_D'd}oD -:a-sU \cJge0k[7~PG+C(] +~A68xvңzk,5y/n%1<Jue\ {@cxS^֗bP[9L5vxοa/DyЁGs$l\?!n@떯;Rp[Zsɂ})UL@pG QyCw^D, -&41#JlwF4,X%wlO$̵ЄmN-@uo](/Vǡյdf`'9d0!NKŗa<.[\Wo_ ف܀4ɟ-  ܔ5RFWɖ mn„D҉>14']k!YKB/]4oSj,UY kՓ\fBNm"rtMtbVH_$C:%So&L8W]˭e)cn$P:eY -pS[1Gf%J_$w Dzk:ZAnGXJgPƹ_5Uۢ[p.3!'ܸe9H:dDUr :dG8ӭ3%w"=L-Xj7U`,}%ԽU8p]n\Ե/"qlFth`VA%6#| x֞'JkyUb].FCn@̘keŅȋnui퇘_D.r]%gjwUx?X(hK_įR?Nux.` <|Ti/k1(]c KC&a;t{#9@0ęE"I]hE8 { $N؜Q L?tb *'"*\̇D#y,rt?V1U! 785uldchNe+eug)9SD4 AVM3{~Ɩ-z>*ȱ -nt -*Kn !&7i ?uNѤLyh@SŚ=7+z[ً=TL1bX|UWhz9V nTԀ\b=z |`/مvJ@6:ԺU4 - Z+M`Ĥ>-u/*ĸ ZxzQg_@^5%Mp"+XiL_/Uƪ8Q 柩J-wKG]ijnHE+eP=Ml¦,%d_Pae -QѿWE |.吆D*U}$ok?] u>~u$7n}jAde|( x6'+SE@Ghơ`D45t~Y;vRPnio"ٶpw3&8|?^vf2_x|^Sv6sVDy?~$RX w*gPvZ,9Z kC֩*2q/HKmnR;rI@}D.5 $7G5}ӸBAa !˓z.gM>DI,s1G!%fbl%,ٻm[B۫;\Ε7}|Ƿ$U?Xo<beBJ{ .JX`N:?碓;)K{(f7~[8DZ^>/e;3Ļk$KS v7)n sH9~ x"\K -<=ǦIޡ |L/^}wg -f8,yBT&Ofalѥ>q~HC"QOmTΑXrSg?ٚ"IA+lm}s\ ?cK=dIL7˄TA:ֆOTd^*&1Q,>ܤ4v=_+c\7*j@H.m1njZ'^<0>|*~FvjȫGIJ:Azd_|;zn܋Ԃӳ} P'lN[V&ߑ_:1}hue 2Qd魌KؗNq} &tCeWy,5ؤ|0jФCj Y0:t+$̞sW3FR@ 8ͅgW=͏*3\4T(ZPڏy1:VKu[I -X']{9]n IUn.\?"NksԯCWDz̅Hgm6 qEmM~z$AtH@ -fKdn9C1;OU0:/ zaʿ=xUWo=,/[A"Dbe .`Vz͙/ʛ,CNݔ p !( ;`^anWRXMȭGY/ Nf+tm'\!Y6v'cIbf[?̿ `ruXJq -7Ct$ŗ.4z -ߛcx$ -lÜE9ݏKSMgћv+PNqCG>وGtpq[.j@v6/tخrS?KBJO=TwsR\wshF5SN=ݟ2Ji1&Kn|2` ~m!vȞ`j xڔ[HBS -Ƒf)& [\bN:at蟣?V5H2!E3O/f4pǮz"#TfhrvdAf]ҽ3k-&aL25Is>[ZϷׂ'LhgPqߩY=& {btu׶ -iUNϺr-M/@㪴PV7;!WR[>.nܨAÛ I䊻eĠoE\~yD"[6ϵC]&_l]ښ:G=Z,Ҵ=F)7XMxϩiL|!; gN]IH oH萀M.rbv2`tg^ 7sSczezX ^ߗN^| Q}l+I镤@Um.HJ*G3J~UXm\D*!u@]\ei/=^ щ+X84oӧ5EY aB+P8dzBKgjiwN4th_ OTCe*,_*9 @vܧ,s1GՎ)^.0V NUBlN) ..ݑ驾3 J;ҏ\ OFѿ ů"~t~K8@ě̶~cQC]갔qGn}?H3\ h_.=+.* }H6c59z DwNA80 jGWy{^<@(t1GJgSW{d؛%ο+V 6[Y| 'ǶIDCT'+ELϖ-y=0`vN"8ҹaul1cװ.ADF+gmtk3&+G ={2sYLTԵF)#cMI#T?yՂ̺g7fZ0 -L dj9|Os:;sNG7o\a] -Y@E9²2[APCnCg=#2Mu]Oz:kLE1> q29(Ҫ}icZi^[9IQ}'fO^cDxKϣ -ݧF?ܠY(wY֙s -un EAvB61|\ܣM _+oK kaM] C{_ަXAI^vhYͮlRrgk\9&|9?0͈l-C{m' -%Dol wA L.O=/, )tkzvra"%EZq6uA'J1 ޡ/яG?0D1ܿgXu]"2Kz!Rשn}Os-QyBvɜO*͟yJb.|,1{k~4KO&elQרAR_O#Hecx(ސ=(\1!2CdIμ$nIA:Kq/&1@kڢUw(Oj) -RIV_۫uB'LdiԸ#3%@A2_ Vc7U8qڝ'5\6 &!9OTfeոp˚n)b#h:ZD@>ǀ7`TUf6tgďC}s/T Bꀺ_EG+^zV*p"h%Sj4ݲ24DŽVp$Ꭼ5$rQY>E3KiH|!CحDAhK+%|SCv4Eqg"/ٜ -hоK!ˆ;}.Ɖj>grp`W,mex'P<b<Φȳ>_l(6,Q*IBUݻ؄cu; y T3}| 5oՄŚv(+JG'x S1|3Q)cVŬ]%O6l7WCN.ٓq+KӸRBh -ʔMU5bZη|1*1]5.0_NV['1AZz`W}KDposw?abƳ} 9axK&7@jSX4s?ڙx{.:ap࢟!7(*Q/ -i.QaՌe#CwxŇ8ؼHGQ:t"15j!MTU@m6B@{*e3Na!BTY&. Z񜘏٩nQ&UoV`uLYH n,si_ZjcK,sb+pc}maAţǺ'.E8@s?v*t&fGj>@0O; -ˎN:Q%d#SF BȓVKx"֟fL8Vݎ&@zcdͳ$ kwRFƚ$:OFӫѭ~*Qk9ZJe)#ω0w|< -CEvVHwӢvmr^,ō ionDZ`3-9rGߞ qutv{2-!{Fc( X%wYQPvE1&7Z8Į֯N1KInO­&3aϲ_urydq0'u܆mzyFd+].fo:6 -ZQ+,i&SzWqn^ A&P1 SWy܁]ٺ[ yt,Sb|{dr(PI&%s˴)ҼW{rRb[i؟v(uYF+_Q\A٥ -ed0]h$QAW:wQNḰ垼ƈm͖/[Sy~]MePom{ /Wrz$&жT+sUMk>='n`RJf(>H']]E@#3lAbUkq縥[W +V$ޖ98/‰79C_!K/̙ HP:a^D2x8"SW"dQIǂ(]41&#͡;S/w#z+83)}Hޢ0Ǖ N4M+ҵmFX7$nE Br>FiI]g՟/0bWǑ'쥌gu0 [f%Je퀂Yd@9ƃnpI'NjlLB=5r5 -I}m#F-ES&4Zcn -T@ U?Rr!kc)R=Fa -"ti>-|eSnϨM}4lkUe U3s/^Uj$}=C5`G܍V%dJ67Qaʑ{@e6'ek4p7uA?2 ^7 im'V&e0cT}"DJkh y0dh]H85 Z_B*Q~"2mCScY˰+XDkcpXG]Ej%Hs0$ÕDžU|?f Ґ5BG눂"ЖV&Jm쯎' DIso9i/?ҋӵdp5\8 -ſN8Ujh1*ۊD^%ͽa,!BMvx 6aZ, ^ P&,ץ w*$˄2X.(-g=p6Sm|20 -).EO6s2zZq)c9]a( _ǭP2k*X/={zIygeEW6Rs[ e{`JEO$%I%F^?,r.2=! BV5[~Іq'G:4gꋩO*XϡDzLߋ Z(+VW{K)x7nTDÊ۪arE_TbPEֹ-iZPې#}pOzm,X<ں&L>SGvYufu'$|?S~p^;dO05oeNx25?x߁QA {i W2*ۭIKǻڮqAR dkh¬E_bH/RH "k߾|Ͼo41PlXTAk_Ɨ0v fmj޷)4L -\uS@Ø-?W#FP: `(媷(?{)PGVN9{զ bfRƬE$>Jlqyn"4\>;A[gMI;P_) -DslcWdU52Jr 2S=/Ti'KMV UCmQе5ߚ) j+Ĵ!s bw T&b2új\ɟu8M71H_|4-"j ]L^@0*TX x3R:G^Rb@Ͱ;9_` M -NbK%coޙɭ~đ{r"LcnYl%1>Bʻ?^v竩b6qPQ -Ti)]$P<S{Ϧh3g~/"a<\tY#BnPT^\׵E}k·FS,Unv -/P K;4touWN6)R9Ͻ.G>XD6mw:peѳt D&sb*j#Bɚ럿 ڟisl*Uq.lGF_y oZaYm[C( dpZi7\YA={!yQGTʣf8*m"Bw']L\I%-Oܢ'L5x}/){4!9Y># ,Xkp hv dgo "ޯ*&KW0X;'iҾմ6G_XI_C2ۇķ>RiCqB0ZnQ `ՠ]9ϔlos? oAtՖrVGc_m[%iɉ.N\p#~T? :L̎?ԏ|` eВw="' 5j\β/^ :A%c2垳#v,g -tJȃF@(;xjo-kbW@{k'MK3׹w-]Ro=7F/[Q([ fԥn%^8LoSO9BW:CA.p45Z2{  lD<ǒ-%uxk}ֵ>|vP;+$Q;9l/tqMO F\^*T)%Z{KLrɁ5uB諮y(%Z&lj7|m}T<׽31bB-nGCiy+)2ުxBz[?i]N-I܀24W 8Jq`DuZ 5,`зm<_|{}F8pQcjVXӾF#y e)Uæp4+h`.}lKHq6g[Y6@h 6Kb!WlB޿u f*\>BM; -b;nM{<_V/VGqv LgpxIRLa, Jk=زgQ[|J|̤=_e -Q!A?gRЧԢCuvXxכ,"߿8,Z|CW GcC"H~f^[ƙi2d8.ow'yi_5DOͱ#̘pLy{H-7Mw*  )9HtoKGMTN/ 5ꯔ0nȏ+2%jh~ae F s8~s;rߴRF`+x] Y+X,ZU7trֈ!9M#⪠I} 1bTƝvF`JREO -s2<ށ܅u>(-/30f.Zr俎!@6d%Zg*f~ j|]#&8(yPMip3$7kbZaW2"Vp7QBkPJ(856 -*bKLnpA#C;bgMt!^ʀ5&/ }*R,<)/)s1 }Xɺ Ff؂ĪmW)2@4aVH1rp^s$)ni$a_B&. QxZt~ LzuR#(M0IXUz_bRrWB^-(/6ta$! ٯdip%D+D>O -Eȡ=#wc1?% A3+zmaş4 Edgtf|HCt4 }9WPehb>LF_;vxy3JU6m䘎@xlqx5:2y?6 @+t9<۞%ڭH-B+(9!+Д]ԣ?hCatF ȽGuک^, "=I&Gh -(C}AH8M=~T,m]&u;O3дPUmB>(c ⡭06" D4l-\!>GC$l}ܒ 4RT#C9irsFH7A;~ -'jɮpFBP0 -3v?]X5>(t8ӻ1-nt+8JbЉRW: ޞx/JH_ Z'~)4ΐ'eMX'hR XHuJ7dɛbNf54S?_c#^n^ Z?W-Ĥ V:9kDy]BxwqUPаr 1܏*c;n#0%)Zno ~8<)`&ejz@Hx%׻UlYн|^F>yV%p>fRYQȿˍ~|U$?3/I]hcvj2JrmvRjx}i1 - SU{Rp6!ovZY3.pXJr!zvyŷ[ -,lx'#1q @E;f+D$3X #3s EVlfX\o_>W.v'Vuշc@֗cu }0 hƸasC>׉_#8O -SŒ]~5S+,_r#^FKG65>~*ʗk1!7YP{oU=WcYx~qr2aУbePiS ])ֱ̐[#uAWȇK3EjY7{SI^M;yV(\6 `_zdt.Rm[D79'8߇H^iߠ4ac;~]5%9wF;sY])5JunIH܊߄)|*矯9#$^`ĕ M?NW5UW8 _#!`(ch)TxoO<%$-? S ajYgHQg, SzݶJ<aGErIc :ONm$zj!MjגOse4L]{$Xڨ?\b *}r|ؓQZhZ( |! !FkZ݊<-:?c&L=h), -~=B -1)M@ڛv{=znMtD2X:3h>n$:uwB R>zDǽ#{ e@LPgΙp|b )Dؙhut,f^%g4Hzj7JȔln™?0WlNhn~Xy*Md&p >O"IQ?D3 Eq?<ɓDлdM4n@:aN oLe`1XB "M@}l4MKqX:,SXuas2Y8ȩQy"k } }"khӼ&ˠL -XW,mTH.1 d\P9>͇ZzlǦ-d4-`R\>o H@ԱKNEWmr;\=7_v :"V,Ѝ47!vy Dl02dCR rźUPѾG?xA\ij#`eo%4eh*<tœExM駈 gp5w$^vTi=>9|Ud&'-Tkw^:z,5G΁Y#q -5xa˲%8~Xp {D;r._oef ,1!ݾ#PfJ ޒw \ No newline at end of file diff --git a/mpdf/qrcode/data/rsc60.dat b/mpdf/qrcode/data/rsc60.dat deleted file mode 100644 index a6af3e9..0000000 --- a/mpdf/qrcode/data/rsc60.dat +++ /dev/null @@ -1,61 +0,0 @@ -h:}HV"V;1@|V"J v`1k2D^ L',h:}HV"V;1@|V"J v`1k2D^ L', t*yDv0b"SiDgѻ5Y3bdaAEYNX -JN?؊^fM(SI3 ӄf7hޡ7%SV>it*T=E#E`D6Eοk5j, -fı e0-:ծAu@x]UhsY'YOo|I,&;<aBm?~ 鼋Pf-̩nС_:n)JU]g -(|'Ykn儿}9H^wRi1I_0= `mc$IgT0&ͨzF .:l Q8NJ cjXcy'ߙ `yZ[t%}62܇K/ؤz$?/< @SP[G'^lQA<5&ـI&w(6?&ImN {!XLvx „ik%:lHp2kpg,1jCpk[TuET /6h^F(teL ~(5%&Ge )Q9'Z0$k*υOܽ_tRQE>[PwNͲ.[`g4P#V:n*:i$|=`wAS5/\i;Ξ -k$Qcrc_3A8*c( ˋb `Yz3!:H'Sb"ká5;5dp<-5Ձi0ѱstjMD0йΨ`LM88  7\t @po ƱԵ(3&N70/42J,fX_M]8_4[Dw_8 b! PEn.35ܑpPWhmlgy?d?^U/H~k^x -@-ߠ붎U(6c]NsW5ث,iv9jr,$|ڵd>@LVy| - !dC5Q"k `u#sx_oj66LL{KiIPl~Lyߜ"y@!OPjJL$$R]rN`HTga<>5Ii(|.+CoxVp1Ʃ 5iE7dTOl(5#CC)ҏ +j) Hy\>϶##/UoS/$mΧhF/St*T9tHAzW.צj^v2!mZ ˮVyqyu;,lAyqD`p><-ip:Hy**ƾ=feSpUTƟP 69a/f0$Bt#&9N7|RNا(V%WtSŐϺqZW['pg=x&D֛_-#-jvj xZmAj7˷>3`4"&cԚ`[oGB3"kw}PfLn`[^hd$uq͔U)fDqD?_t .dGDwvw[_c<$,ʈQ[9MQXgwewpE =h8 -þpY@!BkU@܁$\ 7fj?%aڱ9]-[R~=()5 Rk`٦mi<=\eXځOP'WloZf'׫z4hzɮrlqڳNBַDPOԔטHH,.Yu.!WaxW U|jYP q\V6] %'aIMH Mh(\ M +V#͂htS;Q&?SbOOUjҊ;a5nȨPjFu}R;Vms:ERY8KtH -\$b,H`c`ϲO6r -U_ydIgϸ|qFvqX -9w9| ǏxZٕ_ut J^2̤κA`ܩ5͊ B -LPYl;UyB8Z+(YWT{T#azʦનo#4 l4ry^`H'FO?L=rQn@5?cj*3gZb掚 Aд,ɕ KXV1}Bu-USS=Pg=JO&a=g壟#i+.m5Nىz%+CL6 @ޣkEk,Rf^kEzpշXS\UMҦ7֮)O̒+ZFZ'ԍݻ/ ڂԫns>|fc8hDL*K͵) ?kg,>ׂ-9ʬ`mtmbq9G~cwb@EfD]]xs^x*jX;4_zx ZȪIcZ3 jB(8KÌ.v)- -9О..2[{ .ʹݤ;ۜ[lAG"\;b-&)6$ -h$fNm4Gݡv$h|?w?[.%H'5w\>}a)ia.zpq saಀB֪] HnW~J{]A4hcc776)a 7fF&f)(n%=SrW%ZͶzPRjGcͤQ.ֱQ{xzʰU _'!tBXddwK3CȠh%#k:Kɂ֡+ xέ LbeIC+=e\(:\[Iؑi%AGJєqqGx9DG@W84- cubxۣK4Xs7ۡ!վ+w05qI!ϷF+vDBh_(f^_A~vUvTT -715T'k@Û=kmtF>6SmdnyoOT-E\3C(P$D YS˱w$Ɍ`9m"Ͻt)p ώbą2zkYg{I.w GG9j%GT2e2}r;_=vO o}Z}uRMxhx1[*˅!+7) ?ެ 8 "ScI$Tv2ad-tr-19]-rcO[Jk!Z^To5qUKU{GP{(Yt{PA5V< J)j-TX'NOߓ߁ 6㉴9UC6(7n\(Dsl+DƋr1mi+[2RRؿ׼xy -Qa'}WeJ˸ML(ujAlrI0\>hh/&}MhF$1fF:z9/QxׯsUs%![v[>d4>&l*It>ܥm LZ| ?ĩ =Ѯ:kM$_Euľʗp6MF -0a9N(Hԉ8\\MP|odN1ABόwqLH{ qTiV|-u%9TȊfGlzyħ4~}Aw"⚙ɏdhegL~^ -S]dZHˊVI1I?] Oàpy^]_|J|E,O5뤵MH}dfs _; B#u ;K"]K=`T4kv= "NN]F]y;-VCkq]8.-K2 13< LTDsm牥,%>%֭*Ѻ^+a8)!cәG G"մkFi@Ց!q5t*–lTvufteMYiN|NC؍e7NKIh(A29:թ{ s<ʧ@@[A^]avK"D#-7UqR?0ڣ-]5-6X\6Ui%.=M6\B™9>⸬lJ&S[xPJ`~`nqe?iL:1`~HR |HI<كU \Orʆ -NQ2Aח!#YP 3%:VOF -yv0)OLW~&FW{Q:Ar4:8y06ქDl=tCKR#EĞ?s,s v8j܍M!sԌoS_$v .t0p=KyCkw%%Gx{_&%19gvDGsJ*I!>߳Ӑ9GHDž/XߐQcƽylYA=oȒ*msΛlOCra!%YD(~$V&)Rs&_v%2y_fTmxIQ'ƊQWMo='A2{eo>[k^0s꫱7_|s~+h+K/b*MɅ͉)w)a1E~ rtɳnZ9Δ/DuO EjS|Ⱝg r<'r@Wӹ7k,-sM*Zv G B3׳bVcқeC?ǔydeՅU*U -iO}Uj 룄Á&3-'vpV8^p41ᰥ(ETCgE&b)e7MRfc\&X |Z7qr"EK{]y,Crio52ˀ1i>T>O-OJC|zO-Ԉq;e>)'ZLRlH+H̜ڇh:y_H~]~Å-\J8qeޠE2Uјa*Ȟ -#m2Z &+^> -چw2x|j0DGY}|R \0(+y7IW>m0܅.gO1LL`2D8a\W΁d B:5"ch҉hYnͫnlRq={ň L(R -P/J6 ]z6$KQK8 8Dtc}zܖ58*_Z*A4ca/#k{p:AG&WoiJϴχq U<㠤 -4ƇU\Cשm}O>!]N S7BBѰw$/W)w -DDQaO0b4B$+Y+ f ݍ]>+s%JFsQ;t0_"WV/Q&@\%'ElE}/3}`LzB}3m4oހʕMgRPЌ+fq -j:GAA[eVz0AP:tYu1i ]?J1}o yA -hOhYv`Jt~|ЊZ^pR^Nd6 .낓1{U K5-1sGMrY펀iAOpihZ[,+ hn!HM\ hoo)3Vv/=8D,.}iSEPkWʩQfI M_#K:6BaV!`j}B);usV3=оP%/Y^{frfRz`Ryg]0nXR`E~!&d(gL6!-A坾SWa$OQ4n{b.ŋjNր+czڟAY4: |Ml:UOmtaa$I.f1$0Sѿh0xY9QWH2x\սw0 }=˞:ZfۆPaH!#" ӓH'4Qq<]t5t坥6d^-3ĝ=U4 -=W9C6Irm'!k"(G{rgADge-I!R@g -=ĕd -&eK\/D}zHss11T ޢV~Z<1쳻F=T _Ib -lp*o#@Orÿԩ J,[UOde-kdvsÓz$ -B{izz<}mIsN)m>/^&XwHڊDXFv5c3"b ":TB2" ϵV;n R@~EpeDƣHneiN}}t)t?Ft)rSk0S~.,mRީ(d_wZZbor# GZ[ :aKB6*;3:je - N Z ģ/c@; { M" ܶ)UGmߘI^FoqE+⍪P8sI/>%σ>cjxRZ]c$wð2''O#+ANRSyDv`]hCNѷ;2lur6[S:lPnܸP&-Kk>V㈑ bj.s.INI(>2'!\FIN&$H*PZ+>̴GŒ*dE[Vödc(emU:³(oNʔ+m%5P*{ ,))l -^\<rR -g}gs%É\NJ&״sE5y 0`|W:{^LUOq8GH1bCtr^=C)u<4<ˆco̞xlj{ǕjEoV扊^*;%cJB|h|LK7DS)/$%)GΘ1ۦ6HC␉\S>[nx%0T8dŗ/j{Yu -jDً b~]962 =GQ93Jbj8g-4OX3 柝0ϛvF8);$+<vDi/z48 hY,#z% ( bP -`@GT@^ F*N,@Tppc(?e fh/i\ D_!2vZw%UQ2pG.\*G#K Zǝdic;#bfxtw~>nk`U"-͡,d kį =7AT-;٭i!WXJ|1JG+TiռV¯psREB~e/8FLяXat*Cw1X֎)3l.¶ƍ/auDu ՌҀ>{u?Bqj4T1 بskʚ_ߵ [P#5#:Y'#};va}Jq:~R7-FgJ{y҇ {A$ZnWϤI.~`[Z9eC#FU m ff N9ƁVfLM"6:Wd)!wj{Z==llyJ\'zlA/A,Iroy|]$mE"i,#;_LI7Pn'L::H{ -MJ#l}D:9ӻq?\]H^g)t|eox`Q::2~/tb㐤 uxA[@9qu"=$Dݷܷ@{ޖ*oQ+?s-^vwGtv#*XrF1} 68d/393)=B0)FW7mf,w)0JtE?2Q&`RGY:ξq}l |3a 4{<ڃRY$iUhEt-/8p)/`l'2WzAǖG$.4cV +g;oVr"~eRpTĬ(Meڦ3FQӕ!~!XIopԥBG]"K"U HE@w\ Uy`z1.c6T -U0&=E!o@eN)(hFg3}5`]o&&J0J"L.Jbrg] 2skC!T 4iv":а= nK-ZV`Dƒ迾@8 -^}E͒BO|/C/{=r(m<^=˝Ƒg!(Iaz[9T恓Iu jB-Y/v{qlo{EmCOJS<>p5E"Z+؞;((yBJ oPHyLRqLJdO1!ǨC\Y%p[YZ{ǭ WF4Y[0zj<|u{L7x]1o-G;6e_e=ON>Qgi - eMՇz2!Nm#dYwʫޗ|#3S3W'~@c +u3&a}Ya| {`AnHf|l2?ּ#` &K,ns -o:VٯVM^,TkG6Ra[Wq ^(̔ğpgbkBAƓ;\%S?hu)#I%C|R1(b0 * /#'wC *U8x8l3a4T@Ιl.F:?wMvpv70cshv2dS}ܻXb[쐕Ʈ*$ίqH ] .ny7<*n2~ř5S٢|g{Uܴr5"[^bK]fLڜٵ&{;`LQV%15َd,nrO Ԧ}G82(x'NӀ;uoCnaɧ0k”× DC5mMbhfvo?7XZTCKC@fOk9APswpvh ˻JaJ҄ -u"dIY۸mx14V3uK;Nb`ΕDop7)DŽEDFbuf%`s$.SD 8|X.tĢbCC;8;uR4L;to 2Bog~n,1}EvHg{cWuPd1΄m3&mNѳH0m&ɉSI+ŜG2L 7p9n{RD\D@? Ig@T>ϳ07$3>6~MEhߊ/fJb8Q1ʻ!bXcǓ_.Xp~[΀4LМ>aǪJɴIQQ]\5!âf;F6Ԃ%C8甬 -د.L\ܢ8g-ߋd#Ue =5U>&<[Y@FNctVVXX*X\b ҹ bT'4#ýy[0;@v SAhX7Jޘ-+0W"a t_ W/zR\g__~x UF6>eK s }QmIFS)o!rhTf+Mwś¹+H9r? X)w8*]bVܨmSUD^](7X&XMe$%6"sMf G.$/ \:>Gm -<0X"nK oK}EKo/;G:;Hk,9#U`nVuuwwh SK0O2wޅ' c -?14'_nĹM!V.!5pZ?N!y j 7w@uB81sC$8rrxXBVic&jlȀ~}B IɹR,~z#鰓EWC@sx$㜶!&L !܆_Ds{wF 6,+|+{8{2n2D2k͇򏩕oX jz``mWQqߔMW3fy{ (| v 8ܕocB\uBj"#1~3Bu0y@n">,gpA:bQ \ No newline at end of file diff --git a/mpdf/qrcode/data/rsc62.dat b/mpdf/qrcode/data/rsc62.dat deleted file mode 100644 index eb8c339..0000000 --- a/mpdf/qrcode/data/rsc62.dat +++ /dev/null @@ -1,63 +0,0 @@ -pC qJ=ivx}^ e^2yf1Ez)j|@b+%ng4pC qJ=ivx}^ e^2yf1Ez)j|@b+%ng4a>e6Ŕz4O< -d-b%UR8" VJhߐ!-T)F G.戇T">OVS* %{R $3 -L}I,o\|$l;5:h;ex$eZJ 3pD|cRv-w:{гr7;f-B;€L~`oߑ]lUt=B6Z,;Rk)'\ D6|Cٞw IoT@JaHfQXyOM]?AoJE_FxunoZ?&Pr/ƹ{[a iTwW3^("Hv3j ot!vH[(>; IUfw:067E.+5W'a5Añb $ʈAj-,qW|1z6Un9xGƤZtM -({in5vZ"v:?ت<F7PS"< @, oH"(Se'(qd-+6y.4CĻ:z8gZ[z3ClMXv _0RN&Mlg#+2DʷEh+W{Uײ5HaΉ6 i4f OYSNjġ@H #y5iZ5cX1U[b:k/lٕ ŕ֋=O -JLeu[kߋ_k3QHd\6}cўP>j z;펑UŴPg.j셴Dc/:-坡8t[~iIxw&K SyT>RuVAChvI|':1)X~ "e؃nӠDx4uXyސDP]NPgZ"Vlm\hkt?pq2 ?I\DlO:+8K,Ͻuzr;][ᑹfuU -`mc4LC xCB,96M5XTN=PZYr}_! -%:n]Id?wL1] t}YU_=s~o(!V;侒zF+C _*hxcHY,Ķ 12r=M\ٝ%id4_XΦ|`LlE ->CΡ/Ӿw tg=*S'ЎZ;Q0Kt)iwLs5‹ paɥ&uNl&]Bռf?ޖq[,SMHAce\ -Yv4fD.ta&TfxkixpWwz3}Zr\EFQNH 2>W)/2xڍ19_2IRf&'pε]$ NAuD5%nbH4eUO|;+A"Wp7c.^5R ˼=iB j,ʤ V^Lj=GV ̵fg=q<\njH,L9I+; A|ˢ4\! фM}-fQ4YQ6943б4)(L#t7s6O +ce* mz&}O;Um֣ f˸lƿ!=.u|@* -83vC\ 'r^]@9j!usUbR5mҏ/VTB?u)(񹷥\Գu*3ƃ^tKZ'_ pGLcsyq +|t4X)פ;9 $t |V -b:̷v5&܀[!gZhxG,g "*:K|. y+gyGs%NtbRm/DʭoNnۺ+XAuk$CS'5n'GzgxcM1߫/C]Q,hw4;=oQK?SDڸ7~u⣻\XO-ԴBŒ@OqXhߙy(G0~im+:MP݅d<}=8C.~؞tQSCVpX/)]كg GOv?o,Lb~Jc/A4[̮)BMJBdl nw+ ؝0Kq*)}0aU%h)" XrY_l:jI/zBυ51F+9#o&GJ;!h)wтrʌBEf{Ш(%Jtܺ'2o~8b:&:m;z]IPB57va93e ȶ}kV3RCϸ }d8d_* -棰OZ,\^$](Vۉ4=TƐXqbdše Gz_E -S'/a*Jy XIgGm5ͯ柨 ս|U]ؑ Zn9B`E?$Mh[Q6؊|e_^a_S;0z TN2q,yv` lwF7Qܷ} -F@Zԗp*]ά#s<(T$A.`RMEj%R2_j8 Q -W_L-L+e~1y/sXoы]V"ͭ$)9uAyN*}HtW;LڑF2憎M>: h :\.L>C;Ef 上&AOd|7+A ;T춫X$ ׮Ҟ<ϟr\q}xf# -H*R^d%<>kbyrd)?)LqNw2 -H킻ۈjJĔE=t8qx -ãwwk~792Qp;nʎVrA:sKoy7hQ>˪{vV6Dnƕ$(\,jq3@e9z;ۡAfM4f~lʇb%`Kٳ# ZL[?0^hewAu`1 K^:ߠ AlT"GR`I(J-R4GD#䲾)tKے}^M%.]uyaÄO\KƞNҕa5ʳ8PO*Nr!O ɂ"ğpqȋT[}4-6k?XHI(G Q1x=/g)mC=nxbE%MvkU$YO"Jʋ^Ԭ{P$a8hz.=>y7$K+_'*)mCN^T  -IiKcO).Ѕ&/1LC_k,u7-q!'j6rꂫՅu T-$$q{v?#d&1 |At@4IGsbѸ?:5)zz&C`23uBm( - Z 7Udty t#' \|MGӹv OAusm 3LYg%=$; ړ[B|uTi6*f:Bg)p]!loO Ev#R˺\nV>v}qKHAYA!x# "&aE)Fk>%waL"Rv|9x:P?}T/N$@zTA㤟J{x|" -OaR9~URWdi$8%kɫ / ԧ>:s^ -y67&xV[ '0 z! n4 ׭e+պ Bk{T¡5e[zp[nr:d,v"Wtk`&}\{5dMKl朰@WwC!NIĚa_j.ycQ ɖ=n|I!l7Aܑ7HPeXUf: rv4x$E("Ҳ4p}gßla4i_ɢ 86S|Cq>t `f@~Nݮ$'#r`}4pm0)oҜ3 q.5C-IN71gMQqcs (CoYpx#-e;x3E"`:뾅*l3<<8Vm=-9.#쇦h'GW$ڊw$YS>󓛃b8b -/ )xz[ű@^IǺy!5eRw+B7z2lie&:F\ǐP{?kUJ+ēr_I=#w2ߡ,gS>0&6^gޙ_ވn: EB|hG[- YDCG mc*@)+YzyYկa4;>NC,?\ˆlXHvl."n6SٛM֎PcqBDر}=9 Ɵy[iEO"eլ4¥Y]$ھgϊB3Hҩ`xfk@\h%&XڴR\D֡`$B2F.OH(Z5d=œ8Eލ$fgQ 1EK;z0!/>WZJ8Ng 1odzeDYJw]5JxKRkp>ߖ=~7qb<#( Z Yj$iP2c\d}b=-[>ؿ);~Te -h]9J~3!v}a@k&?0{Ơ6j:srj%_#<7-(O9cQr* /F_8^v%;@ 1f7H⃘* Ǐo#MsD*qىq+UG)_B`&SY.J^wdnaq:lz`@gФlVr-7x !_0GR6\ I#Tɕ -EnհAN_{# I-j8gVUdx*0Y)]|5̔RwBZ#b `wlRl% -4A9eF!jn3ShTΜWd[+)fb\zp2[2lsX C-L./U| -kV.|,tΘBPjZ!I ,4NzT ڭ?Ƅɛw(m&1?B%on ^fW]n!%Մ!K26N7FAĉqld >B:,R͒:Ê>+ce1f;j n@I{ʽ-4b< '7Y]k,V¯j7 -N͝T=Aν< }QGReRm46eiJ䵄ɒhz^I&:bUoGlEMM.Uf9/N ߒ5~gUDv DTHGw@1Kre)ils+*!pklQ.Bgd3Hܦ9q{R0 ۭTӋc_:}s5 /FZ ~(1N,{cdϚeJ=:@I;fF[xmw3\ɨ3?6e1u{a0por矋-b&Xхt]1ա7%v^ -1mBImWC0wJyYnu/cPɆ6ZpeFbᝍe`wRH?WĈ"<~6/9PO{_Wk7>_yCH~Җcp`FfQD, \S%A-P+ -8ـ*}Ln{&0V$ EV ?4|wԘhW:rq6u7G1 -) $Pd -: ̧M> 9]=F2m'K|Rw59^?t`d^ԏꡚxm/+1"I~}!i&IFue=y5o\,7Kc龲Uȸ@}3%u6Ԟ87i?l=Nd jWIe^O+!'0`~x%KҬ}ɱ^wQԥPJ&sۣn2> Hϲ)[g♬|N$D,|ʬ/#Aū+>H;YJ}Ky'hF'@(0c]j^( 跏, )o$8kiRȩ1UHvԿYd]AV;^r+ p~n)~Q%>P ɸ<мymWiY8簽t6[YJC1Q GOg D>p'PQŽҨAEƉPOwyvaf8[n<Ȃu/P K݉x<+oNK@U=ӞA7ؼ]p!񻳃*a0BN.tQ2zJu -6sNXB }EX gS'bM5LCw\D֊mǣ}!>*wx 3rC!}[^\J8X6~T;p )]S.fhrtO&c);`t\>[Ҏ <s(LAWF*' x=IRjSAoܶ.a=cobTcݝgVZY °, -mQk]( Lzfud1\Ï˚u=fQ=|0k!-ƈv`2:3lHrGBY;lpQEbp}i~C6T4{!<[ 3\(Z9b'1‘d!F.Og.N^E2Xӛ31.=8Xydބ6,گ&c  >lsPzz 8?`I ,G1v.!i]ݏ׽:r%Z&ľW4AS "ESK"HpM\g?z|}nHV#3NT$aR >(Qچ뙨5+HZ9;cV lǝ{(08u~4@I'v[L͗@{. -1oa2# R\GL7,q5^'QSbsXnZ)0dݓkܛ^I9Iu5QF޶]zj b:LJ4}9B:Nscx_wF0s:.IiG~u&Ǝ#X <) &=3UՏ2s.ƀJM3z>Z\ -|cDRk;0U(xK֦iTS[cr(թrȏD; -pQw3`7FyvLdAX!c':J{T=%۴',!,٧OU1_ޔY`|&ѯm.S"uoqV>Y'ZGP"\>aeV֙ahQ$MT%갫Ųb4Dw2~_+mC/98k?{_7?(\h^}VPOD ] SpḒ=OhyYD Sʪ >M[63o@q׾,MjOLKUw jGM6'2FyT5ե/J Н`rPYW(2Jtruwfݨi~M#>U) ǵ#{cwݼXSۀ^Pk Z{uZTE.aCe_Yd\~,Ҡ:m`uޕ_;/~!`ځZ}K%7Dۙ(WC{rJiQy[Rd$xQ?iK80h#L3]^"_F.ٜ(fuȇUoZa^,H@/Y(Aa-JG-* ۯ}RFz2.?ciP9%pӦFf)Y2~L"b) ,%S*Z՝XVnfjݩToJ̢0>dٸ$h-ɓ Ŀm+~tj R˅6YLdfꄳP? nŝ;ȣ&2KIj PBpns/Ռג\C#o[=5v1heQA$mFN/-o , -fJz!H#vo k +Fέ3йaj"ph$VB`خL{Q;&lT0t[Cqe[m5R}B'سMޞF,iQbx -=C2DQ"|i C]/`4&8Ϣ̈X@HhdL?߱/|,sM}g,߲2{oBFDmLŠR6ӷ(=b_g9 dSW~=]ډ}wI:,ޛT;mq>r o$tя-A~ks^H9UiQxPӭ -犾x`%Čt`9{l1(=HpJ2֏K^@S5|tW7v*~JmԲ)j1PJl*`A\%97RaNZ"Y0]01S{lnL𬡶%8N1#`/IkBKhGVi݄6_w8Hقe&S%,]EFP8F{l s3"A-xkjʟ W/G'ًg(+ -_#"t[YXݗC&EDԫ#q^CN PVqFD荶3ņWL2AͿ ;L?%jY5(%}6 }0.QB)¾\'K-Om KF$ACӁ#(a #6Wqy}Sf[ < sd c1zkY BE2 nk?nmʰto*hw}I#He`b<(؋ܘE_qJp<0bF:0^ք62$4{s,۱lM/PADyhϛ#gqhҾyxo5@8|׏Y4+!Op0 lW&볦1[<p"L˦JXk>p -0AQfDZq,K $э42&|ÒAHN-F O,+ h735q`RK*޹%fQ2s\j݆ZM F5p(!87﷙UFI.UAZJS@|Pz;d4wjn8ns]S#bY3o ?S]! Pދ벟q'>& -FZ2,'-TyRbGcT:$>"YJrn/wm1;8?D!#4` \ No newline at end of file diff --git a/mpdf/qrcode/data/rsc64.dat b/mpdf/qrcode/data/rsc64.dat deleted file mode 100644 index ff93d85..0000000 --- a/mpdf/qrcode/data/rsc64.dat +++ /dev/null @@ -1,66 +0,0 @@ - -:s[܎x(y0MQU+ã##dd3 Є} -:s[܎x(y0MQU+ã##dd3 Є}ts/;8*U; Pq`բVY [F7)Ff}_}K+^NĕRpzy$? -Ix7P1}0XeeUm]z%1 #(: -^vq3KSWpTv8)YI@+nR*,"g*'SV"$ҺQ*lAۈYT6dSPȯJ'Jo=S<8'7qMǤH ~Mn$ b`Y{?EE:3?J}b}6Ǧ"Dޜa;).Tuk[^؈%*rIpsN!!71@ -7z)vnFPtѿfI0.]cp RsEyVqܤTXaDTN1ϬsZTf̘%M{r6uo~nې&I>&ccYSY{71DHiYT= < lȦ8 *CCAN>UsAz5: N* -D4׋oD:g%Tbd̀BAm8`~`ū$Eӣ$6HBexp%N7n⚓U(9;H] -{}lj~Itf~i&,r΀{ Ȑ(%bG .:Fom6 iоd'lz~y(| [a lQSD͡%vR\ֶ$ JT= IqυkBB/nbwknRY;flkT2~2"pZ $0%?E&&i!4GJ' -Kc(e1QAM`\Ư'y9 -U -ϰˆϜQ&bEMhV ꌝX6Vf (lP oA)0),jj$cQ,\i̅-Jo[ #gl1G>3ۓܫ=7L|Lq<)yn3bҾWu{m4A+8[rcmjhHws׊ -oo9B<9+א鯈oY";z -.8xKyM:Q p&@]T5| 5jQtnoUR :ʄV ~2Cבq% MD^腗,6{I_0s*T'hѥ 3mtJ<ȇp}.KKH#[H&l8!O'E -xo&rbNʱZ`ӏ[m߬i//= x`Jn<); =4)Prv,˫ϋy &O&5SLX pٯ@`o|*3!LVCUq)90,k,xmmJx*1rqU>:9= PJ ώ\tl@iҽaINI[[OP@Io׍*Z;!8TpkjBjm]["m 돍YS; 6_J줸Mɱq_HeGz"c9%ք^(ť"(Ę&?~\7ydQNo"J÷H9RmlϼhR l5yZn$Evֻ3dGu9$dD'E0H5`J~ LL8B -h_N';L1˜iAB,?-S^*aG(( yEGޗ%"]cPʗb9iCݛN0Ur :EWM.} M%L+Wi)MԵS@^ÏtAw~5'"[*z707xx3v83of5>Iug U'Kl=9@2i.3P_ނR`RXHkX<[C]PS|?B3?t -!qqܰ{N`grNxi$: &uMZ޶)FΓد.b6|f;Kzno9gyQ'/xgyRf8w2d rs, >7rc1nj̻bZ,#G6͹a_h!Vp*5 Z4rYYGx>rV=xkQjA"I3YbIf޺WXذJ6K==Lٸ_ulW:C =޹yDv{M,G\2p{4t<@Lj%Ijk_&09 -&/[$'Z, JFg" 22.Yګٷ^FުAY@t_%@d#뱆?wJٚW'W 3Xl . w!$vӠ~Uc L]Г1{KPt)t8޼6~zS2`%6TN( <пW{7f 联Mx:.28\3g Fk3LWc=pá/ ±gd+s~MΛ#cHːpƾT f 0@61B'NK6GQL6Ĝ s9kڣEu&^^z &([4>;x=Ǟт-)Y+zC$V`G::2]ۢ]-$ ݔ%ܥxRvISzh׫RW=Xi(7K ';9L[Lj7 H"k6-.f(Z3!Y7*=ge=avv -Nay. TB>8C}iTfBia! +k)Rr`XX_1#1$TbIڸ0#^Z`+/9&x{PL{tlХtOF"|:tr$z -$s.؀/gϟ綞0q_kFh\}H향?[ ؙdWw. 7KD!)K^} d&5Iw12eTv#9S-BUpyGYԫWWD {U$2G(h. *!RBWu>^33{0^{)TϭvYQ l/Um⾐ʎ45M$D9rJ.[:PUyWcDscѺi-jF-҃Cīhз|885qqG57<*.P-L~i<"nUODQE'9s+$]r]؃ejܭH,jɏy}/@_[ma{71AbW_ՓC%eînsNv-cbS%҂X~ZiT!&:<w юPP""M3JD&e߲/^`N|C`Vgd]“o; -44%ztZ -|9—* -1&Ƒ3CY Sk)r3m?+`t(I(88\/>JY6 V˰q,ŮO<֠0R[9MdI ; \\o?p>K[~Rwo!k'c0j[NDTn`n:fp >fU"j|T-h)?E#`w$A} -oDWM M эS #u])ν @E2$ -N"#}Ezrd\f]4֑8Y(gydȱX%|nߍ.6aobGkEkOM͏XFlnӻ=wL#"Ϋw -kOQ/*mĄ&H^H_?ɝ_9?YD~roAkB&qՑT/=j{?$h䲲|# 2{zȾ9IF2:q< 5: D土CjІ4˂%`&QG`;qmhv֢wԂDfղ E'Ē2ϡiK}l3+zzsum*:u yخt1]MT5j7=i֙`WzJ߄ľ u@œu~)җCJqzoyX(d1h)GxYݘi&M" "266KJ풿20LY`G΁ue.ՄqDe@ICшyRRxdALodV\׽?r -,L^)HN8(X[{"wDId<5d'-\'ũKsOg4fgZ^wr!0[^xUchs"Y~GGWң1r2hb2IU#[*E0J&F{~'ٔ4) eN.fS.[9a\"d8^s(P+-eӤ=%}qhKj - 9Xԍߴm631! -f:&B=HŇ]+Ƶ飘c};{>b Rg ssSp e 2Sl*1;d,[ (!v(oq m+*kITUˉ{'!۪)JlMPxc,n_̩57&t\*2Odp<'׸'f11=qf=z*@.V>ɉ#xs*r' |F9~cB"UU-P7XsEm{n_^2۫!* S-V!eK+Fw=gaas@s6@ `lT"l沕ԏJXVM7%v(Bu BrAԈ&Pb -!Nl (.l%rukq֩[L>2L4ǿ*Ph"hRK }ڍĽä8y:SZt),p1w5rw -y|v<=z!WZ/&RVWٍc qHɬ'Yttd(mY"ZiH|ʼ Xء:*Au -rYW -#c{5 -j5JWC쒦0гK]ջzPn Nv<<$$r! oQ-n}@X$|7W}&G訦7[Hst߲Z0^ lyS@@A(S(&1 QPfBSe kDr`szpҵzOc&PB _>85l믶+l֯v'Ce虱I >tH0]547Hm -_O\^oΙ9%G9##qSq!]`/¾ÛhfU1Ok7+&QuZGGv?'/˟LN֣#sc5,1Wsa~m/_76\n ɈBR& -+GL}mI@'L0$gz,J#\\)ĂҼ|'e,j9>{b6dO>uFr2ZMݎK;iq$@ yQH(*%Jb8$ӾxZ s nH<߿Nqޏ-;X-;Ө]vN4dPЩ7\:eyi.TYB礄)|E9 -S&I8nF8%F[teɛZJG첢4&a5^8)a=hjsH[rSc6\6**eW7tW3ƈBM"GTnLw5{};E)ܔ -l#FC7,NNV<p/3w]l^Sƿi Z< 9ԌZ1 QK]ǽspkpj*!+j.*n ?xT]\Y?ޡQ У (7y_ČPc;lSS0*ښ)vo7ZxDm:Ys%׈5Nr?+=VH"2UʽU,uG? Xae`K^$QEׄ#R1>?z~Úk;$: ?{.W,w^(;a&,)xUMLk3y@oo z@I^q+8p[ο?}v/Oe¥@#ߐW `4*-`PE ZGˋ̚8 tyJ> ,IA.ܧ [1KE,%:jqv lia%$:QeB Ltx/S@,DC D_fA&x]+_`OEӶMrȒvo36*?@ZI 8~-CV Jxvvobo֭%-*z3fLߨ9E~q̹?Kρ7Hih[`ahGMYŖ '"snb\"*12@!AX0?0hyn$!dqi]QC{HGF6̮D*@x2(tdW%RW%GJ觀S"toN*o /lD9HECU[8'fӞ• {=Q;7sCr@շFǣnGg} -0AJ+^2Waǹfyq]yIR=:-I>aʿ]pEuDIC5#KSiϯgbwP4Fh>ɄOí@D|P5f ԙ -_ M{yRT:eY?Ft?4Db+q4U.h<#ȍ4.$J K_\l2ϥ֊֫cu"/2z AFu4m^xFY]Q֞)!M/P~J/smdh{*$WܻkzFDK3aS-^mTڕL;;~c}'r~A*!m\ }Ã]/pt-}U0R! lϗdeSB^Ap:nXX'0M9nu' e^E\brn,lyb 䀴[QVL9ggfq͉X -Vu5 +Áʟ<\Q9>#? g {c!qȂ(q,g~7O*C6lsYj%,Y+ؕF;|˃XPb!!x9axjD(2/(XCRqwupP45Dg,xjNZOyNOCeh3Ѝd[]g;mXMyx*ʅi؝cVUƭgBSI`" DѲwOC[))<2& -[b2 +.dБl3yн-/9U/<gwz4s?ԭ٭MMiߖ9Å~4c1Wd_#FyaT`L"N5hCRAʜA0kk\̦}0\r¸4D;n*5ku0рj=[s%`CBHb_b }g?kiů%pPV&}ZUzJ&]Ж >r%u!l%f!bB zC7Ӑϵ&g_eL쩦p\bB$h/$FXW"?O9tLzŗ'k*IVw4>k[-3i6gv|1]ͤߦ_dTQbvȵF{@r䟾;8؍!ɗȢu*)S1T8,Y=XgqP iBWkP})VT֒2..GNwEB8IR?*R4 WZ0ٵ UPfvG -"i}JJkȧekдGʝ6M%4gAXܾO4>j)nLTdxNmNbbz$̛z-AGT+\@9-Ɛ링BK`w|g5ˌj#m&mH/72Ho휯:F\+>| FmTYN:r,"4{#D٪2Z_nÊ5;6w:|doea3++]Է9&]p;bqsme)d0 K/BTZCB)ʖV= z?Ml - -8gڑVz԰;AљpXal ؟mHb~0Ub0(`-!Dح*y7&[yGnJ 6}]#P''+8 L6 -/x~oަHlhՈ`D|bF(v6wCCMEwmMWh;B%1P_\q@xz;Bc2^Ly&ÐENDziPKiD6'0#90͇=8iPl=˿p(a!mte^6[{Q6kلi;tg,e >mե_tTS$:qYE-Z/6 Fj}( EԦӳa`kqh,F]N4An|3?G(#DDM$@&#U;!SjWU9Q+`{UkA}16,xxHH-q.B@-뵢Z٬Pqƞ6n2Ƽ{C!/8Gd@O[zA[7,,םШ76] '8uǰ$HnsLaMQn2;٣y `u>>P.?PCLx0 w@O$ ;t0(k!R5DgvP,4K׬Mh"/"ABݫ=# -|b@/<#ūykOxܨZ(? %24Mksw. {Ae8:lI)-^^c++Rt@\cGtPN8,KˎǗl e-f?`D+z % gHD>!|ֈuZ׳o\ Wyߒ\B{%EL=ȷIl;Iwɮz$};&K'wg]W Lݠ_@|epj - -CqYVرC*N/%?GUjg>dA/gk&O)lӔ\nnzP߆\EdQ)݊s|`jh(n6ч8G:oށ/rJrFF⣳B^:akSy_YzG0g4#'aǮ7 ->]|QQ""R ORg{kޓ ga+̫biQnVIL͢ꇡU4}4~N^#um,X\U8 8Т54 %w=/M1/ ^ ji[F߽m+=jXbq8,G^n6Al$1? 1LeV0pQn1#ig;ݱFݵ t4Mi|m.O q[}ڒQNk`cHy!0>XF5$YeR$eN#XwoEKʉV N[D|]_Nȵ >2žm\@oggjՒɠM81# 9r_|lȉM|ŌdQIݚyw*wOAAv OH I)LMV- Wj(3;XTT%%Esd˼hZkiPeK7PTJpGH]amyG@5xc0!$11ZvZvMٜ[g=nHf&vS8x.e\1!4#,u`IQfBx h2ߣ -Ont -,[\òw,(q -1Z˞``<ʒWe+'@J">'dԊf^_. CP5IPǖ[\^M~_=ӽ[s PnG Wo>vئ -`)T )ARoOf,.`shQXgHNֵ{tEuuS_WE]`[/w5]n-׹.ڥtI.J!_ Y j~Vz&DidiSSOG6gXGW=~ԑR5i~2\BLwUWpZQ6SJOJ.77|=(C.u2Eʍ01>MHucFb|E -~{, /S/): v.:(H'tGr!B0FeՕ~iv@h'K:3O.Wȼ f ;+w;YϷ O~\XPvLXR6 af -ރ7E􀯽mgkCJfu?7ˢ,5adTYo-^vxQƟ $[ Raj-V( -pඁcO~Ew7c^ݞ}ʙW2GF = hTIZ@ Ǔ:)"X;(s{gV -4rrpҙpH!A. )pxլ=S{%Јz'jf$fVZZa*VPagJV$q1>Ջ- Ҥѧ7OU:m<穿My%h< -װ>?~ * CuaCO8>W0,O ^"rb]̯!ۮn܋2/V~SMp`9}X!#CD?K;C 4BeA d^c3 ExEtՊȩYVe˝ %~Pޝ2jE@3i/v\{(Дru(TrK./f3\ R{0Ez4m,J $'wNkԳ:H̬¡TK0˔]mBσ䦖tJ'?z>1 -[K==J_Hbx}5wh;Go/58#=^!KO a|| ZUSnCcm \ No newline at end of file diff --git a/mpdf/qrcode/data/rsc66.dat b/mpdf/qrcode/data/rsc66.dat deleted file mode 100644 index 85106ac..0000000 --- a/mpdf/qrcode/data/rsc66.dat +++ /dev/null @@ -1,68 +0,0 @@ - NJOO -B"e9vP&ՁPK _@`/Zt> %}Fv$BBP;L+k*lC㙄1>C {Ct#>wa߻}J(^F=R .ZČ,hB'%/:jbFEQq7-O>Bo]-D_踙wzI[ti⧅{2>!\%ۇ"Vm̍ՊĨ}"cMN0_9xF; -qxkIx qV f^ '9|M6ccWxʨj?Z[Ƨ!셙XN1 !R>h͒ omSc4K9@'lQƮM}~$8SB/$ŜebB:|9 xg (vm]ljSZY<7'@'5tIh'[&-A_r&}4k +^ wg e`XX䪊Ǿn#uװS_Z#bñMH7bBӲr-1{u.UYGr5g@Qt,?i.o qNJ)^ z'>O]Y^ $w/B-3C~3hk*jtŇ]jXs>*j]1,a7 -l u -$<fP3u )K1Mnۧ&֓F@$ֵ,>ik9>K'"(2wyy %ն-6ܳR-;ܺVBcopg(bfITb"Qv166sf2.0Ql%1Q97e Q;ͮqC)VcdWV0!S+tŐ7~] --ꨭp^*4ob,wZ? yp*&wMyƥ1xۃf2SĢCƹ_n5+*$|*R@*P8g:珒>+eK[IU44uL 7 -~ThR羼赕B~#St' Y#p!JlD&9{{Ӓ(\" )\{݅SCײ"ډpjeP:h=Bᡰy0^V4o9A܇YM-1Gz G{,) ɌrD skiYG}"]knVGb`ż V+'i~Z܃ 7T3:DYiOi_۸i$jk4wjd/\5`/}]鈦vv)%DGabc(9b0BE4Fe $pZo\tx`O,99/_tWArȱ{iBCLlnq֗WwUΡũJ1T߲)e$Fd(X$pe$0X-Y|[h˖wySu˟r %6;|n0UQo,ưSg  yPdMO,q8>N)آAguHpq?.^"}H%4t/U{[ r4@٩PnR4w2ůuϡ 6Ju Gu$JE#/@K?T﷝qeSiZHѓ",]9xnOgNNjON8 LZKL=hu&@gV.}[@@㳰!S*:ԬwFˬH?k5¬p4χygpsD8LU+I aCF8}08)F8U ě6n ĄyZby\ @V8;]Yy hUڄGQڟUbDfJLMv|74MY_k..j΀mXA~\{aQcARN|牃;H^oZf5FIgaa[#Mp/"lGHzk?$ -t])V%C@%"YS_fЭ +Tԓ軗#-|TQɺbX:'nec>[Hx5 -svoL~>볔^6eV%3  ?m8%7wEтNZ"XĦӍ9H'pH%M$d2Jq/Z{l*M{Ǥ%Z{kv9i59Ps DbdZXP遬רgk*יkq%(HjGa-x5llủd\G4]`KJb$rn]vA$982,AR Ȯ 1`BϦsV0m##ʛyKf@kF@ͦ 3@Y})SPzGƪJ}TAwL=n**ZEMG"KT"h#x"̤/ϸ j ]Iʁ! -PeeC(ݪQmh>#JUm߇#{LWޒ$X -hÙ0Ԩ4_7I\uަl,C(Ĕl;K pHVt"WE`SLþ iK|jLcu?B׺j*!VX7ٻRATh/ :RV|ēXq-~ToLK* Wb=_KOQI&Q-d)HkDDͻ1# coBNNi -F znp=wV0r9P0QYDR!xSA>R-<c>T TQ.* $ԂB ȡvZoDZ!vZn xV°`z[@^`]0u IIm0'rW2k7ɹ׶̭]s*aC[RovU^AH0o,Y ,n ,IWf7'Q$T.LhKdiE%yo l5I#6| -yDM4xM&rۯv>ZΙkpg"?BowbGٛxP8-݃QxT vCn+y чz1X{u$A쑤rf ؤoCQ\q5L\ O.v$n)sm|^EN$[UFf-\u_FP6~UFh`_WLj'S`7v0җ֟Gi|002tz_}a`}6Wh}r#$%=mZg$b3o5_XG/\V? R쟗LZޟɑ;RleqA<,ĺ' -]R@g2W  oQa D Uܵ:S ;6]$VNY6˥r8cg~N*[a+@A_[2@\LRuHԛa }dnf&tKˈѩҞ0"*Ҿ %mHh -1G^jg^ٺ:/2>^^, -p&S1\0h0@R\0zk.>;>.҄4M(3/"⑱3_YҘ==T!kNtz&m -@N܆OʸrK{<+Pf/* s7O6C]͔byR&#HȇPH{H!`QZ2+QЋ1#o˂+hD/LdFGzv~կ&$GYm~JTOPb-m'4!pſ祤"JlSSvܻ`X}!1*0͑<>)1 -gAmUȝ) #; IÞXpc|/bH|g1Y\սRY??)w#83~QC3\D3Jh^g&h_O4O8'pp=)i\~h!gT#4ܢ_ -Tw{R*ym{sγh=d*aC_l ٗWHcF^~(s':6'CҴ.^#r=Z:<צ,Z0 -Hl}RN3,PjQi;DXQruyܞΜ < -9pq -o a՘z{Lάe',<5QQW֝_}~鞢l~X~H(sI^N4,9R+B}ݑ\ -'{}BTtǙEA2E~jEmh?WSέ5QpV|=<Ϙ^A6D'Eb/9:EUGeܨɂnr$}};¥φp{`+pQRKaup>@+)=l2[/kմWGɸIy 22 -Bzdfs.Dy5CK8vM!]w[H3zcp(vK+Ъ灎#k2uĈ;?퉘Qnh{mMp -:ϩ.8" KEIdK73wGK d)/Yoڭ?W\\՟ԁYڰ?4%¢Ƃ5e4!ivye0"c<"?j!ijKlU3= -&]8=[#=۝Y>uȬ\Y~gğtH A¶F^D ؙM~H6-蕳RcJˆ/lPOduw+뒄W@@ fkjjaYu{,w"<Ӑ& "?i&#ը`vOteXHt%:&{o]$ 1)xv -KPv\ʯlO[<1*|B}8e!ND+2޶+Co*k"Z@) CG̼W~̂>aff{~ p! J5nWÊÅDѰ:Q84rCNͥJG?HFt KKq]b,!ЖE9!k|y,!;9n4. ;<3WgOR,ds^6TWKUJrWEjr9M6YěK${z9.qiG0f9VNxJYNW35'[9ggOWEM/)5I/&T/- -YJoPA -S*];M4ZۜB(( +N7GW]>ߋP,-\>Kü6yw6SɊ֎t;j?ȸhY'HY܉0YsHrpdX<[EA@bEQ4YU5N/ 7s(3?]0p7l*\ -X=>q^_ڠqs;'{`[FF+0 -sɀQf罀aR'􎃑I8-6}i- y[P 6!m# H0b Itrbs0bq\XQU~ev_c9V3zTTi(ݫDe7DFED -k}#U^q mkỒBJZcz3e P`6 򒕼PW Ig W+2K+՛sʆ} PI-Нg| F:4ڝˣFiۡ9HwZwЛ/`g{9w :\Wc׹'_SW%/=eǢ/C扙!CcJMhuu#AnEՏ]iQX1yP)5v@!3DϮ(]7m(::KM;^ t - z^ { 6LAQfߧYZd E a@UMÁҖ &2~Y2i24TGYBnKk$om1?&-\_.=q`I YnxUA>P֐bYд~ߗ6(GB#铡1sM4iE^t9;Zu,ݨޘg)kT?"zL7K6עZRQԎYY3;ANraLB*7|'}L=7>d9e% -US~KW)-kbF4!ބ Mxޙ51Ozvxg`P#ʘwN!eݿǨ'lvzK P~Lz77?:.aϬ>nUv+Ϩ]f`ׂO#Nfr\3dr1*q9pxx }YWBJ|;t(Jw BJXZ( 0dbsZFg-:F#EKL!q{_Ogqjq@wg5;*ޱ3'~Ma׏\[ 0*n^JcLEdp[3 E" _M~ :UX"i.4ף.d/2I-,(VTMJUjʇnLfQͶ|$yCW@xPF5xT <ߟeò 3bh #u Sh {_u(=cU%̰*LxX]L箵Y&L;xNN&?JM/+E:2$:Z,!|.az/`ב˸OoJAx'ofc-s,bS Ȓ$8dtn$yw +kr -G`m4mBgmӂ|Zxs1"3%|e&S;>\TW#t8fD6ahj`$TCfA=@jeL:b堚@+ќ ؜ozN7w)ooH@_{ٴCވ%EBq%Ѭ} -*٧-$` XkajVW@#V$ȻaV\8ܲl8"JS&AjzK`CN:9dօinoqG! &Tq -67ckťgn>7֦tcXmOKc彄 tcMKW\rRa(2`MDU: (s4c`!X_/X+X nNH\ ŭ=J޳A؊*CCw"sm `ʺN\s@5pK52.0mqjﳳIFl S.Q{.Oh6.WLC|'ѭ/1DS~JUy2xz̧YTm 8z5nTeⓁ`6a:!>Ы!3<* --ĎU+9u(pZ -1%>}V}(b -ƇHbbQ[c@̡7}V>) }( ~Wmf{IIBAA4"{&Oe2#HU=;?UUކ?%*(j1 \8HR1`}$>ɨp ˅X\ ^hSfUToFWjMB.de H83Z꾌lŪG6N2}n%`u3#٢iLG*Q -{'n:=spnc 'nCpe\y9(3~ O9``]d追?'e lEСFH .W&Jyz)ڴHf$j2 -r//8Re. 4G^Nz )D.dt=PشnUt5 "&:5 y^>G/~'#3.#(?v#40&5x0Xi;NCZikY{.+)v&-o -Ɠ)y6 on鼶J`~ b]ǝ٘]vwl/ -d@ $Oޢy7ÈiwE3t*&4Evl2HluW6GDLLn1RIZ< -(iq<*KNym;@yX7FpX -=,ipT/'Vϭ gϷd=A5 O=78_+MzjA!d;q-}"N-Vl[;-7<Ns+aXtcyr0= /0qL $M""L󖟋 yO!`DT'a@JKڿ:8 +b&m#ΝOit^|VmmsFw>tyxO2[[C/?2[ԪJDŽk5&Q!]5 Qx+, \)tK}z*p~Ť' pfC86_C .,_uVJr/mP͓[(芊~$x1 :91̷1.,cfz?kyFc;O+K\AÉO[[ǀJ= -uڏ -3 -+g'‚ȓc7j ZR[YǥR)C-zzBY4(g֜:Lݥ2ڑ݉mxV^T@:$n!cu355ݴUG jHGeGpBE T0;납:Q,$:Ĝl5ī6M[LF}ݣB}{GdVy.q? bQ F:$ۋ ,Ȋ4ʴ<r3 r"Zzr 1)inqJ?g=*OS?ւVЈ^!Ȍ=I23ICLHI_";ZڣNch$Bmc=WUD8VVwR@2r̋2_Hc癢WmؑszUWㅥWئkIY?OQ6Bb?{T`,?x|$Rb΂ڷ/]'RFv)!۰>NLrH/f" - ϝ۬YU1 -nߤ{WhqnTsA7Xp9^ĝ88bxݺ .p}m?4eV*nQIMA *|)ߍg~ww/Q}K9 x-v So-Tp$6)'By (zx5%G~~M&UP2O撼iUhKXrVKC?ǫXT C6G;=I9s[(dU}i[uDoEhi&FI@qNQ/w:d =/ڳ ~&3G j-2wI{.RRi0h7+㸸#:<}~om_hJYjUh%Bһ6`=Dxe*D~u""u)*]AZƦAtAlEb2޴yРJ讇-cSO~P:JDB6{S bE{e8M۳X8;15T"WO[LqXiLLĬGõ_#!GY H} [8(EZJJp-jRCe؉E=|^Cc͞V}9 mS/ # e1'68@Oqbln(: -[:&YX:U6~9j\V˴2Z²S;XIDx$=L@8D~ҋLF ,M2Yʰ -7JGtF@}qԿCɭ㎚+bjl3뷂vpaw|i\6cՐRܭ4fnLA))޺H[UQb4RW4$Q4- -9C:؞=}oKxb%T ]lyffI%hci"֣s֭N"H`m(<^}jeaO&컜 pʙB5VdsmšqAV0amTֽDR]e C#9|,Cp*do۪Fu2ںô"w¹4y`R]f# ,#0B@>_j c2%_?u}t7p;hk={W=)~kGGc.<'ybj7=y+WyL2=C ݍ|D}2q ~` '*6YSѺ3o%XB1rBMXB -vrkh\0@vxuUqyf;U/᤬xb@<=\m!oՠ>J#jJ6at%4 a\,[( kX.3[5+ul);u䮹*?s<_]7r$7l {KJ$%Ai?[]`m1+`rjދ@{sOQlX -V+!qq;:H5r(\O/(Ҏ`{r(/2G"uk_fjN _ - >>0l$ʪw|Z),긠-vԾi+ dYkPkgɻ붍rΞu[}]>{^Rjw^L#W{^Z&ǔޠ=":T -vhq䁁! A| )9rex-Aeu\PC;j_2P袻 M(R^vԭ~miN1G5ե`i&K>"xU?0ĊEV<1Bvt jCS.Pٞ ^PPE%^dD5y%A:Ԝ._6h33j4^@nkPf~k`onk'Ta$0g/z|SaE5ռ]vNq8s||`ك2HUI#߉ -RXm]ZaV]0)o3UekV`167gkˏ,gy鏤QN]?5.pMZ+lZk@-# ð\fjѯVeGMRA1vI56Ao;8 T~xS>n.H)ny37SlBڧ"F`@$W#`⸰/2!r21m*]]HEJ~&,C}&uÃ&bVԡ 柞I$a \ No newline at end of file diff --git a/mpdf/qrcode/data/rsc68.dat b/mpdf/qrcode/data/rsc68.dat deleted file mode 100644 index fe53a44..0000000 --- a/mpdf/qrcode/data/rsc68.dat +++ /dev/null @@ -1,69 +0,0 @@ -s '<^李wUk"mpશk&kG3X?$Pw " c s '<^李wUk"mpશk&kG3X?$Pw " c N$qx'DAS(o?EIqL֎=(C(f!~H'D7@:i6D|7f<֐=ǽj7><;K׬Ci1vǑtTv /^2A@m7p% -Fa277Z@ʒ<*H ͼVrmoukp`= 4:k5S&L힦ߍ\Rh6yl\\OZϨ*Ɇ{'򘑌"` RY`2#j.;P`{vP,P T.ҍ¾8)hOd7MQ9=mQd/ 4fșn;HX 8; -;N3m\22_͏( D73}M)U3Yn]j'(l@#_&ɑ?>]##O&i2&笘l!@8_)E Hf8Q-xޠM/JUOx// MyJJgHY5 ͱ}R tX -ЫoDQ ^x ED'DLAh^|6^dTr}OeoGpMu1NCc bEjapD0q+pd`՗H7eu+w`/"#?l%}KզIHP.m'CtB!]?(LPv dx8ӷ)}[!am>eWńz{XPJy O&:ԶvZa ?#pX +_k9Jx̟PsMx:x~9E$\VFJzuv+9ɀߛ=;UmĈZՋ ыhH³rFM=y>5L%4`#OG@R?5``4GMwGŰ܁_v1=#.SiŃn  S"_D Ie}fSC6.Sd%Qn>1sޞDsg*o/zyDbCoQ4 ,onښlԣ%gO{YIc&E^G{`֙Lݩǔ[{_{4 Ipjc)E3/g9)~;ѫ Y=[l?u{(p}#d\sJ; @,@awm Lźc4'!a}Hm{^UCgB RLQO4-)AZ:_?otZ?i?%rkȉNկqwX꯷^}ol"+H\>l1lk!+g@*+%FIh̍/%v!p,.vvYf:ڸxr5/y_!Ej)yR6k>f2ۯkuZr"oߤ1@B슿sS -b,4F&?SE+1V~W}΃bX-^FCAҎwTZuK> ۨjzɍ[g zzT,vn& \]|)ې3{ωRU( 2a'<ǩ~q7njǝ2@\tsI%a6<o+J5j zSHKȻ"kzP$Хi@-#4!+]KcB)\(!r4>VZ)!/!T4G`4KAj{]бOzJNr 1ޛJX۟`w,؈JPT r J JSf IF .6x2Y,APA1X$+ ()Aw6CQiXca(;[}^W-`UpЙA\6<]\gu 6"k9DEݗjUFb/Q '?f6Wnx>W#ˬF*nxud(У5ːoF|d, dP@M$nfe&R -f*Pē},bpY|C}RpqfpeAOo;Ibg^m.rimܭNP+>F9L?~|FF(ALcodL ".WE-؟KBpϾRp1Պ qEk-BX6O9 --hqXm0XҼsA}EL{Üo2{MZY]-,0O^ASW^^s7盔c ŐI }j-8ѕ0E6p>}KF|G5]M&;4F5$5Q|b9n[vy:J.G]B+諰}K --;IEׁNKϼ+>lȹ 7u -"2; bkع3o7b $I5j}7ht1_%WܙmzxYq͜euVŜQ8E%c.a:Ax %=Hh({"6m7c ->ηOB5>FmfS@WEuPzM1ig!L5%,o_V5z5c)D/9 .-Ec99}s~d]jeDI`(x(] '9١hRz0RRދ%sjXW8Nbaٚh#A/e#WGh;0ʖ>\cdl1>>ஓz3@Ӧr~LRkށ=ʇt\'i$NsTOHCU~LfsUU_Hrtcѵ}hA%;CRX:~l/zU華1$<[).xL9f _I:*D3$P7ܮߑr\ȸ,GdSi:C gʅ癭h B'mdŻ4ST:[?܆c='t`2 ߏ.Mʃ*T'Y0~BJ˾<14i6r|! ԗ_jԑ* |꧗ZJ ^L~F6i f 9&|<`qsV3uYon%VYYC^ EDF~JQ/4G\NDxTܖ&* 2}׺i@232&ӿPu=*^`(ߞ5|-ۍB4UAQ,s~PeAAs -ps0R-<$BW UQ%g|& R+ߺ"Q*sAg @**]+)`grNgd㹁߄-"Ԕs7oaEԝ:mg.e5[ }Am[L[Stqe ɴ~wF}(97ZNO6]O1KO@3E^lPp!? _7[°9+Ver 6M7#trk#2[H#{%;Ѭ C1(_H9 nX{>%Z21gʬޚB(V_FR09A;L]1/O5Y+ïwh_ "Rf0 pO;m̨Q2Oi&Ⰴ!Zk03+X^ןF -S^#rR gt~Q.'~yY~J,")iC*;C)uyixR!evjFQABeeXR<| bؑeBV:TVQJx`E6gYU)25{UϠ;]ۃ.JB)N D BbB:yG#`.^>L[l^?jk<~5@գЍy¢{Y ~S D ҕF3:o5bNAt& LMWbpr#{<g`8k]N6C>?2er[B|;$` Au*^BDՄ`uugON>މ2ZI{Vv_d/IϜ*b32ydTIVA 'g6~ZlrY{BĜX-%r!izk1tf -g*2{;~X/TMRF;ѯE+'̳yzx@EyTyf'e$ Gt>5C.bYFrz\mO%Σ¸W\C*6Ns:_#l>įw2ut/"\1Z*fHD h {˟4߻]c>+4nD,ygP!UK \&=]j>L-u‼OeȖDGݔ(rc -"ur#r=,Eթ7ɟ.ݝ4ahw~4:fu5$~ecf-f|,4N6P"8<ӋfAJ̎Et -{Z ǹ - -]2Z?_Z[ Qmub*tp6q$.z&Se*a{|N)p7maar*N1]3zkHW5ꍕ v8t6*x]4€ -3Q 0܀V\d Ⱦ޸H&]ʿž]]$Mo/!zP)&YY/m^Q6|w$.o66c^ S#~V3QRMqJRMvn }i7IF"ϋi3l2ɜB_Lr7OmoOIyWǿP/Ka0k&yJQ`v85޿DF D`@\|Ѕ^JB=}C,XW\(%tߋmcj[^;Gu-Bw8uI@ZĐ`\qbD-˅4$Pa9#n ̐~Ʋ`]W[~{kR-l&yK :|.i,M-:d:CIDE?Uwby c7c[ն820~ZQ$҉㕼NeQBQ0EV㟑6@gqfSk~h $(h:,XgqhیL~"ǦU//2i*9İZ8%"JM!=+I-8;&'LVIIaX=j;͑c;Pn^U} -Fd -!>K| -MWُS]q_ -}XL:R=4aWf-9Pv7ln56 I~b -WҺBVL6۞ ᬊ$3 23dNx7O$, n'Qd.y{u8 JlYx-&OVjw-A3D_bmk[3#`vkk-UN_>&msJjd&4OE e&Wk#D'EIEHWWҫZFhBAV; a:*M;&BOSx.)KC46B.o.VS-CTC ĝyLFx@E0) -P0#R3MPCB h|SRB^B(= hIUhٖE&GCbi+ٝm 4)G|t=)x)o I|5|, z'1M @4wƃaH8۰#>XQ s@#>w1@ -7@\ld;KeX%IWˠ!y킻lҗ1XT]54:ؖTnT=<oM -Nډǂ+qن(bǰHVP1Rlk 8>)P v838Zͪ1/[lxuI9պ[EtɶN!a,COkn4,`,gzi^ -&R\NAٳ,0굁SlD%(*9{r%%3K#<^@N~Ul(OYy| w jgN -rtI|ג"wNNg5#1A3R7 -H _̗L)I5 =y$j~ګ`V^ևd=VUVm(jhܺ vGW~x|_!TwT;=EX]U2뭱"0Co#?/],ʂu'vμq2\9sӚ)LYEʀ] 3TfLٻU-9VFRԖY !CvEѷh1nyGWi3V|arC~.7i+!3P޹Ș*@DS\Z#ca[ $=`E߉0j)Cp.Rlձq[= c| -0y{djC1 bq s WZ%3lr!ZZ⏿ڝ`?e"(Ugmכ%dC.a~ل1#11&n/2ʤZ!Kj<D Y_<)ZX`ۂ;5#WI!,)5nk+5=yZ/p7`$>lU$xPKcu%V!' -NK"ki!`1!̲ e]@0/a&q6/|K'}Y4jLvshjHjr( -m綍1t}\92A V2cB݄:X@a4v O:n T |) y(N$G\>9wK9K}(gZ vY$e7,  -eV|eoM@n!Dd+#v)N8t詓pւfTqDffjp\qXB-qV~KQى,/TH#֭ofncG3[O}2wHMjinۣGbMJ/M&+)3(%O;2C"UfA=8(%Y+4Pذ.YDGYj/uy,x"8!7`c?a%"$pJ\ t$).JE zЕPwDln[|soj|V0.U[҈Ylt;$i󬤝r%"7H`>[*wjܡ wU)] QUe09I'Cb2w BjJkX޾j -}|f~-'éT`F~C~}{ ҩ Q/6(8֞|wfagYa5 jR^>Er{@u\-%Zrr/w&?#QW3>P -C{P"<*xpnKIYҰ]Z ph (SUcA/0I[OYˁ>['CN*r$_?&3`÷ $9J:4p -“),F[?6^=F9a.d\2ѧjegi4!kRʸ2M*WN~^Mɮ_"vA`1|Eƻb||0A;fQe'֡SziN%52J݇x!|ΉK/GO@ñNU ?+ϗkh)At%~{e)g걪dQUчpV(׫apmp%ɦqjs} 0;{Uxo"CMV#vf"zN-"=d\T4Ѩ[N2>"`%{Njaxbh?l=BK 38 K&b]Ġah=$}Hhhuāl;ǎ_R:W< Ea@Un@4?UTce S3m u?ռ33l>YwAr'L](x]=i -\ӳn>'Ě8ؾ9^Q'xy'4NJ)S KVӑXV٬ݍsf=< K܉J[ɬ*3ÆKK:1s#^gh9=].gD{蠿pM_ec t7{"_h}_W(G.aqYl5B&l&ݥ18LTg9@dyociuҀdfd0LcQSc'IzTP9q!yj >Zq UkoN[1ȗw -2*k@ƪ+wwýS?WNzH-[6؎9z<87hwiX-]8ł4k`qZxHg -JL2. a]5Eмfsalmpw)e\c}v ݨ'?/ -+ [IOViDT6:Γ@YITTVR9$0oZD5}n_ŠX| -sI{>3?Ę*0#`??PKiŦVkO>Ƶ3޽':t\8jkA3*"}S@3]358.,!O+? swku*$ݏo3flWX[h (lX{Xr"m 5T̴sW<0濑<(Prkn+Ml'˫0bofYؠB~ ny߶!B, pL;Fa7*>t[j'{p.ULx}rV0al5n8F])6 FdFJvmE>Gx25ɯŎs_W?nBϖzRw@oWΖq7RjAeR-EӀaCU]L5Bō " fD~5?m0+/kn2`++5 4nxzgn]L; O?qP<>@B*MY&Ӣe@Ɂ̠z*3&@@zvZz+#c)jK;4b7Kr:[VnL'잾گILpL7[us\0 c=/CWXV)h.~'Үd{Z5'B9:>I'V'p코Rf鉱|SƗ)ܕmyPE`rBIqoycd>: tr<늪N>@sՔ>F=_q cW^$6i~lm,Aj *UJXlK*N7a*\Q[{t'm^AZCGdh{-pC!Uԝ+8vJ)wK3W>a`cŚnSQnib?sK6v5%PJ,b 6o'n.HҦTv:e/-[qe_{7q!K`=)r wϥKgK)5)O@۠&!xȏCxMGQV fP=űe A qtR=;-LI=Ci5QOٓVsFK1ksRW36Hor -,4NQÈav 6,,9oQGظQx*fZY BOs_Bʞp!8y_G& #EzGG~E:MEY5 -rB 8yI&C{񷪳XbLmϟ0ّX(mmS+ƒ -c_obtQk_ "wtP8è : Y4ORwHnP6ϔd!LZ6¹U'dŵrY }cUWE~|Ѓe'=$lG=1|[bPu{4yrܰ$|4J4db6EG)sP S `7 Bʺ^._7jbM\_l_/K<uECNdr+h ,}T+>ry 9vS eb/^-SS;j qaVCc'[,9ӵD -63.`uUY2ܦ8+l_ ӾY88|Soy5듳w2M6 Ϣ:d҅mL}BE1`YCfV M=# (J`;goUʹ3c(m;sA֯͞8f7xdo+  #F{xzc0y\B {cqc< -\\;þ錍m54Sk?x*T:S/HvkB^W{[HLUH]֨J=Sq98Kbէ1b -FyеRct-ūѽ -=\#7tՠ(Wtjm,*+Ev$8pF!tu`T1!§`ʢ`rZ|Vtu  XÊz-3 ۄdf=R_p e^S IL0U-YsD ! :/(aOZf+Tp:҂Iyx ,дk֢nSuR|s -a6_͢\>Nu[XGD R%sT}vSb%0w[ZїKgwzwyFn]POk3<Ç2XTVRyau}BK2ԌA9ʰxԥk?`>frhwuܝL6IH!pe]/B啁51b.e6IBSY Mݯ'o29@c4*eO8@ ~ǟ=|xm_@ĭ?tߢ9!׊lβRdjeFU,1&` xG,]vaځjšh1:}]v1;\ {WɔERG(%1{{@۹7_t$iS*;F\|Wؼ~TQt+^ug3(քż:)&ѱMz+rpu #Ļ \ No newline at end of file diff --git a/mpdf/qrcode/data/rsc7.dat b/mpdf/qrcode/data/rsc7.dat deleted file mode 100644 index 5d50131..0000000 --- a/mpdf/qrcode/data/rsc7.dat +++ /dev/null @@ -1,8 +0,0 @@ -z Duz Du)Uꁎ̟R, ɞ'I{:#`{[1VIX>S^!Ne^yE>tFAxlGS3߶bEi٣U4܉6pv]|Ǧ"}cB89=|}.m ÈɁU|.~kj؎fB*q#E9g0c$ҫ[9}h$0v,slku`Qetb7Z!DG%;KbLP p%rv.6z'%3c8e\ @~;5 uw+\repyLZАQf7 T&sS'[FXF r`q - HKCp68 éGܶIr ɑyH`'X7eW(d|ݙ2U/֐)Zi;ʃfwnBi^ʿ鿑J%5?vĘO g ` JjbDAz5\l唖W(NJfƋm -gpa,uc{%Y︩" 4vjKa X2+>IT`p5NŰDZn8;s|N<6F P/}/\kOd^0+=MR"Gf8vYB]Rn,#OStDE3͕uLx~9c 8C&-hHM c?r -;Jj~A_ :1-]@1&(;md0R*08ݔUJyk],jw״ӳ51C"P=JKنHǜϑ0Nj 3G{tI/e2>XkHT-kJ}ljmO$/hw7D2iM޾9-h6?LAd>鸌 KV4|)NSwSjsx׺za7 P[Ȼ[.I5F~6O(]M: ۖmZA2)a9Fhg&Չ' qxzdӎYb'Q]=&ܮT\F -{4o_A$*MC^Er:ZxNQ%C -$%Qƻ_ʂΜqn eAgb/XxU^sɍ}.#BTIL -PT1_DC,6disableBorder(); - $qrcode->displayPNG(200); -?> \ No newline at end of file diff --git a/mpdf/qrcode/index.php b/mpdf/qrcode/index.php deleted file mode 100644 index b6ae09b..0000000 --- a/mpdf/qrcode/index.php +++ /dev/null @@ -1,68 +0,0 @@ - - - - - Spipu Qrcode <?php echo __CLASS_QRCODE__; ?> - - - - - - - - - - -
    -
    -
    - Correction d'erreur : - | - - -
    - Gnration d'un tableau HTML :
    -displayHTML(); -?> -
    - Gnration d'une image PNG :
    - generation qr-code -
    - - \ No newline at end of file diff --git a/mpdf/qrcode/qrcode.class.php b/mpdf/qrcode/qrcode.class.php deleted file mode 100644 index 51e648d..0000000 --- a/mpdf/qrcode/qrcode.class.php +++ /dev/null @@ -1,674 +0,0 @@ - - * @version 0.99 - */ - -if (!defined('__CLASS_QRCODE__')) -{ - define('__CLASS_QRCODE__', '0.99'); - - class QRcode - { - private $version_mx = 40; // numero de version maximal autoris - private $type = 'bin'; // type de donne - private $level = 'L'; // ECC - private $value = ''; // valeur a encoder - private $length = 0; // taille de la valeur - private $version = 0; // version - private $size = 0; // dimension de la zone data - private $qr_size = 0; // dimension du QRcode - - private $data_bit = array(); // nb de bit de chacune des valeurs - private $data_val = array(); // liste des valeurs de bit diffrents - private $data_word = array(); // liste des valeurs tout ramen 8bit - private $data_cur = 0; // position courante - private $data_num = 0; // position de la dimension - private $data_bits = 0; // nom de bit au total - private $max_data_bit = 0; // lilmite de nombre de bit maximal pour les datas - private $max_data_word = 0; // lilmite de nombre de mot maximal pour les datas - private $max_word = 0; // lilmite de nombre de mot maximal en global - - private $ec = 0; - private $matrix = array(); - private $matrix_remain = 0; - private $matrix_x_array = array(); - private $matrix_y_array = array(); - private $mask_array = array(); - private $format_information_x1 = array(); - private $format_information_y1 = array(); - private $format_information_x2 = array(); - private $format_information_y2 = array(); - private $rs_block_order = array(); - private $rs_ecc_codewords = 0; - private $byte_num = 0; - - private $final = array(); - private $disable_border = false; - - - /** - * Constructeur - * - * @param string message a encoder - * @param string niveau de correction d'erreur (ECC) : L, M, Q, H - * @return null - */ - public function __construct($value, $level='L') - { - if (!in_array($level, array('L', 'M', 'Q', 'H'))) - $this->ERROR('ECC non reconnu : L, M, Q, H'); - - $this->length = strlen($value); - if (!$this->length) - $this->ERROR('pas de data...'); - - $this->level = $level; - $this->value = &$value; - - $this->data_bit = array(); - $this->data_val = array(); - $this->data_cur = 0; - $this->data_bits= 0; - - $this->encode(); - $this->loadECC(); - $this->makeECC(); - $this->makeMatrix(); - } - - /** - * permet de recuperer la taille du QRcode (le nombre de case de ct) - * - * @return int size of qrcode - */ - public function getQrSize() - { - if ($this->disable_border) - return $this->qr_size-8; - else - return $this->qr_size; - } - - public function disableBorder() - { - $this->disable_border = true; - } - - /** - * permet d'afficher le QRcode dans un pdf via FPDF - * - * @param FPDF objet fpdf - * @param float position X - * @param float position Y - * @param float taille du qrcode - * @param array couleur du background (R,V,B) - * @param array couleur des cases et du border (R,V,B) - * @return boolean true; - */ - public function displayFPDF(&$fpdf, $x, $y, $w, $background=array(255,255,255), $color=array(0,0,0)) - { - $size = $w; - $s = $size/$this->getQrSize(); - - $fpdf->SetDrawColor($color[0], $color[1], $color[2]); - $fpdf->SetFillColor($background[0], $background[1], $background[2]); - - // rectangle de fond - if ($this->disable_border) - { - $s_min = 4; - $s_max = $this->qr_size-4; - $fpdf->Rect($x, $y, $size, $size, 'F'); - } - else - { - $s_min = 0; - $s_max = $this->qr_size; - $fpdf->Rect($x, $y, $size, $size, 'FD'); - } - - $fpdf->SetFillColor($color[0], $color[1], $color[2]); - for($j=$s_min; $j<$s_max; $j++) - for($i=$s_min; $i<$s_max; $i++) - if ($this->final[$i + $j*$this->qr_size+1]) - $fpdf->Rect($x+($i-$s_min)*$s, $y+($j-$s_min)*$s, $s, $s, 'F'); - - return true; - } - - /** - * permet d'afficher le QRcode au format HTML, utiliser avec un style CSS - * - * @return boolean true; - */ - public function displayHTML() - { - if ($this->disable_border) - { - $s_min = 4; - $s_max = $this->qr_size-4; - } - else - { - $s_min = 0; - $s_max = $this->qr_size; - } - echo '
    '."\n"; - for($y=$s_min; $y<$s_max; $y++) - { - echo ''; - for($x=$s_min; $x<$s_max; $x++) - { - echo ''; - } - echo ''."\n"; - } - echo '
    '; - - return true; - } - - /* - * permet d'obtenir une image PNG - * - * @param float taille du qrcode - * @param array couleur du background (R,V,B) - * @param array couleur des cases et du border (R,V,B) - * @param string nom du fichier de sortie. si null : sortie directe - * @param integer qualit de 0 (aucune compression) a 9 - * @return boolean true; - */ - public function displayPNG($w=100, $background=array(255,255,255), $color=array(0,0,0), $filename = null, $quality = 0) - { - if ($this->disable_border) - { - $s_min = 4; - $s_max = $this->qr_size-4; - } - else - { - $s_min = 0; - $s_max = $this->qr_size; - } - $size = $w; - $s = $size/($s_max-$s_min); - - // rectangle de fond - $im = imagecreatetruecolor($size,$size); - $c_case = imagecolorallocate($im,$color[0],$color[1],$color[2]); - $c_back = imagecolorallocate($im,$background[0],$background[1],$background[2]); - imagefilledrectangle($im,0,0,$size,$size,$c_back); - - for($j=$s_min; $j<$s_max; $j++) - for($i=$s_min; $i<$s_max; $i++) - if ($this->final[$i + $j*$this->qr_size+1]) - imagefilledrectangle($im,($i-$s_min)*$s,($j-$s_min)*$s,($i-$s_min+1)*$s-1,($j-$s_min+1)*$s-1,$c_case); - - if ($filename) - { - imagepng($im, $filename, $quality); - } - else - { - header("Content-type: image/png"); - imagepng($im); - } - imagedestroy($im); - return true; - } - - private function ERROR($msg) - { - echo 'ERROR : '.$msg; - exit; - } - - private function addData($val, $bit, $next = true) - { - $this->data_val[$this->data_cur] = $val; - $this->data_bit[$this->data_cur] = $bit; - if ($next) - { - $this->data_cur++; - return $this->data_cur-1; - } - else - { - return $this->data_cur; - } - } - - private function encode() - { - // conversion des datas - if (preg_match('/[^0-9]/',$this->value)) - { - if (preg_match('/[^0-9A-Z \$\*\%\+\-\.\/\:]/',$this->value)) - { - // type : bin - $this->type = 'bin'; - $this->addData(4, 4); - - // taille. il faut garder l'indice, car besoin de correction - $this->data_num = $this->addData($this->length, 8); /* #version 1-9 */ - $data_num_correction=array(0,0,0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8); - - // datas - for ($i=0; $i<$this->length; $i++) - $this->addData(ord(substr($this->value, $i, 1)), 8); - } - else - { - // type : alphanum - $this->type = 'alphanum'; - $this->addData(2, 4); - - // taille. il faut garder l'indice, car besoin de correction - $this->data_num = $this->addData($this->length, 9); /* #version 1-9 */ - $data_num_correction=array(0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4); - - // datas - $an_hash=array( - '0'=>0,'1'=>1,'2'=>2,'3'=>3,'4'=>4,'5'=>5,'6'=>6,'7'=>7,'8'=>8,'9'=>9, - 'A'=>10,'B'=>11,'C'=>12,'D'=>13,'E'=>14,'F'=>15,'G'=>16,'H'=>17,'I'=>18,'J'=>19,'K'=>20,'L'=>21,'M'=>22, - 'N'=>23,'O'=>24,'P'=>25,'Q'=>26,'R'=>27,'S'=>28,'T'=>29,'U'=>30,'V'=>31,'W'=>32,'X'=>33,'Y'=>34,'Z'=>35, - ' '=>36,'$'=>37,'%'=>38,'*'=>39,'+'=>40,'-'=>41,'.'=>42,'/'=>43,':'=>44); - - for ($i=0; $i<$this->length; $i++) - { - if (($i %2)==0) - $this->addData($an_hash[substr($this->value,$i,1)], 6, false); - else - $this->addData($this->data_val[$this->data_cur]*45+$an_hash[substr($this->value,$i,1)], 11, true); - } - unset($an_hash); - - if (isset($this->data_bit[$this->data_cur])) - $this->data_cur++; - } - } - else - { - // type : num - $this->type = 'num'; - $this->addData(1, 4); - - //taille. il faut garder l'indice, car besoin de correction - $this->data_num = $this->addData($this->length, 10); /* #version 1-9 */ - $data_num_correction=array(0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4); - - // datas - for ($i=0; $i<$this->length; $i++) - { - if (($i % 3)==0) - $this->addData(substr($this->value,$i,1), 4, false); - else if (($i % 3)==1) - $this->addData($this->data_val[$this->data_cur]*10+substr($this->value,$i,1), 7, false); - else - $this->addData($this->data_val[$this->data_cur]*10+substr($this->value,$i,1), 10); - } - - if (isset($this->data_bit[$this->data_cur])) - $this->data_cur++; - - - } - - // calcul du nombre de bits - $this->data_bits=0; - foreach($this->data_bit as $bit) - $this->data_bits+= $bit; - - // code ECC - $ec_hash = array('L'=>1, 'M'=>0, 'Q'=>3, 'H'=>2); - $this->ec = $ec_hash[$this->level]; - - // tableau de taille limite de bits - $max_bits = array( - 0,128,224,352,512,688,864,992,1232,1456,1728,2032,2320,2672,2920,3320,3624,4056,4504,5016,5352, - 5712,6256,6880,7312,8000,8496,9024,9544,10136,10984,11640,12328,13048,13800,14496,15312,15936,16816,17728,18672, - - 152,272,440,640,864,1088,1248,1552,1856,2192,2592,2960,3424,3688,4184,4712,5176,5768,6360,6888, - 7456,8048,8752,9392,10208,10960,11744,12248,13048,13880,14744,15640,16568,17528,18448,19472,20528,21616,22496,23648, - - 72,128,208,288,368,480,528,688,800,976,1120,1264,1440,1576,1784,2024,2264,2504,2728,3080, - 3248,3536,3712,4112,4304,4768,5024,5288,5608,5960,6344,6760,7208,7688,7888,8432,8768,9136,9776,10208, - - 104,176,272,384,496,608,704,880,1056,1232,1440,1648,1952,2088,2360,2600,2936,3176,3560,3880, - 4096,4544,4912,5312,5744,6032,6464,6968,7288,7880,8264,8920,9368,9848,10288,10832,11408,12016,12656,13328 - ); - - // determination automatique de la version necessaire - $this->version=1; - $i=1+40*$this->ec; - $j=$i+39; - while ($i<=$j) - { - if ($max_bits[$i]>=$this->data_bits+$data_num_correction[$this->version]) - { - $this->max_data_bit=$max_bits[$i]; - break; - } - $i++; - $this->version++; - } - - // verification max version - if ($this->version>$this->version_mx) - $this->ERROR('too large version.'); - - // correctif sur le nombre de bits du strlen de la valeur - $this->data_bits+=$data_num_correction[$this->version]; - $this->data_bit[$this->data_num]+=$data_num_correction[$this->version]; - $this->max_data_word = ($this->max_data_bit/8); - - // nombre de mots maximal - $max_words_array=array(0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156, - 1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706); - $this->max_word = $max_words_array[$this->version]; - $this->size = 17 + 4*$this->version; - - // nettoyages divers - unset($max_bits); - unset($data_num_correction); - unset($max_words_array); - unset($ec_hash); - - // terminator - if ($this->data_bits<=$this->max_data_bit-4) - $this->addData(0, 4); - elseif ($this->data_bits<$this->max_data_bit) - $this->addData(0, $this->max_data_bit-$this->data_bits); - elseif ($this->data_bits>$this->max_data_bit) - $this->ERROR('Overflow error'); - - // construction des mots de 8 bit - $this->data_word = array(); - $this->data_word[0] = 0; - $nb_word = 0; - - $remaining_bit=8; - for($i=0; $i<$this->data_cur; $i++) - { - $buffer_val=$this->data_val[$i]; - $buffer_bit=$this->data_bit[$i]; - - $flag = true; - while ($flag) - { - if ($remaining_bit>$buffer_bit) - { - $this->data_word[$nb_word]=((@$this->data_word[$nb_word]<<$buffer_bit) | $buffer_val); - $remaining_bit-=$buffer_bit; - $flag=false; - } - else - { - $buffer_bit-=$remaining_bit; - $this->data_word[$nb_word]=((@$this->data_word[$nb_word] << $remaining_bit) | ($buffer_val >> $buffer_bit)); - $nb_word++; - - if ($buffer_bit==0) - $flag=false; - else - $buffer_val= ($buffer_val & ((1 << $buffer_bit)-1) ); - - if ($nb_word<$this->max_data_word-1) - $this->data_word[$nb_word]=0; - $remaining_bit=8; - } - } - } - - // completion du dernier mot si incomplet - if ($remaining_bit<8) - $this->data_word[$nb_word]=$this->data_word[$nb_word] << $remaining_bit; - else - $nb_word--; - - // remplissage du reste - if ($nb_word<$this->max_data_word-1) - { - $flag=true; - while ($nb_word<$this->max_data_word-1) - { - $nb_word++; - if ($flag) - $this->data_word[$nb_word]=236; - else - $this->data_word[$nb_word]=17; - $flag=!$flag; - } - } - } - - private function loadECC() - { - $matrix_remain_bit=array(0,0,7,7,7,7,7,0,0,0,0,0,0,0,3,3,3,3,3,3,3,4,4,4,4,4,4,4,3,3,3,3,3,3,3,0,0,0,0,0,0); - $this->matrix_remain = $matrix_remain_bit[$this->version]; - unset($matrix_remain_bit); - - // lecture du fichier : data file of geometry & mask for version V ,ecc level N - $this->byte_num = $this->matrix_remain+ 8*$this->max_word; - $filename = dirname(__FILE__)."/data/qrv".$this->version."_".$this->ec.".dat"; - $fp1 = fopen ($filename, "rb"); - $this->matrix_x_array = unpack("C*", fread($fp1,$this->byte_num)); - $this->matrix_y_array = unpack("C*", fread($fp1,$this->byte_num)); - $this->mask_array = unpack("C*", fread($fp1,$this->byte_num)); - $this->format_information_x2 = unpack("C*", fread($fp1,15)); - $this->format_information_y2 = unpack("C*", fread($fp1,15)); - $this->rs_ecc_codewords = ord(fread($fp1,1)); - $this->rs_block_order = unpack("C*", fread($fp1,128)); - fclose($fp1); - $this->format_information_x1 = array(0,1,2,3,4,5,7,8,8,8,8,8,8,8,8); - $this->format_information_y1 = array(8,8,8,8,8,8,8,8,7,5,4,3,2,1,0); - - } - - private function makeECC() - { - // lecture du fichier : data file of caluclatin tables for RS encoding - $rs_cal_table_array = array(); - $filename = dirname(__FILE__)."/data/rsc".$this->rs_ecc_codewords.".dat"; - $fp0 = fopen ($filename, "rb"); - for($i=0; $i<256; $i++) - $rs_cal_table_array[$i]=fread ($fp0,$this->rs_ecc_codewords); - fclose ($fp0); - - $max_data_codewords = count($this->data_word); - - // preparation - $j=0; - $rs_block_number=0; - $rs_temp[0]=""; - for($i=0; $i<$max_data_codewords; $i++) - { - $rs_temp[$rs_block_number].=chr($this->data_word[$i]); - $j++; - if ($j>=$this->rs_block_order[$rs_block_number+1]-$this->rs_ecc_codewords) - { - $j=0; - $rs_block_number++; - $rs_temp[$rs_block_number]=""; - } - } - - // make - $rs_block_order_num=count($this->rs_block_order); - - for($rs_block_number=0; $rs_block_number<$rs_block_order_num; $rs_block_number++) - { - $rs_codewords=$this->rs_block_order[$rs_block_number+1]; - $rs_data_codewords=$rs_codewords-$this->rs_ecc_codewords; - - $rstemp=$rs_temp[$rs_block_number].str_repeat(chr(0),$this->rs_ecc_codewords); - $padding_data=str_repeat(chr(0),$rs_data_codewords); - - $j=$rs_data_codewords; - while($j>0) - { - $first=ord(substr($rstemp,0,1)); - - if ($first) - { - $left_chr=substr($rstemp,1); - $cal=$rs_cal_table_array[$first].$padding_data; - $rstemp=$left_chr ^ $cal; - } - else - $rstemp=substr($rstemp,1); - $j--; - } - - $this->data_word=array_merge($this->data_word,unpack("C*",$rstemp)); - } - } - - private function makeMatrix() - { - // preparation - $this->matrix = array_fill(0, $this->size, array_fill(0, $this->size, 0)); - - // mettre les words - for($i=0; $i<$this->max_word; $i++) - { - $word = $this->data_word[$i]; - for($j=8; $j>0; $j--) - { - $bit_pos = ($i<<3) + $j; - $this->matrix[ $this->matrix_x_array[$bit_pos] ][ $this->matrix_y_array[$bit_pos] ] = ((255*($word & 1)) ^ $this->mask_array[$bit_pos] ); - $word = $word >> 1; - } - } - - for($k=$this->matrix_remain; $k>0; $k--) - { - $bit_pos = $k + ( $this->max_word <<3); - $this->matrix[ $this->matrix_x_array[$bit_pos] ][ $this->matrix_y_array[$bit_pos] ] = ( 255 ^ $this->mask_array[$bit_pos] ); - } - - // mask select - $min_demerit_score=0; - $hor_master=""; - $ver_master=""; - $k=0; - while($k<$this->size) - { - $l=0; - while($l<$this->size) - { - $hor_master=$hor_master.chr($this->matrix[$l][$k]); - $ver_master=$ver_master.chr($this->matrix[$k][$l]); - $l++; - } - $k++; - } - - $i=0; - $all_matrix=$this->size * $this->size; - - while ($i<8) - { - $demerit_n1=0; - $ptn_temp=array(); - $bit= 1<< $i; - $bit_r=(~$bit)&255; - $bit_mask=str_repeat(chr($bit),$all_matrix); - $hor = $hor_master & $bit_mask; - $ver = $ver_master & $bit_mask; - - $ver_shift1=$ver.str_repeat(chr(170),$this->size); - $ver_shift2=str_repeat(chr(170),$this->size).$ver; - $ver_shift1_0=$ver.str_repeat(chr(0),$this->size); - $ver_shift2_0=str_repeat(chr(0),$this->size).$ver; - $ver_or=chunk_split(~($ver_shift1 | $ver_shift2),$this->size,chr(170)); - $ver_and=chunk_split(~($ver_shift1_0 & $ver_shift2_0),$this->size,chr(170)); - - $hor=chunk_split(~$hor,$this->size,chr(170)); - $ver=chunk_split(~$ver,$this->size,chr(170)); - $hor=$hor.chr(170).$ver; - - $n1_search="/".str_repeat(chr(255),5)."+|".str_repeat(chr($bit_r),5)."+/"; - $n3_search=chr($bit_r).chr(255).chr($bit_r).chr($bit_r).chr($bit_r).chr(255).chr($bit_r); - - $demerit_n3=substr_count($hor,$n3_search)*40; - $demerit_n4=floor(abs(( (100* (substr_count($ver,chr($bit_r))/($this->byte_num)) )-50)/5))*10; - - $n2_search1="/".chr($bit_r).chr($bit_r)."+/"; - $n2_search2="/".chr(255).chr(255)."+/"; - $demerit_n2=0; - preg_match_all($n2_search1,$ver_and,$ptn_temp); - foreach($ptn_temp[0] as $str_temp) - { - $demerit_n2+=(strlen($str_temp)-1); - } - $ptn_temp=array(); - preg_match_all($n2_search2,$ver_or,$ptn_temp); - foreach($ptn_temp[0] as $str_temp) - { - $demerit_n2+=(strlen($str_temp)-1); - } - $demerit_n2*=3; - - $ptn_temp=array(); - - preg_match_all($n1_search,$hor,$ptn_temp); - foreach($ptn_temp[0] as $str_temp) - { - $demerit_n1+=(strlen($str_temp)-2); - } - $demerit_score=$demerit_n1+$demerit_n2+$demerit_n3+$demerit_n4; - - if ($demerit_score<=$min_demerit_score || $i==0) - { - $mask_number=$i; - $min_demerit_score=$demerit_score; - } - - $i++; - } - - $mask_content=1 << $mask_number; - - $format_information_value=(($this->ec << 3) | $mask_number); - $format_information_array=array("101010000010010","101000100100101", - "101111001111100","101101101001011","100010111111001","100000011001110", - "100111110010111","100101010100000","111011111000100","111001011110011", - "111110110101010","111100010011101","110011000101111","110001100011000", - "110110001000001","110100101110110","001011010001001","001001110111110", - "001110011100111","001100111010000","000011101100010","000001001010101", - "000110100001100","000100000111011","011010101011111","011000001101000", - "011111100110001","011101000000110","010010010110100","010000110000011", - "010111011011010","010101111101101"); - - for($i=0; $i<15; $i++) - { - $content=substr($format_information_array[$format_information_value],$i,1); - - $this->matrix[$this->format_information_x1[$i]][$this->format_information_y1[$i]]=$content * 255; - $this->matrix[$this->format_information_x2[$i+1]][$this->format_information_y2[$i+1]]=$content * 255; - } - - $this->final = unpack("C*", file_get_contents(dirname(__FILE__).'/data/modele'.$this->version.'.dat')); - $this->qr_size = $this->size+8; - - for($x=0; $x<$this->size; $x++) - { - for($y=0; $y<$this->size; $y++) - { - if ($this->matrix[$x][$y] & $mask_content) - $this->final[($x+4) + ($y+4)*$this->qr_size+1] = true; - } - } - } - } -} - -?> \ No newline at end of file diff --git a/mpdf/tmp/dummy.txt b/mpdf/tmp/dummy.txt deleted file mode 100644 index 4123496..0000000 --- a/mpdf/tmp/dummy.txt +++ /dev/null @@ -1,2 +0,0 @@ -This is just a placeholder file so that the folder is created on install. -It can be deleted once installed. \ No newline at end of file diff --git a/mpdf/ttfontdata/dummy.txt b/mpdf/ttfontdata/dummy.txt deleted file mode 100644 index 4123496..0000000 --- a/mpdf/ttfontdata/dummy.txt +++ /dev/null @@ -1,2 +0,0 @@ -This is just a placeholder file so that the folder is created on install. -It can be deleted once installed. \ No newline at end of file diff --git a/mpdf/ttfonts/DejaVuSansCondensed-Bold.ttf b/mpdf/ttfonts/DejaVuSansCondensed-Bold.ttf deleted file mode 100644 index 4c40003..0000000 Binary files a/mpdf/ttfonts/DejaVuSansCondensed-Bold.ttf and /dev/null differ diff --git a/mpdf/ttfonts/DejaVuSansCondensed-BoldOblique.ttf b/mpdf/ttfonts/DejaVuSansCondensed-BoldOblique.ttf deleted file mode 100644 index 24b611b..0000000 Binary files a/mpdf/ttfonts/DejaVuSansCondensed-BoldOblique.ttf and /dev/null differ diff --git a/mpdf/ttfonts/DejaVuSansCondensed-Oblique.ttf b/mpdf/ttfonts/DejaVuSansCondensed-Oblique.ttf deleted file mode 100644 index 1e0526f..0000000 Binary files a/mpdf/ttfonts/DejaVuSansCondensed-Oblique.ttf and /dev/null differ diff --git a/mpdf/ttfonts/DejaVuSansCondensed.ttf b/mpdf/ttfonts/DejaVuSansCondensed.ttf deleted file mode 100644 index 7f168d1..0000000 Binary files a/mpdf/ttfonts/DejaVuSansCondensed.ttf and /dev/null differ diff --git a/mpdf/utils/UnicodeData.txt b/mpdf/utils/UnicodeData.txt deleted file mode 100644 index 1dc7335..0000000 --- a/mpdf/utils/UnicodeData.txt +++ /dev/null @@ -1,21488 +0,0 @@ -0000;;Cc;0;BN;;;;;N;NULL;;;; -0001;;Cc;0;BN;;;;;N;START OF HEADING;;;; -0002;;Cc;0;BN;;;;;N;START OF TEXT;;;; -0003;;Cc;0;BN;;;;;N;END OF TEXT;;;; -0004;;Cc;0;BN;;;;;N;END OF TRANSMISSION;;;; -0005;;Cc;0;BN;;;;;N;ENQUIRY;;;; -0006;;Cc;0;BN;;;;;N;ACKNOWLEDGE;;;; -0007;;Cc;0;BN;;;;;N;BELL;;;; -0008;;Cc;0;BN;;;;;N;BACKSPACE;;;; -0009;;Cc;0;S;;;;;N;CHARACTER TABULATION;;;; -000A;;Cc;0;B;;;;;N;LINE FEED (LF);;;; -000B;;Cc;0;S;;;;;N;LINE TABULATION;;;; -000C;;Cc;0;WS;;;;;N;FORM FEED (FF);;;; -000D;;Cc;0;B;;;;;N;CARRIAGE RETURN (CR);;;; -000E;;Cc;0;BN;;;;;N;SHIFT OUT;;;; -000F;;Cc;0;BN;;;;;N;SHIFT IN;;;; -0010;;Cc;0;BN;;;;;N;DATA LINK ESCAPE;;;; -0011;;Cc;0;BN;;;;;N;DEVICE CONTROL ONE;;;; -0012;;Cc;0;BN;;;;;N;DEVICE CONTROL TWO;;;; -0013;;Cc;0;BN;;;;;N;DEVICE CONTROL THREE;;;; -0014;;Cc;0;BN;;;;;N;DEVICE CONTROL FOUR;;;; -0015;;Cc;0;BN;;;;;N;NEGATIVE ACKNOWLEDGE;;;; -0016;;Cc;0;BN;;;;;N;SYNCHRONOUS IDLE;;;; -0017;;Cc;0;BN;;;;;N;END OF TRANSMISSION BLOCK;;;; -0018;;Cc;0;BN;;;;;N;CANCEL;;;; -0019;;Cc;0;BN;;;;;N;END OF MEDIUM;;;; -001A;;Cc;0;BN;;;;;N;SUBSTITUTE;;;; -001B;;Cc;0;BN;;;;;N;ESCAPE;;;; -001C;;Cc;0;B;;;;;N;INFORMATION SEPARATOR FOUR;;;; -001D;;Cc;0;B;;;;;N;INFORMATION SEPARATOR THREE;;;; -001E;;Cc;0;B;;;;;N;INFORMATION SEPARATOR TWO;;;; -001F;;Cc;0;S;;;;;N;INFORMATION SEPARATOR ONE;;;; -0020;SPACE;Zs;0;WS;;;;;N;;;;; -0021;EXCLAMATION MARK;Po;0;ON;;;;;N;;;;; -0022;QUOTATION MARK;Po;0;ON;;;;;N;;;;; -0023;NUMBER SIGN;Po;0;ET;;;;;N;;;;; -0024;DOLLAR SIGN;Sc;0;ET;;;;;N;;;;; -0025;PERCENT SIGN;Po;0;ET;;;;;N;;;;; -0026;AMPERSAND;Po;0;ON;;;;;N;;;;; -0027;APOSTROPHE;Po;0;ON;;;;;N;APOSTROPHE-QUOTE;;;; -0028;LEFT PARENTHESIS;Ps;0;ON;;;;;Y;OPENING PARENTHESIS;;;; -0029;RIGHT PARENTHESIS;Pe;0;ON;;;;;Y;CLOSING PARENTHESIS;;;; -002A;ASTERISK;Po;0;ON;;;;;N;;;;; -002B;PLUS SIGN;Sm;0;ES;;;;;N;;;;; -002C;COMMA;Po;0;CS;;;;;N;;;;; -002D;HYPHEN-MINUS;Pd;0;ES;;;;;N;;;;; -002E;FULL STOP;Po;0;CS;;;;;N;PERIOD;;;; -002F;SOLIDUS;Po;0;CS;;;;;N;SLASH;;;; -0030;DIGIT ZERO;Nd;0;EN;;0;0;0;N;;;;; -0031;DIGIT ONE;Nd;0;EN;;1;1;1;N;;;;; -0032;DIGIT TWO;Nd;0;EN;;2;2;2;N;;;;; -0033;DIGIT THREE;Nd;0;EN;;3;3;3;N;;;;; -0034;DIGIT FOUR;Nd;0;EN;;4;4;4;N;;;;; -0035;DIGIT FIVE;Nd;0;EN;;5;5;5;N;;;;; -0036;DIGIT SIX;Nd;0;EN;;6;6;6;N;;;;; -0037;DIGIT SEVEN;Nd;0;EN;;7;7;7;N;;;;; -0038;DIGIT EIGHT;Nd;0;EN;;8;8;8;N;;;;; -0039;DIGIT NINE;Nd;0;EN;;9;9;9;N;;;;; -003A;COLON;Po;0;CS;;;;;N;;;;; -003B;SEMICOLON;Po;0;ON;;;;;N;;;;; -003C;LESS-THAN SIGN;Sm;0;ON;;;;;Y;;;;; -003D;EQUALS SIGN;Sm;0;ON;;;;;N;;;;; -003E;GREATER-THAN SIGN;Sm;0;ON;;;;;Y;;;;; -003F;QUESTION MARK;Po;0;ON;;;;;N;;;;; -0040;COMMERCIAL AT;Po;0;ON;;;;;N;;;;; -0041;LATIN CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0061; -0042;LATIN CAPITAL LETTER B;Lu;0;L;;;;;N;;;;0062; -0043;LATIN CAPITAL LETTER C;Lu;0;L;;;;;N;;;;0063; -0044;LATIN CAPITAL LETTER D;Lu;0;L;;;;;N;;;;0064; -0045;LATIN CAPITAL LETTER E;Lu;0;L;;;;;N;;;;0065; -0046;LATIN CAPITAL LETTER F;Lu;0;L;;;;;N;;;;0066; -0047;LATIN CAPITAL LETTER G;Lu;0;L;;;;;N;;;;0067; -0048;LATIN CAPITAL LETTER H;Lu;0;L;;;;;N;;;;0068; -0049;LATIN CAPITAL LETTER I;Lu;0;L;;;;;N;;;;0069; -004A;LATIN CAPITAL LETTER J;Lu;0;L;;;;;N;;;;006A; -004B;LATIN CAPITAL LETTER K;Lu;0;L;;;;;N;;;;006B; -004C;LATIN CAPITAL LETTER L;Lu;0;L;;;;;N;;;;006C; -004D;LATIN CAPITAL LETTER M;Lu;0;L;;;;;N;;;;006D; -004E;LATIN CAPITAL LETTER N;Lu;0;L;;;;;N;;;;006E; -004F;LATIN CAPITAL LETTER O;Lu;0;L;;;;;N;;;;006F; -0050;LATIN CAPITAL LETTER P;Lu;0;L;;;;;N;;;;0070; -0051;LATIN CAPITAL LETTER Q;Lu;0;L;;;;;N;;;;0071; -0052;LATIN CAPITAL LETTER R;Lu;0;L;;;;;N;;;;0072; -0053;LATIN CAPITAL LETTER S;Lu;0;L;;;;;N;;;;0073; -0054;LATIN CAPITAL LETTER T;Lu;0;L;;;;;N;;;;0074; -0055;LATIN CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0075; -0056;LATIN CAPITAL LETTER V;Lu;0;L;;;;;N;;;;0076; -0057;LATIN CAPITAL LETTER W;Lu;0;L;;;;;N;;;;0077; -0058;LATIN CAPITAL LETTER X;Lu;0;L;;;;;N;;;;0078; -0059;LATIN CAPITAL LETTER Y;Lu;0;L;;;;;N;;;;0079; -005A;LATIN CAPITAL LETTER Z;Lu;0;L;;;;;N;;;;007A; -005B;LEFT SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING SQUARE BRACKET;;;; -005C;REVERSE SOLIDUS;Po;0;ON;;;;;N;BACKSLASH;;;; -005D;RIGHT SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING SQUARE BRACKET;;;; -005E;CIRCUMFLEX ACCENT;Sk;0;ON;;;;;N;SPACING CIRCUMFLEX;;;; -005F;LOW LINE;Pc;0;ON;;;;;N;SPACING UNDERSCORE;;;; -0060;GRAVE ACCENT;Sk;0;ON;;;;;N;SPACING GRAVE;;;; -0061;LATIN SMALL LETTER A;Ll;0;L;;;;;N;;;0041;;0041 -0062;LATIN SMALL LETTER B;Ll;0;L;;;;;N;;;0042;;0042 -0063;LATIN SMALL LETTER C;Ll;0;L;;;;;N;;;0043;;0043 -0064;LATIN SMALL LETTER D;Ll;0;L;;;;;N;;;0044;;0044 -0065;LATIN SMALL LETTER E;Ll;0;L;;;;;N;;;0045;;0045 -0066;LATIN SMALL LETTER F;Ll;0;L;;;;;N;;;0046;;0046 -0067;LATIN SMALL LETTER G;Ll;0;L;;;;;N;;;0047;;0047 -0068;LATIN SMALL LETTER H;Ll;0;L;;;;;N;;;0048;;0048 -0069;LATIN SMALL LETTER I;Ll;0;L;;;;;N;;;0049;;0049 -006A;LATIN SMALL LETTER J;Ll;0;L;;;;;N;;;004A;;004A -006B;LATIN SMALL LETTER K;Ll;0;L;;;;;N;;;004B;;004B -006C;LATIN SMALL LETTER L;Ll;0;L;;;;;N;;;004C;;004C -006D;LATIN SMALL LETTER M;Ll;0;L;;;;;N;;;004D;;004D -006E;LATIN SMALL LETTER N;Ll;0;L;;;;;N;;;004E;;004E -006F;LATIN SMALL LETTER O;Ll;0;L;;;;;N;;;004F;;004F -0070;LATIN SMALL LETTER P;Ll;0;L;;;;;N;;;0050;;0050 -0071;LATIN SMALL LETTER Q;Ll;0;L;;;;;N;;;0051;;0051 -0072;LATIN SMALL LETTER R;Ll;0;L;;;;;N;;;0052;;0052 -0073;LATIN SMALL LETTER S;Ll;0;L;;;;;N;;;0053;;0053 -0074;LATIN SMALL LETTER T;Ll;0;L;;;;;N;;;0054;;0054 -0075;LATIN SMALL LETTER U;Ll;0;L;;;;;N;;;0055;;0055 -0076;LATIN SMALL LETTER V;Ll;0;L;;;;;N;;;0056;;0056 -0077;LATIN SMALL LETTER W;Ll;0;L;;;;;N;;;0057;;0057 -0078;LATIN SMALL LETTER X;Ll;0;L;;;;;N;;;0058;;0058 -0079;LATIN SMALL LETTER Y;Ll;0;L;;;;;N;;;0059;;0059 -007A;LATIN SMALL LETTER Z;Ll;0;L;;;;;N;;;005A;;005A -007B;LEFT CURLY BRACKET;Ps;0;ON;;;;;Y;OPENING CURLY BRACKET;;;; -007C;VERTICAL LINE;Sm;0;ON;;;;;N;VERTICAL BAR;;;; -007D;RIGHT CURLY BRACKET;Pe;0;ON;;;;;Y;CLOSING CURLY BRACKET;;;; -007E;TILDE;Sm;0;ON;;;;;N;;;;; -007F;;Cc;0;BN;;;;;N;DELETE;;;; -0080;;Cc;0;BN;;;;;N;;;;; -0081;;Cc;0;BN;;;;;N;;;;; -0082;;Cc;0;BN;;;;;N;BREAK PERMITTED HERE;;;; -0083;;Cc;0;BN;;;;;N;NO BREAK HERE;;;; -0084;;Cc;0;BN;;;;;N;;;;; -0085;;Cc;0;B;;;;;N;NEXT LINE (NEL);;;; -0086;;Cc;0;BN;;;;;N;START OF SELECTED AREA;;;; -0087;;Cc;0;BN;;;;;N;END OF SELECTED AREA;;;; -0088;;Cc;0;BN;;;;;N;CHARACTER TABULATION SET;;;; -0089;;Cc;0;BN;;;;;N;CHARACTER TABULATION WITH JUSTIFICATION;;;; -008A;;Cc;0;BN;;;;;N;LINE TABULATION SET;;;; -008B;;Cc;0;BN;;;;;N;PARTIAL LINE FORWARD;;;; -008C;;Cc;0;BN;;;;;N;PARTIAL LINE BACKWARD;;;; -008D;;Cc;0;BN;;;;;N;REVERSE LINE FEED;;;; -008E;;Cc;0;BN;;;;;N;SINGLE SHIFT TWO;;;; -008F;;Cc;0;BN;;;;;N;SINGLE SHIFT THREE;;;; -0090;;Cc;0;BN;;;;;N;DEVICE CONTROL STRING;;;; -0091;;Cc;0;BN;;;;;N;PRIVATE USE ONE;;;; -0092;;Cc;0;BN;;;;;N;PRIVATE USE TWO;;;; -0093;;Cc;0;BN;;;;;N;SET TRANSMIT STATE;;;; -0094;;Cc;0;BN;;;;;N;CANCEL CHARACTER;;;; -0095;;Cc;0;BN;;;;;N;MESSAGE WAITING;;;; -0096;;Cc;0;BN;;;;;N;START OF GUARDED AREA;;;; -0097;;Cc;0;BN;;;;;N;END OF GUARDED AREA;;;; -0098;;Cc;0;BN;;;;;N;START OF STRING;;;; -0099;;Cc;0;BN;;;;;N;;;;; -009A;;Cc;0;BN;;;;;N;SINGLE CHARACTER INTRODUCER;;;; -009B;;Cc;0;BN;;;;;N;CONTROL SEQUENCE INTRODUCER;;;; -009C;;Cc;0;BN;;;;;N;STRING TERMINATOR;;;; -009D;;Cc;0;BN;;;;;N;OPERATING SYSTEM COMMAND;;;; -009E;;Cc;0;BN;;;;;N;PRIVACY MESSAGE;;;; -009F;;Cc;0;BN;;;;;N;APPLICATION PROGRAM COMMAND;;;; -00A0;NO-BREAK SPACE;Zs;0;CS; 0020;;;;N;NON-BREAKING SPACE;;;; -00A1;INVERTED EXCLAMATION MARK;Po;0;ON;;;;;N;;;;; -00A2;CENT SIGN;Sc;0;ET;;;;;N;;;;; -00A3;POUND SIGN;Sc;0;ET;;;;;N;;;;; -00A4;CURRENCY SIGN;Sc;0;ET;;;;;N;;;;; -00A5;YEN SIGN;Sc;0;ET;;;;;N;;;;; -00A6;BROKEN BAR;So;0;ON;;;;;N;BROKEN VERTICAL BAR;;;; -00A7;SECTION SIGN;So;0;ON;;;;;N;;;;; -00A8;DIAERESIS;Sk;0;ON; 0020 0308;;;;N;SPACING DIAERESIS;;;; -00A9;COPYRIGHT SIGN;So;0;ON;;;;;N;;;;; -00AA;FEMININE ORDINAL INDICATOR;Ll;0;L; 0061;;;;N;;;;; -00AB;LEFT-POINTING DOUBLE ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING GUILLEMET;;;; -00AC;NOT SIGN;Sm;0;ON;;;;;N;;;;; -00AD;SOFT HYPHEN;Cf;0;BN;;;;;N;;;;; -00AE;REGISTERED SIGN;So;0;ON;;;;;N;REGISTERED TRADE MARK SIGN;;;; -00AF;MACRON;Sk;0;ON; 0020 0304;;;;N;SPACING MACRON;;;; -00B0;DEGREE SIGN;So;0;ET;;;;;N;;;;; -00B1;PLUS-MINUS SIGN;Sm;0;ET;;;;;N;PLUS-OR-MINUS SIGN;;;; -00B2;SUPERSCRIPT TWO;No;0;EN; 0032;;2;2;N;SUPERSCRIPT DIGIT TWO;;;; -00B3;SUPERSCRIPT THREE;No;0;EN; 0033;;3;3;N;SUPERSCRIPT DIGIT THREE;;;; -00B4;ACUTE ACCENT;Sk;0;ON; 0020 0301;;;;N;SPACING ACUTE;;;; -00B5;MICRO SIGN;Ll;0;L; 03BC;;;;N;;;039C;;039C -00B6;PILCROW SIGN;So;0;ON;;;;;N;PARAGRAPH SIGN;;;; -00B7;MIDDLE DOT;Po;0;ON;;;;;N;;;;; -00B8;CEDILLA;Sk;0;ON; 0020 0327;;;;N;SPACING CEDILLA;;;; -00B9;SUPERSCRIPT ONE;No;0;EN; 0031;;1;1;N;SUPERSCRIPT DIGIT ONE;;;; -00BA;MASCULINE ORDINAL INDICATOR;Ll;0;L; 006F;;;;N;;;;; -00BB;RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING GUILLEMET;;;; -00BC;VULGAR FRACTION ONE QUARTER;No;0;ON; 0031 2044 0034;;;1/4;N;FRACTION ONE QUARTER;;;; -00BD;VULGAR FRACTION ONE HALF;No;0;ON; 0031 2044 0032;;;1/2;N;FRACTION ONE HALF;;;; -00BE;VULGAR FRACTION THREE QUARTERS;No;0;ON; 0033 2044 0034;;;3/4;N;FRACTION THREE QUARTERS;;;; -00BF;INVERTED QUESTION MARK;Po;0;ON;;;;;N;;;;; -00C0;LATIN CAPITAL LETTER A WITH GRAVE;Lu;0;L;0041 0300;;;;N;LATIN CAPITAL LETTER A GRAVE;;;00E0; -00C1;LATIN CAPITAL LETTER A WITH ACUTE;Lu;0;L;0041 0301;;;;N;LATIN CAPITAL LETTER A ACUTE;;;00E1; -00C2;LATIN CAPITAL LETTER A WITH CIRCUMFLEX;Lu;0;L;0041 0302;;;;N;LATIN CAPITAL LETTER A CIRCUMFLEX;;;00E2; -00C3;LATIN CAPITAL LETTER A WITH TILDE;Lu;0;L;0041 0303;;;;N;LATIN CAPITAL LETTER A TILDE;;;00E3; -00C4;LATIN CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0041 0308;;;;N;LATIN CAPITAL LETTER A DIAERESIS;;;00E4; -00C5;LATIN CAPITAL LETTER A WITH RING ABOVE;Lu;0;L;0041 030A;;;;N;LATIN CAPITAL LETTER A RING;;;00E5; -00C6;LATIN CAPITAL LETTER AE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER A E;;;00E6; -00C7;LATIN CAPITAL LETTER C WITH CEDILLA;Lu;0;L;0043 0327;;;;N;LATIN CAPITAL LETTER C CEDILLA;;;00E7; -00C8;LATIN CAPITAL LETTER E WITH GRAVE;Lu;0;L;0045 0300;;;;N;LATIN CAPITAL LETTER E GRAVE;;;00E8; -00C9;LATIN CAPITAL LETTER E WITH ACUTE;Lu;0;L;0045 0301;;;;N;LATIN CAPITAL LETTER E ACUTE;;;00E9; -00CA;LATIN CAPITAL LETTER E WITH CIRCUMFLEX;Lu;0;L;0045 0302;;;;N;LATIN CAPITAL LETTER E CIRCUMFLEX;;;00EA; -00CB;LATIN CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;0045 0308;;;;N;LATIN CAPITAL LETTER E DIAERESIS;;;00EB; -00CC;LATIN CAPITAL LETTER I WITH GRAVE;Lu;0;L;0049 0300;;;;N;LATIN CAPITAL LETTER I GRAVE;;;00EC; -00CD;LATIN CAPITAL LETTER I WITH ACUTE;Lu;0;L;0049 0301;;;;N;LATIN CAPITAL LETTER I ACUTE;;;00ED; -00CE;LATIN CAPITAL LETTER I WITH CIRCUMFLEX;Lu;0;L;0049 0302;;;;N;LATIN CAPITAL LETTER I CIRCUMFLEX;;;00EE; -00CF;LATIN CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0049 0308;;;;N;LATIN CAPITAL LETTER I DIAERESIS;;;00EF; -00D0;LATIN CAPITAL LETTER ETH;Lu;0;L;;;;;N;;;;00F0; -00D1;LATIN CAPITAL LETTER N WITH TILDE;Lu;0;L;004E 0303;;;;N;LATIN CAPITAL LETTER N TILDE;;;00F1; -00D2;LATIN CAPITAL LETTER O WITH GRAVE;Lu;0;L;004F 0300;;;;N;LATIN CAPITAL LETTER O GRAVE;;;00F2; -00D3;LATIN CAPITAL LETTER O WITH ACUTE;Lu;0;L;004F 0301;;;;N;LATIN CAPITAL LETTER O ACUTE;;;00F3; -00D4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX;Lu;0;L;004F 0302;;;;N;LATIN CAPITAL LETTER O CIRCUMFLEX;;;00F4; -00D5;LATIN CAPITAL LETTER O WITH TILDE;Lu;0;L;004F 0303;;;;N;LATIN CAPITAL LETTER O TILDE;;;00F5; -00D6;LATIN CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;004F 0308;;;;N;LATIN CAPITAL LETTER O DIAERESIS;;;00F6; -00D7;MULTIPLICATION SIGN;Sm;0;ON;;;;;N;;;;; -00D8;LATIN CAPITAL LETTER O WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O SLASH;;;00F8; -00D9;LATIN CAPITAL LETTER U WITH GRAVE;Lu;0;L;0055 0300;;;;N;LATIN CAPITAL LETTER U GRAVE;;;00F9; -00DA;LATIN CAPITAL LETTER U WITH ACUTE;Lu;0;L;0055 0301;;;;N;LATIN CAPITAL LETTER U ACUTE;;;00FA; -00DB;LATIN CAPITAL LETTER U WITH CIRCUMFLEX;Lu;0;L;0055 0302;;;;N;LATIN CAPITAL LETTER U CIRCUMFLEX;;;00FB; -00DC;LATIN CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0055 0308;;;;N;LATIN CAPITAL LETTER U DIAERESIS;;;00FC; -00DD;LATIN CAPITAL LETTER Y WITH ACUTE;Lu;0;L;0059 0301;;;;N;LATIN CAPITAL LETTER Y ACUTE;;;00FD; -00DE;LATIN CAPITAL LETTER THORN;Lu;0;L;;;;;N;;;;00FE; -00DF;LATIN SMALL LETTER SHARP S;Ll;0;L;;;;;N;;;;; -00E0;LATIN SMALL LETTER A WITH GRAVE;Ll;0;L;0061 0300;;;;N;LATIN SMALL LETTER A GRAVE;;00C0;;00C0 -00E1;LATIN SMALL LETTER A WITH ACUTE;Ll;0;L;0061 0301;;;;N;LATIN SMALL LETTER A ACUTE;;00C1;;00C1 -00E2;LATIN SMALL LETTER A WITH CIRCUMFLEX;Ll;0;L;0061 0302;;;;N;LATIN SMALL LETTER A CIRCUMFLEX;;00C2;;00C2 -00E3;LATIN SMALL LETTER A WITH TILDE;Ll;0;L;0061 0303;;;;N;LATIN SMALL LETTER A TILDE;;00C3;;00C3 -00E4;LATIN SMALL LETTER A WITH DIAERESIS;Ll;0;L;0061 0308;;;;N;LATIN SMALL LETTER A DIAERESIS;;00C4;;00C4 -00E5;LATIN SMALL LETTER A WITH RING ABOVE;Ll;0;L;0061 030A;;;;N;LATIN SMALL LETTER A RING;;00C5;;00C5 -00E6;LATIN SMALL LETTER AE;Ll;0;L;;;;;N;LATIN SMALL LETTER A E;;00C6;;00C6 -00E7;LATIN SMALL LETTER C WITH CEDILLA;Ll;0;L;0063 0327;;;;N;LATIN SMALL LETTER C CEDILLA;;00C7;;00C7 -00E8;LATIN SMALL LETTER E WITH GRAVE;Ll;0;L;0065 0300;;;;N;LATIN SMALL LETTER E GRAVE;;00C8;;00C8 -00E9;LATIN SMALL LETTER E WITH ACUTE;Ll;0;L;0065 0301;;;;N;LATIN SMALL LETTER E ACUTE;;00C9;;00C9 -00EA;LATIN SMALL LETTER E WITH CIRCUMFLEX;Ll;0;L;0065 0302;;;;N;LATIN SMALL LETTER E CIRCUMFLEX;;00CA;;00CA -00EB;LATIN SMALL LETTER E WITH DIAERESIS;Ll;0;L;0065 0308;;;;N;LATIN SMALL LETTER E DIAERESIS;;00CB;;00CB -00EC;LATIN SMALL LETTER I WITH GRAVE;Ll;0;L;0069 0300;;;;N;LATIN SMALL LETTER I GRAVE;;00CC;;00CC -00ED;LATIN SMALL LETTER I WITH ACUTE;Ll;0;L;0069 0301;;;;N;LATIN SMALL LETTER I ACUTE;;00CD;;00CD -00EE;LATIN SMALL LETTER I WITH CIRCUMFLEX;Ll;0;L;0069 0302;;;;N;LATIN SMALL LETTER I CIRCUMFLEX;;00CE;;00CE -00EF;LATIN SMALL LETTER I WITH DIAERESIS;Ll;0;L;0069 0308;;;;N;LATIN SMALL LETTER I DIAERESIS;;00CF;;00CF -00F0;LATIN SMALL LETTER ETH;Ll;0;L;;;;;N;;;00D0;;00D0 -00F1;LATIN SMALL LETTER N WITH TILDE;Ll;0;L;006E 0303;;;;N;LATIN SMALL LETTER N TILDE;;00D1;;00D1 -00F2;LATIN SMALL LETTER O WITH GRAVE;Ll;0;L;006F 0300;;;;N;LATIN SMALL LETTER O GRAVE;;00D2;;00D2 -00F3;LATIN SMALL LETTER O WITH ACUTE;Ll;0;L;006F 0301;;;;N;LATIN SMALL LETTER O ACUTE;;00D3;;00D3 -00F4;LATIN SMALL LETTER O WITH CIRCUMFLEX;Ll;0;L;006F 0302;;;;N;LATIN SMALL LETTER O CIRCUMFLEX;;00D4;;00D4 -00F5;LATIN SMALL LETTER O WITH TILDE;Ll;0;L;006F 0303;;;;N;LATIN SMALL LETTER O TILDE;;00D5;;00D5 -00F6;LATIN SMALL LETTER O WITH DIAERESIS;Ll;0;L;006F 0308;;;;N;LATIN SMALL LETTER O DIAERESIS;;00D6;;00D6 -00F7;DIVISION SIGN;Sm;0;ON;;;;;N;;;;; -00F8;LATIN SMALL LETTER O WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER O SLASH;;00D8;;00D8 -00F9;LATIN SMALL LETTER U WITH GRAVE;Ll;0;L;0075 0300;;;;N;LATIN SMALL LETTER U GRAVE;;00D9;;00D9 -00FA;LATIN SMALL LETTER U WITH ACUTE;Ll;0;L;0075 0301;;;;N;LATIN SMALL LETTER U ACUTE;;00DA;;00DA -00FB;LATIN SMALL LETTER U WITH CIRCUMFLEX;Ll;0;L;0075 0302;;;;N;LATIN SMALL LETTER U CIRCUMFLEX;;00DB;;00DB -00FC;LATIN SMALL LETTER U WITH DIAERESIS;Ll;0;L;0075 0308;;;;N;LATIN SMALL LETTER U DIAERESIS;;00DC;;00DC -00FD;LATIN SMALL LETTER Y WITH ACUTE;Ll;0;L;0079 0301;;;;N;LATIN SMALL LETTER Y ACUTE;;00DD;;00DD -00FE;LATIN SMALL LETTER THORN;Ll;0;L;;;;;N;;;00DE;;00DE -00FF;LATIN SMALL LETTER Y WITH DIAERESIS;Ll;0;L;0079 0308;;;;N;LATIN SMALL LETTER Y DIAERESIS;;0178;;0178 -0100;LATIN CAPITAL LETTER A WITH MACRON;Lu;0;L;0041 0304;;;;N;LATIN CAPITAL LETTER A MACRON;;;0101; -0101;LATIN SMALL LETTER A WITH MACRON;Ll;0;L;0061 0304;;;;N;LATIN SMALL LETTER A MACRON;;0100;;0100 -0102;LATIN CAPITAL LETTER A WITH BREVE;Lu;0;L;0041 0306;;;;N;LATIN CAPITAL LETTER A BREVE;;;0103; -0103;LATIN SMALL LETTER A WITH BREVE;Ll;0;L;0061 0306;;;;N;LATIN SMALL LETTER A BREVE;;0102;;0102 -0104;LATIN CAPITAL LETTER A WITH OGONEK;Lu;0;L;0041 0328;;;;N;LATIN CAPITAL LETTER A OGONEK;;;0105; -0105;LATIN SMALL LETTER A WITH OGONEK;Ll;0;L;0061 0328;;;;N;LATIN SMALL LETTER A OGONEK;;0104;;0104 -0106;LATIN CAPITAL LETTER C WITH ACUTE;Lu;0;L;0043 0301;;;;N;LATIN CAPITAL LETTER C ACUTE;;;0107; -0107;LATIN SMALL LETTER C WITH ACUTE;Ll;0;L;0063 0301;;;;N;LATIN SMALL LETTER C ACUTE;;0106;;0106 -0108;LATIN CAPITAL LETTER C WITH CIRCUMFLEX;Lu;0;L;0043 0302;;;;N;LATIN CAPITAL LETTER C CIRCUMFLEX;;;0109; -0109;LATIN SMALL LETTER C WITH CIRCUMFLEX;Ll;0;L;0063 0302;;;;N;LATIN SMALL LETTER C CIRCUMFLEX;;0108;;0108 -010A;LATIN CAPITAL LETTER C WITH DOT ABOVE;Lu;0;L;0043 0307;;;;N;LATIN CAPITAL LETTER C DOT;;;010B; -010B;LATIN SMALL LETTER C WITH DOT ABOVE;Ll;0;L;0063 0307;;;;N;LATIN SMALL LETTER C DOT;;010A;;010A -010C;LATIN CAPITAL LETTER C WITH CARON;Lu;0;L;0043 030C;;;;N;LATIN CAPITAL LETTER C HACEK;;;010D; -010D;LATIN SMALL LETTER C WITH CARON;Ll;0;L;0063 030C;;;;N;LATIN SMALL LETTER C HACEK;;010C;;010C -010E;LATIN CAPITAL LETTER D WITH CARON;Lu;0;L;0044 030C;;;;N;LATIN CAPITAL LETTER D HACEK;;;010F; -010F;LATIN SMALL LETTER D WITH CARON;Ll;0;L;0064 030C;;;;N;LATIN SMALL LETTER D HACEK;;010E;;010E -0110;LATIN CAPITAL LETTER D WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D BAR;;;0111; -0111;LATIN SMALL LETTER D WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER D BAR;;0110;;0110 -0112;LATIN CAPITAL LETTER E WITH MACRON;Lu;0;L;0045 0304;;;;N;LATIN CAPITAL LETTER E MACRON;;;0113; -0113;LATIN SMALL LETTER E WITH MACRON;Ll;0;L;0065 0304;;;;N;LATIN SMALL LETTER E MACRON;;0112;;0112 -0114;LATIN CAPITAL LETTER E WITH BREVE;Lu;0;L;0045 0306;;;;N;LATIN CAPITAL LETTER E BREVE;;;0115; -0115;LATIN SMALL LETTER E WITH BREVE;Ll;0;L;0065 0306;;;;N;LATIN SMALL LETTER E BREVE;;0114;;0114 -0116;LATIN CAPITAL LETTER E WITH DOT ABOVE;Lu;0;L;0045 0307;;;;N;LATIN CAPITAL LETTER E DOT;;;0117; -0117;LATIN SMALL LETTER E WITH DOT ABOVE;Ll;0;L;0065 0307;;;;N;LATIN SMALL LETTER E DOT;;0116;;0116 -0118;LATIN CAPITAL LETTER E WITH OGONEK;Lu;0;L;0045 0328;;;;N;LATIN CAPITAL LETTER E OGONEK;;;0119; -0119;LATIN SMALL LETTER E WITH OGONEK;Ll;0;L;0065 0328;;;;N;LATIN SMALL LETTER E OGONEK;;0118;;0118 -011A;LATIN CAPITAL LETTER E WITH CARON;Lu;0;L;0045 030C;;;;N;LATIN CAPITAL LETTER E HACEK;;;011B; -011B;LATIN SMALL LETTER E WITH CARON;Ll;0;L;0065 030C;;;;N;LATIN SMALL LETTER E HACEK;;011A;;011A -011C;LATIN CAPITAL LETTER G WITH CIRCUMFLEX;Lu;0;L;0047 0302;;;;N;LATIN CAPITAL LETTER G CIRCUMFLEX;;;011D; -011D;LATIN SMALL LETTER G WITH CIRCUMFLEX;Ll;0;L;0067 0302;;;;N;LATIN SMALL LETTER G CIRCUMFLEX;;011C;;011C -011E;LATIN CAPITAL LETTER G WITH BREVE;Lu;0;L;0047 0306;;;;N;LATIN CAPITAL LETTER G BREVE;;;011F; -011F;LATIN SMALL LETTER G WITH BREVE;Ll;0;L;0067 0306;;;;N;LATIN SMALL LETTER G BREVE;;011E;;011E -0120;LATIN CAPITAL LETTER G WITH DOT ABOVE;Lu;0;L;0047 0307;;;;N;LATIN CAPITAL LETTER G DOT;;;0121; -0121;LATIN SMALL LETTER G WITH DOT ABOVE;Ll;0;L;0067 0307;;;;N;LATIN SMALL LETTER G DOT;;0120;;0120 -0122;LATIN CAPITAL LETTER G WITH CEDILLA;Lu;0;L;0047 0327;;;;N;LATIN CAPITAL LETTER G CEDILLA;;;0123; -0123;LATIN SMALL LETTER G WITH CEDILLA;Ll;0;L;0067 0327;;;;N;LATIN SMALL LETTER G CEDILLA;;0122;;0122 -0124;LATIN CAPITAL LETTER H WITH CIRCUMFLEX;Lu;0;L;0048 0302;;;;N;LATIN CAPITAL LETTER H CIRCUMFLEX;;;0125; -0125;LATIN SMALL LETTER H WITH CIRCUMFLEX;Ll;0;L;0068 0302;;;;N;LATIN SMALL LETTER H CIRCUMFLEX;;0124;;0124 -0126;LATIN CAPITAL LETTER H WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER H BAR;;;0127; -0127;LATIN SMALL LETTER H WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER H BAR;;0126;;0126 -0128;LATIN CAPITAL LETTER I WITH TILDE;Lu;0;L;0049 0303;;;;N;LATIN CAPITAL LETTER I TILDE;;;0129; -0129;LATIN SMALL LETTER I WITH TILDE;Ll;0;L;0069 0303;;;;N;LATIN SMALL LETTER I TILDE;;0128;;0128 -012A;LATIN CAPITAL LETTER I WITH MACRON;Lu;0;L;0049 0304;;;;N;LATIN CAPITAL LETTER I MACRON;;;012B; -012B;LATIN SMALL LETTER I WITH MACRON;Ll;0;L;0069 0304;;;;N;LATIN SMALL LETTER I MACRON;;012A;;012A -012C;LATIN CAPITAL LETTER I WITH BREVE;Lu;0;L;0049 0306;;;;N;LATIN CAPITAL LETTER I BREVE;;;012D; -012D;LATIN SMALL LETTER I WITH BREVE;Ll;0;L;0069 0306;;;;N;LATIN SMALL LETTER I BREVE;;012C;;012C -012E;LATIN CAPITAL LETTER I WITH OGONEK;Lu;0;L;0049 0328;;;;N;LATIN CAPITAL LETTER I OGONEK;;;012F; -012F;LATIN SMALL LETTER I WITH OGONEK;Ll;0;L;0069 0328;;;;N;LATIN SMALL LETTER I OGONEK;;012E;;012E -0130;LATIN CAPITAL LETTER I WITH DOT ABOVE;Lu;0;L;0049 0307;;;;N;LATIN CAPITAL LETTER I DOT;;;0069; -0131;LATIN SMALL LETTER DOTLESS I;Ll;0;L;;;;;N;;;0049;;0049 -0132;LATIN CAPITAL LIGATURE IJ;Lu;0;L; 0049 004A;;;;N;LATIN CAPITAL LETTER I J;;;0133; -0133;LATIN SMALL LIGATURE IJ;Ll;0;L; 0069 006A;;;;N;LATIN SMALL LETTER I J;;0132;;0132 -0134;LATIN CAPITAL LETTER J WITH CIRCUMFLEX;Lu;0;L;004A 0302;;;;N;LATIN CAPITAL LETTER J CIRCUMFLEX;;;0135; -0135;LATIN SMALL LETTER J WITH CIRCUMFLEX;Ll;0;L;006A 0302;;;;N;LATIN SMALL LETTER J CIRCUMFLEX;;0134;;0134 -0136;LATIN CAPITAL LETTER K WITH CEDILLA;Lu;0;L;004B 0327;;;;N;LATIN CAPITAL LETTER K CEDILLA;;;0137; -0137;LATIN SMALL LETTER K WITH CEDILLA;Ll;0;L;006B 0327;;;;N;LATIN SMALL LETTER K CEDILLA;;0136;;0136 -0138;LATIN SMALL LETTER KRA;Ll;0;L;;;;;N;;;;; -0139;LATIN CAPITAL LETTER L WITH ACUTE;Lu;0;L;004C 0301;;;;N;LATIN CAPITAL LETTER L ACUTE;;;013A; -013A;LATIN SMALL LETTER L WITH ACUTE;Ll;0;L;006C 0301;;;;N;LATIN SMALL LETTER L ACUTE;;0139;;0139 -013B;LATIN CAPITAL LETTER L WITH CEDILLA;Lu;0;L;004C 0327;;;;N;LATIN CAPITAL LETTER L CEDILLA;;;013C; -013C;LATIN SMALL LETTER L WITH CEDILLA;Ll;0;L;006C 0327;;;;N;LATIN SMALL LETTER L CEDILLA;;013B;;013B -013D;LATIN CAPITAL LETTER L WITH CARON;Lu;0;L;004C 030C;;;;N;LATIN CAPITAL LETTER L HACEK;;;013E; -013E;LATIN SMALL LETTER L WITH CARON;Ll;0;L;006C 030C;;;;N;LATIN SMALL LETTER L HACEK;;013D;;013D -013F;LATIN CAPITAL LETTER L WITH MIDDLE DOT;Lu;0;L; 004C 00B7;;;;N;;;;0140; -0140;LATIN SMALL LETTER L WITH MIDDLE DOT;Ll;0;L; 006C 00B7;;;;N;;;013F;;013F -0141;LATIN CAPITAL LETTER L WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER L SLASH;;;0142; -0142;LATIN SMALL LETTER L WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER L SLASH;;0141;;0141 -0143;LATIN CAPITAL LETTER N WITH ACUTE;Lu;0;L;004E 0301;;;;N;LATIN CAPITAL LETTER N ACUTE;;;0144; -0144;LATIN SMALL LETTER N WITH ACUTE;Ll;0;L;006E 0301;;;;N;LATIN SMALL LETTER N ACUTE;;0143;;0143 -0145;LATIN CAPITAL LETTER N WITH CEDILLA;Lu;0;L;004E 0327;;;;N;LATIN CAPITAL LETTER N CEDILLA;;;0146; -0146;LATIN SMALL LETTER N WITH CEDILLA;Ll;0;L;006E 0327;;;;N;LATIN SMALL LETTER N CEDILLA;;0145;;0145 -0147;LATIN CAPITAL LETTER N WITH CARON;Lu;0;L;004E 030C;;;;N;LATIN CAPITAL LETTER N HACEK;;;0148; -0148;LATIN SMALL LETTER N WITH CARON;Ll;0;L;006E 030C;;;;N;LATIN SMALL LETTER N HACEK;;0147;;0147 -0149;LATIN SMALL LETTER N PRECEDED BY APOSTROPHE;Ll;0;L; 02BC 006E;;;;N;LATIN SMALL LETTER APOSTROPHE N;;;; -014A;LATIN CAPITAL LETTER ENG;Lu;0;L;;;;;N;;;;014B; -014B;LATIN SMALL LETTER ENG;Ll;0;L;;;;;N;;;014A;;014A -014C;LATIN CAPITAL LETTER O WITH MACRON;Lu;0;L;004F 0304;;;;N;LATIN CAPITAL LETTER O MACRON;;;014D; -014D;LATIN SMALL LETTER O WITH MACRON;Ll;0;L;006F 0304;;;;N;LATIN SMALL LETTER O MACRON;;014C;;014C -014E;LATIN CAPITAL LETTER O WITH BREVE;Lu;0;L;004F 0306;;;;N;LATIN CAPITAL LETTER O BREVE;;;014F; -014F;LATIN SMALL LETTER O WITH BREVE;Ll;0;L;006F 0306;;;;N;LATIN SMALL LETTER O BREVE;;014E;;014E -0150;LATIN CAPITAL LETTER O WITH DOUBLE ACUTE;Lu;0;L;004F 030B;;;;N;LATIN CAPITAL LETTER O DOUBLE ACUTE;;;0151; -0151;LATIN SMALL LETTER O WITH DOUBLE ACUTE;Ll;0;L;006F 030B;;;;N;LATIN SMALL LETTER O DOUBLE ACUTE;;0150;;0150 -0152;LATIN CAPITAL LIGATURE OE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O E;;;0153; -0153;LATIN SMALL LIGATURE OE;Ll;0;L;;;;;N;LATIN SMALL LETTER O E;;0152;;0152 -0154;LATIN CAPITAL LETTER R WITH ACUTE;Lu;0;L;0052 0301;;;;N;LATIN CAPITAL LETTER R ACUTE;;;0155; -0155;LATIN SMALL LETTER R WITH ACUTE;Ll;0;L;0072 0301;;;;N;LATIN SMALL LETTER R ACUTE;;0154;;0154 -0156;LATIN CAPITAL LETTER R WITH CEDILLA;Lu;0;L;0052 0327;;;;N;LATIN CAPITAL LETTER R CEDILLA;;;0157; -0157;LATIN SMALL LETTER R WITH CEDILLA;Ll;0;L;0072 0327;;;;N;LATIN SMALL LETTER R CEDILLA;;0156;;0156 -0158;LATIN CAPITAL LETTER R WITH CARON;Lu;0;L;0052 030C;;;;N;LATIN CAPITAL LETTER R HACEK;;;0159; -0159;LATIN SMALL LETTER R WITH CARON;Ll;0;L;0072 030C;;;;N;LATIN SMALL LETTER R HACEK;;0158;;0158 -015A;LATIN CAPITAL LETTER S WITH ACUTE;Lu;0;L;0053 0301;;;;N;LATIN CAPITAL LETTER S ACUTE;;;015B; -015B;LATIN SMALL LETTER S WITH ACUTE;Ll;0;L;0073 0301;;;;N;LATIN SMALL LETTER S ACUTE;;015A;;015A -015C;LATIN CAPITAL LETTER S WITH CIRCUMFLEX;Lu;0;L;0053 0302;;;;N;LATIN CAPITAL LETTER S CIRCUMFLEX;;;015D; -015D;LATIN SMALL LETTER S WITH CIRCUMFLEX;Ll;0;L;0073 0302;;;;N;LATIN SMALL LETTER S CIRCUMFLEX;;015C;;015C -015E;LATIN CAPITAL LETTER S WITH CEDILLA;Lu;0;L;0053 0327;;;;N;LATIN CAPITAL LETTER S CEDILLA;;;015F; -015F;LATIN SMALL LETTER S WITH CEDILLA;Ll;0;L;0073 0327;;;;N;LATIN SMALL LETTER S CEDILLA;;015E;;015E -0160;LATIN CAPITAL LETTER S WITH CARON;Lu;0;L;0053 030C;;;;N;LATIN CAPITAL LETTER S HACEK;;;0161; -0161;LATIN SMALL LETTER S WITH CARON;Ll;0;L;0073 030C;;;;N;LATIN SMALL LETTER S HACEK;;0160;;0160 -0162;LATIN CAPITAL LETTER T WITH CEDILLA;Lu;0;L;0054 0327;;;;N;LATIN CAPITAL LETTER T CEDILLA;;;0163; -0163;LATIN SMALL LETTER T WITH CEDILLA;Ll;0;L;0074 0327;;;;N;LATIN SMALL LETTER T CEDILLA;;0162;;0162 -0164;LATIN CAPITAL LETTER T WITH CARON;Lu;0;L;0054 030C;;;;N;LATIN CAPITAL LETTER T HACEK;;;0165; -0165;LATIN SMALL LETTER T WITH CARON;Ll;0;L;0074 030C;;;;N;LATIN SMALL LETTER T HACEK;;0164;;0164 -0166;LATIN CAPITAL LETTER T WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T BAR;;;0167; -0167;LATIN SMALL LETTER T WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER T BAR;;0166;;0166 -0168;LATIN CAPITAL LETTER U WITH TILDE;Lu;0;L;0055 0303;;;;N;LATIN CAPITAL LETTER U TILDE;;;0169; -0169;LATIN SMALL LETTER U WITH TILDE;Ll;0;L;0075 0303;;;;N;LATIN SMALL LETTER U TILDE;;0168;;0168 -016A;LATIN CAPITAL LETTER U WITH MACRON;Lu;0;L;0055 0304;;;;N;LATIN CAPITAL LETTER U MACRON;;;016B; -016B;LATIN SMALL LETTER U WITH MACRON;Ll;0;L;0075 0304;;;;N;LATIN SMALL LETTER U MACRON;;016A;;016A -016C;LATIN CAPITAL LETTER U WITH BREVE;Lu;0;L;0055 0306;;;;N;LATIN CAPITAL LETTER U BREVE;;;016D; -016D;LATIN SMALL LETTER U WITH BREVE;Ll;0;L;0075 0306;;;;N;LATIN SMALL LETTER U BREVE;;016C;;016C -016E;LATIN CAPITAL LETTER U WITH RING ABOVE;Lu;0;L;0055 030A;;;;N;LATIN CAPITAL LETTER U RING;;;016F; -016F;LATIN SMALL LETTER U WITH RING ABOVE;Ll;0;L;0075 030A;;;;N;LATIN SMALL LETTER U RING;;016E;;016E -0170;LATIN CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0055 030B;;;;N;LATIN CAPITAL LETTER U DOUBLE ACUTE;;;0171; -0171;LATIN SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0075 030B;;;;N;LATIN SMALL LETTER U DOUBLE ACUTE;;0170;;0170 -0172;LATIN CAPITAL LETTER U WITH OGONEK;Lu;0;L;0055 0328;;;;N;LATIN CAPITAL LETTER U OGONEK;;;0173; -0173;LATIN SMALL LETTER U WITH OGONEK;Ll;0;L;0075 0328;;;;N;LATIN SMALL LETTER U OGONEK;;0172;;0172 -0174;LATIN CAPITAL LETTER W WITH CIRCUMFLEX;Lu;0;L;0057 0302;;;;N;LATIN CAPITAL LETTER W CIRCUMFLEX;;;0175; -0175;LATIN SMALL LETTER W WITH CIRCUMFLEX;Ll;0;L;0077 0302;;;;N;LATIN SMALL LETTER W CIRCUMFLEX;;0174;;0174 -0176;LATIN CAPITAL LETTER Y WITH CIRCUMFLEX;Lu;0;L;0059 0302;;;;N;LATIN CAPITAL LETTER Y CIRCUMFLEX;;;0177; -0177;LATIN SMALL LETTER Y WITH CIRCUMFLEX;Ll;0;L;0079 0302;;;;N;LATIN SMALL LETTER Y CIRCUMFLEX;;0176;;0176 -0178;LATIN CAPITAL LETTER Y WITH DIAERESIS;Lu;0;L;0059 0308;;;;N;LATIN CAPITAL LETTER Y DIAERESIS;;;00FF; -0179;LATIN CAPITAL LETTER Z WITH ACUTE;Lu;0;L;005A 0301;;;;N;LATIN CAPITAL LETTER Z ACUTE;;;017A; -017A;LATIN SMALL LETTER Z WITH ACUTE;Ll;0;L;007A 0301;;;;N;LATIN SMALL LETTER Z ACUTE;;0179;;0179 -017B;LATIN CAPITAL LETTER Z WITH DOT ABOVE;Lu;0;L;005A 0307;;;;N;LATIN CAPITAL LETTER Z DOT;;;017C; -017C;LATIN SMALL LETTER Z WITH DOT ABOVE;Ll;0;L;007A 0307;;;;N;LATIN SMALL LETTER Z DOT;;017B;;017B -017D;LATIN CAPITAL LETTER Z WITH CARON;Lu;0;L;005A 030C;;;;N;LATIN CAPITAL LETTER Z HACEK;;;017E; -017E;LATIN SMALL LETTER Z WITH CARON;Ll;0;L;007A 030C;;;;N;LATIN SMALL LETTER Z HACEK;;017D;;017D -017F;LATIN SMALL LETTER LONG S;Ll;0;L; 0073;;;;N;;;0053;;0053 -0180;LATIN SMALL LETTER B WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER B BAR;;0243;;0243 -0181;LATIN CAPITAL LETTER B WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B HOOK;;;0253; -0182;LATIN CAPITAL LETTER B WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B TOPBAR;;;0183; -0183;LATIN SMALL LETTER B WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER B TOPBAR;;0182;;0182 -0184;LATIN CAPITAL LETTER TONE SIX;Lu;0;L;;;;;N;;;;0185; -0185;LATIN SMALL LETTER TONE SIX;Ll;0;L;;;;;N;;;0184;;0184 -0186;LATIN CAPITAL LETTER OPEN O;Lu;0;L;;;;;N;;;;0254; -0187;LATIN CAPITAL LETTER C WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER C HOOK;;;0188; -0188;LATIN SMALL LETTER C WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER C HOOK;;0187;;0187 -0189;LATIN CAPITAL LETTER AFRICAN D;Lu;0;L;;;;;N;;;;0256; -018A;LATIN CAPITAL LETTER D WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D HOOK;;;0257; -018B;LATIN CAPITAL LETTER D WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D TOPBAR;;;018C; -018C;LATIN SMALL LETTER D WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER D TOPBAR;;018B;;018B -018D;LATIN SMALL LETTER TURNED DELTA;Ll;0;L;;;;;N;;;;; -018E;LATIN CAPITAL LETTER REVERSED E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER TURNED E;;;01DD; -018F;LATIN CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;0259; -0190;LATIN CAPITAL LETTER OPEN E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER EPSILON;;;025B; -0191;LATIN CAPITAL LETTER F WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER F HOOK;;;0192; -0192;LATIN SMALL LETTER F WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT F;;0191;;0191 -0193;LATIN CAPITAL LETTER G WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G HOOK;;;0260; -0194;LATIN CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;0263; -0195;LATIN SMALL LETTER HV;Ll;0;L;;;;;N;LATIN SMALL LETTER H V;;01F6;;01F6 -0196;LATIN CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;0269; -0197;LATIN CAPITAL LETTER I WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED I;;;0268; -0198;LATIN CAPITAL LETTER K WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER K HOOK;;;0199; -0199;LATIN SMALL LETTER K WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER K HOOK;;0198;;0198 -019A;LATIN SMALL LETTER L WITH BAR;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED L;;023D;;023D -019B;LATIN SMALL LETTER LAMBDA WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED LAMBDA;;;; -019C;LATIN CAPITAL LETTER TURNED M;Lu;0;L;;;;;N;;;;026F; -019D;LATIN CAPITAL LETTER N WITH LEFT HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER N HOOK;;;0272; -019E;LATIN SMALL LETTER N WITH LONG RIGHT LEG;Ll;0;L;;;;;N;;;0220;;0220 -019F;LATIN CAPITAL LETTER O WITH MIDDLE TILDE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED O;;;0275; -01A0;LATIN CAPITAL LETTER O WITH HORN;Lu;0;L;004F 031B;;;;N;LATIN CAPITAL LETTER O HORN;;;01A1; -01A1;LATIN SMALL LETTER O WITH HORN;Ll;0;L;006F 031B;;;;N;LATIN SMALL LETTER O HORN;;01A0;;01A0 -01A2;LATIN CAPITAL LETTER OI;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O I;;;01A3; -01A3;LATIN SMALL LETTER OI;Ll;0;L;;;;;N;LATIN SMALL LETTER O I;;01A2;;01A2 -01A4;LATIN CAPITAL LETTER P WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER P HOOK;;;01A5; -01A5;LATIN SMALL LETTER P WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER P HOOK;;01A4;;01A4 -01A6;LATIN LETTER YR;Lu;0;L;;;;;N;LATIN LETTER Y R;;;0280; -01A7;LATIN CAPITAL LETTER TONE TWO;Lu;0;L;;;;;N;;;;01A8; -01A8;LATIN SMALL LETTER TONE TWO;Ll;0;L;;;;;N;;;01A7;;01A7 -01A9;LATIN CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;0283; -01AA;LATIN LETTER REVERSED ESH LOOP;Ll;0;L;;;;;N;;;;; -01AB;LATIN SMALL LETTER T WITH PALATAL HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T PALATAL HOOK;;;; -01AC;LATIN CAPITAL LETTER T WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T HOOK;;;01AD; -01AD;LATIN SMALL LETTER T WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T HOOK;;01AC;;01AC -01AE;LATIN CAPITAL LETTER T WITH RETROFLEX HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T RETROFLEX HOOK;;;0288; -01AF;LATIN CAPITAL LETTER U WITH HORN;Lu;0;L;0055 031B;;;;N;LATIN CAPITAL LETTER U HORN;;;01B0; -01B0;LATIN SMALL LETTER U WITH HORN;Ll;0;L;0075 031B;;;;N;LATIN SMALL LETTER U HORN;;01AF;;01AF -01B1;LATIN CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;028A; -01B2;LATIN CAPITAL LETTER V WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER SCRIPT V;;;028B; -01B3;LATIN CAPITAL LETTER Y WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Y HOOK;;;01B4; -01B4;LATIN SMALL LETTER Y WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Y HOOK;;01B3;;01B3 -01B5;LATIN CAPITAL LETTER Z WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Z BAR;;;01B6; -01B6;LATIN SMALL LETTER Z WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER Z BAR;;01B5;;01B5 -01B7;LATIN CAPITAL LETTER EZH;Lu;0;L;;;;;N;LATIN CAPITAL LETTER YOGH;;;0292; -01B8;LATIN CAPITAL LETTER EZH REVERSED;Lu;0;L;;;;;N;LATIN CAPITAL LETTER REVERSED YOGH;;;01B9; -01B9;LATIN SMALL LETTER EZH REVERSED;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED YOGH;;01B8;;01B8 -01BA;LATIN SMALL LETTER EZH WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH WITH TAIL;;;; -01BB;LATIN LETTER TWO WITH STROKE;Lo;0;L;;;;;N;LATIN LETTER TWO BAR;;;; -01BC;LATIN CAPITAL LETTER TONE FIVE;Lu;0;L;;;;;N;;;;01BD; -01BD;LATIN SMALL LETTER TONE FIVE;Ll;0;L;;;;;N;;;01BC;;01BC -01BE;LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER INVERTED GLOTTAL STOP BAR;;;; -01BF;LATIN LETTER WYNN;Ll;0;L;;;;;N;;;01F7;;01F7 -01C0;LATIN LETTER DENTAL CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE;;;; -01C1;LATIN LETTER LATERAL CLICK;Lo;0;L;;;;;N;LATIN LETTER DOUBLE PIPE;;;; -01C2;LATIN LETTER ALVEOLAR CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE DOUBLE BAR;;;; -01C3;LATIN LETTER RETROFLEX CLICK;Lo;0;L;;;;;N;LATIN LETTER EXCLAMATION MARK;;;; -01C4;LATIN CAPITAL LETTER DZ WITH CARON;Lu;0;L; 0044 017D;;;;N;LATIN CAPITAL LETTER D Z HACEK;;;01C6;01C5 -01C5;LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON;Lt;0;L; 0044 017E;;;;N;LATIN LETTER CAPITAL D SMALL Z HACEK;;01C4;01C6;01C5 -01C6;LATIN SMALL LETTER DZ WITH CARON;Ll;0;L; 0064 017E;;;;N;LATIN SMALL LETTER D Z HACEK;;01C4;;01C5 -01C7;LATIN CAPITAL LETTER LJ;Lu;0;L; 004C 004A;;;;N;LATIN CAPITAL LETTER L J;;;01C9;01C8 -01C8;LATIN CAPITAL LETTER L WITH SMALL LETTER J;Lt;0;L; 004C 006A;;;;N;LATIN LETTER CAPITAL L SMALL J;;01C7;01C9;01C8 -01C9;LATIN SMALL LETTER LJ;Ll;0;L; 006C 006A;;;;N;LATIN SMALL LETTER L J;;01C7;;01C8 -01CA;LATIN CAPITAL LETTER NJ;Lu;0;L; 004E 004A;;;;N;LATIN CAPITAL LETTER N J;;;01CC;01CB -01CB;LATIN CAPITAL LETTER N WITH SMALL LETTER J;Lt;0;L; 004E 006A;;;;N;LATIN LETTER CAPITAL N SMALL J;;01CA;01CC;01CB -01CC;LATIN SMALL LETTER NJ;Ll;0;L; 006E 006A;;;;N;LATIN SMALL LETTER N J;;01CA;;01CB -01CD;LATIN CAPITAL LETTER A WITH CARON;Lu;0;L;0041 030C;;;;N;LATIN CAPITAL LETTER A HACEK;;;01CE; -01CE;LATIN SMALL LETTER A WITH CARON;Ll;0;L;0061 030C;;;;N;LATIN SMALL LETTER A HACEK;;01CD;;01CD -01CF;LATIN CAPITAL LETTER I WITH CARON;Lu;0;L;0049 030C;;;;N;LATIN CAPITAL LETTER I HACEK;;;01D0; -01D0;LATIN SMALL LETTER I WITH CARON;Ll;0;L;0069 030C;;;;N;LATIN SMALL LETTER I HACEK;;01CF;;01CF -01D1;LATIN CAPITAL LETTER O WITH CARON;Lu;0;L;004F 030C;;;;N;LATIN CAPITAL LETTER O HACEK;;;01D2; -01D2;LATIN SMALL LETTER O WITH CARON;Ll;0;L;006F 030C;;;;N;LATIN SMALL LETTER O HACEK;;01D1;;01D1 -01D3;LATIN CAPITAL LETTER U WITH CARON;Lu;0;L;0055 030C;;;;N;LATIN CAPITAL LETTER U HACEK;;;01D4; -01D4;LATIN SMALL LETTER U WITH CARON;Ll;0;L;0075 030C;;;;N;LATIN SMALL LETTER U HACEK;;01D3;;01D3 -01D5;LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON;Lu;0;L;00DC 0304;;;;N;LATIN CAPITAL LETTER U DIAERESIS MACRON;;;01D6; -01D6;LATIN SMALL LETTER U WITH DIAERESIS AND MACRON;Ll;0;L;00FC 0304;;;;N;LATIN SMALL LETTER U DIAERESIS MACRON;;01D5;;01D5 -01D7;LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE;Lu;0;L;00DC 0301;;;;N;LATIN CAPITAL LETTER U DIAERESIS ACUTE;;;01D8; -01D8;LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE;Ll;0;L;00FC 0301;;;;N;LATIN SMALL LETTER U DIAERESIS ACUTE;;01D7;;01D7 -01D9;LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON;Lu;0;L;00DC 030C;;;;N;LATIN CAPITAL LETTER U DIAERESIS HACEK;;;01DA; -01DA;LATIN SMALL LETTER U WITH DIAERESIS AND CARON;Ll;0;L;00FC 030C;;;;N;LATIN SMALL LETTER U DIAERESIS HACEK;;01D9;;01D9 -01DB;LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE;Lu;0;L;00DC 0300;;;;N;LATIN CAPITAL LETTER U DIAERESIS GRAVE;;;01DC; -01DC;LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE;Ll;0;L;00FC 0300;;;;N;LATIN SMALL LETTER U DIAERESIS GRAVE;;01DB;;01DB -01DD;LATIN SMALL LETTER TURNED E;Ll;0;L;;;;;N;;;018E;;018E -01DE;LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON;Lu;0;L;00C4 0304;;;;N;LATIN CAPITAL LETTER A DIAERESIS MACRON;;;01DF; -01DF;LATIN SMALL LETTER A WITH DIAERESIS AND MACRON;Ll;0;L;00E4 0304;;;;N;LATIN SMALL LETTER A DIAERESIS MACRON;;01DE;;01DE -01E0;LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON;Lu;0;L;0226 0304;;;;N;LATIN CAPITAL LETTER A DOT MACRON;;;01E1; -01E1;LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON;Ll;0;L;0227 0304;;;;N;LATIN SMALL LETTER A DOT MACRON;;01E0;;01E0 -01E2;LATIN CAPITAL LETTER AE WITH MACRON;Lu;0;L;00C6 0304;;;;N;LATIN CAPITAL LETTER A E MACRON;;;01E3; -01E3;LATIN SMALL LETTER AE WITH MACRON;Ll;0;L;00E6 0304;;;;N;LATIN SMALL LETTER A E MACRON;;01E2;;01E2 -01E4;LATIN CAPITAL LETTER G WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G BAR;;;01E5; -01E5;LATIN SMALL LETTER G WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER G BAR;;01E4;;01E4 -01E6;LATIN CAPITAL LETTER G WITH CARON;Lu;0;L;0047 030C;;;;N;LATIN CAPITAL LETTER G HACEK;;;01E7; -01E7;LATIN SMALL LETTER G WITH CARON;Ll;0;L;0067 030C;;;;N;LATIN SMALL LETTER G HACEK;;01E6;;01E6 -01E8;LATIN CAPITAL LETTER K WITH CARON;Lu;0;L;004B 030C;;;;N;LATIN CAPITAL LETTER K HACEK;;;01E9; -01E9;LATIN SMALL LETTER K WITH CARON;Ll;0;L;006B 030C;;;;N;LATIN SMALL LETTER K HACEK;;01E8;;01E8 -01EA;LATIN CAPITAL LETTER O WITH OGONEK;Lu;0;L;004F 0328;;;;N;LATIN CAPITAL LETTER O OGONEK;;;01EB; -01EB;LATIN SMALL LETTER O WITH OGONEK;Ll;0;L;006F 0328;;;;N;LATIN SMALL LETTER O OGONEK;;01EA;;01EA -01EC;LATIN CAPITAL LETTER O WITH OGONEK AND MACRON;Lu;0;L;01EA 0304;;;;N;LATIN CAPITAL LETTER O OGONEK MACRON;;;01ED; -01ED;LATIN SMALL LETTER O WITH OGONEK AND MACRON;Ll;0;L;01EB 0304;;;;N;LATIN SMALL LETTER O OGONEK MACRON;;01EC;;01EC -01EE;LATIN CAPITAL LETTER EZH WITH CARON;Lu;0;L;01B7 030C;;;;N;LATIN CAPITAL LETTER YOGH HACEK;;;01EF; -01EF;LATIN SMALL LETTER EZH WITH CARON;Ll;0;L;0292 030C;;;;N;LATIN SMALL LETTER YOGH HACEK;;01EE;;01EE -01F0;LATIN SMALL LETTER J WITH CARON;Ll;0;L;006A 030C;;;;N;LATIN SMALL LETTER J HACEK;;;; -01F1;LATIN CAPITAL LETTER DZ;Lu;0;L; 0044 005A;;;;N;;;;01F3;01F2 -01F2;LATIN CAPITAL LETTER D WITH SMALL LETTER Z;Lt;0;L; 0044 007A;;;;N;;;01F1;01F3;01F2 -01F3;LATIN SMALL LETTER DZ;Ll;0;L; 0064 007A;;;;N;;;01F1;;01F2 -01F4;LATIN CAPITAL LETTER G WITH ACUTE;Lu;0;L;0047 0301;;;;N;;;;01F5; -01F5;LATIN SMALL LETTER G WITH ACUTE;Ll;0;L;0067 0301;;;;N;;;01F4;;01F4 -01F6;LATIN CAPITAL LETTER HWAIR;Lu;0;L;;;;;N;;;;0195; -01F7;LATIN CAPITAL LETTER WYNN;Lu;0;L;;;;;N;;;;01BF; -01F8;LATIN CAPITAL LETTER N WITH GRAVE;Lu;0;L;004E 0300;;;;N;;;;01F9; -01F9;LATIN SMALL LETTER N WITH GRAVE;Ll;0;L;006E 0300;;;;N;;;01F8;;01F8 -01FA;LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE;Lu;0;L;00C5 0301;;;;N;;;;01FB; -01FB;LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE;Ll;0;L;00E5 0301;;;;N;;;01FA;;01FA -01FC;LATIN CAPITAL LETTER AE WITH ACUTE;Lu;0;L;00C6 0301;;;;N;;;;01FD; -01FD;LATIN SMALL LETTER AE WITH ACUTE;Ll;0;L;00E6 0301;;;;N;;;01FC;;01FC -01FE;LATIN CAPITAL LETTER O WITH STROKE AND ACUTE;Lu;0;L;00D8 0301;;;;N;;;;01FF; -01FF;LATIN SMALL LETTER O WITH STROKE AND ACUTE;Ll;0;L;00F8 0301;;;;N;;;01FE;;01FE -0200;LATIN CAPITAL LETTER A WITH DOUBLE GRAVE;Lu;0;L;0041 030F;;;;N;;;;0201; -0201;LATIN SMALL LETTER A WITH DOUBLE GRAVE;Ll;0;L;0061 030F;;;;N;;;0200;;0200 -0202;LATIN CAPITAL LETTER A WITH INVERTED BREVE;Lu;0;L;0041 0311;;;;N;;;;0203; -0203;LATIN SMALL LETTER A WITH INVERTED BREVE;Ll;0;L;0061 0311;;;;N;;;0202;;0202 -0204;LATIN CAPITAL LETTER E WITH DOUBLE GRAVE;Lu;0;L;0045 030F;;;;N;;;;0205; -0205;LATIN SMALL LETTER E WITH DOUBLE GRAVE;Ll;0;L;0065 030F;;;;N;;;0204;;0204 -0206;LATIN CAPITAL LETTER E WITH INVERTED BREVE;Lu;0;L;0045 0311;;;;N;;;;0207; -0207;LATIN SMALL LETTER E WITH INVERTED BREVE;Ll;0;L;0065 0311;;;;N;;;0206;;0206 -0208;LATIN CAPITAL LETTER I WITH DOUBLE GRAVE;Lu;0;L;0049 030F;;;;N;;;;0209; -0209;LATIN SMALL LETTER I WITH DOUBLE GRAVE;Ll;0;L;0069 030F;;;;N;;;0208;;0208 -020A;LATIN CAPITAL LETTER I WITH INVERTED BREVE;Lu;0;L;0049 0311;;;;N;;;;020B; -020B;LATIN SMALL LETTER I WITH INVERTED BREVE;Ll;0;L;0069 0311;;;;N;;;020A;;020A -020C;LATIN CAPITAL LETTER O WITH DOUBLE GRAVE;Lu;0;L;004F 030F;;;;N;;;;020D; -020D;LATIN SMALL LETTER O WITH DOUBLE GRAVE;Ll;0;L;006F 030F;;;;N;;;020C;;020C -020E;LATIN CAPITAL LETTER O WITH INVERTED BREVE;Lu;0;L;004F 0311;;;;N;;;;020F; -020F;LATIN SMALL LETTER O WITH INVERTED BREVE;Ll;0;L;006F 0311;;;;N;;;020E;;020E -0210;LATIN CAPITAL LETTER R WITH DOUBLE GRAVE;Lu;0;L;0052 030F;;;;N;;;;0211; -0211;LATIN SMALL LETTER R WITH DOUBLE GRAVE;Ll;0;L;0072 030F;;;;N;;;0210;;0210 -0212;LATIN CAPITAL LETTER R WITH INVERTED BREVE;Lu;0;L;0052 0311;;;;N;;;;0213; -0213;LATIN SMALL LETTER R WITH INVERTED BREVE;Ll;0;L;0072 0311;;;;N;;;0212;;0212 -0214;LATIN CAPITAL LETTER U WITH DOUBLE GRAVE;Lu;0;L;0055 030F;;;;N;;;;0215; -0215;LATIN SMALL LETTER U WITH DOUBLE GRAVE;Ll;0;L;0075 030F;;;;N;;;0214;;0214 -0216;LATIN CAPITAL LETTER U WITH INVERTED BREVE;Lu;0;L;0055 0311;;;;N;;;;0217; -0217;LATIN SMALL LETTER U WITH INVERTED BREVE;Ll;0;L;0075 0311;;;;N;;;0216;;0216 -0218;LATIN CAPITAL LETTER S WITH COMMA BELOW;Lu;0;L;0053 0326;;;;N;;;;0219; -0219;LATIN SMALL LETTER S WITH COMMA BELOW;Ll;0;L;0073 0326;;;;N;;;0218;;0218 -021A;LATIN CAPITAL LETTER T WITH COMMA BELOW;Lu;0;L;0054 0326;;;;N;;;;021B; -021B;LATIN SMALL LETTER T WITH COMMA BELOW;Ll;0;L;0074 0326;;;;N;;;021A;;021A -021C;LATIN CAPITAL LETTER YOGH;Lu;0;L;;;;;N;;;;021D; -021D;LATIN SMALL LETTER YOGH;Ll;0;L;;;;;N;;;021C;;021C -021E;LATIN CAPITAL LETTER H WITH CARON;Lu;0;L;0048 030C;;;;N;;;;021F; -021F;LATIN SMALL LETTER H WITH CARON;Ll;0;L;0068 030C;;;;N;;;021E;;021E -0220;LATIN CAPITAL LETTER N WITH LONG RIGHT LEG;Lu;0;L;;;;;N;;;;019E; -0221;LATIN SMALL LETTER D WITH CURL;Ll;0;L;;;;;N;;;;; -0222;LATIN CAPITAL LETTER OU;Lu;0;L;;;;;N;;;;0223; -0223;LATIN SMALL LETTER OU;Ll;0;L;;;;;N;;;0222;;0222 -0224;LATIN CAPITAL LETTER Z WITH HOOK;Lu;0;L;;;;;N;;;;0225; -0225;LATIN SMALL LETTER Z WITH HOOK;Ll;0;L;;;;;N;;;0224;;0224 -0226;LATIN CAPITAL LETTER A WITH DOT ABOVE;Lu;0;L;0041 0307;;;;N;;;;0227; -0227;LATIN SMALL LETTER A WITH DOT ABOVE;Ll;0;L;0061 0307;;;;N;;;0226;;0226 -0228;LATIN CAPITAL LETTER E WITH CEDILLA;Lu;0;L;0045 0327;;;;N;;;;0229; -0229;LATIN SMALL LETTER E WITH CEDILLA;Ll;0;L;0065 0327;;;;N;;;0228;;0228 -022A;LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON;Lu;0;L;00D6 0304;;;;N;;;;022B; -022B;LATIN SMALL LETTER O WITH DIAERESIS AND MACRON;Ll;0;L;00F6 0304;;;;N;;;022A;;022A -022C;LATIN CAPITAL LETTER O WITH TILDE AND MACRON;Lu;0;L;00D5 0304;;;;N;;;;022D; -022D;LATIN SMALL LETTER O WITH TILDE AND MACRON;Ll;0;L;00F5 0304;;;;N;;;022C;;022C -022E;LATIN CAPITAL LETTER O WITH DOT ABOVE;Lu;0;L;004F 0307;;;;N;;;;022F; -022F;LATIN SMALL LETTER O WITH DOT ABOVE;Ll;0;L;006F 0307;;;;N;;;022E;;022E -0230;LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON;Lu;0;L;022E 0304;;;;N;;;;0231; -0231;LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON;Ll;0;L;022F 0304;;;;N;;;0230;;0230 -0232;LATIN CAPITAL LETTER Y WITH MACRON;Lu;0;L;0059 0304;;;;N;;;;0233; -0233;LATIN SMALL LETTER Y WITH MACRON;Ll;0;L;0079 0304;;;;N;;;0232;;0232 -0234;LATIN SMALL LETTER L WITH CURL;Ll;0;L;;;;;N;;;;; -0235;LATIN SMALL LETTER N WITH CURL;Ll;0;L;;;;;N;;;;; -0236;LATIN SMALL LETTER T WITH CURL;Ll;0;L;;;;;N;;;;; -0237;LATIN SMALL LETTER DOTLESS J;Ll;0;L;;;;;N;;;;; -0238;LATIN SMALL LETTER DB DIGRAPH;Ll;0;L;;;;;N;;;;; -0239;LATIN SMALL LETTER QP DIGRAPH;Ll;0;L;;;;;N;;;;; -023A;LATIN CAPITAL LETTER A WITH STROKE;Lu;0;L;;;;;N;;;;2C65; -023B;LATIN CAPITAL LETTER C WITH STROKE;Lu;0;L;;;;;N;;;;023C; -023C;LATIN SMALL LETTER C WITH STROKE;Ll;0;L;;;;;N;;;023B;;023B -023D;LATIN CAPITAL LETTER L WITH BAR;Lu;0;L;;;;;N;;;;019A; -023E;LATIN CAPITAL LETTER T WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;2C66; -023F;LATIN SMALL LETTER S WITH SWASH TAIL;Ll;0;L;;;;;N;;;2C7E;;2C7E -0240;LATIN SMALL LETTER Z WITH SWASH TAIL;Ll;0;L;;;;;N;;;2C7F;;2C7F -0241;LATIN CAPITAL LETTER GLOTTAL STOP;Lu;0;L;;;;;N;;;;0242; -0242;LATIN SMALL LETTER GLOTTAL STOP;Ll;0;L;;;;;N;;;0241;;0241 -0243;LATIN CAPITAL LETTER B WITH STROKE;Lu;0;L;;;;;N;;;;0180; -0244;LATIN CAPITAL LETTER U BAR;Lu;0;L;;;;;N;;;;0289; -0245;LATIN CAPITAL LETTER TURNED V;Lu;0;L;;;;;N;;;;028C; -0246;LATIN CAPITAL LETTER E WITH STROKE;Lu;0;L;;;;;N;;;;0247; -0247;LATIN SMALL LETTER E WITH STROKE;Ll;0;L;;;;;N;;;0246;;0246 -0248;LATIN CAPITAL LETTER J WITH STROKE;Lu;0;L;;;;;N;;;;0249; -0249;LATIN SMALL LETTER J WITH STROKE;Ll;0;L;;;;;N;;;0248;;0248 -024A;LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL;Lu;0;L;;;;;N;;;;024B; -024B;LATIN SMALL LETTER Q WITH HOOK TAIL;Ll;0;L;;;;;N;;;024A;;024A -024C;LATIN CAPITAL LETTER R WITH STROKE;Lu;0;L;;;;;N;;;;024D; -024D;LATIN SMALL LETTER R WITH STROKE;Ll;0;L;;;;;N;;;024C;;024C -024E;LATIN CAPITAL LETTER Y WITH STROKE;Lu;0;L;;;;;N;;;;024F; -024F;LATIN SMALL LETTER Y WITH STROKE;Ll;0;L;;;;;N;;;024E;;024E -0250;LATIN SMALL LETTER TURNED A;Ll;0;L;;;;;N;;;2C6F;;2C6F -0251;LATIN SMALL LETTER ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT A;;2C6D;;2C6D -0252;LATIN SMALL LETTER TURNED ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED SCRIPT A;;2C70;;2C70 -0253;LATIN SMALL LETTER B WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER B HOOK;;0181;;0181 -0254;LATIN SMALL LETTER OPEN O;Ll;0;L;;;;;N;;;0186;;0186 -0255;LATIN SMALL LETTER C WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER C CURL;;;; -0256;LATIN SMALL LETTER D WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER D RETROFLEX HOOK;;0189;;0189 -0257;LATIN SMALL LETTER D WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER D HOOK;;018A;;018A -0258;LATIN SMALL LETTER REVERSED E;Ll;0;L;;;;;N;;;;; -0259;LATIN SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;018F;;018F -025A;LATIN SMALL LETTER SCHWA WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCHWA HOOK;;;; -025B;LATIN SMALL LETTER OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER EPSILON;;0190;;0190 -025C;LATIN SMALL LETTER REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON;;;; -025D;LATIN SMALL LETTER REVERSED OPEN E WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON HOOK;;;; -025E;LATIN SMALL LETTER CLOSED REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED REVERSED EPSILON;;;; -025F;LATIN SMALL LETTER DOTLESS J WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR;;;; -0260;LATIN SMALL LETTER G WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER G HOOK;;0193;;0193 -0261;LATIN SMALL LETTER SCRIPT G;Ll;0;L;;;;;N;;;;; -0262;LATIN LETTER SMALL CAPITAL G;Ll;0;L;;;;;N;;;;; -0263;LATIN SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0194;;0194 -0264;LATIN SMALL LETTER RAMS HORN;Ll;0;L;;;;;N;LATIN SMALL LETTER BABY GAMMA;;;; -0265;LATIN SMALL LETTER TURNED H;Ll;0;L;;;;;N;;;;; -0266;LATIN SMALL LETTER H WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER H HOOK;;;; -0267;LATIN SMALL LETTER HENG WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER HENG HOOK;;;; -0268;LATIN SMALL LETTER I WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED I;;0197;;0197 -0269;LATIN SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0196;;0196 -026A;LATIN LETTER SMALL CAPITAL I;Ll;0;L;;;;;N;;;;; -026B;LATIN SMALL LETTER L WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;2C62;;2C62 -026C;LATIN SMALL LETTER L WITH BELT;Ll;0;L;;;;;N;LATIN SMALL LETTER L BELT;;;; -026D;LATIN SMALL LETTER L WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER L RETROFLEX HOOK;;;; -026E;LATIN SMALL LETTER LEZH;Ll;0;L;;;;;N;LATIN SMALL LETTER L YOGH;;;; -026F;LATIN SMALL LETTER TURNED M;Ll;0;L;;;;;N;;;019C;;019C -0270;LATIN SMALL LETTER TURNED M WITH LONG LEG;Ll;0;L;;;;;N;;;;; -0271;LATIN SMALL LETTER M WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER M HOOK;;2C6E;;2C6E -0272;LATIN SMALL LETTER N WITH LEFT HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N HOOK;;019D;;019D -0273;LATIN SMALL LETTER N WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N RETROFLEX HOOK;;;; -0274;LATIN LETTER SMALL CAPITAL N;Ll;0;L;;;;;N;;;;; -0275;LATIN SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;019F;;019F -0276;LATIN LETTER SMALL CAPITAL OE;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL O E;;;; -0277;LATIN SMALL LETTER CLOSED OMEGA;Ll;0;L;;;;;N;;;;; -0278;LATIN SMALL LETTER PHI;Ll;0;L;;;;;N;;;;; -0279;LATIN SMALL LETTER TURNED R;Ll;0;L;;;;;N;;;;; -027A;LATIN SMALL LETTER TURNED R WITH LONG LEG;Ll;0;L;;;;;N;;;;; -027B;LATIN SMALL LETTER TURNED R WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED R HOOK;;;; -027C;LATIN SMALL LETTER R WITH LONG LEG;Ll;0;L;;;;;N;;;;; -027D;LATIN SMALL LETTER R WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER R HOOK;;2C64;;2C64 -027E;LATIN SMALL LETTER R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER FISHHOOK R;;;; -027F;LATIN SMALL LETTER REVERSED R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED FISHHOOK R;;;; -0280;LATIN LETTER SMALL CAPITAL R;Ll;0;L;;;;;N;;;01A6;;01A6 -0281;LATIN LETTER SMALL CAPITAL INVERTED R;Ll;0;L;;;;;N;;;;; -0282;LATIN SMALL LETTER S WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER S HOOK;;;; -0283;LATIN SMALL LETTER ESH;Ll;0;L;;;;;N;;;01A9;;01A9 -0284;LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR HOOK;;;; -0285;LATIN SMALL LETTER SQUAT REVERSED ESH;Ll;0;L;;;;;N;;;;; -0286;LATIN SMALL LETTER ESH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER ESH CURL;;;; -0287;LATIN SMALL LETTER TURNED T;Ll;0;L;;;;;N;;;;; -0288;LATIN SMALL LETTER T WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T RETROFLEX HOOK;;01AE;;01AE -0289;LATIN SMALL LETTER U BAR;Ll;0;L;;;;;N;;;0244;;0244 -028A;LATIN SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;01B1;;01B1 -028B;LATIN SMALL LETTER V WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT V;;01B2;;01B2 -028C;LATIN SMALL LETTER TURNED V;Ll;0;L;;;;;N;;;0245;;0245 -028D;LATIN SMALL LETTER TURNED W;Ll;0;L;;;;;N;;;;; -028E;LATIN SMALL LETTER TURNED Y;Ll;0;L;;;;;N;;;;; -028F;LATIN LETTER SMALL CAPITAL Y;Ll;0;L;;;;;N;;;;; -0290;LATIN SMALL LETTER Z WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Z RETROFLEX HOOK;;;; -0291;LATIN SMALL LETTER Z WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER Z CURL;;;; -0292;LATIN SMALL LETTER EZH;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH;;01B7;;01B7 -0293;LATIN SMALL LETTER EZH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH CURL;;;; -0294;LATIN LETTER GLOTTAL STOP;Lo;0;L;;;;;N;;;;; -0295;LATIN LETTER PHARYNGEAL VOICED FRICATIVE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP;;;; -0296;LATIN LETTER INVERTED GLOTTAL STOP;Ll;0;L;;;;;N;;;;; -0297;LATIN LETTER STRETCHED C;Ll;0;L;;;;;N;;;;; -0298;LATIN LETTER BILABIAL CLICK;Ll;0;L;;;;;N;LATIN LETTER BULLSEYE;;;; -0299;LATIN LETTER SMALL CAPITAL B;Ll;0;L;;;;;N;;;;; -029A;LATIN SMALL LETTER CLOSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED EPSILON;;;; -029B;LATIN LETTER SMALL CAPITAL G WITH HOOK;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL G HOOK;;;; -029C;LATIN LETTER SMALL CAPITAL H;Ll;0;L;;;;;N;;;;; -029D;LATIN SMALL LETTER J WITH CROSSED-TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER CROSSED-TAIL J;;;; -029E;LATIN SMALL LETTER TURNED K;Ll;0;L;;;;;N;;;;; -029F;LATIN LETTER SMALL CAPITAL L;Ll;0;L;;;;;N;;;;; -02A0;LATIN SMALL LETTER Q WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Q HOOK;;;; -02A1;LATIN LETTER GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER GLOTTAL STOP BAR;;;; -02A2;LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP BAR;;;; -02A3;LATIN SMALL LETTER DZ DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z;;;; -02A4;LATIN SMALL LETTER DEZH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D YOGH;;;; -02A5;LATIN SMALL LETTER DZ DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z CURL;;;; -02A6;LATIN SMALL LETTER TS DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T S;;;; -02A7;LATIN SMALL LETTER TESH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T ESH;;;; -02A8;LATIN SMALL LETTER TC DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER T C CURL;;;; -02A9;LATIN SMALL LETTER FENG DIGRAPH;Ll;0;L;;;;;N;;;;; -02AA;LATIN SMALL LETTER LS DIGRAPH;Ll;0;L;;;;;N;;;;; -02AB;LATIN SMALL LETTER LZ DIGRAPH;Ll;0;L;;;;;N;;;;; -02AC;LATIN LETTER BILABIAL PERCUSSIVE;Ll;0;L;;;;;N;;;;; -02AD;LATIN LETTER BIDENTAL PERCUSSIVE;Ll;0;L;;;;;N;;;;; -02AE;LATIN SMALL LETTER TURNED H WITH FISHHOOK;Ll;0;L;;;;;N;;;;; -02AF;LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL;Ll;0;L;;;;;N;;;;; -02B0;MODIFIER LETTER SMALL H;Lm;0;L; 0068;;;;N;;;;; -02B1;MODIFIER LETTER SMALL H WITH HOOK;Lm;0;L; 0266;;;;N;MODIFIER LETTER SMALL H HOOK;;;; -02B2;MODIFIER LETTER SMALL J;Lm;0;L; 006A;;;;N;;;;; -02B3;MODIFIER LETTER SMALL R;Lm;0;L; 0072;;;;N;;;;; -02B4;MODIFIER LETTER SMALL TURNED R;Lm;0;L; 0279;;;;N;;;;; -02B5;MODIFIER LETTER SMALL TURNED R WITH HOOK;Lm;0;L; 027B;;;;N;MODIFIER LETTER SMALL TURNED R HOOK;;;; -02B6;MODIFIER LETTER SMALL CAPITAL INVERTED R;Lm;0;L; 0281;;;;N;;;;; -02B7;MODIFIER LETTER SMALL W;Lm;0;L; 0077;;;;N;;;;; -02B8;MODIFIER LETTER SMALL Y;Lm;0;L; 0079;;;;N;;;;; -02B9;MODIFIER LETTER PRIME;Lm;0;ON;;;;;N;;;;; -02BA;MODIFIER LETTER DOUBLE PRIME;Lm;0;ON;;;;;N;;;;; -02BB;MODIFIER LETTER TURNED COMMA;Lm;0;L;;;;;N;;;;; -02BC;MODIFIER LETTER APOSTROPHE;Lm;0;L;;;;;N;;;;; -02BD;MODIFIER LETTER REVERSED COMMA;Lm;0;L;;;;;N;;;;; -02BE;MODIFIER LETTER RIGHT HALF RING;Lm;0;L;;;;;N;;;;; -02BF;MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;; -02C0;MODIFIER LETTER GLOTTAL STOP;Lm;0;L;;;;;N;;;;; -02C1;MODIFIER LETTER REVERSED GLOTTAL STOP;Lm;0;L;;;;;N;;;;; -02C2;MODIFIER LETTER LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;; -02C3;MODIFIER LETTER RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;; -02C4;MODIFIER LETTER UP ARROWHEAD;Sk;0;ON;;;;;N;;;;; -02C5;MODIFIER LETTER DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;; -02C6;MODIFIER LETTER CIRCUMFLEX ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER CIRCUMFLEX;;;; -02C7;CARON;Lm;0;ON;;;;;N;MODIFIER LETTER HACEK;;;; -02C8;MODIFIER LETTER VERTICAL LINE;Lm;0;ON;;;;;N;;;;; -02C9;MODIFIER LETTER MACRON;Lm;0;ON;;;;;N;;;;; -02CA;MODIFIER LETTER ACUTE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER ACUTE;;;; -02CB;MODIFIER LETTER GRAVE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER GRAVE;;;; -02CC;MODIFIER LETTER LOW VERTICAL LINE;Lm;0;ON;;;;;N;;;;; -02CD;MODIFIER LETTER LOW MACRON;Lm;0;ON;;;;;N;;;;; -02CE;MODIFIER LETTER LOW GRAVE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER LOW GRAVE;;;; -02CF;MODIFIER LETTER LOW ACUTE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER LOW ACUTE;;;; -02D0;MODIFIER LETTER TRIANGULAR COLON;Lm;0;L;;;;;N;;;;; -02D1;MODIFIER LETTER HALF TRIANGULAR COLON;Lm;0;L;;;;;N;;;;; -02D2;MODIFIER LETTER CENTRED RIGHT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED RIGHT HALF RING;;;; -02D3;MODIFIER LETTER CENTRED LEFT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED LEFT HALF RING;;;; -02D4;MODIFIER LETTER UP TACK;Sk;0;ON;;;;;N;;;;; -02D5;MODIFIER LETTER DOWN TACK;Sk;0;ON;;;;;N;;;;; -02D6;MODIFIER LETTER PLUS SIGN;Sk;0;ON;;;;;N;;;;; -02D7;MODIFIER LETTER MINUS SIGN;Sk;0;ON;;;;;N;;;;; -02D8;BREVE;Sk;0;ON; 0020 0306;;;;N;SPACING BREVE;;;; -02D9;DOT ABOVE;Sk;0;ON; 0020 0307;;;;N;SPACING DOT ABOVE;;;; -02DA;RING ABOVE;Sk;0;ON; 0020 030A;;;;N;SPACING RING ABOVE;;;; -02DB;OGONEK;Sk;0;ON; 0020 0328;;;;N;SPACING OGONEK;;;; -02DC;SMALL TILDE;Sk;0;ON; 0020 0303;;;;N;SPACING TILDE;;;; -02DD;DOUBLE ACUTE ACCENT;Sk;0;ON; 0020 030B;;;;N;SPACING DOUBLE ACUTE;;;; -02DE;MODIFIER LETTER RHOTIC HOOK;Sk;0;ON;;;;;N;;;;; -02DF;MODIFIER LETTER CROSS ACCENT;Sk;0;ON;;;;;N;;;;; -02E0;MODIFIER LETTER SMALL GAMMA;Lm;0;L; 0263;;;;N;;;;; -02E1;MODIFIER LETTER SMALL L;Lm;0;L; 006C;;;;N;;;;; -02E2;MODIFIER LETTER SMALL S;Lm;0;L; 0073;;;;N;;;;; -02E3;MODIFIER LETTER SMALL X;Lm;0;L; 0078;;;;N;;;;; -02E4;MODIFIER LETTER SMALL REVERSED GLOTTAL STOP;Lm;0;L; 0295;;;;N;;;;; -02E5;MODIFIER LETTER EXTRA-HIGH TONE BAR;Sk;0;ON;;;;;N;;;;; -02E6;MODIFIER LETTER HIGH TONE BAR;Sk;0;ON;;;;;N;;;;; -02E7;MODIFIER LETTER MID TONE BAR;Sk;0;ON;;;;;N;;;;; -02E8;MODIFIER LETTER LOW TONE BAR;Sk;0;ON;;;;;N;;;;; -02E9;MODIFIER LETTER EXTRA-LOW TONE BAR;Sk;0;ON;;;;;N;;;;; -02EA;MODIFIER LETTER YIN DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;; -02EB;MODIFIER LETTER YANG DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;; -02EC;MODIFIER LETTER VOICING;Lm;0;ON;;;;;N;;;;; -02ED;MODIFIER LETTER UNASPIRATED;Sk;0;ON;;;;;N;;;;; -02EE;MODIFIER LETTER DOUBLE APOSTROPHE;Lm;0;L;;;;;N;;;;; -02EF;MODIFIER LETTER LOW DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;; -02F0;MODIFIER LETTER LOW UP ARROWHEAD;Sk;0;ON;;;;;N;;;;; -02F1;MODIFIER LETTER LOW LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;; -02F2;MODIFIER LETTER LOW RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;; -02F3;MODIFIER LETTER LOW RING;Sk;0;ON;;;;;N;;;;; -02F4;MODIFIER LETTER MIDDLE GRAVE ACCENT;Sk;0;ON;;;;;N;;;;; -02F5;MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT;Sk;0;ON;;;;;N;;;;; -02F6;MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT;Sk;0;ON;;;;;N;;;;; -02F7;MODIFIER LETTER LOW TILDE;Sk;0;ON;;;;;N;;;;; -02F8;MODIFIER LETTER RAISED COLON;Sk;0;ON;;;;;N;;;;; -02F9;MODIFIER LETTER BEGIN HIGH TONE;Sk;0;ON;;;;;N;;;;; -02FA;MODIFIER LETTER END HIGH TONE;Sk;0;ON;;;;;N;;;;; -02FB;MODIFIER LETTER BEGIN LOW TONE;Sk;0;ON;;;;;N;;;;; -02FC;MODIFIER LETTER END LOW TONE;Sk;0;ON;;;;;N;;;;; -02FD;MODIFIER LETTER SHELF;Sk;0;ON;;;;;N;;;;; -02FE;MODIFIER LETTER OPEN SHELF;Sk;0;ON;;;;;N;;;;; -02FF;MODIFIER LETTER LOW LEFT ARROW;Sk;0;ON;;;;;N;;;;; -0300;COMBINING GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING GRAVE;;;; -0301;COMBINING ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING ACUTE;;;; -0302;COMBINING CIRCUMFLEX ACCENT;Mn;230;NSM;;;;;N;NON-SPACING CIRCUMFLEX;;;; -0303;COMBINING TILDE;Mn;230;NSM;;;;;N;NON-SPACING TILDE;;;; -0304;COMBINING MACRON;Mn;230;NSM;;;;;N;NON-SPACING MACRON;;;; -0305;COMBINING OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING OVERSCORE;;;; -0306;COMBINING BREVE;Mn;230;NSM;;;;;N;NON-SPACING BREVE;;;; -0307;COMBINING DOT ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOT ABOVE;;;; -0308;COMBINING DIAERESIS;Mn;230;NSM;;;;;N;NON-SPACING DIAERESIS;;;; -0309;COMBINING HOOK ABOVE;Mn;230;NSM;;;;;N;NON-SPACING HOOK ABOVE;;;; -030A;COMBINING RING ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RING ABOVE;;;; -030B;COMBINING DOUBLE ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE ACUTE;;;; -030C;COMBINING CARON;Mn;230;NSM;;;;;N;NON-SPACING HACEK;;;; -030D;COMBINING VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL LINE ABOVE;;;; -030E;COMBINING DOUBLE VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE VERTICAL LINE ABOVE;;;; -030F;COMBINING DOUBLE GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE GRAVE;;;; -0310;COMBINING CANDRABINDU;Mn;230;NSM;;;;;N;NON-SPACING CANDRABINDU;;;; -0311;COMBINING INVERTED BREVE;Mn;230;NSM;;;;;N;NON-SPACING INVERTED BREVE;;;; -0312;COMBINING TURNED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING TURNED COMMA ABOVE;;;; -0313;COMBINING COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING COMMA ABOVE;;;; -0314;COMBINING REVERSED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING REVERSED COMMA ABOVE;;;; -0315;COMBINING COMMA ABOVE RIGHT;Mn;232;NSM;;;;;N;NON-SPACING COMMA ABOVE RIGHT;;;; -0316;COMBINING GRAVE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING GRAVE BELOW;;;; -0317;COMBINING ACUTE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING ACUTE BELOW;;;; -0318;COMBINING LEFT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT TACK BELOW;;;; -0319;COMBINING RIGHT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT TACK BELOW;;;; -031A;COMBINING LEFT ANGLE ABOVE;Mn;232;NSM;;;;;N;NON-SPACING LEFT ANGLE ABOVE;;;; -031B;COMBINING HORN;Mn;216;NSM;;;;;N;NON-SPACING HORN;;;; -031C;COMBINING LEFT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT HALF RING BELOW;;;; -031D;COMBINING UP TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING UP TACK BELOW;;;; -031E;COMBINING DOWN TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOWN TACK BELOW;;;; -031F;COMBINING PLUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING PLUS SIGN BELOW;;;; -0320;COMBINING MINUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING MINUS SIGN BELOW;;;; -0321;COMBINING PALATALIZED HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING PALATALIZED HOOK BELOW;;;; -0322;COMBINING RETROFLEX HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING RETROFLEX HOOK BELOW;;;; -0323;COMBINING DOT BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOT BELOW;;;; -0324;COMBINING DIAERESIS BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE DOT BELOW;;;; -0325;COMBINING RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RING BELOW;;;; -0326;COMBINING COMMA BELOW;Mn;220;NSM;;;;;N;NON-SPACING COMMA BELOW;;;; -0327;COMBINING CEDILLA;Mn;202;NSM;;;;;N;NON-SPACING CEDILLA;;;; -0328;COMBINING OGONEK;Mn;202;NSM;;;;;N;NON-SPACING OGONEK;;;; -0329;COMBINING VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;NON-SPACING VERTICAL LINE BELOW;;;; -032A;COMBINING BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BRIDGE BELOW;;;; -032B;COMBINING INVERTED DOUBLE ARCH BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED DOUBLE ARCH BELOW;;;; -032C;COMBINING CARON BELOW;Mn;220;NSM;;;;;N;NON-SPACING HACEK BELOW;;;; -032D;COMBINING CIRCUMFLEX ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING CIRCUMFLEX BELOW;;;; -032E;COMBINING BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BREVE BELOW;;;; -032F;COMBINING INVERTED BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BREVE BELOW;;;; -0330;COMBINING TILDE BELOW;Mn;220;NSM;;;;;N;NON-SPACING TILDE BELOW;;;; -0331;COMBINING MACRON BELOW;Mn;220;NSM;;;;;N;NON-SPACING MACRON BELOW;;;; -0332;COMBINING LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING UNDERSCORE;;;; -0333;COMBINING DOUBLE LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE UNDERSCORE;;;; -0334;COMBINING TILDE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING TILDE OVERLAY;;;; -0335;COMBINING SHORT STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT BAR OVERLAY;;;; -0336;COMBINING LONG STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG BAR OVERLAY;;;; -0337;COMBINING SHORT SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT SLASH OVERLAY;;;; -0338;COMBINING LONG SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG SLASH OVERLAY;;;; -0339;COMBINING RIGHT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT HALF RING BELOW;;;; -033A;COMBINING INVERTED BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BRIDGE BELOW;;;; -033B;COMBINING SQUARE BELOW;Mn;220;NSM;;;;;N;NON-SPACING SQUARE BELOW;;;; -033C;COMBINING SEAGULL BELOW;Mn;220;NSM;;;;;N;NON-SPACING SEAGULL BELOW;;;; -033D;COMBINING X ABOVE;Mn;230;NSM;;;;;N;NON-SPACING X ABOVE;;;; -033E;COMBINING VERTICAL TILDE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL TILDE;;;; -033F;COMBINING DOUBLE OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE OVERSCORE;;;; -0340;COMBINING GRAVE TONE MARK;Mn;230;NSM;0300;;;;N;NON-SPACING GRAVE TONE MARK;;;; -0341;COMBINING ACUTE TONE MARK;Mn;230;NSM;0301;;;;N;NON-SPACING ACUTE TONE MARK;;;; -0342;COMBINING GREEK PERISPOMENI;Mn;230;NSM;;;;;N;;;;; -0343;COMBINING GREEK KORONIS;Mn;230;NSM;0313;;;;N;;;;; -0344;COMBINING GREEK DIALYTIKA TONOS;Mn;230;NSM;0308 0301;;;;N;GREEK NON-SPACING DIAERESIS TONOS;;;; -0345;COMBINING GREEK YPOGEGRAMMENI;Mn;240;NSM;;;;;N;GREEK NON-SPACING IOTA BELOW;;0399;;0399 -0346;COMBINING BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;; -0347;COMBINING EQUALS SIGN BELOW;Mn;220;NSM;;;;;N;;;;; -0348;COMBINING DOUBLE VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;;;;; -0349;COMBINING LEFT ANGLE BELOW;Mn;220;NSM;;;;;N;;;;; -034A;COMBINING NOT TILDE ABOVE;Mn;230;NSM;;;;;N;;;;; -034B;COMBINING HOMOTHETIC ABOVE;Mn;230;NSM;;;;;N;;;;; -034C;COMBINING ALMOST EQUAL TO ABOVE;Mn;230;NSM;;;;;N;;;;; -034D;COMBINING LEFT RIGHT ARROW BELOW;Mn;220;NSM;;;;;N;;;;; -034E;COMBINING UPWARDS ARROW BELOW;Mn;220;NSM;;;;;N;;;;; -034F;COMBINING GRAPHEME JOINER;Mn;0;NSM;;;;;N;;;;; -0350;COMBINING RIGHT ARROWHEAD ABOVE;Mn;230;NSM;;;;;N;;;;; -0351;COMBINING LEFT HALF RING ABOVE;Mn;230;NSM;;;;;N;;;;; -0352;COMBINING FERMATA;Mn;230;NSM;;;;;N;;;;; -0353;COMBINING X BELOW;Mn;220;NSM;;;;;N;;;;; -0354;COMBINING LEFT ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;; -0355;COMBINING RIGHT ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;; -0356;COMBINING RIGHT ARROWHEAD AND UP ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;; -0357;COMBINING RIGHT HALF RING ABOVE;Mn;230;NSM;;;;;N;;;;; -0358;COMBINING DOT ABOVE RIGHT;Mn;232;NSM;;;;;N;;;;; -0359;COMBINING ASTERISK BELOW;Mn;220;NSM;;;;;N;;;;; -035A;COMBINING DOUBLE RING BELOW;Mn;220;NSM;;;;;N;;;;; -035B;COMBINING ZIGZAG ABOVE;Mn;230;NSM;;;;;N;;;;; -035C;COMBINING DOUBLE BREVE BELOW;Mn;233;NSM;;;;;N;;;;; -035D;COMBINING DOUBLE BREVE;Mn;234;NSM;;;;;N;;;;; -035E;COMBINING DOUBLE MACRON;Mn;234;NSM;;;;;N;;;;; -035F;COMBINING DOUBLE MACRON BELOW;Mn;233;NSM;;;;;N;;;;; -0360;COMBINING DOUBLE TILDE;Mn;234;NSM;;;;;N;;;;; -0361;COMBINING DOUBLE INVERTED BREVE;Mn;234;NSM;;;;;N;;;;; -0362;COMBINING DOUBLE RIGHTWARDS ARROW BELOW;Mn;233;NSM;;;;;N;;;;; -0363;COMBINING LATIN SMALL LETTER A;Mn;230;NSM;;;;;N;;;;; -0364;COMBINING LATIN SMALL LETTER E;Mn;230;NSM;;;;;N;;;;; -0365;COMBINING LATIN SMALL LETTER I;Mn;230;NSM;;;;;N;;;;; -0366;COMBINING LATIN SMALL LETTER O;Mn;230;NSM;;;;;N;;;;; -0367;COMBINING LATIN SMALL LETTER U;Mn;230;NSM;;;;;N;;;;; -0368;COMBINING LATIN SMALL LETTER C;Mn;230;NSM;;;;;N;;;;; -0369;COMBINING LATIN SMALL LETTER D;Mn;230;NSM;;;;;N;;;;; -036A;COMBINING LATIN SMALL LETTER H;Mn;230;NSM;;;;;N;;;;; -036B;COMBINING LATIN SMALL LETTER M;Mn;230;NSM;;;;;N;;;;; -036C;COMBINING LATIN SMALL LETTER R;Mn;230;NSM;;;;;N;;;;; -036D;COMBINING LATIN SMALL LETTER T;Mn;230;NSM;;;;;N;;;;; -036E;COMBINING LATIN SMALL LETTER V;Mn;230;NSM;;;;;N;;;;; -036F;COMBINING LATIN SMALL LETTER X;Mn;230;NSM;;;;;N;;;;; -0370;GREEK CAPITAL LETTER HETA;Lu;0;L;;;;;N;;;;0371; -0371;GREEK SMALL LETTER HETA;Ll;0;L;;;;;N;;;0370;;0370 -0372;GREEK CAPITAL LETTER ARCHAIC SAMPI;Lu;0;L;;;;;N;;;;0373; -0373;GREEK SMALL LETTER ARCHAIC SAMPI;Ll;0;L;;;;;N;;;0372;;0372 -0374;GREEK NUMERAL SIGN;Lm;0;ON;02B9;;;;N;GREEK UPPER NUMERAL SIGN;;;; -0375;GREEK LOWER NUMERAL SIGN;Sk;0;ON;;;;;N;;;;; -0376;GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA;Lu;0;L;;;;;N;;;;0377; -0377;GREEK SMALL LETTER PAMPHYLIAN DIGAMMA;Ll;0;L;;;;;N;;;0376;;0376 -037A;GREEK YPOGEGRAMMENI;Lm;0;L; 0020 0345;;;;N;GREEK SPACING IOTA BELOW;;;; -037B;GREEK SMALL REVERSED LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;;;03FD;;03FD -037C;GREEK SMALL DOTTED LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;;;03FE;;03FE -037D;GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;;;03FF;;03FF -037E;GREEK QUESTION MARK;Po;0;ON;003B;;;;N;;;;; -0384;GREEK TONOS;Sk;0;ON; 0020 0301;;;;N;GREEK SPACING TONOS;;;; -0385;GREEK DIALYTIKA TONOS;Sk;0;ON;00A8 0301;;;;N;GREEK SPACING DIAERESIS TONOS;;;; -0386;GREEK CAPITAL LETTER ALPHA WITH TONOS;Lu;0;L;0391 0301;;;;N;GREEK CAPITAL LETTER ALPHA TONOS;;;03AC; -0387;GREEK ANO TELEIA;Po;0;ON;00B7;;;;N;;;;; -0388;GREEK CAPITAL LETTER EPSILON WITH TONOS;Lu;0;L;0395 0301;;;;N;GREEK CAPITAL LETTER EPSILON TONOS;;;03AD; -0389;GREEK CAPITAL LETTER ETA WITH TONOS;Lu;0;L;0397 0301;;;;N;GREEK CAPITAL LETTER ETA TONOS;;;03AE; -038A;GREEK CAPITAL LETTER IOTA WITH TONOS;Lu;0;L;0399 0301;;;;N;GREEK CAPITAL LETTER IOTA TONOS;;;03AF; -038C;GREEK CAPITAL LETTER OMICRON WITH TONOS;Lu;0;L;039F 0301;;;;N;GREEK CAPITAL LETTER OMICRON TONOS;;;03CC; -038E;GREEK CAPITAL LETTER UPSILON WITH TONOS;Lu;0;L;03A5 0301;;;;N;GREEK CAPITAL LETTER UPSILON TONOS;;;03CD; -038F;GREEK CAPITAL LETTER OMEGA WITH TONOS;Lu;0;L;03A9 0301;;;;N;GREEK CAPITAL LETTER OMEGA TONOS;;;03CE; -0390;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS;Ll;0;L;03CA 0301;;;;N;GREEK SMALL LETTER IOTA DIAERESIS TONOS;;;; -0391;GREEK CAPITAL LETTER ALPHA;Lu;0;L;;;;;N;;;;03B1; -0392;GREEK CAPITAL LETTER BETA;Lu;0;L;;;;;N;;;;03B2; -0393;GREEK CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;03B3; -0394;GREEK CAPITAL LETTER DELTA;Lu;0;L;;;;;N;;;;03B4; -0395;GREEK CAPITAL LETTER EPSILON;Lu;0;L;;;;;N;;;;03B5; -0396;GREEK CAPITAL LETTER ZETA;Lu;0;L;;;;;N;;;;03B6; -0397;GREEK CAPITAL LETTER ETA;Lu;0;L;;;;;N;;;;03B7; -0398;GREEK CAPITAL LETTER THETA;Lu;0;L;;;;;N;;;;03B8; -0399;GREEK CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;03B9; -039A;GREEK CAPITAL LETTER KAPPA;Lu;0;L;;;;;N;;;;03BA; -039B;GREEK CAPITAL LETTER LAMDA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER LAMBDA;;;03BB; -039C;GREEK CAPITAL LETTER MU;Lu;0;L;;;;;N;;;;03BC; -039D;GREEK CAPITAL LETTER NU;Lu;0;L;;;;;N;;;;03BD; -039E;GREEK CAPITAL LETTER XI;Lu;0;L;;;;;N;;;;03BE; -039F;GREEK CAPITAL LETTER OMICRON;Lu;0;L;;;;;N;;;;03BF; -03A0;GREEK CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;03C0; -03A1;GREEK CAPITAL LETTER RHO;Lu;0;L;;;;;N;;;;03C1; -03A3;GREEK CAPITAL LETTER SIGMA;Lu;0;L;;;;;N;;;;03C3; -03A4;GREEK CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;03C4; -03A5;GREEK CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;03C5; -03A6;GREEK CAPITAL LETTER PHI;Lu;0;L;;;;;N;;;;03C6; -03A7;GREEK CAPITAL LETTER CHI;Lu;0;L;;;;;N;;;;03C7; -03A8;GREEK CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;03C8; -03A9;GREEK CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;03C9; -03AA;GREEK CAPITAL LETTER IOTA WITH DIALYTIKA;Lu;0;L;0399 0308;;;;N;GREEK CAPITAL LETTER IOTA DIAERESIS;;;03CA; -03AB;GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA;Lu;0;L;03A5 0308;;;;N;GREEK CAPITAL LETTER UPSILON DIAERESIS;;;03CB; -03AC;GREEK SMALL LETTER ALPHA WITH TONOS;Ll;0;L;03B1 0301;;;;N;GREEK SMALL LETTER ALPHA TONOS;;0386;;0386 -03AD;GREEK SMALL LETTER EPSILON WITH TONOS;Ll;0;L;03B5 0301;;;;N;GREEK SMALL LETTER EPSILON TONOS;;0388;;0388 -03AE;GREEK SMALL LETTER ETA WITH TONOS;Ll;0;L;03B7 0301;;;;N;GREEK SMALL LETTER ETA TONOS;;0389;;0389 -03AF;GREEK SMALL LETTER IOTA WITH TONOS;Ll;0;L;03B9 0301;;;;N;GREEK SMALL LETTER IOTA TONOS;;038A;;038A -03B0;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS;Ll;0;L;03CB 0301;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS TONOS;;;; -03B1;GREEK SMALL LETTER ALPHA;Ll;0;L;;;;;N;;;0391;;0391 -03B2;GREEK SMALL LETTER BETA;Ll;0;L;;;;;N;;;0392;;0392 -03B3;GREEK SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0393;;0393 -03B4;GREEK SMALL LETTER DELTA;Ll;0;L;;;;;N;;;0394;;0394 -03B5;GREEK SMALL LETTER EPSILON;Ll;0;L;;;;;N;;;0395;;0395 -03B6;GREEK SMALL LETTER ZETA;Ll;0;L;;;;;N;;;0396;;0396 -03B7;GREEK SMALL LETTER ETA;Ll;0;L;;;;;N;;;0397;;0397 -03B8;GREEK SMALL LETTER THETA;Ll;0;L;;;;;N;;;0398;;0398 -03B9;GREEK SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0399;;0399 -03BA;GREEK SMALL LETTER KAPPA;Ll;0;L;;;;;N;;;039A;;039A -03BB;GREEK SMALL LETTER LAMDA;Ll;0;L;;;;;N;GREEK SMALL LETTER LAMBDA;;039B;;039B -03BC;GREEK SMALL LETTER MU;Ll;0;L;;;;;N;;;039C;;039C -03BD;GREEK SMALL LETTER NU;Ll;0;L;;;;;N;;;039D;;039D -03BE;GREEK SMALL LETTER XI;Ll;0;L;;;;;N;;;039E;;039E -03BF;GREEK SMALL LETTER OMICRON;Ll;0;L;;;;;N;;;039F;;039F -03C0;GREEK SMALL LETTER PI;Ll;0;L;;;;;N;;;03A0;;03A0 -03C1;GREEK SMALL LETTER RHO;Ll;0;L;;;;;N;;;03A1;;03A1 -03C2;GREEK SMALL LETTER FINAL SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3 -03C3;GREEK SMALL LETTER SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3 -03C4;GREEK SMALL LETTER TAU;Ll;0;L;;;;;N;;;03A4;;03A4 -03C5;GREEK SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;03A5;;03A5 -03C6;GREEK SMALL LETTER PHI;Ll;0;L;;;;;N;;;03A6;;03A6 -03C7;GREEK SMALL LETTER CHI;Ll;0;L;;;;;N;;;03A7;;03A7 -03C8;GREEK SMALL LETTER PSI;Ll;0;L;;;;;N;;;03A8;;03A8 -03C9;GREEK SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;03A9;;03A9 -03CA;GREEK SMALL LETTER IOTA WITH DIALYTIKA;Ll;0;L;03B9 0308;;;;N;GREEK SMALL LETTER IOTA DIAERESIS;;03AA;;03AA -03CB;GREEK SMALL LETTER UPSILON WITH DIALYTIKA;Ll;0;L;03C5 0308;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS;;03AB;;03AB -03CC;GREEK SMALL LETTER OMICRON WITH TONOS;Ll;0;L;03BF 0301;;;;N;GREEK SMALL LETTER OMICRON TONOS;;038C;;038C -03CD;GREEK SMALL LETTER UPSILON WITH TONOS;Ll;0;L;03C5 0301;;;;N;GREEK SMALL LETTER UPSILON TONOS;;038E;;038E -03CE;GREEK SMALL LETTER OMEGA WITH TONOS;Ll;0;L;03C9 0301;;;;N;GREEK SMALL LETTER OMEGA TONOS;;038F;;038F -03CF;GREEK CAPITAL KAI SYMBOL;Lu;0;L;;;;;N;;;;03D7; -03D0;GREEK BETA SYMBOL;Ll;0;L; 03B2;;;;N;GREEK SMALL LETTER CURLED BETA;;0392;;0392 -03D1;GREEK THETA SYMBOL;Ll;0;L; 03B8;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398 -03D2;GREEK UPSILON WITH HOOK SYMBOL;Lu;0;L; 03A5;;;;N;GREEK CAPITAL LETTER UPSILON HOOK;;;; -03D3;GREEK UPSILON WITH ACUTE AND HOOK SYMBOL;Lu;0;L;03D2 0301;;;;N;GREEK CAPITAL LETTER UPSILON HOOK TONOS;;;; -03D4;GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL;Lu;0;L;03D2 0308;;;;N;GREEK CAPITAL LETTER UPSILON HOOK DIAERESIS;;;; -03D5;GREEK PHI SYMBOL;Ll;0;L; 03C6;;;;N;GREEK SMALL LETTER SCRIPT PHI;;03A6;;03A6 -03D6;GREEK PI SYMBOL;Ll;0;L; 03C0;;;;N;GREEK SMALL LETTER OMEGA PI;;03A0;;03A0 -03D7;GREEK KAI SYMBOL;Ll;0;L;;;;;N;;;03CF;;03CF -03D8;GREEK LETTER ARCHAIC KOPPA;Lu;0;L;;;;;N;;;;03D9; -03D9;GREEK SMALL LETTER ARCHAIC KOPPA;Ll;0;L;;;;;N;;;03D8;;03D8 -03DA;GREEK LETTER STIGMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER STIGMA;;;03DB; -03DB;GREEK SMALL LETTER STIGMA;Ll;0;L;;;;;N;;;03DA;;03DA -03DC;GREEK LETTER DIGAMMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DIGAMMA;;;03DD; -03DD;GREEK SMALL LETTER DIGAMMA;Ll;0;L;;;;;N;;;03DC;;03DC -03DE;GREEK LETTER KOPPA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KOPPA;;;03DF; -03DF;GREEK SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;03DE;;03DE -03E0;GREEK LETTER SAMPI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SAMPI;;;03E1; -03E1;GREEK SMALL LETTER SAMPI;Ll;0;L;;;;;N;;;03E0;;03E0 -03E2;COPTIC CAPITAL LETTER SHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHEI;;;03E3; -03E3;COPTIC SMALL LETTER SHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER SHEI;;03E2;;03E2 -03E4;COPTIC CAPITAL LETTER FEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER FEI;;;03E5; -03E5;COPTIC SMALL LETTER FEI;Ll;0;L;;;;;N;GREEK SMALL LETTER FEI;;03E4;;03E4 -03E6;COPTIC CAPITAL LETTER KHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KHEI;;;03E7; -03E7;COPTIC SMALL LETTER KHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER KHEI;;03E6;;03E6 -03E8;COPTIC CAPITAL LETTER HORI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER HORI;;;03E9; -03E9;COPTIC SMALL LETTER HORI;Ll;0;L;;;;;N;GREEK SMALL LETTER HORI;;03E8;;03E8 -03EA;COPTIC CAPITAL LETTER GANGIA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER GANGIA;;;03EB; -03EB;COPTIC SMALL LETTER GANGIA;Ll;0;L;;;;;N;GREEK SMALL LETTER GANGIA;;03EA;;03EA -03EC;COPTIC CAPITAL LETTER SHIMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHIMA;;;03ED; -03ED;COPTIC SMALL LETTER SHIMA;Ll;0;L;;;;;N;GREEK SMALL LETTER SHIMA;;03EC;;03EC -03EE;COPTIC CAPITAL LETTER DEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DEI;;;03EF; -03EF;COPTIC SMALL LETTER DEI;Ll;0;L;;;;;N;GREEK SMALL LETTER DEI;;03EE;;03EE -03F0;GREEK KAPPA SYMBOL;Ll;0;L; 03BA;;;;N;GREEK SMALL LETTER SCRIPT KAPPA;;039A;;039A -03F1;GREEK RHO SYMBOL;Ll;0;L; 03C1;;;;N;GREEK SMALL LETTER TAILED RHO;;03A1;;03A1 -03F2;GREEK LUNATE SIGMA SYMBOL;Ll;0;L; 03C2;;;;N;GREEK SMALL LETTER LUNATE SIGMA;;03F9;;03F9 -03F3;GREEK LETTER YOT;Ll;0;L;;;;;N;;;;; -03F4;GREEK CAPITAL THETA SYMBOL;Lu;0;L; 0398;;;;N;;;;03B8; -03F5;GREEK LUNATE EPSILON SYMBOL;Ll;0;L; 03B5;;;;N;;;0395;;0395 -03F6;GREEK REVERSED LUNATE EPSILON SYMBOL;Sm;0;ON;;;;;N;;;;; -03F7;GREEK CAPITAL LETTER SHO;Lu;0;L;;;;;N;;;;03F8; -03F8;GREEK SMALL LETTER SHO;Ll;0;L;;;;;N;;;03F7;;03F7 -03F9;GREEK CAPITAL LUNATE SIGMA SYMBOL;Lu;0;L; 03A3;;;;N;;;;03F2; -03FA;GREEK CAPITAL LETTER SAN;Lu;0;L;;;;;N;;;;03FB; -03FB;GREEK SMALL LETTER SAN;Ll;0;L;;;;;N;;;03FA;;03FA -03FC;GREEK RHO WITH STROKE SYMBOL;Ll;0;L;;;;;N;;;;; -03FD;GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;037B; -03FE;GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;037C; -03FF;GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;037D; -0400;CYRILLIC CAPITAL LETTER IE WITH GRAVE;Lu;0;L;0415 0300;;;;N;;;;0450; -0401;CYRILLIC CAPITAL LETTER IO;Lu;0;L;0415 0308;;;;N;;;;0451; -0402;CYRILLIC CAPITAL LETTER DJE;Lu;0;L;;;;;N;;;;0452; -0403;CYRILLIC CAPITAL LETTER GJE;Lu;0;L;0413 0301;;;;N;;;;0453; -0404;CYRILLIC CAPITAL LETTER UKRAINIAN IE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER E;;;0454; -0405;CYRILLIC CAPITAL LETTER DZE;Lu;0;L;;;;;N;;;;0455; -0406;CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER I;;;0456; -0407;CYRILLIC CAPITAL LETTER YI;Lu;0;L;0406 0308;;;;N;;;;0457; -0408;CYRILLIC CAPITAL LETTER JE;Lu;0;L;;;;;N;;;;0458; -0409;CYRILLIC CAPITAL LETTER LJE;Lu;0;L;;;;;N;;;;0459; -040A;CYRILLIC CAPITAL LETTER NJE;Lu;0;L;;;;;N;;;;045A; -040B;CYRILLIC CAPITAL LETTER TSHE;Lu;0;L;;;;;N;;;;045B; -040C;CYRILLIC CAPITAL LETTER KJE;Lu;0;L;041A 0301;;;;N;;;;045C; -040D;CYRILLIC CAPITAL LETTER I WITH GRAVE;Lu;0;L;0418 0300;;;;N;;;;045D; -040E;CYRILLIC CAPITAL LETTER SHORT U;Lu;0;L;0423 0306;;;;N;;;;045E; -040F;CYRILLIC CAPITAL LETTER DZHE;Lu;0;L;;;;;N;;;;045F; -0410;CYRILLIC CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0430; -0411;CYRILLIC CAPITAL LETTER BE;Lu;0;L;;;;;N;;;;0431; -0412;CYRILLIC CAPITAL LETTER VE;Lu;0;L;;;;;N;;;;0432; -0413;CYRILLIC CAPITAL LETTER GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE;;;0433; -0414;CYRILLIC CAPITAL LETTER DE;Lu;0;L;;;;;N;;;;0434; -0415;CYRILLIC CAPITAL LETTER IE;Lu;0;L;;;;;N;;;;0435; -0416;CYRILLIC CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;0436; -0417;CYRILLIC CAPITAL LETTER ZE;Lu;0;L;;;;;N;;;;0437; -0418;CYRILLIC CAPITAL LETTER I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER II;;;0438; -0419;CYRILLIC CAPITAL LETTER SHORT I;Lu;0;L;0418 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT II;;;0439; -041A;CYRILLIC CAPITAL LETTER KA;Lu;0;L;;;;;N;;;;043A; -041B;CYRILLIC CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;043B; -041C;CYRILLIC CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;043C; -041D;CYRILLIC CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;043D; -041E;CYRILLIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;043E; -041F;CYRILLIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;043F; -0420;CYRILLIC CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;0440; -0421;CYRILLIC CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;0441; -0422;CYRILLIC CAPITAL LETTER TE;Lu;0;L;;;;;N;;;;0442; -0423;CYRILLIC CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0443; -0424;CYRILLIC CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;0444; -0425;CYRILLIC CAPITAL LETTER HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA;;;0445; -0426;CYRILLIC CAPITAL LETTER TSE;Lu;0;L;;;;;N;;;;0446; -0427;CYRILLIC CAPITAL LETTER CHE;Lu;0;L;;;;;N;;;;0447; -0428;CYRILLIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0448; -0429;CYRILLIC CAPITAL LETTER SHCHA;Lu;0;L;;;;;N;;;;0449; -042A;CYRILLIC CAPITAL LETTER HARD SIGN;Lu;0;L;;;;;N;;;;044A; -042B;CYRILLIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER YERI;;;044B; -042C;CYRILLIC CAPITAL LETTER SOFT SIGN;Lu;0;L;;;;;N;;;;044C; -042D;CYRILLIC CAPITAL LETTER E;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED E;;;044D; -042E;CYRILLIC CAPITAL LETTER YU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IU;;;044E; -042F;CYRILLIC CAPITAL LETTER YA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IA;;;044F; -0430;CYRILLIC SMALL LETTER A;Ll;0;L;;;;;N;;;0410;;0410 -0431;CYRILLIC SMALL LETTER BE;Ll;0;L;;;;;N;;;0411;;0411 -0432;CYRILLIC SMALL LETTER VE;Ll;0;L;;;;;N;;;0412;;0412 -0433;CYRILLIC SMALL LETTER GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE;;0413;;0413 -0434;CYRILLIC SMALL LETTER DE;Ll;0;L;;;;;N;;;0414;;0414 -0435;CYRILLIC SMALL LETTER IE;Ll;0;L;;;;;N;;;0415;;0415 -0436;CYRILLIC SMALL LETTER ZHE;Ll;0;L;;;;;N;;;0416;;0416 -0437;CYRILLIC SMALL LETTER ZE;Ll;0;L;;;;;N;;;0417;;0417 -0438;CYRILLIC SMALL LETTER I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER II;;0418;;0418 -0439;CYRILLIC SMALL LETTER SHORT I;Ll;0;L;0438 0306;;;;N;CYRILLIC SMALL LETTER SHORT II;;0419;;0419 -043A;CYRILLIC SMALL LETTER KA;Ll;0;L;;;;;N;;;041A;;041A -043B;CYRILLIC SMALL LETTER EL;Ll;0;L;;;;;N;;;041B;;041B -043C;CYRILLIC SMALL LETTER EM;Ll;0;L;;;;;N;;;041C;;041C -043D;CYRILLIC SMALL LETTER EN;Ll;0;L;;;;;N;;;041D;;041D -043E;CYRILLIC SMALL LETTER O;Ll;0;L;;;;;N;;;041E;;041E -043F;CYRILLIC SMALL LETTER PE;Ll;0;L;;;;;N;;;041F;;041F -0440;CYRILLIC SMALL LETTER ER;Ll;0;L;;;;;N;;;0420;;0420 -0441;CYRILLIC SMALL LETTER ES;Ll;0;L;;;;;N;;;0421;;0421 -0442;CYRILLIC SMALL LETTER TE;Ll;0;L;;;;;N;;;0422;;0422 -0443;CYRILLIC SMALL LETTER U;Ll;0;L;;;;;N;;;0423;;0423 -0444;CYRILLIC SMALL LETTER EF;Ll;0;L;;;;;N;;;0424;;0424 -0445;CYRILLIC SMALL LETTER HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA;;0425;;0425 -0446;CYRILLIC SMALL LETTER TSE;Ll;0;L;;;;;N;;;0426;;0426 -0447;CYRILLIC SMALL LETTER CHE;Ll;0;L;;;;;N;;;0427;;0427 -0448;CYRILLIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;0428;;0428 -0449;CYRILLIC SMALL LETTER SHCHA;Ll;0;L;;;;;N;;;0429;;0429 -044A;CYRILLIC SMALL LETTER HARD SIGN;Ll;0;L;;;;;N;;;042A;;042A -044B;CYRILLIC SMALL LETTER YERU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER YERI;;042B;;042B -044C;CYRILLIC SMALL LETTER SOFT SIGN;Ll;0;L;;;;;N;;;042C;;042C -044D;CYRILLIC SMALL LETTER E;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED E;;042D;;042D -044E;CYRILLIC SMALL LETTER YU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IU;;042E;;042E -044F;CYRILLIC SMALL LETTER YA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IA;;042F;;042F -0450;CYRILLIC SMALL LETTER IE WITH GRAVE;Ll;0;L;0435 0300;;;;N;;;0400;;0400 -0451;CYRILLIC SMALL LETTER IO;Ll;0;L;0435 0308;;;;N;;;0401;;0401 -0452;CYRILLIC SMALL LETTER DJE;Ll;0;L;;;;;N;;;0402;;0402 -0453;CYRILLIC SMALL LETTER GJE;Ll;0;L;0433 0301;;;;N;;;0403;;0403 -0454;CYRILLIC SMALL LETTER UKRAINIAN IE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER E;;0404;;0404 -0455;CYRILLIC SMALL LETTER DZE;Ll;0;L;;;;;N;;;0405;;0405 -0456;CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER I;;0406;;0406 -0457;CYRILLIC SMALL LETTER YI;Ll;0;L;0456 0308;;;;N;;;0407;;0407 -0458;CYRILLIC SMALL LETTER JE;Ll;0;L;;;;;N;;;0408;;0408 -0459;CYRILLIC SMALL LETTER LJE;Ll;0;L;;;;;N;;;0409;;0409 -045A;CYRILLIC SMALL LETTER NJE;Ll;0;L;;;;;N;;;040A;;040A -045B;CYRILLIC SMALL LETTER TSHE;Ll;0;L;;;;;N;;;040B;;040B -045C;CYRILLIC SMALL LETTER KJE;Ll;0;L;043A 0301;;;;N;;;040C;;040C -045D;CYRILLIC SMALL LETTER I WITH GRAVE;Ll;0;L;0438 0300;;;;N;;;040D;;040D -045E;CYRILLIC SMALL LETTER SHORT U;Ll;0;L;0443 0306;;;;N;;;040E;;040E -045F;CYRILLIC SMALL LETTER DZHE;Ll;0;L;;;;;N;;;040F;;040F -0460;CYRILLIC CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;0461; -0461;CYRILLIC SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;0460;;0460 -0462;CYRILLIC CAPITAL LETTER YAT;Lu;0;L;;;;;N;;;;0463; -0463;CYRILLIC SMALL LETTER YAT;Ll;0;L;;;;;N;;;0462;;0462 -0464;CYRILLIC CAPITAL LETTER IOTIFIED E;Lu;0;L;;;;;N;;;;0465; -0465;CYRILLIC SMALL LETTER IOTIFIED E;Ll;0;L;;;;;N;;;0464;;0464 -0466;CYRILLIC CAPITAL LETTER LITTLE YUS;Lu;0;L;;;;;N;;;;0467; -0467;CYRILLIC SMALL LETTER LITTLE YUS;Ll;0;L;;;;;N;;;0466;;0466 -0468;CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS;Lu;0;L;;;;;N;;;;0469; -0469;CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS;Ll;0;L;;;;;N;;;0468;;0468 -046A;CYRILLIC CAPITAL LETTER BIG YUS;Lu;0;L;;;;;N;;;;046B; -046B;CYRILLIC SMALL LETTER BIG YUS;Ll;0;L;;;;;N;;;046A;;046A -046C;CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS;Lu;0;L;;;;;N;;;;046D; -046D;CYRILLIC SMALL LETTER IOTIFIED BIG YUS;Ll;0;L;;;;;N;;;046C;;046C -046E;CYRILLIC CAPITAL LETTER KSI;Lu;0;L;;;;;N;;;;046F; -046F;CYRILLIC SMALL LETTER KSI;Ll;0;L;;;;;N;;;046E;;046E -0470;CYRILLIC CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;0471; -0471;CYRILLIC SMALL LETTER PSI;Ll;0;L;;;;;N;;;0470;;0470 -0472;CYRILLIC CAPITAL LETTER FITA;Lu;0;L;;;;;N;;;;0473; -0473;CYRILLIC SMALL LETTER FITA;Ll;0;L;;;;;N;;;0472;;0472 -0474;CYRILLIC CAPITAL LETTER IZHITSA;Lu;0;L;;;;;N;;;;0475; -0475;CYRILLIC SMALL LETTER IZHITSA;Ll;0;L;;;;;N;;;0474;;0474 -0476;CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Lu;0;L;0474 030F;;;;N;CYRILLIC CAPITAL LETTER IZHITSA DOUBLE GRAVE;;;0477; -0477;CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Ll;0;L;0475 030F;;;;N;CYRILLIC SMALL LETTER IZHITSA DOUBLE GRAVE;;0476;;0476 -0478;CYRILLIC CAPITAL LETTER UK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER UK DIGRAPH;;;0479; -0479;CYRILLIC SMALL LETTER UK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER UK DIGRAPH;;0478;;0478 -047A;CYRILLIC CAPITAL LETTER ROUND OMEGA;Lu;0;L;;;;;N;;;;047B; -047B;CYRILLIC SMALL LETTER ROUND OMEGA;Ll;0;L;;;;;N;;;047A;;047A -047C;CYRILLIC CAPITAL LETTER OMEGA WITH TITLO;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER OMEGA TITLO;;;047D; -047D;CYRILLIC SMALL LETTER OMEGA WITH TITLO;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER OMEGA TITLO;;047C;;047C -047E;CYRILLIC CAPITAL LETTER OT;Lu;0;L;;;;;N;;;;047F; -047F;CYRILLIC SMALL LETTER OT;Ll;0;L;;;;;N;;;047E;;047E -0480;CYRILLIC CAPITAL LETTER KOPPA;Lu;0;L;;;;;N;;;;0481; -0481;CYRILLIC SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;0480;;0480 -0482;CYRILLIC THOUSANDS SIGN;So;0;L;;;;;N;;;;; -0483;COMBINING CYRILLIC TITLO;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING TITLO;;;; -0484;COMBINING CYRILLIC PALATALIZATION;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PALATALIZATION;;;; -0485;COMBINING CYRILLIC DASIA PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING DASIA PNEUMATA;;;; -0486;COMBINING CYRILLIC PSILI PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PSILI PNEUMATA;;;; -0487;COMBINING CYRILLIC POKRYTIE;Mn;230;NSM;;;;;N;;;;; -0488;COMBINING CYRILLIC HUNDRED THOUSANDS SIGN;Me;0;NSM;;;;;N;;;;; -0489;COMBINING CYRILLIC MILLIONS SIGN;Me;0;NSM;;;;;N;;;;; -048A;CYRILLIC CAPITAL LETTER SHORT I WITH TAIL;Lu;0;L;;;;;N;;;;048B; -048B;CYRILLIC SMALL LETTER SHORT I WITH TAIL;Ll;0;L;;;;;N;;;048A;;048A -048C;CYRILLIC CAPITAL LETTER SEMISOFT SIGN;Lu;0;L;;;;;N;;;;048D; -048D;CYRILLIC SMALL LETTER SEMISOFT SIGN;Ll;0;L;;;;;N;;;048C;;048C -048E;CYRILLIC CAPITAL LETTER ER WITH TICK;Lu;0;L;;;;;N;;;;048F; -048F;CYRILLIC SMALL LETTER ER WITH TICK;Ll;0;L;;;;;N;;;048E;;048E -0490;CYRILLIC CAPITAL LETTER GHE WITH UPTURN;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE WITH UPTURN;;;0491; -0491;CYRILLIC SMALL LETTER GHE WITH UPTURN;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE WITH UPTURN;;0490;;0490 -0492;CYRILLIC CAPITAL LETTER GHE WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE BAR;;;0493; -0493;CYRILLIC SMALL LETTER GHE WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE BAR;;0492;;0492 -0494;CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE HOOK;;;0495; -0495;CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE HOOK;;0494;;0494 -0496;CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZHE WITH RIGHT DESCENDER;;;0497; -0497;CYRILLIC SMALL LETTER ZHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZHE WITH RIGHT DESCENDER;;0496;;0496 -0498;CYRILLIC CAPITAL LETTER ZE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZE CEDILLA;;;0499; -0499;CYRILLIC SMALL LETTER ZE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZE CEDILLA;;0498;;0498 -049A;CYRILLIC CAPITAL LETTER KA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA WITH RIGHT DESCENDER;;;049B; -049B;CYRILLIC SMALL LETTER KA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA WITH RIGHT DESCENDER;;049A;;049A -049C;CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA VERTICAL BAR;;;049D; -049D;CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA VERTICAL BAR;;049C;;049C -049E;CYRILLIC CAPITAL LETTER KA WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA BAR;;;049F; -049F;CYRILLIC SMALL LETTER KA WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA BAR;;049E;;049E -04A0;CYRILLIC CAPITAL LETTER BASHKIR KA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED GE KA;;;04A1; -04A1;CYRILLIC SMALL LETTER BASHKIR KA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED GE KA;;04A0;;04A0 -04A2;CYRILLIC CAPITAL LETTER EN WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN WITH RIGHT DESCENDER;;;04A3; -04A3;CYRILLIC SMALL LETTER EN WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN WITH RIGHT DESCENDER;;04A2;;04A2 -04A4;CYRILLIC CAPITAL LIGATURE EN GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN GE;;;04A5; -04A5;CYRILLIC SMALL LIGATURE EN GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN GE;;04A4;;04A4 -04A6;CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER PE HOOK;;;04A7; -04A7;CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER PE HOOK;;04A6;;04A6 -04A8;CYRILLIC CAPITAL LETTER ABKHASIAN HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER O HOOK;;;04A9; -04A9;CYRILLIC SMALL LETTER ABKHASIAN HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER O HOOK;;04A8;;04A8 -04AA;CYRILLIC CAPITAL LETTER ES WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ES CEDILLA;;;04AB; -04AB;CYRILLIC SMALL LETTER ES WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ES CEDILLA;;04AA;;04AA -04AC;CYRILLIC CAPITAL LETTER TE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE WITH RIGHT DESCENDER;;;04AD; -04AD;CYRILLIC SMALL LETTER TE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE WITH RIGHT DESCENDER;;04AC;;04AC -04AE;CYRILLIC CAPITAL LETTER STRAIGHT U;Lu;0;L;;;;;N;;;;04AF; -04AF;CYRILLIC SMALL LETTER STRAIGHT U;Ll;0;L;;;;;N;;;04AE;;04AE -04B0;CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER STRAIGHT U BAR;;;04B1; -04B1;CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER STRAIGHT U BAR;;04B0;;04B0 -04B2;CYRILLIC CAPITAL LETTER HA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA WITH RIGHT DESCENDER;;;04B3; -04B3;CYRILLIC SMALL LETTER HA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA WITH RIGHT DESCENDER;;04B2;;04B2 -04B4;CYRILLIC CAPITAL LIGATURE TE TSE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE TSE;;;04B5; -04B5;CYRILLIC SMALL LIGATURE TE TSE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE TSE;;04B4;;04B4 -04B6;CYRILLIC CAPITAL LETTER CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH RIGHT DESCENDER;;;04B7; -04B7;CYRILLIC SMALL LETTER CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH RIGHT DESCENDER;;04B6;;04B6 -04B8;CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE VERTICAL BAR;;;04B9; -04B9;CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE VERTICAL BAR;;04B8;;04B8 -04BA;CYRILLIC CAPITAL LETTER SHHA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER H;;;04BB; -04BB;CYRILLIC SMALL LETTER SHHA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER H;;04BA;;04BA -04BC;CYRILLIC CAPITAL LETTER ABKHASIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK;;;04BD; -04BD;CYRILLIC SMALL LETTER ABKHASIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK;;04BC;;04BC -04BE;CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK OGONEK;;;04BF; -04BF;CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK OGONEK;;04BE;;04BE -04C0;CYRILLIC LETTER PALOCHKA;Lu;0;L;;;;;N;CYRILLIC LETTER I;;;04CF; -04C1;CYRILLIC CAPITAL LETTER ZHE WITH BREVE;Lu;0;L;0416 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT ZHE;;;04C2; -04C2;CYRILLIC SMALL LETTER ZHE WITH BREVE;Ll;0;L;0436 0306;;;;N;CYRILLIC SMALL LETTER SHORT ZHE;;04C1;;04C1 -04C3;CYRILLIC CAPITAL LETTER KA WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA HOOK;;;04C4; -04C4;CYRILLIC SMALL LETTER KA WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA HOOK;;04C3;;04C3 -04C5;CYRILLIC CAPITAL LETTER EL WITH TAIL;Lu;0;L;;;;;N;;;;04C6; -04C6;CYRILLIC SMALL LETTER EL WITH TAIL;Ll;0;L;;;;;N;;;04C5;;04C5 -04C7;CYRILLIC CAPITAL LETTER EN WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN HOOK;;;04C8; -04C8;CYRILLIC SMALL LETTER EN WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN HOOK;;04C7;;04C7 -04C9;CYRILLIC CAPITAL LETTER EN WITH TAIL;Lu;0;L;;;;;N;;;;04CA; -04CA;CYRILLIC SMALL LETTER EN WITH TAIL;Ll;0;L;;;;;N;;;04C9;;04C9 -04CB;CYRILLIC CAPITAL LETTER KHAKASSIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH LEFT DESCENDER;;;04CC; -04CC;CYRILLIC SMALL LETTER KHAKASSIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH LEFT DESCENDER;;04CB;;04CB -04CD;CYRILLIC CAPITAL LETTER EM WITH TAIL;Lu;0;L;;;;;N;;;;04CE; -04CE;CYRILLIC SMALL LETTER EM WITH TAIL;Ll;0;L;;;;;N;;;04CD;;04CD -04CF;CYRILLIC SMALL LETTER PALOCHKA;Ll;0;L;;;;;N;;;04C0;;04C0 -04D0;CYRILLIC CAPITAL LETTER A WITH BREVE;Lu;0;L;0410 0306;;;;N;;;;04D1; -04D1;CYRILLIC SMALL LETTER A WITH BREVE;Ll;0;L;0430 0306;;;;N;;;04D0;;04D0 -04D2;CYRILLIC CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0410 0308;;;;N;;;;04D3; -04D3;CYRILLIC SMALL LETTER A WITH DIAERESIS;Ll;0;L;0430 0308;;;;N;;;04D2;;04D2 -04D4;CYRILLIC CAPITAL LIGATURE A IE;Lu;0;L;;;;;N;;;;04D5; -04D5;CYRILLIC SMALL LIGATURE A IE;Ll;0;L;;;;;N;;;04D4;;04D4 -04D6;CYRILLIC CAPITAL LETTER IE WITH BREVE;Lu;0;L;0415 0306;;;;N;;;;04D7; -04D7;CYRILLIC SMALL LETTER IE WITH BREVE;Ll;0;L;0435 0306;;;;N;;;04D6;;04D6 -04D8;CYRILLIC CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;04D9; -04D9;CYRILLIC SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;04D8;;04D8 -04DA;CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS;Lu;0;L;04D8 0308;;;;N;;;;04DB; -04DB;CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS;Ll;0;L;04D9 0308;;;;N;;;04DA;;04DA -04DC;CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS;Lu;0;L;0416 0308;;;;N;;;;04DD; -04DD;CYRILLIC SMALL LETTER ZHE WITH DIAERESIS;Ll;0;L;0436 0308;;;;N;;;04DC;;04DC -04DE;CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS;Lu;0;L;0417 0308;;;;N;;;;04DF; -04DF;CYRILLIC SMALL LETTER ZE WITH DIAERESIS;Ll;0;L;0437 0308;;;;N;;;04DE;;04DE -04E0;CYRILLIC CAPITAL LETTER ABKHASIAN DZE;Lu;0;L;;;;;N;;;;04E1; -04E1;CYRILLIC SMALL LETTER ABKHASIAN DZE;Ll;0;L;;;;;N;;;04E0;;04E0 -04E2;CYRILLIC CAPITAL LETTER I WITH MACRON;Lu;0;L;0418 0304;;;;N;;;;04E3; -04E3;CYRILLIC SMALL LETTER I WITH MACRON;Ll;0;L;0438 0304;;;;N;;;04E2;;04E2 -04E4;CYRILLIC CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0418 0308;;;;N;;;;04E5; -04E5;CYRILLIC SMALL LETTER I WITH DIAERESIS;Ll;0;L;0438 0308;;;;N;;;04E4;;04E4 -04E6;CYRILLIC CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;041E 0308;;;;N;;;;04E7; -04E7;CYRILLIC SMALL LETTER O WITH DIAERESIS;Ll;0;L;043E 0308;;;;N;;;04E6;;04E6 -04E8;CYRILLIC CAPITAL LETTER BARRED O;Lu;0;L;;;;;N;;;;04E9; -04E9;CYRILLIC SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;04E8;;04E8 -04EA;CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS;Lu;0;L;04E8 0308;;;;N;;;;04EB; -04EB;CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS;Ll;0;L;04E9 0308;;;;N;;;04EA;;04EA -04EC;CYRILLIC CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;042D 0308;;;;N;;;;04ED; -04ED;CYRILLIC SMALL LETTER E WITH DIAERESIS;Ll;0;L;044D 0308;;;;N;;;04EC;;04EC -04EE;CYRILLIC CAPITAL LETTER U WITH MACRON;Lu;0;L;0423 0304;;;;N;;;;04EF; -04EF;CYRILLIC SMALL LETTER U WITH MACRON;Ll;0;L;0443 0304;;;;N;;;04EE;;04EE -04F0;CYRILLIC CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0423 0308;;;;N;;;;04F1; -04F1;CYRILLIC SMALL LETTER U WITH DIAERESIS;Ll;0;L;0443 0308;;;;N;;;04F0;;04F0 -04F2;CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0423 030B;;;;N;;;;04F3; -04F3;CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0443 030B;;;;N;;;04F2;;04F2 -04F4;CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS;Lu;0;L;0427 0308;;;;N;;;;04F5; -04F5;CYRILLIC SMALL LETTER CHE WITH DIAERESIS;Ll;0;L;0447 0308;;;;N;;;04F4;;04F4 -04F6;CYRILLIC CAPITAL LETTER GHE WITH DESCENDER;Lu;0;L;;;;;N;;;;04F7; -04F7;CYRILLIC SMALL LETTER GHE WITH DESCENDER;Ll;0;L;;;;;N;;;04F6;;04F6 -04F8;CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS;Lu;0;L;042B 0308;;;;N;;;;04F9; -04F9;CYRILLIC SMALL LETTER YERU WITH DIAERESIS;Ll;0;L;044B 0308;;;;N;;;04F8;;04F8 -04FA;CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK;Lu;0;L;;;;;N;;;;04FB; -04FB;CYRILLIC SMALL LETTER GHE WITH STROKE AND HOOK;Ll;0;L;;;;;N;;;04FA;;04FA -04FC;CYRILLIC CAPITAL LETTER HA WITH HOOK;Lu;0;L;;;;;N;;;;04FD; -04FD;CYRILLIC SMALL LETTER HA WITH HOOK;Ll;0;L;;;;;N;;;04FC;;04FC -04FE;CYRILLIC CAPITAL LETTER HA WITH STROKE;Lu;0;L;;;;;N;;;;04FF; -04FF;CYRILLIC SMALL LETTER HA WITH STROKE;Ll;0;L;;;;;N;;;04FE;;04FE -0500;CYRILLIC CAPITAL LETTER KOMI DE;Lu;0;L;;;;;N;;;;0501; -0501;CYRILLIC SMALL LETTER KOMI DE;Ll;0;L;;;;;N;;;0500;;0500 -0502;CYRILLIC CAPITAL LETTER KOMI DJE;Lu;0;L;;;;;N;;;;0503; -0503;CYRILLIC SMALL LETTER KOMI DJE;Ll;0;L;;;;;N;;;0502;;0502 -0504;CYRILLIC CAPITAL LETTER KOMI ZJE;Lu;0;L;;;;;N;;;;0505; -0505;CYRILLIC SMALL LETTER KOMI ZJE;Ll;0;L;;;;;N;;;0504;;0504 -0506;CYRILLIC CAPITAL LETTER KOMI DZJE;Lu;0;L;;;;;N;;;;0507; -0507;CYRILLIC SMALL LETTER KOMI DZJE;Ll;0;L;;;;;N;;;0506;;0506 -0508;CYRILLIC CAPITAL LETTER KOMI LJE;Lu;0;L;;;;;N;;;;0509; -0509;CYRILLIC SMALL LETTER KOMI LJE;Ll;0;L;;;;;N;;;0508;;0508 -050A;CYRILLIC CAPITAL LETTER KOMI NJE;Lu;0;L;;;;;N;;;;050B; -050B;CYRILLIC SMALL LETTER KOMI NJE;Ll;0;L;;;;;N;;;050A;;050A -050C;CYRILLIC CAPITAL LETTER KOMI SJE;Lu;0;L;;;;;N;;;;050D; -050D;CYRILLIC SMALL LETTER KOMI SJE;Ll;0;L;;;;;N;;;050C;;050C -050E;CYRILLIC CAPITAL LETTER KOMI TJE;Lu;0;L;;;;;N;;;;050F; -050F;CYRILLIC SMALL LETTER KOMI TJE;Ll;0;L;;;;;N;;;050E;;050E -0510;CYRILLIC CAPITAL LETTER REVERSED ZE;Lu;0;L;;;;;N;;;;0511; -0511;CYRILLIC SMALL LETTER REVERSED ZE;Ll;0;L;;;;;N;;;0510;;0510 -0512;CYRILLIC CAPITAL LETTER EL WITH HOOK;Lu;0;L;;;;;N;;;;0513; -0513;CYRILLIC SMALL LETTER EL WITH HOOK;Ll;0;L;;;;;N;;;0512;;0512 -0514;CYRILLIC CAPITAL LETTER LHA;Lu;0;L;;;;;N;;;;0515; -0515;CYRILLIC SMALL LETTER LHA;Ll;0;L;;;;;N;;;0514;;0514 -0516;CYRILLIC CAPITAL LETTER RHA;Lu;0;L;;;;;N;;;;0517; -0517;CYRILLIC SMALL LETTER RHA;Ll;0;L;;;;;N;;;0516;;0516 -0518;CYRILLIC CAPITAL LETTER YAE;Lu;0;L;;;;;N;;;;0519; -0519;CYRILLIC SMALL LETTER YAE;Ll;0;L;;;;;N;;;0518;;0518 -051A;CYRILLIC CAPITAL LETTER QA;Lu;0;L;;;;;N;;;;051B; -051B;CYRILLIC SMALL LETTER QA;Ll;0;L;;;;;N;;;051A;;051A -051C;CYRILLIC CAPITAL LETTER WE;Lu;0;L;;;;;N;;;;051D; -051D;CYRILLIC SMALL LETTER WE;Ll;0;L;;;;;N;;;051C;;051C -051E;CYRILLIC CAPITAL LETTER ALEUT KA;Lu;0;L;;;;;N;;;;051F; -051F;CYRILLIC SMALL LETTER ALEUT KA;Ll;0;L;;;;;N;;;051E;;051E -0520;CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK;Lu;0;L;;;;;N;;;;0521; -0521;CYRILLIC SMALL LETTER EL WITH MIDDLE HOOK;Ll;0;L;;;;;N;;;0520;;0520 -0522;CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK;Lu;0;L;;;;;N;;;;0523; -0523;CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK;Ll;0;L;;;;;N;;;0522;;0522 -0524;CYRILLIC CAPITAL LETTER PE WITH DESCENDER;Lu;0;L;;;;;N;;;;0525; -0525;CYRILLIC SMALL LETTER PE WITH DESCENDER;Ll;0;L;;;;;N;;;0524;;0524 -0531;ARMENIAN CAPITAL LETTER AYB;Lu;0;L;;;;;N;;;;0561; -0532;ARMENIAN CAPITAL LETTER BEN;Lu;0;L;;;;;N;;;;0562; -0533;ARMENIAN CAPITAL LETTER GIM;Lu;0;L;;;;;N;;;;0563; -0534;ARMENIAN CAPITAL LETTER DA;Lu;0;L;;;;;N;;;;0564; -0535;ARMENIAN CAPITAL LETTER ECH;Lu;0;L;;;;;N;;;;0565; -0536;ARMENIAN CAPITAL LETTER ZA;Lu;0;L;;;;;N;;;;0566; -0537;ARMENIAN CAPITAL LETTER EH;Lu;0;L;;;;;N;;;;0567; -0538;ARMENIAN CAPITAL LETTER ET;Lu;0;L;;;;;N;;;;0568; -0539;ARMENIAN CAPITAL LETTER TO;Lu;0;L;;;;;N;;;;0569; -053A;ARMENIAN CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;056A; -053B;ARMENIAN CAPITAL LETTER INI;Lu;0;L;;;;;N;;;;056B; -053C;ARMENIAN CAPITAL LETTER LIWN;Lu;0;L;;;;;N;;;;056C; -053D;ARMENIAN CAPITAL LETTER XEH;Lu;0;L;;;;;N;;;;056D; -053E;ARMENIAN CAPITAL LETTER CA;Lu;0;L;;;;;N;;;;056E; -053F;ARMENIAN CAPITAL LETTER KEN;Lu;0;L;;;;;N;;;;056F; -0540;ARMENIAN CAPITAL LETTER HO;Lu;0;L;;;;;N;;;;0570; -0541;ARMENIAN CAPITAL LETTER JA;Lu;0;L;;;;;N;;;;0571; -0542;ARMENIAN CAPITAL LETTER GHAD;Lu;0;L;;;;;N;ARMENIAN CAPITAL LETTER LAD;;;0572; -0543;ARMENIAN CAPITAL LETTER CHEH;Lu;0;L;;;;;N;;;;0573; -0544;ARMENIAN CAPITAL LETTER MEN;Lu;0;L;;;;;N;;;;0574; -0545;ARMENIAN CAPITAL LETTER YI;Lu;0;L;;;;;N;;;;0575; -0546;ARMENIAN CAPITAL LETTER NOW;Lu;0;L;;;;;N;;;;0576; -0547;ARMENIAN CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0577; -0548;ARMENIAN CAPITAL LETTER VO;Lu;0;L;;;;;N;;;;0578; -0549;ARMENIAN CAPITAL LETTER CHA;Lu;0;L;;;;;N;;;;0579; -054A;ARMENIAN CAPITAL LETTER PEH;Lu;0;L;;;;;N;;;;057A; -054B;ARMENIAN CAPITAL LETTER JHEH;Lu;0;L;;;;;N;;;;057B; -054C;ARMENIAN CAPITAL LETTER RA;Lu;0;L;;;;;N;;;;057C; -054D;ARMENIAN CAPITAL LETTER SEH;Lu;0;L;;;;;N;;;;057D; -054E;ARMENIAN CAPITAL LETTER VEW;Lu;0;L;;;;;N;;;;057E; -054F;ARMENIAN CAPITAL LETTER TIWN;Lu;0;L;;;;;N;;;;057F; -0550;ARMENIAN CAPITAL LETTER REH;Lu;0;L;;;;;N;;;;0580; -0551;ARMENIAN CAPITAL LETTER CO;Lu;0;L;;;;;N;;;;0581; -0552;ARMENIAN CAPITAL LETTER YIWN;Lu;0;L;;;;;N;;;;0582; -0553;ARMENIAN CAPITAL LETTER PIWR;Lu;0;L;;;;;N;;;;0583; -0554;ARMENIAN CAPITAL LETTER KEH;Lu;0;L;;;;;N;;;;0584; -0555;ARMENIAN CAPITAL LETTER OH;Lu;0;L;;;;;N;;;;0585; -0556;ARMENIAN CAPITAL LETTER FEH;Lu;0;L;;;;;N;;;;0586; -0559;ARMENIAN MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;; -055A;ARMENIAN APOSTROPHE;Po;0;L;;;;;N;ARMENIAN MODIFIER LETTER RIGHT HALF RING;;;; -055B;ARMENIAN EMPHASIS MARK;Po;0;L;;;;;N;;;;; -055C;ARMENIAN EXCLAMATION MARK;Po;0;L;;;;;N;;;;; -055D;ARMENIAN COMMA;Po;0;L;;;;;N;;;;; -055E;ARMENIAN QUESTION MARK;Po;0;L;;;;;N;;;;; -055F;ARMENIAN ABBREVIATION MARK;Po;0;L;;;;;N;;;;; -0561;ARMENIAN SMALL LETTER AYB;Ll;0;L;;;;;N;;;0531;;0531 -0562;ARMENIAN SMALL LETTER BEN;Ll;0;L;;;;;N;;;0532;;0532 -0563;ARMENIAN SMALL LETTER GIM;Ll;0;L;;;;;N;;;0533;;0533 -0564;ARMENIAN SMALL LETTER DA;Ll;0;L;;;;;N;;;0534;;0534 -0565;ARMENIAN SMALL LETTER ECH;Ll;0;L;;;;;N;;;0535;;0535 -0566;ARMENIAN SMALL LETTER ZA;Ll;0;L;;;;;N;;;0536;;0536 -0567;ARMENIAN SMALL LETTER EH;Ll;0;L;;;;;N;;;0537;;0537 -0568;ARMENIAN SMALL LETTER ET;Ll;0;L;;;;;N;;;0538;;0538 -0569;ARMENIAN SMALL LETTER TO;Ll;0;L;;;;;N;;;0539;;0539 -056A;ARMENIAN SMALL LETTER ZHE;Ll;0;L;;;;;N;;;053A;;053A -056B;ARMENIAN SMALL LETTER INI;Ll;0;L;;;;;N;;;053B;;053B -056C;ARMENIAN SMALL LETTER LIWN;Ll;0;L;;;;;N;;;053C;;053C -056D;ARMENIAN SMALL LETTER XEH;Ll;0;L;;;;;N;;;053D;;053D -056E;ARMENIAN SMALL LETTER CA;Ll;0;L;;;;;N;;;053E;;053E -056F;ARMENIAN SMALL LETTER KEN;Ll;0;L;;;;;N;;;053F;;053F -0570;ARMENIAN SMALL LETTER HO;Ll;0;L;;;;;N;;;0540;;0540 -0571;ARMENIAN SMALL LETTER JA;Ll;0;L;;;;;N;;;0541;;0541 -0572;ARMENIAN SMALL LETTER GHAD;Ll;0;L;;;;;N;ARMENIAN SMALL LETTER LAD;;0542;;0542 -0573;ARMENIAN SMALL LETTER CHEH;Ll;0;L;;;;;N;;;0543;;0543 -0574;ARMENIAN SMALL LETTER MEN;Ll;0;L;;;;;N;;;0544;;0544 -0575;ARMENIAN SMALL LETTER YI;Ll;0;L;;;;;N;;;0545;;0545 -0576;ARMENIAN SMALL LETTER NOW;Ll;0;L;;;;;N;;;0546;;0546 -0577;ARMENIAN SMALL LETTER SHA;Ll;0;L;;;;;N;;;0547;;0547 -0578;ARMENIAN SMALL LETTER VO;Ll;0;L;;;;;N;;;0548;;0548 -0579;ARMENIAN SMALL LETTER CHA;Ll;0;L;;;;;N;;;0549;;0549 -057A;ARMENIAN SMALL LETTER PEH;Ll;0;L;;;;;N;;;054A;;054A -057B;ARMENIAN SMALL LETTER JHEH;Ll;0;L;;;;;N;;;054B;;054B -057C;ARMENIAN SMALL LETTER RA;Ll;0;L;;;;;N;;;054C;;054C -057D;ARMENIAN SMALL LETTER SEH;Ll;0;L;;;;;N;;;054D;;054D -057E;ARMENIAN SMALL LETTER VEW;Ll;0;L;;;;;N;;;054E;;054E -057F;ARMENIAN SMALL LETTER TIWN;Ll;0;L;;;;;N;;;054F;;054F -0580;ARMENIAN SMALL LETTER REH;Ll;0;L;;;;;N;;;0550;;0550 -0581;ARMENIAN SMALL LETTER CO;Ll;0;L;;;;;N;;;0551;;0551 -0582;ARMENIAN SMALL LETTER YIWN;Ll;0;L;;;;;N;;;0552;;0552 -0583;ARMENIAN SMALL LETTER PIWR;Ll;0;L;;;;;N;;;0553;;0553 -0584;ARMENIAN SMALL LETTER KEH;Ll;0;L;;;;;N;;;0554;;0554 -0585;ARMENIAN SMALL LETTER OH;Ll;0;L;;;;;N;;;0555;;0555 -0586;ARMENIAN SMALL LETTER FEH;Ll;0;L;;;;;N;;;0556;;0556 -0587;ARMENIAN SMALL LIGATURE ECH YIWN;Ll;0;L; 0565 0582;;;;N;;;;; -0589;ARMENIAN FULL STOP;Po;0;L;;;;;N;ARMENIAN PERIOD;;;; -058A;ARMENIAN HYPHEN;Pd;0;ON;;;;;N;;;;; -0591;HEBREW ACCENT ETNAHTA;Mn;220;NSM;;;;;N;;;;; -0592;HEBREW ACCENT SEGOL;Mn;230;NSM;;;;;N;;;;; -0593;HEBREW ACCENT SHALSHELET;Mn;230;NSM;;;;;N;;;;; -0594;HEBREW ACCENT ZAQEF QATAN;Mn;230;NSM;;;;;N;;;;; -0595;HEBREW ACCENT ZAQEF GADOL;Mn;230;NSM;;;;;N;;;;; -0596;HEBREW ACCENT TIPEHA;Mn;220;NSM;;;;;N;;;;; -0597;HEBREW ACCENT REVIA;Mn;230;NSM;;;;;N;;;;; -0598;HEBREW ACCENT ZARQA;Mn;230;NSM;;;;;N;;;;; -0599;HEBREW ACCENT PASHTA;Mn;230;NSM;;;;;N;;;;; -059A;HEBREW ACCENT YETIV;Mn;222;NSM;;;;;N;;;;; -059B;HEBREW ACCENT TEVIR;Mn;220;NSM;;;;;N;;;;; -059C;HEBREW ACCENT GERESH;Mn;230;NSM;;;;;N;;;;; -059D;HEBREW ACCENT GERESH MUQDAM;Mn;230;NSM;;;;;N;;;;; -059E;HEBREW ACCENT GERSHAYIM;Mn;230;NSM;;;;;N;;;;; -059F;HEBREW ACCENT QARNEY PARA;Mn;230;NSM;;;;;N;;;;; -05A0;HEBREW ACCENT TELISHA GEDOLA;Mn;230;NSM;;;;;N;;;;; -05A1;HEBREW ACCENT PAZER;Mn;230;NSM;;;;;N;;;;; -05A2;HEBREW ACCENT ATNAH HAFUKH;Mn;220;NSM;;;;;N;;;;; -05A3;HEBREW ACCENT MUNAH;Mn;220;NSM;;;;;N;;;;; -05A4;HEBREW ACCENT MAHAPAKH;Mn;220;NSM;;;;;N;;;;; -05A5;HEBREW ACCENT MERKHA;Mn;220;NSM;;;;;N;;;;; -05A6;HEBREW ACCENT MERKHA KEFULA;Mn;220;NSM;;;;;N;;;;; -05A7;HEBREW ACCENT DARGA;Mn;220;NSM;;;;;N;;;;; -05A8;HEBREW ACCENT QADMA;Mn;230;NSM;;;;;N;;;;; -05A9;HEBREW ACCENT TELISHA QETANA;Mn;230;NSM;;;;;N;;;;; -05AA;HEBREW ACCENT YERAH BEN YOMO;Mn;220;NSM;;;;;N;;;;; -05AB;HEBREW ACCENT OLE;Mn;230;NSM;;;;;N;;;;; -05AC;HEBREW ACCENT ILUY;Mn;230;NSM;;;;;N;;;;; -05AD;HEBREW ACCENT DEHI;Mn;222;NSM;;;;;N;;;;; -05AE;HEBREW ACCENT ZINOR;Mn;228;NSM;;;;;N;;;;; -05AF;HEBREW MARK MASORA CIRCLE;Mn;230;NSM;;;;;N;;;;; -05B0;HEBREW POINT SHEVA;Mn;10;NSM;;;;;N;;;;; -05B1;HEBREW POINT HATAF SEGOL;Mn;11;NSM;;;;;N;;;;; -05B2;HEBREW POINT HATAF PATAH;Mn;12;NSM;;;;;N;;;;; -05B3;HEBREW POINT HATAF QAMATS;Mn;13;NSM;;;;;N;;;;; -05B4;HEBREW POINT HIRIQ;Mn;14;NSM;;;;;N;;;;; -05B5;HEBREW POINT TSERE;Mn;15;NSM;;;;;N;;;;; -05B6;HEBREW POINT SEGOL;Mn;16;NSM;;;;;N;;;;; -05B7;HEBREW POINT PATAH;Mn;17;NSM;;;;;N;;;;; -05B8;HEBREW POINT QAMATS;Mn;18;NSM;;;;;N;;;;; -05B9;HEBREW POINT HOLAM;Mn;19;NSM;;;;;N;;;;; -05BA;HEBREW POINT HOLAM HASER FOR VAV;Mn;19;NSM;;;;;N;;;;; -05BB;HEBREW POINT QUBUTS;Mn;20;NSM;;;;;N;;;;; -05BC;HEBREW POINT DAGESH OR MAPIQ;Mn;21;NSM;;;;;N;HEBREW POINT DAGESH;;;; -05BD;HEBREW POINT METEG;Mn;22;NSM;;;;;N;;;;; -05BE;HEBREW PUNCTUATION MAQAF;Pd;0;R;;;;;N;;;;; -05BF;HEBREW POINT RAFE;Mn;23;NSM;;;;;N;;;;; -05C0;HEBREW PUNCTUATION PASEQ;Po;0;R;;;;;N;HEBREW POINT PASEQ;;;; -05C1;HEBREW POINT SHIN DOT;Mn;24;NSM;;;;;N;;;;; -05C2;HEBREW POINT SIN DOT;Mn;25;NSM;;;;;N;;;;; -05C3;HEBREW PUNCTUATION SOF PASUQ;Po;0;R;;;;;N;;;;; -05C4;HEBREW MARK UPPER DOT;Mn;230;NSM;;;;;N;;;;; -05C5;HEBREW MARK LOWER DOT;Mn;220;NSM;;;;;N;;;;; -05C6;HEBREW PUNCTUATION NUN HAFUKHA;Po;0;R;;;;;N;;;;; -05C7;HEBREW POINT QAMATS QATAN;Mn;18;NSM;;;;;N;;;;; -05D0;HEBREW LETTER ALEF;Lo;0;R;;;;;N;;;;; -05D1;HEBREW LETTER BET;Lo;0;R;;;;;N;;;;; -05D2;HEBREW LETTER GIMEL;Lo;0;R;;;;;N;;;;; -05D3;HEBREW LETTER DALET;Lo;0;R;;;;;N;;;;; -05D4;HEBREW LETTER HE;Lo;0;R;;;;;N;;;;; -05D5;HEBREW LETTER VAV;Lo;0;R;;;;;N;;;;; -05D6;HEBREW LETTER ZAYIN;Lo;0;R;;;;;N;;;;; -05D7;HEBREW LETTER HET;Lo;0;R;;;;;N;;;;; -05D8;HEBREW LETTER TET;Lo;0;R;;;;;N;;;;; -05D9;HEBREW LETTER YOD;Lo;0;R;;;;;N;;;;; -05DA;HEBREW LETTER FINAL KAF;Lo;0;R;;;;;N;;;;; -05DB;HEBREW LETTER KAF;Lo;0;R;;;;;N;;;;; -05DC;HEBREW LETTER LAMED;Lo;0;R;;;;;N;;;;; -05DD;HEBREW LETTER FINAL MEM;Lo;0;R;;;;;N;;;;; -05DE;HEBREW LETTER MEM;Lo;0;R;;;;;N;;;;; -05DF;HEBREW LETTER FINAL NUN;Lo;0;R;;;;;N;;;;; -05E0;HEBREW LETTER NUN;Lo;0;R;;;;;N;;;;; -05E1;HEBREW LETTER SAMEKH;Lo;0;R;;;;;N;;;;; -05E2;HEBREW LETTER AYIN;Lo;0;R;;;;;N;;;;; -05E3;HEBREW LETTER FINAL PE;Lo;0;R;;;;;N;;;;; -05E4;HEBREW LETTER PE;Lo;0;R;;;;;N;;;;; -05E5;HEBREW LETTER FINAL TSADI;Lo;0;R;;;;;N;;;;; -05E6;HEBREW LETTER TSADI;Lo;0;R;;;;;N;;;;; -05E7;HEBREW LETTER QOF;Lo;0;R;;;;;N;;;;; -05E8;HEBREW LETTER RESH;Lo;0;R;;;;;N;;;;; -05E9;HEBREW LETTER SHIN;Lo;0;R;;;;;N;;;;; -05EA;HEBREW LETTER TAV;Lo;0;R;;;;;N;;;;; -05F0;HEBREW LIGATURE YIDDISH DOUBLE VAV;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE VAV;;;; -05F1;HEBREW LIGATURE YIDDISH VAV YOD;Lo;0;R;;;;;N;HEBREW LETTER VAV YOD;;;; -05F2;HEBREW LIGATURE YIDDISH DOUBLE YOD;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE YOD;;;; -05F3;HEBREW PUNCTUATION GERESH;Po;0;R;;;;;N;;;;; -05F4;HEBREW PUNCTUATION GERSHAYIM;Po;0;R;;;;;N;;;;; -0600;ARABIC NUMBER SIGN;Cf;0;AN;;;;;N;;;;; -0601;ARABIC SIGN SANAH;Cf;0;AN;;;;;N;;;;; -0602;ARABIC FOOTNOTE MARKER;Cf;0;AN;;;;;N;;;;; -0603;ARABIC SIGN SAFHA;Cf;0;AN;;;;;N;;;;; -0606;ARABIC-INDIC CUBE ROOT;Sm;0;ON;;;;;N;;;;; -0607;ARABIC-INDIC FOURTH ROOT;Sm;0;ON;;;;;N;;;;; -0608;ARABIC RAY;Sm;0;AL;;;;;N;;;;; -0609;ARABIC-INDIC PER MILLE SIGN;Po;0;ET;;;;;N;;;;; -060A;ARABIC-INDIC PER TEN THOUSAND SIGN;Po;0;ET;;;;;N;;;;; -060B;AFGHANI SIGN;Sc;0;AL;;;;;N;;;;; -060C;ARABIC COMMA;Po;0;CS;;;;;N;;;;; -060D;ARABIC DATE SEPARATOR;Po;0;AL;;;;;N;;;;; -060E;ARABIC POETIC VERSE SIGN;So;0;ON;;;;;N;;;;; -060F;ARABIC SIGN MISRA;So;0;ON;;;;;N;;;;; -0610;ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM;Mn;230;NSM;;;;;N;;;;; -0611;ARABIC SIGN ALAYHE ASSALLAM;Mn;230;NSM;;;;;N;;;;; -0612;ARABIC SIGN RAHMATULLAH ALAYHE;Mn;230;NSM;;;;;N;;;;; -0613;ARABIC SIGN RADI ALLAHOU ANHU;Mn;230;NSM;;;;;N;;;;; -0614;ARABIC SIGN TAKHALLUS;Mn;230;NSM;;;;;N;;;;; -0615;ARABIC SMALL HIGH TAH;Mn;230;NSM;;;;;N;;;;; -0616;ARABIC SMALL HIGH LIGATURE ALEF WITH LAM WITH YEH;Mn;230;NSM;;;;;N;;;;; -0617;ARABIC SMALL HIGH ZAIN;Mn;230;NSM;;;;;N;;;;; -0618;ARABIC SMALL FATHA;Mn;30;NSM;;;;;N;;;;; -0619;ARABIC SMALL DAMMA;Mn;31;NSM;;;;;N;;;;; -061A;ARABIC SMALL KASRA;Mn;32;NSM;;;;;N;;;;; -061B;ARABIC SEMICOLON;Po;0;AL;;;;;N;;;;; -061E;ARABIC TRIPLE DOT PUNCTUATION MARK;Po;0;AL;;;;;N;;;;; -061F;ARABIC QUESTION MARK;Po;0;AL;;;;;N;;;;; -0621;ARABIC LETTER HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH;;;; -0622;ARABIC LETTER ALEF WITH MADDA ABOVE;Lo;0;AL;0627 0653;;;;N;ARABIC LETTER MADDAH ON ALEF;;;; -0623;ARABIC LETTER ALEF WITH HAMZA ABOVE;Lo;0;AL;0627 0654;;;;N;ARABIC LETTER HAMZAH ON ALEF;;;; -0624;ARABIC LETTER WAW WITH HAMZA ABOVE;Lo;0;AL;0648 0654;;;;N;ARABIC LETTER HAMZAH ON WAW;;;; -0625;ARABIC LETTER ALEF WITH HAMZA BELOW;Lo;0;AL;0627 0655;;;;N;ARABIC LETTER HAMZAH UNDER ALEF;;;; -0626;ARABIC LETTER YEH WITH HAMZA ABOVE;Lo;0;AL;064A 0654;;;;N;ARABIC LETTER HAMZAH ON YA;;;; -0627;ARABIC LETTER ALEF;Lo;0;AL;;;;;N;;;;; -0628;ARABIC LETTER BEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA;;;; -0629;ARABIC LETTER TEH MARBUTA;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH;;;; -062A;ARABIC LETTER TEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA;;;; -062B;ARABIC LETTER THEH;Lo;0;AL;;;;;N;ARABIC LETTER THAA;;;; -062C;ARABIC LETTER JEEM;Lo;0;AL;;;;;N;;;;; -062D;ARABIC LETTER HAH;Lo;0;AL;;;;;N;ARABIC LETTER HAA;;;; -062E;ARABIC LETTER KHAH;Lo;0;AL;;;;;N;ARABIC LETTER KHAA;;;; -062F;ARABIC LETTER DAL;Lo;0;AL;;;;;N;;;;; -0630;ARABIC LETTER THAL;Lo;0;AL;;;;;N;;;;; -0631;ARABIC LETTER REH;Lo;0;AL;;;;;N;ARABIC LETTER RA;;;; -0632;ARABIC LETTER ZAIN;Lo;0;AL;;;;;N;;;;; -0633;ARABIC LETTER SEEN;Lo;0;AL;;;;;N;;;;; -0634;ARABIC LETTER SHEEN;Lo;0;AL;;;;;N;;;;; -0635;ARABIC LETTER SAD;Lo;0;AL;;;;;N;;;;; -0636;ARABIC LETTER DAD;Lo;0;AL;;;;;N;;;;; -0637;ARABIC LETTER TAH;Lo;0;AL;;;;;N;;;;; -0638;ARABIC LETTER ZAH;Lo;0;AL;;;;;N;ARABIC LETTER DHAH;;;; -0639;ARABIC LETTER AIN;Lo;0;AL;;;;;N;;;;; -063A;ARABIC LETTER GHAIN;Lo;0;AL;;;;;N;;;;; -063B;ARABIC LETTER KEHEH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -063C;ARABIC LETTER KEHEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;; -063D;ARABIC LETTER FARSI YEH WITH INVERTED V;Lo;0;AL;;;;;N;;;;; -063E;ARABIC LETTER FARSI YEH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -063F;ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -0640;ARABIC TATWEEL;Lm;0;AL;;;;;N;;;;; -0641;ARABIC LETTER FEH;Lo;0;AL;;;;;N;ARABIC LETTER FA;;;; -0642;ARABIC LETTER QAF;Lo;0;AL;;;;;N;;;;; -0643;ARABIC LETTER KAF;Lo;0;AL;;;;;N;ARABIC LETTER CAF;;;; -0644;ARABIC LETTER LAM;Lo;0;AL;;;;;N;;;;; -0645;ARABIC LETTER MEEM;Lo;0;AL;;;;;N;;;;; -0646;ARABIC LETTER NOON;Lo;0;AL;;;;;N;;;;; -0647;ARABIC LETTER HEH;Lo;0;AL;;;;;N;ARABIC LETTER HA;;;; -0648;ARABIC LETTER WAW;Lo;0;AL;;;;;N;;;;; -0649;ARABIC LETTER ALEF MAKSURA;Lo;0;AL;;;;;N;ARABIC LETTER ALEF MAQSURAH;;;; -064A;ARABIC LETTER YEH;Lo;0;AL;;;;;N;ARABIC LETTER YA;;;; -064B;ARABIC FATHATAN;Mn;27;NSM;;;;;N;;;;; -064C;ARABIC DAMMATAN;Mn;28;NSM;;;;;N;;;;; -064D;ARABIC KASRATAN;Mn;29;NSM;;;;;N;;;;; -064E;ARABIC FATHA;Mn;30;NSM;;;;;N;ARABIC FATHAH;;;; -064F;ARABIC DAMMA;Mn;31;NSM;;;;;N;ARABIC DAMMAH;;;; -0650;ARABIC KASRA;Mn;32;NSM;;;;;N;ARABIC KASRAH;;;; -0651;ARABIC SHADDA;Mn;33;NSM;;;;;N;ARABIC SHADDAH;;;; -0652;ARABIC SUKUN;Mn;34;NSM;;;;;N;;;;; -0653;ARABIC MADDAH ABOVE;Mn;230;NSM;;;;;N;;;;; -0654;ARABIC HAMZA ABOVE;Mn;230;NSM;;;;;N;;;;; -0655;ARABIC HAMZA BELOW;Mn;220;NSM;;;;;N;;;;; -0656;ARABIC SUBSCRIPT ALEF;Mn;220;NSM;;;;;N;;;;; -0657;ARABIC INVERTED DAMMA;Mn;230;NSM;;;;;N;;;;; -0658;ARABIC MARK NOON GHUNNA;Mn;230;NSM;;;;;N;;;;; -0659;ARABIC ZWARAKAY;Mn;230;NSM;;;;;N;;;;; -065A;ARABIC VOWEL SIGN SMALL V ABOVE;Mn;230;NSM;;;;;N;;;;; -065B;ARABIC VOWEL SIGN INVERTED SMALL V ABOVE;Mn;230;NSM;;;;;N;;;;; -065C;ARABIC VOWEL SIGN DOT BELOW;Mn;220;NSM;;;;;N;;;;; -065D;ARABIC REVERSED DAMMA;Mn;230;NSM;;;;;N;;;;; -065E;ARABIC FATHA WITH TWO DOTS;Mn;230;NSM;;;;;N;;;;; -0660;ARABIC-INDIC DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;; -0661;ARABIC-INDIC DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;; -0662;ARABIC-INDIC DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;; -0663;ARABIC-INDIC DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;; -0664;ARABIC-INDIC DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;; -0665;ARABIC-INDIC DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;; -0666;ARABIC-INDIC DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;; -0667;ARABIC-INDIC DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;; -0668;ARABIC-INDIC DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;; -0669;ARABIC-INDIC DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;; -066A;ARABIC PERCENT SIGN;Po;0;ET;;;;;N;;;;; -066B;ARABIC DECIMAL SEPARATOR;Po;0;AN;;;;;N;;;;; -066C;ARABIC THOUSANDS SEPARATOR;Po;0;AN;;;;;N;;;;; -066D;ARABIC FIVE POINTED STAR;Po;0;AL;;;;;N;;;;; -066E;ARABIC LETTER DOTLESS BEH;Lo;0;AL;;;;;N;;;;; -066F;ARABIC LETTER DOTLESS QAF;Lo;0;AL;;;;;N;;;;; -0670;ARABIC LETTER SUPERSCRIPT ALEF;Mn;35;NSM;;;;;N;ARABIC ALEF ABOVE;;;; -0671;ARABIC LETTER ALEF WASLA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAT WASL ON ALEF;;;; -0672;ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH ON ALEF;;;; -0673;ARABIC LETTER ALEF WITH WAVY HAMZA BELOW;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH UNDER ALEF;;;; -0674;ARABIC LETTER HIGH HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HIGH HAMZAH;;;; -0675;ARABIC LETTER HIGH HAMZA ALEF;Lo;0;AL; 0627 0674;;;;N;ARABIC LETTER HIGH HAMZAH ALEF;;;; -0676;ARABIC LETTER HIGH HAMZA WAW;Lo;0;AL; 0648 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW;;;; -0677;ARABIC LETTER U WITH HAMZA ABOVE;Lo;0;AL; 06C7 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW WITH DAMMAH;;;; -0678;ARABIC LETTER HIGH HAMZA YEH;Lo;0;AL; 064A 0674;;;;N;ARABIC LETTER HIGH HAMZAH YA;;;; -0679;ARABIC LETTER TTEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH SMALL TAH;;;; -067A;ARABIC LETTER TTEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH TWO DOTS VERTICAL ABOVE;;;; -067B;ARABIC LETTER BEEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH TWO DOTS VERTICAL BELOW;;;; -067C;ARABIC LETTER TEH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH RING;;;; -067D;ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS ABOVE DOWNWARD;;;; -067E;ARABIC LETTER PEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS BELOW;;;; -067F;ARABIC LETTER TEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH FOUR DOTS ABOVE;;;; -0680;ARABIC LETTER BEHEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH FOUR DOTS BELOW;;;; -0681;ARABIC LETTER HAH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH ON HAA;;;; -0682;ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH TWO DOTS VERTICAL ABOVE;;;; -0683;ARABIC LETTER NYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS;;;; -0684;ARABIC LETTER DYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS VERTICAL;;;; -0685;ARABIC LETTER HAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH THREE DOTS ABOVE;;;; -0686;ARABIC LETTER TCHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE THREE DOTS DOWNWARD;;;; -0687;ARABIC LETTER TCHEHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE FOUR DOTS;;;; -0688;ARABIC LETTER DDAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH SMALL TAH;;;; -0689;ARABIC LETTER DAL WITH RING;Lo;0;AL;;;;;N;;;;; -068A;ARABIC LETTER DAL WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; -068B;ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH;Lo;0;AL;;;;;N;;;;; -068C;ARABIC LETTER DAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS ABOVE;;;; -068D;ARABIC LETTER DDAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS BELOW;;;; -068E;ARABIC LETTER DUL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE;;;; -068F;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARD;;;; -0690;ARABIC LETTER DAL WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -0691;ARABIC LETTER RREH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL TAH;;;; -0692;ARABIC LETTER REH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V;;;; -0693;ARABIC LETTER REH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH RING;;;; -0694;ARABIC LETTER REH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW;;;; -0695;ARABIC LETTER REH WITH SMALL V BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V BELOW;;;; -0696;ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW AND DOT ABOVE;;;; -0697;ARABIC LETTER REH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH TWO DOTS ABOVE;;;; -0698;ARABIC LETTER JEH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH THREE DOTS ABOVE;;;; -0699;ARABIC LETTER REH WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH FOUR DOTS ABOVE;;;; -069A;ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;;;;; -069B;ARABIC LETTER SEEN WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;; -069C;ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -069D;ARABIC LETTER SAD WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;; -069E;ARABIC LETTER SAD WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -069F;ARABIC LETTER TAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -06A0;ARABIC LETTER AIN WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -06A1;ARABIC LETTER DOTLESS FEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS FA;;;; -06A2;ARABIC LETTER FEH WITH DOT MOVED BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT MOVED BELOW;;;; -06A3;ARABIC LETTER FEH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT BELOW;;;; -06A4;ARABIC LETTER VEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS ABOVE;;;; -06A5;ARABIC LETTER FEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS BELOW;;;; -06A6;ARABIC LETTER PEHEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH FOUR DOTS ABOVE;;;; -06A7;ARABIC LETTER QAF WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; -06A8;ARABIC LETTER QAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -06A9;ARABIC LETTER KEHEH;Lo;0;AL;;;;;N;ARABIC LETTER OPEN CAF;;;; -06AA;ARABIC LETTER SWASH KAF;Lo;0;AL;;;;;N;ARABIC LETTER SWASH CAF;;;; -06AB;ARABIC LETTER KAF WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH RING;;;; -06AC;ARABIC LETTER KAF WITH DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH DOT ABOVE;;;; -06AD;ARABIC LETTER NG;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS ABOVE;;;; -06AE;ARABIC LETTER KAF WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS BELOW;;;; -06AF;ARABIC LETTER GAF;Lo;0;AL;;;;;N;;;;; -06B0;ARABIC LETTER GAF WITH RING;Lo;0;AL;;;;;N;;;;; -06B1;ARABIC LETTER NGOEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS ABOVE;;;; -06B2;ARABIC LETTER GAF WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;; -06B3;ARABIC LETTER GUEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS VERTICAL BELOW;;;; -06B4;ARABIC LETTER GAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -06B5;ARABIC LETTER LAM WITH SMALL V;Lo;0;AL;;;;;N;;;;; -06B6;ARABIC LETTER LAM WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; -06B7;ARABIC LETTER LAM WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -06B8;ARABIC LETTER LAM WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;; -06B9;ARABIC LETTER NOON WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; -06BA;ARABIC LETTER NOON GHUNNA;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON;;;; -06BB;ARABIC LETTER RNOON;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON WITH SMALL TAH;;;; -06BC;ARABIC LETTER NOON WITH RING;Lo;0;AL;;;;;N;;;;; -06BD;ARABIC LETTER NOON WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -06BE;ARABIC LETTER HEH DOACHASHMEE;Lo;0;AL;;;;;N;ARABIC LETTER KNOTTED HA;;;; -06BF;ARABIC LETTER TCHEH WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; -06C0;ARABIC LETTER HEH WITH YEH ABOVE;Lo;0;AL;06D5 0654;;;;N;ARABIC LETTER HAMZAH ON HA;;;; -06C1;ARABIC LETTER HEH GOAL;Lo;0;AL;;;;;N;ARABIC LETTER HA GOAL;;;; -06C2;ARABIC LETTER HEH GOAL WITH HAMZA ABOVE;Lo;0;AL;06C1 0654;;;;N;ARABIC LETTER HAMZAH ON HA GOAL;;;; -06C3;ARABIC LETTER TEH MARBUTA GOAL;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH GOAL;;;; -06C4;ARABIC LETTER WAW WITH RING;Lo;0;AL;;;;;N;;;;; -06C5;ARABIC LETTER KIRGHIZ OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH BAR;;;; -06C6;ARABIC LETTER OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH SMALL V;;;; -06C7;ARABIC LETTER U;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH DAMMAH;;;; -06C8;ARABIC LETTER YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH ALEF ABOVE;;;; -06C9;ARABIC LETTER KIRGHIZ YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH INVERTED SMALL V;;;; -06CA;ARABIC LETTER WAW WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -06CB;ARABIC LETTER VE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH THREE DOTS ABOVE;;;; -06CC;ARABIC LETTER FARSI YEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS YA;;;; -06CD;ARABIC LETTER YEH WITH TAIL;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TAIL;;;; -06CE;ARABIC LETTER YEH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH SMALL V;;;; -06CF;ARABIC LETTER WAW WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; -06D0;ARABIC LETTER E;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TWO DOTS VERTICAL BELOW;;;; -06D1;ARABIC LETTER YEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH THREE DOTS BELOW;;;; -06D2;ARABIC LETTER YEH BARREE;Lo;0;AL;;;;;N;ARABIC LETTER YA BARREE;;;; -06D3;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE;Lo;0;AL;06D2 0654;;;;N;ARABIC LETTER HAMZAH ON YA BARREE;;;; -06D4;ARABIC FULL STOP;Po;0;AL;;;;;N;ARABIC PERIOD;;;; -06D5;ARABIC LETTER AE;Lo;0;AL;;;;;N;;;;; -06D6;ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;; -06D7;ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;; -06D8;ARABIC SMALL HIGH MEEM INITIAL FORM;Mn;230;NSM;;;;;N;;;;; -06D9;ARABIC SMALL HIGH LAM ALEF;Mn;230;NSM;;;;;N;;;;; -06DA;ARABIC SMALL HIGH JEEM;Mn;230;NSM;;;;;N;;;;; -06DB;ARABIC SMALL HIGH THREE DOTS;Mn;230;NSM;;;;;N;;;;; -06DC;ARABIC SMALL HIGH SEEN;Mn;230;NSM;;;;;N;;;;; -06DD;ARABIC END OF AYAH;Cf;0;AN;;;;;N;;;;; -06DE;ARABIC START OF RUB EL HIZB;Me;0;NSM;;;;;N;;;;; -06DF;ARABIC SMALL HIGH ROUNDED ZERO;Mn;230;NSM;;;;;N;;;;; -06E0;ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO;Mn;230;NSM;;;;;N;;;;; -06E1;ARABIC SMALL HIGH DOTLESS HEAD OF KHAH;Mn;230;NSM;;;;;N;;;;; -06E2;ARABIC SMALL HIGH MEEM ISOLATED FORM;Mn;230;NSM;;;;;N;;;;; -06E3;ARABIC SMALL LOW SEEN;Mn;220;NSM;;;;;N;;;;; -06E4;ARABIC SMALL HIGH MADDA;Mn;230;NSM;;;;;N;;;;; -06E5;ARABIC SMALL WAW;Lm;0;AL;;;;;N;;;;; -06E6;ARABIC SMALL YEH;Lm;0;AL;;;;;N;;;;; -06E7;ARABIC SMALL HIGH YEH;Mn;230;NSM;;;;;N;;;;; -06E8;ARABIC SMALL HIGH NOON;Mn;230;NSM;;;;;N;;;;; -06E9;ARABIC PLACE OF SAJDAH;So;0;ON;;;;;N;;;;; -06EA;ARABIC EMPTY CENTRE LOW STOP;Mn;220;NSM;;;;;N;;;;; -06EB;ARABIC EMPTY CENTRE HIGH STOP;Mn;230;NSM;;;;;N;;;;; -06EC;ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE;Mn;230;NSM;;;;;N;;;;; -06ED;ARABIC SMALL LOW MEEM;Mn;220;NSM;;;;;N;;;;; -06EE;ARABIC LETTER DAL WITH INVERTED V;Lo;0;AL;;;;;N;;;;; -06EF;ARABIC LETTER REH WITH INVERTED V;Lo;0;AL;;;;;N;;;;; -06F0;EXTENDED ARABIC-INDIC DIGIT ZERO;Nd;0;EN;;0;0;0;N;EASTERN ARABIC-INDIC DIGIT ZERO;;;; -06F1;EXTENDED ARABIC-INDIC DIGIT ONE;Nd;0;EN;;1;1;1;N;EASTERN ARABIC-INDIC DIGIT ONE;;;; -06F2;EXTENDED ARABIC-INDIC DIGIT TWO;Nd;0;EN;;2;2;2;N;EASTERN ARABIC-INDIC DIGIT TWO;;;; -06F3;EXTENDED ARABIC-INDIC DIGIT THREE;Nd;0;EN;;3;3;3;N;EASTERN ARABIC-INDIC DIGIT THREE;;;; -06F4;EXTENDED ARABIC-INDIC DIGIT FOUR;Nd;0;EN;;4;4;4;N;EASTERN ARABIC-INDIC DIGIT FOUR;;;; -06F5;EXTENDED ARABIC-INDIC DIGIT FIVE;Nd;0;EN;;5;5;5;N;EASTERN ARABIC-INDIC DIGIT FIVE;;;; -06F6;EXTENDED ARABIC-INDIC DIGIT SIX;Nd;0;EN;;6;6;6;N;EASTERN ARABIC-INDIC DIGIT SIX;;;; -06F7;EXTENDED ARABIC-INDIC DIGIT SEVEN;Nd;0;EN;;7;7;7;N;EASTERN ARABIC-INDIC DIGIT SEVEN;;;; -06F8;EXTENDED ARABIC-INDIC DIGIT EIGHT;Nd;0;EN;;8;8;8;N;EASTERN ARABIC-INDIC DIGIT EIGHT;;;; -06F9;EXTENDED ARABIC-INDIC DIGIT NINE;Nd;0;EN;;9;9;9;N;EASTERN ARABIC-INDIC DIGIT NINE;;;; -06FA;ARABIC LETTER SHEEN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; -06FB;ARABIC LETTER DAD WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; -06FC;ARABIC LETTER GHAIN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; -06FD;ARABIC SIGN SINDHI AMPERSAND;So;0;AL;;;;;N;;;;; -06FE;ARABIC SIGN SINDHI POSTPOSITION MEN;So;0;AL;;;;;N;;;;; -06FF;ARABIC LETTER HEH WITH INVERTED V;Lo;0;AL;;;;;N;;;;; -0700;SYRIAC END OF PARAGRAPH;Po;0;AL;;;;;N;;;;; -0701;SYRIAC SUPRALINEAR FULL STOP;Po;0;AL;;;;;N;;;;; -0702;SYRIAC SUBLINEAR FULL STOP;Po;0;AL;;;;;N;;;;; -0703;SYRIAC SUPRALINEAR COLON;Po;0;AL;;;;;N;;;;; -0704;SYRIAC SUBLINEAR COLON;Po;0;AL;;;;;N;;;;; -0705;SYRIAC HORIZONTAL COLON;Po;0;AL;;;;;N;;;;; -0706;SYRIAC COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;; -0707;SYRIAC COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;; -0708;SYRIAC SUPRALINEAR COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;; -0709;SYRIAC SUBLINEAR COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;; -070A;SYRIAC CONTRACTION;Po;0;AL;;;;;N;;;;; -070B;SYRIAC HARKLEAN OBELUS;Po;0;AL;;;;;N;;;;; -070C;SYRIAC HARKLEAN METOBELUS;Po;0;AL;;;;;N;;;;; -070D;SYRIAC HARKLEAN ASTERISCUS;Po;0;AL;;;;;N;;;;; -070F;SYRIAC ABBREVIATION MARK;Cf;0;BN;;;;;N;;;;; -0710;SYRIAC LETTER ALAPH;Lo;0;AL;;;;;N;;;;; -0711;SYRIAC LETTER SUPERSCRIPT ALAPH;Mn;36;NSM;;;;;N;;;;; -0712;SYRIAC LETTER BETH;Lo;0;AL;;;;;N;;;;; -0713;SYRIAC LETTER GAMAL;Lo;0;AL;;;;;N;;;;; -0714;SYRIAC LETTER GAMAL GARSHUNI;Lo;0;AL;;;;;N;;;;; -0715;SYRIAC LETTER DALATH;Lo;0;AL;;;;;N;;;;; -0716;SYRIAC LETTER DOTLESS DALATH RISH;Lo;0;AL;;;;;N;;;;; -0717;SYRIAC LETTER HE;Lo;0;AL;;;;;N;;;;; -0718;SYRIAC LETTER WAW;Lo;0;AL;;;;;N;;;;; -0719;SYRIAC LETTER ZAIN;Lo;0;AL;;;;;N;;;;; -071A;SYRIAC LETTER HETH;Lo;0;AL;;;;;N;;;;; -071B;SYRIAC LETTER TETH;Lo;0;AL;;;;;N;;;;; -071C;SYRIAC LETTER TETH GARSHUNI;Lo;0;AL;;;;;N;;;;; -071D;SYRIAC LETTER YUDH;Lo;0;AL;;;;;N;;;;; -071E;SYRIAC LETTER YUDH HE;Lo;0;AL;;;;;N;;;;; -071F;SYRIAC LETTER KAPH;Lo;0;AL;;;;;N;;;;; -0720;SYRIAC LETTER LAMADH;Lo;0;AL;;;;;N;;;;; -0721;SYRIAC LETTER MIM;Lo;0;AL;;;;;N;;;;; -0722;SYRIAC LETTER NUN;Lo;0;AL;;;;;N;;;;; -0723;SYRIAC LETTER SEMKATH;Lo;0;AL;;;;;N;;;;; -0724;SYRIAC LETTER FINAL SEMKATH;Lo;0;AL;;;;;N;;;;; -0725;SYRIAC LETTER E;Lo;0;AL;;;;;N;;;;; -0726;SYRIAC LETTER PE;Lo;0;AL;;;;;N;;;;; -0727;SYRIAC LETTER REVERSED PE;Lo;0;AL;;;;;N;;;;; -0728;SYRIAC LETTER SADHE;Lo;0;AL;;;;;N;;;;; -0729;SYRIAC LETTER QAPH;Lo;0;AL;;;;;N;;;;; -072A;SYRIAC LETTER RISH;Lo;0;AL;;;;;N;;;;; -072B;SYRIAC LETTER SHIN;Lo;0;AL;;;;;N;;;;; -072C;SYRIAC LETTER TAW;Lo;0;AL;;;;;N;;;;; -072D;SYRIAC LETTER PERSIAN BHETH;Lo;0;AL;;;;;N;;;;; -072E;SYRIAC LETTER PERSIAN GHAMAL;Lo;0;AL;;;;;N;;;;; -072F;SYRIAC LETTER PERSIAN DHALATH;Lo;0;AL;;;;;N;;;;; -0730;SYRIAC PTHAHA ABOVE;Mn;230;NSM;;;;;N;;;;; -0731;SYRIAC PTHAHA BELOW;Mn;220;NSM;;;;;N;;;;; -0732;SYRIAC PTHAHA DOTTED;Mn;230;NSM;;;;;N;;;;; -0733;SYRIAC ZQAPHA ABOVE;Mn;230;NSM;;;;;N;;;;; -0734;SYRIAC ZQAPHA BELOW;Mn;220;NSM;;;;;N;;;;; -0735;SYRIAC ZQAPHA DOTTED;Mn;230;NSM;;;;;N;;;;; -0736;SYRIAC RBASA ABOVE;Mn;230;NSM;;;;;N;;;;; -0737;SYRIAC RBASA BELOW;Mn;220;NSM;;;;;N;;;;; -0738;SYRIAC DOTTED ZLAMA HORIZONTAL;Mn;220;NSM;;;;;N;;;;; -0739;SYRIAC DOTTED ZLAMA ANGULAR;Mn;220;NSM;;;;;N;;;;; -073A;SYRIAC HBASA ABOVE;Mn;230;NSM;;;;;N;;;;; -073B;SYRIAC HBASA BELOW;Mn;220;NSM;;;;;N;;;;; -073C;SYRIAC HBASA-ESASA DOTTED;Mn;220;NSM;;;;;N;;;;; -073D;SYRIAC ESASA ABOVE;Mn;230;NSM;;;;;N;;;;; -073E;SYRIAC ESASA BELOW;Mn;220;NSM;;;;;N;;;;; -073F;SYRIAC RWAHA;Mn;230;NSM;;;;;N;;;;; -0740;SYRIAC FEMININE DOT;Mn;230;NSM;;;;;N;;;;; -0741;SYRIAC QUSHSHAYA;Mn;230;NSM;;;;;N;;;;; -0742;SYRIAC RUKKAKHA;Mn;220;NSM;;;;;N;;;;; -0743;SYRIAC TWO VERTICAL DOTS ABOVE;Mn;230;NSM;;;;;N;;;;; -0744;SYRIAC TWO VERTICAL DOTS BELOW;Mn;220;NSM;;;;;N;;;;; -0745;SYRIAC THREE DOTS ABOVE;Mn;230;NSM;;;;;N;;;;; -0746;SYRIAC THREE DOTS BELOW;Mn;220;NSM;;;;;N;;;;; -0747;SYRIAC OBLIQUE LINE ABOVE;Mn;230;NSM;;;;;N;;;;; -0748;SYRIAC OBLIQUE LINE BELOW;Mn;220;NSM;;;;;N;;;;; -0749;SYRIAC MUSIC;Mn;230;NSM;;;;;N;;;;; -074A;SYRIAC BARREKH;Mn;230;NSM;;;;;N;;;;; -074D;SYRIAC LETTER SOGDIAN ZHAIN;Lo;0;AL;;;;;N;;;;; -074E;SYRIAC LETTER SOGDIAN KHAPH;Lo;0;AL;;;;;N;;;;; -074F;SYRIAC LETTER SOGDIAN FE;Lo;0;AL;;;;;N;;;;; -0750;ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW;Lo;0;AL;;;;;N;;;;; -0751;ARABIC LETTER BEH WITH DOT BELOW AND THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -0752;ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;; -0753;ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW AND TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -0754;ARABIC LETTER BEH WITH TWO DOTS BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;;;;; -0755;ARABIC LETTER BEH WITH INVERTED SMALL V BELOW;Lo;0;AL;;;;;N;;;;; -0756;ARABIC LETTER BEH WITH SMALL V;Lo;0;AL;;;;;N;;;;; -0757;ARABIC LETTER HAH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -0758;ARABIC LETTER HAH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;; -0759;ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW AND SMALL TAH;Lo;0;AL;;;;;N;;;;; -075A;ARABIC LETTER DAL WITH INVERTED SMALL V BELOW;Lo;0;AL;;;;;N;;;;; -075B;ARABIC LETTER REH WITH STROKE;Lo;0;AL;;;;;N;;;;; -075C;ARABIC LETTER SEEN WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -075D;ARABIC LETTER AIN WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -075E;ARABIC LETTER AIN WITH THREE DOTS POINTING DOWNWARDS ABOVE;Lo;0;AL;;;;;N;;;;; -075F;ARABIC LETTER AIN WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;; -0760;ARABIC LETTER FEH WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;; -0761;ARABIC LETTER FEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;; -0762;ARABIC LETTER KEHEH WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; -0763;ARABIC LETTER KEHEH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -0764;ARABIC LETTER KEHEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;; -0765;ARABIC LETTER MEEM WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; -0766;ARABIC LETTER MEEM WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; -0767;ARABIC LETTER NOON WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;; -0768;ARABIC LETTER NOON WITH SMALL TAH;Lo;0;AL;;;;;N;;;;; -0769;ARABIC LETTER NOON WITH SMALL V;Lo;0;AL;;;;;N;;;;; -076A;ARABIC LETTER LAM WITH BAR;Lo;0;AL;;;;;N;;;;; -076B;ARABIC LETTER REH WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;; -076C;ARABIC LETTER REH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;;;;; -076D;ARABIC LETTER SEEN WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;; -076E;ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH BELOW;Lo;0;AL;;;;;N;;;;; -076F;ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH AND TWO DOTS;Lo;0;AL;;;;;N;;;;; -0770;ARABIC LETTER SEEN WITH SMALL ARABIC LETTER TAH AND TWO DOTS;Lo;0;AL;;;;;N;;;;; -0771;ARABIC LETTER REH WITH SMALL ARABIC LETTER TAH AND TWO DOTS;Lo;0;AL;;;;;N;;;;; -0772;ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH ABOVE;Lo;0;AL;;;;;N;;;;; -0773;ARABIC LETTER ALEF WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;; -0774;ARABIC LETTER ALEF WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;; -0775;ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;; -0776;ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;; -0777;ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT FOUR BELOW;Lo;0;AL;;;;;N;;;;; -0778;ARABIC LETTER WAW WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;; -0779;ARABIC LETTER WAW WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;; -077A;ARABIC LETTER YEH BARREE WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;; -077B;ARABIC LETTER YEH BARREE WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;; -077C;ARABIC LETTER HAH WITH EXTENDED ARABIC-INDIC DIGIT FOUR BELOW;Lo;0;AL;;;;;N;;;;; -077D;ARABIC LETTER SEEN WITH EXTENDED ARABIC-INDIC DIGIT FOUR ABOVE;Lo;0;AL;;;;;N;;;;; -077E;ARABIC LETTER SEEN WITH INVERTED V;Lo;0;AL;;;;;N;;;;; -077F;ARABIC LETTER KAF WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -0780;THAANA LETTER HAA;Lo;0;AL;;;;;N;;;;; -0781;THAANA LETTER SHAVIYANI;Lo;0;AL;;;;;N;;;;; -0782;THAANA LETTER NOONU;Lo;0;AL;;;;;N;;;;; -0783;THAANA LETTER RAA;Lo;0;AL;;;;;N;;;;; -0784;THAANA LETTER BAA;Lo;0;AL;;;;;N;;;;; -0785;THAANA LETTER LHAVIYANI;Lo;0;AL;;;;;N;;;;; -0786;THAANA LETTER KAAFU;Lo;0;AL;;;;;N;;;;; -0787;THAANA LETTER ALIFU;Lo;0;AL;;;;;N;;;;; -0788;THAANA LETTER VAAVU;Lo;0;AL;;;;;N;;;;; -0789;THAANA LETTER MEEMU;Lo;0;AL;;;;;N;;;;; -078A;THAANA LETTER FAAFU;Lo;0;AL;;;;;N;;;;; -078B;THAANA LETTER DHAALU;Lo;0;AL;;;;;N;;;;; -078C;THAANA LETTER THAA;Lo;0;AL;;;;;N;;;;; -078D;THAANA LETTER LAAMU;Lo;0;AL;;;;;N;;;;; -078E;THAANA LETTER GAAFU;Lo;0;AL;;;;;N;;;;; -078F;THAANA LETTER GNAVIYANI;Lo;0;AL;;;;;N;;;;; -0790;THAANA LETTER SEENU;Lo;0;AL;;;;;N;;;;; -0791;THAANA LETTER DAVIYANI;Lo;0;AL;;;;;N;;;;; -0792;THAANA LETTER ZAVIYANI;Lo;0;AL;;;;;N;;;;; -0793;THAANA LETTER TAVIYANI;Lo;0;AL;;;;;N;;;;; -0794;THAANA LETTER YAA;Lo;0;AL;;;;;N;;;;; -0795;THAANA LETTER PAVIYANI;Lo;0;AL;;;;;N;;;;; -0796;THAANA LETTER JAVIYANI;Lo;0;AL;;;;;N;;;;; -0797;THAANA LETTER CHAVIYANI;Lo;0;AL;;;;;N;;;;; -0798;THAANA LETTER TTAA;Lo;0;AL;;;;;N;;;;; -0799;THAANA LETTER HHAA;Lo;0;AL;;;;;N;;;;; -079A;THAANA LETTER KHAA;Lo;0;AL;;;;;N;;;;; -079B;THAANA LETTER THAALU;Lo;0;AL;;;;;N;;;;; -079C;THAANA LETTER ZAA;Lo;0;AL;;;;;N;;;;; -079D;THAANA LETTER SHEENU;Lo;0;AL;;;;;N;;;;; -079E;THAANA LETTER SAADHU;Lo;0;AL;;;;;N;;;;; -079F;THAANA LETTER DAADHU;Lo;0;AL;;;;;N;;;;; -07A0;THAANA LETTER TO;Lo;0;AL;;;;;N;;;;; -07A1;THAANA LETTER ZO;Lo;0;AL;;;;;N;;;;; -07A2;THAANA LETTER AINU;Lo;0;AL;;;;;N;;;;; -07A3;THAANA LETTER GHAINU;Lo;0;AL;;;;;N;;;;; -07A4;THAANA LETTER QAAFU;Lo;0;AL;;;;;N;;;;; -07A5;THAANA LETTER WAAVU;Lo;0;AL;;;;;N;;;;; -07A6;THAANA ABAFILI;Mn;0;NSM;;;;;N;;;;; -07A7;THAANA AABAAFILI;Mn;0;NSM;;;;;N;;;;; -07A8;THAANA IBIFILI;Mn;0;NSM;;;;;N;;;;; -07A9;THAANA EEBEEFILI;Mn;0;NSM;;;;;N;;;;; -07AA;THAANA UBUFILI;Mn;0;NSM;;;;;N;;;;; -07AB;THAANA OOBOOFILI;Mn;0;NSM;;;;;N;;;;; -07AC;THAANA EBEFILI;Mn;0;NSM;;;;;N;;;;; -07AD;THAANA EYBEYFILI;Mn;0;NSM;;;;;N;;;;; -07AE;THAANA OBOFILI;Mn;0;NSM;;;;;N;;;;; -07AF;THAANA OABOAFILI;Mn;0;NSM;;;;;N;;;;; -07B0;THAANA SUKUN;Mn;0;NSM;;;;;N;;;;; -07B1;THAANA LETTER NAA;Lo;0;AL;;;;;N;;;;; -07C0;NKO DIGIT ZERO;Nd;0;R;;0;0;0;N;;;;; -07C1;NKO DIGIT ONE;Nd;0;R;;1;1;1;N;;;;; -07C2;NKO DIGIT TWO;Nd;0;R;;2;2;2;N;;;;; -07C3;NKO DIGIT THREE;Nd;0;R;;3;3;3;N;;;;; -07C4;NKO DIGIT FOUR;Nd;0;R;;4;4;4;N;;;;; -07C5;NKO DIGIT FIVE;Nd;0;R;;5;5;5;N;;;;; -07C6;NKO DIGIT SIX;Nd;0;R;;6;6;6;N;;;;; -07C7;NKO DIGIT SEVEN;Nd;0;R;;7;7;7;N;;;;; -07C8;NKO DIGIT EIGHT;Nd;0;R;;8;8;8;N;;;;; -07C9;NKO DIGIT NINE;Nd;0;R;;9;9;9;N;;;;; -07CA;NKO LETTER A;Lo;0;R;;;;;N;;;;; -07CB;NKO LETTER EE;Lo;0;R;;;;;N;;;;; -07CC;NKO LETTER I;Lo;0;R;;;;;N;;;;; -07CD;NKO LETTER E;Lo;0;R;;;;;N;;;;; -07CE;NKO LETTER U;Lo;0;R;;;;;N;;;;; -07CF;NKO LETTER OO;Lo;0;R;;;;;N;;;;; -07D0;NKO LETTER O;Lo;0;R;;;;;N;;;;; -07D1;NKO LETTER DAGBASINNA;Lo;0;R;;;;;N;;;;; -07D2;NKO LETTER N;Lo;0;R;;;;;N;;;;; -07D3;NKO LETTER BA;Lo;0;R;;;;;N;;;;; -07D4;NKO LETTER PA;Lo;0;R;;;;;N;;;;; -07D5;NKO LETTER TA;Lo;0;R;;;;;N;;;;; -07D6;NKO LETTER JA;Lo;0;R;;;;;N;;;;; -07D7;NKO LETTER CHA;Lo;0;R;;;;;N;;;;; -07D8;NKO LETTER DA;Lo;0;R;;;;;N;;;;; -07D9;NKO LETTER RA;Lo;0;R;;;;;N;;;;; -07DA;NKO LETTER RRA;Lo;0;R;;;;;N;;;;; -07DB;NKO LETTER SA;Lo;0;R;;;;;N;;;;; -07DC;NKO LETTER GBA;Lo;0;R;;;;;N;;;;; -07DD;NKO LETTER FA;Lo;0;R;;;;;N;;;;; -07DE;NKO LETTER KA;Lo;0;R;;;;;N;;;;; -07DF;NKO LETTER LA;Lo;0;R;;;;;N;;;;; -07E0;NKO LETTER NA WOLOSO;Lo;0;R;;;;;N;;;;; -07E1;NKO LETTER MA;Lo;0;R;;;;;N;;;;; -07E2;NKO LETTER NYA;Lo;0;R;;;;;N;;;;; -07E3;NKO LETTER NA;Lo;0;R;;;;;N;;;;; -07E4;NKO LETTER HA;Lo;0;R;;;;;N;;;;; -07E5;NKO LETTER WA;Lo;0;R;;;;;N;;;;; -07E6;NKO LETTER YA;Lo;0;R;;;;;N;;;;; -07E7;NKO LETTER NYA WOLOSO;Lo;0;R;;;;;N;;;;; -07E8;NKO LETTER JONA JA;Lo;0;R;;;;;N;;;;; -07E9;NKO LETTER JONA CHA;Lo;0;R;;;;;N;;;;; -07EA;NKO LETTER JONA RA;Lo;0;R;;;;;N;;;;; -07EB;NKO COMBINING SHORT HIGH TONE;Mn;230;NSM;;;;;N;;;;; -07EC;NKO COMBINING SHORT LOW TONE;Mn;230;NSM;;;;;N;;;;; -07ED;NKO COMBINING SHORT RISING TONE;Mn;230;NSM;;;;;N;;;;; -07EE;NKO COMBINING LONG DESCENDING TONE;Mn;230;NSM;;;;;N;;;;; -07EF;NKO COMBINING LONG HIGH TONE;Mn;230;NSM;;;;;N;;;;; -07F0;NKO COMBINING LONG LOW TONE;Mn;230;NSM;;;;;N;;;;; -07F1;NKO COMBINING LONG RISING TONE;Mn;230;NSM;;;;;N;;;;; -07F2;NKO COMBINING NASALIZATION MARK;Mn;220;NSM;;;;;N;;;;; -07F3;NKO COMBINING DOUBLE DOT ABOVE;Mn;230;NSM;;;;;N;;;;; -07F4;NKO HIGH TONE APOSTROPHE;Lm;0;R;;;;;N;;;;; -07F5;NKO LOW TONE APOSTROPHE;Lm;0;R;;;;;N;;;;; -07F6;NKO SYMBOL OO DENNEN;So;0;ON;;;;;N;;;;; -07F7;NKO SYMBOL GBAKURUNEN;Po;0;ON;;;;;N;;;;; -07F8;NKO COMMA;Po;0;ON;;;;;N;;;;; -07F9;NKO EXCLAMATION MARK;Po;0;ON;;;;;N;;;;; -07FA;NKO LAJANYALAN;Lm;0;R;;;;;N;;;;; -0800;SAMARITAN LETTER ALAF;Lo;0;R;;;;;N;;;;; -0801;SAMARITAN LETTER BIT;Lo;0;R;;;;;N;;;;; -0802;SAMARITAN LETTER GAMAN;Lo;0;R;;;;;N;;;;; -0803;SAMARITAN LETTER DALAT;Lo;0;R;;;;;N;;;;; -0804;SAMARITAN LETTER IY;Lo;0;R;;;;;N;;;;; -0805;SAMARITAN LETTER BAA;Lo;0;R;;;;;N;;;;; -0806;SAMARITAN LETTER ZEN;Lo;0;R;;;;;N;;;;; -0807;SAMARITAN LETTER IT;Lo;0;R;;;;;N;;;;; -0808;SAMARITAN LETTER TIT;Lo;0;R;;;;;N;;;;; -0809;SAMARITAN LETTER YUT;Lo;0;R;;;;;N;;;;; -080A;SAMARITAN LETTER KAAF;Lo;0;R;;;;;N;;;;; -080B;SAMARITAN LETTER LABAT;Lo;0;R;;;;;N;;;;; -080C;SAMARITAN LETTER MIM;Lo;0;R;;;;;N;;;;; -080D;SAMARITAN LETTER NUN;Lo;0;R;;;;;N;;;;; -080E;SAMARITAN LETTER SINGAAT;Lo;0;R;;;;;N;;;;; -080F;SAMARITAN LETTER IN;Lo;0;R;;;;;N;;;;; -0810;SAMARITAN LETTER FI;Lo;0;R;;;;;N;;;;; -0811;SAMARITAN LETTER TSAADIY;Lo;0;R;;;;;N;;;;; -0812;SAMARITAN LETTER QUF;Lo;0;R;;;;;N;;;;; -0813;SAMARITAN LETTER RISH;Lo;0;R;;;;;N;;;;; -0814;SAMARITAN LETTER SHAN;Lo;0;R;;;;;N;;;;; -0815;SAMARITAN LETTER TAAF;Lo;0;R;;;;;N;;;;; -0816;SAMARITAN MARK IN;Mn;230;NSM;;;;;N;;;;; -0817;SAMARITAN MARK IN-ALAF;Mn;230;NSM;;;;;N;;;;; -0818;SAMARITAN MARK OCCLUSION;Mn;230;NSM;;;;;N;;;;; -0819;SAMARITAN MARK DAGESH;Mn;230;NSM;;;;;N;;;;; -081A;SAMARITAN MODIFIER LETTER EPENTHETIC YUT;Lm;0;R;;;;;N;;;;; -081B;SAMARITAN MARK EPENTHETIC YUT;Mn;230;NSM;;;;;N;;;;; -081C;SAMARITAN VOWEL SIGN LONG E;Mn;230;NSM;;;;;N;;;;; -081D;SAMARITAN VOWEL SIGN E;Mn;230;NSM;;;;;N;;;;; -081E;SAMARITAN VOWEL SIGN OVERLONG AA;Mn;230;NSM;;;;;N;;;;; -081F;SAMARITAN VOWEL SIGN LONG AA;Mn;230;NSM;;;;;N;;;;; -0820;SAMARITAN VOWEL SIGN AA;Mn;230;NSM;;;;;N;;;;; -0821;SAMARITAN VOWEL SIGN OVERLONG A;Mn;230;NSM;;;;;N;;;;; -0822;SAMARITAN VOWEL SIGN LONG A;Mn;230;NSM;;;;;N;;;;; -0823;SAMARITAN VOWEL SIGN A;Mn;230;NSM;;;;;N;;;;; -0824;SAMARITAN MODIFIER LETTER SHORT A;Lm;0;R;;;;;N;;;;; -0825;SAMARITAN VOWEL SIGN SHORT A;Mn;230;NSM;;;;;N;;;;; -0826;SAMARITAN VOWEL SIGN LONG U;Mn;230;NSM;;;;;N;;;;; -0827;SAMARITAN VOWEL SIGN U;Mn;230;NSM;;;;;N;;;;; -0828;SAMARITAN MODIFIER LETTER I;Lm;0;R;;;;;N;;;;; -0829;SAMARITAN VOWEL SIGN LONG I;Mn;230;NSM;;;;;N;;;;; -082A;SAMARITAN VOWEL SIGN I;Mn;230;NSM;;;;;N;;;;; -082B;SAMARITAN VOWEL SIGN O;Mn;230;NSM;;;;;N;;;;; -082C;SAMARITAN VOWEL SIGN SUKUN;Mn;230;NSM;;;;;N;;;;; -082D;SAMARITAN MARK NEQUDAA;Mn;230;NSM;;;;;N;;;;; -0830;SAMARITAN PUNCTUATION NEQUDAA;Po;0;R;;;;;N;;;;; -0831;SAMARITAN PUNCTUATION AFSAAQ;Po;0;R;;;;;N;;;;; -0832;SAMARITAN PUNCTUATION ANGED;Po;0;R;;;;;N;;;;; -0833;SAMARITAN PUNCTUATION BAU;Po;0;R;;;;;N;;;;; -0834;SAMARITAN PUNCTUATION ATMAAU;Po;0;R;;;;;N;;;;; -0835;SAMARITAN PUNCTUATION SHIYYAALAA;Po;0;R;;;;;N;;;;; -0836;SAMARITAN ABBREVIATION MARK;Po;0;R;;;;;N;;;;; -0837;SAMARITAN PUNCTUATION MELODIC QITSA;Po;0;R;;;;;N;;;;; -0838;SAMARITAN PUNCTUATION ZIQAA;Po;0;R;;;;;N;;;;; -0839;SAMARITAN PUNCTUATION QITSA;Po;0;R;;;;;N;;;;; -083A;SAMARITAN PUNCTUATION ZAEF;Po;0;R;;;;;N;;;;; -083B;SAMARITAN PUNCTUATION TURU;Po;0;R;;;;;N;;;;; -083C;SAMARITAN PUNCTUATION ARKAANU;Po;0;R;;;;;N;;;;; -083D;SAMARITAN PUNCTUATION SOF MASHFAAT;Po;0;R;;;;;N;;;;; -083E;SAMARITAN PUNCTUATION ANNAAU;Po;0;R;;;;;N;;;;; -0900;DEVANAGARI SIGN INVERTED CANDRABINDU;Mn;0;NSM;;;;;N;;;;; -0901;DEVANAGARI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; -0902;DEVANAGARI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; -0903;DEVANAGARI SIGN VISARGA;Mc;0;L;;;;;N;;;;; -0904;DEVANAGARI LETTER SHORT A;Lo;0;L;;;;;N;;;;; -0905;DEVANAGARI LETTER A;Lo;0;L;;;;;N;;;;; -0906;DEVANAGARI LETTER AA;Lo;0;L;;;;;N;;;;; -0907;DEVANAGARI LETTER I;Lo;0;L;;;;;N;;;;; -0908;DEVANAGARI LETTER II;Lo;0;L;;;;;N;;;;; -0909;DEVANAGARI LETTER U;Lo;0;L;;;;;N;;;;; -090A;DEVANAGARI LETTER UU;Lo;0;L;;;;;N;;;;; -090B;DEVANAGARI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; -090C;DEVANAGARI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; -090D;DEVANAGARI LETTER CANDRA E;Lo;0;L;;;;;N;;;;; -090E;DEVANAGARI LETTER SHORT E;Lo;0;L;;;;;N;;;;; -090F;DEVANAGARI LETTER E;Lo;0;L;;;;;N;;;;; -0910;DEVANAGARI LETTER AI;Lo;0;L;;;;;N;;;;; -0911;DEVANAGARI LETTER CANDRA O;Lo;0;L;;;;;N;;;;; -0912;DEVANAGARI LETTER SHORT O;Lo;0;L;;;;;N;;;;; -0913;DEVANAGARI LETTER O;Lo;0;L;;;;;N;;;;; -0914;DEVANAGARI LETTER AU;Lo;0;L;;;;;N;;;;; -0915;DEVANAGARI LETTER KA;Lo;0;L;;;;;N;;;;; -0916;DEVANAGARI LETTER KHA;Lo;0;L;;;;;N;;;;; -0917;DEVANAGARI LETTER GA;Lo;0;L;;;;;N;;;;; -0918;DEVANAGARI LETTER GHA;Lo;0;L;;;;;N;;;;; -0919;DEVANAGARI LETTER NGA;Lo;0;L;;;;;N;;;;; -091A;DEVANAGARI LETTER CA;Lo;0;L;;;;;N;;;;; -091B;DEVANAGARI LETTER CHA;Lo;0;L;;;;;N;;;;; -091C;DEVANAGARI LETTER JA;Lo;0;L;;;;;N;;;;; -091D;DEVANAGARI LETTER JHA;Lo;0;L;;;;;N;;;;; -091E;DEVANAGARI LETTER NYA;Lo;0;L;;;;;N;;;;; -091F;DEVANAGARI LETTER TTA;Lo;0;L;;;;;N;;;;; -0920;DEVANAGARI LETTER TTHA;Lo;0;L;;;;;N;;;;; -0921;DEVANAGARI LETTER DDA;Lo;0;L;;;;;N;;;;; -0922;DEVANAGARI LETTER DDHA;Lo;0;L;;;;;N;;;;; -0923;DEVANAGARI LETTER NNA;Lo;0;L;;;;;N;;;;; -0924;DEVANAGARI LETTER TA;Lo;0;L;;;;;N;;;;; -0925;DEVANAGARI LETTER THA;Lo;0;L;;;;;N;;;;; -0926;DEVANAGARI LETTER DA;Lo;0;L;;;;;N;;;;; -0927;DEVANAGARI LETTER DHA;Lo;0;L;;;;;N;;;;; -0928;DEVANAGARI LETTER NA;Lo;0;L;;;;;N;;;;; -0929;DEVANAGARI LETTER NNNA;Lo;0;L;0928 093C;;;;N;;;;; -092A;DEVANAGARI LETTER PA;Lo;0;L;;;;;N;;;;; -092B;DEVANAGARI LETTER PHA;Lo;0;L;;;;;N;;;;; -092C;DEVANAGARI LETTER BA;Lo;0;L;;;;;N;;;;; -092D;DEVANAGARI LETTER BHA;Lo;0;L;;;;;N;;;;; -092E;DEVANAGARI LETTER MA;Lo;0;L;;;;;N;;;;; -092F;DEVANAGARI LETTER YA;Lo;0;L;;;;;N;;;;; -0930;DEVANAGARI LETTER RA;Lo;0;L;;;;;N;;;;; -0931;DEVANAGARI LETTER RRA;Lo;0;L;0930 093C;;;;N;;;;; -0932;DEVANAGARI LETTER LA;Lo;0;L;;;;;N;;;;; -0933;DEVANAGARI LETTER LLA;Lo;0;L;;;;;N;;;;; -0934;DEVANAGARI LETTER LLLA;Lo;0;L;0933 093C;;;;N;;;;; -0935;DEVANAGARI LETTER VA;Lo;0;L;;;;;N;;;;; -0936;DEVANAGARI LETTER SHA;Lo;0;L;;;;;N;;;;; -0937;DEVANAGARI LETTER SSA;Lo;0;L;;;;;N;;;;; -0938;DEVANAGARI LETTER SA;Lo;0;L;;;;;N;;;;; -0939;DEVANAGARI LETTER HA;Lo;0;L;;;;;N;;;;; -093C;DEVANAGARI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; -093D;DEVANAGARI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; -093E;DEVANAGARI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -093F;DEVANAGARI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; -0940;DEVANAGARI VOWEL SIGN II;Mc;0;L;;;;;N;;;;; -0941;DEVANAGARI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -0942;DEVANAGARI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; -0943;DEVANAGARI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; -0944;DEVANAGARI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;; -0945;DEVANAGARI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;; -0946;DEVANAGARI VOWEL SIGN SHORT E;Mn;0;NSM;;;;;N;;;;; -0947;DEVANAGARI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; -0948;DEVANAGARI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; -0949;DEVANAGARI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;; -094A;DEVANAGARI VOWEL SIGN SHORT O;Mc;0;L;;;;;N;;;;; -094B;DEVANAGARI VOWEL SIGN O;Mc;0;L;;;;;N;;;;; -094C;DEVANAGARI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; -094D;DEVANAGARI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -094E;DEVANAGARI VOWEL SIGN PRISHTHAMATRA E;Mc;0;L;;;;;N;;;;; -0950;DEVANAGARI OM;Lo;0;L;;;;;N;;;;; -0951;DEVANAGARI STRESS SIGN UDATTA;Mn;230;NSM;;;;;N;;;;; -0952;DEVANAGARI STRESS SIGN ANUDATTA;Mn;220;NSM;;;;;N;;;;; -0953;DEVANAGARI GRAVE ACCENT;Mn;230;NSM;;;;;N;;;;; -0954;DEVANAGARI ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;; -0955;DEVANAGARI VOWEL SIGN CANDRA LONG E;Mn;0;NSM;;;;;N;;;;; -0958;DEVANAGARI LETTER QA;Lo;0;L;0915 093C;;;;N;;;;; -0959;DEVANAGARI LETTER KHHA;Lo;0;L;0916 093C;;;;N;;;;; -095A;DEVANAGARI LETTER GHHA;Lo;0;L;0917 093C;;;;N;;;;; -095B;DEVANAGARI LETTER ZA;Lo;0;L;091C 093C;;;;N;;;;; -095C;DEVANAGARI LETTER DDDHA;Lo;0;L;0921 093C;;;;N;;;;; -095D;DEVANAGARI LETTER RHA;Lo;0;L;0922 093C;;;;N;;;;; -095E;DEVANAGARI LETTER FA;Lo;0;L;092B 093C;;;;N;;;;; -095F;DEVANAGARI LETTER YYA;Lo;0;L;092F 093C;;;;N;;;;; -0960;DEVANAGARI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; -0961;DEVANAGARI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; -0962;DEVANAGARI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; -0963;DEVANAGARI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; -0964;DEVANAGARI DANDA;Po;0;L;;;;;N;;;;; -0965;DEVANAGARI DOUBLE DANDA;Po;0;L;;;;;N;;;;; -0966;DEVANAGARI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -0967;DEVANAGARI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -0968;DEVANAGARI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -0969;DEVANAGARI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -096A;DEVANAGARI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -096B;DEVANAGARI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -096C;DEVANAGARI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -096D;DEVANAGARI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -096E;DEVANAGARI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -096F;DEVANAGARI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -0970;DEVANAGARI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;; -0971;DEVANAGARI SIGN HIGH SPACING DOT;Lm;0;L;;;;;N;;;;; -0972;DEVANAGARI LETTER CANDRA A;Lo;0;L;;;;;N;;;;; -0979;DEVANAGARI LETTER ZHA;Lo;0;L;;;;;N;;;;; -097A;DEVANAGARI LETTER HEAVY YA;Lo;0;L;;;;;N;;;;; -097B;DEVANAGARI LETTER GGA;Lo;0;L;;;;;N;;;;; -097C;DEVANAGARI LETTER JJA;Lo;0;L;;;;;N;;;;; -097D;DEVANAGARI LETTER GLOTTAL STOP;Lo;0;L;;;;;N;;;;; -097E;DEVANAGARI LETTER DDDA;Lo;0;L;;;;;N;;;;; -097F;DEVANAGARI LETTER BBA;Lo;0;L;;;;;N;;;;; -0981;BENGALI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; -0982;BENGALI SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; -0983;BENGALI SIGN VISARGA;Mc;0;L;;;;;N;;;;; -0985;BENGALI LETTER A;Lo;0;L;;;;;N;;;;; -0986;BENGALI LETTER AA;Lo;0;L;;;;;N;;;;; -0987;BENGALI LETTER I;Lo;0;L;;;;;N;;;;; -0988;BENGALI LETTER II;Lo;0;L;;;;;N;;;;; -0989;BENGALI LETTER U;Lo;0;L;;;;;N;;;;; -098A;BENGALI LETTER UU;Lo;0;L;;;;;N;;;;; -098B;BENGALI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; -098C;BENGALI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; -098F;BENGALI LETTER E;Lo;0;L;;;;;N;;;;; -0990;BENGALI LETTER AI;Lo;0;L;;;;;N;;;;; -0993;BENGALI LETTER O;Lo;0;L;;;;;N;;;;; -0994;BENGALI LETTER AU;Lo;0;L;;;;;N;;;;; -0995;BENGALI LETTER KA;Lo;0;L;;;;;N;;;;; -0996;BENGALI LETTER KHA;Lo;0;L;;;;;N;;;;; -0997;BENGALI LETTER GA;Lo;0;L;;;;;N;;;;; -0998;BENGALI LETTER GHA;Lo;0;L;;;;;N;;;;; -0999;BENGALI LETTER NGA;Lo;0;L;;;;;N;;;;; -099A;BENGALI LETTER CA;Lo;0;L;;;;;N;;;;; -099B;BENGALI LETTER CHA;Lo;0;L;;;;;N;;;;; -099C;BENGALI LETTER JA;Lo;0;L;;;;;N;;;;; -099D;BENGALI LETTER JHA;Lo;0;L;;;;;N;;;;; -099E;BENGALI LETTER NYA;Lo;0;L;;;;;N;;;;; -099F;BENGALI LETTER TTA;Lo;0;L;;;;;N;;;;; -09A0;BENGALI LETTER TTHA;Lo;0;L;;;;;N;;;;; -09A1;BENGALI LETTER DDA;Lo;0;L;;;;;N;;;;; -09A2;BENGALI LETTER DDHA;Lo;0;L;;;;;N;;;;; -09A3;BENGALI LETTER NNA;Lo;0;L;;;;;N;;;;; -09A4;BENGALI LETTER TA;Lo;0;L;;;;;N;;;;; -09A5;BENGALI LETTER THA;Lo;0;L;;;;;N;;;;; -09A6;BENGALI LETTER DA;Lo;0;L;;;;;N;;;;; -09A7;BENGALI LETTER DHA;Lo;0;L;;;;;N;;;;; -09A8;BENGALI LETTER NA;Lo;0;L;;;;;N;;;;; -09AA;BENGALI LETTER PA;Lo;0;L;;;;;N;;;;; -09AB;BENGALI LETTER PHA;Lo;0;L;;;;;N;;;;; -09AC;BENGALI LETTER BA;Lo;0;L;;;;;N;;;;; -09AD;BENGALI LETTER BHA;Lo;0;L;;;;;N;;;;; -09AE;BENGALI LETTER MA;Lo;0;L;;;;;N;;;;; -09AF;BENGALI LETTER YA;Lo;0;L;;;;;N;;;;; -09B0;BENGALI LETTER RA;Lo;0;L;;;;;N;;;;; -09B2;BENGALI LETTER LA;Lo;0;L;;;;;N;;;;; -09B6;BENGALI LETTER SHA;Lo;0;L;;;;;N;;;;; -09B7;BENGALI LETTER SSA;Lo;0;L;;;;;N;;;;; -09B8;BENGALI LETTER SA;Lo;0;L;;;;;N;;;;; -09B9;BENGALI LETTER HA;Lo;0;L;;;;;N;;;;; -09BC;BENGALI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; -09BD;BENGALI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; -09BE;BENGALI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -09BF;BENGALI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; -09C0;BENGALI VOWEL SIGN II;Mc;0;L;;;;;N;;;;; -09C1;BENGALI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -09C2;BENGALI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; -09C3;BENGALI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; -09C4;BENGALI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;; -09C7;BENGALI VOWEL SIGN E;Mc;0;L;;;;;N;;;;; -09C8;BENGALI VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; -09CB;BENGALI VOWEL SIGN O;Mc;0;L;09C7 09BE;;;;N;;;;; -09CC;BENGALI VOWEL SIGN AU;Mc;0;L;09C7 09D7;;;;N;;;;; -09CD;BENGALI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -09CE;BENGALI LETTER KHANDA TA;Lo;0;L;;;;;N;;;;; -09D7;BENGALI AU LENGTH MARK;Mc;0;L;;;;;N;;;;; -09DC;BENGALI LETTER RRA;Lo;0;L;09A1 09BC;;;;N;;;;; -09DD;BENGALI LETTER RHA;Lo;0;L;09A2 09BC;;;;N;;;;; -09DF;BENGALI LETTER YYA;Lo;0;L;09AF 09BC;;;;N;;;;; -09E0;BENGALI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; -09E1;BENGALI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; -09E2;BENGALI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; -09E3;BENGALI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; -09E6;BENGALI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -09E7;BENGALI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -09E8;BENGALI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -09E9;BENGALI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -09EA;BENGALI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -09EB;BENGALI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -09EC;BENGALI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -09ED;BENGALI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -09EE;BENGALI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -09EF;BENGALI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -09F0;BENGALI LETTER RA WITH MIDDLE DIAGONAL;Lo;0;L;;;;;N;;;;; -09F1;BENGALI LETTER RA WITH LOWER DIAGONAL;Lo;0;L;;;;;N;BENGALI LETTER VA WITH LOWER DIAGONAL;;;; -09F2;BENGALI RUPEE MARK;Sc;0;ET;;;;;N;;;;; -09F3;BENGALI RUPEE SIGN;Sc;0;ET;;;;;N;;;;; -09F4;BENGALI CURRENCY NUMERATOR ONE;No;0;L;;;;1/16;N;;;;; -09F5;BENGALI CURRENCY NUMERATOR TWO;No;0;L;;;;1/8;N;;;;; -09F6;BENGALI CURRENCY NUMERATOR THREE;No;0;L;;;;3/16;N;;;;; -09F7;BENGALI CURRENCY NUMERATOR FOUR;No;0;L;;;;1/4;N;;;;; -09F8;BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR;No;0;L;;;;3/4;N;;;;; -09F9;BENGALI CURRENCY DENOMINATOR SIXTEEN;No;0;L;;;;16;N;;;;; -09FA;BENGALI ISSHAR;So;0;L;;;;;N;;;;; -09FB;BENGALI GANDA MARK;Sc;0;ET;;;;;N;;;;; -0A01;GURMUKHI SIGN ADAK BINDI;Mn;0;NSM;;;;;N;;;;; -0A02;GURMUKHI SIGN BINDI;Mn;0;NSM;;;;;N;;;;; -0A03;GURMUKHI SIGN VISARGA;Mc;0;L;;;;;N;;;;; -0A05;GURMUKHI LETTER A;Lo;0;L;;;;;N;;;;; -0A06;GURMUKHI LETTER AA;Lo;0;L;;;;;N;;;;; -0A07;GURMUKHI LETTER I;Lo;0;L;;;;;N;;;;; -0A08;GURMUKHI LETTER II;Lo;0;L;;;;;N;;;;; -0A09;GURMUKHI LETTER U;Lo;0;L;;;;;N;;;;; -0A0A;GURMUKHI LETTER UU;Lo;0;L;;;;;N;;;;; -0A0F;GURMUKHI LETTER EE;Lo;0;L;;;;;N;;;;; -0A10;GURMUKHI LETTER AI;Lo;0;L;;;;;N;;;;; -0A13;GURMUKHI LETTER OO;Lo;0;L;;;;;N;;;;; -0A14;GURMUKHI LETTER AU;Lo;0;L;;;;;N;;;;; -0A15;GURMUKHI LETTER KA;Lo;0;L;;;;;N;;;;; -0A16;GURMUKHI LETTER KHA;Lo;0;L;;;;;N;;;;; -0A17;GURMUKHI LETTER GA;Lo;0;L;;;;;N;;;;; -0A18;GURMUKHI LETTER GHA;Lo;0;L;;;;;N;;;;; -0A19;GURMUKHI LETTER NGA;Lo;0;L;;;;;N;;;;; -0A1A;GURMUKHI LETTER CA;Lo;0;L;;;;;N;;;;; -0A1B;GURMUKHI LETTER CHA;Lo;0;L;;;;;N;;;;; -0A1C;GURMUKHI LETTER JA;Lo;0;L;;;;;N;;;;; -0A1D;GURMUKHI LETTER JHA;Lo;0;L;;;;;N;;;;; -0A1E;GURMUKHI LETTER NYA;Lo;0;L;;;;;N;;;;; -0A1F;GURMUKHI LETTER TTA;Lo;0;L;;;;;N;;;;; -0A20;GURMUKHI LETTER TTHA;Lo;0;L;;;;;N;;;;; -0A21;GURMUKHI LETTER DDA;Lo;0;L;;;;;N;;;;; -0A22;GURMUKHI LETTER DDHA;Lo;0;L;;;;;N;;;;; -0A23;GURMUKHI LETTER NNA;Lo;0;L;;;;;N;;;;; -0A24;GURMUKHI LETTER TA;Lo;0;L;;;;;N;;;;; -0A25;GURMUKHI LETTER THA;Lo;0;L;;;;;N;;;;; -0A26;GURMUKHI LETTER DA;Lo;0;L;;;;;N;;;;; -0A27;GURMUKHI LETTER DHA;Lo;0;L;;;;;N;;;;; -0A28;GURMUKHI LETTER NA;Lo;0;L;;;;;N;;;;; -0A2A;GURMUKHI LETTER PA;Lo;0;L;;;;;N;;;;; -0A2B;GURMUKHI LETTER PHA;Lo;0;L;;;;;N;;;;; -0A2C;GURMUKHI LETTER BA;Lo;0;L;;;;;N;;;;; -0A2D;GURMUKHI LETTER BHA;Lo;0;L;;;;;N;;;;; -0A2E;GURMUKHI LETTER MA;Lo;0;L;;;;;N;;;;; -0A2F;GURMUKHI LETTER YA;Lo;0;L;;;;;N;;;;; -0A30;GURMUKHI LETTER RA;Lo;0;L;;;;;N;;;;; -0A32;GURMUKHI LETTER LA;Lo;0;L;;;;;N;;;;; -0A33;GURMUKHI LETTER LLA;Lo;0;L;0A32 0A3C;;;;N;;;;; -0A35;GURMUKHI LETTER VA;Lo;0;L;;;;;N;;;;; -0A36;GURMUKHI LETTER SHA;Lo;0;L;0A38 0A3C;;;;N;;;;; -0A38;GURMUKHI LETTER SA;Lo;0;L;;;;;N;;;;; -0A39;GURMUKHI LETTER HA;Lo;0;L;;;;;N;;;;; -0A3C;GURMUKHI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; -0A3E;GURMUKHI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -0A3F;GURMUKHI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; -0A40;GURMUKHI VOWEL SIGN II;Mc;0;L;;;;;N;;;;; -0A41;GURMUKHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -0A42;GURMUKHI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; -0A47;GURMUKHI VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;; -0A48;GURMUKHI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; -0A4B;GURMUKHI VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;; -0A4C;GURMUKHI VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;; -0A4D;GURMUKHI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -0A51;GURMUKHI SIGN UDAAT;Mn;0;NSM;;;;;N;;;;; -0A59;GURMUKHI LETTER KHHA;Lo;0;L;0A16 0A3C;;;;N;;;;; -0A5A;GURMUKHI LETTER GHHA;Lo;0;L;0A17 0A3C;;;;N;;;;; -0A5B;GURMUKHI LETTER ZA;Lo;0;L;0A1C 0A3C;;;;N;;;;; -0A5C;GURMUKHI LETTER RRA;Lo;0;L;;;;;N;;;;; -0A5E;GURMUKHI LETTER FA;Lo;0;L;0A2B 0A3C;;;;N;;;;; -0A66;GURMUKHI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -0A67;GURMUKHI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -0A68;GURMUKHI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -0A69;GURMUKHI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -0A6A;GURMUKHI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -0A6B;GURMUKHI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -0A6C;GURMUKHI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -0A6D;GURMUKHI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -0A6E;GURMUKHI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -0A6F;GURMUKHI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -0A70;GURMUKHI TIPPI;Mn;0;NSM;;;;;N;;;;; -0A71;GURMUKHI ADDAK;Mn;0;NSM;;;;;N;;;;; -0A72;GURMUKHI IRI;Lo;0;L;;;;;N;;;;; -0A73;GURMUKHI URA;Lo;0;L;;;;;N;;;;; -0A74;GURMUKHI EK ONKAR;Lo;0;L;;;;;N;;;;; -0A75;GURMUKHI SIGN YAKASH;Mn;0;NSM;;;;;N;;;;; -0A81;GUJARATI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; -0A82;GUJARATI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; -0A83;GUJARATI SIGN VISARGA;Mc;0;L;;;;;N;;;;; -0A85;GUJARATI LETTER A;Lo;0;L;;;;;N;;;;; -0A86;GUJARATI LETTER AA;Lo;0;L;;;;;N;;;;; -0A87;GUJARATI LETTER I;Lo;0;L;;;;;N;;;;; -0A88;GUJARATI LETTER II;Lo;0;L;;;;;N;;;;; -0A89;GUJARATI LETTER U;Lo;0;L;;;;;N;;;;; -0A8A;GUJARATI LETTER UU;Lo;0;L;;;;;N;;;;; -0A8B;GUJARATI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; -0A8C;GUJARATI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; -0A8D;GUJARATI VOWEL CANDRA E;Lo;0;L;;;;;N;;;;; -0A8F;GUJARATI LETTER E;Lo;0;L;;;;;N;;;;; -0A90;GUJARATI LETTER AI;Lo;0;L;;;;;N;;;;; -0A91;GUJARATI VOWEL CANDRA O;Lo;0;L;;;;;N;;;;; -0A93;GUJARATI LETTER O;Lo;0;L;;;;;N;;;;; -0A94;GUJARATI LETTER AU;Lo;0;L;;;;;N;;;;; -0A95;GUJARATI LETTER KA;Lo;0;L;;;;;N;;;;; -0A96;GUJARATI LETTER KHA;Lo;0;L;;;;;N;;;;; -0A97;GUJARATI LETTER GA;Lo;0;L;;;;;N;;;;; -0A98;GUJARATI LETTER GHA;Lo;0;L;;;;;N;;;;; -0A99;GUJARATI LETTER NGA;Lo;0;L;;;;;N;;;;; -0A9A;GUJARATI LETTER CA;Lo;0;L;;;;;N;;;;; -0A9B;GUJARATI LETTER CHA;Lo;0;L;;;;;N;;;;; -0A9C;GUJARATI LETTER JA;Lo;0;L;;;;;N;;;;; -0A9D;GUJARATI LETTER JHA;Lo;0;L;;;;;N;;;;; -0A9E;GUJARATI LETTER NYA;Lo;0;L;;;;;N;;;;; -0A9F;GUJARATI LETTER TTA;Lo;0;L;;;;;N;;;;; -0AA0;GUJARATI LETTER TTHA;Lo;0;L;;;;;N;;;;; -0AA1;GUJARATI LETTER DDA;Lo;0;L;;;;;N;;;;; -0AA2;GUJARATI LETTER DDHA;Lo;0;L;;;;;N;;;;; -0AA3;GUJARATI LETTER NNA;Lo;0;L;;;;;N;;;;; -0AA4;GUJARATI LETTER TA;Lo;0;L;;;;;N;;;;; -0AA5;GUJARATI LETTER THA;Lo;0;L;;;;;N;;;;; -0AA6;GUJARATI LETTER DA;Lo;0;L;;;;;N;;;;; -0AA7;GUJARATI LETTER DHA;Lo;0;L;;;;;N;;;;; -0AA8;GUJARATI LETTER NA;Lo;0;L;;;;;N;;;;; -0AAA;GUJARATI LETTER PA;Lo;0;L;;;;;N;;;;; -0AAB;GUJARATI LETTER PHA;Lo;0;L;;;;;N;;;;; -0AAC;GUJARATI LETTER BA;Lo;0;L;;;;;N;;;;; -0AAD;GUJARATI LETTER BHA;Lo;0;L;;;;;N;;;;; -0AAE;GUJARATI LETTER MA;Lo;0;L;;;;;N;;;;; -0AAF;GUJARATI LETTER YA;Lo;0;L;;;;;N;;;;; -0AB0;GUJARATI LETTER RA;Lo;0;L;;;;;N;;;;; -0AB2;GUJARATI LETTER LA;Lo;0;L;;;;;N;;;;; -0AB3;GUJARATI LETTER LLA;Lo;0;L;;;;;N;;;;; -0AB5;GUJARATI LETTER VA;Lo;0;L;;;;;N;;;;; -0AB6;GUJARATI LETTER SHA;Lo;0;L;;;;;N;;;;; -0AB7;GUJARATI LETTER SSA;Lo;0;L;;;;;N;;;;; -0AB8;GUJARATI LETTER SA;Lo;0;L;;;;;N;;;;; -0AB9;GUJARATI LETTER HA;Lo;0;L;;;;;N;;;;; -0ABC;GUJARATI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; -0ABD;GUJARATI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; -0ABE;GUJARATI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -0ABF;GUJARATI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; -0AC0;GUJARATI VOWEL SIGN II;Mc;0;L;;;;;N;;;;; -0AC1;GUJARATI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -0AC2;GUJARATI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; -0AC3;GUJARATI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; -0AC4;GUJARATI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;; -0AC5;GUJARATI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;; -0AC7;GUJARATI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; -0AC8;GUJARATI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; -0AC9;GUJARATI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;; -0ACB;GUJARATI VOWEL SIGN O;Mc;0;L;;;;;N;;;;; -0ACC;GUJARATI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; -0ACD;GUJARATI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -0AD0;GUJARATI OM;Lo;0;L;;;;;N;;;;; -0AE0;GUJARATI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; -0AE1;GUJARATI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; -0AE2;GUJARATI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; -0AE3;GUJARATI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; -0AE6;GUJARATI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -0AE7;GUJARATI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -0AE8;GUJARATI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -0AE9;GUJARATI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -0AEA;GUJARATI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -0AEB;GUJARATI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -0AEC;GUJARATI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -0AED;GUJARATI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -0AEE;GUJARATI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -0AEF;GUJARATI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -0AF1;GUJARATI RUPEE SIGN;Sc;0;ET;;;;;N;;;;; -0B01;ORIYA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; -0B02;ORIYA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; -0B03;ORIYA SIGN VISARGA;Mc;0;L;;;;;N;;;;; -0B05;ORIYA LETTER A;Lo;0;L;;;;;N;;;;; -0B06;ORIYA LETTER AA;Lo;0;L;;;;;N;;;;; -0B07;ORIYA LETTER I;Lo;0;L;;;;;N;;;;; -0B08;ORIYA LETTER II;Lo;0;L;;;;;N;;;;; -0B09;ORIYA LETTER U;Lo;0;L;;;;;N;;;;; -0B0A;ORIYA LETTER UU;Lo;0;L;;;;;N;;;;; -0B0B;ORIYA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; -0B0C;ORIYA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; -0B0F;ORIYA LETTER E;Lo;0;L;;;;;N;;;;; -0B10;ORIYA LETTER AI;Lo;0;L;;;;;N;;;;; -0B13;ORIYA LETTER O;Lo;0;L;;;;;N;;;;; -0B14;ORIYA LETTER AU;Lo;0;L;;;;;N;;;;; -0B15;ORIYA LETTER KA;Lo;0;L;;;;;N;;;;; -0B16;ORIYA LETTER KHA;Lo;0;L;;;;;N;;;;; -0B17;ORIYA LETTER GA;Lo;0;L;;;;;N;;;;; -0B18;ORIYA LETTER GHA;Lo;0;L;;;;;N;;;;; -0B19;ORIYA LETTER NGA;Lo;0;L;;;;;N;;;;; -0B1A;ORIYA LETTER CA;Lo;0;L;;;;;N;;;;; -0B1B;ORIYA LETTER CHA;Lo;0;L;;;;;N;;;;; -0B1C;ORIYA LETTER JA;Lo;0;L;;;;;N;;;;; -0B1D;ORIYA LETTER JHA;Lo;0;L;;;;;N;;;;; -0B1E;ORIYA LETTER NYA;Lo;0;L;;;;;N;;;;; -0B1F;ORIYA LETTER TTA;Lo;0;L;;;;;N;;;;; -0B20;ORIYA LETTER TTHA;Lo;0;L;;;;;N;;;;; -0B21;ORIYA LETTER DDA;Lo;0;L;;;;;N;;;;; -0B22;ORIYA LETTER DDHA;Lo;0;L;;;;;N;;;;; -0B23;ORIYA LETTER NNA;Lo;0;L;;;;;N;;;;; -0B24;ORIYA LETTER TA;Lo;0;L;;;;;N;;;;; -0B25;ORIYA LETTER THA;Lo;0;L;;;;;N;;;;; -0B26;ORIYA LETTER DA;Lo;0;L;;;;;N;;;;; -0B27;ORIYA LETTER DHA;Lo;0;L;;;;;N;;;;; -0B28;ORIYA LETTER NA;Lo;0;L;;;;;N;;;;; -0B2A;ORIYA LETTER PA;Lo;0;L;;;;;N;;;;; -0B2B;ORIYA LETTER PHA;Lo;0;L;;;;;N;;;;; -0B2C;ORIYA LETTER BA;Lo;0;L;;;;;N;;;;; -0B2D;ORIYA LETTER BHA;Lo;0;L;;;;;N;;;;; -0B2E;ORIYA LETTER MA;Lo;0;L;;;;;N;;;;; -0B2F;ORIYA LETTER YA;Lo;0;L;;;;;N;;;;; -0B30;ORIYA LETTER RA;Lo;0;L;;;;;N;;;;; -0B32;ORIYA LETTER LA;Lo;0;L;;;;;N;;;;; -0B33;ORIYA LETTER LLA;Lo;0;L;;;;;N;;;;; -0B35;ORIYA LETTER VA;Lo;0;L;;;;;N;;;;; -0B36;ORIYA LETTER SHA;Lo;0;L;;;;;N;;;;; -0B37;ORIYA LETTER SSA;Lo;0;L;;;;;N;;;;; -0B38;ORIYA LETTER SA;Lo;0;L;;;;;N;;;;; -0B39;ORIYA LETTER HA;Lo;0;L;;;;;N;;;;; -0B3C;ORIYA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; -0B3D;ORIYA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; -0B3E;ORIYA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -0B3F;ORIYA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -0B40;ORIYA VOWEL SIGN II;Mc;0;L;;;;;N;;;;; -0B41;ORIYA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -0B42;ORIYA VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; -0B43;ORIYA VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; -0B44;ORIYA VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;; -0B47;ORIYA VOWEL SIGN E;Mc;0;L;;;;;N;;;;; -0B48;ORIYA VOWEL SIGN AI;Mc;0;L;0B47 0B56;;;;N;;;;; -0B4B;ORIYA VOWEL SIGN O;Mc;0;L;0B47 0B3E;;;;N;;;;; -0B4C;ORIYA VOWEL SIGN AU;Mc;0;L;0B47 0B57;;;;N;;;;; -0B4D;ORIYA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -0B56;ORIYA AI LENGTH MARK;Mn;0;NSM;;;;;N;;;;; -0B57;ORIYA AU LENGTH MARK;Mc;0;L;;;;;N;;;;; -0B5C;ORIYA LETTER RRA;Lo;0;L;0B21 0B3C;;;;N;;;;; -0B5D;ORIYA LETTER RHA;Lo;0;L;0B22 0B3C;;;;N;;;;; -0B5F;ORIYA LETTER YYA;Lo;0;L;;;;;N;;;;; -0B60;ORIYA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; -0B61;ORIYA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; -0B62;ORIYA VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; -0B63;ORIYA VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; -0B66;ORIYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -0B67;ORIYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -0B68;ORIYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -0B69;ORIYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -0B6A;ORIYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -0B6B;ORIYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -0B6C;ORIYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -0B6D;ORIYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -0B6E;ORIYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -0B6F;ORIYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -0B70;ORIYA ISSHAR;So;0;L;;;;;N;;;;; -0B71;ORIYA LETTER WA;Lo;0;L;;;;;N;;;;; -0B82;TAMIL SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; -0B83;TAMIL SIGN VISARGA;Lo;0;L;;;;;N;;;;; -0B85;TAMIL LETTER A;Lo;0;L;;;;;N;;;;; -0B86;TAMIL LETTER AA;Lo;0;L;;;;;N;;;;; -0B87;TAMIL LETTER I;Lo;0;L;;;;;N;;;;; -0B88;TAMIL LETTER II;Lo;0;L;;;;;N;;;;; -0B89;TAMIL LETTER U;Lo;0;L;;;;;N;;;;; -0B8A;TAMIL LETTER UU;Lo;0;L;;;;;N;;;;; -0B8E;TAMIL LETTER E;Lo;0;L;;;;;N;;;;; -0B8F;TAMIL LETTER EE;Lo;0;L;;;;;N;;;;; -0B90;TAMIL LETTER AI;Lo;0;L;;;;;N;;;;; -0B92;TAMIL LETTER O;Lo;0;L;;;;;N;;;;; -0B93;TAMIL LETTER OO;Lo;0;L;;;;;N;;;;; -0B94;TAMIL LETTER AU;Lo;0;L;0B92 0BD7;;;;N;;;;; -0B95;TAMIL LETTER KA;Lo;0;L;;;;;N;;;;; -0B99;TAMIL LETTER NGA;Lo;0;L;;;;;N;;;;; -0B9A;TAMIL LETTER CA;Lo;0;L;;;;;N;;;;; -0B9C;TAMIL LETTER JA;Lo;0;L;;;;;N;;;;; -0B9E;TAMIL LETTER NYA;Lo;0;L;;;;;N;;;;; -0B9F;TAMIL LETTER TTA;Lo;0;L;;;;;N;;;;; -0BA3;TAMIL LETTER NNA;Lo;0;L;;;;;N;;;;; -0BA4;TAMIL LETTER TA;Lo;0;L;;;;;N;;;;; -0BA8;TAMIL LETTER NA;Lo;0;L;;;;;N;;;;; -0BA9;TAMIL LETTER NNNA;Lo;0;L;;;;;N;;;;; -0BAA;TAMIL LETTER PA;Lo;0;L;;;;;N;;;;; -0BAE;TAMIL LETTER MA;Lo;0;L;;;;;N;;;;; -0BAF;TAMIL LETTER YA;Lo;0;L;;;;;N;;;;; -0BB0;TAMIL LETTER RA;Lo;0;L;;;;;N;;;;; -0BB1;TAMIL LETTER RRA;Lo;0;L;;;;;N;;;;; -0BB2;TAMIL LETTER LA;Lo;0;L;;;;;N;;;;; -0BB3;TAMIL LETTER LLA;Lo;0;L;;;;;N;;;;; -0BB4;TAMIL LETTER LLLA;Lo;0;L;;;;;N;;;;; -0BB5;TAMIL LETTER VA;Lo;0;L;;;;;N;;;;; -0BB6;TAMIL LETTER SHA;Lo;0;L;;;;;N;;;;; -0BB7;TAMIL LETTER SSA;Lo;0;L;;;;;N;;;;; -0BB8;TAMIL LETTER SA;Lo;0;L;;;;;N;;;;; -0BB9;TAMIL LETTER HA;Lo;0;L;;;;;N;;;;; -0BBE;TAMIL VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -0BBF;TAMIL VOWEL SIGN I;Mc;0;L;;;;;N;;;;; -0BC0;TAMIL VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; -0BC1;TAMIL VOWEL SIGN U;Mc;0;L;;;;;N;;;;; -0BC2;TAMIL VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; -0BC6;TAMIL VOWEL SIGN E;Mc;0;L;;;;;N;;;;; -0BC7;TAMIL VOWEL SIGN EE;Mc;0;L;;;;;N;;;;; -0BC8;TAMIL VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; -0BCA;TAMIL VOWEL SIGN O;Mc;0;L;0BC6 0BBE;;;;N;;;;; -0BCB;TAMIL VOWEL SIGN OO;Mc;0;L;0BC7 0BBE;;;;N;;;;; -0BCC;TAMIL VOWEL SIGN AU;Mc;0;L;0BC6 0BD7;;;;N;;;;; -0BCD;TAMIL SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -0BD0;TAMIL OM;Lo;0;L;;;;;N;;;;; -0BD7;TAMIL AU LENGTH MARK;Mc;0;L;;;;;N;;;;; -0BE6;TAMIL DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -0BE7;TAMIL DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -0BE8;TAMIL DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -0BE9;TAMIL DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -0BEA;TAMIL DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -0BEB;TAMIL DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -0BEC;TAMIL DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -0BED;TAMIL DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -0BEE;TAMIL DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -0BEF;TAMIL DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -0BF0;TAMIL NUMBER TEN;No;0;L;;;;10;N;;;;; -0BF1;TAMIL NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;; -0BF2;TAMIL NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;; -0BF3;TAMIL DAY SIGN;So;0;ON;;;;;N;;;;; -0BF4;TAMIL MONTH SIGN;So;0;ON;;;;;N;;;;; -0BF5;TAMIL YEAR SIGN;So;0;ON;;;;;N;;;;; -0BF6;TAMIL DEBIT SIGN;So;0;ON;;;;;N;;;;; -0BF7;TAMIL CREDIT SIGN;So;0;ON;;;;;N;;;;; -0BF8;TAMIL AS ABOVE SIGN;So;0;ON;;;;;N;;;;; -0BF9;TAMIL RUPEE SIGN;Sc;0;ET;;;;;N;;;;; -0BFA;TAMIL NUMBER SIGN;So;0;ON;;;;;N;;;;; -0C01;TELUGU SIGN CANDRABINDU;Mc;0;L;;;;;N;;;;; -0C02;TELUGU SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; -0C03;TELUGU SIGN VISARGA;Mc;0;L;;;;;N;;;;; -0C05;TELUGU LETTER A;Lo;0;L;;;;;N;;;;; -0C06;TELUGU LETTER AA;Lo;0;L;;;;;N;;;;; -0C07;TELUGU LETTER I;Lo;0;L;;;;;N;;;;; -0C08;TELUGU LETTER II;Lo;0;L;;;;;N;;;;; -0C09;TELUGU LETTER U;Lo;0;L;;;;;N;;;;; -0C0A;TELUGU LETTER UU;Lo;0;L;;;;;N;;;;; -0C0B;TELUGU LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; -0C0C;TELUGU LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; -0C0E;TELUGU LETTER E;Lo;0;L;;;;;N;;;;; -0C0F;TELUGU LETTER EE;Lo;0;L;;;;;N;;;;; -0C10;TELUGU LETTER AI;Lo;0;L;;;;;N;;;;; -0C12;TELUGU LETTER O;Lo;0;L;;;;;N;;;;; -0C13;TELUGU LETTER OO;Lo;0;L;;;;;N;;;;; -0C14;TELUGU LETTER AU;Lo;0;L;;;;;N;;;;; -0C15;TELUGU LETTER KA;Lo;0;L;;;;;N;;;;; -0C16;TELUGU LETTER KHA;Lo;0;L;;;;;N;;;;; -0C17;TELUGU LETTER GA;Lo;0;L;;;;;N;;;;; -0C18;TELUGU LETTER GHA;Lo;0;L;;;;;N;;;;; -0C19;TELUGU LETTER NGA;Lo;0;L;;;;;N;;;;; -0C1A;TELUGU LETTER CA;Lo;0;L;;;;;N;;;;; -0C1B;TELUGU LETTER CHA;Lo;0;L;;;;;N;;;;; -0C1C;TELUGU LETTER JA;Lo;0;L;;;;;N;;;;; -0C1D;TELUGU LETTER JHA;Lo;0;L;;;;;N;;;;; -0C1E;TELUGU LETTER NYA;Lo;0;L;;;;;N;;;;; -0C1F;TELUGU LETTER TTA;Lo;0;L;;;;;N;;;;; -0C20;TELUGU LETTER TTHA;Lo;0;L;;;;;N;;;;; -0C21;TELUGU LETTER DDA;Lo;0;L;;;;;N;;;;; -0C22;TELUGU LETTER DDHA;Lo;0;L;;;;;N;;;;; -0C23;TELUGU LETTER NNA;Lo;0;L;;;;;N;;;;; -0C24;TELUGU LETTER TA;Lo;0;L;;;;;N;;;;; -0C25;TELUGU LETTER THA;Lo;0;L;;;;;N;;;;; -0C26;TELUGU LETTER DA;Lo;0;L;;;;;N;;;;; -0C27;TELUGU LETTER DHA;Lo;0;L;;;;;N;;;;; -0C28;TELUGU LETTER NA;Lo;0;L;;;;;N;;;;; -0C2A;TELUGU LETTER PA;Lo;0;L;;;;;N;;;;; -0C2B;TELUGU LETTER PHA;Lo;0;L;;;;;N;;;;; -0C2C;TELUGU LETTER BA;Lo;0;L;;;;;N;;;;; -0C2D;TELUGU LETTER BHA;Lo;0;L;;;;;N;;;;; -0C2E;TELUGU LETTER MA;Lo;0;L;;;;;N;;;;; -0C2F;TELUGU LETTER YA;Lo;0;L;;;;;N;;;;; -0C30;TELUGU LETTER RA;Lo;0;L;;;;;N;;;;; -0C31;TELUGU LETTER RRA;Lo;0;L;;;;;N;;;;; -0C32;TELUGU LETTER LA;Lo;0;L;;;;;N;;;;; -0C33;TELUGU LETTER LLA;Lo;0;L;;;;;N;;;;; -0C35;TELUGU LETTER VA;Lo;0;L;;;;;N;;;;; -0C36;TELUGU LETTER SHA;Lo;0;L;;;;;N;;;;; -0C37;TELUGU LETTER SSA;Lo;0;L;;;;;N;;;;; -0C38;TELUGU LETTER SA;Lo;0;L;;;;;N;;;;; -0C39;TELUGU LETTER HA;Lo;0;L;;;;;N;;;;; -0C3D;TELUGU SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; -0C3E;TELUGU VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;; -0C3F;TELUGU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -0C40;TELUGU VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; -0C41;TELUGU VOWEL SIGN U;Mc;0;L;;;;;N;;;;; -0C42;TELUGU VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; -0C43;TELUGU VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;; -0C44;TELUGU VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;; -0C46;TELUGU VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; -0C47;TELUGU VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;; -0C48;TELUGU VOWEL SIGN AI;Mn;0;NSM;0C46 0C56;;;;N;;;;; -0C4A;TELUGU VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;; -0C4B;TELUGU VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;; -0C4C;TELUGU VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;; -0C4D;TELUGU SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -0C55;TELUGU LENGTH MARK;Mn;84;NSM;;;;;N;;;;; -0C56;TELUGU AI LENGTH MARK;Mn;91;NSM;;;;;N;;;;; -0C58;TELUGU LETTER TSA;Lo;0;L;;;;;N;;;;; -0C59;TELUGU LETTER DZA;Lo;0;L;;;;;N;;;;; -0C60;TELUGU LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; -0C61;TELUGU LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; -0C62;TELUGU VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; -0C63;TELUGU VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; -0C66;TELUGU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -0C67;TELUGU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -0C68;TELUGU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -0C69;TELUGU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -0C6A;TELUGU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -0C6B;TELUGU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -0C6C;TELUGU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -0C6D;TELUGU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -0C6E;TELUGU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -0C6F;TELUGU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -0C78;TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR;No;0;ON;;;;0;N;;;;; -0C79;TELUGU FRACTION DIGIT ONE FOR ODD POWERS OF FOUR;No;0;ON;;;;1;N;;;;; -0C7A;TELUGU FRACTION DIGIT TWO FOR ODD POWERS OF FOUR;No;0;ON;;;;2;N;;;;; -0C7B;TELUGU FRACTION DIGIT THREE FOR ODD POWERS OF FOUR;No;0;ON;;;;3;N;;;;; -0C7C;TELUGU FRACTION DIGIT ONE FOR EVEN POWERS OF FOUR;No;0;ON;;;;1;N;;;;; -0C7D;TELUGU FRACTION DIGIT TWO FOR EVEN POWERS OF FOUR;No;0;ON;;;;2;N;;;;; -0C7E;TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR;No;0;ON;;;;3;N;;;;; -0C7F;TELUGU SIGN TUUMU;So;0;L;;;;;N;;;;; -0C82;KANNADA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; -0C83;KANNADA SIGN VISARGA;Mc;0;L;;;;;N;;;;; -0C85;KANNADA LETTER A;Lo;0;L;;;;;N;;;;; -0C86;KANNADA LETTER AA;Lo;0;L;;;;;N;;;;; -0C87;KANNADA LETTER I;Lo;0;L;;;;;N;;;;; -0C88;KANNADA LETTER II;Lo;0;L;;;;;N;;;;; -0C89;KANNADA LETTER U;Lo;0;L;;;;;N;;;;; -0C8A;KANNADA LETTER UU;Lo;0;L;;;;;N;;;;; -0C8B;KANNADA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; -0C8C;KANNADA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; -0C8E;KANNADA LETTER E;Lo;0;L;;;;;N;;;;; -0C8F;KANNADA LETTER EE;Lo;0;L;;;;;N;;;;; -0C90;KANNADA LETTER AI;Lo;0;L;;;;;N;;;;; -0C92;KANNADA LETTER O;Lo;0;L;;;;;N;;;;; -0C93;KANNADA LETTER OO;Lo;0;L;;;;;N;;;;; -0C94;KANNADA LETTER AU;Lo;0;L;;;;;N;;;;; -0C95;KANNADA LETTER KA;Lo;0;L;;;;;N;;;;; -0C96;KANNADA LETTER KHA;Lo;0;L;;;;;N;;;;; -0C97;KANNADA LETTER GA;Lo;0;L;;;;;N;;;;; -0C98;KANNADA LETTER GHA;Lo;0;L;;;;;N;;;;; -0C99;KANNADA LETTER NGA;Lo;0;L;;;;;N;;;;; -0C9A;KANNADA LETTER CA;Lo;0;L;;;;;N;;;;; -0C9B;KANNADA LETTER CHA;Lo;0;L;;;;;N;;;;; -0C9C;KANNADA LETTER JA;Lo;0;L;;;;;N;;;;; -0C9D;KANNADA LETTER JHA;Lo;0;L;;;;;N;;;;; -0C9E;KANNADA LETTER NYA;Lo;0;L;;;;;N;;;;; -0C9F;KANNADA LETTER TTA;Lo;0;L;;;;;N;;;;; -0CA0;KANNADA LETTER TTHA;Lo;0;L;;;;;N;;;;; -0CA1;KANNADA LETTER DDA;Lo;0;L;;;;;N;;;;; -0CA2;KANNADA LETTER DDHA;Lo;0;L;;;;;N;;;;; -0CA3;KANNADA LETTER NNA;Lo;0;L;;;;;N;;;;; -0CA4;KANNADA LETTER TA;Lo;0;L;;;;;N;;;;; -0CA5;KANNADA LETTER THA;Lo;0;L;;;;;N;;;;; -0CA6;KANNADA LETTER DA;Lo;0;L;;;;;N;;;;; -0CA7;KANNADA LETTER DHA;Lo;0;L;;;;;N;;;;; -0CA8;KANNADA LETTER NA;Lo;0;L;;;;;N;;;;; -0CAA;KANNADA LETTER PA;Lo;0;L;;;;;N;;;;; -0CAB;KANNADA LETTER PHA;Lo;0;L;;;;;N;;;;; -0CAC;KANNADA LETTER BA;Lo;0;L;;;;;N;;;;; -0CAD;KANNADA LETTER BHA;Lo;0;L;;;;;N;;;;; -0CAE;KANNADA LETTER MA;Lo;0;L;;;;;N;;;;; -0CAF;KANNADA LETTER YA;Lo;0;L;;;;;N;;;;; -0CB0;KANNADA LETTER RA;Lo;0;L;;;;;N;;;;; -0CB1;KANNADA LETTER RRA;Lo;0;L;;;;;N;;;;; -0CB2;KANNADA LETTER LA;Lo;0;L;;;;;N;;;;; -0CB3;KANNADA LETTER LLA;Lo;0;L;;;;;N;;;;; -0CB5;KANNADA LETTER VA;Lo;0;L;;;;;N;;;;; -0CB6;KANNADA LETTER SHA;Lo;0;L;;;;;N;;;;; -0CB7;KANNADA LETTER SSA;Lo;0;L;;;;;N;;;;; -0CB8;KANNADA LETTER SA;Lo;0;L;;;;;N;;;;; -0CB9;KANNADA LETTER HA;Lo;0;L;;;;;N;;;;; -0CBC;KANNADA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; -0CBD;KANNADA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; -0CBE;KANNADA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -0CBF;KANNADA VOWEL SIGN I;Mn;0;L;;;;;N;;;;; -0CC0;KANNADA VOWEL SIGN II;Mc;0;L;0CBF 0CD5;;;;N;;;;; -0CC1;KANNADA VOWEL SIGN U;Mc;0;L;;;;;N;;;;; -0CC2;KANNADA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; -0CC3;KANNADA VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;; -0CC4;KANNADA VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;; -0CC6;KANNADA VOWEL SIGN E;Mn;0;L;;;;;N;;;;; -0CC7;KANNADA VOWEL SIGN EE;Mc;0;L;0CC6 0CD5;;;;N;;;;; -0CC8;KANNADA VOWEL SIGN AI;Mc;0;L;0CC6 0CD6;;;;N;;;;; -0CCA;KANNADA VOWEL SIGN O;Mc;0;L;0CC6 0CC2;;;;N;;;;; -0CCB;KANNADA VOWEL SIGN OO;Mc;0;L;0CCA 0CD5;;;;N;;;;; -0CCC;KANNADA VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;; -0CCD;KANNADA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -0CD5;KANNADA LENGTH MARK;Mc;0;L;;;;;N;;;;; -0CD6;KANNADA AI LENGTH MARK;Mc;0;L;;;;;N;;;;; -0CDE;KANNADA LETTER FA;Lo;0;L;;;;;N;;;;; -0CE0;KANNADA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; -0CE1;KANNADA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; -0CE2;KANNADA VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; -0CE3;KANNADA VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; -0CE6;KANNADA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -0CE7;KANNADA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -0CE8;KANNADA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -0CE9;KANNADA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -0CEA;KANNADA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -0CEB;KANNADA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -0CEC;KANNADA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -0CED;KANNADA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -0CEE;KANNADA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -0CEF;KANNADA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -0CF1;KANNADA SIGN JIHVAMULIYA;So;0;ON;;;;;N;;;;; -0CF2;KANNADA SIGN UPADHMANIYA;So;0;ON;;;;;N;;;;; -0D02;MALAYALAM SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; -0D03;MALAYALAM SIGN VISARGA;Mc;0;L;;;;;N;;;;; -0D05;MALAYALAM LETTER A;Lo;0;L;;;;;N;;;;; -0D06;MALAYALAM LETTER AA;Lo;0;L;;;;;N;;;;; -0D07;MALAYALAM LETTER I;Lo;0;L;;;;;N;;;;; -0D08;MALAYALAM LETTER II;Lo;0;L;;;;;N;;;;; -0D09;MALAYALAM LETTER U;Lo;0;L;;;;;N;;;;; -0D0A;MALAYALAM LETTER UU;Lo;0;L;;;;;N;;;;; -0D0B;MALAYALAM LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; -0D0C;MALAYALAM LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; -0D0E;MALAYALAM LETTER E;Lo;0;L;;;;;N;;;;; -0D0F;MALAYALAM LETTER EE;Lo;0;L;;;;;N;;;;; -0D10;MALAYALAM LETTER AI;Lo;0;L;;;;;N;;;;; -0D12;MALAYALAM LETTER O;Lo;0;L;;;;;N;;;;; -0D13;MALAYALAM LETTER OO;Lo;0;L;;;;;N;;;;; -0D14;MALAYALAM LETTER AU;Lo;0;L;;;;;N;;;;; -0D15;MALAYALAM LETTER KA;Lo;0;L;;;;;N;;;;; -0D16;MALAYALAM LETTER KHA;Lo;0;L;;;;;N;;;;; -0D17;MALAYALAM LETTER GA;Lo;0;L;;;;;N;;;;; -0D18;MALAYALAM LETTER GHA;Lo;0;L;;;;;N;;;;; -0D19;MALAYALAM LETTER NGA;Lo;0;L;;;;;N;;;;; -0D1A;MALAYALAM LETTER CA;Lo;0;L;;;;;N;;;;; -0D1B;MALAYALAM LETTER CHA;Lo;0;L;;;;;N;;;;; -0D1C;MALAYALAM LETTER JA;Lo;0;L;;;;;N;;;;; -0D1D;MALAYALAM LETTER JHA;Lo;0;L;;;;;N;;;;; -0D1E;MALAYALAM LETTER NYA;Lo;0;L;;;;;N;;;;; -0D1F;MALAYALAM LETTER TTA;Lo;0;L;;;;;N;;;;; -0D20;MALAYALAM LETTER TTHA;Lo;0;L;;;;;N;;;;; -0D21;MALAYALAM LETTER DDA;Lo;0;L;;;;;N;;;;; -0D22;MALAYALAM LETTER DDHA;Lo;0;L;;;;;N;;;;; -0D23;MALAYALAM LETTER NNA;Lo;0;L;;;;;N;;;;; -0D24;MALAYALAM LETTER TA;Lo;0;L;;;;;N;;;;; -0D25;MALAYALAM LETTER THA;Lo;0;L;;;;;N;;;;; -0D26;MALAYALAM LETTER DA;Lo;0;L;;;;;N;;;;; -0D27;MALAYALAM LETTER DHA;Lo;0;L;;;;;N;;;;; -0D28;MALAYALAM LETTER NA;Lo;0;L;;;;;N;;;;; -0D2A;MALAYALAM LETTER PA;Lo;0;L;;;;;N;;;;; -0D2B;MALAYALAM LETTER PHA;Lo;0;L;;;;;N;;;;; -0D2C;MALAYALAM LETTER BA;Lo;0;L;;;;;N;;;;; -0D2D;MALAYALAM LETTER BHA;Lo;0;L;;;;;N;;;;; -0D2E;MALAYALAM LETTER MA;Lo;0;L;;;;;N;;;;; -0D2F;MALAYALAM LETTER YA;Lo;0;L;;;;;N;;;;; -0D30;MALAYALAM LETTER RA;Lo;0;L;;;;;N;;;;; -0D31;MALAYALAM LETTER RRA;Lo;0;L;;;;;N;;;;; -0D32;MALAYALAM LETTER LA;Lo;0;L;;;;;N;;;;; -0D33;MALAYALAM LETTER LLA;Lo;0;L;;;;;N;;;;; -0D34;MALAYALAM LETTER LLLA;Lo;0;L;;;;;N;;;;; -0D35;MALAYALAM LETTER VA;Lo;0;L;;;;;N;;;;; -0D36;MALAYALAM LETTER SHA;Lo;0;L;;;;;N;;;;; -0D37;MALAYALAM LETTER SSA;Lo;0;L;;;;;N;;;;; -0D38;MALAYALAM LETTER SA;Lo;0;L;;;;;N;;;;; -0D39;MALAYALAM LETTER HA;Lo;0;L;;;;;N;;;;; -0D3D;MALAYALAM SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; -0D3E;MALAYALAM VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -0D3F;MALAYALAM VOWEL SIGN I;Mc;0;L;;;;;N;;;;; -0D40;MALAYALAM VOWEL SIGN II;Mc;0;L;;;;;N;;;;; -0D41;MALAYALAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -0D42;MALAYALAM VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; -0D43;MALAYALAM VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; -0D44;MALAYALAM VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;; -0D46;MALAYALAM VOWEL SIGN E;Mc;0;L;;;;;N;;;;; -0D47;MALAYALAM VOWEL SIGN EE;Mc;0;L;;;;;N;;;;; -0D48;MALAYALAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; -0D4A;MALAYALAM VOWEL SIGN O;Mc;0;L;0D46 0D3E;;;;N;;;;; -0D4B;MALAYALAM VOWEL SIGN OO;Mc;0;L;0D47 0D3E;;;;N;;;;; -0D4C;MALAYALAM VOWEL SIGN AU;Mc;0;L;0D46 0D57;;;;N;;;;; -0D4D;MALAYALAM SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -0D57;MALAYALAM AU LENGTH MARK;Mc;0;L;;;;;N;;;;; -0D60;MALAYALAM LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; -0D61;MALAYALAM LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; -0D62;MALAYALAM VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; -0D63;MALAYALAM VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; -0D66;MALAYALAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -0D67;MALAYALAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -0D68;MALAYALAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -0D69;MALAYALAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -0D6A;MALAYALAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -0D6B;MALAYALAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -0D6C;MALAYALAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -0D6D;MALAYALAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -0D6E;MALAYALAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -0D6F;MALAYALAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -0D70;MALAYALAM NUMBER TEN;No;0;L;;;;10;N;;;;; -0D71;MALAYALAM NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;; -0D72;MALAYALAM NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;; -0D73;MALAYALAM FRACTION ONE QUARTER;No;0;L;;;;1/4;N;;;;; -0D74;MALAYALAM FRACTION ONE HALF;No;0;L;;;;1/2;N;;;;; -0D75;MALAYALAM FRACTION THREE QUARTERS;No;0;L;;;;3/4;N;;;;; -0D79;MALAYALAM DATE MARK;So;0;L;;;;;N;;;;; -0D7A;MALAYALAM LETTER CHILLU NN;Lo;0;L;;;;;N;;;;; -0D7B;MALAYALAM LETTER CHILLU N;Lo;0;L;;;;;N;;;;; -0D7C;MALAYALAM LETTER CHILLU RR;Lo;0;L;;;;;N;;;;; -0D7D;MALAYALAM LETTER CHILLU L;Lo;0;L;;;;;N;;;;; -0D7E;MALAYALAM LETTER CHILLU LL;Lo;0;L;;;;;N;;;;; -0D7F;MALAYALAM LETTER CHILLU K;Lo;0;L;;;;;N;;;;; -0D82;SINHALA SIGN ANUSVARAYA;Mc;0;L;;;;;N;;;;; -0D83;SINHALA SIGN VISARGAYA;Mc;0;L;;;;;N;;;;; -0D85;SINHALA LETTER AYANNA;Lo;0;L;;;;;N;;;;; -0D86;SINHALA LETTER AAYANNA;Lo;0;L;;;;;N;;;;; -0D87;SINHALA LETTER AEYANNA;Lo;0;L;;;;;N;;;;; -0D88;SINHALA LETTER AEEYANNA;Lo;0;L;;;;;N;;;;; -0D89;SINHALA LETTER IYANNA;Lo;0;L;;;;;N;;;;; -0D8A;SINHALA LETTER IIYANNA;Lo;0;L;;;;;N;;;;; -0D8B;SINHALA LETTER UYANNA;Lo;0;L;;;;;N;;;;; -0D8C;SINHALA LETTER UUYANNA;Lo;0;L;;;;;N;;;;; -0D8D;SINHALA LETTER IRUYANNA;Lo;0;L;;;;;N;;;;; -0D8E;SINHALA LETTER IRUUYANNA;Lo;0;L;;;;;N;;;;; -0D8F;SINHALA LETTER ILUYANNA;Lo;0;L;;;;;N;;;;; -0D90;SINHALA LETTER ILUUYANNA;Lo;0;L;;;;;N;;;;; -0D91;SINHALA LETTER EYANNA;Lo;0;L;;;;;N;;;;; -0D92;SINHALA LETTER EEYANNA;Lo;0;L;;;;;N;;;;; -0D93;SINHALA LETTER AIYANNA;Lo;0;L;;;;;N;;;;; -0D94;SINHALA LETTER OYANNA;Lo;0;L;;;;;N;;;;; -0D95;SINHALA LETTER OOYANNA;Lo;0;L;;;;;N;;;;; -0D96;SINHALA LETTER AUYANNA;Lo;0;L;;;;;N;;;;; -0D9A;SINHALA LETTER ALPAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;; -0D9B;SINHALA LETTER MAHAAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;; -0D9C;SINHALA LETTER ALPAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;; -0D9D;SINHALA LETTER MAHAAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;; -0D9E;SINHALA LETTER KANTAJA NAASIKYAYA;Lo;0;L;;;;;N;;;;; -0D9F;SINHALA LETTER SANYAKA GAYANNA;Lo;0;L;;;;;N;;;;; -0DA0;SINHALA LETTER ALPAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;; -0DA1;SINHALA LETTER MAHAAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;; -0DA2;SINHALA LETTER ALPAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;; -0DA3;SINHALA LETTER MAHAAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;; -0DA4;SINHALA LETTER TAALUJA NAASIKYAYA;Lo;0;L;;;;;N;;;;; -0DA5;SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA;Lo;0;L;;;;;N;;;;; -0DA6;SINHALA LETTER SANYAKA JAYANNA;Lo;0;L;;;;;N;;;;; -0DA7;SINHALA LETTER ALPAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;; -0DA8;SINHALA LETTER MAHAAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;; -0DA9;SINHALA LETTER ALPAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;; -0DAA;SINHALA LETTER MAHAAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;; -0DAB;SINHALA LETTER MUURDHAJA NAYANNA;Lo;0;L;;;;;N;;;;; -0DAC;SINHALA LETTER SANYAKA DDAYANNA;Lo;0;L;;;;;N;;;;; -0DAD;SINHALA LETTER ALPAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;; -0DAE;SINHALA LETTER MAHAAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;; -0DAF;SINHALA LETTER ALPAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;; -0DB0;SINHALA LETTER MAHAAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;; -0DB1;SINHALA LETTER DANTAJA NAYANNA;Lo;0;L;;;;;N;;;;; -0DB3;SINHALA LETTER SANYAKA DAYANNA;Lo;0;L;;;;;N;;;;; -0DB4;SINHALA LETTER ALPAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;; -0DB5;SINHALA LETTER MAHAAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;; -0DB6;SINHALA LETTER ALPAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;; -0DB7;SINHALA LETTER MAHAAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;; -0DB8;SINHALA LETTER MAYANNA;Lo;0;L;;;;;N;;;;; -0DB9;SINHALA LETTER AMBA BAYANNA;Lo;0;L;;;;;N;;;;; -0DBA;SINHALA LETTER YAYANNA;Lo;0;L;;;;;N;;;;; -0DBB;SINHALA LETTER RAYANNA;Lo;0;L;;;;;N;;;;; -0DBD;SINHALA LETTER DANTAJA LAYANNA;Lo;0;L;;;;;N;;;;; -0DC0;SINHALA LETTER VAYANNA;Lo;0;L;;;;;N;;;;; -0DC1;SINHALA LETTER TAALUJA SAYANNA;Lo;0;L;;;;;N;;;;; -0DC2;SINHALA LETTER MUURDHAJA SAYANNA;Lo;0;L;;;;;N;;;;; -0DC3;SINHALA LETTER DANTAJA SAYANNA;Lo;0;L;;;;;N;;;;; -0DC4;SINHALA LETTER HAYANNA;Lo;0;L;;;;;N;;;;; -0DC5;SINHALA LETTER MUURDHAJA LAYANNA;Lo;0;L;;;;;N;;;;; -0DC6;SINHALA LETTER FAYANNA;Lo;0;L;;;;;N;;;;; -0DCA;SINHALA SIGN AL-LAKUNA;Mn;9;NSM;;;;;N;;;;; -0DCF;SINHALA VOWEL SIGN AELA-PILLA;Mc;0;L;;;;;N;;;;; -0DD0;SINHALA VOWEL SIGN KETTI AEDA-PILLA;Mc;0;L;;;;;N;;;;; -0DD1;SINHALA VOWEL SIGN DIGA AEDA-PILLA;Mc;0;L;;;;;N;;;;; -0DD2;SINHALA VOWEL SIGN KETTI IS-PILLA;Mn;0;NSM;;;;;N;;;;; -0DD3;SINHALA VOWEL SIGN DIGA IS-PILLA;Mn;0;NSM;;;;;N;;;;; -0DD4;SINHALA VOWEL SIGN KETTI PAA-PILLA;Mn;0;NSM;;;;;N;;;;; -0DD6;SINHALA VOWEL SIGN DIGA PAA-PILLA;Mn;0;NSM;;;;;N;;;;; -0DD8;SINHALA VOWEL SIGN GAETTA-PILLA;Mc;0;L;;;;;N;;;;; -0DD9;SINHALA VOWEL SIGN KOMBUVA;Mc;0;L;;;;;N;;;;; -0DDA;SINHALA VOWEL SIGN DIGA KOMBUVA;Mc;0;L;0DD9 0DCA;;;;N;;;;; -0DDB;SINHALA VOWEL SIGN KOMBU DEKA;Mc;0;L;;;;;N;;;;; -0DDC;SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA;Mc;0;L;0DD9 0DCF;;;;N;;;;; -0DDD;SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA;Mc;0;L;0DDC 0DCA;;;;N;;;;; -0DDE;SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA;Mc;0;L;0DD9 0DDF;;;;N;;;;; -0DDF;SINHALA VOWEL SIGN GAYANUKITTA;Mc;0;L;;;;;N;;;;; -0DF2;SINHALA VOWEL SIGN DIGA GAETTA-PILLA;Mc;0;L;;;;;N;;;;; -0DF3;SINHALA VOWEL SIGN DIGA GAYANUKITTA;Mc;0;L;;;;;N;;;;; -0DF4;SINHALA PUNCTUATION KUNDDALIYA;Po;0;L;;;;;N;;;;; -0E01;THAI CHARACTER KO KAI;Lo;0;L;;;;;N;THAI LETTER KO KAI;;;; -0E02;THAI CHARACTER KHO KHAI;Lo;0;L;;;;;N;THAI LETTER KHO KHAI;;;; -0E03;THAI CHARACTER KHO KHUAT;Lo;0;L;;;;;N;THAI LETTER KHO KHUAT;;;; -0E04;THAI CHARACTER KHO KHWAI;Lo;0;L;;;;;N;THAI LETTER KHO KHWAI;;;; -0E05;THAI CHARACTER KHO KHON;Lo;0;L;;;;;N;THAI LETTER KHO KHON;;;; -0E06;THAI CHARACTER KHO RAKHANG;Lo;0;L;;;;;N;THAI LETTER KHO RAKHANG;;;; -0E07;THAI CHARACTER NGO NGU;Lo;0;L;;;;;N;THAI LETTER NGO NGU;;;; -0E08;THAI CHARACTER CHO CHAN;Lo;0;L;;;;;N;THAI LETTER CHO CHAN;;;; -0E09;THAI CHARACTER CHO CHING;Lo;0;L;;;;;N;THAI LETTER CHO CHING;;;; -0E0A;THAI CHARACTER CHO CHANG;Lo;0;L;;;;;N;THAI LETTER CHO CHANG;;;; -0E0B;THAI CHARACTER SO SO;Lo;0;L;;;;;N;THAI LETTER SO SO;;;; -0E0C;THAI CHARACTER CHO CHOE;Lo;0;L;;;;;N;THAI LETTER CHO CHOE;;;; -0E0D;THAI CHARACTER YO YING;Lo;0;L;;;;;N;THAI LETTER YO YING;;;; -0E0E;THAI CHARACTER DO CHADA;Lo;0;L;;;;;N;THAI LETTER DO CHADA;;;; -0E0F;THAI CHARACTER TO PATAK;Lo;0;L;;;;;N;THAI LETTER TO PATAK;;;; -0E10;THAI CHARACTER THO THAN;Lo;0;L;;;;;N;THAI LETTER THO THAN;;;; -0E11;THAI CHARACTER THO NANGMONTHO;Lo;0;L;;;;;N;THAI LETTER THO NANGMONTHO;;;; -0E12;THAI CHARACTER THO PHUTHAO;Lo;0;L;;;;;N;THAI LETTER THO PHUTHAO;;;; -0E13;THAI CHARACTER NO NEN;Lo;0;L;;;;;N;THAI LETTER NO NEN;;;; -0E14;THAI CHARACTER DO DEK;Lo;0;L;;;;;N;THAI LETTER DO DEK;;;; -0E15;THAI CHARACTER TO TAO;Lo;0;L;;;;;N;THAI LETTER TO TAO;;;; -0E16;THAI CHARACTER THO THUNG;Lo;0;L;;;;;N;THAI LETTER THO THUNG;;;; -0E17;THAI CHARACTER THO THAHAN;Lo;0;L;;;;;N;THAI LETTER THO THAHAN;;;; -0E18;THAI CHARACTER THO THONG;Lo;0;L;;;;;N;THAI LETTER THO THONG;;;; -0E19;THAI CHARACTER NO NU;Lo;0;L;;;;;N;THAI LETTER NO NU;;;; -0E1A;THAI CHARACTER BO BAIMAI;Lo;0;L;;;;;N;THAI LETTER BO BAIMAI;;;; -0E1B;THAI CHARACTER PO PLA;Lo;0;L;;;;;N;THAI LETTER PO PLA;;;; -0E1C;THAI CHARACTER PHO PHUNG;Lo;0;L;;;;;N;THAI LETTER PHO PHUNG;;;; -0E1D;THAI CHARACTER FO FA;Lo;0;L;;;;;N;THAI LETTER FO FA;;;; -0E1E;THAI CHARACTER PHO PHAN;Lo;0;L;;;;;N;THAI LETTER PHO PHAN;;;; -0E1F;THAI CHARACTER FO FAN;Lo;0;L;;;;;N;THAI LETTER FO FAN;;;; -0E20;THAI CHARACTER PHO SAMPHAO;Lo;0;L;;;;;N;THAI LETTER PHO SAMPHAO;;;; -0E21;THAI CHARACTER MO MA;Lo;0;L;;;;;N;THAI LETTER MO MA;;;; -0E22;THAI CHARACTER YO YAK;Lo;0;L;;;;;N;THAI LETTER YO YAK;;;; -0E23;THAI CHARACTER RO RUA;Lo;0;L;;;;;N;THAI LETTER RO RUA;;;; -0E24;THAI CHARACTER RU;Lo;0;L;;;;;N;THAI LETTER RU;;;; -0E25;THAI CHARACTER LO LING;Lo;0;L;;;;;N;THAI LETTER LO LING;;;; -0E26;THAI CHARACTER LU;Lo;0;L;;;;;N;THAI LETTER LU;;;; -0E27;THAI CHARACTER WO WAEN;Lo;0;L;;;;;N;THAI LETTER WO WAEN;;;; -0E28;THAI CHARACTER SO SALA;Lo;0;L;;;;;N;THAI LETTER SO SALA;;;; -0E29;THAI CHARACTER SO RUSI;Lo;0;L;;;;;N;THAI LETTER SO RUSI;;;; -0E2A;THAI CHARACTER SO SUA;Lo;0;L;;;;;N;THAI LETTER SO SUA;;;; -0E2B;THAI CHARACTER HO HIP;Lo;0;L;;;;;N;THAI LETTER HO HIP;;;; -0E2C;THAI CHARACTER LO CHULA;Lo;0;L;;;;;N;THAI LETTER LO CHULA;;;; -0E2D;THAI CHARACTER O ANG;Lo;0;L;;;;;N;THAI LETTER O ANG;;;; -0E2E;THAI CHARACTER HO NOKHUK;Lo;0;L;;;;;N;THAI LETTER HO NOK HUK;;;; -0E2F;THAI CHARACTER PAIYANNOI;Lo;0;L;;;;;N;THAI PAI YAN NOI;;;; -0E30;THAI CHARACTER SARA A;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA A;;;; -0E31;THAI CHARACTER MAI HAN-AKAT;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI HAN-AKAT;;;; -0E32;THAI CHARACTER SARA AA;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AA;;;; -0E33;THAI CHARACTER SARA AM;Lo;0;L; 0E4D 0E32;;;;N;THAI VOWEL SIGN SARA AM;;;; -0E34;THAI CHARACTER SARA I;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA I;;;; -0E35;THAI CHARACTER SARA II;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA II;;;; -0E36;THAI CHARACTER SARA UE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UE;;;; -0E37;THAI CHARACTER SARA UEE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UEE;;;; -0E38;THAI CHARACTER SARA U;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA U;;;; -0E39;THAI CHARACTER SARA UU;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA UU;;;; -0E3A;THAI CHARACTER PHINTHU;Mn;9;NSM;;;;;N;THAI VOWEL SIGN PHINTHU;;;; -0E3F;THAI CURRENCY SYMBOL BAHT;Sc;0;ET;;;;;N;THAI BAHT SIGN;;;; -0E40;THAI CHARACTER SARA E;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA E;;;; -0E41;THAI CHARACTER SARA AE;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AE;;;; -0E42;THAI CHARACTER SARA O;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA O;;;; -0E43;THAI CHARACTER SARA AI MAIMUAN;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MUAN;;;; -0E44;THAI CHARACTER SARA AI MAIMALAI;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MALAI;;;; -0E45;THAI CHARACTER LAKKHANGYAO;Lo;0;L;;;;;N;THAI LAK KHANG YAO;;;; -0E46;THAI CHARACTER MAIYAMOK;Lm;0;L;;;;;N;THAI MAI YAMOK;;;; -0E47;THAI CHARACTER MAITAIKHU;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI TAI KHU;;;; -0E48;THAI CHARACTER MAI EK;Mn;107;NSM;;;;;N;THAI TONE MAI EK;;;; -0E49;THAI CHARACTER MAI THO;Mn;107;NSM;;;;;N;THAI TONE MAI THO;;;; -0E4A;THAI CHARACTER MAI TRI;Mn;107;NSM;;;;;N;THAI TONE MAI TRI;;;; -0E4B;THAI CHARACTER MAI CHATTAWA;Mn;107;NSM;;;;;N;THAI TONE MAI CHATTAWA;;;; -0E4C;THAI CHARACTER THANTHAKHAT;Mn;0;NSM;;;;;N;THAI THANTHAKHAT;;;; -0E4D;THAI CHARACTER NIKHAHIT;Mn;0;NSM;;;;;N;THAI NIKKHAHIT;;;; -0E4E;THAI CHARACTER YAMAKKAN;Mn;0;NSM;;;;;N;THAI YAMAKKAN;;;; -0E4F;THAI CHARACTER FONGMAN;Po;0;L;;;;;N;THAI FONGMAN;;;; -0E50;THAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -0E51;THAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -0E52;THAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -0E53;THAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -0E54;THAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -0E55;THAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -0E56;THAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -0E57;THAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -0E58;THAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -0E59;THAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -0E5A;THAI CHARACTER ANGKHANKHU;Po;0;L;;;;;N;THAI ANGKHANKHU;;;; -0E5B;THAI CHARACTER KHOMUT;Po;0;L;;;;;N;THAI KHOMUT;;;; -0E81;LAO LETTER KO;Lo;0;L;;;;;N;;;;; -0E82;LAO LETTER KHO SUNG;Lo;0;L;;;;;N;;;;; -0E84;LAO LETTER KHO TAM;Lo;0;L;;;;;N;;;;; -0E87;LAO LETTER NGO;Lo;0;L;;;;;N;;;;; -0E88;LAO LETTER CO;Lo;0;L;;;;;N;;;;; -0E8A;LAO LETTER SO TAM;Lo;0;L;;;;;N;;;;; -0E8D;LAO LETTER NYO;Lo;0;L;;;;;N;;;;; -0E94;LAO LETTER DO;Lo;0;L;;;;;N;;;;; -0E95;LAO LETTER TO;Lo;0;L;;;;;N;;;;; -0E96;LAO LETTER THO SUNG;Lo;0;L;;;;;N;;;;; -0E97;LAO LETTER THO TAM;Lo;0;L;;;;;N;;;;; -0E99;LAO LETTER NO;Lo;0;L;;;;;N;;;;; -0E9A;LAO LETTER BO;Lo;0;L;;;;;N;;;;; -0E9B;LAO LETTER PO;Lo;0;L;;;;;N;;;;; -0E9C;LAO LETTER PHO SUNG;Lo;0;L;;;;;N;;;;; -0E9D;LAO LETTER FO TAM;Lo;0;L;;;;;N;;;;; -0E9E;LAO LETTER PHO TAM;Lo;0;L;;;;;N;;;;; -0E9F;LAO LETTER FO SUNG;Lo;0;L;;;;;N;;;;; -0EA1;LAO LETTER MO;Lo;0;L;;;;;N;;;;; -0EA2;LAO LETTER YO;Lo;0;L;;;;;N;;;;; -0EA3;LAO LETTER LO LING;Lo;0;L;;;;;N;;;;; -0EA5;LAO LETTER LO LOOT;Lo;0;L;;;;;N;;;;; -0EA7;LAO LETTER WO;Lo;0;L;;;;;N;;;;; -0EAA;LAO LETTER SO SUNG;Lo;0;L;;;;;N;;;;; -0EAB;LAO LETTER HO SUNG;Lo;0;L;;;;;N;;;;; -0EAD;LAO LETTER O;Lo;0;L;;;;;N;;;;; -0EAE;LAO LETTER HO TAM;Lo;0;L;;;;;N;;;;; -0EAF;LAO ELLIPSIS;Lo;0;L;;;;;N;;;;; -0EB0;LAO VOWEL SIGN A;Lo;0;L;;;;;N;;;;; -0EB1;LAO VOWEL SIGN MAI KAN;Mn;0;NSM;;;;;N;;;;; -0EB2;LAO VOWEL SIGN AA;Lo;0;L;;;;;N;;;;; -0EB3;LAO VOWEL SIGN AM;Lo;0;L; 0ECD 0EB2;;;;N;;;;; -0EB4;LAO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -0EB5;LAO VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; -0EB6;LAO VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;; -0EB7;LAO VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;; -0EB8;LAO VOWEL SIGN U;Mn;118;NSM;;;;;N;;;;; -0EB9;LAO VOWEL SIGN UU;Mn;118;NSM;;;;;N;;;;; -0EBB;LAO VOWEL SIGN MAI KON;Mn;0;NSM;;;;;N;;;;; -0EBC;LAO SEMIVOWEL SIGN LO;Mn;0;NSM;;;;;N;;;;; -0EBD;LAO SEMIVOWEL SIGN NYO;Lo;0;L;;;;;N;;;;; -0EC0;LAO VOWEL SIGN E;Lo;0;L;;;;;N;;;;; -0EC1;LAO VOWEL SIGN EI;Lo;0;L;;;;;N;;;;; -0EC2;LAO VOWEL SIGN O;Lo;0;L;;;;;N;;;;; -0EC3;LAO VOWEL SIGN AY;Lo;0;L;;;;;N;;;;; -0EC4;LAO VOWEL SIGN AI;Lo;0;L;;;;;N;;;;; -0EC6;LAO KO LA;Lm;0;L;;;;;N;;;;; -0EC8;LAO TONE MAI EK;Mn;122;NSM;;;;;N;;;;; -0EC9;LAO TONE MAI THO;Mn;122;NSM;;;;;N;;;;; -0ECA;LAO TONE MAI TI;Mn;122;NSM;;;;;N;;;;; -0ECB;LAO TONE MAI CATAWA;Mn;122;NSM;;;;;N;;;;; -0ECC;LAO CANCELLATION MARK;Mn;0;NSM;;;;;N;;;;; -0ECD;LAO NIGGAHITA;Mn;0;NSM;;;;;N;;;;; -0ED0;LAO DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -0ED1;LAO DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -0ED2;LAO DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -0ED3;LAO DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -0ED4;LAO DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -0ED5;LAO DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -0ED6;LAO DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -0ED7;LAO DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -0ED8;LAO DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -0ED9;LAO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -0EDC;LAO HO NO;Lo;0;L; 0EAB 0E99;;;;N;;;;; -0EDD;LAO HO MO;Lo;0;L; 0EAB 0EA1;;;;N;;;;; -0F00;TIBETAN SYLLABLE OM;Lo;0;L;;;;;N;;;;; -0F01;TIBETAN MARK GTER YIG MGO TRUNCATED A;So;0;L;;;;;N;;;;; -0F02;TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA;So;0;L;;;;;N;;;;; -0F03;TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA;So;0;L;;;;;N;;;;; -0F04;TIBETAN MARK INITIAL YIG MGO MDUN MA;Po;0;L;;;;;N;TIBETAN SINGLE ORNAMENT;;;; -0F05;TIBETAN MARK CLOSING YIG MGO SGAB MA;Po;0;L;;;;;N;;;;; -0F06;TIBETAN MARK CARET YIG MGO PHUR SHAD MA;Po;0;L;;;;;N;;;;; -0F07;TIBETAN MARK YIG MGO TSHEG SHAD MA;Po;0;L;;;;;N;;;;; -0F08;TIBETAN MARK SBRUL SHAD;Po;0;L;;;;;N;TIBETAN RGYANSHAD;;;; -0F09;TIBETAN MARK BSKUR YIG MGO;Po;0;L;;;;;N;;;;; -0F0A;TIBETAN MARK BKA- SHOG YIG MGO;Po;0;L;;;;;N;;;;; -0F0B;TIBETAN MARK INTERSYLLABIC TSHEG;Po;0;L;;;;;N;TIBETAN TSEG;;;; -0F0C;TIBETAN MARK DELIMITER TSHEG BSTAR;Po;0;L; 0F0B;;;;N;;;;; -0F0D;TIBETAN MARK SHAD;Po;0;L;;;;;N;TIBETAN SHAD;;;; -0F0E;TIBETAN MARK NYIS SHAD;Po;0;L;;;;;N;TIBETAN DOUBLE SHAD;;;; -0F0F;TIBETAN MARK TSHEG SHAD;Po;0;L;;;;;N;;;;; -0F10;TIBETAN MARK NYIS TSHEG SHAD;Po;0;L;;;;;N;;;;; -0F11;TIBETAN MARK RIN CHEN SPUNGS SHAD;Po;0;L;;;;;N;TIBETAN RINCHANPHUNGSHAD;;;; -0F12;TIBETAN MARK RGYA GRAM SHAD;Po;0;L;;;;;N;;;;; -0F13;TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN;So;0;L;;;;;N;;;;; -0F14;TIBETAN MARK GTER TSHEG;So;0;L;;;;;N;TIBETAN COMMA;;;; -0F15;TIBETAN LOGOTYPE SIGN CHAD RTAGS;So;0;L;;;;;N;;;;; -0F16;TIBETAN LOGOTYPE SIGN LHAG RTAGS;So;0;L;;;;;N;;;;; -0F17;TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS;So;0;L;;;;;N;;;;; -0F18;TIBETAN ASTROLOGICAL SIGN -KHYUD PA;Mn;220;NSM;;;;;N;;;;; -0F19;TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS;Mn;220;NSM;;;;;N;;;;; -0F1A;TIBETAN SIGN RDEL DKAR GCIG;So;0;L;;;;;N;;;;; -0F1B;TIBETAN SIGN RDEL DKAR GNYIS;So;0;L;;;;;N;;;;; -0F1C;TIBETAN SIGN RDEL DKAR GSUM;So;0;L;;;;;N;;;;; -0F1D;TIBETAN SIGN RDEL NAG GCIG;So;0;L;;;;;N;;;;; -0F1E;TIBETAN SIGN RDEL NAG GNYIS;So;0;L;;;;;N;;;;; -0F1F;TIBETAN SIGN RDEL DKAR RDEL NAG;So;0;L;;;;;N;;;;; -0F20;TIBETAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -0F21;TIBETAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -0F22;TIBETAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -0F23;TIBETAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -0F24;TIBETAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -0F25;TIBETAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -0F26;TIBETAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -0F27;TIBETAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -0F28;TIBETAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -0F29;TIBETAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -0F2A;TIBETAN DIGIT HALF ONE;No;0;L;;;;1/2;N;;;;; -0F2B;TIBETAN DIGIT HALF TWO;No;0;L;;;;3/2;N;;;;; -0F2C;TIBETAN DIGIT HALF THREE;No;0;L;;;;5/2;N;;;;; -0F2D;TIBETAN DIGIT HALF FOUR;No;0;L;;;;7/2;N;;;;; -0F2E;TIBETAN DIGIT HALF FIVE;No;0;L;;;;9/2;N;;;;; -0F2F;TIBETAN DIGIT HALF SIX;No;0;L;;;;11/2;N;;;;; -0F30;TIBETAN DIGIT HALF SEVEN;No;0;L;;;;13/2;N;;;;; -0F31;TIBETAN DIGIT HALF EIGHT;No;0;L;;;;15/2;N;;;;; -0F32;TIBETAN DIGIT HALF NINE;No;0;L;;;;17/2;N;;;;; -0F33;TIBETAN DIGIT HALF ZERO;No;0;L;;;;-1/2;N;;;;; -0F34;TIBETAN MARK BSDUS RTAGS;So;0;L;;;;;N;;;;; -0F35;TIBETAN MARK NGAS BZUNG NYI ZLA;Mn;220;NSM;;;;;N;TIBETAN HONORIFIC UNDER RING;;;; -0F36;TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN;So;0;L;;;;;N;;;;; -0F37;TIBETAN MARK NGAS BZUNG SGOR RTAGS;Mn;220;NSM;;;;;N;TIBETAN UNDER RING;;;; -0F38;TIBETAN MARK CHE MGO;So;0;L;;;;;N;;;;; -0F39;TIBETAN MARK TSA -PHRU;Mn;216;NSM;;;;;N;TIBETAN LENITION MARK;;;; -0F3A;TIBETAN MARK GUG RTAGS GYON;Ps;0;ON;;;;;Y;;;;; -0F3B;TIBETAN MARK GUG RTAGS GYAS;Pe;0;ON;;;;;Y;;;;; -0F3C;TIBETAN MARK ANG KHANG GYON;Ps;0;ON;;;;;Y;TIBETAN LEFT BRACE;;;; -0F3D;TIBETAN MARK ANG KHANG GYAS;Pe;0;ON;;;;;Y;TIBETAN RIGHT BRACE;;;; -0F3E;TIBETAN SIGN YAR TSHES;Mc;0;L;;;;;N;;;;; -0F3F;TIBETAN SIGN MAR TSHES;Mc;0;L;;;;;N;;;;; -0F40;TIBETAN LETTER KA;Lo;0;L;;;;;N;;;;; -0F41;TIBETAN LETTER KHA;Lo;0;L;;;;;N;;;;; -0F42;TIBETAN LETTER GA;Lo;0;L;;;;;N;;;;; -0F43;TIBETAN LETTER GHA;Lo;0;L;0F42 0FB7;;;;N;;;;; -0F44;TIBETAN LETTER NGA;Lo;0;L;;;;;N;;;;; -0F45;TIBETAN LETTER CA;Lo;0;L;;;;;N;;;;; -0F46;TIBETAN LETTER CHA;Lo;0;L;;;;;N;;;;; -0F47;TIBETAN LETTER JA;Lo;0;L;;;;;N;;;;; -0F49;TIBETAN LETTER NYA;Lo;0;L;;;;;N;;;;; -0F4A;TIBETAN LETTER TTA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED TA;;;; -0F4B;TIBETAN LETTER TTHA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED THA;;;; -0F4C;TIBETAN LETTER DDA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED DA;;;; -0F4D;TIBETAN LETTER DDHA;Lo;0;L;0F4C 0FB7;;;;N;;;;; -0F4E;TIBETAN LETTER NNA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED NA;;;; -0F4F;TIBETAN LETTER TA;Lo;0;L;;;;;N;;;;; -0F50;TIBETAN LETTER THA;Lo;0;L;;;;;N;;;;; -0F51;TIBETAN LETTER DA;Lo;0;L;;;;;N;;;;; -0F52;TIBETAN LETTER DHA;Lo;0;L;0F51 0FB7;;;;N;;;;; -0F53;TIBETAN LETTER NA;Lo;0;L;;;;;N;;;;; -0F54;TIBETAN LETTER PA;Lo;0;L;;;;;N;;;;; -0F55;TIBETAN LETTER PHA;Lo;0;L;;;;;N;;;;; -0F56;TIBETAN LETTER BA;Lo;0;L;;;;;N;;;;; -0F57;TIBETAN LETTER BHA;Lo;0;L;0F56 0FB7;;;;N;;;;; -0F58;TIBETAN LETTER MA;Lo;0;L;;;;;N;;;;; -0F59;TIBETAN LETTER TSA;Lo;0;L;;;;;N;;;;; -0F5A;TIBETAN LETTER TSHA;Lo;0;L;;;;;N;;;;; -0F5B;TIBETAN LETTER DZA;Lo;0;L;;;;;N;;;;; -0F5C;TIBETAN LETTER DZHA;Lo;0;L;0F5B 0FB7;;;;N;;;;; -0F5D;TIBETAN LETTER WA;Lo;0;L;;;;;N;;;;; -0F5E;TIBETAN LETTER ZHA;Lo;0;L;;;;;N;;;;; -0F5F;TIBETAN LETTER ZA;Lo;0;L;;;;;N;;;;; -0F60;TIBETAN LETTER -A;Lo;0;L;;;;;N;TIBETAN LETTER AA;;;; -0F61;TIBETAN LETTER YA;Lo;0;L;;;;;N;;;;; -0F62;TIBETAN LETTER RA;Lo;0;L;;;;;N;;;;; -0F63;TIBETAN LETTER LA;Lo;0;L;;;;;N;;;;; -0F64;TIBETAN LETTER SHA;Lo;0;L;;;;;N;;;;; -0F65;TIBETAN LETTER SSA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED SHA;;;; -0F66;TIBETAN LETTER SA;Lo;0;L;;;;;N;;;;; -0F67;TIBETAN LETTER HA;Lo;0;L;;;;;N;;;;; -0F68;TIBETAN LETTER A;Lo;0;L;;;;;N;;;;; -0F69;TIBETAN LETTER KSSA;Lo;0;L;0F40 0FB5;;;;N;;;;; -0F6A;TIBETAN LETTER FIXED-FORM RA;Lo;0;L;;;;;N;;;;; -0F6B;TIBETAN LETTER KKA;Lo;0;L;;;;;N;;;;; -0F6C;TIBETAN LETTER RRA;Lo;0;L;;;;;N;;;;; -0F71;TIBETAN VOWEL SIGN AA;Mn;129;NSM;;;;;N;;;;; -0F72;TIBETAN VOWEL SIGN I;Mn;130;NSM;;;;;N;;;;; -0F73;TIBETAN VOWEL SIGN II;Mn;0;NSM;0F71 0F72;;;;N;;;;; -0F74;TIBETAN VOWEL SIGN U;Mn;132;NSM;;;;;N;;;;; -0F75;TIBETAN VOWEL SIGN UU;Mn;0;NSM;0F71 0F74;;;;N;;;;; -0F76;TIBETAN VOWEL SIGN VOCALIC R;Mn;0;NSM;0FB2 0F80;;;;N;;;;; -0F77;TIBETAN VOWEL SIGN VOCALIC RR;Mn;0;NSM; 0FB2 0F81;;;;N;;;;; -0F78;TIBETAN VOWEL SIGN VOCALIC L;Mn;0;NSM;0FB3 0F80;;;;N;;;;; -0F79;TIBETAN VOWEL SIGN VOCALIC LL;Mn;0;NSM; 0FB3 0F81;;;;N;;;;; -0F7A;TIBETAN VOWEL SIGN E;Mn;130;NSM;;;;;N;;;;; -0F7B;TIBETAN VOWEL SIGN EE;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AI;;;; -0F7C;TIBETAN VOWEL SIGN O;Mn;130;NSM;;;;;N;;;;; -0F7D;TIBETAN VOWEL SIGN OO;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AU;;;; -0F7E;TIBETAN SIGN RJES SU NGA RO;Mn;0;NSM;;;;;N;TIBETAN ANUSVARA;;;; -0F7F;TIBETAN SIGN RNAM BCAD;Mc;0;L;;;;;N;TIBETAN VISARGA;;;; -0F80;TIBETAN VOWEL SIGN REVERSED I;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN SHORT I;;;; -0F81;TIBETAN VOWEL SIGN REVERSED II;Mn;0;NSM;0F71 0F80;;;;N;;;;; -0F82;TIBETAN SIGN NYI ZLA NAA DA;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU WITH ORNAMENT;;;; -0F83;TIBETAN SIGN SNA LDAN;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU;;;; -0F84;TIBETAN MARK HALANTA;Mn;9;NSM;;;;;N;TIBETAN VIRAMA;;;; -0F85;TIBETAN MARK PALUTA;Po;0;L;;;;;N;TIBETAN CHUCHENYIGE;;;; -0F86;TIBETAN SIGN LCI RTAGS;Mn;230;NSM;;;;;N;;;;; -0F87;TIBETAN SIGN YANG RTAGS;Mn;230;NSM;;;;;N;;;;; -0F88;TIBETAN SIGN LCE TSA CAN;Lo;0;L;;;;;N;;;;; -0F89;TIBETAN SIGN MCHU CAN;Lo;0;L;;;;;N;;;;; -0F8A;TIBETAN SIGN GRU CAN RGYINGS;Lo;0;L;;;;;N;;;;; -0F8B;TIBETAN SIGN GRU MED RGYINGS;Lo;0;L;;;;;N;;;;; -0F90;TIBETAN SUBJOINED LETTER KA;Mn;0;NSM;;;;;N;;;;; -0F91;TIBETAN SUBJOINED LETTER KHA;Mn;0;NSM;;;;;N;;;;; -0F92;TIBETAN SUBJOINED LETTER GA;Mn;0;NSM;;;;;N;;;;; -0F93;TIBETAN SUBJOINED LETTER GHA;Mn;0;NSM;0F92 0FB7;;;;N;;;;; -0F94;TIBETAN SUBJOINED LETTER NGA;Mn;0;NSM;;;;;N;;;;; -0F95;TIBETAN SUBJOINED LETTER CA;Mn;0;NSM;;;;;N;;;;; -0F96;TIBETAN SUBJOINED LETTER CHA;Mn;0;NSM;;;;;N;;;;; -0F97;TIBETAN SUBJOINED LETTER JA;Mn;0;NSM;;;;;N;;;;; -0F99;TIBETAN SUBJOINED LETTER NYA;Mn;0;NSM;;;;;N;;;;; -0F9A;TIBETAN SUBJOINED LETTER TTA;Mn;0;NSM;;;;;N;;;;; -0F9B;TIBETAN SUBJOINED LETTER TTHA;Mn;0;NSM;;;;;N;;;;; -0F9C;TIBETAN SUBJOINED LETTER DDA;Mn;0;NSM;;;;;N;;;;; -0F9D;TIBETAN SUBJOINED LETTER DDHA;Mn;0;NSM;0F9C 0FB7;;;;N;;;;; -0F9E;TIBETAN SUBJOINED LETTER NNA;Mn;0;NSM;;;;;N;;;;; -0F9F;TIBETAN SUBJOINED LETTER TA;Mn;0;NSM;;;;;N;;;;; -0FA0;TIBETAN SUBJOINED LETTER THA;Mn;0;NSM;;;;;N;;;;; -0FA1;TIBETAN SUBJOINED LETTER DA;Mn;0;NSM;;;;;N;;;;; -0FA2;TIBETAN SUBJOINED LETTER DHA;Mn;0;NSM;0FA1 0FB7;;;;N;;;;; -0FA3;TIBETAN SUBJOINED LETTER NA;Mn;0;NSM;;;;;N;;;;; -0FA4;TIBETAN SUBJOINED LETTER PA;Mn;0;NSM;;;;;N;;;;; -0FA5;TIBETAN SUBJOINED LETTER PHA;Mn;0;NSM;;;;;N;;;;; -0FA6;TIBETAN SUBJOINED LETTER BA;Mn;0;NSM;;;;;N;;;;; -0FA7;TIBETAN SUBJOINED LETTER BHA;Mn;0;NSM;0FA6 0FB7;;;;N;;;;; -0FA8;TIBETAN SUBJOINED LETTER MA;Mn;0;NSM;;;;;N;;;;; -0FA9;TIBETAN SUBJOINED LETTER TSA;Mn;0;NSM;;;;;N;;;;; -0FAA;TIBETAN SUBJOINED LETTER TSHA;Mn;0;NSM;;;;;N;;;;; -0FAB;TIBETAN SUBJOINED LETTER DZA;Mn;0;NSM;;;;;N;;;;; -0FAC;TIBETAN SUBJOINED LETTER DZHA;Mn;0;NSM;0FAB 0FB7;;;;N;;;;; -0FAD;TIBETAN SUBJOINED LETTER WA;Mn;0;NSM;;;;;N;;;;; -0FAE;TIBETAN SUBJOINED LETTER ZHA;Mn;0;NSM;;;;;N;;;;; -0FAF;TIBETAN SUBJOINED LETTER ZA;Mn;0;NSM;;;;;N;;;;; -0FB0;TIBETAN SUBJOINED LETTER -A;Mn;0;NSM;;;;;N;;;;; -0FB1;TIBETAN SUBJOINED LETTER YA;Mn;0;NSM;;;;;N;;;;; -0FB2;TIBETAN SUBJOINED LETTER RA;Mn;0;NSM;;;;;N;;;;; -0FB3;TIBETAN SUBJOINED LETTER LA;Mn;0;NSM;;;;;N;;;;; -0FB4;TIBETAN SUBJOINED LETTER SHA;Mn;0;NSM;;;;;N;;;;; -0FB5;TIBETAN SUBJOINED LETTER SSA;Mn;0;NSM;;;;;N;;;;; -0FB6;TIBETAN SUBJOINED LETTER SA;Mn;0;NSM;;;;;N;;;;; -0FB7;TIBETAN SUBJOINED LETTER HA;Mn;0;NSM;;;;;N;;;;; -0FB8;TIBETAN SUBJOINED LETTER A;Mn;0;NSM;;;;;N;;;;; -0FB9;TIBETAN SUBJOINED LETTER KSSA;Mn;0;NSM;0F90 0FB5;;;;N;;;;; -0FBA;TIBETAN SUBJOINED LETTER FIXED-FORM WA;Mn;0;NSM;;;;;N;;;;; -0FBB;TIBETAN SUBJOINED LETTER FIXED-FORM YA;Mn;0;NSM;;;;;N;;;;; -0FBC;TIBETAN SUBJOINED LETTER FIXED-FORM RA;Mn;0;NSM;;;;;N;;;;; -0FBE;TIBETAN KU RU KHA;So;0;L;;;;;N;;;;; -0FBF;TIBETAN KU RU KHA BZHI MIG CAN;So;0;L;;;;;N;;;;; -0FC0;TIBETAN CANTILLATION SIGN HEAVY BEAT;So;0;L;;;;;N;;;;; -0FC1;TIBETAN CANTILLATION SIGN LIGHT BEAT;So;0;L;;;;;N;;;;; -0FC2;TIBETAN CANTILLATION SIGN CANG TE-U;So;0;L;;;;;N;;;;; -0FC3;TIBETAN CANTILLATION SIGN SBUB -CHAL;So;0;L;;;;;N;;;;; -0FC4;TIBETAN SYMBOL DRIL BU;So;0;L;;;;;N;;;;; -0FC5;TIBETAN SYMBOL RDO RJE;So;0;L;;;;;N;;;;; -0FC6;TIBETAN SYMBOL PADMA GDAN;Mn;220;NSM;;;;;N;;;;; -0FC7;TIBETAN SYMBOL RDO RJE RGYA GRAM;So;0;L;;;;;N;;;;; -0FC8;TIBETAN SYMBOL PHUR PA;So;0;L;;;;;N;;;;; -0FC9;TIBETAN SYMBOL NOR BU;So;0;L;;;;;N;;;;; -0FCA;TIBETAN SYMBOL NOR BU NYIS -KHYIL;So;0;L;;;;;N;;;;; -0FCB;TIBETAN SYMBOL NOR BU GSUM -KHYIL;So;0;L;;;;;N;;;;; -0FCC;TIBETAN SYMBOL NOR BU BZHI -KHYIL;So;0;L;;;;;N;;;;; -0FCE;TIBETAN SIGN RDEL NAG RDEL DKAR;So;0;L;;;;;N;;;;; -0FCF;TIBETAN SIGN RDEL NAG GSUM;So;0;L;;;;;N;;;;; -0FD0;TIBETAN MARK BSKA- SHOG GI MGO RGYAN;Po;0;L;;;;;N;;;;; -0FD1;TIBETAN MARK MNYAM YIG GI MGO RGYAN;Po;0;L;;;;;N;;;;; -0FD2;TIBETAN MARK NYIS TSHEG;Po;0;L;;;;;N;;;;; -0FD3;TIBETAN MARK INITIAL BRDA RNYING YIG MGO MDUN MA;Po;0;L;;;;;N;;;;; -0FD4;TIBETAN MARK CLOSING BRDA RNYING YIG MGO SGAB MA;Po;0;L;;;;;N;;;;; -0FD5;RIGHT-FACING SVASTI SIGN;So;0;L;;;;;N;;;;; -0FD6;LEFT-FACING SVASTI SIGN;So;0;L;;;;;N;;;;; -0FD7;RIGHT-FACING SVASTI SIGN WITH DOTS;So;0;L;;;;;N;;;;; -0FD8;LEFT-FACING SVASTI SIGN WITH DOTS;So;0;L;;;;;N;;;;; -1000;MYANMAR LETTER KA;Lo;0;L;;;;;N;;;;; -1001;MYANMAR LETTER KHA;Lo;0;L;;;;;N;;;;; -1002;MYANMAR LETTER GA;Lo;0;L;;;;;N;;;;; -1003;MYANMAR LETTER GHA;Lo;0;L;;;;;N;;;;; -1004;MYANMAR LETTER NGA;Lo;0;L;;;;;N;;;;; -1005;MYANMAR LETTER CA;Lo;0;L;;;;;N;;;;; -1006;MYANMAR LETTER CHA;Lo;0;L;;;;;N;;;;; -1007;MYANMAR LETTER JA;Lo;0;L;;;;;N;;;;; -1008;MYANMAR LETTER JHA;Lo;0;L;;;;;N;;;;; -1009;MYANMAR LETTER NYA;Lo;0;L;;;;;N;;;;; -100A;MYANMAR LETTER NNYA;Lo;0;L;;;;;N;;;;; -100B;MYANMAR LETTER TTA;Lo;0;L;;;;;N;;;;; -100C;MYANMAR LETTER TTHA;Lo;0;L;;;;;N;;;;; -100D;MYANMAR LETTER DDA;Lo;0;L;;;;;N;;;;; -100E;MYANMAR LETTER DDHA;Lo;0;L;;;;;N;;;;; -100F;MYANMAR LETTER NNA;Lo;0;L;;;;;N;;;;; -1010;MYANMAR LETTER TA;Lo;0;L;;;;;N;;;;; -1011;MYANMAR LETTER THA;Lo;0;L;;;;;N;;;;; -1012;MYANMAR LETTER DA;Lo;0;L;;;;;N;;;;; -1013;MYANMAR LETTER DHA;Lo;0;L;;;;;N;;;;; -1014;MYANMAR LETTER NA;Lo;0;L;;;;;N;;;;; -1015;MYANMAR LETTER PA;Lo;0;L;;;;;N;;;;; -1016;MYANMAR LETTER PHA;Lo;0;L;;;;;N;;;;; -1017;MYANMAR LETTER BA;Lo;0;L;;;;;N;;;;; -1018;MYANMAR LETTER BHA;Lo;0;L;;;;;N;;;;; -1019;MYANMAR LETTER MA;Lo;0;L;;;;;N;;;;; -101A;MYANMAR LETTER YA;Lo;0;L;;;;;N;;;;; -101B;MYANMAR LETTER RA;Lo;0;L;;;;;N;;;;; -101C;MYANMAR LETTER LA;Lo;0;L;;;;;N;;;;; -101D;MYANMAR LETTER WA;Lo;0;L;;;;;N;;;;; -101E;MYANMAR LETTER SA;Lo;0;L;;;;;N;;;;; -101F;MYANMAR LETTER HA;Lo;0;L;;;;;N;;;;; -1020;MYANMAR LETTER LLA;Lo;0;L;;;;;N;;;;; -1021;MYANMAR LETTER A;Lo;0;L;;;;;N;;;;; -1022;MYANMAR LETTER SHAN A;Lo;0;L;;;;;N;;;;; -1023;MYANMAR LETTER I;Lo;0;L;;;;;N;;;;; -1024;MYANMAR LETTER II;Lo;0;L;;;;;N;;;;; -1025;MYANMAR LETTER U;Lo;0;L;;;;;N;;;;; -1026;MYANMAR LETTER UU;Lo;0;L;1025 102E;;;;N;;;;; -1027;MYANMAR LETTER E;Lo;0;L;;;;;N;;;;; -1028;MYANMAR LETTER MON E;Lo;0;L;;;;;N;;;;; -1029;MYANMAR LETTER O;Lo;0;L;;;;;N;;;;; -102A;MYANMAR LETTER AU;Lo;0;L;;;;;N;;;;; -102B;MYANMAR VOWEL SIGN TALL AA;Mc;0;L;;;;;N;;;;; -102C;MYANMAR VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -102D;MYANMAR VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -102E;MYANMAR VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; -102F;MYANMAR VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -1030;MYANMAR VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; -1031;MYANMAR VOWEL SIGN E;Mc;0;L;;;;;N;;;;; -1032;MYANMAR VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; -1033;MYANMAR VOWEL SIGN MON II;Mn;0;NSM;;;;;N;;;;; -1034;MYANMAR VOWEL SIGN MON O;Mn;0;NSM;;;;;N;;;;; -1035;MYANMAR VOWEL SIGN E ABOVE;Mn;0;NSM;;;;;N;;;;; -1036;MYANMAR SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; -1037;MYANMAR SIGN DOT BELOW;Mn;7;NSM;;;;;N;;;;; -1038;MYANMAR SIGN VISARGA;Mc;0;L;;;;;N;;;;; -1039;MYANMAR SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -103A;MYANMAR SIGN ASAT;Mn;9;NSM;;;;;N;;;;; -103B;MYANMAR CONSONANT SIGN MEDIAL YA;Mc;0;L;;;;;N;;;;; -103C;MYANMAR CONSONANT SIGN MEDIAL RA;Mc;0;L;;;;;N;;;;; -103D;MYANMAR CONSONANT SIGN MEDIAL WA;Mn;0;NSM;;;;;N;;;;; -103E;MYANMAR CONSONANT SIGN MEDIAL HA;Mn;0;NSM;;;;;N;;;;; -103F;MYANMAR LETTER GREAT SA;Lo;0;L;;;;;N;;;;; -1040;MYANMAR DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -1041;MYANMAR DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -1042;MYANMAR DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -1043;MYANMAR DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -1044;MYANMAR DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -1045;MYANMAR DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -1046;MYANMAR DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -1047;MYANMAR DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -1048;MYANMAR DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -1049;MYANMAR DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -104A;MYANMAR SIGN LITTLE SECTION;Po;0;L;;;;;N;;;;; -104B;MYANMAR SIGN SECTION;Po;0;L;;;;;N;;;;; -104C;MYANMAR SYMBOL LOCATIVE;Po;0;L;;;;;N;;;;; -104D;MYANMAR SYMBOL COMPLETED;Po;0;L;;;;;N;;;;; -104E;MYANMAR SYMBOL AFOREMENTIONED;Po;0;L;;;;;N;;;;; -104F;MYANMAR SYMBOL GENITIVE;Po;0;L;;;;;N;;;;; -1050;MYANMAR LETTER SHA;Lo;0;L;;;;;N;;;;; -1051;MYANMAR LETTER SSA;Lo;0;L;;;;;N;;;;; -1052;MYANMAR LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; -1053;MYANMAR LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; -1054;MYANMAR LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; -1055;MYANMAR LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; -1056;MYANMAR VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;; -1057;MYANMAR VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;; -1058;MYANMAR VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; -1059;MYANMAR VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; -105A;MYANMAR LETTER MON NGA;Lo;0;L;;;;;N;;;;; -105B;MYANMAR LETTER MON JHA;Lo;0;L;;;;;N;;;;; -105C;MYANMAR LETTER MON BBA;Lo;0;L;;;;;N;;;;; -105D;MYANMAR LETTER MON BBE;Lo;0;L;;;;;N;;;;; -105E;MYANMAR CONSONANT SIGN MON MEDIAL NA;Mn;0;NSM;;;;;N;;;;; -105F;MYANMAR CONSONANT SIGN MON MEDIAL MA;Mn;0;NSM;;;;;N;;;;; -1060;MYANMAR CONSONANT SIGN MON MEDIAL LA;Mn;0;NSM;;;;;N;;;;; -1061;MYANMAR LETTER SGAW KAREN SHA;Lo;0;L;;;;;N;;;;; -1062;MYANMAR VOWEL SIGN SGAW KAREN EU;Mc;0;L;;;;;N;;;;; -1063;MYANMAR TONE MARK SGAW KAREN HATHI;Mc;0;L;;;;;N;;;;; -1064;MYANMAR TONE MARK SGAW KAREN KE PHO;Mc;0;L;;;;;N;;;;; -1065;MYANMAR LETTER WESTERN PWO KAREN THA;Lo;0;L;;;;;N;;;;; -1066;MYANMAR LETTER WESTERN PWO KAREN PWA;Lo;0;L;;;;;N;;;;; -1067;MYANMAR VOWEL SIGN WESTERN PWO KAREN EU;Mc;0;L;;;;;N;;;;; -1068;MYANMAR VOWEL SIGN WESTERN PWO KAREN UE;Mc;0;L;;;;;N;;;;; -1069;MYANMAR SIGN WESTERN PWO KAREN TONE-1;Mc;0;L;;;;;N;;;;; -106A;MYANMAR SIGN WESTERN PWO KAREN TONE-2;Mc;0;L;;;;;N;;;;; -106B;MYANMAR SIGN WESTERN PWO KAREN TONE-3;Mc;0;L;;;;;N;;;;; -106C;MYANMAR SIGN WESTERN PWO KAREN TONE-4;Mc;0;L;;;;;N;;;;; -106D;MYANMAR SIGN WESTERN PWO KAREN TONE-5;Mc;0;L;;;;;N;;;;; -106E;MYANMAR LETTER EASTERN PWO KAREN NNA;Lo;0;L;;;;;N;;;;; -106F;MYANMAR LETTER EASTERN PWO KAREN YWA;Lo;0;L;;;;;N;;;;; -1070;MYANMAR LETTER EASTERN PWO KAREN GHWA;Lo;0;L;;;;;N;;;;; -1071;MYANMAR VOWEL SIGN GEBA KAREN I;Mn;0;NSM;;;;;N;;;;; -1072;MYANMAR VOWEL SIGN KAYAH OE;Mn;0;NSM;;;;;N;;;;; -1073;MYANMAR VOWEL SIGN KAYAH U;Mn;0;NSM;;;;;N;;;;; -1074;MYANMAR VOWEL SIGN KAYAH EE;Mn;0;NSM;;;;;N;;;;; -1075;MYANMAR LETTER SHAN KA;Lo;0;L;;;;;N;;;;; -1076;MYANMAR LETTER SHAN KHA;Lo;0;L;;;;;N;;;;; -1077;MYANMAR LETTER SHAN GA;Lo;0;L;;;;;N;;;;; -1078;MYANMAR LETTER SHAN CA;Lo;0;L;;;;;N;;;;; -1079;MYANMAR LETTER SHAN ZA;Lo;0;L;;;;;N;;;;; -107A;MYANMAR LETTER SHAN NYA;Lo;0;L;;;;;N;;;;; -107B;MYANMAR LETTER SHAN DA;Lo;0;L;;;;;N;;;;; -107C;MYANMAR LETTER SHAN NA;Lo;0;L;;;;;N;;;;; -107D;MYANMAR LETTER SHAN PHA;Lo;0;L;;;;;N;;;;; -107E;MYANMAR LETTER SHAN FA;Lo;0;L;;;;;N;;;;; -107F;MYANMAR LETTER SHAN BA;Lo;0;L;;;;;N;;;;; -1080;MYANMAR LETTER SHAN THA;Lo;0;L;;;;;N;;;;; -1081;MYANMAR LETTER SHAN HA;Lo;0;L;;;;;N;;;;; -1082;MYANMAR CONSONANT SIGN SHAN MEDIAL WA;Mn;0;NSM;;;;;N;;;;; -1083;MYANMAR VOWEL SIGN SHAN AA;Mc;0;L;;;;;N;;;;; -1084;MYANMAR VOWEL SIGN SHAN E;Mc;0;L;;;;;N;;;;; -1085;MYANMAR VOWEL SIGN SHAN E ABOVE;Mn;0;NSM;;;;;N;;;;; -1086;MYANMAR VOWEL SIGN SHAN FINAL Y;Mn;0;NSM;;;;;N;;;;; -1087;MYANMAR SIGN SHAN TONE-2;Mc;0;L;;;;;N;;;;; -1088;MYANMAR SIGN SHAN TONE-3;Mc;0;L;;;;;N;;;;; -1089;MYANMAR SIGN SHAN TONE-5;Mc;0;L;;;;;N;;;;; -108A;MYANMAR SIGN SHAN TONE-6;Mc;0;L;;;;;N;;;;; -108B;MYANMAR SIGN SHAN COUNCIL TONE-2;Mc;0;L;;;;;N;;;;; -108C;MYANMAR SIGN SHAN COUNCIL TONE-3;Mc;0;L;;;;;N;;;;; -108D;MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE;Mn;220;NSM;;;;;N;;;;; -108E;MYANMAR LETTER RUMAI PALAUNG FA;Lo;0;L;;;;;N;;;;; -108F;MYANMAR SIGN RUMAI PALAUNG TONE-5;Mc;0;L;;;;;N;;;;; -1090;MYANMAR SHAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -1091;MYANMAR SHAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -1092;MYANMAR SHAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -1093;MYANMAR SHAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -1094;MYANMAR SHAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -1095;MYANMAR SHAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -1096;MYANMAR SHAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -1097;MYANMAR SHAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -1098;MYANMAR SHAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -1099;MYANMAR SHAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -109A;MYANMAR SIGN KHAMTI TONE-1;Mc;0;L;;;;;N;;;;; -109B;MYANMAR SIGN KHAMTI TONE-3;Mc;0;L;;;;;N;;;;; -109C;MYANMAR VOWEL SIGN AITON A;Mc;0;L;;;;;N;;;;; -109D;MYANMAR VOWEL SIGN AITON AI;Mn;0;NSM;;;;;N;;;;; -109E;MYANMAR SYMBOL SHAN ONE;So;0;L;;;;;N;;;;; -109F;MYANMAR SYMBOL SHAN EXCLAMATION;So;0;L;;;;;N;;;;; -10A0;GEORGIAN CAPITAL LETTER AN;Lu;0;L;;;;;N;;;;2D00; -10A1;GEORGIAN CAPITAL LETTER BAN;Lu;0;L;;;;;N;;;;2D01; -10A2;GEORGIAN CAPITAL LETTER GAN;Lu;0;L;;;;;N;;;;2D02; -10A3;GEORGIAN CAPITAL LETTER DON;Lu;0;L;;;;;N;;;;2D03; -10A4;GEORGIAN CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;2D04; -10A5;GEORGIAN CAPITAL LETTER VIN;Lu;0;L;;;;;N;;;;2D05; -10A6;GEORGIAN CAPITAL LETTER ZEN;Lu;0;L;;;;;N;;;;2D06; -10A7;GEORGIAN CAPITAL LETTER TAN;Lu;0;L;;;;;N;;;;2D07; -10A8;GEORGIAN CAPITAL LETTER IN;Lu;0;L;;;;;N;;;;2D08; -10A9;GEORGIAN CAPITAL LETTER KAN;Lu;0;L;;;;;N;;;;2D09; -10AA;GEORGIAN CAPITAL LETTER LAS;Lu;0;L;;;;;N;;;;2D0A; -10AB;GEORGIAN CAPITAL LETTER MAN;Lu;0;L;;;;;N;;;;2D0B; -10AC;GEORGIAN CAPITAL LETTER NAR;Lu;0;L;;;;;N;;;;2D0C; -10AD;GEORGIAN CAPITAL LETTER ON;Lu;0;L;;;;;N;;;;2D0D; -10AE;GEORGIAN CAPITAL LETTER PAR;Lu;0;L;;;;;N;;;;2D0E; -10AF;GEORGIAN CAPITAL LETTER ZHAR;Lu;0;L;;;;;N;;;;2D0F; -10B0;GEORGIAN CAPITAL LETTER RAE;Lu;0;L;;;;;N;;;;2D10; -10B1;GEORGIAN CAPITAL LETTER SAN;Lu;0;L;;;;;N;;;;2D11; -10B2;GEORGIAN CAPITAL LETTER TAR;Lu;0;L;;;;;N;;;;2D12; -10B3;GEORGIAN CAPITAL LETTER UN;Lu;0;L;;;;;N;;;;2D13; -10B4;GEORGIAN CAPITAL LETTER PHAR;Lu;0;L;;;;;N;;;;2D14; -10B5;GEORGIAN CAPITAL LETTER KHAR;Lu;0;L;;;;;N;;;;2D15; -10B6;GEORGIAN CAPITAL LETTER GHAN;Lu;0;L;;;;;N;;;;2D16; -10B7;GEORGIAN CAPITAL LETTER QAR;Lu;0;L;;;;;N;;;;2D17; -10B8;GEORGIAN CAPITAL LETTER SHIN;Lu;0;L;;;;;N;;;;2D18; -10B9;GEORGIAN CAPITAL LETTER CHIN;Lu;0;L;;;;;N;;;;2D19; -10BA;GEORGIAN CAPITAL LETTER CAN;Lu;0;L;;;;;N;;;;2D1A; -10BB;GEORGIAN CAPITAL LETTER JIL;Lu;0;L;;;;;N;;;;2D1B; -10BC;GEORGIAN CAPITAL LETTER CIL;Lu;0;L;;;;;N;;;;2D1C; -10BD;GEORGIAN CAPITAL LETTER CHAR;Lu;0;L;;;;;N;;;;2D1D; -10BE;GEORGIAN CAPITAL LETTER XAN;Lu;0;L;;;;;N;;;;2D1E; -10BF;GEORGIAN CAPITAL LETTER JHAN;Lu;0;L;;;;;N;;;;2D1F; -10C0;GEORGIAN CAPITAL LETTER HAE;Lu;0;L;;;;;N;;;;2D20; -10C1;GEORGIAN CAPITAL LETTER HE;Lu;0;L;;;;;N;;;;2D21; -10C2;GEORGIAN CAPITAL LETTER HIE;Lu;0;L;;;;;N;;;;2D22; -10C3;GEORGIAN CAPITAL LETTER WE;Lu;0;L;;;;;N;;;;2D23; -10C4;GEORGIAN CAPITAL LETTER HAR;Lu;0;L;;;;;N;;;;2D24; -10C5;GEORGIAN CAPITAL LETTER HOE;Lu;0;L;;;;;N;;;;2D25; -10D0;GEORGIAN LETTER AN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER AN;;;; -10D1;GEORGIAN LETTER BAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER BAN;;;; -10D2;GEORGIAN LETTER GAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GAN;;;; -10D3;GEORGIAN LETTER DON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER DON;;;; -10D4;GEORGIAN LETTER EN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER EN;;;; -10D5;GEORGIAN LETTER VIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER VIN;;;; -10D6;GEORGIAN LETTER ZEN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZEN;;;; -10D7;GEORGIAN LETTER TAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAN;;;; -10D8;GEORGIAN LETTER IN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER IN;;;; -10D9;GEORGIAN LETTER KAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KAN;;;; -10DA;GEORGIAN LETTER LAS;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER LAS;;;; -10DB;GEORGIAN LETTER MAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER MAN;;;; -10DC;GEORGIAN LETTER NAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER NAR;;;; -10DD;GEORGIAN LETTER ON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ON;;;; -10DE;GEORGIAN LETTER PAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PAR;;;; -10DF;GEORGIAN LETTER ZHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZHAR;;;; -10E0;GEORGIAN LETTER RAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER RAE;;;; -10E1;GEORGIAN LETTER SAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SAN;;;; -10E2;GEORGIAN LETTER TAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAR;;;; -10E3;GEORGIAN LETTER UN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER UN;;;; -10E4;GEORGIAN LETTER PHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PHAR;;;; -10E5;GEORGIAN LETTER KHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KHAR;;;; -10E6;GEORGIAN LETTER GHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GHAN;;;; -10E7;GEORGIAN LETTER QAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER QAR;;;; -10E8;GEORGIAN LETTER SHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SHIN;;;; -10E9;GEORGIAN LETTER CHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHIN;;;; -10EA;GEORGIAN LETTER CAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CAN;;;; -10EB;GEORGIAN LETTER JIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JIL;;;; -10EC;GEORGIAN LETTER CIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CIL;;;; -10ED;GEORGIAN LETTER CHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHAR;;;; -10EE;GEORGIAN LETTER XAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER XAN;;;; -10EF;GEORGIAN LETTER JHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JHAN;;;; -10F0;GEORGIAN LETTER HAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAE;;;; -10F1;GEORGIAN LETTER HE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HE;;;; -10F2;GEORGIAN LETTER HIE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HIE;;;; -10F3;GEORGIAN LETTER WE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER WE;;;; -10F4;GEORGIAN LETTER HAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAR;;;; -10F5;GEORGIAN LETTER HOE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HOE;;;; -10F6;GEORGIAN LETTER FI;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER FI;;;; -10F7;GEORGIAN LETTER YN;Lo;0;L;;;;;N;;;;; -10F8;GEORGIAN LETTER ELIFI;Lo;0;L;;;;;N;;;;; -10F9;GEORGIAN LETTER TURNED GAN;Lo;0;L;;;;;N;;;;; -10FA;GEORGIAN LETTER AIN;Lo;0;L;;;;;N;;;;; -10FB;GEORGIAN PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;; -10FC;MODIFIER LETTER GEORGIAN NAR;Lm;0;L; 10DC;;;;N;;;;; -1100;HANGUL CHOSEONG KIYEOK;Lo;0;L;;;;;N;;;;; -1101;HANGUL CHOSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;;;; -1102;HANGUL CHOSEONG NIEUN;Lo;0;L;;;;;N;;;;; -1103;HANGUL CHOSEONG TIKEUT;Lo;0;L;;;;;N;;;;; -1104;HANGUL CHOSEONG SSANGTIKEUT;Lo;0;L;;;;;N;;;;; -1105;HANGUL CHOSEONG RIEUL;Lo;0;L;;;;;N;;;;; -1106;HANGUL CHOSEONG MIEUM;Lo;0;L;;;;;N;;;;; -1107;HANGUL CHOSEONG PIEUP;Lo;0;L;;;;;N;;;;; -1108;HANGUL CHOSEONG SSANGPIEUP;Lo;0;L;;;;;N;;;;; -1109;HANGUL CHOSEONG SIOS;Lo;0;L;;;;;N;;;;; -110A;HANGUL CHOSEONG SSANGSIOS;Lo;0;L;;;;;N;;;;; -110B;HANGUL CHOSEONG IEUNG;Lo;0;L;;;;;N;;;;; -110C;HANGUL CHOSEONG CIEUC;Lo;0;L;;;;;N;;;;; -110D;HANGUL CHOSEONG SSANGCIEUC;Lo;0;L;;;;;N;;;;; -110E;HANGUL CHOSEONG CHIEUCH;Lo;0;L;;;;;N;;;;; -110F;HANGUL CHOSEONG KHIEUKH;Lo;0;L;;;;;N;;;;; -1110;HANGUL CHOSEONG THIEUTH;Lo;0;L;;;;;N;;;;; -1111;HANGUL CHOSEONG PHIEUPH;Lo;0;L;;;;;N;;;;; -1112;HANGUL CHOSEONG HIEUH;Lo;0;L;;;;;N;;;;; -1113;HANGUL CHOSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;; -1114;HANGUL CHOSEONG SSANGNIEUN;Lo;0;L;;;;;N;;;;; -1115;HANGUL CHOSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;; -1116;HANGUL CHOSEONG NIEUN-PIEUP;Lo;0;L;;;;;N;;;;; -1117;HANGUL CHOSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;; -1118;HANGUL CHOSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;; -1119;HANGUL CHOSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;; -111A;HANGUL CHOSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;;;; -111B;HANGUL CHOSEONG KAPYEOUNRIEUL;Lo;0;L;;;;;N;;;;; -111C;HANGUL CHOSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;; -111D;HANGUL CHOSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;; -111E;HANGUL CHOSEONG PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;; -111F;HANGUL CHOSEONG PIEUP-NIEUN;Lo;0;L;;;;;N;;;;; -1120;HANGUL CHOSEONG PIEUP-TIKEUT;Lo;0;L;;;;;N;;;;; -1121;HANGUL CHOSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;;;; -1122;HANGUL CHOSEONG PIEUP-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;; -1123;HANGUL CHOSEONG PIEUP-SIOS-TIKEUT;Lo;0;L;;;;;N;;;;; -1124;HANGUL CHOSEONG PIEUP-SIOS-PIEUP;Lo;0;L;;;;;N;;;;; -1125;HANGUL CHOSEONG PIEUP-SSANGSIOS;Lo;0;L;;;;;N;;;;; -1126;HANGUL CHOSEONG PIEUP-SIOS-CIEUC;Lo;0;L;;;;;N;;;;; -1127;HANGUL CHOSEONG PIEUP-CIEUC;Lo;0;L;;;;;N;;;;; -1128;HANGUL CHOSEONG PIEUP-CHIEUCH;Lo;0;L;;;;;N;;;;; -1129;HANGUL CHOSEONG PIEUP-THIEUTH;Lo;0;L;;;;;N;;;;; -112A;HANGUL CHOSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;; -112B;HANGUL CHOSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;; -112C;HANGUL CHOSEONG KAPYEOUNSSANGPIEUP;Lo;0;L;;;;;N;;;;; -112D;HANGUL CHOSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;; -112E;HANGUL CHOSEONG SIOS-NIEUN;Lo;0;L;;;;;N;;;;; -112F;HANGUL CHOSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;; -1130;HANGUL CHOSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;; -1131;HANGUL CHOSEONG SIOS-MIEUM;Lo;0;L;;;;;N;;;;; -1132;HANGUL CHOSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;; -1133;HANGUL CHOSEONG SIOS-PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;; -1134;HANGUL CHOSEONG SIOS-SSANGSIOS;Lo;0;L;;;;;N;;;;; -1135;HANGUL CHOSEONG SIOS-IEUNG;Lo;0;L;;;;;N;;;;; -1136;HANGUL CHOSEONG SIOS-CIEUC;Lo;0;L;;;;;N;;;;; -1137;HANGUL CHOSEONG SIOS-CHIEUCH;Lo;0;L;;;;;N;;;;; -1138;HANGUL CHOSEONG SIOS-KHIEUKH;Lo;0;L;;;;;N;;;;; -1139;HANGUL CHOSEONG SIOS-THIEUTH;Lo;0;L;;;;;N;;;;; -113A;HANGUL CHOSEONG SIOS-PHIEUPH;Lo;0;L;;;;;N;;;;; -113B;HANGUL CHOSEONG SIOS-HIEUH;Lo;0;L;;;;;N;;;;; -113C;HANGUL CHOSEONG CHITUEUMSIOS;Lo;0;L;;;;;N;;;;; -113D;HANGUL CHOSEONG CHITUEUMSSANGSIOS;Lo;0;L;;;;;N;;;;; -113E;HANGUL CHOSEONG CEONGCHIEUMSIOS;Lo;0;L;;;;;N;;;;; -113F;HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS;Lo;0;L;;;;;N;;;;; -1140;HANGUL CHOSEONG PANSIOS;Lo;0;L;;;;;N;;;;; -1141;HANGUL CHOSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;; -1142;HANGUL CHOSEONG IEUNG-TIKEUT;Lo;0;L;;;;;N;;;;; -1143;HANGUL CHOSEONG IEUNG-MIEUM;Lo;0;L;;;;;N;;;;; -1144;HANGUL CHOSEONG IEUNG-PIEUP;Lo;0;L;;;;;N;;;;; -1145;HANGUL CHOSEONG IEUNG-SIOS;Lo;0;L;;;;;N;;;;; -1146;HANGUL CHOSEONG IEUNG-PANSIOS;Lo;0;L;;;;;N;;;;; -1147;HANGUL CHOSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;; -1148;HANGUL CHOSEONG IEUNG-CIEUC;Lo;0;L;;;;;N;;;;; -1149;HANGUL CHOSEONG IEUNG-CHIEUCH;Lo;0;L;;;;;N;;;;; -114A;HANGUL CHOSEONG IEUNG-THIEUTH;Lo;0;L;;;;;N;;;;; -114B;HANGUL CHOSEONG IEUNG-PHIEUPH;Lo;0;L;;;;;N;;;;; -114C;HANGUL CHOSEONG YESIEUNG;Lo;0;L;;;;;N;;;;; -114D;HANGUL CHOSEONG CIEUC-IEUNG;Lo;0;L;;;;;N;;;;; -114E;HANGUL CHOSEONG CHITUEUMCIEUC;Lo;0;L;;;;;N;;;;; -114F;HANGUL CHOSEONG CHITUEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;; -1150;HANGUL CHOSEONG CEONGCHIEUMCIEUC;Lo;0;L;;;;;N;;;;; -1151;HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;; -1152;HANGUL CHOSEONG CHIEUCH-KHIEUKH;Lo;0;L;;;;;N;;;;; -1153;HANGUL CHOSEONG CHIEUCH-HIEUH;Lo;0;L;;;;;N;;;;; -1154;HANGUL CHOSEONG CHITUEUMCHIEUCH;Lo;0;L;;;;;N;;;;; -1155;HANGUL CHOSEONG CEONGCHIEUMCHIEUCH;Lo;0;L;;;;;N;;;;; -1156;HANGUL CHOSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;; -1157;HANGUL CHOSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;; -1158;HANGUL CHOSEONG SSANGHIEUH;Lo;0;L;;;;;N;;;;; -1159;HANGUL CHOSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;; -115A;HANGUL CHOSEONG KIYEOK-TIKEUT;Lo;0;L;;;;;N;;;;; -115B;HANGUL CHOSEONG NIEUN-SIOS;Lo;0;L;;;;;N;;;;; -115C;HANGUL CHOSEONG NIEUN-CIEUC;Lo;0;L;;;;;N;;;;; -115D;HANGUL CHOSEONG NIEUN-HIEUH;Lo;0;L;;;;;N;;;;; -115E;HANGUL CHOSEONG TIKEUT-RIEUL;Lo;0;L;;;;;N;;;;; -115F;HANGUL CHOSEONG FILLER;Lo;0;L;;;;;N;;;;; -1160;HANGUL JUNGSEONG FILLER;Lo;0;L;;;;;N;;;;; -1161;HANGUL JUNGSEONG A;Lo;0;L;;;;;N;;;;; -1162;HANGUL JUNGSEONG AE;Lo;0;L;;;;;N;;;;; -1163;HANGUL JUNGSEONG YA;Lo;0;L;;;;;N;;;;; -1164;HANGUL JUNGSEONG YAE;Lo;0;L;;;;;N;;;;; -1165;HANGUL JUNGSEONG EO;Lo;0;L;;;;;N;;;;; -1166;HANGUL JUNGSEONG E;Lo;0;L;;;;;N;;;;; -1167;HANGUL JUNGSEONG YEO;Lo;0;L;;;;;N;;;;; -1168;HANGUL JUNGSEONG YE;Lo;0;L;;;;;N;;;;; -1169;HANGUL JUNGSEONG O;Lo;0;L;;;;;N;;;;; -116A;HANGUL JUNGSEONG WA;Lo;0;L;;;;;N;;;;; -116B;HANGUL JUNGSEONG WAE;Lo;0;L;;;;;N;;;;; -116C;HANGUL JUNGSEONG OE;Lo;0;L;;;;;N;;;;; -116D;HANGUL JUNGSEONG YO;Lo;0;L;;;;;N;;;;; -116E;HANGUL JUNGSEONG U;Lo;0;L;;;;;N;;;;; -116F;HANGUL JUNGSEONG WEO;Lo;0;L;;;;;N;;;;; -1170;HANGUL JUNGSEONG WE;Lo;0;L;;;;;N;;;;; -1171;HANGUL JUNGSEONG WI;Lo;0;L;;;;;N;;;;; -1172;HANGUL JUNGSEONG YU;Lo;0;L;;;;;N;;;;; -1173;HANGUL JUNGSEONG EU;Lo;0;L;;;;;N;;;;; -1174;HANGUL JUNGSEONG YI;Lo;0;L;;;;;N;;;;; -1175;HANGUL JUNGSEONG I;Lo;0;L;;;;;N;;;;; -1176;HANGUL JUNGSEONG A-O;Lo;0;L;;;;;N;;;;; -1177;HANGUL JUNGSEONG A-U;Lo;0;L;;;;;N;;;;; -1178;HANGUL JUNGSEONG YA-O;Lo;0;L;;;;;N;;;;; -1179;HANGUL JUNGSEONG YA-YO;Lo;0;L;;;;;N;;;;; -117A;HANGUL JUNGSEONG EO-O;Lo;0;L;;;;;N;;;;; -117B;HANGUL JUNGSEONG EO-U;Lo;0;L;;;;;N;;;;; -117C;HANGUL JUNGSEONG EO-EU;Lo;0;L;;;;;N;;;;; -117D;HANGUL JUNGSEONG YEO-O;Lo;0;L;;;;;N;;;;; -117E;HANGUL JUNGSEONG YEO-U;Lo;0;L;;;;;N;;;;; -117F;HANGUL JUNGSEONG O-EO;Lo;0;L;;;;;N;;;;; -1180;HANGUL JUNGSEONG O-E;Lo;0;L;;;;;N;;;;; -1181;HANGUL JUNGSEONG O-YE;Lo;0;L;;;;;N;;;;; -1182;HANGUL JUNGSEONG O-O;Lo;0;L;;;;;N;;;;; -1183;HANGUL JUNGSEONG O-U;Lo;0;L;;;;;N;;;;; -1184;HANGUL JUNGSEONG YO-YA;Lo;0;L;;;;;N;;;;; -1185;HANGUL JUNGSEONG YO-YAE;Lo;0;L;;;;;N;;;;; -1186;HANGUL JUNGSEONG YO-YEO;Lo;0;L;;;;;N;;;;; -1187;HANGUL JUNGSEONG YO-O;Lo;0;L;;;;;N;;;;; -1188;HANGUL JUNGSEONG YO-I;Lo;0;L;;;;;N;;;;; -1189;HANGUL JUNGSEONG U-A;Lo;0;L;;;;;N;;;;; -118A;HANGUL JUNGSEONG U-AE;Lo;0;L;;;;;N;;;;; -118B;HANGUL JUNGSEONG U-EO-EU;Lo;0;L;;;;;N;;;;; -118C;HANGUL JUNGSEONG U-YE;Lo;0;L;;;;;N;;;;; -118D;HANGUL JUNGSEONG U-U;Lo;0;L;;;;;N;;;;; -118E;HANGUL JUNGSEONG YU-A;Lo;0;L;;;;;N;;;;; -118F;HANGUL JUNGSEONG YU-EO;Lo;0;L;;;;;N;;;;; -1190;HANGUL JUNGSEONG YU-E;Lo;0;L;;;;;N;;;;; -1191;HANGUL JUNGSEONG YU-YEO;Lo;0;L;;;;;N;;;;; -1192;HANGUL JUNGSEONG YU-YE;Lo;0;L;;;;;N;;;;; -1193;HANGUL JUNGSEONG YU-U;Lo;0;L;;;;;N;;;;; -1194;HANGUL JUNGSEONG YU-I;Lo;0;L;;;;;N;;;;; -1195;HANGUL JUNGSEONG EU-U;Lo;0;L;;;;;N;;;;; -1196;HANGUL JUNGSEONG EU-EU;Lo;0;L;;;;;N;;;;; -1197;HANGUL JUNGSEONG YI-U;Lo;0;L;;;;;N;;;;; -1198;HANGUL JUNGSEONG I-A;Lo;0;L;;;;;N;;;;; -1199;HANGUL JUNGSEONG I-YA;Lo;0;L;;;;;N;;;;; -119A;HANGUL JUNGSEONG I-O;Lo;0;L;;;;;N;;;;; -119B;HANGUL JUNGSEONG I-U;Lo;0;L;;;;;N;;;;; -119C;HANGUL JUNGSEONG I-EU;Lo;0;L;;;;;N;;;;; -119D;HANGUL JUNGSEONG I-ARAEA;Lo;0;L;;;;;N;;;;; -119E;HANGUL JUNGSEONG ARAEA;Lo;0;L;;;;;N;;;;; -119F;HANGUL JUNGSEONG ARAEA-EO;Lo;0;L;;;;;N;;;;; -11A0;HANGUL JUNGSEONG ARAEA-U;Lo;0;L;;;;;N;;;;; -11A1;HANGUL JUNGSEONG ARAEA-I;Lo;0;L;;;;;N;;;;; -11A2;HANGUL JUNGSEONG SSANGARAEA;Lo;0;L;;;;;N;;;;; -11A3;HANGUL JUNGSEONG A-EU;Lo;0;L;;;;;N;;;;; -11A4;HANGUL JUNGSEONG YA-U;Lo;0;L;;;;;N;;;;; -11A5;HANGUL JUNGSEONG YEO-YA;Lo;0;L;;;;;N;;;;; -11A6;HANGUL JUNGSEONG O-YA;Lo;0;L;;;;;N;;;;; -11A7;HANGUL JUNGSEONG O-YAE;Lo;0;L;;;;;N;;;;; -11A8;HANGUL JONGSEONG KIYEOK;Lo;0;L;;;;;N;;;;; -11A9;HANGUL JONGSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;;;; -11AA;HANGUL JONGSEONG KIYEOK-SIOS;Lo;0;L;;;;;N;;;;; -11AB;HANGUL JONGSEONG NIEUN;Lo;0;L;;;;;N;;;;; -11AC;HANGUL JONGSEONG NIEUN-CIEUC;Lo;0;L;;;;;N;;;;; -11AD;HANGUL JONGSEONG NIEUN-HIEUH;Lo;0;L;;;;;N;;;;; -11AE;HANGUL JONGSEONG TIKEUT;Lo;0;L;;;;;N;;;;; -11AF;HANGUL JONGSEONG RIEUL;Lo;0;L;;;;;N;;;;; -11B0;HANGUL JONGSEONG RIEUL-KIYEOK;Lo;0;L;;;;;N;;;;; -11B1;HANGUL JONGSEONG RIEUL-MIEUM;Lo;0;L;;;;;N;;;;; -11B2;HANGUL JONGSEONG RIEUL-PIEUP;Lo;0;L;;;;;N;;;;; -11B3;HANGUL JONGSEONG RIEUL-SIOS;Lo;0;L;;;;;N;;;;; -11B4;HANGUL JONGSEONG RIEUL-THIEUTH;Lo;0;L;;;;;N;;;;; -11B5;HANGUL JONGSEONG RIEUL-PHIEUPH;Lo;0;L;;;;;N;;;;; -11B6;HANGUL JONGSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;;;; -11B7;HANGUL JONGSEONG MIEUM;Lo;0;L;;;;;N;;;;; -11B8;HANGUL JONGSEONG PIEUP;Lo;0;L;;;;;N;;;;; -11B9;HANGUL JONGSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;;;; -11BA;HANGUL JONGSEONG SIOS;Lo;0;L;;;;;N;;;;; -11BB;HANGUL JONGSEONG SSANGSIOS;Lo;0;L;;;;;N;;;;; -11BC;HANGUL JONGSEONG IEUNG;Lo;0;L;;;;;N;;;;; -11BD;HANGUL JONGSEONG CIEUC;Lo;0;L;;;;;N;;;;; -11BE;HANGUL JONGSEONG CHIEUCH;Lo;0;L;;;;;N;;;;; -11BF;HANGUL JONGSEONG KHIEUKH;Lo;0;L;;;;;N;;;;; -11C0;HANGUL JONGSEONG THIEUTH;Lo;0;L;;;;;N;;;;; -11C1;HANGUL JONGSEONG PHIEUPH;Lo;0;L;;;;;N;;;;; -11C2;HANGUL JONGSEONG HIEUH;Lo;0;L;;;;;N;;;;; -11C3;HANGUL JONGSEONG KIYEOK-RIEUL;Lo;0;L;;;;;N;;;;; -11C4;HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;; -11C5;HANGUL JONGSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;; -11C6;HANGUL JONGSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;; -11C7;HANGUL JONGSEONG NIEUN-SIOS;Lo;0;L;;;;;N;;;;; -11C8;HANGUL JONGSEONG NIEUN-PANSIOS;Lo;0;L;;;;;N;;;;; -11C9;HANGUL JONGSEONG NIEUN-THIEUTH;Lo;0;L;;;;;N;;;;; -11CA;HANGUL JONGSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;; -11CB;HANGUL JONGSEONG TIKEUT-RIEUL;Lo;0;L;;;;;N;;;;; -11CC;HANGUL JONGSEONG RIEUL-KIYEOK-SIOS;Lo;0;L;;;;;N;;;;; -11CD;HANGUL JONGSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;; -11CE;HANGUL JONGSEONG RIEUL-TIKEUT;Lo;0;L;;;;;N;;;;; -11CF;HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH;Lo;0;L;;;;;N;;;;; -11D0;HANGUL JONGSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;; -11D1;HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;; -11D2;HANGUL JONGSEONG RIEUL-MIEUM-SIOS;Lo;0;L;;;;;N;;;;; -11D3;HANGUL JONGSEONG RIEUL-PIEUP-SIOS;Lo;0;L;;;;;N;;;;; -11D4;HANGUL JONGSEONG RIEUL-PIEUP-HIEUH;Lo;0;L;;;;;N;;;;; -11D5;HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;; -11D6;HANGUL JONGSEONG RIEUL-SSANGSIOS;Lo;0;L;;;;;N;;;;; -11D7;HANGUL JONGSEONG RIEUL-PANSIOS;Lo;0;L;;;;;N;;;;; -11D8;HANGUL JONGSEONG RIEUL-KHIEUKH;Lo;0;L;;;;;N;;;;; -11D9;HANGUL JONGSEONG RIEUL-YEORINHIEUH;Lo;0;L;;;;;N;;;;; -11DA;HANGUL JONGSEONG MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;; -11DB;HANGUL JONGSEONG MIEUM-RIEUL;Lo;0;L;;;;;N;;;;; -11DC;HANGUL JONGSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;; -11DD;HANGUL JONGSEONG MIEUM-SIOS;Lo;0;L;;;;;N;;;;; -11DE;HANGUL JONGSEONG MIEUM-SSANGSIOS;Lo;0;L;;;;;N;;;;; -11DF;HANGUL JONGSEONG MIEUM-PANSIOS;Lo;0;L;;;;;N;;;;; -11E0;HANGUL JONGSEONG MIEUM-CHIEUCH;Lo;0;L;;;;;N;;;;; -11E1;HANGUL JONGSEONG MIEUM-HIEUH;Lo;0;L;;;;;N;;;;; -11E2;HANGUL JONGSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;; -11E3;HANGUL JONGSEONG PIEUP-RIEUL;Lo;0;L;;;;;N;;;;; -11E4;HANGUL JONGSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;; -11E5;HANGUL JONGSEONG PIEUP-HIEUH;Lo;0;L;;;;;N;;;;; -11E6;HANGUL JONGSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;; -11E7;HANGUL JONGSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;; -11E8;HANGUL JONGSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;; -11E9;HANGUL JONGSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;; -11EA;HANGUL JONGSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;; -11EB;HANGUL JONGSEONG PANSIOS;Lo;0;L;;;;;N;;;;; -11EC;HANGUL JONGSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;; -11ED;HANGUL JONGSEONG IEUNG-SSANGKIYEOK;Lo;0;L;;;;;N;;;;; -11EE;HANGUL JONGSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;; -11EF;HANGUL JONGSEONG IEUNG-KHIEUKH;Lo;0;L;;;;;N;;;;; -11F0;HANGUL JONGSEONG YESIEUNG;Lo;0;L;;;;;N;;;;; -11F1;HANGUL JONGSEONG YESIEUNG-SIOS;Lo;0;L;;;;;N;;;;; -11F2;HANGUL JONGSEONG YESIEUNG-PANSIOS;Lo;0;L;;;;;N;;;;; -11F3;HANGUL JONGSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;; -11F4;HANGUL JONGSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;; -11F5;HANGUL JONGSEONG HIEUH-NIEUN;Lo;0;L;;;;;N;;;;; -11F6;HANGUL JONGSEONG HIEUH-RIEUL;Lo;0;L;;;;;N;;;;; -11F7;HANGUL JONGSEONG HIEUH-MIEUM;Lo;0;L;;;;;N;;;;; -11F8;HANGUL JONGSEONG HIEUH-PIEUP;Lo;0;L;;;;;N;;;;; -11F9;HANGUL JONGSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;; -11FA;HANGUL JONGSEONG KIYEOK-NIEUN;Lo;0;L;;;;;N;;;;; -11FB;HANGUL JONGSEONG KIYEOK-PIEUP;Lo;0;L;;;;;N;;;;; -11FC;HANGUL JONGSEONG KIYEOK-CHIEUCH;Lo;0;L;;;;;N;;;;; -11FD;HANGUL JONGSEONG KIYEOK-KHIEUKH;Lo;0;L;;;;;N;;;;; -11FE;HANGUL JONGSEONG KIYEOK-HIEUH;Lo;0;L;;;;;N;;;;; -11FF;HANGUL JONGSEONG SSANGNIEUN;Lo;0;L;;;;;N;;;;; -1200;ETHIOPIC SYLLABLE HA;Lo;0;L;;;;;N;;;;; -1201;ETHIOPIC SYLLABLE HU;Lo;0;L;;;;;N;;;;; -1202;ETHIOPIC SYLLABLE HI;Lo;0;L;;;;;N;;;;; -1203;ETHIOPIC SYLLABLE HAA;Lo;0;L;;;;;N;;;;; -1204;ETHIOPIC SYLLABLE HEE;Lo;0;L;;;;;N;;;;; -1205;ETHIOPIC SYLLABLE HE;Lo;0;L;;;;;N;;;;; -1206;ETHIOPIC SYLLABLE HO;Lo;0;L;;;;;N;;;;; -1207;ETHIOPIC SYLLABLE HOA;Lo;0;L;;;;;N;;;;; -1208;ETHIOPIC SYLLABLE LA;Lo;0;L;;;;;N;;;;; -1209;ETHIOPIC SYLLABLE LU;Lo;0;L;;;;;N;;;;; -120A;ETHIOPIC SYLLABLE LI;Lo;0;L;;;;;N;;;;; -120B;ETHIOPIC SYLLABLE LAA;Lo;0;L;;;;;N;;;;; -120C;ETHIOPIC SYLLABLE LEE;Lo;0;L;;;;;N;;;;; -120D;ETHIOPIC SYLLABLE LE;Lo;0;L;;;;;N;;;;; -120E;ETHIOPIC SYLLABLE LO;Lo;0;L;;;;;N;;;;; -120F;ETHIOPIC SYLLABLE LWA;Lo;0;L;;;;;N;;;;; -1210;ETHIOPIC SYLLABLE HHA;Lo;0;L;;;;;N;;;;; -1211;ETHIOPIC SYLLABLE HHU;Lo;0;L;;;;;N;;;;; -1212;ETHIOPIC SYLLABLE HHI;Lo;0;L;;;;;N;;;;; -1213;ETHIOPIC SYLLABLE HHAA;Lo;0;L;;;;;N;;;;; -1214;ETHIOPIC SYLLABLE HHEE;Lo;0;L;;;;;N;;;;; -1215;ETHIOPIC SYLLABLE HHE;Lo;0;L;;;;;N;;;;; -1216;ETHIOPIC SYLLABLE HHO;Lo;0;L;;;;;N;;;;; -1217;ETHIOPIC SYLLABLE HHWA;Lo;0;L;;;;;N;;;;; -1218;ETHIOPIC SYLLABLE MA;Lo;0;L;;;;;N;;;;; -1219;ETHIOPIC SYLLABLE MU;Lo;0;L;;;;;N;;;;; -121A;ETHIOPIC SYLLABLE MI;Lo;0;L;;;;;N;;;;; -121B;ETHIOPIC SYLLABLE MAA;Lo;0;L;;;;;N;;;;; -121C;ETHIOPIC SYLLABLE MEE;Lo;0;L;;;;;N;;;;; -121D;ETHIOPIC SYLLABLE ME;Lo;0;L;;;;;N;;;;; -121E;ETHIOPIC SYLLABLE MO;Lo;0;L;;;;;N;;;;; -121F;ETHIOPIC SYLLABLE MWA;Lo;0;L;;;;;N;;;;; -1220;ETHIOPIC SYLLABLE SZA;Lo;0;L;;;;;N;;;;; -1221;ETHIOPIC SYLLABLE SZU;Lo;0;L;;;;;N;;;;; -1222;ETHIOPIC SYLLABLE SZI;Lo;0;L;;;;;N;;;;; -1223;ETHIOPIC SYLLABLE SZAA;Lo;0;L;;;;;N;;;;; -1224;ETHIOPIC SYLLABLE SZEE;Lo;0;L;;;;;N;;;;; -1225;ETHIOPIC SYLLABLE SZE;Lo;0;L;;;;;N;;;;; -1226;ETHIOPIC SYLLABLE SZO;Lo;0;L;;;;;N;;;;; -1227;ETHIOPIC SYLLABLE SZWA;Lo;0;L;;;;;N;;;;; -1228;ETHIOPIC SYLLABLE RA;Lo;0;L;;;;;N;;;;; -1229;ETHIOPIC SYLLABLE RU;Lo;0;L;;;;;N;;;;; -122A;ETHIOPIC SYLLABLE RI;Lo;0;L;;;;;N;;;;; -122B;ETHIOPIC SYLLABLE RAA;Lo;0;L;;;;;N;;;;; -122C;ETHIOPIC SYLLABLE REE;Lo;0;L;;;;;N;;;;; -122D;ETHIOPIC SYLLABLE RE;Lo;0;L;;;;;N;;;;; -122E;ETHIOPIC SYLLABLE RO;Lo;0;L;;;;;N;;;;; -122F;ETHIOPIC SYLLABLE RWA;Lo;0;L;;;;;N;;;;; -1230;ETHIOPIC SYLLABLE SA;Lo;0;L;;;;;N;;;;; -1231;ETHIOPIC SYLLABLE SU;Lo;0;L;;;;;N;;;;; -1232;ETHIOPIC SYLLABLE SI;Lo;0;L;;;;;N;;;;; -1233;ETHIOPIC SYLLABLE SAA;Lo;0;L;;;;;N;;;;; -1234;ETHIOPIC SYLLABLE SEE;Lo;0;L;;;;;N;;;;; -1235;ETHIOPIC SYLLABLE SE;Lo;0;L;;;;;N;;;;; -1236;ETHIOPIC SYLLABLE SO;Lo;0;L;;;;;N;;;;; -1237;ETHIOPIC SYLLABLE SWA;Lo;0;L;;;;;N;;;;; -1238;ETHIOPIC SYLLABLE SHA;Lo;0;L;;;;;N;;;;; -1239;ETHIOPIC SYLLABLE SHU;Lo;0;L;;;;;N;;;;; -123A;ETHIOPIC SYLLABLE SHI;Lo;0;L;;;;;N;;;;; -123B;ETHIOPIC SYLLABLE SHAA;Lo;0;L;;;;;N;;;;; -123C;ETHIOPIC SYLLABLE SHEE;Lo;0;L;;;;;N;;;;; -123D;ETHIOPIC SYLLABLE SHE;Lo;0;L;;;;;N;;;;; -123E;ETHIOPIC SYLLABLE SHO;Lo;0;L;;;;;N;;;;; -123F;ETHIOPIC SYLLABLE SHWA;Lo;0;L;;;;;N;;;;; -1240;ETHIOPIC SYLLABLE QA;Lo;0;L;;;;;N;;;;; -1241;ETHIOPIC SYLLABLE QU;Lo;0;L;;;;;N;;;;; -1242;ETHIOPIC SYLLABLE QI;Lo;0;L;;;;;N;;;;; -1243;ETHIOPIC SYLLABLE QAA;Lo;0;L;;;;;N;;;;; -1244;ETHIOPIC SYLLABLE QEE;Lo;0;L;;;;;N;;;;; -1245;ETHIOPIC SYLLABLE QE;Lo;0;L;;;;;N;;;;; -1246;ETHIOPIC SYLLABLE QO;Lo;0;L;;;;;N;;;;; -1247;ETHIOPIC SYLLABLE QOA;Lo;0;L;;;;;N;;;;; -1248;ETHIOPIC SYLLABLE QWA;Lo;0;L;;;;;N;;;;; -124A;ETHIOPIC SYLLABLE QWI;Lo;0;L;;;;;N;;;;; -124B;ETHIOPIC SYLLABLE QWAA;Lo;0;L;;;;;N;;;;; -124C;ETHIOPIC SYLLABLE QWEE;Lo;0;L;;;;;N;;;;; -124D;ETHIOPIC SYLLABLE QWE;Lo;0;L;;;;;N;;;;; -1250;ETHIOPIC SYLLABLE QHA;Lo;0;L;;;;;N;;;;; -1251;ETHIOPIC SYLLABLE QHU;Lo;0;L;;;;;N;;;;; -1252;ETHIOPIC SYLLABLE QHI;Lo;0;L;;;;;N;;;;; -1253;ETHIOPIC SYLLABLE QHAA;Lo;0;L;;;;;N;;;;; -1254;ETHIOPIC SYLLABLE QHEE;Lo;0;L;;;;;N;;;;; -1255;ETHIOPIC SYLLABLE QHE;Lo;0;L;;;;;N;;;;; -1256;ETHIOPIC SYLLABLE QHO;Lo;0;L;;;;;N;;;;; -1258;ETHIOPIC SYLLABLE QHWA;Lo;0;L;;;;;N;;;;; -125A;ETHIOPIC SYLLABLE QHWI;Lo;0;L;;;;;N;;;;; -125B;ETHIOPIC SYLLABLE QHWAA;Lo;0;L;;;;;N;;;;; -125C;ETHIOPIC SYLLABLE QHWEE;Lo;0;L;;;;;N;;;;; -125D;ETHIOPIC SYLLABLE QHWE;Lo;0;L;;;;;N;;;;; -1260;ETHIOPIC SYLLABLE BA;Lo;0;L;;;;;N;;;;; -1261;ETHIOPIC SYLLABLE BU;Lo;0;L;;;;;N;;;;; -1262;ETHIOPIC SYLLABLE BI;Lo;0;L;;;;;N;;;;; -1263;ETHIOPIC SYLLABLE BAA;Lo;0;L;;;;;N;;;;; -1264;ETHIOPIC SYLLABLE BEE;Lo;0;L;;;;;N;;;;; -1265;ETHIOPIC SYLLABLE BE;Lo;0;L;;;;;N;;;;; -1266;ETHIOPIC SYLLABLE BO;Lo;0;L;;;;;N;;;;; -1267;ETHIOPIC SYLLABLE BWA;Lo;0;L;;;;;N;;;;; -1268;ETHIOPIC SYLLABLE VA;Lo;0;L;;;;;N;;;;; -1269;ETHIOPIC SYLLABLE VU;Lo;0;L;;;;;N;;;;; -126A;ETHIOPIC SYLLABLE VI;Lo;0;L;;;;;N;;;;; -126B;ETHIOPIC SYLLABLE VAA;Lo;0;L;;;;;N;;;;; -126C;ETHIOPIC SYLLABLE VEE;Lo;0;L;;;;;N;;;;; -126D;ETHIOPIC SYLLABLE VE;Lo;0;L;;;;;N;;;;; -126E;ETHIOPIC SYLLABLE VO;Lo;0;L;;;;;N;;;;; -126F;ETHIOPIC SYLLABLE VWA;Lo;0;L;;;;;N;;;;; -1270;ETHIOPIC SYLLABLE TA;Lo;0;L;;;;;N;;;;; -1271;ETHIOPIC SYLLABLE TU;Lo;0;L;;;;;N;;;;; -1272;ETHIOPIC SYLLABLE TI;Lo;0;L;;;;;N;;;;; -1273;ETHIOPIC SYLLABLE TAA;Lo;0;L;;;;;N;;;;; -1274;ETHIOPIC SYLLABLE TEE;Lo;0;L;;;;;N;;;;; -1275;ETHIOPIC SYLLABLE TE;Lo;0;L;;;;;N;;;;; -1276;ETHIOPIC SYLLABLE TO;Lo;0;L;;;;;N;;;;; -1277;ETHIOPIC SYLLABLE TWA;Lo;0;L;;;;;N;;;;; -1278;ETHIOPIC SYLLABLE CA;Lo;0;L;;;;;N;;;;; -1279;ETHIOPIC SYLLABLE CU;Lo;0;L;;;;;N;;;;; -127A;ETHIOPIC SYLLABLE CI;Lo;0;L;;;;;N;;;;; -127B;ETHIOPIC SYLLABLE CAA;Lo;0;L;;;;;N;;;;; -127C;ETHIOPIC SYLLABLE CEE;Lo;0;L;;;;;N;;;;; -127D;ETHIOPIC SYLLABLE CE;Lo;0;L;;;;;N;;;;; -127E;ETHIOPIC SYLLABLE CO;Lo;0;L;;;;;N;;;;; -127F;ETHIOPIC SYLLABLE CWA;Lo;0;L;;;;;N;;;;; -1280;ETHIOPIC SYLLABLE XA;Lo;0;L;;;;;N;;;;; -1281;ETHIOPIC SYLLABLE XU;Lo;0;L;;;;;N;;;;; -1282;ETHIOPIC SYLLABLE XI;Lo;0;L;;;;;N;;;;; -1283;ETHIOPIC SYLLABLE XAA;Lo;0;L;;;;;N;;;;; -1284;ETHIOPIC SYLLABLE XEE;Lo;0;L;;;;;N;;;;; -1285;ETHIOPIC SYLLABLE XE;Lo;0;L;;;;;N;;;;; -1286;ETHIOPIC SYLLABLE XO;Lo;0;L;;;;;N;;;;; -1287;ETHIOPIC SYLLABLE XOA;Lo;0;L;;;;;N;;;;; -1288;ETHIOPIC SYLLABLE XWA;Lo;0;L;;;;;N;;;;; -128A;ETHIOPIC SYLLABLE XWI;Lo;0;L;;;;;N;;;;; -128B;ETHIOPIC SYLLABLE XWAA;Lo;0;L;;;;;N;;;;; -128C;ETHIOPIC SYLLABLE XWEE;Lo;0;L;;;;;N;;;;; -128D;ETHIOPIC SYLLABLE XWE;Lo;0;L;;;;;N;;;;; -1290;ETHIOPIC SYLLABLE NA;Lo;0;L;;;;;N;;;;; -1291;ETHIOPIC SYLLABLE NU;Lo;0;L;;;;;N;;;;; -1292;ETHIOPIC SYLLABLE NI;Lo;0;L;;;;;N;;;;; -1293;ETHIOPIC SYLLABLE NAA;Lo;0;L;;;;;N;;;;; -1294;ETHIOPIC SYLLABLE NEE;Lo;0;L;;;;;N;;;;; -1295;ETHIOPIC SYLLABLE NE;Lo;0;L;;;;;N;;;;; -1296;ETHIOPIC SYLLABLE NO;Lo;0;L;;;;;N;;;;; -1297;ETHIOPIC SYLLABLE NWA;Lo;0;L;;;;;N;;;;; -1298;ETHIOPIC SYLLABLE NYA;Lo;0;L;;;;;N;;;;; -1299;ETHIOPIC SYLLABLE NYU;Lo;0;L;;;;;N;;;;; -129A;ETHIOPIC SYLLABLE NYI;Lo;0;L;;;;;N;;;;; -129B;ETHIOPIC SYLLABLE NYAA;Lo;0;L;;;;;N;;;;; -129C;ETHIOPIC SYLLABLE NYEE;Lo;0;L;;;;;N;;;;; -129D;ETHIOPIC SYLLABLE NYE;Lo;0;L;;;;;N;;;;; -129E;ETHIOPIC SYLLABLE NYO;Lo;0;L;;;;;N;;;;; -129F;ETHIOPIC SYLLABLE NYWA;Lo;0;L;;;;;N;;;;; -12A0;ETHIOPIC SYLLABLE GLOTTAL A;Lo;0;L;;;;;N;;;;; -12A1;ETHIOPIC SYLLABLE GLOTTAL U;Lo;0;L;;;;;N;;;;; -12A2;ETHIOPIC SYLLABLE GLOTTAL I;Lo;0;L;;;;;N;;;;; -12A3;ETHIOPIC SYLLABLE GLOTTAL AA;Lo;0;L;;;;;N;;;;; -12A4;ETHIOPIC SYLLABLE GLOTTAL EE;Lo;0;L;;;;;N;;;;; -12A5;ETHIOPIC SYLLABLE GLOTTAL E;Lo;0;L;;;;;N;;;;; -12A6;ETHIOPIC SYLLABLE GLOTTAL O;Lo;0;L;;;;;N;;;;; -12A7;ETHIOPIC SYLLABLE GLOTTAL WA;Lo;0;L;;;;;N;;;;; -12A8;ETHIOPIC SYLLABLE KA;Lo;0;L;;;;;N;;;;; -12A9;ETHIOPIC SYLLABLE KU;Lo;0;L;;;;;N;;;;; -12AA;ETHIOPIC SYLLABLE KI;Lo;0;L;;;;;N;;;;; -12AB;ETHIOPIC SYLLABLE KAA;Lo;0;L;;;;;N;;;;; -12AC;ETHIOPIC SYLLABLE KEE;Lo;0;L;;;;;N;;;;; -12AD;ETHIOPIC SYLLABLE KE;Lo;0;L;;;;;N;;;;; -12AE;ETHIOPIC SYLLABLE KO;Lo;0;L;;;;;N;;;;; -12AF;ETHIOPIC SYLLABLE KOA;Lo;0;L;;;;;N;;;;; -12B0;ETHIOPIC SYLLABLE KWA;Lo;0;L;;;;;N;;;;; -12B2;ETHIOPIC SYLLABLE KWI;Lo;0;L;;;;;N;;;;; -12B3;ETHIOPIC SYLLABLE KWAA;Lo;0;L;;;;;N;;;;; -12B4;ETHIOPIC SYLLABLE KWEE;Lo;0;L;;;;;N;;;;; -12B5;ETHIOPIC SYLLABLE KWE;Lo;0;L;;;;;N;;;;; -12B8;ETHIOPIC SYLLABLE KXA;Lo;0;L;;;;;N;;;;; -12B9;ETHIOPIC SYLLABLE KXU;Lo;0;L;;;;;N;;;;; -12BA;ETHIOPIC SYLLABLE KXI;Lo;0;L;;;;;N;;;;; -12BB;ETHIOPIC SYLLABLE KXAA;Lo;0;L;;;;;N;;;;; -12BC;ETHIOPIC SYLLABLE KXEE;Lo;0;L;;;;;N;;;;; -12BD;ETHIOPIC SYLLABLE KXE;Lo;0;L;;;;;N;;;;; -12BE;ETHIOPIC SYLLABLE KXO;Lo;0;L;;;;;N;;;;; -12C0;ETHIOPIC SYLLABLE KXWA;Lo;0;L;;;;;N;;;;; -12C2;ETHIOPIC SYLLABLE KXWI;Lo;0;L;;;;;N;;;;; -12C3;ETHIOPIC SYLLABLE KXWAA;Lo;0;L;;;;;N;;;;; -12C4;ETHIOPIC SYLLABLE KXWEE;Lo;0;L;;;;;N;;;;; -12C5;ETHIOPIC SYLLABLE KXWE;Lo;0;L;;;;;N;;;;; -12C8;ETHIOPIC SYLLABLE WA;Lo;0;L;;;;;N;;;;; -12C9;ETHIOPIC SYLLABLE WU;Lo;0;L;;;;;N;;;;; -12CA;ETHIOPIC SYLLABLE WI;Lo;0;L;;;;;N;;;;; -12CB;ETHIOPIC SYLLABLE WAA;Lo;0;L;;;;;N;;;;; -12CC;ETHIOPIC SYLLABLE WEE;Lo;0;L;;;;;N;;;;; -12CD;ETHIOPIC SYLLABLE WE;Lo;0;L;;;;;N;;;;; -12CE;ETHIOPIC SYLLABLE WO;Lo;0;L;;;;;N;;;;; -12CF;ETHIOPIC SYLLABLE WOA;Lo;0;L;;;;;N;;;;; -12D0;ETHIOPIC SYLLABLE PHARYNGEAL A;Lo;0;L;;;;;N;;;;; -12D1;ETHIOPIC SYLLABLE PHARYNGEAL U;Lo;0;L;;;;;N;;;;; -12D2;ETHIOPIC SYLLABLE PHARYNGEAL I;Lo;0;L;;;;;N;;;;; -12D3;ETHIOPIC SYLLABLE PHARYNGEAL AA;Lo;0;L;;;;;N;;;;; -12D4;ETHIOPIC SYLLABLE PHARYNGEAL EE;Lo;0;L;;;;;N;;;;; -12D5;ETHIOPIC SYLLABLE PHARYNGEAL E;Lo;0;L;;;;;N;;;;; -12D6;ETHIOPIC SYLLABLE PHARYNGEAL O;Lo;0;L;;;;;N;;;;; -12D8;ETHIOPIC SYLLABLE ZA;Lo;0;L;;;;;N;;;;; -12D9;ETHIOPIC SYLLABLE ZU;Lo;0;L;;;;;N;;;;; -12DA;ETHIOPIC SYLLABLE ZI;Lo;0;L;;;;;N;;;;; -12DB;ETHIOPIC SYLLABLE ZAA;Lo;0;L;;;;;N;;;;; -12DC;ETHIOPIC SYLLABLE ZEE;Lo;0;L;;;;;N;;;;; -12DD;ETHIOPIC SYLLABLE ZE;Lo;0;L;;;;;N;;;;; -12DE;ETHIOPIC SYLLABLE ZO;Lo;0;L;;;;;N;;;;; -12DF;ETHIOPIC SYLLABLE ZWA;Lo;0;L;;;;;N;;;;; -12E0;ETHIOPIC SYLLABLE ZHA;Lo;0;L;;;;;N;;;;; -12E1;ETHIOPIC SYLLABLE ZHU;Lo;0;L;;;;;N;;;;; -12E2;ETHIOPIC SYLLABLE ZHI;Lo;0;L;;;;;N;;;;; -12E3;ETHIOPIC SYLLABLE ZHAA;Lo;0;L;;;;;N;;;;; -12E4;ETHIOPIC SYLLABLE ZHEE;Lo;0;L;;;;;N;;;;; -12E5;ETHIOPIC SYLLABLE ZHE;Lo;0;L;;;;;N;;;;; -12E6;ETHIOPIC SYLLABLE ZHO;Lo;0;L;;;;;N;;;;; -12E7;ETHIOPIC SYLLABLE ZHWA;Lo;0;L;;;;;N;;;;; -12E8;ETHIOPIC SYLLABLE YA;Lo;0;L;;;;;N;;;;; -12E9;ETHIOPIC SYLLABLE YU;Lo;0;L;;;;;N;;;;; -12EA;ETHIOPIC SYLLABLE YI;Lo;0;L;;;;;N;;;;; -12EB;ETHIOPIC SYLLABLE YAA;Lo;0;L;;;;;N;;;;; -12EC;ETHIOPIC SYLLABLE YEE;Lo;0;L;;;;;N;;;;; -12ED;ETHIOPIC SYLLABLE YE;Lo;0;L;;;;;N;;;;; -12EE;ETHIOPIC SYLLABLE YO;Lo;0;L;;;;;N;;;;; -12EF;ETHIOPIC SYLLABLE YOA;Lo;0;L;;;;;N;;;;; -12F0;ETHIOPIC SYLLABLE DA;Lo;0;L;;;;;N;;;;; -12F1;ETHIOPIC SYLLABLE DU;Lo;0;L;;;;;N;;;;; -12F2;ETHIOPIC SYLLABLE DI;Lo;0;L;;;;;N;;;;; -12F3;ETHIOPIC SYLLABLE DAA;Lo;0;L;;;;;N;;;;; -12F4;ETHIOPIC SYLLABLE DEE;Lo;0;L;;;;;N;;;;; -12F5;ETHIOPIC SYLLABLE DE;Lo;0;L;;;;;N;;;;; -12F6;ETHIOPIC SYLLABLE DO;Lo;0;L;;;;;N;;;;; -12F7;ETHIOPIC SYLLABLE DWA;Lo;0;L;;;;;N;;;;; -12F8;ETHIOPIC SYLLABLE DDA;Lo;0;L;;;;;N;;;;; -12F9;ETHIOPIC SYLLABLE DDU;Lo;0;L;;;;;N;;;;; -12FA;ETHIOPIC SYLLABLE DDI;Lo;0;L;;;;;N;;;;; -12FB;ETHIOPIC SYLLABLE DDAA;Lo;0;L;;;;;N;;;;; -12FC;ETHIOPIC SYLLABLE DDEE;Lo;0;L;;;;;N;;;;; -12FD;ETHIOPIC SYLLABLE DDE;Lo;0;L;;;;;N;;;;; -12FE;ETHIOPIC SYLLABLE DDO;Lo;0;L;;;;;N;;;;; -12FF;ETHIOPIC SYLLABLE DDWA;Lo;0;L;;;;;N;;;;; -1300;ETHIOPIC SYLLABLE JA;Lo;0;L;;;;;N;;;;; -1301;ETHIOPIC SYLLABLE JU;Lo;0;L;;;;;N;;;;; -1302;ETHIOPIC SYLLABLE JI;Lo;0;L;;;;;N;;;;; -1303;ETHIOPIC SYLLABLE JAA;Lo;0;L;;;;;N;;;;; -1304;ETHIOPIC SYLLABLE JEE;Lo;0;L;;;;;N;;;;; -1305;ETHIOPIC SYLLABLE JE;Lo;0;L;;;;;N;;;;; -1306;ETHIOPIC SYLLABLE JO;Lo;0;L;;;;;N;;;;; -1307;ETHIOPIC SYLLABLE JWA;Lo;0;L;;;;;N;;;;; -1308;ETHIOPIC SYLLABLE GA;Lo;0;L;;;;;N;;;;; -1309;ETHIOPIC SYLLABLE GU;Lo;0;L;;;;;N;;;;; -130A;ETHIOPIC SYLLABLE GI;Lo;0;L;;;;;N;;;;; -130B;ETHIOPIC SYLLABLE GAA;Lo;0;L;;;;;N;;;;; -130C;ETHIOPIC SYLLABLE GEE;Lo;0;L;;;;;N;;;;; -130D;ETHIOPIC SYLLABLE GE;Lo;0;L;;;;;N;;;;; -130E;ETHIOPIC SYLLABLE GO;Lo;0;L;;;;;N;;;;; -130F;ETHIOPIC SYLLABLE GOA;Lo;0;L;;;;;N;;;;; -1310;ETHIOPIC SYLLABLE GWA;Lo;0;L;;;;;N;;;;; -1312;ETHIOPIC SYLLABLE GWI;Lo;0;L;;;;;N;;;;; -1313;ETHIOPIC SYLLABLE GWAA;Lo;0;L;;;;;N;;;;; -1314;ETHIOPIC SYLLABLE GWEE;Lo;0;L;;;;;N;;;;; -1315;ETHIOPIC SYLLABLE GWE;Lo;0;L;;;;;N;;;;; -1318;ETHIOPIC SYLLABLE GGA;Lo;0;L;;;;;N;;;;; -1319;ETHIOPIC SYLLABLE GGU;Lo;0;L;;;;;N;;;;; -131A;ETHIOPIC SYLLABLE GGI;Lo;0;L;;;;;N;;;;; -131B;ETHIOPIC SYLLABLE GGAA;Lo;0;L;;;;;N;;;;; -131C;ETHIOPIC SYLLABLE GGEE;Lo;0;L;;;;;N;;;;; -131D;ETHIOPIC SYLLABLE GGE;Lo;0;L;;;;;N;;;;; -131E;ETHIOPIC SYLLABLE GGO;Lo;0;L;;;;;N;;;;; -131F;ETHIOPIC SYLLABLE GGWAA;Lo;0;L;;;;;N;;;;; -1320;ETHIOPIC SYLLABLE THA;Lo;0;L;;;;;N;;;;; -1321;ETHIOPIC SYLLABLE THU;Lo;0;L;;;;;N;;;;; -1322;ETHIOPIC SYLLABLE THI;Lo;0;L;;;;;N;;;;; -1323;ETHIOPIC SYLLABLE THAA;Lo;0;L;;;;;N;;;;; -1324;ETHIOPIC SYLLABLE THEE;Lo;0;L;;;;;N;;;;; -1325;ETHIOPIC SYLLABLE THE;Lo;0;L;;;;;N;;;;; -1326;ETHIOPIC SYLLABLE THO;Lo;0;L;;;;;N;;;;; -1327;ETHIOPIC SYLLABLE THWA;Lo;0;L;;;;;N;;;;; -1328;ETHIOPIC SYLLABLE CHA;Lo;0;L;;;;;N;;;;; -1329;ETHIOPIC SYLLABLE CHU;Lo;0;L;;;;;N;;;;; -132A;ETHIOPIC SYLLABLE CHI;Lo;0;L;;;;;N;;;;; -132B;ETHIOPIC SYLLABLE CHAA;Lo;0;L;;;;;N;;;;; -132C;ETHIOPIC SYLLABLE CHEE;Lo;0;L;;;;;N;;;;; -132D;ETHIOPIC SYLLABLE CHE;Lo;0;L;;;;;N;;;;; -132E;ETHIOPIC SYLLABLE CHO;Lo;0;L;;;;;N;;;;; -132F;ETHIOPIC SYLLABLE CHWA;Lo;0;L;;;;;N;;;;; -1330;ETHIOPIC SYLLABLE PHA;Lo;0;L;;;;;N;;;;; -1331;ETHIOPIC SYLLABLE PHU;Lo;0;L;;;;;N;;;;; -1332;ETHIOPIC SYLLABLE PHI;Lo;0;L;;;;;N;;;;; -1333;ETHIOPIC SYLLABLE PHAA;Lo;0;L;;;;;N;;;;; -1334;ETHIOPIC SYLLABLE PHEE;Lo;0;L;;;;;N;;;;; -1335;ETHIOPIC SYLLABLE PHE;Lo;0;L;;;;;N;;;;; -1336;ETHIOPIC SYLLABLE PHO;Lo;0;L;;;;;N;;;;; -1337;ETHIOPIC SYLLABLE PHWA;Lo;0;L;;;;;N;;;;; -1338;ETHIOPIC SYLLABLE TSA;Lo;0;L;;;;;N;;;;; -1339;ETHIOPIC SYLLABLE TSU;Lo;0;L;;;;;N;;;;; -133A;ETHIOPIC SYLLABLE TSI;Lo;0;L;;;;;N;;;;; -133B;ETHIOPIC SYLLABLE TSAA;Lo;0;L;;;;;N;;;;; -133C;ETHIOPIC SYLLABLE TSEE;Lo;0;L;;;;;N;;;;; -133D;ETHIOPIC SYLLABLE TSE;Lo;0;L;;;;;N;;;;; -133E;ETHIOPIC SYLLABLE TSO;Lo;0;L;;;;;N;;;;; -133F;ETHIOPIC SYLLABLE TSWA;Lo;0;L;;;;;N;;;;; -1340;ETHIOPIC SYLLABLE TZA;Lo;0;L;;;;;N;;;;; -1341;ETHIOPIC SYLLABLE TZU;Lo;0;L;;;;;N;;;;; -1342;ETHIOPIC SYLLABLE TZI;Lo;0;L;;;;;N;;;;; -1343;ETHIOPIC SYLLABLE TZAA;Lo;0;L;;;;;N;;;;; -1344;ETHIOPIC SYLLABLE TZEE;Lo;0;L;;;;;N;;;;; -1345;ETHIOPIC SYLLABLE TZE;Lo;0;L;;;;;N;;;;; -1346;ETHIOPIC SYLLABLE TZO;Lo;0;L;;;;;N;;;;; -1347;ETHIOPIC SYLLABLE TZOA;Lo;0;L;;;;;N;;;;; -1348;ETHIOPIC SYLLABLE FA;Lo;0;L;;;;;N;;;;; -1349;ETHIOPIC SYLLABLE FU;Lo;0;L;;;;;N;;;;; -134A;ETHIOPIC SYLLABLE FI;Lo;0;L;;;;;N;;;;; -134B;ETHIOPIC SYLLABLE FAA;Lo;0;L;;;;;N;;;;; -134C;ETHIOPIC SYLLABLE FEE;Lo;0;L;;;;;N;;;;; -134D;ETHIOPIC SYLLABLE FE;Lo;0;L;;;;;N;;;;; -134E;ETHIOPIC SYLLABLE FO;Lo;0;L;;;;;N;;;;; -134F;ETHIOPIC SYLLABLE FWA;Lo;0;L;;;;;N;;;;; -1350;ETHIOPIC SYLLABLE PA;Lo;0;L;;;;;N;;;;; -1351;ETHIOPIC SYLLABLE PU;Lo;0;L;;;;;N;;;;; -1352;ETHIOPIC SYLLABLE PI;Lo;0;L;;;;;N;;;;; -1353;ETHIOPIC SYLLABLE PAA;Lo;0;L;;;;;N;;;;; -1354;ETHIOPIC SYLLABLE PEE;Lo;0;L;;;;;N;;;;; -1355;ETHIOPIC SYLLABLE PE;Lo;0;L;;;;;N;;;;; -1356;ETHIOPIC SYLLABLE PO;Lo;0;L;;;;;N;;;;; -1357;ETHIOPIC SYLLABLE PWA;Lo;0;L;;;;;N;;;;; -1358;ETHIOPIC SYLLABLE RYA;Lo;0;L;;;;;N;;;;; -1359;ETHIOPIC SYLLABLE MYA;Lo;0;L;;;;;N;;;;; -135A;ETHIOPIC SYLLABLE FYA;Lo;0;L;;;;;N;;;;; -135F;ETHIOPIC COMBINING GEMINATION MARK;Mn;230;NSM;;;;;N;;;;; -1360;ETHIOPIC SECTION MARK;So;0;L;;;;;N;;;;; -1361;ETHIOPIC WORDSPACE;Po;0;L;;;;;N;;;;; -1362;ETHIOPIC FULL STOP;Po;0;L;;;;;N;;;;; -1363;ETHIOPIC COMMA;Po;0;L;;;;;N;;;;; -1364;ETHIOPIC SEMICOLON;Po;0;L;;;;;N;;;;; -1365;ETHIOPIC COLON;Po;0;L;;;;;N;;;;; -1366;ETHIOPIC PREFACE COLON;Po;0;L;;;;;N;;;;; -1367;ETHIOPIC QUESTION MARK;Po;0;L;;;;;N;;;;; -1368;ETHIOPIC PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;; -1369;ETHIOPIC DIGIT ONE;No;0;L;;;1;1;N;;;;; -136A;ETHIOPIC DIGIT TWO;No;0;L;;;2;2;N;;;;; -136B;ETHIOPIC DIGIT THREE;No;0;L;;;3;3;N;;;;; -136C;ETHIOPIC DIGIT FOUR;No;0;L;;;4;4;N;;;;; -136D;ETHIOPIC DIGIT FIVE;No;0;L;;;5;5;N;;;;; -136E;ETHIOPIC DIGIT SIX;No;0;L;;;6;6;N;;;;; -136F;ETHIOPIC DIGIT SEVEN;No;0;L;;;7;7;N;;;;; -1370;ETHIOPIC DIGIT EIGHT;No;0;L;;;8;8;N;;;;; -1371;ETHIOPIC DIGIT NINE;No;0;L;;;9;9;N;;;;; -1372;ETHIOPIC NUMBER TEN;No;0;L;;;;10;N;;;;; -1373;ETHIOPIC NUMBER TWENTY;No;0;L;;;;20;N;;;;; -1374;ETHIOPIC NUMBER THIRTY;No;0;L;;;;30;N;;;;; -1375;ETHIOPIC NUMBER FORTY;No;0;L;;;;40;N;;;;; -1376;ETHIOPIC NUMBER FIFTY;No;0;L;;;;50;N;;;;; -1377;ETHIOPIC NUMBER SIXTY;No;0;L;;;;60;N;;;;; -1378;ETHIOPIC NUMBER SEVENTY;No;0;L;;;;70;N;;;;; -1379;ETHIOPIC NUMBER EIGHTY;No;0;L;;;;80;N;;;;; -137A;ETHIOPIC NUMBER NINETY;No;0;L;;;;90;N;;;;; -137B;ETHIOPIC NUMBER HUNDRED;No;0;L;;;;100;N;;;;; -137C;ETHIOPIC NUMBER TEN THOUSAND;No;0;L;;;;10000;N;;;;; -1380;ETHIOPIC SYLLABLE SEBATBEIT MWA;Lo;0;L;;;;;N;;;;; -1381;ETHIOPIC SYLLABLE MWI;Lo;0;L;;;;;N;;;;; -1382;ETHIOPIC SYLLABLE MWEE;Lo;0;L;;;;;N;;;;; -1383;ETHIOPIC SYLLABLE MWE;Lo;0;L;;;;;N;;;;; -1384;ETHIOPIC SYLLABLE SEBATBEIT BWA;Lo;0;L;;;;;N;;;;; -1385;ETHIOPIC SYLLABLE BWI;Lo;0;L;;;;;N;;;;; -1386;ETHIOPIC SYLLABLE BWEE;Lo;0;L;;;;;N;;;;; -1387;ETHIOPIC SYLLABLE BWE;Lo;0;L;;;;;N;;;;; -1388;ETHIOPIC SYLLABLE SEBATBEIT FWA;Lo;0;L;;;;;N;;;;; -1389;ETHIOPIC SYLLABLE FWI;Lo;0;L;;;;;N;;;;; -138A;ETHIOPIC SYLLABLE FWEE;Lo;0;L;;;;;N;;;;; -138B;ETHIOPIC SYLLABLE FWE;Lo;0;L;;;;;N;;;;; -138C;ETHIOPIC SYLLABLE SEBATBEIT PWA;Lo;0;L;;;;;N;;;;; -138D;ETHIOPIC SYLLABLE PWI;Lo;0;L;;;;;N;;;;; -138E;ETHIOPIC SYLLABLE PWEE;Lo;0;L;;;;;N;;;;; -138F;ETHIOPIC SYLLABLE PWE;Lo;0;L;;;;;N;;;;; -1390;ETHIOPIC TONAL MARK YIZET;So;0;ON;;;;;N;;;;; -1391;ETHIOPIC TONAL MARK DERET;So;0;ON;;;;;N;;;;; -1392;ETHIOPIC TONAL MARK RIKRIK;So;0;ON;;;;;N;;;;; -1393;ETHIOPIC TONAL MARK SHORT RIKRIK;So;0;ON;;;;;N;;;;; -1394;ETHIOPIC TONAL MARK DIFAT;So;0;ON;;;;;N;;;;; -1395;ETHIOPIC TONAL MARK KENAT;So;0;ON;;;;;N;;;;; -1396;ETHIOPIC TONAL MARK CHIRET;So;0;ON;;;;;N;;;;; -1397;ETHIOPIC TONAL MARK HIDET;So;0;ON;;;;;N;;;;; -1398;ETHIOPIC TONAL MARK DERET-HIDET;So;0;ON;;;;;N;;;;; -1399;ETHIOPIC TONAL MARK KURT;So;0;ON;;;;;N;;;;; -13A0;CHEROKEE LETTER A;Lo;0;L;;;;;N;;;;; -13A1;CHEROKEE LETTER E;Lo;0;L;;;;;N;;;;; -13A2;CHEROKEE LETTER I;Lo;0;L;;;;;N;;;;; -13A3;CHEROKEE LETTER O;Lo;0;L;;;;;N;;;;; -13A4;CHEROKEE LETTER U;Lo;0;L;;;;;N;;;;; -13A5;CHEROKEE LETTER V;Lo;0;L;;;;;N;;;;; -13A6;CHEROKEE LETTER GA;Lo;0;L;;;;;N;;;;; -13A7;CHEROKEE LETTER KA;Lo;0;L;;;;;N;;;;; -13A8;CHEROKEE LETTER GE;Lo;0;L;;;;;N;;;;; -13A9;CHEROKEE LETTER GI;Lo;0;L;;;;;N;;;;; -13AA;CHEROKEE LETTER GO;Lo;0;L;;;;;N;;;;; -13AB;CHEROKEE LETTER GU;Lo;0;L;;;;;N;;;;; -13AC;CHEROKEE LETTER GV;Lo;0;L;;;;;N;;;;; -13AD;CHEROKEE LETTER HA;Lo;0;L;;;;;N;;;;; -13AE;CHEROKEE LETTER HE;Lo;0;L;;;;;N;;;;; -13AF;CHEROKEE LETTER HI;Lo;0;L;;;;;N;;;;; -13B0;CHEROKEE LETTER HO;Lo;0;L;;;;;N;;;;; -13B1;CHEROKEE LETTER HU;Lo;0;L;;;;;N;;;;; -13B2;CHEROKEE LETTER HV;Lo;0;L;;;;;N;;;;; -13B3;CHEROKEE LETTER LA;Lo;0;L;;;;;N;;;;; -13B4;CHEROKEE LETTER LE;Lo;0;L;;;;;N;;;;; -13B5;CHEROKEE LETTER LI;Lo;0;L;;;;;N;;;;; -13B6;CHEROKEE LETTER LO;Lo;0;L;;;;;N;;;;; -13B7;CHEROKEE LETTER LU;Lo;0;L;;;;;N;;;;; -13B8;CHEROKEE LETTER LV;Lo;0;L;;;;;N;;;;; -13B9;CHEROKEE LETTER MA;Lo;0;L;;;;;N;;;;; -13BA;CHEROKEE LETTER ME;Lo;0;L;;;;;N;;;;; -13BB;CHEROKEE LETTER MI;Lo;0;L;;;;;N;;;;; -13BC;CHEROKEE LETTER MO;Lo;0;L;;;;;N;;;;; -13BD;CHEROKEE LETTER MU;Lo;0;L;;;;;N;;;;; -13BE;CHEROKEE LETTER NA;Lo;0;L;;;;;N;;;;; -13BF;CHEROKEE LETTER HNA;Lo;0;L;;;;;N;;;;; -13C0;CHEROKEE LETTER NAH;Lo;0;L;;;;;N;;;;; -13C1;CHEROKEE LETTER NE;Lo;0;L;;;;;N;;;;; -13C2;CHEROKEE LETTER NI;Lo;0;L;;;;;N;;;;; -13C3;CHEROKEE LETTER NO;Lo;0;L;;;;;N;;;;; -13C4;CHEROKEE LETTER NU;Lo;0;L;;;;;N;;;;; -13C5;CHEROKEE LETTER NV;Lo;0;L;;;;;N;;;;; -13C6;CHEROKEE LETTER QUA;Lo;0;L;;;;;N;;;;; -13C7;CHEROKEE LETTER QUE;Lo;0;L;;;;;N;;;;; -13C8;CHEROKEE LETTER QUI;Lo;0;L;;;;;N;;;;; -13C9;CHEROKEE LETTER QUO;Lo;0;L;;;;;N;;;;; -13CA;CHEROKEE LETTER QUU;Lo;0;L;;;;;N;;;;; -13CB;CHEROKEE LETTER QUV;Lo;0;L;;;;;N;;;;; -13CC;CHEROKEE LETTER SA;Lo;0;L;;;;;N;;;;; -13CD;CHEROKEE LETTER S;Lo;0;L;;;;;N;;;;; -13CE;CHEROKEE LETTER SE;Lo;0;L;;;;;N;;;;; -13CF;CHEROKEE LETTER SI;Lo;0;L;;;;;N;;;;; -13D0;CHEROKEE LETTER SO;Lo;0;L;;;;;N;;;;; -13D1;CHEROKEE LETTER SU;Lo;0;L;;;;;N;;;;; -13D2;CHEROKEE LETTER SV;Lo;0;L;;;;;N;;;;; -13D3;CHEROKEE LETTER DA;Lo;0;L;;;;;N;;;;; -13D4;CHEROKEE LETTER TA;Lo;0;L;;;;;N;;;;; -13D5;CHEROKEE LETTER DE;Lo;0;L;;;;;N;;;;; -13D6;CHEROKEE LETTER TE;Lo;0;L;;;;;N;;;;; -13D7;CHEROKEE LETTER DI;Lo;0;L;;;;;N;;;;; -13D8;CHEROKEE LETTER TI;Lo;0;L;;;;;N;;;;; -13D9;CHEROKEE LETTER DO;Lo;0;L;;;;;N;;;;; -13DA;CHEROKEE LETTER DU;Lo;0;L;;;;;N;;;;; -13DB;CHEROKEE LETTER DV;Lo;0;L;;;;;N;;;;; -13DC;CHEROKEE LETTER DLA;Lo;0;L;;;;;N;;;;; -13DD;CHEROKEE LETTER TLA;Lo;0;L;;;;;N;;;;; -13DE;CHEROKEE LETTER TLE;Lo;0;L;;;;;N;;;;; -13DF;CHEROKEE LETTER TLI;Lo;0;L;;;;;N;;;;; -13E0;CHEROKEE LETTER TLO;Lo;0;L;;;;;N;;;;; -13E1;CHEROKEE LETTER TLU;Lo;0;L;;;;;N;;;;; -13E2;CHEROKEE LETTER TLV;Lo;0;L;;;;;N;;;;; -13E3;CHEROKEE LETTER TSA;Lo;0;L;;;;;N;;;;; -13E4;CHEROKEE LETTER TSE;Lo;0;L;;;;;N;;;;; -13E5;CHEROKEE LETTER TSI;Lo;0;L;;;;;N;;;;; -13E6;CHEROKEE LETTER TSO;Lo;0;L;;;;;N;;;;; -13E7;CHEROKEE LETTER TSU;Lo;0;L;;;;;N;;;;; -13E8;CHEROKEE LETTER TSV;Lo;0;L;;;;;N;;;;; -13E9;CHEROKEE LETTER WA;Lo;0;L;;;;;N;;;;; -13EA;CHEROKEE LETTER WE;Lo;0;L;;;;;N;;;;; -13EB;CHEROKEE LETTER WI;Lo;0;L;;;;;N;;;;; -13EC;CHEROKEE LETTER WO;Lo;0;L;;;;;N;;;;; -13ED;CHEROKEE LETTER WU;Lo;0;L;;;;;N;;;;; -13EE;CHEROKEE LETTER WV;Lo;0;L;;;;;N;;;;; -13EF;CHEROKEE LETTER YA;Lo;0;L;;;;;N;;;;; -13F0;CHEROKEE LETTER YE;Lo;0;L;;;;;N;;;;; -13F1;CHEROKEE LETTER YI;Lo;0;L;;;;;N;;;;; -13F2;CHEROKEE LETTER YO;Lo;0;L;;;;;N;;;;; -13F3;CHEROKEE LETTER YU;Lo;0;L;;;;;N;;;;; -13F4;CHEROKEE LETTER YV;Lo;0;L;;;;;N;;;;; -1400;CANADIAN SYLLABICS HYPHEN;Pd;0;ON;;;;;N;;;;; -1401;CANADIAN SYLLABICS E;Lo;0;L;;;;;N;;;;; -1402;CANADIAN SYLLABICS AAI;Lo;0;L;;;;;N;;;;; -1403;CANADIAN SYLLABICS I;Lo;0;L;;;;;N;;;;; -1404;CANADIAN SYLLABICS II;Lo;0;L;;;;;N;;;;; -1405;CANADIAN SYLLABICS O;Lo;0;L;;;;;N;;;;; -1406;CANADIAN SYLLABICS OO;Lo;0;L;;;;;N;;;;; -1407;CANADIAN SYLLABICS Y-CREE OO;Lo;0;L;;;;;N;;;;; -1408;CANADIAN SYLLABICS CARRIER EE;Lo;0;L;;;;;N;;;;; -1409;CANADIAN SYLLABICS CARRIER I;Lo;0;L;;;;;N;;;;; -140A;CANADIAN SYLLABICS A;Lo;0;L;;;;;N;;;;; -140B;CANADIAN SYLLABICS AA;Lo;0;L;;;;;N;;;;; -140C;CANADIAN SYLLABICS WE;Lo;0;L;;;;;N;;;;; -140D;CANADIAN SYLLABICS WEST-CREE WE;Lo;0;L;;;;;N;;;;; -140E;CANADIAN SYLLABICS WI;Lo;0;L;;;;;N;;;;; -140F;CANADIAN SYLLABICS WEST-CREE WI;Lo;0;L;;;;;N;;;;; -1410;CANADIAN SYLLABICS WII;Lo;0;L;;;;;N;;;;; -1411;CANADIAN SYLLABICS WEST-CREE WII;Lo;0;L;;;;;N;;;;; -1412;CANADIAN SYLLABICS WO;Lo;0;L;;;;;N;;;;; -1413;CANADIAN SYLLABICS WEST-CREE WO;Lo;0;L;;;;;N;;;;; -1414;CANADIAN SYLLABICS WOO;Lo;0;L;;;;;N;;;;; -1415;CANADIAN SYLLABICS WEST-CREE WOO;Lo;0;L;;;;;N;;;;; -1416;CANADIAN SYLLABICS NASKAPI WOO;Lo;0;L;;;;;N;;;;; -1417;CANADIAN SYLLABICS WA;Lo;0;L;;;;;N;;;;; -1418;CANADIAN SYLLABICS WEST-CREE WA;Lo;0;L;;;;;N;;;;; -1419;CANADIAN SYLLABICS WAA;Lo;0;L;;;;;N;;;;; -141A;CANADIAN SYLLABICS WEST-CREE WAA;Lo;0;L;;;;;N;;;;; -141B;CANADIAN SYLLABICS NASKAPI WAA;Lo;0;L;;;;;N;;;;; -141C;CANADIAN SYLLABICS AI;Lo;0;L;;;;;N;;;;; -141D;CANADIAN SYLLABICS Y-CREE W;Lo;0;L;;;;;N;;;;; -141E;CANADIAN SYLLABICS GLOTTAL STOP;Lo;0;L;;;;;N;;;;; -141F;CANADIAN SYLLABICS FINAL ACUTE;Lo;0;L;;;;;N;;;;; -1420;CANADIAN SYLLABICS FINAL GRAVE;Lo;0;L;;;;;N;;;;; -1421;CANADIAN SYLLABICS FINAL BOTTOM HALF RING;Lo;0;L;;;;;N;;;;; -1422;CANADIAN SYLLABICS FINAL TOP HALF RING;Lo;0;L;;;;;N;;;;; -1423;CANADIAN SYLLABICS FINAL RIGHT HALF RING;Lo;0;L;;;;;N;;;;; -1424;CANADIAN SYLLABICS FINAL RING;Lo;0;L;;;;;N;;;;; -1425;CANADIAN SYLLABICS FINAL DOUBLE ACUTE;Lo;0;L;;;;;N;;;;; -1426;CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES;Lo;0;L;;;;;N;;;;; -1427;CANADIAN SYLLABICS FINAL MIDDLE DOT;Lo;0;L;;;;;N;;;;; -1428;CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE;Lo;0;L;;;;;N;;;;; -1429;CANADIAN SYLLABICS FINAL PLUS;Lo;0;L;;;;;N;;;;; -142A;CANADIAN SYLLABICS FINAL DOWN TACK;Lo;0;L;;;;;N;;;;; -142B;CANADIAN SYLLABICS EN;Lo;0;L;;;;;N;;;;; -142C;CANADIAN SYLLABICS IN;Lo;0;L;;;;;N;;;;; -142D;CANADIAN SYLLABICS ON;Lo;0;L;;;;;N;;;;; -142E;CANADIAN SYLLABICS AN;Lo;0;L;;;;;N;;;;; -142F;CANADIAN SYLLABICS PE;Lo;0;L;;;;;N;;;;; -1430;CANADIAN SYLLABICS PAAI;Lo;0;L;;;;;N;;;;; -1431;CANADIAN SYLLABICS PI;Lo;0;L;;;;;N;;;;; -1432;CANADIAN SYLLABICS PII;Lo;0;L;;;;;N;;;;; -1433;CANADIAN SYLLABICS PO;Lo;0;L;;;;;N;;;;; -1434;CANADIAN SYLLABICS POO;Lo;0;L;;;;;N;;;;; -1435;CANADIAN SYLLABICS Y-CREE POO;Lo;0;L;;;;;N;;;;; -1436;CANADIAN SYLLABICS CARRIER HEE;Lo;0;L;;;;;N;;;;; -1437;CANADIAN SYLLABICS CARRIER HI;Lo;0;L;;;;;N;;;;; -1438;CANADIAN SYLLABICS PA;Lo;0;L;;;;;N;;;;; -1439;CANADIAN SYLLABICS PAA;Lo;0;L;;;;;N;;;;; -143A;CANADIAN SYLLABICS PWE;Lo;0;L;;;;;N;;;;; -143B;CANADIAN SYLLABICS WEST-CREE PWE;Lo;0;L;;;;;N;;;;; -143C;CANADIAN SYLLABICS PWI;Lo;0;L;;;;;N;;;;; -143D;CANADIAN SYLLABICS WEST-CREE PWI;Lo;0;L;;;;;N;;;;; -143E;CANADIAN SYLLABICS PWII;Lo;0;L;;;;;N;;;;; -143F;CANADIAN SYLLABICS WEST-CREE PWII;Lo;0;L;;;;;N;;;;; -1440;CANADIAN SYLLABICS PWO;Lo;0;L;;;;;N;;;;; -1441;CANADIAN SYLLABICS WEST-CREE PWO;Lo;0;L;;;;;N;;;;; -1442;CANADIAN SYLLABICS PWOO;Lo;0;L;;;;;N;;;;; -1443;CANADIAN SYLLABICS WEST-CREE PWOO;Lo;0;L;;;;;N;;;;; -1444;CANADIAN SYLLABICS PWA;Lo;0;L;;;;;N;;;;; -1445;CANADIAN SYLLABICS WEST-CREE PWA;Lo;0;L;;;;;N;;;;; -1446;CANADIAN SYLLABICS PWAA;Lo;0;L;;;;;N;;;;; -1447;CANADIAN SYLLABICS WEST-CREE PWAA;Lo;0;L;;;;;N;;;;; -1448;CANADIAN SYLLABICS Y-CREE PWAA;Lo;0;L;;;;;N;;;;; -1449;CANADIAN SYLLABICS P;Lo;0;L;;;;;N;;;;; -144A;CANADIAN SYLLABICS WEST-CREE P;Lo;0;L;;;;;N;;;;; -144B;CANADIAN SYLLABICS CARRIER H;Lo;0;L;;;;;N;;;;; -144C;CANADIAN SYLLABICS TE;Lo;0;L;;;;;N;;;;; -144D;CANADIAN SYLLABICS TAAI;Lo;0;L;;;;;N;;;;; -144E;CANADIAN SYLLABICS TI;Lo;0;L;;;;;N;;;;; -144F;CANADIAN SYLLABICS TII;Lo;0;L;;;;;N;;;;; -1450;CANADIAN SYLLABICS TO;Lo;0;L;;;;;N;;;;; -1451;CANADIAN SYLLABICS TOO;Lo;0;L;;;;;N;;;;; -1452;CANADIAN SYLLABICS Y-CREE TOO;Lo;0;L;;;;;N;;;;; -1453;CANADIAN SYLLABICS CARRIER DEE;Lo;0;L;;;;;N;;;;; -1454;CANADIAN SYLLABICS CARRIER DI;Lo;0;L;;;;;N;;;;; -1455;CANADIAN SYLLABICS TA;Lo;0;L;;;;;N;;;;; -1456;CANADIAN SYLLABICS TAA;Lo;0;L;;;;;N;;;;; -1457;CANADIAN SYLLABICS TWE;Lo;0;L;;;;;N;;;;; -1458;CANADIAN SYLLABICS WEST-CREE TWE;Lo;0;L;;;;;N;;;;; -1459;CANADIAN SYLLABICS TWI;Lo;0;L;;;;;N;;;;; -145A;CANADIAN SYLLABICS WEST-CREE TWI;Lo;0;L;;;;;N;;;;; -145B;CANADIAN SYLLABICS TWII;Lo;0;L;;;;;N;;;;; -145C;CANADIAN SYLLABICS WEST-CREE TWII;Lo;0;L;;;;;N;;;;; -145D;CANADIAN SYLLABICS TWO;Lo;0;L;;;;;N;;;;; -145E;CANADIAN SYLLABICS WEST-CREE TWO;Lo;0;L;;;;;N;;;;; -145F;CANADIAN SYLLABICS TWOO;Lo;0;L;;;;;N;;;;; -1460;CANADIAN SYLLABICS WEST-CREE TWOO;Lo;0;L;;;;;N;;;;; -1461;CANADIAN SYLLABICS TWA;Lo;0;L;;;;;N;;;;; -1462;CANADIAN SYLLABICS WEST-CREE TWA;Lo;0;L;;;;;N;;;;; -1463;CANADIAN SYLLABICS TWAA;Lo;0;L;;;;;N;;;;; -1464;CANADIAN SYLLABICS WEST-CREE TWAA;Lo;0;L;;;;;N;;;;; -1465;CANADIAN SYLLABICS NASKAPI TWAA;Lo;0;L;;;;;N;;;;; -1466;CANADIAN SYLLABICS T;Lo;0;L;;;;;N;;;;; -1467;CANADIAN SYLLABICS TTE;Lo;0;L;;;;;N;;;;; -1468;CANADIAN SYLLABICS TTI;Lo;0;L;;;;;N;;;;; -1469;CANADIAN SYLLABICS TTO;Lo;0;L;;;;;N;;;;; -146A;CANADIAN SYLLABICS TTA;Lo;0;L;;;;;N;;;;; -146B;CANADIAN SYLLABICS KE;Lo;0;L;;;;;N;;;;; -146C;CANADIAN SYLLABICS KAAI;Lo;0;L;;;;;N;;;;; -146D;CANADIAN SYLLABICS KI;Lo;0;L;;;;;N;;;;; -146E;CANADIAN SYLLABICS KII;Lo;0;L;;;;;N;;;;; -146F;CANADIAN SYLLABICS KO;Lo;0;L;;;;;N;;;;; -1470;CANADIAN SYLLABICS KOO;Lo;0;L;;;;;N;;;;; -1471;CANADIAN SYLLABICS Y-CREE KOO;Lo;0;L;;;;;N;;;;; -1472;CANADIAN SYLLABICS KA;Lo;0;L;;;;;N;;;;; -1473;CANADIAN SYLLABICS KAA;Lo;0;L;;;;;N;;;;; -1474;CANADIAN SYLLABICS KWE;Lo;0;L;;;;;N;;;;; -1475;CANADIAN SYLLABICS WEST-CREE KWE;Lo;0;L;;;;;N;;;;; -1476;CANADIAN SYLLABICS KWI;Lo;0;L;;;;;N;;;;; -1477;CANADIAN SYLLABICS WEST-CREE KWI;Lo;0;L;;;;;N;;;;; -1478;CANADIAN SYLLABICS KWII;Lo;0;L;;;;;N;;;;; -1479;CANADIAN SYLLABICS WEST-CREE KWII;Lo;0;L;;;;;N;;;;; -147A;CANADIAN SYLLABICS KWO;Lo;0;L;;;;;N;;;;; -147B;CANADIAN SYLLABICS WEST-CREE KWO;Lo;0;L;;;;;N;;;;; -147C;CANADIAN SYLLABICS KWOO;Lo;0;L;;;;;N;;;;; -147D;CANADIAN SYLLABICS WEST-CREE KWOO;Lo;0;L;;;;;N;;;;; -147E;CANADIAN SYLLABICS KWA;Lo;0;L;;;;;N;;;;; -147F;CANADIAN SYLLABICS WEST-CREE KWA;Lo;0;L;;;;;N;;;;; -1480;CANADIAN SYLLABICS KWAA;Lo;0;L;;;;;N;;;;; -1481;CANADIAN SYLLABICS WEST-CREE KWAA;Lo;0;L;;;;;N;;;;; -1482;CANADIAN SYLLABICS NASKAPI KWAA;Lo;0;L;;;;;N;;;;; -1483;CANADIAN SYLLABICS K;Lo;0;L;;;;;N;;;;; -1484;CANADIAN SYLLABICS KW;Lo;0;L;;;;;N;;;;; -1485;CANADIAN SYLLABICS SOUTH-SLAVEY KEH;Lo;0;L;;;;;N;;;;; -1486;CANADIAN SYLLABICS SOUTH-SLAVEY KIH;Lo;0;L;;;;;N;;;;; -1487;CANADIAN SYLLABICS SOUTH-SLAVEY KOH;Lo;0;L;;;;;N;;;;; -1488;CANADIAN SYLLABICS SOUTH-SLAVEY KAH;Lo;0;L;;;;;N;;;;; -1489;CANADIAN SYLLABICS CE;Lo;0;L;;;;;N;;;;; -148A;CANADIAN SYLLABICS CAAI;Lo;0;L;;;;;N;;;;; -148B;CANADIAN SYLLABICS CI;Lo;0;L;;;;;N;;;;; -148C;CANADIAN SYLLABICS CII;Lo;0;L;;;;;N;;;;; -148D;CANADIAN SYLLABICS CO;Lo;0;L;;;;;N;;;;; -148E;CANADIAN SYLLABICS COO;Lo;0;L;;;;;N;;;;; -148F;CANADIAN SYLLABICS Y-CREE COO;Lo;0;L;;;;;N;;;;; -1490;CANADIAN SYLLABICS CA;Lo;0;L;;;;;N;;;;; -1491;CANADIAN SYLLABICS CAA;Lo;0;L;;;;;N;;;;; -1492;CANADIAN SYLLABICS CWE;Lo;0;L;;;;;N;;;;; -1493;CANADIAN SYLLABICS WEST-CREE CWE;Lo;0;L;;;;;N;;;;; -1494;CANADIAN SYLLABICS CWI;Lo;0;L;;;;;N;;;;; -1495;CANADIAN SYLLABICS WEST-CREE CWI;Lo;0;L;;;;;N;;;;; -1496;CANADIAN SYLLABICS CWII;Lo;0;L;;;;;N;;;;; -1497;CANADIAN SYLLABICS WEST-CREE CWII;Lo;0;L;;;;;N;;;;; -1498;CANADIAN SYLLABICS CWO;Lo;0;L;;;;;N;;;;; -1499;CANADIAN SYLLABICS WEST-CREE CWO;Lo;0;L;;;;;N;;;;; -149A;CANADIAN SYLLABICS CWOO;Lo;0;L;;;;;N;;;;; -149B;CANADIAN SYLLABICS WEST-CREE CWOO;Lo;0;L;;;;;N;;;;; -149C;CANADIAN SYLLABICS CWA;Lo;0;L;;;;;N;;;;; -149D;CANADIAN SYLLABICS WEST-CREE CWA;Lo;0;L;;;;;N;;;;; -149E;CANADIAN SYLLABICS CWAA;Lo;0;L;;;;;N;;;;; -149F;CANADIAN SYLLABICS WEST-CREE CWAA;Lo;0;L;;;;;N;;;;; -14A0;CANADIAN SYLLABICS NASKAPI CWAA;Lo;0;L;;;;;N;;;;; -14A1;CANADIAN SYLLABICS C;Lo;0;L;;;;;N;;;;; -14A2;CANADIAN SYLLABICS SAYISI TH;Lo;0;L;;;;;N;;;;; -14A3;CANADIAN SYLLABICS ME;Lo;0;L;;;;;N;;;;; -14A4;CANADIAN SYLLABICS MAAI;Lo;0;L;;;;;N;;;;; -14A5;CANADIAN SYLLABICS MI;Lo;0;L;;;;;N;;;;; -14A6;CANADIAN SYLLABICS MII;Lo;0;L;;;;;N;;;;; -14A7;CANADIAN SYLLABICS MO;Lo;0;L;;;;;N;;;;; -14A8;CANADIAN SYLLABICS MOO;Lo;0;L;;;;;N;;;;; -14A9;CANADIAN SYLLABICS Y-CREE MOO;Lo;0;L;;;;;N;;;;; -14AA;CANADIAN SYLLABICS MA;Lo;0;L;;;;;N;;;;; -14AB;CANADIAN SYLLABICS MAA;Lo;0;L;;;;;N;;;;; -14AC;CANADIAN SYLLABICS MWE;Lo;0;L;;;;;N;;;;; -14AD;CANADIAN SYLLABICS WEST-CREE MWE;Lo;0;L;;;;;N;;;;; -14AE;CANADIAN SYLLABICS MWI;Lo;0;L;;;;;N;;;;; -14AF;CANADIAN SYLLABICS WEST-CREE MWI;Lo;0;L;;;;;N;;;;; -14B0;CANADIAN SYLLABICS MWII;Lo;0;L;;;;;N;;;;; -14B1;CANADIAN SYLLABICS WEST-CREE MWII;Lo;0;L;;;;;N;;;;; -14B2;CANADIAN SYLLABICS MWO;Lo;0;L;;;;;N;;;;; -14B3;CANADIAN SYLLABICS WEST-CREE MWO;Lo;0;L;;;;;N;;;;; -14B4;CANADIAN SYLLABICS MWOO;Lo;0;L;;;;;N;;;;; -14B5;CANADIAN SYLLABICS WEST-CREE MWOO;Lo;0;L;;;;;N;;;;; -14B6;CANADIAN SYLLABICS MWA;Lo;0;L;;;;;N;;;;; -14B7;CANADIAN SYLLABICS WEST-CREE MWA;Lo;0;L;;;;;N;;;;; -14B8;CANADIAN SYLLABICS MWAA;Lo;0;L;;;;;N;;;;; -14B9;CANADIAN SYLLABICS WEST-CREE MWAA;Lo;0;L;;;;;N;;;;; -14BA;CANADIAN SYLLABICS NASKAPI MWAA;Lo;0;L;;;;;N;;;;; -14BB;CANADIAN SYLLABICS M;Lo;0;L;;;;;N;;;;; -14BC;CANADIAN SYLLABICS WEST-CREE M;Lo;0;L;;;;;N;;;;; -14BD;CANADIAN SYLLABICS MH;Lo;0;L;;;;;N;;;;; -14BE;CANADIAN SYLLABICS ATHAPASCAN M;Lo;0;L;;;;;N;;;;; -14BF;CANADIAN SYLLABICS SAYISI M;Lo;0;L;;;;;N;;;;; -14C0;CANADIAN SYLLABICS NE;Lo;0;L;;;;;N;;;;; -14C1;CANADIAN SYLLABICS NAAI;Lo;0;L;;;;;N;;;;; -14C2;CANADIAN SYLLABICS NI;Lo;0;L;;;;;N;;;;; -14C3;CANADIAN SYLLABICS NII;Lo;0;L;;;;;N;;;;; -14C4;CANADIAN SYLLABICS NO;Lo;0;L;;;;;N;;;;; -14C5;CANADIAN SYLLABICS NOO;Lo;0;L;;;;;N;;;;; -14C6;CANADIAN SYLLABICS Y-CREE NOO;Lo;0;L;;;;;N;;;;; -14C7;CANADIAN SYLLABICS NA;Lo;0;L;;;;;N;;;;; -14C8;CANADIAN SYLLABICS NAA;Lo;0;L;;;;;N;;;;; -14C9;CANADIAN SYLLABICS NWE;Lo;0;L;;;;;N;;;;; -14CA;CANADIAN SYLLABICS WEST-CREE NWE;Lo;0;L;;;;;N;;;;; -14CB;CANADIAN SYLLABICS NWA;Lo;0;L;;;;;N;;;;; -14CC;CANADIAN SYLLABICS WEST-CREE NWA;Lo;0;L;;;;;N;;;;; -14CD;CANADIAN SYLLABICS NWAA;Lo;0;L;;;;;N;;;;; -14CE;CANADIAN SYLLABICS WEST-CREE NWAA;Lo;0;L;;;;;N;;;;; -14CF;CANADIAN SYLLABICS NASKAPI NWAA;Lo;0;L;;;;;N;;;;; -14D0;CANADIAN SYLLABICS N;Lo;0;L;;;;;N;;;;; -14D1;CANADIAN SYLLABICS CARRIER NG;Lo;0;L;;;;;N;;;;; -14D2;CANADIAN SYLLABICS NH;Lo;0;L;;;;;N;;;;; -14D3;CANADIAN SYLLABICS LE;Lo;0;L;;;;;N;;;;; -14D4;CANADIAN SYLLABICS LAAI;Lo;0;L;;;;;N;;;;; -14D5;CANADIAN SYLLABICS LI;Lo;0;L;;;;;N;;;;; -14D6;CANADIAN SYLLABICS LII;Lo;0;L;;;;;N;;;;; -14D7;CANADIAN SYLLABICS LO;Lo;0;L;;;;;N;;;;; -14D8;CANADIAN SYLLABICS LOO;Lo;0;L;;;;;N;;;;; -14D9;CANADIAN SYLLABICS Y-CREE LOO;Lo;0;L;;;;;N;;;;; -14DA;CANADIAN SYLLABICS LA;Lo;0;L;;;;;N;;;;; -14DB;CANADIAN SYLLABICS LAA;Lo;0;L;;;;;N;;;;; -14DC;CANADIAN SYLLABICS LWE;Lo;0;L;;;;;N;;;;; -14DD;CANADIAN SYLLABICS WEST-CREE LWE;Lo;0;L;;;;;N;;;;; -14DE;CANADIAN SYLLABICS LWI;Lo;0;L;;;;;N;;;;; -14DF;CANADIAN SYLLABICS WEST-CREE LWI;Lo;0;L;;;;;N;;;;; -14E0;CANADIAN SYLLABICS LWII;Lo;0;L;;;;;N;;;;; -14E1;CANADIAN SYLLABICS WEST-CREE LWII;Lo;0;L;;;;;N;;;;; -14E2;CANADIAN SYLLABICS LWO;Lo;0;L;;;;;N;;;;; -14E3;CANADIAN SYLLABICS WEST-CREE LWO;Lo;0;L;;;;;N;;;;; -14E4;CANADIAN SYLLABICS LWOO;Lo;0;L;;;;;N;;;;; -14E5;CANADIAN SYLLABICS WEST-CREE LWOO;Lo;0;L;;;;;N;;;;; -14E6;CANADIAN SYLLABICS LWA;Lo;0;L;;;;;N;;;;; -14E7;CANADIAN SYLLABICS WEST-CREE LWA;Lo;0;L;;;;;N;;;;; -14E8;CANADIAN SYLLABICS LWAA;Lo;0;L;;;;;N;;;;; -14E9;CANADIAN SYLLABICS WEST-CREE LWAA;Lo;0;L;;;;;N;;;;; -14EA;CANADIAN SYLLABICS L;Lo;0;L;;;;;N;;;;; -14EB;CANADIAN SYLLABICS WEST-CREE L;Lo;0;L;;;;;N;;;;; -14EC;CANADIAN SYLLABICS MEDIAL L;Lo;0;L;;;;;N;;;;; -14ED;CANADIAN SYLLABICS SE;Lo;0;L;;;;;N;;;;; -14EE;CANADIAN SYLLABICS SAAI;Lo;0;L;;;;;N;;;;; -14EF;CANADIAN SYLLABICS SI;Lo;0;L;;;;;N;;;;; -14F0;CANADIAN SYLLABICS SII;Lo;0;L;;;;;N;;;;; -14F1;CANADIAN SYLLABICS SO;Lo;0;L;;;;;N;;;;; -14F2;CANADIAN SYLLABICS SOO;Lo;0;L;;;;;N;;;;; -14F3;CANADIAN SYLLABICS Y-CREE SOO;Lo;0;L;;;;;N;;;;; -14F4;CANADIAN SYLLABICS SA;Lo;0;L;;;;;N;;;;; -14F5;CANADIAN SYLLABICS SAA;Lo;0;L;;;;;N;;;;; -14F6;CANADIAN SYLLABICS SWE;Lo;0;L;;;;;N;;;;; -14F7;CANADIAN SYLLABICS WEST-CREE SWE;Lo;0;L;;;;;N;;;;; -14F8;CANADIAN SYLLABICS SWI;Lo;0;L;;;;;N;;;;; -14F9;CANADIAN SYLLABICS WEST-CREE SWI;Lo;0;L;;;;;N;;;;; -14FA;CANADIAN SYLLABICS SWII;Lo;0;L;;;;;N;;;;; -14FB;CANADIAN SYLLABICS WEST-CREE SWII;Lo;0;L;;;;;N;;;;; -14FC;CANADIAN SYLLABICS SWO;Lo;0;L;;;;;N;;;;; -14FD;CANADIAN SYLLABICS WEST-CREE SWO;Lo;0;L;;;;;N;;;;; -14FE;CANADIAN SYLLABICS SWOO;Lo;0;L;;;;;N;;;;; -14FF;CANADIAN SYLLABICS WEST-CREE SWOO;Lo;0;L;;;;;N;;;;; -1500;CANADIAN SYLLABICS SWA;Lo;0;L;;;;;N;;;;; -1501;CANADIAN SYLLABICS WEST-CREE SWA;Lo;0;L;;;;;N;;;;; -1502;CANADIAN SYLLABICS SWAA;Lo;0;L;;;;;N;;;;; -1503;CANADIAN SYLLABICS WEST-CREE SWAA;Lo;0;L;;;;;N;;;;; -1504;CANADIAN SYLLABICS NASKAPI SWAA;Lo;0;L;;;;;N;;;;; -1505;CANADIAN SYLLABICS S;Lo;0;L;;;;;N;;;;; -1506;CANADIAN SYLLABICS ATHAPASCAN S;Lo;0;L;;;;;N;;;;; -1507;CANADIAN SYLLABICS SW;Lo;0;L;;;;;N;;;;; -1508;CANADIAN SYLLABICS BLACKFOOT S;Lo;0;L;;;;;N;;;;; -1509;CANADIAN SYLLABICS MOOSE-CREE SK;Lo;0;L;;;;;N;;;;; -150A;CANADIAN SYLLABICS NASKAPI SKW;Lo;0;L;;;;;N;;;;; -150B;CANADIAN SYLLABICS NASKAPI S-W;Lo;0;L;;;;;N;;;;; -150C;CANADIAN SYLLABICS NASKAPI SPWA;Lo;0;L;;;;;N;;;;; -150D;CANADIAN SYLLABICS NASKAPI STWA;Lo;0;L;;;;;N;;;;; -150E;CANADIAN SYLLABICS NASKAPI SKWA;Lo;0;L;;;;;N;;;;; -150F;CANADIAN SYLLABICS NASKAPI SCWA;Lo;0;L;;;;;N;;;;; -1510;CANADIAN SYLLABICS SHE;Lo;0;L;;;;;N;;;;; -1511;CANADIAN SYLLABICS SHI;Lo;0;L;;;;;N;;;;; -1512;CANADIAN SYLLABICS SHII;Lo;0;L;;;;;N;;;;; -1513;CANADIAN SYLLABICS SHO;Lo;0;L;;;;;N;;;;; -1514;CANADIAN SYLLABICS SHOO;Lo;0;L;;;;;N;;;;; -1515;CANADIAN SYLLABICS SHA;Lo;0;L;;;;;N;;;;; -1516;CANADIAN SYLLABICS SHAA;Lo;0;L;;;;;N;;;;; -1517;CANADIAN SYLLABICS SHWE;Lo;0;L;;;;;N;;;;; -1518;CANADIAN SYLLABICS WEST-CREE SHWE;Lo;0;L;;;;;N;;;;; -1519;CANADIAN SYLLABICS SHWI;Lo;0;L;;;;;N;;;;; -151A;CANADIAN SYLLABICS WEST-CREE SHWI;Lo;0;L;;;;;N;;;;; -151B;CANADIAN SYLLABICS SHWII;Lo;0;L;;;;;N;;;;; -151C;CANADIAN SYLLABICS WEST-CREE SHWII;Lo;0;L;;;;;N;;;;; -151D;CANADIAN SYLLABICS SHWO;Lo;0;L;;;;;N;;;;; -151E;CANADIAN SYLLABICS WEST-CREE SHWO;Lo;0;L;;;;;N;;;;; -151F;CANADIAN SYLLABICS SHWOO;Lo;0;L;;;;;N;;;;; -1520;CANADIAN SYLLABICS WEST-CREE SHWOO;Lo;0;L;;;;;N;;;;; -1521;CANADIAN SYLLABICS SHWA;Lo;0;L;;;;;N;;;;; -1522;CANADIAN SYLLABICS WEST-CREE SHWA;Lo;0;L;;;;;N;;;;; -1523;CANADIAN SYLLABICS SHWAA;Lo;0;L;;;;;N;;;;; -1524;CANADIAN SYLLABICS WEST-CREE SHWAA;Lo;0;L;;;;;N;;;;; -1525;CANADIAN SYLLABICS SH;Lo;0;L;;;;;N;;;;; -1526;CANADIAN SYLLABICS YE;Lo;0;L;;;;;N;;;;; -1527;CANADIAN SYLLABICS YAAI;Lo;0;L;;;;;N;;;;; -1528;CANADIAN SYLLABICS YI;Lo;0;L;;;;;N;;;;; -1529;CANADIAN SYLLABICS YII;Lo;0;L;;;;;N;;;;; -152A;CANADIAN SYLLABICS YO;Lo;0;L;;;;;N;;;;; -152B;CANADIAN SYLLABICS YOO;Lo;0;L;;;;;N;;;;; -152C;CANADIAN SYLLABICS Y-CREE YOO;Lo;0;L;;;;;N;;;;; -152D;CANADIAN SYLLABICS YA;Lo;0;L;;;;;N;;;;; -152E;CANADIAN SYLLABICS YAA;Lo;0;L;;;;;N;;;;; -152F;CANADIAN SYLLABICS YWE;Lo;0;L;;;;;N;;;;; -1530;CANADIAN SYLLABICS WEST-CREE YWE;Lo;0;L;;;;;N;;;;; -1531;CANADIAN SYLLABICS YWI;Lo;0;L;;;;;N;;;;; -1532;CANADIAN SYLLABICS WEST-CREE YWI;Lo;0;L;;;;;N;;;;; -1533;CANADIAN SYLLABICS YWII;Lo;0;L;;;;;N;;;;; -1534;CANADIAN SYLLABICS WEST-CREE YWII;Lo;0;L;;;;;N;;;;; -1535;CANADIAN SYLLABICS YWO;Lo;0;L;;;;;N;;;;; -1536;CANADIAN SYLLABICS WEST-CREE YWO;Lo;0;L;;;;;N;;;;; -1537;CANADIAN SYLLABICS YWOO;Lo;0;L;;;;;N;;;;; -1538;CANADIAN SYLLABICS WEST-CREE YWOO;Lo;0;L;;;;;N;;;;; -1539;CANADIAN SYLLABICS YWA;Lo;0;L;;;;;N;;;;; -153A;CANADIAN SYLLABICS WEST-CREE YWA;Lo;0;L;;;;;N;;;;; -153B;CANADIAN SYLLABICS YWAA;Lo;0;L;;;;;N;;;;; -153C;CANADIAN SYLLABICS WEST-CREE YWAA;Lo;0;L;;;;;N;;;;; -153D;CANADIAN SYLLABICS NASKAPI YWAA;Lo;0;L;;;;;N;;;;; -153E;CANADIAN SYLLABICS Y;Lo;0;L;;;;;N;;;;; -153F;CANADIAN SYLLABICS BIBLE-CREE Y;Lo;0;L;;;;;N;;;;; -1540;CANADIAN SYLLABICS WEST-CREE Y;Lo;0;L;;;;;N;;;;; -1541;CANADIAN SYLLABICS SAYISI YI;Lo;0;L;;;;;N;;;;; -1542;CANADIAN SYLLABICS RE;Lo;0;L;;;;;N;;;;; -1543;CANADIAN SYLLABICS R-CREE RE;Lo;0;L;;;;;N;;;;; -1544;CANADIAN SYLLABICS WEST-CREE LE;Lo;0;L;;;;;N;;;;; -1545;CANADIAN SYLLABICS RAAI;Lo;0;L;;;;;N;;;;; -1546;CANADIAN SYLLABICS RI;Lo;0;L;;;;;N;;;;; -1547;CANADIAN SYLLABICS RII;Lo;0;L;;;;;N;;;;; -1548;CANADIAN SYLLABICS RO;Lo;0;L;;;;;N;;;;; -1549;CANADIAN SYLLABICS ROO;Lo;0;L;;;;;N;;;;; -154A;CANADIAN SYLLABICS WEST-CREE LO;Lo;0;L;;;;;N;;;;; -154B;CANADIAN SYLLABICS RA;Lo;0;L;;;;;N;;;;; -154C;CANADIAN SYLLABICS RAA;Lo;0;L;;;;;N;;;;; -154D;CANADIAN SYLLABICS WEST-CREE LA;Lo;0;L;;;;;N;;;;; -154E;CANADIAN SYLLABICS RWAA;Lo;0;L;;;;;N;;;;; -154F;CANADIAN SYLLABICS WEST-CREE RWAA;Lo;0;L;;;;;N;;;;; -1550;CANADIAN SYLLABICS R;Lo;0;L;;;;;N;;;;; -1551;CANADIAN SYLLABICS WEST-CREE R;Lo;0;L;;;;;N;;;;; -1552;CANADIAN SYLLABICS MEDIAL R;Lo;0;L;;;;;N;;;;; -1553;CANADIAN SYLLABICS FE;Lo;0;L;;;;;N;;;;; -1554;CANADIAN SYLLABICS FAAI;Lo;0;L;;;;;N;;;;; -1555;CANADIAN SYLLABICS FI;Lo;0;L;;;;;N;;;;; -1556;CANADIAN SYLLABICS FII;Lo;0;L;;;;;N;;;;; -1557;CANADIAN SYLLABICS FO;Lo;0;L;;;;;N;;;;; -1558;CANADIAN SYLLABICS FOO;Lo;0;L;;;;;N;;;;; -1559;CANADIAN SYLLABICS FA;Lo;0;L;;;;;N;;;;; -155A;CANADIAN SYLLABICS FAA;Lo;0;L;;;;;N;;;;; -155B;CANADIAN SYLLABICS FWAA;Lo;0;L;;;;;N;;;;; -155C;CANADIAN SYLLABICS WEST-CREE FWAA;Lo;0;L;;;;;N;;;;; -155D;CANADIAN SYLLABICS F;Lo;0;L;;;;;N;;;;; -155E;CANADIAN SYLLABICS THE;Lo;0;L;;;;;N;;;;; -155F;CANADIAN SYLLABICS N-CREE THE;Lo;0;L;;;;;N;;;;; -1560;CANADIAN SYLLABICS THI;Lo;0;L;;;;;N;;;;; -1561;CANADIAN SYLLABICS N-CREE THI;Lo;0;L;;;;;N;;;;; -1562;CANADIAN SYLLABICS THII;Lo;0;L;;;;;N;;;;; -1563;CANADIAN SYLLABICS N-CREE THII;Lo;0;L;;;;;N;;;;; -1564;CANADIAN SYLLABICS THO;Lo;0;L;;;;;N;;;;; -1565;CANADIAN SYLLABICS THOO;Lo;0;L;;;;;N;;;;; -1566;CANADIAN SYLLABICS THA;Lo;0;L;;;;;N;;;;; -1567;CANADIAN SYLLABICS THAA;Lo;0;L;;;;;N;;;;; -1568;CANADIAN SYLLABICS THWAA;Lo;0;L;;;;;N;;;;; -1569;CANADIAN SYLLABICS WEST-CREE THWAA;Lo;0;L;;;;;N;;;;; -156A;CANADIAN SYLLABICS TH;Lo;0;L;;;;;N;;;;; -156B;CANADIAN SYLLABICS TTHE;Lo;0;L;;;;;N;;;;; -156C;CANADIAN SYLLABICS TTHI;Lo;0;L;;;;;N;;;;; -156D;CANADIAN SYLLABICS TTHO;Lo;0;L;;;;;N;;;;; -156E;CANADIAN SYLLABICS TTHA;Lo;0;L;;;;;N;;;;; -156F;CANADIAN SYLLABICS TTH;Lo;0;L;;;;;N;;;;; -1570;CANADIAN SYLLABICS TYE;Lo;0;L;;;;;N;;;;; -1571;CANADIAN SYLLABICS TYI;Lo;0;L;;;;;N;;;;; -1572;CANADIAN SYLLABICS TYO;Lo;0;L;;;;;N;;;;; -1573;CANADIAN SYLLABICS TYA;Lo;0;L;;;;;N;;;;; -1574;CANADIAN SYLLABICS NUNAVIK HE;Lo;0;L;;;;;N;;;;; -1575;CANADIAN SYLLABICS NUNAVIK HI;Lo;0;L;;;;;N;;;;; -1576;CANADIAN SYLLABICS NUNAVIK HII;Lo;0;L;;;;;N;;;;; -1577;CANADIAN SYLLABICS NUNAVIK HO;Lo;0;L;;;;;N;;;;; -1578;CANADIAN SYLLABICS NUNAVIK HOO;Lo;0;L;;;;;N;;;;; -1579;CANADIAN SYLLABICS NUNAVIK HA;Lo;0;L;;;;;N;;;;; -157A;CANADIAN SYLLABICS NUNAVIK HAA;Lo;0;L;;;;;N;;;;; -157B;CANADIAN SYLLABICS NUNAVIK H;Lo;0;L;;;;;N;;;;; -157C;CANADIAN SYLLABICS NUNAVUT H;Lo;0;L;;;;;N;;;;; -157D;CANADIAN SYLLABICS HK;Lo;0;L;;;;;N;;;;; -157E;CANADIAN SYLLABICS QAAI;Lo;0;L;;;;;N;;;;; -157F;CANADIAN SYLLABICS QI;Lo;0;L;;;;;N;;;;; -1580;CANADIAN SYLLABICS QII;Lo;0;L;;;;;N;;;;; -1581;CANADIAN SYLLABICS QO;Lo;0;L;;;;;N;;;;; -1582;CANADIAN SYLLABICS QOO;Lo;0;L;;;;;N;;;;; -1583;CANADIAN SYLLABICS QA;Lo;0;L;;;;;N;;;;; -1584;CANADIAN SYLLABICS QAA;Lo;0;L;;;;;N;;;;; -1585;CANADIAN SYLLABICS Q;Lo;0;L;;;;;N;;;;; -1586;CANADIAN SYLLABICS TLHE;Lo;0;L;;;;;N;;;;; -1587;CANADIAN SYLLABICS TLHI;Lo;0;L;;;;;N;;;;; -1588;CANADIAN SYLLABICS TLHO;Lo;0;L;;;;;N;;;;; -1589;CANADIAN SYLLABICS TLHA;Lo;0;L;;;;;N;;;;; -158A;CANADIAN SYLLABICS WEST-CREE RE;Lo;0;L;;;;;N;;;;; -158B;CANADIAN SYLLABICS WEST-CREE RI;Lo;0;L;;;;;N;;;;; -158C;CANADIAN SYLLABICS WEST-CREE RO;Lo;0;L;;;;;N;;;;; -158D;CANADIAN SYLLABICS WEST-CREE RA;Lo;0;L;;;;;N;;;;; -158E;CANADIAN SYLLABICS NGAAI;Lo;0;L;;;;;N;;;;; -158F;CANADIAN SYLLABICS NGI;Lo;0;L;;;;;N;;;;; -1590;CANADIAN SYLLABICS NGII;Lo;0;L;;;;;N;;;;; -1591;CANADIAN SYLLABICS NGO;Lo;0;L;;;;;N;;;;; -1592;CANADIAN SYLLABICS NGOO;Lo;0;L;;;;;N;;;;; -1593;CANADIAN SYLLABICS NGA;Lo;0;L;;;;;N;;;;; -1594;CANADIAN SYLLABICS NGAA;Lo;0;L;;;;;N;;;;; -1595;CANADIAN SYLLABICS NG;Lo;0;L;;;;;N;;;;; -1596;CANADIAN SYLLABICS NNG;Lo;0;L;;;;;N;;;;; -1597;CANADIAN SYLLABICS SAYISI SHE;Lo;0;L;;;;;N;;;;; -1598;CANADIAN SYLLABICS SAYISI SHI;Lo;0;L;;;;;N;;;;; -1599;CANADIAN SYLLABICS SAYISI SHO;Lo;0;L;;;;;N;;;;; -159A;CANADIAN SYLLABICS SAYISI SHA;Lo;0;L;;;;;N;;;;; -159B;CANADIAN SYLLABICS WOODS-CREE THE;Lo;0;L;;;;;N;;;;; -159C;CANADIAN SYLLABICS WOODS-CREE THI;Lo;0;L;;;;;N;;;;; -159D;CANADIAN SYLLABICS WOODS-CREE THO;Lo;0;L;;;;;N;;;;; -159E;CANADIAN SYLLABICS WOODS-CREE THA;Lo;0;L;;;;;N;;;;; -159F;CANADIAN SYLLABICS WOODS-CREE TH;Lo;0;L;;;;;N;;;;; -15A0;CANADIAN SYLLABICS LHI;Lo;0;L;;;;;N;;;;; -15A1;CANADIAN SYLLABICS LHII;Lo;0;L;;;;;N;;;;; -15A2;CANADIAN SYLLABICS LHO;Lo;0;L;;;;;N;;;;; -15A3;CANADIAN SYLLABICS LHOO;Lo;0;L;;;;;N;;;;; -15A4;CANADIAN SYLLABICS LHA;Lo;0;L;;;;;N;;;;; -15A5;CANADIAN SYLLABICS LHAA;Lo;0;L;;;;;N;;;;; -15A6;CANADIAN SYLLABICS LH;Lo;0;L;;;;;N;;;;; -15A7;CANADIAN SYLLABICS TH-CREE THE;Lo;0;L;;;;;N;;;;; -15A8;CANADIAN SYLLABICS TH-CREE THI;Lo;0;L;;;;;N;;;;; -15A9;CANADIAN SYLLABICS TH-CREE THII;Lo;0;L;;;;;N;;;;; -15AA;CANADIAN SYLLABICS TH-CREE THO;Lo;0;L;;;;;N;;;;; -15AB;CANADIAN SYLLABICS TH-CREE THOO;Lo;0;L;;;;;N;;;;; -15AC;CANADIAN SYLLABICS TH-CREE THA;Lo;0;L;;;;;N;;;;; -15AD;CANADIAN SYLLABICS TH-CREE THAA;Lo;0;L;;;;;N;;;;; -15AE;CANADIAN SYLLABICS TH-CREE TH;Lo;0;L;;;;;N;;;;; -15AF;CANADIAN SYLLABICS AIVILIK B;Lo;0;L;;;;;N;;;;; -15B0;CANADIAN SYLLABICS BLACKFOOT E;Lo;0;L;;;;;N;;;;; -15B1;CANADIAN SYLLABICS BLACKFOOT I;Lo;0;L;;;;;N;;;;; -15B2;CANADIAN SYLLABICS BLACKFOOT O;Lo;0;L;;;;;N;;;;; -15B3;CANADIAN SYLLABICS BLACKFOOT A;Lo;0;L;;;;;N;;;;; -15B4;CANADIAN SYLLABICS BLACKFOOT WE;Lo;0;L;;;;;N;;;;; -15B5;CANADIAN SYLLABICS BLACKFOOT WI;Lo;0;L;;;;;N;;;;; -15B6;CANADIAN SYLLABICS BLACKFOOT WO;Lo;0;L;;;;;N;;;;; -15B7;CANADIAN SYLLABICS BLACKFOOT WA;Lo;0;L;;;;;N;;;;; -15B8;CANADIAN SYLLABICS BLACKFOOT NE;Lo;0;L;;;;;N;;;;; -15B9;CANADIAN SYLLABICS BLACKFOOT NI;Lo;0;L;;;;;N;;;;; -15BA;CANADIAN SYLLABICS BLACKFOOT NO;Lo;0;L;;;;;N;;;;; -15BB;CANADIAN SYLLABICS BLACKFOOT NA;Lo;0;L;;;;;N;;;;; -15BC;CANADIAN SYLLABICS BLACKFOOT KE;Lo;0;L;;;;;N;;;;; -15BD;CANADIAN SYLLABICS BLACKFOOT KI;Lo;0;L;;;;;N;;;;; -15BE;CANADIAN SYLLABICS BLACKFOOT KO;Lo;0;L;;;;;N;;;;; -15BF;CANADIAN SYLLABICS BLACKFOOT KA;Lo;0;L;;;;;N;;;;; -15C0;CANADIAN SYLLABICS SAYISI HE;Lo;0;L;;;;;N;;;;; -15C1;CANADIAN SYLLABICS SAYISI HI;Lo;0;L;;;;;N;;;;; -15C2;CANADIAN SYLLABICS SAYISI HO;Lo;0;L;;;;;N;;;;; -15C3;CANADIAN SYLLABICS SAYISI HA;Lo;0;L;;;;;N;;;;; -15C4;CANADIAN SYLLABICS CARRIER GHU;Lo;0;L;;;;;N;;;;; -15C5;CANADIAN SYLLABICS CARRIER GHO;Lo;0;L;;;;;N;;;;; -15C6;CANADIAN SYLLABICS CARRIER GHE;Lo;0;L;;;;;N;;;;; -15C7;CANADIAN SYLLABICS CARRIER GHEE;Lo;0;L;;;;;N;;;;; -15C8;CANADIAN SYLLABICS CARRIER GHI;Lo;0;L;;;;;N;;;;; -15C9;CANADIAN SYLLABICS CARRIER GHA;Lo;0;L;;;;;N;;;;; -15CA;CANADIAN SYLLABICS CARRIER RU;Lo;0;L;;;;;N;;;;; -15CB;CANADIAN SYLLABICS CARRIER RO;Lo;0;L;;;;;N;;;;; -15CC;CANADIAN SYLLABICS CARRIER RE;Lo;0;L;;;;;N;;;;; -15CD;CANADIAN SYLLABICS CARRIER REE;Lo;0;L;;;;;N;;;;; -15CE;CANADIAN SYLLABICS CARRIER RI;Lo;0;L;;;;;N;;;;; -15CF;CANADIAN SYLLABICS CARRIER RA;Lo;0;L;;;;;N;;;;; -15D0;CANADIAN SYLLABICS CARRIER WU;Lo;0;L;;;;;N;;;;; -15D1;CANADIAN SYLLABICS CARRIER WO;Lo;0;L;;;;;N;;;;; -15D2;CANADIAN SYLLABICS CARRIER WE;Lo;0;L;;;;;N;;;;; -15D3;CANADIAN SYLLABICS CARRIER WEE;Lo;0;L;;;;;N;;;;; -15D4;CANADIAN SYLLABICS CARRIER WI;Lo;0;L;;;;;N;;;;; -15D5;CANADIAN SYLLABICS CARRIER WA;Lo;0;L;;;;;N;;;;; -15D6;CANADIAN SYLLABICS CARRIER HWU;Lo;0;L;;;;;N;;;;; -15D7;CANADIAN SYLLABICS CARRIER HWO;Lo;0;L;;;;;N;;;;; -15D8;CANADIAN SYLLABICS CARRIER HWE;Lo;0;L;;;;;N;;;;; -15D9;CANADIAN SYLLABICS CARRIER HWEE;Lo;0;L;;;;;N;;;;; -15DA;CANADIAN SYLLABICS CARRIER HWI;Lo;0;L;;;;;N;;;;; -15DB;CANADIAN SYLLABICS CARRIER HWA;Lo;0;L;;;;;N;;;;; -15DC;CANADIAN SYLLABICS CARRIER THU;Lo;0;L;;;;;N;;;;; -15DD;CANADIAN SYLLABICS CARRIER THO;Lo;0;L;;;;;N;;;;; -15DE;CANADIAN SYLLABICS CARRIER THE;Lo;0;L;;;;;N;;;;; -15DF;CANADIAN SYLLABICS CARRIER THEE;Lo;0;L;;;;;N;;;;; -15E0;CANADIAN SYLLABICS CARRIER THI;Lo;0;L;;;;;N;;;;; -15E1;CANADIAN SYLLABICS CARRIER THA;Lo;0;L;;;;;N;;;;; -15E2;CANADIAN SYLLABICS CARRIER TTU;Lo;0;L;;;;;N;;;;; -15E3;CANADIAN SYLLABICS CARRIER TTO;Lo;0;L;;;;;N;;;;; -15E4;CANADIAN SYLLABICS CARRIER TTE;Lo;0;L;;;;;N;;;;; -15E5;CANADIAN SYLLABICS CARRIER TTEE;Lo;0;L;;;;;N;;;;; -15E6;CANADIAN SYLLABICS CARRIER TTI;Lo;0;L;;;;;N;;;;; -15E7;CANADIAN SYLLABICS CARRIER TTA;Lo;0;L;;;;;N;;;;; -15E8;CANADIAN SYLLABICS CARRIER PU;Lo;0;L;;;;;N;;;;; -15E9;CANADIAN SYLLABICS CARRIER PO;Lo;0;L;;;;;N;;;;; -15EA;CANADIAN SYLLABICS CARRIER PE;Lo;0;L;;;;;N;;;;; -15EB;CANADIAN SYLLABICS CARRIER PEE;Lo;0;L;;;;;N;;;;; -15EC;CANADIAN SYLLABICS CARRIER PI;Lo;0;L;;;;;N;;;;; -15ED;CANADIAN SYLLABICS CARRIER PA;Lo;0;L;;;;;N;;;;; -15EE;CANADIAN SYLLABICS CARRIER P;Lo;0;L;;;;;N;;;;; -15EF;CANADIAN SYLLABICS CARRIER GU;Lo;0;L;;;;;N;;;;; -15F0;CANADIAN SYLLABICS CARRIER GO;Lo;0;L;;;;;N;;;;; -15F1;CANADIAN SYLLABICS CARRIER GE;Lo;0;L;;;;;N;;;;; -15F2;CANADIAN SYLLABICS CARRIER GEE;Lo;0;L;;;;;N;;;;; -15F3;CANADIAN SYLLABICS CARRIER GI;Lo;0;L;;;;;N;;;;; -15F4;CANADIAN SYLLABICS CARRIER GA;Lo;0;L;;;;;N;;;;; -15F5;CANADIAN SYLLABICS CARRIER KHU;Lo;0;L;;;;;N;;;;; -15F6;CANADIAN SYLLABICS CARRIER KHO;Lo;0;L;;;;;N;;;;; -15F7;CANADIAN SYLLABICS CARRIER KHE;Lo;0;L;;;;;N;;;;; -15F8;CANADIAN SYLLABICS CARRIER KHEE;Lo;0;L;;;;;N;;;;; -15F9;CANADIAN SYLLABICS CARRIER KHI;Lo;0;L;;;;;N;;;;; -15FA;CANADIAN SYLLABICS CARRIER KHA;Lo;0;L;;;;;N;;;;; -15FB;CANADIAN SYLLABICS CARRIER KKU;Lo;0;L;;;;;N;;;;; -15FC;CANADIAN SYLLABICS CARRIER KKO;Lo;0;L;;;;;N;;;;; -15FD;CANADIAN SYLLABICS CARRIER KKE;Lo;0;L;;;;;N;;;;; -15FE;CANADIAN SYLLABICS CARRIER KKEE;Lo;0;L;;;;;N;;;;; -15FF;CANADIAN SYLLABICS CARRIER KKI;Lo;0;L;;;;;N;;;;; -1600;CANADIAN SYLLABICS CARRIER KKA;Lo;0;L;;;;;N;;;;; -1601;CANADIAN SYLLABICS CARRIER KK;Lo;0;L;;;;;N;;;;; -1602;CANADIAN SYLLABICS CARRIER NU;Lo;0;L;;;;;N;;;;; -1603;CANADIAN SYLLABICS CARRIER NO;Lo;0;L;;;;;N;;;;; -1604;CANADIAN SYLLABICS CARRIER NE;Lo;0;L;;;;;N;;;;; -1605;CANADIAN SYLLABICS CARRIER NEE;Lo;0;L;;;;;N;;;;; -1606;CANADIAN SYLLABICS CARRIER NI;Lo;0;L;;;;;N;;;;; -1607;CANADIAN SYLLABICS CARRIER NA;Lo;0;L;;;;;N;;;;; -1608;CANADIAN SYLLABICS CARRIER MU;Lo;0;L;;;;;N;;;;; -1609;CANADIAN SYLLABICS CARRIER MO;Lo;0;L;;;;;N;;;;; -160A;CANADIAN SYLLABICS CARRIER ME;Lo;0;L;;;;;N;;;;; -160B;CANADIAN SYLLABICS CARRIER MEE;Lo;0;L;;;;;N;;;;; -160C;CANADIAN SYLLABICS CARRIER MI;Lo;0;L;;;;;N;;;;; -160D;CANADIAN SYLLABICS CARRIER MA;Lo;0;L;;;;;N;;;;; -160E;CANADIAN SYLLABICS CARRIER YU;Lo;0;L;;;;;N;;;;; -160F;CANADIAN SYLLABICS CARRIER YO;Lo;0;L;;;;;N;;;;; -1610;CANADIAN SYLLABICS CARRIER YE;Lo;0;L;;;;;N;;;;; -1611;CANADIAN SYLLABICS CARRIER YEE;Lo;0;L;;;;;N;;;;; -1612;CANADIAN SYLLABICS CARRIER YI;Lo;0;L;;;;;N;;;;; -1613;CANADIAN SYLLABICS CARRIER YA;Lo;0;L;;;;;N;;;;; -1614;CANADIAN SYLLABICS CARRIER JU;Lo;0;L;;;;;N;;;;; -1615;CANADIAN SYLLABICS SAYISI JU;Lo;0;L;;;;;N;;;;; -1616;CANADIAN SYLLABICS CARRIER JO;Lo;0;L;;;;;N;;;;; -1617;CANADIAN SYLLABICS CARRIER JE;Lo;0;L;;;;;N;;;;; -1618;CANADIAN SYLLABICS CARRIER JEE;Lo;0;L;;;;;N;;;;; -1619;CANADIAN SYLLABICS CARRIER JI;Lo;0;L;;;;;N;;;;; -161A;CANADIAN SYLLABICS SAYISI JI;Lo;0;L;;;;;N;;;;; -161B;CANADIAN SYLLABICS CARRIER JA;Lo;0;L;;;;;N;;;;; -161C;CANADIAN SYLLABICS CARRIER JJU;Lo;0;L;;;;;N;;;;; -161D;CANADIAN SYLLABICS CARRIER JJO;Lo;0;L;;;;;N;;;;; -161E;CANADIAN SYLLABICS CARRIER JJE;Lo;0;L;;;;;N;;;;; -161F;CANADIAN SYLLABICS CARRIER JJEE;Lo;0;L;;;;;N;;;;; -1620;CANADIAN SYLLABICS CARRIER JJI;Lo;0;L;;;;;N;;;;; -1621;CANADIAN SYLLABICS CARRIER JJA;Lo;0;L;;;;;N;;;;; -1622;CANADIAN SYLLABICS CARRIER LU;Lo;0;L;;;;;N;;;;; -1623;CANADIAN SYLLABICS CARRIER LO;Lo;0;L;;;;;N;;;;; -1624;CANADIAN SYLLABICS CARRIER LE;Lo;0;L;;;;;N;;;;; -1625;CANADIAN SYLLABICS CARRIER LEE;Lo;0;L;;;;;N;;;;; -1626;CANADIAN SYLLABICS CARRIER LI;Lo;0;L;;;;;N;;;;; -1627;CANADIAN SYLLABICS CARRIER LA;Lo;0;L;;;;;N;;;;; -1628;CANADIAN SYLLABICS CARRIER DLU;Lo;0;L;;;;;N;;;;; -1629;CANADIAN SYLLABICS CARRIER DLO;Lo;0;L;;;;;N;;;;; -162A;CANADIAN SYLLABICS CARRIER DLE;Lo;0;L;;;;;N;;;;; -162B;CANADIAN SYLLABICS CARRIER DLEE;Lo;0;L;;;;;N;;;;; -162C;CANADIAN SYLLABICS CARRIER DLI;Lo;0;L;;;;;N;;;;; -162D;CANADIAN SYLLABICS CARRIER DLA;Lo;0;L;;;;;N;;;;; -162E;CANADIAN SYLLABICS CARRIER LHU;Lo;0;L;;;;;N;;;;; -162F;CANADIAN SYLLABICS CARRIER LHO;Lo;0;L;;;;;N;;;;; -1630;CANADIAN SYLLABICS CARRIER LHE;Lo;0;L;;;;;N;;;;; -1631;CANADIAN SYLLABICS CARRIER LHEE;Lo;0;L;;;;;N;;;;; -1632;CANADIAN SYLLABICS CARRIER LHI;Lo;0;L;;;;;N;;;;; -1633;CANADIAN SYLLABICS CARRIER LHA;Lo;0;L;;;;;N;;;;; -1634;CANADIAN SYLLABICS CARRIER TLHU;Lo;0;L;;;;;N;;;;; -1635;CANADIAN SYLLABICS CARRIER TLHO;Lo;0;L;;;;;N;;;;; -1636;CANADIAN SYLLABICS CARRIER TLHE;Lo;0;L;;;;;N;;;;; -1637;CANADIAN SYLLABICS CARRIER TLHEE;Lo;0;L;;;;;N;;;;; -1638;CANADIAN SYLLABICS CARRIER TLHI;Lo;0;L;;;;;N;;;;; -1639;CANADIAN SYLLABICS CARRIER TLHA;Lo;0;L;;;;;N;;;;; -163A;CANADIAN SYLLABICS CARRIER TLU;Lo;0;L;;;;;N;;;;; -163B;CANADIAN SYLLABICS CARRIER TLO;Lo;0;L;;;;;N;;;;; -163C;CANADIAN SYLLABICS CARRIER TLE;Lo;0;L;;;;;N;;;;; -163D;CANADIAN SYLLABICS CARRIER TLEE;Lo;0;L;;;;;N;;;;; -163E;CANADIAN SYLLABICS CARRIER TLI;Lo;0;L;;;;;N;;;;; -163F;CANADIAN SYLLABICS CARRIER TLA;Lo;0;L;;;;;N;;;;; -1640;CANADIAN SYLLABICS CARRIER ZU;Lo;0;L;;;;;N;;;;; -1641;CANADIAN SYLLABICS CARRIER ZO;Lo;0;L;;;;;N;;;;; -1642;CANADIAN SYLLABICS CARRIER ZE;Lo;0;L;;;;;N;;;;; -1643;CANADIAN SYLLABICS CARRIER ZEE;Lo;0;L;;;;;N;;;;; -1644;CANADIAN SYLLABICS CARRIER ZI;Lo;0;L;;;;;N;;;;; -1645;CANADIAN SYLLABICS CARRIER ZA;Lo;0;L;;;;;N;;;;; -1646;CANADIAN SYLLABICS CARRIER Z;Lo;0;L;;;;;N;;;;; -1647;CANADIAN SYLLABICS CARRIER INITIAL Z;Lo;0;L;;;;;N;;;;; -1648;CANADIAN SYLLABICS CARRIER DZU;Lo;0;L;;;;;N;;;;; -1649;CANADIAN SYLLABICS CARRIER DZO;Lo;0;L;;;;;N;;;;; -164A;CANADIAN SYLLABICS CARRIER DZE;Lo;0;L;;;;;N;;;;; -164B;CANADIAN SYLLABICS CARRIER DZEE;Lo;0;L;;;;;N;;;;; -164C;CANADIAN SYLLABICS CARRIER DZI;Lo;0;L;;;;;N;;;;; -164D;CANADIAN SYLLABICS CARRIER DZA;Lo;0;L;;;;;N;;;;; -164E;CANADIAN SYLLABICS CARRIER SU;Lo;0;L;;;;;N;;;;; -164F;CANADIAN SYLLABICS CARRIER SO;Lo;0;L;;;;;N;;;;; -1650;CANADIAN SYLLABICS CARRIER SE;Lo;0;L;;;;;N;;;;; -1651;CANADIAN SYLLABICS CARRIER SEE;Lo;0;L;;;;;N;;;;; -1652;CANADIAN SYLLABICS CARRIER SI;Lo;0;L;;;;;N;;;;; -1653;CANADIAN SYLLABICS CARRIER SA;Lo;0;L;;;;;N;;;;; -1654;CANADIAN SYLLABICS CARRIER SHU;Lo;0;L;;;;;N;;;;; -1655;CANADIAN SYLLABICS CARRIER SHO;Lo;0;L;;;;;N;;;;; -1656;CANADIAN SYLLABICS CARRIER SHE;Lo;0;L;;;;;N;;;;; -1657;CANADIAN SYLLABICS CARRIER SHEE;Lo;0;L;;;;;N;;;;; -1658;CANADIAN SYLLABICS CARRIER SHI;Lo;0;L;;;;;N;;;;; -1659;CANADIAN SYLLABICS CARRIER SHA;Lo;0;L;;;;;N;;;;; -165A;CANADIAN SYLLABICS CARRIER SH;Lo;0;L;;;;;N;;;;; -165B;CANADIAN SYLLABICS CARRIER TSU;Lo;0;L;;;;;N;;;;; -165C;CANADIAN SYLLABICS CARRIER TSO;Lo;0;L;;;;;N;;;;; -165D;CANADIAN SYLLABICS CARRIER TSE;Lo;0;L;;;;;N;;;;; -165E;CANADIAN SYLLABICS CARRIER TSEE;Lo;0;L;;;;;N;;;;; -165F;CANADIAN SYLLABICS CARRIER TSI;Lo;0;L;;;;;N;;;;; -1660;CANADIAN SYLLABICS CARRIER TSA;Lo;0;L;;;;;N;;;;; -1661;CANADIAN SYLLABICS CARRIER CHU;Lo;0;L;;;;;N;;;;; -1662;CANADIAN SYLLABICS CARRIER CHO;Lo;0;L;;;;;N;;;;; -1663;CANADIAN SYLLABICS CARRIER CHE;Lo;0;L;;;;;N;;;;; -1664;CANADIAN SYLLABICS CARRIER CHEE;Lo;0;L;;;;;N;;;;; -1665;CANADIAN SYLLABICS CARRIER CHI;Lo;0;L;;;;;N;;;;; -1666;CANADIAN SYLLABICS CARRIER CHA;Lo;0;L;;;;;N;;;;; -1667;CANADIAN SYLLABICS CARRIER TTSU;Lo;0;L;;;;;N;;;;; -1668;CANADIAN SYLLABICS CARRIER TTSO;Lo;0;L;;;;;N;;;;; -1669;CANADIAN SYLLABICS CARRIER TTSE;Lo;0;L;;;;;N;;;;; -166A;CANADIAN SYLLABICS CARRIER TTSEE;Lo;0;L;;;;;N;;;;; -166B;CANADIAN SYLLABICS CARRIER TTSI;Lo;0;L;;;;;N;;;;; -166C;CANADIAN SYLLABICS CARRIER TTSA;Lo;0;L;;;;;N;;;;; -166D;CANADIAN SYLLABICS CHI SIGN;Po;0;L;;;;;N;;;;; -166E;CANADIAN SYLLABICS FULL STOP;Po;0;L;;;;;N;;;;; -166F;CANADIAN SYLLABICS QAI;Lo;0;L;;;;;N;;;;; -1670;CANADIAN SYLLABICS NGAI;Lo;0;L;;;;;N;;;;; -1671;CANADIAN SYLLABICS NNGI;Lo;0;L;;;;;N;;;;; -1672;CANADIAN SYLLABICS NNGII;Lo;0;L;;;;;N;;;;; -1673;CANADIAN SYLLABICS NNGO;Lo;0;L;;;;;N;;;;; -1674;CANADIAN SYLLABICS NNGOO;Lo;0;L;;;;;N;;;;; -1675;CANADIAN SYLLABICS NNGA;Lo;0;L;;;;;N;;;;; -1676;CANADIAN SYLLABICS NNGAA;Lo;0;L;;;;;N;;;;; -1677;CANADIAN SYLLABICS WOODS-CREE THWEE;Lo;0;L;;;;;N;;;;; -1678;CANADIAN SYLLABICS WOODS-CREE THWI;Lo;0;L;;;;;N;;;;; -1679;CANADIAN SYLLABICS WOODS-CREE THWII;Lo;0;L;;;;;N;;;;; -167A;CANADIAN SYLLABICS WOODS-CREE THWO;Lo;0;L;;;;;N;;;;; -167B;CANADIAN SYLLABICS WOODS-CREE THWOO;Lo;0;L;;;;;N;;;;; -167C;CANADIAN SYLLABICS WOODS-CREE THWA;Lo;0;L;;;;;N;;;;; -167D;CANADIAN SYLLABICS WOODS-CREE THWAA;Lo;0;L;;;;;N;;;;; -167E;CANADIAN SYLLABICS WOODS-CREE FINAL TH;Lo;0;L;;;;;N;;;;; -167F;CANADIAN SYLLABICS BLACKFOOT W;Lo;0;L;;;;;N;;;;; -1680;OGHAM SPACE MARK;Zs;0;WS;;;;;N;;;;; -1681;OGHAM LETTER BEITH;Lo;0;L;;;;;N;;;;; -1682;OGHAM LETTER LUIS;Lo;0;L;;;;;N;;;;; -1683;OGHAM LETTER FEARN;Lo;0;L;;;;;N;;;;; -1684;OGHAM LETTER SAIL;Lo;0;L;;;;;N;;;;; -1685;OGHAM LETTER NION;Lo;0;L;;;;;N;;;;; -1686;OGHAM LETTER UATH;Lo;0;L;;;;;N;;;;; -1687;OGHAM LETTER DAIR;Lo;0;L;;;;;N;;;;; -1688;OGHAM LETTER TINNE;Lo;0;L;;;;;N;;;;; -1689;OGHAM LETTER COLL;Lo;0;L;;;;;N;;;;; -168A;OGHAM LETTER CEIRT;Lo;0;L;;;;;N;;;;; -168B;OGHAM LETTER MUIN;Lo;0;L;;;;;N;;;;; -168C;OGHAM LETTER GORT;Lo;0;L;;;;;N;;;;; -168D;OGHAM LETTER NGEADAL;Lo;0;L;;;;;N;;;;; -168E;OGHAM LETTER STRAIF;Lo;0;L;;;;;N;;;;; -168F;OGHAM LETTER RUIS;Lo;0;L;;;;;N;;;;; -1690;OGHAM LETTER AILM;Lo;0;L;;;;;N;;;;; -1691;OGHAM LETTER ONN;Lo;0;L;;;;;N;;;;; -1692;OGHAM LETTER UR;Lo;0;L;;;;;N;;;;; -1693;OGHAM LETTER EADHADH;Lo;0;L;;;;;N;;;;; -1694;OGHAM LETTER IODHADH;Lo;0;L;;;;;N;;;;; -1695;OGHAM LETTER EABHADH;Lo;0;L;;;;;N;;;;; -1696;OGHAM LETTER OR;Lo;0;L;;;;;N;;;;; -1697;OGHAM LETTER UILLEANN;Lo;0;L;;;;;N;;;;; -1698;OGHAM LETTER IFIN;Lo;0;L;;;;;N;;;;; -1699;OGHAM LETTER EAMHANCHOLL;Lo;0;L;;;;;N;;;;; -169A;OGHAM LETTER PEITH;Lo;0;L;;;;;N;;;;; -169B;OGHAM FEATHER MARK;Ps;0;ON;;;;;Y;;;;; -169C;OGHAM REVERSED FEATHER MARK;Pe;0;ON;;;;;Y;;;;; -16A0;RUNIC LETTER FEHU FEOH FE F;Lo;0;L;;;;;N;;;;; -16A1;RUNIC LETTER V;Lo;0;L;;;;;N;;;;; -16A2;RUNIC LETTER URUZ UR U;Lo;0;L;;;;;N;;;;; -16A3;RUNIC LETTER YR;Lo;0;L;;;;;N;;;;; -16A4;RUNIC LETTER Y;Lo;0;L;;;;;N;;;;; -16A5;RUNIC LETTER W;Lo;0;L;;;;;N;;;;; -16A6;RUNIC LETTER THURISAZ THURS THORN;Lo;0;L;;;;;N;;;;; -16A7;RUNIC LETTER ETH;Lo;0;L;;;;;N;;;;; -16A8;RUNIC LETTER ANSUZ A;Lo;0;L;;;;;N;;;;; -16A9;RUNIC LETTER OS O;Lo;0;L;;;;;N;;;;; -16AA;RUNIC LETTER AC A;Lo;0;L;;;;;N;;;;; -16AB;RUNIC LETTER AESC;Lo;0;L;;;;;N;;;;; -16AC;RUNIC LETTER LONG-BRANCH-OSS O;Lo;0;L;;;;;N;;;;; -16AD;RUNIC LETTER SHORT-TWIG-OSS O;Lo;0;L;;;;;N;;;;; -16AE;RUNIC LETTER O;Lo;0;L;;;;;N;;;;; -16AF;RUNIC LETTER OE;Lo;0;L;;;;;N;;;;; -16B0;RUNIC LETTER ON;Lo;0;L;;;;;N;;;;; -16B1;RUNIC LETTER RAIDO RAD REID R;Lo;0;L;;;;;N;;;;; -16B2;RUNIC LETTER KAUNA;Lo;0;L;;;;;N;;;;; -16B3;RUNIC LETTER CEN;Lo;0;L;;;;;N;;;;; -16B4;RUNIC LETTER KAUN K;Lo;0;L;;;;;N;;;;; -16B5;RUNIC LETTER G;Lo;0;L;;;;;N;;;;; -16B6;RUNIC LETTER ENG;Lo;0;L;;;;;N;;;;; -16B7;RUNIC LETTER GEBO GYFU G;Lo;0;L;;;;;N;;;;; -16B8;RUNIC LETTER GAR;Lo;0;L;;;;;N;;;;; -16B9;RUNIC LETTER WUNJO WYNN W;Lo;0;L;;;;;N;;;;; -16BA;RUNIC LETTER HAGLAZ H;Lo;0;L;;;;;N;;;;; -16BB;RUNIC LETTER HAEGL H;Lo;0;L;;;;;N;;;;; -16BC;RUNIC LETTER LONG-BRANCH-HAGALL H;Lo;0;L;;;;;N;;;;; -16BD;RUNIC LETTER SHORT-TWIG-HAGALL H;Lo;0;L;;;;;N;;;;; -16BE;RUNIC LETTER NAUDIZ NYD NAUD N;Lo;0;L;;;;;N;;;;; -16BF;RUNIC LETTER SHORT-TWIG-NAUD N;Lo;0;L;;;;;N;;;;; -16C0;RUNIC LETTER DOTTED-N;Lo;0;L;;;;;N;;;;; -16C1;RUNIC LETTER ISAZ IS ISS I;Lo;0;L;;;;;N;;;;; -16C2;RUNIC LETTER E;Lo;0;L;;;;;N;;;;; -16C3;RUNIC LETTER JERAN J;Lo;0;L;;;;;N;;;;; -16C4;RUNIC LETTER GER;Lo;0;L;;;;;N;;;;; -16C5;RUNIC LETTER LONG-BRANCH-AR AE;Lo;0;L;;;;;N;;;;; -16C6;RUNIC LETTER SHORT-TWIG-AR A;Lo;0;L;;;;;N;;;;; -16C7;RUNIC LETTER IWAZ EOH;Lo;0;L;;;;;N;;;;; -16C8;RUNIC LETTER PERTHO PEORTH P;Lo;0;L;;;;;N;;;;; -16C9;RUNIC LETTER ALGIZ EOLHX;Lo;0;L;;;;;N;;;;; -16CA;RUNIC LETTER SOWILO S;Lo;0;L;;;;;N;;;;; -16CB;RUNIC LETTER SIGEL LONG-BRANCH-SOL S;Lo;0;L;;;;;N;;;;; -16CC;RUNIC LETTER SHORT-TWIG-SOL S;Lo;0;L;;;;;N;;;;; -16CD;RUNIC LETTER C;Lo;0;L;;;;;N;;;;; -16CE;RUNIC LETTER Z;Lo;0;L;;;;;N;;;;; -16CF;RUNIC LETTER TIWAZ TIR TYR T;Lo;0;L;;;;;N;;;;; -16D0;RUNIC LETTER SHORT-TWIG-TYR T;Lo;0;L;;;;;N;;;;; -16D1;RUNIC LETTER D;Lo;0;L;;;;;N;;;;; -16D2;RUNIC LETTER BERKANAN BEORC BJARKAN B;Lo;0;L;;;;;N;;;;; -16D3;RUNIC LETTER SHORT-TWIG-BJARKAN B;Lo;0;L;;;;;N;;;;; -16D4;RUNIC LETTER DOTTED-P;Lo;0;L;;;;;N;;;;; -16D5;RUNIC LETTER OPEN-P;Lo;0;L;;;;;N;;;;; -16D6;RUNIC LETTER EHWAZ EH E;Lo;0;L;;;;;N;;;;; -16D7;RUNIC LETTER MANNAZ MAN M;Lo;0;L;;;;;N;;;;; -16D8;RUNIC LETTER LONG-BRANCH-MADR M;Lo;0;L;;;;;N;;;;; -16D9;RUNIC LETTER SHORT-TWIG-MADR M;Lo;0;L;;;;;N;;;;; -16DA;RUNIC LETTER LAUKAZ LAGU LOGR L;Lo;0;L;;;;;N;;;;; -16DB;RUNIC LETTER DOTTED-L;Lo;0;L;;;;;N;;;;; -16DC;RUNIC LETTER INGWAZ;Lo;0;L;;;;;N;;;;; -16DD;RUNIC LETTER ING;Lo;0;L;;;;;N;;;;; -16DE;RUNIC LETTER DAGAZ DAEG D;Lo;0;L;;;;;N;;;;; -16DF;RUNIC LETTER OTHALAN ETHEL O;Lo;0;L;;;;;N;;;;; -16E0;RUNIC LETTER EAR;Lo;0;L;;;;;N;;;;; -16E1;RUNIC LETTER IOR;Lo;0;L;;;;;N;;;;; -16E2;RUNIC LETTER CWEORTH;Lo;0;L;;;;;N;;;;; -16E3;RUNIC LETTER CALC;Lo;0;L;;;;;N;;;;; -16E4;RUNIC LETTER CEALC;Lo;0;L;;;;;N;;;;; -16E5;RUNIC LETTER STAN;Lo;0;L;;;;;N;;;;; -16E6;RUNIC LETTER LONG-BRANCH-YR;Lo;0;L;;;;;N;;;;; -16E7;RUNIC LETTER SHORT-TWIG-YR;Lo;0;L;;;;;N;;;;; -16E8;RUNIC LETTER ICELANDIC-YR;Lo;0;L;;;;;N;;;;; -16E9;RUNIC LETTER Q;Lo;0;L;;;;;N;;;;; -16EA;RUNIC LETTER X;Lo;0;L;;;;;N;;;;; -16EB;RUNIC SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;; -16EC;RUNIC MULTIPLE PUNCTUATION;Po;0;L;;;;;N;;;;; -16ED;RUNIC CROSS PUNCTUATION;Po;0;L;;;;;N;;;;; -16EE;RUNIC ARLAUG SYMBOL;Nl;0;L;;;;17;N;;;;; -16EF;RUNIC TVIMADUR SYMBOL;Nl;0;L;;;;18;N;;;;; -16F0;RUNIC BELGTHOR SYMBOL;Nl;0;L;;;;19;N;;;;; -1700;TAGALOG LETTER A;Lo;0;L;;;;;N;;;;; -1701;TAGALOG LETTER I;Lo;0;L;;;;;N;;;;; -1702;TAGALOG LETTER U;Lo;0;L;;;;;N;;;;; -1703;TAGALOG LETTER KA;Lo;0;L;;;;;N;;;;; -1704;TAGALOG LETTER GA;Lo;0;L;;;;;N;;;;; -1705;TAGALOG LETTER NGA;Lo;0;L;;;;;N;;;;; -1706;TAGALOG LETTER TA;Lo;0;L;;;;;N;;;;; -1707;TAGALOG LETTER DA;Lo;0;L;;;;;N;;;;; -1708;TAGALOG LETTER NA;Lo;0;L;;;;;N;;;;; -1709;TAGALOG LETTER PA;Lo;0;L;;;;;N;;;;; -170A;TAGALOG LETTER BA;Lo;0;L;;;;;N;;;;; -170B;TAGALOG LETTER MA;Lo;0;L;;;;;N;;;;; -170C;TAGALOG LETTER YA;Lo;0;L;;;;;N;;;;; -170E;TAGALOG LETTER LA;Lo;0;L;;;;;N;;;;; -170F;TAGALOG LETTER WA;Lo;0;L;;;;;N;;;;; -1710;TAGALOG LETTER SA;Lo;0;L;;;;;N;;;;; -1711;TAGALOG LETTER HA;Lo;0;L;;;;;N;;;;; -1712;TAGALOG VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -1713;TAGALOG VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -1714;TAGALOG SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -1720;HANUNOO LETTER A;Lo;0;L;;;;;N;;;;; -1721;HANUNOO LETTER I;Lo;0;L;;;;;N;;;;; -1722;HANUNOO LETTER U;Lo;0;L;;;;;N;;;;; -1723;HANUNOO LETTER KA;Lo;0;L;;;;;N;;;;; -1724;HANUNOO LETTER GA;Lo;0;L;;;;;N;;;;; -1725;HANUNOO LETTER NGA;Lo;0;L;;;;;N;;;;; -1726;HANUNOO LETTER TA;Lo;0;L;;;;;N;;;;; -1727;HANUNOO LETTER DA;Lo;0;L;;;;;N;;;;; -1728;HANUNOO LETTER NA;Lo;0;L;;;;;N;;;;; -1729;HANUNOO LETTER PA;Lo;0;L;;;;;N;;;;; -172A;HANUNOO LETTER BA;Lo;0;L;;;;;N;;;;; -172B;HANUNOO LETTER MA;Lo;0;L;;;;;N;;;;; -172C;HANUNOO LETTER YA;Lo;0;L;;;;;N;;;;; -172D;HANUNOO LETTER RA;Lo;0;L;;;;;N;;;;; -172E;HANUNOO LETTER LA;Lo;0;L;;;;;N;;;;; -172F;HANUNOO LETTER WA;Lo;0;L;;;;;N;;;;; -1730;HANUNOO LETTER SA;Lo;0;L;;;;;N;;;;; -1731;HANUNOO LETTER HA;Lo;0;L;;;;;N;;;;; -1732;HANUNOO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -1733;HANUNOO VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -1734;HANUNOO SIGN PAMUDPOD;Mn;9;NSM;;;;;N;;;;; -1735;PHILIPPINE SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;; -1736;PHILIPPINE DOUBLE PUNCTUATION;Po;0;L;;;;;N;;;;; -1740;BUHID LETTER A;Lo;0;L;;;;;N;;;;; -1741;BUHID LETTER I;Lo;0;L;;;;;N;;;;; -1742;BUHID LETTER U;Lo;0;L;;;;;N;;;;; -1743;BUHID LETTER KA;Lo;0;L;;;;;N;;;;; -1744;BUHID LETTER GA;Lo;0;L;;;;;N;;;;; -1745;BUHID LETTER NGA;Lo;0;L;;;;;N;;;;; -1746;BUHID LETTER TA;Lo;0;L;;;;;N;;;;; -1747;BUHID LETTER DA;Lo;0;L;;;;;N;;;;; -1748;BUHID LETTER NA;Lo;0;L;;;;;N;;;;; -1749;BUHID LETTER PA;Lo;0;L;;;;;N;;;;; -174A;BUHID LETTER BA;Lo;0;L;;;;;N;;;;; -174B;BUHID LETTER MA;Lo;0;L;;;;;N;;;;; -174C;BUHID LETTER YA;Lo;0;L;;;;;N;;;;; -174D;BUHID LETTER RA;Lo;0;L;;;;;N;;;;; -174E;BUHID LETTER LA;Lo;0;L;;;;;N;;;;; -174F;BUHID LETTER WA;Lo;0;L;;;;;N;;;;; -1750;BUHID LETTER SA;Lo;0;L;;;;;N;;;;; -1751;BUHID LETTER HA;Lo;0;L;;;;;N;;;;; -1752;BUHID VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -1753;BUHID VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -1760;TAGBANWA LETTER A;Lo;0;L;;;;;N;;;;; -1761;TAGBANWA LETTER I;Lo;0;L;;;;;N;;;;; -1762;TAGBANWA LETTER U;Lo;0;L;;;;;N;;;;; -1763;TAGBANWA LETTER KA;Lo;0;L;;;;;N;;;;; -1764;TAGBANWA LETTER GA;Lo;0;L;;;;;N;;;;; -1765;TAGBANWA LETTER NGA;Lo;0;L;;;;;N;;;;; -1766;TAGBANWA LETTER TA;Lo;0;L;;;;;N;;;;; -1767;TAGBANWA LETTER DA;Lo;0;L;;;;;N;;;;; -1768;TAGBANWA LETTER NA;Lo;0;L;;;;;N;;;;; -1769;TAGBANWA LETTER PA;Lo;0;L;;;;;N;;;;; -176A;TAGBANWA LETTER BA;Lo;0;L;;;;;N;;;;; -176B;TAGBANWA LETTER MA;Lo;0;L;;;;;N;;;;; -176C;TAGBANWA LETTER YA;Lo;0;L;;;;;N;;;;; -176E;TAGBANWA LETTER LA;Lo;0;L;;;;;N;;;;; -176F;TAGBANWA LETTER WA;Lo;0;L;;;;;N;;;;; -1770;TAGBANWA LETTER SA;Lo;0;L;;;;;N;;;;; -1772;TAGBANWA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -1773;TAGBANWA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -1780;KHMER LETTER KA;Lo;0;L;;;;;N;;;;; -1781;KHMER LETTER KHA;Lo;0;L;;;;;N;;;;; -1782;KHMER LETTER KO;Lo;0;L;;;;;N;;;;; -1783;KHMER LETTER KHO;Lo;0;L;;;;;N;;;;; -1784;KHMER LETTER NGO;Lo;0;L;;;;;N;;;;; -1785;KHMER LETTER CA;Lo;0;L;;;;;N;;;;; -1786;KHMER LETTER CHA;Lo;0;L;;;;;N;;;;; -1787;KHMER LETTER CO;Lo;0;L;;;;;N;;;;; -1788;KHMER LETTER CHO;Lo;0;L;;;;;N;;;;; -1789;KHMER LETTER NYO;Lo;0;L;;;;;N;;;;; -178A;KHMER LETTER DA;Lo;0;L;;;;;N;;;;; -178B;KHMER LETTER TTHA;Lo;0;L;;;;;N;;;;; -178C;KHMER LETTER DO;Lo;0;L;;;;;N;;;;; -178D;KHMER LETTER TTHO;Lo;0;L;;;;;N;;;;; -178E;KHMER LETTER NNO;Lo;0;L;;;;;N;;;;; -178F;KHMER LETTER TA;Lo;0;L;;;;;N;;;;; -1790;KHMER LETTER THA;Lo;0;L;;;;;N;;;;; -1791;KHMER LETTER TO;Lo;0;L;;;;;N;;;;; -1792;KHMER LETTER THO;Lo;0;L;;;;;N;;;;; -1793;KHMER LETTER NO;Lo;0;L;;;;;N;;;;; -1794;KHMER LETTER BA;Lo;0;L;;;;;N;;;;; -1795;KHMER LETTER PHA;Lo;0;L;;;;;N;;;;; -1796;KHMER LETTER PO;Lo;0;L;;;;;N;;;;; -1797;KHMER LETTER PHO;Lo;0;L;;;;;N;;;;; -1798;KHMER LETTER MO;Lo;0;L;;;;;N;;;;; -1799;KHMER LETTER YO;Lo;0;L;;;;;N;;;;; -179A;KHMER LETTER RO;Lo;0;L;;;;;N;;;;; -179B;KHMER LETTER LO;Lo;0;L;;;;;N;;;;; -179C;KHMER LETTER VO;Lo;0;L;;;;;N;;;;; -179D;KHMER LETTER SHA;Lo;0;L;;;;;N;;;;; -179E;KHMER LETTER SSO;Lo;0;L;;;;;N;;;;; -179F;KHMER LETTER SA;Lo;0;L;;;;;N;;;;; -17A0;KHMER LETTER HA;Lo;0;L;;;;;N;;;;; -17A1;KHMER LETTER LA;Lo;0;L;;;;;N;;;;; -17A2;KHMER LETTER QA;Lo;0;L;;;;;N;;;;; -17A3;KHMER INDEPENDENT VOWEL QAQ;Lo;0;L;;;;;N;;;;; -17A4;KHMER INDEPENDENT VOWEL QAA;Lo;0;L;;;;;N;;;;; -17A5;KHMER INDEPENDENT VOWEL QI;Lo;0;L;;;;;N;;;;; -17A6;KHMER INDEPENDENT VOWEL QII;Lo;0;L;;;;;N;;;;; -17A7;KHMER INDEPENDENT VOWEL QU;Lo;0;L;;;;;N;;;;; -17A8;KHMER INDEPENDENT VOWEL QUK;Lo;0;L;;;;;N;;;;; -17A9;KHMER INDEPENDENT VOWEL QUU;Lo;0;L;;;;;N;;;;; -17AA;KHMER INDEPENDENT VOWEL QUUV;Lo;0;L;;;;;N;;;;; -17AB;KHMER INDEPENDENT VOWEL RY;Lo;0;L;;;;;N;;;;; -17AC;KHMER INDEPENDENT VOWEL RYY;Lo;0;L;;;;;N;;;;; -17AD;KHMER INDEPENDENT VOWEL LY;Lo;0;L;;;;;N;;;;; -17AE;KHMER INDEPENDENT VOWEL LYY;Lo;0;L;;;;;N;;;;; -17AF;KHMER INDEPENDENT VOWEL QE;Lo;0;L;;;;;N;;;;; -17B0;KHMER INDEPENDENT VOWEL QAI;Lo;0;L;;;;;N;;;;; -17B1;KHMER INDEPENDENT VOWEL QOO TYPE ONE;Lo;0;L;;;;;N;;;;; -17B2;KHMER INDEPENDENT VOWEL QOO TYPE TWO;Lo;0;L;;;;;N;;;;; -17B3;KHMER INDEPENDENT VOWEL QAU;Lo;0;L;;;;;N;;;;; -17B4;KHMER VOWEL INHERENT AQ;Cf;0;L;;;;;N;;;;; -17B5;KHMER VOWEL INHERENT AA;Cf;0;L;;;;;N;;;;; -17B6;KHMER VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -17B7;KHMER VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -17B8;KHMER VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; -17B9;KHMER VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;; -17BA;KHMER VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;; -17BB;KHMER VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -17BC;KHMER VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; -17BD;KHMER VOWEL SIGN UA;Mn;0;NSM;;;;;N;;;;; -17BE;KHMER VOWEL SIGN OE;Mc;0;L;;;;;N;;;;; -17BF;KHMER VOWEL SIGN YA;Mc;0;L;;;;;N;;;;; -17C0;KHMER VOWEL SIGN IE;Mc;0;L;;;;;N;;;;; -17C1;KHMER VOWEL SIGN E;Mc;0;L;;;;;N;;;;; -17C2;KHMER VOWEL SIGN AE;Mc;0;L;;;;;N;;;;; -17C3;KHMER VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; -17C4;KHMER VOWEL SIGN OO;Mc;0;L;;;;;N;;;;; -17C5;KHMER VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; -17C6;KHMER SIGN NIKAHIT;Mn;0;NSM;;;;;N;;;;; -17C7;KHMER SIGN REAHMUK;Mc;0;L;;;;;N;;;;; -17C8;KHMER SIGN YUUKALEAPINTU;Mc;0;L;;;;;N;;;;; -17C9;KHMER SIGN MUUSIKATOAN;Mn;0;NSM;;;;;N;;;;; -17CA;KHMER SIGN TRIISAP;Mn;0;NSM;;;;;N;;;;; -17CB;KHMER SIGN BANTOC;Mn;0;NSM;;;;;N;;;;; -17CC;KHMER SIGN ROBAT;Mn;0;NSM;;;;;N;;;;; -17CD;KHMER SIGN TOANDAKHIAT;Mn;0;NSM;;;;;N;;;;; -17CE;KHMER SIGN KAKABAT;Mn;0;NSM;;;;;N;;;;; -17CF;KHMER SIGN AHSDA;Mn;0;NSM;;;;;N;;;;; -17D0;KHMER SIGN SAMYOK SANNYA;Mn;0;NSM;;;;;N;;;;; -17D1;KHMER SIGN VIRIAM;Mn;0;NSM;;;;;N;;;;; -17D2;KHMER SIGN COENG;Mn;9;NSM;;;;;N;;;;; -17D3;KHMER SIGN BATHAMASAT;Mn;0;NSM;;;;;N;;;;; -17D4;KHMER SIGN KHAN;Po;0;L;;;;;N;;;;; -17D5;KHMER SIGN BARIYOOSAN;Po;0;L;;;;;N;;;;; -17D6;KHMER SIGN CAMNUC PII KUUH;Po;0;L;;;;;N;;;;; -17D7;KHMER SIGN LEK TOO;Lm;0;L;;;;;N;;;;; -17D8;KHMER SIGN BEYYAL;Po;0;L;;;;;N;;;;; -17D9;KHMER SIGN PHNAEK MUAN;Po;0;L;;;;;N;;;;; -17DA;KHMER SIGN KOOMUUT;Po;0;L;;;;;N;;;;; -17DB;KHMER CURRENCY SYMBOL RIEL;Sc;0;ET;;;;;N;;;;; -17DC;KHMER SIGN AVAKRAHASANYA;Lo;0;L;;;;;N;;;;; -17DD;KHMER SIGN ATTHACAN;Mn;230;NSM;;;;;N;;;;; -17E0;KHMER DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -17E1;KHMER DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -17E2;KHMER DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -17E3;KHMER DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -17E4;KHMER DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -17E5;KHMER DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -17E6;KHMER DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -17E7;KHMER DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -17E8;KHMER DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -17E9;KHMER DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -17F0;KHMER SYMBOL LEK ATTAK SON;No;0;ON;;;;0;N;;;;; -17F1;KHMER SYMBOL LEK ATTAK MUOY;No;0;ON;;;;1;N;;;;; -17F2;KHMER SYMBOL LEK ATTAK PII;No;0;ON;;;;2;N;;;;; -17F3;KHMER SYMBOL LEK ATTAK BEI;No;0;ON;;;;3;N;;;;; -17F4;KHMER SYMBOL LEK ATTAK BUON;No;0;ON;;;;4;N;;;;; -17F5;KHMER SYMBOL LEK ATTAK PRAM;No;0;ON;;;;5;N;;;;; -17F6;KHMER SYMBOL LEK ATTAK PRAM-MUOY;No;0;ON;;;;6;N;;;;; -17F7;KHMER SYMBOL LEK ATTAK PRAM-PII;No;0;ON;;;;7;N;;;;; -17F8;KHMER SYMBOL LEK ATTAK PRAM-BEI;No;0;ON;;;;8;N;;;;; -17F9;KHMER SYMBOL LEK ATTAK PRAM-BUON;No;0;ON;;;;9;N;;;;; -1800;MONGOLIAN BIRGA;Po;0;ON;;;;;N;;;;; -1801;MONGOLIAN ELLIPSIS;Po;0;ON;;;;;N;;;;; -1802;MONGOLIAN COMMA;Po;0;ON;;;;;N;;;;; -1803;MONGOLIAN FULL STOP;Po;0;ON;;;;;N;;;;; -1804;MONGOLIAN COLON;Po;0;ON;;;;;N;;;;; -1805;MONGOLIAN FOUR DOTS;Po;0;ON;;;;;N;;;;; -1806;MONGOLIAN TODO SOFT HYPHEN;Pd;0;ON;;;;;N;;;;; -1807;MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER;Po;0;ON;;;;;N;;;;; -1808;MONGOLIAN MANCHU COMMA;Po;0;ON;;;;;N;;;;; -1809;MONGOLIAN MANCHU FULL STOP;Po;0;ON;;;;;N;;;;; -180A;MONGOLIAN NIRUGU;Po;0;ON;;;;;N;;;;; -180B;MONGOLIAN FREE VARIATION SELECTOR ONE;Mn;0;NSM;;;;;N;;;;; -180C;MONGOLIAN FREE VARIATION SELECTOR TWO;Mn;0;NSM;;;;;N;;;;; -180D;MONGOLIAN FREE VARIATION SELECTOR THREE;Mn;0;NSM;;;;;N;;;;; -180E;MONGOLIAN VOWEL SEPARATOR;Zs;0;WS;;;;;N;;;;; -1810;MONGOLIAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -1811;MONGOLIAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -1812;MONGOLIAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -1813;MONGOLIAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -1814;MONGOLIAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -1815;MONGOLIAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -1816;MONGOLIAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -1817;MONGOLIAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -1818;MONGOLIAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -1819;MONGOLIAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -1820;MONGOLIAN LETTER A;Lo;0;L;;;;;N;;;;; -1821;MONGOLIAN LETTER E;Lo;0;L;;;;;N;;;;; -1822;MONGOLIAN LETTER I;Lo;0;L;;;;;N;;;;; -1823;MONGOLIAN LETTER O;Lo;0;L;;;;;N;;;;; -1824;MONGOLIAN LETTER U;Lo;0;L;;;;;N;;;;; -1825;MONGOLIAN LETTER OE;Lo;0;L;;;;;N;;;;; -1826;MONGOLIAN LETTER UE;Lo;0;L;;;;;N;;;;; -1827;MONGOLIAN LETTER EE;Lo;0;L;;;;;N;;;;; -1828;MONGOLIAN LETTER NA;Lo;0;L;;;;;N;;;;; -1829;MONGOLIAN LETTER ANG;Lo;0;L;;;;;N;;;;; -182A;MONGOLIAN LETTER BA;Lo;0;L;;;;;N;;;;; -182B;MONGOLIAN LETTER PA;Lo;0;L;;;;;N;;;;; -182C;MONGOLIAN LETTER QA;Lo;0;L;;;;;N;;;;; -182D;MONGOLIAN LETTER GA;Lo;0;L;;;;;N;;;;; -182E;MONGOLIAN LETTER MA;Lo;0;L;;;;;N;;;;; -182F;MONGOLIAN LETTER LA;Lo;0;L;;;;;N;;;;; -1830;MONGOLIAN LETTER SA;Lo;0;L;;;;;N;;;;; -1831;MONGOLIAN LETTER SHA;Lo;0;L;;;;;N;;;;; -1832;MONGOLIAN LETTER TA;Lo;0;L;;;;;N;;;;; -1833;MONGOLIAN LETTER DA;Lo;0;L;;;;;N;;;;; -1834;MONGOLIAN LETTER CHA;Lo;0;L;;;;;N;;;;; -1835;MONGOLIAN LETTER JA;Lo;0;L;;;;;N;;;;; -1836;MONGOLIAN LETTER YA;Lo;0;L;;;;;N;;;;; -1837;MONGOLIAN LETTER RA;Lo;0;L;;;;;N;;;;; -1838;MONGOLIAN LETTER WA;Lo;0;L;;;;;N;;;;; -1839;MONGOLIAN LETTER FA;Lo;0;L;;;;;N;;;;; -183A;MONGOLIAN LETTER KA;Lo;0;L;;;;;N;;;;; -183B;MONGOLIAN LETTER KHA;Lo;0;L;;;;;N;;;;; -183C;MONGOLIAN LETTER TSA;Lo;0;L;;;;;N;;;;; -183D;MONGOLIAN LETTER ZA;Lo;0;L;;;;;N;;;;; -183E;MONGOLIAN LETTER HAA;Lo;0;L;;;;;N;;;;; -183F;MONGOLIAN LETTER ZRA;Lo;0;L;;;;;N;;;;; -1840;MONGOLIAN LETTER LHA;Lo;0;L;;;;;N;;;;; -1841;MONGOLIAN LETTER ZHI;Lo;0;L;;;;;N;;;;; -1842;MONGOLIAN LETTER CHI;Lo;0;L;;;;;N;;;;; -1843;MONGOLIAN LETTER TODO LONG VOWEL SIGN;Lm;0;L;;;;;N;;;;; -1844;MONGOLIAN LETTER TODO E;Lo;0;L;;;;;N;;;;; -1845;MONGOLIAN LETTER TODO I;Lo;0;L;;;;;N;;;;; -1846;MONGOLIAN LETTER TODO O;Lo;0;L;;;;;N;;;;; -1847;MONGOLIAN LETTER TODO U;Lo;0;L;;;;;N;;;;; -1848;MONGOLIAN LETTER TODO OE;Lo;0;L;;;;;N;;;;; -1849;MONGOLIAN LETTER TODO UE;Lo;0;L;;;;;N;;;;; -184A;MONGOLIAN LETTER TODO ANG;Lo;0;L;;;;;N;;;;; -184B;MONGOLIAN LETTER TODO BA;Lo;0;L;;;;;N;;;;; -184C;MONGOLIAN LETTER TODO PA;Lo;0;L;;;;;N;;;;; -184D;MONGOLIAN LETTER TODO QA;Lo;0;L;;;;;N;;;;; -184E;MONGOLIAN LETTER TODO GA;Lo;0;L;;;;;N;;;;; -184F;MONGOLIAN LETTER TODO MA;Lo;0;L;;;;;N;;;;; -1850;MONGOLIAN LETTER TODO TA;Lo;0;L;;;;;N;;;;; -1851;MONGOLIAN LETTER TODO DA;Lo;0;L;;;;;N;;;;; -1852;MONGOLIAN LETTER TODO CHA;Lo;0;L;;;;;N;;;;; -1853;MONGOLIAN LETTER TODO JA;Lo;0;L;;;;;N;;;;; -1854;MONGOLIAN LETTER TODO TSA;Lo;0;L;;;;;N;;;;; -1855;MONGOLIAN LETTER TODO YA;Lo;0;L;;;;;N;;;;; -1856;MONGOLIAN LETTER TODO WA;Lo;0;L;;;;;N;;;;; -1857;MONGOLIAN LETTER TODO KA;Lo;0;L;;;;;N;;;;; -1858;MONGOLIAN LETTER TODO GAA;Lo;0;L;;;;;N;;;;; -1859;MONGOLIAN LETTER TODO HAA;Lo;0;L;;;;;N;;;;; -185A;MONGOLIAN LETTER TODO JIA;Lo;0;L;;;;;N;;;;; -185B;MONGOLIAN LETTER TODO NIA;Lo;0;L;;;;;N;;;;; -185C;MONGOLIAN LETTER TODO DZA;Lo;0;L;;;;;N;;;;; -185D;MONGOLIAN LETTER SIBE E;Lo;0;L;;;;;N;;;;; -185E;MONGOLIAN LETTER SIBE I;Lo;0;L;;;;;N;;;;; -185F;MONGOLIAN LETTER SIBE IY;Lo;0;L;;;;;N;;;;; -1860;MONGOLIAN LETTER SIBE UE;Lo;0;L;;;;;N;;;;; -1861;MONGOLIAN LETTER SIBE U;Lo;0;L;;;;;N;;;;; -1862;MONGOLIAN LETTER SIBE ANG;Lo;0;L;;;;;N;;;;; -1863;MONGOLIAN LETTER SIBE KA;Lo;0;L;;;;;N;;;;; -1864;MONGOLIAN LETTER SIBE GA;Lo;0;L;;;;;N;;;;; -1865;MONGOLIAN LETTER SIBE HA;Lo;0;L;;;;;N;;;;; -1866;MONGOLIAN LETTER SIBE PA;Lo;0;L;;;;;N;;;;; -1867;MONGOLIAN LETTER SIBE SHA;Lo;0;L;;;;;N;;;;; -1868;MONGOLIAN LETTER SIBE TA;Lo;0;L;;;;;N;;;;; -1869;MONGOLIAN LETTER SIBE DA;Lo;0;L;;;;;N;;;;; -186A;MONGOLIAN LETTER SIBE JA;Lo;0;L;;;;;N;;;;; -186B;MONGOLIAN LETTER SIBE FA;Lo;0;L;;;;;N;;;;; -186C;MONGOLIAN LETTER SIBE GAA;Lo;0;L;;;;;N;;;;; -186D;MONGOLIAN LETTER SIBE HAA;Lo;0;L;;;;;N;;;;; -186E;MONGOLIAN LETTER SIBE TSA;Lo;0;L;;;;;N;;;;; -186F;MONGOLIAN LETTER SIBE ZA;Lo;0;L;;;;;N;;;;; -1870;MONGOLIAN LETTER SIBE RAA;Lo;0;L;;;;;N;;;;; -1871;MONGOLIAN LETTER SIBE CHA;Lo;0;L;;;;;N;;;;; -1872;MONGOLIAN LETTER SIBE ZHA;Lo;0;L;;;;;N;;;;; -1873;MONGOLIAN LETTER MANCHU I;Lo;0;L;;;;;N;;;;; -1874;MONGOLIAN LETTER MANCHU KA;Lo;0;L;;;;;N;;;;; -1875;MONGOLIAN LETTER MANCHU RA;Lo;0;L;;;;;N;;;;; -1876;MONGOLIAN LETTER MANCHU FA;Lo;0;L;;;;;N;;;;; -1877;MONGOLIAN LETTER MANCHU ZHA;Lo;0;L;;;;;N;;;;; -1880;MONGOLIAN LETTER ALI GALI ANUSVARA ONE;Lo;0;L;;;;;N;;;;; -1881;MONGOLIAN LETTER ALI GALI VISARGA ONE;Lo;0;L;;;;;N;;;;; -1882;MONGOLIAN LETTER ALI GALI DAMARU;Lo;0;L;;;;;N;;;;; -1883;MONGOLIAN LETTER ALI GALI UBADAMA;Lo;0;L;;;;;N;;;;; -1884;MONGOLIAN LETTER ALI GALI INVERTED UBADAMA;Lo;0;L;;;;;N;;;;; -1885;MONGOLIAN LETTER ALI GALI BALUDA;Lo;0;L;;;;;N;;;;; -1886;MONGOLIAN LETTER ALI GALI THREE BALUDA;Lo;0;L;;;;;N;;;;; -1887;MONGOLIAN LETTER ALI GALI A;Lo;0;L;;;;;N;;;;; -1888;MONGOLIAN LETTER ALI GALI I;Lo;0;L;;;;;N;;;;; -1889;MONGOLIAN LETTER ALI GALI KA;Lo;0;L;;;;;N;;;;; -188A;MONGOLIAN LETTER ALI GALI NGA;Lo;0;L;;;;;N;;;;; -188B;MONGOLIAN LETTER ALI GALI CA;Lo;0;L;;;;;N;;;;; -188C;MONGOLIAN LETTER ALI GALI TTA;Lo;0;L;;;;;N;;;;; -188D;MONGOLIAN LETTER ALI GALI TTHA;Lo;0;L;;;;;N;;;;; -188E;MONGOLIAN LETTER ALI GALI DDA;Lo;0;L;;;;;N;;;;; -188F;MONGOLIAN LETTER ALI GALI NNA;Lo;0;L;;;;;N;;;;; -1890;MONGOLIAN LETTER ALI GALI TA;Lo;0;L;;;;;N;;;;; -1891;MONGOLIAN LETTER ALI GALI DA;Lo;0;L;;;;;N;;;;; -1892;MONGOLIAN LETTER ALI GALI PA;Lo;0;L;;;;;N;;;;; -1893;MONGOLIAN LETTER ALI GALI PHA;Lo;0;L;;;;;N;;;;; -1894;MONGOLIAN LETTER ALI GALI SSA;Lo;0;L;;;;;N;;;;; -1895;MONGOLIAN LETTER ALI GALI ZHA;Lo;0;L;;;;;N;;;;; -1896;MONGOLIAN LETTER ALI GALI ZA;Lo;0;L;;;;;N;;;;; -1897;MONGOLIAN LETTER ALI GALI AH;Lo;0;L;;;;;N;;;;; -1898;MONGOLIAN LETTER TODO ALI GALI TA;Lo;0;L;;;;;N;;;;; -1899;MONGOLIAN LETTER TODO ALI GALI ZHA;Lo;0;L;;;;;N;;;;; -189A;MONGOLIAN LETTER MANCHU ALI GALI GHA;Lo;0;L;;;;;N;;;;; -189B;MONGOLIAN LETTER MANCHU ALI GALI NGA;Lo;0;L;;;;;N;;;;; -189C;MONGOLIAN LETTER MANCHU ALI GALI CA;Lo;0;L;;;;;N;;;;; -189D;MONGOLIAN LETTER MANCHU ALI GALI JHA;Lo;0;L;;;;;N;;;;; -189E;MONGOLIAN LETTER MANCHU ALI GALI TTA;Lo;0;L;;;;;N;;;;; -189F;MONGOLIAN LETTER MANCHU ALI GALI DDHA;Lo;0;L;;;;;N;;;;; -18A0;MONGOLIAN LETTER MANCHU ALI GALI TA;Lo;0;L;;;;;N;;;;; -18A1;MONGOLIAN LETTER MANCHU ALI GALI DHA;Lo;0;L;;;;;N;;;;; -18A2;MONGOLIAN LETTER MANCHU ALI GALI SSA;Lo;0;L;;;;;N;;;;; -18A3;MONGOLIAN LETTER MANCHU ALI GALI CYA;Lo;0;L;;;;;N;;;;; -18A4;MONGOLIAN LETTER MANCHU ALI GALI ZHA;Lo;0;L;;;;;N;;;;; -18A5;MONGOLIAN LETTER MANCHU ALI GALI ZA;Lo;0;L;;;;;N;;;;; -18A6;MONGOLIAN LETTER ALI GALI HALF U;Lo;0;L;;;;;N;;;;; -18A7;MONGOLIAN LETTER ALI GALI HALF YA;Lo;0;L;;;;;N;;;;; -18A8;MONGOLIAN LETTER MANCHU ALI GALI BHA;Lo;0;L;;;;;N;;;;; -18A9;MONGOLIAN LETTER ALI GALI DAGALGA;Mn;228;NSM;;;;;N;;;;; -18AA;MONGOLIAN LETTER MANCHU ALI GALI LHA;Lo;0;L;;;;;N;;;;; -18B0;CANADIAN SYLLABICS OY;Lo;0;L;;;;;N;;;;; -18B1;CANADIAN SYLLABICS AY;Lo;0;L;;;;;N;;;;; -18B2;CANADIAN SYLLABICS AAY;Lo;0;L;;;;;N;;;;; -18B3;CANADIAN SYLLABICS WAY;Lo;0;L;;;;;N;;;;; -18B4;CANADIAN SYLLABICS POY;Lo;0;L;;;;;N;;;;; -18B5;CANADIAN SYLLABICS PAY;Lo;0;L;;;;;N;;;;; -18B6;CANADIAN SYLLABICS PWOY;Lo;0;L;;;;;N;;;;; -18B7;CANADIAN SYLLABICS TAY;Lo;0;L;;;;;N;;;;; -18B8;CANADIAN SYLLABICS KAY;Lo;0;L;;;;;N;;;;; -18B9;CANADIAN SYLLABICS KWAY;Lo;0;L;;;;;N;;;;; -18BA;CANADIAN SYLLABICS MAY;Lo;0;L;;;;;N;;;;; -18BB;CANADIAN SYLLABICS NOY;Lo;0;L;;;;;N;;;;; -18BC;CANADIAN SYLLABICS NAY;Lo;0;L;;;;;N;;;;; -18BD;CANADIAN SYLLABICS LAY;Lo;0;L;;;;;N;;;;; -18BE;CANADIAN SYLLABICS SOY;Lo;0;L;;;;;N;;;;; -18BF;CANADIAN SYLLABICS SAY;Lo;0;L;;;;;N;;;;; -18C0;CANADIAN SYLLABICS SHOY;Lo;0;L;;;;;N;;;;; -18C1;CANADIAN SYLLABICS SHAY;Lo;0;L;;;;;N;;;;; -18C2;CANADIAN SYLLABICS SHWOY;Lo;0;L;;;;;N;;;;; -18C3;CANADIAN SYLLABICS YOY;Lo;0;L;;;;;N;;;;; -18C4;CANADIAN SYLLABICS YAY;Lo;0;L;;;;;N;;;;; -18C5;CANADIAN SYLLABICS RAY;Lo;0;L;;;;;N;;;;; -18C6;CANADIAN SYLLABICS NWI;Lo;0;L;;;;;N;;;;; -18C7;CANADIAN SYLLABICS OJIBWAY NWI;Lo;0;L;;;;;N;;;;; -18C8;CANADIAN SYLLABICS NWII;Lo;0;L;;;;;N;;;;; -18C9;CANADIAN SYLLABICS OJIBWAY NWII;Lo;0;L;;;;;N;;;;; -18CA;CANADIAN SYLLABICS NWO;Lo;0;L;;;;;N;;;;; -18CB;CANADIAN SYLLABICS OJIBWAY NWO;Lo;0;L;;;;;N;;;;; -18CC;CANADIAN SYLLABICS NWOO;Lo;0;L;;;;;N;;;;; -18CD;CANADIAN SYLLABICS OJIBWAY NWOO;Lo;0;L;;;;;N;;;;; -18CE;CANADIAN SYLLABICS RWEE;Lo;0;L;;;;;N;;;;; -18CF;CANADIAN SYLLABICS RWI;Lo;0;L;;;;;N;;;;; -18D0;CANADIAN SYLLABICS RWII;Lo;0;L;;;;;N;;;;; -18D1;CANADIAN SYLLABICS RWO;Lo;0;L;;;;;N;;;;; -18D2;CANADIAN SYLLABICS RWOO;Lo;0;L;;;;;N;;;;; -18D3;CANADIAN SYLLABICS RWA;Lo;0;L;;;;;N;;;;; -18D4;CANADIAN SYLLABICS OJIBWAY P;Lo;0;L;;;;;N;;;;; -18D5;CANADIAN SYLLABICS OJIBWAY T;Lo;0;L;;;;;N;;;;; -18D6;CANADIAN SYLLABICS OJIBWAY K;Lo;0;L;;;;;N;;;;; -18D7;CANADIAN SYLLABICS OJIBWAY C;Lo;0;L;;;;;N;;;;; -18D8;CANADIAN SYLLABICS OJIBWAY M;Lo;0;L;;;;;N;;;;; -18D9;CANADIAN SYLLABICS OJIBWAY N;Lo;0;L;;;;;N;;;;; -18DA;CANADIAN SYLLABICS OJIBWAY S;Lo;0;L;;;;;N;;;;; -18DB;CANADIAN SYLLABICS OJIBWAY SH;Lo;0;L;;;;;N;;;;; -18DC;CANADIAN SYLLABICS EASTERN W;Lo;0;L;;;;;N;;;;; -18DD;CANADIAN SYLLABICS WESTERN W;Lo;0;L;;;;;N;;;;; -18DE;CANADIAN SYLLABICS FINAL SMALL RING;Lo;0;L;;;;;N;;;;; -18DF;CANADIAN SYLLABICS FINAL RAISED DOT;Lo;0;L;;;;;N;;;;; -18E0;CANADIAN SYLLABICS R-CREE RWE;Lo;0;L;;;;;N;;;;; -18E1;CANADIAN SYLLABICS WEST-CREE LOO;Lo;0;L;;;;;N;;;;; -18E2;CANADIAN SYLLABICS WEST-CREE LAA;Lo;0;L;;;;;N;;;;; -18E3;CANADIAN SYLLABICS THWE;Lo;0;L;;;;;N;;;;; -18E4;CANADIAN SYLLABICS THWA;Lo;0;L;;;;;N;;;;; -18E5;CANADIAN SYLLABICS TTHWE;Lo;0;L;;;;;N;;;;; -18E6;CANADIAN SYLLABICS TTHOO;Lo;0;L;;;;;N;;;;; -18E7;CANADIAN SYLLABICS TTHAA;Lo;0;L;;;;;N;;;;; -18E8;CANADIAN SYLLABICS TLHWE;Lo;0;L;;;;;N;;;;; -18E9;CANADIAN SYLLABICS TLHOO;Lo;0;L;;;;;N;;;;; -18EA;CANADIAN SYLLABICS SAYISI SHWE;Lo;0;L;;;;;N;;;;; -18EB;CANADIAN SYLLABICS SAYISI SHOO;Lo;0;L;;;;;N;;;;; -18EC;CANADIAN SYLLABICS SAYISI HOO;Lo;0;L;;;;;N;;;;; -18ED;CANADIAN SYLLABICS CARRIER GWU;Lo;0;L;;;;;N;;;;; -18EE;CANADIAN SYLLABICS CARRIER DENE GEE;Lo;0;L;;;;;N;;;;; -18EF;CANADIAN SYLLABICS CARRIER GAA;Lo;0;L;;;;;N;;;;; -18F0;CANADIAN SYLLABICS CARRIER GWA;Lo;0;L;;;;;N;;;;; -18F1;CANADIAN SYLLABICS SAYISI JUU;Lo;0;L;;;;;N;;;;; -18F2;CANADIAN SYLLABICS CARRIER JWA;Lo;0;L;;;;;N;;;;; -18F3;CANADIAN SYLLABICS BEAVER DENE L;Lo;0;L;;;;;N;;;;; -18F4;CANADIAN SYLLABICS BEAVER DENE R;Lo;0;L;;;;;N;;;;; -18F5;CANADIAN SYLLABICS CARRIER DENTAL S;Lo;0;L;;;;;N;;;;; -1900;LIMBU VOWEL-CARRIER LETTER;Lo;0;L;;;;;N;;;;; -1901;LIMBU LETTER KA;Lo;0;L;;;;;N;;;;; -1902;LIMBU LETTER KHA;Lo;0;L;;;;;N;;;;; -1903;LIMBU LETTER GA;Lo;0;L;;;;;N;;;;; -1904;LIMBU LETTER GHA;Lo;0;L;;;;;N;;;;; -1905;LIMBU LETTER NGA;Lo;0;L;;;;;N;;;;; -1906;LIMBU LETTER CA;Lo;0;L;;;;;N;;;;; -1907;LIMBU LETTER CHA;Lo;0;L;;;;;N;;;;; -1908;LIMBU LETTER JA;Lo;0;L;;;;;N;;;;; -1909;LIMBU LETTER JHA;Lo;0;L;;;;;N;;;;; -190A;LIMBU LETTER YAN;Lo;0;L;;;;;N;;;;; -190B;LIMBU LETTER TA;Lo;0;L;;;;;N;;;;; -190C;LIMBU LETTER THA;Lo;0;L;;;;;N;;;;; -190D;LIMBU LETTER DA;Lo;0;L;;;;;N;;;;; -190E;LIMBU LETTER DHA;Lo;0;L;;;;;N;;;;; -190F;LIMBU LETTER NA;Lo;0;L;;;;;N;;;;; -1910;LIMBU LETTER PA;Lo;0;L;;;;;N;;;;; -1911;LIMBU LETTER PHA;Lo;0;L;;;;;N;;;;; -1912;LIMBU LETTER BA;Lo;0;L;;;;;N;;;;; -1913;LIMBU LETTER BHA;Lo;0;L;;;;;N;;;;; -1914;LIMBU LETTER MA;Lo;0;L;;;;;N;;;;; -1915;LIMBU LETTER YA;Lo;0;L;;;;;N;;;;; -1916;LIMBU LETTER RA;Lo;0;L;;;;;N;;;;; -1917;LIMBU LETTER LA;Lo;0;L;;;;;N;;;;; -1918;LIMBU LETTER WA;Lo;0;L;;;;;N;;;;; -1919;LIMBU LETTER SHA;Lo;0;L;;;;;N;;;;; -191A;LIMBU LETTER SSA;Lo;0;L;;;;;N;;;;; -191B;LIMBU LETTER SA;Lo;0;L;;;;;N;;;;; -191C;LIMBU LETTER HA;Lo;0;L;;;;;N;;;;; -1920;LIMBU VOWEL SIGN A;Mn;0;NSM;;;;;N;;;;; -1921;LIMBU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -1922;LIMBU VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -1923;LIMBU VOWEL SIGN EE;Mc;0;L;;;;;N;;;;; -1924;LIMBU VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; -1925;LIMBU VOWEL SIGN OO;Mc;0;L;;;;;N;;;;; -1926;LIMBU VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; -1927;LIMBU VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; -1928;LIMBU VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;; -1929;LIMBU SUBJOINED LETTER YA;Mc;0;L;;;;;N;;;;; -192A;LIMBU SUBJOINED LETTER RA;Mc;0;L;;;;;N;;;;; -192B;LIMBU SUBJOINED LETTER WA;Mc;0;L;;;;;N;;;;; -1930;LIMBU SMALL LETTER KA;Mc;0;L;;;;;N;;;;; -1931;LIMBU SMALL LETTER NGA;Mc;0;L;;;;;N;;;;; -1932;LIMBU SMALL LETTER ANUSVARA;Mn;0;NSM;;;;;N;;;;; -1933;LIMBU SMALL LETTER TA;Mc;0;L;;;;;N;;;;; -1934;LIMBU SMALL LETTER NA;Mc;0;L;;;;;N;;;;; -1935;LIMBU SMALL LETTER PA;Mc;0;L;;;;;N;;;;; -1936;LIMBU SMALL LETTER MA;Mc;0;L;;;;;N;;;;; -1937;LIMBU SMALL LETTER RA;Mc;0;L;;;;;N;;;;; -1938;LIMBU SMALL LETTER LA;Mc;0;L;;;;;N;;;;; -1939;LIMBU SIGN MUKPHRENG;Mn;222;NSM;;;;;N;;;;; -193A;LIMBU SIGN KEMPHRENG;Mn;230;NSM;;;;;N;;;;; -193B;LIMBU SIGN SA-I;Mn;220;NSM;;;;;N;;;;; -1940;LIMBU SIGN LOO;So;0;ON;;;;;N;;;;; -1944;LIMBU EXCLAMATION MARK;Po;0;ON;;;;;N;;;;; -1945;LIMBU QUESTION MARK;Po;0;ON;;;;;N;;;;; -1946;LIMBU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -1947;LIMBU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -1948;LIMBU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -1949;LIMBU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -194A;LIMBU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -194B;LIMBU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -194C;LIMBU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -194D;LIMBU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -194E;LIMBU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -194F;LIMBU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -1950;TAI LE LETTER KA;Lo;0;L;;;;;N;;;;; -1951;TAI LE LETTER XA;Lo;0;L;;;;;N;;;;; -1952;TAI LE LETTER NGA;Lo;0;L;;;;;N;;;;; -1953;TAI LE LETTER TSA;Lo;0;L;;;;;N;;;;; -1954;TAI LE LETTER SA;Lo;0;L;;;;;N;;;;; -1955;TAI LE LETTER YA;Lo;0;L;;;;;N;;;;; -1956;TAI LE LETTER TA;Lo;0;L;;;;;N;;;;; -1957;TAI LE LETTER THA;Lo;0;L;;;;;N;;;;; -1958;TAI LE LETTER LA;Lo;0;L;;;;;N;;;;; -1959;TAI LE LETTER PA;Lo;0;L;;;;;N;;;;; -195A;TAI LE LETTER PHA;Lo;0;L;;;;;N;;;;; -195B;TAI LE LETTER MA;Lo;0;L;;;;;N;;;;; -195C;TAI LE LETTER FA;Lo;0;L;;;;;N;;;;; -195D;TAI LE LETTER VA;Lo;0;L;;;;;N;;;;; -195E;TAI LE LETTER HA;Lo;0;L;;;;;N;;;;; -195F;TAI LE LETTER QA;Lo;0;L;;;;;N;;;;; -1960;TAI LE LETTER KHA;Lo;0;L;;;;;N;;;;; -1961;TAI LE LETTER TSHA;Lo;0;L;;;;;N;;;;; -1962;TAI LE LETTER NA;Lo;0;L;;;;;N;;;;; -1963;TAI LE LETTER A;Lo;0;L;;;;;N;;;;; -1964;TAI LE LETTER I;Lo;0;L;;;;;N;;;;; -1965;TAI LE LETTER EE;Lo;0;L;;;;;N;;;;; -1966;TAI LE LETTER EH;Lo;0;L;;;;;N;;;;; -1967;TAI LE LETTER U;Lo;0;L;;;;;N;;;;; -1968;TAI LE LETTER OO;Lo;0;L;;;;;N;;;;; -1969;TAI LE LETTER O;Lo;0;L;;;;;N;;;;; -196A;TAI LE LETTER UE;Lo;0;L;;;;;N;;;;; -196B;TAI LE LETTER E;Lo;0;L;;;;;N;;;;; -196C;TAI LE LETTER AUE;Lo;0;L;;;;;N;;;;; -196D;TAI LE LETTER AI;Lo;0;L;;;;;N;;;;; -1970;TAI LE LETTER TONE-2;Lo;0;L;;;;;N;;;;; -1971;TAI LE LETTER TONE-3;Lo;0;L;;;;;N;;;;; -1972;TAI LE LETTER TONE-4;Lo;0;L;;;;;N;;;;; -1973;TAI LE LETTER TONE-5;Lo;0;L;;;;;N;;;;; -1974;TAI LE LETTER TONE-6;Lo;0;L;;;;;N;;;;; -1980;NEW TAI LUE LETTER HIGH QA;Lo;0;L;;;;;N;;;;; -1981;NEW TAI LUE LETTER LOW QA;Lo;0;L;;;;;N;;;;; -1982;NEW TAI LUE LETTER HIGH KA;Lo;0;L;;;;;N;;;;; -1983;NEW TAI LUE LETTER HIGH XA;Lo;0;L;;;;;N;;;;; -1984;NEW TAI LUE LETTER HIGH NGA;Lo;0;L;;;;;N;;;;; -1985;NEW TAI LUE LETTER LOW KA;Lo;0;L;;;;;N;;;;; -1986;NEW TAI LUE LETTER LOW XA;Lo;0;L;;;;;N;;;;; -1987;NEW TAI LUE LETTER LOW NGA;Lo;0;L;;;;;N;;;;; -1988;NEW TAI LUE LETTER HIGH TSA;Lo;0;L;;;;;N;;;;; -1989;NEW TAI LUE LETTER HIGH SA;Lo;0;L;;;;;N;;;;; -198A;NEW TAI LUE LETTER HIGH YA;Lo;0;L;;;;;N;;;;; -198B;NEW TAI LUE LETTER LOW TSA;Lo;0;L;;;;;N;;;;; -198C;NEW TAI LUE LETTER LOW SA;Lo;0;L;;;;;N;;;;; -198D;NEW TAI LUE LETTER LOW YA;Lo;0;L;;;;;N;;;;; -198E;NEW TAI LUE LETTER HIGH TA;Lo;0;L;;;;;N;;;;; -198F;NEW TAI LUE LETTER HIGH THA;Lo;0;L;;;;;N;;;;; -1990;NEW TAI LUE LETTER HIGH NA;Lo;0;L;;;;;N;;;;; -1991;NEW TAI LUE LETTER LOW TA;Lo;0;L;;;;;N;;;;; -1992;NEW TAI LUE LETTER LOW THA;Lo;0;L;;;;;N;;;;; -1993;NEW TAI LUE LETTER LOW NA;Lo;0;L;;;;;N;;;;; -1994;NEW TAI LUE LETTER HIGH PA;Lo;0;L;;;;;N;;;;; -1995;NEW TAI LUE LETTER HIGH PHA;Lo;0;L;;;;;N;;;;; -1996;NEW TAI LUE LETTER HIGH MA;Lo;0;L;;;;;N;;;;; -1997;NEW TAI LUE LETTER LOW PA;Lo;0;L;;;;;N;;;;; -1998;NEW TAI LUE LETTER LOW PHA;Lo;0;L;;;;;N;;;;; -1999;NEW TAI LUE LETTER LOW MA;Lo;0;L;;;;;N;;;;; -199A;NEW TAI LUE LETTER HIGH FA;Lo;0;L;;;;;N;;;;; -199B;NEW TAI LUE LETTER HIGH VA;Lo;0;L;;;;;N;;;;; -199C;NEW TAI LUE LETTER HIGH LA;Lo;0;L;;;;;N;;;;; -199D;NEW TAI LUE LETTER LOW FA;Lo;0;L;;;;;N;;;;; -199E;NEW TAI LUE LETTER LOW VA;Lo;0;L;;;;;N;;;;; -199F;NEW TAI LUE LETTER LOW LA;Lo;0;L;;;;;N;;;;; -19A0;NEW TAI LUE LETTER HIGH HA;Lo;0;L;;;;;N;;;;; -19A1;NEW TAI LUE LETTER HIGH DA;Lo;0;L;;;;;N;;;;; -19A2;NEW TAI LUE LETTER HIGH BA;Lo;0;L;;;;;N;;;;; -19A3;NEW TAI LUE LETTER LOW HA;Lo;0;L;;;;;N;;;;; -19A4;NEW TAI LUE LETTER LOW DA;Lo;0;L;;;;;N;;;;; -19A5;NEW TAI LUE LETTER LOW BA;Lo;0;L;;;;;N;;;;; -19A6;NEW TAI LUE LETTER HIGH KVA;Lo;0;L;;;;;N;;;;; -19A7;NEW TAI LUE LETTER HIGH XVA;Lo;0;L;;;;;N;;;;; -19A8;NEW TAI LUE LETTER LOW KVA;Lo;0;L;;;;;N;;;;; -19A9;NEW TAI LUE LETTER LOW XVA;Lo;0;L;;;;;N;;;;; -19AA;NEW TAI LUE LETTER HIGH SUA;Lo;0;L;;;;;N;;;;; -19AB;NEW TAI LUE LETTER LOW SUA;Lo;0;L;;;;;N;;;;; -19B0;NEW TAI LUE VOWEL SIGN VOWEL SHORTENER;Mc;0;L;;;;;N;;;;; -19B1;NEW TAI LUE VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -19B2;NEW TAI LUE VOWEL SIGN II;Mc;0;L;;;;;N;;;;; -19B3;NEW TAI LUE VOWEL SIGN U;Mc;0;L;;;;;N;;;;; -19B4;NEW TAI LUE VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; -19B5;NEW TAI LUE VOWEL SIGN E;Mc;0;L;;;;;N;;;;; -19B6;NEW TAI LUE VOWEL SIGN AE;Mc;0;L;;;;;N;;;;; -19B7;NEW TAI LUE VOWEL SIGN O;Mc;0;L;;;;;N;;;;; -19B8;NEW TAI LUE VOWEL SIGN OA;Mc;0;L;;;;;N;;;;; -19B9;NEW TAI LUE VOWEL SIGN UE;Mc;0;L;;;;;N;;;;; -19BA;NEW TAI LUE VOWEL SIGN AY;Mc;0;L;;;;;N;;;;; -19BB;NEW TAI LUE VOWEL SIGN AAY;Mc;0;L;;;;;N;;;;; -19BC;NEW TAI LUE VOWEL SIGN UY;Mc;0;L;;;;;N;;;;; -19BD;NEW TAI LUE VOWEL SIGN OY;Mc;0;L;;;;;N;;;;; -19BE;NEW TAI LUE VOWEL SIGN OAY;Mc;0;L;;;;;N;;;;; -19BF;NEW TAI LUE VOWEL SIGN UEY;Mc;0;L;;;;;N;;;;; -19C0;NEW TAI LUE VOWEL SIGN IY;Mc;0;L;;;;;N;;;;; -19C1;NEW TAI LUE LETTER FINAL V;Lo;0;L;;;;;N;;;;; -19C2;NEW TAI LUE LETTER FINAL NG;Lo;0;L;;;;;N;;;;; -19C3;NEW TAI LUE LETTER FINAL N;Lo;0;L;;;;;N;;;;; -19C4;NEW TAI LUE LETTER FINAL M;Lo;0;L;;;;;N;;;;; -19C5;NEW TAI LUE LETTER FINAL K;Lo;0;L;;;;;N;;;;; -19C6;NEW TAI LUE LETTER FINAL D;Lo;0;L;;;;;N;;;;; -19C7;NEW TAI LUE LETTER FINAL B;Lo;0;L;;;;;N;;;;; -19C8;NEW TAI LUE TONE MARK-1;Mc;0;L;;;;;N;;;;; -19C9;NEW TAI LUE TONE MARK-2;Mc;0;L;;;;;N;;;;; -19D0;NEW TAI LUE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -19D1;NEW TAI LUE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -19D2;NEW TAI LUE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -19D3;NEW TAI LUE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -19D4;NEW TAI LUE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -19D5;NEW TAI LUE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -19D6;NEW TAI LUE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -19D7;NEW TAI LUE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -19D8;NEW TAI LUE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -19D9;NEW TAI LUE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -19DA;NEW TAI LUE THAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -19DE;NEW TAI LUE SIGN LAE;Po;0;ON;;;;;N;;;;; -19DF;NEW TAI LUE SIGN LAEV;Po;0;ON;;;;;N;;;;; -19E0;KHMER SYMBOL PATHAMASAT;So;0;ON;;;;;N;;;;; -19E1;KHMER SYMBOL MUOY KOET;So;0;ON;;;;;N;;;;; -19E2;KHMER SYMBOL PII KOET;So;0;ON;;;;;N;;;;; -19E3;KHMER SYMBOL BEI KOET;So;0;ON;;;;;N;;;;; -19E4;KHMER SYMBOL BUON KOET;So;0;ON;;;;;N;;;;; -19E5;KHMER SYMBOL PRAM KOET;So;0;ON;;;;;N;;;;; -19E6;KHMER SYMBOL PRAM-MUOY KOET;So;0;ON;;;;;N;;;;; -19E7;KHMER SYMBOL PRAM-PII KOET;So;0;ON;;;;;N;;;;; -19E8;KHMER SYMBOL PRAM-BEI KOET;So;0;ON;;;;;N;;;;; -19E9;KHMER SYMBOL PRAM-BUON KOET;So;0;ON;;;;;N;;;;; -19EA;KHMER SYMBOL DAP KOET;So;0;ON;;;;;N;;;;; -19EB;KHMER SYMBOL DAP-MUOY KOET;So;0;ON;;;;;N;;;;; -19EC;KHMER SYMBOL DAP-PII KOET;So;0;ON;;;;;N;;;;; -19ED;KHMER SYMBOL DAP-BEI KOET;So;0;ON;;;;;N;;;;; -19EE;KHMER SYMBOL DAP-BUON KOET;So;0;ON;;;;;N;;;;; -19EF;KHMER SYMBOL DAP-PRAM KOET;So;0;ON;;;;;N;;;;; -19F0;KHMER SYMBOL TUTEYASAT;So;0;ON;;;;;N;;;;; -19F1;KHMER SYMBOL MUOY ROC;So;0;ON;;;;;N;;;;; -19F2;KHMER SYMBOL PII ROC;So;0;ON;;;;;N;;;;; -19F3;KHMER SYMBOL BEI ROC;So;0;ON;;;;;N;;;;; -19F4;KHMER SYMBOL BUON ROC;So;0;ON;;;;;N;;;;; -19F5;KHMER SYMBOL PRAM ROC;So;0;ON;;;;;N;;;;; -19F6;KHMER SYMBOL PRAM-MUOY ROC;So;0;ON;;;;;N;;;;; -19F7;KHMER SYMBOL PRAM-PII ROC;So;0;ON;;;;;N;;;;; -19F8;KHMER SYMBOL PRAM-BEI ROC;So;0;ON;;;;;N;;;;; -19F9;KHMER SYMBOL PRAM-BUON ROC;So;0;ON;;;;;N;;;;; -19FA;KHMER SYMBOL DAP ROC;So;0;ON;;;;;N;;;;; -19FB;KHMER SYMBOL DAP-MUOY ROC;So;0;ON;;;;;N;;;;; -19FC;KHMER SYMBOL DAP-PII ROC;So;0;ON;;;;;N;;;;; -19FD;KHMER SYMBOL DAP-BEI ROC;So;0;ON;;;;;N;;;;; -19FE;KHMER SYMBOL DAP-BUON ROC;So;0;ON;;;;;N;;;;; -19FF;KHMER SYMBOL DAP-PRAM ROC;So;0;ON;;;;;N;;;;; -1A00;BUGINESE LETTER KA;Lo;0;L;;;;;N;;;;; -1A01;BUGINESE LETTER GA;Lo;0;L;;;;;N;;;;; -1A02;BUGINESE LETTER NGA;Lo;0;L;;;;;N;;;;; -1A03;BUGINESE LETTER NGKA;Lo;0;L;;;;;N;;;;; -1A04;BUGINESE LETTER PA;Lo;0;L;;;;;N;;;;; -1A05;BUGINESE LETTER BA;Lo;0;L;;;;;N;;;;; -1A06;BUGINESE LETTER MA;Lo;0;L;;;;;N;;;;; -1A07;BUGINESE LETTER MPA;Lo;0;L;;;;;N;;;;; -1A08;BUGINESE LETTER TA;Lo;0;L;;;;;N;;;;; -1A09;BUGINESE LETTER DA;Lo;0;L;;;;;N;;;;; -1A0A;BUGINESE LETTER NA;Lo;0;L;;;;;N;;;;; -1A0B;BUGINESE LETTER NRA;Lo;0;L;;;;;N;;;;; -1A0C;BUGINESE LETTER CA;Lo;0;L;;;;;N;;;;; -1A0D;BUGINESE LETTER JA;Lo;0;L;;;;;N;;;;; -1A0E;BUGINESE LETTER NYA;Lo;0;L;;;;;N;;;;; -1A0F;BUGINESE LETTER NYCA;Lo;0;L;;;;;N;;;;; -1A10;BUGINESE LETTER YA;Lo;0;L;;;;;N;;;;; -1A11;BUGINESE LETTER RA;Lo;0;L;;;;;N;;;;; -1A12;BUGINESE LETTER LA;Lo;0;L;;;;;N;;;;; -1A13;BUGINESE LETTER VA;Lo;0;L;;;;;N;;;;; -1A14;BUGINESE LETTER SA;Lo;0;L;;;;;N;;;;; -1A15;BUGINESE LETTER A;Lo;0;L;;;;;N;;;;; -1A16;BUGINESE LETTER HA;Lo;0;L;;;;;N;;;;; -1A17;BUGINESE VOWEL SIGN I;Mn;230;NSM;;;;;N;;;;; -1A18;BUGINESE VOWEL SIGN U;Mn;220;NSM;;;;;N;;;;; -1A19;BUGINESE VOWEL SIGN E;Mc;0;L;;;;;N;;;;; -1A1A;BUGINESE VOWEL SIGN O;Mc;0;L;;;;;N;;;;; -1A1B;BUGINESE VOWEL SIGN AE;Mc;0;L;;;;;N;;;;; -1A1E;BUGINESE PALLAWA;Po;0;L;;;;;N;;;;; -1A1F;BUGINESE END OF SECTION;Po;0;L;;;;;N;;;;; -1A20;TAI THAM LETTER HIGH KA;Lo;0;L;;;;;N;;;;; -1A21;TAI THAM LETTER HIGH KHA;Lo;0;L;;;;;N;;;;; -1A22;TAI THAM LETTER HIGH KXA;Lo;0;L;;;;;N;;;;; -1A23;TAI THAM LETTER LOW KA;Lo;0;L;;;;;N;;;;; -1A24;TAI THAM LETTER LOW KXA;Lo;0;L;;;;;N;;;;; -1A25;TAI THAM LETTER LOW KHA;Lo;0;L;;;;;N;;;;; -1A26;TAI THAM LETTER NGA;Lo;0;L;;;;;N;;;;; -1A27;TAI THAM LETTER HIGH CA;Lo;0;L;;;;;N;;;;; -1A28;TAI THAM LETTER HIGH CHA;Lo;0;L;;;;;N;;;;; -1A29;TAI THAM LETTER LOW CA;Lo;0;L;;;;;N;;;;; -1A2A;TAI THAM LETTER LOW SA;Lo;0;L;;;;;N;;;;; -1A2B;TAI THAM LETTER LOW CHA;Lo;0;L;;;;;N;;;;; -1A2C;TAI THAM LETTER NYA;Lo;0;L;;;;;N;;;;; -1A2D;TAI THAM LETTER RATA;Lo;0;L;;;;;N;;;;; -1A2E;TAI THAM LETTER HIGH RATHA;Lo;0;L;;;;;N;;;;; -1A2F;TAI THAM LETTER DA;Lo;0;L;;;;;N;;;;; -1A30;TAI THAM LETTER LOW RATHA;Lo;0;L;;;;;N;;;;; -1A31;TAI THAM LETTER RANA;Lo;0;L;;;;;N;;;;; -1A32;TAI THAM LETTER HIGH TA;Lo;0;L;;;;;N;;;;; -1A33;TAI THAM LETTER HIGH THA;Lo;0;L;;;;;N;;;;; -1A34;TAI THAM LETTER LOW TA;Lo;0;L;;;;;N;;;;; -1A35;TAI THAM LETTER LOW THA;Lo;0;L;;;;;N;;;;; -1A36;TAI THAM LETTER NA;Lo;0;L;;;;;N;;;;; -1A37;TAI THAM LETTER BA;Lo;0;L;;;;;N;;;;; -1A38;TAI THAM LETTER HIGH PA;Lo;0;L;;;;;N;;;;; -1A39;TAI THAM LETTER HIGH PHA;Lo;0;L;;;;;N;;;;; -1A3A;TAI THAM LETTER HIGH FA;Lo;0;L;;;;;N;;;;; -1A3B;TAI THAM LETTER LOW PA;Lo;0;L;;;;;N;;;;; -1A3C;TAI THAM LETTER LOW FA;Lo;0;L;;;;;N;;;;; -1A3D;TAI THAM LETTER LOW PHA;Lo;0;L;;;;;N;;;;; -1A3E;TAI THAM LETTER MA;Lo;0;L;;;;;N;;;;; -1A3F;TAI THAM LETTER LOW YA;Lo;0;L;;;;;N;;;;; -1A40;TAI THAM LETTER HIGH YA;Lo;0;L;;;;;N;;;;; -1A41;TAI THAM LETTER RA;Lo;0;L;;;;;N;;;;; -1A42;TAI THAM LETTER RUE;Lo;0;L;;;;;N;;;;; -1A43;TAI THAM LETTER LA;Lo;0;L;;;;;N;;;;; -1A44;TAI THAM LETTER LUE;Lo;0;L;;;;;N;;;;; -1A45;TAI THAM LETTER WA;Lo;0;L;;;;;N;;;;; -1A46;TAI THAM LETTER HIGH SHA;Lo;0;L;;;;;N;;;;; -1A47;TAI THAM LETTER HIGH SSA;Lo;0;L;;;;;N;;;;; -1A48;TAI THAM LETTER HIGH SA;Lo;0;L;;;;;N;;;;; -1A49;TAI THAM LETTER HIGH HA;Lo;0;L;;;;;N;;;;; -1A4A;TAI THAM LETTER LLA;Lo;0;L;;;;;N;;;;; -1A4B;TAI THAM LETTER A;Lo;0;L;;;;;N;;;;; -1A4C;TAI THAM LETTER LOW HA;Lo;0;L;;;;;N;;;;; -1A4D;TAI THAM LETTER I;Lo;0;L;;;;;N;;;;; -1A4E;TAI THAM LETTER II;Lo;0;L;;;;;N;;;;; -1A4F;TAI THAM LETTER U;Lo;0;L;;;;;N;;;;; -1A50;TAI THAM LETTER UU;Lo;0;L;;;;;N;;;;; -1A51;TAI THAM LETTER EE;Lo;0;L;;;;;N;;;;; -1A52;TAI THAM LETTER OO;Lo;0;L;;;;;N;;;;; -1A53;TAI THAM LETTER LAE;Lo;0;L;;;;;N;;;;; -1A54;TAI THAM LETTER GREAT SA;Lo;0;L;;;;;N;;;;; -1A55;TAI THAM CONSONANT SIGN MEDIAL RA;Mc;0;L;;;;;N;;;;; -1A56;TAI THAM CONSONANT SIGN MEDIAL LA;Mn;0;NSM;;;;;N;;;;; -1A57;TAI THAM CONSONANT SIGN LA TANG LAI;Mc;0;L;;;;;N;;;;; -1A58;TAI THAM SIGN MAI KANG LAI;Mn;0;NSM;;;;;N;;;;; -1A59;TAI THAM CONSONANT SIGN FINAL NGA;Mn;0;NSM;;;;;N;;;;; -1A5A;TAI THAM CONSONANT SIGN LOW PA;Mn;0;NSM;;;;;N;;;;; -1A5B;TAI THAM CONSONANT SIGN HIGH RATHA OR LOW PA;Mn;0;NSM;;;;;N;;;;; -1A5C;TAI THAM CONSONANT SIGN MA;Mn;0;NSM;;;;;N;;;;; -1A5D;TAI THAM CONSONANT SIGN BA;Mn;0;NSM;;;;;N;;;;; -1A5E;TAI THAM CONSONANT SIGN SA;Mn;0;NSM;;;;;N;;;;; -1A60;TAI THAM SIGN SAKOT;Mn;9;NSM;;;;;N;;;;; -1A61;TAI THAM VOWEL SIGN A;Mc;0;L;;;;;N;;;;; -1A62;TAI THAM VOWEL SIGN MAI SAT;Mn;0;NSM;;;;;N;;;;; -1A63;TAI THAM VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -1A64;TAI THAM VOWEL SIGN TALL AA;Mc;0;L;;;;;N;;;;; -1A65;TAI THAM VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -1A66;TAI THAM VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; -1A67;TAI THAM VOWEL SIGN UE;Mn;0;NSM;;;;;N;;;;; -1A68;TAI THAM VOWEL SIGN UUE;Mn;0;NSM;;;;;N;;;;; -1A69;TAI THAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -1A6A;TAI THAM VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; -1A6B;TAI THAM VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;; -1A6C;TAI THAM VOWEL SIGN OA BELOW;Mn;0;NSM;;;;;N;;;;; -1A6D;TAI THAM VOWEL SIGN OY;Mc;0;L;;;;;N;;;;; -1A6E;TAI THAM VOWEL SIGN E;Mc;0;L;;;;;N;;;;; -1A6F;TAI THAM VOWEL SIGN AE;Mc;0;L;;;;;N;;;;; -1A70;TAI THAM VOWEL SIGN OO;Mc;0;L;;;;;N;;;;; -1A71;TAI THAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; -1A72;TAI THAM VOWEL SIGN THAM AI;Mc;0;L;;;;;N;;;;; -1A73;TAI THAM VOWEL SIGN OA ABOVE;Mn;0;NSM;;;;;N;;;;; -1A74;TAI THAM SIGN MAI KANG;Mn;0;NSM;;;;;N;;;;; -1A75;TAI THAM SIGN TONE-1;Mn;230;NSM;;;;;N;;;;; -1A76;TAI THAM SIGN TONE-2;Mn;230;NSM;;;;;N;;;;; -1A77;TAI THAM SIGN KHUEN TONE-3;Mn;230;NSM;;;;;N;;;;; -1A78;TAI THAM SIGN KHUEN TONE-4;Mn;230;NSM;;;;;N;;;;; -1A79;TAI THAM SIGN KHUEN TONE-5;Mn;230;NSM;;;;;N;;;;; -1A7A;TAI THAM SIGN RA HAAM;Mn;230;NSM;;;;;N;;;;; -1A7B;TAI THAM SIGN MAI SAM;Mn;230;NSM;;;;;N;;;;; -1A7C;TAI THAM SIGN KHUEN-LUE KARAN;Mn;230;NSM;;;;;N;;;;; -1A7F;TAI THAM COMBINING CRYPTOGRAMMIC DOT;Mn;220;NSM;;;;;N;;;;; -1A80;TAI THAM HORA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -1A81;TAI THAM HORA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -1A82;TAI THAM HORA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -1A83;TAI THAM HORA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -1A84;TAI THAM HORA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -1A85;TAI THAM HORA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -1A86;TAI THAM HORA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -1A87;TAI THAM HORA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -1A88;TAI THAM HORA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -1A89;TAI THAM HORA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -1A90;TAI THAM THAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -1A91;TAI THAM THAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -1A92;TAI THAM THAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -1A93;TAI THAM THAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -1A94;TAI THAM THAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -1A95;TAI THAM THAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -1A96;TAI THAM THAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -1A97;TAI THAM THAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -1A98;TAI THAM THAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -1A99;TAI THAM THAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -1AA0;TAI THAM SIGN WIANG;Po;0;L;;;;;N;;;;; -1AA1;TAI THAM SIGN WIANGWAAK;Po;0;L;;;;;N;;;;; -1AA2;TAI THAM SIGN SAWAN;Po;0;L;;;;;N;;;;; -1AA3;TAI THAM SIGN KEOW;Po;0;L;;;;;N;;;;; -1AA4;TAI THAM SIGN HOY;Po;0;L;;;;;N;;;;; -1AA5;TAI THAM SIGN DOKMAI;Po;0;L;;;;;N;;;;; -1AA6;TAI THAM SIGN REVERSED ROTATED RANA;Po;0;L;;;;;N;;;;; -1AA7;TAI THAM SIGN MAI YAMOK;Lm;0;L;;;;;N;;;;; -1AA8;TAI THAM SIGN KAAN;Po;0;L;;;;;N;;;;; -1AA9;TAI THAM SIGN KAANKUU;Po;0;L;;;;;N;;;;; -1AAA;TAI THAM SIGN SATKAAN;Po;0;L;;;;;N;;;;; -1AAB;TAI THAM SIGN SATKAANKUU;Po;0;L;;;;;N;;;;; -1AAC;TAI THAM SIGN HANG;Po;0;L;;;;;N;;;;; -1AAD;TAI THAM SIGN CAANG;Po;0;L;;;;;N;;;;; -1B00;BALINESE SIGN ULU RICEM;Mn;0;NSM;;;;;N;;;;; -1B01;BALINESE SIGN ULU CANDRA;Mn;0;NSM;;;;;N;;;;; -1B02;BALINESE SIGN CECEK;Mn;0;NSM;;;;;N;;;;; -1B03;BALINESE SIGN SURANG;Mn;0;NSM;;;;;N;;;;; -1B04;BALINESE SIGN BISAH;Mc;0;L;;;;;N;;;;; -1B05;BALINESE LETTER AKARA;Lo;0;L;;;;;N;;;;; -1B06;BALINESE LETTER AKARA TEDUNG;Lo;0;L;1B05 1B35;;;;N;;;;; -1B07;BALINESE LETTER IKARA;Lo;0;L;;;;;N;;;;; -1B08;BALINESE LETTER IKARA TEDUNG;Lo;0;L;1B07 1B35;;;;N;;;;; -1B09;BALINESE LETTER UKARA;Lo;0;L;;;;;N;;;;; -1B0A;BALINESE LETTER UKARA TEDUNG;Lo;0;L;1B09 1B35;;;;N;;;;; -1B0B;BALINESE LETTER RA REPA;Lo;0;L;;;;;N;;;;; -1B0C;BALINESE LETTER RA REPA TEDUNG;Lo;0;L;1B0B 1B35;;;;N;;;;; -1B0D;BALINESE LETTER LA LENGA;Lo;0;L;;;;;N;;;;; -1B0E;BALINESE LETTER LA LENGA TEDUNG;Lo;0;L;1B0D 1B35;;;;N;;;;; -1B0F;BALINESE LETTER EKARA;Lo;0;L;;;;;N;;;;; -1B10;BALINESE LETTER AIKARA;Lo;0;L;;;;;N;;;;; -1B11;BALINESE LETTER OKARA;Lo;0;L;;;;;N;;;;; -1B12;BALINESE LETTER OKARA TEDUNG;Lo;0;L;1B11 1B35;;;;N;;;;; -1B13;BALINESE LETTER KA;Lo;0;L;;;;;N;;;;; -1B14;BALINESE LETTER KA MAHAPRANA;Lo;0;L;;;;;N;;;;; -1B15;BALINESE LETTER GA;Lo;0;L;;;;;N;;;;; -1B16;BALINESE LETTER GA GORA;Lo;0;L;;;;;N;;;;; -1B17;BALINESE LETTER NGA;Lo;0;L;;;;;N;;;;; -1B18;BALINESE LETTER CA;Lo;0;L;;;;;N;;;;; -1B19;BALINESE LETTER CA LACA;Lo;0;L;;;;;N;;;;; -1B1A;BALINESE LETTER JA;Lo;0;L;;;;;N;;;;; -1B1B;BALINESE LETTER JA JERA;Lo;0;L;;;;;N;;;;; -1B1C;BALINESE LETTER NYA;Lo;0;L;;;;;N;;;;; -1B1D;BALINESE LETTER TA LATIK;Lo;0;L;;;;;N;;;;; -1B1E;BALINESE LETTER TA MURDA MAHAPRANA;Lo;0;L;;;;;N;;;;; -1B1F;BALINESE LETTER DA MURDA ALPAPRANA;Lo;0;L;;;;;N;;;;; -1B20;BALINESE LETTER DA MURDA MAHAPRANA;Lo;0;L;;;;;N;;;;; -1B21;BALINESE LETTER NA RAMBAT;Lo;0;L;;;;;N;;;;; -1B22;BALINESE LETTER TA;Lo;0;L;;;;;N;;;;; -1B23;BALINESE LETTER TA TAWA;Lo;0;L;;;;;N;;;;; -1B24;BALINESE LETTER DA;Lo;0;L;;;;;N;;;;; -1B25;BALINESE LETTER DA MADU;Lo;0;L;;;;;N;;;;; -1B26;BALINESE LETTER NA;Lo;0;L;;;;;N;;;;; -1B27;BALINESE LETTER PA;Lo;0;L;;;;;N;;;;; -1B28;BALINESE LETTER PA KAPAL;Lo;0;L;;;;;N;;;;; -1B29;BALINESE LETTER BA;Lo;0;L;;;;;N;;;;; -1B2A;BALINESE LETTER BA KEMBANG;Lo;0;L;;;;;N;;;;; -1B2B;BALINESE LETTER MA;Lo;0;L;;;;;N;;;;; -1B2C;BALINESE LETTER YA;Lo;0;L;;;;;N;;;;; -1B2D;BALINESE LETTER RA;Lo;0;L;;;;;N;;;;; -1B2E;BALINESE LETTER LA;Lo;0;L;;;;;N;;;;; -1B2F;BALINESE LETTER WA;Lo;0;L;;;;;N;;;;; -1B30;BALINESE LETTER SA SAGA;Lo;0;L;;;;;N;;;;; -1B31;BALINESE LETTER SA SAPA;Lo;0;L;;;;;N;;;;; -1B32;BALINESE LETTER SA;Lo;0;L;;;;;N;;;;; -1B33;BALINESE LETTER HA;Lo;0;L;;;;;N;;;;; -1B34;BALINESE SIGN REREKAN;Mn;7;NSM;;;;;N;;;;; -1B35;BALINESE VOWEL SIGN TEDUNG;Mc;0;L;;;;;N;;;;; -1B36;BALINESE VOWEL SIGN ULU;Mn;0;NSM;;;;;N;;;;; -1B37;BALINESE VOWEL SIGN ULU SARI;Mn;0;NSM;;;;;N;;;;; -1B38;BALINESE VOWEL SIGN SUKU;Mn;0;NSM;;;;;N;;;;; -1B39;BALINESE VOWEL SIGN SUKU ILUT;Mn;0;NSM;;;;;N;;;;; -1B3A;BALINESE VOWEL SIGN RA REPA;Mn;0;NSM;;;;;N;;;;; -1B3B;BALINESE VOWEL SIGN RA REPA TEDUNG;Mc;0;L;1B3A 1B35;;;;N;;;;; -1B3C;BALINESE VOWEL SIGN LA LENGA;Mn;0;NSM;;;;;N;;;;; -1B3D;BALINESE VOWEL SIGN LA LENGA TEDUNG;Mc;0;L;1B3C 1B35;;;;N;;;;; -1B3E;BALINESE VOWEL SIGN TALING;Mc;0;L;;;;;N;;;;; -1B3F;BALINESE VOWEL SIGN TALING REPA;Mc;0;L;;;;;N;;;;; -1B40;BALINESE VOWEL SIGN TALING TEDUNG;Mc;0;L;1B3E 1B35;;;;N;;;;; -1B41;BALINESE VOWEL SIGN TALING REPA TEDUNG;Mc;0;L;1B3F 1B35;;;;N;;;;; -1B42;BALINESE VOWEL SIGN PEPET;Mn;0;NSM;;;;;N;;;;; -1B43;BALINESE VOWEL SIGN PEPET TEDUNG;Mc;0;L;1B42 1B35;;;;N;;;;; -1B44;BALINESE ADEG ADEG;Mc;9;L;;;;;N;;;;; -1B45;BALINESE LETTER KAF SASAK;Lo;0;L;;;;;N;;;;; -1B46;BALINESE LETTER KHOT SASAK;Lo;0;L;;;;;N;;;;; -1B47;BALINESE LETTER TZIR SASAK;Lo;0;L;;;;;N;;;;; -1B48;BALINESE LETTER EF SASAK;Lo;0;L;;;;;N;;;;; -1B49;BALINESE LETTER VE SASAK;Lo;0;L;;;;;N;;;;; -1B4A;BALINESE LETTER ZAL SASAK;Lo;0;L;;;;;N;;;;; -1B4B;BALINESE LETTER ASYURA SASAK;Lo;0;L;;;;;N;;;;; -1B50;BALINESE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -1B51;BALINESE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -1B52;BALINESE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -1B53;BALINESE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -1B54;BALINESE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -1B55;BALINESE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -1B56;BALINESE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -1B57;BALINESE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -1B58;BALINESE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -1B59;BALINESE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -1B5A;BALINESE PANTI;Po;0;L;;;;;N;;;;; -1B5B;BALINESE PAMADA;Po;0;L;;;;;N;;;;; -1B5C;BALINESE WINDU;Po;0;L;;;;;N;;;;; -1B5D;BALINESE CARIK PAMUNGKAH;Po;0;L;;;;;N;;;;; -1B5E;BALINESE CARIK SIKI;Po;0;L;;;;;N;;;;; -1B5F;BALINESE CARIK PAREREN;Po;0;L;;;;;N;;;;; -1B60;BALINESE PAMENENG;Po;0;L;;;;;N;;;;; -1B61;BALINESE MUSICAL SYMBOL DONG;So;0;L;;;;;N;;;;; -1B62;BALINESE MUSICAL SYMBOL DENG;So;0;L;;;;;N;;;;; -1B63;BALINESE MUSICAL SYMBOL DUNG;So;0;L;;;;;N;;;;; -1B64;BALINESE MUSICAL SYMBOL DANG;So;0;L;;;;;N;;;;; -1B65;BALINESE MUSICAL SYMBOL DANG SURANG;So;0;L;;;;;N;;;;; -1B66;BALINESE MUSICAL SYMBOL DING;So;0;L;;;;;N;;;;; -1B67;BALINESE MUSICAL SYMBOL DAENG;So;0;L;;;;;N;;;;; -1B68;BALINESE MUSICAL SYMBOL DEUNG;So;0;L;;;;;N;;;;; -1B69;BALINESE MUSICAL SYMBOL DAING;So;0;L;;;;;N;;;;; -1B6A;BALINESE MUSICAL SYMBOL DANG GEDE;So;0;L;;;;;N;;;;; -1B6B;BALINESE MUSICAL SYMBOL COMBINING TEGEH;Mn;230;NSM;;;;;N;;;;; -1B6C;BALINESE MUSICAL SYMBOL COMBINING ENDEP;Mn;220;NSM;;;;;N;;;;; -1B6D;BALINESE MUSICAL SYMBOL COMBINING KEMPUL;Mn;230;NSM;;;;;N;;;;; -1B6E;BALINESE MUSICAL SYMBOL COMBINING KEMPLI;Mn;230;NSM;;;;;N;;;;; -1B6F;BALINESE MUSICAL SYMBOL COMBINING JEGOGAN;Mn;230;NSM;;;;;N;;;;; -1B70;BALINESE MUSICAL SYMBOL COMBINING KEMPUL WITH JEGOGAN;Mn;230;NSM;;;;;N;;;;; -1B71;BALINESE MUSICAL SYMBOL COMBINING KEMPLI WITH JEGOGAN;Mn;230;NSM;;;;;N;;;;; -1B72;BALINESE MUSICAL SYMBOL COMBINING BENDE;Mn;230;NSM;;;;;N;;;;; -1B73;BALINESE MUSICAL SYMBOL COMBINING GONG;Mn;230;NSM;;;;;N;;;;; -1B74;BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG;So;0;L;;;;;N;;;;; -1B75;BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DAG;So;0;L;;;;;N;;;;; -1B76;BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TUK;So;0;L;;;;;N;;;;; -1B77;BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TAK;So;0;L;;;;;N;;;;; -1B78;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PANG;So;0;L;;;;;N;;;;; -1B79;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PUNG;So;0;L;;;;;N;;;;; -1B7A;BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLAK;So;0;L;;;;;N;;;;; -1B7B;BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLUK;So;0;L;;;;;N;;;;; -1B7C;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING;So;0;L;;;;;N;;;;; -1B80;SUNDANESE SIGN PANYECEK;Mn;0;NSM;;;;;N;;;;; -1B81;SUNDANESE SIGN PANGLAYAR;Mn;0;NSM;;;;;N;;;;; -1B82;SUNDANESE SIGN PANGWISAD;Mc;0;L;;;;;N;;;;; -1B83;SUNDANESE LETTER A;Lo;0;L;;;;;N;;;;; -1B84;SUNDANESE LETTER I;Lo;0;L;;;;;N;;;;; -1B85;SUNDANESE LETTER U;Lo;0;L;;;;;N;;;;; -1B86;SUNDANESE LETTER AE;Lo;0;L;;;;;N;;;;; -1B87;SUNDANESE LETTER O;Lo;0;L;;;;;N;;;;; -1B88;SUNDANESE LETTER E;Lo;0;L;;;;;N;;;;; -1B89;SUNDANESE LETTER EU;Lo;0;L;;;;;N;;;;; -1B8A;SUNDANESE LETTER KA;Lo;0;L;;;;;N;;;;; -1B8B;SUNDANESE LETTER QA;Lo;0;L;;;;;N;;;;; -1B8C;SUNDANESE LETTER GA;Lo;0;L;;;;;N;;;;; -1B8D;SUNDANESE LETTER NGA;Lo;0;L;;;;;N;;;;; -1B8E;SUNDANESE LETTER CA;Lo;0;L;;;;;N;;;;; -1B8F;SUNDANESE LETTER JA;Lo;0;L;;;;;N;;;;; -1B90;SUNDANESE LETTER ZA;Lo;0;L;;;;;N;;;;; -1B91;SUNDANESE LETTER NYA;Lo;0;L;;;;;N;;;;; -1B92;SUNDANESE LETTER TA;Lo;0;L;;;;;N;;;;; -1B93;SUNDANESE LETTER DA;Lo;0;L;;;;;N;;;;; -1B94;SUNDANESE LETTER NA;Lo;0;L;;;;;N;;;;; -1B95;SUNDANESE LETTER PA;Lo;0;L;;;;;N;;;;; -1B96;SUNDANESE LETTER FA;Lo;0;L;;;;;N;;;;; -1B97;SUNDANESE LETTER VA;Lo;0;L;;;;;N;;;;; -1B98;SUNDANESE LETTER BA;Lo;0;L;;;;;N;;;;; -1B99;SUNDANESE LETTER MA;Lo;0;L;;;;;N;;;;; -1B9A;SUNDANESE LETTER YA;Lo;0;L;;;;;N;;;;; -1B9B;SUNDANESE LETTER RA;Lo;0;L;;;;;N;;;;; -1B9C;SUNDANESE LETTER LA;Lo;0;L;;;;;N;;;;; -1B9D;SUNDANESE LETTER WA;Lo;0;L;;;;;N;;;;; -1B9E;SUNDANESE LETTER SA;Lo;0;L;;;;;N;;;;; -1B9F;SUNDANESE LETTER XA;Lo;0;L;;;;;N;;;;; -1BA0;SUNDANESE LETTER HA;Lo;0;L;;;;;N;;;;; -1BA1;SUNDANESE CONSONANT SIGN PAMINGKAL;Mc;0;L;;;;;N;;;;; -1BA2;SUNDANESE CONSONANT SIGN PANYAKRA;Mn;0;NSM;;;;;N;;;;; -1BA3;SUNDANESE CONSONANT SIGN PANYIKU;Mn;0;NSM;;;;;N;;;;; -1BA4;SUNDANESE VOWEL SIGN PANGHULU;Mn;0;NSM;;;;;N;;;;; -1BA5;SUNDANESE VOWEL SIGN PANYUKU;Mn;0;NSM;;;;;N;;;;; -1BA6;SUNDANESE VOWEL SIGN PANAELAENG;Mc;0;L;;;;;N;;;;; -1BA7;SUNDANESE VOWEL SIGN PANOLONG;Mc;0;L;;;;;N;;;;; -1BA8;SUNDANESE VOWEL SIGN PAMEPET;Mn;0;NSM;;;;;N;;;;; -1BA9;SUNDANESE VOWEL SIGN PANEULEUNG;Mn;0;NSM;;;;;N;;;;; -1BAA;SUNDANESE SIGN PAMAAEH;Mc;9;L;;;;;N;;;;; -1BAE;SUNDANESE LETTER KHA;Lo;0;L;;;;;N;;;;; -1BAF;SUNDANESE LETTER SYA;Lo;0;L;;;;;N;;;;; -1BB0;SUNDANESE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -1BB1;SUNDANESE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -1BB2;SUNDANESE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -1BB3;SUNDANESE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -1BB4;SUNDANESE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -1BB5;SUNDANESE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -1BB6;SUNDANESE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -1BB7;SUNDANESE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -1BB8;SUNDANESE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -1BB9;SUNDANESE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -1C00;LEPCHA LETTER KA;Lo;0;L;;;;;N;;;;; -1C01;LEPCHA LETTER KLA;Lo;0;L;;;;;N;;;;; -1C02;LEPCHA LETTER KHA;Lo;0;L;;;;;N;;;;; -1C03;LEPCHA LETTER GA;Lo;0;L;;;;;N;;;;; -1C04;LEPCHA LETTER GLA;Lo;0;L;;;;;N;;;;; -1C05;LEPCHA LETTER NGA;Lo;0;L;;;;;N;;;;; -1C06;LEPCHA LETTER CA;Lo;0;L;;;;;N;;;;; -1C07;LEPCHA LETTER CHA;Lo;0;L;;;;;N;;;;; -1C08;LEPCHA LETTER JA;Lo;0;L;;;;;N;;;;; -1C09;LEPCHA LETTER NYA;Lo;0;L;;;;;N;;;;; -1C0A;LEPCHA LETTER TA;Lo;0;L;;;;;N;;;;; -1C0B;LEPCHA LETTER THA;Lo;0;L;;;;;N;;;;; -1C0C;LEPCHA LETTER DA;Lo;0;L;;;;;N;;;;; -1C0D;LEPCHA LETTER NA;Lo;0;L;;;;;N;;;;; -1C0E;LEPCHA LETTER PA;Lo;0;L;;;;;N;;;;; -1C0F;LEPCHA LETTER PLA;Lo;0;L;;;;;N;;;;; -1C10;LEPCHA LETTER PHA;Lo;0;L;;;;;N;;;;; -1C11;LEPCHA LETTER FA;Lo;0;L;;;;;N;;;;; -1C12;LEPCHA LETTER FLA;Lo;0;L;;;;;N;;;;; -1C13;LEPCHA LETTER BA;Lo;0;L;;;;;N;;;;; -1C14;LEPCHA LETTER BLA;Lo;0;L;;;;;N;;;;; -1C15;LEPCHA LETTER MA;Lo;0;L;;;;;N;;;;; -1C16;LEPCHA LETTER MLA;Lo;0;L;;;;;N;;;;; -1C17;LEPCHA LETTER TSA;Lo;0;L;;;;;N;;;;; -1C18;LEPCHA LETTER TSHA;Lo;0;L;;;;;N;;;;; -1C19;LEPCHA LETTER DZA;Lo;0;L;;;;;N;;;;; -1C1A;LEPCHA LETTER YA;Lo;0;L;;;;;N;;;;; -1C1B;LEPCHA LETTER RA;Lo;0;L;;;;;N;;;;; -1C1C;LEPCHA LETTER LA;Lo;0;L;;;;;N;;;;; -1C1D;LEPCHA LETTER HA;Lo;0;L;;;;;N;;;;; -1C1E;LEPCHA LETTER HLA;Lo;0;L;;;;;N;;;;; -1C1F;LEPCHA LETTER VA;Lo;0;L;;;;;N;;;;; -1C20;LEPCHA LETTER SA;Lo;0;L;;;;;N;;;;; -1C21;LEPCHA LETTER SHA;Lo;0;L;;;;;N;;;;; -1C22;LEPCHA LETTER WA;Lo;0;L;;;;;N;;;;; -1C23;LEPCHA LETTER A;Lo;0;L;;;;;N;;;;; -1C24;LEPCHA SUBJOINED LETTER YA;Mc;0;L;;;;;N;;;;; -1C25;LEPCHA SUBJOINED LETTER RA;Mc;0;L;;;;;N;;;;; -1C26;LEPCHA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -1C27;LEPCHA VOWEL SIGN I;Mc;0;L;;;;;N;;;;; -1C28;LEPCHA VOWEL SIGN O;Mc;0;L;;;;;N;;;;; -1C29;LEPCHA VOWEL SIGN OO;Mc;0;L;;;;;N;;;;; -1C2A;LEPCHA VOWEL SIGN U;Mc;0;L;;;;;N;;;;; -1C2B;LEPCHA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; -1C2C;LEPCHA VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; -1C2D;LEPCHA CONSONANT SIGN K;Mn;0;NSM;;;;;N;;;;; -1C2E;LEPCHA CONSONANT SIGN M;Mn;0;NSM;;;;;N;;;;; -1C2F;LEPCHA CONSONANT SIGN L;Mn;0;NSM;;;;;N;;;;; -1C30;LEPCHA CONSONANT SIGN N;Mn;0;NSM;;;;;N;;;;; -1C31;LEPCHA CONSONANT SIGN P;Mn;0;NSM;;;;;N;;;;; -1C32;LEPCHA CONSONANT SIGN R;Mn;0;NSM;;;;;N;;;;; -1C33;LEPCHA CONSONANT SIGN T;Mn;0;NSM;;;;;N;;;;; -1C34;LEPCHA CONSONANT SIGN NYIN-DO;Mc;0;L;;;;;N;;;;; -1C35;LEPCHA CONSONANT SIGN KANG;Mc;0;L;;;;;N;;;;; -1C36;LEPCHA SIGN RAN;Mn;0;NSM;;;;;N;;;;; -1C37;LEPCHA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; -1C3B;LEPCHA PUNCTUATION TA-ROL;Po;0;L;;;;;N;;;;; -1C3C;LEPCHA PUNCTUATION NYET THYOOM TA-ROL;Po;0;L;;;;;N;;;;; -1C3D;LEPCHA PUNCTUATION CER-WA;Po;0;L;;;;;N;;;;; -1C3E;LEPCHA PUNCTUATION TSHOOK CER-WA;Po;0;L;;;;;N;;;;; -1C3F;LEPCHA PUNCTUATION TSHOOK;Po;0;L;;;;;N;;;;; -1C40;LEPCHA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -1C41;LEPCHA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -1C42;LEPCHA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -1C43;LEPCHA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -1C44;LEPCHA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -1C45;LEPCHA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -1C46;LEPCHA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -1C47;LEPCHA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -1C48;LEPCHA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -1C49;LEPCHA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -1C4D;LEPCHA LETTER TTA;Lo;0;L;;;;;N;;;;; -1C4E;LEPCHA LETTER TTHA;Lo;0;L;;;;;N;;;;; -1C4F;LEPCHA LETTER DDA;Lo;0;L;;;;;N;;;;; -1C50;OL CHIKI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -1C51;OL CHIKI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -1C52;OL CHIKI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -1C53;OL CHIKI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -1C54;OL CHIKI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -1C55;OL CHIKI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -1C56;OL CHIKI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -1C57;OL CHIKI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -1C58;OL CHIKI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -1C59;OL CHIKI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -1C5A;OL CHIKI LETTER LA;Lo;0;L;;;;;N;;;;; -1C5B;OL CHIKI LETTER AT;Lo;0;L;;;;;N;;;;; -1C5C;OL CHIKI LETTER AG;Lo;0;L;;;;;N;;;;; -1C5D;OL CHIKI LETTER ANG;Lo;0;L;;;;;N;;;;; -1C5E;OL CHIKI LETTER AL;Lo;0;L;;;;;N;;;;; -1C5F;OL CHIKI LETTER LAA;Lo;0;L;;;;;N;;;;; -1C60;OL CHIKI LETTER AAK;Lo;0;L;;;;;N;;;;; -1C61;OL CHIKI LETTER AAJ;Lo;0;L;;;;;N;;;;; -1C62;OL CHIKI LETTER AAM;Lo;0;L;;;;;N;;;;; -1C63;OL CHIKI LETTER AAW;Lo;0;L;;;;;N;;;;; -1C64;OL CHIKI LETTER LI;Lo;0;L;;;;;N;;;;; -1C65;OL CHIKI LETTER IS;Lo;0;L;;;;;N;;;;; -1C66;OL CHIKI LETTER IH;Lo;0;L;;;;;N;;;;; -1C67;OL CHIKI LETTER INY;Lo;0;L;;;;;N;;;;; -1C68;OL CHIKI LETTER IR;Lo;0;L;;;;;N;;;;; -1C69;OL CHIKI LETTER LU;Lo;0;L;;;;;N;;;;; -1C6A;OL CHIKI LETTER UC;Lo;0;L;;;;;N;;;;; -1C6B;OL CHIKI LETTER UD;Lo;0;L;;;;;N;;;;; -1C6C;OL CHIKI LETTER UNN;Lo;0;L;;;;;N;;;;; -1C6D;OL CHIKI LETTER UY;Lo;0;L;;;;;N;;;;; -1C6E;OL CHIKI LETTER LE;Lo;0;L;;;;;N;;;;; -1C6F;OL CHIKI LETTER EP;Lo;0;L;;;;;N;;;;; -1C70;OL CHIKI LETTER EDD;Lo;0;L;;;;;N;;;;; -1C71;OL CHIKI LETTER EN;Lo;0;L;;;;;N;;;;; -1C72;OL CHIKI LETTER ERR;Lo;0;L;;;;;N;;;;; -1C73;OL CHIKI LETTER LO;Lo;0;L;;;;;N;;;;; -1C74;OL CHIKI LETTER OTT;Lo;0;L;;;;;N;;;;; -1C75;OL CHIKI LETTER OB;Lo;0;L;;;;;N;;;;; -1C76;OL CHIKI LETTER OV;Lo;0;L;;;;;N;;;;; -1C77;OL CHIKI LETTER OH;Lo;0;L;;;;;N;;;;; -1C78;OL CHIKI MU TTUDDAG;Lm;0;L;;;;;N;;;;; -1C79;OL CHIKI GAAHLAA TTUDDAAG;Lm;0;L;;;;;N;;;;; -1C7A;OL CHIKI MU-GAAHLAA TTUDDAAG;Lm;0;L;;;;;N;;;;; -1C7B;OL CHIKI RELAA;Lm;0;L;;;;;N;;;;; -1C7C;OL CHIKI PHAARKAA;Lm;0;L;;;;;N;;;;; -1C7D;OL CHIKI AHAD;Lm;0;L;;;;;N;;;;; -1C7E;OL CHIKI PUNCTUATION MUCAAD;Po;0;L;;;;;N;;;;; -1C7F;OL CHIKI PUNCTUATION DOUBLE MUCAAD;Po;0;L;;;;;N;;;;; -1CD0;VEDIC TONE KARSHANA;Mn;230;NSM;;;;;N;;;;; -1CD1;VEDIC TONE SHARA;Mn;230;NSM;;;;;N;;;;; -1CD2;VEDIC TONE PRENKHA;Mn;230;NSM;;;;;N;;;;; -1CD3;VEDIC SIGN NIHSHVASA;Po;0;L;;;;;N;;;;; -1CD4;VEDIC SIGN YAJURVEDIC MIDLINE SVARITA;Mn;1;NSM;;;;;N;;;;; -1CD5;VEDIC TONE YAJURVEDIC AGGRAVATED INDEPENDENT SVARITA;Mn;220;NSM;;;;;N;;;;; -1CD6;VEDIC TONE YAJURVEDIC INDEPENDENT SVARITA;Mn;220;NSM;;;;;N;;;;; -1CD7;VEDIC TONE YAJURVEDIC KATHAKA INDEPENDENT SVARITA;Mn;220;NSM;;;;;N;;;;; -1CD8;VEDIC TONE CANDRA BELOW;Mn;220;NSM;;;;;N;;;;; -1CD9;VEDIC TONE YAJURVEDIC KATHAKA INDEPENDENT SVARITA SCHROEDER;Mn;220;NSM;;;;;N;;;;; -1CDA;VEDIC TONE DOUBLE SVARITA;Mn;230;NSM;;;;;N;;;;; -1CDB;VEDIC TONE TRIPLE SVARITA;Mn;230;NSM;;;;;N;;;;; -1CDC;VEDIC TONE KATHAKA ANUDATTA;Mn;220;NSM;;;;;N;;;;; -1CDD;VEDIC TONE DOT BELOW;Mn;220;NSM;;;;;N;;;;; -1CDE;VEDIC TONE TWO DOTS BELOW;Mn;220;NSM;;;;;N;;;;; -1CDF;VEDIC TONE THREE DOTS BELOW;Mn;220;NSM;;;;;N;;;;; -1CE0;VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA;Mn;230;NSM;;;;;N;;;;; -1CE1;VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA;Mc;0;L;;;;;N;;;;; -1CE2;VEDIC SIGN VISARGA SVARITA;Mn;1;NSM;;;;;N;;;;; -1CE3;VEDIC SIGN VISARGA UDATTA;Mn;1;NSM;;;;;N;;;;; -1CE4;VEDIC SIGN REVERSED VISARGA UDATTA;Mn;1;NSM;;;;;N;;;;; -1CE5;VEDIC SIGN VISARGA ANUDATTA;Mn;1;NSM;;;;;N;;;;; -1CE6;VEDIC SIGN REVERSED VISARGA ANUDATTA;Mn;1;NSM;;;;;N;;;;; -1CE7;VEDIC SIGN VISARGA UDATTA WITH TAIL;Mn;1;NSM;;;;;N;;;;; -1CE8;VEDIC SIGN VISARGA ANUDATTA WITH TAIL;Mn;1;NSM;;;;;N;;;;; -1CE9;VEDIC SIGN ANUSVARA ANTARGOMUKHA;Lo;0;L;;;;;N;;;;; -1CEA;VEDIC SIGN ANUSVARA BAHIRGOMUKHA;Lo;0;L;;;;;N;;;;; -1CEB;VEDIC SIGN ANUSVARA VAMAGOMUKHA;Lo;0;L;;;;;N;;;;; -1CEC;VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL;Lo;0;L;;;;;N;;;;; -1CED;VEDIC SIGN TIRYAK;Mn;220;NSM;;;;;N;;;;; -1CEE;VEDIC SIGN HEXIFORM LONG ANUSVARA;Lo;0;L;;;;;N;;;;; -1CEF;VEDIC SIGN LONG ANUSVARA;Lo;0;L;;;;;N;;;;; -1CF0;VEDIC SIGN RTHANG LONG ANUSVARA;Lo;0;L;;;;;N;;;;; -1CF1;VEDIC SIGN ANUSVARA UBHAYATO MUKHA;Lo;0;L;;;;;N;;;;; -1CF2;VEDIC SIGN ARDHAVISARGA;Mc;0;L;;;;;N;;;;; -1D00;LATIN LETTER SMALL CAPITAL A;Ll;0;L;;;;;N;;;;; -1D01;LATIN LETTER SMALL CAPITAL AE;Ll;0;L;;;;;N;;;;; -1D02;LATIN SMALL LETTER TURNED AE;Ll;0;L;;;;;N;;;;; -1D03;LATIN LETTER SMALL CAPITAL BARRED B;Ll;0;L;;;;;N;;;;; -1D04;LATIN LETTER SMALL CAPITAL C;Ll;0;L;;;;;N;;;;; -1D05;LATIN LETTER SMALL CAPITAL D;Ll;0;L;;;;;N;;;;; -1D06;LATIN LETTER SMALL CAPITAL ETH;Ll;0;L;;;;;N;;;;; -1D07;LATIN LETTER SMALL CAPITAL E;Ll;0;L;;;;;N;;;;; -1D08;LATIN SMALL LETTER TURNED OPEN E;Ll;0;L;;;;;N;;;;; -1D09;LATIN SMALL LETTER TURNED I;Ll;0;L;;;;;N;;;;; -1D0A;LATIN LETTER SMALL CAPITAL J;Ll;0;L;;;;;N;;;;; -1D0B;LATIN LETTER SMALL CAPITAL K;Ll;0;L;;;;;N;;;;; -1D0C;LATIN LETTER SMALL CAPITAL L WITH STROKE;Ll;0;L;;;;;N;;;;; -1D0D;LATIN LETTER SMALL CAPITAL M;Ll;0;L;;;;;N;;;;; -1D0E;LATIN LETTER SMALL CAPITAL REVERSED N;Ll;0;L;;;;;N;;;;; -1D0F;LATIN LETTER SMALL CAPITAL O;Ll;0;L;;;;;N;;;;; -1D10;LATIN LETTER SMALL CAPITAL OPEN O;Ll;0;L;;;;;N;;;;; -1D11;LATIN SMALL LETTER SIDEWAYS O;Ll;0;L;;;;;N;;;;; -1D12;LATIN SMALL LETTER SIDEWAYS OPEN O;Ll;0;L;;;;;N;;;;; -1D13;LATIN SMALL LETTER SIDEWAYS O WITH STROKE;Ll;0;L;;;;;N;;;;; -1D14;LATIN SMALL LETTER TURNED OE;Ll;0;L;;;;;N;;;;; -1D15;LATIN LETTER SMALL CAPITAL OU;Ll;0;L;;;;;N;;;;; -1D16;LATIN SMALL LETTER TOP HALF O;Ll;0;L;;;;;N;;;;; -1D17;LATIN SMALL LETTER BOTTOM HALF O;Ll;0;L;;;;;N;;;;; -1D18;LATIN LETTER SMALL CAPITAL P;Ll;0;L;;;;;N;;;;; -1D19;LATIN LETTER SMALL CAPITAL REVERSED R;Ll;0;L;;;;;N;;;;; -1D1A;LATIN LETTER SMALL CAPITAL TURNED R;Ll;0;L;;;;;N;;;;; -1D1B;LATIN LETTER SMALL CAPITAL T;Ll;0;L;;;;;N;;;;; -1D1C;LATIN LETTER SMALL CAPITAL U;Ll;0;L;;;;;N;;;;; -1D1D;LATIN SMALL LETTER SIDEWAYS U;Ll;0;L;;;;;N;;;;; -1D1E;LATIN SMALL LETTER SIDEWAYS DIAERESIZED U;Ll;0;L;;;;;N;;;;; -1D1F;LATIN SMALL LETTER SIDEWAYS TURNED M;Ll;0;L;;;;;N;;;;; -1D20;LATIN LETTER SMALL CAPITAL V;Ll;0;L;;;;;N;;;;; -1D21;LATIN LETTER SMALL CAPITAL W;Ll;0;L;;;;;N;;;;; -1D22;LATIN LETTER SMALL CAPITAL Z;Ll;0;L;;;;;N;;;;; -1D23;LATIN LETTER SMALL CAPITAL EZH;Ll;0;L;;;;;N;;;;; -1D24;LATIN LETTER VOICED LARYNGEAL SPIRANT;Ll;0;L;;;;;N;;;;; -1D25;LATIN LETTER AIN;Ll;0;L;;;;;N;;;;; -1D26;GREEK LETTER SMALL CAPITAL GAMMA;Ll;0;L;;;;;N;;;;; -1D27;GREEK LETTER SMALL CAPITAL LAMDA;Ll;0;L;;;;;N;;;;; -1D28;GREEK LETTER SMALL CAPITAL PI;Ll;0;L;;;;;N;;;;; -1D29;GREEK LETTER SMALL CAPITAL RHO;Ll;0;L;;;;;N;;;;; -1D2A;GREEK LETTER SMALL CAPITAL PSI;Ll;0;L;;;;;N;;;;; -1D2B;CYRILLIC LETTER SMALL CAPITAL EL;Ll;0;L;;;;;N;;;;; -1D2C;MODIFIER LETTER CAPITAL A;Lm;0;L; 0041;;;;N;;;;; -1D2D;MODIFIER LETTER CAPITAL AE;Lm;0;L; 00C6;;;;N;;;;; -1D2E;MODIFIER LETTER CAPITAL B;Lm;0;L; 0042;;;;N;;;;; -1D2F;MODIFIER LETTER CAPITAL BARRED B;Lm;0;L;;;;;N;;;;; -1D30;MODIFIER LETTER CAPITAL D;Lm;0;L; 0044;;;;N;;;;; -1D31;MODIFIER LETTER CAPITAL E;Lm;0;L; 0045;;;;N;;;;; -1D32;MODIFIER LETTER CAPITAL REVERSED E;Lm;0;L; 018E;;;;N;;;;; -1D33;MODIFIER LETTER CAPITAL G;Lm;0;L; 0047;;;;N;;;;; -1D34;MODIFIER LETTER CAPITAL H;Lm;0;L; 0048;;;;N;;;;; -1D35;MODIFIER LETTER CAPITAL I;Lm;0;L; 0049;;;;N;;;;; -1D36;MODIFIER LETTER CAPITAL J;Lm;0;L; 004A;;;;N;;;;; -1D37;MODIFIER LETTER CAPITAL K;Lm;0;L; 004B;;;;N;;;;; -1D38;MODIFIER LETTER CAPITAL L;Lm;0;L; 004C;;;;N;;;;; -1D39;MODIFIER LETTER CAPITAL M;Lm;0;L; 004D;;;;N;;;;; -1D3A;MODIFIER LETTER CAPITAL N;Lm;0;L; 004E;;;;N;;;;; -1D3B;MODIFIER LETTER CAPITAL REVERSED N;Lm;0;L;;;;;N;;;;; -1D3C;MODIFIER LETTER CAPITAL O;Lm;0;L; 004F;;;;N;;;;; -1D3D;MODIFIER LETTER CAPITAL OU;Lm;0;L; 0222;;;;N;;;;; -1D3E;MODIFIER LETTER CAPITAL P;Lm;0;L; 0050;;;;N;;;;; -1D3F;MODIFIER LETTER CAPITAL R;Lm;0;L; 0052;;;;N;;;;; -1D40;MODIFIER LETTER CAPITAL T;Lm;0;L; 0054;;;;N;;;;; -1D41;MODIFIER LETTER CAPITAL U;Lm;0;L; 0055;;;;N;;;;; -1D42;MODIFIER LETTER CAPITAL W;Lm;0;L; 0057;;;;N;;;;; -1D43;MODIFIER LETTER SMALL A;Lm;0;L; 0061;;;;N;;;;; -1D44;MODIFIER LETTER SMALL TURNED A;Lm;0;L; 0250;;;;N;;;;; -1D45;MODIFIER LETTER SMALL ALPHA;Lm;0;L; 0251;;;;N;;;;; -1D46;MODIFIER LETTER SMALL TURNED AE;Lm;0;L; 1D02;;;;N;;;;; -1D47;MODIFIER LETTER SMALL B;Lm;0;L; 0062;;;;N;;;;; -1D48;MODIFIER LETTER SMALL D;Lm;0;L; 0064;;;;N;;;;; -1D49;MODIFIER LETTER SMALL E;Lm;0;L; 0065;;;;N;;;;; -1D4A;MODIFIER LETTER SMALL SCHWA;Lm;0;L; 0259;;;;N;;;;; -1D4B;MODIFIER LETTER SMALL OPEN E;Lm;0;L; 025B;;;;N;;;;; -1D4C;MODIFIER LETTER SMALL TURNED OPEN E;Lm;0;L; 025C;;;;N;;;;; -1D4D;MODIFIER LETTER SMALL G;Lm;0;L; 0067;;;;N;;;;; -1D4E;MODIFIER LETTER SMALL TURNED I;Lm;0;L;;;;;N;;;;; -1D4F;MODIFIER LETTER SMALL K;Lm;0;L; 006B;;;;N;;;;; -1D50;MODIFIER LETTER SMALL M;Lm;0;L; 006D;;;;N;;;;; -1D51;MODIFIER LETTER SMALL ENG;Lm;0;L; 014B;;;;N;;;;; -1D52;MODIFIER LETTER SMALL O;Lm;0;L; 006F;;;;N;;;;; -1D53;MODIFIER LETTER SMALL OPEN O;Lm;0;L; 0254;;;;N;;;;; -1D54;MODIFIER LETTER SMALL TOP HALF O;Lm;0;L; 1D16;;;;N;;;;; -1D55;MODIFIER LETTER SMALL BOTTOM HALF O;Lm;0;L; 1D17;;;;N;;;;; -1D56;MODIFIER LETTER SMALL P;Lm;0;L; 0070;;;;N;;;;; -1D57;MODIFIER LETTER SMALL T;Lm;0;L; 0074;;;;N;;;;; -1D58;MODIFIER LETTER SMALL U;Lm;0;L; 0075;;;;N;;;;; -1D59;MODIFIER LETTER SMALL SIDEWAYS U;Lm;0;L; 1D1D;;;;N;;;;; -1D5A;MODIFIER LETTER SMALL TURNED M;Lm;0;L; 026F;;;;N;;;;; -1D5B;MODIFIER LETTER SMALL V;Lm;0;L; 0076;;;;N;;;;; -1D5C;MODIFIER LETTER SMALL AIN;Lm;0;L; 1D25;;;;N;;;;; -1D5D;MODIFIER LETTER SMALL BETA;Lm;0;L; 03B2;;;;N;;;;; -1D5E;MODIFIER LETTER SMALL GREEK GAMMA;Lm;0;L; 03B3;;;;N;;;;; -1D5F;MODIFIER LETTER SMALL DELTA;Lm;0;L; 03B4;;;;N;;;;; -1D60;MODIFIER LETTER SMALL GREEK PHI;Lm;0;L; 03C6;;;;N;;;;; -1D61;MODIFIER LETTER SMALL CHI;Lm;0;L; 03C7;;;;N;;;;; -1D62;LATIN SUBSCRIPT SMALL LETTER I;Ll;0;L; 0069;;;;N;;;;; -1D63;LATIN SUBSCRIPT SMALL LETTER R;Ll;0;L; 0072;;;;N;;;;; -1D64;LATIN SUBSCRIPT SMALL LETTER U;Ll;0;L; 0075;;;;N;;;;; -1D65;LATIN SUBSCRIPT SMALL LETTER V;Ll;0;L; 0076;;;;N;;;;; -1D66;GREEK SUBSCRIPT SMALL LETTER BETA;Ll;0;L; 03B2;;;;N;;;;; -1D67;GREEK SUBSCRIPT SMALL LETTER GAMMA;Ll;0;L; 03B3;;;;N;;;;; -1D68;GREEK SUBSCRIPT SMALL LETTER RHO;Ll;0;L; 03C1;;;;N;;;;; -1D69;GREEK SUBSCRIPT SMALL LETTER PHI;Ll;0;L; 03C6;;;;N;;;;; -1D6A;GREEK SUBSCRIPT SMALL LETTER CHI;Ll;0;L; 03C7;;;;N;;;;; -1D6B;LATIN SMALL LETTER UE;Ll;0;L;;;;;N;;;;; -1D6C;LATIN SMALL LETTER B WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; -1D6D;LATIN SMALL LETTER D WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; -1D6E;LATIN SMALL LETTER F WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; -1D6F;LATIN SMALL LETTER M WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; -1D70;LATIN SMALL LETTER N WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; -1D71;LATIN SMALL LETTER P WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; -1D72;LATIN SMALL LETTER R WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; -1D73;LATIN SMALL LETTER R WITH FISHHOOK AND MIDDLE TILDE;Ll;0;L;;;;;N;;;;; -1D74;LATIN SMALL LETTER S WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; -1D75;LATIN SMALL LETTER T WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; -1D76;LATIN SMALL LETTER Z WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; -1D77;LATIN SMALL LETTER TURNED G;Ll;0;L;;;;;N;;;;; -1D78;MODIFIER LETTER CYRILLIC EN;Lm;0;L; 043D;;;;N;;;;; -1D79;LATIN SMALL LETTER INSULAR G;Ll;0;L;;;;;N;;;A77D;;A77D -1D7A;LATIN SMALL LETTER TH WITH STRIKETHROUGH;Ll;0;L;;;;;N;;;;; -1D7B;LATIN SMALL CAPITAL LETTER I WITH STROKE;Ll;0;L;;;;;N;;;;; -1D7C;LATIN SMALL LETTER IOTA WITH STROKE;Ll;0;L;;;;;N;;;;; -1D7D;LATIN SMALL LETTER P WITH STROKE;Ll;0;L;;;;;N;;;2C63;;2C63 -1D7E;LATIN SMALL CAPITAL LETTER U WITH STROKE;Ll;0;L;;;;;N;;;;; -1D7F;LATIN SMALL LETTER UPSILON WITH STROKE;Ll;0;L;;;;;N;;;;; -1D80;LATIN SMALL LETTER B WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D81;LATIN SMALL LETTER D WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D82;LATIN SMALL LETTER F WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D83;LATIN SMALL LETTER G WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D84;LATIN SMALL LETTER K WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D85;LATIN SMALL LETTER L WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D86;LATIN SMALL LETTER M WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D87;LATIN SMALL LETTER N WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D88;LATIN SMALL LETTER P WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D89;LATIN SMALL LETTER R WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D8A;LATIN SMALL LETTER S WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D8B;LATIN SMALL LETTER ESH WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D8C;LATIN SMALL LETTER V WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D8D;LATIN SMALL LETTER X WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D8E;LATIN SMALL LETTER Z WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D8F;LATIN SMALL LETTER A WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; -1D90;LATIN SMALL LETTER ALPHA WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; -1D91;LATIN SMALL LETTER D WITH HOOK AND TAIL;Ll;0;L;;;;;N;;;;; -1D92;LATIN SMALL LETTER E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; -1D93;LATIN SMALL LETTER OPEN E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; -1D94;LATIN SMALL LETTER REVERSED OPEN E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; -1D95;LATIN SMALL LETTER SCHWA WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; -1D96;LATIN SMALL LETTER I WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; -1D97;LATIN SMALL LETTER OPEN O WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; -1D98;LATIN SMALL LETTER ESH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; -1D99;LATIN SMALL LETTER U WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; -1D9A;LATIN SMALL LETTER EZH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; -1D9B;MODIFIER LETTER SMALL TURNED ALPHA;Lm;0;L; 0252;;;;N;;;;; -1D9C;MODIFIER LETTER SMALL C;Lm;0;L; 0063;;;;N;;;;; -1D9D;MODIFIER LETTER SMALL C WITH CURL;Lm;0;L; 0255;;;;N;;;;; -1D9E;MODIFIER LETTER SMALL ETH;Lm;0;L; 00F0;;;;N;;;;; -1D9F;MODIFIER LETTER SMALL REVERSED OPEN E;Lm;0;L; 025C;;;;N;;;;; -1DA0;MODIFIER LETTER SMALL F;Lm;0;L; 0066;;;;N;;;;; -1DA1;MODIFIER LETTER SMALL DOTLESS J WITH STROKE;Lm;0;L; 025F;;;;N;;;;; -1DA2;MODIFIER LETTER SMALL SCRIPT G;Lm;0;L; 0261;;;;N;;;;; -1DA3;MODIFIER LETTER SMALL TURNED H;Lm;0;L; 0265;;;;N;;;;; -1DA4;MODIFIER LETTER SMALL I WITH STROKE;Lm;0;L; 0268;;;;N;;;;; -1DA5;MODIFIER LETTER SMALL IOTA;Lm;0;L; 0269;;;;N;;;;; -1DA6;MODIFIER LETTER SMALL CAPITAL I;Lm;0;L; 026A;;;;N;;;;; -1DA7;MODIFIER LETTER SMALL CAPITAL I WITH STROKE;Lm;0;L; 1D7B;;;;N;;;;; -1DA8;MODIFIER LETTER SMALL J WITH CROSSED-TAIL;Lm;0;L; 029D;;;;N;;;;; -1DA9;MODIFIER LETTER SMALL L WITH RETROFLEX HOOK;Lm;0;L; 026D;;;;N;;;;; -1DAA;MODIFIER LETTER SMALL L WITH PALATAL HOOK;Lm;0;L; 1D85;;;;N;;;;; -1DAB;MODIFIER LETTER SMALL CAPITAL L;Lm;0;L; 029F;;;;N;;;;; -1DAC;MODIFIER LETTER SMALL M WITH HOOK;Lm;0;L; 0271;;;;N;;;;; -1DAD;MODIFIER LETTER SMALL TURNED M WITH LONG LEG;Lm;0;L; 0270;;;;N;;;;; -1DAE;MODIFIER LETTER SMALL N WITH LEFT HOOK;Lm;0;L; 0272;;;;N;;;;; -1DAF;MODIFIER LETTER SMALL N WITH RETROFLEX HOOK;Lm;0;L; 0273;;;;N;;;;; -1DB0;MODIFIER LETTER SMALL CAPITAL N;Lm;0;L; 0274;;;;N;;;;; -1DB1;MODIFIER LETTER SMALL BARRED O;Lm;0;L; 0275;;;;N;;;;; -1DB2;MODIFIER LETTER SMALL PHI;Lm;0;L; 0278;;;;N;;;;; -1DB3;MODIFIER LETTER SMALL S WITH HOOK;Lm;0;L; 0282;;;;N;;;;; -1DB4;MODIFIER LETTER SMALL ESH;Lm;0;L; 0283;;;;N;;;;; -1DB5;MODIFIER LETTER SMALL T WITH PALATAL HOOK;Lm;0;L; 01AB;;;;N;;;;; -1DB6;MODIFIER LETTER SMALL U BAR;Lm;0;L; 0289;;;;N;;;;; -1DB7;MODIFIER LETTER SMALL UPSILON;Lm;0;L; 028A;;;;N;;;;; -1DB8;MODIFIER LETTER SMALL CAPITAL U;Lm;0;L; 1D1C;;;;N;;;;; -1DB9;MODIFIER LETTER SMALL V WITH HOOK;Lm;0;L; 028B;;;;N;;;;; -1DBA;MODIFIER LETTER SMALL TURNED V;Lm;0;L; 028C;;;;N;;;;; -1DBB;MODIFIER LETTER SMALL Z;Lm;0;L; 007A;;;;N;;;;; -1DBC;MODIFIER LETTER SMALL Z WITH RETROFLEX HOOK;Lm;0;L; 0290;;;;N;;;;; -1DBD;MODIFIER LETTER SMALL Z WITH CURL;Lm;0;L; 0291;;;;N;;;;; -1DBE;MODIFIER LETTER SMALL EZH;Lm;0;L; 0292;;;;N;;;;; -1DBF;MODIFIER LETTER SMALL THETA;Lm;0;L; 03B8;;;;N;;;;; -1DC0;COMBINING DOTTED GRAVE ACCENT;Mn;230;NSM;;;;;N;;;;; -1DC1;COMBINING DOTTED ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;; -1DC2;COMBINING SNAKE BELOW;Mn;220;NSM;;;;;N;;;;; -1DC3;COMBINING SUSPENSION MARK;Mn;230;NSM;;;;;N;;;;; -1DC4;COMBINING MACRON-ACUTE;Mn;230;NSM;;;;;N;;;;; -1DC5;COMBINING GRAVE-MACRON;Mn;230;NSM;;;;;N;;;;; -1DC6;COMBINING MACRON-GRAVE;Mn;230;NSM;;;;;N;;;;; -1DC7;COMBINING ACUTE-MACRON;Mn;230;NSM;;;;;N;;;;; -1DC8;COMBINING GRAVE-ACUTE-GRAVE;Mn;230;NSM;;;;;N;;;;; -1DC9;COMBINING ACUTE-GRAVE-ACUTE;Mn;230;NSM;;;;;N;;;;; -1DCA;COMBINING LATIN SMALL LETTER R BELOW;Mn;220;NSM;;;;;N;;;;; -1DCB;COMBINING BREVE-MACRON;Mn;230;NSM;;;;;N;;;;; -1DCC;COMBINING MACRON-BREVE;Mn;230;NSM;;;;;N;;;;; -1DCD;COMBINING DOUBLE CIRCUMFLEX ABOVE;Mn;234;NSM;;;;;N;;;;; -1DCE;COMBINING OGONEK ABOVE;Mn;214;NSM;;;;;N;;;;; -1DCF;COMBINING ZIGZAG BELOW;Mn;220;NSM;;;;;N;;;;; -1DD0;COMBINING IS BELOW;Mn;202;NSM;;;;;N;;;;; -1DD1;COMBINING UR ABOVE;Mn;230;NSM;;;;;N;;;;; -1DD2;COMBINING US ABOVE;Mn;230;NSM;;;;;N;;;;; -1DD3;COMBINING LATIN SMALL LETTER FLATTENED OPEN A ABOVE;Mn;230;NSM;;;;;N;;;;; -1DD4;COMBINING LATIN SMALL LETTER AE;Mn;230;NSM;;;;;N;;;;; -1DD5;COMBINING LATIN SMALL LETTER AO;Mn;230;NSM;;;;;N;;;;; -1DD6;COMBINING LATIN SMALL LETTER AV;Mn;230;NSM;;;;;N;;;;; -1DD7;COMBINING LATIN SMALL LETTER C CEDILLA;Mn;230;NSM;;;;;N;;;;; -1DD8;COMBINING LATIN SMALL LETTER INSULAR D;Mn;230;NSM;;;;;N;;;;; -1DD9;COMBINING LATIN SMALL LETTER ETH;Mn;230;NSM;;;;;N;;;;; -1DDA;COMBINING LATIN SMALL LETTER G;Mn;230;NSM;;;;;N;;;;; -1DDB;COMBINING LATIN LETTER SMALL CAPITAL G;Mn;230;NSM;;;;;N;;;;; -1DDC;COMBINING LATIN SMALL LETTER K;Mn;230;NSM;;;;;N;;;;; -1DDD;COMBINING LATIN SMALL LETTER L;Mn;230;NSM;;;;;N;;;;; -1DDE;COMBINING LATIN LETTER SMALL CAPITAL L;Mn;230;NSM;;;;;N;;;;; -1DDF;COMBINING LATIN LETTER SMALL CAPITAL M;Mn;230;NSM;;;;;N;;;;; -1DE0;COMBINING LATIN SMALL LETTER N;Mn;230;NSM;;;;;N;;;;; -1DE1;COMBINING LATIN LETTER SMALL CAPITAL N;Mn;230;NSM;;;;;N;;;;; -1DE2;COMBINING LATIN LETTER SMALL CAPITAL R;Mn;230;NSM;;;;;N;;;;; -1DE3;COMBINING LATIN SMALL LETTER R ROTUNDA;Mn;230;NSM;;;;;N;;;;; -1DE4;COMBINING LATIN SMALL LETTER S;Mn;230;NSM;;;;;N;;;;; -1DE5;COMBINING LATIN SMALL LETTER LONG S;Mn;230;NSM;;;;;N;;;;; -1DE6;COMBINING LATIN SMALL LETTER Z;Mn;230;NSM;;;;;N;;;;; -1DFD;COMBINING ALMOST EQUAL TO BELOW;Mn;220;NSM;;;;;N;;;;; -1DFE;COMBINING LEFT ARROWHEAD ABOVE;Mn;230;NSM;;;;;N;;;;; -1DFF;COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;; -1E00;LATIN CAPITAL LETTER A WITH RING BELOW;Lu;0;L;0041 0325;;;;N;;;;1E01; -1E01;LATIN SMALL LETTER A WITH RING BELOW;Ll;0;L;0061 0325;;;;N;;;1E00;;1E00 -1E02;LATIN CAPITAL LETTER B WITH DOT ABOVE;Lu;0;L;0042 0307;;;;N;;;;1E03; -1E03;LATIN SMALL LETTER B WITH DOT ABOVE;Ll;0;L;0062 0307;;;;N;;;1E02;;1E02 -1E04;LATIN CAPITAL LETTER B WITH DOT BELOW;Lu;0;L;0042 0323;;;;N;;;;1E05; -1E05;LATIN SMALL LETTER B WITH DOT BELOW;Ll;0;L;0062 0323;;;;N;;;1E04;;1E04 -1E06;LATIN CAPITAL LETTER B WITH LINE BELOW;Lu;0;L;0042 0331;;;;N;;;;1E07; -1E07;LATIN SMALL LETTER B WITH LINE BELOW;Ll;0;L;0062 0331;;;;N;;;1E06;;1E06 -1E08;LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE;Lu;0;L;00C7 0301;;;;N;;;;1E09; -1E09;LATIN SMALL LETTER C WITH CEDILLA AND ACUTE;Ll;0;L;00E7 0301;;;;N;;;1E08;;1E08 -1E0A;LATIN CAPITAL LETTER D WITH DOT ABOVE;Lu;0;L;0044 0307;;;;N;;;;1E0B; -1E0B;LATIN SMALL LETTER D WITH DOT ABOVE;Ll;0;L;0064 0307;;;;N;;;1E0A;;1E0A -1E0C;LATIN CAPITAL LETTER D WITH DOT BELOW;Lu;0;L;0044 0323;;;;N;;;;1E0D; -1E0D;LATIN SMALL LETTER D WITH DOT BELOW;Ll;0;L;0064 0323;;;;N;;;1E0C;;1E0C -1E0E;LATIN CAPITAL LETTER D WITH LINE BELOW;Lu;0;L;0044 0331;;;;N;;;;1E0F; -1E0F;LATIN SMALL LETTER D WITH LINE BELOW;Ll;0;L;0064 0331;;;;N;;;1E0E;;1E0E -1E10;LATIN CAPITAL LETTER D WITH CEDILLA;Lu;0;L;0044 0327;;;;N;;;;1E11; -1E11;LATIN SMALL LETTER D WITH CEDILLA;Ll;0;L;0064 0327;;;;N;;;1E10;;1E10 -1E12;LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW;Lu;0;L;0044 032D;;;;N;;;;1E13; -1E13;LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW;Ll;0;L;0064 032D;;;;N;;;1E12;;1E12 -1E14;LATIN CAPITAL LETTER E WITH MACRON AND GRAVE;Lu;0;L;0112 0300;;;;N;;;;1E15; -1E15;LATIN SMALL LETTER E WITH MACRON AND GRAVE;Ll;0;L;0113 0300;;;;N;;;1E14;;1E14 -1E16;LATIN CAPITAL LETTER E WITH MACRON AND ACUTE;Lu;0;L;0112 0301;;;;N;;;;1E17; -1E17;LATIN SMALL LETTER E WITH MACRON AND ACUTE;Ll;0;L;0113 0301;;;;N;;;1E16;;1E16 -1E18;LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW;Lu;0;L;0045 032D;;;;N;;;;1E19; -1E19;LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW;Ll;0;L;0065 032D;;;;N;;;1E18;;1E18 -1E1A;LATIN CAPITAL LETTER E WITH TILDE BELOW;Lu;0;L;0045 0330;;;;N;;;;1E1B; -1E1B;LATIN SMALL LETTER E WITH TILDE BELOW;Ll;0;L;0065 0330;;;;N;;;1E1A;;1E1A -1E1C;LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE;Lu;0;L;0228 0306;;;;N;;;;1E1D; -1E1D;LATIN SMALL LETTER E WITH CEDILLA AND BREVE;Ll;0;L;0229 0306;;;;N;;;1E1C;;1E1C -1E1E;LATIN CAPITAL LETTER F WITH DOT ABOVE;Lu;0;L;0046 0307;;;;N;;;;1E1F; -1E1F;LATIN SMALL LETTER F WITH DOT ABOVE;Ll;0;L;0066 0307;;;;N;;;1E1E;;1E1E -1E20;LATIN CAPITAL LETTER G WITH MACRON;Lu;0;L;0047 0304;;;;N;;;;1E21; -1E21;LATIN SMALL LETTER G WITH MACRON;Ll;0;L;0067 0304;;;;N;;;1E20;;1E20 -1E22;LATIN CAPITAL LETTER H WITH DOT ABOVE;Lu;0;L;0048 0307;;;;N;;;;1E23; -1E23;LATIN SMALL LETTER H WITH DOT ABOVE;Ll;0;L;0068 0307;;;;N;;;1E22;;1E22 -1E24;LATIN CAPITAL LETTER H WITH DOT BELOW;Lu;0;L;0048 0323;;;;N;;;;1E25; -1E25;LATIN SMALL LETTER H WITH DOT BELOW;Ll;0;L;0068 0323;;;;N;;;1E24;;1E24 -1E26;LATIN CAPITAL LETTER H WITH DIAERESIS;Lu;0;L;0048 0308;;;;N;;;;1E27; -1E27;LATIN SMALL LETTER H WITH DIAERESIS;Ll;0;L;0068 0308;;;;N;;;1E26;;1E26 -1E28;LATIN CAPITAL LETTER H WITH CEDILLA;Lu;0;L;0048 0327;;;;N;;;;1E29; -1E29;LATIN SMALL LETTER H WITH CEDILLA;Ll;0;L;0068 0327;;;;N;;;1E28;;1E28 -1E2A;LATIN CAPITAL LETTER H WITH BREVE BELOW;Lu;0;L;0048 032E;;;;N;;;;1E2B; -1E2B;LATIN SMALL LETTER H WITH BREVE BELOW;Ll;0;L;0068 032E;;;;N;;;1E2A;;1E2A -1E2C;LATIN CAPITAL LETTER I WITH TILDE BELOW;Lu;0;L;0049 0330;;;;N;;;;1E2D; -1E2D;LATIN SMALL LETTER I WITH TILDE BELOW;Ll;0;L;0069 0330;;;;N;;;1E2C;;1E2C -1E2E;LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE;Lu;0;L;00CF 0301;;;;N;;;;1E2F; -1E2F;LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE;Ll;0;L;00EF 0301;;;;N;;;1E2E;;1E2E -1E30;LATIN CAPITAL LETTER K WITH ACUTE;Lu;0;L;004B 0301;;;;N;;;;1E31; -1E31;LATIN SMALL LETTER K WITH ACUTE;Ll;0;L;006B 0301;;;;N;;;1E30;;1E30 -1E32;LATIN CAPITAL LETTER K WITH DOT BELOW;Lu;0;L;004B 0323;;;;N;;;;1E33; -1E33;LATIN SMALL LETTER K WITH DOT BELOW;Ll;0;L;006B 0323;;;;N;;;1E32;;1E32 -1E34;LATIN CAPITAL LETTER K WITH LINE BELOW;Lu;0;L;004B 0331;;;;N;;;;1E35; -1E35;LATIN SMALL LETTER K WITH LINE BELOW;Ll;0;L;006B 0331;;;;N;;;1E34;;1E34 -1E36;LATIN CAPITAL LETTER L WITH DOT BELOW;Lu;0;L;004C 0323;;;;N;;;;1E37; -1E37;LATIN SMALL LETTER L WITH DOT BELOW;Ll;0;L;006C 0323;;;;N;;;1E36;;1E36 -1E38;LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON;Lu;0;L;1E36 0304;;;;N;;;;1E39; -1E39;LATIN SMALL LETTER L WITH DOT BELOW AND MACRON;Ll;0;L;1E37 0304;;;;N;;;1E38;;1E38 -1E3A;LATIN CAPITAL LETTER L WITH LINE BELOW;Lu;0;L;004C 0331;;;;N;;;;1E3B; -1E3B;LATIN SMALL LETTER L WITH LINE BELOW;Ll;0;L;006C 0331;;;;N;;;1E3A;;1E3A -1E3C;LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW;Lu;0;L;004C 032D;;;;N;;;;1E3D; -1E3D;LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW;Ll;0;L;006C 032D;;;;N;;;1E3C;;1E3C -1E3E;LATIN CAPITAL LETTER M WITH ACUTE;Lu;0;L;004D 0301;;;;N;;;;1E3F; -1E3F;LATIN SMALL LETTER M WITH ACUTE;Ll;0;L;006D 0301;;;;N;;;1E3E;;1E3E -1E40;LATIN CAPITAL LETTER M WITH DOT ABOVE;Lu;0;L;004D 0307;;;;N;;;;1E41; -1E41;LATIN SMALL LETTER M WITH DOT ABOVE;Ll;0;L;006D 0307;;;;N;;;1E40;;1E40 -1E42;LATIN CAPITAL LETTER M WITH DOT BELOW;Lu;0;L;004D 0323;;;;N;;;;1E43; -1E43;LATIN SMALL LETTER M WITH DOT BELOW;Ll;0;L;006D 0323;;;;N;;;1E42;;1E42 -1E44;LATIN CAPITAL LETTER N WITH DOT ABOVE;Lu;0;L;004E 0307;;;;N;;;;1E45; -1E45;LATIN SMALL LETTER N WITH DOT ABOVE;Ll;0;L;006E 0307;;;;N;;;1E44;;1E44 -1E46;LATIN CAPITAL LETTER N WITH DOT BELOW;Lu;0;L;004E 0323;;;;N;;;;1E47; -1E47;LATIN SMALL LETTER N WITH DOT BELOW;Ll;0;L;006E 0323;;;;N;;;1E46;;1E46 -1E48;LATIN CAPITAL LETTER N WITH LINE BELOW;Lu;0;L;004E 0331;;;;N;;;;1E49; -1E49;LATIN SMALL LETTER N WITH LINE BELOW;Ll;0;L;006E 0331;;;;N;;;1E48;;1E48 -1E4A;LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW;Lu;0;L;004E 032D;;;;N;;;;1E4B; -1E4B;LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW;Ll;0;L;006E 032D;;;;N;;;1E4A;;1E4A -1E4C;LATIN CAPITAL LETTER O WITH TILDE AND ACUTE;Lu;0;L;00D5 0301;;;;N;;;;1E4D; -1E4D;LATIN SMALL LETTER O WITH TILDE AND ACUTE;Ll;0;L;00F5 0301;;;;N;;;1E4C;;1E4C -1E4E;LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS;Lu;0;L;00D5 0308;;;;N;;;;1E4F; -1E4F;LATIN SMALL LETTER O WITH TILDE AND DIAERESIS;Ll;0;L;00F5 0308;;;;N;;;1E4E;;1E4E -1E50;LATIN CAPITAL LETTER O WITH MACRON AND GRAVE;Lu;0;L;014C 0300;;;;N;;;;1E51; -1E51;LATIN SMALL LETTER O WITH MACRON AND GRAVE;Ll;0;L;014D 0300;;;;N;;;1E50;;1E50 -1E52;LATIN CAPITAL LETTER O WITH MACRON AND ACUTE;Lu;0;L;014C 0301;;;;N;;;;1E53; -1E53;LATIN SMALL LETTER O WITH MACRON AND ACUTE;Ll;0;L;014D 0301;;;;N;;;1E52;;1E52 -1E54;LATIN CAPITAL LETTER P WITH ACUTE;Lu;0;L;0050 0301;;;;N;;;;1E55; -1E55;LATIN SMALL LETTER P WITH ACUTE;Ll;0;L;0070 0301;;;;N;;;1E54;;1E54 -1E56;LATIN CAPITAL LETTER P WITH DOT ABOVE;Lu;0;L;0050 0307;;;;N;;;;1E57; -1E57;LATIN SMALL LETTER P WITH DOT ABOVE;Ll;0;L;0070 0307;;;;N;;;1E56;;1E56 -1E58;LATIN CAPITAL LETTER R WITH DOT ABOVE;Lu;0;L;0052 0307;;;;N;;;;1E59; -1E59;LATIN SMALL LETTER R WITH DOT ABOVE;Ll;0;L;0072 0307;;;;N;;;1E58;;1E58 -1E5A;LATIN CAPITAL LETTER R WITH DOT BELOW;Lu;0;L;0052 0323;;;;N;;;;1E5B; -1E5B;LATIN SMALL LETTER R WITH DOT BELOW;Ll;0;L;0072 0323;;;;N;;;1E5A;;1E5A -1E5C;LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON;Lu;0;L;1E5A 0304;;;;N;;;;1E5D; -1E5D;LATIN SMALL LETTER R WITH DOT BELOW AND MACRON;Ll;0;L;1E5B 0304;;;;N;;;1E5C;;1E5C -1E5E;LATIN CAPITAL LETTER R WITH LINE BELOW;Lu;0;L;0052 0331;;;;N;;;;1E5F; -1E5F;LATIN SMALL LETTER R WITH LINE BELOW;Ll;0;L;0072 0331;;;;N;;;1E5E;;1E5E -1E60;LATIN CAPITAL LETTER S WITH DOT ABOVE;Lu;0;L;0053 0307;;;;N;;;;1E61; -1E61;LATIN SMALL LETTER S WITH DOT ABOVE;Ll;0;L;0073 0307;;;;N;;;1E60;;1E60 -1E62;LATIN CAPITAL LETTER S WITH DOT BELOW;Lu;0;L;0053 0323;;;;N;;;;1E63; -1E63;LATIN SMALL LETTER S WITH DOT BELOW;Ll;0;L;0073 0323;;;;N;;;1E62;;1E62 -1E64;LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE;Lu;0;L;015A 0307;;;;N;;;;1E65; -1E65;LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE;Ll;0;L;015B 0307;;;;N;;;1E64;;1E64 -1E66;LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE;Lu;0;L;0160 0307;;;;N;;;;1E67; -1E67;LATIN SMALL LETTER S WITH CARON AND DOT ABOVE;Ll;0;L;0161 0307;;;;N;;;1E66;;1E66 -1E68;LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE;Lu;0;L;1E62 0307;;;;N;;;;1E69; -1E69;LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE;Ll;0;L;1E63 0307;;;;N;;;1E68;;1E68 -1E6A;LATIN CAPITAL LETTER T WITH DOT ABOVE;Lu;0;L;0054 0307;;;;N;;;;1E6B; -1E6B;LATIN SMALL LETTER T WITH DOT ABOVE;Ll;0;L;0074 0307;;;;N;;;1E6A;;1E6A -1E6C;LATIN CAPITAL LETTER T WITH DOT BELOW;Lu;0;L;0054 0323;;;;N;;;;1E6D; -1E6D;LATIN SMALL LETTER T WITH DOT BELOW;Ll;0;L;0074 0323;;;;N;;;1E6C;;1E6C -1E6E;LATIN CAPITAL LETTER T WITH LINE BELOW;Lu;0;L;0054 0331;;;;N;;;;1E6F; -1E6F;LATIN SMALL LETTER T WITH LINE BELOW;Ll;0;L;0074 0331;;;;N;;;1E6E;;1E6E -1E70;LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW;Lu;0;L;0054 032D;;;;N;;;;1E71; -1E71;LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW;Ll;0;L;0074 032D;;;;N;;;1E70;;1E70 -1E72;LATIN CAPITAL LETTER U WITH DIAERESIS BELOW;Lu;0;L;0055 0324;;;;N;;;;1E73; -1E73;LATIN SMALL LETTER U WITH DIAERESIS BELOW;Ll;0;L;0075 0324;;;;N;;;1E72;;1E72 -1E74;LATIN CAPITAL LETTER U WITH TILDE BELOW;Lu;0;L;0055 0330;;;;N;;;;1E75; -1E75;LATIN SMALL LETTER U WITH TILDE BELOW;Ll;0;L;0075 0330;;;;N;;;1E74;;1E74 -1E76;LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW;Lu;0;L;0055 032D;;;;N;;;;1E77; -1E77;LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW;Ll;0;L;0075 032D;;;;N;;;1E76;;1E76 -1E78;LATIN CAPITAL LETTER U WITH TILDE AND ACUTE;Lu;0;L;0168 0301;;;;N;;;;1E79; -1E79;LATIN SMALL LETTER U WITH TILDE AND ACUTE;Ll;0;L;0169 0301;;;;N;;;1E78;;1E78 -1E7A;LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS;Lu;0;L;016A 0308;;;;N;;;;1E7B; -1E7B;LATIN SMALL LETTER U WITH MACRON AND DIAERESIS;Ll;0;L;016B 0308;;;;N;;;1E7A;;1E7A -1E7C;LATIN CAPITAL LETTER V WITH TILDE;Lu;0;L;0056 0303;;;;N;;;;1E7D; -1E7D;LATIN SMALL LETTER V WITH TILDE;Ll;0;L;0076 0303;;;;N;;;1E7C;;1E7C -1E7E;LATIN CAPITAL LETTER V WITH DOT BELOW;Lu;0;L;0056 0323;;;;N;;;;1E7F; -1E7F;LATIN SMALL LETTER V WITH DOT BELOW;Ll;0;L;0076 0323;;;;N;;;1E7E;;1E7E -1E80;LATIN CAPITAL LETTER W WITH GRAVE;Lu;0;L;0057 0300;;;;N;;;;1E81; -1E81;LATIN SMALL LETTER W WITH GRAVE;Ll;0;L;0077 0300;;;;N;;;1E80;;1E80 -1E82;LATIN CAPITAL LETTER W WITH ACUTE;Lu;0;L;0057 0301;;;;N;;;;1E83; -1E83;LATIN SMALL LETTER W WITH ACUTE;Ll;0;L;0077 0301;;;;N;;;1E82;;1E82 -1E84;LATIN CAPITAL LETTER W WITH DIAERESIS;Lu;0;L;0057 0308;;;;N;;;;1E85; -1E85;LATIN SMALL LETTER W WITH DIAERESIS;Ll;0;L;0077 0308;;;;N;;;1E84;;1E84 -1E86;LATIN CAPITAL LETTER W WITH DOT ABOVE;Lu;0;L;0057 0307;;;;N;;;;1E87; -1E87;LATIN SMALL LETTER W WITH DOT ABOVE;Ll;0;L;0077 0307;;;;N;;;1E86;;1E86 -1E88;LATIN CAPITAL LETTER W WITH DOT BELOW;Lu;0;L;0057 0323;;;;N;;;;1E89; -1E89;LATIN SMALL LETTER W WITH DOT BELOW;Ll;0;L;0077 0323;;;;N;;;1E88;;1E88 -1E8A;LATIN CAPITAL LETTER X WITH DOT ABOVE;Lu;0;L;0058 0307;;;;N;;;;1E8B; -1E8B;LATIN SMALL LETTER X WITH DOT ABOVE;Ll;0;L;0078 0307;;;;N;;;1E8A;;1E8A -1E8C;LATIN CAPITAL LETTER X WITH DIAERESIS;Lu;0;L;0058 0308;;;;N;;;;1E8D; -1E8D;LATIN SMALL LETTER X WITH DIAERESIS;Ll;0;L;0078 0308;;;;N;;;1E8C;;1E8C -1E8E;LATIN CAPITAL LETTER Y WITH DOT ABOVE;Lu;0;L;0059 0307;;;;N;;;;1E8F; -1E8F;LATIN SMALL LETTER Y WITH DOT ABOVE;Ll;0;L;0079 0307;;;;N;;;1E8E;;1E8E -1E90;LATIN CAPITAL LETTER Z WITH CIRCUMFLEX;Lu;0;L;005A 0302;;;;N;;;;1E91; -1E91;LATIN SMALL LETTER Z WITH CIRCUMFLEX;Ll;0;L;007A 0302;;;;N;;;1E90;;1E90 -1E92;LATIN CAPITAL LETTER Z WITH DOT BELOW;Lu;0;L;005A 0323;;;;N;;;;1E93; -1E93;LATIN SMALL LETTER Z WITH DOT BELOW;Ll;0;L;007A 0323;;;;N;;;1E92;;1E92 -1E94;LATIN CAPITAL LETTER Z WITH LINE BELOW;Lu;0;L;005A 0331;;;;N;;;;1E95; -1E95;LATIN SMALL LETTER Z WITH LINE BELOW;Ll;0;L;007A 0331;;;;N;;;1E94;;1E94 -1E96;LATIN SMALL LETTER H WITH LINE BELOW;Ll;0;L;0068 0331;;;;N;;;;; -1E97;LATIN SMALL LETTER T WITH DIAERESIS;Ll;0;L;0074 0308;;;;N;;;;; -1E98;LATIN SMALL LETTER W WITH RING ABOVE;Ll;0;L;0077 030A;;;;N;;;;; -1E99;LATIN SMALL LETTER Y WITH RING ABOVE;Ll;0;L;0079 030A;;;;N;;;;; -1E9A;LATIN SMALL LETTER A WITH RIGHT HALF RING;Ll;0;L; 0061 02BE;;;;N;;;;; -1E9B;LATIN SMALL LETTER LONG S WITH DOT ABOVE;Ll;0;L;017F 0307;;;;N;;;1E60;;1E60 -1E9C;LATIN SMALL LETTER LONG S WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;;; -1E9D;LATIN SMALL LETTER LONG S WITH HIGH STROKE;Ll;0;L;;;;;N;;;;; -1E9E;LATIN CAPITAL LETTER SHARP S;Lu;0;L;;;;;N;;;;00DF; -1E9F;LATIN SMALL LETTER DELTA;Ll;0;L;;;;;N;;;;; -1EA0;LATIN CAPITAL LETTER A WITH DOT BELOW;Lu;0;L;0041 0323;;;;N;;;;1EA1; -1EA1;LATIN SMALL LETTER A WITH DOT BELOW;Ll;0;L;0061 0323;;;;N;;;1EA0;;1EA0 -1EA2;LATIN CAPITAL LETTER A WITH HOOK ABOVE;Lu;0;L;0041 0309;;;;N;;;;1EA3; -1EA3;LATIN SMALL LETTER A WITH HOOK ABOVE;Ll;0;L;0061 0309;;;;N;;;1EA2;;1EA2 -1EA4;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00C2 0301;;;;N;;;;1EA5; -1EA5;LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00E2 0301;;;;N;;;1EA4;;1EA4 -1EA6;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00C2 0300;;;;N;;;;1EA7; -1EA7;LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00E2 0300;;;;N;;;1EA6;;1EA6 -1EA8;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00C2 0309;;;;N;;;;1EA9; -1EA9;LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00E2 0309;;;;N;;;1EA8;;1EA8 -1EAA;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE;Lu;0;L;00C2 0303;;;;N;;;;1EAB; -1EAB;LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE;Ll;0;L;00E2 0303;;;;N;;;1EAA;;1EAA -1EAC;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EA0 0302;;;;N;;;;1EAD; -1EAD;LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EA1 0302;;;;N;;;1EAC;;1EAC -1EAE;LATIN CAPITAL LETTER A WITH BREVE AND ACUTE;Lu;0;L;0102 0301;;;;N;;;;1EAF; -1EAF;LATIN SMALL LETTER A WITH BREVE AND ACUTE;Ll;0;L;0103 0301;;;;N;;;1EAE;;1EAE -1EB0;LATIN CAPITAL LETTER A WITH BREVE AND GRAVE;Lu;0;L;0102 0300;;;;N;;;;1EB1; -1EB1;LATIN SMALL LETTER A WITH BREVE AND GRAVE;Ll;0;L;0103 0300;;;;N;;;1EB0;;1EB0 -1EB2;LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE;Lu;0;L;0102 0309;;;;N;;;;1EB3; -1EB3;LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE;Ll;0;L;0103 0309;;;;N;;;1EB2;;1EB2 -1EB4;LATIN CAPITAL LETTER A WITH BREVE AND TILDE;Lu;0;L;0102 0303;;;;N;;;;1EB5; -1EB5;LATIN SMALL LETTER A WITH BREVE AND TILDE;Ll;0;L;0103 0303;;;;N;;;1EB4;;1EB4 -1EB6;LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW;Lu;0;L;1EA0 0306;;;;N;;;;1EB7; -1EB7;LATIN SMALL LETTER A WITH BREVE AND DOT BELOW;Ll;0;L;1EA1 0306;;;;N;;;1EB6;;1EB6 -1EB8;LATIN CAPITAL LETTER E WITH DOT BELOW;Lu;0;L;0045 0323;;;;N;;;;1EB9; -1EB9;LATIN SMALL LETTER E WITH DOT BELOW;Ll;0;L;0065 0323;;;;N;;;1EB8;;1EB8 -1EBA;LATIN CAPITAL LETTER E WITH HOOK ABOVE;Lu;0;L;0045 0309;;;;N;;;;1EBB; -1EBB;LATIN SMALL LETTER E WITH HOOK ABOVE;Ll;0;L;0065 0309;;;;N;;;1EBA;;1EBA -1EBC;LATIN CAPITAL LETTER E WITH TILDE;Lu;0;L;0045 0303;;;;N;;;;1EBD; -1EBD;LATIN SMALL LETTER E WITH TILDE;Ll;0;L;0065 0303;;;;N;;;1EBC;;1EBC -1EBE;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00CA 0301;;;;N;;;;1EBF; -1EBF;LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00EA 0301;;;;N;;;1EBE;;1EBE -1EC0;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00CA 0300;;;;N;;;;1EC1; -1EC1;LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00EA 0300;;;;N;;;1EC0;;1EC0 -1EC2;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00CA 0309;;;;N;;;;1EC3; -1EC3;LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00EA 0309;;;;N;;;1EC2;;1EC2 -1EC4;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE;Lu;0;L;00CA 0303;;;;N;;;;1EC5; -1EC5;LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE;Ll;0;L;00EA 0303;;;;N;;;1EC4;;1EC4 -1EC6;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EB8 0302;;;;N;;;;1EC7; -1EC7;LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EB9 0302;;;;N;;;1EC6;;1EC6 -1EC8;LATIN CAPITAL LETTER I WITH HOOK ABOVE;Lu;0;L;0049 0309;;;;N;;;;1EC9; -1EC9;LATIN SMALL LETTER I WITH HOOK ABOVE;Ll;0;L;0069 0309;;;;N;;;1EC8;;1EC8 -1ECA;LATIN CAPITAL LETTER I WITH DOT BELOW;Lu;0;L;0049 0323;;;;N;;;;1ECB; -1ECB;LATIN SMALL LETTER I WITH DOT BELOW;Ll;0;L;0069 0323;;;;N;;;1ECA;;1ECA -1ECC;LATIN CAPITAL LETTER O WITH DOT BELOW;Lu;0;L;004F 0323;;;;N;;;;1ECD; -1ECD;LATIN SMALL LETTER O WITH DOT BELOW;Ll;0;L;006F 0323;;;;N;;;1ECC;;1ECC -1ECE;LATIN CAPITAL LETTER O WITH HOOK ABOVE;Lu;0;L;004F 0309;;;;N;;;;1ECF; -1ECF;LATIN SMALL LETTER O WITH HOOK ABOVE;Ll;0;L;006F 0309;;;;N;;;1ECE;;1ECE -1ED0;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00D4 0301;;;;N;;;;1ED1; -1ED1;LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00F4 0301;;;;N;;;1ED0;;1ED0 -1ED2;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00D4 0300;;;;N;;;;1ED3; -1ED3;LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00F4 0300;;;;N;;;1ED2;;1ED2 -1ED4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00D4 0309;;;;N;;;;1ED5; -1ED5;LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00F4 0309;;;;N;;;1ED4;;1ED4 -1ED6;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE;Lu;0;L;00D4 0303;;;;N;;;;1ED7; -1ED7;LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE;Ll;0;L;00F4 0303;;;;N;;;1ED6;;1ED6 -1ED8;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1ECC 0302;;;;N;;;;1ED9; -1ED9;LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1ECD 0302;;;;N;;;1ED8;;1ED8 -1EDA;LATIN CAPITAL LETTER O WITH HORN AND ACUTE;Lu;0;L;01A0 0301;;;;N;;;;1EDB; -1EDB;LATIN SMALL LETTER O WITH HORN AND ACUTE;Ll;0;L;01A1 0301;;;;N;;;1EDA;;1EDA -1EDC;LATIN CAPITAL LETTER O WITH HORN AND GRAVE;Lu;0;L;01A0 0300;;;;N;;;;1EDD; -1EDD;LATIN SMALL LETTER O WITH HORN AND GRAVE;Ll;0;L;01A1 0300;;;;N;;;1EDC;;1EDC -1EDE;LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE;Lu;0;L;01A0 0309;;;;N;;;;1EDF; -1EDF;LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE;Ll;0;L;01A1 0309;;;;N;;;1EDE;;1EDE -1EE0;LATIN CAPITAL LETTER O WITH HORN AND TILDE;Lu;0;L;01A0 0303;;;;N;;;;1EE1; -1EE1;LATIN SMALL LETTER O WITH HORN AND TILDE;Ll;0;L;01A1 0303;;;;N;;;1EE0;;1EE0 -1EE2;LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW;Lu;0;L;01A0 0323;;;;N;;;;1EE3; -1EE3;LATIN SMALL LETTER O WITH HORN AND DOT BELOW;Ll;0;L;01A1 0323;;;;N;;;1EE2;;1EE2 -1EE4;LATIN CAPITAL LETTER U WITH DOT BELOW;Lu;0;L;0055 0323;;;;N;;;;1EE5; -1EE5;LATIN SMALL LETTER U WITH DOT BELOW;Ll;0;L;0075 0323;;;;N;;;1EE4;;1EE4 -1EE6;LATIN CAPITAL LETTER U WITH HOOK ABOVE;Lu;0;L;0055 0309;;;;N;;;;1EE7; -1EE7;LATIN SMALL LETTER U WITH HOOK ABOVE;Ll;0;L;0075 0309;;;;N;;;1EE6;;1EE6 -1EE8;LATIN CAPITAL LETTER U WITH HORN AND ACUTE;Lu;0;L;01AF 0301;;;;N;;;;1EE9; -1EE9;LATIN SMALL LETTER U WITH HORN AND ACUTE;Ll;0;L;01B0 0301;;;;N;;;1EE8;;1EE8 -1EEA;LATIN CAPITAL LETTER U WITH HORN AND GRAVE;Lu;0;L;01AF 0300;;;;N;;;;1EEB; -1EEB;LATIN SMALL LETTER U WITH HORN AND GRAVE;Ll;0;L;01B0 0300;;;;N;;;1EEA;;1EEA -1EEC;LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE;Lu;0;L;01AF 0309;;;;N;;;;1EED; -1EED;LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE;Ll;0;L;01B0 0309;;;;N;;;1EEC;;1EEC -1EEE;LATIN CAPITAL LETTER U WITH HORN AND TILDE;Lu;0;L;01AF 0303;;;;N;;;;1EEF; -1EEF;LATIN SMALL LETTER U WITH HORN AND TILDE;Ll;0;L;01B0 0303;;;;N;;;1EEE;;1EEE -1EF0;LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW;Lu;0;L;01AF 0323;;;;N;;;;1EF1; -1EF1;LATIN SMALL LETTER U WITH HORN AND DOT BELOW;Ll;0;L;01B0 0323;;;;N;;;1EF0;;1EF0 -1EF2;LATIN CAPITAL LETTER Y WITH GRAVE;Lu;0;L;0059 0300;;;;N;;;;1EF3; -1EF3;LATIN SMALL LETTER Y WITH GRAVE;Ll;0;L;0079 0300;;;;N;;;1EF2;;1EF2 -1EF4;LATIN CAPITAL LETTER Y WITH DOT BELOW;Lu;0;L;0059 0323;;;;N;;;;1EF5; -1EF5;LATIN SMALL LETTER Y WITH DOT BELOW;Ll;0;L;0079 0323;;;;N;;;1EF4;;1EF4 -1EF6;LATIN CAPITAL LETTER Y WITH HOOK ABOVE;Lu;0;L;0059 0309;;;;N;;;;1EF7; -1EF7;LATIN SMALL LETTER Y WITH HOOK ABOVE;Ll;0;L;0079 0309;;;;N;;;1EF6;;1EF6 -1EF8;LATIN CAPITAL LETTER Y WITH TILDE;Lu;0;L;0059 0303;;;;N;;;;1EF9; -1EF9;LATIN SMALL LETTER Y WITH TILDE;Ll;0;L;0079 0303;;;;N;;;1EF8;;1EF8 -1EFA;LATIN CAPITAL LETTER MIDDLE-WELSH LL;Lu;0;L;;;;;N;;;;1EFB; -1EFB;LATIN SMALL LETTER MIDDLE-WELSH LL;Ll;0;L;;;;;N;;;1EFA;;1EFA -1EFC;LATIN CAPITAL LETTER MIDDLE-WELSH V;Lu;0;L;;;;;N;;;;1EFD; -1EFD;LATIN SMALL LETTER MIDDLE-WELSH V;Ll;0;L;;;;;N;;;1EFC;;1EFC -1EFE;LATIN CAPITAL LETTER Y WITH LOOP;Lu;0;L;;;;;N;;;;1EFF; -1EFF;LATIN SMALL LETTER Y WITH LOOP;Ll;0;L;;;;;N;;;1EFE;;1EFE -1F00;GREEK SMALL LETTER ALPHA WITH PSILI;Ll;0;L;03B1 0313;;;;N;;;1F08;;1F08 -1F01;GREEK SMALL LETTER ALPHA WITH DASIA;Ll;0;L;03B1 0314;;;;N;;;1F09;;1F09 -1F02;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA;Ll;0;L;1F00 0300;;;;N;;;1F0A;;1F0A -1F03;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA;Ll;0;L;1F01 0300;;;;N;;;1F0B;;1F0B -1F04;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA;Ll;0;L;1F00 0301;;;;N;;;1F0C;;1F0C -1F05;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA;Ll;0;L;1F01 0301;;;;N;;;1F0D;;1F0D -1F06;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI;Ll;0;L;1F00 0342;;;;N;;;1F0E;;1F0E -1F07;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI;Ll;0;L;1F01 0342;;;;N;;;1F0F;;1F0F -1F08;GREEK CAPITAL LETTER ALPHA WITH PSILI;Lu;0;L;0391 0313;;;;N;;;;1F00; -1F09;GREEK CAPITAL LETTER ALPHA WITH DASIA;Lu;0;L;0391 0314;;;;N;;;;1F01; -1F0A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA;Lu;0;L;1F08 0300;;;;N;;;;1F02; -1F0B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA;Lu;0;L;1F09 0300;;;;N;;;;1F03; -1F0C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA;Lu;0;L;1F08 0301;;;;N;;;;1F04; -1F0D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA;Lu;0;L;1F09 0301;;;;N;;;;1F05; -1F0E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI;Lu;0;L;1F08 0342;;;;N;;;;1F06; -1F0F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI;Lu;0;L;1F09 0342;;;;N;;;;1F07; -1F10;GREEK SMALL LETTER EPSILON WITH PSILI;Ll;0;L;03B5 0313;;;;N;;;1F18;;1F18 -1F11;GREEK SMALL LETTER EPSILON WITH DASIA;Ll;0;L;03B5 0314;;;;N;;;1F19;;1F19 -1F12;GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA;Ll;0;L;1F10 0300;;;;N;;;1F1A;;1F1A -1F13;GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA;Ll;0;L;1F11 0300;;;;N;;;1F1B;;1F1B -1F14;GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA;Ll;0;L;1F10 0301;;;;N;;;1F1C;;1F1C -1F15;GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA;Ll;0;L;1F11 0301;;;;N;;;1F1D;;1F1D -1F18;GREEK CAPITAL LETTER EPSILON WITH PSILI;Lu;0;L;0395 0313;;;;N;;;;1F10; -1F19;GREEK CAPITAL LETTER EPSILON WITH DASIA;Lu;0;L;0395 0314;;;;N;;;;1F11; -1F1A;GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA;Lu;0;L;1F18 0300;;;;N;;;;1F12; -1F1B;GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA;Lu;0;L;1F19 0300;;;;N;;;;1F13; -1F1C;GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA;Lu;0;L;1F18 0301;;;;N;;;;1F14; -1F1D;GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA;Lu;0;L;1F19 0301;;;;N;;;;1F15; -1F20;GREEK SMALL LETTER ETA WITH PSILI;Ll;0;L;03B7 0313;;;;N;;;1F28;;1F28 -1F21;GREEK SMALL LETTER ETA WITH DASIA;Ll;0;L;03B7 0314;;;;N;;;1F29;;1F29 -1F22;GREEK SMALL LETTER ETA WITH PSILI AND VARIA;Ll;0;L;1F20 0300;;;;N;;;1F2A;;1F2A -1F23;GREEK SMALL LETTER ETA WITH DASIA AND VARIA;Ll;0;L;1F21 0300;;;;N;;;1F2B;;1F2B -1F24;GREEK SMALL LETTER ETA WITH PSILI AND OXIA;Ll;0;L;1F20 0301;;;;N;;;1F2C;;1F2C -1F25;GREEK SMALL LETTER ETA WITH DASIA AND OXIA;Ll;0;L;1F21 0301;;;;N;;;1F2D;;1F2D -1F26;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI;Ll;0;L;1F20 0342;;;;N;;;1F2E;;1F2E -1F27;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI;Ll;0;L;1F21 0342;;;;N;;;1F2F;;1F2F -1F28;GREEK CAPITAL LETTER ETA WITH PSILI;Lu;0;L;0397 0313;;;;N;;;;1F20; -1F29;GREEK CAPITAL LETTER ETA WITH DASIA;Lu;0;L;0397 0314;;;;N;;;;1F21; -1F2A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA;Lu;0;L;1F28 0300;;;;N;;;;1F22; -1F2B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA;Lu;0;L;1F29 0300;;;;N;;;;1F23; -1F2C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA;Lu;0;L;1F28 0301;;;;N;;;;1F24; -1F2D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA;Lu;0;L;1F29 0301;;;;N;;;;1F25; -1F2E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI;Lu;0;L;1F28 0342;;;;N;;;;1F26; -1F2F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI;Lu;0;L;1F29 0342;;;;N;;;;1F27; -1F30;GREEK SMALL LETTER IOTA WITH PSILI;Ll;0;L;03B9 0313;;;;N;;;1F38;;1F38 -1F31;GREEK SMALL LETTER IOTA WITH DASIA;Ll;0;L;03B9 0314;;;;N;;;1F39;;1F39 -1F32;GREEK SMALL LETTER IOTA WITH PSILI AND VARIA;Ll;0;L;1F30 0300;;;;N;;;1F3A;;1F3A -1F33;GREEK SMALL LETTER IOTA WITH DASIA AND VARIA;Ll;0;L;1F31 0300;;;;N;;;1F3B;;1F3B -1F34;GREEK SMALL LETTER IOTA WITH PSILI AND OXIA;Ll;0;L;1F30 0301;;;;N;;;1F3C;;1F3C -1F35;GREEK SMALL LETTER IOTA WITH DASIA AND OXIA;Ll;0;L;1F31 0301;;;;N;;;1F3D;;1F3D -1F36;GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI;Ll;0;L;1F30 0342;;;;N;;;1F3E;;1F3E -1F37;GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI;Ll;0;L;1F31 0342;;;;N;;;1F3F;;1F3F -1F38;GREEK CAPITAL LETTER IOTA WITH PSILI;Lu;0;L;0399 0313;;;;N;;;;1F30; -1F39;GREEK CAPITAL LETTER IOTA WITH DASIA;Lu;0;L;0399 0314;;;;N;;;;1F31; -1F3A;GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA;Lu;0;L;1F38 0300;;;;N;;;;1F32; -1F3B;GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA;Lu;0;L;1F39 0300;;;;N;;;;1F33; -1F3C;GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA;Lu;0;L;1F38 0301;;;;N;;;;1F34; -1F3D;GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA;Lu;0;L;1F39 0301;;;;N;;;;1F35; -1F3E;GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI;Lu;0;L;1F38 0342;;;;N;;;;1F36; -1F3F;GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI;Lu;0;L;1F39 0342;;;;N;;;;1F37; -1F40;GREEK SMALL LETTER OMICRON WITH PSILI;Ll;0;L;03BF 0313;;;;N;;;1F48;;1F48 -1F41;GREEK SMALL LETTER OMICRON WITH DASIA;Ll;0;L;03BF 0314;;;;N;;;1F49;;1F49 -1F42;GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA;Ll;0;L;1F40 0300;;;;N;;;1F4A;;1F4A -1F43;GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA;Ll;0;L;1F41 0300;;;;N;;;1F4B;;1F4B -1F44;GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA;Ll;0;L;1F40 0301;;;;N;;;1F4C;;1F4C -1F45;GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA;Ll;0;L;1F41 0301;;;;N;;;1F4D;;1F4D -1F48;GREEK CAPITAL LETTER OMICRON WITH PSILI;Lu;0;L;039F 0313;;;;N;;;;1F40; -1F49;GREEK CAPITAL LETTER OMICRON WITH DASIA;Lu;0;L;039F 0314;;;;N;;;;1F41; -1F4A;GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA;Lu;0;L;1F48 0300;;;;N;;;;1F42; -1F4B;GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA;Lu;0;L;1F49 0300;;;;N;;;;1F43; -1F4C;GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA;Lu;0;L;1F48 0301;;;;N;;;;1F44; -1F4D;GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA;Lu;0;L;1F49 0301;;;;N;;;;1F45; -1F50;GREEK SMALL LETTER UPSILON WITH PSILI;Ll;0;L;03C5 0313;;;;N;;;;; -1F51;GREEK SMALL LETTER UPSILON WITH DASIA;Ll;0;L;03C5 0314;;;;N;;;1F59;;1F59 -1F52;GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA;Ll;0;L;1F50 0300;;;;N;;;;; -1F53;GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA;Ll;0;L;1F51 0300;;;;N;;;1F5B;;1F5B -1F54;GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA;Ll;0;L;1F50 0301;;;;N;;;;; -1F55;GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA;Ll;0;L;1F51 0301;;;;N;;;1F5D;;1F5D -1F56;GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI;Ll;0;L;1F50 0342;;;;N;;;;; -1F57;GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI;Ll;0;L;1F51 0342;;;;N;;;1F5F;;1F5F -1F59;GREEK CAPITAL LETTER UPSILON WITH DASIA;Lu;0;L;03A5 0314;;;;N;;;;1F51; -1F5B;GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA;Lu;0;L;1F59 0300;;;;N;;;;1F53; -1F5D;GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA;Lu;0;L;1F59 0301;;;;N;;;;1F55; -1F5F;GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI;Lu;0;L;1F59 0342;;;;N;;;;1F57; -1F60;GREEK SMALL LETTER OMEGA WITH PSILI;Ll;0;L;03C9 0313;;;;N;;;1F68;;1F68 -1F61;GREEK SMALL LETTER OMEGA WITH DASIA;Ll;0;L;03C9 0314;;;;N;;;1F69;;1F69 -1F62;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA;Ll;0;L;1F60 0300;;;;N;;;1F6A;;1F6A -1F63;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA;Ll;0;L;1F61 0300;;;;N;;;1F6B;;1F6B -1F64;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA;Ll;0;L;1F60 0301;;;;N;;;1F6C;;1F6C -1F65;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA;Ll;0;L;1F61 0301;;;;N;;;1F6D;;1F6D -1F66;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI;Ll;0;L;1F60 0342;;;;N;;;1F6E;;1F6E -1F67;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI;Ll;0;L;1F61 0342;;;;N;;;1F6F;;1F6F -1F68;GREEK CAPITAL LETTER OMEGA WITH PSILI;Lu;0;L;03A9 0313;;;;N;;;;1F60; -1F69;GREEK CAPITAL LETTER OMEGA WITH DASIA;Lu;0;L;03A9 0314;;;;N;;;;1F61; -1F6A;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA;Lu;0;L;1F68 0300;;;;N;;;;1F62; -1F6B;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA;Lu;0;L;1F69 0300;;;;N;;;;1F63; -1F6C;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA;Lu;0;L;1F68 0301;;;;N;;;;1F64; -1F6D;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA;Lu;0;L;1F69 0301;;;;N;;;;1F65; -1F6E;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI;Lu;0;L;1F68 0342;;;;N;;;;1F66; -1F6F;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI;Lu;0;L;1F69 0342;;;;N;;;;1F67; -1F70;GREEK SMALL LETTER ALPHA WITH VARIA;Ll;0;L;03B1 0300;;;;N;;;1FBA;;1FBA -1F71;GREEK SMALL LETTER ALPHA WITH OXIA;Ll;0;L;03AC;;;;N;;;1FBB;;1FBB -1F72;GREEK SMALL LETTER EPSILON WITH VARIA;Ll;0;L;03B5 0300;;;;N;;;1FC8;;1FC8 -1F73;GREEK SMALL LETTER EPSILON WITH OXIA;Ll;0;L;03AD;;;;N;;;1FC9;;1FC9 -1F74;GREEK SMALL LETTER ETA WITH VARIA;Ll;0;L;03B7 0300;;;;N;;;1FCA;;1FCA -1F75;GREEK SMALL LETTER ETA WITH OXIA;Ll;0;L;03AE;;;;N;;;1FCB;;1FCB -1F76;GREEK SMALL LETTER IOTA WITH VARIA;Ll;0;L;03B9 0300;;;;N;;;1FDA;;1FDA -1F77;GREEK SMALL LETTER IOTA WITH OXIA;Ll;0;L;03AF;;;;N;;;1FDB;;1FDB -1F78;GREEK SMALL LETTER OMICRON WITH VARIA;Ll;0;L;03BF 0300;;;;N;;;1FF8;;1FF8 -1F79;GREEK SMALL LETTER OMICRON WITH OXIA;Ll;0;L;03CC;;;;N;;;1FF9;;1FF9 -1F7A;GREEK SMALL LETTER UPSILON WITH VARIA;Ll;0;L;03C5 0300;;;;N;;;1FEA;;1FEA -1F7B;GREEK SMALL LETTER UPSILON WITH OXIA;Ll;0;L;03CD;;;;N;;;1FEB;;1FEB -1F7C;GREEK SMALL LETTER OMEGA WITH VARIA;Ll;0;L;03C9 0300;;;;N;;;1FFA;;1FFA -1F7D;GREEK SMALL LETTER OMEGA WITH OXIA;Ll;0;L;03CE;;;;N;;;1FFB;;1FFB -1F80;GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F00 0345;;;;N;;;1F88;;1F88 -1F81;GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F01 0345;;;;N;;;1F89;;1F89 -1F82;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F02 0345;;;;N;;;1F8A;;1F8A -1F83;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F03 0345;;;;N;;;1F8B;;1F8B -1F84;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F04 0345;;;;N;;;1F8C;;1F8C -1F85;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F05 0345;;;;N;;;1F8D;;1F8D -1F86;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F06 0345;;;;N;;;1F8E;;1F8E -1F87;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F07 0345;;;;N;;;1F8F;;1F8F -1F88;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F08 0345;;;;N;;;;1F80; -1F89;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F09 0345;;;;N;;;;1F81; -1F8A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0A 0345;;;;N;;;;1F82; -1F8B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0B 0345;;;;N;;;;1F83; -1F8C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0C 0345;;;;N;;;;1F84; -1F8D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0D 0345;;;;N;;;;1F85; -1F8E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0E 0345;;;;N;;;;1F86; -1F8F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0F 0345;;;;N;;;;1F87; -1F90;GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F20 0345;;;;N;;;1F98;;1F98 -1F91;GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F21 0345;;;;N;;;1F99;;1F99 -1F92;GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F22 0345;;;;N;;;1F9A;;1F9A -1F93;GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F23 0345;;;;N;;;1F9B;;1F9B -1F94;GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F24 0345;;;;N;;;1F9C;;1F9C -1F95;GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F25 0345;;;;N;;;1F9D;;1F9D -1F96;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F26 0345;;;;N;;;1F9E;;1F9E -1F97;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F27 0345;;;;N;;;1F9F;;1F9F -1F98;GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F28 0345;;;;N;;;;1F90; -1F99;GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F29 0345;;;;N;;;;1F91; -1F9A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2A 0345;;;;N;;;;1F92; -1F9B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2B 0345;;;;N;;;;1F93; -1F9C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2C 0345;;;;N;;;;1F94; -1F9D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2D 0345;;;;N;;;;1F95; -1F9E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2E 0345;;;;N;;;;1F96; -1F9F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2F 0345;;;;N;;;;1F97; -1FA0;GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F60 0345;;;;N;;;1FA8;;1FA8 -1FA1;GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F61 0345;;;;N;;;1FA9;;1FA9 -1FA2;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F62 0345;;;;N;;;1FAA;;1FAA -1FA3;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F63 0345;;;;N;;;1FAB;;1FAB -1FA4;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F64 0345;;;;N;;;1FAC;;1FAC -1FA5;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F65 0345;;;;N;;;1FAD;;1FAD -1FA6;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F66 0345;;;;N;;;1FAE;;1FAE -1FA7;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F67 0345;;;;N;;;1FAF;;1FAF -1FA8;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F68 0345;;;;N;;;;1FA0; -1FA9;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F69 0345;;;;N;;;;1FA1; -1FAA;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6A 0345;;;;N;;;;1FA2; -1FAB;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6B 0345;;;;N;;;;1FA3; -1FAC;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6C 0345;;;;N;;;;1FA4; -1FAD;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6D 0345;;;;N;;;;1FA5; -1FAE;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6E 0345;;;;N;;;;1FA6; -1FAF;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6F 0345;;;;N;;;;1FA7; -1FB0;GREEK SMALL LETTER ALPHA WITH VRACHY;Ll;0;L;03B1 0306;;;;N;;;1FB8;;1FB8 -1FB1;GREEK SMALL LETTER ALPHA WITH MACRON;Ll;0;L;03B1 0304;;;;N;;;1FB9;;1FB9 -1FB2;GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F70 0345;;;;N;;;;; -1FB3;GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI;Ll;0;L;03B1 0345;;;;N;;;1FBC;;1FBC -1FB4;GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AC 0345;;;;N;;;;; -1FB6;GREEK SMALL LETTER ALPHA WITH PERISPOMENI;Ll;0;L;03B1 0342;;;;N;;;;; -1FB7;GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FB6 0345;;;;N;;;;; -1FB8;GREEK CAPITAL LETTER ALPHA WITH VRACHY;Lu;0;L;0391 0306;;;;N;;;;1FB0; -1FB9;GREEK CAPITAL LETTER ALPHA WITH MACRON;Lu;0;L;0391 0304;;;;N;;;;1FB1; -1FBA;GREEK CAPITAL LETTER ALPHA WITH VARIA;Lu;0;L;0391 0300;;;;N;;;;1F70; -1FBB;GREEK CAPITAL LETTER ALPHA WITH OXIA;Lu;0;L;0386;;;;N;;;;1F71; -1FBC;GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI;Lt;0;L;0391 0345;;;;N;;;;1FB3; -1FBD;GREEK KORONIS;Sk;0;ON; 0020 0313;;;;N;;;;; -1FBE;GREEK PROSGEGRAMMENI;Ll;0;L;03B9;;;;N;;;0399;;0399 -1FBF;GREEK PSILI;Sk;0;ON; 0020 0313;;;;N;;;;; -1FC0;GREEK PERISPOMENI;Sk;0;ON; 0020 0342;;;;N;;;;; -1FC1;GREEK DIALYTIKA AND PERISPOMENI;Sk;0;ON;00A8 0342;;;;N;;;;; -1FC2;GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F74 0345;;;;N;;;;; -1FC3;GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI;Ll;0;L;03B7 0345;;;;N;;;1FCC;;1FCC -1FC4;GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AE 0345;;;;N;;;;; -1FC6;GREEK SMALL LETTER ETA WITH PERISPOMENI;Ll;0;L;03B7 0342;;;;N;;;;; -1FC7;GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FC6 0345;;;;N;;;;; -1FC8;GREEK CAPITAL LETTER EPSILON WITH VARIA;Lu;0;L;0395 0300;;;;N;;;;1F72; -1FC9;GREEK CAPITAL LETTER EPSILON WITH OXIA;Lu;0;L;0388;;;;N;;;;1F73; -1FCA;GREEK CAPITAL LETTER ETA WITH VARIA;Lu;0;L;0397 0300;;;;N;;;;1F74; -1FCB;GREEK CAPITAL LETTER ETA WITH OXIA;Lu;0;L;0389;;;;N;;;;1F75; -1FCC;GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI;Lt;0;L;0397 0345;;;;N;;;;1FC3; -1FCD;GREEK PSILI AND VARIA;Sk;0;ON;1FBF 0300;;;;N;;;;; -1FCE;GREEK PSILI AND OXIA;Sk;0;ON;1FBF 0301;;;;N;;;;; -1FCF;GREEK PSILI AND PERISPOMENI;Sk;0;ON;1FBF 0342;;;;N;;;;; -1FD0;GREEK SMALL LETTER IOTA WITH VRACHY;Ll;0;L;03B9 0306;;;;N;;;1FD8;;1FD8 -1FD1;GREEK SMALL LETTER IOTA WITH MACRON;Ll;0;L;03B9 0304;;;;N;;;1FD9;;1FD9 -1FD2;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA;Ll;0;L;03CA 0300;;;;N;;;;; -1FD3;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA;Ll;0;L;0390;;;;N;;;;; -1FD6;GREEK SMALL LETTER IOTA WITH PERISPOMENI;Ll;0;L;03B9 0342;;;;N;;;;; -1FD7;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CA 0342;;;;N;;;;; -1FD8;GREEK CAPITAL LETTER IOTA WITH VRACHY;Lu;0;L;0399 0306;;;;N;;;;1FD0; -1FD9;GREEK CAPITAL LETTER IOTA WITH MACRON;Lu;0;L;0399 0304;;;;N;;;;1FD1; -1FDA;GREEK CAPITAL LETTER IOTA WITH VARIA;Lu;0;L;0399 0300;;;;N;;;;1F76; -1FDB;GREEK CAPITAL LETTER IOTA WITH OXIA;Lu;0;L;038A;;;;N;;;;1F77; -1FDD;GREEK DASIA AND VARIA;Sk;0;ON;1FFE 0300;;;;N;;;;; -1FDE;GREEK DASIA AND OXIA;Sk;0;ON;1FFE 0301;;;;N;;;;; -1FDF;GREEK DASIA AND PERISPOMENI;Sk;0;ON;1FFE 0342;;;;N;;;;; -1FE0;GREEK SMALL LETTER UPSILON WITH VRACHY;Ll;0;L;03C5 0306;;;;N;;;1FE8;;1FE8 -1FE1;GREEK SMALL LETTER UPSILON WITH MACRON;Ll;0;L;03C5 0304;;;;N;;;1FE9;;1FE9 -1FE2;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA;Ll;0;L;03CB 0300;;;;N;;;;; -1FE3;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA;Ll;0;L;03B0;;;;N;;;;; -1FE4;GREEK SMALL LETTER RHO WITH PSILI;Ll;0;L;03C1 0313;;;;N;;;;; -1FE5;GREEK SMALL LETTER RHO WITH DASIA;Ll;0;L;03C1 0314;;;;N;;;1FEC;;1FEC -1FE6;GREEK SMALL LETTER UPSILON WITH PERISPOMENI;Ll;0;L;03C5 0342;;;;N;;;;; -1FE7;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CB 0342;;;;N;;;;; -1FE8;GREEK CAPITAL LETTER UPSILON WITH VRACHY;Lu;0;L;03A5 0306;;;;N;;;;1FE0; -1FE9;GREEK CAPITAL LETTER UPSILON WITH MACRON;Lu;0;L;03A5 0304;;;;N;;;;1FE1; -1FEA;GREEK CAPITAL LETTER UPSILON WITH VARIA;Lu;0;L;03A5 0300;;;;N;;;;1F7A; -1FEB;GREEK CAPITAL LETTER UPSILON WITH OXIA;Lu;0;L;038E;;;;N;;;;1F7B; -1FEC;GREEK CAPITAL LETTER RHO WITH DASIA;Lu;0;L;03A1 0314;;;;N;;;;1FE5; -1FED;GREEK DIALYTIKA AND VARIA;Sk;0;ON;00A8 0300;;;;N;;;;; -1FEE;GREEK DIALYTIKA AND OXIA;Sk;0;ON;0385;;;;N;;;;; -1FEF;GREEK VARIA;Sk;0;ON;0060;;;;N;;;;; -1FF2;GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F7C 0345;;;;N;;;;; -1FF3;GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI;Ll;0;L;03C9 0345;;;;N;;;1FFC;;1FFC -1FF4;GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03CE 0345;;;;N;;;;; -1FF6;GREEK SMALL LETTER OMEGA WITH PERISPOMENI;Ll;0;L;03C9 0342;;;;N;;;;; -1FF7;GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FF6 0345;;;;N;;;;; -1FF8;GREEK CAPITAL LETTER OMICRON WITH VARIA;Lu;0;L;039F 0300;;;;N;;;;1F78; -1FF9;GREEK CAPITAL LETTER OMICRON WITH OXIA;Lu;0;L;038C;;;;N;;;;1F79; -1FFA;GREEK CAPITAL LETTER OMEGA WITH VARIA;Lu;0;L;03A9 0300;;;;N;;;;1F7C; -1FFB;GREEK CAPITAL LETTER OMEGA WITH OXIA;Lu;0;L;038F;;;;N;;;;1F7D; -1FFC;GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI;Lt;0;L;03A9 0345;;;;N;;;;1FF3; -1FFD;GREEK OXIA;Sk;0;ON;00B4;;;;N;;;;; -1FFE;GREEK DASIA;Sk;0;ON; 0020 0314;;;;N;;;;; -2000;EN QUAD;Zs;0;WS;2002;;;;N;;;;; -2001;EM QUAD;Zs;0;WS;2003;;;;N;;;;; -2002;EN SPACE;Zs;0;WS; 0020;;;;N;;;;; -2003;EM SPACE;Zs;0;WS; 0020;;;;N;;;;; -2004;THREE-PER-EM SPACE;Zs;0;WS; 0020;;;;N;;;;; -2005;FOUR-PER-EM SPACE;Zs;0;WS; 0020;;;;N;;;;; -2006;SIX-PER-EM SPACE;Zs;0;WS; 0020;;;;N;;;;; -2007;FIGURE SPACE;Zs;0;WS; 0020;;;;N;;;;; -2008;PUNCTUATION SPACE;Zs;0;WS; 0020;;;;N;;;;; -2009;THIN SPACE;Zs;0;WS; 0020;;;;N;;;;; -200A;HAIR SPACE;Zs;0;WS; 0020;;;;N;;;;; -200B;ZERO WIDTH SPACE;Cf;0;BN;;;;;N;;;;; -200C;ZERO WIDTH NON-JOINER;Cf;0;BN;;;;;N;;;;; -200D;ZERO WIDTH JOINER;Cf;0;BN;;;;;N;;;;; -200E;LEFT-TO-RIGHT MARK;Cf;0;L;;;;;N;;;;; -200F;RIGHT-TO-LEFT MARK;Cf;0;R;;;;;N;;;;; -2010;HYPHEN;Pd;0;ON;;;;;N;;;;; -2011;NON-BREAKING HYPHEN;Pd;0;ON; 2010;;;;N;;;;; -2012;FIGURE DASH;Pd;0;ON;;;;;N;;;;; -2013;EN DASH;Pd;0;ON;;;;;N;;;;; -2014;EM DASH;Pd;0;ON;;;;;N;;;;; -2015;HORIZONTAL BAR;Pd;0;ON;;;;;N;QUOTATION DASH;;;; -2016;DOUBLE VERTICAL LINE;Po;0;ON;;;;;N;DOUBLE VERTICAL BAR;;;; -2017;DOUBLE LOW LINE;Po;0;ON; 0020 0333;;;;N;SPACING DOUBLE UNDERSCORE;;;; -2018;LEFT SINGLE QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE TURNED COMMA QUOTATION MARK;;;; -2019;RIGHT SINGLE QUOTATION MARK;Pf;0;ON;;;;;N;SINGLE COMMA QUOTATION MARK;;;; -201A;SINGLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW SINGLE COMMA QUOTATION MARK;;;; -201B;SINGLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE REVERSED COMMA QUOTATION MARK;;;; -201C;LEFT DOUBLE QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE TURNED COMMA QUOTATION MARK;;;; -201D;RIGHT DOUBLE QUOTATION MARK;Pf;0;ON;;;;;N;DOUBLE COMMA QUOTATION MARK;;;; -201E;DOUBLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW DOUBLE COMMA QUOTATION MARK;;;; -201F;DOUBLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE REVERSED COMMA QUOTATION MARK;;;; -2020;DAGGER;Po;0;ON;;;;;N;;;;; -2021;DOUBLE DAGGER;Po;0;ON;;;;;N;;;;; -2022;BULLET;Po;0;ON;;;;;N;;;;; -2023;TRIANGULAR BULLET;Po;0;ON;;;;;N;;;;; -2024;ONE DOT LEADER;Po;0;ON; 002E;;;;N;;;;; -2025;TWO DOT LEADER;Po;0;ON; 002E 002E;;;;N;;;;; -2026;HORIZONTAL ELLIPSIS;Po;0;ON; 002E 002E 002E;;;;N;;;;; -2027;HYPHENATION POINT;Po;0;ON;;;;;N;;;;; -2028;LINE SEPARATOR;Zl;0;WS;;;;;N;;;;; -2029;PARAGRAPH SEPARATOR;Zp;0;B;;;;;N;;;;; -202A;LEFT-TO-RIGHT EMBEDDING;Cf;0;LRE;;;;;N;;;;; -202B;RIGHT-TO-LEFT EMBEDDING;Cf;0;RLE;;;;;N;;;;; -202C;POP DIRECTIONAL FORMATTING;Cf;0;PDF;;;;;N;;;;; -202D;LEFT-TO-RIGHT OVERRIDE;Cf;0;LRO;;;;;N;;;;; -202E;RIGHT-TO-LEFT OVERRIDE;Cf;0;RLO;;;;;N;;;;; -202F;NARROW NO-BREAK SPACE;Zs;0;CS; 0020;;;;N;;;;; -2030;PER MILLE SIGN;Po;0;ET;;;;;N;;;;; -2031;PER TEN THOUSAND SIGN;Po;0;ET;;;;;N;;;;; -2032;PRIME;Po;0;ET;;;;;N;;;;; -2033;DOUBLE PRIME;Po;0;ET; 2032 2032;;;;N;;;;; -2034;TRIPLE PRIME;Po;0;ET; 2032 2032 2032;;;;N;;;;; -2035;REVERSED PRIME;Po;0;ON;;;;;N;;;;; -2036;REVERSED DOUBLE PRIME;Po;0;ON; 2035 2035;;;;N;;;;; -2037;REVERSED TRIPLE PRIME;Po;0;ON; 2035 2035 2035;;;;N;;;;; -2038;CARET;Po;0;ON;;;;;N;;;;; -2039;SINGLE LEFT-POINTING ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING SINGLE GUILLEMET;;;; -203A;SINGLE RIGHT-POINTING ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING SINGLE GUILLEMET;;;; -203B;REFERENCE MARK;Po;0;ON;;;;;N;;;;; -203C;DOUBLE EXCLAMATION MARK;Po;0;ON; 0021 0021;;;;N;;;;; -203D;INTERROBANG;Po;0;ON;;;;;N;;;;; -203E;OVERLINE;Po;0;ON; 0020 0305;;;;N;SPACING OVERSCORE;;;; -203F;UNDERTIE;Pc;0;ON;;;;;N;;;;; -2040;CHARACTER TIE;Pc;0;ON;;;;;N;;;;; -2041;CARET INSERTION POINT;Po;0;ON;;;;;N;;;;; -2042;ASTERISM;Po;0;ON;;;;;N;;;;; -2043;HYPHEN BULLET;Po;0;ON;;;;;N;;;;; -2044;FRACTION SLASH;Sm;0;CS;;;;;N;;;;; -2045;LEFT SQUARE BRACKET WITH QUILL;Ps;0;ON;;;;;Y;;;;; -2046;RIGHT SQUARE BRACKET WITH QUILL;Pe;0;ON;;;;;Y;;;;; -2047;DOUBLE QUESTION MARK;Po;0;ON; 003F 003F;;;;N;;;;; -2048;QUESTION EXCLAMATION MARK;Po;0;ON; 003F 0021;;;;N;;;;; -2049;EXCLAMATION QUESTION MARK;Po;0;ON; 0021 003F;;;;N;;;;; -204A;TIRONIAN SIGN ET;Po;0;ON;;;;;N;;;;; -204B;REVERSED PILCROW SIGN;Po;0;ON;;;;;N;;;;; -204C;BLACK LEFTWARDS BULLET;Po;0;ON;;;;;N;;;;; -204D;BLACK RIGHTWARDS BULLET;Po;0;ON;;;;;N;;;;; -204E;LOW ASTERISK;Po;0;ON;;;;;N;;;;; -204F;REVERSED SEMICOLON;Po;0;ON;;;;;N;;;;; -2050;CLOSE UP;Po;0;ON;;;;;N;;;;; -2051;TWO ASTERISKS ALIGNED VERTICALLY;Po;0;ON;;;;;N;;;;; -2052;COMMERCIAL MINUS SIGN;Sm;0;ON;;;;;N;;;;; -2053;SWUNG DASH;Po;0;ON;;;;;N;;;;; -2054;INVERTED UNDERTIE;Pc;0;ON;;;;;N;;;;; -2055;FLOWER PUNCTUATION MARK;Po;0;ON;;;;;N;;;;; -2056;THREE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; -2057;QUADRUPLE PRIME;Po;0;ON; 2032 2032 2032 2032;;;;N;;;;; -2058;FOUR DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; -2059;FIVE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; -205A;TWO DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; -205B;FOUR DOT MARK;Po;0;ON;;;;;N;;;;; -205C;DOTTED CROSS;Po;0;ON;;;;;N;;;;; -205D;TRICOLON;Po;0;ON;;;;;N;;;;; -205E;VERTICAL FOUR DOTS;Po;0;ON;;;;;N;;;;; -205F;MEDIUM MATHEMATICAL SPACE;Zs;0;WS; 0020;;;;N;;;;; -2060;WORD JOINER;Cf;0;BN;;;;;N;;;;; -2061;FUNCTION APPLICATION;Cf;0;BN;;;;;N;;;;; -2062;INVISIBLE TIMES;Cf;0;BN;;;;;N;;;;; -2063;INVISIBLE SEPARATOR;Cf;0;BN;;;;;N;;;;; -2064;INVISIBLE PLUS;Cf;0;BN;;;;;N;;;;; -206A;INHIBIT SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;; -206B;ACTIVATE SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;; -206C;INHIBIT ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;; -206D;ACTIVATE ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;; -206E;NATIONAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;; -206F;NOMINAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;; -2070;SUPERSCRIPT ZERO;No;0;EN; 0030;;0;0;N;SUPERSCRIPT DIGIT ZERO;;;; -2071;SUPERSCRIPT LATIN SMALL LETTER I;Lm;0;L; 0069;;;;N;;;;; -2074;SUPERSCRIPT FOUR;No;0;EN; 0034;;4;4;N;SUPERSCRIPT DIGIT FOUR;;;; -2075;SUPERSCRIPT FIVE;No;0;EN; 0035;;5;5;N;SUPERSCRIPT DIGIT FIVE;;;; -2076;SUPERSCRIPT SIX;No;0;EN; 0036;;6;6;N;SUPERSCRIPT DIGIT SIX;;;; -2077;SUPERSCRIPT SEVEN;No;0;EN; 0037;;7;7;N;SUPERSCRIPT DIGIT SEVEN;;;; -2078;SUPERSCRIPT EIGHT;No;0;EN; 0038;;8;8;N;SUPERSCRIPT DIGIT EIGHT;;;; -2079;SUPERSCRIPT NINE;No;0;EN; 0039;;9;9;N;SUPERSCRIPT DIGIT NINE;;;; -207A;SUPERSCRIPT PLUS SIGN;Sm;0;ES; 002B;;;;N;;;;; -207B;SUPERSCRIPT MINUS;Sm;0;ES; 2212;;;;N;SUPERSCRIPT HYPHEN-MINUS;;;; -207C;SUPERSCRIPT EQUALS SIGN;Sm;0;ON; 003D;;;;N;;;;; -207D;SUPERSCRIPT LEFT PARENTHESIS;Ps;0;ON; 0028;;;;Y;SUPERSCRIPT OPENING PARENTHESIS;;;; -207E;SUPERSCRIPT RIGHT PARENTHESIS;Pe;0;ON; 0029;;;;Y;SUPERSCRIPT CLOSING PARENTHESIS;;;; -207F;SUPERSCRIPT LATIN SMALL LETTER N;Lm;0;L; 006E;;;;N;;;;; -2080;SUBSCRIPT ZERO;No;0;EN; 0030;;0;0;N;SUBSCRIPT DIGIT ZERO;;;; -2081;SUBSCRIPT ONE;No;0;EN; 0031;;1;1;N;SUBSCRIPT DIGIT ONE;;;; -2082;SUBSCRIPT TWO;No;0;EN; 0032;;2;2;N;SUBSCRIPT DIGIT TWO;;;; -2083;SUBSCRIPT THREE;No;0;EN; 0033;;3;3;N;SUBSCRIPT DIGIT THREE;;;; -2084;SUBSCRIPT FOUR;No;0;EN; 0034;;4;4;N;SUBSCRIPT DIGIT FOUR;;;; -2085;SUBSCRIPT FIVE;No;0;EN; 0035;;5;5;N;SUBSCRIPT DIGIT FIVE;;;; -2086;SUBSCRIPT SIX;No;0;EN; 0036;;6;6;N;SUBSCRIPT DIGIT SIX;;;; -2087;SUBSCRIPT SEVEN;No;0;EN; 0037;;7;7;N;SUBSCRIPT DIGIT SEVEN;;;; -2088;SUBSCRIPT EIGHT;No;0;EN; 0038;;8;8;N;SUBSCRIPT DIGIT EIGHT;;;; -2089;SUBSCRIPT NINE;No;0;EN; 0039;;9;9;N;SUBSCRIPT DIGIT NINE;;;; -208A;SUBSCRIPT PLUS SIGN;Sm;0;ES; 002B;;;;N;;;;; -208B;SUBSCRIPT MINUS;Sm;0;ES; 2212;;;;N;SUBSCRIPT HYPHEN-MINUS;;;; -208C;SUBSCRIPT EQUALS SIGN;Sm;0;ON; 003D;;;;N;;;;; -208D;SUBSCRIPT LEFT PARENTHESIS;Ps;0;ON; 0028;;;;Y;SUBSCRIPT OPENING PARENTHESIS;;;; -208E;SUBSCRIPT RIGHT PARENTHESIS;Pe;0;ON; 0029;;;;Y;SUBSCRIPT CLOSING PARENTHESIS;;;; -2090;LATIN SUBSCRIPT SMALL LETTER A;Lm;0;L; 0061;;;;N;;;;; -2091;LATIN SUBSCRIPT SMALL LETTER E;Lm;0;L; 0065;;;;N;;;;; -2092;LATIN SUBSCRIPT SMALL LETTER O;Lm;0;L; 006F;;;;N;;;;; -2093;LATIN SUBSCRIPT SMALL LETTER X;Lm;0;L; 0078;;;;N;;;;; -2094;LATIN SUBSCRIPT SMALL LETTER SCHWA;Lm;0;L; 0259;;;;N;;;;; -20A0;EURO-CURRENCY SIGN;Sc;0;ET;;;;;N;;;;; -20A1;COLON SIGN;Sc;0;ET;;;;;N;;;;; -20A2;CRUZEIRO SIGN;Sc;0;ET;;;;;N;;;;; -20A3;FRENCH FRANC SIGN;Sc;0;ET;;;;;N;;;;; -20A4;LIRA SIGN;Sc;0;ET;;;;;N;;;;; -20A5;MILL SIGN;Sc;0;ET;;;;;N;;;;; -20A6;NAIRA SIGN;Sc;0;ET;;;;;N;;;;; -20A7;PESETA SIGN;Sc;0;ET;;;;;N;;;;; -20A8;RUPEE SIGN;Sc;0;ET; 0052 0073;;;;N;;;;; -20A9;WON SIGN;Sc;0;ET;;;;;N;;;;; -20AA;NEW SHEQEL SIGN;Sc;0;ET;;;;;N;;;;; -20AB;DONG SIGN;Sc;0;ET;;;;;N;;;;; -20AC;EURO SIGN;Sc;0;ET;;;;;N;;;;; -20AD;KIP SIGN;Sc;0;ET;;;;;N;;;;; -20AE;TUGRIK SIGN;Sc;0;ET;;;;;N;;;;; -20AF;DRACHMA SIGN;Sc;0;ET;;;;;N;;;;; -20B0;GERMAN PENNY SIGN;Sc;0;ET;;;;;N;;;;; -20B1;PESO SIGN;Sc;0;ET;;;;;N;;;;; -20B2;GUARANI SIGN;Sc;0;ET;;;;;N;;;;; -20B3;AUSTRAL SIGN;Sc;0;ET;;;;;N;;;;; -20B4;HRYVNIA SIGN;Sc;0;ET;;;;;N;;;;; -20B5;CEDI SIGN;Sc;0;ET;;;;;N;;;;; -20B6;LIVRE TOURNOIS SIGN;Sc;0;ET;;;;;N;;;;; -20B7;SPESMILO SIGN;Sc;0;ET;;;;;N;;;;; -20B8;TENGE SIGN;Sc;0;ET;;;;;N;;;;; -20D0;COMBINING LEFT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;; -20D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;; -20D2;COMBINING LONG VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG VERTICAL BAR OVERLAY;;;; -20D3;COMBINING SHORT VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT VERTICAL BAR OVERLAY;;;; -20D4;COMBINING ANTICLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING ANTICLOCKWISE ARROW ABOVE;;;; -20D5;COMBINING CLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING CLOCKWISE ARROW ABOVE;;;; -20D6;COMBINING LEFT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT ARROW ABOVE;;;; -20D7;COMBINING RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT ARROW ABOVE;;;; -20D8;COMBINING RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING RING OVERLAY;;;; -20D9;COMBINING CLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING CLOCKWISE RING OVERLAY;;;; -20DA;COMBINING ANTICLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING ANTICLOCKWISE RING OVERLAY;;;; -20DB;COMBINING THREE DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING THREE DOTS ABOVE;;;; -20DC;COMBINING FOUR DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING FOUR DOTS ABOVE;;;; -20DD;COMBINING ENCLOSING CIRCLE;Me;0;NSM;;;;;N;ENCLOSING CIRCLE;;;; -20DE;COMBINING ENCLOSING SQUARE;Me;0;NSM;;;;;N;ENCLOSING SQUARE;;;; -20DF;COMBINING ENCLOSING DIAMOND;Me;0;NSM;;;;;N;ENCLOSING DIAMOND;;;; -20E0;COMBINING ENCLOSING CIRCLE BACKSLASH;Me;0;NSM;;;;;N;ENCLOSING CIRCLE SLASH;;;; -20E1;COMBINING LEFT RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT RIGHT ARROW ABOVE;;;; -20E2;COMBINING ENCLOSING SCREEN;Me;0;NSM;;;;;N;;;;; -20E3;COMBINING ENCLOSING KEYCAP;Me;0;NSM;;;;;N;;;;; -20E4;COMBINING ENCLOSING UPWARD POINTING TRIANGLE;Me;0;NSM;;;;;N;;;;; -20E5;COMBINING REVERSE SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;;;;; -20E6;COMBINING DOUBLE VERTICAL STROKE OVERLAY;Mn;1;NSM;;;;;N;;;;; -20E7;COMBINING ANNUITY SYMBOL;Mn;230;NSM;;;;;N;;;;; -20E8;COMBINING TRIPLE UNDERDOT;Mn;220;NSM;;;;;N;;;;; -20E9;COMBINING WIDE BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;; -20EA;COMBINING LEFTWARDS ARROW OVERLAY;Mn;1;NSM;;;;;N;;;;; -20EB;COMBINING LONG DOUBLE SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;;;;; -20EC;COMBINING RIGHTWARDS HARPOON WITH BARB DOWNWARDS;Mn;220;NSM;;;;;N;;;;; -20ED;COMBINING LEFTWARDS HARPOON WITH BARB DOWNWARDS;Mn;220;NSM;;;;;N;;;;; -20EE;COMBINING LEFT ARROW BELOW;Mn;220;NSM;;;;;N;;;;; -20EF;COMBINING RIGHT ARROW BELOW;Mn;220;NSM;;;;;N;;;;; -20F0;COMBINING ASTERISK ABOVE;Mn;230;NSM;;;;;N;;;;; -2100;ACCOUNT OF;So;0;ON; 0061 002F 0063;;;;N;;;;; -2101;ADDRESSED TO THE SUBJECT;So;0;ON; 0061 002F 0073;;;;N;;;;; -2102;DOUBLE-STRUCK CAPITAL C;Lu;0;L; 0043;;;;N;DOUBLE-STRUCK C;;;; -2103;DEGREE CELSIUS;So;0;ON; 00B0 0043;;;;N;DEGREES CENTIGRADE;;;; -2104;CENTRE LINE SYMBOL;So;0;ON;;;;;N;C L SYMBOL;;;; -2105;CARE OF;So;0;ON; 0063 002F 006F;;;;N;;;;; -2106;CADA UNA;So;0;ON; 0063 002F 0075;;;;N;;;;; -2107;EULER CONSTANT;Lu;0;L; 0190;;;;N;EULERS;;;; -2108;SCRUPLE;So;0;ON;;;;;N;;;;; -2109;DEGREE FAHRENHEIT;So;0;ON; 00B0 0046;;;;N;DEGREES FAHRENHEIT;;;; -210A;SCRIPT SMALL G;Ll;0;L; 0067;;;;N;;;;; -210B;SCRIPT CAPITAL H;Lu;0;L; 0048;;;;N;SCRIPT H;;;; -210C;BLACK-LETTER CAPITAL H;Lu;0;L; 0048;;;;N;BLACK-LETTER H;;;; -210D;DOUBLE-STRUCK CAPITAL H;Lu;0;L; 0048;;;;N;DOUBLE-STRUCK H;;;; -210E;PLANCK CONSTANT;Ll;0;L; 0068;;;;N;;;;; -210F;PLANCK CONSTANT OVER TWO PI;Ll;0;L; 0127;;;;N;PLANCK CONSTANT OVER 2 PI;;;; -2110;SCRIPT CAPITAL I;Lu;0;L; 0049;;;;N;SCRIPT I;;;; -2111;BLACK-LETTER CAPITAL I;Lu;0;L; 0049;;;;N;BLACK-LETTER I;;;; -2112;SCRIPT CAPITAL L;Lu;0;L; 004C;;;;N;SCRIPT L;;;; -2113;SCRIPT SMALL L;Ll;0;L; 006C;;;;N;;;;; -2114;L B BAR SYMBOL;So;0;ON;;;;;N;;;;; -2115;DOUBLE-STRUCK CAPITAL N;Lu;0;L; 004E;;;;N;DOUBLE-STRUCK N;;;; -2116;NUMERO SIGN;So;0;ON; 004E 006F;;;;N;NUMERO;;;; -2117;SOUND RECORDING COPYRIGHT;So;0;ON;;;;;N;;;;; -2118;SCRIPT CAPITAL P;So;0;ON;;;;;N;SCRIPT P;;;; -2119;DOUBLE-STRUCK CAPITAL P;Lu;0;L; 0050;;;;N;DOUBLE-STRUCK P;;;; -211A;DOUBLE-STRUCK CAPITAL Q;Lu;0;L; 0051;;;;N;DOUBLE-STRUCK Q;;;; -211B;SCRIPT CAPITAL R;Lu;0;L; 0052;;;;N;SCRIPT R;;;; -211C;BLACK-LETTER CAPITAL R;Lu;0;L; 0052;;;;N;BLACK-LETTER R;;;; -211D;DOUBLE-STRUCK CAPITAL R;Lu;0;L; 0052;;;;N;DOUBLE-STRUCK R;;;; -211E;PRESCRIPTION TAKE;So;0;ON;;;;;N;;;;; -211F;RESPONSE;So;0;ON;;;;;N;;;;; -2120;SERVICE MARK;So;0;ON; 0053 004D;;;;N;;;;; -2121;TELEPHONE SIGN;So;0;ON; 0054 0045 004C;;;;N;T E L SYMBOL;;;; -2122;TRADE MARK SIGN;So;0;ON; 0054 004D;;;;N;TRADEMARK;;;; -2123;VERSICLE;So;0;ON;;;;;N;;;;; -2124;DOUBLE-STRUCK CAPITAL Z;Lu;0;L; 005A;;;;N;DOUBLE-STRUCK Z;;;; -2125;OUNCE SIGN;So;0;ON;;;;;N;OUNCE;;;; -2126;OHM SIGN;Lu;0;L;03A9;;;;N;OHM;;;03C9; -2127;INVERTED OHM SIGN;So;0;ON;;;;;N;MHO;;;; -2128;BLACK-LETTER CAPITAL Z;Lu;0;L; 005A;;;;N;BLACK-LETTER Z;;;; -2129;TURNED GREEK SMALL LETTER IOTA;So;0;ON;;;;;N;;;;; -212A;KELVIN SIGN;Lu;0;L;004B;;;;N;DEGREES KELVIN;;;006B; -212B;ANGSTROM SIGN;Lu;0;L;00C5;;;;N;ANGSTROM UNIT;;;00E5; -212C;SCRIPT CAPITAL B;Lu;0;L; 0042;;;;N;SCRIPT B;;;; -212D;BLACK-LETTER CAPITAL C;Lu;0;L; 0043;;;;N;BLACK-LETTER C;;;; -212E;ESTIMATED SYMBOL;So;0;ET;;;;;N;;;;; -212F;SCRIPT SMALL E;Ll;0;L; 0065;;;;N;;;;; -2130;SCRIPT CAPITAL E;Lu;0;L; 0045;;;;N;SCRIPT E;;;; -2131;SCRIPT CAPITAL F;Lu;0;L; 0046;;;;N;SCRIPT F;;;; -2132;TURNED CAPITAL F;Lu;0;L;;;;;N;TURNED F;;;214E; -2133;SCRIPT CAPITAL M;Lu;0;L; 004D;;;;N;SCRIPT M;;;; -2134;SCRIPT SMALL O;Ll;0;L; 006F;;;;N;;;;; -2135;ALEF SYMBOL;Lo;0;L; 05D0;;;;N;FIRST TRANSFINITE CARDINAL;;;; -2136;BET SYMBOL;Lo;0;L; 05D1;;;;N;SECOND TRANSFINITE CARDINAL;;;; -2137;GIMEL SYMBOL;Lo;0;L; 05D2;;;;N;THIRD TRANSFINITE CARDINAL;;;; -2138;DALET SYMBOL;Lo;0;L; 05D3;;;;N;FOURTH TRANSFINITE CARDINAL;;;; -2139;INFORMATION SOURCE;Ll;0;L; 0069;;;;N;;;;; -213A;ROTATED CAPITAL Q;So;0;ON;;;;;N;;;;; -213B;FACSIMILE SIGN;So;0;ON; 0046 0041 0058;;;;N;;;;; -213C;DOUBLE-STRUCK SMALL PI;Ll;0;L; 03C0;;;;N;;;;; -213D;DOUBLE-STRUCK SMALL GAMMA;Ll;0;L; 03B3;;;;N;;;;; -213E;DOUBLE-STRUCK CAPITAL GAMMA;Lu;0;L; 0393;;;;N;;;;; -213F;DOUBLE-STRUCK CAPITAL PI;Lu;0;L; 03A0;;;;N;;;;; -2140;DOUBLE-STRUCK N-ARY SUMMATION;Sm;0;ON; 2211;;;;Y;;;;; -2141;TURNED SANS-SERIF CAPITAL G;Sm;0;ON;;;;;N;;;;; -2142;TURNED SANS-SERIF CAPITAL L;Sm;0;ON;;;;;N;;;;; -2143;REVERSED SANS-SERIF CAPITAL L;Sm;0;ON;;;;;N;;;;; -2144;TURNED SANS-SERIF CAPITAL Y;Sm;0;ON;;;;;N;;;;; -2145;DOUBLE-STRUCK ITALIC CAPITAL D;Lu;0;L; 0044;;;;N;;;;; -2146;DOUBLE-STRUCK ITALIC SMALL D;Ll;0;L; 0064;;;;N;;;;; -2147;DOUBLE-STRUCK ITALIC SMALL E;Ll;0;L; 0065;;;;N;;;;; -2148;DOUBLE-STRUCK ITALIC SMALL I;Ll;0;L; 0069;;;;N;;;;; -2149;DOUBLE-STRUCK ITALIC SMALL J;Ll;0;L; 006A;;;;N;;;;; -214A;PROPERTY LINE;So;0;ON;;;;;N;;;;; -214B;TURNED AMPERSAND;Sm;0;ON;;;;;N;;;;; -214C;PER SIGN;So;0;ON;;;;;N;;;;; -214D;AKTIESELSKAB;So;0;ON;;;;;N;;;;; -214E;TURNED SMALL F;Ll;0;L;;;;;N;;;2132;;2132 -214F;SYMBOL FOR SAMARITAN SOURCE;So;0;L;;;;;N;;;;; -2150;VULGAR FRACTION ONE SEVENTH;No;0;ON; 0031 2044 0037;;;1/7;N;;;;; -2151;VULGAR FRACTION ONE NINTH;No;0;ON; 0031 2044 0039;;;1/9;N;;;;; -2152;VULGAR FRACTION ONE TENTH;No;0;ON; 0031 2044 0031 0030;;;1/10;N;;;;; -2153;VULGAR FRACTION ONE THIRD;No;0;ON; 0031 2044 0033;;;1/3;N;FRACTION ONE THIRD;;;; -2154;VULGAR FRACTION TWO THIRDS;No;0;ON; 0032 2044 0033;;;2/3;N;FRACTION TWO THIRDS;;;; -2155;VULGAR FRACTION ONE FIFTH;No;0;ON; 0031 2044 0035;;;1/5;N;FRACTION ONE FIFTH;;;; -2156;VULGAR FRACTION TWO FIFTHS;No;0;ON; 0032 2044 0035;;;2/5;N;FRACTION TWO FIFTHS;;;; -2157;VULGAR FRACTION THREE FIFTHS;No;0;ON; 0033 2044 0035;;;3/5;N;FRACTION THREE FIFTHS;;;; -2158;VULGAR FRACTION FOUR FIFTHS;No;0;ON; 0034 2044 0035;;;4/5;N;FRACTION FOUR FIFTHS;;;; -2159;VULGAR FRACTION ONE SIXTH;No;0;ON; 0031 2044 0036;;;1/6;N;FRACTION ONE SIXTH;;;; -215A;VULGAR FRACTION FIVE SIXTHS;No;0;ON; 0035 2044 0036;;;5/6;N;FRACTION FIVE SIXTHS;;;; -215B;VULGAR FRACTION ONE EIGHTH;No;0;ON; 0031 2044 0038;;;1/8;N;FRACTION ONE EIGHTH;;;; -215C;VULGAR FRACTION THREE EIGHTHS;No;0;ON; 0033 2044 0038;;;3/8;N;FRACTION THREE EIGHTHS;;;; -215D;VULGAR FRACTION FIVE EIGHTHS;No;0;ON; 0035 2044 0038;;;5/8;N;FRACTION FIVE EIGHTHS;;;; -215E;VULGAR FRACTION SEVEN EIGHTHS;No;0;ON; 0037 2044 0038;;;7/8;N;FRACTION SEVEN EIGHTHS;;;; -215F;FRACTION NUMERATOR ONE;No;0;ON; 0031 2044;;;1;N;;;;; -2160;ROMAN NUMERAL ONE;Nl;0;L; 0049;;;1;N;;;;2170; -2161;ROMAN NUMERAL TWO;Nl;0;L; 0049 0049;;;2;N;;;;2171; -2162;ROMAN NUMERAL THREE;Nl;0;L; 0049 0049 0049;;;3;N;;;;2172; -2163;ROMAN NUMERAL FOUR;Nl;0;L; 0049 0056;;;4;N;;;;2173; -2164;ROMAN NUMERAL FIVE;Nl;0;L; 0056;;;5;N;;;;2174; -2165;ROMAN NUMERAL SIX;Nl;0;L; 0056 0049;;;6;N;;;;2175; -2166;ROMAN NUMERAL SEVEN;Nl;0;L; 0056 0049 0049;;;7;N;;;;2176; -2167;ROMAN NUMERAL EIGHT;Nl;0;L; 0056 0049 0049 0049;;;8;N;;;;2177; -2168;ROMAN NUMERAL NINE;Nl;0;L; 0049 0058;;;9;N;;;;2178; -2169;ROMAN NUMERAL TEN;Nl;0;L; 0058;;;10;N;;;;2179; -216A;ROMAN NUMERAL ELEVEN;Nl;0;L; 0058 0049;;;11;N;;;;217A; -216B;ROMAN NUMERAL TWELVE;Nl;0;L; 0058 0049 0049;;;12;N;;;;217B; -216C;ROMAN NUMERAL FIFTY;Nl;0;L; 004C;;;50;N;;;;217C; -216D;ROMAN NUMERAL ONE HUNDRED;Nl;0;L; 0043;;;100;N;;;;217D; -216E;ROMAN NUMERAL FIVE HUNDRED;Nl;0;L; 0044;;;500;N;;;;217E; -216F;ROMAN NUMERAL ONE THOUSAND;Nl;0;L; 004D;;;1000;N;;;;217F; -2170;SMALL ROMAN NUMERAL ONE;Nl;0;L; 0069;;;1;N;;;2160;;2160 -2171;SMALL ROMAN NUMERAL TWO;Nl;0;L; 0069 0069;;;2;N;;;2161;;2161 -2172;SMALL ROMAN NUMERAL THREE;Nl;0;L; 0069 0069 0069;;;3;N;;;2162;;2162 -2173;SMALL ROMAN NUMERAL FOUR;Nl;0;L; 0069 0076;;;4;N;;;2163;;2163 -2174;SMALL ROMAN NUMERAL FIVE;Nl;0;L; 0076;;;5;N;;;2164;;2164 -2175;SMALL ROMAN NUMERAL SIX;Nl;0;L; 0076 0069;;;6;N;;;2165;;2165 -2176;SMALL ROMAN NUMERAL SEVEN;Nl;0;L; 0076 0069 0069;;;7;N;;;2166;;2166 -2177;SMALL ROMAN NUMERAL EIGHT;Nl;0;L; 0076 0069 0069 0069;;;8;N;;;2167;;2167 -2178;SMALL ROMAN NUMERAL NINE;Nl;0;L; 0069 0078;;;9;N;;;2168;;2168 -2179;SMALL ROMAN NUMERAL TEN;Nl;0;L; 0078;;;10;N;;;2169;;2169 -217A;SMALL ROMAN NUMERAL ELEVEN;Nl;0;L; 0078 0069;;;11;N;;;216A;;216A -217B;SMALL ROMAN NUMERAL TWELVE;Nl;0;L; 0078 0069 0069;;;12;N;;;216B;;216B -217C;SMALL ROMAN NUMERAL FIFTY;Nl;0;L; 006C;;;50;N;;;216C;;216C -217D;SMALL ROMAN NUMERAL ONE HUNDRED;Nl;0;L; 0063;;;100;N;;;216D;;216D -217E;SMALL ROMAN NUMERAL FIVE HUNDRED;Nl;0;L; 0064;;;500;N;;;216E;;216E -217F;SMALL ROMAN NUMERAL ONE THOUSAND;Nl;0;L; 006D;;;1000;N;;;216F;;216F -2180;ROMAN NUMERAL ONE THOUSAND C D;Nl;0;L;;;;1000;N;;;;; -2181;ROMAN NUMERAL FIVE THOUSAND;Nl;0;L;;;;5000;N;;;;; -2182;ROMAN NUMERAL TEN THOUSAND;Nl;0;L;;;;10000;N;;;;; -2183;ROMAN NUMERAL REVERSED ONE HUNDRED;Lu;0;L;;;;;N;;;;2184; -2184;LATIN SMALL LETTER REVERSED C;Ll;0;L;;;;;N;;;2183;;2183 -2185;ROMAN NUMERAL SIX LATE FORM;Nl;0;L;;;;6;N;;;;; -2186;ROMAN NUMERAL FIFTY EARLY FORM;Nl;0;L;;;;50;N;;;;; -2187;ROMAN NUMERAL FIFTY THOUSAND;Nl;0;L;;;;50000;N;;;;; -2188;ROMAN NUMERAL ONE HUNDRED THOUSAND;Nl;0;L;;;;100000;N;;;;; -2189;VULGAR FRACTION ZERO THIRDS;No;0;ON; 0030 2044 0033;;;0;N;;;;; -2190;LEFTWARDS ARROW;Sm;0;ON;;;;;N;LEFT ARROW;;;; -2191;UPWARDS ARROW;Sm;0;ON;;;;;N;UP ARROW;;;; -2192;RIGHTWARDS ARROW;Sm;0;ON;;;;;N;RIGHT ARROW;;;; -2193;DOWNWARDS ARROW;Sm;0;ON;;;;;N;DOWN ARROW;;;; -2194;LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;; -2195;UP DOWN ARROW;So;0;ON;;;;;N;;;;; -2196;NORTH WEST ARROW;So;0;ON;;;;;N;UPPER LEFT ARROW;;;; -2197;NORTH EAST ARROW;So;0;ON;;;;;N;UPPER RIGHT ARROW;;;; -2198;SOUTH EAST ARROW;So;0;ON;;;;;N;LOWER RIGHT ARROW;;;; -2199;SOUTH WEST ARROW;So;0;ON;;;;;N;LOWER LEFT ARROW;;;; -219A;LEFTWARDS ARROW WITH STROKE;Sm;0;ON;2190 0338;;;;N;LEFT ARROW WITH STROKE;;;; -219B;RIGHTWARDS ARROW WITH STROKE;Sm;0;ON;2192 0338;;;;N;RIGHT ARROW WITH STROKE;;;; -219C;LEFTWARDS WAVE ARROW;So;0;ON;;;;;N;LEFT WAVE ARROW;;;; -219D;RIGHTWARDS WAVE ARROW;So;0;ON;;;;;N;RIGHT WAVE ARROW;;;; -219E;LEFTWARDS TWO HEADED ARROW;So;0;ON;;;;;N;LEFT TWO HEADED ARROW;;;; -219F;UPWARDS TWO HEADED ARROW;So;0;ON;;;;;N;UP TWO HEADED ARROW;;;; -21A0;RIGHTWARDS TWO HEADED ARROW;Sm;0;ON;;;;;N;RIGHT TWO HEADED ARROW;;;; -21A1;DOWNWARDS TWO HEADED ARROW;So;0;ON;;;;;N;DOWN TWO HEADED ARROW;;;; -21A2;LEFTWARDS ARROW WITH TAIL;So;0;ON;;;;;N;LEFT ARROW WITH TAIL;;;; -21A3;RIGHTWARDS ARROW WITH TAIL;Sm;0;ON;;;;;N;RIGHT ARROW WITH TAIL;;;; -21A4;LEFTWARDS ARROW FROM BAR;So;0;ON;;;;;N;LEFT ARROW FROM BAR;;;; -21A5;UPWARDS ARROW FROM BAR;So;0;ON;;;;;N;UP ARROW FROM BAR;;;; -21A6;RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;RIGHT ARROW FROM BAR;;;; -21A7;DOWNWARDS ARROW FROM BAR;So;0;ON;;;;;N;DOWN ARROW FROM BAR;;;; -21A8;UP DOWN ARROW WITH BASE;So;0;ON;;;;;N;;;;; -21A9;LEFTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;LEFT ARROW WITH HOOK;;;; -21AA;RIGHTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;RIGHT ARROW WITH HOOK;;;; -21AB;LEFTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;LEFT ARROW WITH LOOP;;;; -21AC;RIGHTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;RIGHT ARROW WITH LOOP;;;; -21AD;LEFT RIGHT WAVE ARROW;So;0;ON;;;;;N;;;;; -21AE;LEFT RIGHT ARROW WITH STROKE;Sm;0;ON;2194 0338;;;;N;;;;; -21AF;DOWNWARDS ZIGZAG ARROW;So;0;ON;;;;;N;DOWN ZIGZAG ARROW;;;; -21B0;UPWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP LEFT;;;; -21B1;UPWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP RIGHT;;;; -21B2;DOWNWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP LEFT;;;; -21B3;DOWNWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP RIGHT;;;; -21B4;RIGHTWARDS ARROW WITH CORNER DOWNWARDS;So;0;ON;;;;;N;RIGHT ARROW WITH CORNER DOWN;;;; -21B5;DOWNWARDS ARROW WITH CORNER LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH CORNER LEFT;;;; -21B6;ANTICLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;; -21B7;CLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;; -21B8;NORTH WEST ARROW TO LONG BAR;So;0;ON;;;;;N;UPPER LEFT ARROW TO LONG BAR;;;; -21B9;LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR OVER RIGHT ARROW TO BAR;;;; -21BA;ANTICLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;; -21BB;CLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;; -21BC;LEFTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB UP;;;; -21BD;LEFTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB DOWN;;;; -21BE;UPWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB RIGHT;;;; -21BF;UPWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB LEFT;;;; -21C0;RIGHTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB UP;;;; -21C1;RIGHTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB DOWN;;;; -21C2;DOWNWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB RIGHT;;;; -21C3;DOWNWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB LEFT;;;; -21C4;RIGHTWARDS ARROW OVER LEFTWARDS ARROW;So;0;ON;;;;;N;RIGHT ARROW OVER LEFT ARROW;;;; -21C5;UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW;So;0;ON;;;;;N;UP ARROW LEFT OF DOWN ARROW;;;; -21C6;LEFTWARDS ARROW OVER RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT ARROW OVER RIGHT ARROW;;;; -21C7;LEFTWARDS PAIRED ARROWS;So;0;ON;;;;;N;LEFT PAIRED ARROWS;;;; -21C8;UPWARDS PAIRED ARROWS;So;0;ON;;;;;N;UP PAIRED ARROWS;;;; -21C9;RIGHTWARDS PAIRED ARROWS;So;0;ON;;;;;N;RIGHT PAIRED ARROWS;;;; -21CA;DOWNWARDS PAIRED ARROWS;So;0;ON;;;;;N;DOWN PAIRED ARROWS;;;; -21CB;LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON;So;0;ON;;;;;N;LEFT HARPOON OVER RIGHT HARPOON;;;; -21CC;RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON;So;0;ON;;;;;N;RIGHT HARPOON OVER LEFT HARPOON;;;; -21CD;LEFTWARDS DOUBLE ARROW WITH STROKE;So;0;ON;21D0 0338;;;;N;LEFT DOUBLE ARROW WITH STROKE;;;; -21CE;LEFT RIGHT DOUBLE ARROW WITH STROKE;Sm;0;ON;21D4 0338;;;;N;;;;; -21CF;RIGHTWARDS DOUBLE ARROW WITH STROKE;Sm;0;ON;21D2 0338;;;;N;RIGHT DOUBLE ARROW WITH STROKE;;;; -21D0;LEFTWARDS DOUBLE ARROW;So;0;ON;;;;;N;LEFT DOUBLE ARROW;;;; -21D1;UPWARDS DOUBLE ARROW;So;0;ON;;;;;N;UP DOUBLE ARROW;;;; -21D2;RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;RIGHT DOUBLE ARROW;;;; -21D3;DOWNWARDS DOUBLE ARROW;So;0;ON;;;;;N;DOWN DOUBLE ARROW;;;; -21D4;LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;; -21D5;UP DOWN DOUBLE ARROW;So;0;ON;;;;;N;;;;; -21D6;NORTH WEST DOUBLE ARROW;So;0;ON;;;;;N;UPPER LEFT DOUBLE ARROW;;;; -21D7;NORTH EAST DOUBLE ARROW;So;0;ON;;;;;N;UPPER RIGHT DOUBLE ARROW;;;; -21D8;SOUTH EAST DOUBLE ARROW;So;0;ON;;;;;N;LOWER RIGHT DOUBLE ARROW;;;; -21D9;SOUTH WEST DOUBLE ARROW;So;0;ON;;;;;N;LOWER LEFT DOUBLE ARROW;;;; -21DA;LEFTWARDS TRIPLE ARROW;So;0;ON;;;;;N;LEFT TRIPLE ARROW;;;; -21DB;RIGHTWARDS TRIPLE ARROW;So;0;ON;;;;;N;RIGHT TRIPLE ARROW;;;; -21DC;LEFTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;LEFT SQUIGGLE ARROW;;;; -21DD;RIGHTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;RIGHT SQUIGGLE ARROW;;;; -21DE;UPWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;UP ARROW WITH DOUBLE STROKE;;;; -21DF;DOWNWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;DOWN ARROW WITH DOUBLE STROKE;;;; -21E0;LEFTWARDS DASHED ARROW;So;0;ON;;;;;N;LEFT DASHED ARROW;;;; -21E1;UPWARDS DASHED ARROW;So;0;ON;;;;;N;UP DASHED ARROW;;;; -21E2;RIGHTWARDS DASHED ARROW;So;0;ON;;;;;N;RIGHT DASHED ARROW;;;; -21E3;DOWNWARDS DASHED ARROW;So;0;ON;;;;;N;DOWN DASHED ARROW;;;; -21E4;LEFTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR;;;; -21E5;RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;RIGHT ARROW TO BAR;;;; -21E6;LEFTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE LEFT ARROW;;;; -21E7;UPWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE UP ARROW;;;; -21E8;RIGHTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE RIGHT ARROW;;;; -21E9;DOWNWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE DOWN ARROW;;;; -21EA;UPWARDS WHITE ARROW FROM BAR;So;0;ON;;;;;N;WHITE UP ARROW FROM BAR;;;; -21EB;UPWARDS WHITE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;; -21EC;UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR;So;0;ON;;;;;N;;;;; -21ED;UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR;So;0;ON;;;;;N;;;;; -21EE;UPWARDS WHITE DOUBLE ARROW;So;0;ON;;;;;N;;;;; -21EF;UPWARDS WHITE DOUBLE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;; -21F0;RIGHTWARDS WHITE ARROW FROM WALL;So;0;ON;;;;;N;;;;; -21F1;NORTH WEST ARROW TO CORNER;So;0;ON;;;;;N;;;;; -21F2;SOUTH EAST ARROW TO CORNER;So;0;ON;;;;;N;;;;; -21F3;UP DOWN WHITE ARROW;So;0;ON;;;;;N;;;;; -21F4;RIGHT ARROW WITH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; -21F5;DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW;Sm;0;ON;;;;;N;;;;; -21F6;THREE RIGHTWARDS ARROWS;Sm;0;ON;;;;;N;;;;; -21F7;LEFTWARDS ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -21F8;RIGHTWARDS ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -21F9;LEFT RIGHT ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -21FA;LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -21FB;RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -21FC;LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -21FD;LEFTWARDS OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;; -21FE;RIGHTWARDS OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;; -21FF;LEFT RIGHT OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;; -2200;FOR ALL;Sm;0;ON;;;;;N;;;;; -2201;COMPLEMENT;Sm;0;ON;;;;;Y;;;;; -2202;PARTIAL DIFFERENTIAL;Sm;0;ON;;;;;Y;;;;; -2203;THERE EXISTS;Sm;0;ON;;;;;Y;;;;; -2204;THERE DOES NOT EXIST;Sm;0;ON;2203 0338;;;;Y;;;;; -2205;EMPTY SET;Sm;0;ON;;;;;N;;;;; -2206;INCREMENT;Sm;0;ON;;;;;N;;;;; -2207;NABLA;Sm;0;ON;;;;;N;;;;; -2208;ELEMENT OF;Sm;0;ON;;;;;Y;;;;; -2209;NOT AN ELEMENT OF;Sm;0;ON;2208 0338;;;;Y;;;;; -220A;SMALL ELEMENT OF;Sm;0;ON;;;;;Y;;;;; -220B;CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;; -220C;DOES NOT CONTAIN AS MEMBER;Sm;0;ON;220B 0338;;;;Y;;;;; -220D;SMALL CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;; -220E;END OF PROOF;Sm;0;ON;;;;;N;;;;; -220F;N-ARY PRODUCT;Sm;0;ON;;;;;N;;;;; -2210;N-ARY COPRODUCT;Sm;0;ON;;;;;N;;;;; -2211;N-ARY SUMMATION;Sm;0;ON;;;;;Y;;;;; -2212;MINUS SIGN;Sm;0;ES;;;;;N;;;;; -2213;MINUS-OR-PLUS SIGN;Sm;0;ET;;;;;N;;;;; -2214;DOT PLUS;Sm;0;ON;;;;;N;;;;; -2215;DIVISION SLASH;Sm;0;ON;;;;;Y;;;;; -2216;SET MINUS;Sm;0;ON;;;;;Y;;;;; -2217;ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;; -2218;RING OPERATOR;Sm;0;ON;;;;;N;;;;; -2219;BULLET OPERATOR;Sm;0;ON;;;;;N;;;;; -221A;SQUARE ROOT;Sm;0;ON;;;;;Y;;;;; -221B;CUBE ROOT;Sm;0;ON;;;;;Y;;;;; -221C;FOURTH ROOT;Sm;0;ON;;;;;Y;;;;; -221D;PROPORTIONAL TO;Sm;0;ON;;;;;Y;;;;; -221E;INFINITY;Sm;0;ON;;;;;N;;;;; -221F;RIGHT ANGLE;Sm;0;ON;;;;;Y;;;;; -2220;ANGLE;Sm;0;ON;;;;;Y;;;;; -2221;MEASURED ANGLE;Sm;0;ON;;;;;Y;;;;; -2222;SPHERICAL ANGLE;Sm;0;ON;;;;;Y;;;;; -2223;DIVIDES;Sm;0;ON;;;;;N;;;;; -2224;DOES NOT DIVIDE;Sm;0;ON;2223 0338;;;;Y;;;;; -2225;PARALLEL TO;Sm;0;ON;;;;;N;;;;; -2226;NOT PARALLEL TO;Sm;0;ON;2225 0338;;;;Y;;;;; -2227;LOGICAL AND;Sm;0;ON;;;;;N;;;;; -2228;LOGICAL OR;Sm;0;ON;;;;;N;;;;; -2229;INTERSECTION;Sm;0;ON;;;;;N;;;;; -222A;UNION;Sm;0;ON;;;;;N;;;;; -222B;INTEGRAL;Sm;0;ON;;;;;Y;;;;; -222C;DOUBLE INTEGRAL;Sm;0;ON; 222B 222B;;;;Y;;;;; -222D;TRIPLE INTEGRAL;Sm;0;ON; 222B 222B 222B;;;;Y;;;;; -222E;CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;; -222F;SURFACE INTEGRAL;Sm;0;ON; 222E 222E;;;;Y;;;;; -2230;VOLUME INTEGRAL;Sm;0;ON; 222E 222E 222E;;;;Y;;;;; -2231;CLOCKWISE INTEGRAL;Sm;0;ON;;;;;Y;;;;; -2232;CLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;; -2233;ANTICLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;; -2234;THEREFORE;Sm;0;ON;;;;;N;;;;; -2235;BECAUSE;Sm;0;ON;;;;;N;;;;; -2236;RATIO;Sm;0;ON;;;;;N;;;;; -2237;PROPORTION;Sm;0;ON;;;;;N;;;;; -2238;DOT MINUS;Sm;0;ON;;;;;N;;;;; -2239;EXCESS;Sm;0;ON;;;;;Y;;;;; -223A;GEOMETRIC PROPORTION;Sm;0;ON;;;;;N;;;;; -223B;HOMOTHETIC;Sm;0;ON;;;;;Y;;;;; -223C;TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; -223D;REVERSED TILDE;Sm;0;ON;;;;;Y;;;;; -223E;INVERTED LAZY S;Sm;0;ON;;;;;Y;;;;; -223F;SINE WAVE;Sm;0;ON;;;;;Y;;;;; -2240;WREATH PRODUCT;Sm;0;ON;;;;;Y;;;;; -2241;NOT TILDE;Sm;0;ON;223C 0338;;;;Y;;;;; -2242;MINUS TILDE;Sm;0;ON;;;;;Y;;;;; -2243;ASYMPTOTICALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2244;NOT ASYMPTOTICALLY EQUAL TO;Sm;0;ON;2243 0338;;;;Y;;;;; -2245;APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2246;APPROXIMATELY BUT NOT ACTUALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2247;NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO;Sm;0;ON;2245 0338;;;;Y;;;;; -2248;ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2249;NOT ALMOST EQUAL TO;Sm;0;ON;2248 0338;;;;Y;;;;; -224A;ALMOST EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -224B;TRIPLE TILDE;Sm;0;ON;;;;;Y;;;;; -224C;ALL EQUAL TO;Sm;0;ON;;;;;Y;;;;; -224D;EQUIVALENT TO;Sm;0;ON;;;;;N;;;;; -224E;GEOMETRICALLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;; -224F;DIFFERENCE BETWEEN;Sm;0;ON;;;;;N;;;;; -2250;APPROACHES THE LIMIT;Sm;0;ON;;;;;N;;;;; -2251;GEOMETRICALLY EQUAL TO;Sm;0;ON;;;;;N;;;;; -2252;APPROXIMATELY EQUAL TO OR THE IMAGE OF;Sm;0;ON;;;;;Y;;;;; -2253;IMAGE OF OR APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2254;COLON EQUALS;Sm;0;ON;;;;;Y;COLON EQUAL;;;; -2255;EQUALS COLON;Sm;0;ON;;;;;Y;EQUAL COLON;;;; -2256;RING IN EQUAL TO;Sm;0;ON;;;;;N;;;;; -2257;RING EQUAL TO;Sm;0;ON;;;;;N;;;;; -2258;CORRESPONDS TO;Sm;0;ON;;;;;N;;;;; -2259;ESTIMATES;Sm;0;ON;;;;;N;;;;; -225A;EQUIANGULAR TO;Sm;0;ON;;;;;N;;;;; -225B;STAR EQUALS;Sm;0;ON;;;;;N;;;;; -225C;DELTA EQUAL TO;Sm;0;ON;;;;;N;;;;; -225D;EQUAL TO BY DEFINITION;Sm;0;ON;;;;;N;;;;; -225E;MEASURED BY;Sm;0;ON;;;;;N;;;;; -225F;QUESTIONED EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2260;NOT EQUAL TO;Sm;0;ON;003D 0338;;;;Y;;;;; -2261;IDENTICAL TO;Sm;0;ON;;;;;N;;;;; -2262;NOT IDENTICAL TO;Sm;0;ON;2261 0338;;;;Y;;;;; -2263;STRICTLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;; -2264;LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUAL TO;;;; -2265;GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUAL TO;;;; -2266;LESS-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OVER EQUAL TO;;;; -2267;GREATER-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OVER EQUAL TO;;;; -2268;LESS-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUAL TO;;;; -2269;GREATER-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUAL TO;;;; -226A;MUCH LESS-THAN;Sm;0;ON;;;;;Y;MUCH LESS THAN;;;; -226B;MUCH GREATER-THAN;Sm;0;ON;;;;;Y;MUCH GREATER THAN;;;; -226C;BETWEEN;Sm;0;ON;;;;;N;;;;; -226D;NOT EQUIVALENT TO;Sm;0;ON;224D 0338;;;;N;;;;; -226E;NOT LESS-THAN;Sm;0;ON;003C 0338;;;;Y;NOT LESS THAN;;;; -226F;NOT GREATER-THAN;Sm;0;ON;003E 0338;;;;Y;NOT GREATER THAN;;;; -2270;NEITHER LESS-THAN NOR EQUAL TO;Sm;0;ON;2264 0338;;;;Y;NEITHER LESS THAN NOR EQUAL TO;;;; -2271;NEITHER GREATER-THAN NOR EQUAL TO;Sm;0;ON;2265 0338;;;;Y;NEITHER GREATER THAN NOR EQUAL TO;;;; -2272;LESS-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUIVALENT TO;;;; -2273;GREATER-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUIVALENT TO;;;; -2274;NEITHER LESS-THAN NOR EQUIVALENT TO;Sm;0;ON;2272 0338;;;;Y;NEITHER LESS THAN NOR EQUIVALENT TO;;;; -2275;NEITHER GREATER-THAN NOR EQUIVALENT TO;Sm;0;ON;2273 0338;;;;Y;NEITHER GREATER THAN NOR EQUIVALENT TO;;;; -2276;LESS-THAN OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN OR GREATER THAN;;;; -2277;GREATER-THAN OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN OR LESS THAN;;;; -2278;NEITHER LESS-THAN NOR GREATER-THAN;Sm;0;ON;2276 0338;;;;Y;NEITHER LESS THAN NOR GREATER THAN;;;; -2279;NEITHER GREATER-THAN NOR LESS-THAN;Sm;0;ON;2277 0338;;;;Y;NEITHER GREATER THAN NOR LESS THAN;;;; -227A;PRECEDES;Sm;0;ON;;;;;Y;;;;; -227B;SUCCEEDS;Sm;0;ON;;;;;Y;;;;; -227C;PRECEDES OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -227D;SUCCEEDS OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -227E;PRECEDES OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;; -227F;SUCCEEDS OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;; -2280;DOES NOT PRECEDE;Sm;0;ON;227A 0338;;;;Y;;;;; -2281;DOES NOT SUCCEED;Sm;0;ON;227B 0338;;;;Y;;;;; -2282;SUBSET OF;Sm;0;ON;;;;;Y;;;;; -2283;SUPERSET OF;Sm;0;ON;;;;;Y;;;;; -2284;NOT A SUBSET OF;Sm;0;ON;2282 0338;;;;Y;;;;; -2285;NOT A SUPERSET OF;Sm;0;ON;2283 0338;;;;Y;;;;; -2286;SUBSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2287;SUPERSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2288;NEITHER A SUBSET OF NOR EQUAL TO;Sm;0;ON;2286 0338;;;;Y;;;;; -2289;NEITHER A SUPERSET OF NOR EQUAL TO;Sm;0;ON;2287 0338;;;;Y;;;;; -228A;SUBSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUBSET OF OR NOT EQUAL TO;;;; -228B;SUPERSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUPERSET OF OR NOT EQUAL TO;;;; -228C;MULTISET;Sm;0;ON;;;;;Y;;;;; -228D;MULTISET MULTIPLICATION;Sm;0;ON;;;;;N;;;;; -228E;MULTISET UNION;Sm;0;ON;;;;;N;;;;; -228F;SQUARE IMAGE OF;Sm;0;ON;;;;;Y;;;;; -2290;SQUARE ORIGINAL OF;Sm;0;ON;;;;;Y;;;;; -2291;SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2292;SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2293;SQUARE CAP;Sm;0;ON;;;;;N;;;;; -2294;SQUARE CUP;Sm;0;ON;;;;;N;;;;; -2295;CIRCLED PLUS;Sm;0;ON;;;;;N;;;;; -2296;CIRCLED MINUS;Sm;0;ON;;;;;N;;;;; -2297;CIRCLED TIMES;Sm;0;ON;;;;;N;;;;; -2298;CIRCLED DIVISION SLASH;Sm;0;ON;;;;;Y;;;;; -2299;CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;; -229A;CIRCLED RING OPERATOR;Sm;0;ON;;;;;N;;;;; -229B;CIRCLED ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;; -229C;CIRCLED EQUALS;Sm;0;ON;;;;;N;;;;; -229D;CIRCLED DASH;Sm;0;ON;;;;;N;;;;; -229E;SQUARED PLUS;Sm;0;ON;;;;;N;;;;; -229F;SQUARED MINUS;Sm;0;ON;;;;;N;;;;; -22A0;SQUARED TIMES;Sm;0;ON;;;;;N;;;;; -22A1;SQUARED DOT OPERATOR;Sm;0;ON;;;;;N;;;;; -22A2;RIGHT TACK;Sm;0;ON;;;;;Y;;;;; -22A3;LEFT TACK;Sm;0;ON;;;;;Y;;;;; -22A4;DOWN TACK;Sm;0;ON;;;;;N;;;;; -22A5;UP TACK;Sm;0;ON;;;;;N;;;;; -22A6;ASSERTION;Sm;0;ON;;;;;Y;;;;; -22A7;MODELS;Sm;0;ON;;;;;Y;;;;; -22A8;TRUE;Sm;0;ON;;;;;Y;;;;; -22A9;FORCES;Sm;0;ON;;;;;Y;;;;; -22AA;TRIPLE VERTICAL BAR RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;; -22AB;DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;; -22AC;DOES NOT PROVE;Sm;0;ON;22A2 0338;;;;Y;;;;; -22AD;NOT TRUE;Sm;0;ON;22A8 0338;;;;Y;;;;; -22AE;DOES NOT FORCE;Sm;0;ON;22A9 0338;;;;Y;;;;; -22AF;NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;22AB 0338;;;;Y;;;;; -22B0;PRECEDES UNDER RELATION;Sm;0;ON;;;;;Y;;;;; -22B1;SUCCEEDS UNDER RELATION;Sm;0;ON;;;;;Y;;;;; -22B2;NORMAL SUBGROUP OF;Sm;0;ON;;;;;Y;;;;; -22B3;CONTAINS AS NORMAL SUBGROUP;Sm;0;ON;;;;;Y;;;;; -22B4;NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -22B5;CONTAINS AS NORMAL SUBGROUP OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -22B6;ORIGINAL OF;Sm;0;ON;;;;;Y;;;;; -22B7;IMAGE OF;Sm;0;ON;;;;;Y;;;;; -22B8;MULTIMAP;Sm;0;ON;;;;;Y;;;;; -22B9;HERMITIAN CONJUGATE MATRIX;Sm;0;ON;;;;;N;;;;; -22BA;INTERCALATE;Sm;0;ON;;;;;N;;;;; -22BB;XOR;Sm;0;ON;;;;;N;;;;; -22BC;NAND;Sm;0;ON;;;;;N;;;;; -22BD;NOR;Sm;0;ON;;;;;N;;;;; -22BE;RIGHT ANGLE WITH ARC;Sm;0;ON;;;;;Y;;;;; -22BF;RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;; -22C0;N-ARY LOGICAL AND;Sm;0;ON;;;;;N;;;;; -22C1;N-ARY LOGICAL OR;Sm;0;ON;;;;;N;;;;; -22C2;N-ARY INTERSECTION;Sm;0;ON;;;;;N;;;;; -22C3;N-ARY UNION;Sm;0;ON;;;;;N;;;;; -22C4;DIAMOND OPERATOR;Sm;0;ON;;;;;N;;;;; -22C5;DOT OPERATOR;Sm;0;ON;;;;;N;;;;; -22C6;STAR OPERATOR;Sm;0;ON;;;;;N;;;;; -22C7;DIVISION TIMES;Sm;0;ON;;;;;N;;;;; -22C8;BOWTIE;Sm;0;ON;;;;;N;;;;; -22C9;LEFT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;; -22CA;RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;; -22CB;LEFT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;; -22CC;RIGHT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;; -22CD;REVERSED TILDE EQUALS;Sm;0;ON;;;;;Y;;;;; -22CE;CURLY LOGICAL OR;Sm;0;ON;;;;;N;;;;; -22CF;CURLY LOGICAL AND;Sm;0;ON;;;;;N;;;;; -22D0;DOUBLE SUBSET;Sm;0;ON;;;;;Y;;;;; -22D1;DOUBLE SUPERSET;Sm;0;ON;;;;;Y;;;;; -22D2;DOUBLE INTERSECTION;Sm;0;ON;;;;;N;;;;; -22D3;DOUBLE UNION;Sm;0;ON;;;;;N;;;;; -22D4;PITCHFORK;Sm;0;ON;;;;;N;;;;; -22D5;EQUAL AND PARALLEL TO;Sm;0;ON;;;;;N;;;;; -22D6;LESS-THAN WITH DOT;Sm;0;ON;;;;;Y;LESS THAN WITH DOT;;;; -22D7;GREATER-THAN WITH DOT;Sm;0;ON;;;;;Y;GREATER THAN WITH DOT;;;; -22D8;VERY MUCH LESS-THAN;Sm;0;ON;;;;;Y;VERY MUCH LESS THAN;;;; -22D9;VERY MUCH GREATER-THAN;Sm;0;ON;;;;;Y;VERY MUCH GREATER THAN;;;; -22DA;LESS-THAN EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN EQUAL TO OR GREATER THAN;;;; -22DB;GREATER-THAN EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN EQUAL TO OR LESS THAN;;;; -22DC;EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR LESS THAN;;;; -22DD;EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR GREATER THAN;;;; -22DE;EQUAL TO OR PRECEDES;Sm;0;ON;;;;;Y;;;;; -22DF;EQUAL TO OR SUCCEEDS;Sm;0;ON;;;;;Y;;;;; -22E0;DOES NOT PRECEDE OR EQUAL;Sm;0;ON;227C 0338;;;;Y;;;;; -22E1;DOES NOT SUCCEED OR EQUAL;Sm;0;ON;227D 0338;;;;Y;;;;; -22E2;NOT SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;2291 0338;;;;Y;;;;; -22E3;NOT SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;2292 0338;;;;Y;;;;; -22E4;SQUARE IMAGE OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; -22E5;SQUARE ORIGINAL OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; -22E6;LESS-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUIVALENT TO;;;; -22E7;GREATER-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUIVALENT TO;;;; -22E8;PRECEDES BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;; -22E9;SUCCEEDS BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;; -22EA;NOT NORMAL SUBGROUP OF;Sm;0;ON;22B2 0338;;;;Y;;;;; -22EB;DOES NOT CONTAIN AS NORMAL SUBGROUP;Sm;0;ON;22B3 0338;;;;Y;;;;; -22EC;NOT NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;22B4 0338;;;;Y;;;;; -22ED;DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL;Sm;0;ON;22B5 0338;;;;Y;;;;; -22EE;VERTICAL ELLIPSIS;Sm;0;ON;;;;;N;;;;; -22EF;MIDLINE HORIZONTAL ELLIPSIS;Sm;0;ON;;;;;N;;;;; -22F0;UP RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;; -22F1;DOWN RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;; -22F2;ELEMENT OF WITH LONG HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; -22F3;ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; -22F4;SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; -22F5;ELEMENT OF WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; -22F6;ELEMENT OF WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; -22F7;SMALL ELEMENT OF WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; -22F8;ELEMENT OF WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; -22F9;ELEMENT OF WITH TWO HORIZONTAL STROKES;Sm;0;ON;;;;;Y;;;;; -22FA;CONTAINS WITH LONG HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; -22FB;CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; -22FC;SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; -22FD;CONTAINS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; -22FE;SMALL CONTAINS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; -22FF;Z NOTATION BAG MEMBERSHIP;Sm;0;ON;;;;;Y;;;;; -2300;DIAMETER SIGN;So;0;ON;;;;;N;;;;; -2301;ELECTRIC ARROW;So;0;ON;;;;;N;;;;; -2302;HOUSE;So;0;ON;;;;;N;;;;; -2303;UP ARROWHEAD;So;0;ON;;;;;N;;;;; -2304;DOWN ARROWHEAD;So;0;ON;;;;;N;;;;; -2305;PROJECTIVE;So;0;ON;;;;;N;;;;; -2306;PERSPECTIVE;So;0;ON;;;;;N;;;;; -2307;WAVY LINE;So;0;ON;;;;;N;;;;; -2308;LEFT CEILING;Sm;0;ON;;;;;Y;;;;; -2309;RIGHT CEILING;Sm;0;ON;;;;;Y;;;;; -230A;LEFT FLOOR;Sm;0;ON;;;;;Y;;;;; -230B;RIGHT FLOOR;Sm;0;ON;;;;;Y;;;;; -230C;BOTTOM RIGHT CROP;So;0;ON;;;;;N;;;;; -230D;BOTTOM LEFT CROP;So;0;ON;;;;;N;;;;; -230E;TOP RIGHT CROP;So;0;ON;;;;;N;;;;; -230F;TOP LEFT CROP;So;0;ON;;;;;N;;;;; -2310;REVERSED NOT SIGN;So;0;ON;;;;;N;;;;; -2311;SQUARE LOZENGE;So;0;ON;;;;;N;;;;; -2312;ARC;So;0;ON;;;;;N;;;;; -2313;SEGMENT;So;0;ON;;;;;N;;;;; -2314;SECTOR;So;0;ON;;;;;N;;;;; -2315;TELEPHONE RECORDER;So;0;ON;;;;;N;;;;; -2316;POSITION INDICATOR;So;0;ON;;;;;N;;;;; -2317;VIEWDATA SQUARE;So;0;ON;;;;;N;;;;; -2318;PLACE OF INTEREST SIGN;So;0;ON;;;;;N;COMMAND KEY;;;; -2319;TURNED NOT SIGN;So;0;ON;;;;;N;;;;; -231A;WATCH;So;0;ON;;;;;N;;;;; -231B;HOURGLASS;So;0;ON;;;;;N;;;;; -231C;TOP LEFT CORNER;So;0;ON;;;;;N;;;;; -231D;TOP RIGHT CORNER;So;0;ON;;;;;N;;;;; -231E;BOTTOM LEFT CORNER;So;0;ON;;;;;N;;;;; -231F;BOTTOM RIGHT CORNER;So;0;ON;;;;;N;;;;; -2320;TOP HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;; -2321;BOTTOM HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;; -2322;FROWN;So;0;ON;;;;;N;;;;; -2323;SMILE;So;0;ON;;;;;N;;;;; -2324;UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS;So;0;ON;;;;;N;ENTER KEY;;;; -2325;OPTION KEY;So;0;ON;;;;;N;;;;; -2326;ERASE TO THE RIGHT;So;0;ON;;;;;N;DELETE TO THE RIGHT KEY;;;; -2327;X IN A RECTANGLE BOX;So;0;ON;;;;;N;CLEAR KEY;;;; -2328;KEYBOARD;So;0;ON;;;;;N;;;;; -2329;LEFT-POINTING ANGLE BRACKET;Ps;0;ON;3008;;;;Y;BRA;;;; -232A;RIGHT-POINTING ANGLE BRACKET;Pe;0;ON;3009;;;;Y;KET;;;; -232B;ERASE TO THE LEFT;So;0;ON;;;;;N;DELETE TO THE LEFT KEY;;;; -232C;BENZENE RING;So;0;ON;;;;;N;;;;; -232D;CYLINDRICITY;So;0;ON;;;;;N;;;;; -232E;ALL AROUND-PROFILE;So;0;ON;;;;;N;;;;; -232F;SYMMETRY;So;0;ON;;;;;N;;;;; -2330;TOTAL RUNOUT;So;0;ON;;;;;N;;;;; -2331;DIMENSION ORIGIN;So;0;ON;;;;;N;;;;; -2332;CONICAL TAPER;So;0;ON;;;;;N;;;;; -2333;SLOPE;So;0;ON;;;;;N;;;;; -2334;COUNTERBORE;So;0;ON;;;;;N;;;;; -2335;COUNTERSINK;So;0;ON;;;;;N;;;;; -2336;APL FUNCTIONAL SYMBOL I-BEAM;So;0;L;;;;;N;;;;; -2337;APL FUNCTIONAL SYMBOL SQUISH QUAD;So;0;L;;;;;N;;;;; -2338;APL FUNCTIONAL SYMBOL QUAD EQUAL;So;0;L;;;;;N;;;;; -2339;APL FUNCTIONAL SYMBOL QUAD DIVIDE;So;0;L;;;;;N;;;;; -233A;APL FUNCTIONAL SYMBOL QUAD DIAMOND;So;0;L;;;;;N;;;;; -233B;APL FUNCTIONAL SYMBOL QUAD JOT;So;0;L;;;;;N;;;;; -233C;APL FUNCTIONAL SYMBOL QUAD CIRCLE;So;0;L;;;;;N;;;;; -233D;APL FUNCTIONAL SYMBOL CIRCLE STILE;So;0;L;;;;;N;;;;; -233E;APL FUNCTIONAL SYMBOL CIRCLE JOT;So;0;L;;;;;N;;;;; -233F;APL FUNCTIONAL SYMBOL SLASH BAR;So;0;L;;;;;N;;;;; -2340;APL FUNCTIONAL SYMBOL BACKSLASH BAR;So;0;L;;;;;N;;;;; -2341;APL FUNCTIONAL SYMBOL QUAD SLASH;So;0;L;;;;;N;;;;; -2342;APL FUNCTIONAL SYMBOL QUAD BACKSLASH;So;0;L;;;;;N;;;;; -2343;APL FUNCTIONAL SYMBOL QUAD LESS-THAN;So;0;L;;;;;N;;;;; -2344;APL FUNCTIONAL SYMBOL QUAD GREATER-THAN;So;0;L;;;;;N;;;;; -2345;APL FUNCTIONAL SYMBOL LEFTWARDS VANE;So;0;L;;;;;N;;;;; -2346;APL FUNCTIONAL SYMBOL RIGHTWARDS VANE;So;0;L;;;;;N;;;;; -2347;APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW;So;0;L;;;;;N;;;;; -2348;APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW;So;0;L;;;;;N;;;;; -2349;APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH;So;0;L;;;;;N;;;;; -234A;APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR;So;0;L;;;;;N;;;;; -234B;APL FUNCTIONAL SYMBOL DELTA STILE;So;0;L;;;;;N;;;;; -234C;APL FUNCTIONAL SYMBOL QUAD DOWN CARET;So;0;L;;;;;N;;;;; -234D;APL FUNCTIONAL SYMBOL QUAD DELTA;So;0;L;;;;;N;;;;; -234E;APL FUNCTIONAL SYMBOL DOWN TACK JOT;So;0;L;;;;;N;;;;; -234F;APL FUNCTIONAL SYMBOL UPWARDS VANE;So;0;L;;;;;N;;;;; -2350;APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW;So;0;L;;;;;N;;;;; -2351;APL FUNCTIONAL SYMBOL UP TACK OVERBAR;So;0;L;;;;;N;;;;; -2352;APL FUNCTIONAL SYMBOL DEL STILE;So;0;L;;;;;N;;;;; -2353;APL FUNCTIONAL SYMBOL QUAD UP CARET;So;0;L;;;;;N;;;;; -2354;APL FUNCTIONAL SYMBOL QUAD DEL;So;0;L;;;;;N;;;;; -2355;APL FUNCTIONAL SYMBOL UP TACK JOT;So;0;L;;;;;N;;;;; -2356;APL FUNCTIONAL SYMBOL DOWNWARDS VANE;So;0;L;;;;;N;;;;; -2357;APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW;So;0;L;;;;;N;;;;; -2358;APL FUNCTIONAL SYMBOL QUOTE UNDERBAR;So;0;L;;;;;N;;;;; -2359;APL FUNCTIONAL SYMBOL DELTA UNDERBAR;So;0;L;;;;;N;;;;; -235A;APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR;So;0;L;;;;;N;;;;; -235B;APL FUNCTIONAL SYMBOL JOT UNDERBAR;So;0;L;;;;;N;;;;; -235C;APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR;So;0;L;;;;;N;;;;; -235D;APL FUNCTIONAL SYMBOL UP SHOE JOT;So;0;L;;;;;N;;;;; -235E;APL FUNCTIONAL SYMBOL QUOTE QUAD;So;0;L;;;;;N;;;;; -235F;APL FUNCTIONAL SYMBOL CIRCLE STAR;So;0;L;;;;;N;;;;; -2360;APL FUNCTIONAL SYMBOL QUAD COLON;So;0;L;;;;;N;;;;; -2361;APL FUNCTIONAL SYMBOL UP TACK DIAERESIS;So;0;L;;;;;N;;;;; -2362;APL FUNCTIONAL SYMBOL DEL DIAERESIS;So;0;L;;;;;N;;;;; -2363;APL FUNCTIONAL SYMBOL STAR DIAERESIS;So;0;L;;;;;N;;;;; -2364;APL FUNCTIONAL SYMBOL JOT DIAERESIS;So;0;L;;;;;N;;;;; -2365;APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS;So;0;L;;;;;N;;;;; -2366;APL FUNCTIONAL SYMBOL DOWN SHOE STILE;So;0;L;;;;;N;;;;; -2367;APL FUNCTIONAL SYMBOL LEFT SHOE STILE;So;0;L;;;;;N;;;;; -2368;APL FUNCTIONAL SYMBOL TILDE DIAERESIS;So;0;L;;;;;N;;;;; -2369;APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS;So;0;L;;;;;N;;;;; -236A;APL FUNCTIONAL SYMBOL COMMA BAR;So;0;L;;;;;N;;;;; -236B;APL FUNCTIONAL SYMBOL DEL TILDE;So;0;L;;;;;N;;;;; -236C;APL FUNCTIONAL SYMBOL ZILDE;So;0;L;;;;;N;;;;; -236D;APL FUNCTIONAL SYMBOL STILE TILDE;So;0;L;;;;;N;;;;; -236E;APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR;So;0;L;;;;;N;;;;; -236F;APL FUNCTIONAL SYMBOL QUAD NOT EQUAL;So;0;L;;;;;N;;;;; -2370;APL FUNCTIONAL SYMBOL QUAD QUESTION;So;0;L;;;;;N;;;;; -2371;APL FUNCTIONAL SYMBOL DOWN CARET TILDE;So;0;L;;;;;N;;;;; -2372;APL FUNCTIONAL SYMBOL UP CARET TILDE;So;0;L;;;;;N;;;;; -2373;APL FUNCTIONAL SYMBOL IOTA;So;0;L;;;;;N;;;;; -2374;APL FUNCTIONAL SYMBOL RHO;So;0;L;;;;;N;;;;; -2375;APL FUNCTIONAL SYMBOL OMEGA;So;0;L;;;;;N;;;;; -2376;APL FUNCTIONAL SYMBOL ALPHA UNDERBAR;So;0;L;;;;;N;;;;; -2377;APL FUNCTIONAL SYMBOL EPSILON UNDERBAR;So;0;L;;;;;N;;;;; -2378;APL FUNCTIONAL SYMBOL IOTA UNDERBAR;So;0;L;;;;;N;;;;; -2379;APL FUNCTIONAL SYMBOL OMEGA UNDERBAR;So;0;L;;;;;N;;;;; -237A;APL FUNCTIONAL SYMBOL ALPHA;So;0;L;;;;;N;;;;; -237B;NOT CHECK MARK;So;0;ON;;;;;N;;;;; -237C;RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW;Sm;0;ON;;;;;N;;;;; -237D;SHOULDERED OPEN BOX;So;0;ON;;;;;N;;;;; -237E;BELL SYMBOL;So;0;ON;;;;;N;;;;; -237F;VERTICAL LINE WITH MIDDLE DOT;So;0;ON;;;;;N;;;;; -2380;INSERTION SYMBOL;So;0;ON;;;;;N;;;;; -2381;CONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;; -2382;DISCONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;; -2383;EMPHASIS SYMBOL;So;0;ON;;;;;N;;;;; -2384;COMPOSITION SYMBOL;So;0;ON;;;;;N;;;;; -2385;WHITE SQUARE WITH CENTRE VERTICAL LINE;So;0;ON;;;;;N;;;;; -2386;ENTER SYMBOL;So;0;ON;;;;;N;;;;; -2387;ALTERNATIVE KEY SYMBOL;So;0;ON;;;;;N;;;;; -2388;HELM SYMBOL;So;0;ON;;;;;N;;;;; -2389;CIRCLED HORIZONTAL BAR WITH NOTCH;So;0;ON;;;;;N;;;;; -238A;CIRCLED TRIANGLE DOWN;So;0;ON;;;;;N;;;;; -238B;BROKEN CIRCLE WITH NORTHWEST ARROW;So;0;ON;;;;;N;;;;; -238C;UNDO SYMBOL;So;0;ON;;;;;N;;;;; -238D;MONOSTABLE SYMBOL;So;0;ON;;;;;N;;;;; -238E;HYSTERESIS SYMBOL;So;0;ON;;;;;N;;;;; -238F;OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL;So;0;ON;;;;;N;;;;; -2390;OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL;So;0;ON;;;;;N;;;;; -2391;PASSIVE-PULL-DOWN-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;; -2392;PASSIVE-PULL-UP-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;; -2393;DIRECT CURRENT SYMBOL FORM TWO;So;0;ON;;;;;N;;;;; -2394;SOFTWARE-FUNCTION SYMBOL;So;0;ON;;;;;N;;;;; -2395;APL FUNCTIONAL SYMBOL QUAD;So;0;L;;;;;N;;;;; -2396;DECIMAL SEPARATOR KEY SYMBOL;So;0;ON;;;;;N;;;;; -2397;PREVIOUS PAGE;So;0;ON;;;;;N;;;;; -2398;NEXT PAGE;So;0;ON;;;;;N;;;;; -2399;PRINT SCREEN SYMBOL;So;0;ON;;;;;N;;;;; -239A;CLEAR SCREEN SYMBOL;So;0;ON;;;;;N;;;;; -239B;LEFT PARENTHESIS UPPER HOOK;Sm;0;ON;;;;;N;;;;; -239C;LEFT PARENTHESIS EXTENSION;Sm;0;ON;;;;;N;;;;; -239D;LEFT PARENTHESIS LOWER HOOK;Sm;0;ON;;;;;N;;;;; -239E;RIGHT PARENTHESIS UPPER HOOK;Sm;0;ON;;;;;N;;;;; -239F;RIGHT PARENTHESIS EXTENSION;Sm;0;ON;;;;;N;;;;; -23A0;RIGHT PARENTHESIS LOWER HOOK;Sm;0;ON;;;;;N;;;;; -23A1;LEFT SQUARE BRACKET UPPER CORNER;Sm;0;ON;;;;;N;;;;; -23A2;LEFT SQUARE BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;; -23A3;LEFT SQUARE BRACKET LOWER CORNER;Sm;0;ON;;;;;N;;;;; -23A4;RIGHT SQUARE BRACKET UPPER CORNER;Sm;0;ON;;;;;N;;;;; -23A5;RIGHT SQUARE BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;; -23A6;RIGHT SQUARE BRACKET LOWER CORNER;Sm;0;ON;;;;;N;;;;; -23A7;LEFT CURLY BRACKET UPPER HOOK;Sm;0;ON;;;;;N;;;;; -23A8;LEFT CURLY BRACKET MIDDLE PIECE;Sm;0;ON;;;;;N;;;;; -23A9;LEFT CURLY BRACKET LOWER HOOK;Sm;0;ON;;;;;N;;;;; -23AA;CURLY BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;; -23AB;RIGHT CURLY BRACKET UPPER HOOK;Sm;0;ON;;;;;N;;;;; -23AC;RIGHT CURLY BRACKET MIDDLE PIECE;Sm;0;ON;;;;;N;;;;; -23AD;RIGHT CURLY BRACKET LOWER HOOK;Sm;0;ON;;;;;N;;;;; -23AE;INTEGRAL EXTENSION;Sm;0;ON;;;;;N;;;;; -23AF;HORIZONTAL LINE EXTENSION;Sm;0;ON;;;;;N;;;;; -23B0;UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION;Sm;0;ON;;;;;N;;;;; -23B1;UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION;Sm;0;ON;;;;;N;;;;; -23B2;SUMMATION TOP;Sm;0;ON;;;;;N;;;;; -23B3;SUMMATION BOTTOM;Sm;0;ON;;;;;N;;;;; -23B4;TOP SQUARE BRACKET;So;0;ON;;;;;N;;;;; -23B5;BOTTOM SQUARE BRACKET;So;0;ON;;;;;N;;;;; -23B6;BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET;So;0;ON;;;;;N;;;;; -23B7;RADICAL SYMBOL BOTTOM;So;0;ON;;;;;N;;;;; -23B8;LEFT VERTICAL BOX LINE;So;0;ON;;;;;N;;;;; -23B9;RIGHT VERTICAL BOX LINE;So;0;ON;;;;;N;;;;; -23BA;HORIZONTAL SCAN LINE-1;So;0;ON;;;;;N;;;;; -23BB;HORIZONTAL SCAN LINE-3;So;0;ON;;;;;N;;;;; -23BC;HORIZONTAL SCAN LINE-7;So;0;ON;;;;;N;;;;; -23BD;HORIZONTAL SCAN LINE-9;So;0;ON;;;;;N;;;;; -23BE;DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHT;So;0;ON;;;;;N;;;;; -23BF;DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM RIGHT;So;0;ON;;;;;N;;;;; -23C0;DENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCLE;So;0;ON;;;;;N;;;;; -23C1;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLE;So;0;ON;;;;;N;;;;; -23C2;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH CIRCLE;So;0;ON;;;;;N;;;;; -23C3;DENTISTRY SYMBOL LIGHT VERTICAL WITH TRIANGLE;So;0;ON;;;;;N;;;;; -23C4;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH TRIANGLE;So;0;ON;;;;;N;;;;; -23C5;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLE;So;0;ON;;;;;N;;;;; -23C6;DENTISTRY SYMBOL LIGHT VERTICAL AND WAVE;So;0;ON;;;;;N;;;;; -23C7;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH WAVE;So;0;ON;;;;;N;;;;; -23C8;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH WAVE;So;0;ON;;;;;N;;;;; -23C9;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;;;;; -23CA;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;;;;; -23CB;DENTISTRY SYMBOL LIGHT VERTICAL AND TOP LEFT;So;0;ON;;;;;N;;;;; -23CC;DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEFT;So;0;ON;;;;;N;;;;; -23CD;SQUARE FOOT;So;0;ON;;;;;N;;;;; -23CE;RETURN SYMBOL;So;0;ON;;;;;N;;;;; -23CF;EJECT SYMBOL;So;0;ON;;;;;N;;;;; -23D0;VERTICAL LINE EXTENSION;So;0;ON;;;;;N;;;;; -23D1;METRICAL BREVE;So;0;ON;;;;;N;;;;; -23D2;METRICAL LONG OVER SHORT;So;0;ON;;;;;N;;;;; -23D3;METRICAL SHORT OVER LONG;So;0;ON;;;;;N;;;;; -23D4;METRICAL LONG OVER TWO SHORTS;So;0;ON;;;;;N;;;;; -23D5;METRICAL TWO SHORTS OVER LONG;So;0;ON;;;;;N;;;;; -23D6;METRICAL TWO SHORTS JOINED;So;0;ON;;;;;N;;;;; -23D7;METRICAL TRISEME;So;0;ON;;;;;N;;;;; -23D8;METRICAL TETRASEME;So;0;ON;;;;;N;;;;; -23D9;METRICAL PENTASEME;So;0;ON;;;;;N;;;;; -23DA;EARTH GROUND;So;0;ON;;;;;N;;;;; -23DB;FUSE;So;0;ON;;;;;N;;;;; -23DC;TOP PARENTHESIS;Sm;0;ON;;;;;N;;;;; -23DD;BOTTOM PARENTHESIS;Sm;0;ON;;;;;N;;;;; -23DE;TOP CURLY BRACKET;Sm;0;ON;;;;;N;;;;; -23DF;BOTTOM CURLY BRACKET;Sm;0;ON;;;;;N;;;;; -23E0;TOP TORTOISE SHELL BRACKET;Sm;0;ON;;;;;N;;;;; -23E1;BOTTOM TORTOISE SHELL BRACKET;Sm;0;ON;;;;;N;;;;; -23E2;WHITE TRAPEZIUM;So;0;ON;;;;;N;;;;; -23E3;BENZENE RING WITH CIRCLE;So;0;ON;;;;;N;;;;; -23E4;STRAIGHTNESS;So;0;ON;;;;;N;;;;; -23E5;FLATNESS;So;0;ON;;;;;N;;;;; -23E6;AC CURRENT;So;0;ON;;;;;N;;;;; -23E7;ELECTRICAL INTERSECTION;So;0;ON;;;;;N;;;;; -23E8;DECIMAL EXPONENT SYMBOL;So;0;ON;;;;;N;;;;; -2400;SYMBOL FOR NULL;So;0;ON;;;;;N;GRAPHIC FOR NULL;;;; -2401;SYMBOL FOR START OF HEADING;So;0;ON;;;;;N;GRAPHIC FOR START OF HEADING;;;; -2402;SYMBOL FOR START OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR START OF TEXT;;;; -2403;SYMBOL FOR END OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR END OF TEXT;;;; -2404;SYMBOL FOR END OF TRANSMISSION;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION;;;; -2405;SYMBOL FOR ENQUIRY;So;0;ON;;;;;N;GRAPHIC FOR ENQUIRY;;;; -2406;SYMBOL FOR ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR ACKNOWLEDGE;;;; -2407;SYMBOL FOR BELL;So;0;ON;;;;;N;GRAPHIC FOR BELL;;;; -2408;SYMBOL FOR BACKSPACE;So;0;ON;;;;;N;GRAPHIC FOR BACKSPACE;;;; -2409;SYMBOL FOR HORIZONTAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR HORIZONTAL TABULATION;;;; -240A;SYMBOL FOR LINE FEED;So;0;ON;;;;;N;GRAPHIC FOR LINE FEED;;;; -240B;SYMBOL FOR VERTICAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR VERTICAL TABULATION;;;; -240C;SYMBOL FOR FORM FEED;So;0;ON;;;;;N;GRAPHIC FOR FORM FEED;;;; -240D;SYMBOL FOR CARRIAGE RETURN;So;0;ON;;;;;N;GRAPHIC FOR CARRIAGE RETURN;;;; -240E;SYMBOL FOR SHIFT OUT;So;0;ON;;;;;N;GRAPHIC FOR SHIFT OUT;;;; -240F;SYMBOL FOR SHIFT IN;So;0;ON;;;;;N;GRAPHIC FOR SHIFT IN;;;; -2410;SYMBOL FOR DATA LINK ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR DATA LINK ESCAPE;;;; -2411;SYMBOL FOR DEVICE CONTROL ONE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL ONE;;;; -2412;SYMBOL FOR DEVICE CONTROL TWO;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL TWO;;;; -2413;SYMBOL FOR DEVICE CONTROL THREE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL THREE;;;; -2414;SYMBOL FOR DEVICE CONTROL FOUR;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL FOUR;;;; -2415;SYMBOL FOR NEGATIVE ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR NEGATIVE ACKNOWLEDGE;;;; -2416;SYMBOL FOR SYNCHRONOUS IDLE;So;0;ON;;;;;N;GRAPHIC FOR SYNCHRONOUS IDLE;;;; -2417;SYMBOL FOR END OF TRANSMISSION BLOCK;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION BLOCK;;;; -2418;SYMBOL FOR CANCEL;So;0;ON;;;;;N;GRAPHIC FOR CANCEL;;;; -2419;SYMBOL FOR END OF MEDIUM;So;0;ON;;;;;N;GRAPHIC FOR END OF MEDIUM;;;; -241A;SYMBOL FOR SUBSTITUTE;So;0;ON;;;;;N;GRAPHIC FOR SUBSTITUTE;;;; -241B;SYMBOL FOR ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR ESCAPE;;;; -241C;SYMBOL FOR FILE SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR FILE SEPARATOR;;;; -241D;SYMBOL FOR GROUP SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR GROUP SEPARATOR;;;; -241E;SYMBOL FOR RECORD SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR RECORD SEPARATOR;;;; -241F;SYMBOL FOR UNIT SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR UNIT SEPARATOR;;;; -2420;SYMBOL FOR SPACE;So;0;ON;;;;;N;GRAPHIC FOR SPACE;;;; -2421;SYMBOL FOR DELETE;So;0;ON;;;;;N;GRAPHIC FOR DELETE;;;; -2422;BLANK SYMBOL;So;0;ON;;;;;N;BLANK;;;; -2423;OPEN BOX;So;0;ON;;;;;N;;;;; -2424;SYMBOL FOR NEWLINE;So;0;ON;;;;;N;GRAPHIC FOR NEWLINE;;;; -2425;SYMBOL FOR DELETE FORM TWO;So;0;ON;;;;;N;;;;; -2426;SYMBOL FOR SUBSTITUTE FORM TWO;So;0;ON;;;;;N;;;;; -2440;OCR HOOK;So;0;ON;;;;;N;;;;; -2441;OCR CHAIR;So;0;ON;;;;;N;;;;; -2442;OCR FORK;So;0;ON;;;;;N;;;;; -2443;OCR INVERTED FORK;So;0;ON;;;;;N;;;;; -2444;OCR BELT BUCKLE;So;0;ON;;;;;N;;;;; -2445;OCR BOW TIE;So;0;ON;;;;;N;;;;; -2446;OCR BRANCH BANK IDENTIFICATION;So;0;ON;;;;;N;;;;; -2447;OCR AMOUNT OF CHECK;So;0;ON;;;;;N;;;;; -2448;OCR DASH;So;0;ON;;;;;N;;;;; -2449;OCR CUSTOMER ACCOUNT NUMBER;So;0;ON;;;;;N;;;;; -244A;OCR DOUBLE BACKSLASH;So;0;ON;;;;;N;;;;; -2460;CIRCLED DIGIT ONE;No;0;ON; 0031;;1;1;N;;;;; -2461;CIRCLED DIGIT TWO;No;0;ON; 0032;;2;2;N;;;;; -2462;CIRCLED DIGIT THREE;No;0;ON; 0033;;3;3;N;;;;; -2463;CIRCLED DIGIT FOUR;No;0;ON; 0034;;4;4;N;;;;; -2464;CIRCLED DIGIT FIVE;No;0;ON; 0035;;5;5;N;;;;; -2465;CIRCLED DIGIT SIX;No;0;ON; 0036;;6;6;N;;;;; -2466;CIRCLED DIGIT SEVEN;No;0;ON; 0037;;7;7;N;;;;; -2467;CIRCLED DIGIT EIGHT;No;0;ON; 0038;;8;8;N;;;;; -2468;CIRCLED DIGIT NINE;No;0;ON; 0039;;9;9;N;;;;; -2469;CIRCLED NUMBER TEN;No;0;ON; 0031 0030;;;10;N;;;;; -246A;CIRCLED NUMBER ELEVEN;No;0;ON; 0031 0031;;;11;N;;;;; -246B;CIRCLED NUMBER TWELVE;No;0;ON; 0031 0032;;;12;N;;;;; -246C;CIRCLED NUMBER THIRTEEN;No;0;ON; 0031 0033;;;13;N;;;;; -246D;CIRCLED NUMBER FOURTEEN;No;0;ON; 0031 0034;;;14;N;;;;; -246E;CIRCLED NUMBER FIFTEEN;No;0;ON; 0031 0035;;;15;N;;;;; -246F;CIRCLED NUMBER SIXTEEN;No;0;ON; 0031 0036;;;16;N;;;;; -2470;CIRCLED NUMBER SEVENTEEN;No;0;ON; 0031 0037;;;17;N;;;;; -2471;CIRCLED NUMBER EIGHTEEN;No;0;ON; 0031 0038;;;18;N;;;;; -2472;CIRCLED NUMBER NINETEEN;No;0;ON; 0031 0039;;;19;N;;;;; -2473;CIRCLED NUMBER TWENTY;No;0;ON; 0032 0030;;;20;N;;;;; -2474;PARENTHESIZED DIGIT ONE;No;0;ON; 0028 0031 0029;;1;1;N;;;;; -2475;PARENTHESIZED DIGIT TWO;No;0;ON; 0028 0032 0029;;2;2;N;;;;; -2476;PARENTHESIZED DIGIT THREE;No;0;ON; 0028 0033 0029;;3;3;N;;;;; -2477;PARENTHESIZED DIGIT FOUR;No;0;ON; 0028 0034 0029;;4;4;N;;;;; -2478;PARENTHESIZED DIGIT FIVE;No;0;ON; 0028 0035 0029;;5;5;N;;;;; -2479;PARENTHESIZED DIGIT SIX;No;0;ON; 0028 0036 0029;;6;6;N;;;;; -247A;PARENTHESIZED DIGIT SEVEN;No;0;ON; 0028 0037 0029;;7;7;N;;;;; -247B;PARENTHESIZED DIGIT EIGHT;No;0;ON; 0028 0038 0029;;8;8;N;;;;; -247C;PARENTHESIZED DIGIT NINE;No;0;ON; 0028 0039 0029;;9;9;N;;;;; -247D;PARENTHESIZED NUMBER TEN;No;0;ON; 0028 0031 0030 0029;;;10;N;;;;; -247E;PARENTHESIZED NUMBER ELEVEN;No;0;ON; 0028 0031 0031 0029;;;11;N;;;;; -247F;PARENTHESIZED NUMBER TWELVE;No;0;ON; 0028 0031 0032 0029;;;12;N;;;;; -2480;PARENTHESIZED NUMBER THIRTEEN;No;0;ON; 0028 0031 0033 0029;;;13;N;;;;; -2481;PARENTHESIZED NUMBER FOURTEEN;No;0;ON; 0028 0031 0034 0029;;;14;N;;;;; -2482;PARENTHESIZED NUMBER FIFTEEN;No;0;ON; 0028 0031 0035 0029;;;15;N;;;;; -2483;PARENTHESIZED NUMBER SIXTEEN;No;0;ON; 0028 0031 0036 0029;;;16;N;;;;; -2484;PARENTHESIZED NUMBER SEVENTEEN;No;0;ON; 0028 0031 0037 0029;;;17;N;;;;; -2485;PARENTHESIZED NUMBER EIGHTEEN;No;0;ON; 0028 0031 0038 0029;;;18;N;;;;; -2486;PARENTHESIZED NUMBER NINETEEN;No;0;ON; 0028 0031 0039 0029;;;19;N;;;;; -2487;PARENTHESIZED NUMBER TWENTY;No;0;ON; 0028 0032 0030 0029;;;20;N;;;;; -2488;DIGIT ONE FULL STOP;No;0;EN; 0031 002E;;1;1;N;DIGIT ONE PERIOD;;;; -2489;DIGIT TWO FULL STOP;No;0;EN; 0032 002E;;2;2;N;DIGIT TWO PERIOD;;;; -248A;DIGIT THREE FULL STOP;No;0;EN; 0033 002E;;3;3;N;DIGIT THREE PERIOD;;;; -248B;DIGIT FOUR FULL STOP;No;0;EN; 0034 002E;;4;4;N;DIGIT FOUR PERIOD;;;; -248C;DIGIT FIVE FULL STOP;No;0;EN; 0035 002E;;5;5;N;DIGIT FIVE PERIOD;;;; -248D;DIGIT SIX FULL STOP;No;0;EN; 0036 002E;;6;6;N;DIGIT SIX PERIOD;;;; -248E;DIGIT SEVEN FULL STOP;No;0;EN; 0037 002E;;7;7;N;DIGIT SEVEN PERIOD;;;; -248F;DIGIT EIGHT FULL STOP;No;0;EN; 0038 002E;;8;8;N;DIGIT EIGHT PERIOD;;;; -2490;DIGIT NINE FULL STOP;No;0;EN; 0039 002E;;9;9;N;DIGIT NINE PERIOD;;;; -2491;NUMBER TEN FULL STOP;No;0;EN; 0031 0030 002E;;;10;N;NUMBER TEN PERIOD;;;; -2492;NUMBER ELEVEN FULL STOP;No;0;EN; 0031 0031 002E;;;11;N;NUMBER ELEVEN PERIOD;;;; -2493;NUMBER TWELVE FULL STOP;No;0;EN; 0031 0032 002E;;;12;N;NUMBER TWELVE PERIOD;;;; -2494;NUMBER THIRTEEN FULL STOP;No;0;EN; 0031 0033 002E;;;13;N;NUMBER THIRTEEN PERIOD;;;; -2495;NUMBER FOURTEEN FULL STOP;No;0;EN; 0031 0034 002E;;;14;N;NUMBER FOURTEEN PERIOD;;;; -2496;NUMBER FIFTEEN FULL STOP;No;0;EN; 0031 0035 002E;;;15;N;NUMBER FIFTEEN PERIOD;;;; -2497;NUMBER SIXTEEN FULL STOP;No;0;EN; 0031 0036 002E;;;16;N;NUMBER SIXTEEN PERIOD;;;; -2498;NUMBER SEVENTEEN FULL STOP;No;0;EN; 0031 0037 002E;;;17;N;NUMBER SEVENTEEN PERIOD;;;; -2499;NUMBER EIGHTEEN FULL STOP;No;0;EN; 0031 0038 002E;;;18;N;NUMBER EIGHTEEN PERIOD;;;; -249A;NUMBER NINETEEN FULL STOP;No;0;EN; 0031 0039 002E;;;19;N;NUMBER NINETEEN PERIOD;;;; -249B;NUMBER TWENTY FULL STOP;No;0;EN; 0032 0030 002E;;;20;N;NUMBER TWENTY PERIOD;;;; -249C;PARENTHESIZED LATIN SMALL LETTER A;So;0;L; 0028 0061 0029;;;;N;;;;; -249D;PARENTHESIZED LATIN SMALL LETTER B;So;0;L; 0028 0062 0029;;;;N;;;;; -249E;PARENTHESIZED LATIN SMALL LETTER C;So;0;L; 0028 0063 0029;;;;N;;;;; -249F;PARENTHESIZED LATIN SMALL LETTER D;So;0;L; 0028 0064 0029;;;;N;;;;; -24A0;PARENTHESIZED LATIN SMALL LETTER E;So;0;L; 0028 0065 0029;;;;N;;;;; -24A1;PARENTHESIZED LATIN SMALL LETTER F;So;0;L; 0028 0066 0029;;;;N;;;;; -24A2;PARENTHESIZED LATIN SMALL LETTER G;So;0;L; 0028 0067 0029;;;;N;;;;; -24A3;PARENTHESIZED LATIN SMALL LETTER H;So;0;L; 0028 0068 0029;;;;N;;;;; -24A4;PARENTHESIZED LATIN SMALL LETTER I;So;0;L; 0028 0069 0029;;;;N;;;;; -24A5;PARENTHESIZED LATIN SMALL LETTER J;So;0;L; 0028 006A 0029;;;;N;;;;; -24A6;PARENTHESIZED LATIN SMALL LETTER K;So;0;L; 0028 006B 0029;;;;N;;;;; -24A7;PARENTHESIZED LATIN SMALL LETTER L;So;0;L; 0028 006C 0029;;;;N;;;;; -24A8;PARENTHESIZED LATIN SMALL LETTER M;So;0;L; 0028 006D 0029;;;;N;;;;; -24A9;PARENTHESIZED LATIN SMALL LETTER N;So;0;L; 0028 006E 0029;;;;N;;;;; -24AA;PARENTHESIZED LATIN SMALL LETTER O;So;0;L; 0028 006F 0029;;;;N;;;;; -24AB;PARENTHESIZED LATIN SMALL LETTER P;So;0;L; 0028 0070 0029;;;;N;;;;; -24AC;PARENTHESIZED LATIN SMALL LETTER Q;So;0;L; 0028 0071 0029;;;;N;;;;; -24AD;PARENTHESIZED LATIN SMALL LETTER R;So;0;L; 0028 0072 0029;;;;N;;;;; -24AE;PARENTHESIZED LATIN SMALL LETTER S;So;0;L; 0028 0073 0029;;;;N;;;;; -24AF;PARENTHESIZED LATIN SMALL LETTER T;So;0;L; 0028 0074 0029;;;;N;;;;; -24B0;PARENTHESIZED LATIN SMALL LETTER U;So;0;L; 0028 0075 0029;;;;N;;;;; -24B1;PARENTHESIZED LATIN SMALL LETTER V;So;0;L; 0028 0076 0029;;;;N;;;;; -24B2;PARENTHESIZED LATIN SMALL LETTER W;So;0;L; 0028 0077 0029;;;;N;;;;; -24B3;PARENTHESIZED LATIN SMALL LETTER X;So;0;L; 0028 0078 0029;;;;N;;;;; -24B4;PARENTHESIZED LATIN SMALL LETTER Y;So;0;L; 0028 0079 0029;;;;N;;;;; -24B5;PARENTHESIZED LATIN SMALL LETTER Z;So;0;L; 0028 007A 0029;;;;N;;;;; -24B6;CIRCLED LATIN CAPITAL LETTER A;So;0;L; 0041;;;;N;;;;24D0; -24B7;CIRCLED LATIN CAPITAL LETTER B;So;0;L; 0042;;;;N;;;;24D1; -24B8;CIRCLED LATIN CAPITAL LETTER C;So;0;L; 0043;;;;N;;;;24D2; -24B9;CIRCLED LATIN CAPITAL LETTER D;So;0;L; 0044;;;;N;;;;24D3; -24BA;CIRCLED LATIN CAPITAL LETTER E;So;0;L; 0045;;;;N;;;;24D4; -24BB;CIRCLED LATIN CAPITAL LETTER F;So;0;L; 0046;;;;N;;;;24D5; -24BC;CIRCLED LATIN CAPITAL LETTER G;So;0;L; 0047;;;;N;;;;24D6; -24BD;CIRCLED LATIN CAPITAL LETTER H;So;0;L; 0048;;;;N;;;;24D7; -24BE;CIRCLED LATIN CAPITAL LETTER I;So;0;L; 0049;;;;N;;;;24D8; -24BF;CIRCLED LATIN CAPITAL LETTER J;So;0;L; 004A;;;;N;;;;24D9; -24C0;CIRCLED LATIN CAPITAL LETTER K;So;0;L; 004B;;;;N;;;;24DA; -24C1;CIRCLED LATIN CAPITAL LETTER L;So;0;L; 004C;;;;N;;;;24DB; -24C2;CIRCLED LATIN CAPITAL LETTER M;So;0;L; 004D;;;;N;;;;24DC; -24C3;CIRCLED LATIN CAPITAL LETTER N;So;0;L; 004E;;;;N;;;;24DD; -24C4;CIRCLED LATIN CAPITAL LETTER O;So;0;L; 004F;;;;N;;;;24DE; -24C5;CIRCLED LATIN CAPITAL LETTER P;So;0;L; 0050;;;;N;;;;24DF; -24C6;CIRCLED LATIN CAPITAL LETTER Q;So;0;L; 0051;;;;N;;;;24E0; -24C7;CIRCLED LATIN CAPITAL LETTER R;So;0;L; 0052;;;;N;;;;24E1; -24C8;CIRCLED LATIN CAPITAL LETTER S;So;0;L; 0053;;;;N;;;;24E2; -24C9;CIRCLED LATIN CAPITAL LETTER T;So;0;L; 0054;;;;N;;;;24E3; -24CA;CIRCLED LATIN CAPITAL LETTER U;So;0;L; 0055;;;;N;;;;24E4; -24CB;CIRCLED LATIN CAPITAL LETTER V;So;0;L; 0056;;;;N;;;;24E5; -24CC;CIRCLED LATIN CAPITAL LETTER W;So;0;L; 0057;;;;N;;;;24E6; -24CD;CIRCLED LATIN CAPITAL LETTER X;So;0;L; 0058;;;;N;;;;24E7; -24CE;CIRCLED LATIN CAPITAL LETTER Y;So;0;L; 0059;;;;N;;;;24E8; -24CF;CIRCLED LATIN CAPITAL LETTER Z;So;0;L; 005A;;;;N;;;;24E9; -24D0;CIRCLED LATIN SMALL LETTER A;So;0;L; 0061;;;;N;;;24B6;;24B6 -24D1;CIRCLED LATIN SMALL LETTER B;So;0;L; 0062;;;;N;;;24B7;;24B7 -24D2;CIRCLED LATIN SMALL LETTER C;So;0;L; 0063;;;;N;;;24B8;;24B8 -24D3;CIRCLED LATIN SMALL LETTER D;So;0;L; 0064;;;;N;;;24B9;;24B9 -24D4;CIRCLED LATIN SMALL LETTER E;So;0;L; 0065;;;;N;;;24BA;;24BA -24D5;CIRCLED LATIN SMALL LETTER F;So;0;L; 0066;;;;N;;;24BB;;24BB -24D6;CIRCLED LATIN SMALL LETTER G;So;0;L; 0067;;;;N;;;24BC;;24BC -24D7;CIRCLED LATIN SMALL LETTER H;So;0;L; 0068;;;;N;;;24BD;;24BD -24D8;CIRCLED LATIN SMALL LETTER I;So;0;L; 0069;;;;N;;;24BE;;24BE -24D9;CIRCLED LATIN SMALL LETTER J;So;0;L; 006A;;;;N;;;24BF;;24BF -24DA;CIRCLED LATIN SMALL LETTER K;So;0;L; 006B;;;;N;;;24C0;;24C0 -24DB;CIRCLED LATIN SMALL LETTER L;So;0;L; 006C;;;;N;;;24C1;;24C1 -24DC;CIRCLED LATIN SMALL LETTER M;So;0;L; 006D;;;;N;;;24C2;;24C2 -24DD;CIRCLED LATIN SMALL LETTER N;So;0;L; 006E;;;;N;;;24C3;;24C3 -24DE;CIRCLED LATIN SMALL LETTER O;So;0;L; 006F;;;;N;;;24C4;;24C4 -24DF;CIRCLED LATIN SMALL LETTER P;So;0;L; 0070;;;;N;;;24C5;;24C5 -24E0;CIRCLED LATIN SMALL LETTER Q;So;0;L; 0071;;;;N;;;24C6;;24C6 -24E1;CIRCLED LATIN SMALL LETTER R;So;0;L; 0072;;;;N;;;24C7;;24C7 -24E2;CIRCLED LATIN SMALL LETTER S;So;0;L; 0073;;;;N;;;24C8;;24C8 -24E3;CIRCLED LATIN SMALL LETTER T;So;0;L; 0074;;;;N;;;24C9;;24C9 -24E4;CIRCLED LATIN SMALL LETTER U;So;0;L; 0075;;;;N;;;24CA;;24CA -24E5;CIRCLED LATIN SMALL LETTER V;So;0;L; 0076;;;;N;;;24CB;;24CB -24E6;CIRCLED LATIN SMALL LETTER W;So;0;L; 0077;;;;N;;;24CC;;24CC -24E7;CIRCLED LATIN SMALL LETTER X;So;0;L; 0078;;;;N;;;24CD;;24CD -24E8;CIRCLED LATIN SMALL LETTER Y;So;0;L; 0079;;;;N;;;24CE;;24CE -24E9;CIRCLED LATIN SMALL LETTER Z;So;0;L; 007A;;;;N;;;24CF;;24CF -24EA;CIRCLED DIGIT ZERO;No;0;ON; 0030;;0;0;N;;;;; -24EB;NEGATIVE CIRCLED NUMBER ELEVEN;No;0;ON;;;;11;N;;;;; -24EC;NEGATIVE CIRCLED NUMBER TWELVE;No;0;ON;;;;12;N;;;;; -24ED;NEGATIVE CIRCLED NUMBER THIRTEEN;No;0;ON;;;;13;N;;;;; -24EE;NEGATIVE CIRCLED NUMBER FOURTEEN;No;0;ON;;;;14;N;;;;; -24EF;NEGATIVE CIRCLED NUMBER FIFTEEN;No;0;ON;;;;15;N;;;;; -24F0;NEGATIVE CIRCLED NUMBER SIXTEEN;No;0;ON;;;;16;N;;;;; -24F1;NEGATIVE CIRCLED NUMBER SEVENTEEN;No;0;ON;;;;17;N;;;;; -24F2;NEGATIVE CIRCLED NUMBER EIGHTEEN;No;0;ON;;;;18;N;;;;; -24F3;NEGATIVE CIRCLED NUMBER NINETEEN;No;0;ON;;;;19;N;;;;; -24F4;NEGATIVE CIRCLED NUMBER TWENTY;No;0;ON;;;;20;N;;;;; -24F5;DOUBLE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;;;;; -24F6;DOUBLE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;;;;; -24F7;DOUBLE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;;;;; -24F8;DOUBLE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;;;;; -24F9;DOUBLE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;;;;; -24FA;DOUBLE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;;;;; -24FB;DOUBLE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;;;;; -24FC;DOUBLE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;;;;; -24FD;DOUBLE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;;;;; -24FE;DOUBLE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;;;;; -24FF;NEGATIVE CIRCLED DIGIT ZERO;No;0;ON;;;0;0;N;;;;; -2500;BOX DRAWINGS LIGHT HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT HORIZONTAL;;;; -2501;BOX DRAWINGS HEAVY HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY HORIZONTAL;;;; -2502;BOX DRAWINGS LIGHT VERTICAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL;;;; -2503;BOX DRAWINGS HEAVY VERTICAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL;;;; -2504;BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH HORIZONTAL;;;; -2505;BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH HORIZONTAL;;;; -2506;BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH VERTICAL;;;; -2507;BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH VERTICAL;;;; -2508;BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH HORIZONTAL;;;; -2509;BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH HORIZONTAL;;;; -250A;BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH VERTICAL;;;; -250B;BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH VERTICAL;;;; -250C;BOX DRAWINGS LIGHT DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND RIGHT;;;; -250D;BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT HEAVY;;;; -250E;BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT LIGHT;;;; -250F;BOX DRAWINGS HEAVY DOWN AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND RIGHT;;;; -2510;BOX DRAWINGS LIGHT DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND LEFT;;;; -2511;BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT HEAVY;;;; -2512;BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT LIGHT;;;; -2513;BOX DRAWINGS HEAVY DOWN AND LEFT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND LEFT;;;; -2514;BOX DRAWINGS LIGHT UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT UP AND RIGHT;;;; -2515;BOX DRAWINGS UP LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT HEAVY;;;; -2516;BOX DRAWINGS UP HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT LIGHT;;;; -2517;BOX DRAWINGS HEAVY UP AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY UP AND RIGHT;;;; -2518;BOX DRAWINGS LIGHT UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT UP AND LEFT;;;; -2519;BOX DRAWINGS UP LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT HEAVY;;;; -251A;BOX DRAWINGS UP HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT LIGHT;;;; -251B;BOX DRAWINGS HEAVY UP AND LEFT;So;0;ON;;;;;N;FORMS HEAVY UP AND LEFT;;;; -251C;BOX DRAWINGS LIGHT VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND RIGHT;;;; -251D;BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND RIGHT HEAVY;;;; -251E;BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT DOWN LIGHT;;;; -251F;BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT UP LIGHT;;;; -2520;BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND RIGHT LIGHT;;;; -2521;BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT UP HEAVY;;;; -2522;BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT DOWN HEAVY;;;; -2523;BOX DRAWINGS HEAVY VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND RIGHT;;;; -2524;BOX DRAWINGS LIGHT VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND LEFT;;;; -2525;BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND LEFT HEAVY;;;; -2526;BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT DOWN LIGHT;;;; -2527;BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT UP LIGHT;;;; -2528;BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND LEFT LIGHT;;;; -2529;BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT UP HEAVY;;;; -252A;BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT DOWN HEAVY;;;; -252B;BOX DRAWINGS HEAVY VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND LEFT;;;; -252C;BOX DRAWINGS LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOWN AND HORIZONTAL;;;; -252D;BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT DOWN LIGHT;;;; -252E;BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT DOWN LIGHT;;;; -252F;BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND HORIZONTAL HEAVY;;;; -2530;BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND HORIZONTAL LIGHT;;;; -2531;BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT DOWN HEAVY;;;; -2532;BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT DOWN HEAVY;;;; -2533;BOX DRAWINGS HEAVY DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOWN AND HORIZONTAL;;;; -2534;BOX DRAWINGS LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT UP AND HORIZONTAL;;;; -2535;BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT UP LIGHT;;;; -2536;BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT UP LIGHT;;;; -2537;BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND HORIZONTAL HEAVY;;;; -2538;BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND HORIZONTAL LIGHT;;;; -2539;BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT UP HEAVY;;;; -253A;BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT UP HEAVY;;;; -253B;BOX DRAWINGS HEAVY UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY UP AND HORIZONTAL;;;; -253C;BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND HORIZONTAL;;;; -253D;BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT VERTICAL LIGHT;;;; -253E;BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT VERTICAL LIGHT;;;; -253F;BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND HORIZONTAL HEAVY;;;; -2540;BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND DOWN HORIZONTAL LIGHT;;;; -2541;BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND UP HORIZONTAL LIGHT;;;; -2542;BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND HORIZONTAL LIGHT;;;; -2543;BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT UP HEAVY AND RIGHT DOWN LIGHT;;;; -2544;BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT UP HEAVY AND LEFT DOWN LIGHT;;;; -2545;BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT DOWN HEAVY AND RIGHT UP LIGHT;;;; -2546;BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT DOWN HEAVY AND LEFT UP LIGHT;;;; -2547;BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND UP HORIZONTAL HEAVY;;;; -2548;BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND DOWN HORIZONTAL HEAVY;;;; -2549;BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT VERTICAL HEAVY;;;; -254A;BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT VERTICAL HEAVY;;;; -254B;BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND HORIZONTAL;;;; -254C;BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH HORIZONTAL;;;; -254D;BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH HORIZONTAL;;;; -254E;BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH VERTICAL;;;; -254F;BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH VERTICAL;;;; -2550;BOX DRAWINGS DOUBLE HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE HORIZONTAL;;;; -2551;BOX DRAWINGS DOUBLE VERTICAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL;;;; -2552;BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND RIGHT DOUBLE;;;; -2553;BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND RIGHT SINGLE;;;; -2554;BOX DRAWINGS DOUBLE DOWN AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND RIGHT;;;; -2555;BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND LEFT DOUBLE;;;; -2556;BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND LEFT SINGLE;;;; -2557;BOX DRAWINGS DOUBLE DOWN AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND LEFT;;;; -2558;BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND RIGHT DOUBLE;;;; -2559;BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND RIGHT SINGLE;;;; -255A;BOX DRAWINGS DOUBLE UP AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE UP AND RIGHT;;;; -255B;BOX DRAWINGS UP SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND LEFT DOUBLE;;;; -255C;BOX DRAWINGS UP DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND LEFT SINGLE;;;; -255D;BOX DRAWINGS DOUBLE UP AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE UP AND LEFT;;;; -255E;BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND RIGHT DOUBLE;;;; -255F;BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND RIGHT SINGLE;;;; -2560;BOX DRAWINGS DOUBLE VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND RIGHT;;;; -2561;BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND LEFT DOUBLE;;;; -2562;BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND LEFT SINGLE;;;; -2563;BOX DRAWINGS DOUBLE VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND LEFT;;;; -2564;BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND HORIZONTAL DOUBLE;;;; -2565;BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND HORIZONTAL SINGLE;;;; -2566;BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND HORIZONTAL;;;; -2567;BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND HORIZONTAL DOUBLE;;;; -2568;BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND HORIZONTAL SINGLE;;;; -2569;BOX DRAWINGS DOUBLE UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE UP AND HORIZONTAL;;;; -256A;BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND HORIZONTAL DOUBLE;;;; -256B;BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND HORIZONTAL SINGLE;;;; -256C;BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND HORIZONTAL;;;; -256D;BOX DRAWINGS LIGHT ARC DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND RIGHT;;;; -256E;BOX DRAWINGS LIGHT ARC DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND LEFT;;;; -256F;BOX DRAWINGS LIGHT ARC UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND LEFT;;;; -2570;BOX DRAWINGS LIGHT ARC UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND RIGHT;;;; -2571;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;;;; -2572;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;;;; -2573;BOX DRAWINGS LIGHT DIAGONAL CROSS;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL CROSS;;;; -2574;BOX DRAWINGS LIGHT LEFT;So;0;ON;;;;;N;FORMS LIGHT LEFT;;;; -2575;BOX DRAWINGS LIGHT UP;So;0;ON;;;;;N;FORMS LIGHT UP;;;; -2576;BOX DRAWINGS LIGHT RIGHT;So;0;ON;;;;;N;FORMS LIGHT RIGHT;;;; -2577;BOX DRAWINGS LIGHT DOWN;So;0;ON;;;;;N;FORMS LIGHT DOWN;;;; -2578;BOX DRAWINGS HEAVY LEFT;So;0;ON;;;;;N;FORMS HEAVY LEFT;;;; -2579;BOX DRAWINGS HEAVY UP;So;0;ON;;;;;N;FORMS HEAVY UP;;;; -257A;BOX DRAWINGS HEAVY RIGHT;So;0;ON;;;;;N;FORMS HEAVY RIGHT;;;; -257B;BOX DRAWINGS HEAVY DOWN;So;0;ON;;;;;N;FORMS HEAVY DOWN;;;; -257C;BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT;So;0;ON;;;;;N;FORMS LIGHT LEFT AND HEAVY RIGHT;;;; -257D;BOX DRAWINGS LIGHT UP AND HEAVY DOWN;So;0;ON;;;;;N;FORMS LIGHT UP AND HEAVY DOWN;;;; -257E;BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT;So;0;ON;;;;;N;FORMS HEAVY LEFT AND LIGHT RIGHT;;;; -257F;BOX DRAWINGS HEAVY UP AND LIGHT DOWN;So;0;ON;;;;;N;FORMS HEAVY UP AND LIGHT DOWN;;;; -2580;UPPER HALF BLOCK;So;0;ON;;;;;N;;;;; -2581;LOWER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; -2582;LOWER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;; -2583;LOWER THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; -2584;LOWER HALF BLOCK;So;0;ON;;;;;N;;;;; -2585;LOWER FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; -2586;LOWER THREE QUARTERS BLOCK;So;0;ON;;;;;N;LOWER THREE QUARTER BLOCK;;;; -2587;LOWER SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; -2588;FULL BLOCK;So;0;ON;;;;;N;;;;; -2589;LEFT SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; -258A;LEFT THREE QUARTERS BLOCK;So;0;ON;;;;;N;LEFT THREE QUARTER BLOCK;;;; -258B;LEFT FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; -258C;LEFT HALF BLOCK;So;0;ON;;;;;N;;;;; -258D;LEFT THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; -258E;LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;; -258F;LEFT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; -2590;RIGHT HALF BLOCK;So;0;ON;;;;;N;;;;; -2591;LIGHT SHADE;So;0;ON;;;;;N;;;;; -2592;MEDIUM SHADE;So;0;ON;;;;;N;;;;; -2593;DARK SHADE;So;0;ON;;;;;N;;;;; -2594;UPPER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; -2595;RIGHT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; -2596;QUADRANT LOWER LEFT;So;0;ON;;;;;N;;;;; -2597;QUADRANT LOWER RIGHT;So;0;ON;;;;;N;;;;; -2598;QUADRANT UPPER LEFT;So;0;ON;;;;;N;;;;; -2599;QUADRANT UPPER LEFT AND LOWER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;; -259A;QUADRANT UPPER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;; -259B;QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER LEFT;So;0;ON;;;;;N;;;;; -259C;QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER RIGHT;So;0;ON;;;;;N;;;;; -259D;QUADRANT UPPER RIGHT;So;0;ON;;;;;N;;;;; -259E;QUADRANT UPPER RIGHT AND LOWER LEFT;So;0;ON;;;;;N;;;;; -259F;QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;; -25A0;BLACK SQUARE;So;0;ON;;;;;N;;;;; -25A1;WHITE SQUARE;So;0;ON;;;;;N;;;;; -25A2;WHITE SQUARE WITH ROUNDED CORNERS;So;0;ON;;;;;N;;;;; -25A3;WHITE SQUARE CONTAINING BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;; -25A4;SQUARE WITH HORIZONTAL FILL;So;0;ON;;;;;N;;;;; -25A5;SQUARE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;; -25A6;SQUARE WITH ORTHOGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;; -25A7;SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL;So;0;ON;;;;;N;;;;; -25A8;SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL;So;0;ON;;;;;N;;;;; -25A9;SQUARE WITH DIAGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;; -25AA;BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;; -25AB;WHITE SMALL SQUARE;So;0;ON;;;;;N;;;;; -25AC;BLACK RECTANGLE;So;0;ON;;;;;N;;;;; -25AD;WHITE RECTANGLE;So;0;ON;;;;;N;;;;; -25AE;BLACK VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;; -25AF;WHITE VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;; -25B0;BLACK PARALLELOGRAM;So;0;ON;;;;;N;;;;; -25B1;WHITE PARALLELOGRAM;So;0;ON;;;;;N;;;;; -25B2;BLACK UP-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING TRIANGLE;;;; -25B3;WHITE UP-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE;;;; -25B4;BLACK UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING SMALL TRIANGLE;;;; -25B5;WHITE UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING SMALL TRIANGLE;;;; -25B6;BLACK RIGHT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING TRIANGLE;;;; -25B7;WHITE RIGHT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE RIGHT POINTING TRIANGLE;;;; -25B8;BLACK RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING SMALL TRIANGLE;;;; -25B9;WHITE RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE RIGHT POINTING SMALL TRIANGLE;;;; -25BA;BLACK RIGHT-POINTING POINTER;So;0;ON;;;;;N;BLACK RIGHT POINTING POINTER;;;; -25BB;WHITE RIGHT-POINTING POINTER;So;0;ON;;;;;N;WHITE RIGHT POINTING POINTER;;;; -25BC;BLACK DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING TRIANGLE;;;; -25BD;WHITE DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING TRIANGLE;;;; -25BE;BLACK DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING SMALL TRIANGLE;;;; -25BF;WHITE DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING SMALL TRIANGLE;;;; -25C0;BLACK LEFT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING TRIANGLE;;;; -25C1;WHITE LEFT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE LEFT POINTING TRIANGLE;;;; -25C2;BLACK LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING SMALL TRIANGLE;;;; -25C3;WHITE LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE LEFT POINTING SMALL TRIANGLE;;;; -25C4;BLACK LEFT-POINTING POINTER;So;0;ON;;;;;N;BLACK LEFT POINTING POINTER;;;; -25C5;WHITE LEFT-POINTING POINTER;So;0;ON;;;;;N;WHITE LEFT POINTING POINTER;;;; -25C6;BLACK DIAMOND;So;0;ON;;;;;N;;;;; -25C7;WHITE DIAMOND;So;0;ON;;;;;N;;;;; -25C8;WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND;So;0;ON;;;;;N;;;;; -25C9;FISHEYE;So;0;ON;;;;;N;;;;; -25CA;LOZENGE;So;0;ON;;;;;N;;;;; -25CB;WHITE CIRCLE;So;0;ON;;;;;N;;;;; -25CC;DOTTED CIRCLE;So;0;ON;;;;;N;;;;; -25CD;CIRCLE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;; -25CE;BULLSEYE;So;0;ON;;;;;N;;;;; -25CF;BLACK CIRCLE;So;0;ON;;;;;N;;;;; -25D0;CIRCLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;; -25D1;CIRCLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;; -25D2;CIRCLE WITH LOWER HALF BLACK;So;0;ON;;;;;N;;;;; -25D3;CIRCLE WITH UPPER HALF BLACK;So;0;ON;;;;;N;;;;; -25D4;CIRCLE WITH UPPER RIGHT QUADRANT BLACK;So;0;ON;;;;;N;;;;; -25D5;CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK;So;0;ON;;;;;N;;;;; -25D6;LEFT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;; -25D7;RIGHT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;; -25D8;INVERSE BULLET;So;0;ON;;;;;N;;;;; -25D9;INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;; -25DA;UPPER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;; -25DB;LOWER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;; -25DC;UPPER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;; -25DD;UPPER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;; -25DE;LOWER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;; -25DF;LOWER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;; -25E0;UPPER HALF CIRCLE;So;0;ON;;;;;N;;;;; -25E1;LOWER HALF CIRCLE;So;0;ON;;;;;N;;;;; -25E2;BLACK LOWER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;; -25E3;BLACK LOWER LEFT TRIANGLE;So;0;ON;;;;;N;;;;; -25E4;BLACK UPPER LEFT TRIANGLE;So;0;ON;;;;;N;;;;; -25E5;BLACK UPPER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;; -25E6;WHITE BULLET;So;0;ON;;;;;N;;;;; -25E7;SQUARE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;; -25E8;SQUARE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;; -25E9;SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;; -25EA;SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;; -25EB;WHITE SQUARE WITH VERTICAL BISECTING LINE;So;0;ON;;;;;N;;;;; -25EC;WHITE UP-POINTING TRIANGLE WITH DOT;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE WITH DOT;;;; -25ED;UP-POINTING TRIANGLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH LEFT HALF BLACK;;;; -25EE;UP-POINTING TRIANGLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH RIGHT HALF BLACK;;;; -25EF;LARGE CIRCLE;So;0;ON;;;;;N;;;;; -25F0;WHITE SQUARE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;; -25F1;WHITE SQUARE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;; -25F2;WHITE SQUARE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;; -25F3;WHITE SQUARE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;; -25F4;WHITE CIRCLE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;; -25F5;WHITE CIRCLE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;; -25F6;WHITE CIRCLE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;; -25F7;WHITE CIRCLE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;; -25F8;UPPER LEFT TRIANGLE;Sm;0;ON;;;;;N;;;;; -25F9;UPPER RIGHT TRIANGLE;Sm;0;ON;;;;;N;;;;; -25FA;LOWER LEFT TRIANGLE;Sm;0;ON;;;;;N;;;;; -25FB;WHITE MEDIUM SQUARE;Sm;0;ON;;;;;N;;;;; -25FC;BLACK MEDIUM SQUARE;Sm;0;ON;;;;;N;;;;; -25FD;WHITE MEDIUM SMALL SQUARE;Sm;0;ON;;;;;N;;;;; -25FE;BLACK MEDIUM SMALL SQUARE;Sm;0;ON;;;;;N;;;;; -25FF;LOWER RIGHT TRIANGLE;Sm;0;ON;;;;;N;;;;; -2600;BLACK SUN WITH RAYS;So;0;ON;;;;;N;;;;; -2601;CLOUD;So;0;ON;;;;;N;;;;; -2602;UMBRELLA;So;0;ON;;;;;N;;;;; -2603;SNOWMAN;So;0;ON;;;;;N;;;;; -2604;COMET;So;0;ON;;;;;N;;;;; -2605;BLACK STAR;So;0;ON;;;;;N;;;;; -2606;WHITE STAR;So;0;ON;;;;;N;;;;; -2607;LIGHTNING;So;0;ON;;;;;N;;;;; -2608;THUNDERSTORM;So;0;ON;;;;;N;;;;; -2609;SUN;So;0;ON;;;;;N;;;;; -260A;ASCENDING NODE;So;0;ON;;;;;N;;;;; -260B;DESCENDING NODE;So;0;ON;;;;;N;;;;; -260C;CONJUNCTION;So;0;ON;;;;;N;;;;; -260D;OPPOSITION;So;0;ON;;;;;N;;;;; -260E;BLACK TELEPHONE;So;0;ON;;;;;N;;;;; -260F;WHITE TELEPHONE;So;0;ON;;;;;N;;;;; -2610;BALLOT BOX;So;0;ON;;;;;N;;;;; -2611;BALLOT BOX WITH CHECK;So;0;ON;;;;;N;;;;; -2612;BALLOT BOX WITH X;So;0;ON;;;;;N;;;;; -2613;SALTIRE;So;0;ON;;;;;N;;;;; -2614;UMBRELLA WITH RAIN DROPS;So;0;ON;;;;;N;;;;; -2615;HOT BEVERAGE;So;0;ON;;;;;N;;;;; -2616;WHITE SHOGI PIECE;So;0;ON;;;;;N;;;;; -2617;BLACK SHOGI PIECE;So;0;ON;;;;;N;;;;; -2618;SHAMROCK;So;0;ON;;;;;N;;;;; -2619;REVERSED ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;; -261A;BLACK LEFT POINTING INDEX;So;0;ON;;;;;N;;;;; -261B;BLACK RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;; -261C;WHITE LEFT POINTING INDEX;So;0;ON;;;;;N;;;;; -261D;WHITE UP POINTING INDEX;So;0;ON;;;;;N;;;;; -261E;WHITE RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;; -261F;WHITE DOWN POINTING INDEX;So;0;ON;;;;;N;;;;; -2620;SKULL AND CROSSBONES;So;0;ON;;;;;N;;;;; -2621;CAUTION SIGN;So;0;ON;;;;;N;;;;; -2622;RADIOACTIVE SIGN;So;0;ON;;;;;N;;;;; -2623;BIOHAZARD SIGN;So;0;ON;;;;;N;;;;; -2624;CADUCEUS;So;0;ON;;;;;N;;;;; -2625;ANKH;So;0;ON;;;;;N;;;;; -2626;ORTHODOX CROSS;So;0;ON;;;;;N;;;;; -2627;CHI RHO;So;0;ON;;;;;N;;;;; -2628;CROSS OF LORRAINE;So;0;ON;;;;;N;;;;; -2629;CROSS OF JERUSALEM;So;0;ON;;;;;N;;;;; -262A;STAR AND CRESCENT;So;0;ON;;;;;N;;;;; -262B;FARSI SYMBOL;So;0;ON;;;;;N;SYMBOL OF IRAN;;;; -262C;ADI SHAKTI;So;0;ON;;;;;N;;;;; -262D;HAMMER AND SICKLE;So;0;ON;;;;;N;;;;; -262E;PEACE SYMBOL;So;0;ON;;;;;N;;;;; -262F;YIN YANG;So;0;ON;;;;;N;;;;; -2630;TRIGRAM FOR HEAVEN;So;0;ON;;;;;N;;;;; -2631;TRIGRAM FOR LAKE;So;0;ON;;;;;N;;;;; -2632;TRIGRAM FOR FIRE;So;0;ON;;;;;N;;;;; -2633;TRIGRAM FOR THUNDER;So;0;ON;;;;;N;;;;; -2634;TRIGRAM FOR WIND;So;0;ON;;;;;N;;;;; -2635;TRIGRAM FOR WATER;So;0;ON;;;;;N;;;;; -2636;TRIGRAM FOR MOUNTAIN;So;0;ON;;;;;N;;;;; -2637;TRIGRAM FOR EARTH;So;0;ON;;;;;N;;;;; -2638;WHEEL OF DHARMA;So;0;ON;;;;;N;;;;; -2639;WHITE FROWNING FACE;So;0;ON;;;;;N;;;;; -263A;WHITE SMILING FACE;So;0;ON;;;;;N;;;;; -263B;BLACK SMILING FACE;So;0;ON;;;;;N;;;;; -263C;WHITE SUN WITH RAYS;So;0;ON;;;;;N;;;;; -263D;FIRST QUARTER MOON;So;0;ON;;;;;N;;;;; -263E;LAST QUARTER MOON;So;0;ON;;;;;N;;;;; -263F;MERCURY;So;0;ON;;;;;N;;;;; -2640;FEMALE SIGN;So;0;ON;;;;;N;;;;; -2641;EARTH;So;0;ON;;;;;N;;;;; -2642;MALE SIGN;So;0;ON;;;;;N;;;;; -2643;JUPITER;So;0;ON;;;;;N;;;;; -2644;SATURN;So;0;ON;;;;;N;;;;; -2645;URANUS;So;0;ON;;;;;N;;;;; -2646;NEPTUNE;So;0;ON;;;;;N;;;;; -2647;PLUTO;So;0;ON;;;;;N;;;;; -2648;ARIES;So;0;ON;;;;;N;;;;; -2649;TAURUS;So;0;ON;;;;;N;;;;; -264A;GEMINI;So;0;ON;;;;;N;;;;; -264B;CANCER;So;0;ON;;;;;N;;;;; -264C;LEO;So;0;ON;;;;;N;;;;; -264D;VIRGO;So;0;ON;;;;;N;;;;; -264E;LIBRA;So;0;ON;;;;;N;;;;; -264F;SCORPIUS;So;0;ON;;;;;N;;;;; -2650;SAGITTARIUS;So;0;ON;;;;;N;;;;; -2651;CAPRICORN;So;0;ON;;;;;N;;;;; -2652;AQUARIUS;So;0;ON;;;;;N;;;;; -2653;PISCES;So;0;ON;;;;;N;;;;; -2654;WHITE CHESS KING;So;0;ON;;;;;N;;;;; -2655;WHITE CHESS QUEEN;So;0;ON;;;;;N;;;;; -2656;WHITE CHESS ROOK;So;0;ON;;;;;N;;;;; -2657;WHITE CHESS BISHOP;So;0;ON;;;;;N;;;;; -2658;WHITE CHESS KNIGHT;So;0;ON;;;;;N;;;;; -2659;WHITE CHESS PAWN;So;0;ON;;;;;N;;;;; -265A;BLACK CHESS KING;So;0;ON;;;;;N;;;;; -265B;BLACK CHESS QUEEN;So;0;ON;;;;;N;;;;; -265C;BLACK CHESS ROOK;So;0;ON;;;;;N;;;;; -265D;BLACK CHESS BISHOP;So;0;ON;;;;;N;;;;; -265E;BLACK CHESS KNIGHT;So;0;ON;;;;;N;;;;; -265F;BLACK CHESS PAWN;So;0;ON;;;;;N;;;;; -2660;BLACK SPADE SUIT;So;0;ON;;;;;N;;;;; -2661;WHITE HEART SUIT;So;0;ON;;;;;N;;;;; -2662;WHITE DIAMOND SUIT;So;0;ON;;;;;N;;;;; -2663;BLACK CLUB SUIT;So;0;ON;;;;;N;;;;; -2664;WHITE SPADE SUIT;So;0;ON;;;;;N;;;;; -2665;BLACK HEART SUIT;So;0;ON;;;;;N;;;;; -2666;BLACK DIAMOND SUIT;So;0;ON;;;;;N;;;;; -2667;WHITE CLUB SUIT;So;0;ON;;;;;N;;;;; -2668;HOT SPRINGS;So;0;ON;;;;;N;;;;; -2669;QUARTER NOTE;So;0;ON;;;;;N;;;;; -266A;EIGHTH NOTE;So;0;ON;;;;;N;;;;; -266B;BEAMED EIGHTH NOTES;So;0;ON;;;;;N;BARRED EIGHTH NOTES;;;; -266C;BEAMED SIXTEENTH NOTES;So;0;ON;;;;;N;BARRED SIXTEENTH NOTES;;;; -266D;MUSIC FLAT SIGN;So;0;ON;;;;;N;FLAT;;;; -266E;MUSIC NATURAL SIGN;So;0;ON;;;;;N;NATURAL;;;; -266F;MUSIC SHARP SIGN;Sm;0;ON;;;;;N;SHARP;;;; -2670;WEST SYRIAC CROSS;So;0;ON;;;;;N;;;;; -2671;EAST SYRIAC CROSS;So;0;ON;;;;;N;;;;; -2672;UNIVERSAL RECYCLING SYMBOL;So;0;ON;;;;;N;;;;; -2673;RECYCLING SYMBOL FOR TYPE-1 PLASTICS;So;0;ON;;;;;N;;;;; -2674;RECYCLING SYMBOL FOR TYPE-2 PLASTICS;So;0;ON;;;;;N;;;;; -2675;RECYCLING SYMBOL FOR TYPE-3 PLASTICS;So;0;ON;;;;;N;;;;; -2676;RECYCLING SYMBOL FOR TYPE-4 PLASTICS;So;0;ON;;;;;N;;;;; -2677;RECYCLING SYMBOL FOR TYPE-5 PLASTICS;So;0;ON;;;;;N;;;;; -2678;RECYCLING SYMBOL FOR TYPE-6 PLASTICS;So;0;ON;;;;;N;;;;; -2679;RECYCLING SYMBOL FOR TYPE-7 PLASTICS;So;0;ON;;;;;N;;;;; -267A;RECYCLING SYMBOL FOR GENERIC MATERIALS;So;0;ON;;;;;N;;;;; -267B;BLACK UNIVERSAL RECYCLING SYMBOL;So;0;ON;;;;;N;;;;; -267C;RECYCLED PAPER SYMBOL;So;0;ON;;;;;N;;;;; -267D;PARTIALLY-RECYCLED PAPER SYMBOL;So;0;ON;;;;;N;;;;; -267E;PERMANENT PAPER SIGN;So;0;ON;;;;;N;;;;; -267F;WHEELCHAIR SYMBOL;So;0;ON;;;;;N;;;;; -2680;DIE FACE-1;So;0;ON;;;;;N;;;;; -2681;DIE FACE-2;So;0;ON;;;;;N;;;;; -2682;DIE FACE-3;So;0;ON;;;;;N;;;;; -2683;DIE FACE-4;So;0;ON;;;;;N;;;;; -2684;DIE FACE-5;So;0;ON;;;;;N;;;;; -2685;DIE FACE-6;So;0;ON;;;;;N;;;;; -2686;WHITE CIRCLE WITH DOT RIGHT;So;0;ON;;;;;N;;;;; -2687;WHITE CIRCLE WITH TWO DOTS;So;0;ON;;;;;N;;;;; -2688;BLACK CIRCLE WITH WHITE DOT RIGHT;So;0;ON;;;;;N;;;;; -2689;BLACK CIRCLE WITH TWO WHITE DOTS;So;0;ON;;;;;N;;;;; -268A;MONOGRAM FOR YANG;So;0;ON;;;;;N;;;;; -268B;MONOGRAM FOR YIN;So;0;ON;;;;;N;;;;; -268C;DIGRAM FOR GREATER YANG;So;0;ON;;;;;N;;;;; -268D;DIGRAM FOR LESSER YIN;So;0;ON;;;;;N;;;;; -268E;DIGRAM FOR LESSER YANG;So;0;ON;;;;;N;;;;; -268F;DIGRAM FOR GREATER YIN;So;0;ON;;;;;N;;;;; -2690;WHITE FLAG;So;0;ON;;;;;N;;;;; -2691;BLACK FLAG;So;0;ON;;;;;N;;;;; -2692;HAMMER AND PICK;So;0;ON;;;;;N;;;;; -2693;ANCHOR;So;0;ON;;;;;N;;;;; -2694;CROSSED SWORDS;So;0;ON;;;;;N;;;;; -2695;STAFF OF AESCULAPIUS;So;0;ON;;;;;N;;;;; -2696;SCALES;So;0;ON;;;;;N;;;;; -2697;ALEMBIC;So;0;ON;;;;;N;;;;; -2698;FLOWER;So;0;ON;;;;;N;;;;; -2699;GEAR;So;0;ON;;;;;N;;;;; -269A;STAFF OF HERMES;So;0;ON;;;;;N;;;;; -269B;ATOM SYMBOL;So;0;ON;;;;;N;;;;; -269C;FLEUR-DE-LIS;So;0;ON;;;;;N;;;;; -269D;OUTLINED WHITE STAR;So;0;ON;;;;;N;;;;; -269E;THREE LINES CONVERGING RIGHT;So;0;ON;;;;;N;;;;; -269F;THREE LINES CONVERGING LEFT;So;0;ON;;;;;N;;;;; -26A0;WARNING SIGN;So;0;ON;;;;;N;;;;; -26A1;HIGH VOLTAGE SIGN;So;0;ON;;;;;N;;;;; -26A2;DOUBLED FEMALE SIGN;So;0;ON;;;;;N;;;;; -26A3;DOUBLED MALE SIGN;So;0;ON;;;;;N;;;;; -26A4;INTERLOCKED FEMALE AND MALE SIGN;So;0;ON;;;;;N;;;;; -26A5;MALE AND FEMALE SIGN;So;0;ON;;;;;N;;;;; -26A6;MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;; -26A7;MALE WITH STROKE AND MALE AND FEMALE SIGN;So;0;ON;;;;;N;;;;; -26A8;VERTICAL MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;; -26A9;HORIZONTAL MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;; -26AA;MEDIUM WHITE CIRCLE;So;0;ON;;;;;N;;;;; -26AB;MEDIUM BLACK CIRCLE;So;0;ON;;;;;N;;;;; -26AC;MEDIUM SMALL WHITE CIRCLE;So;0;L;;;;;N;;;;; -26AD;MARRIAGE SYMBOL;So;0;ON;;;;;N;;;;; -26AE;DIVORCE SYMBOL;So;0;ON;;;;;N;;;;; -26AF;UNMARRIED PARTNERSHIP SYMBOL;So;0;ON;;;;;N;;;;; -26B0;COFFIN;So;0;ON;;;;;N;;;;; -26B1;FUNERAL URN;So;0;ON;;;;;N;;;;; -26B2;NEUTER;So;0;ON;;;;;N;;;;; -26B3;CERES;So;0;ON;;;;;N;;;;; -26B4;PALLAS;So;0;ON;;;;;N;;;;; -26B5;JUNO;So;0;ON;;;;;N;;;;; -26B6;VESTA;So;0;ON;;;;;N;;;;; -26B7;CHIRON;So;0;ON;;;;;N;;;;; -26B8;BLACK MOON LILITH;So;0;ON;;;;;N;;;;; -26B9;SEXTILE;So;0;ON;;;;;N;;;;; -26BA;SEMISEXTILE;So;0;ON;;;;;N;;;;; -26BB;QUINCUNX;So;0;ON;;;;;N;;;;; -26BC;SESQUIQUADRATE;So;0;ON;;;;;N;;;;; -26BD;SOCCER BALL;So;0;ON;;;;;N;;;;; -26BE;BASEBALL;So;0;ON;;;;;N;;;;; -26BF;SQUARED KEY;So;0;ON;;;;;N;;;;; -26C0;WHITE DRAUGHTS MAN;So;0;ON;;;;;N;;;;; -26C1;WHITE DRAUGHTS KING;So;0;ON;;;;;N;;;;; -26C2;BLACK DRAUGHTS MAN;So;0;ON;;;;;N;;;;; -26C3;BLACK DRAUGHTS KING;So;0;ON;;;;;N;;;;; -26C4;SNOWMAN WITHOUT SNOW;So;0;ON;;;;;N;;;;; -26C5;SUN BEHIND CLOUD;So;0;ON;;;;;N;;;;; -26C6;RAIN;So;0;ON;;;;;N;;;;; -26C7;BLACK SNOWMAN;So;0;ON;;;;;N;;;;; -26C8;THUNDER CLOUD AND RAIN;So;0;ON;;;;;N;;;;; -26C9;TURNED WHITE SHOGI PIECE;So;0;ON;;;;;N;;;;; -26CA;TURNED BLACK SHOGI PIECE;So;0;ON;;;;;N;;;;; -26CB;WHITE DIAMOND IN SQUARE;So;0;ON;;;;;N;;;;; -26CC;CROSSING LANES;So;0;ON;;;;;N;;;;; -26CD;DISABLED CAR;So;0;ON;;;;;N;;;;; -26CF;PICK;So;0;ON;;;;;N;;;;; -26D0;CAR SLIDING;So;0;ON;;;;;N;;;;; -26D1;HELMET WITH WHITE CROSS;So;0;ON;;;;;N;;;;; -26D2;CIRCLED CROSSING LANES;So;0;ON;;;;;N;;;;; -26D3;CHAINS;So;0;ON;;;;;N;;;;; -26D4;NO ENTRY;So;0;ON;;;;;N;;;;; -26D5;ALTERNATE ONE-WAY LEFT WAY TRAFFIC;So;0;ON;;;;;N;;;;; -26D6;BLACK TWO-WAY LEFT WAY TRAFFIC;So;0;ON;;;;;N;;;;; -26D7;WHITE TWO-WAY LEFT WAY TRAFFIC;So;0;ON;;;;;N;;;;; -26D8;BLACK LEFT LANE MERGE;So;0;ON;;;;;N;;;;; -26D9;WHITE LEFT LANE MERGE;So;0;ON;;;;;N;;;;; -26DA;DRIVE SLOW SIGN;So;0;ON;;;;;N;;;;; -26DB;HEAVY WHITE DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;;;;; -26DC;LEFT CLOSED ENTRY;So;0;ON;;;;;N;;;;; -26DD;SQUARED SALTIRE;So;0;ON;;;;;N;;;;; -26DE;FALLING DIAGONAL IN WHITE CIRCLE IN BLACK SQUARE;So;0;ON;;;;;N;;;;; -26DF;BLACK TRUCK;So;0;ON;;;;;N;;;;; -26E0;RESTRICTED LEFT ENTRY-1;So;0;ON;;;;;N;;;;; -26E1;RESTRICTED LEFT ENTRY-2;So;0;ON;;;;;N;;;;; -26E3;HEAVY CIRCLE WITH STROKE AND TWO DOTS ABOVE;So;0;ON;;;;;N;;;;; -26E8;BLACK CROSS ON SHIELD;So;0;ON;;;;;N;;;;; -26E9;SHINTO SHRINE;So;0;ON;;;;;N;;;;; -26EA;CHURCH;So;0;ON;;;;;N;;;;; -26EB;CASTLE;So;0;ON;;;;;N;;;;; -26EC;HISTORIC SITE;So;0;ON;;;;;N;;;;; -26ED;GEAR WITHOUT HUB;So;0;ON;;;;;N;;;;; -26EE;GEAR WITH HANDLES;So;0;ON;;;;;N;;;;; -26EF;MAP SYMBOL FOR LIGHTHOUSE;So;0;ON;;;;;N;;;;; -26F0;MOUNTAIN;So;0;ON;;;;;N;;;;; -26F1;UMBRELLA ON GROUND;So;0;ON;;;;;N;;;;; -26F2;FOUNTAIN;So;0;ON;;;;;N;;;;; -26F3;FLAG IN HOLE;So;0;ON;;;;;N;;;;; -26F4;FERRY;So;0;ON;;;;;N;;;;; -26F5;SAILBOAT;So;0;ON;;;;;N;;;;; -26F6;SQUARE FOUR CORNERS;So;0;ON;;;;;N;;;;; -26F7;SKIER;So;0;ON;;;;;N;;;;; -26F8;ICE SKATE;So;0;ON;;;;;N;;;;; -26F9;PERSON WITH BALL;So;0;ON;;;;;N;;;;; -26FA;TENT;So;0;ON;;;;;N;;;;; -26FB;JAPANESE BANK SYMBOL;So;0;ON;;;;;N;;;;; -26FC;HEADSTONE GRAVEYARD SYMBOL;So;0;ON;;;;;N;;;;; -26FD;FUEL PUMP;So;0;ON;;;;;N;;;;; -26FE;CUP ON BLACK SQUARE;So;0;ON;;;;;N;;;;; -26FF;WHITE FLAG WITH HORIZONTAL MIDDLE BLACK STRIPE;So;0;ON;;;;;N;;;;; -2701;UPPER BLADE SCISSORS;So;0;ON;;;;;N;;;;; -2702;BLACK SCISSORS;So;0;ON;;;;;N;;;;; -2703;LOWER BLADE SCISSORS;So;0;ON;;;;;N;;;;; -2704;WHITE SCISSORS;So;0;ON;;;;;N;;;;; -2706;TELEPHONE LOCATION SIGN;So;0;ON;;;;;N;;;;; -2707;TAPE DRIVE;So;0;ON;;;;;N;;;;; -2708;AIRPLANE;So;0;ON;;;;;N;;;;; -2709;ENVELOPE;So;0;ON;;;;;N;;;;; -270C;VICTORY HAND;So;0;ON;;;;;N;;;;; -270D;WRITING HAND;So;0;ON;;;;;N;;;;; -270E;LOWER RIGHT PENCIL;So;0;ON;;;;;N;;;;; -270F;PENCIL;So;0;ON;;;;;N;;;;; -2710;UPPER RIGHT PENCIL;So;0;ON;;;;;N;;;;; -2711;WHITE NIB;So;0;ON;;;;;N;;;;; -2712;BLACK NIB;So;0;ON;;;;;N;;;;; -2713;CHECK MARK;So;0;ON;;;;;N;;;;; -2714;HEAVY CHECK MARK;So;0;ON;;;;;N;;;;; -2715;MULTIPLICATION X;So;0;ON;;;;;N;;;;; -2716;HEAVY MULTIPLICATION X;So;0;ON;;;;;N;;;;; -2717;BALLOT X;So;0;ON;;;;;N;;;;; -2718;HEAVY BALLOT X;So;0;ON;;;;;N;;;;; -2719;OUTLINED GREEK CROSS;So;0;ON;;;;;N;;;;; -271A;HEAVY GREEK CROSS;So;0;ON;;;;;N;;;;; -271B;OPEN CENTRE CROSS;So;0;ON;;;;;N;OPEN CENTER CROSS;;;; -271C;HEAVY OPEN CENTRE CROSS;So;0;ON;;;;;N;HEAVY OPEN CENTER CROSS;;;; -271D;LATIN CROSS;So;0;ON;;;;;N;;;;; -271E;SHADOWED WHITE LATIN CROSS;So;0;ON;;;;;N;;;;; -271F;OUTLINED LATIN CROSS;So;0;ON;;;;;N;;;;; -2720;MALTESE CROSS;So;0;ON;;;;;N;;;;; -2721;STAR OF DAVID;So;0;ON;;;;;N;;;;; -2722;FOUR TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; -2723;FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; -2724;HEAVY FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; -2725;FOUR CLUB-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; -2726;BLACK FOUR POINTED STAR;So;0;ON;;;;;N;;;;; -2727;WHITE FOUR POINTED STAR;So;0;ON;;;;;N;;;;; -2729;STRESS OUTLINED WHITE STAR;So;0;ON;;;;;N;;;;; -272A;CIRCLED WHITE STAR;So;0;ON;;;;;N;;;;; -272B;OPEN CENTRE BLACK STAR;So;0;ON;;;;;N;OPEN CENTER BLACK STAR;;;; -272C;BLACK CENTRE WHITE STAR;So;0;ON;;;;;N;BLACK CENTER WHITE STAR;;;; -272D;OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;; -272E;HEAVY OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;; -272F;PINWHEEL STAR;So;0;ON;;;;;N;;;;; -2730;SHADOWED WHITE STAR;So;0;ON;;;;;N;;;;; -2731;HEAVY ASTERISK;So;0;ON;;;;;N;;;;; -2732;OPEN CENTRE ASTERISK;So;0;ON;;;;;N;OPEN CENTER ASTERISK;;;; -2733;EIGHT SPOKED ASTERISK;So;0;ON;;;;;N;;;;; -2734;EIGHT POINTED BLACK STAR;So;0;ON;;;;;N;;;;; -2735;EIGHT POINTED PINWHEEL STAR;So;0;ON;;;;;N;;;;; -2736;SIX POINTED BLACK STAR;So;0;ON;;;;;N;;;;; -2737;EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;; -2738;HEAVY EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;; -2739;TWELVE POINTED BLACK STAR;So;0;ON;;;;;N;;;;; -273A;SIXTEEN POINTED ASTERISK;So;0;ON;;;;;N;;;;; -273B;TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; -273C;OPEN CENTRE TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;OPEN CENTER TEARDROP-SPOKED ASTERISK;;;; -273D;HEAVY TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; -273E;SIX PETALLED BLACK AND WHITE FLORETTE;So;0;ON;;;;;N;;;;; -273F;BLACK FLORETTE;So;0;ON;;;;;N;;;;; -2740;WHITE FLORETTE;So;0;ON;;;;;N;;;;; -2741;EIGHT PETALLED OUTLINED BLACK FLORETTE;So;0;ON;;;;;N;;;;; -2742;CIRCLED OPEN CENTRE EIGHT POINTED STAR;So;0;ON;;;;;N;CIRCLED OPEN CENTER EIGHT POINTED STAR;;;; -2743;HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK;So;0;ON;;;;;N;;;;; -2744;SNOWFLAKE;So;0;ON;;;;;N;;;;; -2745;TIGHT TRIFOLIATE SNOWFLAKE;So;0;ON;;;;;N;;;;; -2746;HEAVY CHEVRON SNOWFLAKE;So;0;ON;;;;;N;;;;; -2747;SPARKLE;So;0;ON;;;;;N;;;;; -2748;HEAVY SPARKLE;So;0;ON;;;;;N;;;;; -2749;BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; -274A;EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;; -274B;HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;; -274D;SHADOWED WHITE CIRCLE;So;0;ON;;;;;N;;;;; -274F;LOWER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;; -2750;UPPER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;; -2751;LOWER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;; -2752;UPPER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;; -2756;BLACK DIAMOND MINUS WHITE X;So;0;ON;;;;;N;;;;; -2757;HEAVY EXCLAMATION MARK SYMBOL;So;0;ON;;;;;N;;;;; -2758;LIGHT VERTICAL BAR;So;0;ON;;;;;N;;;;; -2759;MEDIUM VERTICAL BAR;So;0;ON;;;;;N;;;;; -275A;HEAVY VERTICAL BAR;So;0;ON;;;;;N;;;;; -275B;HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; -275C;HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; -275D;HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; -275E;HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; -2761;CURVED STEM PARAGRAPH SIGN ORNAMENT;So;0;ON;;;;;N;;;;; -2762;HEAVY EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; -2763;HEAVY HEART EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; -2764;HEAVY BLACK HEART;So;0;ON;;;;;N;;;;; -2765;ROTATED HEAVY BLACK HEART BULLET;So;0;ON;;;;;N;;;;; -2766;FLORAL HEART;So;0;ON;;;;;N;;;;; -2767;ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;; -2768;MEDIUM LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;; -2769;MEDIUM RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;; -276A;MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;; -276B;MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;; -276C;MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;; -276D;MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;; -276E;HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT;Ps;0;ON;;;;;Y;;;;; -276F;HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT;Pe;0;ON;;;;;Y;;;;; -2770;HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;; -2771;HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;; -2772;LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;; -2773;LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;; -2774;MEDIUM LEFT CURLY BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;; -2775;MEDIUM RIGHT CURLY BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;; -2776;DINGBAT NEGATIVE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED DIGIT ONE;;;; -2777;DINGBAT NEGATIVE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED DIGIT TWO;;;; -2778;DINGBAT NEGATIVE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED DIGIT THREE;;;; -2779;DINGBAT NEGATIVE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED DIGIT FOUR;;;; -277A;DINGBAT NEGATIVE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED DIGIT FIVE;;;; -277B;DINGBAT NEGATIVE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED DIGIT SIX;;;; -277C;DINGBAT NEGATIVE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED DIGIT SEVEN;;;; -277D;DINGBAT NEGATIVE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED DIGIT EIGHT;;;; -277E;DINGBAT NEGATIVE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED DIGIT NINE;;;; -277F;DINGBAT NEGATIVE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED NUMBER TEN;;;; -2780;DINGBAT CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;CIRCLED SANS-SERIF DIGIT ONE;;;; -2781;DINGBAT CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;CIRCLED SANS-SERIF DIGIT TWO;;;; -2782;DINGBAT CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;CIRCLED SANS-SERIF DIGIT THREE;;;; -2783;DINGBAT CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;CIRCLED SANS-SERIF DIGIT FOUR;;;; -2784;DINGBAT CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;CIRCLED SANS-SERIF DIGIT FIVE;;;; -2785;DINGBAT CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;CIRCLED SANS-SERIF DIGIT SIX;;;; -2786;DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;CIRCLED SANS-SERIF DIGIT SEVEN;;;; -2787;DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;CIRCLED SANS-SERIF DIGIT EIGHT;;;; -2788;DINGBAT CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;CIRCLED SANS-SERIF DIGIT NINE;;;; -2789;DINGBAT CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;CIRCLED SANS-SERIF NUMBER TEN;;;; -278A;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED SANS-SERIF DIGIT ONE;;;; -278B;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED SANS-SERIF DIGIT TWO;;;; -278C;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED SANS-SERIF DIGIT THREE;;;; -278D;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED SANS-SERIF DIGIT FOUR;;;; -278E;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED SANS-SERIF DIGIT FIVE;;;; -278F;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED SANS-SERIF DIGIT SIX;;;; -2790;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED SANS-SERIF DIGIT SEVEN;;;; -2791;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED SANS-SERIF DIGIT EIGHT;;;; -2792;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED SANS-SERIF DIGIT NINE;;;; -2793;DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED SANS-SERIF NUMBER TEN;;;; -2794;HEAVY WIDE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WIDE-HEADED RIGHT ARROW;;;; -2798;HEAVY SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT ARROW;;;; -2799;HEAVY RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY RIGHT ARROW;;;; -279A;HEAVY NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT ARROW;;;; -279B;DRAFTING POINT RIGHTWARDS ARROW;So;0;ON;;;;;N;DRAFTING POINT RIGHT ARROW;;;; -279C;HEAVY ROUND-TIPPED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY ROUND-TIPPED RIGHT ARROW;;;; -279D;TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;TRIANGLE-HEADED RIGHT ARROW;;;; -279E;HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TRIANGLE-HEADED RIGHT ARROW;;;; -279F;DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;DASHED TRIANGLE-HEADED RIGHT ARROW;;;; -27A0;HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY DASHED TRIANGLE-HEADED RIGHT ARROW;;;; -27A1;BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK RIGHT ARROW;;;; -27A2;THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D TOP-LIGHTED RIGHT ARROWHEAD;;;; -27A3;THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D BOTTOM-LIGHTED RIGHT ARROWHEAD;;;; -27A4;BLACK RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;BLACK RIGHT ARROWHEAD;;;; -27A5;HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED DOWN AND RIGHT ARROW;;;; -27A6;HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED UP AND RIGHT ARROW;;;; -27A7;SQUAT BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;SQUAT BLACK RIGHT ARROW;;;; -27A8;HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY CONCAVE-POINTED BLACK RIGHT ARROW;;;; -27A9;RIGHT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;RIGHT-SHADED WHITE RIGHT ARROW;;;; -27AA;LEFT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT-SHADED WHITE RIGHT ARROW;;;; -27AB;BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;BACK-TILTED SHADOWED WHITE RIGHT ARROW;;;; -27AC;FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;FRONT-TILTED SHADOWED WHITE RIGHT ARROW;;;; -27AD;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;; -27AE;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;; -27AF;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;; -27B1;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;; -27B2;CIRCLED HEAVY WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;CIRCLED HEAVY WHITE RIGHT ARROW;;;; -27B3;WHITE-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;WHITE-FEATHERED RIGHT ARROW;;;; -27B4;BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED LOWER RIGHT ARROW;;;; -27B5;BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK-FEATHERED RIGHT ARROW;;;; -27B6;BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED UPPER RIGHT ARROW;;;; -27B7;HEAVY BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED LOWER RIGHT ARROW;;;; -27B8;HEAVY BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED RIGHT ARROW;;;; -27B9;HEAVY BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED UPPER RIGHT ARROW;;;; -27BA;TEARDROP-BARBED RIGHTWARDS ARROW;So;0;ON;;;;;N;TEARDROP-BARBED RIGHT ARROW;;;; -27BB;HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TEARDROP-SHANKED RIGHT ARROW;;;; -27BC;WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;WEDGE-TAILED RIGHT ARROW;;;; -27BD;HEAVY WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WEDGE-TAILED RIGHT ARROW;;;; -27BE;OPEN-OUTLINED RIGHTWARDS ARROW;So;0;ON;;;;;N;OPEN-OUTLINED RIGHT ARROW;;;; -27C0;THREE DIMENSIONAL ANGLE;Sm;0;ON;;;;;Y;;;;; -27C1;WHITE TRIANGLE CONTAINING SMALL WHITE TRIANGLE;Sm;0;ON;;;;;N;;;;; -27C2;PERPENDICULAR;Sm;0;ON;;;;;N;;;;; -27C3;OPEN SUBSET;Sm;0;ON;;;;;Y;;;;; -27C4;OPEN SUPERSET;Sm;0;ON;;;;;Y;;;;; -27C5;LEFT S-SHAPED BAG DELIMITER;Ps;0;ON;;;;;Y;;;;; -27C6;RIGHT S-SHAPED BAG DELIMITER;Pe;0;ON;;;;;Y;;;;; -27C7;OR WITH DOT INSIDE;Sm;0;ON;;;;;N;;;;; -27C8;REVERSE SOLIDUS PRECEDING SUBSET;Sm;0;ON;;;;;Y;;;;; -27C9;SUPERSET PRECEDING SOLIDUS;Sm;0;ON;;;;;Y;;;;; -27CA;VERTICAL BAR WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; -27CC;LONG DIVISION;Sm;0;ON;;;;;Y;;;;; -27D0;WHITE DIAMOND WITH CENTRED DOT;Sm;0;ON;;;;;N;;;;; -27D1;AND WITH DOT;Sm;0;ON;;;;;N;;;;; -27D2;ELEMENT OF OPENING UPWARDS;Sm;0;ON;;;;;N;;;;; -27D3;LOWER RIGHT CORNER WITH DOT;Sm;0;ON;;;;;Y;;;;; -27D4;UPPER LEFT CORNER WITH DOT;Sm;0;ON;;;;;Y;;;;; -27D5;LEFT OUTER JOIN;Sm;0;ON;;;;;Y;;;;; -27D6;RIGHT OUTER JOIN;Sm;0;ON;;;;;Y;;;;; -27D7;FULL OUTER JOIN;Sm;0;ON;;;;;N;;;;; -27D8;LARGE UP TACK;Sm;0;ON;;;;;N;;;;; -27D9;LARGE DOWN TACK;Sm;0;ON;;;;;N;;;;; -27DA;LEFT AND RIGHT DOUBLE TURNSTILE;Sm;0;ON;;;;;N;;;;; -27DB;LEFT AND RIGHT TACK;Sm;0;ON;;;;;N;;;;; -27DC;LEFT MULTIMAP;Sm;0;ON;;;;;Y;;;;; -27DD;LONG RIGHT TACK;Sm;0;ON;;;;;Y;;;;; -27DE;LONG LEFT TACK;Sm;0;ON;;;;;Y;;;;; -27DF;UP TACK WITH CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;; -27E0;LOZENGE DIVIDED BY HORIZONTAL RULE;Sm;0;ON;;;;;N;;;;; -27E1;WHITE CONCAVE-SIDED DIAMOND;Sm;0;ON;;;;;N;;;;; -27E2;WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK;Sm;0;ON;;;;;Y;;;;; -27E3;WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK;Sm;0;ON;;;;;Y;;;;; -27E4;WHITE SQUARE WITH LEFTWARDS TICK;Sm;0;ON;;;;;Y;;;;; -27E5;WHITE SQUARE WITH RIGHTWARDS TICK;Sm;0;ON;;;;;Y;;;;; -27E6;MATHEMATICAL LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;;;;; -27E7;MATHEMATICAL RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;;;;; -27E8;MATHEMATICAL LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;; -27E9;MATHEMATICAL RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;; -27EA;MATHEMATICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;; -27EB;MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;; -27EC;MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;;;;; -27ED;MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;;;;; -27EE;MATHEMATICAL LEFT FLATTENED PARENTHESIS;Ps;0;ON;;;;;Y;;;;; -27EF;MATHEMATICAL RIGHT FLATTENED PARENTHESIS;Pe;0;ON;;;;;Y;;;;; -27F0;UPWARDS QUADRUPLE ARROW;Sm;0;ON;;;;;N;;;;; -27F1;DOWNWARDS QUADRUPLE ARROW;Sm;0;ON;;;;;N;;;;; -27F2;ANTICLOCKWISE GAPPED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;; -27F3;CLOCKWISE GAPPED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;; -27F4;RIGHT ARROW WITH CIRCLED PLUS;Sm;0;ON;;;;;N;;;;; -27F5;LONG LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -27F6;LONG RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -27F7;LONG LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;; -27F8;LONG LEFTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;;;;; -27F9;LONG RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;;;;; -27FA;LONG LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;; -27FB;LONG LEFTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; -27FC;LONG RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; -27FD;LONG LEFTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; -27FE;LONG RIGHTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; -27FF;LONG RIGHTWARDS SQUIGGLE ARROW;Sm;0;ON;;;;;N;;;;; -2800;BRAILLE PATTERN BLANK;So;0;L;;;;;N;;;;; -2801;BRAILLE PATTERN DOTS-1;So;0;L;;;;;N;;;;; -2802;BRAILLE PATTERN DOTS-2;So;0;L;;;;;N;;;;; -2803;BRAILLE PATTERN DOTS-12;So;0;L;;;;;N;;;;; -2804;BRAILLE PATTERN DOTS-3;So;0;L;;;;;N;;;;; -2805;BRAILLE PATTERN DOTS-13;So;0;L;;;;;N;;;;; -2806;BRAILLE PATTERN DOTS-23;So;0;L;;;;;N;;;;; -2807;BRAILLE PATTERN DOTS-123;So;0;L;;;;;N;;;;; -2808;BRAILLE PATTERN DOTS-4;So;0;L;;;;;N;;;;; -2809;BRAILLE PATTERN DOTS-14;So;0;L;;;;;N;;;;; -280A;BRAILLE PATTERN DOTS-24;So;0;L;;;;;N;;;;; -280B;BRAILLE PATTERN DOTS-124;So;0;L;;;;;N;;;;; -280C;BRAILLE PATTERN DOTS-34;So;0;L;;;;;N;;;;; -280D;BRAILLE PATTERN DOTS-134;So;0;L;;;;;N;;;;; -280E;BRAILLE PATTERN DOTS-234;So;0;L;;;;;N;;;;; -280F;BRAILLE PATTERN DOTS-1234;So;0;L;;;;;N;;;;; -2810;BRAILLE PATTERN DOTS-5;So;0;L;;;;;N;;;;; -2811;BRAILLE PATTERN DOTS-15;So;0;L;;;;;N;;;;; -2812;BRAILLE PATTERN DOTS-25;So;0;L;;;;;N;;;;; -2813;BRAILLE PATTERN DOTS-125;So;0;L;;;;;N;;;;; -2814;BRAILLE PATTERN DOTS-35;So;0;L;;;;;N;;;;; -2815;BRAILLE PATTERN DOTS-135;So;0;L;;;;;N;;;;; -2816;BRAILLE PATTERN DOTS-235;So;0;L;;;;;N;;;;; -2817;BRAILLE PATTERN DOTS-1235;So;0;L;;;;;N;;;;; -2818;BRAILLE PATTERN DOTS-45;So;0;L;;;;;N;;;;; -2819;BRAILLE PATTERN DOTS-145;So;0;L;;;;;N;;;;; -281A;BRAILLE PATTERN DOTS-245;So;0;L;;;;;N;;;;; -281B;BRAILLE PATTERN DOTS-1245;So;0;L;;;;;N;;;;; -281C;BRAILLE PATTERN DOTS-345;So;0;L;;;;;N;;;;; -281D;BRAILLE PATTERN DOTS-1345;So;0;L;;;;;N;;;;; -281E;BRAILLE PATTERN DOTS-2345;So;0;L;;;;;N;;;;; -281F;BRAILLE PATTERN DOTS-12345;So;0;L;;;;;N;;;;; -2820;BRAILLE PATTERN DOTS-6;So;0;L;;;;;N;;;;; -2821;BRAILLE PATTERN DOTS-16;So;0;L;;;;;N;;;;; -2822;BRAILLE PATTERN DOTS-26;So;0;L;;;;;N;;;;; -2823;BRAILLE PATTERN DOTS-126;So;0;L;;;;;N;;;;; -2824;BRAILLE PATTERN DOTS-36;So;0;L;;;;;N;;;;; -2825;BRAILLE PATTERN DOTS-136;So;0;L;;;;;N;;;;; -2826;BRAILLE PATTERN DOTS-236;So;0;L;;;;;N;;;;; -2827;BRAILLE PATTERN DOTS-1236;So;0;L;;;;;N;;;;; -2828;BRAILLE PATTERN DOTS-46;So;0;L;;;;;N;;;;; -2829;BRAILLE PATTERN DOTS-146;So;0;L;;;;;N;;;;; -282A;BRAILLE PATTERN DOTS-246;So;0;L;;;;;N;;;;; -282B;BRAILLE PATTERN DOTS-1246;So;0;L;;;;;N;;;;; -282C;BRAILLE PATTERN DOTS-346;So;0;L;;;;;N;;;;; -282D;BRAILLE PATTERN DOTS-1346;So;0;L;;;;;N;;;;; -282E;BRAILLE PATTERN DOTS-2346;So;0;L;;;;;N;;;;; -282F;BRAILLE PATTERN DOTS-12346;So;0;L;;;;;N;;;;; -2830;BRAILLE PATTERN DOTS-56;So;0;L;;;;;N;;;;; -2831;BRAILLE PATTERN DOTS-156;So;0;L;;;;;N;;;;; -2832;BRAILLE PATTERN DOTS-256;So;0;L;;;;;N;;;;; -2833;BRAILLE PATTERN DOTS-1256;So;0;L;;;;;N;;;;; -2834;BRAILLE PATTERN DOTS-356;So;0;L;;;;;N;;;;; -2835;BRAILLE PATTERN DOTS-1356;So;0;L;;;;;N;;;;; -2836;BRAILLE PATTERN DOTS-2356;So;0;L;;;;;N;;;;; -2837;BRAILLE PATTERN DOTS-12356;So;0;L;;;;;N;;;;; -2838;BRAILLE PATTERN DOTS-456;So;0;L;;;;;N;;;;; -2839;BRAILLE PATTERN DOTS-1456;So;0;L;;;;;N;;;;; -283A;BRAILLE PATTERN DOTS-2456;So;0;L;;;;;N;;;;; -283B;BRAILLE PATTERN DOTS-12456;So;0;L;;;;;N;;;;; -283C;BRAILLE PATTERN DOTS-3456;So;0;L;;;;;N;;;;; -283D;BRAILLE PATTERN DOTS-13456;So;0;L;;;;;N;;;;; -283E;BRAILLE PATTERN DOTS-23456;So;0;L;;;;;N;;;;; -283F;BRAILLE PATTERN DOTS-123456;So;0;L;;;;;N;;;;; -2840;BRAILLE PATTERN DOTS-7;So;0;L;;;;;N;;;;; -2841;BRAILLE PATTERN DOTS-17;So;0;L;;;;;N;;;;; -2842;BRAILLE PATTERN DOTS-27;So;0;L;;;;;N;;;;; -2843;BRAILLE PATTERN DOTS-127;So;0;L;;;;;N;;;;; -2844;BRAILLE PATTERN DOTS-37;So;0;L;;;;;N;;;;; -2845;BRAILLE PATTERN DOTS-137;So;0;L;;;;;N;;;;; -2846;BRAILLE PATTERN DOTS-237;So;0;L;;;;;N;;;;; -2847;BRAILLE PATTERN DOTS-1237;So;0;L;;;;;N;;;;; -2848;BRAILLE PATTERN DOTS-47;So;0;L;;;;;N;;;;; -2849;BRAILLE PATTERN DOTS-147;So;0;L;;;;;N;;;;; -284A;BRAILLE PATTERN DOTS-247;So;0;L;;;;;N;;;;; -284B;BRAILLE PATTERN DOTS-1247;So;0;L;;;;;N;;;;; -284C;BRAILLE PATTERN DOTS-347;So;0;L;;;;;N;;;;; -284D;BRAILLE PATTERN DOTS-1347;So;0;L;;;;;N;;;;; -284E;BRAILLE PATTERN DOTS-2347;So;0;L;;;;;N;;;;; -284F;BRAILLE PATTERN DOTS-12347;So;0;L;;;;;N;;;;; -2850;BRAILLE PATTERN DOTS-57;So;0;L;;;;;N;;;;; -2851;BRAILLE PATTERN DOTS-157;So;0;L;;;;;N;;;;; -2852;BRAILLE PATTERN DOTS-257;So;0;L;;;;;N;;;;; -2853;BRAILLE PATTERN DOTS-1257;So;0;L;;;;;N;;;;; -2854;BRAILLE PATTERN DOTS-357;So;0;L;;;;;N;;;;; -2855;BRAILLE PATTERN DOTS-1357;So;0;L;;;;;N;;;;; -2856;BRAILLE PATTERN DOTS-2357;So;0;L;;;;;N;;;;; -2857;BRAILLE PATTERN DOTS-12357;So;0;L;;;;;N;;;;; -2858;BRAILLE PATTERN DOTS-457;So;0;L;;;;;N;;;;; -2859;BRAILLE PATTERN DOTS-1457;So;0;L;;;;;N;;;;; -285A;BRAILLE PATTERN DOTS-2457;So;0;L;;;;;N;;;;; -285B;BRAILLE PATTERN DOTS-12457;So;0;L;;;;;N;;;;; -285C;BRAILLE PATTERN DOTS-3457;So;0;L;;;;;N;;;;; -285D;BRAILLE PATTERN DOTS-13457;So;0;L;;;;;N;;;;; -285E;BRAILLE PATTERN DOTS-23457;So;0;L;;;;;N;;;;; -285F;BRAILLE PATTERN DOTS-123457;So;0;L;;;;;N;;;;; -2860;BRAILLE PATTERN DOTS-67;So;0;L;;;;;N;;;;; -2861;BRAILLE PATTERN DOTS-167;So;0;L;;;;;N;;;;; -2862;BRAILLE PATTERN DOTS-267;So;0;L;;;;;N;;;;; -2863;BRAILLE PATTERN DOTS-1267;So;0;L;;;;;N;;;;; -2864;BRAILLE PATTERN DOTS-367;So;0;L;;;;;N;;;;; -2865;BRAILLE PATTERN DOTS-1367;So;0;L;;;;;N;;;;; -2866;BRAILLE PATTERN DOTS-2367;So;0;L;;;;;N;;;;; -2867;BRAILLE PATTERN DOTS-12367;So;0;L;;;;;N;;;;; -2868;BRAILLE PATTERN DOTS-467;So;0;L;;;;;N;;;;; -2869;BRAILLE PATTERN DOTS-1467;So;0;L;;;;;N;;;;; -286A;BRAILLE PATTERN DOTS-2467;So;0;L;;;;;N;;;;; -286B;BRAILLE PATTERN DOTS-12467;So;0;L;;;;;N;;;;; -286C;BRAILLE PATTERN DOTS-3467;So;0;L;;;;;N;;;;; -286D;BRAILLE PATTERN DOTS-13467;So;0;L;;;;;N;;;;; -286E;BRAILLE PATTERN DOTS-23467;So;0;L;;;;;N;;;;; -286F;BRAILLE PATTERN DOTS-123467;So;0;L;;;;;N;;;;; -2870;BRAILLE PATTERN DOTS-567;So;0;L;;;;;N;;;;; -2871;BRAILLE PATTERN DOTS-1567;So;0;L;;;;;N;;;;; -2872;BRAILLE PATTERN DOTS-2567;So;0;L;;;;;N;;;;; -2873;BRAILLE PATTERN DOTS-12567;So;0;L;;;;;N;;;;; -2874;BRAILLE PATTERN DOTS-3567;So;0;L;;;;;N;;;;; -2875;BRAILLE PATTERN DOTS-13567;So;0;L;;;;;N;;;;; -2876;BRAILLE PATTERN DOTS-23567;So;0;L;;;;;N;;;;; -2877;BRAILLE PATTERN DOTS-123567;So;0;L;;;;;N;;;;; -2878;BRAILLE PATTERN DOTS-4567;So;0;L;;;;;N;;;;; -2879;BRAILLE PATTERN DOTS-14567;So;0;L;;;;;N;;;;; -287A;BRAILLE PATTERN DOTS-24567;So;0;L;;;;;N;;;;; -287B;BRAILLE PATTERN DOTS-124567;So;0;L;;;;;N;;;;; -287C;BRAILLE PATTERN DOTS-34567;So;0;L;;;;;N;;;;; -287D;BRAILLE PATTERN DOTS-134567;So;0;L;;;;;N;;;;; -287E;BRAILLE PATTERN DOTS-234567;So;0;L;;;;;N;;;;; -287F;BRAILLE PATTERN DOTS-1234567;So;0;L;;;;;N;;;;; -2880;BRAILLE PATTERN DOTS-8;So;0;L;;;;;N;;;;; -2881;BRAILLE PATTERN DOTS-18;So;0;L;;;;;N;;;;; -2882;BRAILLE PATTERN DOTS-28;So;0;L;;;;;N;;;;; -2883;BRAILLE PATTERN DOTS-128;So;0;L;;;;;N;;;;; -2884;BRAILLE PATTERN DOTS-38;So;0;L;;;;;N;;;;; -2885;BRAILLE PATTERN DOTS-138;So;0;L;;;;;N;;;;; -2886;BRAILLE PATTERN DOTS-238;So;0;L;;;;;N;;;;; -2887;BRAILLE PATTERN DOTS-1238;So;0;L;;;;;N;;;;; -2888;BRAILLE PATTERN DOTS-48;So;0;L;;;;;N;;;;; -2889;BRAILLE PATTERN DOTS-148;So;0;L;;;;;N;;;;; -288A;BRAILLE PATTERN DOTS-248;So;0;L;;;;;N;;;;; -288B;BRAILLE PATTERN DOTS-1248;So;0;L;;;;;N;;;;; -288C;BRAILLE PATTERN DOTS-348;So;0;L;;;;;N;;;;; -288D;BRAILLE PATTERN DOTS-1348;So;0;L;;;;;N;;;;; -288E;BRAILLE PATTERN DOTS-2348;So;0;L;;;;;N;;;;; -288F;BRAILLE PATTERN DOTS-12348;So;0;L;;;;;N;;;;; -2890;BRAILLE PATTERN DOTS-58;So;0;L;;;;;N;;;;; -2891;BRAILLE PATTERN DOTS-158;So;0;L;;;;;N;;;;; -2892;BRAILLE PATTERN DOTS-258;So;0;L;;;;;N;;;;; -2893;BRAILLE PATTERN DOTS-1258;So;0;L;;;;;N;;;;; -2894;BRAILLE PATTERN DOTS-358;So;0;L;;;;;N;;;;; -2895;BRAILLE PATTERN DOTS-1358;So;0;L;;;;;N;;;;; -2896;BRAILLE PATTERN DOTS-2358;So;0;L;;;;;N;;;;; -2897;BRAILLE PATTERN DOTS-12358;So;0;L;;;;;N;;;;; -2898;BRAILLE PATTERN DOTS-458;So;0;L;;;;;N;;;;; -2899;BRAILLE PATTERN DOTS-1458;So;0;L;;;;;N;;;;; -289A;BRAILLE PATTERN DOTS-2458;So;0;L;;;;;N;;;;; -289B;BRAILLE PATTERN DOTS-12458;So;0;L;;;;;N;;;;; -289C;BRAILLE PATTERN DOTS-3458;So;0;L;;;;;N;;;;; -289D;BRAILLE PATTERN DOTS-13458;So;0;L;;;;;N;;;;; -289E;BRAILLE PATTERN DOTS-23458;So;0;L;;;;;N;;;;; -289F;BRAILLE PATTERN DOTS-123458;So;0;L;;;;;N;;;;; -28A0;BRAILLE PATTERN DOTS-68;So;0;L;;;;;N;;;;; -28A1;BRAILLE PATTERN DOTS-168;So;0;L;;;;;N;;;;; -28A2;BRAILLE PATTERN DOTS-268;So;0;L;;;;;N;;;;; -28A3;BRAILLE PATTERN DOTS-1268;So;0;L;;;;;N;;;;; -28A4;BRAILLE PATTERN DOTS-368;So;0;L;;;;;N;;;;; -28A5;BRAILLE PATTERN DOTS-1368;So;0;L;;;;;N;;;;; -28A6;BRAILLE PATTERN DOTS-2368;So;0;L;;;;;N;;;;; -28A7;BRAILLE PATTERN DOTS-12368;So;0;L;;;;;N;;;;; -28A8;BRAILLE PATTERN DOTS-468;So;0;L;;;;;N;;;;; -28A9;BRAILLE PATTERN DOTS-1468;So;0;L;;;;;N;;;;; -28AA;BRAILLE PATTERN DOTS-2468;So;0;L;;;;;N;;;;; -28AB;BRAILLE PATTERN DOTS-12468;So;0;L;;;;;N;;;;; -28AC;BRAILLE PATTERN DOTS-3468;So;0;L;;;;;N;;;;; -28AD;BRAILLE PATTERN DOTS-13468;So;0;L;;;;;N;;;;; -28AE;BRAILLE PATTERN DOTS-23468;So;0;L;;;;;N;;;;; -28AF;BRAILLE PATTERN DOTS-123468;So;0;L;;;;;N;;;;; -28B0;BRAILLE PATTERN DOTS-568;So;0;L;;;;;N;;;;; -28B1;BRAILLE PATTERN DOTS-1568;So;0;L;;;;;N;;;;; -28B2;BRAILLE PATTERN DOTS-2568;So;0;L;;;;;N;;;;; -28B3;BRAILLE PATTERN DOTS-12568;So;0;L;;;;;N;;;;; -28B4;BRAILLE PATTERN DOTS-3568;So;0;L;;;;;N;;;;; -28B5;BRAILLE PATTERN DOTS-13568;So;0;L;;;;;N;;;;; -28B6;BRAILLE PATTERN DOTS-23568;So;0;L;;;;;N;;;;; -28B7;BRAILLE PATTERN DOTS-123568;So;0;L;;;;;N;;;;; -28B8;BRAILLE PATTERN DOTS-4568;So;0;L;;;;;N;;;;; -28B9;BRAILLE PATTERN DOTS-14568;So;0;L;;;;;N;;;;; -28BA;BRAILLE PATTERN DOTS-24568;So;0;L;;;;;N;;;;; -28BB;BRAILLE PATTERN DOTS-124568;So;0;L;;;;;N;;;;; -28BC;BRAILLE PATTERN DOTS-34568;So;0;L;;;;;N;;;;; -28BD;BRAILLE PATTERN DOTS-134568;So;0;L;;;;;N;;;;; -28BE;BRAILLE PATTERN DOTS-234568;So;0;L;;;;;N;;;;; -28BF;BRAILLE PATTERN DOTS-1234568;So;0;L;;;;;N;;;;; -28C0;BRAILLE PATTERN DOTS-78;So;0;L;;;;;N;;;;; -28C1;BRAILLE PATTERN DOTS-178;So;0;L;;;;;N;;;;; -28C2;BRAILLE PATTERN DOTS-278;So;0;L;;;;;N;;;;; -28C3;BRAILLE PATTERN DOTS-1278;So;0;L;;;;;N;;;;; -28C4;BRAILLE PATTERN DOTS-378;So;0;L;;;;;N;;;;; -28C5;BRAILLE PATTERN DOTS-1378;So;0;L;;;;;N;;;;; -28C6;BRAILLE PATTERN DOTS-2378;So;0;L;;;;;N;;;;; -28C7;BRAILLE PATTERN DOTS-12378;So;0;L;;;;;N;;;;; -28C8;BRAILLE PATTERN DOTS-478;So;0;L;;;;;N;;;;; -28C9;BRAILLE PATTERN DOTS-1478;So;0;L;;;;;N;;;;; -28CA;BRAILLE PATTERN DOTS-2478;So;0;L;;;;;N;;;;; -28CB;BRAILLE PATTERN DOTS-12478;So;0;L;;;;;N;;;;; -28CC;BRAILLE PATTERN DOTS-3478;So;0;L;;;;;N;;;;; -28CD;BRAILLE PATTERN DOTS-13478;So;0;L;;;;;N;;;;; -28CE;BRAILLE PATTERN DOTS-23478;So;0;L;;;;;N;;;;; -28CF;BRAILLE PATTERN DOTS-123478;So;0;L;;;;;N;;;;; -28D0;BRAILLE PATTERN DOTS-578;So;0;L;;;;;N;;;;; -28D1;BRAILLE PATTERN DOTS-1578;So;0;L;;;;;N;;;;; -28D2;BRAILLE PATTERN DOTS-2578;So;0;L;;;;;N;;;;; -28D3;BRAILLE PATTERN DOTS-12578;So;0;L;;;;;N;;;;; -28D4;BRAILLE PATTERN DOTS-3578;So;0;L;;;;;N;;;;; -28D5;BRAILLE PATTERN DOTS-13578;So;0;L;;;;;N;;;;; -28D6;BRAILLE PATTERN DOTS-23578;So;0;L;;;;;N;;;;; -28D7;BRAILLE PATTERN DOTS-123578;So;0;L;;;;;N;;;;; -28D8;BRAILLE PATTERN DOTS-4578;So;0;L;;;;;N;;;;; -28D9;BRAILLE PATTERN DOTS-14578;So;0;L;;;;;N;;;;; -28DA;BRAILLE PATTERN DOTS-24578;So;0;L;;;;;N;;;;; -28DB;BRAILLE PATTERN DOTS-124578;So;0;L;;;;;N;;;;; -28DC;BRAILLE PATTERN DOTS-34578;So;0;L;;;;;N;;;;; -28DD;BRAILLE PATTERN DOTS-134578;So;0;L;;;;;N;;;;; -28DE;BRAILLE PATTERN DOTS-234578;So;0;L;;;;;N;;;;; -28DF;BRAILLE PATTERN DOTS-1234578;So;0;L;;;;;N;;;;; -28E0;BRAILLE PATTERN DOTS-678;So;0;L;;;;;N;;;;; -28E1;BRAILLE PATTERN DOTS-1678;So;0;L;;;;;N;;;;; -28E2;BRAILLE PATTERN DOTS-2678;So;0;L;;;;;N;;;;; -28E3;BRAILLE PATTERN DOTS-12678;So;0;L;;;;;N;;;;; -28E4;BRAILLE PATTERN DOTS-3678;So;0;L;;;;;N;;;;; -28E5;BRAILLE PATTERN DOTS-13678;So;0;L;;;;;N;;;;; -28E6;BRAILLE PATTERN DOTS-23678;So;0;L;;;;;N;;;;; -28E7;BRAILLE PATTERN DOTS-123678;So;0;L;;;;;N;;;;; -28E8;BRAILLE PATTERN DOTS-4678;So;0;L;;;;;N;;;;; -28E9;BRAILLE PATTERN DOTS-14678;So;0;L;;;;;N;;;;; -28EA;BRAILLE PATTERN DOTS-24678;So;0;L;;;;;N;;;;; -28EB;BRAILLE PATTERN DOTS-124678;So;0;L;;;;;N;;;;; -28EC;BRAILLE PATTERN DOTS-34678;So;0;L;;;;;N;;;;; -28ED;BRAILLE PATTERN DOTS-134678;So;0;L;;;;;N;;;;; -28EE;BRAILLE PATTERN DOTS-234678;So;0;L;;;;;N;;;;; -28EF;BRAILLE PATTERN DOTS-1234678;So;0;L;;;;;N;;;;; -28F0;BRAILLE PATTERN DOTS-5678;So;0;L;;;;;N;;;;; -28F1;BRAILLE PATTERN DOTS-15678;So;0;L;;;;;N;;;;; -28F2;BRAILLE PATTERN DOTS-25678;So;0;L;;;;;N;;;;; -28F3;BRAILLE PATTERN DOTS-125678;So;0;L;;;;;N;;;;; -28F4;BRAILLE PATTERN DOTS-35678;So;0;L;;;;;N;;;;; -28F5;BRAILLE PATTERN DOTS-135678;So;0;L;;;;;N;;;;; -28F6;BRAILLE PATTERN DOTS-235678;So;0;L;;;;;N;;;;; -28F7;BRAILLE PATTERN DOTS-1235678;So;0;L;;;;;N;;;;; -28F8;BRAILLE PATTERN DOTS-45678;So;0;L;;;;;N;;;;; -28F9;BRAILLE PATTERN DOTS-145678;So;0;L;;;;;N;;;;; -28FA;BRAILLE PATTERN DOTS-245678;So;0;L;;;;;N;;;;; -28FB;BRAILLE PATTERN DOTS-1245678;So;0;L;;;;;N;;;;; -28FC;BRAILLE PATTERN DOTS-345678;So;0;L;;;;;N;;;;; -28FD;BRAILLE PATTERN DOTS-1345678;So;0;L;;;;;N;;;;; -28FE;BRAILLE PATTERN DOTS-2345678;So;0;L;;;;;N;;;;; -28FF;BRAILLE PATTERN DOTS-12345678;So;0;L;;;;;N;;;;; -2900;RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2901;RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2902;LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2903;RIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2904;LEFT RIGHT DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2905;RIGHTWARDS TWO-HEADED ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; -2906;LEFTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; -2907;RIGHTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; -2908;DOWNWARDS ARROW WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; -2909;UPWARDS ARROW WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; -290A;UPWARDS TRIPLE ARROW;Sm;0;ON;;;;;N;;;;; -290B;DOWNWARDS TRIPLE ARROW;Sm;0;ON;;;;;N;;;;; -290C;LEFTWARDS DOUBLE DASH ARROW;Sm;0;ON;;;;;N;;;;; -290D;RIGHTWARDS DOUBLE DASH ARROW;Sm;0;ON;;;;;N;;;;; -290E;LEFTWARDS TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;; -290F;RIGHTWARDS TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;; -2910;RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;; -2911;RIGHTWARDS ARROW WITH DOTTED STEM;Sm;0;ON;;;;;N;;;;; -2912;UPWARDS ARROW TO BAR;Sm;0;ON;;;;;N;;;;; -2913;DOWNWARDS ARROW TO BAR;Sm;0;ON;;;;;N;;;;; -2914;RIGHTWARDS ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2915;RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2916;RIGHTWARDS TWO-HEADED ARROW WITH TAIL;Sm;0;ON;;;;;N;;;;; -2917;RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2918;RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2919;LEFTWARDS ARROW-TAIL;Sm;0;ON;;;;;N;;;;; -291A;RIGHTWARDS ARROW-TAIL;Sm;0;ON;;;;;N;;;;; -291B;LEFTWARDS DOUBLE ARROW-TAIL;Sm;0;ON;;;;;N;;;;; -291C;RIGHTWARDS DOUBLE ARROW-TAIL;Sm;0;ON;;;;;N;;;;; -291D;LEFTWARDS ARROW TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; -291E;RIGHTWARDS ARROW TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; -291F;LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; -2920;RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; -2921;NORTH WEST AND SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;; -2922;NORTH EAST AND SOUTH WEST ARROW;Sm;0;ON;;;;;N;;;;; -2923;NORTH WEST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;; -2924;NORTH EAST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;; -2925;SOUTH EAST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;; -2926;SOUTH WEST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;; -2927;NORTH WEST ARROW AND NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;; -2928;NORTH EAST ARROW AND SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;; -2929;SOUTH EAST ARROW AND SOUTH WEST ARROW;Sm;0;ON;;;;;N;;;;; -292A;SOUTH WEST ARROW AND NORTH WEST ARROW;Sm;0;ON;;;;;N;;;;; -292B;RISING DIAGONAL CROSSING FALLING DIAGONAL;Sm;0;ON;;;;;N;;;;; -292C;FALLING DIAGONAL CROSSING RISING DIAGONAL;Sm;0;ON;;;;;N;;;;; -292D;SOUTH EAST ARROW CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;; -292E;NORTH EAST ARROW CROSSING SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;; -292F;FALLING DIAGONAL CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;; -2930;RISING DIAGONAL CROSSING SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;; -2931;NORTH EAST ARROW CROSSING NORTH WEST ARROW;Sm;0;ON;;;;;N;;;;; -2932;NORTH WEST ARROW CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;; -2933;WAVE ARROW POINTING DIRECTLY RIGHT;Sm;0;ON;;;;;N;;;;; -2934;ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS;Sm;0;ON;;;;;N;;;;; -2935;ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS;Sm;0;ON;;;;;N;;;;; -2936;ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS;Sm;0;ON;;;;;N;;;;; -2937;ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS;Sm;0;ON;;;;;N;;;;; -2938;RIGHT-SIDE ARC CLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; -2939;LEFT-SIDE ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; -293A;TOP ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; -293B;BOTTOM ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; -293C;TOP ARC CLOCKWISE ARROW WITH MINUS;Sm;0;ON;;;;;N;;;;; -293D;TOP ARC ANTICLOCKWISE ARROW WITH PLUS;Sm;0;ON;;;;;N;;;;; -293E;LOWER RIGHT SEMICIRCULAR CLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; -293F;LOWER LEFT SEMICIRCULAR ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; -2940;ANTICLOCKWISE CLOSED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;; -2941;CLOCKWISE CLOSED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;; -2942;RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -2943;LEFTWARDS ARROW ABOVE SHORT RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -2944;SHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -2945;RIGHTWARDS ARROW WITH PLUS BELOW;Sm;0;ON;;;;;N;;;;; -2946;LEFTWARDS ARROW WITH PLUS BELOW;Sm;0;ON;;;;;N;;;;; -2947;RIGHTWARDS ARROW THROUGH X;Sm;0;ON;;;;;N;;;;; -2948;LEFT RIGHT ARROW THROUGH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; -2949;UPWARDS TWO-HEADED ARROW FROM SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; -294A;LEFT BARB UP RIGHT BARB DOWN HARPOON;Sm;0;ON;;;;;N;;;;; -294B;LEFT BARB DOWN RIGHT BARB UP HARPOON;Sm;0;ON;;;;;N;;;;; -294C;UP BARB RIGHT DOWN BARB LEFT HARPOON;Sm;0;ON;;;;;N;;;;; -294D;UP BARB LEFT DOWN BARB RIGHT HARPOON;Sm;0;ON;;;;;N;;;;; -294E;LEFT BARB UP RIGHT BARB UP HARPOON;Sm;0;ON;;;;;N;;;;; -294F;UP BARB RIGHT DOWN BARB RIGHT HARPOON;Sm;0;ON;;;;;N;;;;; -2950;LEFT BARB DOWN RIGHT BARB DOWN HARPOON;Sm;0;ON;;;;;N;;;;; -2951;UP BARB LEFT DOWN BARB LEFT HARPOON;Sm;0;ON;;;;;N;;;;; -2952;LEFTWARDS HARPOON WITH BARB UP TO BAR;Sm;0;ON;;;;;N;;;;; -2953;RIGHTWARDS HARPOON WITH BARB UP TO BAR;Sm;0;ON;;;;;N;;;;; -2954;UPWARDS HARPOON WITH BARB RIGHT TO BAR;Sm;0;ON;;;;;N;;;;; -2955;DOWNWARDS HARPOON WITH BARB RIGHT TO BAR;Sm;0;ON;;;;;N;;;;; -2956;LEFTWARDS HARPOON WITH BARB DOWN TO BAR;Sm;0;ON;;;;;N;;;;; -2957;RIGHTWARDS HARPOON WITH BARB DOWN TO BAR;Sm;0;ON;;;;;N;;;;; -2958;UPWARDS HARPOON WITH BARB LEFT TO BAR;Sm;0;ON;;;;;N;;;;; -2959;DOWNWARDS HARPOON WITH BARB LEFT TO BAR;Sm;0;ON;;;;;N;;;;; -295A;LEFTWARDS HARPOON WITH BARB UP FROM BAR;Sm;0;ON;;;;;N;;;;; -295B;RIGHTWARDS HARPOON WITH BARB UP FROM BAR;Sm;0;ON;;;;;N;;;;; -295C;UPWARDS HARPOON WITH BARB RIGHT FROM BAR;Sm;0;ON;;;;;N;;;;; -295D;DOWNWARDS HARPOON WITH BARB RIGHT FROM BAR;Sm;0;ON;;;;;N;;;;; -295E;LEFTWARDS HARPOON WITH BARB DOWN FROM BAR;Sm;0;ON;;;;;N;;;;; -295F;RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR;Sm;0;ON;;;;;N;;;;; -2960;UPWARDS HARPOON WITH BARB LEFT FROM BAR;Sm;0;ON;;;;;N;;;;; -2961;DOWNWARDS HARPOON WITH BARB LEFT FROM BAR;Sm;0;ON;;;;;N;;;;; -2962;LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;; -2963;UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;; -2964;RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;; -2965;DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;; -2966;LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UP;Sm;0;ON;;;;;N;;;;; -2967;LEFTWARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;; -2968;RIGHTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UP;Sm;0;ON;;;;;N;;;;; -2969;RIGHTWARDS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;; -296A;LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH;Sm;0;ON;;;;;N;;;;; -296B;LEFTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH;Sm;0;ON;;;;;N;;;;; -296C;RIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASH;Sm;0;ON;;;;;N;;;;; -296D;RIGHTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH;Sm;0;ON;;;;;N;;;;; -296E;UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;; -296F;DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;; -2970;RIGHT DOUBLE ARROW WITH ROUNDED HEAD;Sm;0;ON;;;;;N;;;;; -2971;EQUALS SIGN ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -2972;TILDE OPERATOR ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -2973;LEFTWARDS ARROW ABOVE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;; -2974;RIGHTWARDS ARROW ABOVE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;; -2975;RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;; -2976;LESS-THAN ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -2977;LEFTWARDS ARROW THROUGH LESS-THAN;Sm;0;ON;;;;;N;;;;; -2978;GREATER-THAN ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -2979;SUBSET ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -297A;LEFTWARDS ARROW THROUGH SUBSET;Sm;0;ON;;;;;N;;;;; -297B;SUPERSET ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -297C;LEFT FISH TAIL;Sm;0;ON;;;;;N;;;;; -297D;RIGHT FISH TAIL;Sm;0;ON;;;;;N;;;;; -297E;UP FISH TAIL;Sm;0;ON;;;;;N;;;;; -297F;DOWN FISH TAIL;Sm;0;ON;;;;;N;;;;; -2980;TRIPLE VERTICAL BAR DELIMITER;Sm;0;ON;;;;;N;;;;; -2981;Z NOTATION SPOT;Sm;0;ON;;;;;N;;;;; -2982;Z NOTATION TYPE COLON;Sm;0;ON;;;;;N;;;;; -2983;LEFT WHITE CURLY BRACKET;Ps;0;ON;;;;;Y;;;;; -2984;RIGHT WHITE CURLY BRACKET;Pe;0;ON;;;;;Y;;;;; -2985;LEFT WHITE PARENTHESIS;Ps;0;ON;;;;;Y;;;;; -2986;RIGHT WHITE PARENTHESIS;Pe;0;ON;;;;;Y;;;;; -2987;Z NOTATION LEFT IMAGE BRACKET;Ps;0;ON;;;;;Y;;;;; -2988;Z NOTATION RIGHT IMAGE BRACKET;Pe;0;ON;;;;;Y;;;;; -2989;Z NOTATION LEFT BINDING BRACKET;Ps;0;ON;;;;;Y;;;;; -298A;Z NOTATION RIGHT BINDING BRACKET;Pe;0;ON;;;;;Y;;;;; -298B;LEFT SQUARE BRACKET WITH UNDERBAR;Ps;0;ON;;;;;Y;;;;; -298C;RIGHT SQUARE BRACKET WITH UNDERBAR;Pe;0;ON;;;;;Y;;;;; -298D;LEFT SQUARE BRACKET WITH TICK IN TOP CORNER;Ps;0;ON;;;;;Y;;;;; -298E;RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER;Pe;0;ON;;;;;Y;;;;; -298F;LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER;Ps;0;ON;;;;;Y;;;;; -2990;RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER;Pe;0;ON;;;;;Y;;;;; -2991;LEFT ANGLE BRACKET WITH DOT;Ps;0;ON;;;;;Y;;;;; -2992;RIGHT ANGLE BRACKET WITH DOT;Pe;0;ON;;;;;Y;;;;; -2993;LEFT ARC LESS-THAN BRACKET;Ps;0;ON;;;;;Y;;;;; -2994;RIGHT ARC GREATER-THAN BRACKET;Pe;0;ON;;;;;Y;;;;; -2995;DOUBLE LEFT ARC GREATER-THAN BRACKET;Ps;0;ON;;;;;Y;;;;; -2996;DOUBLE RIGHT ARC LESS-THAN BRACKET;Pe;0;ON;;;;;Y;;;;; -2997;LEFT BLACK TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;;;;; -2998;RIGHT BLACK TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;;;;; -2999;DOTTED FENCE;Sm;0;ON;;;;;N;;;;; -299A;VERTICAL ZIGZAG LINE;Sm;0;ON;;;;;N;;;;; -299B;MEASURED ANGLE OPENING LEFT;Sm;0;ON;;;;;Y;;;;; -299C;RIGHT ANGLE VARIANT WITH SQUARE;Sm;0;ON;;;;;Y;;;;; -299D;MEASURED RIGHT ANGLE WITH DOT;Sm;0;ON;;;;;Y;;;;; -299E;ANGLE WITH S INSIDE;Sm;0;ON;;;;;Y;;;;; -299F;ACUTE ANGLE;Sm;0;ON;;;;;Y;;;;; -29A0;SPHERICAL ANGLE OPENING LEFT;Sm;0;ON;;;;;Y;;;;; -29A1;SPHERICAL ANGLE OPENING UP;Sm;0;ON;;;;;Y;;;;; -29A2;TURNED ANGLE;Sm;0;ON;;;;;Y;;;;; -29A3;REVERSED ANGLE;Sm;0;ON;;;;;Y;;;;; -29A4;ANGLE WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; -29A5;REVERSED ANGLE WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; -29A6;OBLIQUE ANGLE OPENING UP;Sm;0;ON;;;;;Y;;;;; -29A7;OBLIQUE ANGLE OPENING DOWN;Sm;0;ON;;;;;Y;;;;; -29A8;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT;Sm;0;ON;;;;;Y;;;;; -29A9;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT;Sm;0;ON;;;;;Y;;;;; -29AA;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT;Sm;0;ON;;;;;Y;;;;; -29AB;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT;Sm;0;ON;;;;;Y;;;;; -29AC;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP;Sm;0;ON;;;;;Y;;;;; -29AD;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP;Sm;0;ON;;;;;Y;;;;; -29AE;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN;Sm;0;ON;;;;;Y;;;;; -29AF;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN;Sm;0;ON;;;;;Y;;;;; -29B0;REVERSED EMPTY SET;Sm;0;ON;;;;;N;;;;; -29B1;EMPTY SET WITH OVERBAR;Sm;0;ON;;;;;N;;;;; -29B2;EMPTY SET WITH SMALL CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;; -29B3;EMPTY SET WITH RIGHT ARROW ABOVE;Sm;0;ON;;;;;N;;;;; -29B4;EMPTY SET WITH LEFT ARROW ABOVE;Sm;0;ON;;;;;N;;;;; -29B5;CIRCLE WITH HORIZONTAL BAR;Sm;0;ON;;;;;N;;;;; -29B6;CIRCLED VERTICAL BAR;Sm;0;ON;;;;;N;;;;; -29B7;CIRCLED PARALLEL;Sm;0;ON;;;;;N;;;;; -29B8;CIRCLED REVERSE SOLIDUS;Sm;0;ON;;;;;Y;;;;; -29B9;CIRCLED PERPENDICULAR;Sm;0;ON;;;;;N;;;;; -29BA;CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR;Sm;0;ON;;;;;N;;;;; -29BB;CIRCLE WITH SUPERIMPOSED X;Sm;0;ON;;;;;N;;;;; -29BC;CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN;Sm;0;ON;;;;;N;;;;; -29BD;UP ARROW THROUGH CIRCLE;Sm;0;ON;;;;;N;;;;; -29BE;CIRCLED WHITE BULLET;Sm;0;ON;;;;;N;;;;; -29BF;CIRCLED BULLET;Sm;0;ON;;;;;N;;;;; -29C0;CIRCLED LESS-THAN;Sm;0;ON;;;;;Y;;;;; -29C1;CIRCLED GREATER-THAN;Sm;0;ON;;;;;Y;;;;; -29C2;CIRCLE WITH SMALL CIRCLE TO THE RIGHT;Sm;0;ON;;;;;Y;;;;; -29C3;CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT;Sm;0;ON;;;;;Y;;;;; -29C4;SQUARED RISING DIAGONAL SLASH;Sm;0;ON;;;;;Y;;;;; -29C5;SQUARED FALLING DIAGONAL SLASH;Sm;0;ON;;;;;Y;;;;; -29C6;SQUARED ASTERISK;Sm;0;ON;;;;;N;;;;; -29C7;SQUARED SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; -29C8;SQUARED SQUARE;Sm;0;ON;;;;;N;;;;; -29C9;TWO JOINED SQUARES;Sm;0;ON;;;;;Y;;;;; -29CA;TRIANGLE WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; -29CB;TRIANGLE WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; -29CC;S IN TRIANGLE;Sm;0;ON;;;;;N;;;;; -29CD;TRIANGLE WITH SERIFS AT BOTTOM;Sm;0;ON;;;;;N;;;;; -29CE;RIGHT TRIANGLE ABOVE LEFT TRIANGLE;Sm;0;ON;;;;;Y;;;;; -29CF;LEFT TRIANGLE BESIDE VERTICAL BAR;Sm;0;ON;;;;;Y;;;;; -29D0;VERTICAL BAR BESIDE RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;; -29D1;BOWTIE WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;; -29D2;BOWTIE WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;; -29D3;BLACK BOWTIE;Sm;0;ON;;;;;N;;;;; -29D4;TIMES WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;; -29D5;TIMES WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;; -29D6;WHITE HOURGLASS;Sm;0;ON;;;;;N;;;;; -29D7;BLACK HOURGLASS;Sm;0;ON;;;;;N;;;;; -29D8;LEFT WIGGLY FENCE;Ps;0;ON;;;;;Y;;;;; -29D9;RIGHT WIGGLY FENCE;Pe;0;ON;;;;;Y;;;;; -29DA;LEFT DOUBLE WIGGLY FENCE;Ps;0;ON;;;;;Y;;;;; -29DB;RIGHT DOUBLE WIGGLY FENCE;Pe;0;ON;;;;;Y;;;;; -29DC;INCOMPLETE INFINITY;Sm;0;ON;;;;;Y;;;;; -29DD;TIE OVER INFINITY;Sm;0;ON;;;;;N;;;;; -29DE;INFINITY NEGATED WITH VERTICAL BAR;Sm;0;ON;;;;;N;;;;; -29DF;DOUBLE-ENDED MULTIMAP;Sm;0;ON;;;;;N;;;;; -29E0;SQUARE WITH CONTOURED OUTLINE;Sm;0;ON;;;;;N;;;;; -29E1;INCREASES AS;Sm;0;ON;;;;;Y;;;;; -29E2;SHUFFLE PRODUCT;Sm;0;ON;;;;;N;;;;; -29E3;EQUALS SIGN AND SLANTED PARALLEL;Sm;0;ON;;;;;Y;;;;; -29E4;EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE;Sm;0;ON;;;;;Y;;;;; -29E5;IDENTICAL TO AND SLANTED PARALLEL;Sm;0;ON;;;;;Y;;;;; -29E6;GLEICH STARK;Sm;0;ON;;;;;N;;;;; -29E7;THERMODYNAMIC;Sm;0;ON;;;;;N;;;;; -29E8;DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;; -29E9;DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;; -29EA;BLACK DIAMOND WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;; -29EB;BLACK LOZENGE;Sm;0;ON;;;;;N;;;;; -29EC;WHITE CIRCLE WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;; -29ED;BLACK CIRCLE WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;; -29EE;ERROR-BARRED WHITE SQUARE;Sm;0;ON;;;;;N;;;;; -29EF;ERROR-BARRED BLACK SQUARE;Sm;0;ON;;;;;N;;;;; -29F0;ERROR-BARRED WHITE DIAMOND;Sm;0;ON;;;;;N;;;;; -29F1;ERROR-BARRED BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; -29F2;ERROR-BARRED WHITE CIRCLE;Sm;0;ON;;;;;N;;;;; -29F3;ERROR-BARRED BLACK CIRCLE;Sm;0;ON;;;;;N;;;;; -29F4;RULE-DELAYED;Sm;0;ON;;;;;Y;;;;; -29F5;REVERSE SOLIDUS OPERATOR;Sm;0;ON;;;;;Y;;;;; -29F6;SOLIDUS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; -29F7;REVERSE SOLIDUS WITH HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; -29F8;BIG SOLIDUS;Sm;0;ON;;;;;Y;;;;; -29F9;BIG REVERSE SOLIDUS;Sm;0;ON;;;;;Y;;;;; -29FA;DOUBLE PLUS;Sm;0;ON;;;;;N;;;;; -29FB;TRIPLE PLUS;Sm;0;ON;;;;;N;;;;; -29FC;LEFT-POINTING CURVED ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;; -29FD;RIGHT-POINTING CURVED ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;; -29FE;TINY;Sm;0;ON;;;;;N;;;;; -29FF;MINY;Sm;0;ON;;;;;N;;;;; -2A00;N-ARY CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;; -2A01;N-ARY CIRCLED PLUS OPERATOR;Sm;0;ON;;;;;N;;;;; -2A02;N-ARY CIRCLED TIMES OPERATOR;Sm;0;ON;;;;;N;;;;; -2A03;N-ARY UNION OPERATOR WITH DOT;Sm;0;ON;;;;;N;;;;; -2A04;N-ARY UNION OPERATOR WITH PLUS;Sm;0;ON;;;;;N;;;;; -2A05;N-ARY SQUARE INTERSECTION OPERATOR;Sm;0;ON;;;;;N;;;;; -2A06;N-ARY SQUARE UNION OPERATOR;Sm;0;ON;;;;;N;;;;; -2A07;TWO LOGICAL AND OPERATOR;Sm;0;ON;;;;;N;;;;; -2A08;TWO LOGICAL OR OPERATOR;Sm;0;ON;;;;;N;;;;; -2A09;N-ARY TIMES OPERATOR;Sm;0;ON;;;;;N;;;;; -2A0A;MODULO TWO SUM;Sm;0;ON;;;;;Y;;;;; -2A0B;SUMMATION WITH INTEGRAL;Sm;0;ON;;;;;Y;;;;; -2A0C;QUADRUPLE INTEGRAL OPERATOR;Sm;0;ON; 222B 222B 222B 222B;;;;Y;;;;; -2A0D;FINITE PART INTEGRAL;Sm;0;ON;;;;;Y;;;;; -2A0E;INTEGRAL WITH DOUBLE STROKE;Sm;0;ON;;;;;Y;;;;; -2A0F;INTEGRAL AVERAGE WITH SLASH;Sm;0;ON;;;;;Y;;;;; -2A10;CIRCULATION FUNCTION;Sm;0;ON;;;;;Y;;;;; -2A11;ANTICLOCKWISE INTEGRATION;Sm;0;ON;;;;;Y;;;;; -2A12;LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE;Sm;0;ON;;;;;Y;;;;; -2A13;LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE;Sm;0;ON;;;;;Y;;;;; -2A14;LINE INTEGRATION NOT INCLUDING THE POLE;Sm;0;ON;;;;;Y;;;;; -2A15;INTEGRAL AROUND A POINT OPERATOR;Sm;0;ON;;;;;Y;;;;; -2A16;QUATERNION INTEGRAL OPERATOR;Sm;0;ON;;;;;Y;;;;; -2A17;INTEGRAL WITH LEFTWARDS ARROW WITH HOOK;Sm;0;ON;;;;;Y;;;;; -2A18;INTEGRAL WITH TIMES SIGN;Sm;0;ON;;;;;Y;;;;; -2A19;INTEGRAL WITH INTERSECTION;Sm;0;ON;;;;;Y;;;;; -2A1A;INTEGRAL WITH UNION;Sm;0;ON;;;;;Y;;;;; -2A1B;INTEGRAL WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; -2A1C;INTEGRAL WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; -2A1D;JOIN;Sm;0;ON;;;;;N;;;;; -2A1E;LARGE LEFT TRIANGLE OPERATOR;Sm;0;ON;;;;;Y;;;;; -2A1F;Z NOTATION SCHEMA COMPOSITION;Sm;0;ON;;;;;Y;;;;; -2A20;Z NOTATION SCHEMA PIPING;Sm;0;ON;;;;;Y;;;;; -2A21;Z NOTATION SCHEMA PROJECTION;Sm;0;ON;;;;;Y;;;;; -2A22;PLUS SIGN WITH SMALL CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;; -2A23;PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE;Sm;0;ON;;;;;N;;;;; -2A24;PLUS SIGN WITH TILDE ABOVE;Sm;0;ON;;;;;Y;;;;; -2A25;PLUS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;; -2A26;PLUS SIGN WITH TILDE BELOW;Sm;0;ON;;;;;Y;;;;; -2A27;PLUS SIGN WITH SUBSCRIPT TWO;Sm;0;ON;;;;;N;;;;; -2A28;PLUS SIGN WITH BLACK TRIANGLE;Sm;0;ON;;;;;N;;;;; -2A29;MINUS SIGN WITH COMMA ABOVE;Sm;0;ON;;;;;Y;;;;; -2A2A;MINUS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;; -2A2B;MINUS SIGN WITH FALLING DOTS;Sm;0;ON;;;;;Y;;;;; -2A2C;MINUS SIGN WITH RISING DOTS;Sm;0;ON;;;;;Y;;;;; -2A2D;PLUS SIGN IN LEFT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;; -2A2E;PLUS SIGN IN RIGHT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;; -2A2F;VECTOR OR CROSS PRODUCT;Sm;0;ON;;;;;N;;;;; -2A30;MULTIPLICATION SIGN WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; -2A31;MULTIPLICATION SIGN WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; -2A32;SEMIDIRECT PRODUCT WITH BOTTOM CLOSED;Sm;0;ON;;;;;N;;;;; -2A33;SMASH PRODUCT;Sm;0;ON;;;;;N;;;;; -2A34;MULTIPLICATION SIGN IN LEFT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;; -2A35;MULTIPLICATION SIGN IN RIGHT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;; -2A36;CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT;Sm;0;ON;;;;;N;;;;; -2A37;MULTIPLICATION SIGN IN DOUBLE CIRCLE;Sm;0;ON;;;;;N;;;;; -2A38;CIRCLED DIVISION SIGN;Sm;0;ON;;;;;N;;;;; -2A39;PLUS SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;; -2A3A;MINUS SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;; -2A3B;MULTIPLICATION SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;; -2A3C;INTERIOR PRODUCT;Sm;0;ON;;;;;Y;;;;; -2A3D;RIGHTHAND INTERIOR PRODUCT;Sm;0;ON;;;;;Y;;;;; -2A3E;Z NOTATION RELATIONAL COMPOSITION;Sm;0;ON;;;;;Y;;;;; -2A3F;AMALGAMATION OR COPRODUCT;Sm;0;ON;;;;;N;;;;; -2A40;INTERSECTION WITH DOT;Sm;0;ON;;;;;N;;;;; -2A41;UNION WITH MINUS SIGN;Sm;0;ON;;;;;N;;;;; -2A42;UNION WITH OVERBAR;Sm;0;ON;;;;;N;;;;; -2A43;INTERSECTION WITH OVERBAR;Sm;0;ON;;;;;N;;;;; -2A44;INTERSECTION WITH LOGICAL AND;Sm;0;ON;;;;;N;;;;; -2A45;UNION WITH LOGICAL OR;Sm;0;ON;;;;;N;;;;; -2A46;UNION ABOVE INTERSECTION;Sm;0;ON;;;;;N;;;;; -2A47;INTERSECTION ABOVE UNION;Sm;0;ON;;;;;N;;;;; -2A48;UNION ABOVE BAR ABOVE INTERSECTION;Sm;0;ON;;;;;N;;;;; -2A49;INTERSECTION ABOVE BAR ABOVE UNION;Sm;0;ON;;;;;N;;;;; -2A4A;UNION BESIDE AND JOINED WITH UNION;Sm;0;ON;;;;;N;;;;; -2A4B;INTERSECTION BESIDE AND JOINED WITH INTERSECTION;Sm;0;ON;;;;;N;;;;; -2A4C;CLOSED UNION WITH SERIFS;Sm;0;ON;;;;;N;;;;; -2A4D;CLOSED INTERSECTION WITH SERIFS;Sm;0;ON;;;;;N;;;;; -2A4E;DOUBLE SQUARE INTERSECTION;Sm;0;ON;;;;;N;;;;; -2A4F;DOUBLE SQUARE UNION;Sm;0;ON;;;;;N;;;;; -2A50;CLOSED UNION WITH SERIFS AND SMASH PRODUCT;Sm;0;ON;;;;;N;;;;; -2A51;LOGICAL AND WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; -2A52;LOGICAL OR WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; -2A53;DOUBLE LOGICAL AND;Sm;0;ON;;;;;N;;;;; -2A54;DOUBLE LOGICAL OR;Sm;0;ON;;;;;N;;;;; -2A55;TWO INTERSECTING LOGICAL AND;Sm;0;ON;;;;;N;;;;; -2A56;TWO INTERSECTING LOGICAL OR;Sm;0;ON;;;;;N;;;;; -2A57;SLOPING LARGE OR;Sm;0;ON;;;;;Y;;;;; -2A58;SLOPING LARGE AND;Sm;0;ON;;;;;Y;;;;; -2A59;LOGICAL OR OVERLAPPING LOGICAL AND;Sm;0;ON;;;;;N;;;;; -2A5A;LOGICAL AND WITH MIDDLE STEM;Sm;0;ON;;;;;N;;;;; -2A5B;LOGICAL OR WITH MIDDLE STEM;Sm;0;ON;;;;;N;;;;; -2A5C;LOGICAL AND WITH HORIZONTAL DASH;Sm;0;ON;;;;;N;;;;; -2A5D;LOGICAL OR WITH HORIZONTAL DASH;Sm;0;ON;;;;;N;;;;; -2A5E;LOGICAL AND WITH DOUBLE OVERBAR;Sm;0;ON;;;;;N;;;;; -2A5F;LOGICAL AND WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; -2A60;LOGICAL AND WITH DOUBLE UNDERBAR;Sm;0;ON;;;;;N;;;;; -2A61;SMALL VEE WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; -2A62;LOGICAL OR WITH DOUBLE OVERBAR;Sm;0;ON;;;;;N;;;;; -2A63;LOGICAL OR WITH DOUBLE UNDERBAR;Sm;0;ON;;;;;N;;;;; -2A64;Z NOTATION DOMAIN ANTIRESTRICTION;Sm;0;ON;;;;;Y;;;;; -2A65;Z NOTATION RANGE ANTIRESTRICTION;Sm;0;ON;;;;;Y;;;;; -2A66;EQUALS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;; -2A67;IDENTICAL WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; -2A68;TRIPLE HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2A69;TRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2A6A;TILDE OPERATOR WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; -2A6B;TILDE OPERATOR WITH RISING DOTS;Sm;0;ON;;;;;Y;;;;; -2A6C;SIMILAR MINUS SIMILAR;Sm;0;ON;;;;;Y;;;;; -2A6D;CONGRUENT WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; -2A6E;EQUALS WITH ASTERISK;Sm;0;ON;;;;;N;;;;; -2A6F;ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT;Sm;0;ON;;;;;Y;;;;; -2A70;APPROXIMATELY EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2A71;EQUALS SIGN ABOVE PLUS SIGN;Sm;0;ON;;;;;N;;;;; -2A72;PLUS SIGN ABOVE EQUALS SIGN;Sm;0;ON;;;;;N;;;;; -2A73;EQUALS SIGN ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; -2A74;DOUBLE COLON EQUAL;Sm;0;ON; 003A 003A 003D;;;;Y;;;;; -2A75;TWO CONSECUTIVE EQUALS SIGNS;Sm;0;ON; 003D 003D;;;;N;;;;; -2A76;THREE CONSECUTIVE EQUALS SIGNS;Sm;0;ON; 003D 003D 003D;;;;N;;;;; -2A77;EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW;Sm;0;ON;;;;;N;;;;; -2A78;EQUIVALENT WITH FOUR DOTS ABOVE;Sm;0;ON;;;;;N;;;;; -2A79;LESS-THAN WITH CIRCLE INSIDE;Sm;0;ON;;;;;Y;;;;; -2A7A;GREATER-THAN WITH CIRCLE INSIDE;Sm;0;ON;;;;;Y;;;;; -2A7B;LESS-THAN WITH QUESTION MARK ABOVE;Sm;0;ON;;;;;Y;;;;; -2A7C;GREATER-THAN WITH QUESTION MARK ABOVE;Sm;0;ON;;;;;Y;;;;; -2A7D;LESS-THAN OR SLANTED EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2A7E;GREATER-THAN OR SLANTED EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2A7F;LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;; -2A80;GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;; -2A81;LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; -2A82;GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; -2A83;LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT;Sm;0;ON;;;;;Y;;;;; -2A84;GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT;Sm;0;ON;;;;;Y;;;;; -2A85;LESS-THAN OR APPROXIMATE;Sm;0;ON;;;;;Y;;;;; -2A86;GREATER-THAN OR APPROXIMATE;Sm;0;ON;;;;;Y;;;;; -2A87;LESS-THAN AND SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2A88;GREATER-THAN AND SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2A89;LESS-THAN AND NOT APPROXIMATE;Sm;0;ON;;;;;Y;;;;; -2A8A;GREATER-THAN AND NOT APPROXIMATE;Sm;0;ON;;;;;Y;;;;; -2A8B;LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN;Sm;0;ON;;;;;Y;;;;; -2A8C;GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN;Sm;0;ON;;;;;Y;;;;; -2A8D;LESS-THAN ABOVE SIMILAR OR EQUAL;Sm;0;ON;;;;;Y;;;;; -2A8E;GREATER-THAN ABOVE SIMILAR OR EQUAL;Sm;0;ON;;;;;Y;;;;; -2A8F;LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN;Sm;0;ON;;;;;Y;;;;; -2A90;GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN;Sm;0;ON;;;;;Y;;;;; -2A91;LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL;Sm;0;ON;;;;;Y;;;;; -2A92;GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL;Sm;0;ON;;;;;Y;;;;; -2A93;LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;; -2A94;GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;; -2A95;SLANTED EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;; -2A96;SLANTED EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;; -2A97;SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;; -2A98;SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;; -2A99;DOUBLE-LINE EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;; -2A9A;DOUBLE-LINE EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;; -2A9B;DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;; -2A9C;DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;; -2A9D;SIMILAR OR LESS-THAN;Sm;0;ON;;;;;Y;;;;; -2A9E;SIMILAR OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;; -2A9F;SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; -2AA0;SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; -2AA1;DOUBLE NESTED LESS-THAN;Sm;0;ON;;;;;Y;;;;; -2AA2;DOUBLE NESTED GREATER-THAN;Sm;0;ON;;;;;Y;;;;; -2AA3;DOUBLE NESTED LESS-THAN WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; -2AA4;GREATER-THAN OVERLAPPING LESS-THAN;Sm;0;ON;;;;;N;;;;; -2AA5;GREATER-THAN BESIDE LESS-THAN;Sm;0;ON;;;;;N;;;;; -2AA6;LESS-THAN CLOSED BY CURVE;Sm;0;ON;;;;;Y;;;;; -2AA7;GREATER-THAN CLOSED BY CURVE;Sm;0;ON;;;;;Y;;;;; -2AA8;LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;; -2AA9;GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;; -2AAA;SMALLER THAN;Sm;0;ON;;;;;Y;;;;; -2AAB;LARGER THAN;Sm;0;ON;;;;;Y;;;;; -2AAC;SMALLER THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AAD;LARGER THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AAE;EQUALS SIGN WITH BUMPY ABOVE;Sm;0;ON;;;;;N;;;;; -2AAF;PRECEDES ABOVE SINGLE-LINE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; -2AB0;SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; -2AB1;PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AB2;SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AB3;PRECEDES ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; -2AB4;SUCCEEDS ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; -2AB5;PRECEDES ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AB6;SUCCEEDS ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AB7;PRECEDES ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AB8;SUCCEEDS ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AB9;PRECEDES ABOVE NOT ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2ABA;SUCCEEDS ABOVE NOT ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2ABB;DOUBLE PRECEDES;Sm;0;ON;;;;;Y;;;;; -2ABC;DOUBLE SUCCEEDS;Sm;0;ON;;;;;Y;;;;; -2ABD;SUBSET WITH DOT;Sm;0;ON;;;;;Y;;;;; -2ABE;SUPERSET WITH DOT;Sm;0;ON;;;;;Y;;;;; -2ABF;SUBSET WITH PLUS SIGN BELOW;Sm;0;ON;;;;;Y;;;;; -2AC0;SUPERSET WITH PLUS SIGN BELOW;Sm;0;ON;;;;;Y;;;;; -2AC1;SUBSET WITH MULTIPLICATION SIGN BELOW;Sm;0;ON;;;;;Y;;;;; -2AC2;SUPERSET WITH MULTIPLICATION SIGN BELOW;Sm;0;ON;;;;;Y;;;;; -2AC3;SUBSET OF OR EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; -2AC4;SUPERSET OF OR EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; -2AC5;SUBSET OF ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; -2AC6;SUPERSET OF ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; -2AC7;SUBSET OF ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; -2AC8;SUPERSET OF ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; -2AC9;SUBSET OF ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2ACA;SUPERSET OF ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2ACB;SUBSET OF ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2ACC;SUPERSET OF ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2ACD;SQUARE LEFT OPEN BOX OPERATOR;Sm;0;ON;;;;;Y;;;;; -2ACE;SQUARE RIGHT OPEN BOX OPERATOR;Sm;0;ON;;;;;Y;;;;; -2ACF;CLOSED SUBSET;Sm;0;ON;;;;;Y;;;;; -2AD0;CLOSED SUPERSET;Sm;0;ON;;;;;Y;;;;; -2AD1;CLOSED SUBSET OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AD2;CLOSED SUPERSET OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AD3;SUBSET ABOVE SUPERSET;Sm;0;ON;;;;;Y;;;;; -2AD4;SUPERSET ABOVE SUBSET;Sm;0;ON;;;;;Y;;;;; -2AD5;SUBSET ABOVE SUBSET;Sm;0;ON;;;;;Y;;;;; -2AD6;SUPERSET ABOVE SUPERSET;Sm;0;ON;;;;;Y;;;;; -2AD7;SUPERSET BESIDE SUBSET;Sm;0;ON;;;;;N;;;;; -2AD8;SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET;Sm;0;ON;;;;;N;;;;; -2AD9;ELEMENT OF OPENING DOWNWARDS;Sm;0;ON;;;;;N;;;;; -2ADA;PITCHFORK WITH TEE TOP;Sm;0;ON;;;;;N;;;;; -2ADB;TRANSVERSAL INTERSECTION;Sm;0;ON;;;;;N;;;;; -2ADC;FORKING;Sm;0;ON;2ADD 0338;;;;Y;;;;; -2ADD;NONFORKING;Sm;0;ON;;;;;N;;;;; -2ADE;SHORT LEFT TACK;Sm;0;ON;;;;;Y;;;;; -2ADF;SHORT DOWN TACK;Sm;0;ON;;;;;N;;;;; -2AE0;SHORT UP TACK;Sm;0;ON;;;;;N;;;;; -2AE1;PERPENDICULAR WITH S;Sm;0;ON;;;;;N;;;;; -2AE2;VERTICAL BAR TRIPLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;; -2AE3;DOUBLE VERTICAL BAR LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;; -2AE4;VERTICAL BAR DOUBLE LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;; -2AE5;DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;; -2AE6;LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL;Sm;0;ON;;;;;Y;;;;; -2AE7;SHORT DOWN TACK WITH OVERBAR;Sm;0;ON;;;;;N;;;;; -2AE8;SHORT UP TACK WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; -2AE9;SHORT UP TACK ABOVE SHORT DOWN TACK;Sm;0;ON;;;;;N;;;;; -2AEA;DOUBLE DOWN TACK;Sm;0;ON;;;;;N;;;;; -2AEB;DOUBLE UP TACK;Sm;0;ON;;;;;N;;;;; -2AEC;DOUBLE STROKE NOT SIGN;Sm;0;ON;;;;;Y;;;;; -2AED;REVERSED DOUBLE STROKE NOT SIGN;Sm;0;ON;;;;;Y;;;;; -2AEE;DOES NOT DIVIDE WITH REVERSED NEGATION SLASH;Sm;0;ON;;;;;Y;;;;; -2AEF;VERTICAL LINE WITH CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;; -2AF0;VERTICAL LINE WITH CIRCLE BELOW;Sm;0;ON;;;;;N;;;;; -2AF1;DOWN TACK WITH CIRCLE BELOW;Sm;0;ON;;;;;N;;;;; -2AF2;PARALLEL WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; -2AF3;PARALLEL WITH TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; -2AF4;TRIPLE VERTICAL BAR BINARY RELATION;Sm;0;ON;;;;;N;;;;; -2AF5;TRIPLE VERTICAL BAR WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; -2AF6;TRIPLE COLON OPERATOR;Sm;0;ON;;;;;N;;;;; -2AF7;TRIPLE NESTED LESS-THAN;Sm;0;ON;;;;;Y;;;;; -2AF8;TRIPLE NESTED GREATER-THAN;Sm;0;ON;;;;;Y;;;;; -2AF9;DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AFA;DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AFB;TRIPLE SOLIDUS BINARY RELATION;Sm;0;ON;;;;;Y;;;;; -2AFC;LARGE TRIPLE VERTICAL BAR OPERATOR;Sm;0;ON;;;;;N;;;;; -2AFD;DOUBLE SOLIDUS OPERATOR;Sm;0;ON;;;;;Y;;;;; -2AFE;WHITE VERTICAL BAR;Sm;0;ON;;;;;N;;;;; -2AFF;N-ARY WHITE VERTICAL BAR;Sm;0;ON;;;;;N;;;;; -2B00;NORTH EAST WHITE ARROW;So;0;ON;;;;;N;;;;; -2B01;NORTH WEST WHITE ARROW;So;0;ON;;;;;N;;;;; -2B02;SOUTH EAST WHITE ARROW;So;0;ON;;;;;N;;;;; -2B03;SOUTH WEST WHITE ARROW;So;0;ON;;;;;N;;;;; -2B04;LEFT RIGHT WHITE ARROW;So;0;ON;;;;;N;;;;; -2B05;LEFTWARDS BLACK ARROW;So;0;ON;;;;;N;;;;; -2B06;UPWARDS BLACK ARROW;So;0;ON;;;;;N;;;;; -2B07;DOWNWARDS BLACK ARROW;So;0;ON;;;;;N;;;;; -2B08;NORTH EAST BLACK ARROW;So;0;ON;;;;;N;;;;; -2B09;NORTH WEST BLACK ARROW;So;0;ON;;;;;N;;;;; -2B0A;SOUTH EAST BLACK ARROW;So;0;ON;;;;;N;;;;; -2B0B;SOUTH WEST BLACK ARROW;So;0;ON;;;;;N;;;;; -2B0C;LEFT RIGHT BLACK ARROW;So;0;ON;;;;;N;;;;; -2B0D;UP DOWN BLACK ARROW;So;0;ON;;;;;N;;;;; -2B0E;RIGHTWARDS ARROW WITH TIP DOWNWARDS;So;0;ON;;;;;N;;;;; -2B0F;RIGHTWARDS ARROW WITH TIP UPWARDS;So;0;ON;;;;;N;;;;; -2B10;LEFTWARDS ARROW WITH TIP DOWNWARDS;So;0;ON;;;;;N;;;;; -2B11;LEFTWARDS ARROW WITH TIP UPWARDS;So;0;ON;;;;;N;;;;; -2B12;SQUARE WITH TOP HALF BLACK;So;0;ON;;;;;N;;;;; -2B13;SQUARE WITH BOTTOM HALF BLACK;So;0;ON;;;;;N;;;;; -2B14;SQUARE WITH UPPER RIGHT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;; -2B15;SQUARE WITH LOWER LEFT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;; -2B16;DIAMOND WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;; -2B17;DIAMOND WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;; -2B18;DIAMOND WITH TOP HALF BLACK;So;0;ON;;;;;N;;;;; -2B19;DIAMOND WITH BOTTOM HALF BLACK;So;0;ON;;;;;N;;;;; -2B1A;DOTTED SQUARE;So;0;ON;;;;;N;;;;; -2B1B;BLACK LARGE SQUARE;So;0;ON;;;;;N;;;;; -2B1C;WHITE LARGE SQUARE;So;0;ON;;;;;N;;;;; -2B1D;BLACK VERY SMALL SQUARE;So;0;ON;;;;;N;;;;; -2B1E;WHITE VERY SMALL SQUARE;So;0;ON;;;;;N;;;;; -2B1F;BLACK PENTAGON;So;0;ON;;;;;N;;;;; -2B20;WHITE PENTAGON;So;0;ON;;;;;N;;;;; -2B21;WHITE HEXAGON;So;0;ON;;;;;N;;;;; -2B22;BLACK HEXAGON;So;0;ON;;;;;N;;;;; -2B23;HORIZONTAL BLACK HEXAGON;So;0;ON;;;;;N;;;;; -2B24;BLACK LARGE CIRCLE;So;0;ON;;;;;N;;;;; -2B25;BLACK MEDIUM DIAMOND;So;0;ON;;;;;N;;;;; -2B26;WHITE MEDIUM DIAMOND;So;0;ON;;;;;N;;;;; -2B27;BLACK MEDIUM LOZENGE;So;0;ON;;;;;N;;;;; -2B28;WHITE MEDIUM LOZENGE;So;0;ON;;;;;N;;;;; -2B29;BLACK SMALL DIAMOND;So;0;ON;;;;;N;;;;; -2B2A;BLACK SMALL LOZENGE;So;0;ON;;;;;N;;;;; -2B2B;WHITE SMALL LOZENGE;So;0;ON;;;;;N;;;;; -2B2C;BLACK HORIZONTAL ELLIPSE;So;0;ON;;;;;N;;;;; -2B2D;WHITE HORIZONTAL ELLIPSE;So;0;ON;;;;;N;;;;; -2B2E;BLACK VERTICAL ELLIPSE;So;0;ON;;;;;N;;;;; -2B2F;WHITE VERTICAL ELLIPSE;So;0;ON;;;;;N;;;;; -2B30;LEFT ARROW WITH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; -2B31;THREE LEFTWARDS ARROWS;Sm;0;ON;;;;;N;;;;; -2B32;LEFT ARROW WITH CIRCLED PLUS;Sm;0;ON;;;;;N;;;;; -2B33;LONG LEFTWARDS SQUIGGLE ARROW;Sm;0;ON;;;;;N;;;;; -2B34;LEFTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2B35;LEFTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2B36;LEFTWARDS TWO-HEADED ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; -2B37;LEFTWARDS TWO-HEADED TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;; -2B38;LEFTWARDS ARROW WITH DOTTED STEM;Sm;0;ON;;;;;N;;;;; -2B39;LEFTWARDS ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2B3A;LEFTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2B3B;LEFTWARDS TWO-HEADED ARROW WITH TAIL;Sm;0;ON;;;;;N;;;;; -2B3C;LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2B3D;LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2B3E;LEFTWARDS ARROW THROUGH X;Sm;0;ON;;;;;N;;;;; -2B3F;WAVE ARROW POINTING DIRECTLY LEFT;Sm;0;ON;;;;;N;;;;; -2B40;EQUALS SIGN ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -2B41;REVERSE TILDE OPERATOR ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -2B42;LEFTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;; -2B43;RIGHTWARDS ARROW THROUGH GREATER-THAN;Sm;0;ON;;;;;N;;;;; -2B44;RIGHTWARDS ARROW THROUGH SUPERSET;Sm;0;ON;;;;;N;;;;; -2B45;LEFTWARDS QUADRUPLE ARROW;So;0;ON;;;;;N;;;;; -2B46;RIGHTWARDS QUADRUPLE ARROW;So;0;ON;;;;;N;;;;; -2B47;REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -2B48;RIGHTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;; -2B49;TILDE OPERATOR ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -2B4A;LEFTWARDS ARROW ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;; -2B4B;LEFTWARDS ARROW ABOVE REVERSE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;; -2B4C;RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;; -2B50;WHITE MEDIUM STAR;So;0;ON;;;;;N;;;;; -2B51;BLACK SMALL STAR;So;0;ON;;;;;N;;;;; -2B52;WHITE SMALL STAR;So;0;ON;;;;;N;;;;; -2B53;BLACK RIGHT-POINTING PENTAGON;So;0;ON;;;;;N;;;;; -2B54;WHITE RIGHT-POINTING PENTAGON;So;0;ON;;;;;N;;;;; -2B55;HEAVY LARGE CIRCLE;So;0;ON;;;;;N;;;;; -2B56;HEAVY OVAL WITH OVAL INSIDE;So;0;ON;;;;;N;;;;; -2B57;HEAVY CIRCLE WITH CIRCLE INSIDE;So;0;ON;;;;;N;;;;; -2B58;HEAVY CIRCLE;So;0;ON;;;;;N;;;;; -2B59;HEAVY CIRCLED SALTIRE;So;0;ON;;;;;N;;;;; -2C00;GLAGOLITIC CAPITAL LETTER AZU;Lu;0;L;;;;;N;;;;2C30; -2C01;GLAGOLITIC CAPITAL LETTER BUKY;Lu;0;L;;;;;N;;;;2C31; -2C02;GLAGOLITIC CAPITAL LETTER VEDE;Lu;0;L;;;;;N;;;;2C32; -2C03;GLAGOLITIC CAPITAL LETTER GLAGOLI;Lu;0;L;;;;;N;;;;2C33; -2C04;GLAGOLITIC CAPITAL LETTER DOBRO;Lu;0;L;;;;;N;;;;2C34; -2C05;GLAGOLITIC CAPITAL LETTER YESTU;Lu;0;L;;;;;N;;;;2C35; -2C06;GLAGOLITIC CAPITAL LETTER ZHIVETE;Lu;0;L;;;;;N;;;;2C36; -2C07;GLAGOLITIC CAPITAL LETTER DZELO;Lu;0;L;;;;;N;;;;2C37; -2C08;GLAGOLITIC CAPITAL LETTER ZEMLJA;Lu;0;L;;;;;N;;;;2C38; -2C09;GLAGOLITIC CAPITAL LETTER IZHE;Lu;0;L;;;;;N;;;;2C39; -2C0A;GLAGOLITIC CAPITAL LETTER INITIAL IZHE;Lu;0;L;;;;;N;;;;2C3A; -2C0B;GLAGOLITIC CAPITAL LETTER I;Lu;0;L;;;;;N;;;;2C3B; -2C0C;GLAGOLITIC CAPITAL LETTER DJERVI;Lu;0;L;;;;;N;;;;2C3C; -2C0D;GLAGOLITIC CAPITAL LETTER KAKO;Lu;0;L;;;;;N;;;;2C3D; -2C0E;GLAGOLITIC CAPITAL LETTER LJUDIJE;Lu;0;L;;;;;N;;;;2C3E; -2C0F;GLAGOLITIC CAPITAL LETTER MYSLITE;Lu;0;L;;;;;N;;;;2C3F; -2C10;GLAGOLITIC CAPITAL LETTER NASHI;Lu;0;L;;;;;N;;;;2C40; -2C11;GLAGOLITIC CAPITAL LETTER ONU;Lu;0;L;;;;;N;;;;2C41; -2C12;GLAGOLITIC CAPITAL LETTER POKOJI;Lu;0;L;;;;;N;;;;2C42; -2C13;GLAGOLITIC CAPITAL LETTER RITSI;Lu;0;L;;;;;N;;;;2C43; -2C14;GLAGOLITIC CAPITAL LETTER SLOVO;Lu;0;L;;;;;N;;;;2C44; -2C15;GLAGOLITIC CAPITAL LETTER TVRIDO;Lu;0;L;;;;;N;;;;2C45; -2C16;GLAGOLITIC CAPITAL LETTER UKU;Lu;0;L;;;;;N;;;;2C46; -2C17;GLAGOLITIC CAPITAL LETTER FRITU;Lu;0;L;;;;;N;;;;2C47; -2C18;GLAGOLITIC CAPITAL LETTER HERU;Lu;0;L;;;;;N;;;;2C48; -2C19;GLAGOLITIC CAPITAL LETTER OTU;Lu;0;L;;;;;N;;;;2C49; -2C1A;GLAGOLITIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;2C4A; -2C1B;GLAGOLITIC CAPITAL LETTER SHTA;Lu;0;L;;;;;N;;;;2C4B; -2C1C;GLAGOLITIC CAPITAL LETTER TSI;Lu;0;L;;;;;N;;;;2C4C; -2C1D;GLAGOLITIC CAPITAL LETTER CHRIVI;Lu;0;L;;;;;N;;;;2C4D; -2C1E;GLAGOLITIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;2C4E; -2C1F;GLAGOLITIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;;;;2C4F; -2C20;GLAGOLITIC CAPITAL LETTER YERI;Lu;0;L;;;;;N;;;;2C50; -2C21;GLAGOLITIC CAPITAL LETTER YATI;Lu;0;L;;;;;N;;;;2C51; -2C22;GLAGOLITIC CAPITAL LETTER SPIDERY HA;Lu;0;L;;;;;N;;;;2C52; -2C23;GLAGOLITIC CAPITAL LETTER YU;Lu;0;L;;;;;N;;;;2C53; -2C24;GLAGOLITIC CAPITAL LETTER SMALL YUS;Lu;0;L;;;;;N;;;;2C54; -2C25;GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL;Lu;0;L;;;;;N;;;;2C55; -2C26;GLAGOLITIC CAPITAL LETTER YO;Lu;0;L;;;;;N;;;;2C56; -2C27;GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS;Lu;0;L;;;;;N;;;;2C57; -2C28;GLAGOLITIC CAPITAL LETTER BIG YUS;Lu;0;L;;;;;N;;;;2C58; -2C29;GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS;Lu;0;L;;;;;N;;;;2C59; -2C2A;GLAGOLITIC CAPITAL LETTER FITA;Lu;0;L;;;;;N;;;;2C5A; -2C2B;GLAGOLITIC CAPITAL LETTER IZHITSA;Lu;0;L;;;;;N;;;;2C5B; -2C2C;GLAGOLITIC CAPITAL LETTER SHTAPIC;Lu;0;L;;;;;N;;;;2C5C; -2C2D;GLAGOLITIC CAPITAL LETTER TROKUTASTI A;Lu;0;L;;;;;N;;;;2C5D; -2C2E;GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE;Lu;0;L;;;;;N;;;;2C5E; -2C30;GLAGOLITIC SMALL LETTER AZU;Ll;0;L;;;;;N;;;2C00;;2C00 -2C31;GLAGOLITIC SMALL LETTER BUKY;Ll;0;L;;;;;N;;;2C01;;2C01 -2C32;GLAGOLITIC SMALL LETTER VEDE;Ll;0;L;;;;;N;;;2C02;;2C02 -2C33;GLAGOLITIC SMALL LETTER GLAGOLI;Ll;0;L;;;;;N;;;2C03;;2C03 -2C34;GLAGOLITIC SMALL LETTER DOBRO;Ll;0;L;;;;;N;;;2C04;;2C04 -2C35;GLAGOLITIC SMALL LETTER YESTU;Ll;0;L;;;;;N;;;2C05;;2C05 -2C36;GLAGOLITIC SMALL LETTER ZHIVETE;Ll;0;L;;;;;N;;;2C06;;2C06 -2C37;GLAGOLITIC SMALL LETTER DZELO;Ll;0;L;;;;;N;;;2C07;;2C07 -2C38;GLAGOLITIC SMALL LETTER ZEMLJA;Ll;0;L;;;;;N;;;2C08;;2C08 -2C39;GLAGOLITIC SMALL LETTER IZHE;Ll;0;L;;;;;N;;;2C09;;2C09 -2C3A;GLAGOLITIC SMALL LETTER INITIAL IZHE;Ll;0;L;;;;;N;;;2C0A;;2C0A -2C3B;GLAGOLITIC SMALL LETTER I;Ll;0;L;;;;;N;;;2C0B;;2C0B -2C3C;GLAGOLITIC SMALL LETTER DJERVI;Ll;0;L;;;;;N;;;2C0C;;2C0C -2C3D;GLAGOLITIC SMALL LETTER KAKO;Ll;0;L;;;;;N;;;2C0D;;2C0D -2C3E;GLAGOLITIC SMALL LETTER LJUDIJE;Ll;0;L;;;;;N;;;2C0E;;2C0E -2C3F;GLAGOLITIC SMALL LETTER MYSLITE;Ll;0;L;;;;;N;;;2C0F;;2C0F -2C40;GLAGOLITIC SMALL LETTER NASHI;Ll;0;L;;;;;N;;;2C10;;2C10 -2C41;GLAGOLITIC SMALL LETTER ONU;Ll;0;L;;;;;N;;;2C11;;2C11 -2C42;GLAGOLITIC SMALL LETTER POKOJI;Ll;0;L;;;;;N;;;2C12;;2C12 -2C43;GLAGOLITIC SMALL LETTER RITSI;Ll;0;L;;;;;N;;;2C13;;2C13 -2C44;GLAGOLITIC SMALL LETTER SLOVO;Ll;0;L;;;;;N;;;2C14;;2C14 -2C45;GLAGOLITIC SMALL LETTER TVRIDO;Ll;0;L;;;;;N;;;2C15;;2C15 -2C46;GLAGOLITIC SMALL LETTER UKU;Ll;0;L;;;;;N;;;2C16;;2C16 -2C47;GLAGOLITIC SMALL LETTER FRITU;Ll;0;L;;;;;N;;;2C17;;2C17 -2C48;GLAGOLITIC SMALL LETTER HERU;Ll;0;L;;;;;N;;;2C18;;2C18 -2C49;GLAGOLITIC SMALL LETTER OTU;Ll;0;L;;;;;N;;;2C19;;2C19 -2C4A;GLAGOLITIC SMALL LETTER PE;Ll;0;L;;;;;N;;;2C1A;;2C1A -2C4B;GLAGOLITIC SMALL LETTER SHTA;Ll;0;L;;;;;N;;;2C1B;;2C1B -2C4C;GLAGOLITIC SMALL LETTER TSI;Ll;0;L;;;;;N;;;2C1C;;2C1C -2C4D;GLAGOLITIC SMALL LETTER CHRIVI;Ll;0;L;;;;;N;;;2C1D;;2C1D -2C4E;GLAGOLITIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;2C1E;;2C1E -2C4F;GLAGOLITIC SMALL LETTER YERU;Ll;0;L;;;;;N;;;2C1F;;2C1F -2C50;GLAGOLITIC SMALL LETTER YERI;Ll;0;L;;;;;N;;;2C20;;2C20 -2C51;GLAGOLITIC SMALL LETTER YATI;Ll;0;L;;;;;N;;;2C21;;2C21 -2C52;GLAGOLITIC SMALL LETTER SPIDERY HA;Ll;0;L;;;;;N;;;2C22;;2C22 -2C53;GLAGOLITIC SMALL LETTER YU;Ll;0;L;;;;;N;;;2C23;;2C23 -2C54;GLAGOLITIC SMALL LETTER SMALL YUS;Ll;0;L;;;;;N;;;2C24;;2C24 -2C55;GLAGOLITIC SMALL LETTER SMALL YUS WITH TAIL;Ll;0;L;;;;;N;;;2C25;;2C25 -2C56;GLAGOLITIC SMALL LETTER YO;Ll;0;L;;;;;N;;;2C26;;2C26 -2C57;GLAGOLITIC SMALL LETTER IOTATED SMALL YUS;Ll;0;L;;;;;N;;;2C27;;2C27 -2C58;GLAGOLITIC SMALL LETTER BIG YUS;Ll;0;L;;;;;N;;;2C28;;2C28 -2C59;GLAGOLITIC SMALL LETTER IOTATED BIG YUS;Ll;0;L;;;;;N;;;2C29;;2C29 -2C5A;GLAGOLITIC SMALL LETTER FITA;Ll;0;L;;;;;N;;;2C2A;;2C2A -2C5B;GLAGOLITIC SMALL LETTER IZHITSA;Ll;0;L;;;;;N;;;2C2B;;2C2B -2C5C;GLAGOLITIC SMALL LETTER SHTAPIC;Ll;0;L;;;;;N;;;2C2C;;2C2C -2C5D;GLAGOLITIC SMALL LETTER TROKUTASTI A;Ll;0;L;;;;;N;;;2C2D;;2C2D -2C5E;GLAGOLITIC SMALL LETTER LATINATE MYSLITE;Ll;0;L;;;;;N;;;2C2E;;2C2E -2C60;LATIN CAPITAL LETTER L WITH DOUBLE BAR;Lu;0;L;;;;;N;;;;2C61; -2C61;LATIN SMALL LETTER L WITH DOUBLE BAR;Ll;0;L;;;;;N;;;2C60;;2C60 -2C62;LATIN CAPITAL LETTER L WITH MIDDLE TILDE;Lu;0;L;;;;;N;;;;026B; -2C63;LATIN CAPITAL LETTER P WITH STROKE;Lu;0;L;;;;;N;;;;1D7D; -2C64;LATIN CAPITAL LETTER R WITH TAIL;Lu;0;L;;;;;N;;;;027D; -2C65;LATIN SMALL LETTER A WITH STROKE;Ll;0;L;;;;;N;;;023A;;023A -2C66;LATIN SMALL LETTER T WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;023E;;023E -2C67;LATIN CAPITAL LETTER H WITH DESCENDER;Lu;0;L;;;;;N;;;;2C68; -2C68;LATIN SMALL LETTER H WITH DESCENDER;Ll;0;L;;;;;N;;;2C67;;2C67 -2C69;LATIN CAPITAL LETTER K WITH DESCENDER;Lu;0;L;;;;;N;;;;2C6A; -2C6A;LATIN SMALL LETTER K WITH DESCENDER;Ll;0;L;;;;;N;;;2C69;;2C69 -2C6B;LATIN CAPITAL LETTER Z WITH DESCENDER;Lu;0;L;;;;;N;;;;2C6C; -2C6C;LATIN SMALL LETTER Z WITH DESCENDER;Ll;0;L;;;;;N;;;2C6B;;2C6B -2C6D;LATIN CAPITAL LETTER ALPHA;Lu;0;L;;;;;N;;;;0251; -2C6E;LATIN CAPITAL LETTER M WITH HOOK;Lu;0;L;;;;;N;;;;0271; -2C6F;LATIN CAPITAL LETTER TURNED A;Lu;0;L;;;;;N;;;;0250; -2C70;LATIN CAPITAL LETTER TURNED ALPHA;Lu;0;L;;;;;N;;;;0252; -2C71;LATIN SMALL LETTER V WITH RIGHT HOOK;Ll;0;L;;;;;N;;;;; -2C72;LATIN CAPITAL LETTER W WITH HOOK;Lu;0;L;;;;;N;;;;2C73; -2C73;LATIN SMALL LETTER W WITH HOOK;Ll;0;L;;;;;N;;;2C72;;2C72 -2C74;LATIN SMALL LETTER V WITH CURL;Ll;0;L;;;;;N;;;;; -2C75;LATIN CAPITAL LETTER HALF H;Lu;0;L;;;;;N;;;;2C76; -2C76;LATIN SMALL LETTER HALF H;Ll;0;L;;;;;N;;;2C75;;2C75 -2C77;LATIN SMALL LETTER TAILLESS PHI;Ll;0;L;;;;;N;;;;; -2C78;LATIN SMALL LETTER E WITH NOTCH;Ll;0;L;;;;;N;;;;; -2C79;LATIN SMALL LETTER TURNED R WITH TAIL;Ll;0;L;;;;;N;;;;; -2C7A;LATIN SMALL LETTER O WITH LOW RING INSIDE;Ll;0;L;;;;;N;;;;; -2C7B;LATIN LETTER SMALL CAPITAL TURNED E;Ll;0;L;;;;;N;;;;; -2C7C;LATIN SUBSCRIPT SMALL LETTER J;Ll;0;L; 006A;;;;N;;;;; -2C7D;MODIFIER LETTER CAPITAL V;Lm;0;L; 0056;;;;N;;;;; -2C7E;LATIN CAPITAL LETTER S WITH SWASH TAIL;Lu;0;L;;;;;N;;;;023F; -2C7F;LATIN CAPITAL LETTER Z WITH SWASH TAIL;Lu;0;L;;;;;N;;;;0240; -2C80;COPTIC CAPITAL LETTER ALFA;Lu;0;L;;;;;N;;;;2C81; -2C81;COPTIC SMALL LETTER ALFA;Ll;0;L;;;;;N;;;2C80;;2C80 -2C82;COPTIC CAPITAL LETTER VIDA;Lu;0;L;;;;;N;;;;2C83; -2C83;COPTIC SMALL LETTER VIDA;Ll;0;L;;;;;N;;;2C82;;2C82 -2C84;COPTIC CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;2C85; -2C85;COPTIC SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;2C84;;2C84 -2C86;COPTIC CAPITAL LETTER DALDA;Lu;0;L;;;;;N;;;;2C87; -2C87;COPTIC SMALL LETTER DALDA;Ll;0;L;;;;;N;;;2C86;;2C86 -2C88;COPTIC CAPITAL LETTER EIE;Lu;0;L;;;;;N;;;;2C89; -2C89;COPTIC SMALL LETTER EIE;Ll;0;L;;;;;N;;;2C88;;2C88 -2C8A;COPTIC CAPITAL LETTER SOU;Lu;0;L;;;;;N;;;;2C8B; -2C8B;COPTIC SMALL LETTER SOU;Ll;0;L;;;;;N;;;2C8A;;2C8A -2C8C;COPTIC CAPITAL LETTER ZATA;Lu;0;L;;;;;N;;;;2C8D; -2C8D;COPTIC SMALL LETTER ZATA;Ll;0;L;;;;;N;;;2C8C;;2C8C -2C8E;COPTIC CAPITAL LETTER HATE;Lu;0;L;;;;;N;;;;2C8F; -2C8F;COPTIC SMALL LETTER HATE;Ll;0;L;;;;;N;;;2C8E;;2C8E -2C90;COPTIC CAPITAL LETTER THETHE;Lu;0;L;;;;;N;;;;2C91; -2C91;COPTIC SMALL LETTER THETHE;Ll;0;L;;;;;N;;;2C90;;2C90 -2C92;COPTIC CAPITAL LETTER IAUDA;Lu;0;L;;;;;N;;;;2C93; -2C93;COPTIC SMALL LETTER IAUDA;Ll;0;L;;;;;N;;;2C92;;2C92 -2C94;COPTIC CAPITAL LETTER KAPA;Lu;0;L;;;;;N;;;;2C95; -2C95;COPTIC SMALL LETTER KAPA;Ll;0;L;;;;;N;;;2C94;;2C94 -2C96;COPTIC CAPITAL LETTER LAULA;Lu;0;L;;;;;N;;;;2C97; -2C97;COPTIC SMALL LETTER LAULA;Ll;0;L;;;;;N;;;2C96;;2C96 -2C98;COPTIC CAPITAL LETTER MI;Lu;0;L;;;;;N;;;;2C99; -2C99;COPTIC SMALL LETTER MI;Ll;0;L;;;;;N;;;2C98;;2C98 -2C9A;COPTIC CAPITAL LETTER NI;Lu;0;L;;;;;N;;;;2C9B; -2C9B;COPTIC SMALL LETTER NI;Ll;0;L;;;;;N;;;2C9A;;2C9A -2C9C;COPTIC CAPITAL LETTER KSI;Lu;0;L;;;;;N;;;;2C9D; -2C9D;COPTIC SMALL LETTER KSI;Ll;0;L;;;;;N;;;2C9C;;2C9C -2C9E;COPTIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;2C9F; -2C9F;COPTIC SMALL LETTER O;Ll;0;L;;;;;N;;;2C9E;;2C9E -2CA0;COPTIC CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;2CA1; -2CA1;COPTIC SMALL LETTER PI;Ll;0;L;;;;;N;;;2CA0;;2CA0 -2CA2;COPTIC CAPITAL LETTER RO;Lu;0;L;;;;;N;;;;2CA3; -2CA3;COPTIC SMALL LETTER RO;Ll;0;L;;;;;N;;;2CA2;;2CA2 -2CA4;COPTIC CAPITAL LETTER SIMA;Lu;0;L;;;;;N;;;;2CA5; -2CA5;COPTIC SMALL LETTER SIMA;Ll;0;L;;;;;N;;;2CA4;;2CA4 -2CA6;COPTIC CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;2CA7; -2CA7;COPTIC SMALL LETTER TAU;Ll;0;L;;;;;N;;;2CA6;;2CA6 -2CA8;COPTIC CAPITAL LETTER UA;Lu;0;L;;;;;N;;;;2CA9; -2CA9;COPTIC SMALL LETTER UA;Ll;0;L;;;;;N;;;2CA8;;2CA8 -2CAA;COPTIC CAPITAL LETTER FI;Lu;0;L;;;;;N;;;;2CAB; -2CAB;COPTIC SMALL LETTER FI;Ll;0;L;;;;;N;;;2CAA;;2CAA -2CAC;COPTIC CAPITAL LETTER KHI;Lu;0;L;;;;;N;;;;2CAD; -2CAD;COPTIC SMALL LETTER KHI;Ll;0;L;;;;;N;;;2CAC;;2CAC -2CAE;COPTIC CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;2CAF; -2CAF;COPTIC SMALL LETTER PSI;Ll;0;L;;;;;N;;;2CAE;;2CAE -2CB0;COPTIC CAPITAL LETTER OOU;Lu;0;L;;;;;N;;;;2CB1; -2CB1;COPTIC SMALL LETTER OOU;Ll;0;L;;;;;N;;;2CB0;;2CB0 -2CB2;COPTIC CAPITAL LETTER DIALECT-P ALEF;Lu;0;L;;;;;N;;;;2CB3; -2CB3;COPTIC SMALL LETTER DIALECT-P ALEF;Ll;0;L;;;;;N;;;2CB2;;2CB2 -2CB4;COPTIC CAPITAL LETTER OLD COPTIC AIN;Lu;0;L;;;;;N;;;;2CB5; -2CB5;COPTIC SMALL LETTER OLD COPTIC AIN;Ll;0;L;;;;;N;;;2CB4;;2CB4 -2CB6;COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE;Lu;0;L;;;;;N;;;;2CB7; -2CB7;COPTIC SMALL LETTER CRYPTOGRAMMIC EIE;Ll;0;L;;;;;N;;;2CB6;;2CB6 -2CB8;COPTIC CAPITAL LETTER DIALECT-P KAPA;Lu;0;L;;;;;N;;;;2CB9; -2CB9;COPTIC SMALL LETTER DIALECT-P KAPA;Ll;0;L;;;;;N;;;2CB8;;2CB8 -2CBA;COPTIC CAPITAL LETTER DIALECT-P NI;Lu;0;L;;;;;N;;;;2CBB; -2CBB;COPTIC SMALL LETTER DIALECT-P NI;Ll;0;L;;;;;N;;;2CBA;;2CBA -2CBC;COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI;Lu;0;L;;;;;N;;;;2CBD; -2CBD;COPTIC SMALL LETTER CRYPTOGRAMMIC NI;Ll;0;L;;;;;N;;;2CBC;;2CBC -2CBE;COPTIC CAPITAL LETTER OLD COPTIC OOU;Lu;0;L;;;;;N;;;;2CBF; -2CBF;COPTIC SMALL LETTER OLD COPTIC OOU;Ll;0;L;;;;;N;;;2CBE;;2CBE -2CC0;COPTIC CAPITAL LETTER SAMPI;Lu;0;L;;;;;N;;;;2CC1; -2CC1;COPTIC SMALL LETTER SAMPI;Ll;0;L;;;;;N;;;2CC0;;2CC0 -2CC2;COPTIC CAPITAL LETTER CROSSED SHEI;Lu;0;L;;;;;N;;;;2CC3; -2CC3;COPTIC SMALL LETTER CROSSED SHEI;Ll;0;L;;;;;N;;;2CC2;;2CC2 -2CC4;COPTIC CAPITAL LETTER OLD COPTIC SHEI;Lu;0;L;;;;;N;;;;2CC5; -2CC5;COPTIC SMALL LETTER OLD COPTIC SHEI;Ll;0;L;;;;;N;;;2CC4;;2CC4 -2CC6;COPTIC CAPITAL LETTER OLD COPTIC ESH;Lu;0;L;;;;;N;;;;2CC7; -2CC7;COPTIC SMALL LETTER OLD COPTIC ESH;Ll;0;L;;;;;N;;;2CC6;;2CC6 -2CC8;COPTIC CAPITAL LETTER AKHMIMIC KHEI;Lu;0;L;;;;;N;;;;2CC9; -2CC9;COPTIC SMALL LETTER AKHMIMIC KHEI;Ll;0;L;;;;;N;;;2CC8;;2CC8 -2CCA;COPTIC CAPITAL LETTER DIALECT-P HORI;Lu;0;L;;;;;N;;;;2CCB; -2CCB;COPTIC SMALL LETTER DIALECT-P HORI;Ll;0;L;;;;;N;;;2CCA;;2CCA -2CCC;COPTIC CAPITAL LETTER OLD COPTIC HORI;Lu;0;L;;;;;N;;;;2CCD; -2CCD;COPTIC SMALL LETTER OLD COPTIC HORI;Ll;0;L;;;;;N;;;2CCC;;2CCC -2CCE;COPTIC CAPITAL LETTER OLD COPTIC HA;Lu;0;L;;;;;N;;;;2CCF; -2CCF;COPTIC SMALL LETTER OLD COPTIC HA;Ll;0;L;;;;;N;;;2CCE;;2CCE -2CD0;COPTIC CAPITAL LETTER L-SHAPED HA;Lu;0;L;;;;;N;;;;2CD1; -2CD1;COPTIC SMALL LETTER L-SHAPED HA;Ll;0;L;;;;;N;;;2CD0;;2CD0 -2CD2;COPTIC CAPITAL LETTER OLD COPTIC HEI;Lu;0;L;;;;;N;;;;2CD3; -2CD3;COPTIC SMALL LETTER OLD COPTIC HEI;Ll;0;L;;;;;N;;;2CD2;;2CD2 -2CD4;COPTIC CAPITAL LETTER OLD COPTIC HAT;Lu;0;L;;;;;N;;;;2CD5; -2CD5;COPTIC SMALL LETTER OLD COPTIC HAT;Ll;0;L;;;;;N;;;2CD4;;2CD4 -2CD6;COPTIC CAPITAL LETTER OLD COPTIC GANGIA;Lu;0;L;;;;;N;;;;2CD7; -2CD7;COPTIC SMALL LETTER OLD COPTIC GANGIA;Ll;0;L;;;;;N;;;2CD6;;2CD6 -2CD8;COPTIC CAPITAL LETTER OLD COPTIC DJA;Lu;0;L;;;;;N;;;;2CD9; -2CD9;COPTIC SMALL LETTER OLD COPTIC DJA;Ll;0;L;;;;;N;;;2CD8;;2CD8 -2CDA;COPTIC CAPITAL LETTER OLD COPTIC SHIMA;Lu;0;L;;;;;N;;;;2CDB; -2CDB;COPTIC SMALL LETTER OLD COPTIC SHIMA;Ll;0;L;;;;;N;;;2CDA;;2CDA -2CDC;COPTIC CAPITAL LETTER OLD NUBIAN SHIMA;Lu;0;L;;;;;N;;;;2CDD; -2CDD;COPTIC SMALL LETTER OLD NUBIAN SHIMA;Ll;0;L;;;;;N;;;2CDC;;2CDC -2CDE;COPTIC CAPITAL LETTER OLD NUBIAN NGI;Lu;0;L;;;;;N;;;;2CDF; -2CDF;COPTIC SMALL LETTER OLD NUBIAN NGI;Ll;0;L;;;;;N;;;2CDE;;2CDE -2CE0;COPTIC CAPITAL LETTER OLD NUBIAN NYI;Lu;0;L;;;;;N;;;;2CE1; -2CE1;COPTIC SMALL LETTER OLD NUBIAN NYI;Ll;0;L;;;;;N;;;2CE0;;2CE0 -2CE2;COPTIC CAPITAL LETTER OLD NUBIAN WAU;Lu;0;L;;;;;N;;;;2CE3; -2CE3;COPTIC SMALL LETTER OLD NUBIAN WAU;Ll;0;L;;;;;N;;;2CE2;;2CE2 -2CE4;COPTIC SYMBOL KAI;Ll;0;L;;;;;N;;;;; -2CE5;COPTIC SYMBOL MI RO;So;0;ON;;;;;N;;;;; -2CE6;COPTIC SYMBOL PI RO;So;0;ON;;;;;N;;;;; -2CE7;COPTIC SYMBOL STAUROS;So;0;ON;;;;;N;;;;; -2CE8;COPTIC SYMBOL TAU RO;So;0;ON;;;;;N;;;;; -2CE9;COPTIC SYMBOL KHI RO;So;0;ON;;;;;N;;;;; -2CEA;COPTIC SYMBOL SHIMA SIMA;So;0;ON;;;;;N;;;;; -2CEB;COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI;Lu;0;L;;;;;N;;;;2CEC; -2CEC;COPTIC SMALL LETTER CRYPTOGRAMMIC SHEI;Ll;0;L;;;;;N;;;2CEB;;2CEB -2CED;COPTIC CAPITAL LETTER CRYPTOGRAMMIC GANGIA;Lu;0;L;;;;;N;;;;2CEE; -2CEE;COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA;Ll;0;L;;;;;N;;;2CED;;2CED -2CEF;COPTIC COMBINING NI ABOVE;Mn;230;NSM;;;;;N;;;;; -2CF0;COPTIC COMBINING SPIRITUS ASPER;Mn;230;NSM;;;;;N;;;;; -2CF1;COPTIC COMBINING SPIRITUS LENIS;Mn;230;NSM;;;;;N;;;;; -2CF9;COPTIC OLD NUBIAN FULL STOP;Po;0;ON;;;;;N;;;;; -2CFA;COPTIC OLD NUBIAN DIRECT QUESTION MARK;Po;0;ON;;;;;N;;;;; -2CFB;COPTIC OLD NUBIAN INDIRECT QUESTION MARK;Po;0;ON;;;;;N;;;;; -2CFC;COPTIC OLD NUBIAN VERSE DIVIDER;Po;0;ON;;;;;N;;;;; -2CFD;COPTIC FRACTION ONE HALF;No;0;ON;;;;1/2;N;;;;; -2CFE;COPTIC FULL STOP;Po;0;ON;;;;;N;;;;; -2CFF;COPTIC MORPHOLOGICAL DIVIDER;Po;0;ON;;;;;N;;;;; -2D00;GEORGIAN SMALL LETTER AN;Ll;0;L;;;;;N;;;10A0;;10A0 -2D01;GEORGIAN SMALL LETTER BAN;Ll;0;L;;;;;N;;;10A1;;10A1 -2D02;GEORGIAN SMALL LETTER GAN;Ll;0;L;;;;;N;;;10A2;;10A2 -2D03;GEORGIAN SMALL LETTER DON;Ll;0;L;;;;;N;;;10A3;;10A3 -2D04;GEORGIAN SMALL LETTER EN;Ll;0;L;;;;;N;;;10A4;;10A4 -2D05;GEORGIAN SMALL LETTER VIN;Ll;0;L;;;;;N;;;10A5;;10A5 -2D06;GEORGIAN SMALL LETTER ZEN;Ll;0;L;;;;;N;;;10A6;;10A6 -2D07;GEORGIAN SMALL LETTER TAN;Ll;0;L;;;;;N;;;10A7;;10A7 -2D08;GEORGIAN SMALL LETTER IN;Ll;0;L;;;;;N;;;10A8;;10A8 -2D09;GEORGIAN SMALL LETTER KAN;Ll;0;L;;;;;N;;;10A9;;10A9 -2D0A;GEORGIAN SMALL LETTER LAS;Ll;0;L;;;;;N;;;10AA;;10AA -2D0B;GEORGIAN SMALL LETTER MAN;Ll;0;L;;;;;N;;;10AB;;10AB -2D0C;GEORGIAN SMALL LETTER NAR;Ll;0;L;;;;;N;;;10AC;;10AC -2D0D;GEORGIAN SMALL LETTER ON;Ll;0;L;;;;;N;;;10AD;;10AD -2D0E;GEORGIAN SMALL LETTER PAR;Ll;0;L;;;;;N;;;10AE;;10AE -2D0F;GEORGIAN SMALL LETTER ZHAR;Ll;0;L;;;;;N;;;10AF;;10AF -2D10;GEORGIAN SMALL LETTER RAE;Ll;0;L;;;;;N;;;10B0;;10B0 -2D11;GEORGIAN SMALL LETTER SAN;Ll;0;L;;;;;N;;;10B1;;10B1 -2D12;GEORGIAN SMALL LETTER TAR;Ll;0;L;;;;;N;;;10B2;;10B2 -2D13;GEORGIAN SMALL LETTER UN;Ll;0;L;;;;;N;;;10B3;;10B3 -2D14;GEORGIAN SMALL LETTER PHAR;Ll;0;L;;;;;N;;;10B4;;10B4 -2D15;GEORGIAN SMALL LETTER KHAR;Ll;0;L;;;;;N;;;10B5;;10B5 -2D16;GEORGIAN SMALL LETTER GHAN;Ll;0;L;;;;;N;;;10B6;;10B6 -2D17;GEORGIAN SMALL LETTER QAR;Ll;0;L;;;;;N;;;10B7;;10B7 -2D18;GEORGIAN SMALL LETTER SHIN;Ll;0;L;;;;;N;;;10B8;;10B8 -2D19;GEORGIAN SMALL LETTER CHIN;Ll;0;L;;;;;N;;;10B9;;10B9 -2D1A;GEORGIAN SMALL LETTER CAN;Ll;0;L;;;;;N;;;10BA;;10BA -2D1B;GEORGIAN SMALL LETTER JIL;Ll;0;L;;;;;N;;;10BB;;10BB -2D1C;GEORGIAN SMALL LETTER CIL;Ll;0;L;;;;;N;;;10BC;;10BC -2D1D;GEORGIAN SMALL LETTER CHAR;Ll;0;L;;;;;N;;;10BD;;10BD -2D1E;GEORGIAN SMALL LETTER XAN;Ll;0;L;;;;;N;;;10BE;;10BE -2D1F;GEORGIAN SMALL LETTER JHAN;Ll;0;L;;;;;N;;;10BF;;10BF -2D20;GEORGIAN SMALL LETTER HAE;Ll;0;L;;;;;N;;;10C0;;10C0 -2D21;GEORGIAN SMALL LETTER HE;Ll;0;L;;;;;N;;;10C1;;10C1 -2D22;GEORGIAN SMALL LETTER HIE;Ll;0;L;;;;;N;;;10C2;;10C2 -2D23;GEORGIAN SMALL LETTER WE;Ll;0;L;;;;;N;;;10C3;;10C3 -2D24;GEORGIAN SMALL LETTER HAR;Ll;0;L;;;;;N;;;10C4;;10C4 -2D25;GEORGIAN SMALL LETTER HOE;Ll;0;L;;;;;N;;;10C5;;10C5 -2D30;TIFINAGH LETTER YA;Lo;0;L;;;;;N;;;;; -2D31;TIFINAGH LETTER YAB;Lo;0;L;;;;;N;;;;; -2D32;TIFINAGH LETTER YABH;Lo;0;L;;;;;N;;;;; -2D33;TIFINAGH LETTER YAG;Lo;0;L;;;;;N;;;;; -2D34;TIFINAGH LETTER YAGHH;Lo;0;L;;;;;N;;;;; -2D35;TIFINAGH LETTER BERBER ACADEMY YAJ;Lo;0;L;;;;;N;;;;; -2D36;TIFINAGH LETTER YAJ;Lo;0;L;;;;;N;;;;; -2D37;TIFINAGH LETTER YAD;Lo;0;L;;;;;N;;;;; -2D38;TIFINAGH LETTER YADH;Lo;0;L;;;;;N;;;;; -2D39;TIFINAGH LETTER YADD;Lo;0;L;;;;;N;;;;; -2D3A;TIFINAGH LETTER YADDH;Lo;0;L;;;;;N;;;;; -2D3B;TIFINAGH LETTER YEY;Lo;0;L;;;;;N;;;;; -2D3C;TIFINAGH LETTER YAF;Lo;0;L;;;;;N;;;;; -2D3D;TIFINAGH LETTER YAK;Lo;0;L;;;;;N;;;;; -2D3E;TIFINAGH LETTER TUAREG YAK;Lo;0;L;;;;;N;;;;; -2D3F;TIFINAGH LETTER YAKHH;Lo;0;L;;;;;N;;;;; -2D40;TIFINAGH LETTER YAH;Lo;0;L;;;;;N;;;;; -2D41;TIFINAGH LETTER BERBER ACADEMY YAH;Lo;0;L;;;;;N;;;;; -2D42;TIFINAGH LETTER TUAREG YAH;Lo;0;L;;;;;N;;;;; -2D43;TIFINAGH LETTER YAHH;Lo;0;L;;;;;N;;;;; -2D44;TIFINAGH LETTER YAA;Lo;0;L;;;;;N;;;;; -2D45;TIFINAGH LETTER YAKH;Lo;0;L;;;;;N;;;;; -2D46;TIFINAGH LETTER TUAREG YAKH;Lo;0;L;;;;;N;;;;; -2D47;TIFINAGH LETTER YAQ;Lo;0;L;;;;;N;;;;; -2D48;TIFINAGH LETTER TUAREG YAQ;Lo;0;L;;;;;N;;;;; -2D49;TIFINAGH LETTER YI;Lo;0;L;;;;;N;;;;; -2D4A;TIFINAGH LETTER YAZH;Lo;0;L;;;;;N;;;;; -2D4B;TIFINAGH LETTER AHAGGAR YAZH;Lo;0;L;;;;;N;;;;; -2D4C;TIFINAGH LETTER TUAREG YAZH;Lo;0;L;;;;;N;;;;; -2D4D;TIFINAGH LETTER YAL;Lo;0;L;;;;;N;;;;; -2D4E;TIFINAGH LETTER YAM;Lo;0;L;;;;;N;;;;; -2D4F;TIFINAGH LETTER YAN;Lo;0;L;;;;;N;;;;; -2D50;TIFINAGH LETTER TUAREG YAGN;Lo;0;L;;;;;N;;;;; -2D51;TIFINAGH LETTER TUAREG YANG;Lo;0;L;;;;;N;;;;; -2D52;TIFINAGH LETTER YAP;Lo;0;L;;;;;N;;;;; -2D53;TIFINAGH LETTER YU;Lo;0;L;;;;;N;;;;; -2D54;TIFINAGH LETTER YAR;Lo;0;L;;;;;N;;;;; -2D55;TIFINAGH LETTER YARR;Lo;0;L;;;;;N;;;;; -2D56;TIFINAGH LETTER YAGH;Lo;0;L;;;;;N;;;;; -2D57;TIFINAGH LETTER TUAREG YAGH;Lo;0;L;;;;;N;;;;; -2D58;TIFINAGH LETTER AYER YAGH;Lo;0;L;;;;;N;;;;; -2D59;TIFINAGH LETTER YAS;Lo;0;L;;;;;N;;;;; -2D5A;TIFINAGH LETTER YASS;Lo;0;L;;;;;N;;;;; -2D5B;TIFINAGH LETTER YASH;Lo;0;L;;;;;N;;;;; -2D5C;TIFINAGH LETTER YAT;Lo;0;L;;;;;N;;;;; -2D5D;TIFINAGH LETTER YATH;Lo;0;L;;;;;N;;;;; -2D5E;TIFINAGH LETTER YACH;Lo;0;L;;;;;N;;;;; -2D5F;TIFINAGH LETTER YATT;Lo;0;L;;;;;N;;;;; -2D60;TIFINAGH LETTER YAV;Lo;0;L;;;;;N;;;;; -2D61;TIFINAGH LETTER YAW;Lo;0;L;;;;;N;;;;; -2D62;TIFINAGH LETTER YAY;Lo;0;L;;;;;N;;;;; -2D63;TIFINAGH LETTER YAZ;Lo;0;L;;;;;N;;;;; -2D64;TIFINAGH LETTER TAWELLEMET YAZ;Lo;0;L;;;;;N;;;;; -2D65;TIFINAGH LETTER YAZZ;Lo;0;L;;;;;N;;;;; -2D6F;TIFINAGH MODIFIER LETTER LABIALIZATION MARK;Lm;0;L; 2D61;;;;N;;;;; -2D80;ETHIOPIC SYLLABLE LOA;Lo;0;L;;;;;N;;;;; -2D81;ETHIOPIC SYLLABLE MOA;Lo;0;L;;;;;N;;;;; -2D82;ETHIOPIC SYLLABLE ROA;Lo;0;L;;;;;N;;;;; -2D83;ETHIOPIC SYLLABLE SOA;Lo;0;L;;;;;N;;;;; -2D84;ETHIOPIC SYLLABLE SHOA;Lo;0;L;;;;;N;;;;; -2D85;ETHIOPIC SYLLABLE BOA;Lo;0;L;;;;;N;;;;; -2D86;ETHIOPIC SYLLABLE TOA;Lo;0;L;;;;;N;;;;; -2D87;ETHIOPIC SYLLABLE COA;Lo;0;L;;;;;N;;;;; -2D88;ETHIOPIC SYLLABLE NOA;Lo;0;L;;;;;N;;;;; -2D89;ETHIOPIC SYLLABLE NYOA;Lo;0;L;;;;;N;;;;; -2D8A;ETHIOPIC SYLLABLE GLOTTAL OA;Lo;0;L;;;;;N;;;;; -2D8B;ETHIOPIC SYLLABLE ZOA;Lo;0;L;;;;;N;;;;; -2D8C;ETHIOPIC SYLLABLE DOA;Lo;0;L;;;;;N;;;;; -2D8D;ETHIOPIC SYLLABLE DDOA;Lo;0;L;;;;;N;;;;; -2D8E;ETHIOPIC SYLLABLE JOA;Lo;0;L;;;;;N;;;;; -2D8F;ETHIOPIC SYLLABLE THOA;Lo;0;L;;;;;N;;;;; -2D90;ETHIOPIC SYLLABLE CHOA;Lo;0;L;;;;;N;;;;; -2D91;ETHIOPIC SYLLABLE PHOA;Lo;0;L;;;;;N;;;;; -2D92;ETHIOPIC SYLLABLE POA;Lo;0;L;;;;;N;;;;; -2D93;ETHIOPIC SYLLABLE GGWA;Lo;0;L;;;;;N;;;;; -2D94;ETHIOPIC SYLLABLE GGWI;Lo;0;L;;;;;N;;;;; -2D95;ETHIOPIC SYLLABLE GGWEE;Lo;0;L;;;;;N;;;;; -2D96;ETHIOPIC SYLLABLE GGWE;Lo;0;L;;;;;N;;;;; -2DA0;ETHIOPIC SYLLABLE SSA;Lo;0;L;;;;;N;;;;; -2DA1;ETHIOPIC SYLLABLE SSU;Lo;0;L;;;;;N;;;;; -2DA2;ETHIOPIC SYLLABLE SSI;Lo;0;L;;;;;N;;;;; -2DA3;ETHIOPIC SYLLABLE SSAA;Lo;0;L;;;;;N;;;;; -2DA4;ETHIOPIC SYLLABLE SSEE;Lo;0;L;;;;;N;;;;; -2DA5;ETHIOPIC SYLLABLE SSE;Lo;0;L;;;;;N;;;;; -2DA6;ETHIOPIC SYLLABLE SSO;Lo;0;L;;;;;N;;;;; -2DA8;ETHIOPIC SYLLABLE CCA;Lo;0;L;;;;;N;;;;; -2DA9;ETHIOPIC SYLLABLE CCU;Lo;0;L;;;;;N;;;;; -2DAA;ETHIOPIC SYLLABLE CCI;Lo;0;L;;;;;N;;;;; -2DAB;ETHIOPIC SYLLABLE CCAA;Lo;0;L;;;;;N;;;;; -2DAC;ETHIOPIC SYLLABLE CCEE;Lo;0;L;;;;;N;;;;; -2DAD;ETHIOPIC SYLLABLE CCE;Lo;0;L;;;;;N;;;;; -2DAE;ETHIOPIC SYLLABLE CCO;Lo;0;L;;;;;N;;;;; -2DB0;ETHIOPIC SYLLABLE ZZA;Lo;0;L;;;;;N;;;;; -2DB1;ETHIOPIC SYLLABLE ZZU;Lo;0;L;;;;;N;;;;; -2DB2;ETHIOPIC SYLLABLE ZZI;Lo;0;L;;;;;N;;;;; -2DB3;ETHIOPIC SYLLABLE ZZAA;Lo;0;L;;;;;N;;;;; -2DB4;ETHIOPIC SYLLABLE ZZEE;Lo;0;L;;;;;N;;;;; -2DB5;ETHIOPIC SYLLABLE ZZE;Lo;0;L;;;;;N;;;;; -2DB6;ETHIOPIC SYLLABLE ZZO;Lo;0;L;;;;;N;;;;; -2DB8;ETHIOPIC SYLLABLE CCHA;Lo;0;L;;;;;N;;;;; -2DB9;ETHIOPIC SYLLABLE CCHU;Lo;0;L;;;;;N;;;;; -2DBA;ETHIOPIC SYLLABLE CCHI;Lo;0;L;;;;;N;;;;; -2DBB;ETHIOPIC SYLLABLE CCHAA;Lo;0;L;;;;;N;;;;; -2DBC;ETHIOPIC SYLLABLE CCHEE;Lo;0;L;;;;;N;;;;; -2DBD;ETHIOPIC SYLLABLE CCHE;Lo;0;L;;;;;N;;;;; -2DBE;ETHIOPIC SYLLABLE CCHO;Lo;0;L;;;;;N;;;;; -2DC0;ETHIOPIC SYLLABLE QYA;Lo;0;L;;;;;N;;;;; -2DC1;ETHIOPIC SYLLABLE QYU;Lo;0;L;;;;;N;;;;; -2DC2;ETHIOPIC SYLLABLE QYI;Lo;0;L;;;;;N;;;;; -2DC3;ETHIOPIC SYLLABLE QYAA;Lo;0;L;;;;;N;;;;; -2DC4;ETHIOPIC SYLLABLE QYEE;Lo;0;L;;;;;N;;;;; -2DC5;ETHIOPIC SYLLABLE QYE;Lo;0;L;;;;;N;;;;; -2DC6;ETHIOPIC SYLLABLE QYO;Lo;0;L;;;;;N;;;;; -2DC8;ETHIOPIC SYLLABLE KYA;Lo;0;L;;;;;N;;;;; -2DC9;ETHIOPIC SYLLABLE KYU;Lo;0;L;;;;;N;;;;; -2DCA;ETHIOPIC SYLLABLE KYI;Lo;0;L;;;;;N;;;;; -2DCB;ETHIOPIC SYLLABLE KYAA;Lo;0;L;;;;;N;;;;; -2DCC;ETHIOPIC SYLLABLE KYEE;Lo;0;L;;;;;N;;;;; -2DCD;ETHIOPIC SYLLABLE KYE;Lo;0;L;;;;;N;;;;; -2DCE;ETHIOPIC SYLLABLE KYO;Lo;0;L;;;;;N;;;;; -2DD0;ETHIOPIC SYLLABLE XYA;Lo;0;L;;;;;N;;;;; -2DD1;ETHIOPIC SYLLABLE XYU;Lo;0;L;;;;;N;;;;; -2DD2;ETHIOPIC SYLLABLE XYI;Lo;0;L;;;;;N;;;;; -2DD3;ETHIOPIC SYLLABLE XYAA;Lo;0;L;;;;;N;;;;; -2DD4;ETHIOPIC SYLLABLE XYEE;Lo;0;L;;;;;N;;;;; -2DD5;ETHIOPIC SYLLABLE XYE;Lo;0;L;;;;;N;;;;; -2DD6;ETHIOPIC SYLLABLE XYO;Lo;0;L;;;;;N;;;;; -2DD8;ETHIOPIC SYLLABLE GYA;Lo;0;L;;;;;N;;;;; -2DD9;ETHIOPIC SYLLABLE GYU;Lo;0;L;;;;;N;;;;; -2DDA;ETHIOPIC SYLLABLE GYI;Lo;0;L;;;;;N;;;;; -2DDB;ETHIOPIC SYLLABLE GYAA;Lo;0;L;;;;;N;;;;; -2DDC;ETHIOPIC SYLLABLE GYEE;Lo;0;L;;;;;N;;;;; -2DDD;ETHIOPIC SYLLABLE GYE;Lo;0;L;;;;;N;;;;; -2DDE;ETHIOPIC SYLLABLE GYO;Lo;0;L;;;;;N;;;;; -2DE0;COMBINING CYRILLIC LETTER BE;Mn;230;NSM;;;;;N;;;;; -2DE1;COMBINING CYRILLIC LETTER VE;Mn;230;NSM;;;;;N;;;;; -2DE2;COMBINING CYRILLIC LETTER GHE;Mn;230;NSM;;;;;N;;;;; -2DE3;COMBINING CYRILLIC LETTER DE;Mn;230;NSM;;;;;N;;;;; -2DE4;COMBINING CYRILLIC LETTER ZHE;Mn;230;NSM;;;;;N;;;;; -2DE5;COMBINING CYRILLIC LETTER ZE;Mn;230;NSM;;;;;N;;;;; -2DE6;COMBINING CYRILLIC LETTER KA;Mn;230;NSM;;;;;N;;;;; -2DE7;COMBINING CYRILLIC LETTER EL;Mn;230;NSM;;;;;N;;;;; -2DE8;COMBINING CYRILLIC LETTER EM;Mn;230;NSM;;;;;N;;;;; -2DE9;COMBINING CYRILLIC LETTER EN;Mn;230;NSM;;;;;N;;;;; -2DEA;COMBINING CYRILLIC LETTER O;Mn;230;NSM;;;;;N;;;;; -2DEB;COMBINING CYRILLIC LETTER PE;Mn;230;NSM;;;;;N;;;;; -2DEC;COMBINING CYRILLIC LETTER ER;Mn;230;NSM;;;;;N;;;;; -2DED;COMBINING CYRILLIC LETTER ES;Mn;230;NSM;;;;;N;;;;; -2DEE;COMBINING CYRILLIC LETTER TE;Mn;230;NSM;;;;;N;;;;; -2DEF;COMBINING CYRILLIC LETTER HA;Mn;230;NSM;;;;;N;;;;; -2DF0;COMBINING CYRILLIC LETTER TSE;Mn;230;NSM;;;;;N;;;;; -2DF1;COMBINING CYRILLIC LETTER CHE;Mn;230;NSM;;;;;N;;;;; -2DF2;COMBINING CYRILLIC LETTER SHA;Mn;230;NSM;;;;;N;;;;; -2DF3;COMBINING CYRILLIC LETTER SHCHA;Mn;230;NSM;;;;;N;;;;; -2DF4;COMBINING CYRILLIC LETTER FITA;Mn;230;NSM;;;;;N;;;;; -2DF5;COMBINING CYRILLIC LETTER ES-TE;Mn;230;NSM;;;;;N;;;;; -2DF6;COMBINING CYRILLIC LETTER A;Mn;230;NSM;;;;;N;;;;; -2DF7;COMBINING CYRILLIC LETTER IE;Mn;230;NSM;;;;;N;;;;; -2DF8;COMBINING CYRILLIC LETTER DJERV;Mn;230;NSM;;;;;N;;;;; -2DF9;COMBINING CYRILLIC LETTER MONOGRAPH UK;Mn;230;NSM;;;;;N;;;;; -2DFA;COMBINING CYRILLIC LETTER YAT;Mn;230;NSM;;;;;N;;;;; -2DFB;COMBINING CYRILLIC LETTER YU;Mn;230;NSM;;;;;N;;;;; -2DFC;COMBINING CYRILLIC LETTER IOTIFIED A;Mn;230;NSM;;;;;N;;;;; -2DFD;COMBINING CYRILLIC LETTER LITTLE YUS;Mn;230;NSM;;;;;N;;;;; -2DFE;COMBINING CYRILLIC LETTER BIG YUS;Mn;230;NSM;;;;;N;;;;; -2DFF;COMBINING CYRILLIC LETTER IOTIFIED BIG YUS;Mn;230;NSM;;;;;N;;;;; -2E00;RIGHT ANGLE SUBSTITUTION MARKER;Po;0;ON;;;;;N;;;;; -2E01;RIGHT ANGLE DOTTED SUBSTITUTION MARKER;Po;0;ON;;;;;N;;;;; -2E02;LEFT SUBSTITUTION BRACKET;Pi;0;ON;;;;;Y;;;;; -2E03;RIGHT SUBSTITUTION BRACKET;Pf;0;ON;;;;;Y;;;;; -2E04;LEFT DOTTED SUBSTITUTION BRACKET;Pi;0;ON;;;;;Y;;;;; -2E05;RIGHT DOTTED SUBSTITUTION BRACKET;Pf;0;ON;;;;;Y;;;;; -2E06;RAISED INTERPOLATION MARKER;Po;0;ON;;;;;N;;;;; -2E07;RAISED DOTTED INTERPOLATION MARKER;Po;0;ON;;;;;N;;;;; -2E08;DOTTED TRANSPOSITION MARKER;Po;0;ON;;;;;N;;;;; -2E09;LEFT TRANSPOSITION BRACKET;Pi;0;ON;;;;;Y;;;;; -2E0A;RIGHT TRANSPOSITION BRACKET;Pf;0;ON;;;;;Y;;;;; -2E0B;RAISED SQUARE;Po;0;ON;;;;;N;;;;; -2E0C;LEFT RAISED OMISSION BRACKET;Pi;0;ON;;;;;Y;;;;; -2E0D;RIGHT RAISED OMISSION BRACKET;Pf;0;ON;;;;;Y;;;;; -2E0E;EDITORIAL CORONIS;Po;0;ON;;;;;N;;;;; -2E0F;PARAGRAPHOS;Po;0;ON;;;;;N;;;;; -2E10;FORKED PARAGRAPHOS;Po;0;ON;;;;;N;;;;; -2E11;REVERSED FORKED PARAGRAPHOS;Po;0;ON;;;;;N;;;;; -2E12;HYPODIASTOLE;Po;0;ON;;;;;N;;;;; -2E13;DOTTED OBELOS;Po;0;ON;;;;;N;;;;; -2E14;DOWNWARDS ANCORA;Po;0;ON;;;;;N;;;;; -2E15;UPWARDS ANCORA;Po;0;ON;;;;;N;;;;; -2E16;DOTTED RIGHT-POINTING ANGLE;Po;0;ON;;;;;N;;;;; -2E17;DOUBLE OBLIQUE HYPHEN;Pd;0;ON;;;;;N;;;;; -2E18;INVERTED INTERROBANG;Po;0;ON;;;;;N;;;;; -2E19;PALM BRANCH;Po;0;ON;;;;;N;;;;; -2E1A;HYPHEN WITH DIAERESIS;Pd;0;ON;;;;;N;;;;; -2E1B;TILDE WITH RING ABOVE;Po;0;ON;;;;;N;;;;; -2E1C;LEFT LOW PARAPHRASE BRACKET;Pi;0;ON;;;;;Y;;;;; -2E1D;RIGHT LOW PARAPHRASE BRACKET;Pf;0;ON;;;;;Y;;;;; -2E1E;TILDE WITH DOT ABOVE;Po;0;ON;;;;;N;;;;; -2E1F;TILDE WITH DOT BELOW;Po;0;ON;;;;;N;;;;; -2E20;LEFT VERTICAL BAR WITH QUILL;Pi;0;ON;;;;;Y;;;;; -2E21;RIGHT VERTICAL BAR WITH QUILL;Pf;0;ON;;;;;Y;;;;; -2E22;TOP LEFT HALF BRACKET;Ps;0;ON;;;;;Y;;;;; -2E23;TOP RIGHT HALF BRACKET;Pe;0;ON;;;;;Y;;;;; -2E24;BOTTOM LEFT HALF BRACKET;Ps;0;ON;;;;;Y;;;;; -2E25;BOTTOM RIGHT HALF BRACKET;Pe;0;ON;;;;;Y;;;;; -2E26;LEFT SIDEWAYS U BRACKET;Ps;0;ON;;;;;Y;;;;; -2E27;RIGHT SIDEWAYS U BRACKET;Pe;0;ON;;;;;Y;;;;; -2E28;LEFT DOUBLE PARENTHESIS;Ps;0;ON;;;;;Y;;;;; -2E29;RIGHT DOUBLE PARENTHESIS;Pe;0;ON;;;;;Y;;;;; -2E2A;TWO DOTS OVER ONE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; -2E2B;ONE DOT OVER TWO DOTS PUNCTUATION;Po;0;ON;;;;;N;;;;; -2E2C;SQUARED FOUR DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; -2E2D;FIVE DOT MARK;Po;0;ON;;;;;N;;;;; -2E2E;REVERSED QUESTION MARK;Po;0;ON;;;;;N;;;;; -2E2F;VERTICAL TILDE;Lm;0;ON;;;;;N;;;;; -2E30;RING POINT;Po;0;ON;;;;;N;;;;; -2E31;WORD SEPARATOR MIDDLE DOT;Po;0;ON;;;;;N;;;;; -2E80;CJK RADICAL REPEAT;So;0;ON;;;;;N;;;;; -2E81;CJK RADICAL CLIFF;So;0;ON;;;;;N;;;;; -2E82;CJK RADICAL SECOND ONE;So;0;ON;;;;;N;;;;; -2E83;CJK RADICAL SECOND TWO;So;0;ON;;;;;N;;;;; -2E84;CJK RADICAL SECOND THREE;So;0;ON;;;;;N;;;;; -2E85;CJK RADICAL PERSON;So;0;ON;;;;;N;;;;; -2E86;CJK RADICAL BOX;So;0;ON;;;;;N;;;;; -2E87;CJK RADICAL TABLE;So;0;ON;;;;;N;;;;; -2E88;CJK RADICAL KNIFE ONE;So;0;ON;;;;;N;;;;; -2E89;CJK RADICAL KNIFE TWO;So;0;ON;;;;;N;;;;; -2E8A;CJK RADICAL DIVINATION;So;0;ON;;;;;N;;;;; -2E8B;CJK RADICAL SEAL;So;0;ON;;;;;N;;;;; -2E8C;CJK RADICAL SMALL ONE;So;0;ON;;;;;N;;;;; -2E8D;CJK RADICAL SMALL TWO;So;0;ON;;;;;N;;;;; -2E8E;CJK RADICAL LAME ONE;So;0;ON;;;;;N;;;;; -2E8F;CJK RADICAL LAME TWO;So;0;ON;;;;;N;;;;; -2E90;CJK RADICAL LAME THREE;So;0;ON;;;;;N;;;;; -2E91;CJK RADICAL LAME FOUR;So;0;ON;;;;;N;;;;; -2E92;CJK RADICAL SNAKE;So;0;ON;;;;;N;;;;; -2E93;CJK RADICAL THREAD;So;0;ON;;;;;N;;;;; -2E94;CJK RADICAL SNOUT ONE;So;0;ON;;;;;N;;;;; -2E95;CJK RADICAL SNOUT TWO;So;0;ON;;;;;N;;;;; -2E96;CJK RADICAL HEART ONE;So;0;ON;;;;;N;;;;; -2E97;CJK RADICAL HEART TWO;So;0;ON;;;;;N;;;;; -2E98;CJK RADICAL HAND;So;0;ON;;;;;N;;;;; -2E99;CJK RADICAL RAP;So;0;ON;;;;;N;;;;; -2E9B;CJK RADICAL CHOKE;So;0;ON;;;;;N;;;;; -2E9C;CJK RADICAL SUN;So;0;ON;;;;;N;;;;; -2E9D;CJK RADICAL MOON;So;0;ON;;;;;N;;;;; -2E9E;CJK RADICAL DEATH;So;0;ON;;;;;N;;;;; -2E9F;CJK RADICAL MOTHER;So;0;ON; 6BCD;;;;N;;;;; -2EA0;CJK RADICAL CIVILIAN;So;0;ON;;;;;N;;;;; -2EA1;CJK RADICAL WATER ONE;So;0;ON;;;;;N;;;;; -2EA2;CJK RADICAL WATER TWO;So;0;ON;;;;;N;;;;; -2EA3;CJK RADICAL FIRE;So;0;ON;;;;;N;;;;; -2EA4;CJK RADICAL PAW ONE;So;0;ON;;;;;N;;;;; -2EA5;CJK RADICAL PAW TWO;So;0;ON;;;;;N;;;;; -2EA6;CJK RADICAL SIMPLIFIED HALF TREE TRUNK;So;0;ON;;;;;N;;;;; -2EA7;CJK RADICAL COW;So;0;ON;;;;;N;;;;; -2EA8;CJK RADICAL DOG;So;0;ON;;;;;N;;;;; -2EA9;CJK RADICAL JADE;So;0;ON;;;;;N;;;;; -2EAA;CJK RADICAL BOLT OF CLOTH;So;0;ON;;;;;N;;;;; -2EAB;CJK RADICAL EYE;So;0;ON;;;;;N;;;;; -2EAC;CJK RADICAL SPIRIT ONE;So;0;ON;;;;;N;;;;; -2EAD;CJK RADICAL SPIRIT TWO;So;0;ON;;;;;N;;;;; -2EAE;CJK RADICAL BAMBOO;So;0;ON;;;;;N;;;;; -2EAF;CJK RADICAL SILK;So;0;ON;;;;;N;;;;; -2EB0;CJK RADICAL C-SIMPLIFIED SILK;So;0;ON;;;;;N;;;;; -2EB1;CJK RADICAL NET ONE;So;0;ON;;;;;N;;;;; -2EB2;CJK RADICAL NET TWO;So;0;ON;;;;;N;;;;; -2EB3;CJK RADICAL NET THREE;So;0;ON;;;;;N;;;;; -2EB4;CJK RADICAL NET FOUR;So;0;ON;;;;;N;;;;; -2EB5;CJK RADICAL MESH;So;0;ON;;;;;N;;;;; -2EB6;CJK RADICAL SHEEP;So;0;ON;;;;;N;;;;; -2EB7;CJK RADICAL RAM;So;0;ON;;;;;N;;;;; -2EB8;CJK RADICAL EWE;So;0;ON;;;;;N;;;;; -2EB9;CJK RADICAL OLD;So;0;ON;;;;;N;;;;; -2EBA;CJK RADICAL BRUSH ONE;So;0;ON;;;;;N;;;;; -2EBB;CJK RADICAL BRUSH TWO;So;0;ON;;;;;N;;;;; -2EBC;CJK RADICAL MEAT;So;0;ON;;;;;N;;;;; -2EBD;CJK RADICAL MORTAR;So;0;ON;;;;;N;;;;; -2EBE;CJK RADICAL GRASS ONE;So;0;ON;;;;;N;;;;; -2EBF;CJK RADICAL GRASS TWO;So;0;ON;;;;;N;;;;; -2EC0;CJK RADICAL GRASS THREE;So;0;ON;;;;;N;;;;; -2EC1;CJK RADICAL TIGER;So;0;ON;;;;;N;;;;; -2EC2;CJK RADICAL CLOTHES;So;0;ON;;;;;N;;;;; -2EC3;CJK RADICAL WEST ONE;So;0;ON;;;;;N;;;;; -2EC4;CJK RADICAL WEST TWO;So;0;ON;;;;;N;;;;; -2EC5;CJK RADICAL C-SIMPLIFIED SEE;So;0;ON;;;;;N;;;;; -2EC6;CJK RADICAL SIMPLIFIED HORN;So;0;ON;;;;;N;;;;; -2EC7;CJK RADICAL HORN;So;0;ON;;;;;N;;;;; -2EC8;CJK RADICAL C-SIMPLIFIED SPEECH;So;0;ON;;;;;N;;;;; -2EC9;CJK RADICAL C-SIMPLIFIED SHELL;So;0;ON;;;;;N;;;;; -2ECA;CJK RADICAL FOOT;So;0;ON;;;;;N;;;;; -2ECB;CJK RADICAL C-SIMPLIFIED CART;So;0;ON;;;;;N;;;;; -2ECC;CJK RADICAL SIMPLIFIED WALK;So;0;ON;;;;;N;;;;; -2ECD;CJK RADICAL WALK ONE;So;0;ON;;;;;N;;;;; -2ECE;CJK RADICAL WALK TWO;So;0;ON;;;;;N;;;;; -2ECF;CJK RADICAL CITY;So;0;ON;;;;;N;;;;; -2ED0;CJK RADICAL C-SIMPLIFIED GOLD;So;0;ON;;;;;N;;;;; -2ED1;CJK RADICAL LONG ONE;So;0;ON;;;;;N;;;;; -2ED2;CJK RADICAL LONG TWO;So;0;ON;;;;;N;;;;; -2ED3;CJK RADICAL C-SIMPLIFIED LONG;So;0;ON;;;;;N;;;;; -2ED4;CJK RADICAL C-SIMPLIFIED GATE;So;0;ON;;;;;N;;;;; -2ED5;CJK RADICAL MOUND ONE;So;0;ON;;;;;N;;;;; -2ED6;CJK RADICAL MOUND TWO;So;0;ON;;;;;N;;;;; -2ED7;CJK RADICAL RAIN;So;0;ON;;;;;N;;;;; -2ED8;CJK RADICAL BLUE;So;0;ON;;;;;N;;;;; -2ED9;CJK RADICAL C-SIMPLIFIED TANNED LEATHER;So;0;ON;;;;;N;;;;; -2EDA;CJK RADICAL C-SIMPLIFIED LEAF;So;0;ON;;;;;N;;;;; -2EDB;CJK RADICAL C-SIMPLIFIED WIND;So;0;ON;;;;;N;;;;; -2EDC;CJK RADICAL C-SIMPLIFIED FLY;So;0;ON;;;;;N;;;;; -2EDD;CJK RADICAL EAT ONE;So;0;ON;;;;;N;;;;; -2EDE;CJK RADICAL EAT TWO;So;0;ON;;;;;N;;;;; -2EDF;CJK RADICAL EAT THREE;So;0;ON;;;;;N;;;;; -2EE0;CJK RADICAL C-SIMPLIFIED EAT;So;0;ON;;;;;N;;;;; -2EE1;CJK RADICAL HEAD;So;0;ON;;;;;N;;;;; -2EE2;CJK RADICAL C-SIMPLIFIED HORSE;So;0;ON;;;;;N;;;;; -2EE3;CJK RADICAL BONE;So;0;ON;;;;;N;;;;; -2EE4;CJK RADICAL GHOST;So;0;ON;;;;;N;;;;; -2EE5;CJK RADICAL C-SIMPLIFIED FISH;So;0;ON;;;;;N;;;;; -2EE6;CJK RADICAL C-SIMPLIFIED BIRD;So;0;ON;;;;;N;;;;; -2EE7;CJK RADICAL C-SIMPLIFIED SALT;So;0;ON;;;;;N;;;;; -2EE8;CJK RADICAL SIMPLIFIED WHEAT;So;0;ON;;;;;N;;;;; -2EE9;CJK RADICAL SIMPLIFIED YELLOW;So;0;ON;;;;;N;;;;; -2EEA;CJK RADICAL C-SIMPLIFIED FROG;So;0;ON;;;;;N;;;;; -2EEB;CJK RADICAL J-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;; -2EEC;CJK RADICAL C-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;; -2EED;CJK RADICAL J-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;; -2EEE;CJK RADICAL C-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;; -2EEF;CJK RADICAL J-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;; -2EF0;CJK RADICAL C-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;; -2EF1;CJK RADICAL TURTLE;So;0;ON;;;;;N;;;;; -2EF2;CJK RADICAL J-SIMPLIFIED TURTLE;So;0;ON;;;;;N;;;;; -2EF3;CJK RADICAL C-SIMPLIFIED TURTLE;So;0;ON; 9F9F;;;;N;;;;; -2F00;KANGXI RADICAL ONE;So;0;ON; 4E00;;;;N;;;;; -2F01;KANGXI RADICAL LINE;So;0;ON; 4E28;;;;N;;;;; -2F02;KANGXI RADICAL DOT;So;0;ON; 4E36;;;;N;;;;; -2F03;KANGXI RADICAL SLASH;So;0;ON; 4E3F;;;;N;;;;; -2F04;KANGXI RADICAL SECOND;So;0;ON; 4E59;;;;N;;;;; -2F05;KANGXI RADICAL HOOK;So;0;ON; 4E85;;;;N;;;;; -2F06;KANGXI RADICAL TWO;So;0;ON; 4E8C;;;;N;;;;; -2F07;KANGXI RADICAL LID;So;0;ON; 4EA0;;;;N;;;;; -2F08;KANGXI RADICAL MAN;So;0;ON; 4EBA;;;;N;;;;; -2F09;KANGXI RADICAL LEGS;So;0;ON; 513F;;;;N;;;;; -2F0A;KANGXI RADICAL ENTER;So;0;ON; 5165;;;;N;;;;; -2F0B;KANGXI RADICAL EIGHT;So;0;ON; 516B;;;;N;;;;; -2F0C;KANGXI RADICAL DOWN BOX;So;0;ON; 5182;;;;N;;;;; -2F0D;KANGXI RADICAL COVER;So;0;ON; 5196;;;;N;;;;; -2F0E;KANGXI RADICAL ICE;So;0;ON; 51AB;;;;N;;;;; -2F0F;KANGXI RADICAL TABLE;So;0;ON; 51E0;;;;N;;;;; -2F10;KANGXI RADICAL OPEN BOX;So;0;ON; 51F5;;;;N;;;;; -2F11;KANGXI RADICAL KNIFE;So;0;ON; 5200;;;;N;;;;; -2F12;KANGXI RADICAL POWER;So;0;ON; 529B;;;;N;;;;; -2F13;KANGXI RADICAL WRAP;So;0;ON; 52F9;;;;N;;;;; -2F14;KANGXI RADICAL SPOON;So;0;ON; 5315;;;;N;;;;; -2F15;KANGXI RADICAL RIGHT OPEN BOX;So;0;ON; 531A;;;;N;;;;; -2F16;KANGXI RADICAL HIDING ENCLOSURE;So;0;ON; 5338;;;;N;;;;; -2F17;KANGXI RADICAL TEN;So;0;ON; 5341;;;;N;;;;; -2F18;KANGXI RADICAL DIVINATION;So;0;ON; 535C;;;;N;;;;; -2F19;KANGXI RADICAL SEAL;So;0;ON; 5369;;;;N;;;;; -2F1A;KANGXI RADICAL CLIFF;So;0;ON; 5382;;;;N;;;;; -2F1B;KANGXI RADICAL PRIVATE;So;0;ON; 53B6;;;;N;;;;; -2F1C;KANGXI RADICAL AGAIN;So;0;ON; 53C8;;;;N;;;;; -2F1D;KANGXI RADICAL MOUTH;So;0;ON; 53E3;;;;N;;;;; -2F1E;KANGXI RADICAL ENCLOSURE;So;0;ON; 56D7;;;;N;;;;; -2F1F;KANGXI RADICAL EARTH;So;0;ON; 571F;;;;N;;;;; -2F20;KANGXI RADICAL SCHOLAR;So;0;ON; 58EB;;;;N;;;;; -2F21;KANGXI RADICAL GO;So;0;ON; 5902;;;;N;;;;; -2F22;KANGXI RADICAL GO SLOWLY;So;0;ON; 590A;;;;N;;;;; -2F23;KANGXI RADICAL EVENING;So;0;ON; 5915;;;;N;;;;; -2F24;KANGXI RADICAL BIG;So;0;ON; 5927;;;;N;;;;; -2F25;KANGXI RADICAL WOMAN;So;0;ON; 5973;;;;N;;;;; -2F26;KANGXI RADICAL CHILD;So;0;ON; 5B50;;;;N;;;;; -2F27;KANGXI RADICAL ROOF;So;0;ON; 5B80;;;;N;;;;; -2F28;KANGXI RADICAL INCH;So;0;ON; 5BF8;;;;N;;;;; -2F29;KANGXI RADICAL SMALL;So;0;ON; 5C0F;;;;N;;;;; -2F2A;KANGXI RADICAL LAME;So;0;ON; 5C22;;;;N;;;;; -2F2B;KANGXI RADICAL CORPSE;So;0;ON; 5C38;;;;N;;;;; -2F2C;KANGXI RADICAL SPROUT;So;0;ON; 5C6E;;;;N;;;;; -2F2D;KANGXI RADICAL MOUNTAIN;So;0;ON; 5C71;;;;N;;;;; -2F2E;KANGXI RADICAL RIVER;So;0;ON; 5DDB;;;;N;;;;; -2F2F;KANGXI RADICAL WORK;So;0;ON; 5DE5;;;;N;;;;; -2F30;KANGXI RADICAL ONESELF;So;0;ON; 5DF1;;;;N;;;;; -2F31;KANGXI RADICAL TURBAN;So;0;ON; 5DFE;;;;N;;;;; -2F32;KANGXI RADICAL DRY;So;0;ON; 5E72;;;;N;;;;; -2F33;KANGXI RADICAL SHORT THREAD;So;0;ON; 5E7A;;;;N;;;;; -2F34;KANGXI RADICAL DOTTED CLIFF;So;0;ON; 5E7F;;;;N;;;;; -2F35;KANGXI RADICAL LONG STRIDE;So;0;ON; 5EF4;;;;N;;;;; -2F36;KANGXI RADICAL TWO HANDS;So;0;ON; 5EFE;;;;N;;;;; -2F37;KANGXI RADICAL SHOOT;So;0;ON; 5F0B;;;;N;;;;; -2F38;KANGXI RADICAL BOW;So;0;ON; 5F13;;;;N;;;;; -2F39;KANGXI RADICAL SNOUT;So;0;ON; 5F50;;;;N;;;;; -2F3A;KANGXI RADICAL BRISTLE;So;0;ON; 5F61;;;;N;;;;; -2F3B;KANGXI RADICAL STEP;So;0;ON; 5F73;;;;N;;;;; -2F3C;KANGXI RADICAL HEART;So;0;ON; 5FC3;;;;N;;;;; -2F3D;KANGXI RADICAL HALBERD;So;0;ON; 6208;;;;N;;;;; -2F3E;KANGXI RADICAL DOOR;So;0;ON; 6236;;;;N;;;;; -2F3F;KANGXI RADICAL HAND;So;0;ON; 624B;;;;N;;;;; -2F40;KANGXI RADICAL BRANCH;So;0;ON; 652F;;;;N;;;;; -2F41;KANGXI RADICAL RAP;So;0;ON; 6534;;;;N;;;;; -2F42;KANGXI RADICAL SCRIPT;So;0;ON; 6587;;;;N;;;;; -2F43;KANGXI RADICAL DIPPER;So;0;ON; 6597;;;;N;;;;; -2F44;KANGXI RADICAL AXE;So;0;ON; 65A4;;;;N;;;;; -2F45;KANGXI RADICAL SQUARE;So;0;ON; 65B9;;;;N;;;;; -2F46;KANGXI RADICAL NOT;So;0;ON; 65E0;;;;N;;;;; -2F47;KANGXI RADICAL SUN;So;0;ON; 65E5;;;;N;;;;; -2F48;KANGXI RADICAL SAY;So;0;ON; 66F0;;;;N;;;;; -2F49;KANGXI RADICAL MOON;So;0;ON; 6708;;;;N;;;;; -2F4A;KANGXI RADICAL TREE;So;0;ON; 6728;;;;N;;;;; -2F4B;KANGXI RADICAL LACK;So;0;ON; 6B20;;;;N;;;;; -2F4C;KANGXI RADICAL STOP;So;0;ON; 6B62;;;;N;;;;; -2F4D;KANGXI RADICAL DEATH;So;0;ON; 6B79;;;;N;;;;; -2F4E;KANGXI RADICAL WEAPON;So;0;ON; 6BB3;;;;N;;;;; -2F4F;KANGXI RADICAL DO NOT;So;0;ON; 6BCB;;;;N;;;;; -2F50;KANGXI RADICAL COMPARE;So;0;ON; 6BD4;;;;N;;;;; -2F51;KANGXI RADICAL FUR;So;0;ON; 6BDB;;;;N;;;;; -2F52;KANGXI RADICAL CLAN;So;0;ON; 6C0F;;;;N;;;;; -2F53;KANGXI RADICAL STEAM;So;0;ON; 6C14;;;;N;;;;; -2F54;KANGXI RADICAL WATER;So;0;ON; 6C34;;;;N;;;;; -2F55;KANGXI RADICAL FIRE;So;0;ON; 706B;;;;N;;;;; -2F56;KANGXI RADICAL CLAW;So;0;ON; 722A;;;;N;;;;; -2F57;KANGXI RADICAL FATHER;So;0;ON; 7236;;;;N;;;;; -2F58;KANGXI RADICAL DOUBLE X;So;0;ON; 723B;;;;N;;;;; -2F59;KANGXI RADICAL HALF TREE TRUNK;So;0;ON; 723F;;;;N;;;;; -2F5A;KANGXI RADICAL SLICE;So;0;ON; 7247;;;;N;;;;; -2F5B;KANGXI RADICAL FANG;So;0;ON; 7259;;;;N;;;;; -2F5C;KANGXI RADICAL COW;So;0;ON; 725B;;;;N;;;;; -2F5D;KANGXI RADICAL DOG;So;0;ON; 72AC;;;;N;;;;; -2F5E;KANGXI RADICAL PROFOUND;So;0;ON; 7384;;;;N;;;;; -2F5F;KANGXI RADICAL JADE;So;0;ON; 7389;;;;N;;;;; -2F60;KANGXI RADICAL MELON;So;0;ON; 74DC;;;;N;;;;; -2F61;KANGXI RADICAL TILE;So;0;ON; 74E6;;;;N;;;;; -2F62;KANGXI RADICAL SWEET;So;0;ON; 7518;;;;N;;;;; -2F63;KANGXI RADICAL LIFE;So;0;ON; 751F;;;;N;;;;; -2F64;KANGXI RADICAL USE;So;0;ON; 7528;;;;N;;;;; -2F65;KANGXI RADICAL FIELD;So;0;ON; 7530;;;;N;;;;; -2F66;KANGXI RADICAL BOLT OF CLOTH;So;0;ON; 758B;;;;N;;;;; -2F67;KANGXI RADICAL SICKNESS;So;0;ON; 7592;;;;N;;;;; -2F68;KANGXI RADICAL DOTTED TENT;So;0;ON; 7676;;;;N;;;;; -2F69;KANGXI RADICAL WHITE;So;0;ON; 767D;;;;N;;;;; -2F6A;KANGXI RADICAL SKIN;So;0;ON; 76AE;;;;N;;;;; -2F6B;KANGXI RADICAL DISH;So;0;ON; 76BF;;;;N;;;;; -2F6C;KANGXI RADICAL EYE;So;0;ON; 76EE;;;;N;;;;; -2F6D;KANGXI RADICAL SPEAR;So;0;ON; 77DB;;;;N;;;;; -2F6E;KANGXI RADICAL ARROW;So;0;ON; 77E2;;;;N;;;;; -2F6F;KANGXI RADICAL STONE;So;0;ON; 77F3;;;;N;;;;; -2F70;KANGXI RADICAL SPIRIT;So;0;ON; 793A;;;;N;;;;; -2F71;KANGXI RADICAL TRACK;So;0;ON; 79B8;;;;N;;;;; -2F72;KANGXI RADICAL GRAIN;So;0;ON; 79BE;;;;N;;;;; -2F73;KANGXI RADICAL CAVE;So;0;ON; 7A74;;;;N;;;;; -2F74;KANGXI RADICAL STAND;So;0;ON; 7ACB;;;;N;;;;; -2F75;KANGXI RADICAL BAMBOO;So;0;ON; 7AF9;;;;N;;;;; -2F76;KANGXI RADICAL RICE;So;0;ON; 7C73;;;;N;;;;; -2F77;KANGXI RADICAL SILK;So;0;ON; 7CF8;;;;N;;;;; -2F78;KANGXI RADICAL JAR;So;0;ON; 7F36;;;;N;;;;; -2F79;KANGXI RADICAL NET;So;0;ON; 7F51;;;;N;;;;; -2F7A;KANGXI RADICAL SHEEP;So;0;ON; 7F8A;;;;N;;;;; -2F7B;KANGXI RADICAL FEATHER;So;0;ON; 7FBD;;;;N;;;;; -2F7C;KANGXI RADICAL OLD;So;0;ON; 8001;;;;N;;;;; -2F7D;KANGXI RADICAL AND;So;0;ON; 800C;;;;N;;;;; -2F7E;KANGXI RADICAL PLOW;So;0;ON; 8012;;;;N;;;;; -2F7F;KANGXI RADICAL EAR;So;0;ON; 8033;;;;N;;;;; -2F80;KANGXI RADICAL BRUSH;So;0;ON; 807F;;;;N;;;;; -2F81;KANGXI RADICAL MEAT;So;0;ON; 8089;;;;N;;;;; -2F82;KANGXI RADICAL MINISTER;So;0;ON; 81E3;;;;N;;;;; -2F83;KANGXI RADICAL SELF;So;0;ON; 81EA;;;;N;;;;; -2F84;KANGXI RADICAL ARRIVE;So;0;ON; 81F3;;;;N;;;;; -2F85;KANGXI RADICAL MORTAR;So;0;ON; 81FC;;;;N;;;;; -2F86;KANGXI RADICAL TONGUE;So;0;ON; 820C;;;;N;;;;; -2F87;KANGXI RADICAL OPPOSE;So;0;ON; 821B;;;;N;;;;; -2F88;KANGXI RADICAL BOAT;So;0;ON; 821F;;;;N;;;;; -2F89;KANGXI RADICAL STOPPING;So;0;ON; 826E;;;;N;;;;; -2F8A;KANGXI RADICAL COLOR;So;0;ON; 8272;;;;N;;;;; -2F8B;KANGXI RADICAL GRASS;So;0;ON; 8278;;;;N;;;;; -2F8C;KANGXI RADICAL TIGER;So;0;ON; 864D;;;;N;;;;; -2F8D;KANGXI RADICAL INSECT;So;0;ON; 866B;;;;N;;;;; -2F8E;KANGXI RADICAL BLOOD;So;0;ON; 8840;;;;N;;;;; -2F8F;KANGXI RADICAL WALK ENCLOSURE;So;0;ON; 884C;;;;N;;;;; -2F90;KANGXI RADICAL CLOTHES;So;0;ON; 8863;;;;N;;;;; -2F91;KANGXI RADICAL WEST;So;0;ON; 897E;;;;N;;;;; -2F92;KANGXI RADICAL SEE;So;0;ON; 898B;;;;N;;;;; -2F93;KANGXI RADICAL HORN;So;0;ON; 89D2;;;;N;;;;; -2F94;KANGXI RADICAL SPEECH;So;0;ON; 8A00;;;;N;;;;; -2F95;KANGXI RADICAL VALLEY;So;0;ON; 8C37;;;;N;;;;; -2F96;KANGXI RADICAL BEAN;So;0;ON; 8C46;;;;N;;;;; -2F97;KANGXI RADICAL PIG;So;0;ON; 8C55;;;;N;;;;; -2F98;KANGXI RADICAL BADGER;So;0;ON; 8C78;;;;N;;;;; -2F99;KANGXI RADICAL SHELL;So;0;ON; 8C9D;;;;N;;;;; -2F9A;KANGXI RADICAL RED;So;0;ON; 8D64;;;;N;;;;; -2F9B;KANGXI RADICAL RUN;So;0;ON; 8D70;;;;N;;;;; -2F9C;KANGXI RADICAL FOOT;So;0;ON; 8DB3;;;;N;;;;; -2F9D;KANGXI RADICAL BODY;So;0;ON; 8EAB;;;;N;;;;; -2F9E;KANGXI RADICAL CART;So;0;ON; 8ECA;;;;N;;;;; -2F9F;KANGXI RADICAL BITTER;So;0;ON; 8F9B;;;;N;;;;; -2FA0;KANGXI RADICAL MORNING;So;0;ON; 8FB0;;;;N;;;;; -2FA1;KANGXI RADICAL WALK;So;0;ON; 8FB5;;;;N;;;;; -2FA2;KANGXI RADICAL CITY;So;0;ON; 9091;;;;N;;;;; -2FA3;KANGXI RADICAL WINE;So;0;ON; 9149;;;;N;;;;; -2FA4;KANGXI RADICAL DISTINGUISH;So;0;ON; 91C6;;;;N;;;;; -2FA5;KANGXI RADICAL VILLAGE;So;0;ON; 91CC;;;;N;;;;; -2FA6;KANGXI RADICAL GOLD;So;0;ON; 91D1;;;;N;;;;; -2FA7;KANGXI RADICAL LONG;So;0;ON; 9577;;;;N;;;;; -2FA8;KANGXI RADICAL GATE;So;0;ON; 9580;;;;N;;;;; -2FA9;KANGXI RADICAL MOUND;So;0;ON; 961C;;;;N;;;;; -2FAA;KANGXI RADICAL SLAVE;So;0;ON; 96B6;;;;N;;;;; -2FAB;KANGXI RADICAL SHORT TAILED BIRD;So;0;ON; 96B9;;;;N;;;;; -2FAC;KANGXI RADICAL RAIN;So;0;ON; 96E8;;;;N;;;;; -2FAD;KANGXI RADICAL BLUE;So;0;ON; 9751;;;;N;;;;; -2FAE;KANGXI RADICAL WRONG;So;0;ON; 975E;;;;N;;;;; -2FAF;KANGXI RADICAL FACE;So;0;ON; 9762;;;;N;;;;; -2FB0;KANGXI RADICAL LEATHER;So;0;ON; 9769;;;;N;;;;; -2FB1;KANGXI RADICAL TANNED LEATHER;So;0;ON; 97CB;;;;N;;;;; -2FB2;KANGXI RADICAL LEEK;So;0;ON; 97ED;;;;N;;;;; -2FB3;KANGXI RADICAL SOUND;So;0;ON; 97F3;;;;N;;;;; -2FB4;KANGXI RADICAL LEAF;So;0;ON; 9801;;;;N;;;;; -2FB5;KANGXI RADICAL WIND;So;0;ON; 98A8;;;;N;;;;; -2FB6;KANGXI RADICAL FLY;So;0;ON; 98DB;;;;N;;;;; -2FB7;KANGXI RADICAL EAT;So;0;ON; 98DF;;;;N;;;;; -2FB8;KANGXI RADICAL HEAD;So;0;ON; 9996;;;;N;;;;; -2FB9;KANGXI RADICAL FRAGRANT;So;0;ON; 9999;;;;N;;;;; -2FBA;KANGXI RADICAL HORSE;So;0;ON; 99AC;;;;N;;;;; -2FBB;KANGXI RADICAL BONE;So;0;ON; 9AA8;;;;N;;;;; -2FBC;KANGXI RADICAL TALL;So;0;ON; 9AD8;;;;N;;;;; -2FBD;KANGXI RADICAL HAIR;So;0;ON; 9ADF;;;;N;;;;; -2FBE;KANGXI RADICAL FIGHT;So;0;ON; 9B25;;;;N;;;;; -2FBF;KANGXI RADICAL SACRIFICIAL WINE;So;0;ON; 9B2F;;;;N;;;;; -2FC0;KANGXI RADICAL CAULDRON;So;0;ON; 9B32;;;;N;;;;; -2FC1;KANGXI RADICAL GHOST;So;0;ON; 9B3C;;;;N;;;;; -2FC2;KANGXI RADICAL FISH;So;0;ON; 9B5A;;;;N;;;;; -2FC3;KANGXI RADICAL BIRD;So;0;ON; 9CE5;;;;N;;;;; -2FC4;KANGXI RADICAL SALT;So;0;ON; 9E75;;;;N;;;;; -2FC5;KANGXI RADICAL DEER;So;0;ON; 9E7F;;;;N;;;;; -2FC6;KANGXI RADICAL WHEAT;So;0;ON; 9EA5;;;;N;;;;; -2FC7;KANGXI RADICAL HEMP;So;0;ON; 9EBB;;;;N;;;;; -2FC8;KANGXI RADICAL YELLOW;So;0;ON; 9EC3;;;;N;;;;; -2FC9;KANGXI RADICAL MILLET;So;0;ON; 9ECD;;;;N;;;;; -2FCA;KANGXI RADICAL BLACK;So;0;ON; 9ED1;;;;N;;;;; -2FCB;KANGXI RADICAL EMBROIDERY;So;0;ON; 9EF9;;;;N;;;;; -2FCC;KANGXI RADICAL FROG;So;0;ON; 9EFD;;;;N;;;;; -2FCD;KANGXI RADICAL TRIPOD;So;0;ON; 9F0E;;;;N;;;;; -2FCE;KANGXI RADICAL DRUM;So;0;ON; 9F13;;;;N;;;;; -2FCF;KANGXI RADICAL RAT;So;0;ON; 9F20;;;;N;;;;; -2FD0;KANGXI RADICAL NOSE;So;0;ON; 9F3B;;;;N;;;;; -2FD1;KANGXI RADICAL EVEN;So;0;ON; 9F4A;;;;N;;;;; -2FD2;KANGXI RADICAL TOOTH;So;0;ON; 9F52;;;;N;;;;; -2FD3;KANGXI RADICAL DRAGON;So;0;ON; 9F8D;;;;N;;;;; -2FD4;KANGXI RADICAL TURTLE;So;0;ON; 9F9C;;;;N;;;;; -2FD5;KANGXI RADICAL FLUTE;So;0;ON; 9FA0;;;;N;;;;; -2FF0;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT;So;0;ON;;;;;N;;;;; -2FF1;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW;So;0;ON;;;;;N;;;;; -2FF2;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT;So;0;ON;;;;;N;;;;; -2FF3;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW;So;0;ON;;;;;N;;;;; -2FF4;IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND;So;0;ON;;;;;N;;;;; -2FF5;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE;So;0;ON;;;;;N;;;;; -2FF6;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW;So;0;ON;;;;;N;;;;; -2FF7;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT;So;0;ON;;;;;N;;;;; -2FF8;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT;So;0;ON;;;;;N;;;;; -2FF9;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT;So;0;ON;;;;;N;;;;; -2FFA;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT;So;0;ON;;;;;N;;;;; -2FFB;IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID;So;0;ON;;;;;N;;;;; -3000;IDEOGRAPHIC SPACE;Zs;0;WS; 0020;;;;N;;;;; -3001;IDEOGRAPHIC COMMA;Po;0;ON;;;;;N;;;;; -3002;IDEOGRAPHIC FULL STOP;Po;0;ON;;;;;N;IDEOGRAPHIC PERIOD;;;; -3003;DITTO MARK;Po;0;ON;;;;;N;;;;; -3004;JAPANESE INDUSTRIAL STANDARD SYMBOL;So;0;ON;;;;;N;;;;; -3005;IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;; -3006;IDEOGRAPHIC CLOSING MARK;Lo;0;L;;;;;N;;;;; -3007;IDEOGRAPHIC NUMBER ZERO;Nl;0;L;;;;0;N;;;;; -3008;LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING ANGLE BRACKET;;;; -3009;RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING ANGLE BRACKET;;;; -300A;LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING DOUBLE ANGLE BRACKET;;;; -300B;RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING DOUBLE ANGLE BRACKET;;;; -300C;LEFT CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING CORNER BRACKET;;;; -300D;RIGHT CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING CORNER BRACKET;;;; -300E;LEFT WHITE CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE CORNER BRACKET;;;; -300F;RIGHT WHITE CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE CORNER BRACKET;;;; -3010;LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING BLACK LENTICULAR BRACKET;;;; -3011;RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING BLACK LENTICULAR BRACKET;;;; -3012;POSTAL MARK;So;0;ON;;;;;N;;;;; -3013;GETA MARK;So;0;ON;;;;;N;;;;; -3014;LEFT TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING TORTOISE SHELL BRACKET;;;; -3015;RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING TORTOISE SHELL BRACKET;;;; -3016;LEFT WHITE LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE LENTICULAR BRACKET;;;; -3017;RIGHT WHITE LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE LENTICULAR BRACKET;;;; -3018;LEFT WHITE TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE TORTOISE SHELL BRACKET;;;; -3019;RIGHT WHITE TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE TORTOISE SHELL BRACKET;;;; -301A;LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE SQUARE BRACKET;;;; -301B;RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE SQUARE BRACKET;;;; -301C;WAVE DASH;Pd;0;ON;;;;;N;;;;; -301D;REVERSED DOUBLE PRIME QUOTATION MARK;Ps;0;ON;;;;;N;;;;; -301E;DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;; -301F;LOW DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;; -3020;POSTAL MARK FACE;So;0;ON;;;;;N;;;;; -3021;HANGZHOU NUMERAL ONE;Nl;0;L;;;;1;N;;;;; -3022;HANGZHOU NUMERAL TWO;Nl;0;L;;;;2;N;;;;; -3023;HANGZHOU NUMERAL THREE;Nl;0;L;;;;3;N;;;;; -3024;HANGZHOU NUMERAL FOUR;Nl;0;L;;;;4;N;;;;; -3025;HANGZHOU NUMERAL FIVE;Nl;0;L;;;;5;N;;;;; -3026;HANGZHOU NUMERAL SIX;Nl;0;L;;;;6;N;;;;; -3027;HANGZHOU NUMERAL SEVEN;Nl;0;L;;;;7;N;;;;; -3028;HANGZHOU NUMERAL EIGHT;Nl;0;L;;;;8;N;;;;; -3029;HANGZHOU NUMERAL NINE;Nl;0;L;;;;9;N;;;;; -302A;IDEOGRAPHIC LEVEL TONE MARK;Mn;218;NSM;;;;;N;;;;; -302B;IDEOGRAPHIC RISING TONE MARK;Mn;228;NSM;;;;;N;;;;; -302C;IDEOGRAPHIC DEPARTING TONE MARK;Mn;232;NSM;;;;;N;;;;; -302D;IDEOGRAPHIC ENTERING TONE MARK;Mn;222;NSM;;;;;N;;;;; -302E;HANGUL SINGLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;; -302F;HANGUL DOUBLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;; -3030;WAVY DASH;Pd;0;ON;;;;;N;;;;; -3031;VERTICAL KANA REPEAT MARK;Lm;0;L;;;;;N;;;;; -3032;VERTICAL KANA REPEAT WITH VOICED SOUND MARK;Lm;0;L;;;;;N;;;;; -3033;VERTICAL KANA REPEAT MARK UPPER HALF;Lm;0;L;;;;;N;;;;; -3034;VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF;Lm;0;L;;;;;N;;;;; -3035;VERTICAL KANA REPEAT MARK LOWER HALF;Lm;0;L;;;;;N;;;;; -3036;CIRCLED POSTAL MARK;So;0;ON; 3012;;;;N;;;;; -3037;IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL;So;0;ON;;;;;N;;;;; -3038;HANGZHOU NUMERAL TEN;Nl;0;L; 5341;;;10;N;;;;; -3039;HANGZHOU NUMERAL TWENTY;Nl;0;L; 5344;;;20;N;;;;; -303A;HANGZHOU NUMERAL THIRTY;Nl;0;L; 5345;;;30;N;;;;; -303B;VERTICAL IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;; -303C;MASU MARK;Lo;0;L;;;;;N;;;;; -303D;PART ALTERNATION MARK;Po;0;ON;;;;;N;;;;; -303E;IDEOGRAPHIC VARIATION INDICATOR;So;0;ON;;;;;N;;;;; -303F;IDEOGRAPHIC HALF FILL SPACE;So;0;ON;;;;;N;;;;; -3041;HIRAGANA LETTER SMALL A;Lo;0;L;;;;;N;;;;; -3042;HIRAGANA LETTER A;Lo;0;L;;;;;N;;;;; -3043;HIRAGANA LETTER SMALL I;Lo;0;L;;;;;N;;;;; -3044;HIRAGANA LETTER I;Lo;0;L;;;;;N;;;;; -3045;HIRAGANA LETTER SMALL U;Lo;0;L;;;;;N;;;;; -3046;HIRAGANA LETTER U;Lo;0;L;;;;;N;;;;; -3047;HIRAGANA LETTER SMALL E;Lo;0;L;;;;;N;;;;; -3048;HIRAGANA LETTER E;Lo;0;L;;;;;N;;;;; -3049;HIRAGANA LETTER SMALL O;Lo;0;L;;;;;N;;;;; -304A;HIRAGANA LETTER O;Lo;0;L;;;;;N;;;;; -304B;HIRAGANA LETTER KA;Lo;0;L;;;;;N;;;;; -304C;HIRAGANA LETTER GA;Lo;0;L;304B 3099;;;;N;;;;; -304D;HIRAGANA LETTER KI;Lo;0;L;;;;;N;;;;; -304E;HIRAGANA LETTER GI;Lo;0;L;304D 3099;;;;N;;;;; -304F;HIRAGANA LETTER KU;Lo;0;L;;;;;N;;;;; -3050;HIRAGANA LETTER GU;Lo;0;L;304F 3099;;;;N;;;;; -3051;HIRAGANA LETTER KE;Lo;0;L;;;;;N;;;;; -3052;HIRAGANA LETTER GE;Lo;0;L;3051 3099;;;;N;;;;; -3053;HIRAGANA LETTER KO;Lo;0;L;;;;;N;;;;; -3054;HIRAGANA LETTER GO;Lo;0;L;3053 3099;;;;N;;;;; -3055;HIRAGANA LETTER SA;Lo;0;L;;;;;N;;;;; -3056;HIRAGANA LETTER ZA;Lo;0;L;3055 3099;;;;N;;;;; -3057;HIRAGANA LETTER SI;Lo;0;L;;;;;N;;;;; -3058;HIRAGANA LETTER ZI;Lo;0;L;3057 3099;;;;N;;;;; -3059;HIRAGANA LETTER SU;Lo;0;L;;;;;N;;;;; -305A;HIRAGANA LETTER ZU;Lo;0;L;3059 3099;;;;N;;;;; -305B;HIRAGANA LETTER SE;Lo;0;L;;;;;N;;;;; -305C;HIRAGANA LETTER ZE;Lo;0;L;305B 3099;;;;N;;;;; -305D;HIRAGANA LETTER SO;Lo;0;L;;;;;N;;;;; -305E;HIRAGANA LETTER ZO;Lo;0;L;305D 3099;;;;N;;;;; -305F;HIRAGANA LETTER TA;Lo;0;L;;;;;N;;;;; -3060;HIRAGANA LETTER DA;Lo;0;L;305F 3099;;;;N;;;;; -3061;HIRAGANA LETTER TI;Lo;0;L;;;;;N;;;;; -3062;HIRAGANA LETTER DI;Lo;0;L;3061 3099;;;;N;;;;; -3063;HIRAGANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;; -3064;HIRAGANA LETTER TU;Lo;0;L;;;;;N;;;;; -3065;HIRAGANA LETTER DU;Lo;0;L;3064 3099;;;;N;;;;; -3066;HIRAGANA LETTER TE;Lo;0;L;;;;;N;;;;; -3067;HIRAGANA LETTER DE;Lo;0;L;3066 3099;;;;N;;;;; -3068;HIRAGANA LETTER TO;Lo;0;L;;;;;N;;;;; -3069;HIRAGANA LETTER DO;Lo;0;L;3068 3099;;;;N;;;;; -306A;HIRAGANA LETTER NA;Lo;0;L;;;;;N;;;;; -306B;HIRAGANA LETTER NI;Lo;0;L;;;;;N;;;;; -306C;HIRAGANA LETTER NU;Lo;0;L;;;;;N;;;;; -306D;HIRAGANA LETTER NE;Lo;0;L;;;;;N;;;;; -306E;HIRAGANA LETTER NO;Lo;0;L;;;;;N;;;;; -306F;HIRAGANA LETTER HA;Lo;0;L;;;;;N;;;;; -3070;HIRAGANA LETTER BA;Lo;0;L;306F 3099;;;;N;;;;; -3071;HIRAGANA LETTER PA;Lo;0;L;306F 309A;;;;N;;;;; -3072;HIRAGANA LETTER HI;Lo;0;L;;;;;N;;;;; -3073;HIRAGANA LETTER BI;Lo;0;L;3072 3099;;;;N;;;;; -3074;HIRAGANA LETTER PI;Lo;0;L;3072 309A;;;;N;;;;; -3075;HIRAGANA LETTER HU;Lo;0;L;;;;;N;;;;; -3076;HIRAGANA LETTER BU;Lo;0;L;3075 3099;;;;N;;;;; -3077;HIRAGANA LETTER PU;Lo;0;L;3075 309A;;;;N;;;;; -3078;HIRAGANA LETTER HE;Lo;0;L;;;;;N;;;;; -3079;HIRAGANA LETTER BE;Lo;0;L;3078 3099;;;;N;;;;; -307A;HIRAGANA LETTER PE;Lo;0;L;3078 309A;;;;N;;;;; -307B;HIRAGANA LETTER HO;Lo;0;L;;;;;N;;;;; -307C;HIRAGANA LETTER BO;Lo;0;L;307B 3099;;;;N;;;;; -307D;HIRAGANA LETTER PO;Lo;0;L;307B 309A;;;;N;;;;; -307E;HIRAGANA LETTER MA;Lo;0;L;;;;;N;;;;; -307F;HIRAGANA LETTER MI;Lo;0;L;;;;;N;;;;; -3080;HIRAGANA LETTER MU;Lo;0;L;;;;;N;;;;; -3081;HIRAGANA LETTER ME;Lo;0;L;;;;;N;;;;; -3082;HIRAGANA LETTER MO;Lo;0;L;;;;;N;;;;; -3083;HIRAGANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;; -3084;HIRAGANA LETTER YA;Lo;0;L;;;;;N;;;;; -3085;HIRAGANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;; -3086;HIRAGANA LETTER YU;Lo;0;L;;;;;N;;;;; -3087;HIRAGANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;; -3088;HIRAGANA LETTER YO;Lo;0;L;;;;;N;;;;; -3089;HIRAGANA LETTER RA;Lo;0;L;;;;;N;;;;; -308A;HIRAGANA LETTER RI;Lo;0;L;;;;;N;;;;; -308B;HIRAGANA LETTER RU;Lo;0;L;;;;;N;;;;; -308C;HIRAGANA LETTER RE;Lo;0;L;;;;;N;;;;; -308D;HIRAGANA LETTER RO;Lo;0;L;;;;;N;;;;; -308E;HIRAGANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;; -308F;HIRAGANA LETTER WA;Lo;0;L;;;;;N;;;;; -3090;HIRAGANA LETTER WI;Lo;0;L;;;;;N;;;;; -3091;HIRAGANA LETTER WE;Lo;0;L;;;;;N;;;;; -3092;HIRAGANA LETTER WO;Lo;0;L;;;;;N;;;;; -3093;HIRAGANA LETTER N;Lo;0;L;;;;;N;;;;; -3094;HIRAGANA LETTER VU;Lo;0;L;3046 3099;;;;N;;;;; -3095;HIRAGANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;; -3096;HIRAGANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;; -3099;COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA VOICED SOUND MARK;;;; -309A;COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;;;; -309B;KATAKANA-HIRAGANA VOICED SOUND MARK;Sk;0;ON; 0020 3099;;;;N;;;;; -309C;KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Sk;0;ON; 0020 309A;;;;N;;;;; -309D;HIRAGANA ITERATION MARK;Lm;0;L;;;;;N;;;;; -309E;HIRAGANA VOICED ITERATION MARK;Lm;0;L;309D 3099;;;;N;;;;; -309F;HIRAGANA DIGRAPH YORI;Lo;0;L; 3088 308A;;;;N;;;;; -30A0;KATAKANA-HIRAGANA DOUBLE HYPHEN;Pd;0;ON;;;;;N;;;;; -30A1;KATAKANA LETTER SMALL A;Lo;0;L;;;;;N;;;;; -30A2;KATAKANA LETTER A;Lo;0;L;;;;;N;;;;; -30A3;KATAKANA LETTER SMALL I;Lo;0;L;;;;;N;;;;; -30A4;KATAKANA LETTER I;Lo;0;L;;;;;N;;;;; -30A5;KATAKANA LETTER SMALL U;Lo;0;L;;;;;N;;;;; -30A6;KATAKANA LETTER U;Lo;0;L;;;;;N;;;;; -30A7;KATAKANA LETTER SMALL E;Lo;0;L;;;;;N;;;;; -30A8;KATAKANA LETTER E;Lo;0;L;;;;;N;;;;; -30A9;KATAKANA LETTER SMALL O;Lo;0;L;;;;;N;;;;; -30AA;KATAKANA LETTER O;Lo;0;L;;;;;N;;;;; -30AB;KATAKANA LETTER KA;Lo;0;L;;;;;N;;;;; -30AC;KATAKANA LETTER GA;Lo;0;L;30AB 3099;;;;N;;;;; -30AD;KATAKANA LETTER KI;Lo;0;L;;;;;N;;;;; -30AE;KATAKANA LETTER GI;Lo;0;L;30AD 3099;;;;N;;;;; -30AF;KATAKANA LETTER KU;Lo;0;L;;;;;N;;;;; -30B0;KATAKANA LETTER GU;Lo;0;L;30AF 3099;;;;N;;;;; -30B1;KATAKANA LETTER KE;Lo;0;L;;;;;N;;;;; -30B2;KATAKANA LETTER GE;Lo;0;L;30B1 3099;;;;N;;;;; -30B3;KATAKANA LETTER KO;Lo;0;L;;;;;N;;;;; -30B4;KATAKANA LETTER GO;Lo;0;L;30B3 3099;;;;N;;;;; -30B5;KATAKANA LETTER SA;Lo;0;L;;;;;N;;;;; -30B6;KATAKANA LETTER ZA;Lo;0;L;30B5 3099;;;;N;;;;; -30B7;KATAKANA LETTER SI;Lo;0;L;;;;;N;;;;; -30B8;KATAKANA LETTER ZI;Lo;0;L;30B7 3099;;;;N;;;;; -30B9;KATAKANA LETTER SU;Lo;0;L;;;;;N;;;;; -30BA;KATAKANA LETTER ZU;Lo;0;L;30B9 3099;;;;N;;;;; -30BB;KATAKANA LETTER SE;Lo;0;L;;;;;N;;;;; -30BC;KATAKANA LETTER ZE;Lo;0;L;30BB 3099;;;;N;;;;; -30BD;KATAKANA LETTER SO;Lo;0;L;;;;;N;;;;; -30BE;KATAKANA LETTER ZO;Lo;0;L;30BD 3099;;;;N;;;;; -30BF;KATAKANA LETTER TA;Lo;0;L;;;;;N;;;;; -30C0;KATAKANA LETTER DA;Lo;0;L;30BF 3099;;;;N;;;;; -30C1;KATAKANA LETTER TI;Lo;0;L;;;;;N;;;;; -30C2;KATAKANA LETTER DI;Lo;0;L;30C1 3099;;;;N;;;;; -30C3;KATAKANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;; -30C4;KATAKANA LETTER TU;Lo;0;L;;;;;N;;;;; -30C5;KATAKANA LETTER DU;Lo;0;L;30C4 3099;;;;N;;;;; -30C6;KATAKANA LETTER TE;Lo;0;L;;;;;N;;;;; -30C7;KATAKANA LETTER DE;Lo;0;L;30C6 3099;;;;N;;;;; -30C8;KATAKANA LETTER TO;Lo;0;L;;;;;N;;;;; -30C9;KATAKANA LETTER DO;Lo;0;L;30C8 3099;;;;N;;;;; -30CA;KATAKANA LETTER NA;Lo;0;L;;;;;N;;;;; -30CB;KATAKANA LETTER NI;Lo;0;L;;;;;N;;;;; -30CC;KATAKANA LETTER NU;Lo;0;L;;;;;N;;;;; -30CD;KATAKANA LETTER NE;Lo;0;L;;;;;N;;;;; -30CE;KATAKANA LETTER NO;Lo;0;L;;;;;N;;;;; -30CF;KATAKANA LETTER HA;Lo;0;L;;;;;N;;;;; -30D0;KATAKANA LETTER BA;Lo;0;L;30CF 3099;;;;N;;;;; -30D1;KATAKANA LETTER PA;Lo;0;L;30CF 309A;;;;N;;;;; -30D2;KATAKANA LETTER HI;Lo;0;L;;;;;N;;;;; -30D3;KATAKANA LETTER BI;Lo;0;L;30D2 3099;;;;N;;;;; -30D4;KATAKANA LETTER PI;Lo;0;L;30D2 309A;;;;N;;;;; -30D5;KATAKANA LETTER HU;Lo;0;L;;;;;N;;;;; -30D6;KATAKANA LETTER BU;Lo;0;L;30D5 3099;;;;N;;;;; -30D7;KATAKANA LETTER PU;Lo;0;L;30D5 309A;;;;N;;;;; -30D8;KATAKANA LETTER HE;Lo;0;L;;;;;N;;;;; -30D9;KATAKANA LETTER BE;Lo;0;L;30D8 3099;;;;N;;;;; -30DA;KATAKANA LETTER PE;Lo;0;L;30D8 309A;;;;N;;;;; -30DB;KATAKANA LETTER HO;Lo;0;L;;;;;N;;;;; -30DC;KATAKANA LETTER BO;Lo;0;L;30DB 3099;;;;N;;;;; -30DD;KATAKANA LETTER PO;Lo;0;L;30DB 309A;;;;N;;;;; -30DE;KATAKANA LETTER MA;Lo;0;L;;;;;N;;;;; -30DF;KATAKANA LETTER MI;Lo;0;L;;;;;N;;;;; -30E0;KATAKANA LETTER MU;Lo;0;L;;;;;N;;;;; -30E1;KATAKANA LETTER ME;Lo;0;L;;;;;N;;;;; -30E2;KATAKANA LETTER MO;Lo;0;L;;;;;N;;;;; -30E3;KATAKANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;; -30E4;KATAKANA LETTER YA;Lo;0;L;;;;;N;;;;; -30E5;KATAKANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;; -30E6;KATAKANA LETTER YU;Lo;0;L;;;;;N;;;;; -30E7;KATAKANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;; -30E8;KATAKANA LETTER YO;Lo;0;L;;;;;N;;;;; -30E9;KATAKANA LETTER RA;Lo;0;L;;;;;N;;;;; -30EA;KATAKANA LETTER RI;Lo;0;L;;;;;N;;;;; -30EB;KATAKANA LETTER RU;Lo;0;L;;;;;N;;;;; -30EC;KATAKANA LETTER RE;Lo;0;L;;;;;N;;;;; -30ED;KATAKANA LETTER RO;Lo;0;L;;;;;N;;;;; -30EE;KATAKANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;; -30EF;KATAKANA LETTER WA;Lo;0;L;;;;;N;;;;; -30F0;KATAKANA LETTER WI;Lo;0;L;;;;;N;;;;; -30F1;KATAKANA LETTER WE;Lo;0;L;;;;;N;;;;; -30F2;KATAKANA LETTER WO;Lo;0;L;;;;;N;;;;; -30F3;KATAKANA LETTER N;Lo;0;L;;;;;N;;;;; -30F4;KATAKANA LETTER VU;Lo;0;L;30A6 3099;;;;N;;;;; -30F5;KATAKANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;; -30F6;KATAKANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;; -30F7;KATAKANA LETTER VA;Lo;0;L;30EF 3099;;;;N;;;;; -30F8;KATAKANA LETTER VI;Lo;0;L;30F0 3099;;;;N;;;;; -30F9;KATAKANA LETTER VE;Lo;0;L;30F1 3099;;;;N;;;;; -30FA;KATAKANA LETTER VO;Lo;0;L;30F2 3099;;;;N;;;;; -30FB;KATAKANA MIDDLE DOT;Po;0;ON;;;;;N;;;;; -30FC;KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;;;;;N;;;;; -30FD;KATAKANA ITERATION MARK;Lm;0;L;;;;;N;;;;; -30FE;KATAKANA VOICED ITERATION MARK;Lm;0;L;30FD 3099;;;;N;;;;; -30FF;KATAKANA DIGRAPH KOTO;Lo;0;L; 30B3 30C8;;;;N;;;;; -3105;BOPOMOFO LETTER B;Lo;0;L;;;;;N;;;;; -3106;BOPOMOFO LETTER P;Lo;0;L;;;;;N;;;;; -3107;BOPOMOFO LETTER M;Lo;0;L;;;;;N;;;;; -3108;BOPOMOFO LETTER F;Lo;0;L;;;;;N;;;;; -3109;BOPOMOFO LETTER D;Lo;0;L;;;;;N;;;;; -310A;BOPOMOFO LETTER T;Lo;0;L;;;;;N;;;;; -310B;BOPOMOFO LETTER N;Lo;0;L;;;;;N;;;;; -310C;BOPOMOFO LETTER L;Lo;0;L;;;;;N;;;;; -310D;BOPOMOFO LETTER G;Lo;0;L;;;;;N;;;;; -310E;BOPOMOFO LETTER K;Lo;0;L;;;;;N;;;;; -310F;BOPOMOFO LETTER H;Lo;0;L;;;;;N;;;;; -3110;BOPOMOFO LETTER J;Lo;0;L;;;;;N;;;;; -3111;BOPOMOFO LETTER Q;Lo;0;L;;;;;N;;;;; -3112;BOPOMOFO LETTER X;Lo;0;L;;;;;N;;;;; -3113;BOPOMOFO LETTER ZH;Lo;0;L;;;;;N;;;;; -3114;BOPOMOFO LETTER CH;Lo;0;L;;;;;N;;;;; -3115;BOPOMOFO LETTER SH;Lo;0;L;;;;;N;;;;; -3116;BOPOMOFO LETTER R;Lo;0;L;;;;;N;;;;; -3117;BOPOMOFO LETTER Z;Lo;0;L;;;;;N;;;;; -3118;BOPOMOFO LETTER C;Lo;0;L;;;;;N;;;;; -3119;BOPOMOFO LETTER S;Lo;0;L;;;;;N;;;;; -311A;BOPOMOFO LETTER A;Lo;0;L;;;;;N;;;;; -311B;BOPOMOFO LETTER O;Lo;0;L;;;;;N;;;;; -311C;BOPOMOFO LETTER E;Lo;0;L;;;;;N;;;;; -311D;BOPOMOFO LETTER EH;Lo;0;L;;;;;N;;;;; -311E;BOPOMOFO LETTER AI;Lo;0;L;;;;;N;;;;; -311F;BOPOMOFO LETTER EI;Lo;0;L;;;;;N;;;;; -3120;BOPOMOFO LETTER AU;Lo;0;L;;;;;N;;;;; -3121;BOPOMOFO LETTER OU;Lo;0;L;;;;;N;;;;; -3122;BOPOMOFO LETTER AN;Lo;0;L;;;;;N;;;;; -3123;BOPOMOFO LETTER EN;Lo;0;L;;;;;N;;;;; -3124;BOPOMOFO LETTER ANG;Lo;0;L;;;;;N;;;;; -3125;BOPOMOFO LETTER ENG;Lo;0;L;;;;;N;;;;; -3126;BOPOMOFO LETTER ER;Lo;0;L;;;;;N;;;;; -3127;BOPOMOFO LETTER I;Lo;0;L;;;;;N;;;;; -3128;BOPOMOFO LETTER U;Lo;0;L;;;;;N;;;;; -3129;BOPOMOFO LETTER IU;Lo;0;L;;;;;N;;;;; -312A;BOPOMOFO LETTER V;Lo;0;L;;;;;N;;;;; -312B;BOPOMOFO LETTER NG;Lo;0;L;;;;;N;;;;; -312C;BOPOMOFO LETTER GN;Lo;0;L;;;;;N;;;;; -312D;BOPOMOFO LETTER IH;Lo;0;L;;;;;N;;;;; -3131;HANGUL LETTER KIYEOK;Lo;0;L; 1100;;;;N;HANGUL LETTER GIYEOG;;;; -3132;HANGUL LETTER SSANGKIYEOK;Lo;0;L; 1101;;;;N;HANGUL LETTER SSANG GIYEOG;;;; -3133;HANGUL LETTER KIYEOK-SIOS;Lo;0;L; 11AA;;;;N;HANGUL LETTER GIYEOG SIOS;;;; -3134;HANGUL LETTER NIEUN;Lo;0;L; 1102;;;;N;;;;; -3135;HANGUL LETTER NIEUN-CIEUC;Lo;0;L; 11AC;;;;N;HANGUL LETTER NIEUN JIEUJ;;;; -3136;HANGUL LETTER NIEUN-HIEUH;Lo;0;L; 11AD;;;;N;HANGUL LETTER NIEUN HIEUH;;;; -3137;HANGUL LETTER TIKEUT;Lo;0;L; 1103;;;;N;HANGUL LETTER DIGEUD;;;; -3138;HANGUL LETTER SSANGTIKEUT;Lo;0;L; 1104;;;;N;HANGUL LETTER SSANG DIGEUD;;;; -3139;HANGUL LETTER RIEUL;Lo;0;L; 1105;;;;N;HANGUL LETTER LIEUL;;;; -313A;HANGUL LETTER RIEUL-KIYEOK;Lo;0;L; 11B0;;;;N;HANGUL LETTER LIEUL GIYEOG;;;; -313B;HANGUL LETTER RIEUL-MIEUM;Lo;0;L; 11B1;;;;N;HANGUL LETTER LIEUL MIEUM;;;; -313C;HANGUL LETTER RIEUL-PIEUP;Lo;0;L; 11B2;;;;N;HANGUL LETTER LIEUL BIEUB;;;; -313D;HANGUL LETTER RIEUL-SIOS;Lo;0;L; 11B3;;;;N;HANGUL LETTER LIEUL SIOS;;;; -313E;HANGUL LETTER RIEUL-THIEUTH;Lo;0;L; 11B4;;;;N;HANGUL LETTER LIEUL TIEUT;;;; -313F;HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L; 11B5;;;;N;HANGUL LETTER LIEUL PIEUP;;;; -3140;HANGUL LETTER RIEUL-HIEUH;Lo;0;L; 111A;;;;N;HANGUL LETTER LIEUL HIEUH;;;; -3141;HANGUL LETTER MIEUM;Lo;0;L; 1106;;;;N;;;;; -3142;HANGUL LETTER PIEUP;Lo;0;L; 1107;;;;N;HANGUL LETTER BIEUB;;;; -3143;HANGUL LETTER SSANGPIEUP;Lo;0;L; 1108;;;;N;HANGUL LETTER SSANG BIEUB;;;; -3144;HANGUL LETTER PIEUP-SIOS;Lo;0;L; 1121;;;;N;HANGUL LETTER BIEUB SIOS;;;; -3145;HANGUL LETTER SIOS;Lo;0;L; 1109;;;;N;;;;; -3146;HANGUL LETTER SSANGSIOS;Lo;0;L; 110A;;;;N;HANGUL LETTER SSANG SIOS;;;; -3147;HANGUL LETTER IEUNG;Lo;0;L; 110B;;;;N;;;;; -3148;HANGUL LETTER CIEUC;Lo;0;L; 110C;;;;N;HANGUL LETTER JIEUJ;;;; -3149;HANGUL LETTER SSANGCIEUC;Lo;0;L; 110D;;;;N;HANGUL LETTER SSANG JIEUJ;;;; -314A;HANGUL LETTER CHIEUCH;Lo;0;L; 110E;;;;N;HANGUL LETTER CIEUC;;;; -314B;HANGUL LETTER KHIEUKH;Lo;0;L; 110F;;;;N;HANGUL LETTER KIYEOK;;;; -314C;HANGUL LETTER THIEUTH;Lo;0;L; 1110;;;;N;HANGUL LETTER TIEUT;;;; -314D;HANGUL LETTER PHIEUPH;Lo;0;L; 1111;;;;N;HANGUL LETTER PIEUP;;;; -314E;HANGUL LETTER HIEUH;Lo;0;L; 1112;;;;N;;;;; -314F;HANGUL LETTER A;Lo;0;L; 1161;;;;N;;;;; -3150;HANGUL LETTER AE;Lo;0;L; 1162;;;;N;;;;; -3151;HANGUL LETTER YA;Lo;0;L; 1163;;;;N;;;;; -3152;HANGUL LETTER YAE;Lo;0;L; 1164;;;;N;;;;; -3153;HANGUL LETTER EO;Lo;0;L; 1165;;;;N;;;;; -3154;HANGUL LETTER E;Lo;0;L; 1166;;;;N;;;;; -3155;HANGUL LETTER YEO;Lo;0;L; 1167;;;;N;;;;; -3156;HANGUL LETTER YE;Lo;0;L; 1168;;;;N;;;;; -3157;HANGUL LETTER O;Lo;0;L; 1169;;;;N;;;;; -3158;HANGUL LETTER WA;Lo;0;L; 116A;;;;N;;;;; -3159;HANGUL LETTER WAE;Lo;0;L; 116B;;;;N;;;;; -315A;HANGUL LETTER OE;Lo;0;L; 116C;;;;N;;;;; -315B;HANGUL LETTER YO;Lo;0;L; 116D;;;;N;;;;; -315C;HANGUL LETTER U;Lo;0;L; 116E;;;;N;;;;; -315D;HANGUL LETTER WEO;Lo;0;L; 116F;;;;N;;;;; -315E;HANGUL LETTER WE;Lo;0;L; 1170;;;;N;;;;; -315F;HANGUL LETTER WI;Lo;0;L; 1171;;;;N;;;;; -3160;HANGUL LETTER YU;Lo;0;L; 1172;;;;N;;;;; -3161;HANGUL LETTER EU;Lo;0;L; 1173;;;;N;;;;; -3162;HANGUL LETTER YI;Lo;0;L; 1174;;;;N;;;;; -3163;HANGUL LETTER I;Lo;0;L; 1175;;;;N;;;;; -3164;HANGUL FILLER;Lo;0;L; 1160;;;;N;HANGUL CAE OM;;;; -3165;HANGUL LETTER SSANGNIEUN;Lo;0;L; 1114;;;;N;HANGUL LETTER SSANG NIEUN;;;; -3166;HANGUL LETTER NIEUN-TIKEUT;Lo;0;L; 1115;;;;N;HANGUL LETTER NIEUN DIGEUD;;;; -3167;HANGUL LETTER NIEUN-SIOS;Lo;0;L; 11C7;;;;N;HANGUL LETTER NIEUN SIOS;;;; -3168;HANGUL LETTER NIEUN-PANSIOS;Lo;0;L; 11C8;;;;N;HANGUL LETTER NIEUN BAN CHI EUM;;;; -3169;HANGUL LETTER RIEUL-KIYEOK-SIOS;Lo;0;L; 11CC;;;;N;HANGUL LETTER LIEUL GIYEOG SIOS;;;; -316A;HANGUL LETTER RIEUL-TIKEUT;Lo;0;L; 11CE;;;;N;HANGUL LETTER LIEUL DIGEUD;;;; -316B;HANGUL LETTER RIEUL-PIEUP-SIOS;Lo;0;L; 11D3;;;;N;HANGUL LETTER LIEUL BIEUB SIOS;;;; -316C;HANGUL LETTER RIEUL-PANSIOS;Lo;0;L; 11D7;;;;N;HANGUL LETTER LIEUL BAN CHI EUM;;;; -316D;HANGUL LETTER RIEUL-YEORINHIEUH;Lo;0;L; 11D9;;;;N;HANGUL LETTER LIEUL YEOLIN HIEUH;;;; -316E;HANGUL LETTER MIEUM-PIEUP;Lo;0;L; 111C;;;;N;HANGUL LETTER MIEUM BIEUB;;;; -316F;HANGUL LETTER MIEUM-SIOS;Lo;0;L; 11DD;;;;N;HANGUL LETTER MIEUM SIOS;;;; -3170;HANGUL LETTER MIEUM-PANSIOS;Lo;0;L; 11DF;;;;N;HANGUL LETTER BIEUB BAN CHI EUM;;;; -3171;HANGUL LETTER KAPYEOUNMIEUM;Lo;0;L; 111D;;;;N;HANGUL LETTER MIEUM SUN GYEONG EUM;;;; -3172;HANGUL LETTER PIEUP-KIYEOK;Lo;0;L; 111E;;;;N;HANGUL LETTER BIEUB GIYEOG;;;; -3173;HANGUL LETTER PIEUP-TIKEUT;Lo;0;L; 1120;;;;N;HANGUL LETTER BIEUB DIGEUD;;;; -3174;HANGUL LETTER PIEUP-SIOS-KIYEOK;Lo;0;L; 1122;;;;N;HANGUL LETTER BIEUB SIOS GIYEOG;;;; -3175;HANGUL LETTER PIEUP-SIOS-TIKEUT;Lo;0;L; 1123;;;;N;HANGUL LETTER BIEUB SIOS DIGEUD;;;; -3176;HANGUL LETTER PIEUP-CIEUC;Lo;0;L; 1127;;;;N;HANGUL LETTER BIEUB JIEUJ;;;; -3177;HANGUL LETTER PIEUP-THIEUTH;Lo;0;L; 1129;;;;N;HANGUL LETTER BIEUB TIEUT;;;; -3178;HANGUL LETTER KAPYEOUNPIEUP;Lo;0;L; 112B;;;;N;HANGUL LETTER BIEUB SUN GYEONG EUM;;;; -3179;HANGUL LETTER KAPYEOUNSSANGPIEUP;Lo;0;L; 112C;;;;N;HANGUL LETTER SSANG BIEUB SUN GYEONG EUM;;;; -317A;HANGUL LETTER SIOS-KIYEOK;Lo;0;L; 112D;;;;N;HANGUL LETTER SIOS GIYEOG;;;; -317B;HANGUL LETTER SIOS-NIEUN;Lo;0;L; 112E;;;;N;HANGUL LETTER SIOS NIEUN;;;; -317C;HANGUL LETTER SIOS-TIKEUT;Lo;0;L; 112F;;;;N;HANGUL LETTER SIOS DIGEUD;;;; -317D;HANGUL LETTER SIOS-PIEUP;Lo;0;L; 1132;;;;N;HANGUL LETTER SIOS BIEUB;;;; -317E;HANGUL LETTER SIOS-CIEUC;Lo;0;L; 1136;;;;N;HANGUL LETTER SIOS JIEUJ;;;; -317F;HANGUL LETTER PANSIOS;Lo;0;L; 1140;;;;N;HANGUL LETTER BAN CHI EUM;;;; -3180;HANGUL LETTER SSANGIEUNG;Lo;0;L; 1147;;;;N;HANGUL LETTER SSANG IEUNG;;;; -3181;HANGUL LETTER YESIEUNG;Lo;0;L; 114C;;;;N;HANGUL LETTER NGIEUNG;;;; -3182;HANGUL LETTER YESIEUNG-SIOS;Lo;0;L; 11F1;;;;N;HANGUL LETTER NGIEUNG SIOS;;;; -3183;HANGUL LETTER YESIEUNG-PANSIOS;Lo;0;L; 11F2;;;;N;HANGUL LETTER NGIEUNG BAN CHI EUM;;;; -3184;HANGUL LETTER KAPYEOUNPHIEUPH;Lo;0;L; 1157;;;;N;HANGUL LETTER PIEUP SUN GYEONG EUM;;;; -3185;HANGUL LETTER SSANGHIEUH;Lo;0;L; 1158;;;;N;HANGUL LETTER SSANG HIEUH;;;; -3186;HANGUL LETTER YEORINHIEUH;Lo;0;L; 1159;;;;N;HANGUL LETTER YEOLIN HIEUH;;;; -3187;HANGUL LETTER YO-YA;Lo;0;L; 1184;;;;N;HANGUL LETTER YOYA;;;; -3188;HANGUL LETTER YO-YAE;Lo;0;L; 1185;;;;N;HANGUL LETTER YOYAE;;;; -3189;HANGUL LETTER YO-I;Lo;0;L; 1188;;;;N;HANGUL LETTER YOI;;;; -318A;HANGUL LETTER YU-YEO;Lo;0;L; 1191;;;;N;HANGUL LETTER YUYEO;;;; -318B;HANGUL LETTER YU-YE;Lo;0;L; 1192;;;;N;HANGUL LETTER YUYE;;;; -318C;HANGUL LETTER YU-I;Lo;0;L; 1194;;;;N;HANGUL LETTER YUI;;;; -318D;HANGUL LETTER ARAEA;Lo;0;L; 119E;;;;N;HANGUL LETTER ALAE A;;;; -318E;HANGUL LETTER ARAEAE;Lo;0;L; 11A1;;;;N;HANGUL LETTER ALAE AE;;;; -3190;IDEOGRAPHIC ANNOTATION LINKING MARK;So;0;L;;;;;N;KANBUN TATETEN;;;; -3191;IDEOGRAPHIC ANNOTATION REVERSE MARK;So;0;L;;;;;N;KAERITEN RE;;;; -3192;IDEOGRAPHIC ANNOTATION ONE MARK;No;0;L; 4E00;;;1;N;KAERITEN ITI;;;; -3193;IDEOGRAPHIC ANNOTATION TWO MARK;No;0;L; 4E8C;;;2;N;KAERITEN NI;;;; -3194;IDEOGRAPHIC ANNOTATION THREE MARK;No;0;L; 4E09;;;3;N;KAERITEN SAN;;;; -3195;IDEOGRAPHIC ANNOTATION FOUR MARK;No;0;L; 56DB;;;4;N;KAERITEN SI;;;; -3196;IDEOGRAPHIC ANNOTATION TOP MARK;So;0;L; 4E0A;;;;N;KAERITEN ZYOU;;;; -3197;IDEOGRAPHIC ANNOTATION MIDDLE MARK;So;0;L; 4E2D;;;;N;KAERITEN TYUU;;;; -3198;IDEOGRAPHIC ANNOTATION BOTTOM MARK;So;0;L; 4E0B;;;;N;KAERITEN GE;;;; -3199;IDEOGRAPHIC ANNOTATION FIRST MARK;So;0;L; 7532;;;;N;KAERITEN KOU;;;; -319A;IDEOGRAPHIC ANNOTATION SECOND MARK;So;0;L; 4E59;;;;N;KAERITEN OTU;;;; -319B;IDEOGRAPHIC ANNOTATION THIRD MARK;So;0;L; 4E19;;;;N;KAERITEN HEI;;;; -319C;IDEOGRAPHIC ANNOTATION FOURTH MARK;So;0;L; 4E01;;;;N;KAERITEN TEI;;;; -319D;IDEOGRAPHIC ANNOTATION HEAVEN MARK;So;0;L; 5929;;;;N;KAERITEN TEN;;;; -319E;IDEOGRAPHIC ANNOTATION EARTH MARK;So;0;L; 5730;;;;N;KAERITEN TI;;;; -319F;IDEOGRAPHIC ANNOTATION MAN MARK;So;0;L; 4EBA;;;;N;KAERITEN ZIN;;;; -31A0;BOPOMOFO LETTER BU;Lo;0;L;;;;;N;;;;; -31A1;BOPOMOFO LETTER ZI;Lo;0;L;;;;;N;;;;; -31A2;BOPOMOFO LETTER JI;Lo;0;L;;;;;N;;;;; -31A3;BOPOMOFO LETTER GU;Lo;0;L;;;;;N;;;;; -31A4;BOPOMOFO LETTER EE;Lo;0;L;;;;;N;;;;; -31A5;BOPOMOFO LETTER ENN;Lo;0;L;;;;;N;;;;; -31A6;BOPOMOFO LETTER OO;Lo;0;L;;;;;N;;;;; -31A7;BOPOMOFO LETTER ONN;Lo;0;L;;;;;N;;;;; -31A8;BOPOMOFO LETTER IR;Lo;0;L;;;;;N;;;;; -31A9;BOPOMOFO LETTER ANN;Lo;0;L;;;;;N;;;;; -31AA;BOPOMOFO LETTER INN;Lo;0;L;;;;;N;;;;; -31AB;BOPOMOFO LETTER UNN;Lo;0;L;;;;;N;;;;; -31AC;BOPOMOFO LETTER IM;Lo;0;L;;;;;N;;;;; -31AD;BOPOMOFO LETTER NGG;Lo;0;L;;;;;N;;;;; -31AE;BOPOMOFO LETTER AINN;Lo;0;L;;;;;N;;;;; -31AF;BOPOMOFO LETTER AUNN;Lo;0;L;;;;;N;;;;; -31B0;BOPOMOFO LETTER AM;Lo;0;L;;;;;N;;;;; -31B1;BOPOMOFO LETTER OM;Lo;0;L;;;;;N;;;;; -31B2;BOPOMOFO LETTER ONG;Lo;0;L;;;;;N;;;;; -31B3;BOPOMOFO LETTER INNN;Lo;0;L;;;;;N;;;;; -31B4;BOPOMOFO FINAL LETTER P;Lo;0;L;;;;;N;;;;; -31B5;BOPOMOFO FINAL LETTER T;Lo;0;L;;;;;N;;;;; -31B6;BOPOMOFO FINAL LETTER K;Lo;0;L;;;;;N;;;;; -31B7;BOPOMOFO FINAL LETTER H;Lo;0;L;;;;;N;;;;; -31C0;CJK STROKE T;So;0;ON;;;;;N;;;;; -31C1;CJK STROKE WG;So;0;ON;;;;;N;;;;; -31C2;CJK STROKE XG;So;0;ON;;;;;N;;;;; -31C3;CJK STROKE BXG;So;0;ON;;;;;N;;;;; -31C4;CJK STROKE SW;So;0;ON;;;;;N;;;;; -31C5;CJK STROKE HZZ;So;0;ON;;;;;N;;;;; -31C6;CJK STROKE HZG;So;0;ON;;;;;N;;;;; -31C7;CJK STROKE HP;So;0;ON;;;;;N;;;;; -31C8;CJK STROKE HZWG;So;0;ON;;;;;N;;;;; -31C9;CJK STROKE SZWG;So;0;ON;;;;;N;;;;; -31CA;CJK STROKE HZT;So;0;ON;;;;;N;;;;; -31CB;CJK STROKE HZZP;So;0;ON;;;;;N;;;;; -31CC;CJK STROKE HPWG;So;0;ON;;;;;N;;;;; -31CD;CJK STROKE HZW;So;0;ON;;;;;N;;;;; -31CE;CJK STROKE HZZZ;So;0;ON;;;;;N;;;;; -31CF;CJK STROKE N;So;0;ON;;;;;N;;;;; -31D0;CJK STROKE H;So;0;ON;;;;;N;;;;; -31D1;CJK STROKE S;So;0;ON;;;;;N;;;;; -31D2;CJK STROKE P;So;0;ON;;;;;N;;;;; -31D3;CJK STROKE SP;So;0;ON;;;;;N;;;;; -31D4;CJK STROKE D;So;0;ON;;;;;N;;;;; -31D5;CJK STROKE HZ;So;0;ON;;;;;N;;;;; -31D6;CJK STROKE HG;So;0;ON;;;;;N;;;;; -31D7;CJK STROKE SZ;So;0;ON;;;;;N;;;;; -31D8;CJK STROKE SWZ;So;0;ON;;;;;N;;;;; -31D9;CJK STROKE ST;So;0;ON;;;;;N;;;;; -31DA;CJK STROKE SG;So;0;ON;;;;;N;;;;; -31DB;CJK STROKE PD;So;0;ON;;;;;N;;;;; -31DC;CJK STROKE PZ;So;0;ON;;;;;N;;;;; -31DD;CJK STROKE TN;So;0;ON;;;;;N;;;;; -31DE;CJK STROKE SZZ;So;0;ON;;;;;N;;;;; -31DF;CJK STROKE SWG;So;0;ON;;;;;N;;;;; -31E0;CJK STROKE HXWG;So;0;ON;;;;;N;;;;; -31E1;CJK STROKE HZZZG;So;0;ON;;;;;N;;;;; -31E2;CJK STROKE PG;So;0;ON;;;;;N;;;;; -31E3;CJK STROKE Q;So;0;ON;;;;;N;;;;; -31F0;KATAKANA LETTER SMALL KU;Lo;0;L;;;;;N;;;;; -31F1;KATAKANA LETTER SMALL SI;Lo;0;L;;;;;N;;;;; -31F2;KATAKANA LETTER SMALL SU;Lo;0;L;;;;;N;;;;; -31F3;KATAKANA LETTER SMALL TO;Lo;0;L;;;;;N;;;;; -31F4;KATAKANA LETTER SMALL NU;Lo;0;L;;;;;N;;;;; -31F5;KATAKANA LETTER SMALL HA;Lo;0;L;;;;;N;;;;; -31F6;KATAKANA LETTER SMALL HI;Lo;0;L;;;;;N;;;;; -31F7;KATAKANA LETTER SMALL HU;Lo;0;L;;;;;N;;;;; -31F8;KATAKANA LETTER SMALL HE;Lo;0;L;;;;;N;;;;; -31F9;KATAKANA LETTER SMALL HO;Lo;0;L;;;;;N;;;;; -31FA;KATAKANA LETTER SMALL MU;Lo;0;L;;;;;N;;;;; -31FB;KATAKANA LETTER SMALL RA;Lo;0;L;;;;;N;;;;; -31FC;KATAKANA LETTER SMALL RI;Lo;0;L;;;;;N;;;;; -31FD;KATAKANA LETTER SMALL RU;Lo;0;L;;;;;N;;;;; -31FE;KATAKANA LETTER SMALL RE;Lo;0;L;;;;;N;;;;; -31FF;KATAKANA LETTER SMALL RO;Lo;0;L;;;;;N;;;;; -3200;PARENTHESIZED HANGUL KIYEOK;So;0;L; 0028 1100 0029;;;;N;PARENTHESIZED HANGUL GIYEOG;;;; -3201;PARENTHESIZED HANGUL NIEUN;So;0;L; 0028 1102 0029;;;;N;;;;; -3202;PARENTHESIZED HANGUL TIKEUT;So;0;L; 0028 1103 0029;;;;N;PARENTHESIZED HANGUL DIGEUD;;;; -3203;PARENTHESIZED HANGUL RIEUL;So;0;L; 0028 1105 0029;;;;N;PARENTHESIZED HANGUL LIEUL;;;; -3204;PARENTHESIZED HANGUL MIEUM;So;0;L; 0028 1106 0029;;;;N;;;;; -3205;PARENTHESIZED HANGUL PIEUP;So;0;L; 0028 1107 0029;;;;N;PARENTHESIZED HANGUL BIEUB;;;; -3206;PARENTHESIZED HANGUL SIOS;So;0;L; 0028 1109 0029;;;;N;;;;; -3207;PARENTHESIZED HANGUL IEUNG;So;0;L; 0028 110B 0029;;;;N;;;;; -3208;PARENTHESIZED HANGUL CIEUC;So;0;L; 0028 110C 0029;;;;N;PARENTHESIZED HANGUL JIEUJ;;;; -3209;PARENTHESIZED HANGUL CHIEUCH;So;0;L; 0028 110E 0029;;;;N;PARENTHESIZED HANGUL CIEUC;;;; -320A;PARENTHESIZED HANGUL KHIEUKH;So;0;L; 0028 110F 0029;;;;N;PARENTHESIZED HANGUL KIYEOK;;;; -320B;PARENTHESIZED HANGUL THIEUTH;So;0;L; 0028 1110 0029;;;;N;PARENTHESIZED HANGUL TIEUT;;;; -320C;PARENTHESIZED HANGUL PHIEUPH;So;0;L; 0028 1111 0029;;;;N;PARENTHESIZED HANGUL PIEUP;;;; -320D;PARENTHESIZED HANGUL HIEUH;So;0;L; 0028 1112 0029;;;;N;;;;; -320E;PARENTHESIZED HANGUL KIYEOK A;So;0;L; 0028 1100 1161 0029;;;;N;PARENTHESIZED HANGUL GA;;;; -320F;PARENTHESIZED HANGUL NIEUN A;So;0;L; 0028 1102 1161 0029;;;;N;PARENTHESIZED HANGUL NA;;;; -3210;PARENTHESIZED HANGUL TIKEUT A;So;0;L; 0028 1103 1161 0029;;;;N;PARENTHESIZED HANGUL DA;;;; -3211;PARENTHESIZED HANGUL RIEUL A;So;0;L; 0028 1105 1161 0029;;;;N;PARENTHESIZED HANGUL LA;;;; -3212;PARENTHESIZED HANGUL MIEUM A;So;0;L; 0028 1106 1161 0029;;;;N;PARENTHESIZED HANGUL MA;;;; -3213;PARENTHESIZED HANGUL PIEUP A;So;0;L; 0028 1107 1161 0029;;;;N;PARENTHESIZED HANGUL BA;;;; -3214;PARENTHESIZED HANGUL SIOS A;So;0;L; 0028 1109 1161 0029;;;;N;PARENTHESIZED HANGUL SA;;;; -3215;PARENTHESIZED HANGUL IEUNG A;So;0;L; 0028 110B 1161 0029;;;;N;PARENTHESIZED HANGUL A;;;; -3216;PARENTHESIZED HANGUL CIEUC A;So;0;L; 0028 110C 1161 0029;;;;N;PARENTHESIZED HANGUL JA;;;; -3217;PARENTHESIZED HANGUL CHIEUCH A;So;0;L; 0028 110E 1161 0029;;;;N;PARENTHESIZED HANGUL CA;;;; -3218;PARENTHESIZED HANGUL KHIEUKH A;So;0;L; 0028 110F 1161 0029;;;;N;PARENTHESIZED HANGUL KA;;;; -3219;PARENTHESIZED HANGUL THIEUTH A;So;0;L; 0028 1110 1161 0029;;;;N;PARENTHESIZED HANGUL TA;;;; -321A;PARENTHESIZED HANGUL PHIEUPH A;So;0;L; 0028 1111 1161 0029;;;;N;PARENTHESIZED HANGUL PA;;;; -321B;PARENTHESIZED HANGUL HIEUH A;So;0;L; 0028 1112 1161 0029;;;;N;PARENTHESIZED HANGUL HA;;;; -321C;PARENTHESIZED HANGUL CIEUC U;So;0;L; 0028 110C 116E 0029;;;;N;PARENTHESIZED HANGUL JU;;;; -321D;PARENTHESIZED KOREAN CHARACTER OJEON;So;0;ON; 0028 110B 1169 110C 1165 11AB 0029;;;;N;;;;; -321E;PARENTHESIZED KOREAN CHARACTER O HU;So;0;ON; 0028 110B 1169 1112 116E 0029;;;;N;;;;; -3220;PARENTHESIZED IDEOGRAPH ONE;No;0;L; 0028 4E00 0029;;;1;N;;;;; -3221;PARENTHESIZED IDEOGRAPH TWO;No;0;L; 0028 4E8C 0029;;;2;N;;;;; -3222;PARENTHESIZED IDEOGRAPH THREE;No;0;L; 0028 4E09 0029;;;3;N;;;;; -3223;PARENTHESIZED IDEOGRAPH FOUR;No;0;L; 0028 56DB 0029;;;4;N;;;;; -3224;PARENTHESIZED IDEOGRAPH FIVE;No;0;L; 0028 4E94 0029;;;5;N;;;;; -3225;PARENTHESIZED IDEOGRAPH SIX;No;0;L; 0028 516D 0029;;;6;N;;;;; -3226;PARENTHESIZED IDEOGRAPH SEVEN;No;0;L; 0028 4E03 0029;;;7;N;;;;; -3227;PARENTHESIZED IDEOGRAPH EIGHT;No;0;L; 0028 516B 0029;;;8;N;;;;; -3228;PARENTHESIZED IDEOGRAPH NINE;No;0;L; 0028 4E5D 0029;;;9;N;;;;; -3229;PARENTHESIZED IDEOGRAPH TEN;No;0;L; 0028 5341 0029;;;10;N;;;;; -322A;PARENTHESIZED IDEOGRAPH MOON;So;0;L; 0028 6708 0029;;;;N;;;;; -322B;PARENTHESIZED IDEOGRAPH FIRE;So;0;L; 0028 706B 0029;;;;N;;;;; -322C;PARENTHESIZED IDEOGRAPH WATER;So;0;L; 0028 6C34 0029;;;;N;;;;; -322D;PARENTHESIZED IDEOGRAPH WOOD;So;0;L; 0028 6728 0029;;;;N;;;;; -322E;PARENTHESIZED IDEOGRAPH METAL;So;0;L; 0028 91D1 0029;;;;N;;;;; -322F;PARENTHESIZED IDEOGRAPH EARTH;So;0;L; 0028 571F 0029;;;;N;;;;; -3230;PARENTHESIZED IDEOGRAPH SUN;So;0;L; 0028 65E5 0029;;;;N;;;;; -3231;PARENTHESIZED IDEOGRAPH STOCK;So;0;L; 0028 682A 0029;;;;N;;;;; -3232;PARENTHESIZED IDEOGRAPH HAVE;So;0;L; 0028 6709 0029;;;;N;;;;; -3233;PARENTHESIZED IDEOGRAPH SOCIETY;So;0;L; 0028 793E 0029;;;;N;;;;; -3234;PARENTHESIZED IDEOGRAPH NAME;So;0;L; 0028 540D 0029;;;;N;;;;; -3235;PARENTHESIZED IDEOGRAPH SPECIAL;So;0;L; 0028 7279 0029;;;;N;;;;; -3236;PARENTHESIZED IDEOGRAPH FINANCIAL;So;0;L; 0028 8CA1 0029;;;;N;;;;; -3237;PARENTHESIZED IDEOGRAPH CONGRATULATION;So;0;L; 0028 795D 0029;;;;N;;;;; -3238;PARENTHESIZED IDEOGRAPH LABOR;So;0;L; 0028 52B4 0029;;;;N;;;;; -3239;PARENTHESIZED IDEOGRAPH REPRESENT;So;0;L; 0028 4EE3 0029;;;;N;;;;; -323A;PARENTHESIZED IDEOGRAPH CALL;So;0;L; 0028 547C 0029;;;;N;;;;; -323B;PARENTHESIZED IDEOGRAPH STUDY;So;0;L; 0028 5B66 0029;;;;N;;;;; -323C;PARENTHESIZED IDEOGRAPH SUPERVISE;So;0;L; 0028 76E3 0029;;;;N;;;;; -323D;PARENTHESIZED IDEOGRAPH ENTERPRISE;So;0;L; 0028 4F01 0029;;;;N;;;;; -323E;PARENTHESIZED IDEOGRAPH RESOURCE;So;0;L; 0028 8CC7 0029;;;;N;;;;; -323F;PARENTHESIZED IDEOGRAPH ALLIANCE;So;0;L; 0028 5354 0029;;;;N;;;;; -3240;PARENTHESIZED IDEOGRAPH FESTIVAL;So;0;L; 0028 796D 0029;;;;N;;;;; -3241;PARENTHESIZED IDEOGRAPH REST;So;0;L; 0028 4F11 0029;;;;N;;;;; -3242;PARENTHESIZED IDEOGRAPH SELF;So;0;L; 0028 81EA 0029;;;;N;;;;; -3243;PARENTHESIZED IDEOGRAPH REACH;So;0;L; 0028 81F3 0029;;;;N;;;;; -3244;CIRCLED IDEOGRAPH QUESTION;So;0;L; 554F;;;;N;;;;; -3245;CIRCLED IDEOGRAPH KINDERGARTEN;So;0;L; 5E7C;;;;N;;;;; -3246;CIRCLED IDEOGRAPH SCHOOL;So;0;L; 6587;;;;N;;;;; -3247;CIRCLED IDEOGRAPH KOTO;So;0;L; 7B8F;;;;N;;;;; -3248;CIRCLED NUMBER TEN ON BLACK SQUARE;So;0;L;;;;;N;;;;; -3249;CIRCLED NUMBER TWENTY ON BLACK SQUARE;So;0;L;;;;;N;;;;; -324A;CIRCLED NUMBER THIRTY ON BLACK SQUARE;So;0;L;;;;;N;;;;; -324B;CIRCLED NUMBER FORTY ON BLACK SQUARE;So;0;L;;;;;N;;;;; -324C;CIRCLED NUMBER FIFTY ON BLACK SQUARE;So;0;L;;;;;N;;;;; -324D;CIRCLED NUMBER SIXTY ON BLACK SQUARE;So;0;L;;;;;N;;;;; -324E;CIRCLED NUMBER SEVENTY ON BLACK SQUARE;So;0;L;;;;;N;;;;; -324F;CIRCLED NUMBER EIGHTY ON BLACK SQUARE;So;0;L;;;;;N;;;;; -3250;PARTNERSHIP SIGN;So;0;ON; 0050 0054 0045;;;;N;;;;; -3251;CIRCLED NUMBER TWENTY ONE;No;0;ON; 0032 0031;;;21;N;;;;; -3252;CIRCLED NUMBER TWENTY TWO;No;0;ON; 0032 0032;;;22;N;;;;; -3253;CIRCLED NUMBER TWENTY THREE;No;0;ON; 0032 0033;;;23;N;;;;; -3254;CIRCLED NUMBER TWENTY FOUR;No;0;ON; 0032 0034;;;24;N;;;;; -3255;CIRCLED NUMBER TWENTY FIVE;No;0;ON; 0032 0035;;;25;N;;;;; -3256;CIRCLED NUMBER TWENTY SIX;No;0;ON; 0032 0036;;;26;N;;;;; -3257;CIRCLED NUMBER TWENTY SEVEN;No;0;ON; 0032 0037;;;27;N;;;;; -3258;CIRCLED NUMBER TWENTY EIGHT;No;0;ON; 0032 0038;;;28;N;;;;; -3259;CIRCLED NUMBER TWENTY NINE;No;0;ON; 0032 0039;;;29;N;;;;; -325A;CIRCLED NUMBER THIRTY;No;0;ON; 0033 0030;;;30;N;;;;; -325B;CIRCLED NUMBER THIRTY ONE;No;0;ON; 0033 0031;;;31;N;;;;; -325C;CIRCLED NUMBER THIRTY TWO;No;0;ON; 0033 0032;;;32;N;;;;; -325D;CIRCLED NUMBER THIRTY THREE;No;0;ON; 0033 0033;;;33;N;;;;; -325E;CIRCLED NUMBER THIRTY FOUR;No;0;ON; 0033 0034;;;34;N;;;;; -325F;CIRCLED NUMBER THIRTY FIVE;No;0;ON; 0033 0035;;;35;N;;;;; -3260;CIRCLED HANGUL KIYEOK;So;0;L; 1100;;;;N;CIRCLED HANGUL GIYEOG;;;; -3261;CIRCLED HANGUL NIEUN;So;0;L; 1102;;;;N;;;;; -3262;CIRCLED HANGUL TIKEUT;So;0;L; 1103;;;;N;CIRCLED HANGUL DIGEUD;;;; -3263;CIRCLED HANGUL RIEUL;So;0;L; 1105;;;;N;CIRCLED HANGUL LIEUL;;;; -3264;CIRCLED HANGUL MIEUM;So;0;L; 1106;;;;N;;;;; -3265;CIRCLED HANGUL PIEUP;So;0;L; 1107;;;;N;CIRCLED HANGUL BIEUB;;;; -3266;CIRCLED HANGUL SIOS;So;0;L; 1109;;;;N;;;;; -3267;CIRCLED HANGUL IEUNG;So;0;L; 110B;;;;N;;;;; -3268;CIRCLED HANGUL CIEUC;So;0;L; 110C;;;;N;CIRCLED HANGUL JIEUJ;;;; -3269;CIRCLED HANGUL CHIEUCH;So;0;L; 110E;;;;N;CIRCLED HANGUL CIEUC;;;; -326A;CIRCLED HANGUL KHIEUKH;So;0;L; 110F;;;;N;CIRCLED HANGUL KIYEOK;;;; -326B;CIRCLED HANGUL THIEUTH;So;0;L; 1110;;;;N;CIRCLED HANGUL TIEUT;;;; -326C;CIRCLED HANGUL PHIEUPH;So;0;L; 1111;;;;N;CIRCLED HANGUL PIEUP;;;; -326D;CIRCLED HANGUL HIEUH;So;0;L; 1112;;;;N;;;;; -326E;CIRCLED HANGUL KIYEOK A;So;0;L; 1100 1161;;;;N;CIRCLED HANGUL GA;;;; -326F;CIRCLED HANGUL NIEUN A;So;0;L; 1102 1161;;;;N;CIRCLED HANGUL NA;;;; -3270;CIRCLED HANGUL TIKEUT A;So;0;L; 1103 1161;;;;N;CIRCLED HANGUL DA;;;; -3271;CIRCLED HANGUL RIEUL A;So;0;L; 1105 1161;;;;N;CIRCLED HANGUL LA;;;; -3272;CIRCLED HANGUL MIEUM A;So;0;L; 1106 1161;;;;N;CIRCLED HANGUL MA;;;; -3273;CIRCLED HANGUL PIEUP A;So;0;L; 1107 1161;;;;N;CIRCLED HANGUL BA;;;; -3274;CIRCLED HANGUL SIOS A;So;0;L; 1109 1161;;;;N;CIRCLED HANGUL SA;;;; -3275;CIRCLED HANGUL IEUNG A;So;0;L; 110B 1161;;;;N;CIRCLED HANGUL A;;;; -3276;CIRCLED HANGUL CIEUC A;So;0;L; 110C 1161;;;;N;CIRCLED HANGUL JA;;;; -3277;CIRCLED HANGUL CHIEUCH A;So;0;L; 110E 1161;;;;N;CIRCLED HANGUL CA;;;; -3278;CIRCLED HANGUL KHIEUKH A;So;0;L; 110F 1161;;;;N;CIRCLED HANGUL KA;;;; -3279;CIRCLED HANGUL THIEUTH A;So;0;L; 1110 1161;;;;N;CIRCLED HANGUL TA;;;; -327A;CIRCLED HANGUL PHIEUPH A;So;0;L; 1111 1161;;;;N;CIRCLED HANGUL PA;;;; -327B;CIRCLED HANGUL HIEUH A;So;0;L; 1112 1161;;;;N;CIRCLED HANGUL HA;;;; -327C;CIRCLED KOREAN CHARACTER CHAMKO;So;0;ON; 110E 1161 11B7 1100 1169;;;;N;;;;; -327D;CIRCLED KOREAN CHARACTER JUEUI;So;0;ON; 110C 116E 110B 1174;;;;N;;;;; -327E;CIRCLED HANGUL IEUNG U;So;0;ON; 110B 116E;;;;N;;;;; -327F;KOREAN STANDARD SYMBOL;So;0;L;;;;;N;;;;; -3280;CIRCLED IDEOGRAPH ONE;No;0;L; 4E00;;;1;N;;;;; -3281;CIRCLED IDEOGRAPH TWO;No;0;L; 4E8C;;;2;N;;;;; -3282;CIRCLED IDEOGRAPH THREE;No;0;L; 4E09;;;3;N;;;;; -3283;CIRCLED IDEOGRAPH FOUR;No;0;L; 56DB;;;4;N;;;;; -3284;CIRCLED IDEOGRAPH FIVE;No;0;L; 4E94;;;5;N;;;;; -3285;CIRCLED IDEOGRAPH SIX;No;0;L; 516D;;;6;N;;;;; -3286;CIRCLED IDEOGRAPH SEVEN;No;0;L; 4E03;;;7;N;;;;; -3287;CIRCLED IDEOGRAPH EIGHT;No;0;L; 516B;;;8;N;;;;; -3288;CIRCLED IDEOGRAPH NINE;No;0;L; 4E5D;;;9;N;;;;; -3289;CIRCLED IDEOGRAPH TEN;No;0;L; 5341;;;10;N;;;;; -328A;CIRCLED IDEOGRAPH MOON;So;0;L; 6708;;;;N;;;;; -328B;CIRCLED IDEOGRAPH FIRE;So;0;L; 706B;;;;N;;;;; -328C;CIRCLED IDEOGRAPH WATER;So;0;L; 6C34;;;;N;;;;; -328D;CIRCLED IDEOGRAPH WOOD;So;0;L; 6728;;;;N;;;;; -328E;CIRCLED IDEOGRAPH METAL;So;0;L; 91D1;;;;N;;;;; -328F;CIRCLED IDEOGRAPH EARTH;So;0;L; 571F;;;;N;;;;; -3290;CIRCLED IDEOGRAPH SUN;So;0;L; 65E5;;;;N;;;;; -3291;CIRCLED IDEOGRAPH STOCK;So;0;L; 682A;;;;N;;;;; -3292;CIRCLED IDEOGRAPH HAVE;So;0;L; 6709;;;;N;;;;; -3293;CIRCLED IDEOGRAPH SOCIETY;So;0;L; 793E;;;;N;;;;; -3294;CIRCLED IDEOGRAPH NAME;So;0;L; 540D;;;;N;;;;; -3295;CIRCLED IDEOGRAPH SPECIAL;So;0;L; 7279;;;;N;;;;; -3296;CIRCLED IDEOGRAPH FINANCIAL;So;0;L; 8CA1;;;;N;;;;; -3297;CIRCLED IDEOGRAPH CONGRATULATION;So;0;L; 795D;;;;N;;;;; -3298;CIRCLED IDEOGRAPH LABOR;So;0;L; 52B4;;;;N;;;;; -3299;CIRCLED IDEOGRAPH SECRET;So;0;L; 79D8;;;;N;;;;; -329A;CIRCLED IDEOGRAPH MALE;So;0;L; 7537;;;;N;;;;; -329B;CIRCLED IDEOGRAPH FEMALE;So;0;L; 5973;;;;N;;;;; -329C;CIRCLED IDEOGRAPH SUITABLE;So;0;L; 9069;;;;N;;;;; -329D;CIRCLED IDEOGRAPH EXCELLENT;So;0;L; 512A;;;;N;;;;; -329E;CIRCLED IDEOGRAPH PRINT;So;0;L; 5370;;;;N;;;;; -329F;CIRCLED IDEOGRAPH ATTENTION;So;0;L; 6CE8;;;;N;;;;; -32A0;CIRCLED IDEOGRAPH ITEM;So;0;L; 9805;;;;N;;;;; -32A1;CIRCLED IDEOGRAPH REST;So;0;L; 4F11;;;;N;;;;; -32A2;CIRCLED IDEOGRAPH COPY;So;0;L; 5199;;;;N;;;;; -32A3;CIRCLED IDEOGRAPH CORRECT;So;0;L; 6B63;;;;N;;;;; -32A4;CIRCLED IDEOGRAPH HIGH;So;0;L; 4E0A;;;;N;;;;; -32A5;CIRCLED IDEOGRAPH CENTRE;So;0;L; 4E2D;;;;N;CIRCLED IDEOGRAPH CENTER;;;; -32A6;CIRCLED IDEOGRAPH LOW;So;0;L; 4E0B;;;;N;;;;; -32A7;CIRCLED IDEOGRAPH LEFT;So;0;L; 5DE6;;;;N;;;;; -32A8;CIRCLED IDEOGRAPH RIGHT;So;0;L; 53F3;;;;N;;;;; -32A9;CIRCLED IDEOGRAPH MEDICINE;So;0;L; 533B;;;;N;;;;; -32AA;CIRCLED IDEOGRAPH RELIGION;So;0;L; 5B97;;;;N;;;;; -32AB;CIRCLED IDEOGRAPH STUDY;So;0;L; 5B66;;;;N;;;;; -32AC;CIRCLED IDEOGRAPH SUPERVISE;So;0;L; 76E3;;;;N;;;;; -32AD;CIRCLED IDEOGRAPH ENTERPRISE;So;0;L; 4F01;;;;N;;;;; -32AE;CIRCLED IDEOGRAPH RESOURCE;So;0;L; 8CC7;;;;N;;;;; -32AF;CIRCLED IDEOGRAPH ALLIANCE;So;0;L; 5354;;;;N;;;;; -32B0;CIRCLED IDEOGRAPH NIGHT;So;0;L; 591C;;;;N;;;;; -32B1;CIRCLED NUMBER THIRTY SIX;No;0;ON; 0033 0036;;;36;N;;;;; -32B2;CIRCLED NUMBER THIRTY SEVEN;No;0;ON; 0033 0037;;;37;N;;;;; -32B3;CIRCLED NUMBER THIRTY EIGHT;No;0;ON; 0033 0038;;;38;N;;;;; -32B4;CIRCLED NUMBER THIRTY NINE;No;0;ON; 0033 0039;;;39;N;;;;; -32B5;CIRCLED NUMBER FORTY;No;0;ON; 0034 0030;;;40;N;;;;; -32B6;CIRCLED NUMBER FORTY ONE;No;0;ON; 0034 0031;;;41;N;;;;; -32B7;CIRCLED NUMBER FORTY TWO;No;0;ON; 0034 0032;;;42;N;;;;; -32B8;CIRCLED NUMBER FORTY THREE;No;0;ON; 0034 0033;;;43;N;;;;; -32B9;CIRCLED NUMBER FORTY FOUR;No;0;ON; 0034 0034;;;44;N;;;;; -32BA;CIRCLED NUMBER FORTY FIVE;No;0;ON; 0034 0035;;;45;N;;;;; -32BB;CIRCLED NUMBER FORTY SIX;No;0;ON; 0034 0036;;;46;N;;;;; -32BC;CIRCLED NUMBER FORTY SEVEN;No;0;ON; 0034 0037;;;47;N;;;;; -32BD;CIRCLED NUMBER FORTY EIGHT;No;0;ON; 0034 0038;;;48;N;;;;; -32BE;CIRCLED NUMBER FORTY NINE;No;0;ON; 0034 0039;;;49;N;;;;; -32BF;CIRCLED NUMBER FIFTY;No;0;ON; 0035 0030;;;50;N;;;;; -32C0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY;So;0;L; 0031 6708;;;;N;;;;; -32C1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY;So;0;L; 0032 6708;;;;N;;;;; -32C2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH;So;0;L; 0033 6708;;;;N;;;;; -32C3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL;So;0;L; 0034 6708;;;;N;;;;; -32C4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY;So;0;L; 0035 6708;;;;N;;;;; -32C5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE;So;0;L; 0036 6708;;;;N;;;;; -32C6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY;So;0;L; 0037 6708;;;;N;;;;; -32C7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST;So;0;L; 0038 6708;;;;N;;;;; -32C8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER;So;0;L; 0039 6708;;;;N;;;;; -32C9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER;So;0;L; 0031 0030 6708;;;;N;;;;; -32CA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER;So;0;L; 0031 0031 6708;;;;N;;;;; -32CB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER;So;0;L; 0031 0032 6708;;;;N;;;;; -32CC;SQUARE HG;So;0;ON; 0048 0067;;;;N;;;;; -32CD;SQUARE ERG;So;0;ON; 0065 0072 0067;;;;N;;;;; -32CE;SQUARE EV;So;0;ON; 0065 0056;;;;N;;;;; -32CF;LIMITED LIABILITY SIGN;So;0;ON; 004C 0054 0044;;;;N;;;;; -32D0;CIRCLED KATAKANA A;So;0;L; 30A2;;;;N;;;;; -32D1;CIRCLED KATAKANA I;So;0;L; 30A4;;;;N;;;;; -32D2;CIRCLED KATAKANA U;So;0;L; 30A6;;;;N;;;;; -32D3;CIRCLED KATAKANA E;So;0;L; 30A8;;;;N;;;;; -32D4;CIRCLED KATAKANA O;So;0;L; 30AA;;;;N;;;;; -32D5;CIRCLED KATAKANA KA;So;0;L; 30AB;;;;N;;;;; -32D6;CIRCLED KATAKANA KI;So;0;L; 30AD;;;;N;;;;; -32D7;CIRCLED KATAKANA KU;So;0;L; 30AF;;;;N;;;;; -32D8;CIRCLED KATAKANA KE;So;0;L; 30B1;;;;N;;;;; -32D9;CIRCLED KATAKANA KO;So;0;L; 30B3;;;;N;;;;; -32DA;CIRCLED KATAKANA SA;So;0;L; 30B5;;;;N;;;;; -32DB;CIRCLED KATAKANA SI;So;0;L; 30B7;;;;N;;;;; -32DC;CIRCLED KATAKANA SU;So;0;L; 30B9;;;;N;;;;; -32DD;CIRCLED KATAKANA SE;So;0;L; 30BB;;;;N;;;;; -32DE;CIRCLED KATAKANA SO;So;0;L; 30BD;;;;N;;;;; -32DF;CIRCLED KATAKANA TA;So;0;L; 30BF;;;;N;;;;; -32E0;CIRCLED KATAKANA TI;So;0;L; 30C1;;;;N;;;;; -32E1;CIRCLED KATAKANA TU;So;0;L; 30C4;;;;N;;;;; -32E2;CIRCLED KATAKANA TE;So;0;L; 30C6;;;;N;;;;; -32E3;CIRCLED KATAKANA TO;So;0;L; 30C8;;;;N;;;;; -32E4;CIRCLED KATAKANA NA;So;0;L; 30CA;;;;N;;;;; -32E5;CIRCLED KATAKANA NI;So;0;L; 30CB;;;;N;;;;; -32E6;CIRCLED KATAKANA NU;So;0;L; 30CC;;;;N;;;;; -32E7;CIRCLED KATAKANA NE;So;0;L; 30CD;;;;N;;;;; -32E8;CIRCLED KATAKANA NO;So;0;L; 30CE;;;;N;;;;; -32E9;CIRCLED KATAKANA HA;So;0;L; 30CF;;;;N;;;;; -32EA;CIRCLED KATAKANA HI;So;0;L; 30D2;;;;N;;;;; -32EB;CIRCLED KATAKANA HU;So;0;L; 30D5;;;;N;;;;; -32EC;CIRCLED KATAKANA HE;So;0;L; 30D8;;;;N;;;;; -32ED;CIRCLED KATAKANA HO;So;0;L; 30DB;;;;N;;;;; -32EE;CIRCLED KATAKANA MA;So;0;L; 30DE;;;;N;;;;; -32EF;CIRCLED KATAKANA MI;So;0;L; 30DF;;;;N;;;;; -32F0;CIRCLED KATAKANA MU;So;0;L; 30E0;;;;N;;;;; -32F1;CIRCLED KATAKANA ME;So;0;L; 30E1;;;;N;;;;; -32F2;CIRCLED KATAKANA MO;So;0;L; 30E2;;;;N;;;;; -32F3;CIRCLED KATAKANA YA;So;0;L; 30E4;;;;N;;;;; -32F4;CIRCLED KATAKANA YU;So;0;L; 30E6;;;;N;;;;; -32F5;CIRCLED KATAKANA YO;So;0;L; 30E8;;;;N;;;;; -32F6;CIRCLED KATAKANA RA;So;0;L; 30E9;;;;N;;;;; -32F7;CIRCLED KATAKANA RI;So;0;L; 30EA;;;;N;;;;; -32F8;CIRCLED KATAKANA RU;So;0;L; 30EB;;;;N;;;;; -32F9;CIRCLED KATAKANA RE;So;0;L; 30EC;;;;N;;;;; -32FA;CIRCLED KATAKANA RO;So;0;L; 30ED;;;;N;;;;; -32FB;CIRCLED KATAKANA WA;So;0;L; 30EF;;;;N;;;;; -32FC;CIRCLED KATAKANA WI;So;0;L; 30F0;;;;N;;;;; -32FD;CIRCLED KATAKANA WE;So;0;L; 30F1;;;;N;;;;; -32FE;CIRCLED KATAKANA WO;So;0;L; 30F2;;;;N;;;;; -3300;SQUARE APAATO;So;0;L; 30A2 30D1 30FC 30C8;;;;N;SQUARED APAATO;;;; -3301;SQUARE ARUHUA;So;0;L; 30A2 30EB 30D5 30A1;;;;N;SQUARED ARUHUA;;;; -3302;SQUARE ANPEA;So;0;L; 30A2 30F3 30DA 30A2;;;;N;SQUARED ANPEA;;;; -3303;SQUARE AARU;So;0;L; 30A2 30FC 30EB;;;;N;SQUARED AARU;;;; -3304;SQUARE ININGU;So;0;L; 30A4 30CB 30F3 30B0;;;;N;SQUARED ININGU;;;; -3305;SQUARE INTI;So;0;L; 30A4 30F3 30C1;;;;N;SQUARED INTI;;;; -3306;SQUARE UON;So;0;L; 30A6 30A9 30F3;;;;N;SQUARED UON;;;; -3307;SQUARE ESUKUUDO;So;0;L; 30A8 30B9 30AF 30FC 30C9;;;;N;SQUARED ESUKUUDO;;;; -3308;SQUARE EEKAA;So;0;L; 30A8 30FC 30AB 30FC;;;;N;SQUARED EEKAA;;;; -3309;SQUARE ONSU;So;0;L; 30AA 30F3 30B9;;;;N;SQUARED ONSU;;;; -330A;SQUARE OOMU;So;0;L; 30AA 30FC 30E0;;;;N;SQUARED OOMU;;;; -330B;SQUARE KAIRI;So;0;L; 30AB 30A4 30EA;;;;N;SQUARED KAIRI;;;; -330C;SQUARE KARATTO;So;0;L; 30AB 30E9 30C3 30C8;;;;N;SQUARED KARATTO;;;; -330D;SQUARE KARORII;So;0;L; 30AB 30ED 30EA 30FC;;;;N;SQUARED KARORII;;;; -330E;SQUARE GARON;So;0;L; 30AC 30ED 30F3;;;;N;SQUARED GARON;;;; -330F;SQUARE GANMA;So;0;L; 30AC 30F3 30DE;;;;N;SQUARED GANMA;;;; -3310;SQUARE GIGA;So;0;L; 30AE 30AC;;;;N;SQUARED GIGA;;;; -3311;SQUARE GINII;So;0;L; 30AE 30CB 30FC;;;;N;SQUARED GINII;;;; -3312;SQUARE KYURII;So;0;L; 30AD 30E5 30EA 30FC;;;;N;SQUARED KYURII;;;; -3313;SQUARE GIRUDAA;So;0;L; 30AE 30EB 30C0 30FC;;;;N;SQUARED GIRUDAA;;;; -3314;SQUARE KIRO;So;0;L; 30AD 30ED;;;;N;SQUARED KIRO;;;; -3315;SQUARE KIROGURAMU;So;0;L; 30AD 30ED 30B0 30E9 30E0;;;;N;SQUARED KIROGURAMU;;;; -3316;SQUARE KIROMEETORU;So;0;L; 30AD 30ED 30E1 30FC 30C8 30EB;;;;N;SQUARED KIROMEETORU;;;; -3317;SQUARE KIROWATTO;So;0;L; 30AD 30ED 30EF 30C3 30C8;;;;N;SQUARED KIROWATTO;;;; -3318;SQUARE GURAMU;So;0;L; 30B0 30E9 30E0;;;;N;SQUARED GURAMU;;;; -3319;SQUARE GURAMUTON;So;0;L; 30B0 30E9 30E0 30C8 30F3;;;;N;SQUARED GURAMUTON;;;; -331A;SQUARE KURUZEIRO;So;0;L; 30AF 30EB 30BC 30A4 30ED;;;;N;SQUARED KURUZEIRO;;;; -331B;SQUARE KUROONE;So;0;L; 30AF 30ED 30FC 30CD;;;;N;SQUARED KUROONE;;;; -331C;SQUARE KEESU;So;0;L; 30B1 30FC 30B9;;;;N;SQUARED KEESU;;;; -331D;SQUARE KORUNA;So;0;L; 30B3 30EB 30CA;;;;N;SQUARED KORUNA;;;; -331E;SQUARE KOOPO;So;0;L; 30B3 30FC 30DD;;;;N;SQUARED KOOPO;;;; -331F;SQUARE SAIKURU;So;0;L; 30B5 30A4 30AF 30EB;;;;N;SQUARED SAIKURU;;;; -3320;SQUARE SANTIIMU;So;0;L; 30B5 30F3 30C1 30FC 30E0;;;;N;SQUARED SANTIIMU;;;; -3321;SQUARE SIRINGU;So;0;L; 30B7 30EA 30F3 30B0;;;;N;SQUARED SIRINGU;;;; -3322;SQUARE SENTI;So;0;L; 30BB 30F3 30C1;;;;N;SQUARED SENTI;;;; -3323;SQUARE SENTO;So;0;L; 30BB 30F3 30C8;;;;N;SQUARED SENTO;;;; -3324;SQUARE DAASU;So;0;L; 30C0 30FC 30B9;;;;N;SQUARED DAASU;;;; -3325;SQUARE DESI;So;0;L; 30C7 30B7;;;;N;SQUARED DESI;;;; -3326;SQUARE DORU;So;0;L; 30C9 30EB;;;;N;SQUARED DORU;;;; -3327;SQUARE TON;So;0;L; 30C8 30F3;;;;N;SQUARED TON;;;; -3328;SQUARE NANO;So;0;L; 30CA 30CE;;;;N;SQUARED NANO;;;; -3329;SQUARE NOTTO;So;0;L; 30CE 30C3 30C8;;;;N;SQUARED NOTTO;;;; -332A;SQUARE HAITU;So;0;L; 30CF 30A4 30C4;;;;N;SQUARED HAITU;;;; -332B;SQUARE PAASENTO;So;0;L; 30D1 30FC 30BB 30F3 30C8;;;;N;SQUARED PAASENTO;;;; -332C;SQUARE PAATU;So;0;L; 30D1 30FC 30C4;;;;N;SQUARED PAATU;;;; -332D;SQUARE BAARERU;So;0;L; 30D0 30FC 30EC 30EB;;;;N;SQUARED BAARERU;;;; -332E;SQUARE PIASUTORU;So;0;L; 30D4 30A2 30B9 30C8 30EB;;;;N;SQUARED PIASUTORU;;;; -332F;SQUARE PIKURU;So;0;L; 30D4 30AF 30EB;;;;N;SQUARED PIKURU;;;; -3330;SQUARE PIKO;So;0;L; 30D4 30B3;;;;N;SQUARED PIKO;;;; -3331;SQUARE BIRU;So;0;L; 30D3 30EB;;;;N;SQUARED BIRU;;;; -3332;SQUARE HUARADDO;So;0;L; 30D5 30A1 30E9 30C3 30C9;;;;N;SQUARED HUARADDO;;;; -3333;SQUARE HUIITO;So;0;L; 30D5 30A3 30FC 30C8;;;;N;SQUARED HUIITO;;;; -3334;SQUARE BUSSYERU;So;0;L; 30D6 30C3 30B7 30A7 30EB;;;;N;SQUARED BUSSYERU;;;; -3335;SQUARE HURAN;So;0;L; 30D5 30E9 30F3;;;;N;SQUARED HURAN;;;; -3336;SQUARE HEKUTAARU;So;0;L; 30D8 30AF 30BF 30FC 30EB;;;;N;SQUARED HEKUTAARU;;;; -3337;SQUARE PESO;So;0;L; 30DA 30BD;;;;N;SQUARED PESO;;;; -3338;SQUARE PENIHI;So;0;L; 30DA 30CB 30D2;;;;N;SQUARED PENIHI;;;; -3339;SQUARE HERUTU;So;0;L; 30D8 30EB 30C4;;;;N;SQUARED HERUTU;;;; -333A;SQUARE PENSU;So;0;L; 30DA 30F3 30B9;;;;N;SQUARED PENSU;;;; -333B;SQUARE PEEZI;So;0;L; 30DA 30FC 30B8;;;;N;SQUARED PEEZI;;;; -333C;SQUARE BEETA;So;0;L; 30D9 30FC 30BF;;;;N;SQUARED BEETA;;;; -333D;SQUARE POINTO;So;0;L; 30DD 30A4 30F3 30C8;;;;N;SQUARED POINTO;;;; -333E;SQUARE BORUTO;So;0;L; 30DC 30EB 30C8;;;;N;SQUARED BORUTO;;;; -333F;SQUARE HON;So;0;L; 30DB 30F3;;;;N;SQUARED HON;;;; -3340;SQUARE PONDO;So;0;L; 30DD 30F3 30C9;;;;N;SQUARED PONDO;;;; -3341;SQUARE HOORU;So;0;L; 30DB 30FC 30EB;;;;N;SQUARED HOORU;;;; -3342;SQUARE HOON;So;0;L; 30DB 30FC 30F3;;;;N;SQUARED HOON;;;; -3343;SQUARE MAIKURO;So;0;L; 30DE 30A4 30AF 30ED;;;;N;SQUARED MAIKURO;;;; -3344;SQUARE MAIRU;So;0;L; 30DE 30A4 30EB;;;;N;SQUARED MAIRU;;;; -3345;SQUARE MAHHA;So;0;L; 30DE 30C3 30CF;;;;N;SQUARED MAHHA;;;; -3346;SQUARE MARUKU;So;0;L; 30DE 30EB 30AF;;;;N;SQUARED MARUKU;;;; -3347;SQUARE MANSYON;So;0;L; 30DE 30F3 30B7 30E7 30F3;;;;N;SQUARED MANSYON;;;; -3348;SQUARE MIKURON;So;0;L; 30DF 30AF 30ED 30F3;;;;N;SQUARED MIKURON;;;; -3349;SQUARE MIRI;So;0;L; 30DF 30EA;;;;N;SQUARED MIRI;;;; -334A;SQUARE MIRIBAARU;So;0;L; 30DF 30EA 30D0 30FC 30EB;;;;N;SQUARED MIRIBAARU;;;; -334B;SQUARE MEGA;So;0;L; 30E1 30AC;;;;N;SQUARED MEGA;;;; -334C;SQUARE MEGATON;So;0;L; 30E1 30AC 30C8 30F3;;;;N;SQUARED MEGATON;;;; -334D;SQUARE MEETORU;So;0;L; 30E1 30FC 30C8 30EB;;;;N;SQUARED MEETORU;;;; -334E;SQUARE YAADO;So;0;L; 30E4 30FC 30C9;;;;N;SQUARED YAADO;;;; -334F;SQUARE YAARU;So;0;L; 30E4 30FC 30EB;;;;N;SQUARED YAARU;;;; -3350;SQUARE YUAN;So;0;L; 30E6 30A2 30F3;;;;N;SQUARED YUAN;;;; -3351;SQUARE RITTORU;So;0;L; 30EA 30C3 30C8 30EB;;;;N;SQUARED RITTORU;;;; -3352;SQUARE RIRA;So;0;L; 30EA 30E9;;;;N;SQUARED RIRA;;;; -3353;SQUARE RUPII;So;0;L; 30EB 30D4 30FC;;;;N;SQUARED RUPII;;;; -3354;SQUARE RUUBURU;So;0;L; 30EB 30FC 30D6 30EB;;;;N;SQUARED RUUBURU;;;; -3355;SQUARE REMU;So;0;L; 30EC 30E0;;;;N;SQUARED REMU;;;; -3356;SQUARE RENTOGEN;So;0;L; 30EC 30F3 30C8 30B2 30F3;;;;N;SQUARED RENTOGEN;;;; -3357;SQUARE WATTO;So;0;L; 30EF 30C3 30C8;;;;N;SQUARED WATTO;;;; -3358;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO;So;0;L; 0030 70B9;;;;N;;;;; -3359;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE;So;0;L; 0031 70B9;;;;N;;;;; -335A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO;So;0;L; 0032 70B9;;;;N;;;;; -335B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE;So;0;L; 0033 70B9;;;;N;;;;; -335C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR;So;0;L; 0034 70B9;;;;N;;;;; -335D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE;So;0;L; 0035 70B9;;;;N;;;;; -335E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX;So;0;L; 0036 70B9;;;;N;;;;; -335F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN;So;0;L; 0037 70B9;;;;N;;;;; -3360;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT;So;0;L; 0038 70B9;;;;N;;;;; -3361;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE;So;0;L; 0039 70B9;;;;N;;;;; -3362;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN;So;0;L; 0031 0030 70B9;;;;N;;;;; -3363;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN;So;0;L; 0031 0031 70B9;;;;N;;;;; -3364;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE;So;0;L; 0031 0032 70B9;;;;N;;;;; -3365;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN;So;0;L; 0031 0033 70B9;;;;N;;;;; -3366;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN;So;0;L; 0031 0034 70B9;;;;N;;;;; -3367;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN;So;0;L; 0031 0035 70B9;;;;N;;;;; -3368;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN;So;0;L; 0031 0036 70B9;;;;N;;;;; -3369;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN;So;0;L; 0031 0037 70B9;;;;N;;;;; -336A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN;So;0;L; 0031 0038 70B9;;;;N;;;;; -336B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN;So;0;L; 0031 0039 70B9;;;;N;;;;; -336C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY;So;0;L; 0032 0030 70B9;;;;N;;;;; -336D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE;So;0;L; 0032 0031 70B9;;;;N;;;;; -336E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO;So;0;L; 0032 0032 70B9;;;;N;;;;; -336F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE;So;0;L; 0032 0033 70B9;;;;N;;;;; -3370;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR;So;0;L; 0032 0034 70B9;;;;N;;;;; -3371;SQUARE HPA;So;0;L; 0068 0050 0061;;;;N;;;;; -3372;SQUARE DA;So;0;L; 0064 0061;;;;N;;;;; -3373;SQUARE AU;So;0;L; 0041 0055;;;;N;;;;; -3374;SQUARE BAR;So;0;L; 0062 0061 0072;;;;N;;;;; -3375;SQUARE OV;So;0;L; 006F 0056;;;;N;;;;; -3376;SQUARE PC;So;0;L; 0070 0063;;;;N;;;;; -3377;SQUARE DM;So;0;ON; 0064 006D;;;;N;;;;; -3378;SQUARE DM SQUARED;So;0;ON; 0064 006D 00B2;;;;N;;;;; -3379;SQUARE DM CUBED;So;0;ON; 0064 006D 00B3;;;;N;;;;; -337A;SQUARE IU;So;0;ON; 0049 0055;;;;N;;;;; -337B;SQUARE ERA NAME HEISEI;So;0;L; 5E73 6210;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME HEISEI;;;; -337C;SQUARE ERA NAME SYOUWA;So;0;L; 662D 548C;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME SYOUWA;;;; -337D;SQUARE ERA NAME TAISYOU;So;0;L; 5927 6B63;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME TAISYOU;;;; -337E;SQUARE ERA NAME MEIZI;So;0;L; 660E 6CBB;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME MEIZI;;;; -337F;SQUARE CORPORATION;So;0;L; 682A 5F0F 4F1A 793E;;;;N;SQUARED FOUR IDEOGRAPHS CORPORATION;;;; -3380;SQUARE PA AMPS;So;0;L; 0070 0041;;;;N;SQUARED PA AMPS;;;; -3381;SQUARE NA;So;0;L; 006E 0041;;;;N;SQUARED NA;;;; -3382;SQUARE MU A;So;0;L; 03BC 0041;;;;N;SQUARED MU A;;;; -3383;SQUARE MA;So;0;L; 006D 0041;;;;N;SQUARED MA;;;; -3384;SQUARE KA;So;0;L; 006B 0041;;;;N;SQUARED KA;;;; -3385;SQUARE KB;So;0;L; 004B 0042;;;;N;SQUARED KB;;;; -3386;SQUARE MB;So;0;L; 004D 0042;;;;N;SQUARED MB;;;; -3387;SQUARE GB;So;0;L; 0047 0042;;;;N;SQUARED GB;;;; -3388;SQUARE CAL;So;0;L; 0063 0061 006C;;;;N;SQUARED CAL;;;; -3389;SQUARE KCAL;So;0;L; 006B 0063 0061 006C;;;;N;SQUARED KCAL;;;; -338A;SQUARE PF;So;0;L; 0070 0046;;;;N;SQUARED PF;;;; -338B;SQUARE NF;So;0;L; 006E 0046;;;;N;SQUARED NF;;;; -338C;SQUARE MU F;So;0;L; 03BC 0046;;;;N;SQUARED MU F;;;; -338D;SQUARE MU G;So;0;L; 03BC 0067;;;;N;SQUARED MU G;;;; -338E;SQUARE MG;So;0;L; 006D 0067;;;;N;SQUARED MG;;;; -338F;SQUARE KG;So;0;L; 006B 0067;;;;N;SQUARED KG;;;; -3390;SQUARE HZ;So;0;L; 0048 007A;;;;N;SQUARED HZ;;;; -3391;SQUARE KHZ;So;0;L; 006B 0048 007A;;;;N;SQUARED KHZ;;;; -3392;SQUARE MHZ;So;0;L; 004D 0048 007A;;;;N;SQUARED MHZ;;;; -3393;SQUARE GHZ;So;0;L; 0047 0048 007A;;;;N;SQUARED GHZ;;;; -3394;SQUARE THZ;So;0;L; 0054 0048 007A;;;;N;SQUARED THZ;;;; -3395;SQUARE MU L;So;0;L; 03BC 2113;;;;N;SQUARED MU L;;;; -3396;SQUARE ML;So;0;L; 006D 2113;;;;N;SQUARED ML;;;; -3397;SQUARE DL;So;0;L; 0064 2113;;;;N;SQUARED DL;;;; -3398;SQUARE KL;So;0;L; 006B 2113;;;;N;SQUARED KL;;;; -3399;SQUARE FM;So;0;L; 0066 006D;;;;N;SQUARED FM;;;; -339A;SQUARE NM;So;0;L; 006E 006D;;;;N;SQUARED NM;;;; -339B;SQUARE MU M;So;0;L; 03BC 006D;;;;N;SQUARED MU M;;;; -339C;SQUARE MM;So;0;L; 006D 006D;;;;N;SQUARED MM;;;; -339D;SQUARE CM;So;0;L; 0063 006D;;;;N;SQUARED CM;;;; -339E;SQUARE KM;So;0;L; 006B 006D;;;;N;SQUARED KM;;;; -339F;SQUARE MM SQUARED;So;0;L; 006D 006D 00B2;;;;N;SQUARED MM SQUARED;;;; -33A0;SQUARE CM SQUARED;So;0;L; 0063 006D 00B2;;;;N;SQUARED CM SQUARED;;;; -33A1;SQUARE M SQUARED;So;0;L; 006D 00B2;;;;N;SQUARED M SQUARED;;;; -33A2;SQUARE KM SQUARED;So;0;L; 006B 006D 00B2;;;;N;SQUARED KM SQUARED;;;; -33A3;SQUARE MM CUBED;So;0;L; 006D 006D 00B3;;;;N;SQUARED MM CUBED;;;; -33A4;SQUARE CM CUBED;So;0;L; 0063 006D 00B3;;;;N;SQUARED CM CUBED;;;; -33A5;SQUARE M CUBED;So;0;L; 006D 00B3;;;;N;SQUARED M CUBED;;;; -33A6;SQUARE KM CUBED;So;0;L; 006B 006D 00B3;;;;N;SQUARED KM CUBED;;;; -33A7;SQUARE M OVER S;So;0;L; 006D 2215 0073;;;;N;SQUARED M OVER S;;;; -33A8;SQUARE M OVER S SQUARED;So;0;L; 006D 2215 0073 00B2;;;;N;SQUARED M OVER S SQUARED;;;; -33A9;SQUARE PA;So;0;L; 0050 0061;;;;N;SQUARED PA;;;; -33AA;SQUARE KPA;So;0;L; 006B 0050 0061;;;;N;SQUARED KPA;;;; -33AB;SQUARE MPA;So;0;L; 004D 0050 0061;;;;N;SQUARED MPA;;;; -33AC;SQUARE GPA;So;0;L; 0047 0050 0061;;;;N;SQUARED GPA;;;; -33AD;SQUARE RAD;So;0;L; 0072 0061 0064;;;;N;SQUARED RAD;;;; -33AE;SQUARE RAD OVER S;So;0;L; 0072 0061 0064 2215 0073;;;;N;SQUARED RAD OVER S;;;; -33AF;SQUARE RAD OVER S SQUARED;So;0;L; 0072 0061 0064 2215 0073 00B2;;;;N;SQUARED RAD OVER S SQUARED;;;; -33B0;SQUARE PS;So;0;L; 0070 0073;;;;N;SQUARED PS;;;; -33B1;SQUARE NS;So;0;L; 006E 0073;;;;N;SQUARED NS;;;; -33B2;SQUARE MU S;So;0;L; 03BC 0073;;;;N;SQUARED MU S;;;; -33B3;SQUARE MS;So;0;L; 006D 0073;;;;N;SQUARED MS;;;; -33B4;SQUARE PV;So;0;L; 0070 0056;;;;N;SQUARED PV;;;; -33B5;SQUARE NV;So;0;L; 006E 0056;;;;N;SQUARED NV;;;; -33B6;SQUARE MU V;So;0;L; 03BC 0056;;;;N;SQUARED MU V;;;; -33B7;SQUARE MV;So;0;L; 006D 0056;;;;N;SQUARED MV;;;; -33B8;SQUARE KV;So;0;L; 006B 0056;;;;N;SQUARED KV;;;; -33B9;SQUARE MV MEGA;So;0;L; 004D 0056;;;;N;SQUARED MV MEGA;;;; -33BA;SQUARE PW;So;0;L; 0070 0057;;;;N;SQUARED PW;;;; -33BB;SQUARE NW;So;0;L; 006E 0057;;;;N;SQUARED NW;;;; -33BC;SQUARE MU W;So;0;L; 03BC 0057;;;;N;SQUARED MU W;;;; -33BD;SQUARE MW;So;0;L; 006D 0057;;;;N;SQUARED MW;;;; -33BE;SQUARE KW;So;0;L; 006B 0057;;;;N;SQUARED KW;;;; -33BF;SQUARE MW MEGA;So;0;L; 004D 0057;;;;N;SQUARED MW MEGA;;;; -33C0;SQUARE K OHM;So;0;L; 006B 03A9;;;;N;SQUARED K OHM;;;; -33C1;SQUARE M OHM;So;0;L; 004D 03A9;;;;N;SQUARED M OHM;;;; -33C2;SQUARE AM;So;0;L; 0061 002E 006D 002E;;;;N;SQUARED AM;;;; -33C3;SQUARE BQ;So;0;L; 0042 0071;;;;N;SQUARED BQ;;;; -33C4;SQUARE CC;So;0;L; 0063 0063;;;;N;SQUARED CC;;;; -33C5;SQUARE CD;So;0;L; 0063 0064;;;;N;SQUARED CD;;;; -33C6;SQUARE C OVER KG;So;0;L; 0043 2215 006B 0067;;;;N;SQUARED C OVER KG;;;; -33C7;SQUARE CO;So;0;L; 0043 006F 002E;;;;N;SQUARED CO;;;; -33C8;SQUARE DB;So;0;L; 0064 0042;;;;N;SQUARED DB;;;; -33C9;SQUARE GY;So;0;L; 0047 0079;;;;N;SQUARED GY;;;; -33CA;SQUARE HA;So;0;L; 0068 0061;;;;N;SQUARED HA;;;; -33CB;SQUARE HP;So;0;L; 0048 0050;;;;N;SQUARED HP;;;; -33CC;SQUARE IN;So;0;L; 0069 006E;;;;N;SQUARED IN;;;; -33CD;SQUARE KK;So;0;L; 004B 004B;;;;N;SQUARED KK;;;; -33CE;SQUARE KM CAPITAL;So;0;L; 004B 004D;;;;N;SQUARED KM CAPITAL;;;; -33CF;SQUARE KT;So;0;L; 006B 0074;;;;N;SQUARED KT;;;; -33D0;SQUARE LM;So;0;L; 006C 006D;;;;N;SQUARED LM;;;; -33D1;SQUARE LN;So;0;L; 006C 006E;;;;N;SQUARED LN;;;; -33D2;SQUARE LOG;So;0;L; 006C 006F 0067;;;;N;SQUARED LOG;;;; -33D3;SQUARE LX;So;0;L; 006C 0078;;;;N;SQUARED LX;;;; -33D4;SQUARE MB SMALL;So;0;L; 006D 0062;;;;N;SQUARED MB SMALL;;;; -33D5;SQUARE MIL;So;0;L; 006D 0069 006C;;;;N;SQUARED MIL;;;; -33D6;SQUARE MOL;So;0;L; 006D 006F 006C;;;;N;SQUARED MOL;;;; -33D7;SQUARE PH;So;0;L; 0050 0048;;;;N;SQUARED PH;;;; -33D8;SQUARE PM;So;0;L; 0070 002E 006D 002E;;;;N;SQUARED PM;;;; -33D9;SQUARE PPM;So;0;L; 0050 0050 004D;;;;N;SQUARED PPM;;;; -33DA;SQUARE PR;So;0;L; 0050 0052;;;;N;SQUARED PR;;;; -33DB;SQUARE SR;So;0;L; 0073 0072;;;;N;SQUARED SR;;;; -33DC;SQUARE SV;So;0;L; 0053 0076;;;;N;SQUARED SV;;;; -33DD;SQUARE WB;So;0;L; 0057 0062;;;;N;SQUARED WB;;;; -33DE;SQUARE V OVER M;So;0;ON; 0056 2215 006D;;;;N;;;;; -33DF;SQUARE A OVER M;So;0;ON; 0041 2215 006D;;;;N;;;;; -33E0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE;So;0;L; 0031 65E5;;;;N;;;;; -33E1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO;So;0;L; 0032 65E5;;;;N;;;;; -33E2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE;So;0;L; 0033 65E5;;;;N;;;;; -33E3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR;So;0;L; 0034 65E5;;;;N;;;;; -33E4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE;So;0;L; 0035 65E5;;;;N;;;;; -33E5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX;So;0;L; 0036 65E5;;;;N;;;;; -33E6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN;So;0;L; 0037 65E5;;;;N;;;;; -33E7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT;So;0;L; 0038 65E5;;;;N;;;;; -33E8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE;So;0;L; 0039 65E5;;;;N;;;;; -33E9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN;So;0;L; 0031 0030 65E5;;;;N;;;;; -33EA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN;So;0;L; 0031 0031 65E5;;;;N;;;;; -33EB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE;So;0;L; 0031 0032 65E5;;;;N;;;;; -33EC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN;So;0;L; 0031 0033 65E5;;;;N;;;;; -33ED;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN;So;0;L; 0031 0034 65E5;;;;N;;;;; -33EE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN;So;0;L; 0031 0035 65E5;;;;N;;;;; -33EF;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN;So;0;L; 0031 0036 65E5;;;;N;;;;; -33F0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN;So;0;L; 0031 0037 65E5;;;;N;;;;; -33F1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN;So;0;L; 0031 0038 65E5;;;;N;;;;; -33F2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN;So;0;L; 0031 0039 65E5;;;;N;;;;; -33F3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY;So;0;L; 0032 0030 65E5;;;;N;;;;; -33F4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE;So;0;L; 0032 0031 65E5;;;;N;;;;; -33F5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO;So;0;L; 0032 0032 65E5;;;;N;;;;; -33F6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE;So;0;L; 0032 0033 65E5;;;;N;;;;; -33F7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR;So;0;L; 0032 0034 65E5;;;;N;;;;; -33F8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE;So;0;L; 0032 0035 65E5;;;;N;;;;; -33F9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX;So;0;L; 0032 0036 65E5;;;;N;;;;; -33FA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN;So;0;L; 0032 0037 65E5;;;;N;;;;; -33FB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT;So;0;L; 0032 0038 65E5;;;;N;;;;; -33FC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE;So;0;L; 0032 0039 65E5;;;;N;;;;; -33FD;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY;So;0;L; 0033 0030 65E5;;;;N;;;;; -33FE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE;So;0;L; 0033 0031 65E5;;;;N;;;;; -33FF;SQUARE GAL;So;0;ON; 0067 0061 006C;;;;N;;;;; -3400;;Lo;0;L;;;;;N;;;;; -4DB5;;Lo;0;L;;;;;N;;;;; -4DC0;HEXAGRAM FOR THE CREATIVE HEAVEN;So;0;ON;;;;;N;;;;; -4DC1;HEXAGRAM FOR THE RECEPTIVE EARTH;So;0;ON;;;;;N;;;;; -4DC2;HEXAGRAM FOR DIFFICULTY AT THE BEGINNING;So;0;ON;;;;;N;;;;; -4DC3;HEXAGRAM FOR YOUTHFUL FOLLY;So;0;ON;;;;;N;;;;; -4DC4;HEXAGRAM FOR WAITING;So;0;ON;;;;;N;;;;; -4DC5;HEXAGRAM FOR CONFLICT;So;0;ON;;;;;N;;;;; -4DC6;HEXAGRAM FOR THE ARMY;So;0;ON;;;;;N;;;;; -4DC7;HEXAGRAM FOR HOLDING TOGETHER;So;0;ON;;;;;N;;;;; -4DC8;HEXAGRAM FOR SMALL TAMING;So;0;ON;;;;;N;;;;; -4DC9;HEXAGRAM FOR TREADING;So;0;ON;;;;;N;;;;; -4DCA;HEXAGRAM FOR PEACE;So;0;ON;;;;;N;;;;; -4DCB;HEXAGRAM FOR STANDSTILL;So;0;ON;;;;;N;;;;; -4DCC;HEXAGRAM FOR FELLOWSHIP;So;0;ON;;;;;N;;;;; -4DCD;HEXAGRAM FOR GREAT POSSESSION;So;0;ON;;;;;N;;;;; -4DCE;HEXAGRAM FOR MODESTY;So;0;ON;;;;;N;;;;; -4DCF;HEXAGRAM FOR ENTHUSIASM;So;0;ON;;;;;N;;;;; -4DD0;HEXAGRAM FOR FOLLOWING;So;0;ON;;;;;N;;;;; -4DD1;HEXAGRAM FOR WORK ON THE DECAYED;So;0;ON;;;;;N;;;;; -4DD2;HEXAGRAM FOR APPROACH;So;0;ON;;;;;N;;;;; -4DD3;HEXAGRAM FOR CONTEMPLATION;So;0;ON;;;;;N;;;;; -4DD4;HEXAGRAM FOR BITING THROUGH;So;0;ON;;;;;N;;;;; -4DD5;HEXAGRAM FOR GRACE;So;0;ON;;;;;N;;;;; -4DD6;HEXAGRAM FOR SPLITTING APART;So;0;ON;;;;;N;;;;; -4DD7;HEXAGRAM FOR RETURN;So;0;ON;;;;;N;;;;; -4DD8;HEXAGRAM FOR INNOCENCE;So;0;ON;;;;;N;;;;; -4DD9;HEXAGRAM FOR GREAT TAMING;So;0;ON;;;;;N;;;;; -4DDA;HEXAGRAM FOR MOUTH CORNERS;So;0;ON;;;;;N;;;;; -4DDB;HEXAGRAM FOR GREAT PREPONDERANCE;So;0;ON;;;;;N;;;;; -4DDC;HEXAGRAM FOR THE ABYSMAL WATER;So;0;ON;;;;;N;;;;; -4DDD;HEXAGRAM FOR THE CLINGING FIRE;So;0;ON;;;;;N;;;;; -4DDE;HEXAGRAM FOR INFLUENCE;So;0;ON;;;;;N;;;;; -4DDF;HEXAGRAM FOR DURATION;So;0;ON;;;;;N;;;;; -4DE0;HEXAGRAM FOR RETREAT;So;0;ON;;;;;N;;;;; -4DE1;HEXAGRAM FOR GREAT POWER;So;0;ON;;;;;N;;;;; -4DE2;HEXAGRAM FOR PROGRESS;So;0;ON;;;;;N;;;;; -4DE3;HEXAGRAM FOR DARKENING OF THE LIGHT;So;0;ON;;;;;N;;;;; -4DE4;HEXAGRAM FOR THE FAMILY;So;0;ON;;;;;N;;;;; -4DE5;HEXAGRAM FOR OPPOSITION;So;0;ON;;;;;N;;;;; -4DE6;HEXAGRAM FOR OBSTRUCTION;So;0;ON;;;;;N;;;;; -4DE7;HEXAGRAM FOR DELIVERANCE;So;0;ON;;;;;N;;;;; -4DE8;HEXAGRAM FOR DECREASE;So;0;ON;;;;;N;;;;; -4DE9;HEXAGRAM FOR INCREASE;So;0;ON;;;;;N;;;;; -4DEA;HEXAGRAM FOR BREAKTHROUGH;So;0;ON;;;;;N;;;;; -4DEB;HEXAGRAM FOR COMING TO MEET;So;0;ON;;;;;N;;;;; -4DEC;HEXAGRAM FOR GATHERING TOGETHER;So;0;ON;;;;;N;;;;; -4DED;HEXAGRAM FOR PUSHING UPWARD;So;0;ON;;;;;N;;;;; -4DEE;HEXAGRAM FOR OPPRESSION;So;0;ON;;;;;N;;;;; -4DEF;HEXAGRAM FOR THE WELL;So;0;ON;;;;;N;;;;; -4DF0;HEXAGRAM FOR REVOLUTION;So;0;ON;;;;;N;;;;; -4DF1;HEXAGRAM FOR THE CAULDRON;So;0;ON;;;;;N;;;;; -4DF2;HEXAGRAM FOR THE AROUSING THUNDER;So;0;ON;;;;;N;;;;; -4DF3;HEXAGRAM FOR THE KEEPING STILL MOUNTAIN;So;0;ON;;;;;N;;;;; -4DF4;HEXAGRAM FOR DEVELOPMENT;So;0;ON;;;;;N;;;;; -4DF5;HEXAGRAM FOR THE MARRYING MAIDEN;So;0;ON;;;;;N;;;;; -4DF6;HEXAGRAM FOR ABUNDANCE;So;0;ON;;;;;N;;;;; -4DF7;HEXAGRAM FOR THE WANDERER;So;0;ON;;;;;N;;;;; -4DF8;HEXAGRAM FOR THE GENTLE WIND;So;0;ON;;;;;N;;;;; -4DF9;HEXAGRAM FOR THE JOYOUS LAKE;So;0;ON;;;;;N;;;;; -4DFA;HEXAGRAM FOR DISPERSION;So;0;ON;;;;;N;;;;; -4DFB;HEXAGRAM FOR LIMITATION;So;0;ON;;;;;N;;;;; -4DFC;HEXAGRAM FOR INNER TRUTH;So;0;ON;;;;;N;;;;; -4DFD;HEXAGRAM FOR SMALL PREPONDERANCE;So;0;ON;;;;;N;;;;; -4DFE;HEXAGRAM FOR AFTER COMPLETION;So;0;ON;;;;;N;;;;; -4DFF;HEXAGRAM FOR BEFORE COMPLETION;So;0;ON;;;;;N;;;;; -4E00;;Lo;0;L;;;;;N;;;;; -9FCB;;Lo;0;L;;;;;N;;;;; -A000;YI SYLLABLE IT;Lo;0;L;;;;;N;;;;; -A001;YI SYLLABLE IX;Lo;0;L;;;;;N;;;;; -A002;YI SYLLABLE I;Lo;0;L;;;;;N;;;;; -A003;YI SYLLABLE IP;Lo;0;L;;;;;N;;;;; -A004;YI SYLLABLE IET;Lo;0;L;;;;;N;;;;; -A005;YI SYLLABLE IEX;Lo;0;L;;;;;N;;;;; -A006;YI SYLLABLE IE;Lo;0;L;;;;;N;;;;; -A007;YI SYLLABLE IEP;Lo;0;L;;;;;N;;;;; -A008;YI SYLLABLE AT;Lo;0;L;;;;;N;;;;; -A009;YI SYLLABLE AX;Lo;0;L;;;;;N;;;;; -A00A;YI SYLLABLE A;Lo;0;L;;;;;N;;;;; -A00B;YI SYLLABLE AP;Lo;0;L;;;;;N;;;;; -A00C;YI SYLLABLE UOX;Lo;0;L;;;;;N;;;;; -A00D;YI SYLLABLE UO;Lo;0;L;;;;;N;;;;; -A00E;YI SYLLABLE UOP;Lo;0;L;;;;;N;;;;; -A00F;YI SYLLABLE OT;Lo;0;L;;;;;N;;;;; -A010;YI SYLLABLE OX;Lo;0;L;;;;;N;;;;; -A011;YI SYLLABLE O;Lo;0;L;;;;;N;;;;; -A012;YI SYLLABLE OP;Lo;0;L;;;;;N;;;;; -A013;YI SYLLABLE EX;Lo;0;L;;;;;N;;;;; -A014;YI SYLLABLE E;Lo;0;L;;;;;N;;;;; -A015;YI SYLLABLE WU;Lm;0;L;;;;;N;;;;; -A016;YI SYLLABLE BIT;Lo;0;L;;;;;N;;;;; -A017;YI SYLLABLE BIX;Lo;0;L;;;;;N;;;;; -A018;YI SYLLABLE BI;Lo;0;L;;;;;N;;;;; -A019;YI SYLLABLE BIP;Lo;0;L;;;;;N;;;;; -A01A;YI SYLLABLE BIET;Lo;0;L;;;;;N;;;;; -A01B;YI SYLLABLE BIEX;Lo;0;L;;;;;N;;;;; -A01C;YI SYLLABLE BIE;Lo;0;L;;;;;N;;;;; -A01D;YI SYLLABLE BIEP;Lo;0;L;;;;;N;;;;; -A01E;YI SYLLABLE BAT;Lo;0;L;;;;;N;;;;; -A01F;YI SYLLABLE BAX;Lo;0;L;;;;;N;;;;; -A020;YI SYLLABLE BA;Lo;0;L;;;;;N;;;;; -A021;YI SYLLABLE BAP;Lo;0;L;;;;;N;;;;; -A022;YI SYLLABLE BUOX;Lo;0;L;;;;;N;;;;; -A023;YI SYLLABLE BUO;Lo;0;L;;;;;N;;;;; -A024;YI SYLLABLE BUOP;Lo;0;L;;;;;N;;;;; -A025;YI SYLLABLE BOT;Lo;0;L;;;;;N;;;;; -A026;YI SYLLABLE BOX;Lo;0;L;;;;;N;;;;; -A027;YI SYLLABLE BO;Lo;0;L;;;;;N;;;;; -A028;YI SYLLABLE BOP;Lo;0;L;;;;;N;;;;; -A029;YI SYLLABLE BEX;Lo;0;L;;;;;N;;;;; -A02A;YI SYLLABLE BE;Lo;0;L;;;;;N;;;;; -A02B;YI SYLLABLE BEP;Lo;0;L;;;;;N;;;;; -A02C;YI SYLLABLE BUT;Lo;0;L;;;;;N;;;;; -A02D;YI SYLLABLE BUX;Lo;0;L;;;;;N;;;;; -A02E;YI SYLLABLE BU;Lo;0;L;;;;;N;;;;; -A02F;YI SYLLABLE BUP;Lo;0;L;;;;;N;;;;; -A030;YI SYLLABLE BURX;Lo;0;L;;;;;N;;;;; -A031;YI SYLLABLE BUR;Lo;0;L;;;;;N;;;;; -A032;YI SYLLABLE BYT;Lo;0;L;;;;;N;;;;; -A033;YI SYLLABLE BYX;Lo;0;L;;;;;N;;;;; -A034;YI SYLLABLE BY;Lo;0;L;;;;;N;;;;; -A035;YI SYLLABLE BYP;Lo;0;L;;;;;N;;;;; -A036;YI SYLLABLE BYRX;Lo;0;L;;;;;N;;;;; -A037;YI SYLLABLE BYR;Lo;0;L;;;;;N;;;;; -A038;YI SYLLABLE PIT;Lo;0;L;;;;;N;;;;; -A039;YI SYLLABLE PIX;Lo;0;L;;;;;N;;;;; -A03A;YI SYLLABLE PI;Lo;0;L;;;;;N;;;;; -A03B;YI SYLLABLE PIP;Lo;0;L;;;;;N;;;;; -A03C;YI SYLLABLE PIEX;Lo;0;L;;;;;N;;;;; -A03D;YI SYLLABLE PIE;Lo;0;L;;;;;N;;;;; -A03E;YI SYLLABLE PIEP;Lo;0;L;;;;;N;;;;; -A03F;YI SYLLABLE PAT;Lo;0;L;;;;;N;;;;; -A040;YI SYLLABLE PAX;Lo;0;L;;;;;N;;;;; -A041;YI SYLLABLE PA;Lo;0;L;;;;;N;;;;; -A042;YI SYLLABLE PAP;Lo;0;L;;;;;N;;;;; -A043;YI SYLLABLE PUOX;Lo;0;L;;;;;N;;;;; -A044;YI SYLLABLE PUO;Lo;0;L;;;;;N;;;;; -A045;YI SYLLABLE PUOP;Lo;0;L;;;;;N;;;;; -A046;YI SYLLABLE POT;Lo;0;L;;;;;N;;;;; -A047;YI SYLLABLE POX;Lo;0;L;;;;;N;;;;; -A048;YI SYLLABLE PO;Lo;0;L;;;;;N;;;;; -A049;YI SYLLABLE POP;Lo;0;L;;;;;N;;;;; -A04A;YI SYLLABLE PUT;Lo;0;L;;;;;N;;;;; -A04B;YI SYLLABLE PUX;Lo;0;L;;;;;N;;;;; -A04C;YI SYLLABLE PU;Lo;0;L;;;;;N;;;;; -A04D;YI SYLLABLE PUP;Lo;0;L;;;;;N;;;;; -A04E;YI SYLLABLE PURX;Lo;0;L;;;;;N;;;;; -A04F;YI SYLLABLE PUR;Lo;0;L;;;;;N;;;;; -A050;YI SYLLABLE PYT;Lo;0;L;;;;;N;;;;; -A051;YI SYLLABLE PYX;Lo;0;L;;;;;N;;;;; -A052;YI SYLLABLE PY;Lo;0;L;;;;;N;;;;; -A053;YI SYLLABLE PYP;Lo;0;L;;;;;N;;;;; -A054;YI SYLLABLE PYRX;Lo;0;L;;;;;N;;;;; -A055;YI SYLLABLE PYR;Lo;0;L;;;;;N;;;;; -A056;YI SYLLABLE BBIT;Lo;0;L;;;;;N;;;;; -A057;YI SYLLABLE BBIX;Lo;0;L;;;;;N;;;;; -A058;YI SYLLABLE BBI;Lo;0;L;;;;;N;;;;; -A059;YI SYLLABLE BBIP;Lo;0;L;;;;;N;;;;; -A05A;YI SYLLABLE BBIET;Lo;0;L;;;;;N;;;;; -A05B;YI SYLLABLE BBIEX;Lo;0;L;;;;;N;;;;; -A05C;YI SYLLABLE BBIE;Lo;0;L;;;;;N;;;;; -A05D;YI SYLLABLE BBIEP;Lo;0;L;;;;;N;;;;; -A05E;YI SYLLABLE BBAT;Lo;0;L;;;;;N;;;;; -A05F;YI SYLLABLE BBAX;Lo;0;L;;;;;N;;;;; -A060;YI SYLLABLE BBA;Lo;0;L;;;;;N;;;;; -A061;YI SYLLABLE BBAP;Lo;0;L;;;;;N;;;;; -A062;YI SYLLABLE BBUOX;Lo;0;L;;;;;N;;;;; -A063;YI SYLLABLE BBUO;Lo;0;L;;;;;N;;;;; -A064;YI SYLLABLE BBUOP;Lo;0;L;;;;;N;;;;; -A065;YI SYLLABLE BBOT;Lo;0;L;;;;;N;;;;; -A066;YI SYLLABLE BBOX;Lo;0;L;;;;;N;;;;; -A067;YI SYLLABLE BBO;Lo;0;L;;;;;N;;;;; -A068;YI SYLLABLE BBOP;Lo;0;L;;;;;N;;;;; -A069;YI SYLLABLE BBEX;Lo;0;L;;;;;N;;;;; -A06A;YI SYLLABLE BBE;Lo;0;L;;;;;N;;;;; -A06B;YI SYLLABLE BBEP;Lo;0;L;;;;;N;;;;; -A06C;YI SYLLABLE BBUT;Lo;0;L;;;;;N;;;;; -A06D;YI SYLLABLE BBUX;Lo;0;L;;;;;N;;;;; -A06E;YI SYLLABLE BBU;Lo;0;L;;;;;N;;;;; -A06F;YI SYLLABLE BBUP;Lo;0;L;;;;;N;;;;; -A070;YI SYLLABLE BBURX;Lo;0;L;;;;;N;;;;; -A071;YI SYLLABLE BBUR;Lo;0;L;;;;;N;;;;; -A072;YI SYLLABLE BBYT;Lo;0;L;;;;;N;;;;; -A073;YI SYLLABLE BBYX;Lo;0;L;;;;;N;;;;; -A074;YI SYLLABLE BBY;Lo;0;L;;;;;N;;;;; -A075;YI SYLLABLE BBYP;Lo;0;L;;;;;N;;;;; -A076;YI SYLLABLE NBIT;Lo;0;L;;;;;N;;;;; -A077;YI SYLLABLE NBIX;Lo;0;L;;;;;N;;;;; -A078;YI SYLLABLE NBI;Lo;0;L;;;;;N;;;;; -A079;YI SYLLABLE NBIP;Lo;0;L;;;;;N;;;;; -A07A;YI SYLLABLE NBIEX;Lo;0;L;;;;;N;;;;; -A07B;YI SYLLABLE NBIE;Lo;0;L;;;;;N;;;;; -A07C;YI SYLLABLE NBIEP;Lo;0;L;;;;;N;;;;; -A07D;YI SYLLABLE NBAT;Lo;0;L;;;;;N;;;;; -A07E;YI SYLLABLE NBAX;Lo;0;L;;;;;N;;;;; -A07F;YI SYLLABLE NBA;Lo;0;L;;;;;N;;;;; -A080;YI SYLLABLE NBAP;Lo;0;L;;;;;N;;;;; -A081;YI SYLLABLE NBOT;Lo;0;L;;;;;N;;;;; -A082;YI SYLLABLE NBOX;Lo;0;L;;;;;N;;;;; -A083;YI SYLLABLE NBO;Lo;0;L;;;;;N;;;;; -A084;YI SYLLABLE NBOP;Lo;0;L;;;;;N;;;;; -A085;YI SYLLABLE NBUT;Lo;0;L;;;;;N;;;;; -A086;YI SYLLABLE NBUX;Lo;0;L;;;;;N;;;;; -A087;YI SYLLABLE NBU;Lo;0;L;;;;;N;;;;; -A088;YI SYLLABLE NBUP;Lo;0;L;;;;;N;;;;; -A089;YI SYLLABLE NBURX;Lo;0;L;;;;;N;;;;; -A08A;YI SYLLABLE NBUR;Lo;0;L;;;;;N;;;;; -A08B;YI SYLLABLE NBYT;Lo;0;L;;;;;N;;;;; -A08C;YI SYLLABLE NBYX;Lo;0;L;;;;;N;;;;; -A08D;YI SYLLABLE NBY;Lo;0;L;;;;;N;;;;; -A08E;YI SYLLABLE NBYP;Lo;0;L;;;;;N;;;;; -A08F;YI SYLLABLE NBYRX;Lo;0;L;;;;;N;;;;; -A090;YI SYLLABLE NBYR;Lo;0;L;;;;;N;;;;; -A091;YI SYLLABLE HMIT;Lo;0;L;;;;;N;;;;; -A092;YI SYLLABLE HMIX;Lo;0;L;;;;;N;;;;; -A093;YI SYLLABLE HMI;Lo;0;L;;;;;N;;;;; -A094;YI SYLLABLE HMIP;Lo;0;L;;;;;N;;;;; -A095;YI SYLLABLE HMIEX;Lo;0;L;;;;;N;;;;; -A096;YI SYLLABLE HMIE;Lo;0;L;;;;;N;;;;; -A097;YI SYLLABLE HMIEP;Lo;0;L;;;;;N;;;;; -A098;YI SYLLABLE HMAT;Lo;0;L;;;;;N;;;;; -A099;YI SYLLABLE HMAX;Lo;0;L;;;;;N;;;;; -A09A;YI SYLLABLE HMA;Lo;0;L;;;;;N;;;;; -A09B;YI SYLLABLE HMAP;Lo;0;L;;;;;N;;;;; -A09C;YI SYLLABLE HMUOX;Lo;0;L;;;;;N;;;;; -A09D;YI SYLLABLE HMUO;Lo;0;L;;;;;N;;;;; -A09E;YI SYLLABLE HMUOP;Lo;0;L;;;;;N;;;;; -A09F;YI SYLLABLE HMOT;Lo;0;L;;;;;N;;;;; -A0A0;YI SYLLABLE HMOX;Lo;0;L;;;;;N;;;;; -A0A1;YI SYLLABLE HMO;Lo;0;L;;;;;N;;;;; -A0A2;YI SYLLABLE HMOP;Lo;0;L;;;;;N;;;;; -A0A3;YI SYLLABLE HMUT;Lo;0;L;;;;;N;;;;; -A0A4;YI SYLLABLE HMUX;Lo;0;L;;;;;N;;;;; -A0A5;YI SYLLABLE HMU;Lo;0;L;;;;;N;;;;; -A0A6;YI SYLLABLE HMUP;Lo;0;L;;;;;N;;;;; -A0A7;YI SYLLABLE HMURX;Lo;0;L;;;;;N;;;;; -A0A8;YI SYLLABLE HMUR;Lo;0;L;;;;;N;;;;; -A0A9;YI SYLLABLE HMYX;Lo;0;L;;;;;N;;;;; -A0AA;YI SYLLABLE HMY;Lo;0;L;;;;;N;;;;; -A0AB;YI SYLLABLE HMYP;Lo;0;L;;;;;N;;;;; -A0AC;YI SYLLABLE HMYRX;Lo;0;L;;;;;N;;;;; -A0AD;YI SYLLABLE HMYR;Lo;0;L;;;;;N;;;;; -A0AE;YI SYLLABLE MIT;Lo;0;L;;;;;N;;;;; -A0AF;YI SYLLABLE MIX;Lo;0;L;;;;;N;;;;; -A0B0;YI SYLLABLE MI;Lo;0;L;;;;;N;;;;; -A0B1;YI SYLLABLE MIP;Lo;0;L;;;;;N;;;;; -A0B2;YI SYLLABLE MIEX;Lo;0;L;;;;;N;;;;; -A0B3;YI SYLLABLE MIE;Lo;0;L;;;;;N;;;;; -A0B4;YI SYLLABLE MIEP;Lo;0;L;;;;;N;;;;; -A0B5;YI SYLLABLE MAT;Lo;0;L;;;;;N;;;;; -A0B6;YI SYLLABLE MAX;Lo;0;L;;;;;N;;;;; -A0B7;YI SYLLABLE MA;Lo;0;L;;;;;N;;;;; -A0B8;YI SYLLABLE MAP;Lo;0;L;;;;;N;;;;; -A0B9;YI SYLLABLE MUOT;Lo;0;L;;;;;N;;;;; -A0BA;YI SYLLABLE MUOX;Lo;0;L;;;;;N;;;;; -A0BB;YI SYLLABLE MUO;Lo;0;L;;;;;N;;;;; -A0BC;YI SYLLABLE MUOP;Lo;0;L;;;;;N;;;;; -A0BD;YI SYLLABLE MOT;Lo;0;L;;;;;N;;;;; -A0BE;YI SYLLABLE MOX;Lo;0;L;;;;;N;;;;; -A0BF;YI SYLLABLE MO;Lo;0;L;;;;;N;;;;; -A0C0;YI SYLLABLE MOP;Lo;0;L;;;;;N;;;;; -A0C1;YI SYLLABLE MEX;Lo;0;L;;;;;N;;;;; -A0C2;YI SYLLABLE ME;Lo;0;L;;;;;N;;;;; -A0C3;YI SYLLABLE MUT;Lo;0;L;;;;;N;;;;; -A0C4;YI SYLLABLE MUX;Lo;0;L;;;;;N;;;;; -A0C5;YI SYLLABLE MU;Lo;0;L;;;;;N;;;;; -A0C6;YI SYLLABLE MUP;Lo;0;L;;;;;N;;;;; -A0C7;YI SYLLABLE MURX;Lo;0;L;;;;;N;;;;; -A0C8;YI SYLLABLE MUR;Lo;0;L;;;;;N;;;;; -A0C9;YI SYLLABLE MYT;Lo;0;L;;;;;N;;;;; -A0CA;YI SYLLABLE MYX;Lo;0;L;;;;;N;;;;; -A0CB;YI SYLLABLE MY;Lo;0;L;;;;;N;;;;; -A0CC;YI SYLLABLE MYP;Lo;0;L;;;;;N;;;;; -A0CD;YI SYLLABLE FIT;Lo;0;L;;;;;N;;;;; -A0CE;YI SYLLABLE FIX;Lo;0;L;;;;;N;;;;; -A0CF;YI SYLLABLE FI;Lo;0;L;;;;;N;;;;; -A0D0;YI SYLLABLE FIP;Lo;0;L;;;;;N;;;;; -A0D1;YI SYLLABLE FAT;Lo;0;L;;;;;N;;;;; -A0D2;YI SYLLABLE FAX;Lo;0;L;;;;;N;;;;; -A0D3;YI SYLLABLE FA;Lo;0;L;;;;;N;;;;; -A0D4;YI SYLLABLE FAP;Lo;0;L;;;;;N;;;;; -A0D5;YI SYLLABLE FOX;Lo;0;L;;;;;N;;;;; -A0D6;YI SYLLABLE FO;Lo;0;L;;;;;N;;;;; -A0D7;YI SYLLABLE FOP;Lo;0;L;;;;;N;;;;; -A0D8;YI SYLLABLE FUT;Lo;0;L;;;;;N;;;;; -A0D9;YI SYLLABLE FUX;Lo;0;L;;;;;N;;;;; -A0DA;YI SYLLABLE FU;Lo;0;L;;;;;N;;;;; -A0DB;YI SYLLABLE FUP;Lo;0;L;;;;;N;;;;; -A0DC;YI SYLLABLE FURX;Lo;0;L;;;;;N;;;;; -A0DD;YI SYLLABLE FUR;Lo;0;L;;;;;N;;;;; -A0DE;YI SYLLABLE FYT;Lo;0;L;;;;;N;;;;; -A0DF;YI SYLLABLE FYX;Lo;0;L;;;;;N;;;;; -A0E0;YI SYLLABLE FY;Lo;0;L;;;;;N;;;;; -A0E1;YI SYLLABLE FYP;Lo;0;L;;;;;N;;;;; -A0E2;YI SYLLABLE VIT;Lo;0;L;;;;;N;;;;; -A0E3;YI SYLLABLE VIX;Lo;0;L;;;;;N;;;;; -A0E4;YI SYLLABLE VI;Lo;0;L;;;;;N;;;;; -A0E5;YI SYLLABLE VIP;Lo;0;L;;;;;N;;;;; -A0E6;YI SYLLABLE VIET;Lo;0;L;;;;;N;;;;; -A0E7;YI SYLLABLE VIEX;Lo;0;L;;;;;N;;;;; -A0E8;YI SYLLABLE VIE;Lo;0;L;;;;;N;;;;; -A0E9;YI SYLLABLE VIEP;Lo;0;L;;;;;N;;;;; -A0EA;YI SYLLABLE VAT;Lo;0;L;;;;;N;;;;; -A0EB;YI SYLLABLE VAX;Lo;0;L;;;;;N;;;;; -A0EC;YI SYLLABLE VA;Lo;0;L;;;;;N;;;;; -A0ED;YI SYLLABLE VAP;Lo;0;L;;;;;N;;;;; -A0EE;YI SYLLABLE VOT;Lo;0;L;;;;;N;;;;; -A0EF;YI SYLLABLE VOX;Lo;0;L;;;;;N;;;;; -A0F0;YI SYLLABLE VO;Lo;0;L;;;;;N;;;;; -A0F1;YI SYLLABLE VOP;Lo;0;L;;;;;N;;;;; -A0F2;YI SYLLABLE VEX;Lo;0;L;;;;;N;;;;; -A0F3;YI SYLLABLE VEP;Lo;0;L;;;;;N;;;;; -A0F4;YI SYLLABLE VUT;Lo;0;L;;;;;N;;;;; -A0F5;YI SYLLABLE VUX;Lo;0;L;;;;;N;;;;; -A0F6;YI SYLLABLE VU;Lo;0;L;;;;;N;;;;; -A0F7;YI SYLLABLE VUP;Lo;0;L;;;;;N;;;;; -A0F8;YI SYLLABLE VURX;Lo;0;L;;;;;N;;;;; -A0F9;YI SYLLABLE VUR;Lo;0;L;;;;;N;;;;; -A0FA;YI SYLLABLE VYT;Lo;0;L;;;;;N;;;;; -A0FB;YI SYLLABLE VYX;Lo;0;L;;;;;N;;;;; -A0FC;YI SYLLABLE VY;Lo;0;L;;;;;N;;;;; -A0FD;YI SYLLABLE VYP;Lo;0;L;;;;;N;;;;; -A0FE;YI SYLLABLE VYRX;Lo;0;L;;;;;N;;;;; -A0FF;YI SYLLABLE VYR;Lo;0;L;;;;;N;;;;; -A100;YI SYLLABLE DIT;Lo;0;L;;;;;N;;;;; -A101;YI SYLLABLE DIX;Lo;0;L;;;;;N;;;;; -A102;YI SYLLABLE DI;Lo;0;L;;;;;N;;;;; -A103;YI SYLLABLE DIP;Lo;0;L;;;;;N;;;;; -A104;YI SYLLABLE DIEX;Lo;0;L;;;;;N;;;;; -A105;YI SYLLABLE DIE;Lo;0;L;;;;;N;;;;; -A106;YI SYLLABLE DIEP;Lo;0;L;;;;;N;;;;; -A107;YI SYLLABLE DAT;Lo;0;L;;;;;N;;;;; -A108;YI SYLLABLE DAX;Lo;0;L;;;;;N;;;;; -A109;YI SYLLABLE DA;Lo;0;L;;;;;N;;;;; -A10A;YI SYLLABLE DAP;Lo;0;L;;;;;N;;;;; -A10B;YI SYLLABLE DUOX;Lo;0;L;;;;;N;;;;; -A10C;YI SYLLABLE DUO;Lo;0;L;;;;;N;;;;; -A10D;YI SYLLABLE DOT;Lo;0;L;;;;;N;;;;; -A10E;YI SYLLABLE DOX;Lo;0;L;;;;;N;;;;; -A10F;YI SYLLABLE DO;Lo;0;L;;;;;N;;;;; -A110;YI SYLLABLE DOP;Lo;0;L;;;;;N;;;;; -A111;YI SYLLABLE DEX;Lo;0;L;;;;;N;;;;; -A112;YI SYLLABLE DE;Lo;0;L;;;;;N;;;;; -A113;YI SYLLABLE DEP;Lo;0;L;;;;;N;;;;; -A114;YI SYLLABLE DUT;Lo;0;L;;;;;N;;;;; -A115;YI SYLLABLE DUX;Lo;0;L;;;;;N;;;;; -A116;YI SYLLABLE DU;Lo;0;L;;;;;N;;;;; -A117;YI SYLLABLE DUP;Lo;0;L;;;;;N;;;;; -A118;YI SYLLABLE DURX;Lo;0;L;;;;;N;;;;; -A119;YI SYLLABLE DUR;Lo;0;L;;;;;N;;;;; -A11A;YI SYLLABLE TIT;Lo;0;L;;;;;N;;;;; -A11B;YI SYLLABLE TIX;Lo;0;L;;;;;N;;;;; -A11C;YI SYLLABLE TI;Lo;0;L;;;;;N;;;;; -A11D;YI SYLLABLE TIP;Lo;0;L;;;;;N;;;;; -A11E;YI SYLLABLE TIEX;Lo;0;L;;;;;N;;;;; -A11F;YI SYLLABLE TIE;Lo;0;L;;;;;N;;;;; -A120;YI SYLLABLE TIEP;Lo;0;L;;;;;N;;;;; -A121;YI SYLLABLE TAT;Lo;0;L;;;;;N;;;;; -A122;YI SYLLABLE TAX;Lo;0;L;;;;;N;;;;; -A123;YI SYLLABLE TA;Lo;0;L;;;;;N;;;;; -A124;YI SYLLABLE TAP;Lo;0;L;;;;;N;;;;; -A125;YI SYLLABLE TUOT;Lo;0;L;;;;;N;;;;; -A126;YI SYLLABLE TUOX;Lo;0;L;;;;;N;;;;; -A127;YI SYLLABLE TUO;Lo;0;L;;;;;N;;;;; -A128;YI SYLLABLE TUOP;Lo;0;L;;;;;N;;;;; -A129;YI SYLLABLE TOT;Lo;0;L;;;;;N;;;;; -A12A;YI SYLLABLE TOX;Lo;0;L;;;;;N;;;;; -A12B;YI SYLLABLE TO;Lo;0;L;;;;;N;;;;; -A12C;YI SYLLABLE TOP;Lo;0;L;;;;;N;;;;; -A12D;YI SYLLABLE TEX;Lo;0;L;;;;;N;;;;; -A12E;YI SYLLABLE TE;Lo;0;L;;;;;N;;;;; -A12F;YI SYLLABLE TEP;Lo;0;L;;;;;N;;;;; -A130;YI SYLLABLE TUT;Lo;0;L;;;;;N;;;;; -A131;YI SYLLABLE TUX;Lo;0;L;;;;;N;;;;; -A132;YI SYLLABLE TU;Lo;0;L;;;;;N;;;;; -A133;YI SYLLABLE TUP;Lo;0;L;;;;;N;;;;; -A134;YI SYLLABLE TURX;Lo;0;L;;;;;N;;;;; -A135;YI SYLLABLE TUR;Lo;0;L;;;;;N;;;;; -A136;YI SYLLABLE DDIT;Lo;0;L;;;;;N;;;;; -A137;YI SYLLABLE DDIX;Lo;0;L;;;;;N;;;;; -A138;YI SYLLABLE DDI;Lo;0;L;;;;;N;;;;; -A139;YI SYLLABLE DDIP;Lo;0;L;;;;;N;;;;; -A13A;YI SYLLABLE DDIEX;Lo;0;L;;;;;N;;;;; -A13B;YI SYLLABLE DDIE;Lo;0;L;;;;;N;;;;; -A13C;YI SYLLABLE DDIEP;Lo;0;L;;;;;N;;;;; -A13D;YI SYLLABLE DDAT;Lo;0;L;;;;;N;;;;; -A13E;YI SYLLABLE DDAX;Lo;0;L;;;;;N;;;;; -A13F;YI SYLLABLE DDA;Lo;0;L;;;;;N;;;;; -A140;YI SYLLABLE DDAP;Lo;0;L;;;;;N;;;;; -A141;YI SYLLABLE DDUOX;Lo;0;L;;;;;N;;;;; -A142;YI SYLLABLE DDUO;Lo;0;L;;;;;N;;;;; -A143;YI SYLLABLE DDUOP;Lo;0;L;;;;;N;;;;; -A144;YI SYLLABLE DDOT;Lo;0;L;;;;;N;;;;; -A145;YI SYLLABLE DDOX;Lo;0;L;;;;;N;;;;; -A146;YI SYLLABLE DDO;Lo;0;L;;;;;N;;;;; -A147;YI SYLLABLE DDOP;Lo;0;L;;;;;N;;;;; -A148;YI SYLLABLE DDEX;Lo;0;L;;;;;N;;;;; -A149;YI SYLLABLE DDE;Lo;0;L;;;;;N;;;;; -A14A;YI SYLLABLE DDEP;Lo;0;L;;;;;N;;;;; -A14B;YI SYLLABLE DDUT;Lo;0;L;;;;;N;;;;; -A14C;YI SYLLABLE DDUX;Lo;0;L;;;;;N;;;;; -A14D;YI SYLLABLE DDU;Lo;0;L;;;;;N;;;;; -A14E;YI SYLLABLE DDUP;Lo;0;L;;;;;N;;;;; -A14F;YI SYLLABLE DDURX;Lo;0;L;;;;;N;;;;; -A150;YI SYLLABLE DDUR;Lo;0;L;;;;;N;;;;; -A151;YI SYLLABLE NDIT;Lo;0;L;;;;;N;;;;; -A152;YI SYLLABLE NDIX;Lo;0;L;;;;;N;;;;; -A153;YI SYLLABLE NDI;Lo;0;L;;;;;N;;;;; -A154;YI SYLLABLE NDIP;Lo;0;L;;;;;N;;;;; -A155;YI SYLLABLE NDIEX;Lo;0;L;;;;;N;;;;; -A156;YI SYLLABLE NDIE;Lo;0;L;;;;;N;;;;; -A157;YI SYLLABLE NDAT;Lo;0;L;;;;;N;;;;; -A158;YI SYLLABLE NDAX;Lo;0;L;;;;;N;;;;; -A159;YI SYLLABLE NDA;Lo;0;L;;;;;N;;;;; -A15A;YI SYLLABLE NDAP;Lo;0;L;;;;;N;;;;; -A15B;YI SYLLABLE NDOT;Lo;0;L;;;;;N;;;;; -A15C;YI SYLLABLE NDOX;Lo;0;L;;;;;N;;;;; -A15D;YI SYLLABLE NDO;Lo;0;L;;;;;N;;;;; -A15E;YI SYLLABLE NDOP;Lo;0;L;;;;;N;;;;; -A15F;YI SYLLABLE NDEX;Lo;0;L;;;;;N;;;;; -A160;YI SYLLABLE NDE;Lo;0;L;;;;;N;;;;; -A161;YI SYLLABLE NDEP;Lo;0;L;;;;;N;;;;; -A162;YI SYLLABLE NDUT;Lo;0;L;;;;;N;;;;; -A163;YI SYLLABLE NDUX;Lo;0;L;;;;;N;;;;; -A164;YI SYLLABLE NDU;Lo;0;L;;;;;N;;;;; -A165;YI SYLLABLE NDUP;Lo;0;L;;;;;N;;;;; -A166;YI SYLLABLE NDURX;Lo;0;L;;;;;N;;;;; -A167;YI SYLLABLE NDUR;Lo;0;L;;;;;N;;;;; -A168;YI SYLLABLE HNIT;Lo;0;L;;;;;N;;;;; -A169;YI SYLLABLE HNIX;Lo;0;L;;;;;N;;;;; -A16A;YI SYLLABLE HNI;Lo;0;L;;;;;N;;;;; -A16B;YI SYLLABLE HNIP;Lo;0;L;;;;;N;;;;; -A16C;YI SYLLABLE HNIET;Lo;0;L;;;;;N;;;;; -A16D;YI SYLLABLE HNIEX;Lo;0;L;;;;;N;;;;; -A16E;YI SYLLABLE HNIE;Lo;0;L;;;;;N;;;;; -A16F;YI SYLLABLE HNIEP;Lo;0;L;;;;;N;;;;; -A170;YI SYLLABLE HNAT;Lo;0;L;;;;;N;;;;; -A171;YI SYLLABLE HNAX;Lo;0;L;;;;;N;;;;; -A172;YI SYLLABLE HNA;Lo;0;L;;;;;N;;;;; -A173;YI SYLLABLE HNAP;Lo;0;L;;;;;N;;;;; -A174;YI SYLLABLE HNUOX;Lo;0;L;;;;;N;;;;; -A175;YI SYLLABLE HNUO;Lo;0;L;;;;;N;;;;; -A176;YI SYLLABLE HNOT;Lo;0;L;;;;;N;;;;; -A177;YI SYLLABLE HNOX;Lo;0;L;;;;;N;;;;; -A178;YI SYLLABLE HNOP;Lo;0;L;;;;;N;;;;; -A179;YI SYLLABLE HNEX;Lo;0;L;;;;;N;;;;; -A17A;YI SYLLABLE HNE;Lo;0;L;;;;;N;;;;; -A17B;YI SYLLABLE HNEP;Lo;0;L;;;;;N;;;;; -A17C;YI SYLLABLE HNUT;Lo;0;L;;;;;N;;;;; -A17D;YI SYLLABLE NIT;Lo;0;L;;;;;N;;;;; -A17E;YI SYLLABLE NIX;Lo;0;L;;;;;N;;;;; -A17F;YI SYLLABLE NI;Lo;0;L;;;;;N;;;;; -A180;YI SYLLABLE NIP;Lo;0;L;;;;;N;;;;; -A181;YI SYLLABLE NIEX;Lo;0;L;;;;;N;;;;; -A182;YI SYLLABLE NIE;Lo;0;L;;;;;N;;;;; -A183;YI SYLLABLE NIEP;Lo;0;L;;;;;N;;;;; -A184;YI SYLLABLE NAX;Lo;0;L;;;;;N;;;;; -A185;YI SYLLABLE NA;Lo;0;L;;;;;N;;;;; -A186;YI SYLLABLE NAP;Lo;0;L;;;;;N;;;;; -A187;YI SYLLABLE NUOX;Lo;0;L;;;;;N;;;;; -A188;YI SYLLABLE NUO;Lo;0;L;;;;;N;;;;; -A189;YI SYLLABLE NUOP;Lo;0;L;;;;;N;;;;; -A18A;YI SYLLABLE NOT;Lo;0;L;;;;;N;;;;; -A18B;YI SYLLABLE NOX;Lo;0;L;;;;;N;;;;; -A18C;YI SYLLABLE NO;Lo;0;L;;;;;N;;;;; -A18D;YI SYLLABLE NOP;Lo;0;L;;;;;N;;;;; -A18E;YI SYLLABLE NEX;Lo;0;L;;;;;N;;;;; -A18F;YI SYLLABLE NE;Lo;0;L;;;;;N;;;;; -A190;YI SYLLABLE NEP;Lo;0;L;;;;;N;;;;; -A191;YI SYLLABLE NUT;Lo;0;L;;;;;N;;;;; -A192;YI SYLLABLE NUX;Lo;0;L;;;;;N;;;;; -A193;YI SYLLABLE NU;Lo;0;L;;;;;N;;;;; -A194;YI SYLLABLE NUP;Lo;0;L;;;;;N;;;;; -A195;YI SYLLABLE NURX;Lo;0;L;;;;;N;;;;; -A196;YI SYLLABLE NUR;Lo;0;L;;;;;N;;;;; -A197;YI SYLLABLE HLIT;Lo;0;L;;;;;N;;;;; -A198;YI SYLLABLE HLIX;Lo;0;L;;;;;N;;;;; -A199;YI SYLLABLE HLI;Lo;0;L;;;;;N;;;;; -A19A;YI SYLLABLE HLIP;Lo;0;L;;;;;N;;;;; -A19B;YI SYLLABLE HLIEX;Lo;0;L;;;;;N;;;;; -A19C;YI SYLLABLE HLIE;Lo;0;L;;;;;N;;;;; -A19D;YI SYLLABLE HLIEP;Lo;0;L;;;;;N;;;;; -A19E;YI SYLLABLE HLAT;Lo;0;L;;;;;N;;;;; -A19F;YI SYLLABLE HLAX;Lo;0;L;;;;;N;;;;; -A1A0;YI SYLLABLE HLA;Lo;0;L;;;;;N;;;;; -A1A1;YI SYLLABLE HLAP;Lo;0;L;;;;;N;;;;; -A1A2;YI SYLLABLE HLUOX;Lo;0;L;;;;;N;;;;; -A1A3;YI SYLLABLE HLUO;Lo;0;L;;;;;N;;;;; -A1A4;YI SYLLABLE HLUOP;Lo;0;L;;;;;N;;;;; -A1A5;YI SYLLABLE HLOX;Lo;0;L;;;;;N;;;;; -A1A6;YI SYLLABLE HLO;Lo;0;L;;;;;N;;;;; -A1A7;YI SYLLABLE HLOP;Lo;0;L;;;;;N;;;;; -A1A8;YI SYLLABLE HLEX;Lo;0;L;;;;;N;;;;; -A1A9;YI SYLLABLE HLE;Lo;0;L;;;;;N;;;;; -A1AA;YI SYLLABLE HLEP;Lo;0;L;;;;;N;;;;; -A1AB;YI SYLLABLE HLUT;Lo;0;L;;;;;N;;;;; -A1AC;YI SYLLABLE HLUX;Lo;0;L;;;;;N;;;;; -A1AD;YI SYLLABLE HLU;Lo;0;L;;;;;N;;;;; -A1AE;YI SYLLABLE HLUP;Lo;0;L;;;;;N;;;;; -A1AF;YI SYLLABLE HLURX;Lo;0;L;;;;;N;;;;; -A1B0;YI SYLLABLE HLUR;Lo;0;L;;;;;N;;;;; -A1B1;YI SYLLABLE HLYT;Lo;0;L;;;;;N;;;;; -A1B2;YI SYLLABLE HLYX;Lo;0;L;;;;;N;;;;; -A1B3;YI SYLLABLE HLY;Lo;0;L;;;;;N;;;;; -A1B4;YI SYLLABLE HLYP;Lo;0;L;;;;;N;;;;; -A1B5;YI SYLLABLE HLYRX;Lo;0;L;;;;;N;;;;; -A1B6;YI SYLLABLE HLYR;Lo;0;L;;;;;N;;;;; -A1B7;YI SYLLABLE LIT;Lo;0;L;;;;;N;;;;; -A1B8;YI SYLLABLE LIX;Lo;0;L;;;;;N;;;;; -A1B9;YI SYLLABLE LI;Lo;0;L;;;;;N;;;;; -A1BA;YI SYLLABLE LIP;Lo;0;L;;;;;N;;;;; -A1BB;YI SYLLABLE LIET;Lo;0;L;;;;;N;;;;; -A1BC;YI SYLLABLE LIEX;Lo;0;L;;;;;N;;;;; -A1BD;YI SYLLABLE LIE;Lo;0;L;;;;;N;;;;; -A1BE;YI SYLLABLE LIEP;Lo;0;L;;;;;N;;;;; -A1BF;YI SYLLABLE LAT;Lo;0;L;;;;;N;;;;; -A1C0;YI SYLLABLE LAX;Lo;0;L;;;;;N;;;;; -A1C1;YI SYLLABLE LA;Lo;0;L;;;;;N;;;;; -A1C2;YI SYLLABLE LAP;Lo;0;L;;;;;N;;;;; -A1C3;YI SYLLABLE LUOT;Lo;0;L;;;;;N;;;;; -A1C4;YI SYLLABLE LUOX;Lo;0;L;;;;;N;;;;; -A1C5;YI SYLLABLE LUO;Lo;0;L;;;;;N;;;;; -A1C6;YI SYLLABLE LUOP;Lo;0;L;;;;;N;;;;; -A1C7;YI SYLLABLE LOT;Lo;0;L;;;;;N;;;;; -A1C8;YI SYLLABLE LOX;Lo;0;L;;;;;N;;;;; -A1C9;YI SYLLABLE LO;Lo;0;L;;;;;N;;;;; -A1CA;YI SYLLABLE LOP;Lo;0;L;;;;;N;;;;; -A1CB;YI SYLLABLE LEX;Lo;0;L;;;;;N;;;;; -A1CC;YI SYLLABLE LE;Lo;0;L;;;;;N;;;;; -A1CD;YI SYLLABLE LEP;Lo;0;L;;;;;N;;;;; -A1CE;YI SYLLABLE LUT;Lo;0;L;;;;;N;;;;; -A1CF;YI SYLLABLE LUX;Lo;0;L;;;;;N;;;;; -A1D0;YI SYLLABLE LU;Lo;0;L;;;;;N;;;;; -A1D1;YI SYLLABLE LUP;Lo;0;L;;;;;N;;;;; -A1D2;YI SYLLABLE LURX;Lo;0;L;;;;;N;;;;; -A1D3;YI SYLLABLE LUR;Lo;0;L;;;;;N;;;;; -A1D4;YI SYLLABLE LYT;Lo;0;L;;;;;N;;;;; -A1D5;YI SYLLABLE LYX;Lo;0;L;;;;;N;;;;; -A1D6;YI SYLLABLE LY;Lo;0;L;;;;;N;;;;; -A1D7;YI SYLLABLE LYP;Lo;0;L;;;;;N;;;;; -A1D8;YI SYLLABLE LYRX;Lo;0;L;;;;;N;;;;; -A1D9;YI SYLLABLE LYR;Lo;0;L;;;;;N;;;;; -A1DA;YI SYLLABLE GIT;Lo;0;L;;;;;N;;;;; -A1DB;YI SYLLABLE GIX;Lo;0;L;;;;;N;;;;; -A1DC;YI SYLLABLE GI;Lo;0;L;;;;;N;;;;; -A1DD;YI SYLLABLE GIP;Lo;0;L;;;;;N;;;;; -A1DE;YI SYLLABLE GIET;Lo;0;L;;;;;N;;;;; -A1DF;YI SYLLABLE GIEX;Lo;0;L;;;;;N;;;;; -A1E0;YI SYLLABLE GIE;Lo;0;L;;;;;N;;;;; -A1E1;YI SYLLABLE GIEP;Lo;0;L;;;;;N;;;;; -A1E2;YI SYLLABLE GAT;Lo;0;L;;;;;N;;;;; -A1E3;YI SYLLABLE GAX;Lo;0;L;;;;;N;;;;; -A1E4;YI SYLLABLE GA;Lo;0;L;;;;;N;;;;; -A1E5;YI SYLLABLE GAP;Lo;0;L;;;;;N;;;;; -A1E6;YI SYLLABLE GUOT;Lo;0;L;;;;;N;;;;; -A1E7;YI SYLLABLE GUOX;Lo;0;L;;;;;N;;;;; -A1E8;YI SYLLABLE GUO;Lo;0;L;;;;;N;;;;; -A1E9;YI SYLLABLE GUOP;Lo;0;L;;;;;N;;;;; -A1EA;YI SYLLABLE GOT;Lo;0;L;;;;;N;;;;; -A1EB;YI SYLLABLE GOX;Lo;0;L;;;;;N;;;;; -A1EC;YI SYLLABLE GO;Lo;0;L;;;;;N;;;;; -A1ED;YI SYLLABLE GOP;Lo;0;L;;;;;N;;;;; -A1EE;YI SYLLABLE GET;Lo;0;L;;;;;N;;;;; -A1EF;YI SYLLABLE GEX;Lo;0;L;;;;;N;;;;; -A1F0;YI SYLLABLE GE;Lo;0;L;;;;;N;;;;; -A1F1;YI SYLLABLE GEP;Lo;0;L;;;;;N;;;;; -A1F2;YI SYLLABLE GUT;Lo;0;L;;;;;N;;;;; -A1F3;YI SYLLABLE GUX;Lo;0;L;;;;;N;;;;; -A1F4;YI SYLLABLE GU;Lo;0;L;;;;;N;;;;; -A1F5;YI SYLLABLE GUP;Lo;0;L;;;;;N;;;;; -A1F6;YI SYLLABLE GURX;Lo;0;L;;;;;N;;;;; -A1F7;YI SYLLABLE GUR;Lo;0;L;;;;;N;;;;; -A1F8;YI SYLLABLE KIT;Lo;0;L;;;;;N;;;;; -A1F9;YI SYLLABLE KIX;Lo;0;L;;;;;N;;;;; -A1FA;YI SYLLABLE KI;Lo;0;L;;;;;N;;;;; -A1FB;YI SYLLABLE KIP;Lo;0;L;;;;;N;;;;; -A1FC;YI SYLLABLE KIEX;Lo;0;L;;;;;N;;;;; -A1FD;YI SYLLABLE KIE;Lo;0;L;;;;;N;;;;; -A1FE;YI SYLLABLE KIEP;Lo;0;L;;;;;N;;;;; -A1FF;YI SYLLABLE KAT;Lo;0;L;;;;;N;;;;; -A200;YI SYLLABLE KAX;Lo;0;L;;;;;N;;;;; -A201;YI SYLLABLE KA;Lo;0;L;;;;;N;;;;; -A202;YI SYLLABLE KAP;Lo;0;L;;;;;N;;;;; -A203;YI SYLLABLE KUOX;Lo;0;L;;;;;N;;;;; -A204;YI SYLLABLE KUO;Lo;0;L;;;;;N;;;;; -A205;YI SYLLABLE KUOP;Lo;0;L;;;;;N;;;;; -A206;YI SYLLABLE KOT;Lo;0;L;;;;;N;;;;; -A207;YI SYLLABLE KOX;Lo;0;L;;;;;N;;;;; -A208;YI SYLLABLE KO;Lo;0;L;;;;;N;;;;; -A209;YI SYLLABLE KOP;Lo;0;L;;;;;N;;;;; -A20A;YI SYLLABLE KET;Lo;0;L;;;;;N;;;;; -A20B;YI SYLLABLE KEX;Lo;0;L;;;;;N;;;;; -A20C;YI SYLLABLE KE;Lo;0;L;;;;;N;;;;; -A20D;YI SYLLABLE KEP;Lo;0;L;;;;;N;;;;; -A20E;YI SYLLABLE KUT;Lo;0;L;;;;;N;;;;; -A20F;YI SYLLABLE KUX;Lo;0;L;;;;;N;;;;; -A210;YI SYLLABLE KU;Lo;0;L;;;;;N;;;;; -A211;YI SYLLABLE KUP;Lo;0;L;;;;;N;;;;; -A212;YI SYLLABLE KURX;Lo;0;L;;;;;N;;;;; -A213;YI SYLLABLE KUR;Lo;0;L;;;;;N;;;;; -A214;YI SYLLABLE GGIT;Lo;0;L;;;;;N;;;;; -A215;YI SYLLABLE GGIX;Lo;0;L;;;;;N;;;;; -A216;YI SYLLABLE GGI;Lo;0;L;;;;;N;;;;; -A217;YI SYLLABLE GGIEX;Lo;0;L;;;;;N;;;;; -A218;YI SYLLABLE GGIE;Lo;0;L;;;;;N;;;;; -A219;YI SYLLABLE GGIEP;Lo;0;L;;;;;N;;;;; -A21A;YI SYLLABLE GGAT;Lo;0;L;;;;;N;;;;; -A21B;YI SYLLABLE GGAX;Lo;0;L;;;;;N;;;;; -A21C;YI SYLLABLE GGA;Lo;0;L;;;;;N;;;;; -A21D;YI SYLLABLE GGAP;Lo;0;L;;;;;N;;;;; -A21E;YI SYLLABLE GGUOT;Lo;0;L;;;;;N;;;;; -A21F;YI SYLLABLE GGUOX;Lo;0;L;;;;;N;;;;; -A220;YI SYLLABLE GGUO;Lo;0;L;;;;;N;;;;; -A221;YI SYLLABLE GGUOP;Lo;0;L;;;;;N;;;;; -A222;YI SYLLABLE GGOT;Lo;0;L;;;;;N;;;;; -A223;YI SYLLABLE GGOX;Lo;0;L;;;;;N;;;;; -A224;YI SYLLABLE GGO;Lo;0;L;;;;;N;;;;; -A225;YI SYLLABLE GGOP;Lo;0;L;;;;;N;;;;; -A226;YI SYLLABLE GGET;Lo;0;L;;;;;N;;;;; -A227;YI SYLLABLE GGEX;Lo;0;L;;;;;N;;;;; -A228;YI SYLLABLE GGE;Lo;0;L;;;;;N;;;;; -A229;YI SYLLABLE GGEP;Lo;0;L;;;;;N;;;;; -A22A;YI SYLLABLE GGUT;Lo;0;L;;;;;N;;;;; -A22B;YI SYLLABLE GGUX;Lo;0;L;;;;;N;;;;; -A22C;YI SYLLABLE GGU;Lo;0;L;;;;;N;;;;; -A22D;YI SYLLABLE GGUP;Lo;0;L;;;;;N;;;;; -A22E;YI SYLLABLE GGURX;Lo;0;L;;;;;N;;;;; -A22F;YI SYLLABLE GGUR;Lo;0;L;;;;;N;;;;; -A230;YI SYLLABLE MGIEX;Lo;0;L;;;;;N;;;;; -A231;YI SYLLABLE MGIE;Lo;0;L;;;;;N;;;;; -A232;YI SYLLABLE MGAT;Lo;0;L;;;;;N;;;;; -A233;YI SYLLABLE MGAX;Lo;0;L;;;;;N;;;;; -A234;YI SYLLABLE MGA;Lo;0;L;;;;;N;;;;; -A235;YI SYLLABLE MGAP;Lo;0;L;;;;;N;;;;; -A236;YI SYLLABLE MGUOX;Lo;0;L;;;;;N;;;;; -A237;YI SYLLABLE MGUO;Lo;0;L;;;;;N;;;;; -A238;YI SYLLABLE MGUOP;Lo;0;L;;;;;N;;;;; -A239;YI SYLLABLE MGOT;Lo;0;L;;;;;N;;;;; -A23A;YI SYLLABLE MGOX;Lo;0;L;;;;;N;;;;; -A23B;YI SYLLABLE MGO;Lo;0;L;;;;;N;;;;; -A23C;YI SYLLABLE MGOP;Lo;0;L;;;;;N;;;;; -A23D;YI SYLLABLE MGEX;Lo;0;L;;;;;N;;;;; -A23E;YI SYLLABLE MGE;Lo;0;L;;;;;N;;;;; -A23F;YI SYLLABLE MGEP;Lo;0;L;;;;;N;;;;; -A240;YI SYLLABLE MGUT;Lo;0;L;;;;;N;;;;; -A241;YI SYLLABLE MGUX;Lo;0;L;;;;;N;;;;; -A242;YI SYLLABLE MGU;Lo;0;L;;;;;N;;;;; -A243;YI SYLLABLE MGUP;Lo;0;L;;;;;N;;;;; -A244;YI SYLLABLE MGURX;Lo;0;L;;;;;N;;;;; -A245;YI SYLLABLE MGUR;Lo;0;L;;;;;N;;;;; -A246;YI SYLLABLE HXIT;Lo;0;L;;;;;N;;;;; -A247;YI SYLLABLE HXIX;Lo;0;L;;;;;N;;;;; -A248;YI SYLLABLE HXI;Lo;0;L;;;;;N;;;;; -A249;YI SYLLABLE HXIP;Lo;0;L;;;;;N;;;;; -A24A;YI SYLLABLE HXIET;Lo;0;L;;;;;N;;;;; -A24B;YI SYLLABLE HXIEX;Lo;0;L;;;;;N;;;;; -A24C;YI SYLLABLE HXIE;Lo;0;L;;;;;N;;;;; -A24D;YI SYLLABLE HXIEP;Lo;0;L;;;;;N;;;;; -A24E;YI SYLLABLE HXAT;Lo;0;L;;;;;N;;;;; -A24F;YI SYLLABLE HXAX;Lo;0;L;;;;;N;;;;; -A250;YI SYLLABLE HXA;Lo;0;L;;;;;N;;;;; -A251;YI SYLLABLE HXAP;Lo;0;L;;;;;N;;;;; -A252;YI SYLLABLE HXUOT;Lo;0;L;;;;;N;;;;; -A253;YI SYLLABLE HXUOX;Lo;0;L;;;;;N;;;;; -A254;YI SYLLABLE HXUO;Lo;0;L;;;;;N;;;;; -A255;YI SYLLABLE HXUOP;Lo;0;L;;;;;N;;;;; -A256;YI SYLLABLE HXOT;Lo;0;L;;;;;N;;;;; -A257;YI SYLLABLE HXOX;Lo;0;L;;;;;N;;;;; -A258;YI SYLLABLE HXO;Lo;0;L;;;;;N;;;;; -A259;YI SYLLABLE HXOP;Lo;0;L;;;;;N;;;;; -A25A;YI SYLLABLE HXEX;Lo;0;L;;;;;N;;;;; -A25B;YI SYLLABLE HXE;Lo;0;L;;;;;N;;;;; -A25C;YI SYLLABLE HXEP;Lo;0;L;;;;;N;;;;; -A25D;YI SYLLABLE NGIEX;Lo;0;L;;;;;N;;;;; -A25E;YI SYLLABLE NGIE;Lo;0;L;;;;;N;;;;; -A25F;YI SYLLABLE NGIEP;Lo;0;L;;;;;N;;;;; -A260;YI SYLLABLE NGAT;Lo;0;L;;;;;N;;;;; -A261;YI SYLLABLE NGAX;Lo;0;L;;;;;N;;;;; -A262;YI SYLLABLE NGA;Lo;0;L;;;;;N;;;;; -A263;YI SYLLABLE NGAP;Lo;0;L;;;;;N;;;;; -A264;YI SYLLABLE NGUOT;Lo;0;L;;;;;N;;;;; -A265;YI SYLLABLE NGUOX;Lo;0;L;;;;;N;;;;; -A266;YI SYLLABLE NGUO;Lo;0;L;;;;;N;;;;; -A267;YI SYLLABLE NGOT;Lo;0;L;;;;;N;;;;; -A268;YI SYLLABLE NGOX;Lo;0;L;;;;;N;;;;; -A269;YI SYLLABLE NGO;Lo;0;L;;;;;N;;;;; -A26A;YI SYLLABLE NGOP;Lo;0;L;;;;;N;;;;; -A26B;YI SYLLABLE NGEX;Lo;0;L;;;;;N;;;;; -A26C;YI SYLLABLE NGE;Lo;0;L;;;;;N;;;;; -A26D;YI SYLLABLE NGEP;Lo;0;L;;;;;N;;;;; -A26E;YI SYLLABLE HIT;Lo;0;L;;;;;N;;;;; -A26F;YI SYLLABLE HIEX;Lo;0;L;;;;;N;;;;; -A270;YI SYLLABLE HIE;Lo;0;L;;;;;N;;;;; -A271;YI SYLLABLE HAT;Lo;0;L;;;;;N;;;;; -A272;YI SYLLABLE HAX;Lo;0;L;;;;;N;;;;; -A273;YI SYLLABLE HA;Lo;0;L;;;;;N;;;;; -A274;YI SYLLABLE HAP;Lo;0;L;;;;;N;;;;; -A275;YI SYLLABLE HUOT;Lo;0;L;;;;;N;;;;; -A276;YI SYLLABLE HUOX;Lo;0;L;;;;;N;;;;; -A277;YI SYLLABLE HUO;Lo;0;L;;;;;N;;;;; -A278;YI SYLLABLE HUOP;Lo;0;L;;;;;N;;;;; -A279;YI SYLLABLE HOT;Lo;0;L;;;;;N;;;;; -A27A;YI SYLLABLE HOX;Lo;0;L;;;;;N;;;;; -A27B;YI SYLLABLE HO;Lo;0;L;;;;;N;;;;; -A27C;YI SYLLABLE HOP;Lo;0;L;;;;;N;;;;; -A27D;YI SYLLABLE HEX;Lo;0;L;;;;;N;;;;; -A27E;YI SYLLABLE HE;Lo;0;L;;;;;N;;;;; -A27F;YI SYLLABLE HEP;Lo;0;L;;;;;N;;;;; -A280;YI SYLLABLE WAT;Lo;0;L;;;;;N;;;;; -A281;YI SYLLABLE WAX;Lo;0;L;;;;;N;;;;; -A282;YI SYLLABLE WA;Lo;0;L;;;;;N;;;;; -A283;YI SYLLABLE WAP;Lo;0;L;;;;;N;;;;; -A284;YI SYLLABLE WUOX;Lo;0;L;;;;;N;;;;; -A285;YI SYLLABLE WUO;Lo;0;L;;;;;N;;;;; -A286;YI SYLLABLE WUOP;Lo;0;L;;;;;N;;;;; -A287;YI SYLLABLE WOX;Lo;0;L;;;;;N;;;;; -A288;YI SYLLABLE WO;Lo;0;L;;;;;N;;;;; -A289;YI SYLLABLE WOP;Lo;0;L;;;;;N;;;;; -A28A;YI SYLLABLE WEX;Lo;0;L;;;;;N;;;;; -A28B;YI SYLLABLE WE;Lo;0;L;;;;;N;;;;; -A28C;YI SYLLABLE WEP;Lo;0;L;;;;;N;;;;; -A28D;YI SYLLABLE ZIT;Lo;0;L;;;;;N;;;;; -A28E;YI SYLLABLE ZIX;Lo;0;L;;;;;N;;;;; -A28F;YI SYLLABLE ZI;Lo;0;L;;;;;N;;;;; -A290;YI SYLLABLE ZIP;Lo;0;L;;;;;N;;;;; -A291;YI SYLLABLE ZIEX;Lo;0;L;;;;;N;;;;; -A292;YI SYLLABLE ZIE;Lo;0;L;;;;;N;;;;; -A293;YI SYLLABLE ZIEP;Lo;0;L;;;;;N;;;;; -A294;YI SYLLABLE ZAT;Lo;0;L;;;;;N;;;;; -A295;YI SYLLABLE ZAX;Lo;0;L;;;;;N;;;;; -A296;YI SYLLABLE ZA;Lo;0;L;;;;;N;;;;; -A297;YI SYLLABLE ZAP;Lo;0;L;;;;;N;;;;; -A298;YI SYLLABLE ZUOX;Lo;0;L;;;;;N;;;;; -A299;YI SYLLABLE ZUO;Lo;0;L;;;;;N;;;;; -A29A;YI SYLLABLE ZUOP;Lo;0;L;;;;;N;;;;; -A29B;YI SYLLABLE ZOT;Lo;0;L;;;;;N;;;;; -A29C;YI SYLLABLE ZOX;Lo;0;L;;;;;N;;;;; -A29D;YI SYLLABLE ZO;Lo;0;L;;;;;N;;;;; -A29E;YI SYLLABLE ZOP;Lo;0;L;;;;;N;;;;; -A29F;YI SYLLABLE ZEX;Lo;0;L;;;;;N;;;;; -A2A0;YI SYLLABLE ZE;Lo;0;L;;;;;N;;;;; -A2A1;YI SYLLABLE ZEP;Lo;0;L;;;;;N;;;;; -A2A2;YI SYLLABLE ZUT;Lo;0;L;;;;;N;;;;; -A2A3;YI SYLLABLE ZUX;Lo;0;L;;;;;N;;;;; -A2A4;YI SYLLABLE ZU;Lo;0;L;;;;;N;;;;; -A2A5;YI SYLLABLE ZUP;Lo;0;L;;;;;N;;;;; -A2A6;YI SYLLABLE ZURX;Lo;0;L;;;;;N;;;;; -A2A7;YI SYLLABLE ZUR;Lo;0;L;;;;;N;;;;; -A2A8;YI SYLLABLE ZYT;Lo;0;L;;;;;N;;;;; -A2A9;YI SYLLABLE ZYX;Lo;0;L;;;;;N;;;;; -A2AA;YI SYLLABLE ZY;Lo;0;L;;;;;N;;;;; -A2AB;YI SYLLABLE ZYP;Lo;0;L;;;;;N;;;;; -A2AC;YI SYLLABLE ZYRX;Lo;0;L;;;;;N;;;;; -A2AD;YI SYLLABLE ZYR;Lo;0;L;;;;;N;;;;; -A2AE;YI SYLLABLE CIT;Lo;0;L;;;;;N;;;;; -A2AF;YI SYLLABLE CIX;Lo;0;L;;;;;N;;;;; -A2B0;YI SYLLABLE CI;Lo;0;L;;;;;N;;;;; -A2B1;YI SYLLABLE CIP;Lo;0;L;;;;;N;;;;; -A2B2;YI SYLLABLE CIET;Lo;0;L;;;;;N;;;;; -A2B3;YI SYLLABLE CIEX;Lo;0;L;;;;;N;;;;; -A2B4;YI SYLLABLE CIE;Lo;0;L;;;;;N;;;;; -A2B5;YI SYLLABLE CIEP;Lo;0;L;;;;;N;;;;; -A2B6;YI SYLLABLE CAT;Lo;0;L;;;;;N;;;;; -A2B7;YI SYLLABLE CAX;Lo;0;L;;;;;N;;;;; -A2B8;YI SYLLABLE CA;Lo;0;L;;;;;N;;;;; -A2B9;YI SYLLABLE CAP;Lo;0;L;;;;;N;;;;; -A2BA;YI SYLLABLE CUOX;Lo;0;L;;;;;N;;;;; -A2BB;YI SYLLABLE CUO;Lo;0;L;;;;;N;;;;; -A2BC;YI SYLLABLE CUOP;Lo;0;L;;;;;N;;;;; -A2BD;YI SYLLABLE COT;Lo;0;L;;;;;N;;;;; -A2BE;YI SYLLABLE COX;Lo;0;L;;;;;N;;;;; -A2BF;YI SYLLABLE CO;Lo;0;L;;;;;N;;;;; -A2C0;YI SYLLABLE COP;Lo;0;L;;;;;N;;;;; -A2C1;YI SYLLABLE CEX;Lo;0;L;;;;;N;;;;; -A2C2;YI SYLLABLE CE;Lo;0;L;;;;;N;;;;; -A2C3;YI SYLLABLE CEP;Lo;0;L;;;;;N;;;;; -A2C4;YI SYLLABLE CUT;Lo;0;L;;;;;N;;;;; -A2C5;YI SYLLABLE CUX;Lo;0;L;;;;;N;;;;; -A2C6;YI SYLLABLE CU;Lo;0;L;;;;;N;;;;; -A2C7;YI SYLLABLE CUP;Lo;0;L;;;;;N;;;;; -A2C8;YI SYLLABLE CURX;Lo;0;L;;;;;N;;;;; -A2C9;YI SYLLABLE CUR;Lo;0;L;;;;;N;;;;; -A2CA;YI SYLLABLE CYT;Lo;0;L;;;;;N;;;;; -A2CB;YI SYLLABLE CYX;Lo;0;L;;;;;N;;;;; -A2CC;YI SYLLABLE CY;Lo;0;L;;;;;N;;;;; -A2CD;YI SYLLABLE CYP;Lo;0;L;;;;;N;;;;; -A2CE;YI SYLLABLE CYRX;Lo;0;L;;;;;N;;;;; -A2CF;YI SYLLABLE CYR;Lo;0;L;;;;;N;;;;; -A2D0;YI SYLLABLE ZZIT;Lo;0;L;;;;;N;;;;; -A2D1;YI SYLLABLE ZZIX;Lo;0;L;;;;;N;;;;; -A2D2;YI SYLLABLE ZZI;Lo;0;L;;;;;N;;;;; -A2D3;YI SYLLABLE ZZIP;Lo;0;L;;;;;N;;;;; -A2D4;YI SYLLABLE ZZIET;Lo;0;L;;;;;N;;;;; -A2D5;YI SYLLABLE ZZIEX;Lo;0;L;;;;;N;;;;; -A2D6;YI SYLLABLE ZZIE;Lo;0;L;;;;;N;;;;; -A2D7;YI SYLLABLE ZZIEP;Lo;0;L;;;;;N;;;;; -A2D8;YI SYLLABLE ZZAT;Lo;0;L;;;;;N;;;;; -A2D9;YI SYLLABLE ZZAX;Lo;0;L;;;;;N;;;;; -A2DA;YI SYLLABLE ZZA;Lo;0;L;;;;;N;;;;; -A2DB;YI SYLLABLE ZZAP;Lo;0;L;;;;;N;;;;; -A2DC;YI SYLLABLE ZZOX;Lo;0;L;;;;;N;;;;; -A2DD;YI SYLLABLE ZZO;Lo;0;L;;;;;N;;;;; -A2DE;YI SYLLABLE ZZOP;Lo;0;L;;;;;N;;;;; -A2DF;YI SYLLABLE ZZEX;Lo;0;L;;;;;N;;;;; -A2E0;YI SYLLABLE ZZE;Lo;0;L;;;;;N;;;;; -A2E1;YI SYLLABLE ZZEP;Lo;0;L;;;;;N;;;;; -A2E2;YI SYLLABLE ZZUX;Lo;0;L;;;;;N;;;;; -A2E3;YI SYLLABLE ZZU;Lo;0;L;;;;;N;;;;; -A2E4;YI SYLLABLE ZZUP;Lo;0;L;;;;;N;;;;; -A2E5;YI SYLLABLE ZZURX;Lo;0;L;;;;;N;;;;; -A2E6;YI SYLLABLE ZZUR;Lo;0;L;;;;;N;;;;; -A2E7;YI SYLLABLE ZZYT;Lo;0;L;;;;;N;;;;; -A2E8;YI SYLLABLE ZZYX;Lo;0;L;;;;;N;;;;; -A2E9;YI SYLLABLE ZZY;Lo;0;L;;;;;N;;;;; -A2EA;YI SYLLABLE ZZYP;Lo;0;L;;;;;N;;;;; -A2EB;YI SYLLABLE ZZYRX;Lo;0;L;;;;;N;;;;; -A2EC;YI SYLLABLE ZZYR;Lo;0;L;;;;;N;;;;; -A2ED;YI SYLLABLE NZIT;Lo;0;L;;;;;N;;;;; -A2EE;YI SYLLABLE NZIX;Lo;0;L;;;;;N;;;;; -A2EF;YI SYLLABLE NZI;Lo;0;L;;;;;N;;;;; -A2F0;YI SYLLABLE NZIP;Lo;0;L;;;;;N;;;;; -A2F1;YI SYLLABLE NZIEX;Lo;0;L;;;;;N;;;;; -A2F2;YI SYLLABLE NZIE;Lo;0;L;;;;;N;;;;; -A2F3;YI SYLLABLE NZIEP;Lo;0;L;;;;;N;;;;; -A2F4;YI SYLLABLE NZAT;Lo;0;L;;;;;N;;;;; -A2F5;YI SYLLABLE NZAX;Lo;0;L;;;;;N;;;;; -A2F6;YI SYLLABLE NZA;Lo;0;L;;;;;N;;;;; -A2F7;YI SYLLABLE NZAP;Lo;0;L;;;;;N;;;;; -A2F8;YI SYLLABLE NZUOX;Lo;0;L;;;;;N;;;;; -A2F9;YI SYLLABLE NZUO;Lo;0;L;;;;;N;;;;; -A2FA;YI SYLLABLE NZOX;Lo;0;L;;;;;N;;;;; -A2FB;YI SYLLABLE NZOP;Lo;0;L;;;;;N;;;;; -A2FC;YI SYLLABLE NZEX;Lo;0;L;;;;;N;;;;; -A2FD;YI SYLLABLE NZE;Lo;0;L;;;;;N;;;;; -A2FE;YI SYLLABLE NZUX;Lo;0;L;;;;;N;;;;; -A2FF;YI SYLLABLE NZU;Lo;0;L;;;;;N;;;;; -A300;YI SYLLABLE NZUP;Lo;0;L;;;;;N;;;;; -A301;YI SYLLABLE NZURX;Lo;0;L;;;;;N;;;;; -A302;YI SYLLABLE NZUR;Lo;0;L;;;;;N;;;;; -A303;YI SYLLABLE NZYT;Lo;0;L;;;;;N;;;;; -A304;YI SYLLABLE NZYX;Lo;0;L;;;;;N;;;;; -A305;YI SYLLABLE NZY;Lo;0;L;;;;;N;;;;; -A306;YI SYLLABLE NZYP;Lo;0;L;;;;;N;;;;; -A307;YI SYLLABLE NZYRX;Lo;0;L;;;;;N;;;;; -A308;YI SYLLABLE NZYR;Lo;0;L;;;;;N;;;;; -A309;YI SYLLABLE SIT;Lo;0;L;;;;;N;;;;; -A30A;YI SYLLABLE SIX;Lo;0;L;;;;;N;;;;; -A30B;YI SYLLABLE SI;Lo;0;L;;;;;N;;;;; -A30C;YI SYLLABLE SIP;Lo;0;L;;;;;N;;;;; -A30D;YI SYLLABLE SIEX;Lo;0;L;;;;;N;;;;; -A30E;YI SYLLABLE SIE;Lo;0;L;;;;;N;;;;; -A30F;YI SYLLABLE SIEP;Lo;0;L;;;;;N;;;;; -A310;YI SYLLABLE SAT;Lo;0;L;;;;;N;;;;; -A311;YI SYLLABLE SAX;Lo;0;L;;;;;N;;;;; -A312;YI SYLLABLE SA;Lo;0;L;;;;;N;;;;; -A313;YI SYLLABLE SAP;Lo;0;L;;;;;N;;;;; -A314;YI SYLLABLE SUOX;Lo;0;L;;;;;N;;;;; -A315;YI SYLLABLE SUO;Lo;0;L;;;;;N;;;;; -A316;YI SYLLABLE SUOP;Lo;0;L;;;;;N;;;;; -A317;YI SYLLABLE SOT;Lo;0;L;;;;;N;;;;; -A318;YI SYLLABLE SOX;Lo;0;L;;;;;N;;;;; -A319;YI SYLLABLE SO;Lo;0;L;;;;;N;;;;; -A31A;YI SYLLABLE SOP;Lo;0;L;;;;;N;;;;; -A31B;YI SYLLABLE SEX;Lo;0;L;;;;;N;;;;; -A31C;YI SYLLABLE SE;Lo;0;L;;;;;N;;;;; -A31D;YI SYLLABLE SEP;Lo;0;L;;;;;N;;;;; -A31E;YI SYLLABLE SUT;Lo;0;L;;;;;N;;;;; -A31F;YI SYLLABLE SUX;Lo;0;L;;;;;N;;;;; -A320;YI SYLLABLE SU;Lo;0;L;;;;;N;;;;; -A321;YI SYLLABLE SUP;Lo;0;L;;;;;N;;;;; -A322;YI SYLLABLE SURX;Lo;0;L;;;;;N;;;;; -A323;YI SYLLABLE SUR;Lo;0;L;;;;;N;;;;; -A324;YI SYLLABLE SYT;Lo;0;L;;;;;N;;;;; -A325;YI SYLLABLE SYX;Lo;0;L;;;;;N;;;;; -A326;YI SYLLABLE SY;Lo;0;L;;;;;N;;;;; -A327;YI SYLLABLE SYP;Lo;0;L;;;;;N;;;;; -A328;YI SYLLABLE SYRX;Lo;0;L;;;;;N;;;;; -A329;YI SYLLABLE SYR;Lo;0;L;;;;;N;;;;; -A32A;YI SYLLABLE SSIT;Lo;0;L;;;;;N;;;;; -A32B;YI SYLLABLE SSIX;Lo;0;L;;;;;N;;;;; -A32C;YI SYLLABLE SSI;Lo;0;L;;;;;N;;;;; -A32D;YI SYLLABLE SSIP;Lo;0;L;;;;;N;;;;; -A32E;YI SYLLABLE SSIEX;Lo;0;L;;;;;N;;;;; -A32F;YI SYLLABLE SSIE;Lo;0;L;;;;;N;;;;; -A330;YI SYLLABLE SSIEP;Lo;0;L;;;;;N;;;;; -A331;YI SYLLABLE SSAT;Lo;0;L;;;;;N;;;;; -A332;YI SYLLABLE SSAX;Lo;0;L;;;;;N;;;;; -A333;YI SYLLABLE SSA;Lo;0;L;;;;;N;;;;; -A334;YI SYLLABLE SSAP;Lo;0;L;;;;;N;;;;; -A335;YI SYLLABLE SSOT;Lo;0;L;;;;;N;;;;; -A336;YI SYLLABLE SSOX;Lo;0;L;;;;;N;;;;; -A337;YI SYLLABLE SSO;Lo;0;L;;;;;N;;;;; -A338;YI SYLLABLE SSOP;Lo;0;L;;;;;N;;;;; -A339;YI SYLLABLE SSEX;Lo;0;L;;;;;N;;;;; -A33A;YI SYLLABLE SSE;Lo;0;L;;;;;N;;;;; -A33B;YI SYLLABLE SSEP;Lo;0;L;;;;;N;;;;; -A33C;YI SYLLABLE SSUT;Lo;0;L;;;;;N;;;;; -A33D;YI SYLLABLE SSUX;Lo;0;L;;;;;N;;;;; -A33E;YI SYLLABLE SSU;Lo;0;L;;;;;N;;;;; -A33F;YI SYLLABLE SSUP;Lo;0;L;;;;;N;;;;; -A340;YI SYLLABLE SSYT;Lo;0;L;;;;;N;;;;; -A341;YI SYLLABLE SSYX;Lo;0;L;;;;;N;;;;; -A342;YI SYLLABLE SSY;Lo;0;L;;;;;N;;;;; -A343;YI SYLLABLE SSYP;Lo;0;L;;;;;N;;;;; -A344;YI SYLLABLE SSYRX;Lo;0;L;;;;;N;;;;; -A345;YI SYLLABLE SSYR;Lo;0;L;;;;;N;;;;; -A346;YI SYLLABLE ZHAT;Lo;0;L;;;;;N;;;;; -A347;YI SYLLABLE ZHAX;Lo;0;L;;;;;N;;;;; -A348;YI SYLLABLE ZHA;Lo;0;L;;;;;N;;;;; -A349;YI SYLLABLE ZHAP;Lo;0;L;;;;;N;;;;; -A34A;YI SYLLABLE ZHUOX;Lo;0;L;;;;;N;;;;; -A34B;YI SYLLABLE ZHUO;Lo;0;L;;;;;N;;;;; -A34C;YI SYLLABLE ZHUOP;Lo;0;L;;;;;N;;;;; -A34D;YI SYLLABLE ZHOT;Lo;0;L;;;;;N;;;;; -A34E;YI SYLLABLE ZHOX;Lo;0;L;;;;;N;;;;; -A34F;YI SYLLABLE ZHO;Lo;0;L;;;;;N;;;;; -A350;YI SYLLABLE ZHOP;Lo;0;L;;;;;N;;;;; -A351;YI SYLLABLE ZHET;Lo;0;L;;;;;N;;;;; -A352;YI SYLLABLE ZHEX;Lo;0;L;;;;;N;;;;; -A353;YI SYLLABLE ZHE;Lo;0;L;;;;;N;;;;; -A354;YI SYLLABLE ZHEP;Lo;0;L;;;;;N;;;;; -A355;YI SYLLABLE ZHUT;Lo;0;L;;;;;N;;;;; -A356;YI SYLLABLE ZHUX;Lo;0;L;;;;;N;;;;; -A357;YI SYLLABLE ZHU;Lo;0;L;;;;;N;;;;; -A358;YI SYLLABLE ZHUP;Lo;0;L;;;;;N;;;;; -A359;YI SYLLABLE ZHURX;Lo;0;L;;;;;N;;;;; -A35A;YI SYLLABLE ZHUR;Lo;0;L;;;;;N;;;;; -A35B;YI SYLLABLE ZHYT;Lo;0;L;;;;;N;;;;; -A35C;YI SYLLABLE ZHYX;Lo;0;L;;;;;N;;;;; -A35D;YI SYLLABLE ZHY;Lo;0;L;;;;;N;;;;; -A35E;YI SYLLABLE ZHYP;Lo;0;L;;;;;N;;;;; -A35F;YI SYLLABLE ZHYRX;Lo;0;L;;;;;N;;;;; -A360;YI SYLLABLE ZHYR;Lo;0;L;;;;;N;;;;; -A361;YI SYLLABLE CHAT;Lo;0;L;;;;;N;;;;; -A362;YI SYLLABLE CHAX;Lo;0;L;;;;;N;;;;; -A363;YI SYLLABLE CHA;Lo;0;L;;;;;N;;;;; -A364;YI SYLLABLE CHAP;Lo;0;L;;;;;N;;;;; -A365;YI SYLLABLE CHUOT;Lo;0;L;;;;;N;;;;; -A366;YI SYLLABLE CHUOX;Lo;0;L;;;;;N;;;;; -A367;YI SYLLABLE CHUO;Lo;0;L;;;;;N;;;;; -A368;YI SYLLABLE CHUOP;Lo;0;L;;;;;N;;;;; -A369;YI SYLLABLE CHOT;Lo;0;L;;;;;N;;;;; -A36A;YI SYLLABLE CHOX;Lo;0;L;;;;;N;;;;; -A36B;YI SYLLABLE CHO;Lo;0;L;;;;;N;;;;; -A36C;YI SYLLABLE CHOP;Lo;0;L;;;;;N;;;;; -A36D;YI SYLLABLE CHET;Lo;0;L;;;;;N;;;;; -A36E;YI SYLLABLE CHEX;Lo;0;L;;;;;N;;;;; -A36F;YI SYLLABLE CHE;Lo;0;L;;;;;N;;;;; -A370;YI SYLLABLE CHEP;Lo;0;L;;;;;N;;;;; -A371;YI SYLLABLE CHUX;Lo;0;L;;;;;N;;;;; -A372;YI SYLLABLE CHU;Lo;0;L;;;;;N;;;;; -A373;YI SYLLABLE CHUP;Lo;0;L;;;;;N;;;;; -A374;YI SYLLABLE CHURX;Lo;0;L;;;;;N;;;;; -A375;YI SYLLABLE CHUR;Lo;0;L;;;;;N;;;;; -A376;YI SYLLABLE CHYT;Lo;0;L;;;;;N;;;;; -A377;YI SYLLABLE CHYX;Lo;0;L;;;;;N;;;;; -A378;YI SYLLABLE CHY;Lo;0;L;;;;;N;;;;; -A379;YI SYLLABLE CHYP;Lo;0;L;;;;;N;;;;; -A37A;YI SYLLABLE CHYRX;Lo;0;L;;;;;N;;;;; -A37B;YI SYLLABLE CHYR;Lo;0;L;;;;;N;;;;; -A37C;YI SYLLABLE RRAX;Lo;0;L;;;;;N;;;;; -A37D;YI SYLLABLE RRA;Lo;0;L;;;;;N;;;;; -A37E;YI SYLLABLE RRUOX;Lo;0;L;;;;;N;;;;; -A37F;YI SYLLABLE RRUO;Lo;0;L;;;;;N;;;;; -A380;YI SYLLABLE RROT;Lo;0;L;;;;;N;;;;; -A381;YI SYLLABLE RROX;Lo;0;L;;;;;N;;;;; -A382;YI SYLLABLE RRO;Lo;0;L;;;;;N;;;;; -A383;YI SYLLABLE RROP;Lo;0;L;;;;;N;;;;; -A384;YI SYLLABLE RRET;Lo;0;L;;;;;N;;;;; -A385;YI SYLLABLE RREX;Lo;0;L;;;;;N;;;;; -A386;YI SYLLABLE RRE;Lo;0;L;;;;;N;;;;; -A387;YI SYLLABLE RREP;Lo;0;L;;;;;N;;;;; -A388;YI SYLLABLE RRUT;Lo;0;L;;;;;N;;;;; -A389;YI SYLLABLE RRUX;Lo;0;L;;;;;N;;;;; -A38A;YI SYLLABLE RRU;Lo;0;L;;;;;N;;;;; -A38B;YI SYLLABLE RRUP;Lo;0;L;;;;;N;;;;; -A38C;YI SYLLABLE RRURX;Lo;0;L;;;;;N;;;;; -A38D;YI SYLLABLE RRUR;Lo;0;L;;;;;N;;;;; -A38E;YI SYLLABLE RRYT;Lo;0;L;;;;;N;;;;; -A38F;YI SYLLABLE RRYX;Lo;0;L;;;;;N;;;;; -A390;YI SYLLABLE RRY;Lo;0;L;;;;;N;;;;; -A391;YI SYLLABLE RRYP;Lo;0;L;;;;;N;;;;; -A392;YI SYLLABLE RRYRX;Lo;0;L;;;;;N;;;;; -A393;YI SYLLABLE RRYR;Lo;0;L;;;;;N;;;;; -A394;YI SYLLABLE NRAT;Lo;0;L;;;;;N;;;;; -A395;YI SYLLABLE NRAX;Lo;0;L;;;;;N;;;;; -A396;YI SYLLABLE NRA;Lo;0;L;;;;;N;;;;; -A397;YI SYLLABLE NRAP;Lo;0;L;;;;;N;;;;; -A398;YI SYLLABLE NROX;Lo;0;L;;;;;N;;;;; -A399;YI SYLLABLE NRO;Lo;0;L;;;;;N;;;;; -A39A;YI SYLLABLE NROP;Lo;0;L;;;;;N;;;;; -A39B;YI SYLLABLE NRET;Lo;0;L;;;;;N;;;;; -A39C;YI SYLLABLE NREX;Lo;0;L;;;;;N;;;;; -A39D;YI SYLLABLE NRE;Lo;0;L;;;;;N;;;;; -A39E;YI SYLLABLE NREP;Lo;0;L;;;;;N;;;;; -A39F;YI SYLLABLE NRUT;Lo;0;L;;;;;N;;;;; -A3A0;YI SYLLABLE NRUX;Lo;0;L;;;;;N;;;;; -A3A1;YI SYLLABLE NRU;Lo;0;L;;;;;N;;;;; -A3A2;YI SYLLABLE NRUP;Lo;0;L;;;;;N;;;;; -A3A3;YI SYLLABLE NRURX;Lo;0;L;;;;;N;;;;; -A3A4;YI SYLLABLE NRUR;Lo;0;L;;;;;N;;;;; -A3A5;YI SYLLABLE NRYT;Lo;0;L;;;;;N;;;;; -A3A6;YI SYLLABLE NRYX;Lo;0;L;;;;;N;;;;; -A3A7;YI SYLLABLE NRY;Lo;0;L;;;;;N;;;;; -A3A8;YI SYLLABLE NRYP;Lo;0;L;;;;;N;;;;; -A3A9;YI SYLLABLE NRYRX;Lo;0;L;;;;;N;;;;; -A3AA;YI SYLLABLE NRYR;Lo;0;L;;;;;N;;;;; -A3AB;YI SYLLABLE SHAT;Lo;0;L;;;;;N;;;;; -A3AC;YI SYLLABLE SHAX;Lo;0;L;;;;;N;;;;; -A3AD;YI SYLLABLE SHA;Lo;0;L;;;;;N;;;;; -A3AE;YI SYLLABLE SHAP;Lo;0;L;;;;;N;;;;; -A3AF;YI SYLLABLE SHUOX;Lo;0;L;;;;;N;;;;; -A3B0;YI SYLLABLE SHUO;Lo;0;L;;;;;N;;;;; -A3B1;YI SYLLABLE SHUOP;Lo;0;L;;;;;N;;;;; -A3B2;YI SYLLABLE SHOT;Lo;0;L;;;;;N;;;;; -A3B3;YI SYLLABLE SHOX;Lo;0;L;;;;;N;;;;; -A3B4;YI SYLLABLE SHO;Lo;0;L;;;;;N;;;;; -A3B5;YI SYLLABLE SHOP;Lo;0;L;;;;;N;;;;; -A3B6;YI SYLLABLE SHET;Lo;0;L;;;;;N;;;;; -A3B7;YI SYLLABLE SHEX;Lo;0;L;;;;;N;;;;; -A3B8;YI SYLLABLE SHE;Lo;0;L;;;;;N;;;;; -A3B9;YI SYLLABLE SHEP;Lo;0;L;;;;;N;;;;; -A3BA;YI SYLLABLE SHUT;Lo;0;L;;;;;N;;;;; -A3BB;YI SYLLABLE SHUX;Lo;0;L;;;;;N;;;;; -A3BC;YI SYLLABLE SHU;Lo;0;L;;;;;N;;;;; -A3BD;YI SYLLABLE SHUP;Lo;0;L;;;;;N;;;;; -A3BE;YI SYLLABLE SHURX;Lo;0;L;;;;;N;;;;; -A3BF;YI SYLLABLE SHUR;Lo;0;L;;;;;N;;;;; -A3C0;YI SYLLABLE SHYT;Lo;0;L;;;;;N;;;;; -A3C1;YI SYLLABLE SHYX;Lo;0;L;;;;;N;;;;; -A3C2;YI SYLLABLE SHY;Lo;0;L;;;;;N;;;;; -A3C3;YI SYLLABLE SHYP;Lo;0;L;;;;;N;;;;; -A3C4;YI SYLLABLE SHYRX;Lo;0;L;;;;;N;;;;; -A3C5;YI SYLLABLE SHYR;Lo;0;L;;;;;N;;;;; -A3C6;YI SYLLABLE RAT;Lo;0;L;;;;;N;;;;; -A3C7;YI SYLLABLE RAX;Lo;0;L;;;;;N;;;;; -A3C8;YI SYLLABLE RA;Lo;0;L;;;;;N;;;;; -A3C9;YI SYLLABLE RAP;Lo;0;L;;;;;N;;;;; -A3CA;YI SYLLABLE RUOX;Lo;0;L;;;;;N;;;;; -A3CB;YI SYLLABLE RUO;Lo;0;L;;;;;N;;;;; -A3CC;YI SYLLABLE RUOP;Lo;0;L;;;;;N;;;;; -A3CD;YI SYLLABLE ROT;Lo;0;L;;;;;N;;;;; -A3CE;YI SYLLABLE ROX;Lo;0;L;;;;;N;;;;; -A3CF;YI SYLLABLE RO;Lo;0;L;;;;;N;;;;; -A3D0;YI SYLLABLE ROP;Lo;0;L;;;;;N;;;;; -A3D1;YI SYLLABLE REX;Lo;0;L;;;;;N;;;;; -A3D2;YI SYLLABLE RE;Lo;0;L;;;;;N;;;;; -A3D3;YI SYLLABLE REP;Lo;0;L;;;;;N;;;;; -A3D4;YI SYLLABLE RUT;Lo;0;L;;;;;N;;;;; -A3D5;YI SYLLABLE RUX;Lo;0;L;;;;;N;;;;; -A3D6;YI SYLLABLE RU;Lo;0;L;;;;;N;;;;; -A3D7;YI SYLLABLE RUP;Lo;0;L;;;;;N;;;;; -A3D8;YI SYLLABLE RURX;Lo;0;L;;;;;N;;;;; -A3D9;YI SYLLABLE RUR;Lo;0;L;;;;;N;;;;; -A3DA;YI SYLLABLE RYT;Lo;0;L;;;;;N;;;;; -A3DB;YI SYLLABLE RYX;Lo;0;L;;;;;N;;;;; -A3DC;YI SYLLABLE RY;Lo;0;L;;;;;N;;;;; -A3DD;YI SYLLABLE RYP;Lo;0;L;;;;;N;;;;; -A3DE;YI SYLLABLE RYRX;Lo;0;L;;;;;N;;;;; -A3DF;YI SYLLABLE RYR;Lo;0;L;;;;;N;;;;; -A3E0;YI SYLLABLE JIT;Lo;0;L;;;;;N;;;;; -A3E1;YI SYLLABLE JIX;Lo;0;L;;;;;N;;;;; -A3E2;YI SYLLABLE JI;Lo;0;L;;;;;N;;;;; -A3E3;YI SYLLABLE JIP;Lo;0;L;;;;;N;;;;; -A3E4;YI SYLLABLE JIET;Lo;0;L;;;;;N;;;;; -A3E5;YI SYLLABLE JIEX;Lo;0;L;;;;;N;;;;; -A3E6;YI SYLLABLE JIE;Lo;0;L;;;;;N;;;;; -A3E7;YI SYLLABLE JIEP;Lo;0;L;;;;;N;;;;; -A3E8;YI SYLLABLE JUOT;Lo;0;L;;;;;N;;;;; -A3E9;YI SYLLABLE JUOX;Lo;0;L;;;;;N;;;;; -A3EA;YI SYLLABLE JUO;Lo;0;L;;;;;N;;;;; -A3EB;YI SYLLABLE JUOP;Lo;0;L;;;;;N;;;;; -A3EC;YI SYLLABLE JOT;Lo;0;L;;;;;N;;;;; -A3ED;YI SYLLABLE JOX;Lo;0;L;;;;;N;;;;; -A3EE;YI SYLLABLE JO;Lo;0;L;;;;;N;;;;; -A3EF;YI SYLLABLE JOP;Lo;0;L;;;;;N;;;;; -A3F0;YI SYLLABLE JUT;Lo;0;L;;;;;N;;;;; -A3F1;YI SYLLABLE JUX;Lo;0;L;;;;;N;;;;; -A3F2;YI SYLLABLE JU;Lo;0;L;;;;;N;;;;; -A3F3;YI SYLLABLE JUP;Lo;0;L;;;;;N;;;;; -A3F4;YI SYLLABLE JURX;Lo;0;L;;;;;N;;;;; -A3F5;YI SYLLABLE JUR;Lo;0;L;;;;;N;;;;; -A3F6;YI SYLLABLE JYT;Lo;0;L;;;;;N;;;;; -A3F7;YI SYLLABLE JYX;Lo;0;L;;;;;N;;;;; -A3F8;YI SYLLABLE JY;Lo;0;L;;;;;N;;;;; -A3F9;YI SYLLABLE JYP;Lo;0;L;;;;;N;;;;; -A3FA;YI SYLLABLE JYRX;Lo;0;L;;;;;N;;;;; -A3FB;YI SYLLABLE JYR;Lo;0;L;;;;;N;;;;; -A3FC;YI SYLLABLE QIT;Lo;0;L;;;;;N;;;;; -A3FD;YI SYLLABLE QIX;Lo;0;L;;;;;N;;;;; -A3FE;YI SYLLABLE QI;Lo;0;L;;;;;N;;;;; -A3FF;YI SYLLABLE QIP;Lo;0;L;;;;;N;;;;; -A400;YI SYLLABLE QIET;Lo;0;L;;;;;N;;;;; -A401;YI SYLLABLE QIEX;Lo;0;L;;;;;N;;;;; -A402;YI SYLLABLE QIE;Lo;0;L;;;;;N;;;;; -A403;YI SYLLABLE QIEP;Lo;0;L;;;;;N;;;;; -A404;YI SYLLABLE QUOT;Lo;0;L;;;;;N;;;;; -A405;YI SYLLABLE QUOX;Lo;0;L;;;;;N;;;;; -A406;YI SYLLABLE QUO;Lo;0;L;;;;;N;;;;; -A407;YI SYLLABLE QUOP;Lo;0;L;;;;;N;;;;; -A408;YI SYLLABLE QOT;Lo;0;L;;;;;N;;;;; -A409;YI SYLLABLE QOX;Lo;0;L;;;;;N;;;;; -A40A;YI SYLLABLE QO;Lo;0;L;;;;;N;;;;; -A40B;YI SYLLABLE QOP;Lo;0;L;;;;;N;;;;; -A40C;YI SYLLABLE QUT;Lo;0;L;;;;;N;;;;; -A40D;YI SYLLABLE QUX;Lo;0;L;;;;;N;;;;; -A40E;YI SYLLABLE QU;Lo;0;L;;;;;N;;;;; -A40F;YI SYLLABLE QUP;Lo;0;L;;;;;N;;;;; -A410;YI SYLLABLE QURX;Lo;0;L;;;;;N;;;;; -A411;YI SYLLABLE QUR;Lo;0;L;;;;;N;;;;; -A412;YI SYLLABLE QYT;Lo;0;L;;;;;N;;;;; -A413;YI SYLLABLE QYX;Lo;0;L;;;;;N;;;;; -A414;YI SYLLABLE QY;Lo;0;L;;;;;N;;;;; -A415;YI SYLLABLE QYP;Lo;0;L;;;;;N;;;;; -A416;YI SYLLABLE QYRX;Lo;0;L;;;;;N;;;;; -A417;YI SYLLABLE QYR;Lo;0;L;;;;;N;;;;; -A418;YI SYLLABLE JJIT;Lo;0;L;;;;;N;;;;; -A419;YI SYLLABLE JJIX;Lo;0;L;;;;;N;;;;; -A41A;YI SYLLABLE JJI;Lo;0;L;;;;;N;;;;; -A41B;YI SYLLABLE JJIP;Lo;0;L;;;;;N;;;;; -A41C;YI SYLLABLE JJIET;Lo;0;L;;;;;N;;;;; -A41D;YI SYLLABLE JJIEX;Lo;0;L;;;;;N;;;;; -A41E;YI SYLLABLE JJIE;Lo;0;L;;;;;N;;;;; -A41F;YI SYLLABLE JJIEP;Lo;0;L;;;;;N;;;;; -A420;YI SYLLABLE JJUOX;Lo;0;L;;;;;N;;;;; -A421;YI SYLLABLE JJUO;Lo;0;L;;;;;N;;;;; -A422;YI SYLLABLE JJUOP;Lo;0;L;;;;;N;;;;; -A423;YI SYLLABLE JJOT;Lo;0;L;;;;;N;;;;; -A424;YI SYLLABLE JJOX;Lo;0;L;;;;;N;;;;; -A425;YI SYLLABLE JJO;Lo;0;L;;;;;N;;;;; -A426;YI SYLLABLE JJOP;Lo;0;L;;;;;N;;;;; -A427;YI SYLLABLE JJUT;Lo;0;L;;;;;N;;;;; -A428;YI SYLLABLE JJUX;Lo;0;L;;;;;N;;;;; -A429;YI SYLLABLE JJU;Lo;0;L;;;;;N;;;;; -A42A;YI SYLLABLE JJUP;Lo;0;L;;;;;N;;;;; -A42B;YI SYLLABLE JJURX;Lo;0;L;;;;;N;;;;; -A42C;YI SYLLABLE JJUR;Lo;0;L;;;;;N;;;;; -A42D;YI SYLLABLE JJYT;Lo;0;L;;;;;N;;;;; -A42E;YI SYLLABLE JJYX;Lo;0;L;;;;;N;;;;; -A42F;YI SYLLABLE JJY;Lo;0;L;;;;;N;;;;; -A430;YI SYLLABLE JJYP;Lo;0;L;;;;;N;;;;; -A431;YI SYLLABLE NJIT;Lo;0;L;;;;;N;;;;; -A432;YI SYLLABLE NJIX;Lo;0;L;;;;;N;;;;; -A433;YI SYLLABLE NJI;Lo;0;L;;;;;N;;;;; -A434;YI SYLLABLE NJIP;Lo;0;L;;;;;N;;;;; -A435;YI SYLLABLE NJIET;Lo;0;L;;;;;N;;;;; -A436;YI SYLLABLE NJIEX;Lo;0;L;;;;;N;;;;; -A437;YI SYLLABLE NJIE;Lo;0;L;;;;;N;;;;; -A438;YI SYLLABLE NJIEP;Lo;0;L;;;;;N;;;;; -A439;YI SYLLABLE NJUOX;Lo;0;L;;;;;N;;;;; -A43A;YI SYLLABLE NJUO;Lo;0;L;;;;;N;;;;; -A43B;YI SYLLABLE NJOT;Lo;0;L;;;;;N;;;;; -A43C;YI SYLLABLE NJOX;Lo;0;L;;;;;N;;;;; -A43D;YI SYLLABLE NJO;Lo;0;L;;;;;N;;;;; -A43E;YI SYLLABLE NJOP;Lo;0;L;;;;;N;;;;; -A43F;YI SYLLABLE NJUX;Lo;0;L;;;;;N;;;;; -A440;YI SYLLABLE NJU;Lo;0;L;;;;;N;;;;; -A441;YI SYLLABLE NJUP;Lo;0;L;;;;;N;;;;; -A442;YI SYLLABLE NJURX;Lo;0;L;;;;;N;;;;; -A443;YI SYLLABLE NJUR;Lo;0;L;;;;;N;;;;; -A444;YI SYLLABLE NJYT;Lo;0;L;;;;;N;;;;; -A445;YI SYLLABLE NJYX;Lo;0;L;;;;;N;;;;; -A446;YI SYLLABLE NJY;Lo;0;L;;;;;N;;;;; -A447;YI SYLLABLE NJYP;Lo;0;L;;;;;N;;;;; -A448;YI SYLLABLE NJYRX;Lo;0;L;;;;;N;;;;; -A449;YI SYLLABLE NJYR;Lo;0;L;;;;;N;;;;; -A44A;YI SYLLABLE NYIT;Lo;0;L;;;;;N;;;;; -A44B;YI SYLLABLE NYIX;Lo;0;L;;;;;N;;;;; -A44C;YI SYLLABLE NYI;Lo;0;L;;;;;N;;;;; -A44D;YI SYLLABLE NYIP;Lo;0;L;;;;;N;;;;; -A44E;YI SYLLABLE NYIET;Lo;0;L;;;;;N;;;;; -A44F;YI SYLLABLE NYIEX;Lo;0;L;;;;;N;;;;; -A450;YI SYLLABLE NYIE;Lo;0;L;;;;;N;;;;; -A451;YI SYLLABLE NYIEP;Lo;0;L;;;;;N;;;;; -A452;YI SYLLABLE NYUOX;Lo;0;L;;;;;N;;;;; -A453;YI SYLLABLE NYUO;Lo;0;L;;;;;N;;;;; -A454;YI SYLLABLE NYUOP;Lo;0;L;;;;;N;;;;; -A455;YI SYLLABLE NYOT;Lo;0;L;;;;;N;;;;; -A456;YI SYLLABLE NYOX;Lo;0;L;;;;;N;;;;; -A457;YI SYLLABLE NYO;Lo;0;L;;;;;N;;;;; -A458;YI SYLLABLE NYOP;Lo;0;L;;;;;N;;;;; -A459;YI SYLLABLE NYUT;Lo;0;L;;;;;N;;;;; -A45A;YI SYLLABLE NYUX;Lo;0;L;;;;;N;;;;; -A45B;YI SYLLABLE NYU;Lo;0;L;;;;;N;;;;; -A45C;YI SYLLABLE NYUP;Lo;0;L;;;;;N;;;;; -A45D;YI SYLLABLE XIT;Lo;0;L;;;;;N;;;;; -A45E;YI SYLLABLE XIX;Lo;0;L;;;;;N;;;;; -A45F;YI SYLLABLE XI;Lo;0;L;;;;;N;;;;; -A460;YI SYLLABLE XIP;Lo;0;L;;;;;N;;;;; -A461;YI SYLLABLE XIET;Lo;0;L;;;;;N;;;;; -A462;YI SYLLABLE XIEX;Lo;0;L;;;;;N;;;;; -A463;YI SYLLABLE XIE;Lo;0;L;;;;;N;;;;; -A464;YI SYLLABLE XIEP;Lo;0;L;;;;;N;;;;; -A465;YI SYLLABLE XUOX;Lo;0;L;;;;;N;;;;; -A466;YI SYLLABLE XUO;Lo;0;L;;;;;N;;;;; -A467;YI SYLLABLE XOT;Lo;0;L;;;;;N;;;;; -A468;YI SYLLABLE XOX;Lo;0;L;;;;;N;;;;; -A469;YI SYLLABLE XO;Lo;0;L;;;;;N;;;;; -A46A;YI SYLLABLE XOP;Lo;0;L;;;;;N;;;;; -A46B;YI SYLLABLE XYT;Lo;0;L;;;;;N;;;;; -A46C;YI SYLLABLE XYX;Lo;0;L;;;;;N;;;;; -A46D;YI SYLLABLE XY;Lo;0;L;;;;;N;;;;; -A46E;YI SYLLABLE XYP;Lo;0;L;;;;;N;;;;; -A46F;YI SYLLABLE XYRX;Lo;0;L;;;;;N;;;;; -A470;YI SYLLABLE XYR;Lo;0;L;;;;;N;;;;; -A471;YI SYLLABLE YIT;Lo;0;L;;;;;N;;;;; -A472;YI SYLLABLE YIX;Lo;0;L;;;;;N;;;;; -A473;YI SYLLABLE YI;Lo;0;L;;;;;N;;;;; -A474;YI SYLLABLE YIP;Lo;0;L;;;;;N;;;;; -A475;YI SYLLABLE YIET;Lo;0;L;;;;;N;;;;; -A476;YI SYLLABLE YIEX;Lo;0;L;;;;;N;;;;; -A477;YI SYLLABLE YIE;Lo;0;L;;;;;N;;;;; -A478;YI SYLLABLE YIEP;Lo;0;L;;;;;N;;;;; -A479;YI SYLLABLE YUOT;Lo;0;L;;;;;N;;;;; -A47A;YI SYLLABLE YUOX;Lo;0;L;;;;;N;;;;; -A47B;YI SYLLABLE YUO;Lo;0;L;;;;;N;;;;; -A47C;YI SYLLABLE YUOP;Lo;0;L;;;;;N;;;;; -A47D;YI SYLLABLE YOT;Lo;0;L;;;;;N;;;;; -A47E;YI SYLLABLE YOX;Lo;0;L;;;;;N;;;;; -A47F;YI SYLLABLE YO;Lo;0;L;;;;;N;;;;; -A480;YI SYLLABLE YOP;Lo;0;L;;;;;N;;;;; -A481;YI SYLLABLE YUT;Lo;0;L;;;;;N;;;;; -A482;YI SYLLABLE YUX;Lo;0;L;;;;;N;;;;; -A483;YI SYLLABLE YU;Lo;0;L;;;;;N;;;;; -A484;YI SYLLABLE YUP;Lo;0;L;;;;;N;;;;; -A485;YI SYLLABLE YURX;Lo;0;L;;;;;N;;;;; -A486;YI SYLLABLE YUR;Lo;0;L;;;;;N;;;;; -A487;YI SYLLABLE YYT;Lo;0;L;;;;;N;;;;; -A488;YI SYLLABLE YYX;Lo;0;L;;;;;N;;;;; -A489;YI SYLLABLE YY;Lo;0;L;;;;;N;;;;; -A48A;YI SYLLABLE YYP;Lo;0;L;;;;;N;;;;; -A48B;YI SYLLABLE YYRX;Lo;0;L;;;;;N;;;;; -A48C;YI SYLLABLE YYR;Lo;0;L;;;;;N;;;;; -A490;YI RADICAL QOT;So;0;ON;;;;;N;;;;; -A491;YI RADICAL LI;So;0;ON;;;;;N;;;;; -A492;YI RADICAL KIT;So;0;ON;;;;;N;;;;; -A493;YI RADICAL NYIP;So;0;ON;;;;;N;;;;; -A494;YI RADICAL CYP;So;0;ON;;;;;N;;;;; -A495;YI RADICAL SSI;So;0;ON;;;;;N;;;;; -A496;YI RADICAL GGOP;So;0;ON;;;;;N;;;;; -A497;YI RADICAL GEP;So;0;ON;;;;;N;;;;; -A498;YI RADICAL MI;So;0;ON;;;;;N;;;;; -A499;YI RADICAL HXIT;So;0;ON;;;;;N;;;;; -A49A;YI RADICAL LYR;So;0;ON;;;;;N;;;;; -A49B;YI RADICAL BBUT;So;0;ON;;;;;N;;;;; -A49C;YI RADICAL MOP;So;0;ON;;;;;N;;;;; -A49D;YI RADICAL YO;So;0;ON;;;;;N;;;;; -A49E;YI RADICAL PUT;So;0;ON;;;;;N;;;;; -A49F;YI RADICAL HXUO;So;0;ON;;;;;N;;;;; -A4A0;YI RADICAL TAT;So;0;ON;;;;;N;;;;; -A4A1;YI RADICAL GA;So;0;ON;;;;;N;;;;; -A4A2;YI RADICAL ZUP;So;0;ON;;;;;N;;;;; -A4A3;YI RADICAL CYT;So;0;ON;;;;;N;;;;; -A4A4;YI RADICAL DDUR;So;0;ON;;;;;N;;;;; -A4A5;YI RADICAL BUR;So;0;ON;;;;;N;;;;; -A4A6;YI RADICAL GGUO;So;0;ON;;;;;N;;;;; -A4A7;YI RADICAL NYOP;So;0;ON;;;;;N;;;;; -A4A8;YI RADICAL TU;So;0;ON;;;;;N;;;;; -A4A9;YI RADICAL OP;So;0;ON;;;;;N;;;;; -A4AA;YI RADICAL JJUT;So;0;ON;;;;;N;;;;; -A4AB;YI RADICAL ZOT;So;0;ON;;;;;N;;;;; -A4AC;YI RADICAL PYT;So;0;ON;;;;;N;;;;; -A4AD;YI RADICAL HMO;So;0;ON;;;;;N;;;;; -A4AE;YI RADICAL YIT;So;0;ON;;;;;N;;;;; -A4AF;YI RADICAL VUR;So;0;ON;;;;;N;;;;; -A4B0;YI RADICAL SHY;So;0;ON;;;;;N;;;;; -A4B1;YI RADICAL VEP;So;0;ON;;;;;N;;;;; -A4B2;YI RADICAL ZA;So;0;ON;;;;;N;;;;; -A4B3;YI RADICAL JO;So;0;ON;;;;;N;;;;; -A4B4;YI RADICAL NZUP;So;0;ON;;;;;N;;;;; -A4B5;YI RADICAL JJY;So;0;ON;;;;;N;;;;; -A4B6;YI RADICAL GOT;So;0;ON;;;;;N;;;;; -A4B7;YI RADICAL JJIE;So;0;ON;;;;;N;;;;; -A4B8;YI RADICAL WO;So;0;ON;;;;;N;;;;; -A4B9;YI RADICAL DU;So;0;ON;;;;;N;;;;; -A4BA;YI RADICAL SHUR;So;0;ON;;;;;N;;;;; -A4BB;YI RADICAL LIE;So;0;ON;;;;;N;;;;; -A4BC;YI RADICAL CY;So;0;ON;;;;;N;;;;; -A4BD;YI RADICAL CUOP;So;0;ON;;;;;N;;;;; -A4BE;YI RADICAL CIP;So;0;ON;;;;;N;;;;; -A4BF;YI RADICAL HXOP;So;0;ON;;;;;N;;;;; -A4C0;YI RADICAL SHAT;So;0;ON;;;;;N;;;;; -A4C1;YI RADICAL ZUR;So;0;ON;;;;;N;;;;; -A4C2;YI RADICAL SHOP;So;0;ON;;;;;N;;;;; -A4C3;YI RADICAL CHE;So;0;ON;;;;;N;;;;; -A4C4;YI RADICAL ZZIET;So;0;ON;;;;;N;;;;; -A4C5;YI RADICAL NBIE;So;0;ON;;;;;N;;;;; -A4C6;YI RADICAL KE;So;0;ON;;;;;N;;;;; -A4D0;LISU LETTER BA;Lo;0;L;;;;;N;;;;; -A4D1;LISU LETTER PA;Lo;0;L;;;;;N;;;;; -A4D2;LISU LETTER PHA;Lo;0;L;;;;;N;;;;; -A4D3;LISU LETTER DA;Lo;0;L;;;;;N;;;;; -A4D4;LISU LETTER TA;Lo;0;L;;;;;N;;;;; -A4D5;LISU LETTER THA;Lo;0;L;;;;;N;;;;; -A4D6;LISU LETTER GA;Lo;0;L;;;;;N;;;;; -A4D7;LISU LETTER KA;Lo;0;L;;;;;N;;;;; -A4D8;LISU LETTER KHA;Lo;0;L;;;;;N;;;;; -A4D9;LISU LETTER JA;Lo;0;L;;;;;N;;;;; -A4DA;LISU LETTER CA;Lo;0;L;;;;;N;;;;; -A4DB;LISU LETTER CHA;Lo;0;L;;;;;N;;;;; -A4DC;LISU LETTER DZA;Lo;0;L;;;;;N;;;;; -A4DD;LISU LETTER TSA;Lo;0;L;;;;;N;;;;; -A4DE;LISU LETTER TSHA;Lo;0;L;;;;;N;;;;; -A4DF;LISU LETTER MA;Lo;0;L;;;;;N;;;;; -A4E0;LISU LETTER NA;Lo;0;L;;;;;N;;;;; -A4E1;LISU LETTER LA;Lo;0;L;;;;;N;;;;; -A4E2;LISU LETTER SA;Lo;0;L;;;;;N;;;;; -A4E3;LISU LETTER ZHA;Lo;0;L;;;;;N;;;;; -A4E4;LISU LETTER ZA;Lo;0;L;;;;;N;;;;; -A4E5;LISU LETTER NGA;Lo;0;L;;;;;N;;;;; -A4E6;LISU LETTER HA;Lo;0;L;;;;;N;;;;; -A4E7;LISU LETTER XA;Lo;0;L;;;;;N;;;;; -A4E8;LISU LETTER HHA;Lo;0;L;;;;;N;;;;; -A4E9;LISU LETTER FA;Lo;0;L;;;;;N;;;;; -A4EA;LISU LETTER WA;Lo;0;L;;;;;N;;;;; -A4EB;LISU LETTER SHA;Lo;0;L;;;;;N;;;;; -A4EC;LISU LETTER YA;Lo;0;L;;;;;N;;;;; -A4ED;LISU LETTER GHA;Lo;0;L;;;;;N;;;;; -A4EE;LISU LETTER A;Lo;0;L;;;;;N;;;;; -A4EF;LISU LETTER AE;Lo;0;L;;;;;N;;;;; -A4F0;LISU LETTER E;Lo;0;L;;;;;N;;;;; -A4F1;LISU LETTER EU;Lo;0;L;;;;;N;;;;; -A4F2;LISU LETTER I;Lo;0;L;;;;;N;;;;; -A4F3;LISU LETTER O;Lo;0;L;;;;;N;;;;; -A4F4;LISU LETTER U;Lo;0;L;;;;;N;;;;; -A4F5;LISU LETTER UE;Lo;0;L;;;;;N;;;;; -A4F6;LISU LETTER UH;Lo;0;L;;;;;N;;;;; -A4F7;LISU LETTER OE;Lo;0;L;;;;;N;;;;; -A4F8;LISU LETTER TONE MYA TI;Lm;0;L;;;;;N;;;;; -A4F9;LISU LETTER TONE NA PO;Lm;0;L;;;;;N;;;;; -A4FA;LISU LETTER TONE MYA CYA;Lm;0;L;;;;;N;;;;; -A4FB;LISU LETTER TONE MYA BO;Lm;0;L;;;;;N;;;;; -A4FC;LISU LETTER TONE MYA NA;Lm;0;L;;;;;N;;;;; -A4FD;LISU LETTER TONE MYA JEU;Lm;0;L;;;;;N;;;;; -A4FE;LISU PUNCTUATION COMMA;Po;0;L;;;;;N;;;;; -A4FF;LISU PUNCTUATION FULL STOP;Po;0;L;;;;;N;;;;; -A500;VAI SYLLABLE EE;Lo;0;L;;;;;N;;;;; -A501;VAI SYLLABLE EEN;Lo;0;L;;;;;N;;;;; -A502;VAI SYLLABLE HEE;Lo;0;L;;;;;N;;;;; -A503;VAI SYLLABLE WEE;Lo;0;L;;;;;N;;;;; -A504;VAI SYLLABLE WEEN;Lo;0;L;;;;;N;;;;; -A505;VAI SYLLABLE PEE;Lo;0;L;;;;;N;;;;; -A506;VAI SYLLABLE BHEE;Lo;0;L;;;;;N;;;;; -A507;VAI SYLLABLE BEE;Lo;0;L;;;;;N;;;;; -A508;VAI SYLLABLE MBEE;Lo;0;L;;;;;N;;;;; -A509;VAI SYLLABLE KPEE;Lo;0;L;;;;;N;;;;; -A50A;VAI SYLLABLE MGBEE;Lo;0;L;;;;;N;;;;; -A50B;VAI SYLLABLE GBEE;Lo;0;L;;;;;N;;;;; -A50C;VAI SYLLABLE FEE;Lo;0;L;;;;;N;;;;; -A50D;VAI SYLLABLE VEE;Lo;0;L;;;;;N;;;;; -A50E;VAI SYLLABLE TEE;Lo;0;L;;;;;N;;;;; -A50F;VAI SYLLABLE THEE;Lo;0;L;;;;;N;;;;; -A510;VAI SYLLABLE DHEE;Lo;0;L;;;;;N;;;;; -A511;VAI SYLLABLE DHHEE;Lo;0;L;;;;;N;;;;; -A512;VAI SYLLABLE LEE;Lo;0;L;;;;;N;;;;; -A513;VAI SYLLABLE REE;Lo;0;L;;;;;N;;;;; -A514;VAI SYLLABLE DEE;Lo;0;L;;;;;N;;;;; -A515;VAI SYLLABLE NDEE;Lo;0;L;;;;;N;;;;; -A516;VAI SYLLABLE SEE;Lo;0;L;;;;;N;;;;; -A517;VAI SYLLABLE SHEE;Lo;0;L;;;;;N;;;;; -A518;VAI SYLLABLE ZEE;Lo;0;L;;;;;N;;;;; -A519;VAI SYLLABLE ZHEE;Lo;0;L;;;;;N;;;;; -A51A;VAI SYLLABLE CEE;Lo;0;L;;;;;N;;;;; -A51B;VAI SYLLABLE JEE;Lo;0;L;;;;;N;;;;; -A51C;VAI SYLLABLE NJEE;Lo;0;L;;;;;N;;;;; -A51D;VAI SYLLABLE YEE;Lo;0;L;;;;;N;;;;; -A51E;VAI SYLLABLE KEE;Lo;0;L;;;;;N;;;;; -A51F;VAI SYLLABLE NGGEE;Lo;0;L;;;;;N;;;;; -A520;VAI SYLLABLE GEE;Lo;0;L;;;;;N;;;;; -A521;VAI SYLLABLE MEE;Lo;0;L;;;;;N;;;;; -A522;VAI SYLLABLE NEE;Lo;0;L;;;;;N;;;;; -A523;VAI SYLLABLE NYEE;Lo;0;L;;;;;N;;;;; -A524;VAI SYLLABLE I;Lo;0;L;;;;;N;;;;; -A525;VAI SYLLABLE IN;Lo;0;L;;;;;N;;;;; -A526;VAI SYLLABLE HI;Lo;0;L;;;;;N;;;;; -A527;VAI SYLLABLE HIN;Lo;0;L;;;;;N;;;;; -A528;VAI SYLLABLE WI;Lo;0;L;;;;;N;;;;; -A529;VAI SYLLABLE WIN;Lo;0;L;;;;;N;;;;; -A52A;VAI SYLLABLE PI;Lo;0;L;;;;;N;;;;; -A52B;VAI SYLLABLE BHI;Lo;0;L;;;;;N;;;;; -A52C;VAI SYLLABLE BI;Lo;0;L;;;;;N;;;;; -A52D;VAI SYLLABLE MBI;Lo;0;L;;;;;N;;;;; -A52E;VAI SYLLABLE KPI;Lo;0;L;;;;;N;;;;; -A52F;VAI SYLLABLE MGBI;Lo;0;L;;;;;N;;;;; -A530;VAI SYLLABLE GBI;Lo;0;L;;;;;N;;;;; -A531;VAI SYLLABLE FI;Lo;0;L;;;;;N;;;;; -A532;VAI SYLLABLE VI;Lo;0;L;;;;;N;;;;; -A533;VAI SYLLABLE TI;Lo;0;L;;;;;N;;;;; -A534;VAI SYLLABLE THI;Lo;0;L;;;;;N;;;;; -A535;VAI SYLLABLE DHI;Lo;0;L;;;;;N;;;;; -A536;VAI SYLLABLE DHHI;Lo;0;L;;;;;N;;;;; -A537;VAI SYLLABLE LI;Lo;0;L;;;;;N;;;;; -A538;VAI SYLLABLE RI;Lo;0;L;;;;;N;;;;; -A539;VAI SYLLABLE DI;Lo;0;L;;;;;N;;;;; -A53A;VAI SYLLABLE NDI;Lo;0;L;;;;;N;;;;; -A53B;VAI SYLLABLE SI;Lo;0;L;;;;;N;;;;; -A53C;VAI SYLLABLE SHI;Lo;0;L;;;;;N;;;;; -A53D;VAI SYLLABLE ZI;Lo;0;L;;;;;N;;;;; -A53E;VAI SYLLABLE ZHI;Lo;0;L;;;;;N;;;;; -A53F;VAI SYLLABLE CI;Lo;0;L;;;;;N;;;;; -A540;VAI SYLLABLE JI;Lo;0;L;;;;;N;;;;; -A541;VAI SYLLABLE NJI;Lo;0;L;;;;;N;;;;; -A542;VAI SYLLABLE YI;Lo;0;L;;;;;N;;;;; -A543;VAI SYLLABLE KI;Lo;0;L;;;;;N;;;;; -A544;VAI SYLLABLE NGGI;Lo;0;L;;;;;N;;;;; -A545;VAI SYLLABLE GI;Lo;0;L;;;;;N;;;;; -A546;VAI SYLLABLE MI;Lo;0;L;;;;;N;;;;; -A547;VAI SYLLABLE NI;Lo;0;L;;;;;N;;;;; -A548;VAI SYLLABLE NYI;Lo;0;L;;;;;N;;;;; -A549;VAI SYLLABLE A;Lo;0;L;;;;;N;;;;; -A54A;VAI SYLLABLE AN;Lo;0;L;;;;;N;;;;; -A54B;VAI SYLLABLE NGAN;Lo;0;L;;;;;N;;;;; -A54C;VAI SYLLABLE HA;Lo;0;L;;;;;N;;;;; -A54D;VAI SYLLABLE HAN;Lo;0;L;;;;;N;;;;; -A54E;VAI SYLLABLE WA;Lo;0;L;;;;;N;;;;; -A54F;VAI SYLLABLE WAN;Lo;0;L;;;;;N;;;;; -A550;VAI SYLLABLE PA;Lo;0;L;;;;;N;;;;; -A551;VAI SYLLABLE BHA;Lo;0;L;;;;;N;;;;; -A552;VAI SYLLABLE BA;Lo;0;L;;;;;N;;;;; -A553;VAI SYLLABLE MBA;Lo;0;L;;;;;N;;;;; -A554;VAI SYLLABLE KPA;Lo;0;L;;;;;N;;;;; -A555;VAI SYLLABLE KPAN;Lo;0;L;;;;;N;;;;; -A556;VAI SYLLABLE MGBA;Lo;0;L;;;;;N;;;;; -A557;VAI SYLLABLE GBA;Lo;0;L;;;;;N;;;;; -A558;VAI SYLLABLE FA;Lo;0;L;;;;;N;;;;; -A559;VAI SYLLABLE VA;Lo;0;L;;;;;N;;;;; -A55A;VAI SYLLABLE TA;Lo;0;L;;;;;N;;;;; -A55B;VAI SYLLABLE THA;Lo;0;L;;;;;N;;;;; -A55C;VAI SYLLABLE DHA;Lo;0;L;;;;;N;;;;; -A55D;VAI SYLLABLE DHHA;Lo;0;L;;;;;N;;;;; -A55E;VAI SYLLABLE LA;Lo;0;L;;;;;N;;;;; -A55F;VAI SYLLABLE RA;Lo;0;L;;;;;N;;;;; -A560;VAI SYLLABLE DA;Lo;0;L;;;;;N;;;;; -A561;VAI SYLLABLE NDA;Lo;0;L;;;;;N;;;;; -A562;VAI SYLLABLE SA;Lo;0;L;;;;;N;;;;; -A563;VAI SYLLABLE SHA;Lo;0;L;;;;;N;;;;; -A564;VAI SYLLABLE ZA;Lo;0;L;;;;;N;;;;; -A565;VAI SYLLABLE ZHA;Lo;0;L;;;;;N;;;;; -A566;VAI SYLLABLE CA;Lo;0;L;;;;;N;;;;; -A567;VAI SYLLABLE JA;Lo;0;L;;;;;N;;;;; -A568;VAI SYLLABLE NJA;Lo;0;L;;;;;N;;;;; -A569;VAI SYLLABLE YA;Lo;0;L;;;;;N;;;;; -A56A;VAI SYLLABLE KA;Lo;0;L;;;;;N;;;;; -A56B;VAI SYLLABLE KAN;Lo;0;L;;;;;N;;;;; -A56C;VAI SYLLABLE NGGA;Lo;0;L;;;;;N;;;;; -A56D;VAI SYLLABLE GA;Lo;0;L;;;;;N;;;;; -A56E;VAI SYLLABLE MA;Lo;0;L;;;;;N;;;;; -A56F;VAI SYLLABLE NA;Lo;0;L;;;;;N;;;;; -A570;VAI SYLLABLE NYA;Lo;0;L;;;;;N;;;;; -A571;VAI SYLLABLE OO;Lo;0;L;;;;;N;;;;; -A572;VAI SYLLABLE OON;Lo;0;L;;;;;N;;;;; -A573;VAI SYLLABLE HOO;Lo;0;L;;;;;N;;;;; -A574;VAI SYLLABLE WOO;Lo;0;L;;;;;N;;;;; -A575;VAI SYLLABLE WOON;Lo;0;L;;;;;N;;;;; -A576;VAI SYLLABLE POO;Lo;0;L;;;;;N;;;;; -A577;VAI SYLLABLE BHOO;Lo;0;L;;;;;N;;;;; -A578;VAI SYLLABLE BOO;Lo;0;L;;;;;N;;;;; -A579;VAI SYLLABLE MBOO;Lo;0;L;;;;;N;;;;; -A57A;VAI SYLLABLE KPOO;Lo;0;L;;;;;N;;;;; -A57B;VAI SYLLABLE MGBOO;Lo;0;L;;;;;N;;;;; -A57C;VAI SYLLABLE GBOO;Lo;0;L;;;;;N;;;;; -A57D;VAI SYLLABLE FOO;Lo;0;L;;;;;N;;;;; -A57E;VAI SYLLABLE VOO;Lo;0;L;;;;;N;;;;; -A57F;VAI SYLLABLE TOO;Lo;0;L;;;;;N;;;;; -A580;VAI SYLLABLE THOO;Lo;0;L;;;;;N;;;;; -A581;VAI SYLLABLE DHOO;Lo;0;L;;;;;N;;;;; -A582;VAI SYLLABLE DHHOO;Lo;0;L;;;;;N;;;;; -A583;VAI SYLLABLE LOO;Lo;0;L;;;;;N;;;;; -A584;VAI SYLLABLE ROO;Lo;0;L;;;;;N;;;;; -A585;VAI SYLLABLE DOO;Lo;0;L;;;;;N;;;;; -A586;VAI SYLLABLE NDOO;Lo;0;L;;;;;N;;;;; -A587;VAI SYLLABLE SOO;Lo;0;L;;;;;N;;;;; -A588;VAI SYLLABLE SHOO;Lo;0;L;;;;;N;;;;; -A589;VAI SYLLABLE ZOO;Lo;0;L;;;;;N;;;;; -A58A;VAI SYLLABLE ZHOO;Lo;0;L;;;;;N;;;;; -A58B;VAI SYLLABLE COO;Lo;0;L;;;;;N;;;;; -A58C;VAI SYLLABLE JOO;Lo;0;L;;;;;N;;;;; -A58D;VAI SYLLABLE NJOO;Lo;0;L;;;;;N;;;;; -A58E;VAI SYLLABLE YOO;Lo;0;L;;;;;N;;;;; -A58F;VAI SYLLABLE KOO;Lo;0;L;;;;;N;;;;; -A590;VAI SYLLABLE NGGOO;Lo;0;L;;;;;N;;;;; -A591;VAI SYLLABLE GOO;Lo;0;L;;;;;N;;;;; -A592;VAI SYLLABLE MOO;Lo;0;L;;;;;N;;;;; -A593;VAI SYLLABLE NOO;Lo;0;L;;;;;N;;;;; -A594;VAI SYLLABLE NYOO;Lo;0;L;;;;;N;;;;; -A595;VAI SYLLABLE U;Lo;0;L;;;;;N;;;;; -A596;VAI SYLLABLE UN;Lo;0;L;;;;;N;;;;; -A597;VAI SYLLABLE HU;Lo;0;L;;;;;N;;;;; -A598;VAI SYLLABLE HUN;Lo;0;L;;;;;N;;;;; -A599;VAI SYLLABLE WU;Lo;0;L;;;;;N;;;;; -A59A;VAI SYLLABLE WUN;Lo;0;L;;;;;N;;;;; -A59B;VAI SYLLABLE PU;Lo;0;L;;;;;N;;;;; -A59C;VAI SYLLABLE BHU;Lo;0;L;;;;;N;;;;; -A59D;VAI SYLLABLE BU;Lo;0;L;;;;;N;;;;; -A59E;VAI SYLLABLE MBU;Lo;0;L;;;;;N;;;;; -A59F;VAI SYLLABLE KPU;Lo;0;L;;;;;N;;;;; -A5A0;VAI SYLLABLE MGBU;Lo;0;L;;;;;N;;;;; -A5A1;VAI SYLLABLE GBU;Lo;0;L;;;;;N;;;;; -A5A2;VAI SYLLABLE FU;Lo;0;L;;;;;N;;;;; -A5A3;VAI SYLLABLE VU;Lo;0;L;;;;;N;;;;; -A5A4;VAI SYLLABLE TU;Lo;0;L;;;;;N;;;;; -A5A5;VAI SYLLABLE THU;Lo;0;L;;;;;N;;;;; -A5A6;VAI SYLLABLE DHU;Lo;0;L;;;;;N;;;;; -A5A7;VAI SYLLABLE DHHU;Lo;0;L;;;;;N;;;;; -A5A8;VAI SYLLABLE LU;Lo;0;L;;;;;N;;;;; -A5A9;VAI SYLLABLE RU;Lo;0;L;;;;;N;;;;; -A5AA;VAI SYLLABLE DU;Lo;0;L;;;;;N;;;;; -A5AB;VAI SYLLABLE NDU;Lo;0;L;;;;;N;;;;; -A5AC;VAI SYLLABLE SU;Lo;0;L;;;;;N;;;;; -A5AD;VAI SYLLABLE SHU;Lo;0;L;;;;;N;;;;; -A5AE;VAI SYLLABLE ZU;Lo;0;L;;;;;N;;;;; -A5AF;VAI SYLLABLE ZHU;Lo;0;L;;;;;N;;;;; -A5B0;VAI SYLLABLE CU;Lo;0;L;;;;;N;;;;; -A5B1;VAI SYLLABLE JU;Lo;0;L;;;;;N;;;;; -A5B2;VAI SYLLABLE NJU;Lo;0;L;;;;;N;;;;; -A5B3;VAI SYLLABLE YU;Lo;0;L;;;;;N;;;;; -A5B4;VAI SYLLABLE KU;Lo;0;L;;;;;N;;;;; -A5B5;VAI SYLLABLE NGGU;Lo;0;L;;;;;N;;;;; -A5B6;VAI SYLLABLE GU;Lo;0;L;;;;;N;;;;; -A5B7;VAI SYLLABLE MU;Lo;0;L;;;;;N;;;;; -A5B8;VAI SYLLABLE NU;Lo;0;L;;;;;N;;;;; -A5B9;VAI SYLLABLE NYU;Lo;0;L;;;;;N;;;;; -A5BA;VAI SYLLABLE O;Lo;0;L;;;;;N;;;;; -A5BB;VAI SYLLABLE ON;Lo;0;L;;;;;N;;;;; -A5BC;VAI SYLLABLE NGON;Lo;0;L;;;;;N;;;;; -A5BD;VAI SYLLABLE HO;Lo;0;L;;;;;N;;;;; -A5BE;VAI SYLLABLE HON;Lo;0;L;;;;;N;;;;; -A5BF;VAI SYLLABLE WO;Lo;0;L;;;;;N;;;;; -A5C0;VAI SYLLABLE WON;Lo;0;L;;;;;N;;;;; -A5C1;VAI SYLLABLE PO;Lo;0;L;;;;;N;;;;; -A5C2;VAI SYLLABLE BHO;Lo;0;L;;;;;N;;;;; -A5C3;VAI SYLLABLE BO;Lo;0;L;;;;;N;;;;; -A5C4;VAI SYLLABLE MBO;Lo;0;L;;;;;N;;;;; -A5C5;VAI SYLLABLE KPO;Lo;0;L;;;;;N;;;;; -A5C6;VAI SYLLABLE MGBO;Lo;0;L;;;;;N;;;;; -A5C7;VAI SYLLABLE GBO;Lo;0;L;;;;;N;;;;; -A5C8;VAI SYLLABLE GBON;Lo;0;L;;;;;N;;;;; -A5C9;VAI SYLLABLE FO;Lo;0;L;;;;;N;;;;; -A5CA;VAI SYLLABLE VO;Lo;0;L;;;;;N;;;;; -A5CB;VAI SYLLABLE TO;Lo;0;L;;;;;N;;;;; -A5CC;VAI SYLLABLE THO;Lo;0;L;;;;;N;;;;; -A5CD;VAI SYLLABLE DHO;Lo;0;L;;;;;N;;;;; -A5CE;VAI SYLLABLE DHHO;Lo;0;L;;;;;N;;;;; -A5CF;VAI SYLLABLE LO;Lo;0;L;;;;;N;;;;; -A5D0;VAI SYLLABLE RO;Lo;0;L;;;;;N;;;;; -A5D1;VAI SYLLABLE DO;Lo;0;L;;;;;N;;;;; -A5D2;VAI SYLLABLE NDO;Lo;0;L;;;;;N;;;;; -A5D3;VAI SYLLABLE SO;Lo;0;L;;;;;N;;;;; -A5D4;VAI SYLLABLE SHO;Lo;0;L;;;;;N;;;;; -A5D5;VAI SYLLABLE ZO;Lo;0;L;;;;;N;;;;; -A5D6;VAI SYLLABLE ZHO;Lo;0;L;;;;;N;;;;; -A5D7;VAI SYLLABLE CO;Lo;0;L;;;;;N;;;;; -A5D8;VAI SYLLABLE JO;Lo;0;L;;;;;N;;;;; -A5D9;VAI SYLLABLE NJO;Lo;0;L;;;;;N;;;;; -A5DA;VAI SYLLABLE YO;Lo;0;L;;;;;N;;;;; -A5DB;VAI SYLLABLE KO;Lo;0;L;;;;;N;;;;; -A5DC;VAI SYLLABLE NGGO;Lo;0;L;;;;;N;;;;; -A5DD;VAI SYLLABLE GO;Lo;0;L;;;;;N;;;;; -A5DE;VAI SYLLABLE MO;Lo;0;L;;;;;N;;;;; -A5DF;VAI SYLLABLE NO;Lo;0;L;;;;;N;;;;; -A5E0;VAI SYLLABLE NYO;Lo;0;L;;;;;N;;;;; -A5E1;VAI SYLLABLE E;Lo;0;L;;;;;N;;;;; -A5E2;VAI SYLLABLE EN;Lo;0;L;;;;;N;;;;; -A5E3;VAI SYLLABLE NGEN;Lo;0;L;;;;;N;;;;; -A5E4;VAI SYLLABLE HE;Lo;0;L;;;;;N;;;;; -A5E5;VAI SYLLABLE HEN;Lo;0;L;;;;;N;;;;; -A5E6;VAI SYLLABLE WE;Lo;0;L;;;;;N;;;;; -A5E7;VAI SYLLABLE WEN;Lo;0;L;;;;;N;;;;; -A5E8;VAI SYLLABLE PE;Lo;0;L;;;;;N;;;;; -A5E9;VAI SYLLABLE BHE;Lo;0;L;;;;;N;;;;; -A5EA;VAI SYLLABLE BE;Lo;0;L;;;;;N;;;;; -A5EB;VAI SYLLABLE MBE;Lo;0;L;;;;;N;;;;; -A5EC;VAI SYLLABLE KPE;Lo;0;L;;;;;N;;;;; -A5ED;VAI SYLLABLE KPEN;Lo;0;L;;;;;N;;;;; -A5EE;VAI SYLLABLE MGBE;Lo;0;L;;;;;N;;;;; -A5EF;VAI SYLLABLE GBE;Lo;0;L;;;;;N;;;;; -A5F0;VAI SYLLABLE GBEN;Lo;0;L;;;;;N;;;;; -A5F1;VAI SYLLABLE FE;Lo;0;L;;;;;N;;;;; -A5F2;VAI SYLLABLE VE;Lo;0;L;;;;;N;;;;; -A5F3;VAI SYLLABLE TE;Lo;0;L;;;;;N;;;;; -A5F4;VAI SYLLABLE THE;Lo;0;L;;;;;N;;;;; -A5F5;VAI SYLLABLE DHE;Lo;0;L;;;;;N;;;;; -A5F6;VAI SYLLABLE DHHE;Lo;0;L;;;;;N;;;;; -A5F7;VAI SYLLABLE LE;Lo;0;L;;;;;N;;;;; -A5F8;VAI SYLLABLE RE;Lo;0;L;;;;;N;;;;; -A5F9;VAI SYLLABLE DE;Lo;0;L;;;;;N;;;;; -A5FA;VAI SYLLABLE NDE;Lo;0;L;;;;;N;;;;; -A5FB;VAI SYLLABLE SE;Lo;0;L;;;;;N;;;;; -A5FC;VAI SYLLABLE SHE;Lo;0;L;;;;;N;;;;; -A5FD;VAI SYLLABLE ZE;Lo;0;L;;;;;N;;;;; -A5FE;VAI SYLLABLE ZHE;Lo;0;L;;;;;N;;;;; -A5FF;VAI SYLLABLE CE;Lo;0;L;;;;;N;;;;; -A600;VAI SYLLABLE JE;Lo;0;L;;;;;N;;;;; -A601;VAI SYLLABLE NJE;Lo;0;L;;;;;N;;;;; -A602;VAI SYLLABLE YE;Lo;0;L;;;;;N;;;;; -A603;VAI SYLLABLE KE;Lo;0;L;;;;;N;;;;; -A604;VAI SYLLABLE NGGE;Lo;0;L;;;;;N;;;;; -A605;VAI SYLLABLE NGGEN;Lo;0;L;;;;;N;;;;; -A606;VAI SYLLABLE GE;Lo;0;L;;;;;N;;;;; -A607;VAI SYLLABLE GEN;Lo;0;L;;;;;N;;;;; -A608;VAI SYLLABLE ME;Lo;0;L;;;;;N;;;;; -A609;VAI SYLLABLE NE;Lo;0;L;;;;;N;;;;; -A60A;VAI SYLLABLE NYE;Lo;0;L;;;;;N;;;;; -A60B;VAI SYLLABLE NG;Lo;0;L;;;;;N;;;;; -A60C;VAI SYLLABLE LENGTHENER;Lm;0;L;;;;;N;;;;; -A60D;VAI COMMA;Po;0;ON;;;;;N;;;;; -A60E;VAI FULL STOP;Po;0;ON;;;;;N;;;;; -A60F;VAI QUESTION MARK;Po;0;ON;;;;;N;;;;; -A610;VAI SYLLABLE NDOLE FA;Lo;0;L;;;;;N;;;;; -A611;VAI SYLLABLE NDOLE KA;Lo;0;L;;;;;N;;;;; -A612;VAI SYLLABLE NDOLE SOO;Lo;0;L;;;;;N;;;;; -A613;VAI SYMBOL FEENG;Lo;0;L;;;;;N;;;;; -A614;VAI SYMBOL KEENG;Lo;0;L;;;;;N;;;;; -A615;VAI SYMBOL TING;Lo;0;L;;;;;N;;;;; -A616;VAI SYMBOL NII;Lo;0;L;;;;;N;;;;; -A617;VAI SYMBOL BANG;Lo;0;L;;;;;N;;;;; -A618;VAI SYMBOL FAA;Lo;0;L;;;;;N;;;;; -A619;VAI SYMBOL TAA;Lo;0;L;;;;;N;;;;; -A61A;VAI SYMBOL DANG;Lo;0;L;;;;;N;;;;; -A61B;VAI SYMBOL DOONG;Lo;0;L;;;;;N;;;;; -A61C;VAI SYMBOL KUNG;Lo;0;L;;;;;N;;;;; -A61D;VAI SYMBOL TONG;Lo;0;L;;;;;N;;;;; -A61E;VAI SYMBOL DO-O;Lo;0;L;;;;;N;;;;; -A61F;VAI SYMBOL JONG;Lo;0;L;;;;;N;;;;; -A620;VAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -A621;VAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -A622;VAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -A623;VAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -A624;VAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -A625;VAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -A626;VAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -A627;VAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -A628;VAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -A629;VAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -A62A;VAI SYLLABLE NDOLE MA;Lo;0;L;;;;;N;;;;; -A62B;VAI SYLLABLE NDOLE DO;Lo;0;L;;;;;N;;;;; -A640;CYRILLIC CAPITAL LETTER ZEMLYA;Lu;0;L;;;;;N;;;;A641; -A641;CYRILLIC SMALL LETTER ZEMLYA;Ll;0;L;;;;;N;;;A640;;A640 -A642;CYRILLIC CAPITAL LETTER DZELO;Lu;0;L;;;;;N;;;;A643; -A643;CYRILLIC SMALL LETTER DZELO;Ll;0;L;;;;;N;;;A642;;A642 -A644;CYRILLIC CAPITAL LETTER REVERSED DZE;Lu;0;L;;;;;N;;;;A645; -A645;CYRILLIC SMALL LETTER REVERSED DZE;Ll;0;L;;;;;N;;;A644;;A644 -A646;CYRILLIC CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;A647; -A647;CYRILLIC SMALL LETTER IOTA;Ll;0;L;;;;;N;;;A646;;A646 -A648;CYRILLIC CAPITAL LETTER DJERV;Lu;0;L;;;;;N;;;;A649; -A649;CYRILLIC SMALL LETTER DJERV;Ll;0;L;;;;;N;;;A648;;A648 -A64A;CYRILLIC CAPITAL LETTER MONOGRAPH UK;Lu;0;L;;;;;N;;;;A64B; -A64B;CYRILLIC SMALL LETTER MONOGRAPH UK;Ll;0;L;;;;;N;;;A64A;;A64A -A64C;CYRILLIC CAPITAL LETTER BROAD OMEGA;Lu;0;L;;;;;N;;;;A64D; -A64D;CYRILLIC SMALL LETTER BROAD OMEGA;Ll;0;L;;;;;N;;;A64C;;A64C -A64E;CYRILLIC CAPITAL LETTER NEUTRAL YER;Lu;0;L;;;;;N;;;;A64F; -A64F;CYRILLIC SMALL LETTER NEUTRAL YER;Ll;0;L;;;;;N;;;A64E;;A64E -A650;CYRILLIC CAPITAL LETTER YERU WITH BACK YER;Lu;0;L;;;;;N;;;;A651; -A651;CYRILLIC SMALL LETTER YERU WITH BACK YER;Ll;0;L;;;;;N;;;A650;;A650 -A652;CYRILLIC CAPITAL LETTER IOTIFIED YAT;Lu;0;L;;;;;N;;;;A653; -A653;CYRILLIC SMALL LETTER IOTIFIED YAT;Ll;0;L;;;;;N;;;A652;;A652 -A654;CYRILLIC CAPITAL LETTER REVERSED YU;Lu;0;L;;;;;N;;;;A655; -A655;CYRILLIC SMALL LETTER REVERSED YU;Ll;0;L;;;;;N;;;A654;;A654 -A656;CYRILLIC CAPITAL LETTER IOTIFIED A;Lu;0;L;;;;;N;;;;A657; -A657;CYRILLIC SMALL LETTER IOTIFIED A;Ll;0;L;;;;;N;;;A656;;A656 -A658;CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS;Lu;0;L;;;;;N;;;;A659; -A659;CYRILLIC SMALL LETTER CLOSED LITTLE YUS;Ll;0;L;;;;;N;;;A658;;A658 -A65A;CYRILLIC CAPITAL LETTER BLENDED YUS;Lu;0;L;;;;;N;;;;A65B; -A65B;CYRILLIC SMALL LETTER BLENDED YUS;Ll;0;L;;;;;N;;;A65A;;A65A -A65C;CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS;Lu;0;L;;;;;N;;;;A65D; -A65D;CYRILLIC SMALL LETTER IOTIFIED CLOSED LITTLE YUS;Ll;0;L;;;;;N;;;A65C;;A65C -A65E;CYRILLIC CAPITAL LETTER YN;Lu;0;L;;;;;N;;;;A65F; -A65F;CYRILLIC SMALL LETTER YN;Ll;0;L;;;;;N;;;A65E;;A65E -A662;CYRILLIC CAPITAL LETTER SOFT DE;Lu;0;L;;;;;N;;;;A663; -A663;CYRILLIC SMALL LETTER SOFT DE;Ll;0;L;;;;;N;;;A662;;A662 -A664;CYRILLIC CAPITAL LETTER SOFT EL;Lu;0;L;;;;;N;;;;A665; -A665;CYRILLIC SMALL LETTER SOFT EL;Ll;0;L;;;;;N;;;A664;;A664 -A666;CYRILLIC CAPITAL LETTER SOFT EM;Lu;0;L;;;;;N;;;;A667; -A667;CYRILLIC SMALL LETTER SOFT EM;Ll;0;L;;;;;N;;;A666;;A666 -A668;CYRILLIC CAPITAL LETTER MONOCULAR O;Lu;0;L;;;;;N;;;;A669; -A669;CYRILLIC SMALL LETTER MONOCULAR O;Ll;0;L;;;;;N;;;A668;;A668 -A66A;CYRILLIC CAPITAL LETTER BINOCULAR O;Lu;0;L;;;;;N;;;;A66B; -A66B;CYRILLIC SMALL LETTER BINOCULAR O;Ll;0;L;;;;;N;;;A66A;;A66A -A66C;CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O;Lu;0;L;;;;;N;;;;A66D; -A66D;CYRILLIC SMALL LETTER DOUBLE MONOCULAR O;Ll;0;L;;;;;N;;;A66C;;A66C -A66E;CYRILLIC LETTER MULTIOCULAR O;Lo;0;L;;;;;N;;;;; -A66F;COMBINING CYRILLIC VZMET;Mn;230;NSM;;;;;N;;;;; -A670;COMBINING CYRILLIC TEN MILLIONS SIGN;Me;0;NSM;;;;;N;;;;; -A671;COMBINING CYRILLIC HUNDRED MILLIONS SIGN;Me;0;NSM;;;;;N;;;;; -A672;COMBINING CYRILLIC THOUSAND MILLIONS SIGN;Me;0;NSM;;;;;N;;;;; -A673;SLAVONIC ASTERISK;Po;0;ON;;;;;N;;;;; -A67C;COMBINING CYRILLIC KAVYKA;Mn;230;NSM;;;;;N;;;;; -A67D;COMBINING CYRILLIC PAYEROK;Mn;230;NSM;;;;;N;;;;; -A67E;CYRILLIC KAVYKA;Po;0;ON;;;;;N;;;;; -A67F;CYRILLIC PAYEROK;Lm;0;ON;;;;;N;;;;; -A680;CYRILLIC CAPITAL LETTER DWE;Lu;0;L;;;;;N;;;;A681; -A681;CYRILLIC SMALL LETTER DWE;Ll;0;L;;;;;N;;;A680;;A680 -A682;CYRILLIC CAPITAL LETTER DZWE;Lu;0;L;;;;;N;;;;A683; -A683;CYRILLIC SMALL LETTER DZWE;Ll;0;L;;;;;N;;;A682;;A682 -A684;CYRILLIC CAPITAL LETTER ZHWE;Lu;0;L;;;;;N;;;;A685; -A685;CYRILLIC SMALL LETTER ZHWE;Ll;0;L;;;;;N;;;A684;;A684 -A686;CYRILLIC CAPITAL LETTER CCHE;Lu;0;L;;;;;N;;;;A687; -A687;CYRILLIC SMALL LETTER CCHE;Ll;0;L;;;;;N;;;A686;;A686 -A688;CYRILLIC CAPITAL LETTER DZZE;Lu;0;L;;;;;N;;;;A689; -A689;CYRILLIC SMALL LETTER DZZE;Ll;0;L;;;;;N;;;A688;;A688 -A68A;CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK;Lu;0;L;;;;;N;;;;A68B; -A68B;CYRILLIC SMALL LETTER TE WITH MIDDLE HOOK;Ll;0;L;;;;;N;;;A68A;;A68A -A68C;CYRILLIC CAPITAL LETTER TWE;Lu;0;L;;;;;N;;;;A68D; -A68D;CYRILLIC SMALL LETTER TWE;Ll;0;L;;;;;N;;;A68C;;A68C -A68E;CYRILLIC CAPITAL LETTER TSWE;Lu;0;L;;;;;N;;;;A68F; -A68F;CYRILLIC SMALL LETTER TSWE;Ll;0;L;;;;;N;;;A68E;;A68E -A690;CYRILLIC CAPITAL LETTER TSSE;Lu;0;L;;;;;N;;;;A691; -A691;CYRILLIC SMALL LETTER TSSE;Ll;0;L;;;;;N;;;A690;;A690 -A692;CYRILLIC CAPITAL LETTER TCHE;Lu;0;L;;;;;N;;;;A693; -A693;CYRILLIC SMALL LETTER TCHE;Ll;0;L;;;;;N;;;A692;;A692 -A694;CYRILLIC CAPITAL LETTER HWE;Lu;0;L;;;;;N;;;;A695; -A695;CYRILLIC SMALL LETTER HWE;Ll;0;L;;;;;N;;;A694;;A694 -A696;CYRILLIC CAPITAL LETTER SHWE;Lu;0;L;;;;;N;;;;A697; -A697;CYRILLIC SMALL LETTER SHWE;Ll;0;L;;;;;N;;;A696;;A696 -A6A0;BAMUM LETTER A;Lo;0;L;;;;;N;;;;; -A6A1;BAMUM LETTER KA;Lo;0;L;;;;;N;;;;; -A6A2;BAMUM LETTER U;Lo;0;L;;;;;N;;;;; -A6A3;BAMUM LETTER KU;Lo;0;L;;;;;N;;;;; -A6A4;BAMUM LETTER EE;Lo;0;L;;;;;N;;;;; -A6A5;BAMUM LETTER REE;Lo;0;L;;;;;N;;;;; -A6A6;BAMUM LETTER TAE;Lo;0;L;;;;;N;;;;; -A6A7;BAMUM LETTER O;Lo;0;L;;;;;N;;;;; -A6A8;BAMUM LETTER NYI;Lo;0;L;;;;;N;;;;; -A6A9;BAMUM LETTER I;Lo;0;L;;;;;N;;;;; -A6AA;BAMUM LETTER LA;Lo;0;L;;;;;N;;;;; -A6AB;BAMUM LETTER PA;Lo;0;L;;;;;N;;;;; -A6AC;BAMUM LETTER RII;Lo;0;L;;;;;N;;;;; -A6AD;BAMUM LETTER RIEE;Lo;0;L;;;;;N;;;;; -A6AE;BAMUM LETTER LEEEE;Lo;0;L;;;;;N;;;;; -A6AF;BAMUM LETTER MEEEE;Lo;0;L;;;;;N;;;;; -A6B0;BAMUM LETTER TAA;Lo;0;L;;;;;N;;;;; -A6B1;BAMUM LETTER NDAA;Lo;0;L;;;;;N;;;;; -A6B2;BAMUM LETTER NJAEM;Lo;0;L;;;;;N;;;;; -A6B3;BAMUM LETTER M;Lo;0;L;;;;;N;;;;; -A6B4;BAMUM LETTER SUU;Lo;0;L;;;;;N;;;;; -A6B5;BAMUM LETTER MU;Lo;0;L;;;;;N;;;;; -A6B6;BAMUM LETTER SHII;Lo;0;L;;;;;N;;;;; -A6B7;BAMUM LETTER SI;Lo;0;L;;;;;N;;;;; -A6B8;BAMUM LETTER SHEUX;Lo;0;L;;;;;N;;;;; -A6B9;BAMUM LETTER SEUX;Lo;0;L;;;;;N;;;;; -A6BA;BAMUM LETTER KYEE;Lo;0;L;;;;;N;;;;; -A6BB;BAMUM LETTER KET;Lo;0;L;;;;;N;;;;; -A6BC;BAMUM LETTER NUAE;Lo;0;L;;;;;N;;;;; -A6BD;BAMUM LETTER NU;Lo;0;L;;;;;N;;;;; -A6BE;BAMUM LETTER NJUAE;Lo;0;L;;;;;N;;;;; -A6BF;BAMUM LETTER YOQ;Lo;0;L;;;;;N;;;;; -A6C0;BAMUM LETTER SHU;Lo;0;L;;;;;N;;;;; -A6C1;BAMUM LETTER YUQ;Lo;0;L;;;;;N;;;;; -A6C2;BAMUM LETTER YA;Lo;0;L;;;;;N;;;;; -A6C3;BAMUM LETTER NSHA;Lo;0;L;;;;;N;;;;; -A6C4;BAMUM LETTER KEUX;Lo;0;L;;;;;N;;;;; -A6C5;BAMUM LETTER PEUX;Lo;0;L;;;;;N;;;;; -A6C6;BAMUM LETTER NJEE;Lo;0;L;;;;;N;;;;; -A6C7;BAMUM LETTER NTEE;Lo;0;L;;;;;N;;;;; -A6C8;BAMUM LETTER PUE;Lo;0;L;;;;;N;;;;; -A6C9;BAMUM LETTER WUE;Lo;0;L;;;;;N;;;;; -A6CA;BAMUM LETTER PEE;Lo;0;L;;;;;N;;;;; -A6CB;BAMUM LETTER FEE;Lo;0;L;;;;;N;;;;; -A6CC;BAMUM LETTER RU;Lo;0;L;;;;;N;;;;; -A6CD;BAMUM LETTER LU;Lo;0;L;;;;;N;;;;; -A6CE;BAMUM LETTER MI;Lo;0;L;;;;;N;;;;; -A6CF;BAMUM LETTER NI;Lo;0;L;;;;;N;;;;; -A6D0;BAMUM LETTER REUX;Lo;0;L;;;;;N;;;;; -A6D1;BAMUM LETTER RAE;Lo;0;L;;;;;N;;;;; -A6D2;BAMUM LETTER KEN;Lo;0;L;;;;;N;;;;; -A6D3;BAMUM LETTER NGKWAEN;Lo;0;L;;;;;N;;;;; -A6D4;BAMUM LETTER NGGA;Lo;0;L;;;;;N;;;;; -A6D5;BAMUM LETTER NGA;Lo;0;L;;;;;N;;;;; -A6D6;BAMUM LETTER SHO;Lo;0;L;;;;;N;;;;; -A6D7;BAMUM LETTER PUAE;Lo;0;L;;;;;N;;;;; -A6D8;BAMUM LETTER FU;Lo;0;L;;;;;N;;;;; -A6D9;BAMUM LETTER FOM;Lo;0;L;;;;;N;;;;; -A6DA;BAMUM LETTER WA;Lo;0;L;;;;;N;;;;; -A6DB;BAMUM LETTER NA;Lo;0;L;;;;;N;;;;; -A6DC;BAMUM LETTER LI;Lo;0;L;;;;;N;;;;; -A6DD;BAMUM LETTER PI;Lo;0;L;;;;;N;;;;; -A6DE;BAMUM LETTER LOQ;Lo;0;L;;;;;N;;;;; -A6DF;BAMUM LETTER KO;Lo;0;L;;;;;N;;;;; -A6E0;BAMUM LETTER MBEN;Lo;0;L;;;;;N;;;;; -A6E1;BAMUM LETTER REN;Lo;0;L;;;;;N;;;;; -A6E2;BAMUM LETTER MEN;Lo;0;L;;;;;N;;;;; -A6E3;BAMUM LETTER MA;Lo;0;L;;;;;N;;;;; -A6E4;BAMUM LETTER TI;Lo;0;L;;;;;N;;;;; -A6E5;BAMUM LETTER KI;Lo;0;L;;;;;N;;;;; -A6E6;BAMUM LETTER MO;Nl;0;L;;;;1;N;;;;; -A6E7;BAMUM LETTER MBAA;Nl;0;L;;;;2;N;;;;; -A6E8;BAMUM LETTER TET;Nl;0;L;;;;3;N;;;;; -A6E9;BAMUM LETTER KPA;Nl;0;L;;;;4;N;;;;; -A6EA;BAMUM LETTER TEN;Nl;0;L;;;;5;N;;;;; -A6EB;BAMUM LETTER NTUU;Nl;0;L;;;;6;N;;;;; -A6EC;BAMUM LETTER SAMBA;Nl;0;L;;;;7;N;;;;; -A6ED;BAMUM LETTER FAAMAE;Nl;0;L;;;;8;N;;;;; -A6EE;BAMUM LETTER KOVUU;Nl;0;L;;;;9;N;;;;; -A6EF;BAMUM LETTER KOGHOM;Nl;0;L;;;;0;N;;;;; -A6F0;BAMUM COMBINING MARK KOQNDON;Mn;230;NSM;;;;;N;;;;; -A6F1;BAMUM COMBINING MARK TUKWENTIS;Mn;230;NSM;;;;;N;;;;; -A6F2;BAMUM NJAEMLI;Po;0;L;;;;;N;;;;; -A6F3;BAMUM FULL STOP;Po;0;L;;;;;N;;;;; -A6F4;BAMUM COLON;Po;0;L;;;;;N;;;;; -A6F5;BAMUM COMMA;Po;0;L;;;;;N;;;;; -A6F6;BAMUM SEMICOLON;Po;0;L;;;;;N;;;;; -A6F7;BAMUM QUESTION MARK;Po;0;L;;;;;N;;;;; -A700;MODIFIER LETTER CHINESE TONE YIN PING;Sk;0;ON;;;;;N;;;;; -A701;MODIFIER LETTER CHINESE TONE YANG PING;Sk;0;ON;;;;;N;;;;; -A702;MODIFIER LETTER CHINESE TONE YIN SHANG;Sk;0;ON;;;;;N;;;;; -A703;MODIFIER LETTER CHINESE TONE YANG SHANG;Sk;0;ON;;;;;N;;;;; -A704;MODIFIER LETTER CHINESE TONE YIN QU;Sk;0;ON;;;;;N;;;;; -A705;MODIFIER LETTER CHINESE TONE YANG QU;Sk;0;ON;;;;;N;;;;; -A706;MODIFIER LETTER CHINESE TONE YIN RU;Sk;0;ON;;;;;N;;;;; -A707;MODIFIER LETTER CHINESE TONE YANG RU;Sk;0;ON;;;;;N;;;;; -A708;MODIFIER LETTER EXTRA-HIGH DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;; -A709;MODIFIER LETTER HIGH DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;; -A70A;MODIFIER LETTER MID DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;; -A70B;MODIFIER LETTER LOW DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;; -A70C;MODIFIER LETTER EXTRA-LOW DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;; -A70D;MODIFIER LETTER EXTRA-HIGH DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; -A70E;MODIFIER LETTER HIGH DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; -A70F;MODIFIER LETTER MID DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; -A710;MODIFIER LETTER LOW DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; -A711;MODIFIER LETTER EXTRA-LOW DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; -A712;MODIFIER LETTER EXTRA-HIGH LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; -A713;MODIFIER LETTER HIGH LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; -A714;MODIFIER LETTER MID LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; -A715;MODIFIER LETTER LOW LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; -A716;MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; -A717;MODIFIER LETTER DOT VERTICAL BAR;Lm;0;ON;;;;;N;;;;; -A718;MODIFIER LETTER DOT SLASH;Lm;0;ON;;;;;N;;;;; -A719;MODIFIER LETTER DOT HORIZONTAL BAR;Lm;0;ON;;;;;N;;;;; -A71A;MODIFIER LETTER LOWER RIGHT CORNER ANGLE;Lm;0;ON;;;;;N;;;;; -A71B;MODIFIER LETTER RAISED UP ARROW;Lm;0;ON;;;;;N;;;;; -A71C;MODIFIER LETTER RAISED DOWN ARROW;Lm;0;ON;;;;;N;;;;; -A71D;MODIFIER LETTER RAISED EXCLAMATION MARK;Lm;0;ON;;;;;N;;;;; -A71E;MODIFIER LETTER RAISED INVERTED EXCLAMATION MARK;Lm;0;ON;;;;;N;;;;; -A71F;MODIFIER LETTER LOW INVERTED EXCLAMATION MARK;Lm;0;ON;;;;;N;;;;; -A720;MODIFIER LETTER STRESS AND HIGH TONE;Sk;0;ON;;;;;N;;;;; -A721;MODIFIER LETTER STRESS AND LOW TONE;Sk;0;ON;;;;;N;;;;; -A722;LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF;Lu;0;L;;;;;N;;;;A723; -A723;LATIN SMALL LETTER EGYPTOLOGICAL ALEF;Ll;0;L;;;;;N;;;A722;;A722 -A724;LATIN CAPITAL LETTER EGYPTOLOGICAL AIN;Lu;0;L;;;;;N;;;;A725; -A725;LATIN SMALL LETTER EGYPTOLOGICAL AIN;Ll;0;L;;;;;N;;;A724;;A724 -A726;LATIN CAPITAL LETTER HENG;Lu;0;L;;;;;N;;;;A727; -A727;LATIN SMALL LETTER HENG;Ll;0;L;;;;;N;;;A726;;A726 -A728;LATIN CAPITAL LETTER TZ;Lu;0;L;;;;;N;;;;A729; -A729;LATIN SMALL LETTER TZ;Ll;0;L;;;;;N;;;A728;;A728 -A72A;LATIN CAPITAL LETTER TRESILLO;Lu;0;L;;;;;N;;;;A72B; -A72B;LATIN SMALL LETTER TRESILLO;Ll;0;L;;;;;N;;;A72A;;A72A -A72C;LATIN CAPITAL LETTER CUATRILLO;Lu;0;L;;;;;N;;;;A72D; -A72D;LATIN SMALL LETTER CUATRILLO;Ll;0;L;;;;;N;;;A72C;;A72C -A72E;LATIN CAPITAL LETTER CUATRILLO WITH COMMA;Lu;0;L;;;;;N;;;;A72F; -A72F;LATIN SMALL LETTER CUATRILLO WITH COMMA;Ll;0;L;;;;;N;;;A72E;;A72E -A730;LATIN LETTER SMALL CAPITAL F;Ll;0;L;;;;;N;;;;; -A731;LATIN LETTER SMALL CAPITAL S;Ll;0;L;;;;;N;;;;; -A732;LATIN CAPITAL LETTER AA;Lu;0;L;;;;;N;;;;A733; -A733;LATIN SMALL LETTER AA;Ll;0;L;;;;;N;;;A732;;A732 -A734;LATIN CAPITAL LETTER AO;Lu;0;L;;;;;N;;;;A735; -A735;LATIN SMALL LETTER AO;Ll;0;L;;;;;N;;;A734;;A734 -A736;LATIN CAPITAL LETTER AU;Lu;0;L;;;;;N;;;;A737; -A737;LATIN SMALL LETTER AU;Ll;0;L;;;;;N;;;A736;;A736 -A738;LATIN CAPITAL LETTER AV;Lu;0;L;;;;;N;;;;A739; -A739;LATIN SMALL LETTER AV;Ll;0;L;;;;;N;;;A738;;A738 -A73A;LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR;Lu;0;L;;;;;N;;;;A73B; -A73B;LATIN SMALL LETTER AV WITH HORIZONTAL BAR;Ll;0;L;;;;;N;;;A73A;;A73A -A73C;LATIN CAPITAL LETTER AY;Lu;0;L;;;;;N;;;;A73D; -A73D;LATIN SMALL LETTER AY;Ll;0;L;;;;;N;;;A73C;;A73C -A73E;LATIN CAPITAL LETTER REVERSED C WITH DOT;Lu;0;L;;;;;N;;;;A73F; -A73F;LATIN SMALL LETTER REVERSED C WITH DOT;Ll;0;L;;;;;N;;;A73E;;A73E -A740;LATIN CAPITAL LETTER K WITH STROKE;Lu;0;L;;;;;N;;;;A741; -A741;LATIN SMALL LETTER K WITH STROKE;Ll;0;L;;;;;N;;;A740;;A740 -A742;LATIN CAPITAL LETTER K WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A743; -A743;LATIN SMALL LETTER K WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;A742;;A742 -A744;LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A745; -A745;LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE;Ll;0;L;;;;;N;;;A744;;A744 -A746;LATIN CAPITAL LETTER BROKEN L;Lu;0;L;;;;;N;;;;A747; -A747;LATIN SMALL LETTER BROKEN L;Ll;0;L;;;;;N;;;A746;;A746 -A748;LATIN CAPITAL LETTER L WITH HIGH STROKE;Lu;0;L;;;;;N;;;;A749; -A749;LATIN SMALL LETTER L WITH HIGH STROKE;Ll;0;L;;;;;N;;;A748;;A748 -A74A;LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY;Lu;0;L;;;;;N;;;;A74B; -A74B;LATIN SMALL LETTER O WITH LONG STROKE OVERLAY;Ll;0;L;;;;;N;;;A74A;;A74A -A74C;LATIN CAPITAL LETTER O WITH LOOP;Lu;0;L;;;;;N;;;;A74D; -A74D;LATIN SMALL LETTER O WITH LOOP;Ll;0;L;;;;;N;;;A74C;;A74C -A74E;LATIN CAPITAL LETTER OO;Lu;0;L;;;;;N;;;;A74F; -A74F;LATIN SMALL LETTER OO;Ll;0;L;;;;;N;;;A74E;;A74E -A750;LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER;Lu;0;L;;;;;N;;;;A751; -A751;LATIN SMALL LETTER P WITH STROKE THROUGH DESCENDER;Ll;0;L;;;;;N;;;A750;;A750 -A752;LATIN CAPITAL LETTER P WITH FLOURISH;Lu;0;L;;;;;N;;;;A753; -A753;LATIN SMALL LETTER P WITH FLOURISH;Ll;0;L;;;;;N;;;A752;;A752 -A754;LATIN CAPITAL LETTER P WITH SQUIRREL TAIL;Lu;0;L;;;;;N;;;;A755; -A755;LATIN SMALL LETTER P WITH SQUIRREL TAIL;Ll;0;L;;;;;N;;;A754;;A754 -A756;LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER;Lu;0;L;;;;;N;;;;A757; -A757;LATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDER;Ll;0;L;;;;;N;;;A756;;A756 -A758;LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A759; -A759;LATIN SMALL LETTER Q WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;A758;;A758 -A75A;LATIN CAPITAL LETTER R ROTUNDA;Lu;0;L;;;;;N;;;;A75B; -A75B;LATIN SMALL LETTER R ROTUNDA;Ll;0;L;;;;;N;;;A75A;;A75A -A75C;LATIN CAPITAL LETTER RUM ROTUNDA;Lu;0;L;;;;;N;;;;A75D; -A75D;LATIN SMALL LETTER RUM ROTUNDA;Ll;0;L;;;;;N;;;A75C;;A75C -A75E;LATIN CAPITAL LETTER V WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A75F; -A75F;LATIN SMALL LETTER V WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;A75E;;A75E -A760;LATIN CAPITAL LETTER VY;Lu;0;L;;;;;N;;;;A761; -A761;LATIN SMALL LETTER VY;Ll;0;L;;;;;N;;;A760;;A760 -A762;LATIN CAPITAL LETTER VISIGOTHIC Z;Lu;0;L;;;;;N;;;;A763; -A763;LATIN SMALL LETTER VISIGOTHIC Z;Ll;0;L;;;;;N;;;A762;;A762 -A764;LATIN CAPITAL LETTER THORN WITH STROKE;Lu;0;L;;;;;N;;;;A765; -A765;LATIN SMALL LETTER THORN WITH STROKE;Ll;0;L;;;;;N;;;A764;;A764 -A766;LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER;Lu;0;L;;;;;N;;;;A767; -A767;LATIN SMALL LETTER THORN WITH STROKE THROUGH DESCENDER;Ll;0;L;;;;;N;;;A766;;A766 -A768;LATIN CAPITAL LETTER VEND;Lu;0;L;;;;;N;;;;A769; -A769;LATIN SMALL LETTER VEND;Ll;0;L;;;;;N;;;A768;;A768 -A76A;LATIN CAPITAL LETTER ET;Lu;0;L;;;;;N;;;;A76B; -A76B;LATIN SMALL LETTER ET;Ll;0;L;;;;;N;;;A76A;;A76A -A76C;LATIN CAPITAL LETTER IS;Lu;0;L;;;;;N;;;;A76D; -A76D;LATIN SMALL LETTER IS;Ll;0;L;;;;;N;;;A76C;;A76C -A76E;LATIN CAPITAL LETTER CON;Lu;0;L;;;;;N;;;;A76F; -A76F;LATIN SMALL LETTER CON;Ll;0;L;;;;;N;;;A76E;;A76E -A770;MODIFIER LETTER US;Lm;0;L; A76F;;;;N;;;;; -A771;LATIN SMALL LETTER DUM;Ll;0;L;;;;;N;;;;; -A772;LATIN SMALL LETTER LUM;Ll;0;L;;;;;N;;;;; -A773;LATIN SMALL LETTER MUM;Ll;0;L;;;;;N;;;;; -A774;LATIN SMALL LETTER NUM;Ll;0;L;;;;;N;;;;; -A775;LATIN SMALL LETTER RUM;Ll;0;L;;;;;N;;;;; -A776;LATIN LETTER SMALL CAPITAL RUM;Ll;0;L;;;;;N;;;;; -A777;LATIN SMALL LETTER TUM;Ll;0;L;;;;;N;;;;; -A778;LATIN SMALL LETTER UM;Ll;0;L;;;;;N;;;;; -A779;LATIN CAPITAL LETTER INSULAR D;Lu;0;L;;;;;N;;;;A77A; -A77A;LATIN SMALL LETTER INSULAR D;Ll;0;L;;;;;N;;;A779;;A779 -A77B;LATIN CAPITAL LETTER INSULAR F;Lu;0;L;;;;;N;;;;A77C; -A77C;LATIN SMALL LETTER INSULAR F;Ll;0;L;;;;;N;;;A77B;;A77B -A77D;LATIN CAPITAL LETTER INSULAR G;Lu;0;L;;;;;N;;;;1D79; -A77E;LATIN CAPITAL LETTER TURNED INSULAR G;Lu;0;L;;;;;N;;;;A77F; -A77F;LATIN SMALL LETTER TURNED INSULAR G;Ll;0;L;;;;;N;;;A77E;;A77E -A780;LATIN CAPITAL LETTER TURNED L;Lu;0;L;;;;;N;;;;A781; -A781;LATIN SMALL LETTER TURNED L;Ll;0;L;;;;;N;;;A780;;A780 -A782;LATIN CAPITAL LETTER INSULAR R;Lu;0;L;;;;;N;;;;A783; -A783;LATIN SMALL LETTER INSULAR R;Ll;0;L;;;;;N;;;A782;;A782 -A784;LATIN CAPITAL LETTER INSULAR S;Lu;0;L;;;;;N;;;;A785; -A785;LATIN SMALL LETTER INSULAR S;Ll;0;L;;;;;N;;;A784;;A784 -A786;LATIN CAPITAL LETTER INSULAR T;Lu;0;L;;;;;N;;;;A787; -A787;LATIN SMALL LETTER INSULAR T;Ll;0;L;;;;;N;;;A786;;A786 -A788;MODIFIER LETTER LOW CIRCUMFLEX ACCENT;Lm;0;ON;;;;;N;;;;; -A789;MODIFIER LETTER COLON;Sk;0;L;;;;;N;;;;; -A78A;MODIFIER LETTER SHORT EQUALS SIGN;Sk;0;L;;;;;N;;;;; -A78B;LATIN CAPITAL LETTER SALTILLO;Lu;0;L;;;;;N;;;;A78C; -A78C;LATIN SMALL LETTER SALTILLO;Ll;0;L;;;;;N;;;A78B;;A78B -A7FB;LATIN EPIGRAPHIC LETTER REVERSED F;Lo;0;L;;;;;N;;;;; -A7FC;LATIN EPIGRAPHIC LETTER REVERSED P;Lo;0;L;;;;;N;;;;; -A7FD;LATIN EPIGRAPHIC LETTER INVERTED M;Lo;0;L;;;;;N;;;;; -A7FE;LATIN EPIGRAPHIC LETTER I LONGA;Lo;0;L;;;;;N;;;;; -A7FF;LATIN EPIGRAPHIC LETTER ARCHAIC M;Lo;0;L;;;;;N;;;;; -A800;SYLOTI NAGRI LETTER A;Lo;0;L;;;;;N;;;;; -A801;SYLOTI NAGRI LETTER I;Lo;0;L;;;;;N;;;;; -A802;SYLOTI NAGRI SIGN DVISVARA;Mn;0;NSM;;;;;N;;;;; -A803;SYLOTI NAGRI LETTER U;Lo;0;L;;;;;N;;;;; -A804;SYLOTI NAGRI LETTER E;Lo;0;L;;;;;N;;;;; -A805;SYLOTI NAGRI LETTER O;Lo;0;L;;;;;N;;;;; -A806;SYLOTI NAGRI SIGN HASANTA;Mn;9;NSM;;;;;N;;;;; -A807;SYLOTI NAGRI LETTER KO;Lo;0;L;;;;;N;;;;; -A808;SYLOTI NAGRI LETTER KHO;Lo;0;L;;;;;N;;;;; -A809;SYLOTI NAGRI LETTER GO;Lo;0;L;;;;;N;;;;; -A80A;SYLOTI NAGRI LETTER GHO;Lo;0;L;;;;;N;;;;; -A80B;SYLOTI NAGRI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; -A80C;SYLOTI NAGRI LETTER CO;Lo;0;L;;;;;N;;;;; -A80D;SYLOTI NAGRI LETTER CHO;Lo;0;L;;;;;N;;;;; -A80E;SYLOTI NAGRI LETTER JO;Lo;0;L;;;;;N;;;;; -A80F;SYLOTI NAGRI LETTER JHO;Lo;0;L;;;;;N;;;;; -A810;SYLOTI NAGRI LETTER TTO;Lo;0;L;;;;;N;;;;; -A811;SYLOTI NAGRI LETTER TTHO;Lo;0;L;;;;;N;;;;; -A812;SYLOTI NAGRI LETTER DDO;Lo;0;L;;;;;N;;;;; -A813;SYLOTI NAGRI LETTER DDHO;Lo;0;L;;;;;N;;;;; -A814;SYLOTI NAGRI LETTER TO;Lo;0;L;;;;;N;;;;; -A815;SYLOTI NAGRI LETTER THO;Lo;0;L;;;;;N;;;;; -A816;SYLOTI NAGRI LETTER DO;Lo;0;L;;;;;N;;;;; -A817;SYLOTI NAGRI LETTER DHO;Lo;0;L;;;;;N;;;;; -A818;SYLOTI NAGRI LETTER NO;Lo;0;L;;;;;N;;;;; -A819;SYLOTI NAGRI LETTER PO;Lo;0;L;;;;;N;;;;; -A81A;SYLOTI NAGRI LETTER PHO;Lo;0;L;;;;;N;;;;; -A81B;SYLOTI NAGRI LETTER BO;Lo;0;L;;;;;N;;;;; -A81C;SYLOTI NAGRI LETTER BHO;Lo;0;L;;;;;N;;;;; -A81D;SYLOTI NAGRI LETTER MO;Lo;0;L;;;;;N;;;;; -A81E;SYLOTI NAGRI LETTER RO;Lo;0;L;;;;;N;;;;; -A81F;SYLOTI NAGRI LETTER LO;Lo;0;L;;;;;N;;;;; -A820;SYLOTI NAGRI LETTER RRO;Lo;0;L;;;;;N;;;;; -A821;SYLOTI NAGRI LETTER SO;Lo;0;L;;;;;N;;;;; -A822;SYLOTI NAGRI LETTER HO;Lo;0;L;;;;;N;;;;; -A823;SYLOTI NAGRI VOWEL SIGN A;Mc;0;L;;;;;N;;;;; -A824;SYLOTI NAGRI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; -A825;SYLOTI NAGRI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -A826;SYLOTI NAGRI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; -A827;SYLOTI NAGRI VOWEL SIGN OO;Mc;0;L;;;;;N;;;;; -A828;SYLOTI NAGRI POETRY MARK-1;So;0;ON;;;;;N;;;;; -A829;SYLOTI NAGRI POETRY MARK-2;So;0;ON;;;;;N;;;;; -A82A;SYLOTI NAGRI POETRY MARK-3;So;0;ON;;;;;N;;;;; -A82B;SYLOTI NAGRI POETRY MARK-4;So;0;ON;;;;;N;;;;; -A830;NORTH INDIC FRACTION ONE QUARTER;No;0;L;;;;1/4;N;;;;; -A831;NORTH INDIC FRACTION ONE HALF;No;0;L;;;;1/2;N;;;;; -A832;NORTH INDIC FRACTION THREE QUARTERS;No;0;L;;;;3/4;N;;;;; -A833;NORTH INDIC FRACTION ONE SIXTEENTH;No;0;L;;;;1/16;N;;;;; -A834;NORTH INDIC FRACTION ONE EIGHTH;No;0;L;;;;1/8;N;;;;; -A835;NORTH INDIC FRACTION THREE SIXTEENTHS;No;0;L;;;;3/16;N;;;;; -A836;NORTH INDIC QUARTER MARK;So;0;L;;;;;N;;;;; -A837;NORTH INDIC PLACEHOLDER MARK;So;0;L;;;;;N;;;;; -A838;NORTH INDIC RUPEE MARK;Sc;0;ET;;;;;N;;;;; -A839;NORTH INDIC QUANTITY MARK;So;0;ET;;;;;N;;;;; -A840;PHAGS-PA LETTER KA;Lo;0;L;;;;;N;;;;; -A841;PHAGS-PA LETTER KHA;Lo;0;L;;;;;N;;;;; -A842;PHAGS-PA LETTER GA;Lo;0;L;;;;;N;;;;; -A843;PHAGS-PA LETTER NGA;Lo;0;L;;;;;N;;;;; -A844;PHAGS-PA LETTER CA;Lo;0;L;;;;;N;;;;; -A845;PHAGS-PA LETTER CHA;Lo;0;L;;;;;N;;;;; -A846;PHAGS-PA LETTER JA;Lo;0;L;;;;;N;;;;; -A847;PHAGS-PA LETTER NYA;Lo;0;L;;;;;N;;;;; -A848;PHAGS-PA LETTER TA;Lo;0;L;;;;;N;;;;; -A849;PHAGS-PA LETTER THA;Lo;0;L;;;;;N;;;;; -A84A;PHAGS-PA LETTER DA;Lo;0;L;;;;;N;;;;; -A84B;PHAGS-PA LETTER NA;Lo;0;L;;;;;N;;;;; -A84C;PHAGS-PA LETTER PA;Lo;0;L;;;;;N;;;;; -A84D;PHAGS-PA LETTER PHA;Lo;0;L;;;;;N;;;;; -A84E;PHAGS-PA LETTER BA;Lo;0;L;;;;;N;;;;; -A84F;PHAGS-PA LETTER MA;Lo;0;L;;;;;N;;;;; -A850;PHAGS-PA LETTER TSA;Lo;0;L;;;;;N;;;;; -A851;PHAGS-PA LETTER TSHA;Lo;0;L;;;;;N;;;;; -A852;PHAGS-PA LETTER DZA;Lo;0;L;;;;;N;;;;; -A853;PHAGS-PA LETTER WA;Lo;0;L;;;;;N;;;;; -A854;PHAGS-PA LETTER ZHA;Lo;0;L;;;;;N;;;;; -A855;PHAGS-PA LETTER ZA;Lo;0;L;;;;;N;;;;; -A856;PHAGS-PA LETTER SMALL A;Lo;0;L;;;;;N;;;;; -A857;PHAGS-PA LETTER YA;Lo;0;L;;;;;N;;;;; -A858;PHAGS-PA LETTER RA;Lo;0;L;;;;;N;;;;; -A859;PHAGS-PA LETTER LA;Lo;0;L;;;;;N;;;;; -A85A;PHAGS-PA LETTER SHA;Lo;0;L;;;;;N;;;;; -A85B;PHAGS-PA LETTER SA;Lo;0;L;;;;;N;;;;; -A85C;PHAGS-PA LETTER HA;Lo;0;L;;;;;N;;;;; -A85D;PHAGS-PA LETTER A;Lo;0;L;;;;;N;;;;; -A85E;PHAGS-PA LETTER I;Lo;0;L;;;;;N;;;;; -A85F;PHAGS-PA LETTER U;Lo;0;L;;;;;N;;;;; -A860;PHAGS-PA LETTER E;Lo;0;L;;;;;N;;;;; -A861;PHAGS-PA LETTER O;Lo;0;L;;;;;N;;;;; -A862;PHAGS-PA LETTER QA;Lo;0;L;;;;;N;;;;; -A863;PHAGS-PA LETTER XA;Lo;0;L;;;;;N;;;;; -A864;PHAGS-PA LETTER FA;Lo;0;L;;;;;N;;;;; -A865;PHAGS-PA LETTER GGA;Lo;0;L;;;;;N;;;;; -A866;PHAGS-PA LETTER EE;Lo;0;L;;;;;N;;;;; -A867;PHAGS-PA SUBJOINED LETTER WA;Lo;0;L;;;;;N;;;;; -A868;PHAGS-PA SUBJOINED LETTER YA;Lo;0;L;;;;;N;;;;; -A869;PHAGS-PA LETTER TTA;Lo;0;L;;;;;N;;;;; -A86A;PHAGS-PA LETTER TTHA;Lo;0;L;;;;;N;;;;; -A86B;PHAGS-PA LETTER DDA;Lo;0;L;;;;;N;;;;; -A86C;PHAGS-PA LETTER NNA;Lo;0;L;;;;;N;;;;; -A86D;PHAGS-PA LETTER ALTERNATE YA;Lo;0;L;;;;;N;;;;; -A86E;PHAGS-PA LETTER VOICELESS SHA;Lo;0;L;;;;;N;;;;; -A86F;PHAGS-PA LETTER VOICED HA;Lo;0;L;;;;;N;;;;; -A870;PHAGS-PA LETTER ASPIRATED FA;Lo;0;L;;;;;N;;;;; -A871;PHAGS-PA SUBJOINED LETTER RA;Lo;0;L;;;;;N;;;;; -A872;PHAGS-PA SUPERFIXED LETTER RA;Lo;0;L;;;;;N;;;;; -A873;PHAGS-PA LETTER CANDRABINDU;Lo;0;L;;;;;N;;;;; -A874;PHAGS-PA SINGLE HEAD MARK;Po;0;ON;;;;;N;;;;; -A875;PHAGS-PA DOUBLE HEAD MARK;Po;0;ON;;;;;N;;;;; -A876;PHAGS-PA MARK SHAD;Po;0;ON;;;;;N;;;;; -A877;PHAGS-PA MARK DOUBLE SHAD;Po;0;ON;;;;;N;;;;; -A880;SAURASHTRA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; -A881;SAURASHTRA SIGN VISARGA;Mc;0;L;;;;;N;;;;; -A882;SAURASHTRA LETTER A;Lo;0;L;;;;;N;;;;; -A883;SAURASHTRA LETTER AA;Lo;0;L;;;;;N;;;;; -A884;SAURASHTRA LETTER I;Lo;0;L;;;;;N;;;;; -A885;SAURASHTRA LETTER II;Lo;0;L;;;;;N;;;;; -A886;SAURASHTRA LETTER U;Lo;0;L;;;;;N;;;;; -A887;SAURASHTRA LETTER UU;Lo;0;L;;;;;N;;;;; -A888;SAURASHTRA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; -A889;SAURASHTRA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; -A88A;SAURASHTRA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; -A88B;SAURASHTRA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; -A88C;SAURASHTRA LETTER E;Lo;0;L;;;;;N;;;;; -A88D;SAURASHTRA LETTER EE;Lo;0;L;;;;;N;;;;; -A88E;SAURASHTRA LETTER AI;Lo;0;L;;;;;N;;;;; -A88F;SAURASHTRA LETTER O;Lo;0;L;;;;;N;;;;; -A890;SAURASHTRA LETTER OO;Lo;0;L;;;;;N;;;;; -A891;SAURASHTRA LETTER AU;Lo;0;L;;;;;N;;;;; -A892;SAURASHTRA LETTER KA;Lo;0;L;;;;;N;;;;; -A893;SAURASHTRA LETTER KHA;Lo;0;L;;;;;N;;;;; -A894;SAURASHTRA LETTER GA;Lo;0;L;;;;;N;;;;; -A895;SAURASHTRA LETTER GHA;Lo;0;L;;;;;N;;;;; -A896;SAURASHTRA LETTER NGA;Lo;0;L;;;;;N;;;;; -A897;SAURASHTRA LETTER CA;Lo;0;L;;;;;N;;;;; -A898;SAURASHTRA LETTER CHA;Lo;0;L;;;;;N;;;;; -A899;SAURASHTRA LETTER JA;Lo;0;L;;;;;N;;;;; -A89A;SAURASHTRA LETTER JHA;Lo;0;L;;;;;N;;;;; -A89B;SAURASHTRA LETTER NYA;Lo;0;L;;;;;N;;;;; -A89C;SAURASHTRA LETTER TTA;Lo;0;L;;;;;N;;;;; -A89D;SAURASHTRA LETTER TTHA;Lo;0;L;;;;;N;;;;; -A89E;SAURASHTRA LETTER DDA;Lo;0;L;;;;;N;;;;; -A89F;SAURASHTRA LETTER DDHA;Lo;0;L;;;;;N;;;;; -A8A0;SAURASHTRA LETTER NNA;Lo;0;L;;;;;N;;;;; -A8A1;SAURASHTRA LETTER TA;Lo;0;L;;;;;N;;;;; -A8A2;SAURASHTRA LETTER THA;Lo;0;L;;;;;N;;;;; -A8A3;SAURASHTRA LETTER DA;Lo;0;L;;;;;N;;;;; -A8A4;SAURASHTRA LETTER DHA;Lo;0;L;;;;;N;;;;; -A8A5;SAURASHTRA LETTER NA;Lo;0;L;;;;;N;;;;; -A8A6;SAURASHTRA LETTER PA;Lo;0;L;;;;;N;;;;; -A8A7;SAURASHTRA LETTER PHA;Lo;0;L;;;;;N;;;;; -A8A8;SAURASHTRA LETTER BA;Lo;0;L;;;;;N;;;;; -A8A9;SAURASHTRA LETTER BHA;Lo;0;L;;;;;N;;;;; -A8AA;SAURASHTRA LETTER MA;Lo;0;L;;;;;N;;;;; -A8AB;SAURASHTRA LETTER YA;Lo;0;L;;;;;N;;;;; -A8AC;SAURASHTRA LETTER RA;Lo;0;L;;;;;N;;;;; -A8AD;SAURASHTRA LETTER LA;Lo;0;L;;;;;N;;;;; -A8AE;SAURASHTRA LETTER VA;Lo;0;L;;;;;N;;;;; -A8AF;SAURASHTRA LETTER SHA;Lo;0;L;;;;;N;;;;; -A8B0;SAURASHTRA LETTER SSA;Lo;0;L;;;;;N;;;;; -A8B1;SAURASHTRA LETTER SA;Lo;0;L;;;;;N;;;;; -A8B2;SAURASHTRA LETTER HA;Lo;0;L;;;;;N;;;;; -A8B3;SAURASHTRA LETTER LLA;Lo;0;L;;;;;N;;;;; -A8B4;SAURASHTRA CONSONANT SIGN HAARU;Mc;0;L;;;;;N;;;;; -A8B5;SAURASHTRA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -A8B6;SAURASHTRA VOWEL SIGN I;Mc;0;L;;;;;N;;;;; -A8B7;SAURASHTRA VOWEL SIGN II;Mc;0;L;;;;;N;;;;; -A8B8;SAURASHTRA VOWEL SIGN U;Mc;0;L;;;;;N;;;;; -A8B9;SAURASHTRA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; -A8BA;SAURASHTRA VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;; -A8BB;SAURASHTRA VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;; -A8BC;SAURASHTRA VOWEL SIGN VOCALIC L;Mc;0;L;;;;;N;;;;; -A8BD;SAURASHTRA VOWEL SIGN VOCALIC LL;Mc;0;L;;;;;N;;;;; -A8BE;SAURASHTRA VOWEL SIGN E;Mc;0;L;;;;;N;;;;; -A8BF;SAURASHTRA VOWEL SIGN EE;Mc;0;L;;;;;N;;;;; -A8C0;SAURASHTRA VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; -A8C1;SAURASHTRA VOWEL SIGN O;Mc;0;L;;;;;N;;;;; -A8C2;SAURASHTRA VOWEL SIGN OO;Mc;0;L;;;;;N;;;;; -A8C3;SAURASHTRA VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; -A8C4;SAURASHTRA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -A8CE;SAURASHTRA DANDA;Po;0;L;;;;;N;;;;; -A8CF;SAURASHTRA DOUBLE DANDA;Po;0;L;;;;;N;;;;; -A8D0;SAURASHTRA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -A8D1;SAURASHTRA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -A8D2;SAURASHTRA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -A8D3;SAURASHTRA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -A8D4;SAURASHTRA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -A8D5;SAURASHTRA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -A8D6;SAURASHTRA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -A8D7;SAURASHTRA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -A8D8;SAURASHTRA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -A8D9;SAURASHTRA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -A8E0;COMBINING DEVANAGARI DIGIT ZERO;Mn;230;NSM;;;;;N;;;;; -A8E1;COMBINING DEVANAGARI DIGIT ONE;Mn;230;NSM;;;;;N;;;;; -A8E2;COMBINING DEVANAGARI DIGIT TWO;Mn;230;NSM;;;;;N;;;;; -A8E3;COMBINING DEVANAGARI DIGIT THREE;Mn;230;NSM;;;;;N;;;;; -A8E4;COMBINING DEVANAGARI DIGIT FOUR;Mn;230;NSM;;;;;N;;;;; -A8E5;COMBINING DEVANAGARI DIGIT FIVE;Mn;230;NSM;;;;;N;;;;; -A8E6;COMBINING DEVANAGARI DIGIT SIX;Mn;230;NSM;;;;;N;;;;; -A8E7;COMBINING DEVANAGARI DIGIT SEVEN;Mn;230;NSM;;;;;N;;;;; -A8E8;COMBINING DEVANAGARI DIGIT EIGHT;Mn;230;NSM;;;;;N;;;;; -A8E9;COMBINING DEVANAGARI DIGIT NINE;Mn;230;NSM;;;;;N;;;;; -A8EA;COMBINING DEVANAGARI LETTER A;Mn;230;NSM;;;;;N;;;;; -A8EB;COMBINING DEVANAGARI LETTER U;Mn;230;NSM;;;;;N;;;;; -A8EC;COMBINING DEVANAGARI LETTER KA;Mn;230;NSM;;;;;N;;;;; -A8ED;COMBINING DEVANAGARI LETTER NA;Mn;230;NSM;;;;;N;;;;; -A8EE;COMBINING DEVANAGARI LETTER PA;Mn;230;NSM;;;;;N;;;;; -A8EF;COMBINING DEVANAGARI LETTER RA;Mn;230;NSM;;;;;N;;;;; -A8F0;COMBINING DEVANAGARI LETTER VI;Mn;230;NSM;;;;;N;;;;; -A8F1;COMBINING DEVANAGARI SIGN AVAGRAHA;Mn;230;NSM;;;;;N;;;;; -A8F2;DEVANAGARI SIGN SPACING CANDRABINDU;Lo;0;L;;;;;N;;;;; -A8F3;DEVANAGARI SIGN CANDRABINDU VIRAMA;Lo;0;L;;;;;N;;;;; -A8F4;DEVANAGARI SIGN DOUBLE CANDRABINDU VIRAMA;Lo;0;L;;;;;N;;;;; -A8F5;DEVANAGARI SIGN CANDRABINDU TWO;Lo;0;L;;;;;N;;;;; -A8F6;DEVANAGARI SIGN CANDRABINDU THREE;Lo;0;L;;;;;N;;;;; -A8F7;DEVANAGARI SIGN CANDRABINDU AVAGRAHA;Lo;0;L;;;;;N;;;;; -A8F8;DEVANAGARI SIGN PUSHPIKA;Po;0;L;;;;;N;;;;; -A8F9;DEVANAGARI GAP FILLER;Po;0;L;;;;;N;;;;; -A8FA;DEVANAGARI CARET;Po;0;L;;;;;N;;;;; -A8FB;DEVANAGARI HEADSTROKE;Lo;0;L;;;;;N;;;;; -A900;KAYAH LI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -A901;KAYAH LI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -A902;KAYAH LI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -A903;KAYAH LI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -A904;KAYAH LI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -A905;KAYAH LI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -A906;KAYAH LI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -A907;KAYAH LI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -A908;KAYAH LI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -A909;KAYAH LI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -A90A;KAYAH LI LETTER KA;Lo;0;L;;;;;N;;;;; -A90B;KAYAH LI LETTER KHA;Lo;0;L;;;;;N;;;;; -A90C;KAYAH LI LETTER GA;Lo;0;L;;;;;N;;;;; -A90D;KAYAH LI LETTER NGA;Lo;0;L;;;;;N;;;;; -A90E;KAYAH LI LETTER SA;Lo;0;L;;;;;N;;;;; -A90F;KAYAH LI LETTER SHA;Lo;0;L;;;;;N;;;;; -A910;KAYAH LI LETTER ZA;Lo;0;L;;;;;N;;;;; -A911;KAYAH LI LETTER NYA;Lo;0;L;;;;;N;;;;; -A912;KAYAH LI LETTER TA;Lo;0;L;;;;;N;;;;; -A913;KAYAH LI LETTER HTA;Lo;0;L;;;;;N;;;;; -A914;KAYAH LI LETTER NA;Lo;0;L;;;;;N;;;;; -A915;KAYAH LI LETTER PA;Lo;0;L;;;;;N;;;;; -A916;KAYAH LI LETTER PHA;Lo;0;L;;;;;N;;;;; -A917;KAYAH LI LETTER MA;Lo;0;L;;;;;N;;;;; -A918;KAYAH LI LETTER DA;Lo;0;L;;;;;N;;;;; -A919;KAYAH LI LETTER BA;Lo;0;L;;;;;N;;;;; -A91A;KAYAH LI LETTER RA;Lo;0;L;;;;;N;;;;; -A91B;KAYAH LI LETTER YA;Lo;0;L;;;;;N;;;;; -A91C;KAYAH LI LETTER LA;Lo;0;L;;;;;N;;;;; -A91D;KAYAH LI LETTER WA;Lo;0;L;;;;;N;;;;; -A91E;KAYAH LI LETTER THA;Lo;0;L;;;;;N;;;;; -A91F;KAYAH LI LETTER HA;Lo;0;L;;;;;N;;;;; -A920;KAYAH LI LETTER VA;Lo;0;L;;;;;N;;;;; -A921;KAYAH LI LETTER CA;Lo;0;L;;;;;N;;;;; -A922;KAYAH LI LETTER A;Lo;0;L;;;;;N;;;;; -A923;KAYAH LI LETTER OE;Lo;0;L;;;;;N;;;;; -A924;KAYAH LI LETTER I;Lo;0;L;;;;;N;;;;; -A925;KAYAH LI LETTER OO;Lo;0;L;;;;;N;;;;; -A926;KAYAH LI VOWEL UE;Mn;0;NSM;;;;;N;;;;; -A927;KAYAH LI VOWEL E;Mn;0;NSM;;;;;N;;;;; -A928;KAYAH LI VOWEL U;Mn;0;NSM;;;;;N;;;;; -A929;KAYAH LI VOWEL EE;Mn;0;NSM;;;;;N;;;;; -A92A;KAYAH LI VOWEL O;Mn;0;NSM;;;;;N;;;;; -A92B;KAYAH LI TONE PLOPHU;Mn;220;NSM;;;;;N;;;;; -A92C;KAYAH LI TONE CALYA;Mn;220;NSM;;;;;N;;;;; -A92D;KAYAH LI TONE CALYA PLOPHU;Mn;220;NSM;;;;;N;;;;; -A92E;KAYAH LI SIGN CWI;Po;0;L;;;;;N;;;;; -A92F;KAYAH LI SIGN SHYA;Po;0;L;;;;;N;;;;; -A930;REJANG LETTER KA;Lo;0;L;;;;;N;;;;; -A931;REJANG LETTER GA;Lo;0;L;;;;;N;;;;; -A932;REJANG LETTER NGA;Lo;0;L;;;;;N;;;;; -A933;REJANG LETTER TA;Lo;0;L;;;;;N;;;;; -A934;REJANG LETTER DA;Lo;0;L;;;;;N;;;;; -A935;REJANG LETTER NA;Lo;0;L;;;;;N;;;;; -A936;REJANG LETTER PA;Lo;0;L;;;;;N;;;;; -A937;REJANG LETTER BA;Lo;0;L;;;;;N;;;;; -A938;REJANG LETTER MA;Lo;0;L;;;;;N;;;;; -A939;REJANG LETTER CA;Lo;0;L;;;;;N;;;;; -A93A;REJANG LETTER JA;Lo;0;L;;;;;N;;;;; -A93B;REJANG LETTER NYA;Lo;0;L;;;;;N;;;;; -A93C;REJANG LETTER SA;Lo;0;L;;;;;N;;;;; -A93D;REJANG LETTER RA;Lo;0;L;;;;;N;;;;; -A93E;REJANG LETTER LA;Lo;0;L;;;;;N;;;;; -A93F;REJANG LETTER YA;Lo;0;L;;;;;N;;;;; -A940;REJANG LETTER WA;Lo;0;L;;;;;N;;;;; -A941;REJANG LETTER HA;Lo;0;L;;;;;N;;;;; -A942;REJANG LETTER MBA;Lo;0;L;;;;;N;;;;; -A943;REJANG LETTER NGGA;Lo;0;L;;;;;N;;;;; -A944;REJANG LETTER NDA;Lo;0;L;;;;;N;;;;; -A945;REJANG LETTER NYJA;Lo;0;L;;;;;N;;;;; -A946;REJANG LETTER A;Lo;0;L;;;;;N;;;;; -A947;REJANG VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -A948;REJANG VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -A949;REJANG VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; -A94A;REJANG VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; -A94B;REJANG VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;; -A94C;REJANG VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;; -A94D;REJANG VOWEL SIGN EU;Mn;0;NSM;;;;;N;;;;; -A94E;REJANG VOWEL SIGN EA;Mn;0;NSM;;;;;N;;;;; -A94F;REJANG CONSONANT SIGN NG;Mn;0;NSM;;;;;N;;;;; -A950;REJANG CONSONANT SIGN N;Mn;0;NSM;;;;;N;;;;; -A951;REJANG CONSONANT SIGN R;Mn;0;NSM;;;;;N;;;;; -A952;REJANG CONSONANT SIGN H;Mc;0;L;;;;;N;;;;; -A953;REJANG VIRAMA;Mc;9;L;;;;;N;;;;; -A95F;REJANG SECTION MARK;Po;0;L;;;;;N;;;;; -A960;HANGUL CHOSEONG TIKEUT-MIEUM;Lo;0;L;;;;;N;;;;; -A961;HANGUL CHOSEONG TIKEUT-PIEUP;Lo;0;L;;;;;N;;;;; -A962;HANGUL CHOSEONG TIKEUT-SIOS;Lo;0;L;;;;;N;;;;; -A963;HANGUL CHOSEONG TIKEUT-CIEUC;Lo;0;L;;;;;N;;;;; -A964;HANGUL CHOSEONG RIEUL-KIYEOK;Lo;0;L;;;;;N;;;;; -A965;HANGUL CHOSEONG RIEUL-SSANGKIYEOK;Lo;0;L;;;;;N;;;;; -A966;HANGUL CHOSEONG RIEUL-TIKEUT;Lo;0;L;;;;;N;;;;; -A967;HANGUL CHOSEONG RIEUL-SSANGTIKEUT;Lo;0;L;;;;;N;;;;; -A968;HANGUL CHOSEONG RIEUL-MIEUM;Lo;0;L;;;;;N;;;;; -A969;HANGUL CHOSEONG RIEUL-PIEUP;Lo;0;L;;;;;N;;;;; -A96A;HANGUL CHOSEONG RIEUL-SSANGPIEUP;Lo;0;L;;;;;N;;;;; -A96B;HANGUL CHOSEONG RIEUL-KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;; -A96C;HANGUL CHOSEONG RIEUL-SIOS;Lo;0;L;;;;;N;;;;; -A96D;HANGUL CHOSEONG RIEUL-CIEUC;Lo;0;L;;;;;N;;;;; -A96E;HANGUL CHOSEONG RIEUL-KHIEUKH;Lo;0;L;;;;;N;;;;; -A96F;HANGUL CHOSEONG MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;; -A970;HANGUL CHOSEONG MIEUM-TIKEUT;Lo;0;L;;;;;N;;;;; -A971;HANGUL CHOSEONG MIEUM-SIOS;Lo;0;L;;;;;N;;;;; -A972;HANGUL CHOSEONG PIEUP-SIOS-THIEUTH;Lo;0;L;;;;;N;;;;; -A973;HANGUL CHOSEONG PIEUP-KHIEUKH;Lo;0;L;;;;;N;;;;; -A974;HANGUL CHOSEONG PIEUP-HIEUH;Lo;0;L;;;;;N;;;;; -A975;HANGUL CHOSEONG SSANGSIOS-PIEUP;Lo;0;L;;;;;N;;;;; -A976;HANGUL CHOSEONG IEUNG-RIEUL;Lo;0;L;;;;;N;;;;; -A977;HANGUL CHOSEONG IEUNG-HIEUH;Lo;0;L;;;;;N;;;;; -A978;HANGUL CHOSEONG SSANGCIEUC-HIEUH;Lo;0;L;;;;;N;;;;; -A979;HANGUL CHOSEONG SSANGTHIEUTH;Lo;0;L;;;;;N;;;;; -A97A;HANGUL CHOSEONG PHIEUPH-HIEUH;Lo;0;L;;;;;N;;;;; -A97B;HANGUL CHOSEONG HIEUH-SIOS;Lo;0;L;;;;;N;;;;; -A97C;HANGUL CHOSEONG SSANGYEORINHIEUH;Lo;0;L;;;;;N;;;;; -A980;JAVANESE SIGN PANYANGGA;Mn;0;NSM;;;;;N;;;;; -A981;JAVANESE SIGN CECAK;Mn;0;NSM;;;;;N;;;;; -A982;JAVANESE SIGN LAYAR;Mn;0;NSM;;;;;N;;;;; -A983;JAVANESE SIGN WIGNYAN;Mc;0;L;;;;;N;;;;; -A984;JAVANESE LETTER A;Lo;0;L;;;;;N;;;;; -A985;JAVANESE LETTER I KAWI;Lo;0;L;;;;;N;;;;; -A986;JAVANESE LETTER I;Lo;0;L;;;;;N;;;;; -A987;JAVANESE LETTER II;Lo;0;L;;;;;N;;;;; -A988;JAVANESE LETTER U;Lo;0;L;;;;;N;;;;; -A989;JAVANESE LETTER PA CEREK;Lo;0;L;;;;;N;;;;; -A98A;JAVANESE LETTER NGA LELET;Lo;0;L;;;;;N;;;;; -A98B;JAVANESE LETTER NGA LELET RASWADI;Lo;0;L;;;;;N;;;;; -A98C;JAVANESE LETTER E;Lo;0;L;;;;;N;;;;; -A98D;JAVANESE LETTER AI;Lo;0;L;;;;;N;;;;; -A98E;JAVANESE LETTER O;Lo;0;L;;;;;N;;;;; -A98F;JAVANESE LETTER KA;Lo;0;L;;;;;N;;;;; -A990;JAVANESE LETTER KA SASAK;Lo;0;L;;;;;N;;;;; -A991;JAVANESE LETTER KA MURDA;Lo;0;L;;;;;N;;;;; -A992;JAVANESE LETTER GA;Lo;0;L;;;;;N;;;;; -A993;JAVANESE LETTER GA MURDA;Lo;0;L;;;;;N;;;;; -A994;JAVANESE LETTER NGA;Lo;0;L;;;;;N;;;;; -A995;JAVANESE LETTER CA;Lo;0;L;;;;;N;;;;; -A996;JAVANESE LETTER CA MURDA;Lo;0;L;;;;;N;;;;; -A997;JAVANESE LETTER JA;Lo;0;L;;;;;N;;;;; -A998;JAVANESE LETTER NYA MURDA;Lo;0;L;;;;;N;;;;; -A999;JAVANESE LETTER JA MAHAPRANA;Lo;0;L;;;;;N;;;;; -A99A;JAVANESE LETTER NYA;Lo;0;L;;;;;N;;;;; -A99B;JAVANESE LETTER TTA;Lo;0;L;;;;;N;;;;; -A99C;JAVANESE LETTER TTA MAHAPRANA;Lo;0;L;;;;;N;;;;; -A99D;JAVANESE LETTER DDA;Lo;0;L;;;;;N;;;;; -A99E;JAVANESE LETTER DDA MAHAPRANA;Lo;0;L;;;;;N;;;;; -A99F;JAVANESE LETTER NA MURDA;Lo;0;L;;;;;N;;;;; -A9A0;JAVANESE LETTER TA;Lo;0;L;;;;;N;;;;; -A9A1;JAVANESE LETTER TA MURDA;Lo;0;L;;;;;N;;;;; -A9A2;JAVANESE LETTER DA;Lo;0;L;;;;;N;;;;; -A9A3;JAVANESE LETTER DA MAHAPRANA;Lo;0;L;;;;;N;;;;; -A9A4;JAVANESE LETTER NA;Lo;0;L;;;;;N;;;;; -A9A5;JAVANESE LETTER PA;Lo;0;L;;;;;N;;;;; -A9A6;JAVANESE LETTER PA MURDA;Lo;0;L;;;;;N;;;;; -A9A7;JAVANESE LETTER BA;Lo;0;L;;;;;N;;;;; -A9A8;JAVANESE LETTER BA MURDA;Lo;0;L;;;;;N;;;;; -A9A9;JAVANESE LETTER MA;Lo;0;L;;;;;N;;;;; -A9AA;JAVANESE LETTER YA;Lo;0;L;;;;;N;;;;; -A9AB;JAVANESE LETTER RA;Lo;0;L;;;;;N;;;;; -A9AC;JAVANESE LETTER RA AGUNG;Lo;0;L;;;;;N;;;;; -A9AD;JAVANESE LETTER LA;Lo;0;L;;;;;N;;;;; -A9AE;JAVANESE LETTER WA;Lo;0;L;;;;;N;;;;; -A9AF;JAVANESE LETTER SA MURDA;Lo;0;L;;;;;N;;;;; -A9B0;JAVANESE LETTER SA MAHAPRANA;Lo;0;L;;;;;N;;;;; -A9B1;JAVANESE LETTER SA;Lo;0;L;;;;;N;;;;; -A9B2;JAVANESE LETTER HA;Lo;0;L;;;;;N;;;;; -A9B3;JAVANESE SIGN CECAK TELU;Mn;7;NSM;;;;;N;;;;; -A9B4;JAVANESE VOWEL SIGN TARUNG;Mc;0;L;;;;;N;;;;; -A9B5;JAVANESE VOWEL SIGN TOLONG;Mc;0;L;;;;;N;;;;; -A9B6;JAVANESE VOWEL SIGN WULU;Mn;0;NSM;;;;;N;;;;; -A9B7;JAVANESE VOWEL SIGN WULU MELIK;Mn;0;NSM;;;;;N;;;;; -A9B8;JAVANESE VOWEL SIGN SUKU;Mn;0;NSM;;;;;N;;;;; -A9B9;JAVANESE VOWEL SIGN SUKU MENDUT;Mn;0;NSM;;;;;N;;;;; -A9BA;JAVANESE VOWEL SIGN TALING;Mc;0;L;;;;;N;;;;; -A9BB;JAVANESE VOWEL SIGN DIRGA MURE;Mc;0;L;;;;;N;;;;; -A9BC;JAVANESE VOWEL SIGN PEPET;Mn;0;NSM;;;;;N;;;;; -A9BD;JAVANESE CONSONANT SIGN KERET;Mc;0;L;;;;;N;;;;; -A9BE;JAVANESE CONSONANT SIGN PENGKAL;Mc;0;L;;;;;N;;;;; -A9BF;JAVANESE CONSONANT SIGN CAKRA;Mc;0;L;;;;;N;;;;; -A9C0;JAVANESE PANGKON;Mc;9;L;;;;;N;;;;; -A9C1;JAVANESE LEFT RERENGGAN;Po;0;L;;;;;N;;;;; -A9C2;JAVANESE RIGHT RERENGGAN;Po;0;L;;;;;N;;;;; -A9C3;JAVANESE PADA ANDAP;Po;0;L;;;;;N;;;;; -A9C4;JAVANESE PADA MADYA;Po;0;L;;;;;N;;;;; -A9C5;JAVANESE PADA LUHUR;Po;0;L;;;;;N;;;;; -A9C6;JAVANESE PADA WINDU;Po;0;L;;;;;N;;;;; -A9C7;JAVANESE PADA PANGKAT;Po;0;L;;;;;N;;;;; -A9C8;JAVANESE PADA LINGSA;Po;0;L;;;;;N;;;;; -A9C9;JAVANESE PADA LUNGSI;Po;0;L;;;;;N;;;;; -A9CA;JAVANESE PADA ADEG;Po;0;L;;;;;N;;;;; -A9CB;JAVANESE PADA ADEG ADEG;Po;0;L;;;;;N;;;;; -A9CC;JAVANESE PADA PISELEH;Po;0;L;;;;;N;;;;; -A9CD;JAVANESE TURNED PADA PISELEH;Po;0;L;;;;;N;;;;; -A9CF;JAVANESE PANGRANGKEP;Lm;0;L;;;;;N;;;;; -A9D0;JAVANESE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -A9D1;JAVANESE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -A9D2;JAVANESE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -A9D3;JAVANESE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -A9D4;JAVANESE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -A9D5;JAVANESE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -A9D6;JAVANESE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -A9D7;JAVANESE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -A9D8;JAVANESE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -A9D9;JAVANESE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -A9DE;JAVANESE PADA TIRTA TUMETES;Po;0;L;;;;;N;;;;; -A9DF;JAVANESE PADA ISEN-ISEN;Po;0;L;;;;;N;;;;; -AA00;CHAM LETTER A;Lo;0;L;;;;;N;;;;; -AA01;CHAM LETTER I;Lo;0;L;;;;;N;;;;; -AA02;CHAM LETTER U;Lo;0;L;;;;;N;;;;; -AA03;CHAM LETTER E;Lo;0;L;;;;;N;;;;; -AA04;CHAM LETTER AI;Lo;0;L;;;;;N;;;;; -AA05;CHAM LETTER O;Lo;0;L;;;;;N;;;;; -AA06;CHAM LETTER KA;Lo;0;L;;;;;N;;;;; -AA07;CHAM LETTER KHA;Lo;0;L;;;;;N;;;;; -AA08;CHAM LETTER GA;Lo;0;L;;;;;N;;;;; -AA09;CHAM LETTER GHA;Lo;0;L;;;;;N;;;;; -AA0A;CHAM LETTER NGUE;Lo;0;L;;;;;N;;;;; -AA0B;CHAM LETTER NGA;Lo;0;L;;;;;N;;;;; -AA0C;CHAM LETTER CHA;Lo;0;L;;;;;N;;;;; -AA0D;CHAM LETTER CHHA;Lo;0;L;;;;;N;;;;; -AA0E;CHAM LETTER JA;Lo;0;L;;;;;N;;;;; -AA0F;CHAM LETTER JHA;Lo;0;L;;;;;N;;;;; -AA10;CHAM LETTER NHUE;Lo;0;L;;;;;N;;;;; -AA11;CHAM LETTER NHA;Lo;0;L;;;;;N;;;;; -AA12;CHAM LETTER NHJA;Lo;0;L;;;;;N;;;;; -AA13;CHAM LETTER TA;Lo;0;L;;;;;N;;;;; -AA14;CHAM LETTER THA;Lo;0;L;;;;;N;;;;; -AA15;CHAM LETTER DA;Lo;0;L;;;;;N;;;;; -AA16;CHAM LETTER DHA;Lo;0;L;;;;;N;;;;; -AA17;CHAM LETTER NUE;Lo;0;L;;;;;N;;;;; -AA18;CHAM LETTER NA;Lo;0;L;;;;;N;;;;; -AA19;CHAM LETTER DDA;Lo;0;L;;;;;N;;;;; -AA1A;CHAM LETTER PA;Lo;0;L;;;;;N;;;;; -AA1B;CHAM LETTER PPA;Lo;0;L;;;;;N;;;;; -AA1C;CHAM LETTER PHA;Lo;0;L;;;;;N;;;;; -AA1D;CHAM LETTER BA;Lo;0;L;;;;;N;;;;; -AA1E;CHAM LETTER BHA;Lo;0;L;;;;;N;;;;; -AA1F;CHAM LETTER MUE;Lo;0;L;;;;;N;;;;; -AA20;CHAM LETTER MA;Lo;0;L;;;;;N;;;;; -AA21;CHAM LETTER BBA;Lo;0;L;;;;;N;;;;; -AA22;CHAM LETTER YA;Lo;0;L;;;;;N;;;;; -AA23;CHAM LETTER RA;Lo;0;L;;;;;N;;;;; -AA24;CHAM LETTER LA;Lo;0;L;;;;;N;;;;; -AA25;CHAM LETTER VA;Lo;0;L;;;;;N;;;;; -AA26;CHAM LETTER SSA;Lo;0;L;;;;;N;;;;; -AA27;CHAM LETTER SA;Lo;0;L;;;;;N;;;;; -AA28;CHAM LETTER HA;Lo;0;L;;;;;N;;;;; -AA29;CHAM VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;; -AA2A;CHAM VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -AA2B;CHAM VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; -AA2C;CHAM VOWEL SIGN EI;Mn;0;NSM;;;;;N;;;;; -AA2D;CHAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -AA2E;CHAM VOWEL SIGN OE;Mn;0;NSM;;;;;N;;;;; -AA2F;CHAM VOWEL SIGN O;Mc;0;L;;;;;N;;;;; -AA30;CHAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; -AA31;CHAM VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;; -AA32;CHAM VOWEL SIGN UE;Mn;0;NSM;;;;;N;;;;; -AA33;CHAM CONSONANT SIGN YA;Mc;0;L;;;;;N;;;;; -AA34;CHAM CONSONANT SIGN RA;Mc;0;L;;;;;N;;;;; -AA35;CHAM CONSONANT SIGN LA;Mn;0;NSM;;;;;N;;;;; -AA36;CHAM CONSONANT SIGN WA;Mn;0;NSM;;;;;N;;;;; -AA40;CHAM LETTER FINAL K;Lo;0;L;;;;;N;;;;; -AA41;CHAM LETTER FINAL G;Lo;0;L;;;;;N;;;;; -AA42;CHAM LETTER FINAL NG;Lo;0;L;;;;;N;;;;; -AA43;CHAM CONSONANT SIGN FINAL NG;Mn;0;NSM;;;;;N;;;;; -AA44;CHAM LETTER FINAL CH;Lo;0;L;;;;;N;;;;; -AA45;CHAM LETTER FINAL T;Lo;0;L;;;;;N;;;;; -AA46;CHAM LETTER FINAL N;Lo;0;L;;;;;N;;;;; -AA47;CHAM LETTER FINAL P;Lo;0;L;;;;;N;;;;; -AA48;CHAM LETTER FINAL Y;Lo;0;L;;;;;N;;;;; -AA49;CHAM LETTER FINAL R;Lo;0;L;;;;;N;;;;; -AA4A;CHAM LETTER FINAL L;Lo;0;L;;;;;N;;;;; -AA4B;CHAM LETTER FINAL SS;Lo;0;L;;;;;N;;;;; -AA4C;CHAM CONSONANT SIGN FINAL M;Mn;0;NSM;;;;;N;;;;; -AA4D;CHAM CONSONANT SIGN FINAL H;Mc;0;L;;;;;N;;;;; -AA50;CHAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -AA51;CHAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -AA52;CHAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -AA53;CHAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -AA54;CHAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -AA55;CHAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -AA56;CHAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -AA57;CHAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -AA58;CHAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -AA59;CHAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -AA5C;CHAM PUNCTUATION SPIRAL;Po;0;L;;;;;N;;;;; -AA5D;CHAM PUNCTUATION DANDA;Po;0;L;;;;;N;;;;; -AA5E;CHAM PUNCTUATION DOUBLE DANDA;Po;0;L;;;;;N;;;;; -AA5F;CHAM PUNCTUATION TRIPLE DANDA;Po;0;L;;;;;N;;;;; -AA60;MYANMAR LETTER KHAMTI GA;Lo;0;L;;;;;N;;;;; -AA61;MYANMAR LETTER KHAMTI CA;Lo;0;L;;;;;N;;;;; -AA62;MYANMAR LETTER KHAMTI CHA;Lo;0;L;;;;;N;;;;; -AA63;MYANMAR LETTER KHAMTI JA;Lo;0;L;;;;;N;;;;; -AA64;MYANMAR LETTER KHAMTI JHA;Lo;0;L;;;;;N;;;;; -AA65;MYANMAR LETTER KHAMTI NYA;Lo;0;L;;;;;N;;;;; -AA66;MYANMAR LETTER KHAMTI TTA;Lo;0;L;;;;;N;;;;; -AA67;MYANMAR LETTER KHAMTI TTHA;Lo;0;L;;;;;N;;;;; -AA68;MYANMAR LETTER KHAMTI DDA;Lo;0;L;;;;;N;;;;; -AA69;MYANMAR LETTER KHAMTI DDHA;Lo;0;L;;;;;N;;;;; -AA6A;MYANMAR LETTER KHAMTI DHA;Lo;0;L;;;;;N;;;;; -AA6B;MYANMAR LETTER KHAMTI NA;Lo;0;L;;;;;N;;;;; -AA6C;MYANMAR LETTER KHAMTI SA;Lo;0;L;;;;;N;;;;; -AA6D;MYANMAR LETTER KHAMTI HA;Lo;0;L;;;;;N;;;;; -AA6E;MYANMAR LETTER KHAMTI HHA;Lo;0;L;;;;;N;;;;; -AA6F;MYANMAR LETTER KHAMTI FA;Lo;0;L;;;;;N;;;;; -AA70;MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION;Lm;0;L;;;;;N;;;;; -AA71;MYANMAR LETTER KHAMTI XA;Lo;0;L;;;;;N;;;;; -AA72;MYANMAR LETTER KHAMTI ZA;Lo;0;L;;;;;N;;;;; -AA73;MYANMAR LETTER KHAMTI RA;Lo;0;L;;;;;N;;;;; -AA74;MYANMAR LOGOGRAM KHAMTI OAY;Lo;0;L;;;;;N;;;;; -AA75;MYANMAR LOGOGRAM KHAMTI QN;Lo;0;L;;;;;N;;;;; -AA76;MYANMAR LOGOGRAM KHAMTI HM;Lo;0;L;;;;;N;;;;; -AA77;MYANMAR SYMBOL AITON EXCLAMATION;So;0;L;;;;;N;;;;; -AA78;MYANMAR SYMBOL AITON ONE;So;0;L;;;;;N;;;;; -AA79;MYANMAR SYMBOL AITON TWO;So;0;L;;;;;N;;;;; -AA7A;MYANMAR LETTER AITON RA;Lo;0;L;;;;;N;;;;; -AA7B;MYANMAR SIGN PAO KAREN TONE;Mc;0;L;;;;;N;;;;; -AA80;TAI VIET LETTER LOW KO;Lo;0;L;;;;;N;;;;; -AA81;TAI VIET LETTER HIGH KO;Lo;0;L;;;;;N;;;;; -AA82;TAI VIET LETTER LOW KHO;Lo;0;L;;;;;N;;;;; -AA83;TAI VIET LETTER HIGH KHO;Lo;0;L;;;;;N;;;;; -AA84;TAI VIET LETTER LOW KHHO;Lo;0;L;;;;;N;;;;; -AA85;TAI VIET LETTER HIGH KHHO;Lo;0;L;;;;;N;;;;; -AA86;TAI VIET LETTER LOW GO;Lo;0;L;;;;;N;;;;; -AA87;TAI VIET LETTER HIGH GO;Lo;0;L;;;;;N;;;;; -AA88;TAI VIET LETTER LOW NGO;Lo;0;L;;;;;N;;;;; -AA89;TAI VIET LETTER HIGH NGO;Lo;0;L;;;;;N;;;;; -AA8A;TAI VIET LETTER LOW CO;Lo;0;L;;;;;N;;;;; -AA8B;TAI VIET LETTER HIGH CO;Lo;0;L;;;;;N;;;;; -AA8C;TAI VIET LETTER LOW CHO;Lo;0;L;;;;;N;;;;; -AA8D;TAI VIET LETTER HIGH CHO;Lo;0;L;;;;;N;;;;; -AA8E;TAI VIET LETTER LOW SO;Lo;0;L;;;;;N;;;;; -AA8F;TAI VIET LETTER HIGH SO;Lo;0;L;;;;;N;;;;; -AA90;TAI VIET LETTER LOW NYO;Lo;0;L;;;;;N;;;;; -AA91;TAI VIET LETTER HIGH NYO;Lo;0;L;;;;;N;;;;; -AA92;TAI VIET LETTER LOW DO;Lo;0;L;;;;;N;;;;; -AA93;TAI VIET LETTER HIGH DO;Lo;0;L;;;;;N;;;;; -AA94;TAI VIET LETTER LOW TO;Lo;0;L;;;;;N;;;;; -AA95;TAI VIET LETTER HIGH TO;Lo;0;L;;;;;N;;;;; -AA96;TAI VIET LETTER LOW THO;Lo;0;L;;;;;N;;;;; -AA97;TAI VIET LETTER HIGH THO;Lo;0;L;;;;;N;;;;; -AA98;TAI VIET LETTER LOW NO;Lo;0;L;;;;;N;;;;; -AA99;TAI VIET LETTER HIGH NO;Lo;0;L;;;;;N;;;;; -AA9A;TAI VIET LETTER LOW BO;Lo;0;L;;;;;N;;;;; -AA9B;TAI VIET LETTER HIGH BO;Lo;0;L;;;;;N;;;;; -AA9C;TAI VIET LETTER LOW PO;Lo;0;L;;;;;N;;;;; -AA9D;TAI VIET LETTER HIGH PO;Lo;0;L;;;;;N;;;;; -AA9E;TAI VIET LETTER LOW PHO;Lo;0;L;;;;;N;;;;; -AA9F;TAI VIET LETTER HIGH PHO;Lo;0;L;;;;;N;;;;; -AAA0;TAI VIET LETTER LOW FO;Lo;0;L;;;;;N;;;;; -AAA1;TAI VIET LETTER HIGH FO;Lo;0;L;;;;;N;;;;; -AAA2;TAI VIET LETTER LOW MO;Lo;0;L;;;;;N;;;;; -AAA3;TAI VIET LETTER HIGH MO;Lo;0;L;;;;;N;;;;; -AAA4;TAI VIET LETTER LOW YO;Lo;0;L;;;;;N;;;;; -AAA5;TAI VIET LETTER HIGH YO;Lo;0;L;;;;;N;;;;; -AAA6;TAI VIET LETTER LOW RO;Lo;0;L;;;;;N;;;;; -AAA7;TAI VIET LETTER HIGH RO;Lo;0;L;;;;;N;;;;; -AAA8;TAI VIET LETTER LOW LO;Lo;0;L;;;;;N;;;;; -AAA9;TAI VIET LETTER HIGH LO;Lo;0;L;;;;;N;;;;; -AAAA;TAI VIET LETTER LOW VO;Lo;0;L;;;;;N;;;;; -AAAB;TAI VIET LETTER HIGH VO;Lo;0;L;;;;;N;;;;; -AAAC;TAI VIET LETTER LOW HO;Lo;0;L;;;;;N;;;;; -AAAD;TAI VIET LETTER HIGH HO;Lo;0;L;;;;;N;;;;; -AAAE;TAI VIET LETTER LOW O;Lo;0;L;;;;;N;;;;; -AAAF;TAI VIET LETTER HIGH O;Lo;0;L;;;;;N;;;;; -AAB0;TAI VIET MAI KANG;Mn;230;NSM;;;;;N;;;;; -AAB1;TAI VIET VOWEL AA;Lo;0;L;;;;;N;;;;; -AAB2;TAI VIET VOWEL I;Mn;230;NSM;;;;;N;;;;; -AAB3;TAI VIET VOWEL UE;Mn;230;NSM;;;;;N;;;;; -AAB4;TAI VIET VOWEL U;Mn;220;NSM;;;;;N;;;;; -AAB5;TAI VIET VOWEL E;Lo;0;L;;;;;N;;;;; -AAB6;TAI VIET VOWEL O;Lo;0;L;;;;;N;;;;; -AAB7;TAI VIET MAI KHIT;Mn;230;NSM;;;;;N;;;;; -AAB8;TAI VIET VOWEL IA;Mn;230;NSM;;;;;N;;;;; -AAB9;TAI VIET VOWEL UEA;Lo;0;L;;;;;N;;;;; -AABA;TAI VIET VOWEL UA;Lo;0;L;;;;;N;;;;; -AABB;TAI VIET VOWEL AUE;Lo;0;L;;;;;N;;;;; -AABC;TAI VIET VOWEL AY;Lo;0;L;;;;;N;;;;; -AABD;TAI VIET VOWEL AN;Lo;0;L;;;;;N;;;;; -AABE;TAI VIET VOWEL AM;Mn;230;NSM;;;;;N;;;;; -AABF;TAI VIET TONE MAI EK;Mn;230;NSM;;;;;N;;;;; -AAC0;TAI VIET TONE MAI NUENG;Lo;0;L;;;;;N;;;;; -AAC1;TAI VIET TONE MAI THO;Mn;230;NSM;;;;;N;;;;; -AAC2;TAI VIET TONE MAI SONG;Lo;0;L;;;;;N;;;;; -AADB;TAI VIET SYMBOL KON;Lo;0;L;;;;;N;;;;; -AADC;TAI VIET SYMBOL NUENG;Lo;0;L;;;;;N;;;;; -AADD;TAI VIET SYMBOL SAM;Lm;0;L;;;;;N;;;;; -AADE;TAI VIET SYMBOL HO HOI;Po;0;L;;;;;N;;;;; -AADF;TAI VIET SYMBOL KOI KOI;Po;0;L;;;;;N;;;;; -ABC0;MEETEI MAYEK LETTER KOK;Lo;0;L;;;;;N;;;;; -ABC1;MEETEI MAYEK LETTER SAM;Lo;0;L;;;;;N;;;;; -ABC2;MEETEI MAYEK LETTER LAI;Lo;0;L;;;;;N;;;;; -ABC3;MEETEI MAYEK LETTER MIT;Lo;0;L;;;;;N;;;;; -ABC4;MEETEI MAYEK LETTER PA;Lo;0;L;;;;;N;;;;; -ABC5;MEETEI MAYEK LETTER NA;Lo;0;L;;;;;N;;;;; -ABC6;MEETEI MAYEK LETTER CHIL;Lo;0;L;;;;;N;;;;; -ABC7;MEETEI MAYEK LETTER TIL;Lo;0;L;;;;;N;;;;; -ABC8;MEETEI MAYEK LETTER KHOU;Lo;0;L;;;;;N;;;;; -ABC9;MEETEI MAYEK LETTER NGOU;Lo;0;L;;;;;N;;;;; -ABCA;MEETEI MAYEK LETTER THOU;Lo;0;L;;;;;N;;;;; -ABCB;MEETEI MAYEK LETTER WAI;Lo;0;L;;;;;N;;;;; -ABCC;MEETEI MAYEK LETTER YANG;Lo;0;L;;;;;N;;;;; -ABCD;MEETEI MAYEK LETTER HUK;Lo;0;L;;;;;N;;;;; -ABCE;MEETEI MAYEK LETTER UN;Lo;0;L;;;;;N;;;;; -ABCF;MEETEI MAYEK LETTER I;Lo;0;L;;;;;N;;;;; -ABD0;MEETEI MAYEK LETTER PHAM;Lo;0;L;;;;;N;;;;; -ABD1;MEETEI MAYEK LETTER ATIYA;Lo;0;L;;;;;N;;;;; -ABD2;MEETEI MAYEK LETTER GOK;Lo;0;L;;;;;N;;;;; -ABD3;MEETEI MAYEK LETTER JHAM;Lo;0;L;;;;;N;;;;; -ABD4;MEETEI MAYEK LETTER RAI;Lo;0;L;;;;;N;;;;; -ABD5;MEETEI MAYEK LETTER BA;Lo;0;L;;;;;N;;;;; -ABD6;MEETEI MAYEK LETTER JIL;Lo;0;L;;;;;N;;;;; -ABD7;MEETEI MAYEK LETTER DIL;Lo;0;L;;;;;N;;;;; -ABD8;MEETEI MAYEK LETTER GHOU;Lo;0;L;;;;;N;;;;; -ABD9;MEETEI MAYEK LETTER DHOU;Lo;0;L;;;;;N;;;;; -ABDA;MEETEI MAYEK LETTER BHAM;Lo;0;L;;;;;N;;;;; -ABDB;MEETEI MAYEK LETTER KOK LONSUM;Lo;0;L;;;;;N;;;;; -ABDC;MEETEI MAYEK LETTER LAI LONSUM;Lo;0;L;;;;;N;;;;; -ABDD;MEETEI MAYEK LETTER MIT LONSUM;Lo;0;L;;;;;N;;;;; -ABDE;MEETEI MAYEK LETTER PA LONSUM;Lo;0;L;;;;;N;;;;; -ABDF;MEETEI MAYEK LETTER NA LONSUM;Lo;0;L;;;;;N;;;;; -ABE0;MEETEI MAYEK LETTER TIL LONSUM;Lo;0;L;;;;;N;;;;; -ABE1;MEETEI MAYEK LETTER NGOU LONSUM;Lo;0;L;;;;;N;;;;; -ABE2;MEETEI MAYEK LETTER I LONSUM;Lo;0;L;;;;;N;;;;; -ABE3;MEETEI MAYEK VOWEL SIGN ONAP;Mc;0;L;;;;;N;;;;; -ABE4;MEETEI MAYEK VOWEL SIGN INAP;Mc;0;L;;;;;N;;;;; -ABE5;MEETEI MAYEK VOWEL SIGN ANAP;Mn;0;NSM;;;;;N;;;;; -ABE6;MEETEI MAYEK VOWEL SIGN YENAP;Mc;0;L;;;;;N;;;;; -ABE7;MEETEI MAYEK VOWEL SIGN SOUNAP;Mc;0;L;;;;;N;;;;; -ABE8;MEETEI MAYEK VOWEL SIGN UNAP;Mn;0;NSM;;;;;N;;;;; -ABE9;MEETEI MAYEK VOWEL SIGN CHEINAP;Mc;0;L;;;;;N;;;;; -ABEA;MEETEI MAYEK VOWEL SIGN NUNG;Mc;0;L;;;;;N;;;;; -ABEB;MEETEI MAYEK CHEIKHEI;Po;0;L;;;;;N;;;;; -ABEC;MEETEI MAYEK LUM IYEK;Mc;0;L;;;;;N;;;;; -ABED;MEETEI MAYEK APUN IYEK;Mn;9;NSM;;;;;N;;;;; -ABF0;MEETEI MAYEK DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -ABF1;MEETEI MAYEK DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -ABF2;MEETEI MAYEK DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -ABF3;MEETEI MAYEK DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -ABF4;MEETEI MAYEK DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -ABF5;MEETEI MAYEK DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -ABF6;MEETEI MAYEK DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -ABF7;MEETEI MAYEK DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -ABF8;MEETEI MAYEK DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -ABF9;MEETEI MAYEK DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -AC00;;Lo;0;L;;;;;N;;;;; -D7A3;;Lo;0;L;;;;;N;;;;; -D7B0;HANGUL JUNGSEONG O-YEO;Lo;0;L;;;;;N;;;;; -D7B1;HANGUL JUNGSEONG O-O-I;Lo;0;L;;;;;N;;;;; -D7B2;HANGUL JUNGSEONG YO-A;Lo;0;L;;;;;N;;;;; -D7B3;HANGUL JUNGSEONG YO-AE;Lo;0;L;;;;;N;;;;; -D7B4;HANGUL JUNGSEONG YO-EO;Lo;0;L;;;;;N;;;;; -D7B5;HANGUL JUNGSEONG U-YEO;Lo;0;L;;;;;N;;;;; -D7B6;HANGUL JUNGSEONG U-I-I;Lo;0;L;;;;;N;;;;; -D7B7;HANGUL JUNGSEONG YU-AE;Lo;0;L;;;;;N;;;;; -D7B8;HANGUL JUNGSEONG YU-O;Lo;0;L;;;;;N;;;;; -D7B9;HANGUL JUNGSEONG EU-A;Lo;0;L;;;;;N;;;;; -D7BA;HANGUL JUNGSEONG EU-EO;Lo;0;L;;;;;N;;;;; -D7BB;HANGUL JUNGSEONG EU-E;Lo;0;L;;;;;N;;;;; -D7BC;HANGUL JUNGSEONG EU-O;Lo;0;L;;;;;N;;;;; -D7BD;HANGUL JUNGSEONG I-YA-O;Lo;0;L;;;;;N;;;;; -D7BE;HANGUL JUNGSEONG I-YAE;Lo;0;L;;;;;N;;;;; -D7BF;HANGUL JUNGSEONG I-YEO;Lo;0;L;;;;;N;;;;; -D7C0;HANGUL JUNGSEONG I-YE;Lo;0;L;;;;;N;;;;; -D7C1;HANGUL JUNGSEONG I-O-I;Lo;0;L;;;;;N;;;;; -D7C2;HANGUL JUNGSEONG I-YO;Lo;0;L;;;;;N;;;;; -D7C3;HANGUL JUNGSEONG I-YU;Lo;0;L;;;;;N;;;;; -D7C4;HANGUL JUNGSEONG I-I;Lo;0;L;;;;;N;;;;; -D7C5;HANGUL JUNGSEONG ARAEA-A;Lo;0;L;;;;;N;;;;; -D7C6;HANGUL JUNGSEONG ARAEA-E;Lo;0;L;;;;;N;;;;; -D7CB;HANGUL JONGSEONG NIEUN-RIEUL;Lo;0;L;;;;;N;;;;; -D7CC;HANGUL JONGSEONG NIEUN-CHIEUCH;Lo;0;L;;;;;N;;;;; -D7CD;HANGUL JONGSEONG SSANGTIKEUT;Lo;0;L;;;;;N;;;;; -D7CE;HANGUL JONGSEONG SSANGTIKEUT-PIEUP;Lo;0;L;;;;;N;;;;; -D7CF;HANGUL JONGSEONG TIKEUT-PIEUP;Lo;0;L;;;;;N;;;;; -D7D0;HANGUL JONGSEONG TIKEUT-SIOS;Lo;0;L;;;;;N;;;;; -D7D1;HANGUL JONGSEONG TIKEUT-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;; -D7D2;HANGUL JONGSEONG TIKEUT-CIEUC;Lo;0;L;;;;;N;;;;; -D7D3;HANGUL JONGSEONG TIKEUT-CHIEUCH;Lo;0;L;;;;;N;;;;; -D7D4;HANGUL JONGSEONG TIKEUT-THIEUTH;Lo;0;L;;;;;N;;;;; -D7D5;HANGUL JONGSEONG RIEUL-SSANGKIYEOK;Lo;0;L;;;;;N;;;;; -D7D6;HANGUL JONGSEONG RIEUL-KIYEOK-HIEUH;Lo;0;L;;;;;N;;;;; -D7D7;HANGUL JONGSEONG SSANGRIEUL-KHIEUKH;Lo;0;L;;;;;N;;;;; -D7D8;HANGUL JONGSEONG RIEUL-MIEUM-HIEUH;Lo;0;L;;;;;N;;;;; -D7D9;HANGUL JONGSEONG RIEUL-PIEUP-TIKEUT;Lo;0;L;;;;;N;;;;; -D7DA;HANGUL JONGSEONG RIEUL-PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;; -D7DB;HANGUL JONGSEONG RIEUL-YESIEUNG;Lo;0;L;;;;;N;;;;; -D7DC;HANGUL JONGSEONG RIEUL-YEORINHIEUH-HIEUH;Lo;0;L;;;;;N;;;;; -D7DD;HANGUL JONGSEONG KAPYEOUNRIEUL;Lo;0;L;;;;;N;;;;; -D7DE;HANGUL JONGSEONG MIEUM-NIEUN;Lo;0;L;;;;;N;;;;; -D7DF;HANGUL JONGSEONG MIEUM-SSANGNIEUN;Lo;0;L;;;;;N;;;;; -D7E0;HANGUL JONGSEONG SSANGMIEUM;Lo;0;L;;;;;N;;;;; -D7E1;HANGUL JONGSEONG MIEUM-PIEUP-SIOS;Lo;0;L;;;;;N;;;;; -D7E2;HANGUL JONGSEONG MIEUM-CIEUC;Lo;0;L;;;;;N;;;;; -D7E3;HANGUL JONGSEONG PIEUP-TIKEUT;Lo;0;L;;;;;N;;;;; -D7E4;HANGUL JONGSEONG PIEUP-RIEUL-PHIEUPH;Lo;0;L;;;;;N;;;;; -D7E5;HANGUL JONGSEONG PIEUP-MIEUM;Lo;0;L;;;;;N;;;;; -D7E6;HANGUL JONGSEONG SSANGPIEUP;Lo;0;L;;;;;N;;;;; -D7E7;HANGUL JONGSEONG PIEUP-SIOS-TIKEUT;Lo;0;L;;;;;N;;;;; -D7E8;HANGUL JONGSEONG PIEUP-CIEUC;Lo;0;L;;;;;N;;;;; -D7E9;HANGUL JONGSEONG PIEUP-CHIEUCH;Lo;0;L;;;;;N;;;;; -D7EA;HANGUL JONGSEONG SIOS-MIEUM;Lo;0;L;;;;;N;;;;; -D7EB;HANGUL JONGSEONG SIOS-KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;; -D7EC;HANGUL JONGSEONG SSANGSIOS-KIYEOK;Lo;0;L;;;;;N;;;;; -D7ED;HANGUL JONGSEONG SSANGSIOS-TIKEUT;Lo;0;L;;;;;N;;;;; -D7EE;HANGUL JONGSEONG SIOS-PANSIOS;Lo;0;L;;;;;N;;;;; -D7EF;HANGUL JONGSEONG SIOS-CIEUC;Lo;0;L;;;;;N;;;;; -D7F0;HANGUL JONGSEONG SIOS-CHIEUCH;Lo;0;L;;;;;N;;;;; -D7F1;HANGUL JONGSEONG SIOS-THIEUTH;Lo;0;L;;;;;N;;;;; -D7F2;HANGUL JONGSEONG SIOS-HIEUH;Lo;0;L;;;;;N;;;;; -D7F3;HANGUL JONGSEONG PANSIOS-PIEUP;Lo;0;L;;;;;N;;;;; -D7F4;HANGUL JONGSEONG PANSIOS-KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;; -D7F5;HANGUL JONGSEONG YESIEUNG-MIEUM;Lo;0;L;;;;;N;;;;; -D7F6;HANGUL JONGSEONG YESIEUNG-HIEUH;Lo;0;L;;;;;N;;;;; -D7F7;HANGUL JONGSEONG CIEUC-PIEUP;Lo;0;L;;;;;N;;;;; -D7F8;HANGUL JONGSEONG CIEUC-SSANGPIEUP;Lo;0;L;;;;;N;;;;; -D7F9;HANGUL JONGSEONG SSANGCIEUC;Lo;0;L;;;;;N;;;;; -D7FA;HANGUL JONGSEONG PHIEUPH-SIOS;Lo;0;L;;;;;N;;;;; -D7FB;HANGUL JONGSEONG PHIEUPH-THIEUTH;Lo;0;L;;;;;N;;;;; -D800;;Cs;0;L;;;;;N;;;;; -DB7F;;Cs;0;L;;;;;N;;;;; -DB80;;Cs;0;L;;;;;N;;;;; -DBFF;;Cs;0;L;;;;;N;;;;; -DC00;;Cs;0;L;;;;;N;;;;; -DFFF;;Cs;0;L;;;;;N;;;;; -E000;;Co;0;L;;;;;N;;;;; -F8FF;;Co;0;L;;;;;N;;;;; -F900;CJK COMPATIBILITY IDEOGRAPH-F900;Lo;0;L;8C48;;;;N;;;;; -F901;CJK COMPATIBILITY IDEOGRAPH-F901;Lo;0;L;66F4;;;;N;;;;; -F902;CJK COMPATIBILITY IDEOGRAPH-F902;Lo;0;L;8ECA;;;;N;;;;; -F903;CJK COMPATIBILITY IDEOGRAPH-F903;Lo;0;L;8CC8;;;;N;;;;; -F904;CJK COMPATIBILITY IDEOGRAPH-F904;Lo;0;L;6ED1;;;;N;;;;; -F905;CJK COMPATIBILITY IDEOGRAPH-F905;Lo;0;L;4E32;;;;N;;;;; -F906;CJK COMPATIBILITY IDEOGRAPH-F906;Lo;0;L;53E5;;;;N;;;;; -F907;CJK COMPATIBILITY IDEOGRAPH-F907;Lo;0;L;9F9C;;;;N;;;;; -F908;CJK COMPATIBILITY IDEOGRAPH-F908;Lo;0;L;9F9C;;;;N;;;;; -F909;CJK COMPATIBILITY IDEOGRAPH-F909;Lo;0;L;5951;;;;N;;;;; -F90A;CJK COMPATIBILITY IDEOGRAPH-F90A;Lo;0;L;91D1;;;;N;;;;; -F90B;CJK COMPATIBILITY IDEOGRAPH-F90B;Lo;0;L;5587;;;;N;;;;; -F90C;CJK COMPATIBILITY IDEOGRAPH-F90C;Lo;0;L;5948;;;;N;;;;; -F90D;CJK COMPATIBILITY IDEOGRAPH-F90D;Lo;0;L;61F6;;;;N;;;;; -F90E;CJK COMPATIBILITY IDEOGRAPH-F90E;Lo;0;L;7669;;;;N;;;;; -F90F;CJK COMPATIBILITY IDEOGRAPH-F90F;Lo;0;L;7F85;;;;N;;;;; -F910;CJK COMPATIBILITY IDEOGRAPH-F910;Lo;0;L;863F;;;;N;;;;; -F911;CJK COMPATIBILITY IDEOGRAPH-F911;Lo;0;L;87BA;;;;N;;;;; -F912;CJK COMPATIBILITY IDEOGRAPH-F912;Lo;0;L;88F8;;;;N;;;;; -F913;CJK COMPATIBILITY IDEOGRAPH-F913;Lo;0;L;908F;;;;N;;;;; -F914;CJK COMPATIBILITY IDEOGRAPH-F914;Lo;0;L;6A02;;;;N;;;;; -F915;CJK COMPATIBILITY IDEOGRAPH-F915;Lo;0;L;6D1B;;;;N;;;;; -F916;CJK COMPATIBILITY IDEOGRAPH-F916;Lo;0;L;70D9;;;;N;;;;; -F917;CJK COMPATIBILITY IDEOGRAPH-F917;Lo;0;L;73DE;;;;N;;;;; -F918;CJK COMPATIBILITY IDEOGRAPH-F918;Lo;0;L;843D;;;;N;;;;; -F919;CJK COMPATIBILITY IDEOGRAPH-F919;Lo;0;L;916A;;;;N;;;;; -F91A;CJK COMPATIBILITY IDEOGRAPH-F91A;Lo;0;L;99F1;;;;N;;;;; -F91B;CJK COMPATIBILITY IDEOGRAPH-F91B;Lo;0;L;4E82;;;;N;;;;; -F91C;CJK COMPATIBILITY IDEOGRAPH-F91C;Lo;0;L;5375;;;;N;;;;; -F91D;CJK COMPATIBILITY IDEOGRAPH-F91D;Lo;0;L;6B04;;;;N;;;;; -F91E;CJK COMPATIBILITY IDEOGRAPH-F91E;Lo;0;L;721B;;;;N;;;;; -F91F;CJK COMPATIBILITY IDEOGRAPH-F91F;Lo;0;L;862D;;;;N;;;;; -F920;CJK COMPATIBILITY IDEOGRAPH-F920;Lo;0;L;9E1E;;;;N;;;;; -F921;CJK COMPATIBILITY IDEOGRAPH-F921;Lo;0;L;5D50;;;;N;;;;; -F922;CJK COMPATIBILITY IDEOGRAPH-F922;Lo;0;L;6FEB;;;;N;;;;; -F923;CJK COMPATIBILITY IDEOGRAPH-F923;Lo;0;L;85CD;;;;N;;;;; -F924;CJK COMPATIBILITY IDEOGRAPH-F924;Lo;0;L;8964;;;;N;;;;; -F925;CJK COMPATIBILITY IDEOGRAPH-F925;Lo;0;L;62C9;;;;N;;;;; -F926;CJK COMPATIBILITY IDEOGRAPH-F926;Lo;0;L;81D8;;;;N;;;;; -F927;CJK COMPATIBILITY IDEOGRAPH-F927;Lo;0;L;881F;;;;N;;;;; -F928;CJK COMPATIBILITY IDEOGRAPH-F928;Lo;0;L;5ECA;;;;N;;;;; -F929;CJK COMPATIBILITY IDEOGRAPH-F929;Lo;0;L;6717;;;;N;;;;; -F92A;CJK COMPATIBILITY IDEOGRAPH-F92A;Lo;0;L;6D6A;;;;N;;;;; -F92B;CJK COMPATIBILITY IDEOGRAPH-F92B;Lo;0;L;72FC;;;;N;;;;; -F92C;CJK COMPATIBILITY IDEOGRAPH-F92C;Lo;0;L;90CE;;;;N;;;;; -F92D;CJK COMPATIBILITY IDEOGRAPH-F92D;Lo;0;L;4F86;;;;N;;;;; -F92E;CJK COMPATIBILITY IDEOGRAPH-F92E;Lo;0;L;51B7;;;;N;;;;; -F92F;CJK COMPATIBILITY IDEOGRAPH-F92F;Lo;0;L;52DE;;;;N;;;;; -F930;CJK COMPATIBILITY IDEOGRAPH-F930;Lo;0;L;64C4;;;;N;;;;; -F931;CJK COMPATIBILITY IDEOGRAPH-F931;Lo;0;L;6AD3;;;;N;;;;; -F932;CJK COMPATIBILITY IDEOGRAPH-F932;Lo;0;L;7210;;;;N;;;;; -F933;CJK COMPATIBILITY IDEOGRAPH-F933;Lo;0;L;76E7;;;;N;;;;; -F934;CJK COMPATIBILITY IDEOGRAPH-F934;Lo;0;L;8001;;;;N;;;;; -F935;CJK COMPATIBILITY IDEOGRAPH-F935;Lo;0;L;8606;;;;N;;;;; -F936;CJK COMPATIBILITY IDEOGRAPH-F936;Lo;0;L;865C;;;;N;;;;; -F937;CJK COMPATIBILITY IDEOGRAPH-F937;Lo;0;L;8DEF;;;;N;;;;; -F938;CJK COMPATIBILITY IDEOGRAPH-F938;Lo;0;L;9732;;;;N;;;;; -F939;CJK COMPATIBILITY IDEOGRAPH-F939;Lo;0;L;9B6F;;;;N;;;;; -F93A;CJK COMPATIBILITY IDEOGRAPH-F93A;Lo;0;L;9DFA;;;;N;;;;; -F93B;CJK COMPATIBILITY IDEOGRAPH-F93B;Lo;0;L;788C;;;;N;;;;; -F93C;CJK COMPATIBILITY IDEOGRAPH-F93C;Lo;0;L;797F;;;;N;;;;; -F93D;CJK COMPATIBILITY IDEOGRAPH-F93D;Lo;0;L;7DA0;;;;N;;;;; -F93E;CJK COMPATIBILITY IDEOGRAPH-F93E;Lo;0;L;83C9;;;;N;;;;; -F93F;CJK COMPATIBILITY IDEOGRAPH-F93F;Lo;0;L;9304;;;;N;;;;; -F940;CJK COMPATIBILITY IDEOGRAPH-F940;Lo;0;L;9E7F;;;;N;;;;; -F941;CJK COMPATIBILITY IDEOGRAPH-F941;Lo;0;L;8AD6;;;;N;;;;; -F942;CJK COMPATIBILITY IDEOGRAPH-F942;Lo;0;L;58DF;;;;N;;;;; -F943;CJK COMPATIBILITY IDEOGRAPH-F943;Lo;0;L;5F04;;;;N;;;;; -F944;CJK COMPATIBILITY IDEOGRAPH-F944;Lo;0;L;7C60;;;;N;;;;; -F945;CJK COMPATIBILITY IDEOGRAPH-F945;Lo;0;L;807E;;;;N;;;;; -F946;CJK COMPATIBILITY IDEOGRAPH-F946;Lo;0;L;7262;;;;N;;;;; -F947;CJK COMPATIBILITY IDEOGRAPH-F947;Lo;0;L;78CA;;;;N;;;;; -F948;CJK COMPATIBILITY IDEOGRAPH-F948;Lo;0;L;8CC2;;;;N;;;;; -F949;CJK COMPATIBILITY IDEOGRAPH-F949;Lo;0;L;96F7;;;;N;;;;; -F94A;CJK COMPATIBILITY IDEOGRAPH-F94A;Lo;0;L;58D8;;;;N;;;;; -F94B;CJK COMPATIBILITY IDEOGRAPH-F94B;Lo;0;L;5C62;;;;N;;;;; -F94C;CJK COMPATIBILITY IDEOGRAPH-F94C;Lo;0;L;6A13;;;;N;;;;; -F94D;CJK COMPATIBILITY IDEOGRAPH-F94D;Lo;0;L;6DDA;;;;N;;;;; -F94E;CJK COMPATIBILITY IDEOGRAPH-F94E;Lo;0;L;6F0F;;;;N;;;;; -F94F;CJK COMPATIBILITY IDEOGRAPH-F94F;Lo;0;L;7D2F;;;;N;;;;; -F950;CJK COMPATIBILITY IDEOGRAPH-F950;Lo;0;L;7E37;;;;N;;;;; -F951;CJK COMPATIBILITY IDEOGRAPH-F951;Lo;0;L;964B;;;;N;;;;; -F952;CJK COMPATIBILITY IDEOGRAPH-F952;Lo;0;L;52D2;;;;N;;;;; -F953;CJK COMPATIBILITY IDEOGRAPH-F953;Lo;0;L;808B;;;;N;;;;; -F954;CJK COMPATIBILITY IDEOGRAPH-F954;Lo;0;L;51DC;;;;N;;;;; -F955;CJK COMPATIBILITY IDEOGRAPH-F955;Lo;0;L;51CC;;;;N;;;;; -F956;CJK COMPATIBILITY IDEOGRAPH-F956;Lo;0;L;7A1C;;;;N;;;;; -F957;CJK COMPATIBILITY IDEOGRAPH-F957;Lo;0;L;7DBE;;;;N;;;;; -F958;CJK COMPATIBILITY IDEOGRAPH-F958;Lo;0;L;83F1;;;;N;;;;; -F959;CJK COMPATIBILITY IDEOGRAPH-F959;Lo;0;L;9675;;;;N;;;;; -F95A;CJK COMPATIBILITY IDEOGRAPH-F95A;Lo;0;L;8B80;;;;N;;;;; -F95B;CJK COMPATIBILITY IDEOGRAPH-F95B;Lo;0;L;62CF;;;;N;;;;; -F95C;CJK COMPATIBILITY IDEOGRAPH-F95C;Lo;0;L;6A02;;;;N;;;;; -F95D;CJK COMPATIBILITY IDEOGRAPH-F95D;Lo;0;L;8AFE;;;;N;;;;; -F95E;CJK COMPATIBILITY IDEOGRAPH-F95E;Lo;0;L;4E39;;;;N;;;;; -F95F;CJK COMPATIBILITY IDEOGRAPH-F95F;Lo;0;L;5BE7;;;;N;;;;; -F960;CJK COMPATIBILITY IDEOGRAPH-F960;Lo;0;L;6012;;;;N;;;;; -F961;CJK COMPATIBILITY IDEOGRAPH-F961;Lo;0;L;7387;;;;N;;;;; -F962;CJK COMPATIBILITY IDEOGRAPH-F962;Lo;0;L;7570;;;;N;;;;; -F963;CJK COMPATIBILITY IDEOGRAPH-F963;Lo;0;L;5317;;;;N;;;;; -F964;CJK COMPATIBILITY IDEOGRAPH-F964;Lo;0;L;78FB;;;;N;;;;; -F965;CJK COMPATIBILITY IDEOGRAPH-F965;Lo;0;L;4FBF;;;;N;;;;; -F966;CJK COMPATIBILITY IDEOGRAPH-F966;Lo;0;L;5FA9;;;;N;;;;; -F967;CJK COMPATIBILITY IDEOGRAPH-F967;Lo;0;L;4E0D;;;;N;;;;; -F968;CJK COMPATIBILITY IDEOGRAPH-F968;Lo;0;L;6CCC;;;;N;;;;; -F969;CJK COMPATIBILITY IDEOGRAPH-F969;Lo;0;L;6578;;;;N;;;;; -F96A;CJK COMPATIBILITY IDEOGRAPH-F96A;Lo;0;L;7D22;;;;N;;;;; -F96B;CJK COMPATIBILITY IDEOGRAPH-F96B;Lo;0;L;53C3;;;3;N;;;;; -F96C;CJK COMPATIBILITY IDEOGRAPH-F96C;Lo;0;L;585E;;;;N;;;;; -F96D;CJK COMPATIBILITY IDEOGRAPH-F96D;Lo;0;L;7701;;;;N;;;;; -F96E;CJK COMPATIBILITY IDEOGRAPH-F96E;Lo;0;L;8449;;;;N;;;;; -F96F;CJK COMPATIBILITY IDEOGRAPH-F96F;Lo;0;L;8AAA;;;;N;;;;; -F970;CJK COMPATIBILITY IDEOGRAPH-F970;Lo;0;L;6BBA;;;;N;;;;; -F971;CJK COMPATIBILITY IDEOGRAPH-F971;Lo;0;L;8FB0;;;;N;;;;; -F972;CJK COMPATIBILITY IDEOGRAPH-F972;Lo;0;L;6C88;;;;N;;;;; -F973;CJK COMPATIBILITY IDEOGRAPH-F973;Lo;0;L;62FE;;;10;N;;;;; -F974;CJK COMPATIBILITY IDEOGRAPH-F974;Lo;0;L;82E5;;;;N;;;;; -F975;CJK COMPATIBILITY IDEOGRAPH-F975;Lo;0;L;63A0;;;;N;;;;; -F976;CJK COMPATIBILITY IDEOGRAPH-F976;Lo;0;L;7565;;;;N;;;;; -F977;CJK COMPATIBILITY IDEOGRAPH-F977;Lo;0;L;4EAE;;;;N;;;;; -F978;CJK COMPATIBILITY IDEOGRAPH-F978;Lo;0;L;5169;;;2;N;;;;; -F979;CJK COMPATIBILITY IDEOGRAPH-F979;Lo;0;L;51C9;;;;N;;;;; -F97A;CJK COMPATIBILITY IDEOGRAPH-F97A;Lo;0;L;6881;;;;N;;;;; -F97B;CJK COMPATIBILITY IDEOGRAPH-F97B;Lo;0;L;7CE7;;;;N;;;;; -F97C;CJK COMPATIBILITY IDEOGRAPH-F97C;Lo;0;L;826F;;;;N;;;;; -F97D;CJK COMPATIBILITY IDEOGRAPH-F97D;Lo;0;L;8AD2;;;;N;;;;; -F97E;CJK COMPATIBILITY IDEOGRAPH-F97E;Lo;0;L;91CF;;;;N;;;;; -F97F;CJK COMPATIBILITY IDEOGRAPH-F97F;Lo;0;L;52F5;;;;N;;;;; -F980;CJK COMPATIBILITY IDEOGRAPH-F980;Lo;0;L;5442;;;;N;;;;; -F981;CJK COMPATIBILITY IDEOGRAPH-F981;Lo;0;L;5973;;;;N;;;;; -F982;CJK COMPATIBILITY IDEOGRAPH-F982;Lo;0;L;5EEC;;;;N;;;;; -F983;CJK COMPATIBILITY IDEOGRAPH-F983;Lo;0;L;65C5;;;;N;;;;; -F984;CJK COMPATIBILITY IDEOGRAPH-F984;Lo;0;L;6FFE;;;;N;;;;; -F985;CJK COMPATIBILITY IDEOGRAPH-F985;Lo;0;L;792A;;;;N;;;;; -F986;CJK COMPATIBILITY IDEOGRAPH-F986;Lo;0;L;95AD;;;;N;;;;; -F987;CJK COMPATIBILITY IDEOGRAPH-F987;Lo;0;L;9A6A;;;;N;;;;; -F988;CJK COMPATIBILITY IDEOGRAPH-F988;Lo;0;L;9E97;;;;N;;;;; -F989;CJK COMPATIBILITY IDEOGRAPH-F989;Lo;0;L;9ECE;;;;N;;;;; -F98A;CJK COMPATIBILITY IDEOGRAPH-F98A;Lo;0;L;529B;;;;N;;;;; -F98B;CJK COMPATIBILITY IDEOGRAPH-F98B;Lo;0;L;66C6;;;;N;;;;; -F98C;CJK COMPATIBILITY IDEOGRAPH-F98C;Lo;0;L;6B77;;;;N;;;;; -F98D;CJK COMPATIBILITY IDEOGRAPH-F98D;Lo;0;L;8F62;;;;N;;;;; -F98E;CJK COMPATIBILITY IDEOGRAPH-F98E;Lo;0;L;5E74;;;;N;;;;; -F98F;CJK COMPATIBILITY IDEOGRAPH-F98F;Lo;0;L;6190;;;;N;;;;; -F990;CJK COMPATIBILITY IDEOGRAPH-F990;Lo;0;L;6200;;;;N;;;;; -F991;CJK COMPATIBILITY IDEOGRAPH-F991;Lo;0;L;649A;;;;N;;;;; -F992;CJK COMPATIBILITY IDEOGRAPH-F992;Lo;0;L;6F23;;;;N;;;;; -F993;CJK COMPATIBILITY IDEOGRAPH-F993;Lo;0;L;7149;;;;N;;;;; -F994;CJK COMPATIBILITY IDEOGRAPH-F994;Lo;0;L;7489;;;;N;;;;; -F995;CJK COMPATIBILITY IDEOGRAPH-F995;Lo;0;L;79CA;;;;N;;;;; -F996;CJK COMPATIBILITY IDEOGRAPH-F996;Lo;0;L;7DF4;;;;N;;;;; -F997;CJK COMPATIBILITY IDEOGRAPH-F997;Lo;0;L;806F;;;;N;;;;; -F998;CJK COMPATIBILITY IDEOGRAPH-F998;Lo;0;L;8F26;;;;N;;;;; -F999;CJK COMPATIBILITY IDEOGRAPH-F999;Lo;0;L;84EE;;;;N;;;;; -F99A;CJK COMPATIBILITY IDEOGRAPH-F99A;Lo;0;L;9023;;;;N;;;;; -F99B;CJK COMPATIBILITY IDEOGRAPH-F99B;Lo;0;L;934A;;;;N;;;;; -F99C;CJK COMPATIBILITY IDEOGRAPH-F99C;Lo;0;L;5217;;;;N;;;;; -F99D;CJK COMPATIBILITY IDEOGRAPH-F99D;Lo;0;L;52A3;;;;N;;;;; -F99E;CJK COMPATIBILITY IDEOGRAPH-F99E;Lo;0;L;54BD;;;;N;;;;; -F99F;CJK COMPATIBILITY IDEOGRAPH-F99F;Lo;0;L;70C8;;;;N;;;;; -F9A0;CJK COMPATIBILITY IDEOGRAPH-F9A0;Lo;0;L;88C2;;;;N;;;;; -F9A1;CJK COMPATIBILITY IDEOGRAPH-F9A1;Lo;0;L;8AAA;;;;N;;;;; -F9A2;CJK COMPATIBILITY IDEOGRAPH-F9A2;Lo;0;L;5EC9;;;;N;;;;; -F9A3;CJK COMPATIBILITY IDEOGRAPH-F9A3;Lo;0;L;5FF5;;;;N;;;;; -F9A4;CJK COMPATIBILITY IDEOGRAPH-F9A4;Lo;0;L;637B;;;;N;;;;; -F9A5;CJK COMPATIBILITY IDEOGRAPH-F9A5;Lo;0;L;6BAE;;;;N;;;;; -F9A6;CJK COMPATIBILITY IDEOGRAPH-F9A6;Lo;0;L;7C3E;;;;N;;;;; -F9A7;CJK COMPATIBILITY IDEOGRAPH-F9A7;Lo;0;L;7375;;;;N;;;;; -F9A8;CJK COMPATIBILITY IDEOGRAPH-F9A8;Lo;0;L;4EE4;;;;N;;;;; -F9A9;CJK COMPATIBILITY IDEOGRAPH-F9A9;Lo;0;L;56F9;;;;N;;;;; -F9AA;CJK COMPATIBILITY IDEOGRAPH-F9AA;Lo;0;L;5BE7;;;;N;;;;; -F9AB;CJK COMPATIBILITY IDEOGRAPH-F9AB;Lo;0;L;5DBA;;;;N;;;;; -F9AC;CJK COMPATIBILITY IDEOGRAPH-F9AC;Lo;0;L;601C;;;;N;;;;; -F9AD;CJK COMPATIBILITY IDEOGRAPH-F9AD;Lo;0;L;73B2;;;;N;;;;; -F9AE;CJK COMPATIBILITY IDEOGRAPH-F9AE;Lo;0;L;7469;;;;N;;;;; -F9AF;CJK COMPATIBILITY IDEOGRAPH-F9AF;Lo;0;L;7F9A;;;;N;;;;; -F9B0;CJK COMPATIBILITY IDEOGRAPH-F9B0;Lo;0;L;8046;;;;N;;;;; -F9B1;CJK COMPATIBILITY IDEOGRAPH-F9B1;Lo;0;L;9234;;;;N;;;;; -F9B2;CJK COMPATIBILITY IDEOGRAPH-F9B2;Lo;0;L;96F6;;;0;N;;;;; -F9B3;CJK COMPATIBILITY IDEOGRAPH-F9B3;Lo;0;L;9748;;;;N;;;;; -F9B4;CJK COMPATIBILITY IDEOGRAPH-F9B4;Lo;0;L;9818;;;;N;;;;; -F9B5;CJK COMPATIBILITY IDEOGRAPH-F9B5;Lo;0;L;4F8B;;;;N;;;;; -F9B6;CJK COMPATIBILITY IDEOGRAPH-F9B6;Lo;0;L;79AE;;;;N;;;;; -F9B7;CJK COMPATIBILITY IDEOGRAPH-F9B7;Lo;0;L;91B4;;;;N;;;;; -F9B8;CJK COMPATIBILITY IDEOGRAPH-F9B8;Lo;0;L;96B8;;;;N;;;;; -F9B9;CJK COMPATIBILITY IDEOGRAPH-F9B9;Lo;0;L;60E1;;;;N;;;;; -F9BA;CJK COMPATIBILITY IDEOGRAPH-F9BA;Lo;0;L;4E86;;;;N;;;;; -F9BB;CJK COMPATIBILITY IDEOGRAPH-F9BB;Lo;0;L;50DA;;;;N;;;;; -F9BC;CJK COMPATIBILITY IDEOGRAPH-F9BC;Lo;0;L;5BEE;;;;N;;;;; -F9BD;CJK COMPATIBILITY IDEOGRAPH-F9BD;Lo;0;L;5C3F;;;;N;;;;; -F9BE;CJK COMPATIBILITY IDEOGRAPH-F9BE;Lo;0;L;6599;;;;N;;;;; -F9BF;CJK COMPATIBILITY IDEOGRAPH-F9BF;Lo;0;L;6A02;;;;N;;;;; -F9C0;CJK COMPATIBILITY IDEOGRAPH-F9C0;Lo;0;L;71CE;;;;N;;;;; -F9C1;CJK COMPATIBILITY IDEOGRAPH-F9C1;Lo;0;L;7642;;;;N;;;;; -F9C2;CJK COMPATIBILITY IDEOGRAPH-F9C2;Lo;0;L;84FC;;;;N;;;;; -F9C3;CJK COMPATIBILITY IDEOGRAPH-F9C3;Lo;0;L;907C;;;;N;;;;; -F9C4;CJK COMPATIBILITY IDEOGRAPH-F9C4;Lo;0;L;9F8D;;;;N;;;;; -F9C5;CJK COMPATIBILITY IDEOGRAPH-F9C5;Lo;0;L;6688;;;;N;;;;; -F9C6;CJK COMPATIBILITY IDEOGRAPH-F9C6;Lo;0;L;962E;;;;N;;;;; -F9C7;CJK COMPATIBILITY IDEOGRAPH-F9C7;Lo;0;L;5289;;;;N;;;;; -F9C8;CJK COMPATIBILITY IDEOGRAPH-F9C8;Lo;0;L;677B;;;;N;;;;; -F9C9;CJK COMPATIBILITY IDEOGRAPH-F9C9;Lo;0;L;67F3;;;;N;;;;; -F9CA;CJK COMPATIBILITY IDEOGRAPH-F9CA;Lo;0;L;6D41;;;;N;;;;; -F9CB;CJK COMPATIBILITY IDEOGRAPH-F9CB;Lo;0;L;6E9C;;;;N;;;;; -F9CC;CJK COMPATIBILITY IDEOGRAPH-F9CC;Lo;0;L;7409;;;;N;;;;; -F9CD;CJK COMPATIBILITY IDEOGRAPH-F9CD;Lo;0;L;7559;;;;N;;;;; -F9CE;CJK COMPATIBILITY IDEOGRAPH-F9CE;Lo;0;L;786B;;;;N;;;;; -F9CF;CJK COMPATIBILITY IDEOGRAPH-F9CF;Lo;0;L;7D10;;;;N;;;;; -F9D0;CJK COMPATIBILITY IDEOGRAPH-F9D0;Lo;0;L;985E;;;;N;;;;; -F9D1;CJK COMPATIBILITY IDEOGRAPH-F9D1;Lo;0;L;516D;;;6;N;;;;; -F9D2;CJK COMPATIBILITY IDEOGRAPH-F9D2;Lo;0;L;622E;;;;N;;;;; -F9D3;CJK COMPATIBILITY IDEOGRAPH-F9D3;Lo;0;L;9678;;;6;N;;;;; -F9D4;CJK COMPATIBILITY IDEOGRAPH-F9D4;Lo;0;L;502B;;;;N;;;;; -F9D5;CJK COMPATIBILITY IDEOGRAPH-F9D5;Lo;0;L;5D19;;;;N;;;;; -F9D6;CJK COMPATIBILITY IDEOGRAPH-F9D6;Lo;0;L;6DEA;;;;N;;;;; -F9D7;CJK COMPATIBILITY IDEOGRAPH-F9D7;Lo;0;L;8F2A;;;;N;;;;; -F9D8;CJK COMPATIBILITY IDEOGRAPH-F9D8;Lo;0;L;5F8B;;;;N;;;;; -F9D9;CJK COMPATIBILITY IDEOGRAPH-F9D9;Lo;0;L;6144;;;;N;;;;; -F9DA;CJK COMPATIBILITY IDEOGRAPH-F9DA;Lo;0;L;6817;;;;N;;;;; -F9DB;CJK COMPATIBILITY IDEOGRAPH-F9DB;Lo;0;L;7387;;;;N;;;;; -F9DC;CJK COMPATIBILITY IDEOGRAPH-F9DC;Lo;0;L;9686;;;;N;;;;; -F9DD;CJK COMPATIBILITY IDEOGRAPH-F9DD;Lo;0;L;5229;;;;N;;;;; -F9DE;CJK COMPATIBILITY IDEOGRAPH-F9DE;Lo;0;L;540F;;;;N;;;;; -F9DF;CJK COMPATIBILITY IDEOGRAPH-F9DF;Lo;0;L;5C65;;;;N;;;;; -F9E0;CJK COMPATIBILITY IDEOGRAPH-F9E0;Lo;0;L;6613;;;;N;;;;; -F9E1;CJK COMPATIBILITY IDEOGRAPH-F9E1;Lo;0;L;674E;;;;N;;;;; -F9E2;CJK COMPATIBILITY IDEOGRAPH-F9E2;Lo;0;L;68A8;;;;N;;;;; -F9E3;CJK COMPATIBILITY IDEOGRAPH-F9E3;Lo;0;L;6CE5;;;;N;;;;; -F9E4;CJK COMPATIBILITY IDEOGRAPH-F9E4;Lo;0;L;7406;;;;N;;;;; -F9E5;CJK COMPATIBILITY IDEOGRAPH-F9E5;Lo;0;L;75E2;;;;N;;;;; -F9E6;CJK COMPATIBILITY IDEOGRAPH-F9E6;Lo;0;L;7F79;;;;N;;;;; -F9E7;CJK COMPATIBILITY IDEOGRAPH-F9E7;Lo;0;L;88CF;;;;N;;;;; -F9E8;CJK COMPATIBILITY IDEOGRAPH-F9E8;Lo;0;L;88E1;;;;N;;;;; -F9E9;CJK COMPATIBILITY IDEOGRAPH-F9E9;Lo;0;L;91CC;;;;N;;;;; -F9EA;CJK COMPATIBILITY IDEOGRAPH-F9EA;Lo;0;L;96E2;;;;N;;;;; -F9EB;CJK COMPATIBILITY IDEOGRAPH-F9EB;Lo;0;L;533F;;;;N;;;;; -F9EC;CJK COMPATIBILITY IDEOGRAPH-F9EC;Lo;0;L;6EBA;;;;N;;;;; -F9ED;CJK COMPATIBILITY IDEOGRAPH-F9ED;Lo;0;L;541D;;;;N;;;;; -F9EE;CJK COMPATIBILITY IDEOGRAPH-F9EE;Lo;0;L;71D0;;;;N;;;;; -F9EF;CJK COMPATIBILITY IDEOGRAPH-F9EF;Lo;0;L;7498;;;;N;;;;; -F9F0;CJK COMPATIBILITY IDEOGRAPH-F9F0;Lo;0;L;85FA;;;;N;;;;; -F9F1;CJK COMPATIBILITY IDEOGRAPH-F9F1;Lo;0;L;96A3;;;;N;;;;; -F9F2;CJK COMPATIBILITY IDEOGRAPH-F9F2;Lo;0;L;9C57;;;;N;;;;; -F9F3;CJK COMPATIBILITY IDEOGRAPH-F9F3;Lo;0;L;9E9F;;;;N;;;;; -F9F4;CJK COMPATIBILITY IDEOGRAPH-F9F4;Lo;0;L;6797;;;;N;;;;; -F9F5;CJK COMPATIBILITY IDEOGRAPH-F9F5;Lo;0;L;6DCB;;;;N;;;;; -F9F6;CJK COMPATIBILITY IDEOGRAPH-F9F6;Lo;0;L;81E8;;;;N;;;;; -F9F7;CJK COMPATIBILITY IDEOGRAPH-F9F7;Lo;0;L;7ACB;;;;N;;;;; -F9F8;CJK COMPATIBILITY IDEOGRAPH-F9F8;Lo;0;L;7B20;;;;N;;;;; -F9F9;CJK COMPATIBILITY IDEOGRAPH-F9F9;Lo;0;L;7C92;;;;N;;;;; -F9FA;CJK COMPATIBILITY IDEOGRAPH-F9FA;Lo;0;L;72C0;;;;N;;;;; -F9FB;CJK COMPATIBILITY IDEOGRAPH-F9FB;Lo;0;L;7099;;;;N;;;;; -F9FC;CJK COMPATIBILITY IDEOGRAPH-F9FC;Lo;0;L;8B58;;;;N;;;;; -F9FD;CJK COMPATIBILITY IDEOGRAPH-F9FD;Lo;0;L;4EC0;;;10;N;;;;; -F9FE;CJK COMPATIBILITY IDEOGRAPH-F9FE;Lo;0;L;8336;;;;N;;;;; -F9FF;CJK COMPATIBILITY IDEOGRAPH-F9FF;Lo;0;L;523A;;;;N;;;;; -FA00;CJK COMPATIBILITY IDEOGRAPH-FA00;Lo;0;L;5207;;;;N;;;;; -FA01;CJK COMPATIBILITY IDEOGRAPH-FA01;Lo;0;L;5EA6;;;;N;;;;; -FA02;CJK COMPATIBILITY IDEOGRAPH-FA02;Lo;0;L;62D3;;;;N;;;;; -FA03;CJK COMPATIBILITY IDEOGRAPH-FA03;Lo;0;L;7CD6;;;;N;;;;; -FA04;CJK COMPATIBILITY IDEOGRAPH-FA04;Lo;0;L;5B85;;;;N;;;;; -FA05;CJK COMPATIBILITY IDEOGRAPH-FA05;Lo;0;L;6D1E;;;;N;;;;; -FA06;CJK COMPATIBILITY IDEOGRAPH-FA06;Lo;0;L;66B4;;;;N;;;;; -FA07;CJK COMPATIBILITY IDEOGRAPH-FA07;Lo;0;L;8F3B;;;;N;;;;; -FA08;CJK COMPATIBILITY IDEOGRAPH-FA08;Lo;0;L;884C;;;;N;;;;; -FA09;CJK COMPATIBILITY IDEOGRAPH-FA09;Lo;0;L;964D;;;;N;;;;; -FA0A;CJK COMPATIBILITY IDEOGRAPH-FA0A;Lo;0;L;898B;;;;N;;;;; -FA0B;CJK COMPATIBILITY IDEOGRAPH-FA0B;Lo;0;L;5ED3;;;;N;;;;; -FA0C;CJK COMPATIBILITY IDEOGRAPH-FA0C;Lo;0;L;5140;;;;N;;;;; -FA0D;CJK COMPATIBILITY IDEOGRAPH-FA0D;Lo;0;L;55C0;;;;N;;;;; -FA0E;CJK COMPATIBILITY IDEOGRAPH-FA0E;Lo;0;L;;;;;N;;;;; -FA0F;CJK COMPATIBILITY IDEOGRAPH-FA0F;Lo;0;L;;;;;N;;;;; -FA10;CJK COMPATIBILITY IDEOGRAPH-FA10;Lo;0;L;585A;;;;N;;;;; -FA11;CJK COMPATIBILITY IDEOGRAPH-FA11;Lo;0;L;;;;;N;;;;; -FA12;CJK COMPATIBILITY IDEOGRAPH-FA12;Lo;0;L;6674;;;;N;;;;; -FA13;CJK COMPATIBILITY IDEOGRAPH-FA13;Lo;0;L;;;;;N;;;;; -FA14;CJK COMPATIBILITY IDEOGRAPH-FA14;Lo;0;L;;;;;N;;;;; -FA15;CJK COMPATIBILITY IDEOGRAPH-FA15;Lo;0;L;51DE;;;;N;;;;; -FA16;CJK COMPATIBILITY IDEOGRAPH-FA16;Lo;0;L;732A;;;;N;;;;; -FA17;CJK COMPATIBILITY IDEOGRAPH-FA17;Lo;0;L;76CA;;;;N;;;;; -FA18;CJK COMPATIBILITY IDEOGRAPH-FA18;Lo;0;L;793C;;;;N;;;;; -FA19;CJK COMPATIBILITY IDEOGRAPH-FA19;Lo;0;L;795E;;;;N;;;;; -FA1A;CJK COMPATIBILITY IDEOGRAPH-FA1A;Lo;0;L;7965;;;;N;;;;; -FA1B;CJK COMPATIBILITY IDEOGRAPH-FA1B;Lo;0;L;798F;;;;N;;;;; -FA1C;CJK COMPATIBILITY IDEOGRAPH-FA1C;Lo;0;L;9756;;;;N;;;;; -FA1D;CJK COMPATIBILITY IDEOGRAPH-FA1D;Lo;0;L;7CBE;;;;N;;;;; -FA1E;CJK COMPATIBILITY IDEOGRAPH-FA1E;Lo;0;L;7FBD;;;;N;;;;; -FA1F;CJK COMPATIBILITY IDEOGRAPH-FA1F;Lo;0;L;;;;;N;;;;; -FA20;CJK COMPATIBILITY IDEOGRAPH-FA20;Lo;0;L;8612;;;;N;;;;; -FA21;CJK COMPATIBILITY IDEOGRAPH-FA21;Lo;0;L;;;;;N;;;;; -FA22;CJK COMPATIBILITY IDEOGRAPH-FA22;Lo;0;L;8AF8;;;;N;;;;; -FA23;CJK COMPATIBILITY IDEOGRAPH-FA23;Lo;0;L;;;;;N;;;;; -FA24;CJK COMPATIBILITY IDEOGRAPH-FA24;Lo;0;L;;;;;N;;;;; -FA25;CJK COMPATIBILITY IDEOGRAPH-FA25;Lo;0;L;9038;;;;N;;;;; -FA26;CJK COMPATIBILITY IDEOGRAPH-FA26;Lo;0;L;90FD;;;;N;;;;; -FA27;CJK COMPATIBILITY IDEOGRAPH-FA27;Lo;0;L;;;;;N;;;;; -FA28;CJK COMPATIBILITY IDEOGRAPH-FA28;Lo;0;L;;;;;N;;;;; -FA29;CJK COMPATIBILITY IDEOGRAPH-FA29;Lo;0;L;;;;;N;;;;; -FA2A;CJK COMPATIBILITY IDEOGRAPH-FA2A;Lo;0;L;98EF;;;;N;;;;; -FA2B;CJK COMPATIBILITY IDEOGRAPH-FA2B;Lo;0;L;98FC;;;;N;;;;; -FA2C;CJK COMPATIBILITY IDEOGRAPH-FA2C;Lo;0;L;9928;;;;N;;;;; -FA2D;CJK COMPATIBILITY IDEOGRAPH-FA2D;Lo;0;L;9DB4;;;;N;;;;; -FA30;CJK COMPATIBILITY IDEOGRAPH-FA30;Lo;0;L;4FAE;;;;N;;;;; -FA31;CJK COMPATIBILITY IDEOGRAPH-FA31;Lo;0;L;50E7;;;;N;;;;; -FA32;CJK COMPATIBILITY IDEOGRAPH-FA32;Lo;0;L;514D;;;;N;;;;; -FA33;CJK COMPATIBILITY IDEOGRAPH-FA33;Lo;0;L;52C9;;;;N;;;;; -FA34;CJK COMPATIBILITY IDEOGRAPH-FA34;Lo;0;L;52E4;;;;N;;;;; -FA35;CJK COMPATIBILITY IDEOGRAPH-FA35;Lo;0;L;5351;;;;N;;;;; -FA36;CJK COMPATIBILITY IDEOGRAPH-FA36;Lo;0;L;559D;;;;N;;;;; -FA37;CJK COMPATIBILITY IDEOGRAPH-FA37;Lo;0;L;5606;;;;N;;;;; -FA38;CJK COMPATIBILITY IDEOGRAPH-FA38;Lo;0;L;5668;;;;N;;;;; -FA39;CJK COMPATIBILITY IDEOGRAPH-FA39;Lo;0;L;5840;;;;N;;;;; -FA3A;CJK COMPATIBILITY IDEOGRAPH-FA3A;Lo;0;L;58A8;;;;N;;;;; -FA3B;CJK COMPATIBILITY IDEOGRAPH-FA3B;Lo;0;L;5C64;;;;N;;;;; -FA3C;CJK COMPATIBILITY IDEOGRAPH-FA3C;Lo;0;L;5C6E;;;;N;;;;; -FA3D;CJK COMPATIBILITY IDEOGRAPH-FA3D;Lo;0;L;6094;;;;N;;;;; -FA3E;CJK COMPATIBILITY IDEOGRAPH-FA3E;Lo;0;L;6168;;;;N;;;;; -FA3F;CJK COMPATIBILITY IDEOGRAPH-FA3F;Lo;0;L;618E;;;;N;;;;; -FA40;CJK COMPATIBILITY IDEOGRAPH-FA40;Lo;0;L;61F2;;;;N;;;;; -FA41;CJK COMPATIBILITY IDEOGRAPH-FA41;Lo;0;L;654F;;;;N;;;;; -FA42;CJK COMPATIBILITY IDEOGRAPH-FA42;Lo;0;L;65E2;;;;N;;;;; -FA43;CJK COMPATIBILITY IDEOGRAPH-FA43;Lo;0;L;6691;;;;N;;;;; -FA44;CJK COMPATIBILITY IDEOGRAPH-FA44;Lo;0;L;6885;;;;N;;;;; -FA45;CJK COMPATIBILITY IDEOGRAPH-FA45;Lo;0;L;6D77;;;;N;;;;; -FA46;CJK COMPATIBILITY IDEOGRAPH-FA46;Lo;0;L;6E1A;;;;N;;;;; -FA47;CJK COMPATIBILITY IDEOGRAPH-FA47;Lo;0;L;6F22;;;;N;;;;; -FA48;CJK COMPATIBILITY IDEOGRAPH-FA48;Lo;0;L;716E;;;;N;;;;; -FA49;CJK COMPATIBILITY IDEOGRAPH-FA49;Lo;0;L;722B;;;;N;;;;; -FA4A;CJK COMPATIBILITY IDEOGRAPH-FA4A;Lo;0;L;7422;;;;N;;;;; -FA4B;CJK COMPATIBILITY IDEOGRAPH-FA4B;Lo;0;L;7891;;;;N;;;;; -FA4C;CJK COMPATIBILITY IDEOGRAPH-FA4C;Lo;0;L;793E;;;;N;;;;; -FA4D;CJK COMPATIBILITY IDEOGRAPH-FA4D;Lo;0;L;7949;;;;N;;;;; -FA4E;CJK COMPATIBILITY IDEOGRAPH-FA4E;Lo;0;L;7948;;;;N;;;;; -FA4F;CJK COMPATIBILITY IDEOGRAPH-FA4F;Lo;0;L;7950;;;;N;;;;; -FA50;CJK COMPATIBILITY IDEOGRAPH-FA50;Lo;0;L;7956;;;;N;;;;; -FA51;CJK COMPATIBILITY IDEOGRAPH-FA51;Lo;0;L;795D;;;;N;;;;; -FA52;CJK COMPATIBILITY IDEOGRAPH-FA52;Lo;0;L;798D;;;;N;;;;; -FA53;CJK COMPATIBILITY IDEOGRAPH-FA53;Lo;0;L;798E;;;;N;;;;; -FA54;CJK COMPATIBILITY IDEOGRAPH-FA54;Lo;0;L;7A40;;;;N;;;;; -FA55;CJK COMPATIBILITY IDEOGRAPH-FA55;Lo;0;L;7A81;;;;N;;;;; -FA56;CJK COMPATIBILITY IDEOGRAPH-FA56;Lo;0;L;7BC0;;;;N;;;;; -FA57;CJK COMPATIBILITY IDEOGRAPH-FA57;Lo;0;L;7DF4;;;;N;;;;; -FA58;CJK COMPATIBILITY IDEOGRAPH-FA58;Lo;0;L;7E09;;;;N;;;;; -FA59;CJK COMPATIBILITY IDEOGRAPH-FA59;Lo;0;L;7E41;;;;N;;;;; -FA5A;CJK COMPATIBILITY IDEOGRAPH-FA5A;Lo;0;L;7F72;;;;N;;;;; -FA5B;CJK COMPATIBILITY IDEOGRAPH-FA5B;Lo;0;L;8005;;;;N;;;;; -FA5C;CJK COMPATIBILITY IDEOGRAPH-FA5C;Lo;0;L;81ED;;;;N;;;;; -FA5D;CJK COMPATIBILITY IDEOGRAPH-FA5D;Lo;0;L;8279;;;;N;;;;; -FA5E;CJK COMPATIBILITY IDEOGRAPH-FA5E;Lo;0;L;8279;;;;N;;;;; -FA5F;CJK COMPATIBILITY IDEOGRAPH-FA5F;Lo;0;L;8457;;;;N;;;;; -FA60;CJK COMPATIBILITY IDEOGRAPH-FA60;Lo;0;L;8910;;;;N;;;;; -FA61;CJK COMPATIBILITY IDEOGRAPH-FA61;Lo;0;L;8996;;;;N;;;;; -FA62;CJK COMPATIBILITY IDEOGRAPH-FA62;Lo;0;L;8B01;;;;N;;;;; -FA63;CJK COMPATIBILITY IDEOGRAPH-FA63;Lo;0;L;8B39;;;;N;;;;; -FA64;CJK COMPATIBILITY IDEOGRAPH-FA64;Lo;0;L;8CD3;;;;N;;;;; -FA65;CJK COMPATIBILITY IDEOGRAPH-FA65;Lo;0;L;8D08;;;;N;;;;; -FA66;CJK COMPATIBILITY IDEOGRAPH-FA66;Lo;0;L;8FB6;;;;N;;;;; -FA67;CJK COMPATIBILITY IDEOGRAPH-FA67;Lo;0;L;9038;;;;N;;;;; -FA68;CJK COMPATIBILITY IDEOGRAPH-FA68;Lo;0;L;96E3;;;;N;;;;; -FA69;CJK COMPATIBILITY IDEOGRAPH-FA69;Lo;0;L;97FF;;;;N;;;;; -FA6A;CJK COMPATIBILITY IDEOGRAPH-FA6A;Lo;0;L;983B;;;;N;;;;; -FA6B;CJK COMPATIBILITY IDEOGRAPH-FA6B;Lo;0;L;6075;;;;N;;;;; -FA6C;CJK COMPATIBILITY IDEOGRAPH-FA6C;Lo;0;L;242EE;;;;N;;;;; -FA6D;CJK COMPATIBILITY IDEOGRAPH-FA6D;Lo;0;L;8218;;;;N;;;;; -FA70;CJK COMPATIBILITY IDEOGRAPH-FA70;Lo;0;L;4E26;;;;N;;;;; -FA71;CJK COMPATIBILITY IDEOGRAPH-FA71;Lo;0;L;51B5;;;;N;;;;; -FA72;CJK COMPATIBILITY IDEOGRAPH-FA72;Lo;0;L;5168;;;;N;;;;; -FA73;CJK COMPATIBILITY IDEOGRAPH-FA73;Lo;0;L;4F80;;;;N;;;;; -FA74;CJK COMPATIBILITY IDEOGRAPH-FA74;Lo;0;L;5145;;;;N;;;;; -FA75;CJK COMPATIBILITY IDEOGRAPH-FA75;Lo;0;L;5180;;;;N;;;;; -FA76;CJK COMPATIBILITY IDEOGRAPH-FA76;Lo;0;L;52C7;;;;N;;;;; -FA77;CJK COMPATIBILITY IDEOGRAPH-FA77;Lo;0;L;52FA;;;;N;;;;; -FA78;CJK COMPATIBILITY IDEOGRAPH-FA78;Lo;0;L;559D;;;;N;;;;; -FA79;CJK COMPATIBILITY IDEOGRAPH-FA79;Lo;0;L;5555;;;;N;;;;; -FA7A;CJK COMPATIBILITY IDEOGRAPH-FA7A;Lo;0;L;5599;;;;N;;;;; -FA7B;CJK COMPATIBILITY IDEOGRAPH-FA7B;Lo;0;L;55E2;;;;N;;;;; -FA7C;CJK COMPATIBILITY IDEOGRAPH-FA7C;Lo;0;L;585A;;;;N;;;;; -FA7D;CJK COMPATIBILITY IDEOGRAPH-FA7D;Lo;0;L;58B3;;;;N;;;;; -FA7E;CJK COMPATIBILITY IDEOGRAPH-FA7E;Lo;0;L;5944;;;;N;;;;; -FA7F;CJK COMPATIBILITY IDEOGRAPH-FA7F;Lo;0;L;5954;;;;N;;;;; -FA80;CJK COMPATIBILITY IDEOGRAPH-FA80;Lo;0;L;5A62;;;;N;;;;; -FA81;CJK COMPATIBILITY IDEOGRAPH-FA81;Lo;0;L;5B28;;;;N;;;;; -FA82;CJK COMPATIBILITY IDEOGRAPH-FA82;Lo;0;L;5ED2;;;;N;;;;; -FA83;CJK COMPATIBILITY IDEOGRAPH-FA83;Lo;0;L;5ED9;;;;N;;;;; -FA84;CJK COMPATIBILITY IDEOGRAPH-FA84;Lo;0;L;5F69;;;;N;;;;; -FA85;CJK COMPATIBILITY IDEOGRAPH-FA85;Lo;0;L;5FAD;;;;N;;;;; -FA86;CJK COMPATIBILITY IDEOGRAPH-FA86;Lo;0;L;60D8;;;;N;;;;; -FA87;CJK COMPATIBILITY IDEOGRAPH-FA87;Lo;0;L;614E;;;;N;;;;; -FA88;CJK COMPATIBILITY IDEOGRAPH-FA88;Lo;0;L;6108;;;;N;;;;; -FA89;CJK COMPATIBILITY IDEOGRAPH-FA89;Lo;0;L;618E;;;;N;;;;; -FA8A;CJK COMPATIBILITY IDEOGRAPH-FA8A;Lo;0;L;6160;;;;N;;;;; -FA8B;CJK COMPATIBILITY IDEOGRAPH-FA8B;Lo;0;L;61F2;;;;N;;;;; -FA8C;CJK COMPATIBILITY IDEOGRAPH-FA8C;Lo;0;L;6234;;;;N;;;;; -FA8D;CJK COMPATIBILITY IDEOGRAPH-FA8D;Lo;0;L;63C4;;;;N;;;;; -FA8E;CJK COMPATIBILITY IDEOGRAPH-FA8E;Lo;0;L;641C;;;;N;;;;; -FA8F;CJK COMPATIBILITY IDEOGRAPH-FA8F;Lo;0;L;6452;;;;N;;;;; -FA90;CJK COMPATIBILITY IDEOGRAPH-FA90;Lo;0;L;6556;;;;N;;;;; -FA91;CJK COMPATIBILITY IDEOGRAPH-FA91;Lo;0;L;6674;;;;N;;;;; -FA92;CJK COMPATIBILITY IDEOGRAPH-FA92;Lo;0;L;6717;;;;N;;;;; -FA93;CJK COMPATIBILITY IDEOGRAPH-FA93;Lo;0;L;671B;;;;N;;;;; -FA94;CJK COMPATIBILITY IDEOGRAPH-FA94;Lo;0;L;6756;;;;N;;;;; -FA95;CJK COMPATIBILITY IDEOGRAPH-FA95;Lo;0;L;6B79;;;;N;;;;; -FA96;CJK COMPATIBILITY IDEOGRAPH-FA96;Lo;0;L;6BBA;;;;N;;;;; -FA97;CJK COMPATIBILITY IDEOGRAPH-FA97;Lo;0;L;6D41;;;;N;;;;; -FA98;CJK COMPATIBILITY IDEOGRAPH-FA98;Lo;0;L;6EDB;;;;N;;;;; -FA99;CJK COMPATIBILITY IDEOGRAPH-FA99;Lo;0;L;6ECB;;;;N;;;;; -FA9A;CJK COMPATIBILITY IDEOGRAPH-FA9A;Lo;0;L;6F22;;;;N;;;;; -FA9B;CJK COMPATIBILITY IDEOGRAPH-FA9B;Lo;0;L;701E;;;;N;;;;; -FA9C;CJK COMPATIBILITY IDEOGRAPH-FA9C;Lo;0;L;716E;;;;N;;;;; -FA9D;CJK COMPATIBILITY IDEOGRAPH-FA9D;Lo;0;L;77A7;;;;N;;;;; -FA9E;CJK COMPATIBILITY IDEOGRAPH-FA9E;Lo;0;L;7235;;;;N;;;;; -FA9F;CJK COMPATIBILITY IDEOGRAPH-FA9F;Lo;0;L;72AF;;;;N;;;;; -FAA0;CJK COMPATIBILITY IDEOGRAPH-FAA0;Lo;0;L;732A;;;;N;;;;; -FAA1;CJK COMPATIBILITY IDEOGRAPH-FAA1;Lo;0;L;7471;;;;N;;;;; -FAA2;CJK COMPATIBILITY IDEOGRAPH-FAA2;Lo;0;L;7506;;;;N;;;;; -FAA3;CJK COMPATIBILITY IDEOGRAPH-FAA3;Lo;0;L;753B;;;;N;;;;; -FAA4;CJK COMPATIBILITY IDEOGRAPH-FAA4;Lo;0;L;761D;;;;N;;;;; -FAA5;CJK COMPATIBILITY IDEOGRAPH-FAA5;Lo;0;L;761F;;;;N;;;;; -FAA6;CJK COMPATIBILITY IDEOGRAPH-FAA6;Lo;0;L;76CA;;;;N;;;;; -FAA7;CJK COMPATIBILITY IDEOGRAPH-FAA7;Lo;0;L;76DB;;;;N;;;;; -FAA8;CJK COMPATIBILITY IDEOGRAPH-FAA8;Lo;0;L;76F4;;;;N;;;;; -FAA9;CJK COMPATIBILITY IDEOGRAPH-FAA9;Lo;0;L;774A;;;;N;;;;; -FAAA;CJK COMPATIBILITY IDEOGRAPH-FAAA;Lo;0;L;7740;;;;N;;;;; -FAAB;CJK COMPATIBILITY IDEOGRAPH-FAAB;Lo;0;L;78CC;;;;N;;;;; -FAAC;CJK COMPATIBILITY IDEOGRAPH-FAAC;Lo;0;L;7AB1;;;;N;;;;; -FAAD;CJK COMPATIBILITY IDEOGRAPH-FAAD;Lo;0;L;7BC0;;;;N;;;;; -FAAE;CJK COMPATIBILITY IDEOGRAPH-FAAE;Lo;0;L;7C7B;;;;N;;;;; -FAAF;CJK COMPATIBILITY IDEOGRAPH-FAAF;Lo;0;L;7D5B;;;;N;;;;; -FAB0;CJK COMPATIBILITY IDEOGRAPH-FAB0;Lo;0;L;7DF4;;;;N;;;;; -FAB1;CJK COMPATIBILITY IDEOGRAPH-FAB1;Lo;0;L;7F3E;;;;N;;;;; -FAB2;CJK COMPATIBILITY IDEOGRAPH-FAB2;Lo;0;L;8005;;;;N;;;;; -FAB3;CJK COMPATIBILITY IDEOGRAPH-FAB3;Lo;0;L;8352;;;;N;;;;; -FAB4;CJK COMPATIBILITY IDEOGRAPH-FAB4;Lo;0;L;83EF;;;;N;;;;; -FAB5;CJK COMPATIBILITY IDEOGRAPH-FAB5;Lo;0;L;8779;;;;N;;;;; -FAB6;CJK COMPATIBILITY IDEOGRAPH-FAB6;Lo;0;L;8941;;;;N;;;;; -FAB7;CJK COMPATIBILITY IDEOGRAPH-FAB7;Lo;0;L;8986;;;;N;;;;; -FAB8;CJK COMPATIBILITY IDEOGRAPH-FAB8;Lo;0;L;8996;;;;N;;;;; -FAB9;CJK COMPATIBILITY IDEOGRAPH-FAB9;Lo;0;L;8ABF;;;;N;;;;; -FABA;CJK COMPATIBILITY IDEOGRAPH-FABA;Lo;0;L;8AF8;;;;N;;;;; -FABB;CJK COMPATIBILITY IDEOGRAPH-FABB;Lo;0;L;8ACB;;;;N;;;;; -FABC;CJK COMPATIBILITY IDEOGRAPH-FABC;Lo;0;L;8B01;;;;N;;;;; -FABD;CJK COMPATIBILITY IDEOGRAPH-FABD;Lo;0;L;8AFE;;;;N;;;;; -FABE;CJK COMPATIBILITY IDEOGRAPH-FABE;Lo;0;L;8AED;;;;N;;;;; -FABF;CJK COMPATIBILITY IDEOGRAPH-FABF;Lo;0;L;8B39;;;;N;;;;; -FAC0;CJK COMPATIBILITY IDEOGRAPH-FAC0;Lo;0;L;8B8A;;;;N;;;;; -FAC1;CJK COMPATIBILITY IDEOGRAPH-FAC1;Lo;0;L;8D08;;;;N;;;;; -FAC2;CJK COMPATIBILITY IDEOGRAPH-FAC2;Lo;0;L;8F38;;;;N;;;;; -FAC3;CJK COMPATIBILITY IDEOGRAPH-FAC3;Lo;0;L;9072;;;;N;;;;; -FAC4;CJK COMPATIBILITY IDEOGRAPH-FAC4;Lo;0;L;9199;;;;N;;;;; -FAC5;CJK COMPATIBILITY IDEOGRAPH-FAC5;Lo;0;L;9276;;;;N;;;;; -FAC6;CJK COMPATIBILITY IDEOGRAPH-FAC6;Lo;0;L;967C;;;;N;;;;; -FAC7;CJK COMPATIBILITY IDEOGRAPH-FAC7;Lo;0;L;96E3;;;;N;;;;; -FAC8;CJK COMPATIBILITY IDEOGRAPH-FAC8;Lo;0;L;9756;;;;N;;;;; -FAC9;CJK COMPATIBILITY IDEOGRAPH-FAC9;Lo;0;L;97DB;;;;N;;;;; -FACA;CJK COMPATIBILITY IDEOGRAPH-FACA;Lo;0;L;97FF;;;;N;;;;; -FACB;CJK COMPATIBILITY IDEOGRAPH-FACB;Lo;0;L;980B;;;;N;;;;; -FACC;CJK COMPATIBILITY IDEOGRAPH-FACC;Lo;0;L;983B;;;;N;;;;; -FACD;CJK COMPATIBILITY IDEOGRAPH-FACD;Lo;0;L;9B12;;;;N;;;;; -FACE;CJK COMPATIBILITY IDEOGRAPH-FACE;Lo;0;L;9F9C;;;;N;;;;; -FACF;CJK COMPATIBILITY IDEOGRAPH-FACF;Lo;0;L;2284A;;;;N;;;;; -FAD0;CJK COMPATIBILITY IDEOGRAPH-FAD0;Lo;0;L;22844;;;;N;;;;; -FAD1;CJK COMPATIBILITY IDEOGRAPH-FAD1;Lo;0;L;233D5;;;;N;;;;; -FAD2;CJK COMPATIBILITY IDEOGRAPH-FAD2;Lo;0;L;3B9D;;;;N;;;;; -FAD3;CJK COMPATIBILITY IDEOGRAPH-FAD3;Lo;0;L;4018;;;;N;;;;; -FAD4;CJK COMPATIBILITY IDEOGRAPH-FAD4;Lo;0;L;4039;;;;N;;;;; -FAD5;CJK COMPATIBILITY IDEOGRAPH-FAD5;Lo;0;L;25249;;;;N;;;;; -FAD6;CJK COMPATIBILITY IDEOGRAPH-FAD6;Lo;0;L;25CD0;;;;N;;;;; -FAD7;CJK COMPATIBILITY IDEOGRAPH-FAD7;Lo;0;L;27ED3;;;;N;;;;; -FAD8;CJK COMPATIBILITY IDEOGRAPH-FAD8;Lo;0;L;9F43;;;;N;;;;; -FAD9;CJK COMPATIBILITY IDEOGRAPH-FAD9;Lo;0;L;9F8E;;;;N;;;;; -FB00;LATIN SMALL LIGATURE FF;Ll;0;L; 0066 0066;;;;N;;;;; -FB01;LATIN SMALL LIGATURE FI;Ll;0;L; 0066 0069;;;;N;;;;; -FB02;LATIN SMALL LIGATURE FL;Ll;0;L; 0066 006C;;;;N;;;;; -FB03;LATIN SMALL LIGATURE FFI;Ll;0;L; 0066 0066 0069;;;;N;;;;; -FB04;LATIN SMALL LIGATURE FFL;Ll;0;L; 0066 0066 006C;;;;N;;;;; -FB05;LATIN SMALL LIGATURE LONG S T;Ll;0;L; 017F 0074;;;;N;;;;; -FB06;LATIN SMALL LIGATURE ST;Ll;0;L; 0073 0074;;;;N;;;;; -FB13;ARMENIAN SMALL LIGATURE MEN NOW;Ll;0;L; 0574 0576;;;;N;;;;; -FB14;ARMENIAN SMALL LIGATURE MEN ECH;Ll;0;L; 0574 0565;;;;N;;;;; -FB15;ARMENIAN SMALL LIGATURE MEN INI;Ll;0;L; 0574 056B;;;;N;;;;; -FB16;ARMENIAN SMALL LIGATURE VEW NOW;Ll;0;L; 057E 0576;;;;N;;;;; -FB17;ARMENIAN SMALL LIGATURE MEN XEH;Ll;0;L; 0574 056D;;;;N;;;;; -FB1D;HEBREW LETTER YOD WITH HIRIQ;Lo;0;R;05D9 05B4;;;;N;;;;; -FB1E;HEBREW POINT JUDEO-SPANISH VARIKA;Mn;26;NSM;;;;;N;HEBREW POINT VARIKA;;;; -FB1F;HEBREW LIGATURE YIDDISH YOD YOD PATAH;Lo;0;R;05F2 05B7;;;;N;;;;; -FB20;HEBREW LETTER ALTERNATIVE AYIN;Lo;0;R; 05E2;;;;N;;;;; -FB21;HEBREW LETTER WIDE ALEF;Lo;0;R; 05D0;;;;N;;;;; -FB22;HEBREW LETTER WIDE DALET;Lo;0;R; 05D3;;;;N;;;;; -FB23;HEBREW LETTER WIDE HE;Lo;0;R; 05D4;;;;N;;;;; -FB24;HEBREW LETTER WIDE KAF;Lo;0;R; 05DB;;;;N;;;;; -FB25;HEBREW LETTER WIDE LAMED;Lo;0;R; 05DC;;;;N;;;;; -FB26;HEBREW LETTER WIDE FINAL MEM;Lo;0;R; 05DD;;;;N;;;;; -FB27;HEBREW LETTER WIDE RESH;Lo;0;R; 05E8;;;;N;;;;; -FB28;HEBREW LETTER WIDE TAV;Lo;0;R; 05EA;;;;N;;;;; -FB29;HEBREW LETTER ALTERNATIVE PLUS SIGN;Sm;0;ES; 002B;;;;N;;;;; -FB2A;HEBREW LETTER SHIN WITH SHIN DOT;Lo;0;R;05E9 05C1;;;;N;;;;; -FB2B;HEBREW LETTER SHIN WITH SIN DOT;Lo;0;R;05E9 05C2;;;;N;;;;; -FB2C;HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT;Lo;0;R;FB49 05C1;;;;N;;;;; -FB2D;HEBREW LETTER SHIN WITH DAGESH AND SIN DOT;Lo;0;R;FB49 05C2;;;;N;;;;; -FB2E;HEBREW LETTER ALEF WITH PATAH;Lo;0;R;05D0 05B7;;;;N;;;;; -FB2F;HEBREW LETTER ALEF WITH QAMATS;Lo;0;R;05D0 05B8;;;;N;;;;; -FB30;HEBREW LETTER ALEF WITH MAPIQ;Lo;0;R;05D0 05BC;;;;N;;;;; -FB31;HEBREW LETTER BET WITH DAGESH;Lo;0;R;05D1 05BC;;;;N;;;;; -FB32;HEBREW LETTER GIMEL WITH DAGESH;Lo;0;R;05D2 05BC;;;;N;;;;; -FB33;HEBREW LETTER DALET WITH DAGESH;Lo;0;R;05D3 05BC;;;;N;;;;; -FB34;HEBREW LETTER HE WITH MAPIQ;Lo;0;R;05D4 05BC;;;;N;;;;; -FB35;HEBREW LETTER VAV WITH DAGESH;Lo;0;R;05D5 05BC;;;;N;;;;; -FB36;HEBREW LETTER ZAYIN WITH DAGESH;Lo;0;R;05D6 05BC;;;;N;;;;; -FB38;HEBREW LETTER TET WITH DAGESH;Lo;0;R;05D8 05BC;;;;N;;;;; -FB39;HEBREW LETTER YOD WITH DAGESH;Lo;0;R;05D9 05BC;;;;N;;;;; -FB3A;HEBREW LETTER FINAL KAF WITH DAGESH;Lo;0;R;05DA 05BC;;;;N;;;;; -FB3B;HEBREW LETTER KAF WITH DAGESH;Lo;0;R;05DB 05BC;;;;N;;;;; -FB3C;HEBREW LETTER LAMED WITH DAGESH;Lo;0;R;05DC 05BC;;;;N;;;;; -FB3E;HEBREW LETTER MEM WITH DAGESH;Lo;0;R;05DE 05BC;;;;N;;;;; -FB40;HEBREW LETTER NUN WITH DAGESH;Lo;0;R;05E0 05BC;;;;N;;;;; -FB41;HEBREW LETTER SAMEKH WITH DAGESH;Lo;0;R;05E1 05BC;;;;N;;;;; -FB43;HEBREW LETTER FINAL PE WITH DAGESH;Lo;0;R;05E3 05BC;;;;N;;;;; -FB44;HEBREW LETTER PE WITH DAGESH;Lo;0;R;05E4 05BC;;;;N;;;;; -FB46;HEBREW LETTER TSADI WITH DAGESH;Lo;0;R;05E6 05BC;;;;N;;;;; -FB47;HEBREW LETTER QOF WITH DAGESH;Lo;0;R;05E7 05BC;;;;N;;;;; -FB48;HEBREW LETTER RESH WITH DAGESH;Lo;0;R;05E8 05BC;;;;N;;;;; -FB49;HEBREW LETTER SHIN WITH DAGESH;Lo;0;R;05E9 05BC;;;;N;;;;; -FB4A;HEBREW LETTER TAV WITH DAGESH;Lo;0;R;05EA 05BC;;;;N;;;;; -FB4B;HEBREW LETTER VAV WITH HOLAM;Lo;0;R;05D5 05B9;;;;N;;;;; -FB4C;HEBREW LETTER BET WITH RAFE;Lo;0;R;05D1 05BF;;;;N;;;;; -FB4D;HEBREW LETTER KAF WITH RAFE;Lo;0;R;05DB 05BF;;;;N;;;;; -FB4E;HEBREW LETTER PE WITH RAFE;Lo;0;R;05E4 05BF;;;;N;;;;; -FB4F;HEBREW LIGATURE ALEF LAMED;Lo;0;R; 05D0 05DC;;;;N;;;;; -FB50;ARABIC LETTER ALEF WASLA ISOLATED FORM;Lo;0;AL; 0671;;;;N;;;;; -FB51;ARABIC LETTER ALEF WASLA FINAL FORM;Lo;0;AL; 0671;;;;N;;;;; -FB52;ARABIC LETTER BEEH ISOLATED FORM;Lo;0;AL; 067B;;;;N;;;;; -FB53;ARABIC LETTER BEEH FINAL FORM;Lo;0;AL; 067B;;;;N;;;;; -FB54;ARABIC LETTER BEEH INITIAL FORM;Lo;0;AL; 067B;;;;N;;;;; -FB55;ARABIC LETTER BEEH MEDIAL FORM;Lo;0;AL; 067B;;;;N;;;;; -FB56;ARABIC LETTER PEH ISOLATED FORM;Lo;0;AL; 067E;;;;N;;;;; -FB57;ARABIC LETTER PEH FINAL FORM;Lo;0;AL; 067E;;;;N;;;;; -FB58;ARABIC LETTER PEH INITIAL FORM;Lo;0;AL; 067E;;;;N;;;;; -FB59;ARABIC LETTER PEH MEDIAL FORM;Lo;0;AL; 067E;;;;N;;;;; -FB5A;ARABIC LETTER BEHEH ISOLATED FORM;Lo;0;AL; 0680;;;;N;;;;; -FB5B;ARABIC LETTER BEHEH FINAL FORM;Lo;0;AL; 0680;;;;N;;;;; -FB5C;ARABIC LETTER BEHEH INITIAL FORM;Lo;0;AL; 0680;;;;N;;;;; -FB5D;ARABIC LETTER BEHEH MEDIAL FORM;Lo;0;AL; 0680;;;;N;;;;; -FB5E;ARABIC LETTER TTEHEH ISOLATED FORM;Lo;0;AL; 067A;;;;N;;;;; -FB5F;ARABIC LETTER TTEHEH FINAL FORM;Lo;0;AL; 067A;;;;N;;;;; -FB60;ARABIC LETTER TTEHEH INITIAL FORM;Lo;0;AL; 067A;;;;N;;;;; -FB61;ARABIC LETTER TTEHEH MEDIAL FORM;Lo;0;AL; 067A;;;;N;;;;; -FB62;ARABIC LETTER TEHEH ISOLATED FORM;Lo;0;AL; 067F;;;;N;;;;; -FB63;ARABIC LETTER TEHEH FINAL FORM;Lo;0;AL; 067F;;;;N;;;;; -FB64;ARABIC LETTER TEHEH INITIAL FORM;Lo;0;AL; 067F;;;;N;;;;; -FB65;ARABIC LETTER TEHEH MEDIAL FORM;Lo;0;AL; 067F;;;;N;;;;; -FB66;ARABIC LETTER TTEH ISOLATED FORM;Lo;0;AL; 0679;;;;N;;;;; -FB67;ARABIC LETTER TTEH FINAL FORM;Lo;0;AL; 0679;;;;N;;;;; -FB68;ARABIC LETTER TTEH INITIAL FORM;Lo;0;AL; 0679;;;;N;;;;; -FB69;ARABIC LETTER TTEH MEDIAL FORM;Lo;0;AL; 0679;;;;N;;;;; -FB6A;ARABIC LETTER VEH ISOLATED FORM;Lo;0;AL; 06A4;;;;N;;;;; -FB6B;ARABIC LETTER VEH FINAL FORM;Lo;0;AL; 06A4;;;;N;;;;; -FB6C;ARABIC LETTER VEH INITIAL FORM;Lo;0;AL; 06A4;;;;N;;;;; -FB6D;ARABIC LETTER VEH MEDIAL FORM;Lo;0;AL; 06A4;;;;N;;;;; -FB6E;ARABIC LETTER PEHEH ISOLATED FORM;Lo;0;AL; 06A6;;;;N;;;;; -FB6F;ARABIC LETTER PEHEH FINAL FORM;Lo;0;AL; 06A6;;;;N;;;;; -FB70;ARABIC LETTER PEHEH INITIAL FORM;Lo;0;AL; 06A6;;;;N;;;;; -FB71;ARABIC LETTER PEHEH MEDIAL FORM;Lo;0;AL; 06A6;;;;N;;;;; -FB72;ARABIC LETTER DYEH ISOLATED FORM;Lo;0;AL; 0684;;;;N;;;;; -FB73;ARABIC LETTER DYEH FINAL FORM;Lo;0;AL; 0684;;;;N;;;;; -FB74;ARABIC LETTER DYEH INITIAL FORM;Lo;0;AL; 0684;;;;N;;;;; -FB75;ARABIC LETTER DYEH MEDIAL FORM;Lo;0;AL; 0684;;;;N;;;;; -FB76;ARABIC LETTER NYEH ISOLATED FORM;Lo;0;AL; 0683;;;;N;;;;; -FB77;ARABIC LETTER NYEH FINAL FORM;Lo;0;AL; 0683;;;;N;;;;; -FB78;ARABIC LETTER NYEH INITIAL FORM;Lo;0;AL; 0683;;;;N;;;;; -FB79;ARABIC LETTER NYEH MEDIAL FORM;Lo;0;AL; 0683;;;;N;;;;; -FB7A;ARABIC LETTER TCHEH ISOLATED FORM;Lo;0;AL; 0686;;;;N;;;;; -FB7B;ARABIC LETTER TCHEH FINAL FORM;Lo;0;AL; 0686;;;;N;;;;; -FB7C;ARABIC LETTER TCHEH INITIAL FORM;Lo;0;AL; 0686;;;;N;;;;; -FB7D;ARABIC LETTER TCHEH MEDIAL FORM;Lo;0;AL; 0686;;;;N;;;;; -FB7E;ARABIC LETTER TCHEHEH ISOLATED FORM;Lo;0;AL; 0687;;;;N;;;;; -FB7F;ARABIC LETTER TCHEHEH FINAL FORM;Lo;0;AL; 0687;;;;N;;;;; -FB80;ARABIC LETTER TCHEHEH INITIAL FORM;Lo;0;AL; 0687;;;;N;;;;; -FB81;ARABIC LETTER TCHEHEH MEDIAL FORM;Lo;0;AL; 0687;;;;N;;;;; -FB82;ARABIC LETTER DDAHAL ISOLATED FORM;Lo;0;AL; 068D;;;;N;;;;; -FB83;ARABIC LETTER DDAHAL FINAL FORM;Lo;0;AL; 068D;;;;N;;;;; -FB84;ARABIC LETTER DAHAL ISOLATED FORM;Lo;0;AL; 068C;;;;N;;;;; -FB85;ARABIC LETTER DAHAL FINAL FORM;Lo;0;AL; 068C;;;;N;;;;; -FB86;ARABIC LETTER DUL ISOLATED FORM;Lo;0;AL; 068E;;;;N;;;;; -FB87;ARABIC LETTER DUL FINAL FORM;Lo;0;AL; 068E;;;;N;;;;; -FB88;ARABIC LETTER DDAL ISOLATED FORM;Lo;0;AL; 0688;;;;N;;;;; -FB89;ARABIC LETTER DDAL FINAL FORM;Lo;0;AL; 0688;;;;N;;;;; -FB8A;ARABIC LETTER JEH ISOLATED FORM;Lo;0;AL; 0698;;;;N;;;;; -FB8B;ARABIC LETTER JEH FINAL FORM;Lo;0;AL; 0698;;;;N;;;;; -FB8C;ARABIC LETTER RREH ISOLATED FORM;Lo;0;AL; 0691;;;;N;;;;; -FB8D;ARABIC LETTER RREH FINAL FORM;Lo;0;AL; 0691;;;;N;;;;; -FB8E;ARABIC LETTER KEHEH ISOLATED FORM;Lo;0;AL; 06A9;;;;N;;;;; -FB8F;ARABIC LETTER KEHEH FINAL FORM;Lo;0;AL; 06A9;;;;N;;;;; -FB90;ARABIC LETTER KEHEH INITIAL FORM;Lo;0;AL; 06A9;;;;N;;;;; -FB91;ARABIC LETTER KEHEH MEDIAL FORM;Lo;0;AL; 06A9;;;;N;;;;; -FB92;ARABIC LETTER GAF ISOLATED FORM;Lo;0;AL; 06AF;;;;N;;;;; -FB93;ARABIC LETTER GAF FINAL FORM;Lo;0;AL; 06AF;;;;N;;;;; -FB94;ARABIC LETTER GAF INITIAL FORM;Lo;0;AL; 06AF;;;;N;;;;; -FB95;ARABIC LETTER GAF MEDIAL FORM;Lo;0;AL; 06AF;;;;N;;;;; -FB96;ARABIC LETTER GUEH ISOLATED FORM;Lo;0;AL; 06B3;;;;N;;;;; -FB97;ARABIC LETTER GUEH FINAL FORM;Lo;0;AL; 06B3;;;;N;;;;; -FB98;ARABIC LETTER GUEH INITIAL FORM;Lo;0;AL; 06B3;;;;N;;;;; -FB99;ARABIC LETTER GUEH MEDIAL FORM;Lo;0;AL; 06B3;;;;N;;;;; -FB9A;ARABIC LETTER NGOEH ISOLATED FORM;Lo;0;AL; 06B1;;;;N;;;;; -FB9B;ARABIC LETTER NGOEH FINAL FORM;Lo;0;AL; 06B1;;;;N;;;;; -FB9C;ARABIC LETTER NGOEH INITIAL FORM;Lo;0;AL; 06B1;;;;N;;;;; -FB9D;ARABIC LETTER NGOEH MEDIAL FORM;Lo;0;AL; 06B1;;;;N;;;;; -FB9E;ARABIC LETTER NOON GHUNNA ISOLATED FORM;Lo;0;AL; 06BA;;;;N;;;;; -FB9F;ARABIC LETTER NOON GHUNNA FINAL FORM;Lo;0;AL; 06BA;;;;N;;;;; -FBA0;ARABIC LETTER RNOON ISOLATED FORM;Lo;0;AL; 06BB;;;;N;;;;; -FBA1;ARABIC LETTER RNOON FINAL FORM;Lo;0;AL; 06BB;;;;N;;;;; -FBA2;ARABIC LETTER RNOON INITIAL FORM;Lo;0;AL; 06BB;;;;N;;;;; -FBA3;ARABIC LETTER RNOON MEDIAL FORM;Lo;0;AL; 06BB;;;;N;;;;; -FBA4;ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM;Lo;0;AL; 06C0;;;;N;;;;; -FBA5;ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM;Lo;0;AL; 06C0;;;;N;;;;; -FBA6;ARABIC LETTER HEH GOAL ISOLATED FORM;Lo;0;AL; 06C1;;;;N;;;;; -FBA7;ARABIC LETTER HEH GOAL FINAL FORM;Lo;0;AL; 06C1;;;;N;;;;; -FBA8;ARABIC LETTER HEH GOAL INITIAL FORM;Lo;0;AL; 06C1;;;;N;;;;; -FBA9;ARABIC LETTER HEH GOAL MEDIAL FORM;Lo;0;AL; 06C1;;;;N;;;;; -FBAA;ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM;Lo;0;AL; 06BE;;;;N;;;;; -FBAB;ARABIC LETTER HEH DOACHASHMEE FINAL FORM;Lo;0;AL; 06BE;;;;N;;;;; -FBAC;ARABIC LETTER HEH DOACHASHMEE INITIAL FORM;Lo;0;AL; 06BE;;;;N;;;;; -FBAD;ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM;Lo;0;AL; 06BE;;;;N;;;;; -FBAE;ARABIC LETTER YEH BARREE ISOLATED FORM;Lo;0;AL; 06D2;;;;N;;;;; -FBAF;ARABIC LETTER YEH BARREE FINAL FORM;Lo;0;AL; 06D2;;;;N;;;;; -FBB0;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL; 06D3;;;;N;;;;; -FBB1;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM;Lo;0;AL; 06D3;;;;N;;;;; -FBD3;ARABIC LETTER NG ISOLATED FORM;Lo;0;AL; 06AD;;;;N;;;;; -FBD4;ARABIC LETTER NG FINAL FORM;Lo;0;AL; 06AD;;;;N;;;;; -FBD5;ARABIC LETTER NG INITIAL FORM;Lo;0;AL; 06AD;;;;N;;;;; -FBD6;ARABIC LETTER NG MEDIAL FORM;Lo;0;AL; 06AD;;;;N;;;;; -FBD7;ARABIC LETTER U ISOLATED FORM;Lo;0;AL; 06C7;;;;N;;;;; -FBD8;ARABIC LETTER U FINAL FORM;Lo;0;AL; 06C7;;;;N;;;;; -FBD9;ARABIC LETTER OE ISOLATED FORM;Lo;0;AL; 06C6;;;;N;;;;; -FBDA;ARABIC LETTER OE FINAL FORM;Lo;0;AL; 06C6;;;;N;;;;; -FBDB;ARABIC LETTER YU ISOLATED FORM;Lo;0;AL; 06C8;;;;N;;;;; -FBDC;ARABIC LETTER YU FINAL FORM;Lo;0;AL; 06C8;;;;N;;;;; -FBDD;ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL; 0677;;;;N;;;;; -FBDE;ARABIC LETTER VE ISOLATED FORM;Lo;0;AL; 06CB;;;;N;;;;; -FBDF;ARABIC LETTER VE FINAL FORM;Lo;0;AL; 06CB;;;;N;;;;; -FBE0;ARABIC LETTER KIRGHIZ OE ISOLATED FORM;Lo;0;AL; 06C5;;;;N;;;;; -FBE1;ARABIC LETTER KIRGHIZ OE FINAL FORM;Lo;0;AL; 06C5;;;;N;;;;; -FBE2;ARABIC LETTER KIRGHIZ YU ISOLATED FORM;Lo;0;AL; 06C9;;;;N;;;;; -FBE3;ARABIC LETTER KIRGHIZ YU FINAL FORM;Lo;0;AL; 06C9;;;;N;;;;; -FBE4;ARABIC LETTER E ISOLATED FORM;Lo;0;AL; 06D0;;;;N;;;;; -FBE5;ARABIC LETTER E FINAL FORM;Lo;0;AL; 06D0;;;;N;;;;; -FBE6;ARABIC LETTER E INITIAL FORM;Lo;0;AL; 06D0;;;;N;;;;; -FBE7;ARABIC LETTER E MEDIAL FORM;Lo;0;AL; 06D0;;;;N;;;;; -FBE8;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM;Lo;0;AL; 0649;;;;N;;;;; -FBE9;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM;Lo;0;AL; 0649;;;;N;;;;; -FBEA;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM;Lo;0;AL; 0626 0627;;;;N;;;;; -FBEB;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM;Lo;0;AL; 0626 0627;;;;N;;;;; -FBEC;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM;Lo;0;AL; 0626 06D5;;;;N;;;;; -FBED;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM;Lo;0;AL; 0626 06D5;;;;N;;;;; -FBEE;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM;Lo;0;AL; 0626 0648;;;;N;;;;; -FBEF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM;Lo;0;AL; 0626 0648;;;;N;;;;; -FBF0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM;Lo;0;AL; 0626 06C7;;;;N;;;;; -FBF1;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM;Lo;0;AL; 0626 06C7;;;;N;;;;; -FBF2;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM;Lo;0;AL; 0626 06C6;;;;N;;;;; -FBF3;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM;Lo;0;AL; 0626 06C6;;;;N;;;;; -FBF4;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM;Lo;0;AL; 0626 06C8;;;;N;;;;; -FBF5;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM;Lo;0;AL; 0626 06C8;;;;N;;;;; -FBF6;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM;Lo;0;AL; 0626 06D0;;;;N;;;;; -FBF7;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM;Lo;0;AL; 0626 06D0;;;;N;;;;; -FBF8;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM;Lo;0;AL; 0626 06D0;;;;N;;;;; -FBF9;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0626 0649;;;;N;;;;; -FBFA;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0626 0649;;;;N;;;;; -FBFB;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM;Lo;0;AL; 0626 0649;;;;N;;;;; -FBFC;ARABIC LETTER FARSI YEH ISOLATED FORM;Lo;0;AL; 06CC;;;;N;;;;; -FBFD;ARABIC LETTER FARSI YEH FINAL FORM;Lo;0;AL; 06CC;;;;N;;;;; -FBFE;ARABIC LETTER FARSI YEH INITIAL FORM;Lo;0;AL; 06CC;;;;N;;;;; -FBFF;ARABIC LETTER FARSI YEH MEDIAL FORM;Lo;0;AL; 06CC;;;;N;;;;; -FC00;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM;Lo;0;AL; 0626 062C;;;;N;;;;; -FC01;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM;Lo;0;AL; 0626 062D;;;;N;;;;; -FC02;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM;Lo;0;AL; 0626 0645;;;;N;;;;; -FC03;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0626 0649;;;;N;;;;; -FC04;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM;Lo;0;AL; 0626 064A;;;;N;;;;; -FC05;ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM;Lo;0;AL; 0628 062C;;;;N;;;;; -FC06;ARABIC LIGATURE BEH WITH HAH ISOLATED FORM;Lo;0;AL; 0628 062D;;;;N;;;;; -FC07;ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM;Lo;0;AL; 0628 062E;;;;N;;;;; -FC08;ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM;Lo;0;AL; 0628 0645;;;;N;;;;; -FC09;ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0628 0649;;;;N;;;;; -FC0A;ARABIC LIGATURE BEH WITH YEH ISOLATED FORM;Lo;0;AL; 0628 064A;;;;N;;;;; -FC0B;ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM;Lo;0;AL; 062A 062C;;;;N;;;;; -FC0C;ARABIC LIGATURE TEH WITH HAH ISOLATED FORM;Lo;0;AL; 062A 062D;;;;N;;;;; -FC0D;ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM;Lo;0;AL; 062A 062E;;;;N;;;;; -FC0E;ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM;Lo;0;AL; 062A 0645;;;;N;;;;; -FC0F;ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 062A 0649;;;;N;;;;; -FC10;ARABIC LIGATURE TEH WITH YEH ISOLATED FORM;Lo;0;AL; 062A 064A;;;;N;;;;; -FC11;ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM;Lo;0;AL; 062B 062C;;;;N;;;;; -FC12;ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM;Lo;0;AL; 062B 0645;;;;N;;;;; -FC13;ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 062B 0649;;;;N;;;;; -FC14;ARABIC LIGATURE THEH WITH YEH ISOLATED FORM;Lo;0;AL; 062B 064A;;;;N;;;;; -FC15;ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM;Lo;0;AL; 062C 062D;;;;N;;;;; -FC16;ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM;Lo;0;AL; 062C 0645;;;;N;;;;; -FC17;ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM;Lo;0;AL; 062D 062C;;;;N;;;;; -FC18;ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM;Lo;0;AL; 062D 0645;;;;N;;;;; -FC19;ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM;Lo;0;AL; 062E 062C;;;;N;;;;; -FC1A;ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM;Lo;0;AL; 062E 062D;;;;N;;;;; -FC1B;ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM;Lo;0;AL; 062E 0645;;;;N;;;;; -FC1C;ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM;Lo;0;AL; 0633 062C;;;;N;;;;; -FC1D;ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM;Lo;0;AL; 0633 062D;;;;N;;;;; -FC1E;ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM;Lo;0;AL; 0633 062E;;;;N;;;;; -FC1F;ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM;Lo;0;AL; 0633 0645;;;;N;;;;; -FC20;ARABIC LIGATURE SAD WITH HAH ISOLATED FORM;Lo;0;AL; 0635 062D;;;;N;;;;; -FC21;ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM;Lo;0;AL; 0635 0645;;;;N;;;;; -FC22;ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM;Lo;0;AL; 0636 062C;;;;N;;;;; -FC23;ARABIC LIGATURE DAD WITH HAH ISOLATED FORM;Lo;0;AL; 0636 062D;;;;N;;;;; -FC24;ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM;Lo;0;AL; 0636 062E;;;;N;;;;; -FC25;ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM;Lo;0;AL; 0636 0645;;;;N;;;;; -FC26;ARABIC LIGATURE TAH WITH HAH ISOLATED FORM;Lo;0;AL; 0637 062D;;;;N;;;;; -FC27;ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM;Lo;0;AL; 0637 0645;;;;N;;;;; -FC28;ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM;Lo;0;AL; 0638 0645;;;;N;;;;; -FC29;ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM;Lo;0;AL; 0639 062C;;;;N;;;;; -FC2A;ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM;Lo;0;AL; 0639 0645;;;;N;;;;; -FC2B;ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM;Lo;0;AL; 063A 062C;;;;N;;;;; -FC2C;ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM;Lo;0;AL; 063A 0645;;;;N;;;;; -FC2D;ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM;Lo;0;AL; 0641 062C;;;;N;;;;; -FC2E;ARABIC LIGATURE FEH WITH HAH ISOLATED FORM;Lo;0;AL; 0641 062D;;;;N;;;;; -FC2F;ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM;Lo;0;AL; 0641 062E;;;;N;;;;; -FC30;ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM;Lo;0;AL; 0641 0645;;;;N;;;;; -FC31;ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0641 0649;;;;N;;;;; -FC32;ARABIC LIGATURE FEH WITH YEH ISOLATED FORM;Lo;0;AL; 0641 064A;;;;N;;;;; -FC33;ARABIC LIGATURE QAF WITH HAH ISOLATED FORM;Lo;0;AL; 0642 062D;;;;N;;;;; -FC34;ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM;Lo;0;AL; 0642 0645;;;;N;;;;; -FC35;ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0642 0649;;;;N;;;;; -FC36;ARABIC LIGATURE QAF WITH YEH ISOLATED FORM;Lo;0;AL; 0642 064A;;;;N;;;;; -FC37;ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM;Lo;0;AL; 0643 0627;;;;N;;;;; -FC38;ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM;Lo;0;AL; 0643 062C;;;;N;;;;; -FC39;ARABIC LIGATURE KAF WITH HAH ISOLATED FORM;Lo;0;AL; 0643 062D;;;;N;;;;; -FC3A;ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM;Lo;0;AL; 0643 062E;;;;N;;;;; -FC3B;ARABIC LIGATURE KAF WITH LAM ISOLATED FORM;Lo;0;AL; 0643 0644;;;;N;;;;; -FC3C;ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM;Lo;0;AL; 0643 0645;;;;N;;;;; -FC3D;ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0643 0649;;;;N;;;;; -FC3E;ARABIC LIGATURE KAF WITH YEH ISOLATED FORM;Lo;0;AL; 0643 064A;;;;N;;;;; -FC3F;ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM;Lo;0;AL; 0644 062C;;;;N;;;;; -FC40;ARABIC LIGATURE LAM WITH HAH ISOLATED FORM;Lo;0;AL; 0644 062D;;;;N;;;;; -FC41;ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM;Lo;0;AL; 0644 062E;;;;N;;;;; -FC42;ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM;Lo;0;AL; 0644 0645;;;;N;;;;; -FC43;ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0644 0649;;;;N;;;;; -FC44;ARABIC LIGATURE LAM WITH YEH ISOLATED FORM;Lo;0;AL; 0644 064A;;;;N;;;;; -FC45;ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM;Lo;0;AL; 0645 062C;;;;N;;;;; -FC46;ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM;Lo;0;AL; 0645 062D;;;;N;;;;; -FC47;ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM;Lo;0;AL; 0645 062E;;;;N;;;;; -FC48;ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM;Lo;0;AL; 0645 0645;;;;N;;;;; -FC49;ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0645 0649;;;;N;;;;; -FC4A;ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM;Lo;0;AL; 0645 064A;;;;N;;;;; -FC4B;ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM;Lo;0;AL; 0646 062C;;;;N;;;;; -FC4C;ARABIC LIGATURE NOON WITH HAH ISOLATED FORM;Lo;0;AL; 0646 062D;;;;N;;;;; -FC4D;ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM;Lo;0;AL; 0646 062E;;;;N;;;;; -FC4E;ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM;Lo;0;AL; 0646 0645;;;;N;;;;; -FC4F;ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0646 0649;;;;N;;;;; -FC50;ARABIC LIGATURE NOON WITH YEH ISOLATED FORM;Lo;0;AL; 0646 064A;;;;N;;;;; -FC51;ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM;Lo;0;AL; 0647 062C;;;;N;;;;; -FC52;ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM;Lo;0;AL; 0647 0645;;;;N;;;;; -FC53;ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0647 0649;;;;N;;;;; -FC54;ARABIC LIGATURE HEH WITH YEH ISOLATED FORM;Lo;0;AL; 0647 064A;;;;N;;;;; -FC55;ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM;Lo;0;AL; 064A 062C;;;;N;;;;; -FC56;ARABIC LIGATURE YEH WITH HAH ISOLATED FORM;Lo;0;AL; 064A 062D;;;;N;;;;; -FC57;ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM;Lo;0;AL; 064A 062E;;;;N;;;;; -FC58;ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM;Lo;0;AL; 064A 0645;;;;N;;;;; -FC59;ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 064A 0649;;;;N;;;;; -FC5A;ARABIC LIGATURE YEH WITH YEH ISOLATED FORM;Lo;0;AL; 064A 064A;;;;N;;;;; -FC5B;ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL; 0630 0670;;;;N;;;;; -FC5C;ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL; 0631 0670;;;;N;;;;; -FC5D;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL; 0649 0670;;;;N;;;;; -FC5E;ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM;Lo;0;AL; 0020 064C 0651;;;;N;;;;; -FC5F;ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM;Lo;0;AL; 0020 064D 0651;;;;N;;;;; -FC60;ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM;Lo;0;AL; 0020 064E 0651;;;;N;;;;; -FC61;ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM;Lo;0;AL; 0020 064F 0651;;;;N;;;;; -FC62;ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM;Lo;0;AL; 0020 0650 0651;;;;N;;;;; -FC63;ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL; 0020 0651 0670;;;;N;;;;; -FC64;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM;Lo;0;AL; 0626 0631;;;;N;;;;; -FC65;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM;Lo;0;AL; 0626 0632;;;;N;;;;; -FC66;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM;Lo;0;AL; 0626 0645;;;;N;;;;; -FC67;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM;Lo;0;AL; 0626 0646;;;;N;;;;; -FC68;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0626 0649;;;;N;;;;; -FC69;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM;Lo;0;AL; 0626 064A;;;;N;;;;; -FC6A;ARABIC LIGATURE BEH WITH REH FINAL FORM;Lo;0;AL; 0628 0631;;;;N;;;;; -FC6B;ARABIC LIGATURE BEH WITH ZAIN FINAL FORM;Lo;0;AL; 0628 0632;;;;N;;;;; -FC6C;ARABIC LIGATURE BEH WITH MEEM FINAL FORM;Lo;0;AL; 0628 0645;;;;N;;;;; -FC6D;ARABIC LIGATURE BEH WITH NOON FINAL FORM;Lo;0;AL; 0628 0646;;;;N;;;;; -FC6E;ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0628 0649;;;;N;;;;; -FC6F;ARABIC LIGATURE BEH WITH YEH FINAL FORM;Lo;0;AL; 0628 064A;;;;N;;;;; -FC70;ARABIC LIGATURE TEH WITH REH FINAL FORM;Lo;0;AL; 062A 0631;;;;N;;;;; -FC71;ARABIC LIGATURE TEH WITH ZAIN FINAL FORM;Lo;0;AL; 062A 0632;;;;N;;;;; -FC72;ARABIC LIGATURE TEH WITH MEEM FINAL FORM;Lo;0;AL; 062A 0645;;;;N;;;;; -FC73;ARABIC LIGATURE TEH WITH NOON FINAL FORM;Lo;0;AL; 062A 0646;;;;N;;;;; -FC74;ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062A 0649;;;;N;;;;; -FC75;ARABIC LIGATURE TEH WITH YEH FINAL FORM;Lo;0;AL; 062A 064A;;;;N;;;;; -FC76;ARABIC LIGATURE THEH WITH REH FINAL FORM;Lo;0;AL; 062B 0631;;;;N;;;;; -FC77;ARABIC LIGATURE THEH WITH ZAIN FINAL FORM;Lo;0;AL; 062B 0632;;;;N;;;;; -FC78;ARABIC LIGATURE THEH WITH MEEM FINAL FORM;Lo;0;AL; 062B 0645;;;;N;;;;; -FC79;ARABIC LIGATURE THEH WITH NOON FINAL FORM;Lo;0;AL; 062B 0646;;;;N;;;;; -FC7A;ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062B 0649;;;;N;;;;; -FC7B;ARABIC LIGATURE THEH WITH YEH FINAL FORM;Lo;0;AL; 062B 064A;;;;N;;;;; -FC7C;ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0641 0649;;;;N;;;;; -FC7D;ARABIC LIGATURE FEH WITH YEH FINAL FORM;Lo;0;AL; 0641 064A;;;;N;;;;; -FC7E;ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0642 0649;;;;N;;;;; -FC7F;ARABIC LIGATURE QAF WITH YEH FINAL FORM;Lo;0;AL; 0642 064A;;;;N;;;;; -FC80;ARABIC LIGATURE KAF WITH ALEF FINAL FORM;Lo;0;AL; 0643 0627;;;;N;;;;; -FC81;ARABIC LIGATURE KAF WITH LAM FINAL FORM;Lo;0;AL; 0643 0644;;;;N;;;;; -FC82;ARABIC LIGATURE KAF WITH MEEM FINAL FORM;Lo;0;AL; 0643 0645;;;;N;;;;; -FC83;ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0643 0649;;;;N;;;;; -FC84;ARABIC LIGATURE KAF WITH YEH FINAL FORM;Lo;0;AL; 0643 064A;;;;N;;;;; -FC85;ARABIC LIGATURE LAM WITH MEEM FINAL FORM;Lo;0;AL; 0644 0645;;;;N;;;;; -FC86;ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0644 0649;;;;N;;;;; -FC87;ARABIC LIGATURE LAM WITH YEH FINAL FORM;Lo;0;AL; 0644 064A;;;;N;;;;; -FC88;ARABIC LIGATURE MEEM WITH ALEF FINAL FORM;Lo;0;AL; 0645 0627;;;;N;;;;; -FC89;ARABIC LIGATURE MEEM WITH MEEM FINAL FORM;Lo;0;AL; 0645 0645;;;;N;;;;; -FC8A;ARABIC LIGATURE NOON WITH REH FINAL FORM;Lo;0;AL; 0646 0631;;;;N;;;;; -FC8B;ARABIC LIGATURE NOON WITH ZAIN FINAL FORM;Lo;0;AL; 0646 0632;;;;N;;;;; -FC8C;ARABIC LIGATURE NOON WITH MEEM FINAL FORM;Lo;0;AL; 0646 0645;;;;N;;;;; -FC8D;ARABIC LIGATURE NOON WITH NOON FINAL FORM;Lo;0;AL; 0646 0646;;;;N;;;;; -FC8E;ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0646 0649;;;;N;;;;; -FC8F;ARABIC LIGATURE NOON WITH YEH FINAL FORM;Lo;0;AL; 0646 064A;;;;N;;;;; -FC90;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM;Lo;0;AL; 0649 0670;;;;N;;;;; -FC91;ARABIC LIGATURE YEH WITH REH FINAL FORM;Lo;0;AL; 064A 0631;;;;N;;;;; -FC92;ARABIC LIGATURE YEH WITH ZAIN FINAL FORM;Lo;0;AL; 064A 0632;;;;N;;;;; -FC93;ARABIC LIGATURE YEH WITH MEEM FINAL FORM;Lo;0;AL; 064A 0645;;;;N;;;;; -FC94;ARABIC LIGATURE YEH WITH NOON FINAL FORM;Lo;0;AL; 064A 0646;;;;N;;;;; -FC95;ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 064A 0649;;;;N;;;;; -FC96;ARABIC LIGATURE YEH WITH YEH FINAL FORM;Lo;0;AL; 064A 064A;;;;N;;;;; -FC97;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM;Lo;0;AL; 0626 062C;;;;N;;;;; -FC98;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM;Lo;0;AL; 0626 062D;;;;N;;;;; -FC99;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM;Lo;0;AL; 0626 062E;;;;N;;;;; -FC9A;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM;Lo;0;AL; 0626 0645;;;;N;;;;; -FC9B;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM;Lo;0;AL; 0626 0647;;;;N;;;;; -FC9C;ARABIC LIGATURE BEH WITH JEEM INITIAL FORM;Lo;0;AL; 0628 062C;;;;N;;;;; -FC9D;ARABIC LIGATURE BEH WITH HAH INITIAL FORM;Lo;0;AL; 0628 062D;;;;N;;;;; -FC9E;ARABIC LIGATURE BEH WITH KHAH INITIAL FORM;Lo;0;AL; 0628 062E;;;;N;;;;; -FC9F;ARABIC LIGATURE BEH WITH MEEM INITIAL FORM;Lo;0;AL; 0628 0645;;;;N;;;;; -FCA0;ARABIC LIGATURE BEH WITH HEH INITIAL FORM;Lo;0;AL; 0628 0647;;;;N;;;;; -FCA1;ARABIC LIGATURE TEH WITH JEEM INITIAL FORM;Lo;0;AL; 062A 062C;;;;N;;;;; -FCA2;ARABIC LIGATURE TEH WITH HAH INITIAL FORM;Lo;0;AL; 062A 062D;;;;N;;;;; -FCA3;ARABIC LIGATURE TEH WITH KHAH INITIAL FORM;Lo;0;AL; 062A 062E;;;;N;;;;; -FCA4;ARABIC LIGATURE TEH WITH MEEM INITIAL FORM;Lo;0;AL; 062A 0645;;;;N;;;;; -FCA5;ARABIC LIGATURE TEH WITH HEH INITIAL FORM;Lo;0;AL; 062A 0647;;;;N;;;;; -FCA6;ARABIC LIGATURE THEH WITH MEEM INITIAL FORM;Lo;0;AL; 062B 0645;;;;N;;;;; -FCA7;ARABIC LIGATURE JEEM WITH HAH INITIAL FORM;Lo;0;AL; 062C 062D;;;;N;;;;; -FCA8;ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM;Lo;0;AL; 062C 0645;;;;N;;;;; -FCA9;ARABIC LIGATURE HAH WITH JEEM INITIAL FORM;Lo;0;AL; 062D 062C;;;;N;;;;; -FCAA;ARABIC LIGATURE HAH WITH MEEM INITIAL FORM;Lo;0;AL; 062D 0645;;;;N;;;;; -FCAB;ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM;Lo;0;AL; 062E 062C;;;;N;;;;; -FCAC;ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM;Lo;0;AL; 062E 0645;;;;N;;;;; -FCAD;ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM;Lo;0;AL; 0633 062C;;;;N;;;;; -FCAE;ARABIC LIGATURE SEEN WITH HAH INITIAL FORM;Lo;0;AL; 0633 062D;;;;N;;;;; -FCAF;ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM;Lo;0;AL; 0633 062E;;;;N;;;;; -FCB0;ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM;Lo;0;AL; 0633 0645;;;;N;;;;; -FCB1;ARABIC LIGATURE SAD WITH HAH INITIAL FORM;Lo;0;AL; 0635 062D;;;;N;;;;; -FCB2;ARABIC LIGATURE SAD WITH KHAH INITIAL FORM;Lo;0;AL; 0635 062E;;;;N;;;;; -FCB3;ARABIC LIGATURE SAD WITH MEEM INITIAL FORM;Lo;0;AL; 0635 0645;;;;N;;;;; -FCB4;ARABIC LIGATURE DAD WITH JEEM INITIAL FORM;Lo;0;AL; 0636 062C;;;;N;;;;; -FCB5;ARABIC LIGATURE DAD WITH HAH INITIAL FORM;Lo;0;AL; 0636 062D;;;;N;;;;; -FCB6;ARABIC LIGATURE DAD WITH KHAH INITIAL FORM;Lo;0;AL; 0636 062E;;;;N;;;;; -FCB7;ARABIC LIGATURE DAD WITH MEEM INITIAL FORM;Lo;0;AL; 0636 0645;;;;N;;;;; -FCB8;ARABIC LIGATURE TAH WITH HAH INITIAL FORM;Lo;0;AL; 0637 062D;;;;N;;;;; -FCB9;ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM;Lo;0;AL; 0638 0645;;;;N;;;;; -FCBA;ARABIC LIGATURE AIN WITH JEEM INITIAL FORM;Lo;0;AL; 0639 062C;;;;N;;;;; -FCBB;ARABIC LIGATURE AIN WITH MEEM INITIAL FORM;Lo;0;AL; 0639 0645;;;;N;;;;; -FCBC;ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM;Lo;0;AL; 063A 062C;;;;N;;;;; -FCBD;ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM;Lo;0;AL; 063A 0645;;;;N;;;;; -FCBE;ARABIC LIGATURE FEH WITH JEEM INITIAL FORM;Lo;0;AL; 0641 062C;;;;N;;;;; -FCBF;ARABIC LIGATURE FEH WITH HAH INITIAL FORM;Lo;0;AL; 0641 062D;;;;N;;;;; -FCC0;ARABIC LIGATURE FEH WITH KHAH INITIAL FORM;Lo;0;AL; 0641 062E;;;;N;;;;; -FCC1;ARABIC LIGATURE FEH WITH MEEM INITIAL FORM;Lo;0;AL; 0641 0645;;;;N;;;;; -FCC2;ARABIC LIGATURE QAF WITH HAH INITIAL FORM;Lo;0;AL; 0642 062D;;;;N;;;;; -FCC3;ARABIC LIGATURE QAF WITH MEEM INITIAL FORM;Lo;0;AL; 0642 0645;;;;N;;;;; -FCC4;ARABIC LIGATURE KAF WITH JEEM INITIAL FORM;Lo;0;AL; 0643 062C;;;;N;;;;; -FCC5;ARABIC LIGATURE KAF WITH HAH INITIAL FORM;Lo;0;AL; 0643 062D;;;;N;;;;; -FCC6;ARABIC LIGATURE KAF WITH KHAH INITIAL FORM;Lo;0;AL; 0643 062E;;;;N;;;;; -FCC7;ARABIC LIGATURE KAF WITH LAM INITIAL FORM;Lo;0;AL; 0643 0644;;;;N;;;;; -FCC8;ARABIC LIGATURE KAF WITH MEEM INITIAL FORM;Lo;0;AL; 0643 0645;;;;N;;;;; -FCC9;ARABIC LIGATURE LAM WITH JEEM INITIAL FORM;Lo;0;AL; 0644 062C;;;;N;;;;; -FCCA;ARABIC LIGATURE LAM WITH HAH INITIAL FORM;Lo;0;AL; 0644 062D;;;;N;;;;; -FCCB;ARABIC LIGATURE LAM WITH KHAH INITIAL FORM;Lo;0;AL; 0644 062E;;;;N;;;;; -FCCC;ARABIC LIGATURE LAM WITH MEEM INITIAL FORM;Lo;0;AL; 0644 0645;;;;N;;;;; -FCCD;ARABIC LIGATURE LAM WITH HEH INITIAL FORM;Lo;0;AL; 0644 0647;;;;N;;;;; -FCCE;ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM;Lo;0;AL; 0645 062C;;;;N;;;;; -FCCF;ARABIC LIGATURE MEEM WITH HAH INITIAL FORM;Lo;0;AL; 0645 062D;;;;N;;;;; -FCD0;ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM;Lo;0;AL; 0645 062E;;;;N;;;;; -FCD1;ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0645 0645;;;;N;;;;; -FCD2;ARABIC LIGATURE NOON WITH JEEM INITIAL FORM;Lo;0;AL; 0646 062C;;;;N;;;;; -FCD3;ARABIC LIGATURE NOON WITH HAH INITIAL FORM;Lo;0;AL; 0646 062D;;;;N;;;;; -FCD4;ARABIC LIGATURE NOON WITH KHAH INITIAL FORM;Lo;0;AL; 0646 062E;;;;N;;;;; -FCD5;ARABIC LIGATURE NOON WITH MEEM INITIAL FORM;Lo;0;AL; 0646 0645;;;;N;;;;; -FCD6;ARABIC LIGATURE NOON WITH HEH INITIAL FORM;Lo;0;AL; 0646 0647;;;;N;;;;; -FCD7;ARABIC LIGATURE HEH WITH JEEM INITIAL FORM;Lo;0;AL; 0647 062C;;;;N;;;;; -FCD8;ARABIC LIGATURE HEH WITH MEEM INITIAL FORM;Lo;0;AL; 0647 0645;;;;N;;;;; -FCD9;ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM;Lo;0;AL; 0647 0670;;;;N;;;;; -FCDA;ARABIC LIGATURE YEH WITH JEEM INITIAL FORM;Lo;0;AL; 064A 062C;;;;N;;;;; -FCDB;ARABIC LIGATURE YEH WITH HAH INITIAL FORM;Lo;0;AL; 064A 062D;;;;N;;;;; -FCDC;ARABIC LIGATURE YEH WITH KHAH INITIAL FORM;Lo;0;AL; 064A 062E;;;;N;;;;; -FCDD;ARABIC LIGATURE YEH WITH MEEM INITIAL FORM;Lo;0;AL; 064A 0645;;;;N;;;;; -FCDE;ARABIC LIGATURE YEH WITH HEH INITIAL FORM;Lo;0;AL; 064A 0647;;;;N;;;;; -FCDF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM;Lo;0;AL; 0626 0645;;;;N;;;;; -FCE0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM;Lo;0;AL; 0626 0647;;;;N;;;;; -FCE1;ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM;Lo;0;AL; 0628 0645;;;;N;;;;; -FCE2;ARABIC LIGATURE BEH WITH HEH MEDIAL FORM;Lo;0;AL; 0628 0647;;;;N;;;;; -FCE3;ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM;Lo;0;AL; 062A 0645;;;;N;;;;; -FCE4;ARABIC LIGATURE TEH WITH HEH MEDIAL FORM;Lo;0;AL; 062A 0647;;;;N;;;;; -FCE5;ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM;Lo;0;AL; 062B 0645;;;;N;;;;; -FCE6;ARABIC LIGATURE THEH WITH HEH MEDIAL FORM;Lo;0;AL; 062B 0647;;;;N;;;;; -FCE7;ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM;Lo;0;AL; 0633 0645;;;;N;;;;; -FCE8;ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM;Lo;0;AL; 0633 0647;;;;N;;;;; -FCE9;ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM;Lo;0;AL; 0634 0645;;;;N;;;;; -FCEA;ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM;Lo;0;AL; 0634 0647;;;;N;;;;; -FCEB;ARABIC LIGATURE KAF WITH LAM MEDIAL FORM;Lo;0;AL; 0643 0644;;;;N;;;;; -FCEC;ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM;Lo;0;AL; 0643 0645;;;;N;;;;; -FCED;ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM;Lo;0;AL; 0644 0645;;;;N;;;;; -FCEE;ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM;Lo;0;AL; 0646 0645;;;;N;;;;; -FCEF;ARABIC LIGATURE NOON WITH HEH MEDIAL FORM;Lo;0;AL; 0646 0647;;;;N;;;;; -FCF0;ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM;Lo;0;AL; 064A 0645;;;;N;;;;; -FCF1;ARABIC LIGATURE YEH WITH HEH MEDIAL FORM;Lo;0;AL; 064A 0647;;;;N;;;;; -FCF2;ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM;Lo;0;AL; 0640 064E 0651;;;;N;;;;; -FCF3;ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM;Lo;0;AL; 0640 064F 0651;;;;N;;;;; -FCF4;ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM;Lo;0;AL; 0640 0650 0651;;;;N;;;;; -FCF5;ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0637 0649;;;;N;;;;; -FCF6;ARABIC LIGATURE TAH WITH YEH ISOLATED FORM;Lo;0;AL; 0637 064A;;;;N;;;;; -FCF7;ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0639 0649;;;;N;;;;; -FCF8;ARABIC LIGATURE AIN WITH YEH ISOLATED FORM;Lo;0;AL; 0639 064A;;;;N;;;;; -FCF9;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 063A 0649;;;;N;;;;; -FCFA;ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM;Lo;0;AL; 063A 064A;;;;N;;;;; -FCFB;ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0633 0649;;;;N;;;;; -FCFC;ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM;Lo;0;AL; 0633 064A;;;;N;;;;; -FCFD;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0634 0649;;;;N;;;;; -FCFE;ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM;Lo;0;AL; 0634 064A;;;;N;;;;; -FCFF;ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 062D 0649;;;;N;;;;; -FD00;ARABIC LIGATURE HAH WITH YEH ISOLATED FORM;Lo;0;AL; 062D 064A;;;;N;;;;; -FD01;ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 062C 0649;;;;N;;;;; -FD02;ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM;Lo;0;AL; 062C 064A;;;;N;;;;; -FD03;ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 062E 0649;;;;N;;;;; -FD04;ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM;Lo;0;AL; 062E 064A;;;;N;;;;; -FD05;ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0635 0649;;;;N;;;;; -FD06;ARABIC LIGATURE SAD WITH YEH ISOLATED FORM;Lo;0;AL; 0635 064A;;;;N;;;;; -FD07;ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0636 0649;;;;N;;;;; -FD08;ARABIC LIGATURE DAD WITH YEH ISOLATED FORM;Lo;0;AL; 0636 064A;;;;N;;;;; -FD09;ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM;Lo;0;AL; 0634 062C;;;;N;;;;; -FD0A;ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM;Lo;0;AL; 0634 062D;;;;N;;;;; -FD0B;ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM;Lo;0;AL; 0634 062E;;;;N;;;;; -FD0C;ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM;Lo;0;AL; 0634 0645;;;;N;;;;; -FD0D;ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM;Lo;0;AL; 0634 0631;;;;N;;;;; -FD0E;ARABIC LIGATURE SEEN WITH REH ISOLATED FORM;Lo;0;AL; 0633 0631;;;;N;;;;; -FD0F;ARABIC LIGATURE SAD WITH REH ISOLATED FORM;Lo;0;AL; 0635 0631;;;;N;;;;; -FD10;ARABIC LIGATURE DAD WITH REH ISOLATED FORM;Lo;0;AL; 0636 0631;;;;N;;;;; -FD11;ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0637 0649;;;;N;;;;; -FD12;ARABIC LIGATURE TAH WITH YEH FINAL FORM;Lo;0;AL; 0637 064A;;;;N;;;;; -FD13;ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0639 0649;;;;N;;;;; -FD14;ARABIC LIGATURE AIN WITH YEH FINAL FORM;Lo;0;AL; 0639 064A;;;;N;;;;; -FD15;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 063A 0649;;;;N;;;;; -FD16;ARABIC LIGATURE GHAIN WITH YEH FINAL FORM;Lo;0;AL; 063A 064A;;;;N;;;;; -FD17;ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0633 0649;;;;N;;;;; -FD18;ARABIC LIGATURE SEEN WITH YEH FINAL FORM;Lo;0;AL; 0633 064A;;;;N;;;;; -FD19;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0634 0649;;;;N;;;;; -FD1A;ARABIC LIGATURE SHEEN WITH YEH FINAL FORM;Lo;0;AL; 0634 064A;;;;N;;;;; -FD1B;ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062D 0649;;;;N;;;;; -FD1C;ARABIC LIGATURE HAH WITH YEH FINAL FORM;Lo;0;AL; 062D 064A;;;;N;;;;; -FD1D;ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062C 0649;;;;N;;;;; -FD1E;ARABIC LIGATURE JEEM WITH YEH FINAL FORM;Lo;0;AL; 062C 064A;;;;N;;;;; -FD1F;ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062E 0649;;;;N;;;;; -FD20;ARABIC LIGATURE KHAH WITH YEH FINAL FORM;Lo;0;AL; 062E 064A;;;;N;;;;; -FD21;ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0635 0649;;;;N;;;;; -FD22;ARABIC LIGATURE SAD WITH YEH FINAL FORM;Lo;0;AL; 0635 064A;;;;N;;;;; -FD23;ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0636 0649;;;;N;;;;; -FD24;ARABIC LIGATURE DAD WITH YEH FINAL FORM;Lo;0;AL; 0636 064A;;;;N;;;;; -FD25;ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM;Lo;0;AL; 0634 062C;;;;N;;;;; -FD26;ARABIC LIGATURE SHEEN WITH HAH FINAL FORM;Lo;0;AL; 0634 062D;;;;N;;;;; -FD27;ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM;Lo;0;AL; 0634 062E;;;;N;;;;; -FD28;ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM;Lo;0;AL; 0634 0645;;;;N;;;;; -FD29;ARABIC LIGATURE SHEEN WITH REH FINAL FORM;Lo;0;AL; 0634 0631;;;;N;;;;; -FD2A;ARABIC LIGATURE SEEN WITH REH FINAL FORM;Lo;0;AL; 0633 0631;;;;N;;;;; -FD2B;ARABIC LIGATURE SAD WITH REH FINAL FORM;Lo;0;AL; 0635 0631;;;;N;;;;; -FD2C;ARABIC LIGATURE DAD WITH REH FINAL FORM;Lo;0;AL; 0636 0631;;;;N;;;;; -FD2D;ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM;Lo;0;AL; 0634 062C;;;;N;;;;; -FD2E;ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM;Lo;0;AL; 0634 062D;;;;N;;;;; -FD2F;ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM;Lo;0;AL; 0634 062E;;;;N;;;;; -FD30;ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM;Lo;0;AL; 0634 0645;;;;N;;;;; -FD31;ARABIC LIGATURE SEEN WITH HEH INITIAL FORM;Lo;0;AL; 0633 0647;;;;N;;;;; -FD32;ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM;Lo;0;AL; 0634 0647;;;;N;;;;; -FD33;ARABIC LIGATURE TAH WITH MEEM INITIAL FORM;Lo;0;AL; 0637 0645;;;;N;;;;; -FD34;ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM;Lo;0;AL; 0633 062C;;;;N;;;;; -FD35;ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM;Lo;0;AL; 0633 062D;;;;N;;;;; -FD36;ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM;Lo;0;AL; 0633 062E;;;;N;;;;; -FD37;ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM;Lo;0;AL; 0634 062C;;;;N;;;;; -FD38;ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM;Lo;0;AL; 0634 062D;;;;N;;;;; -FD39;ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM;Lo;0;AL; 0634 062E;;;;N;;;;; -FD3A;ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM;Lo;0;AL; 0637 0645;;;;N;;;;; -FD3B;ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM;Lo;0;AL; 0638 0645;;;;N;;;;; -FD3C;ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM;Lo;0;AL; 0627 064B;;;;N;;;;; -FD3D;ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM;Lo;0;AL; 0627 064B;;;;N;;;;; -FD3E;ORNATE LEFT PARENTHESIS;Ps;0;ON;;;;;N;;;;; -FD3F;ORNATE RIGHT PARENTHESIS;Pe;0;ON;;;;;N;;;;; -FD50;ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL; 062A 062C 0645;;;;N;;;;; -FD51;ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM;Lo;0;AL; 062A 062D 062C;;;;N;;;;; -FD52;ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL; 062A 062D 062C;;;;N;;;;; -FD53;ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL; 062A 062D 0645;;;;N;;;;; -FD54;ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL; 062A 062E 0645;;;;N;;;;; -FD55;ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL; 062A 0645 062C;;;;N;;;;; -FD56;ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL; 062A 0645 062D;;;;N;;;;; -FD57;ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL; 062A 0645 062E;;;;N;;;;; -FD58;ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL; 062C 0645 062D;;;;N;;;;; -FD59;ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL; 062C 0645 062D;;;;N;;;;; -FD5A;ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 062D 0645 064A;;;;N;;;;; -FD5B;ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062D 0645 0649;;;;N;;;;; -FD5C;ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL; 0633 062D 062C;;;;N;;;;; -FD5D;ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL; 0633 062C 062D;;;;N;;;;; -FD5E;ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0633 062C 0649;;;;N;;;;; -FD5F;ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM;Lo;0;AL; 0633 0645 062D;;;;N;;;;; -FD60;ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL; 0633 0645 062D;;;;N;;;;; -FD61;ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL; 0633 0645 062C;;;;N;;;;; -FD62;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 0633 0645 0645;;;;N;;;;; -FD63;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0633 0645 0645;;;;N;;;;; -FD64;ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM;Lo;0;AL; 0635 062D 062D;;;;N;;;;; -FD65;ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM;Lo;0;AL; 0635 062D 062D;;;;N;;;;; -FD66;ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 0635 0645 0645;;;;N;;;;; -FD67;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM;Lo;0;AL; 0634 062D 0645;;;;N;;;;; -FD68;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL; 0634 062D 0645;;;;N;;;;; -FD69;ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM;Lo;0;AL; 0634 062C 064A;;;;N;;;;; -FD6A;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM;Lo;0;AL; 0634 0645 062E;;;;N;;;;; -FD6B;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL; 0634 0645 062E;;;;N;;;;; -FD6C;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 0634 0645 0645;;;;N;;;;; -FD6D;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0634 0645 0645;;;;N;;;;; -FD6E;ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0636 062D 0649;;;;N;;;;; -FD6F;ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL; 0636 062E 0645;;;;N;;;;; -FD70;ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL; 0636 062E 0645;;;;N;;;;; -FD71;ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM;Lo;0;AL; 0637 0645 062D;;;;N;;;;; -FD72;ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL; 0637 0645 062D;;;;N;;;;; -FD73;ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0637 0645 0645;;;;N;;;;; -FD74;ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0637 0645 064A;;;;N;;;;; -FD75;ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL; 0639 062C 0645;;;;N;;;;; -FD76;ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 0639 0645 0645;;;;N;;;;; -FD77;ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0639 0645 0645;;;;N;;;;; -FD78;ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0639 0645 0649;;;;N;;;;; -FD79;ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 063A 0645 0645;;;;N;;;;; -FD7A;ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 063A 0645 064A;;;;N;;;;; -FD7B;ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 063A 0645 0649;;;;N;;;;; -FD7C;ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL; 0641 062E 0645;;;;N;;;;; -FD7D;ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL; 0641 062E 0645;;;;N;;;;; -FD7E;ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM;Lo;0;AL; 0642 0645 062D;;;;N;;;;; -FD7F;ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 0642 0645 0645;;;;N;;;;; -FD80;ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM;Lo;0;AL; 0644 062D 0645;;;;N;;;;; -FD81;ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 0644 062D 064A;;;;N;;;;; -FD82;ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0644 062D 0649;;;;N;;;;; -FD83;ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM;Lo;0;AL; 0644 062C 062C;;;;N;;;;; -FD84;ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM;Lo;0;AL; 0644 062C 062C;;;;N;;;;; -FD85;ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL; 0644 062E 0645;;;;N;;;;; -FD86;ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL; 0644 062E 0645;;;;N;;;;; -FD87;ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL; 0644 0645 062D;;;;N;;;;; -FD88;ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL; 0644 0645 062D;;;;N;;;;; -FD89;ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL; 0645 062D 062C;;;;N;;;;; -FD8A;ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL; 0645 062D 0645;;;;N;;;;; -FD8B;ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 0645 062D 064A;;;;N;;;;; -FD8C;ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL; 0645 062C 062D;;;;N;;;;; -FD8D;ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0645 062C 0645;;;;N;;;;; -FD8E;ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM;Lo;0;AL; 0645 062E 062C;;;;N;;;;; -FD8F;ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL; 0645 062E 0645;;;;N;;;;; -FD92;ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM;Lo;0;AL; 0645 062C 062E;;;;N;;;;; -FD93;ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL; 0647 0645 062C;;;;N;;;;; -FD94;ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0647 0645 0645;;;;N;;;;; -FD95;ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL; 0646 062D 0645;;;;N;;;;; -FD96;ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0646 062D 0649;;;;N;;;;; -FD97;ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL; 0646 062C 0645;;;;N;;;;; -FD98;ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0646 062C 0645;;;;N;;;;; -FD99;ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0646 062C 0649;;;;N;;;;; -FD9A;ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0646 0645 064A;;;;N;;;;; -FD9B;ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0646 0645 0649;;;;N;;;;; -FD9C;ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 064A 0645 0645;;;;N;;;;; -FD9D;ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 064A 0645 0645;;;;N;;;;; -FD9E;ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL; 0628 062E 064A;;;;N;;;;; -FD9F;ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL; 062A 062C 064A;;;;N;;;;; -FDA0;ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062A 062C 0649;;;;N;;;;; -FDA1;ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL; 062A 062E 064A;;;;N;;;;; -FDA2;ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062A 062E 0649;;;;N;;;;; -FDA3;ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 062A 0645 064A;;;;N;;;;; -FDA4;ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062A 0645 0649;;;;N;;;;; -FDA5;ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 062C 0645 064A;;;;N;;;;; -FDA6;ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062C 062D 0649;;;;N;;;;; -FDA7;ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062C 0645 0649;;;;N;;;;; -FDA8;ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0633 062E 0649;;;;N;;;;; -FDA9;ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 0635 062D 064A;;;;N;;;;; -FDAA;ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 0634 062D 064A;;;;N;;;;; -FDAB;ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 0636 062D 064A;;;;N;;;;; -FDAC;ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL; 0644 062C 064A;;;;N;;;;; -FDAD;ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0644 0645 064A;;;;N;;;;; -FDAE;ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 064A 062D 064A;;;;N;;;;; -FDAF;ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL; 064A 062C 064A;;;;N;;;;; -FDB0;ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 064A 0645 064A;;;;N;;;;; -FDB1;ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0645 0645 064A;;;;N;;;;; -FDB2;ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0642 0645 064A;;;;N;;;;; -FDB3;ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 0646 062D 064A;;;;N;;;;; -FDB4;ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL; 0642 0645 062D;;;;N;;;;; -FDB5;ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL; 0644 062D 0645;;;;N;;;;; -FDB6;ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0639 0645 064A;;;;N;;;;; -FDB7;ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0643 0645 064A;;;;N;;;;; -FDB8;ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL; 0646 062C 062D;;;;N;;;;; -FDB9;ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM;Lo;0;AL; 0645 062E 064A;;;;N;;;;; -FDBA;ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0644 062C 0645;;;;N;;;;; -FDBB;ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 0643 0645 0645;;;;N;;;;; -FDBC;ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL; 0644 062C 0645;;;;N;;;;; -FDBD;ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM;Lo;0;AL; 0646 062C 062D;;;;N;;;;; -FDBE;ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 062C 062D 064A;;;;N;;;;; -FDBF;ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL; 062D 062C 064A;;;;N;;;;; -FDC0;ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL; 0645 062C 064A;;;;N;;;;; -FDC1;ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0641 0645 064A;;;;N;;;;; -FDC2;ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 0628 062D 064A;;;;N;;;;; -FDC3;ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0643 0645 0645;;;;N;;;;; -FDC4;ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0639 062C 0645;;;;N;;;;; -FDC5;ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0635 0645 0645;;;;N;;;;; -FDC6;ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM;Lo;0;AL; 0633 062E 064A;;;;N;;;;; -FDC7;ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM;Lo;0;AL; 0646 062C 064A;;;;N;;;;; -FDF0;ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL; 0635 0644 06D2;;;;N;;;;; -FDF1;ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL; 0642 0644 06D2;;;;N;;;;; -FDF2;ARABIC LIGATURE ALLAH ISOLATED FORM;Lo;0;AL; 0627 0644 0644 0647;;;;N;;;;; -FDF3;ARABIC LIGATURE AKBAR ISOLATED FORM;Lo;0;AL; 0627 0643 0628 0631;;;;N;;;;; -FDF4;ARABIC LIGATURE MOHAMMAD ISOLATED FORM;Lo;0;AL; 0645 062D 0645 062F;;;;N;;;;; -FDF5;ARABIC LIGATURE SALAM ISOLATED FORM;Lo;0;AL; 0635 0644 0639 0645;;;;N;;;;; -FDF6;ARABIC LIGATURE RASOUL ISOLATED FORM;Lo;0;AL; 0631 0633 0648 0644;;;;N;;;;; -FDF7;ARABIC LIGATURE ALAYHE ISOLATED FORM;Lo;0;AL; 0639 0644 064A 0647;;;;N;;;;; -FDF8;ARABIC LIGATURE WASALLAM ISOLATED FORM;Lo;0;AL; 0648 0633 0644 0645;;;;N;;;;; -FDF9;ARABIC LIGATURE SALLA ISOLATED FORM;Lo;0;AL; 0635 0644 0649;;;;N;;;;; -FDFA;ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM;Lo;0;AL; 0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;;;;N;ARABIC LETTER SALLALLAHOU ALAYHE WASALLAM;;;; -FDFB;ARABIC LIGATURE JALLAJALALOUHOU;Lo;0;AL; 062C 0644 0020 062C 0644 0627 0644 0647;;;;N;ARABIC LETTER JALLAJALALOUHOU;;;; -FDFC;RIAL SIGN;Sc;0;AL; 0631 06CC 0627 0644;;;;N;;;;; -FDFD;ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM;So;0;ON;;;;;N;;;;; -FE00;VARIATION SELECTOR-1;Mn;0;NSM;;;;;N;;;;; -FE01;VARIATION SELECTOR-2;Mn;0;NSM;;;;;N;;;;; -FE02;VARIATION SELECTOR-3;Mn;0;NSM;;;;;N;;;;; -FE03;VARIATION SELECTOR-4;Mn;0;NSM;;;;;N;;;;; -FE04;VARIATION SELECTOR-5;Mn;0;NSM;;;;;N;;;;; -FE05;VARIATION SELECTOR-6;Mn;0;NSM;;;;;N;;;;; -FE06;VARIATION SELECTOR-7;Mn;0;NSM;;;;;N;;;;; -FE07;VARIATION SELECTOR-8;Mn;0;NSM;;;;;N;;;;; -FE08;VARIATION SELECTOR-9;Mn;0;NSM;;;;;N;;;;; -FE09;VARIATION SELECTOR-10;Mn;0;NSM;;;;;N;;;;; -FE0A;VARIATION SELECTOR-11;Mn;0;NSM;;;;;N;;;;; -FE0B;VARIATION SELECTOR-12;Mn;0;NSM;;;;;N;;;;; -FE0C;VARIATION SELECTOR-13;Mn;0;NSM;;;;;N;;;;; -FE0D;VARIATION SELECTOR-14;Mn;0;NSM;;;;;N;;;;; -FE0E;VARIATION SELECTOR-15;Mn;0;NSM;;;;;N;;;;; -FE0F;VARIATION SELECTOR-16;Mn;0;NSM;;;;;N;;;;; -FE10;PRESENTATION FORM FOR VERTICAL COMMA;Po;0;ON; 002C;;;;N;;;;; -FE11;PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA;Po;0;ON; 3001;;;;N;;;;; -FE12;PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP;Po;0;ON; 3002;;;;N;;;;; -FE13;PRESENTATION FORM FOR VERTICAL COLON;Po;0;ON; 003A;;;;N;;;;; -FE14;PRESENTATION FORM FOR VERTICAL SEMICOLON;Po;0;ON; 003B;;;;N;;;;; -FE15;PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK;Po;0;ON; 0021;;;;N;;;;; -FE16;PRESENTATION FORM FOR VERTICAL QUESTION MARK;Po;0;ON; 003F;;;;N;;;;; -FE17;PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET;Ps;0;ON; 3016;;;;N;;;;; -FE18;PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET;Pe;0;ON; 3017;;;;N;;;;; -FE19;PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS;Po;0;ON; 2026;;;;N;;;;; -FE20;COMBINING LIGATURE LEFT HALF;Mn;230;NSM;;;;;N;;;;; -FE21;COMBINING LIGATURE RIGHT HALF;Mn;230;NSM;;;;;N;;;;; -FE22;COMBINING DOUBLE TILDE LEFT HALF;Mn;230;NSM;;;;;N;;;;; -FE23;COMBINING DOUBLE TILDE RIGHT HALF;Mn;230;NSM;;;;;N;;;;; -FE24;COMBINING MACRON LEFT HALF;Mn;230;NSM;;;;;N;;;;; -FE25;COMBINING MACRON RIGHT HALF;Mn;230;NSM;;;;;N;;;;; -FE26;COMBINING CONJOINING MACRON;Mn;230;NSM;;;;;N;;;;; -FE30;PRESENTATION FORM FOR VERTICAL TWO DOT LEADER;Po;0;ON; 2025;;;;N;GLYPH FOR VERTICAL TWO DOT LEADER;;;; -FE31;PRESENTATION FORM FOR VERTICAL EM DASH;Pd;0;ON; 2014;;;;N;GLYPH FOR VERTICAL EM DASH;;;; -FE32;PRESENTATION FORM FOR VERTICAL EN DASH;Pd;0;ON; 2013;;;;N;GLYPH FOR VERTICAL EN DASH;;;; -FE33;PRESENTATION FORM FOR VERTICAL LOW LINE;Pc;0;ON; 005F;;;;N;GLYPH FOR VERTICAL SPACING UNDERSCORE;;;; -FE34;PRESENTATION FORM FOR VERTICAL WAVY LOW LINE;Pc;0;ON; 005F;;;;N;GLYPH FOR VERTICAL SPACING WAVY UNDERSCORE;;;; -FE35;PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS;Ps;0;ON; 0028;;;;N;GLYPH FOR VERTICAL OPENING PARENTHESIS;;;; -FE36;PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS;Pe;0;ON; 0029;;;;N;GLYPH FOR VERTICAL CLOSING PARENTHESIS;;;; -FE37;PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET;Ps;0;ON; 007B;;;;N;GLYPH FOR VERTICAL OPENING CURLY BRACKET;;;; -FE38;PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET;Pe;0;ON; 007D;;;;N;GLYPH FOR VERTICAL CLOSING CURLY BRACKET;;;; -FE39;PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET;Ps;0;ON; 3014;;;;N;GLYPH FOR VERTICAL OPENING TORTOISE SHELL BRACKET;;;; -FE3A;PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON; 3015;;;;N;GLYPH FOR VERTICAL CLOSING TORTOISE SHELL BRACKET;;;; -FE3B;PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET;Ps;0;ON; 3010;;;;N;GLYPH FOR VERTICAL OPENING BLACK LENTICULAR BRACKET;;;; -FE3C;PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON; 3011;;;;N;GLYPH FOR VERTICAL CLOSING BLACK LENTICULAR BRACKET;;;; -FE3D;PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON; 300A;;;;N;GLYPH FOR VERTICAL OPENING DOUBLE ANGLE BRACKET;;;; -FE3E;PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON; 300B;;;;N;GLYPH FOR VERTICAL CLOSING DOUBLE ANGLE BRACKET;;;; -FE3F;PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET;Ps;0;ON; 3008;;;;N;GLYPH FOR VERTICAL OPENING ANGLE BRACKET;;;; -FE40;PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET;Pe;0;ON; 3009;;;;N;GLYPH FOR VERTICAL CLOSING ANGLE BRACKET;;;; -FE41;PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET;Ps;0;ON; 300C;;;;N;GLYPH FOR VERTICAL OPENING CORNER BRACKET;;;; -FE42;PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET;Pe;0;ON; 300D;;;;N;GLYPH FOR VERTICAL CLOSING CORNER BRACKET;;;; -FE43;PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET;Ps;0;ON; 300E;;;;N;GLYPH FOR VERTICAL OPENING WHITE CORNER BRACKET;;;; -FE44;PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET;Pe;0;ON; 300F;;;;N;GLYPH FOR VERTICAL CLOSING WHITE CORNER BRACKET;;;; -FE45;SESAME DOT;Po;0;ON;;;;;N;;;;; -FE46;WHITE SESAME DOT;Po;0;ON;;;;;N;;;;; -FE47;PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET;Ps;0;ON; 005B;;;;N;;;;; -FE48;PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET;Pe;0;ON; 005D;;;;N;;;;; -FE49;DASHED OVERLINE;Po;0;ON; 203E;;;;N;SPACING DASHED OVERSCORE;;;; -FE4A;CENTRELINE OVERLINE;Po;0;ON; 203E;;;;N;SPACING CENTERLINE OVERSCORE;;;; -FE4B;WAVY OVERLINE;Po;0;ON; 203E;;;;N;SPACING WAVY OVERSCORE;;;; -FE4C;DOUBLE WAVY OVERLINE;Po;0;ON; 203E;;;;N;SPACING DOUBLE WAVY OVERSCORE;;;; -FE4D;DASHED LOW LINE;Pc;0;ON; 005F;;;;N;SPACING DASHED UNDERSCORE;;;; -FE4E;CENTRELINE LOW LINE;Pc;0;ON; 005F;;;;N;SPACING CENTERLINE UNDERSCORE;;;; -FE4F;WAVY LOW LINE;Pc;0;ON; 005F;;;;N;SPACING WAVY UNDERSCORE;;;; -FE50;SMALL COMMA;Po;0;CS; 002C;;;;N;;;;; -FE51;SMALL IDEOGRAPHIC COMMA;Po;0;ON; 3001;;;;N;;;;; -FE52;SMALL FULL STOP;Po;0;CS; 002E;;;;N;SMALL PERIOD;;;; -FE54;SMALL SEMICOLON;Po;0;ON; 003B;;;;N;;;;; -FE55;SMALL COLON;Po;0;CS; 003A;;;;N;;;;; -FE56;SMALL QUESTION MARK;Po;0;ON; 003F;;;;N;;;;; -FE57;SMALL EXCLAMATION MARK;Po;0;ON; 0021;;;;N;;;;; -FE58;SMALL EM DASH;Pd;0;ON; 2014;;;;N;;;;; -FE59;SMALL LEFT PARENTHESIS;Ps;0;ON; 0028;;;;Y;SMALL OPENING PARENTHESIS;;;; -FE5A;SMALL RIGHT PARENTHESIS;Pe;0;ON; 0029;;;;Y;SMALL CLOSING PARENTHESIS;;;; -FE5B;SMALL LEFT CURLY BRACKET;Ps;0;ON; 007B;;;;Y;SMALL OPENING CURLY BRACKET;;;; -FE5C;SMALL RIGHT CURLY BRACKET;Pe;0;ON; 007D;;;;Y;SMALL CLOSING CURLY BRACKET;;;; -FE5D;SMALL LEFT TORTOISE SHELL BRACKET;Ps;0;ON; 3014;;;;Y;SMALL OPENING TORTOISE SHELL BRACKET;;;; -FE5E;SMALL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON; 3015;;;;Y;SMALL CLOSING TORTOISE SHELL BRACKET;;;; -FE5F;SMALL NUMBER SIGN;Po;0;ET; 0023;;;;N;;;;; -FE60;SMALL AMPERSAND;Po;0;ON; 0026;;;;N;;;;; -FE61;SMALL ASTERISK;Po;0;ON; 002A;;;;N;;;;; -FE62;SMALL PLUS SIGN;Sm;0;ES; 002B;;;;N;;;;; -FE63;SMALL HYPHEN-MINUS;Pd;0;ES; 002D;;;;N;;;;; -FE64;SMALL LESS-THAN SIGN;Sm;0;ON; 003C;;;;Y;;;;; -FE65;SMALL GREATER-THAN SIGN;Sm;0;ON; 003E;;;;Y;;;;; -FE66;SMALL EQUALS SIGN;Sm;0;ON; 003D;;;;N;;;;; -FE68;SMALL REVERSE SOLIDUS;Po;0;ON; 005C;;;;N;SMALL BACKSLASH;;;; -FE69;SMALL DOLLAR SIGN;Sc;0;ET; 0024;;;;N;;;;; -FE6A;SMALL PERCENT SIGN;Po;0;ET; 0025;;;;N;;;;; -FE6B;SMALL COMMERCIAL AT;Po;0;ON; 0040;;;;N;;;;; -FE70;ARABIC FATHATAN ISOLATED FORM;Lo;0;AL; 0020 064B;;;;N;ARABIC SPACING FATHATAN;;;; -FE71;ARABIC TATWEEL WITH FATHATAN ABOVE;Lo;0;AL; 0640 064B;;;;N;ARABIC FATHATAN ON TATWEEL;;;; -FE72;ARABIC DAMMATAN ISOLATED FORM;Lo;0;AL; 0020 064C;;;;N;ARABIC SPACING DAMMATAN;;;; -FE73;ARABIC TAIL FRAGMENT;Lo;0;AL;;;;;N;;;;; -FE74;ARABIC KASRATAN ISOLATED FORM;Lo;0;AL; 0020 064D;;;;N;ARABIC SPACING KASRATAN;;;; -FE76;ARABIC FATHA ISOLATED FORM;Lo;0;AL; 0020 064E;;;;N;ARABIC SPACING FATHAH;;;; -FE77;ARABIC FATHA MEDIAL FORM;Lo;0;AL; 0640 064E;;;;N;ARABIC FATHAH ON TATWEEL;;;; -FE78;ARABIC DAMMA ISOLATED FORM;Lo;0;AL; 0020 064F;;;;N;ARABIC SPACING DAMMAH;;;; -FE79;ARABIC DAMMA MEDIAL FORM;Lo;0;AL; 0640 064F;;;;N;ARABIC DAMMAH ON TATWEEL;;;; -FE7A;ARABIC KASRA ISOLATED FORM;Lo;0;AL; 0020 0650;;;;N;ARABIC SPACING KASRAH;;;; -FE7B;ARABIC KASRA MEDIAL FORM;Lo;0;AL; 0640 0650;;;;N;ARABIC KASRAH ON TATWEEL;;;; -FE7C;ARABIC SHADDA ISOLATED FORM;Lo;0;AL; 0020 0651;;;;N;ARABIC SPACING SHADDAH;;;; -FE7D;ARABIC SHADDA MEDIAL FORM;Lo;0;AL; 0640 0651;;;;N;ARABIC SHADDAH ON TATWEEL;;;; -FE7E;ARABIC SUKUN ISOLATED FORM;Lo;0;AL; 0020 0652;;;;N;ARABIC SPACING SUKUN;;;; -FE7F;ARABIC SUKUN MEDIAL FORM;Lo;0;AL; 0640 0652;;;;N;ARABIC SUKUN ON TATWEEL;;;; -FE80;ARABIC LETTER HAMZA ISOLATED FORM;Lo;0;AL; 0621;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH;;;; -FE81;ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL; 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON ALEF;;;; -FE82;ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL; 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON ALEF;;;; -FE83;ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL; 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON ALEF;;;; -FE84;ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL; 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON ALEF;;;; -FE85;ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL; 0624;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON WAW;;;; -FE86;ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM;Lo;0;AL; 0624;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON WAW;;;; -FE87;ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL; 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER ALEF;;;; -FE88;ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL; 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER ALEF;;;; -FE89;ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL; 0626;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON YA;;;; -FE8A;ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM;Lo;0;AL; 0626;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON YA;;;; -FE8B;ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM;Lo;0;AL; 0626;;;;N;GLYPH FOR INITIAL ARABIC HAMZAH ON YA;;;; -FE8C;ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM;Lo;0;AL; 0626;;;;N;GLYPH FOR MEDIAL ARABIC HAMZAH ON YA;;;; -FE8D;ARABIC LETTER ALEF ISOLATED FORM;Lo;0;AL; 0627;;;;N;GLYPH FOR ISOLATE ARABIC ALEF;;;; -FE8E;ARABIC LETTER ALEF FINAL FORM;Lo;0;AL; 0627;;;;N;GLYPH FOR FINAL ARABIC ALEF;;;; -FE8F;ARABIC LETTER BEH ISOLATED FORM;Lo;0;AL; 0628;;;;N;GLYPH FOR ISOLATE ARABIC BAA;;;; -FE90;ARABIC LETTER BEH FINAL FORM;Lo;0;AL; 0628;;;;N;GLYPH FOR FINAL ARABIC BAA;;;; -FE91;ARABIC LETTER BEH INITIAL FORM;Lo;0;AL; 0628;;;;N;GLYPH FOR INITIAL ARABIC BAA;;;; -FE92;ARABIC LETTER BEH MEDIAL FORM;Lo;0;AL; 0628;;;;N;GLYPH FOR MEDIAL ARABIC BAA;;;; -FE93;ARABIC LETTER TEH MARBUTA ISOLATED FORM;Lo;0;AL; 0629;;;;N;GLYPH FOR ISOLATE ARABIC TAA MARBUTAH;;;; -FE94;ARABIC LETTER TEH MARBUTA FINAL FORM;Lo;0;AL; 0629;;;;N;GLYPH FOR FINAL ARABIC TAA MARBUTAH;;;; -FE95;ARABIC LETTER TEH ISOLATED FORM;Lo;0;AL; 062A;;;;N;GLYPH FOR ISOLATE ARABIC TAA;;;; -FE96;ARABIC LETTER TEH FINAL FORM;Lo;0;AL; 062A;;;;N;GLYPH FOR FINAL ARABIC TAA;;;; -FE97;ARABIC LETTER TEH INITIAL FORM;Lo;0;AL; 062A;;;;N;GLYPH FOR INITIAL ARABIC TAA;;;; -FE98;ARABIC LETTER TEH MEDIAL FORM;Lo;0;AL; 062A;;;;N;GLYPH FOR MEDIAL ARABIC TAA;;;; -FE99;ARABIC LETTER THEH ISOLATED FORM;Lo;0;AL; 062B;;;;N;GLYPH FOR ISOLATE ARABIC THAA;;;; -FE9A;ARABIC LETTER THEH FINAL FORM;Lo;0;AL; 062B;;;;N;GLYPH FOR FINAL ARABIC THAA;;;; -FE9B;ARABIC LETTER THEH INITIAL FORM;Lo;0;AL; 062B;;;;N;GLYPH FOR INITIAL ARABIC THAA;;;; -FE9C;ARABIC LETTER THEH MEDIAL FORM;Lo;0;AL; 062B;;;;N;GLYPH FOR MEDIAL ARABIC THAA;;;; -FE9D;ARABIC LETTER JEEM ISOLATED FORM;Lo;0;AL; 062C;;;;N;GLYPH FOR ISOLATE ARABIC JEEM;;;; -FE9E;ARABIC LETTER JEEM FINAL FORM;Lo;0;AL; 062C;;;;N;GLYPH FOR FINAL ARABIC JEEM;;;; -FE9F;ARABIC LETTER JEEM INITIAL FORM;Lo;0;AL; 062C;;;;N;GLYPH FOR INITIAL ARABIC JEEM;;;; -FEA0;ARABIC LETTER JEEM MEDIAL FORM;Lo;0;AL; 062C;;;;N;GLYPH FOR MEDIAL ARABIC JEEM;;;; -FEA1;ARABIC LETTER HAH ISOLATED FORM;Lo;0;AL; 062D;;;;N;GLYPH FOR ISOLATE ARABIC HAA;;;; -FEA2;ARABIC LETTER HAH FINAL FORM;Lo;0;AL; 062D;;;;N;GLYPH FOR FINAL ARABIC HAA;;;; -FEA3;ARABIC LETTER HAH INITIAL FORM;Lo;0;AL; 062D;;;;N;GLYPH FOR INITIAL ARABIC HAA;;;; -FEA4;ARABIC LETTER HAH MEDIAL FORM;Lo;0;AL; 062D;;;;N;GLYPH FOR MEDIAL ARABIC HAA;;;; -FEA5;ARABIC LETTER KHAH ISOLATED FORM;Lo;0;AL; 062E;;;;N;GLYPH FOR ISOLATE ARABIC KHAA;;;; -FEA6;ARABIC LETTER KHAH FINAL FORM;Lo;0;AL; 062E;;;;N;GLYPH FOR FINAL ARABIC KHAA;;;; -FEA7;ARABIC LETTER KHAH INITIAL FORM;Lo;0;AL; 062E;;;;N;GLYPH FOR INITIAL ARABIC KHAA;;;; -FEA8;ARABIC LETTER KHAH MEDIAL FORM;Lo;0;AL; 062E;;;;N;GLYPH FOR MEDIAL ARABIC KHAA;;;; -FEA9;ARABIC LETTER DAL ISOLATED FORM;Lo;0;AL; 062F;;;;N;GLYPH FOR ISOLATE ARABIC DAL;;;; -FEAA;ARABIC LETTER DAL FINAL FORM;Lo;0;AL; 062F;;;;N;GLYPH FOR FINAL ARABIC DAL;;;; -FEAB;ARABIC LETTER THAL ISOLATED FORM;Lo;0;AL; 0630;;;;N;GLYPH FOR ISOLATE ARABIC THAL;;;; -FEAC;ARABIC LETTER THAL FINAL FORM;Lo;0;AL; 0630;;;;N;GLYPH FOR FINAL ARABIC THAL;;;; -FEAD;ARABIC LETTER REH ISOLATED FORM;Lo;0;AL; 0631;;;;N;GLYPH FOR ISOLATE ARABIC RA;;;; -FEAE;ARABIC LETTER REH FINAL FORM;Lo;0;AL; 0631;;;;N;GLYPH FOR FINAL ARABIC RA;;;; -FEAF;ARABIC LETTER ZAIN ISOLATED FORM;Lo;0;AL; 0632;;;;N;GLYPH FOR ISOLATE ARABIC ZAIN;;;; -FEB0;ARABIC LETTER ZAIN FINAL FORM;Lo;0;AL; 0632;;;;N;GLYPH FOR FINAL ARABIC ZAIN;;;; -FEB1;ARABIC LETTER SEEN ISOLATED FORM;Lo;0;AL; 0633;;;;N;GLYPH FOR ISOLATE ARABIC SEEN;;;; -FEB2;ARABIC LETTER SEEN FINAL FORM;Lo;0;AL; 0633;;;;N;GLYPH FOR FINAL ARABIC SEEN;;;; -FEB3;ARABIC LETTER SEEN INITIAL FORM;Lo;0;AL; 0633;;;;N;GLYPH FOR INITIAL ARABIC SEEN;;;; -FEB4;ARABIC LETTER SEEN MEDIAL FORM;Lo;0;AL; 0633;;;;N;GLYPH FOR MEDIAL ARABIC SEEN;;;; -FEB5;ARABIC LETTER SHEEN ISOLATED FORM;Lo;0;AL; 0634;;;;N;GLYPH FOR ISOLATE ARABIC SHEEN;;;; -FEB6;ARABIC LETTER SHEEN FINAL FORM;Lo;0;AL; 0634;;;;N;GLYPH FOR FINAL ARABIC SHEEN;;;; -FEB7;ARABIC LETTER SHEEN INITIAL FORM;Lo;0;AL; 0634;;;;N;GLYPH FOR INITIAL ARABIC SHEEN;;;; -FEB8;ARABIC LETTER SHEEN MEDIAL FORM;Lo;0;AL; 0634;;;;N;GLYPH FOR MEDIAL ARABIC SHEEN;;;; -FEB9;ARABIC LETTER SAD ISOLATED FORM;Lo;0;AL; 0635;;;;N;GLYPH FOR ISOLATE ARABIC SAD;;;; -FEBA;ARABIC LETTER SAD FINAL FORM;Lo;0;AL; 0635;;;;N;GLYPH FOR FINAL ARABIC SAD;;;; -FEBB;ARABIC LETTER SAD INITIAL FORM;Lo;0;AL; 0635;;;;N;GLYPH FOR INITIAL ARABIC SAD;;;; -FEBC;ARABIC LETTER SAD MEDIAL FORM;Lo;0;AL; 0635;;;;N;GLYPH FOR MEDIAL ARABIC SAD;;;; -FEBD;ARABIC LETTER DAD ISOLATED FORM;Lo;0;AL; 0636;;;;N;GLYPH FOR ISOLATE ARABIC DAD;;;; -FEBE;ARABIC LETTER DAD FINAL FORM;Lo;0;AL; 0636;;;;N;GLYPH FOR FINAL ARABIC DAD;;;; -FEBF;ARABIC LETTER DAD INITIAL FORM;Lo;0;AL; 0636;;;;N;GLYPH FOR INITIAL ARABIC DAD;;;; -FEC0;ARABIC LETTER DAD MEDIAL FORM;Lo;0;AL; 0636;;;;N;GLYPH FOR MEDIAL ARABIC DAD;;;; -FEC1;ARABIC LETTER TAH ISOLATED FORM;Lo;0;AL; 0637;;;;N;GLYPH FOR ISOLATE ARABIC TAH;;;; -FEC2;ARABIC LETTER TAH FINAL FORM;Lo;0;AL; 0637;;;;N;GLYPH FOR FINAL ARABIC TAH;;;; -FEC3;ARABIC LETTER TAH INITIAL FORM;Lo;0;AL; 0637;;;;N;GLYPH FOR INITIAL ARABIC TAH;;;; -FEC4;ARABIC LETTER TAH MEDIAL FORM;Lo;0;AL; 0637;;;;N;GLYPH FOR MEDIAL ARABIC TAH;;;; -FEC5;ARABIC LETTER ZAH ISOLATED FORM;Lo;0;AL; 0638;;;;N;GLYPH FOR ISOLATE ARABIC DHAH;;;; -FEC6;ARABIC LETTER ZAH FINAL FORM;Lo;0;AL; 0638;;;;N;GLYPH FOR FINAL ARABIC DHAH;;;; -FEC7;ARABIC LETTER ZAH INITIAL FORM;Lo;0;AL; 0638;;;;N;GLYPH FOR INITIAL ARABIC DHAH;;;; -FEC8;ARABIC LETTER ZAH MEDIAL FORM;Lo;0;AL; 0638;;;;N;GLYPH FOR MEDIAL ARABIC DHAH;;;; -FEC9;ARABIC LETTER AIN ISOLATED FORM;Lo;0;AL; 0639;;;;N;GLYPH FOR ISOLATE ARABIC AIN;;;; -FECA;ARABIC LETTER AIN FINAL FORM;Lo;0;AL; 0639;;;;N;GLYPH FOR FINAL ARABIC AIN;;;; -FECB;ARABIC LETTER AIN INITIAL FORM;Lo;0;AL; 0639;;;;N;GLYPH FOR INITIAL ARABIC AIN;;;; -FECC;ARABIC LETTER AIN MEDIAL FORM;Lo;0;AL; 0639;;;;N;GLYPH FOR MEDIAL ARABIC AIN;;;; -FECD;ARABIC LETTER GHAIN ISOLATED FORM;Lo;0;AL; 063A;;;;N;GLYPH FOR ISOLATE ARABIC GHAIN;;;; -FECE;ARABIC LETTER GHAIN FINAL FORM;Lo;0;AL; 063A;;;;N;GLYPH FOR FINAL ARABIC GHAIN;;;; -FECF;ARABIC LETTER GHAIN INITIAL FORM;Lo;0;AL; 063A;;;;N;GLYPH FOR INITIAL ARABIC GHAIN;;;; -FED0;ARABIC LETTER GHAIN MEDIAL FORM;Lo;0;AL; 063A;;;;N;GLYPH FOR MEDIAL ARABIC GHAIN;;;; -FED1;ARABIC LETTER FEH ISOLATED FORM;Lo;0;AL; 0641;;;;N;GLYPH FOR ISOLATE ARABIC FA;;;; -FED2;ARABIC LETTER FEH FINAL FORM;Lo;0;AL; 0641;;;;N;GLYPH FOR FINAL ARABIC FA;;;; -FED3;ARABIC LETTER FEH INITIAL FORM;Lo;0;AL; 0641;;;;N;GLYPH FOR INITIAL ARABIC FA;;;; -FED4;ARABIC LETTER FEH MEDIAL FORM;Lo;0;AL; 0641;;;;N;GLYPH FOR MEDIAL ARABIC FA;;;; -FED5;ARABIC LETTER QAF ISOLATED FORM;Lo;0;AL; 0642;;;;N;GLYPH FOR ISOLATE ARABIC QAF;;;; -FED6;ARABIC LETTER QAF FINAL FORM;Lo;0;AL; 0642;;;;N;GLYPH FOR FINAL ARABIC QAF;;;; -FED7;ARABIC LETTER QAF INITIAL FORM;Lo;0;AL; 0642;;;;N;GLYPH FOR INITIAL ARABIC QAF;;;; -FED8;ARABIC LETTER QAF MEDIAL FORM;Lo;0;AL; 0642;;;;N;GLYPH FOR MEDIAL ARABIC QAF;;;; -FED9;ARABIC LETTER KAF ISOLATED FORM;Lo;0;AL; 0643;;;;N;GLYPH FOR ISOLATE ARABIC CAF;;;; -FEDA;ARABIC LETTER KAF FINAL FORM;Lo;0;AL; 0643;;;;N;GLYPH FOR FINAL ARABIC CAF;;;; -FEDB;ARABIC LETTER KAF INITIAL FORM;Lo;0;AL; 0643;;;;N;GLYPH FOR INITIAL ARABIC CAF;;;; -FEDC;ARABIC LETTER KAF MEDIAL FORM;Lo;0;AL; 0643;;;;N;GLYPH FOR MEDIAL ARABIC CAF;;;; -FEDD;ARABIC LETTER LAM ISOLATED FORM;Lo;0;AL; 0644;;;;N;GLYPH FOR ISOLATE ARABIC LAM;;;; -FEDE;ARABIC LETTER LAM FINAL FORM;Lo;0;AL; 0644;;;;N;GLYPH FOR FINAL ARABIC LAM;;;; -FEDF;ARABIC LETTER LAM INITIAL FORM;Lo;0;AL; 0644;;;;N;GLYPH FOR INITIAL ARABIC LAM;;;; -FEE0;ARABIC LETTER LAM MEDIAL FORM;Lo;0;AL; 0644;;;;N;GLYPH FOR MEDIAL ARABIC LAM;;;; -FEE1;ARABIC LETTER MEEM ISOLATED FORM;Lo;0;AL; 0645;;;;N;GLYPH FOR ISOLATE ARABIC MEEM;;;; -FEE2;ARABIC LETTER MEEM FINAL FORM;Lo;0;AL; 0645;;;;N;GLYPH FOR FINAL ARABIC MEEM;;;; -FEE3;ARABIC LETTER MEEM INITIAL FORM;Lo;0;AL; 0645;;;;N;GLYPH FOR INITIAL ARABIC MEEM;;;; -FEE4;ARABIC LETTER MEEM MEDIAL FORM;Lo;0;AL; 0645;;;;N;GLYPH FOR MEDIAL ARABIC MEEM;;;; -FEE5;ARABIC LETTER NOON ISOLATED FORM;Lo;0;AL; 0646;;;;N;GLYPH FOR ISOLATE ARABIC NOON;;;; -FEE6;ARABIC LETTER NOON FINAL FORM;Lo;0;AL; 0646;;;;N;GLYPH FOR FINAL ARABIC NOON;;;; -FEE7;ARABIC LETTER NOON INITIAL FORM;Lo;0;AL; 0646;;;;N;GLYPH FOR INITIAL ARABIC NOON;;;; -FEE8;ARABIC LETTER NOON MEDIAL FORM;Lo;0;AL; 0646;;;;N;GLYPH FOR MEDIAL ARABIC NOON;;;; -FEE9;ARABIC LETTER HEH ISOLATED FORM;Lo;0;AL; 0647;;;;N;GLYPH FOR ISOLATE ARABIC HA;;;; -FEEA;ARABIC LETTER HEH FINAL FORM;Lo;0;AL; 0647;;;;N;GLYPH FOR FINAL ARABIC HA;;;; -FEEB;ARABIC LETTER HEH INITIAL FORM;Lo;0;AL; 0647;;;;N;GLYPH FOR INITIAL ARABIC HA;;;; -FEEC;ARABIC LETTER HEH MEDIAL FORM;Lo;0;AL; 0647;;;;N;GLYPH FOR MEDIAL ARABIC HA;;;; -FEED;ARABIC LETTER WAW ISOLATED FORM;Lo;0;AL; 0648;;;;N;GLYPH FOR ISOLATE ARABIC WAW;;;; -FEEE;ARABIC LETTER WAW FINAL FORM;Lo;0;AL; 0648;;;;N;GLYPH FOR FINAL ARABIC WAW;;;; -FEEF;ARABIC LETTER ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0649;;;;N;GLYPH FOR ISOLATE ARABIC ALEF MAQSURAH;;;; -FEF0;ARABIC LETTER ALEF MAKSURA FINAL FORM;Lo;0;AL; 0649;;;;N;GLYPH FOR FINAL ARABIC ALEF MAQSURAH;;;; -FEF1;ARABIC LETTER YEH ISOLATED FORM;Lo;0;AL; 064A;;;;N;GLYPH FOR ISOLATE ARABIC YA;;;; -FEF2;ARABIC LETTER YEH FINAL FORM;Lo;0;AL; 064A;;;;N;GLYPH FOR FINAL ARABIC YA;;;; -FEF3;ARABIC LETTER YEH INITIAL FORM;Lo;0;AL; 064A;;;;N;GLYPH FOR INITIAL ARABIC YA;;;; -FEF4;ARABIC LETTER YEH MEDIAL FORM;Lo;0;AL; 064A;;;;N;GLYPH FOR MEDIAL ARABIC YA;;;; -FEF5;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL; 0644 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON LIGATURE LAM ALEF;;;; -FEF6;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL; 0644 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON LIGATURE LAM ALEF;;;; -FEF7;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL; 0644 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON LIGATURE LAM ALEF;;;; -FEF8;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL; 0644 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON LIGATURE LAM ALEF;;;; -FEF9;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL; 0644 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;; -FEFA;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL; 0644 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;; -FEFB;ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM;Lo;0;AL; 0644 0627;;;;N;GLYPH FOR ISOLATE ARABIC LIGATURE LAM ALEF;;;; -FEFC;ARABIC LIGATURE LAM WITH ALEF FINAL FORM;Lo;0;AL; 0644 0627;;;;N;GLYPH FOR FINAL ARABIC LIGATURE LAM ALEF;;;; -FEFF;ZERO WIDTH NO-BREAK SPACE;Cf;0;BN;;;;;N;BYTE ORDER MARK;;;; -FF01;FULLWIDTH EXCLAMATION MARK;Po;0;ON; 0021;;;;N;;;;; -FF02;FULLWIDTH QUOTATION MARK;Po;0;ON; 0022;;;;N;;;;; -FF03;FULLWIDTH NUMBER SIGN;Po;0;ET; 0023;;;;N;;;;; -FF04;FULLWIDTH DOLLAR SIGN;Sc;0;ET; 0024;;;;N;;;;; -FF05;FULLWIDTH PERCENT SIGN;Po;0;ET; 0025;;;;N;;;;; -FF06;FULLWIDTH AMPERSAND;Po;0;ON; 0026;;;;N;;;;; -FF07;FULLWIDTH APOSTROPHE;Po;0;ON; 0027;;;;N;;;;; -FF08;FULLWIDTH LEFT PARENTHESIS;Ps;0;ON; 0028;;;;Y;FULLWIDTH OPENING PARENTHESIS;;;; -FF09;FULLWIDTH RIGHT PARENTHESIS;Pe;0;ON; 0029;;;;Y;FULLWIDTH CLOSING PARENTHESIS;;;; -FF0A;FULLWIDTH ASTERISK;Po;0;ON; 002A;;;;N;;;;; -FF0B;FULLWIDTH PLUS SIGN;Sm;0;ES; 002B;;;;N;;;;; -FF0C;FULLWIDTH COMMA;Po;0;CS; 002C;;;;N;;;;; -FF0D;FULLWIDTH HYPHEN-MINUS;Pd;0;ES; 002D;;;;N;;;;; -FF0E;FULLWIDTH FULL STOP;Po;0;CS; 002E;;;;N;FULLWIDTH PERIOD;;;; -FF0F;FULLWIDTH SOLIDUS;Po;0;CS; 002F;;;;N;FULLWIDTH SLASH;;;; -FF10;FULLWIDTH DIGIT ZERO;Nd;0;EN; 0030;0;0;0;N;;;;; -FF11;FULLWIDTH DIGIT ONE;Nd;0;EN; 0031;1;1;1;N;;;;; -FF12;FULLWIDTH DIGIT TWO;Nd;0;EN; 0032;2;2;2;N;;;;; -FF13;FULLWIDTH DIGIT THREE;Nd;0;EN; 0033;3;3;3;N;;;;; -FF14;FULLWIDTH DIGIT FOUR;Nd;0;EN; 0034;4;4;4;N;;;;; -FF15;FULLWIDTH DIGIT FIVE;Nd;0;EN; 0035;5;5;5;N;;;;; -FF16;FULLWIDTH DIGIT SIX;Nd;0;EN; 0036;6;6;6;N;;;;; -FF17;FULLWIDTH DIGIT SEVEN;Nd;0;EN; 0037;7;7;7;N;;;;; -FF18;FULLWIDTH DIGIT EIGHT;Nd;0;EN; 0038;8;8;8;N;;;;; -FF19;FULLWIDTH DIGIT NINE;Nd;0;EN; 0039;9;9;9;N;;;;; -FF1A;FULLWIDTH COLON;Po;0;CS; 003A;;;;N;;;;; -FF1B;FULLWIDTH SEMICOLON;Po;0;ON; 003B;;;;N;;;;; -FF1C;FULLWIDTH LESS-THAN SIGN;Sm;0;ON; 003C;;;;Y;;;;; -FF1D;FULLWIDTH EQUALS SIGN;Sm;0;ON; 003D;;;;N;;;;; -FF1E;FULLWIDTH GREATER-THAN SIGN;Sm;0;ON; 003E;;;;Y;;;;; -FF1F;FULLWIDTH QUESTION MARK;Po;0;ON; 003F;;;;N;;;;; -FF20;FULLWIDTH COMMERCIAL AT;Po;0;ON; 0040;;;;N;;;;; -FF21;FULLWIDTH LATIN CAPITAL LETTER A;Lu;0;L; 0041;;;;N;;;;FF41; -FF22;FULLWIDTH LATIN CAPITAL LETTER B;Lu;0;L; 0042;;;;N;;;;FF42; -FF23;FULLWIDTH LATIN CAPITAL LETTER C;Lu;0;L; 0043;;;;N;;;;FF43; -FF24;FULLWIDTH LATIN CAPITAL LETTER D;Lu;0;L; 0044;;;;N;;;;FF44; -FF25;FULLWIDTH LATIN CAPITAL LETTER E;Lu;0;L; 0045;;;;N;;;;FF45; -FF26;FULLWIDTH LATIN CAPITAL LETTER F;Lu;0;L; 0046;;;;N;;;;FF46; -FF27;FULLWIDTH LATIN CAPITAL LETTER G;Lu;0;L; 0047;;;;N;;;;FF47; -FF28;FULLWIDTH LATIN CAPITAL LETTER H;Lu;0;L; 0048;;;;N;;;;FF48; -FF29;FULLWIDTH LATIN CAPITAL LETTER I;Lu;0;L; 0049;;;;N;;;;FF49; -FF2A;FULLWIDTH LATIN CAPITAL LETTER J;Lu;0;L; 004A;;;;N;;;;FF4A; -FF2B;FULLWIDTH LATIN CAPITAL LETTER K;Lu;0;L; 004B;;;;N;;;;FF4B; -FF2C;FULLWIDTH LATIN CAPITAL LETTER L;Lu;0;L; 004C;;;;N;;;;FF4C; -FF2D;FULLWIDTH LATIN CAPITAL LETTER M;Lu;0;L; 004D;;;;N;;;;FF4D; -FF2E;FULLWIDTH LATIN CAPITAL LETTER N;Lu;0;L; 004E;;;;N;;;;FF4E; -FF2F;FULLWIDTH LATIN CAPITAL LETTER O;Lu;0;L; 004F;;;;N;;;;FF4F; -FF30;FULLWIDTH LATIN CAPITAL LETTER P;Lu;0;L; 0050;;;;N;;;;FF50; -FF31;FULLWIDTH LATIN CAPITAL LETTER Q;Lu;0;L; 0051;;;;N;;;;FF51; -FF32;FULLWIDTH LATIN CAPITAL LETTER R;Lu;0;L; 0052;;;;N;;;;FF52; -FF33;FULLWIDTH LATIN CAPITAL LETTER S;Lu;0;L; 0053;;;;N;;;;FF53; -FF34;FULLWIDTH LATIN CAPITAL LETTER T;Lu;0;L; 0054;;;;N;;;;FF54; -FF35;FULLWIDTH LATIN CAPITAL LETTER U;Lu;0;L; 0055;;;;N;;;;FF55; -FF36;FULLWIDTH LATIN CAPITAL LETTER V;Lu;0;L; 0056;;;;N;;;;FF56; -FF37;FULLWIDTH LATIN CAPITAL LETTER W;Lu;0;L; 0057;;;;N;;;;FF57; -FF38;FULLWIDTH LATIN CAPITAL LETTER X;Lu;0;L; 0058;;;;N;;;;FF58; -FF39;FULLWIDTH LATIN CAPITAL LETTER Y;Lu;0;L; 0059;;;;N;;;;FF59; -FF3A;FULLWIDTH LATIN CAPITAL LETTER Z;Lu;0;L; 005A;;;;N;;;;FF5A; -FF3B;FULLWIDTH LEFT SQUARE BRACKET;Ps;0;ON; 005B;;;;Y;FULLWIDTH OPENING SQUARE BRACKET;;;; -FF3C;FULLWIDTH REVERSE SOLIDUS;Po;0;ON; 005C;;;;N;FULLWIDTH BACKSLASH;;;; -FF3D;FULLWIDTH RIGHT SQUARE BRACKET;Pe;0;ON; 005D;;;;Y;FULLWIDTH CLOSING SQUARE BRACKET;;;; -FF3E;FULLWIDTH CIRCUMFLEX ACCENT;Sk;0;ON; 005E;;;;N;FULLWIDTH SPACING CIRCUMFLEX;;;; -FF3F;FULLWIDTH LOW LINE;Pc;0;ON; 005F;;;;N;FULLWIDTH SPACING UNDERSCORE;;;; -FF40;FULLWIDTH GRAVE ACCENT;Sk;0;ON; 0060;;;;N;FULLWIDTH SPACING GRAVE;;;; -FF41;FULLWIDTH LATIN SMALL LETTER A;Ll;0;L; 0061;;;;N;;;FF21;;FF21 -FF42;FULLWIDTH LATIN SMALL LETTER B;Ll;0;L; 0062;;;;N;;;FF22;;FF22 -FF43;FULLWIDTH LATIN SMALL LETTER C;Ll;0;L; 0063;;;;N;;;FF23;;FF23 -FF44;FULLWIDTH LATIN SMALL LETTER D;Ll;0;L; 0064;;;;N;;;FF24;;FF24 -FF45;FULLWIDTH LATIN SMALL LETTER E;Ll;0;L; 0065;;;;N;;;FF25;;FF25 -FF46;FULLWIDTH LATIN SMALL LETTER F;Ll;0;L; 0066;;;;N;;;FF26;;FF26 -FF47;FULLWIDTH LATIN SMALL LETTER G;Ll;0;L; 0067;;;;N;;;FF27;;FF27 -FF48;FULLWIDTH LATIN SMALL LETTER H;Ll;0;L; 0068;;;;N;;;FF28;;FF28 -FF49;FULLWIDTH LATIN SMALL LETTER I;Ll;0;L; 0069;;;;N;;;FF29;;FF29 -FF4A;FULLWIDTH LATIN SMALL LETTER J;Ll;0;L; 006A;;;;N;;;FF2A;;FF2A -FF4B;FULLWIDTH LATIN SMALL LETTER K;Ll;0;L; 006B;;;;N;;;FF2B;;FF2B -FF4C;FULLWIDTH LATIN SMALL LETTER L;Ll;0;L; 006C;;;;N;;;FF2C;;FF2C -FF4D;FULLWIDTH LATIN SMALL LETTER M;Ll;0;L; 006D;;;;N;;;FF2D;;FF2D -FF4E;FULLWIDTH LATIN SMALL LETTER N;Ll;0;L; 006E;;;;N;;;FF2E;;FF2E -FF4F;FULLWIDTH LATIN SMALL LETTER O;Ll;0;L; 006F;;;;N;;;FF2F;;FF2F -FF50;FULLWIDTH LATIN SMALL LETTER P;Ll;0;L; 0070;;;;N;;;FF30;;FF30 -FF51;FULLWIDTH LATIN SMALL LETTER Q;Ll;0;L; 0071;;;;N;;;FF31;;FF31 -FF52;FULLWIDTH LATIN SMALL LETTER R;Ll;0;L; 0072;;;;N;;;FF32;;FF32 -FF53;FULLWIDTH LATIN SMALL LETTER S;Ll;0;L; 0073;;;;N;;;FF33;;FF33 -FF54;FULLWIDTH LATIN SMALL LETTER T;Ll;0;L; 0074;;;;N;;;FF34;;FF34 -FF55;FULLWIDTH LATIN SMALL LETTER U;Ll;0;L; 0075;;;;N;;;FF35;;FF35 -FF56;FULLWIDTH LATIN SMALL LETTER V;Ll;0;L; 0076;;;;N;;;FF36;;FF36 -FF57;FULLWIDTH LATIN SMALL LETTER W;Ll;0;L; 0077;;;;N;;;FF37;;FF37 -FF58;FULLWIDTH LATIN SMALL LETTER X;Ll;0;L; 0078;;;;N;;;FF38;;FF38 -FF59;FULLWIDTH LATIN SMALL LETTER Y;Ll;0;L; 0079;;;;N;;;FF39;;FF39 -FF5A;FULLWIDTH LATIN SMALL LETTER Z;Ll;0;L; 007A;;;;N;;;FF3A;;FF3A -FF5B;FULLWIDTH LEFT CURLY BRACKET;Ps;0;ON; 007B;;;;Y;FULLWIDTH OPENING CURLY BRACKET;;;; -FF5C;FULLWIDTH VERTICAL LINE;Sm;0;ON; 007C;;;;N;FULLWIDTH VERTICAL BAR;;;; -FF5D;FULLWIDTH RIGHT CURLY BRACKET;Pe;0;ON; 007D;;;;Y;FULLWIDTH CLOSING CURLY BRACKET;;;; -FF5E;FULLWIDTH TILDE;Sm;0;ON; 007E;;;;N;FULLWIDTH SPACING TILDE;;;; -FF5F;FULLWIDTH LEFT WHITE PARENTHESIS;Ps;0;ON; 2985;;;;Y;;;;; -FF60;FULLWIDTH RIGHT WHITE PARENTHESIS;Pe;0;ON; 2986;;;;Y;;;;; -FF61;HALFWIDTH IDEOGRAPHIC FULL STOP;Po;0;ON; 3002;;;;N;HALFWIDTH IDEOGRAPHIC PERIOD;;;; -FF62;HALFWIDTH LEFT CORNER BRACKET;Ps;0;ON; 300C;;;;Y;HALFWIDTH OPENING CORNER BRACKET;;;; -FF63;HALFWIDTH RIGHT CORNER BRACKET;Pe;0;ON; 300D;;;;Y;HALFWIDTH CLOSING CORNER BRACKET;;;; -FF64;HALFWIDTH IDEOGRAPHIC COMMA;Po;0;ON; 3001;;;;N;;;;; -FF65;HALFWIDTH KATAKANA MIDDLE DOT;Po;0;ON; 30FB;;;;N;;;;; -FF66;HALFWIDTH KATAKANA LETTER WO;Lo;0;L; 30F2;;;;N;;;;; -FF67;HALFWIDTH KATAKANA LETTER SMALL A;Lo;0;L; 30A1;;;;N;;;;; -FF68;HALFWIDTH KATAKANA LETTER SMALL I;Lo;0;L; 30A3;;;;N;;;;; -FF69;HALFWIDTH KATAKANA LETTER SMALL U;Lo;0;L; 30A5;;;;N;;;;; -FF6A;HALFWIDTH KATAKANA LETTER SMALL E;Lo;0;L; 30A7;;;;N;;;;; -FF6B;HALFWIDTH KATAKANA LETTER SMALL O;Lo;0;L; 30A9;;;;N;;;;; -FF6C;HALFWIDTH KATAKANA LETTER SMALL YA;Lo;0;L; 30E3;;;;N;;;;; -FF6D;HALFWIDTH KATAKANA LETTER SMALL YU;Lo;0;L; 30E5;;;;N;;;;; -FF6E;HALFWIDTH KATAKANA LETTER SMALL YO;Lo;0;L; 30E7;;;;N;;;;; -FF6F;HALFWIDTH KATAKANA LETTER SMALL TU;Lo;0;L; 30C3;;;;N;;;;; -FF70;HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L; 30FC;;;;N;;;;; -FF71;HALFWIDTH KATAKANA LETTER A;Lo;0;L; 30A2;;;;N;;;;; -FF72;HALFWIDTH KATAKANA LETTER I;Lo;0;L; 30A4;;;;N;;;;; -FF73;HALFWIDTH KATAKANA LETTER U;Lo;0;L; 30A6;;;;N;;;;; -FF74;HALFWIDTH KATAKANA LETTER E;Lo;0;L; 30A8;;;;N;;;;; -FF75;HALFWIDTH KATAKANA LETTER O;Lo;0;L; 30AA;;;;N;;;;; -FF76;HALFWIDTH KATAKANA LETTER KA;Lo;0;L; 30AB;;;;N;;;;; -FF77;HALFWIDTH KATAKANA LETTER KI;Lo;0;L; 30AD;;;;N;;;;; -FF78;HALFWIDTH KATAKANA LETTER KU;Lo;0;L; 30AF;;;;N;;;;; -FF79;HALFWIDTH KATAKANA LETTER KE;Lo;0;L; 30B1;;;;N;;;;; -FF7A;HALFWIDTH KATAKANA LETTER KO;Lo;0;L; 30B3;;;;N;;;;; -FF7B;HALFWIDTH KATAKANA LETTER SA;Lo;0;L; 30B5;;;;N;;;;; -FF7C;HALFWIDTH KATAKANA LETTER SI;Lo;0;L; 30B7;;;;N;;;;; -FF7D;HALFWIDTH KATAKANA LETTER SU;Lo;0;L; 30B9;;;;N;;;;; -FF7E;HALFWIDTH KATAKANA LETTER SE;Lo;0;L; 30BB;;;;N;;;;; -FF7F;HALFWIDTH KATAKANA LETTER SO;Lo;0;L; 30BD;;;;N;;;;; -FF80;HALFWIDTH KATAKANA LETTER TA;Lo;0;L; 30BF;;;;N;;;;; -FF81;HALFWIDTH KATAKANA LETTER TI;Lo;0;L; 30C1;;;;N;;;;; -FF82;HALFWIDTH KATAKANA LETTER TU;Lo;0;L; 30C4;;;;N;;;;; -FF83;HALFWIDTH KATAKANA LETTER TE;Lo;0;L; 30C6;;;;N;;;;; -FF84;HALFWIDTH KATAKANA LETTER TO;Lo;0;L; 30C8;;;;N;;;;; -FF85;HALFWIDTH KATAKANA LETTER NA;Lo;0;L; 30CA;;;;N;;;;; -FF86;HALFWIDTH KATAKANA LETTER NI;Lo;0;L; 30CB;;;;N;;;;; -FF87;HALFWIDTH KATAKANA LETTER NU;Lo;0;L; 30CC;;;;N;;;;; -FF88;HALFWIDTH KATAKANA LETTER NE;Lo;0;L; 30CD;;;;N;;;;; -FF89;HALFWIDTH KATAKANA LETTER NO;Lo;0;L; 30CE;;;;N;;;;; -FF8A;HALFWIDTH KATAKANA LETTER HA;Lo;0;L; 30CF;;;;N;;;;; -FF8B;HALFWIDTH KATAKANA LETTER HI;Lo;0;L; 30D2;;;;N;;;;; -FF8C;HALFWIDTH KATAKANA LETTER HU;Lo;0;L; 30D5;;;;N;;;;; -FF8D;HALFWIDTH KATAKANA LETTER HE;Lo;0;L; 30D8;;;;N;;;;; -FF8E;HALFWIDTH KATAKANA LETTER HO;Lo;0;L; 30DB;;;;N;;;;; -FF8F;HALFWIDTH KATAKANA LETTER MA;Lo;0;L; 30DE;;;;N;;;;; -FF90;HALFWIDTH KATAKANA LETTER MI;Lo;0;L; 30DF;;;;N;;;;; -FF91;HALFWIDTH KATAKANA LETTER MU;Lo;0;L; 30E0;;;;N;;;;; -FF92;HALFWIDTH KATAKANA LETTER ME;Lo;0;L; 30E1;;;;N;;;;; -FF93;HALFWIDTH KATAKANA LETTER MO;Lo;0;L; 30E2;;;;N;;;;; -FF94;HALFWIDTH KATAKANA LETTER YA;Lo;0;L; 30E4;;;;N;;;;; -FF95;HALFWIDTH KATAKANA LETTER YU;Lo;0;L; 30E6;;;;N;;;;; -FF96;HALFWIDTH KATAKANA LETTER YO;Lo;0;L; 30E8;;;;N;;;;; -FF97;HALFWIDTH KATAKANA LETTER RA;Lo;0;L; 30E9;;;;N;;;;; -FF98;HALFWIDTH KATAKANA LETTER RI;Lo;0;L; 30EA;;;;N;;;;; -FF99;HALFWIDTH KATAKANA LETTER RU;Lo;0;L; 30EB;;;;N;;;;; -FF9A;HALFWIDTH KATAKANA LETTER RE;Lo;0;L; 30EC;;;;N;;;;; -FF9B;HALFWIDTH KATAKANA LETTER RO;Lo;0;L; 30ED;;;;N;;;;; -FF9C;HALFWIDTH KATAKANA LETTER WA;Lo;0;L; 30EF;;;;N;;;;; -FF9D;HALFWIDTH KATAKANA LETTER N;Lo;0;L; 30F3;;;;N;;;;; -FF9E;HALFWIDTH KATAKANA VOICED SOUND MARK;Lm;0;L; 3099;;;;N;;;;; -FF9F;HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK;Lm;0;L; 309A;;;;N;;;;; -FFA0;HALFWIDTH HANGUL FILLER;Lo;0;L; 3164;;;;N;HALFWIDTH HANGUL CAE OM;;;; -FFA1;HALFWIDTH HANGUL LETTER KIYEOK;Lo;0;L; 3131;;;;N;HALFWIDTH HANGUL LETTER GIYEOG;;;; -FFA2;HALFWIDTH HANGUL LETTER SSANGKIYEOK;Lo;0;L; 3132;;;;N;HALFWIDTH HANGUL LETTER SSANG GIYEOG;;;; -FFA3;HALFWIDTH HANGUL LETTER KIYEOK-SIOS;Lo;0;L; 3133;;;;N;HALFWIDTH HANGUL LETTER GIYEOG SIOS;;;; -FFA4;HALFWIDTH HANGUL LETTER NIEUN;Lo;0;L; 3134;;;;N;;;;; -FFA5;HALFWIDTH HANGUL LETTER NIEUN-CIEUC;Lo;0;L; 3135;;;;N;HALFWIDTH HANGUL LETTER NIEUN JIEUJ;;;; -FFA6;HALFWIDTH HANGUL LETTER NIEUN-HIEUH;Lo;0;L; 3136;;;;N;HALFWIDTH HANGUL LETTER NIEUN HIEUH;;;; -FFA7;HALFWIDTH HANGUL LETTER TIKEUT;Lo;0;L; 3137;;;;N;HALFWIDTH HANGUL LETTER DIGEUD;;;; -FFA8;HALFWIDTH HANGUL LETTER SSANGTIKEUT;Lo;0;L; 3138;;;;N;HALFWIDTH HANGUL LETTER SSANG DIGEUD;;;; -FFA9;HALFWIDTH HANGUL LETTER RIEUL;Lo;0;L; 3139;;;;N;HALFWIDTH HANGUL LETTER LIEUL;;;; -FFAA;HALFWIDTH HANGUL LETTER RIEUL-KIYEOK;Lo;0;L; 313A;;;;N;HALFWIDTH HANGUL LETTER LIEUL GIYEOG;;;; -FFAB;HALFWIDTH HANGUL LETTER RIEUL-MIEUM;Lo;0;L; 313B;;;;N;HALFWIDTH HANGUL LETTER LIEUL MIEUM;;;; -FFAC;HALFWIDTH HANGUL LETTER RIEUL-PIEUP;Lo;0;L; 313C;;;;N;HALFWIDTH HANGUL LETTER LIEUL BIEUB;;;; -FFAD;HALFWIDTH HANGUL LETTER RIEUL-SIOS;Lo;0;L; 313D;;;;N;HALFWIDTH HANGUL LETTER LIEUL SIOS;;;; -FFAE;HALFWIDTH HANGUL LETTER RIEUL-THIEUTH;Lo;0;L; 313E;;;;N;HALFWIDTH HANGUL LETTER LIEUL TIEUT;;;; -FFAF;HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L; 313F;;;;N;HALFWIDTH HANGUL LETTER LIEUL PIEUP;;;; -FFB0;HALFWIDTH HANGUL LETTER RIEUL-HIEUH;Lo;0;L; 3140;;;;N;HALFWIDTH HANGUL LETTER LIEUL HIEUH;;;; -FFB1;HALFWIDTH HANGUL LETTER MIEUM;Lo;0;L; 3141;;;;N;;;;; -FFB2;HALFWIDTH HANGUL LETTER PIEUP;Lo;0;L; 3142;;;;N;HALFWIDTH HANGUL LETTER BIEUB;;;; -FFB3;HALFWIDTH HANGUL LETTER SSANGPIEUP;Lo;0;L; 3143;;;;N;HALFWIDTH HANGUL LETTER SSANG BIEUB;;;; -FFB4;HALFWIDTH HANGUL LETTER PIEUP-SIOS;Lo;0;L; 3144;;;;N;HALFWIDTH HANGUL LETTER BIEUB SIOS;;;; -FFB5;HALFWIDTH HANGUL LETTER SIOS;Lo;0;L; 3145;;;;N;;;;; -FFB6;HALFWIDTH HANGUL LETTER SSANGSIOS;Lo;0;L; 3146;;;;N;HALFWIDTH HANGUL LETTER SSANG SIOS;;;; -FFB7;HALFWIDTH HANGUL LETTER IEUNG;Lo;0;L; 3147;;;;N;;;;; -FFB8;HALFWIDTH HANGUL LETTER CIEUC;Lo;0;L; 3148;;;;N;HALFWIDTH HANGUL LETTER JIEUJ;;;; -FFB9;HALFWIDTH HANGUL LETTER SSANGCIEUC;Lo;0;L; 3149;;;;N;HALFWIDTH HANGUL LETTER SSANG JIEUJ;;;; -FFBA;HALFWIDTH HANGUL LETTER CHIEUCH;Lo;0;L; 314A;;;;N;HALFWIDTH HANGUL LETTER CIEUC;;;; -FFBB;HALFWIDTH HANGUL LETTER KHIEUKH;Lo;0;L; 314B;;;;N;HALFWIDTH HANGUL LETTER KIYEOK;;;; -FFBC;HALFWIDTH HANGUL LETTER THIEUTH;Lo;0;L; 314C;;;;N;HALFWIDTH HANGUL LETTER TIEUT;;;; -FFBD;HALFWIDTH HANGUL LETTER PHIEUPH;Lo;0;L; 314D;;;;N;HALFWIDTH HANGUL LETTER PIEUP;;;; -FFBE;HALFWIDTH HANGUL LETTER HIEUH;Lo;0;L; 314E;;;;N;;;;; -FFC2;HALFWIDTH HANGUL LETTER A;Lo;0;L; 314F;;;;N;;;;; -FFC3;HALFWIDTH HANGUL LETTER AE;Lo;0;L; 3150;;;;N;;;;; -FFC4;HALFWIDTH HANGUL LETTER YA;Lo;0;L; 3151;;;;N;;;;; -FFC5;HALFWIDTH HANGUL LETTER YAE;Lo;0;L; 3152;;;;N;;;;; -FFC6;HALFWIDTH HANGUL LETTER EO;Lo;0;L; 3153;;;;N;;;;; -FFC7;HALFWIDTH HANGUL LETTER E;Lo;0;L; 3154;;;;N;;;;; -FFCA;HALFWIDTH HANGUL LETTER YEO;Lo;0;L; 3155;;;;N;;;;; -FFCB;HALFWIDTH HANGUL LETTER YE;Lo;0;L; 3156;;;;N;;;;; -FFCC;HALFWIDTH HANGUL LETTER O;Lo;0;L; 3157;;;;N;;;;; -FFCD;HALFWIDTH HANGUL LETTER WA;Lo;0;L; 3158;;;;N;;;;; -FFCE;HALFWIDTH HANGUL LETTER WAE;Lo;0;L; 3159;;;;N;;;;; -FFCF;HALFWIDTH HANGUL LETTER OE;Lo;0;L; 315A;;;;N;;;;; -FFD2;HALFWIDTH HANGUL LETTER YO;Lo;0;L; 315B;;;;N;;;;; -FFD3;HALFWIDTH HANGUL LETTER U;Lo;0;L; 315C;;;;N;;;;; -FFD4;HALFWIDTH HANGUL LETTER WEO;Lo;0;L; 315D;;;;N;;;;; -FFD5;HALFWIDTH HANGUL LETTER WE;Lo;0;L; 315E;;;;N;;;;; -FFD6;HALFWIDTH HANGUL LETTER WI;Lo;0;L; 315F;;;;N;;;;; -FFD7;HALFWIDTH HANGUL LETTER YU;Lo;0;L; 3160;;;;N;;;;; -FFDA;HALFWIDTH HANGUL LETTER EU;Lo;0;L; 3161;;;;N;;;;; -FFDB;HALFWIDTH HANGUL LETTER YI;Lo;0;L; 3162;;;;N;;;;; -FFDC;HALFWIDTH HANGUL LETTER I;Lo;0;L; 3163;;;;N;;;;; -FFE0;FULLWIDTH CENT SIGN;Sc;0;ET; 00A2;;;;N;;;;; -FFE1;FULLWIDTH POUND SIGN;Sc;0;ET; 00A3;;;;N;;;;; -FFE2;FULLWIDTH NOT SIGN;Sm;0;ON; 00AC;;;;N;;;;; -FFE3;FULLWIDTH MACRON;Sk;0;ON; 00AF;;;;N;FULLWIDTH SPACING MACRON;;;; -FFE4;FULLWIDTH BROKEN BAR;So;0;ON; 00A6;;;;N;FULLWIDTH BROKEN VERTICAL BAR;;;; -FFE5;FULLWIDTH YEN SIGN;Sc;0;ET; 00A5;;;;N;;;;; -FFE6;FULLWIDTH WON SIGN;Sc;0;ET; 20A9;;;;N;;;;; -FFE8;HALFWIDTH FORMS LIGHT VERTICAL;So;0;ON; 2502;;;;N;;;;; -FFE9;HALFWIDTH LEFTWARDS ARROW;Sm;0;ON; 2190;;;;N;;;;; -FFEA;HALFWIDTH UPWARDS ARROW;Sm;0;ON; 2191;;;;N;;;;; -FFEB;HALFWIDTH RIGHTWARDS ARROW;Sm;0;ON; 2192;;;;N;;;;; -FFEC;HALFWIDTH DOWNWARDS ARROW;Sm;0;ON; 2193;;;;N;;;;; -FFED;HALFWIDTH BLACK SQUARE;So;0;ON; 25A0;;;;N;;;;; -FFEE;HALFWIDTH WHITE CIRCLE;So;0;ON; 25CB;;;;N;;;;; -FFF9;INTERLINEAR ANNOTATION ANCHOR;Cf;0;ON;;;;;N;;;;; -FFFA;INTERLINEAR ANNOTATION SEPARATOR;Cf;0;ON;;;;;N;;;;; -FFFB;INTERLINEAR ANNOTATION TERMINATOR;Cf;0;ON;;;;;N;;;;; -FFFC;OBJECT REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; -FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; -10000;LINEAR B SYLLABLE B008 A;Lo;0;L;;;;;N;;;;; -10001;LINEAR B SYLLABLE B038 E;Lo;0;L;;;;;N;;;;; -10002;LINEAR B SYLLABLE B028 I;Lo;0;L;;;;;N;;;;; -10003;LINEAR B SYLLABLE B061 O;Lo;0;L;;;;;N;;;;; -10004;LINEAR B SYLLABLE B010 U;Lo;0;L;;;;;N;;;;; -10005;LINEAR B SYLLABLE B001 DA;Lo;0;L;;;;;N;;;;; -10006;LINEAR B SYLLABLE B045 DE;Lo;0;L;;;;;N;;;;; -10007;LINEAR B SYLLABLE B007 DI;Lo;0;L;;;;;N;;;;; -10008;LINEAR B SYLLABLE B014 DO;Lo;0;L;;;;;N;;;;; -10009;LINEAR B SYLLABLE B051 DU;Lo;0;L;;;;;N;;;;; -1000A;LINEAR B SYLLABLE B057 JA;Lo;0;L;;;;;N;;;;; -1000B;LINEAR B SYLLABLE B046 JE;Lo;0;L;;;;;N;;;;; -1000D;LINEAR B SYLLABLE B036 JO;Lo;0;L;;;;;N;;;;; -1000E;LINEAR B SYLLABLE B065 JU;Lo;0;L;;;;;N;;;;; -1000F;LINEAR B SYLLABLE B077 KA;Lo;0;L;;;;;N;;;;; -10010;LINEAR B SYLLABLE B044 KE;Lo;0;L;;;;;N;;;;; -10011;LINEAR B SYLLABLE B067 KI;Lo;0;L;;;;;N;;;;; -10012;LINEAR B SYLLABLE B070 KO;Lo;0;L;;;;;N;;;;; -10013;LINEAR B SYLLABLE B081 KU;Lo;0;L;;;;;N;;;;; -10014;LINEAR B SYLLABLE B080 MA;Lo;0;L;;;;;N;;;;; -10015;LINEAR B SYLLABLE B013 ME;Lo;0;L;;;;;N;;;;; -10016;LINEAR B SYLLABLE B073 MI;Lo;0;L;;;;;N;;;;; -10017;LINEAR B SYLLABLE B015 MO;Lo;0;L;;;;;N;;;;; -10018;LINEAR B SYLLABLE B023 MU;Lo;0;L;;;;;N;;;;; -10019;LINEAR B SYLLABLE B006 NA;Lo;0;L;;;;;N;;;;; -1001A;LINEAR B SYLLABLE B024 NE;Lo;0;L;;;;;N;;;;; -1001B;LINEAR B SYLLABLE B030 NI;Lo;0;L;;;;;N;;;;; -1001C;LINEAR B SYLLABLE B052 NO;Lo;0;L;;;;;N;;;;; -1001D;LINEAR B SYLLABLE B055 NU;Lo;0;L;;;;;N;;;;; -1001E;LINEAR B SYLLABLE B003 PA;Lo;0;L;;;;;N;;;;; -1001F;LINEAR B SYLLABLE B072 PE;Lo;0;L;;;;;N;;;;; -10020;LINEAR B SYLLABLE B039 PI;Lo;0;L;;;;;N;;;;; -10021;LINEAR B SYLLABLE B011 PO;Lo;0;L;;;;;N;;;;; -10022;LINEAR B SYLLABLE B050 PU;Lo;0;L;;;;;N;;;;; -10023;LINEAR B SYLLABLE B016 QA;Lo;0;L;;;;;N;;;;; -10024;LINEAR B SYLLABLE B078 QE;Lo;0;L;;;;;N;;;;; -10025;LINEAR B SYLLABLE B021 QI;Lo;0;L;;;;;N;;;;; -10026;LINEAR B SYLLABLE B032 QO;Lo;0;L;;;;;N;;;;; -10028;LINEAR B SYLLABLE B060 RA;Lo;0;L;;;;;N;;;;; -10029;LINEAR B SYLLABLE B027 RE;Lo;0;L;;;;;N;;;;; -1002A;LINEAR B SYLLABLE B053 RI;Lo;0;L;;;;;N;;;;; -1002B;LINEAR B SYLLABLE B002 RO;Lo;0;L;;;;;N;;;;; -1002C;LINEAR B SYLLABLE B026 RU;Lo;0;L;;;;;N;;;;; -1002D;LINEAR B SYLLABLE B031 SA;Lo;0;L;;;;;N;;;;; -1002E;LINEAR B SYLLABLE B009 SE;Lo;0;L;;;;;N;;;;; -1002F;LINEAR B SYLLABLE B041 SI;Lo;0;L;;;;;N;;;;; -10030;LINEAR B SYLLABLE B012 SO;Lo;0;L;;;;;N;;;;; -10031;LINEAR B SYLLABLE B058 SU;Lo;0;L;;;;;N;;;;; -10032;LINEAR B SYLLABLE B059 TA;Lo;0;L;;;;;N;;;;; -10033;LINEAR B SYLLABLE B004 TE;Lo;0;L;;;;;N;;;;; -10034;LINEAR B SYLLABLE B037 TI;Lo;0;L;;;;;N;;;;; -10035;LINEAR B SYLLABLE B005 TO;Lo;0;L;;;;;N;;;;; -10036;LINEAR B SYLLABLE B069 TU;Lo;0;L;;;;;N;;;;; -10037;LINEAR B SYLLABLE B054 WA;Lo;0;L;;;;;N;;;;; -10038;LINEAR B SYLLABLE B075 WE;Lo;0;L;;;;;N;;;;; -10039;LINEAR B SYLLABLE B040 WI;Lo;0;L;;;;;N;;;;; -1003A;LINEAR B SYLLABLE B042 WO;Lo;0;L;;;;;N;;;;; -1003C;LINEAR B SYLLABLE B017 ZA;Lo;0;L;;;;;N;;;;; -1003D;LINEAR B SYLLABLE B074 ZE;Lo;0;L;;;;;N;;;;; -1003F;LINEAR B SYLLABLE B020 ZO;Lo;0;L;;;;;N;;;;; -10040;LINEAR B SYLLABLE B025 A2;Lo;0;L;;;;;N;;;;; -10041;LINEAR B SYLLABLE B043 A3;Lo;0;L;;;;;N;;;;; -10042;LINEAR B SYLLABLE B085 AU;Lo;0;L;;;;;N;;;;; -10043;LINEAR B SYLLABLE B071 DWE;Lo;0;L;;;;;N;;;;; -10044;LINEAR B SYLLABLE B090 DWO;Lo;0;L;;;;;N;;;;; -10045;LINEAR B SYLLABLE B048 NWA;Lo;0;L;;;;;N;;;;; -10046;LINEAR B SYLLABLE B029 PU2;Lo;0;L;;;;;N;;;;; -10047;LINEAR B SYLLABLE B062 PTE;Lo;0;L;;;;;N;;;;; -10048;LINEAR B SYLLABLE B076 RA2;Lo;0;L;;;;;N;;;;; -10049;LINEAR B SYLLABLE B033 RA3;Lo;0;L;;;;;N;;;;; -1004A;LINEAR B SYLLABLE B068 RO2;Lo;0;L;;;;;N;;;;; -1004B;LINEAR B SYLLABLE B066 TA2;Lo;0;L;;;;;N;;;;; -1004C;LINEAR B SYLLABLE B087 TWE;Lo;0;L;;;;;N;;;;; -1004D;LINEAR B SYLLABLE B091 TWO;Lo;0;L;;;;;N;;;;; -10050;LINEAR B SYMBOL B018;Lo;0;L;;;;;N;;;;; -10051;LINEAR B SYMBOL B019;Lo;0;L;;;;;N;;;;; -10052;LINEAR B SYMBOL B022;Lo;0;L;;;;;N;;;;; -10053;LINEAR B SYMBOL B034;Lo;0;L;;;;;N;;;;; -10054;LINEAR B SYMBOL B047;Lo;0;L;;;;;N;;;;; -10055;LINEAR B SYMBOL B049;Lo;0;L;;;;;N;;;;; -10056;LINEAR B SYMBOL B056;Lo;0;L;;;;;N;;;;; -10057;LINEAR B SYMBOL B063;Lo;0;L;;;;;N;;;;; -10058;LINEAR B SYMBOL B064;Lo;0;L;;;;;N;;;;; -10059;LINEAR B SYMBOL B079;Lo;0;L;;;;;N;;;;; -1005A;LINEAR B SYMBOL B082;Lo;0;L;;;;;N;;;;; -1005B;LINEAR B SYMBOL B083;Lo;0;L;;;;;N;;;;; -1005C;LINEAR B SYMBOL B086;Lo;0;L;;;;;N;;;;; -1005D;LINEAR B SYMBOL B089;Lo;0;L;;;;;N;;;;; -10080;LINEAR B IDEOGRAM B100 MAN;Lo;0;L;;;;;N;;;;; -10081;LINEAR B IDEOGRAM B102 WOMAN;Lo;0;L;;;;;N;;;;; -10082;LINEAR B IDEOGRAM B104 DEER;Lo;0;L;;;;;N;;;;; -10083;LINEAR B IDEOGRAM B105 EQUID;Lo;0;L;;;;;N;;;;; -10084;LINEAR B IDEOGRAM B105F MARE;Lo;0;L;;;;;N;;;;; -10085;LINEAR B IDEOGRAM B105M STALLION;Lo;0;L;;;;;N;;;;; -10086;LINEAR B IDEOGRAM B106F EWE;Lo;0;L;;;;;N;;;;; -10087;LINEAR B IDEOGRAM B106M RAM;Lo;0;L;;;;;N;;;;; -10088;LINEAR B IDEOGRAM B107F SHE-GOAT;Lo;0;L;;;;;N;;;;; -10089;LINEAR B IDEOGRAM B107M HE-GOAT;Lo;0;L;;;;;N;;;;; -1008A;LINEAR B IDEOGRAM B108F SOW;Lo;0;L;;;;;N;;;;; -1008B;LINEAR B IDEOGRAM B108M BOAR;Lo;0;L;;;;;N;;;;; -1008C;LINEAR B IDEOGRAM B109F COW;Lo;0;L;;;;;N;;;;; -1008D;LINEAR B IDEOGRAM B109M BULL;Lo;0;L;;;;;N;;;;; -1008E;LINEAR B IDEOGRAM B120 WHEAT;Lo;0;L;;;;;N;;;;; -1008F;LINEAR B IDEOGRAM B121 BARLEY;Lo;0;L;;;;;N;;;;; -10090;LINEAR B IDEOGRAM B122 OLIVE;Lo;0;L;;;;;N;;;;; -10091;LINEAR B IDEOGRAM B123 SPICE;Lo;0;L;;;;;N;;;;; -10092;LINEAR B IDEOGRAM B125 CYPERUS;Lo;0;L;;;;;N;;;;; -10093;LINEAR B MONOGRAM B127 KAPO;Lo;0;L;;;;;N;;;;; -10094;LINEAR B MONOGRAM B128 KANAKO;Lo;0;L;;;;;N;;;;; -10095;LINEAR B IDEOGRAM B130 OIL;Lo;0;L;;;;;N;;;;; -10096;LINEAR B IDEOGRAM B131 WINE;Lo;0;L;;;;;N;;;;; -10097;LINEAR B IDEOGRAM B132;Lo;0;L;;;;;N;;;;; -10098;LINEAR B MONOGRAM B133 AREPA;Lo;0;L;;;;;N;;;;; -10099;LINEAR B MONOGRAM B135 MERI;Lo;0;L;;;;;N;;;;; -1009A;LINEAR B IDEOGRAM B140 BRONZE;Lo;0;L;;;;;N;;;;; -1009B;LINEAR B IDEOGRAM B141 GOLD;Lo;0;L;;;;;N;;;;; -1009C;LINEAR B IDEOGRAM B142;Lo;0;L;;;;;N;;;;; -1009D;LINEAR B IDEOGRAM B145 WOOL;Lo;0;L;;;;;N;;;;; -1009E;LINEAR B IDEOGRAM B146;Lo;0;L;;;;;N;;;;; -1009F;LINEAR B IDEOGRAM B150;Lo;0;L;;;;;N;;;;; -100A0;LINEAR B IDEOGRAM B151 HORN;Lo;0;L;;;;;N;;;;; -100A1;LINEAR B IDEOGRAM B152;Lo;0;L;;;;;N;;;;; -100A2;LINEAR B IDEOGRAM B153;Lo;0;L;;;;;N;;;;; -100A3;LINEAR B IDEOGRAM B154;Lo;0;L;;;;;N;;;;; -100A4;LINEAR B MONOGRAM B156 TURO2;Lo;0;L;;;;;N;;;;; -100A5;LINEAR B IDEOGRAM B157;Lo;0;L;;;;;N;;;;; -100A6;LINEAR B IDEOGRAM B158;Lo;0;L;;;;;N;;;;; -100A7;LINEAR B IDEOGRAM B159 CLOTH;Lo;0;L;;;;;N;;;;; -100A8;LINEAR B IDEOGRAM B160;Lo;0;L;;;;;N;;;;; -100A9;LINEAR B IDEOGRAM B161;Lo;0;L;;;;;N;;;;; -100AA;LINEAR B IDEOGRAM B162 GARMENT;Lo;0;L;;;;;N;;;;; -100AB;LINEAR B IDEOGRAM B163 ARMOUR;Lo;0;L;;;;;N;;;;; -100AC;LINEAR B IDEOGRAM B164;Lo;0;L;;;;;N;;;;; -100AD;LINEAR B IDEOGRAM B165;Lo;0;L;;;;;N;;;;; -100AE;LINEAR B IDEOGRAM B166;Lo;0;L;;;;;N;;;;; -100AF;LINEAR B IDEOGRAM B167;Lo;0;L;;;;;N;;;;; -100B0;LINEAR B IDEOGRAM B168;Lo;0;L;;;;;N;;;;; -100B1;LINEAR B IDEOGRAM B169;Lo;0;L;;;;;N;;;;; -100B2;LINEAR B IDEOGRAM B170;Lo;0;L;;;;;N;;;;; -100B3;LINEAR B IDEOGRAM B171;Lo;0;L;;;;;N;;;;; -100B4;LINEAR B IDEOGRAM B172;Lo;0;L;;;;;N;;;;; -100B5;LINEAR B IDEOGRAM B173 MONTH;Lo;0;L;;;;;N;;;;; -100B6;LINEAR B IDEOGRAM B174;Lo;0;L;;;;;N;;;;; -100B7;LINEAR B IDEOGRAM B176 TREE;Lo;0;L;;;;;N;;;;; -100B8;LINEAR B IDEOGRAM B177;Lo;0;L;;;;;N;;;;; -100B9;LINEAR B IDEOGRAM B178;Lo;0;L;;;;;N;;;;; -100BA;LINEAR B IDEOGRAM B179;Lo;0;L;;;;;N;;;;; -100BB;LINEAR B IDEOGRAM B180;Lo;0;L;;;;;N;;;;; -100BC;LINEAR B IDEOGRAM B181;Lo;0;L;;;;;N;;;;; -100BD;LINEAR B IDEOGRAM B182;Lo;0;L;;;;;N;;;;; -100BE;LINEAR B IDEOGRAM B183;Lo;0;L;;;;;N;;;;; -100BF;LINEAR B IDEOGRAM B184;Lo;0;L;;;;;N;;;;; -100C0;LINEAR B IDEOGRAM B185;Lo;0;L;;;;;N;;;;; -100C1;LINEAR B IDEOGRAM B189;Lo;0;L;;;;;N;;;;; -100C2;LINEAR B IDEOGRAM B190;Lo;0;L;;;;;N;;;;; -100C3;LINEAR B IDEOGRAM B191 HELMET;Lo;0;L;;;;;N;;;;; -100C4;LINEAR B IDEOGRAM B220 FOOTSTOOL;Lo;0;L;;;;;N;;;;; -100C5;LINEAR B IDEOGRAM B225 BATHTUB;Lo;0;L;;;;;N;;;;; -100C6;LINEAR B IDEOGRAM B230 SPEAR;Lo;0;L;;;;;N;;;;; -100C7;LINEAR B IDEOGRAM B231 ARROW;Lo;0;L;;;;;N;;;;; -100C8;LINEAR B IDEOGRAM B232;Lo;0;L;;;;;N;;;;; -100C9;LINEAR B IDEOGRAM B233 SWORD;Lo;0;L;;;;;N;;;;; -100CA;LINEAR B IDEOGRAM B234;Lo;0;L;;;;;N;;;;; -100CB;LINEAR B IDEOGRAM B236;Lo;0;L;;;;;N;;;;; -100CC;LINEAR B IDEOGRAM B240 WHEELED CHARIOT;Lo;0;L;;;;;N;;;;; -100CD;LINEAR B IDEOGRAM B241 CHARIOT;Lo;0;L;;;;;N;;;;; -100CE;LINEAR B IDEOGRAM B242 CHARIOT FRAME;Lo;0;L;;;;;N;;;;; -100CF;LINEAR B IDEOGRAM B243 WHEEL;Lo;0;L;;;;;N;;;;; -100D0;LINEAR B IDEOGRAM B245;Lo;0;L;;;;;N;;;;; -100D1;LINEAR B IDEOGRAM B246;Lo;0;L;;;;;N;;;;; -100D2;LINEAR B MONOGRAM B247 DIPTE;Lo;0;L;;;;;N;;;;; -100D3;LINEAR B IDEOGRAM B248;Lo;0;L;;;;;N;;;;; -100D4;LINEAR B IDEOGRAM B249;Lo;0;L;;;;;N;;;;; -100D5;LINEAR B IDEOGRAM B251;Lo;0;L;;;;;N;;;;; -100D6;LINEAR B IDEOGRAM B252;Lo;0;L;;;;;N;;;;; -100D7;LINEAR B IDEOGRAM B253;Lo;0;L;;;;;N;;;;; -100D8;LINEAR B IDEOGRAM B254 DART;Lo;0;L;;;;;N;;;;; -100D9;LINEAR B IDEOGRAM B255;Lo;0;L;;;;;N;;;;; -100DA;LINEAR B IDEOGRAM B256;Lo;0;L;;;;;N;;;;; -100DB;LINEAR B IDEOGRAM B257;Lo;0;L;;;;;N;;;;; -100DC;LINEAR B IDEOGRAM B258;Lo;0;L;;;;;N;;;;; -100DD;LINEAR B IDEOGRAM B259;Lo;0;L;;;;;N;;;;; -100DE;LINEAR B IDEOGRAM VESSEL B155;Lo;0;L;;;;;N;;;;; -100DF;LINEAR B IDEOGRAM VESSEL B200;Lo;0;L;;;;;N;;;;; -100E0;LINEAR B IDEOGRAM VESSEL B201;Lo;0;L;;;;;N;;;;; -100E1;LINEAR B IDEOGRAM VESSEL B202;Lo;0;L;;;;;N;;;;; -100E2;LINEAR B IDEOGRAM VESSEL B203;Lo;0;L;;;;;N;;;;; -100E3;LINEAR B IDEOGRAM VESSEL B204;Lo;0;L;;;;;N;;;;; -100E4;LINEAR B IDEOGRAM VESSEL B205;Lo;0;L;;;;;N;;;;; -100E5;LINEAR B IDEOGRAM VESSEL B206;Lo;0;L;;;;;N;;;;; -100E6;LINEAR B IDEOGRAM VESSEL B207;Lo;0;L;;;;;N;;;;; -100E7;LINEAR B IDEOGRAM VESSEL B208;Lo;0;L;;;;;N;;;;; -100E8;LINEAR B IDEOGRAM VESSEL B209;Lo;0;L;;;;;N;;;;; -100E9;LINEAR B IDEOGRAM VESSEL B210;Lo;0;L;;;;;N;;;;; -100EA;LINEAR B IDEOGRAM VESSEL B211;Lo;0;L;;;;;N;;;;; -100EB;LINEAR B IDEOGRAM VESSEL B212;Lo;0;L;;;;;N;;;;; -100EC;LINEAR B IDEOGRAM VESSEL B213;Lo;0;L;;;;;N;;;;; -100ED;LINEAR B IDEOGRAM VESSEL B214;Lo;0;L;;;;;N;;;;; -100EE;LINEAR B IDEOGRAM VESSEL B215;Lo;0;L;;;;;N;;;;; -100EF;LINEAR B IDEOGRAM VESSEL B216;Lo;0;L;;;;;N;;;;; -100F0;LINEAR B IDEOGRAM VESSEL B217;Lo;0;L;;;;;N;;;;; -100F1;LINEAR B IDEOGRAM VESSEL B218;Lo;0;L;;;;;N;;;;; -100F2;LINEAR B IDEOGRAM VESSEL B219;Lo;0;L;;;;;N;;;;; -100F3;LINEAR B IDEOGRAM VESSEL B221;Lo;0;L;;;;;N;;;;; -100F4;LINEAR B IDEOGRAM VESSEL B222;Lo;0;L;;;;;N;;;;; -100F5;LINEAR B IDEOGRAM VESSEL B226;Lo;0;L;;;;;N;;;;; -100F6;LINEAR B IDEOGRAM VESSEL B227;Lo;0;L;;;;;N;;;;; -100F7;LINEAR B IDEOGRAM VESSEL B228;Lo;0;L;;;;;N;;;;; -100F8;LINEAR B IDEOGRAM VESSEL B229;Lo;0;L;;;;;N;;;;; -100F9;LINEAR B IDEOGRAM VESSEL B250;Lo;0;L;;;;;N;;;;; -100FA;LINEAR B IDEOGRAM VESSEL B305;Lo;0;L;;;;;N;;;;; -10100;AEGEAN WORD SEPARATOR LINE;Po;0;L;;;;;N;;;;; -10101;AEGEAN WORD SEPARATOR DOT;Po;0;ON;;;;;N;;;;; -10102;AEGEAN CHECK MARK;So;0;L;;;;;N;;;;; -10107;AEGEAN NUMBER ONE;No;0;L;;;;1;N;;;;; -10108;AEGEAN NUMBER TWO;No;0;L;;;;2;N;;;;; -10109;AEGEAN NUMBER THREE;No;0;L;;;;3;N;;;;; -1010A;AEGEAN NUMBER FOUR;No;0;L;;;;4;N;;;;; -1010B;AEGEAN NUMBER FIVE;No;0;L;;;;5;N;;;;; -1010C;AEGEAN NUMBER SIX;No;0;L;;;;6;N;;;;; -1010D;AEGEAN NUMBER SEVEN;No;0;L;;;;7;N;;;;; -1010E;AEGEAN NUMBER EIGHT;No;0;L;;;;8;N;;;;; -1010F;AEGEAN NUMBER NINE;No;0;L;;;;9;N;;;;; -10110;AEGEAN NUMBER TEN;No;0;L;;;;10;N;;;;; -10111;AEGEAN NUMBER TWENTY;No;0;L;;;;20;N;;;;; -10112;AEGEAN NUMBER THIRTY;No;0;L;;;;30;N;;;;; -10113;AEGEAN NUMBER FORTY;No;0;L;;;;40;N;;;;; -10114;AEGEAN NUMBER FIFTY;No;0;L;;;;50;N;;;;; -10115;AEGEAN NUMBER SIXTY;No;0;L;;;;60;N;;;;; -10116;AEGEAN NUMBER SEVENTY;No;0;L;;;;70;N;;;;; -10117;AEGEAN NUMBER EIGHTY;No;0;L;;;;80;N;;;;; -10118;AEGEAN NUMBER NINETY;No;0;L;;;;90;N;;;;; -10119;AEGEAN NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;; -1011A;AEGEAN NUMBER TWO HUNDRED;No;0;L;;;;200;N;;;;; -1011B;AEGEAN NUMBER THREE HUNDRED;No;0;L;;;;300;N;;;;; -1011C;AEGEAN NUMBER FOUR HUNDRED;No;0;L;;;;400;N;;;;; -1011D;AEGEAN NUMBER FIVE HUNDRED;No;0;L;;;;500;N;;;;; -1011E;AEGEAN NUMBER SIX HUNDRED;No;0;L;;;;600;N;;;;; -1011F;AEGEAN NUMBER SEVEN HUNDRED;No;0;L;;;;700;N;;;;; -10120;AEGEAN NUMBER EIGHT HUNDRED;No;0;L;;;;800;N;;;;; -10121;AEGEAN NUMBER NINE HUNDRED;No;0;L;;;;900;N;;;;; -10122;AEGEAN NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;; -10123;AEGEAN NUMBER TWO THOUSAND;No;0;L;;;;2000;N;;;;; -10124;AEGEAN NUMBER THREE THOUSAND;No;0;L;;;;3000;N;;;;; -10125;AEGEAN NUMBER FOUR THOUSAND;No;0;L;;;;4000;N;;;;; -10126;AEGEAN NUMBER FIVE THOUSAND;No;0;L;;;;5000;N;;;;; -10127;AEGEAN NUMBER SIX THOUSAND;No;0;L;;;;6000;N;;;;; -10128;AEGEAN NUMBER SEVEN THOUSAND;No;0;L;;;;7000;N;;;;; -10129;AEGEAN NUMBER EIGHT THOUSAND;No;0;L;;;;8000;N;;;;; -1012A;AEGEAN NUMBER NINE THOUSAND;No;0;L;;;;9000;N;;;;; -1012B;AEGEAN NUMBER TEN THOUSAND;No;0;L;;;;10000;N;;;;; -1012C;AEGEAN NUMBER TWENTY THOUSAND;No;0;L;;;;20000;N;;;;; -1012D;AEGEAN NUMBER THIRTY THOUSAND;No;0;L;;;;30000;N;;;;; -1012E;AEGEAN NUMBER FORTY THOUSAND;No;0;L;;;;40000;N;;;;; -1012F;AEGEAN NUMBER FIFTY THOUSAND;No;0;L;;;;50000;N;;;;; -10130;AEGEAN NUMBER SIXTY THOUSAND;No;0;L;;;;60000;N;;;;; -10131;AEGEAN NUMBER SEVENTY THOUSAND;No;0;L;;;;70000;N;;;;; -10132;AEGEAN NUMBER EIGHTY THOUSAND;No;0;L;;;;80000;N;;;;; -10133;AEGEAN NUMBER NINETY THOUSAND;No;0;L;;;;90000;N;;;;; -10137;AEGEAN WEIGHT BASE UNIT;So;0;L;;;;;N;;;;; -10138;AEGEAN WEIGHT FIRST SUBUNIT;So;0;L;;;;;N;;;;; -10139;AEGEAN WEIGHT SECOND SUBUNIT;So;0;L;;;;;N;;;;; -1013A;AEGEAN WEIGHT THIRD SUBUNIT;So;0;L;;;;;N;;;;; -1013B;AEGEAN WEIGHT FOURTH SUBUNIT;So;0;L;;;;;N;;;;; -1013C;AEGEAN DRY MEASURE FIRST SUBUNIT;So;0;L;;;;;N;;;;; -1013D;AEGEAN LIQUID MEASURE FIRST SUBUNIT;So;0;L;;;;;N;;;;; -1013E;AEGEAN MEASURE SECOND SUBUNIT;So;0;L;;;;;N;;;;; -1013F;AEGEAN MEASURE THIRD SUBUNIT;So;0;L;;;;;N;;;;; -10140;GREEK ACROPHONIC ATTIC ONE QUARTER;Nl;0;ON;;;;1/4;N;;;;; -10141;GREEK ACROPHONIC ATTIC ONE HALF;Nl;0;ON;;;;1/2;N;;;;; -10142;GREEK ACROPHONIC ATTIC ONE DRACHMA;Nl;0;ON;;;;1;N;;;;; -10143;GREEK ACROPHONIC ATTIC FIVE;Nl;0;ON;;;;5;N;;;;; -10144;GREEK ACROPHONIC ATTIC FIFTY;Nl;0;ON;;;;50;N;;;;; -10145;GREEK ACROPHONIC ATTIC FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; -10146;GREEK ACROPHONIC ATTIC FIVE THOUSAND;Nl;0;ON;;;;5000;N;;;;; -10147;GREEK ACROPHONIC ATTIC FIFTY THOUSAND;Nl;0;ON;;;;50000;N;;;;; -10148;GREEK ACROPHONIC ATTIC FIVE TALENTS;Nl;0;ON;;;;5;N;;;;; -10149;GREEK ACROPHONIC ATTIC TEN TALENTS;Nl;0;ON;;;;10;N;;;;; -1014A;GREEK ACROPHONIC ATTIC FIFTY TALENTS;Nl;0;ON;;;;50;N;;;;; -1014B;GREEK ACROPHONIC ATTIC ONE HUNDRED TALENTS;Nl;0;ON;;;;100;N;;;;; -1014C;GREEK ACROPHONIC ATTIC FIVE HUNDRED TALENTS;Nl;0;ON;;;;500;N;;;;; -1014D;GREEK ACROPHONIC ATTIC ONE THOUSAND TALENTS;Nl;0;ON;;;;1000;N;;;;; -1014E;GREEK ACROPHONIC ATTIC FIVE THOUSAND TALENTS;Nl;0;ON;;;;5000;N;;;;; -1014F;GREEK ACROPHONIC ATTIC FIVE STATERS;Nl;0;ON;;;;5;N;;;;; -10150;GREEK ACROPHONIC ATTIC TEN STATERS;Nl;0;ON;;;;10;N;;;;; -10151;GREEK ACROPHONIC ATTIC FIFTY STATERS;Nl;0;ON;;;;50;N;;;;; -10152;GREEK ACROPHONIC ATTIC ONE HUNDRED STATERS;Nl;0;ON;;;;100;N;;;;; -10153;GREEK ACROPHONIC ATTIC FIVE HUNDRED STATERS;Nl;0;ON;;;;500;N;;;;; -10154;GREEK ACROPHONIC ATTIC ONE THOUSAND STATERS;Nl;0;ON;;;;1000;N;;;;; -10155;GREEK ACROPHONIC ATTIC TEN THOUSAND STATERS;Nl;0;ON;;;;10000;N;;;;; -10156;GREEK ACROPHONIC ATTIC FIFTY THOUSAND STATERS;Nl;0;ON;;;;50000;N;;;;; -10157;GREEK ACROPHONIC ATTIC TEN MNAS;Nl;0;ON;;;;10;N;;;;; -10158;GREEK ACROPHONIC HERAEUM ONE PLETHRON;Nl;0;ON;;;;1;N;;;;; -10159;GREEK ACROPHONIC THESPIAN ONE;Nl;0;ON;;;;1;N;;;;; -1015A;GREEK ACROPHONIC HERMIONIAN ONE;Nl;0;ON;;;;1;N;;;;; -1015B;GREEK ACROPHONIC EPIDAUREAN TWO;Nl;0;ON;;;;2;N;;;;; -1015C;GREEK ACROPHONIC THESPIAN TWO;Nl;0;ON;;;;2;N;;;;; -1015D;GREEK ACROPHONIC CYRENAIC TWO DRACHMAS;Nl;0;ON;;;;2;N;;;;; -1015E;GREEK ACROPHONIC EPIDAUREAN TWO DRACHMAS;Nl;0;ON;;;;2;N;;;;; -1015F;GREEK ACROPHONIC TROEZENIAN FIVE;Nl;0;ON;;;;5;N;;;;; -10160;GREEK ACROPHONIC TROEZENIAN TEN;Nl;0;ON;;;;10;N;;;;; -10161;GREEK ACROPHONIC TROEZENIAN TEN ALTERNATE FORM;Nl;0;ON;;;;10;N;;;;; -10162;GREEK ACROPHONIC HERMIONIAN TEN;Nl;0;ON;;;;10;N;;;;; -10163;GREEK ACROPHONIC MESSENIAN TEN;Nl;0;ON;;;;10;N;;;;; -10164;GREEK ACROPHONIC THESPIAN TEN;Nl;0;ON;;;;10;N;;;;; -10165;GREEK ACROPHONIC THESPIAN THIRTY;Nl;0;ON;;;;30;N;;;;; -10166;GREEK ACROPHONIC TROEZENIAN FIFTY;Nl;0;ON;;;;50;N;;;;; -10167;GREEK ACROPHONIC TROEZENIAN FIFTY ALTERNATE FORM;Nl;0;ON;;;;50;N;;;;; -10168;GREEK ACROPHONIC HERMIONIAN FIFTY;Nl;0;ON;;;;50;N;;;;; -10169;GREEK ACROPHONIC THESPIAN FIFTY;Nl;0;ON;;;;50;N;;;;; -1016A;GREEK ACROPHONIC THESPIAN ONE HUNDRED;Nl;0;ON;;;;100;N;;;;; -1016B;GREEK ACROPHONIC THESPIAN THREE HUNDRED;Nl;0;ON;;;;300;N;;;;; -1016C;GREEK ACROPHONIC EPIDAUREAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; -1016D;GREEK ACROPHONIC TROEZENIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; -1016E;GREEK ACROPHONIC THESPIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; -1016F;GREEK ACROPHONIC CARYSTIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; -10170;GREEK ACROPHONIC NAXIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; -10171;GREEK ACROPHONIC THESPIAN ONE THOUSAND;Nl;0;ON;;;;1000;N;;;;; -10172;GREEK ACROPHONIC THESPIAN FIVE THOUSAND;Nl;0;ON;;;;5000;N;;;;; -10173;GREEK ACROPHONIC DELPHIC FIVE MNAS;Nl;0;ON;;;;5;N;;;;; -10174;GREEK ACROPHONIC STRATIAN FIFTY MNAS;Nl;0;ON;;;;50;N;;;;; -10175;GREEK ONE HALF SIGN;No;0;ON;;;;1/2;N;;;;; -10176;GREEK ONE HALF SIGN ALTERNATE FORM;No;0;ON;;;;1/2;N;;;;; -10177;GREEK TWO THIRDS SIGN;No;0;ON;;;;2/3;N;;;;; -10178;GREEK THREE QUARTERS SIGN;No;0;ON;;;;3/4;N;;;;; -10179;GREEK YEAR SIGN;So;0;ON;;;;;N;;;;; -1017A;GREEK TALENT SIGN;So;0;ON;;;;;N;;;;; -1017B;GREEK DRACHMA SIGN;So;0;ON;;;;;N;;;;; -1017C;GREEK OBOL SIGN;So;0;ON;;;;;N;;;;; -1017D;GREEK TWO OBOLS SIGN;So;0;ON;;;;;N;;;;; -1017E;GREEK THREE OBOLS SIGN;So;0;ON;;;;;N;;;;; -1017F;GREEK FOUR OBOLS SIGN;So;0;ON;;;;;N;;;;; -10180;GREEK FIVE OBOLS SIGN;So;0;ON;;;;;N;;;;; -10181;GREEK METRETES SIGN;So;0;ON;;;;;N;;;;; -10182;GREEK KYATHOS BASE SIGN;So;0;ON;;;;;N;;;;; -10183;GREEK LITRA SIGN;So;0;ON;;;;;N;;;;; -10184;GREEK OUNKIA SIGN;So;0;ON;;;;;N;;;;; -10185;GREEK XESTES SIGN;So;0;ON;;;;;N;;;;; -10186;GREEK ARTABE SIGN;So;0;ON;;;;;N;;;;; -10187;GREEK AROURA SIGN;So;0;ON;;;;;N;;;;; -10188;GREEK GRAMMA SIGN;So;0;ON;;;;;N;;;;; -10189;GREEK TRYBLION BASE SIGN;So;0;ON;;;;;N;;;;; -1018A;GREEK ZERO SIGN;No;0;ON;;;;0;N;;;;; -10190;ROMAN SEXTANS SIGN;So;0;ON;;;;;N;;;;; -10191;ROMAN UNCIA SIGN;So;0;ON;;;;;N;;;;; -10192;ROMAN SEMUNCIA SIGN;So;0;ON;;;;;N;;;;; -10193;ROMAN SEXTULA SIGN;So;0;ON;;;;;N;;;;; -10194;ROMAN DIMIDIA SEXTULA SIGN;So;0;ON;;;;;N;;;;; -10195;ROMAN SILIQUA SIGN;So;0;ON;;;;;N;;;;; -10196;ROMAN DENARIUS SIGN;So;0;ON;;;;;N;;;;; -10197;ROMAN QUINARIUS SIGN;So;0;ON;;;;;N;;;;; -10198;ROMAN SESTERTIUS SIGN;So;0;ON;;;;;N;;;;; -10199;ROMAN DUPONDIUS SIGN;So;0;ON;;;;;N;;;;; -1019A;ROMAN AS SIGN;So;0;ON;;;;;N;;;;; -1019B;ROMAN CENTURIAL SIGN;So;0;ON;;;;;N;;;;; -101D0;PHAISTOS DISC SIGN PEDESTRIAN;So;0;L;;;;;N;;;;; -101D1;PHAISTOS DISC SIGN PLUMED HEAD;So;0;L;;;;;N;;;;; -101D2;PHAISTOS DISC SIGN TATTOOED HEAD;So;0;L;;;;;N;;;;; -101D3;PHAISTOS DISC SIGN CAPTIVE;So;0;L;;;;;N;;;;; -101D4;PHAISTOS DISC SIGN CHILD;So;0;L;;;;;N;;;;; -101D5;PHAISTOS DISC SIGN WOMAN;So;0;L;;;;;N;;;;; -101D6;PHAISTOS DISC SIGN HELMET;So;0;L;;;;;N;;;;; -101D7;PHAISTOS DISC SIGN GAUNTLET;So;0;L;;;;;N;;;;; -101D8;PHAISTOS DISC SIGN TIARA;So;0;L;;;;;N;;;;; -101D9;PHAISTOS DISC SIGN ARROW;So;0;L;;;;;N;;;;; -101DA;PHAISTOS DISC SIGN BOW;So;0;L;;;;;N;;;;; -101DB;PHAISTOS DISC SIGN SHIELD;So;0;L;;;;;N;;;;; -101DC;PHAISTOS DISC SIGN CLUB;So;0;L;;;;;N;;;;; -101DD;PHAISTOS DISC SIGN MANACLES;So;0;L;;;;;N;;;;; -101DE;PHAISTOS DISC SIGN MATTOCK;So;0;L;;;;;N;;;;; -101DF;PHAISTOS DISC SIGN SAW;So;0;L;;;;;N;;;;; -101E0;PHAISTOS DISC SIGN LID;So;0;L;;;;;N;;;;; -101E1;PHAISTOS DISC SIGN BOOMERANG;So;0;L;;;;;N;;;;; -101E2;PHAISTOS DISC SIGN CARPENTRY PLANE;So;0;L;;;;;N;;;;; -101E3;PHAISTOS DISC SIGN DOLIUM;So;0;L;;;;;N;;;;; -101E4;PHAISTOS DISC SIGN COMB;So;0;L;;;;;N;;;;; -101E5;PHAISTOS DISC SIGN SLING;So;0;L;;;;;N;;;;; -101E6;PHAISTOS DISC SIGN COLUMN;So;0;L;;;;;N;;;;; -101E7;PHAISTOS DISC SIGN BEEHIVE;So;0;L;;;;;N;;;;; -101E8;PHAISTOS DISC SIGN SHIP;So;0;L;;;;;N;;;;; -101E9;PHAISTOS DISC SIGN HORN;So;0;L;;;;;N;;;;; -101EA;PHAISTOS DISC SIGN HIDE;So;0;L;;;;;N;;;;; -101EB;PHAISTOS DISC SIGN BULLS LEG;So;0;L;;;;;N;;;;; -101EC;PHAISTOS DISC SIGN CAT;So;0;L;;;;;N;;;;; -101ED;PHAISTOS DISC SIGN RAM;So;0;L;;;;;N;;;;; -101EE;PHAISTOS DISC SIGN EAGLE;So;0;L;;;;;N;;;;; -101EF;PHAISTOS DISC SIGN DOVE;So;0;L;;;;;N;;;;; -101F0;PHAISTOS DISC SIGN TUNNY;So;0;L;;;;;N;;;;; -101F1;PHAISTOS DISC SIGN BEE;So;0;L;;;;;N;;;;; -101F2;PHAISTOS DISC SIGN PLANE TREE;So;0;L;;;;;N;;;;; -101F3;PHAISTOS DISC SIGN VINE;So;0;L;;;;;N;;;;; -101F4;PHAISTOS DISC SIGN PAPYRUS;So;0;L;;;;;N;;;;; -101F5;PHAISTOS DISC SIGN ROSETTE;So;0;L;;;;;N;;;;; -101F6;PHAISTOS DISC SIGN LILY;So;0;L;;;;;N;;;;; -101F7;PHAISTOS DISC SIGN OX BACK;So;0;L;;;;;N;;;;; -101F8;PHAISTOS DISC SIGN FLUTE;So;0;L;;;;;N;;;;; -101F9;PHAISTOS DISC SIGN GRATER;So;0;L;;;;;N;;;;; -101FA;PHAISTOS DISC SIGN STRAINER;So;0;L;;;;;N;;;;; -101FB;PHAISTOS DISC SIGN SMALL AXE;So;0;L;;;;;N;;;;; -101FC;PHAISTOS DISC SIGN WAVY BAND;So;0;L;;;;;N;;;;; -101FD;PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE;Mn;220;NSM;;;;;N;;;;; -10280;LYCIAN LETTER A;Lo;0;L;;;;;N;;;;; -10281;LYCIAN LETTER E;Lo;0;L;;;;;N;;;;; -10282;LYCIAN LETTER B;Lo;0;L;;;;;N;;;;; -10283;LYCIAN LETTER BH;Lo;0;L;;;;;N;;;;; -10284;LYCIAN LETTER G;Lo;0;L;;;;;N;;;;; -10285;LYCIAN LETTER D;Lo;0;L;;;;;N;;;;; -10286;LYCIAN LETTER I;Lo;0;L;;;;;N;;;;; -10287;LYCIAN LETTER W;Lo;0;L;;;;;N;;;;; -10288;LYCIAN LETTER Z;Lo;0;L;;;;;N;;;;; -10289;LYCIAN LETTER TH;Lo;0;L;;;;;N;;;;; -1028A;LYCIAN LETTER J;Lo;0;L;;;;;N;;;;; -1028B;LYCIAN LETTER K;Lo;0;L;;;;;N;;;;; -1028C;LYCIAN LETTER Q;Lo;0;L;;;;;N;;;;; -1028D;LYCIAN LETTER L;Lo;0;L;;;;;N;;;;; -1028E;LYCIAN LETTER M;Lo;0;L;;;;;N;;;;; -1028F;LYCIAN LETTER N;Lo;0;L;;;;;N;;;;; -10290;LYCIAN LETTER MM;Lo;0;L;;;;;N;;;;; -10291;LYCIAN LETTER NN;Lo;0;L;;;;;N;;;;; -10292;LYCIAN LETTER U;Lo;0;L;;;;;N;;;;; -10293;LYCIAN LETTER P;Lo;0;L;;;;;N;;;;; -10294;LYCIAN LETTER KK;Lo;0;L;;;;;N;;;;; -10295;LYCIAN LETTER R;Lo;0;L;;;;;N;;;;; -10296;LYCIAN LETTER S;Lo;0;L;;;;;N;;;;; -10297;LYCIAN LETTER T;Lo;0;L;;;;;N;;;;; -10298;LYCIAN LETTER TT;Lo;0;L;;;;;N;;;;; -10299;LYCIAN LETTER AN;Lo;0;L;;;;;N;;;;; -1029A;LYCIAN LETTER EN;Lo;0;L;;;;;N;;;;; -1029B;LYCIAN LETTER H;Lo;0;L;;;;;N;;;;; -1029C;LYCIAN LETTER X;Lo;0;L;;;;;N;;;;; -102A0;CARIAN LETTER A;Lo;0;L;;;;;N;;;;; -102A1;CARIAN LETTER P2;Lo;0;L;;;;;N;;;;; -102A2;CARIAN LETTER D;Lo;0;L;;;;;N;;;;; -102A3;CARIAN LETTER L;Lo;0;L;;;;;N;;;;; -102A4;CARIAN LETTER UUU;Lo;0;L;;;;;N;;;;; -102A5;CARIAN LETTER R;Lo;0;L;;;;;N;;;;; -102A6;CARIAN LETTER LD;Lo;0;L;;;;;N;;;;; -102A7;CARIAN LETTER A2;Lo;0;L;;;;;N;;;;; -102A8;CARIAN LETTER Q;Lo;0;L;;;;;N;;;;; -102A9;CARIAN LETTER B;Lo;0;L;;;;;N;;;;; -102AA;CARIAN LETTER M;Lo;0;L;;;;;N;;;;; -102AB;CARIAN LETTER O;Lo;0;L;;;;;N;;;;; -102AC;CARIAN LETTER D2;Lo;0;L;;;;;N;;;;; -102AD;CARIAN LETTER T;Lo;0;L;;;;;N;;;;; -102AE;CARIAN LETTER SH;Lo;0;L;;;;;N;;;;; -102AF;CARIAN LETTER SH2;Lo;0;L;;;;;N;;;;; -102B0;CARIAN LETTER S;Lo;0;L;;;;;N;;;;; -102B1;CARIAN LETTER C-18;Lo;0;L;;;;;N;;;;; -102B2;CARIAN LETTER U;Lo;0;L;;;;;N;;;;; -102B3;CARIAN LETTER NN;Lo;0;L;;;;;N;;;;; -102B4;CARIAN LETTER X;Lo;0;L;;;;;N;;;;; -102B5;CARIAN LETTER N;Lo;0;L;;;;;N;;;;; -102B6;CARIAN LETTER TT2;Lo;0;L;;;;;N;;;;; -102B7;CARIAN LETTER P;Lo;0;L;;;;;N;;;;; -102B8;CARIAN LETTER SS;Lo;0;L;;;;;N;;;;; -102B9;CARIAN LETTER I;Lo;0;L;;;;;N;;;;; -102BA;CARIAN LETTER E;Lo;0;L;;;;;N;;;;; -102BB;CARIAN LETTER UUUU;Lo;0;L;;;;;N;;;;; -102BC;CARIAN LETTER K;Lo;0;L;;;;;N;;;;; -102BD;CARIAN LETTER K2;Lo;0;L;;;;;N;;;;; -102BE;CARIAN LETTER ND;Lo;0;L;;;;;N;;;;; -102BF;CARIAN LETTER UU;Lo;0;L;;;;;N;;;;; -102C0;CARIAN LETTER G;Lo;0;L;;;;;N;;;;; -102C1;CARIAN LETTER G2;Lo;0;L;;;;;N;;;;; -102C2;CARIAN LETTER ST;Lo;0;L;;;;;N;;;;; -102C3;CARIAN LETTER ST2;Lo;0;L;;;;;N;;;;; -102C4;CARIAN LETTER NG;Lo;0;L;;;;;N;;;;; -102C5;CARIAN LETTER II;Lo;0;L;;;;;N;;;;; -102C6;CARIAN LETTER C-39;Lo;0;L;;;;;N;;;;; -102C7;CARIAN LETTER TT;Lo;0;L;;;;;N;;;;; -102C8;CARIAN LETTER UUU2;Lo;0;L;;;;;N;;;;; -102C9;CARIAN LETTER RR;Lo;0;L;;;;;N;;;;; -102CA;CARIAN LETTER MB;Lo;0;L;;;;;N;;;;; -102CB;CARIAN LETTER MB2;Lo;0;L;;;;;N;;;;; -102CC;CARIAN LETTER MB3;Lo;0;L;;;;;N;;;;; -102CD;CARIAN LETTER MB4;Lo;0;L;;;;;N;;;;; -102CE;CARIAN LETTER LD2;Lo;0;L;;;;;N;;;;; -102CF;CARIAN LETTER E2;Lo;0;L;;;;;N;;;;; -102D0;CARIAN LETTER UUU3;Lo;0;L;;;;;N;;;;; -10300;OLD ITALIC LETTER A;Lo;0;L;;;;;N;;;;; -10301;OLD ITALIC LETTER BE;Lo;0;L;;;;;N;;;;; -10302;OLD ITALIC LETTER KE;Lo;0;L;;;;;N;;;;; -10303;OLD ITALIC LETTER DE;Lo;0;L;;;;;N;;;;; -10304;OLD ITALIC LETTER E;Lo;0;L;;;;;N;;;;; -10305;OLD ITALIC LETTER VE;Lo;0;L;;;;;N;;;;; -10306;OLD ITALIC LETTER ZE;Lo;0;L;;;;;N;;;;; -10307;OLD ITALIC LETTER HE;Lo;0;L;;;;;N;;;;; -10308;OLD ITALIC LETTER THE;Lo;0;L;;;;;N;;;;; -10309;OLD ITALIC LETTER I;Lo;0;L;;;;;N;;;;; -1030A;OLD ITALIC LETTER KA;Lo;0;L;;;;;N;;;;; -1030B;OLD ITALIC LETTER EL;Lo;0;L;;;;;N;;;;; -1030C;OLD ITALIC LETTER EM;Lo;0;L;;;;;N;;;;; -1030D;OLD ITALIC LETTER EN;Lo;0;L;;;;;N;;;;; -1030E;OLD ITALIC LETTER ESH;Lo;0;L;;;;;N;;;;; -1030F;OLD ITALIC LETTER O;Lo;0;L;;;;;N;;;;; -10310;OLD ITALIC LETTER PE;Lo;0;L;;;;;N;;;;; -10311;OLD ITALIC LETTER SHE;Lo;0;L;;;;;N;;;;; -10312;OLD ITALIC LETTER KU;Lo;0;L;;;;;N;;;;; -10313;OLD ITALIC LETTER ER;Lo;0;L;;;;;N;;;;; -10314;OLD ITALIC LETTER ES;Lo;0;L;;;;;N;;;;; -10315;OLD ITALIC LETTER TE;Lo;0;L;;;;;N;;;;; -10316;OLD ITALIC LETTER U;Lo;0;L;;;;;N;;;;; -10317;OLD ITALIC LETTER EKS;Lo;0;L;;;;;N;;;;; -10318;OLD ITALIC LETTER PHE;Lo;0;L;;;;;N;;;;; -10319;OLD ITALIC LETTER KHE;Lo;0;L;;;;;N;;;;; -1031A;OLD ITALIC LETTER EF;Lo;0;L;;;;;N;;;;; -1031B;OLD ITALIC LETTER ERS;Lo;0;L;;;;;N;;;;; -1031C;OLD ITALIC LETTER CHE;Lo;0;L;;;;;N;;;;; -1031D;OLD ITALIC LETTER II;Lo;0;L;;;;;N;;;;; -1031E;OLD ITALIC LETTER UU;Lo;0;L;;;;;N;;;;; -10320;OLD ITALIC NUMERAL ONE;No;0;L;;;;1;N;;;;; -10321;OLD ITALIC NUMERAL FIVE;No;0;L;;;;5;N;;;;; -10322;OLD ITALIC NUMERAL TEN;No;0;L;;;;10;N;;;;; -10323;OLD ITALIC NUMERAL FIFTY;No;0;L;;;;50;N;;;;; -10330;GOTHIC LETTER AHSA;Lo;0;L;;;;;N;;;;; -10331;GOTHIC LETTER BAIRKAN;Lo;0;L;;;;;N;;;;; -10332;GOTHIC LETTER GIBA;Lo;0;L;;;;;N;;;;; -10333;GOTHIC LETTER DAGS;Lo;0;L;;;;;N;;;;; -10334;GOTHIC LETTER AIHVUS;Lo;0;L;;;;;N;;;;; -10335;GOTHIC LETTER QAIRTHRA;Lo;0;L;;;;;N;;;;; -10336;GOTHIC LETTER IUJA;Lo;0;L;;;;;N;;;;; -10337;GOTHIC LETTER HAGL;Lo;0;L;;;;;N;;;;; -10338;GOTHIC LETTER THIUTH;Lo;0;L;;;;;N;;;;; -10339;GOTHIC LETTER EIS;Lo;0;L;;;;;N;;;;; -1033A;GOTHIC LETTER KUSMA;Lo;0;L;;;;;N;;;;; -1033B;GOTHIC LETTER LAGUS;Lo;0;L;;;;;N;;;;; -1033C;GOTHIC LETTER MANNA;Lo;0;L;;;;;N;;;;; -1033D;GOTHIC LETTER NAUTHS;Lo;0;L;;;;;N;;;;; -1033E;GOTHIC LETTER JER;Lo;0;L;;;;;N;;;;; -1033F;GOTHIC LETTER URUS;Lo;0;L;;;;;N;;;;; -10340;GOTHIC LETTER PAIRTHRA;Lo;0;L;;;;;N;;;;; -10341;GOTHIC LETTER NINETY;Nl;0;L;;;;90;N;;;;; -10342;GOTHIC LETTER RAIDA;Lo;0;L;;;;;N;;;;; -10343;GOTHIC LETTER SAUIL;Lo;0;L;;;;;N;;;;; -10344;GOTHIC LETTER TEIWS;Lo;0;L;;;;;N;;;;; -10345;GOTHIC LETTER WINJA;Lo;0;L;;;;;N;;;;; -10346;GOTHIC LETTER FAIHU;Lo;0;L;;;;;N;;;;; -10347;GOTHIC LETTER IGGWS;Lo;0;L;;;;;N;;;;; -10348;GOTHIC LETTER HWAIR;Lo;0;L;;;;;N;;;;; -10349;GOTHIC LETTER OTHAL;Lo;0;L;;;;;N;;;;; -1034A;GOTHIC LETTER NINE HUNDRED;Nl;0;L;;;;900;N;;;;; -10380;UGARITIC LETTER ALPA;Lo;0;L;;;;;N;;;;; -10381;UGARITIC LETTER BETA;Lo;0;L;;;;;N;;;;; -10382;UGARITIC LETTER GAMLA;Lo;0;L;;;;;N;;;;; -10383;UGARITIC LETTER KHA;Lo;0;L;;;;;N;;;;; -10384;UGARITIC LETTER DELTA;Lo;0;L;;;;;N;;;;; -10385;UGARITIC LETTER HO;Lo;0;L;;;;;N;;;;; -10386;UGARITIC LETTER WO;Lo;0;L;;;;;N;;;;; -10387;UGARITIC LETTER ZETA;Lo;0;L;;;;;N;;;;; -10388;UGARITIC LETTER HOTA;Lo;0;L;;;;;N;;;;; -10389;UGARITIC LETTER TET;Lo;0;L;;;;;N;;;;; -1038A;UGARITIC LETTER YOD;Lo;0;L;;;;;N;;;;; -1038B;UGARITIC LETTER KAF;Lo;0;L;;;;;N;;;;; -1038C;UGARITIC LETTER SHIN;Lo;0;L;;;;;N;;;;; -1038D;UGARITIC LETTER LAMDA;Lo;0;L;;;;;N;;;;; -1038E;UGARITIC LETTER MEM;Lo;0;L;;;;;N;;;;; -1038F;UGARITIC LETTER DHAL;Lo;0;L;;;;;N;;;;; -10390;UGARITIC LETTER NUN;Lo;0;L;;;;;N;;;;; -10391;UGARITIC LETTER ZU;Lo;0;L;;;;;N;;;;; -10392;UGARITIC LETTER SAMKA;Lo;0;L;;;;;N;;;;; -10393;UGARITIC LETTER AIN;Lo;0;L;;;;;N;;;;; -10394;UGARITIC LETTER PU;Lo;0;L;;;;;N;;;;; -10395;UGARITIC LETTER SADE;Lo;0;L;;;;;N;;;;; -10396;UGARITIC LETTER QOPA;Lo;0;L;;;;;N;;;;; -10397;UGARITIC LETTER RASHA;Lo;0;L;;;;;N;;;;; -10398;UGARITIC LETTER THANNA;Lo;0;L;;;;;N;;;;; -10399;UGARITIC LETTER GHAIN;Lo;0;L;;;;;N;;;;; -1039A;UGARITIC LETTER TO;Lo;0;L;;;;;N;;;;; -1039B;UGARITIC LETTER I;Lo;0;L;;;;;N;;;;; -1039C;UGARITIC LETTER U;Lo;0;L;;;;;N;;;;; -1039D;UGARITIC LETTER SSU;Lo;0;L;;;;;N;;;;; -1039F;UGARITIC WORD DIVIDER;Po;0;L;;;;;N;;;;; -103A0;OLD PERSIAN SIGN A;Lo;0;L;;;;;N;;;;; -103A1;OLD PERSIAN SIGN I;Lo;0;L;;;;;N;;;;; -103A2;OLD PERSIAN SIGN U;Lo;0;L;;;;;N;;;;; -103A3;OLD PERSIAN SIGN KA;Lo;0;L;;;;;N;;;;; -103A4;OLD PERSIAN SIGN KU;Lo;0;L;;;;;N;;;;; -103A5;OLD PERSIAN SIGN GA;Lo;0;L;;;;;N;;;;; -103A6;OLD PERSIAN SIGN GU;Lo;0;L;;;;;N;;;;; -103A7;OLD PERSIAN SIGN XA;Lo;0;L;;;;;N;;;;; -103A8;OLD PERSIAN SIGN CA;Lo;0;L;;;;;N;;;;; -103A9;OLD PERSIAN SIGN JA;Lo;0;L;;;;;N;;;;; -103AA;OLD PERSIAN SIGN JI;Lo;0;L;;;;;N;;;;; -103AB;OLD PERSIAN SIGN TA;Lo;0;L;;;;;N;;;;; -103AC;OLD PERSIAN SIGN TU;Lo;0;L;;;;;N;;;;; -103AD;OLD PERSIAN SIGN DA;Lo;0;L;;;;;N;;;;; -103AE;OLD PERSIAN SIGN DI;Lo;0;L;;;;;N;;;;; -103AF;OLD PERSIAN SIGN DU;Lo;0;L;;;;;N;;;;; -103B0;OLD PERSIAN SIGN THA;Lo;0;L;;;;;N;;;;; -103B1;OLD PERSIAN SIGN PA;Lo;0;L;;;;;N;;;;; -103B2;OLD PERSIAN SIGN BA;Lo;0;L;;;;;N;;;;; -103B3;OLD PERSIAN SIGN FA;Lo;0;L;;;;;N;;;;; -103B4;OLD PERSIAN SIGN NA;Lo;0;L;;;;;N;;;;; -103B5;OLD PERSIAN SIGN NU;Lo;0;L;;;;;N;;;;; -103B6;OLD PERSIAN SIGN MA;Lo;0;L;;;;;N;;;;; -103B7;OLD PERSIAN SIGN MI;Lo;0;L;;;;;N;;;;; -103B8;OLD PERSIAN SIGN MU;Lo;0;L;;;;;N;;;;; -103B9;OLD PERSIAN SIGN YA;Lo;0;L;;;;;N;;;;; -103BA;OLD PERSIAN SIGN VA;Lo;0;L;;;;;N;;;;; -103BB;OLD PERSIAN SIGN VI;Lo;0;L;;;;;N;;;;; -103BC;OLD PERSIAN SIGN RA;Lo;0;L;;;;;N;;;;; -103BD;OLD PERSIAN SIGN RU;Lo;0;L;;;;;N;;;;; -103BE;OLD PERSIAN SIGN LA;Lo;0;L;;;;;N;;;;; -103BF;OLD PERSIAN SIGN SA;Lo;0;L;;;;;N;;;;; -103C0;OLD PERSIAN SIGN ZA;Lo;0;L;;;;;N;;;;; -103C1;OLD PERSIAN SIGN SHA;Lo;0;L;;;;;N;;;;; -103C2;OLD PERSIAN SIGN SSA;Lo;0;L;;;;;N;;;;; -103C3;OLD PERSIAN SIGN HA;Lo;0;L;;;;;N;;;;; -103C8;OLD PERSIAN SIGN AURAMAZDAA;Lo;0;L;;;;;N;;;;; -103C9;OLD PERSIAN SIGN AURAMAZDAA-2;Lo;0;L;;;;;N;;;;; -103CA;OLD PERSIAN SIGN AURAMAZDAAHA;Lo;0;L;;;;;N;;;;; -103CB;OLD PERSIAN SIGN XSHAAYATHIYA;Lo;0;L;;;;;N;;;;; -103CC;OLD PERSIAN SIGN DAHYAAUSH;Lo;0;L;;;;;N;;;;; -103CD;OLD PERSIAN SIGN DAHYAAUSH-2;Lo;0;L;;;;;N;;;;; -103CE;OLD PERSIAN SIGN BAGA;Lo;0;L;;;;;N;;;;; -103CF;OLD PERSIAN SIGN BUUMISH;Lo;0;L;;;;;N;;;;; -103D0;OLD PERSIAN WORD DIVIDER;Po;0;L;;;;;N;;;;; -103D1;OLD PERSIAN NUMBER ONE;Nl;0;L;;;;1;N;;;;; -103D2;OLD PERSIAN NUMBER TWO;Nl;0;L;;;;2;N;;;;; -103D3;OLD PERSIAN NUMBER TEN;Nl;0;L;;;;10;N;;;;; -103D4;OLD PERSIAN NUMBER TWENTY;Nl;0;L;;;;20;N;;;;; -103D5;OLD PERSIAN NUMBER HUNDRED;Nl;0;L;;;;100;N;;;;; -10400;DESERET CAPITAL LETTER LONG I;Lu;0;L;;;;;N;;;;10428; -10401;DESERET CAPITAL LETTER LONG E;Lu;0;L;;;;;N;;;;10429; -10402;DESERET CAPITAL LETTER LONG A;Lu;0;L;;;;;N;;;;1042A; -10403;DESERET CAPITAL LETTER LONG AH;Lu;0;L;;;;;N;;;;1042B; -10404;DESERET CAPITAL LETTER LONG O;Lu;0;L;;;;;N;;;;1042C; -10405;DESERET CAPITAL LETTER LONG OO;Lu;0;L;;;;;N;;;;1042D; -10406;DESERET CAPITAL LETTER SHORT I;Lu;0;L;;;;;N;;;;1042E; -10407;DESERET CAPITAL LETTER SHORT E;Lu;0;L;;;;;N;;;;1042F; -10408;DESERET CAPITAL LETTER SHORT A;Lu;0;L;;;;;N;;;;10430; -10409;DESERET CAPITAL LETTER SHORT AH;Lu;0;L;;;;;N;;;;10431; -1040A;DESERET CAPITAL LETTER SHORT O;Lu;0;L;;;;;N;;;;10432; -1040B;DESERET CAPITAL LETTER SHORT OO;Lu;0;L;;;;;N;;;;10433; -1040C;DESERET CAPITAL LETTER AY;Lu;0;L;;;;;N;;;;10434; -1040D;DESERET CAPITAL LETTER OW;Lu;0;L;;;;;N;;;;10435; -1040E;DESERET CAPITAL LETTER WU;Lu;0;L;;;;;N;;;;10436; -1040F;DESERET CAPITAL LETTER YEE;Lu;0;L;;;;;N;;;;10437; -10410;DESERET CAPITAL LETTER H;Lu;0;L;;;;;N;;;;10438; -10411;DESERET CAPITAL LETTER PEE;Lu;0;L;;;;;N;;;;10439; -10412;DESERET CAPITAL LETTER BEE;Lu;0;L;;;;;N;;;;1043A; -10413;DESERET CAPITAL LETTER TEE;Lu;0;L;;;;;N;;;;1043B; -10414;DESERET CAPITAL LETTER DEE;Lu;0;L;;;;;N;;;;1043C; -10415;DESERET CAPITAL LETTER CHEE;Lu;0;L;;;;;N;;;;1043D; -10416;DESERET CAPITAL LETTER JEE;Lu;0;L;;;;;N;;;;1043E; -10417;DESERET CAPITAL LETTER KAY;Lu;0;L;;;;;N;;;;1043F; -10418;DESERET CAPITAL LETTER GAY;Lu;0;L;;;;;N;;;;10440; -10419;DESERET CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;10441; -1041A;DESERET CAPITAL LETTER VEE;Lu;0;L;;;;;N;;;;10442; -1041B;DESERET CAPITAL LETTER ETH;Lu;0;L;;;;;N;;;;10443; -1041C;DESERET CAPITAL LETTER THEE;Lu;0;L;;;;;N;;;;10444; -1041D;DESERET CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;10445; -1041E;DESERET CAPITAL LETTER ZEE;Lu;0;L;;;;;N;;;;10446; -1041F;DESERET CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;10447; -10420;DESERET CAPITAL LETTER ZHEE;Lu;0;L;;;;;N;;;;10448; -10421;DESERET CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;10449; -10422;DESERET CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;1044A; -10423;DESERET CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;1044B; -10424;DESERET CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;1044C; -10425;DESERET CAPITAL LETTER ENG;Lu;0;L;;;;;N;;;;1044D; -10426;DESERET CAPITAL LETTER OI;Lu;0;L;;;;;N;;;;1044E; -10427;DESERET CAPITAL LETTER EW;Lu;0;L;;;;;N;;;;1044F; -10428;DESERET SMALL LETTER LONG I;Ll;0;L;;;;;N;;;10400;;10400 -10429;DESERET SMALL LETTER LONG E;Ll;0;L;;;;;N;;;10401;;10401 -1042A;DESERET SMALL LETTER LONG A;Ll;0;L;;;;;N;;;10402;;10402 -1042B;DESERET SMALL LETTER LONG AH;Ll;0;L;;;;;N;;;10403;;10403 -1042C;DESERET SMALL LETTER LONG O;Ll;0;L;;;;;N;;;10404;;10404 -1042D;DESERET SMALL LETTER LONG OO;Ll;0;L;;;;;N;;;10405;;10405 -1042E;DESERET SMALL LETTER SHORT I;Ll;0;L;;;;;N;;;10406;;10406 -1042F;DESERET SMALL LETTER SHORT E;Ll;0;L;;;;;N;;;10407;;10407 -10430;DESERET SMALL LETTER SHORT A;Ll;0;L;;;;;N;;;10408;;10408 -10431;DESERET SMALL LETTER SHORT AH;Ll;0;L;;;;;N;;;10409;;10409 -10432;DESERET SMALL LETTER SHORT O;Ll;0;L;;;;;N;;;1040A;;1040A -10433;DESERET SMALL LETTER SHORT OO;Ll;0;L;;;;;N;;;1040B;;1040B -10434;DESERET SMALL LETTER AY;Ll;0;L;;;;;N;;;1040C;;1040C -10435;DESERET SMALL LETTER OW;Ll;0;L;;;;;N;;;1040D;;1040D -10436;DESERET SMALL LETTER WU;Ll;0;L;;;;;N;;;1040E;;1040E -10437;DESERET SMALL LETTER YEE;Ll;0;L;;;;;N;;;1040F;;1040F -10438;DESERET SMALL LETTER H;Ll;0;L;;;;;N;;;10410;;10410 -10439;DESERET SMALL LETTER PEE;Ll;0;L;;;;;N;;;10411;;10411 -1043A;DESERET SMALL LETTER BEE;Ll;0;L;;;;;N;;;10412;;10412 -1043B;DESERET SMALL LETTER TEE;Ll;0;L;;;;;N;;;10413;;10413 -1043C;DESERET SMALL LETTER DEE;Ll;0;L;;;;;N;;;10414;;10414 -1043D;DESERET SMALL LETTER CHEE;Ll;0;L;;;;;N;;;10415;;10415 -1043E;DESERET SMALL LETTER JEE;Ll;0;L;;;;;N;;;10416;;10416 -1043F;DESERET SMALL LETTER KAY;Ll;0;L;;;;;N;;;10417;;10417 -10440;DESERET SMALL LETTER GAY;Ll;0;L;;;;;N;;;10418;;10418 -10441;DESERET SMALL LETTER EF;Ll;0;L;;;;;N;;;10419;;10419 -10442;DESERET SMALL LETTER VEE;Ll;0;L;;;;;N;;;1041A;;1041A -10443;DESERET SMALL LETTER ETH;Ll;0;L;;;;;N;;;1041B;;1041B -10444;DESERET SMALL LETTER THEE;Ll;0;L;;;;;N;;;1041C;;1041C -10445;DESERET SMALL LETTER ES;Ll;0;L;;;;;N;;;1041D;;1041D -10446;DESERET SMALL LETTER ZEE;Ll;0;L;;;;;N;;;1041E;;1041E -10447;DESERET SMALL LETTER ESH;Ll;0;L;;;;;N;;;1041F;;1041F -10448;DESERET SMALL LETTER ZHEE;Ll;0;L;;;;;N;;;10420;;10420 -10449;DESERET SMALL LETTER ER;Ll;0;L;;;;;N;;;10421;;10421 -1044A;DESERET SMALL LETTER EL;Ll;0;L;;;;;N;;;10422;;10422 -1044B;DESERET SMALL LETTER EM;Ll;0;L;;;;;N;;;10423;;10423 -1044C;DESERET SMALL LETTER EN;Ll;0;L;;;;;N;;;10424;;10424 -1044D;DESERET SMALL LETTER ENG;Ll;0;L;;;;;N;;;10425;;10425 -1044E;DESERET SMALL LETTER OI;Ll;0;L;;;;;N;;;10426;;10426 -1044F;DESERET SMALL LETTER EW;Ll;0;L;;;;;N;;;10427;;10427 -10450;SHAVIAN LETTER PEEP;Lo;0;L;;;;;N;;;;; -10451;SHAVIAN LETTER TOT;Lo;0;L;;;;;N;;;;; -10452;SHAVIAN LETTER KICK;Lo;0;L;;;;;N;;;;; -10453;SHAVIAN LETTER FEE;Lo;0;L;;;;;N;;;;; -10454;SHAVIAN LETTER THIGH;Lo;0;L;;;;;N;;;;; -10455;SHAVIAN LETTER SO;Lo;0;L;;;;;N;;;;; -10456;SHAVIAN LETTER SURE;Lo;0;L;;;;;N;;;;; -10457;SHAVIAN LETTER CHURCH;Lo;0;L;;;;;N;;;;; -10458;SHAVIAN LETTER YEA;Lo;0;L;;;;;N;;;;; -10459;SHAVIAN LETTER HUNG;Lo;0;L;;;;;N;;;;; -1045A;SHAVIAN LETTER BIB;Lo;0;L;;;;;N;;;;; -1045B;SHAVIAN LETTER DEAD;Lo;0;L;;;;;N;;;;; -1045C;SHAVIAN LETTER GAG;Lo;0;L;;;;;N;;;;; -1045D;SHAVIAN LETTER VOW;Lo;0;L;;;;;N;;;;; -1045E;SHAVIAN LETTER THEY;Lo;0;L;;;;;N;;;;; -1045F;SHAVIAN LETTER ZOO;Lo;0;L;;;;;N;;;;; -10460;SHAVIAN LETTER MEASURE;Lo;0;L;;;;;N;;;;; -10461;SHAVIAN LETTER JUDGE;Lo;0;L;;;;;N;;;;; -10462;SHAVIAN LETTER WOE;Lo;0;L;;;;;N;;;;; -10463;SHAVIAN LETTER HA-HA;Lo;0;L;;;;;N;;;;; -10464;SHAVIAN LETTER LOLL;Lo;0;L;;;;;N;;;;; -10465;SHAVIAN LETTER MIME;Lo;0;L;;;;;N;;;;; -10466;SHAVIAN LETTER IF;Lo;0;L;;;;;N;;;;; -10467;SHAVIAN LETTER EGG;Lo;0;L;;;;;N;;;;; -10468;SHAVIAN LETTER ASH;Lo;0;L;;;;;N;;;;; -10469;SHAVIAN LETTER ADO;Lo;0;L;;;;;N;;;;; -1046A;SHAVIAN LETTER ON;Lo;0;L;;;;;N;;;;; -1046B;SHAVIAN LETTER WOOL;Lo;0;L;;;;;N;;;;; -1046C;SHAVIAN LETTER OUT;Lo;0;L;;;;;N;;;;; -1046D;SHAVIAN LETTER AH;Lo;0;L;;;;;N;;;;; -1046E;SHAVIAN LETTER ROAR;Lo;0;L;;;;;N;;;;; -1046F;SHAVIAN LETTER NUN;Lo;0;L;;;;;N;;;;; -10470;SHAVIAN LETTER EAT;Lo;0;L;;;;;N;;;;; -10471;SHAVIAN LETTER AGE;Lo;0;L;;;;;N;;;;; -10472;SHAVIAN LETTER ICE;Lo;0;L;;;;;N;;;;; -10473;SHAVIAN LETTER UP;Lo;0;L;;;;;N;;;;; -10474;SHAVIAN LETTER OAK;Lo;0;L;;;;;N;;;;; -10475;SHAVIAN LETTER OOZE;Lo;0;L;;;;;N;;;;; -10476;SHAVIAN LETTER OIL;Lo;0;L;;;;;N;;;;; -10477;SHAVIAN LETTER AWE;Lo;0;L;;;;;N;;;;; -10478;SHAVIAN LETTER ARE;Lo;0;L;;;;;N;;;;; -10479;SHAVIAN LETTER OR;Lo;0;L;;;;;N;;;;; -1047A;SHAVIAN LETTER AIR;Lo;0;L;;;;;N;;;;; -1047B;SHAVIAN LETTER ERR;Lo;0;L;;;;;N;;;;; -1047C;SHAVIAN LETTER ARRAY;Lo;0;L;;;;;N;;;;; -1047D;SHAVIAN LETTER EAR;Lo;0;L;;;;;N;;;;; -1047E;SHAVIAN LETTER IAN;Lo;0;L;;;;;N;;;;; -1047F;SHAVIAN LETTER YEW;Lo;0;L;;;;;N;;;;; -10480;OSMANYA LETTER ALEF;Lo;0;L;;;;;N;;;;; -10481;OSMANYA LETTER BA;Lo;0;L;;;;;N;;;;; -10482;OSMANYA LETTER TA;Lo;0;L;;;;;N;;;;; -10483;OSMANYA LETTER JA;Lo;0;L;;;;;N;;;;; -10484;OSMANYA LETTER XA;Lo;0;L;;;;;N;;;;; -10485;OSMANYA LETTER KHA;Lo;0;L;;;;;N;;;;; -10486;OSMANYA LETTER DEEL;Lo;0;L;;;;;N;;;;; -10487;OSMANYA LETTER RA;Lo;0;L;;;;;N;;;;; -10488;OSMANYA LETTER SA;Lo;0;L;;;;;N;;;;; -10489;OSMANYA LETTER SHIIN;Lo;0;L;;;;;N;;;;; -1048A;OSMANYA LETTER DHA;Lo;0;L;;;;;N;;;;; -1048B;OSMANYA LETTER CAYN;Lo;0;L;;;;;N;;;;; -1048C;OSMANYA LETTER GA;Lo;0;L;;;;;N;;;;; -1048D;OSMANYA LETTER FA;Lo;0;L;;;;;N;;;;; -1048E;OSMANYA LETTER QAAF;Lo;0;L;;;;;N;;;;; -1048F;OSMANYA LETTER KAAF;Lo;0;L;;;;;N;;;;; -10490;OSMANYA LETTER LAAN;Lo;0;L;;;;;N;;;;; -10491;OSMANYA LETTER MIIN;Lo;0;L;;;;;N;;;;; -10492;OSMANYA LETTER NUUN;Lo;0;L;;;;;N;;;;; -10493;OSMANYA LETTER WAW;Lo;0;L;;;;;N;;;;; -10494;OSMANYA LETTER HA;Lo;0;L;;;;;N;;;;; -10495;OSMANYA LETTER YA;Lo;0;L;;;;;N;;;;; -10496;OSMANYA LETTER A;Lo;0;L;;;;;N;;;;; -10497;OSMANYA LETTER E;Lo;0;L;;;;;N;;;;; -10498;OSMANYA LETTER I;Lo;0;L;;;;;N;;;;; -10499;OSMANYA LETTER O;Lo;0;L;;;;;N;;;;; -1049A;OSMANYA LETTER U;Lo;0;L;;;;;N;;;;; -1049B;OSMANYA LETTER AA;Lo;0;L;;;;;N;;;;; -1049C;OSMANYA LETTER EE;Lo;0;L;;;;;N;;;;; -1049D;OSMANYA LETTER OO;Lo;0;L;;;;;N;;;;; -104A0;OSMANYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -104A1;OSMANYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -104A2;OSMANYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -104A3;OSMANYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -104A4;OSMANYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -104A5;OSMANYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -104A6;OSMANYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -104A7;OSMANYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -104A8;OSMANYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -104A9;OSMANYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -10800;CYPRIOT SYLLABLE A;Lo;0;R;;;;;N;;;;; -10801;CYPRIOT SYLLABLE E;Lo;0;R;;;;;N;;;;; -10802;CYPRIOT SYLLABLE I;Lo;0;R;;;;;N;;;;; -10803;CYPRIOT SYLLABLE O;Lo;0;R;;;;;N;;;;; -10804;CYPRIOT SYLLABLE U;Lo;0;R;;;;;N;;;;; -10805;CYPRIOT SYLLABLE JA;Lo;0;R;;;;;N;;;;; -10808;CYPRIOT SYLLABLE JO;Lo;0;R;;;;;N;;;;; -1080A;CYPRIOT SYLLABLE KA;Lo;0;R;;;;;N;;;;; -1080B;CYPRIOT SYLLABLE KE;Lo;0;R;;;;;N;;;;; -1080C;CYPRIOT SYLLABLE KI;Lo;0;R;;;;;N;;;;; -1080D;CYPRIOT SYLLABLE KO;Lo;0;R;;;;;N;;;;; -1080E;CYPRIOT SYLLABLE KU;Lo;0;R;;;;;N;;;;; -1080F;CYPRIOT SYLLABLE LA;Lo;0;R;;;;;N;;;;; -10810;CYPRIOT SYLLABLE LE;Lo;0;R;;;;;N;;;;; -10811;CYPRIOT SYLLABLE LI;Lo;0;R;;;;;N;;;;; -10812;CYPRIOT SYLLABLE LO;Lo;0;R;;;;;N;;;;; -10813;CYPRIOT SYLLABLE LU;Lo;0;R;;;;;N;;;;; -10814;CYPRIOT SYLLABLE MA;Lo;0;R;;;;;N;;;;; -10815;CYPRIOT SYLLABLE ME;Lo;0;R;;;;;N;;;;; -10816;CYPRIOT SYLLABLE MI;Lo;0;R;;;;;N;;;;; -10817;CYPRIOT SYLLABLE MO;Lo;0;R;;;;;N;;;;; -10818;CYPRIOT SYLLABLE MU;Lo;0;R;;;;;N;;;;; -10819;CYPRIOT SYLLABLE NA;Lo;0;R;;;;;N;;;;; -1081A;CYPRIOT SYLLABLE NE;Lo;0;R;;;;;N;;;;; -1081B;CYPRIOT SYLLABLE NI;Lo;0;R;;;;;N;;;;; -1081C;CYPRIOT SYLLABLE NO;Lo;0;R;;;;;N;;;;; -1081D;CYPRIOT SYLLABLE NU;Lo;0;R;;;;;N;;;;; -1081E;CYPRIOT SYLLABLE PA;Lo;0;R;;;;;N;;;;; -1081F;CYPRIOT SYLLABLE PE;Lo;0;R;;;;;N;;;;; -10820;CYPRIOT SYLLABLE PI;Lo;0;R;;;;;N;;;;; -10821;CYPRIOT SYLLABLE PO;Lo;0;R;;;;;N;;;;; -10822;CYPRIOT SYLLABLE PU;Lo;0;R;;;;;N;;;;; -10823;CYPRIOT SYLLABLE RA;Lo;0;R;;;;;N;;;;; -10824;CYPRIOT SYLLABLE RE;Lo;0;R;;;;;N;;;;; -10825;CYPRIOT SYLLABLE RI;Lo;0;R;;;;;N;;;;; -10826;CYPRIOT SYLLABLE RO;Lo;0;R;;;;;N;;;;; -10827;CYPRIOT SYLLABLE RU;Lo;0;R;;;;;N;;;;; -10828;CYPRIOT SYLLABLE SA;Lo;0;R;;;;;N;;;;; -10829;CYPRIOT SYLLABLE SE;Lo;0;R;;;;;N;;;;; -1082A;CYPRIOT SYLLABLE SI;Lo;0;R;;;;;N;;;;; -1082B;CYPRIOT SYLLABLE SO;Lo;0;R;;;;;N;;;;; -1082C;CYPRIOT SYLLABLE SU;Lo;0;R;;;;;N;;;;; -1082D;CYPRIOT SYLLABLE TA;Lo;0;R;;;;;N;;;;; -1082E;CYPRIOT SYLLABLE TE;Lo;0;R;;;;;N;;;;; -1082F;CYPRIOT SYLLABLE TI;Lo;0;R;;;;;N;;;;; -10830;CYPRIOT SYLLABLE TO;Lo;0;R;;;;;N;;;;; -10831;CYPRIOT SYLLABLE TU;Lo;0;R;;;;;N;;;;; -10832;CYPRIOT SYLLABLE WA;Lo;0;R;;;;;N;;;;; -10833;CYPRIOT SYLLABLE WE;Lo;0;R;;;;;N;;;;; -10834;CYPRIOT SYLLABLE WI;Lo;0;R;;;;;N;;;;; -10835;CYPRIOT SYLLABLE WO;Lo;0;R;;;;;N;;;;; -10837;CYPRIOT SYLLABLE XA;Lo;0;R;;;;;N;;;;; -10838;CYPRIOT SYLLABLE XE;Lo;0;R;;;;;N;;;;; -1083C;CYPRIOT SYLLABLE ZA;Lo;0;R;;;;;N;;;;; -1083F;CYPRIOT SYLLABLE ZO;Lo;0;R;;;;;N;;;;; -10840;IMPERIAL ARAMAIC LETTER ALEPH;Lo;0;R;;;;;N;;;;; -10841;IMPERIAL ARAMAIC LETTER BETH;Lo;0;R;;;;;N;;;;; -10842;IMPERIAL ARAMAIC LETTER GIMEL;Lo;0;R;;;;;N;;;;; -10843;IMPERIAL ARAMAIC LETTER DALETH;Lo;0;R;;;;;N;;;;; -10844;IMPERIAL ARAMAIC LETTER HE;Lo;0;R;;;;;N;;;;; -10845;IMPERIAL ARAMAIC LETTER WAW;Lo;0;R;;;;;N;;;;; -10846;IMPERIAL ARAMAIC LETTER ZAYIN;Lo;0;R;;;;;N;;;;; -10847;IMPERIAL ARAMAIC LETTER HETH;Lo;0;R;;;;;N;;;;; -10848;IMPERIAL ARAMAIC LETTER TETH;Lo;0;R;;;;;N;;;;; -10849;IMPERIAL ARAMAIC LETTER YODH;Lo;0;R;;;;;N;;;;; -1084A;IMPERIAL ARAMAIC LETTER KAPH;Lo;0;R;;;;;N;;;;; -1084B;IMPERIAL ARAMAIC LETTER LAMEDH;Lo;0;R;;;;;N;;;;; -1084C;IMPERIAL ARAMAIC LETTER MEM;Lo;0;R;;;;;N;;;;; -1084D;IMPERIAL ARAMAIC LETTER NUN;Lo;0;R;;;;;N;;;;; -1084E;IMPERIAL ARAMAIC LETTER SAMEKH;Lo;0;R;;;;;N;;;;; -1084F;IMPERIAL ARAMAIC LETTER AYIN;Lo;0;R;;;;;N;;;;; -10850;IMPERIAL ARAMAIC LETTER PE;Lo;0;R;;;;;N;;;;; -10851;IMPERIAL ARAMAIC LETTER SADHE;Lo;0;R;;;;;N;;;;; -10852;IMPERIAL ARAMAIC LETTER QOPH;Lo;0;R;;;;;N;;;;; -10853;IMPERIAL ARAMAIC LETTER RESH;Lo;0;R;;;;;N;;;;; -10854;IMPERIAL ARAMAIC LETTER SHIN;Lo;0;R;;;;;N;;;;; -10855;IMPERIAL ARAMAIC LETTER TAW;Lo;0;R;;;;;N;;;;; -10857;IMPERIAL ARAMAIC SECTION SIGN;Po;0;R;;;;;N;;;;; -10858;IMPERIAL ARAMAIC NUMBER ONE;No;0;R;;;;1;N;;;;; -10859;IMPERIAL ARAMAIC NUMBER TWO;No;0;R;;;;2;N;;;;; -1085A;IMPERIAL ARAMAIC NUMBER THREE;No;0;R;;;;3;N;;;;; -1085B;IMPERIAL ARAMAIC NUMBER TEN;No;0;R;;;;10;N;;;;; -1085C;IMPERIAL ARAMAIC NUMBER TWENTY;No;0;R;;;;20;N;;;;; -1085D;IMPERIAL ARAMAIC NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;; -1085E;IMPERIAL ARAMAIC NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;; -1085F;IMPERIAL ARAMAIC NUMBER TEN THOUSAND;No;0;R;;;;10000;N;;;;; -10900;PHOENICIAN LETTER ALF;Lo;0;R;;;;;N;;;;; -10901;PHOENICIAN LETTER BET;Lo;0;R;;;;;N;;;;; -10902;PHOENICIAN LETTER GAML;Lo;0;R;;;;;N;;;;; -10903;PHOENICIAN LETTER DELT;Lo;0;R;;;;;N;;;;; -10904;PHOENICIAN LETTER HE;Lo;0;R;;;;;N;;;;; -10905;PHOENICIAN LETTER WAU;Lo;0;R;;;;;N;;;;; -10906;PHOENICIAN LETTER ZAI;Lo;0;R;;;;;N;;;;; -10907;PHOENICIAN LETTER HET;Lo;0;R;;;;;N;;;;; -10908;PHOENICIAN LETTER TET;Lo;0;R;;;;;N;;;;; -10909;PHOENICIAN LETTER YOD;Lo;0;R;;;;;N;;;;; -1090A;PHOENICIAN LETTER KAF;Lo;0;R;;;;;N;;;;; -1090B;PHOENICIAN LETTER LAMD;Lo;0;R;;;;;N;;;;; -1090C;PHOENICIAN LETTER MEM;Lo;0;R;;;;;N;;;;; -1090D;PHOENICIAN LETTER NUN;Lo;0;R;;;;;N;;;;; -1090E;PHOENICIAN LETTER SEMK;Lo;0;R;;;;;N;;;;; -1090F;PHOENICIAN LETTER AIN;Lo;0;R;;;;;N;;;;; -10910;PHOENICIAN LETTER PE;Lo;0;R;;;;;N;;;;; -10911;PHOENICIAN LETTER SADE;Lo;0;R;;;;;N;;;;; -10912;PHOENICIAN LETTER QOF;Lo;0;R;;;;;N;;;;; -10913;PHOENICIAN LETTER ROSH;Lo;0;R;;;;;N;;;;; -10914;PHOENICIAN LETTER SHIN;Lo;0;R;;;;;N;;;;; -10915;PHOENICIAN LETTER TAU;Lo;0;R;;;;;N;;;;; -10916;PHOENICIAN NUMBER ONE;No;0;R;;;;1;N;;;;; -10917;PHOENICIAN NUMBER TEN;No;0;R;;;;10;N;;;;; -10918;PHOENICIAN NUMBER TWENTY;No;0;R;;;;20;N;;;;; -10919;PHOENICIAN NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;; -1091A;PHOENICIAN NUMBER TWO;No;0;R;;;;2;N;;;;; -1091B;PHOENICIAN NUMBER THREE;No;0;R;;;;3;N;;;;; -1091F;PHOENICIAN WORD SEPARATOR;Po;0;ON;;;;;N;;;;; -10920;LYDIAN LETTER A;Lo;0;R;;;;;N;;;;; -10921;LYDIAN LETTER B;Lo;0;R;;;;;N;;;;; -10922;LYDIAN LETTER G;Lo;0;R;;;;;N;;;;; -10923;LYDIAN LETTER D;Lo;0;R;;;;;N;;;;; -10924;LYDIAN LETTER E;Lo;0;R;;;;;N;;;;; -10925;LYDIAN LETTER V;Lo;0;R;;;;;N;;;;; -10926;LYDIAN LETTER I;Lo;0;R;;;;;N;;;;; -10927;LYDIAN LETTER Y;Lo;0;R;;;;;N;;;;; -10928;LYDIAN LETTER K;Lo;0;R;;;;;N;;;;; -10929;LYDIAN LETTER L;Lo;0;R;;;;;N;;;;; -1092A;LYDIAN LETTER M;Lo;0;R;;;;;N;;;;; -1092B;LYDIAN LETTER N;Lo;0;R;;;;;N;;;;; -1092C;LYDIAN LETTER O;Lo;0;R;;;;;N;;;;; -1092D;LYDIAN LETTER R;Lo;0;R;;;;;N;;;;; -1092E;LYDIAN LETTER SS;Lo;0;R;;;;;N;;;;; -1092F;LYDIAN LETTER T;Lo;0;R;;;;;N;;;;; -10930;LYDIAN LETTER U;Lo;0;R;;;;;N;;;;; -10931;LYDIAN LETTER F;Lo;0;R;;;;;N;;;;; -10932;LYDIAN LETTER Q;Lo;0;R;;;;;N;;;;; -10933;LYDIAN LETTER S;Lo;0;R;;;;;N;;;;; -10934;LYDIAN LETTER TT;Lo;0;R;;;;;N;;;;; -10935;LYDIAN LETTER AN;Lo;0;R;;;;;N;;;;; -10936;LYDIAN LETTER EN;Lo;0;R;;;;;N;;;;; -10937;LYDIAN LETTER LY;Lo;0;R;;;;;N;;;;; -10938;LYDIAN LETTER NN;Lo;0;R;;;;;N;;;;; -10939;LYDIAN LETTER C;Lo;0;R;;;;;N;;;;; -1093F;LYDIAN TRIANGULAR MARK;Po;0;R;;;;;N;;;;; -10A00;KHAROSHTHI LETTER A;Lo;0;R;;;;;N;;;;; -10A01;KHAROSHTHI VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -10A02;KHAROSHTHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -10A03;KHAROSHTHI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; -10A05;KHAROSHTHI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; -10A06;KHAROSHTHI VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;; -10A0C;KHAROSHTHI VOWEL LENGTH MARK;Mn;0;NSM;;;;;N;;;;; -10A0D;KHAROSHTHI SIGN DOUBLE RING BELOW;Mn;220;NSM;;;;;N;;;;; -10A0E;KHAROSHTHI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; -10A0F;KHAROSHTHI SIGN VISARGA;Mn;230;NSM;;;;;N;;;;; -10A10;KHAROSHTHI LETTER KA;Lo;0;R;;;;;N;;;;; -10A11;KHAROSHTHI LETTER KHA;Lo;0;R;;;;;N;;;;; -10A12;KHAROSHTHI LETTER GA;Lo;0;R;;;;;N;;;;; -10A13;KHAROSHTHI LETTER GHA;Lo;0;R;;;;;N;;;;; -10A15;KHAROSHTHI LETTER CA;Lo;0;R;;;;;N;;;;; -10A16;KHAROSHTHI LETTER CHA;Lo;0;R;;;;;N;;;;; -10A17;KHAROSHTHI LETTER JA;Lo;0;R;;;;;N;;;;; -10A19;KHAROSHTHI LETTER NYA;Lo;0;R;;;;;N;;;;; -10A1A;KHAROSHTHI LETTER TTA;Lo;0;R;;;;;N;;;;; -10A1B;KHAROSHTHI LETTER TTHA;Lo;0;R;;;;;N;;;;; -10A1C;KHAROSHTHI LETTER DDA;Lo;0;R;;;;;N;;;;; -10A1D;KHAROSHTHI LETTER DDHA;Lo;0;R;;;;;N;;;;; -10A1E;KHAROSHTHI LETTER NNA;Lo;0;R;;;;;N;;;;; -10A1F;KHAROSHTHI LETTER TA;Lo;0;R;;;;;N;;;;; -10A20;KHAROSHTHI LETTER THA;Lo;0;R;;;;;N;;;;; -10A21;KHAROSHTHI LETTER DA;Lo;0;R;;;;;N;;;;; -10A22;KHAROSHTHI LETTER DHA;Lo;0;R;;;;;N;;;;; -10A23;KHAROSHTHI LETTER NA;Lo;0;R;;;;;N;;;;; -10A24;KHAROSHTHI LETTER PA;Lo;0;R;;;;;N;;;;; -10A25;KHAROSHTHI LETTER PHA;Lo;0;R;;;;;N;;;;; -10A26;KHAROSHTHI LETTER BA;Lo;0;R;;;;;N;;;;; -10A27;KHAROSHTHI LETTER BHA;Lo;0;R;;;;;N;;;;; -10A28;KHAROSHTHI LETTER MA;Lo;0;R;;;;;N;;;;; -10A29;KHAROSHTHI LETTER YA;Lo;0;R;;;;;N;;;;; -10A2A;KHAROSHTHI LETTER RA;Lo;0;R;;;;;N;;;;; -10A2B;KHAROSHTHI LETTER LA;Lo;0;R;;;;;N;;;;; -10A2C;KHAROSHTHI LETTER VA;Lo;0;R;;;;;N;;;;; -10A2D;KHAROSHTHI LETTER SHA;Lo;0;R;;;;;N;;;;; -10A2E;KHAROSHTHI LETTER SSA;Lo;0;R;;;;;N;;;;; -10A2F;KHAROSHTHI LETTER SA;Lo;0;R;;;;;N;;;;; -10A30;KHAROSHTHI LETTER ZA;Lo;0;R;;;;;N;;;;; -10A31;KHAROSHTHI LETTER HA;Lo;0;R;;;;;N;;;;; -10A32;KHAROSHTHI LETTER KKA;Lo;0;R;;;;;N;;;;; -10A33;KHAROSHTHI LETTER TTTHA;Lo;0;R;;;;;N;;;;; -10A38;KHAROSHTHI SIGN BAR ABOVE;Mn;230;NSM;;;;;N;;;;; -10A39;KHAROSHTHI SIGN CAUDA;Mn;1;NSM;;;;;N;;;;; -10A3A;KHAROSHTHI SIGN DOT BELOW;Mn;220;NSM;;;;;N;;;;; -10A3F;KHAROSHTHI VIRAMA;Mn;9;NSM;;;;;N;;;;; -10A40;KHAROSHTHI DIGIT ONE;No;0;R;;;1;1;N;;;;; -10A41;KHAROSHTHI DIGIT TWO;No;0;R;;;2;2;N;;;;; -10A42;KHAROSHTHI DIGIT THREE;No;0;R;;;3;3;N;;;;; -10A43;KHAROSHTHI DIGIT FOUR;No;0;R;;;4;4;N;;;;; -10A44;KHAROSHTHI NUMBER TEN;No;0;R;;;;10;N;;;;; -10A45;KHAROSHTHI NUMBER TWENTY;No;0;R;;;;20;N;;;;; -10A46;KHAROSHTHI NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;; -10A47;KHAROSHTHI NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;; -10A50;KHAROSHTHI PUNCTUATION DOT;Po;0;R;;;;;N;;;;; -10A51;KHAROSHTHI PUNCTUATION SMALL CIRCLE;Po;0;R;;;;;N;;;;; -10A52;KHAROSHTHI PUNCTUATION CIRCLE;Po;0;R;;;;;N;;;;; -10A53;KHAROSHTHI PUNCTUATION CRESCENT BAR;Po;0;R;;;;;N;;;;; -10A54;KHAROSHTHI PUNCTUATION MANGALAM;Po;0;R;;;;;N;;;;; -10A55;KHAROSHTHI PUNCTUATION LOTUS;Po;0;R;;;;;N;;;;; -10A56;KHAROSHTHI PUNCTUATION DANDA;Po;0;R;;;;;N;;;;; -10A57;KHAROSHTHI PUNCTUATION DOUBLE DANDA;Po;0;R;;;;;N;;;;; -10A58;KHAROSHTHI PUNCTUATION LINES;Po;0;R;;;;;N;;;;; -10A60;OLD SOUTH ARABIAN LETTER HE;Lo;0;R;;;;;N;;;;; -10A61;OLD SOUTH ARABIAN LETTER LAMEDH;Lo;0;R;;;;;N;;;;; -10A62;OLD SOUTH ARABIAN LETTER HETH;Lo;0;R;;;;;N;;;;; -10A63;OLD SOUTH ARABIAN LETTER MEM;Lo;0;R;;;;;N;;;;; -10A64;OLD SOUTH ARABIAN LETTER QOPH;Lo;0;R;;;;;N;;;;; -10A65;OLD SOUTH ARABIAN LETTER WAW;Lo;0;R;;;;;N;;;;; -10A66;OLD SOUTH ARABIAN LETTER SHIN;Lo;0;R;;;;;N;;;;; -10A67;OLD SOUTH ARABIAN LETTER RESH;Lo;0;R;;;;;N;;;;; -10A68;OLD SOUTH ARABIAN LETTER BETH;Lo;0;R;;;;;N;;;;; -10A69;OLD SOUTH ARABIAN LETTER TAW;Lo;0;R;;;;;N;;;;; -10A6A;OLD SOUTH ARABIAN LETTER SAT;Lo;0;R;;;;;N;;;;; -10A6B;OLD SOUTH ARABIAN LETTER KAPH;Lo;0;R;;;;;N;;;;; -10A6C;OLD SOUTH ARABIAN LETTER NUN;Lo;0;R;;;;;N;;;;; -10A6D;OLD SOUTH ARABIAN LETTER KHETH;Lo;0;R;;;;;N;;;;; -10A6E;OLD SOUTH ARABIAN LETTER SADHE;Lo;0;R;;;;;N;;;;; -10A6F;OLD SOUTH ARABIAN LETTER SAMEKH;Lo;0;R;;;;;N;;;;; -10A70;OLD SOUTH ARABIAN LETTER FE;Lo;0;R;;;;;N;;;;; -10A71;OLD SOUTH ARABIAN LETTER ALEF;Lo;0;R;;;;;N;;;;; -10A72;OLD SOUTH ARABIAN LETTER AYN;Lo;0;R;;;;;N;;;;; -10A73;OLD SOUTH ARABIAN LETTER DHADHE;Lo;0;R;;;;;N;;;;; -10A74;OLD SOUTH ARABIAN LETTER GIMEL;Lo;0;R;;;;;N;;;;; -10A75;OLD SOUTH ARABIAN LETTER DALETH;Lo;0;R;;;;;N;;;;; -10A76;OLD SOUTH ARABIAN LETTER GHAYN;Lo;0;R;;;;;N;;;;; -10A77;OLD SOUTH ARABIAN LETTER TETH;Lo;0;R;;;;;N;;;;; -10A78;OLD SOUTH ARABIAN LETTER ZAYN;Lo;0;R;;;;;N;;;;; -10A79;OLD SOUTH ARABIAN LETTER DHALETH;Lo;0;R;;;;;N;;;;; -10A7A;OLD SOUTH ARABIAN LETTER YODH;Lo;0;R;;;;;N;;;;; -10A7B;OLD SOUTH ARABIAN LETTER THAW;Lo;0;R;;;;;N;;;;; -10A7C;OLD SOUTH ARABIAN LETTER THETH;Lo;0;R;;;;;N;;;;; -10A7D;OLD SOUTH ARABIAN NUMBER ONE;No;0;R;;;;1;N;;;;; -10A7E;OLD SOUTH ARABIAN NUMBER FIFTY;No;0;R;;;;50;N;;;;; -10A7F;OLD SOUTH ARABIAN NUMERIC INDICATOR;Po;0;R;;;;;N;;;;; -10B00;AVESTAN LETTER A;Lo;0;R;;;;;N;;;;; -10B01;AVESTAN LETTER AA;Lo;0;R;;;;;N;;;;; -10B02;AVESTAN LETTER AO;Lo;0;R;;;;;N;;;;; -10B03;AVESTAN LETTER AAO;Lo;0;R;;;;;N;;;;; -10B04;AVESTAN LETTER AN;Lo;0;R;;;;;N;;;;; -10B05;AVESTAN LETTER AAN;Lo;0;R;;;;;N;;;;; -10B06;AVESTAN LETTER AE;Lo;0;R;;;;;N;;;;; -10B07;AVESTAN LETTER AEE;Lo;0;R;;;;;N;;;;; -10B08;AVESTAN LETTER E;Lo;0;R;;;;;N;;;;; -10B09;AVESTAN LETTER EE;Lo;0;R;;;;;N;;;;; -10B0A;AVESTAN LETTER O;Lo;0;R;;;;;N;;;;; -10B0B;AVESTAN LETTER OO;Lo;0;R;;;;;N;;;;; -10B0C;AVESTAN LETTER I;Lo;0;R;;;;;N;;;;; -10B0D;AVESTAN LETTER II;Lo;0;R;;;;;N;;;;; -10B0E;AVESTAN LETTER U;Lo;0;R;;;;;N;;;;; -10B0F;AVESTAN LETTER UU;Lo;0;R;;;;;N;;;;; -10B10;AVESTAN LETTER KE;Lo;0;R;;;;;N;;;;; -10B11;AVESTAN LETTER XE;Lo;0;R;;;;;N;;;;; -10B12;AVESTAN LETTER XYE;Lo;0;R;;;;;N;;;;; -10B13;AVESTAN LETTER XVE;Lo;0;R;;;;;N;;;;; -10B14;AVESTAN LETTER GE;Lo;0;R;;;;;N;;;;; -10B15;AVESTAN LETTER GGE;Lo;0;R;;;;;N;;;;; -10B16;AVESTAN LETTER GHE;Lo;0;R;;;;;N;;;;; -10B17;AVESTAN LETTER CE;Lo;0;R;;;;;N;;;;; -10B18;AVESTAN LETTER JE;Lo;0;R;;;;;N;;;;; -10B19;AVESTAN LETTER TE;Lo;0;R;;;;;N;;;;; -10B1A;AVESTAN LETTER THE;Lo;0;R;;;;;N;;;;; -10B1B;AVESTAN LETTER DE;Lo;0;R;;;;;N;;;;; -10B1C;AVESTAN LETTER DHE;Lo;0;R;;;;;N;;;;; -10B1D;AVESTAN LETTER TTE;Lo;0;R;;;;;N;;;;; -10B1E;AVESTAN LETTER PE;Lo;0;R;;;;;N;;;;; -10B1F;AVESTAN LETTER FE;Lo;0;R;;;;;N;;;;; -10B20;AVESTAN LETTER BE;Lo;0;R;;;;;N;;;;; -10B21;AVESTAN LETTER BHE;Lo;0;R;;;;;N;;;;; -10B22;AVESTAN LETTER NGE;Lo;0;R;;;;;N;;;;; -10B23;AVESTAN LETTER NGYE;Lo;0;R;;;;;N;;;;; -10B24;AVESTAN LETTER NGVE;Lo;0;R;;;;;N;;;;; -10B25;AVESTAN LETTER NE;Lo;0;R;;;;;N;;;;; -10B26;AVESTAN LETTER NYE;Lo;0;R;;;;;N;;;;; -10B27;AVESTAN LETTER NNE;Lo;0;R;;;;;N;;;;; -10B28;AVESTAN LETTER ME;Lo;0;R;;;;;N;;;;; -10B29;AVESTAN LETTER HME;Lo;0;R;;;;;N;;;;; -10B2A;AVESTAN LETTER YYE;Lo;0;R;;;;;N;;;;; -10B2B;AVESTAN LETTER YE;Lo;0;R;;;;;N;;;;; -10B2C;AVESTAN LETTER VE;Lo;0;R;;;;;N;;;;; -10B2D;AVESTAN LETTER RE;Lo;0;R;;;;;N;;;;; -10B2E;AVESTAN LETTER LE;Lo;0;R;;;;;N;;;;; -10B2F;AVESTAN LETTER SE;Lo;0;R;;;;;N;;;;; -10B30;AVESTAN LETTER ZE;Lo;0;R;;;;;N;;;;; -10B31;AVESTAN LETTER SHE;Lo;0;R;;;;;N;;;;; -10B32;AVESTAN LETTER ZHE;Lo;0;R;;;;;N;;;;; -10B33;AVESTAN LETTER SHYE;Lo;0;R;;;;;N;;;;; -10B34;AVESTAN LETTER SSHE;Lo;0;R;;;;;N;;;;; -10B35;AVESTAN LETTER HE;Lo;0;R;;;;;N;;;;; -10B39;AVESTAN ABBREVIATION MARK;Po;0;ON;;;;;N;;;;; -10B3A;TINY TWO DOTS OVER ONE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; -10B3B;SMALL TWO DOTS OVER ONE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; -10B3C;LARGE TWO DOTS OVER ONE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; -10B3D;LARGE ONE DOT OVER TWO DOTS PUNCTUATION;Po;0;ON;;;;;N;;;;; -10B3E;LARGE TWO RINGS OVER ONE RING PUNCTUATION;Po;0;ON;;;;;N;;;;; -10B3F;LARGE ONE RING OVER TWO RINGS PUNCTUATION;Po;0;ON;;;;;N;;;;; -10B40;INSCRIPTIONAL PARTHIAN LETTER ALEPH;Lo;0;R;;;;;N;;;;; -10B41;INSCRIPTIONAL PARTHIAN LETTER BETH;Lo;0;R;;;;;N;;;;; -10B42;INSCRIPTIONAL PARTHIAN LETTER GIMEL;Lo;0;R;;;;;N;;;;; -10B43;INSCRIPTIONAL PARTHIAN LETTER DALETH;Lo;0;R;;;;;N;;;;; -10B44;INSCRIPTIONAL PARTHIAN LETTER HE;Lo;0;R;;;;;N;;;;; -10B45;INSCRIPTIONAL PARTHIAN LETTER WAW;Lo;0;R;;;;;N;;;;; -10B46;INSCRIPTIONAL PARTHIAN LETTER ZAYIN;Lo;0;R;;;;;N;;;;; -10B47;INSCRIPTIONAL PARTHIAN LETTER HETH;Lo;0;R;;;;;N;;;;; -10B48;INSCRIPTIONAL PARTHIAN LETTER TETH;Lo;0;R;;;;;N;;;;; -10B49;INSCRIPTIONAL PARTHIAN LETTER YODH;Lo;0;R;;;;;N;;;;; -10B4A;INSCRIPTIONAL PARTHIAN LETTER KAPH;Lo;0;R;;;;;N;;;;; -10B4B;INSCRIPTIONAL PARTHIAN LETTER LAMEDH;Lo;0;R;;;;;N;;;;; -10B4C;INSCRIPTIONAL PARTHIAN LETTER MEM;Lo;0;R;;;;;N;;;;; -10B4D;INSCRIPTIONAL PARTHIAN LETTER NUN;Lo;0;R;;;;;N;;;;; -10B4E;INSCRIPTIONAL PARTHIAN LETTER SAMEKH;Lo;0;R;;;;;N;;;;; -10B4F;INSCRIPTIONAL PARTHIAN LETTER AYIN;Lo;0;R;;;;;N;;;;; -10B50;INSCRIPTIONAL PARTHIAN LETTER PE;Lo;0;R;;;;;N;;;;; -10B51;INSCRIPTIONAL PARTHIAN LETTER SADHE;Lo;0;R;;;;;N;;;;; -10B52;INSCRIPTIONAL PARTHIAN LETTER QOPH;Lo;0;R;;;;;N;;;;; -10B53;INSCRIPTIONAL PARTHIAN LETTER RESH;Lo;0;R;;;;;N;;;;; -10B54;INSCRIPTIONAL PARTHIAN LETTER SHIN;Lo;0;R;;;;;N;;;;; -10B55;INSCRIPTIONAL PARTHIAN LETTER TAW;Lo;0;R;;;;;N;;;;; -10B58;INSCRIPTIONAL PARTHIAN NUMBER ONE;No;0;R;;;;1;N;;;;; -10B59;INSCRIPTIONAL PARTHIAN NUMBER TWO;No;0;R;;;;2;N;;;;; -10B5A;INSCRIPTIONAL PARTHIAN NUMBER THREE;No;0;R;;;;3;N;;;;; -10B5B;INSCRIPTIONAL PARTHIAN NUMBER FOUR;No;0;R;;;;4;N;;;;; -10B5C;INSCRIPTIONAL PARTHIAN NUMBER TEN;No;0;R;;;;10;N;;;;; -10B5D;INSCRIPTIONAL PARTHIAN NUMBER TWENTY;No;0;R;;;;20;N;;;;; -10B5E;INSCRIPTIONAL PARTHIAN NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;; -10B5F;INSCRIPTIONAL PARTHIAN NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;; -10B60;INSCRIPTIONAL PAHLAVI LETTER ALEPH;Lo;0;R;;;;;N;;;;; -10B61;INSCRIPTIONAL PAHLAVI LETTER BETH;Lo;0;R;;;;;N;;;;; -10B62;INSCRIPTIONAL PAHLAVI LETTER GIMEL;Lo;0;R;;;;;N;;;;; -10B63;INSCRIPTIONAL PAHLAVI LETTER DALETH;Lo;0;R;;;;;N;;;;; -10B64;INSCRIPTIONAL PAHLAVI LETTER HE;Lo;0;R;;;;;N;;;;; -10B65;INSCRIPTIONAL PAHLAVI LETTER WAW-AYIN-RESH;Lo;0;R;;;;;N;;;;; -10B66;INSCRIPTIONAL PAHLAVI LETTER ZAYIN;Lo;0;R;;;;;N;;;;; -10B67;INSCRIPTIONAL PAHLAVI LETTER HETH;Lo;0;R;;;;;N;;;;; -10B68;INSCRIPTIONAL PAHLAVI LETTER TETH;Lo;0;R;;;;;N;;;;; -10B69;INSCRIPTIONAL PAHLAVI LETTER YODH;Lo;0;R;;;;;N;;;;; -10B6A;INSCRIPTIONAL PAHLAVI LETTER KAPH;Lo;0;R;;;;;N;;;;; -10B6B;INSCRIPTIONAL PAHLAVI LETTER LAMEDH;Lo;0;R;;;;;N;;;;; -10B6C;INSCRIPTIONAL PAHLAVI LETTER MEM-QOPH;Lo;0;R;;;;;N;;;;; -10B6D;INSCRIPTIONAL PAHLAVI LETTER NUN;Lo;0;R;;;;;N;;;;; -10B6E;INSCRIPTIONAL PAHLAVI LETTER SAMEKH;Lo;0;R;;;;;N;;;;; -10B6F;INSCRIPTIONAL PAHLAVI LETTER PE;Lo;0;R;;;;;N;;;;; -10B70;INSCRIPTIONAL PAHLAVI LETTER SADHE;Lo;0;R;;;;;N;;;;; -10B71;INSCRIPTIONAL PAHLAVI LETTER SHIN;Lo;0;R;;;;;N;;;;; -10B72;INSCRIPTIONAL PAHLAVI LETTER TAW;Lo;0;R;;;;;N;;;;; -10B78;INSCRIPTIONAL PAHLAVI NUMBER ONE;No;0;R;;;;1;N;;;;; -10B79;INSCRIPTIONAL PAHLAVI NUMBER TWO;No;0;R;;;;2;N;;;;; -10B7A;INSCRIPTIONAL PAHLAVI NUMBER THREE;No;0;R;;;;3;N;;;;; -10B7B;INSCRIPTIONAL PAHLAVI NUMBER FOUR;No;0;R;;;;4;N;;;;; -10B7C;INSCRIPTIONAL PAHLAVI NUMBER TEN;No;0;R;;;;10;N;;;;; -10B7D;INSCRIPTIONAL PAHLAVI NUMBER TWENTY;No;0;R;;;;20;N;;;;; -10B7E;INSCRIPTIONAL PAHLAVI NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;; -10B7F;INSCRIPTIONAL PAHLAVI NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;; -10C00;OLD TURKIC LETTER ORKHON A;Lo;0;R;;;;;N;;;;; -10C01;OLD TURKIC LETTER YENISEI A;Lo;0;R;;;;;N;;;;; -10C02;OLD TURKIC LETTER YENISEI AE;Lo;0;R;;;;;N;;;;; -10C03;OLD TURKIC LETTER ORKHON I;Lo;0;R;;;;;N;;;;; -10C04;OLD TURKIC LETTER YENISEI I;Lo;0;R;;;;;N;;;;; -10C05;OLD TURKIC LETTER YENISEI E;Lo;0;R;;;;;N;;;;; -10C06;OLD TURKIC LETTER ORKHON O;Lo;0;R;;;;;N;;;;; -10C07;OLD TURKIC LETTER ORKHON OE;Lo;0;R;;;;;N;;;;; -10C08;OLD TURKIC LETTER YENISEI OE;Lo;0;R;;;;;N;;;;; -10C09;OLD TURKIC LETTER ORKHON AB;Lo;0;R;;;;;N;;;;; -10C0A;OLD TURKIC LETTER YENISEI AB;Lo;0;R;;;;;N;;;;; -10C0B;OLD TURKIC LETTER ORKHON AEB;Lo;0;R;;;;;N;;;;; -10C0C;OLD TURKIC LETTER YENISEI AEB;Lo;0;R;;;;;N;;;;; -10C0D;OLD TURKIC LETTER ORKHON AG;Lo;0;R;;;;;N;;;;; -10C0E;OLD TURKIC LETTER YENISEI AG;Lo;0;R;;;;;N;;;;; -10C0F;OLD TURKIC LETTER ORKHON AEG;Lo;0;R;;;;;N;;;;; -10C10;OLD TURKIC LETTER YENISEI AEG;Lo;0;R;;;;;N;;;;; -10C11;OLD TURKIC LETTER ORKHON AD;Lo;0;R;;;;;N;;;;; -10C12;OLD TURKIC LETTER YENISEI AD;Lo;0;R;;;;;N;;;;; -10C13;OLD TURKIC LETTER ORKHON AED;Lo;0;R;;;;;N;;;;; -10C14;OLD TURKIC LETTER ORKHON EZ;Lo;0;R;;;;;N;;;;; -10C15;OLD TURKIC LETTER YENISEI EZ;Lo;0;R;;;;;N;;;;; -10C16;OLD TURKIC LETTER ORKHON AY;Lo;0;R;;;;;N;;;;; -10C17;OLD TURKIC LETTER YENISEI AY;Lo;0;R;;;;;N;;;;; -10C18;OLD TURKIC LETTER ORKHON AEY;Lo;0;R;;;;;N;;;;; -10C19;OLD TURKIC LETTER YENISEI AEY;Lo;0;R;;;;;N;;;;; -10C1A;OLD TURKIC LETTER ORKHON AEK;Lo;0;R;;;;;N;;;;; -10C1B;OLD TURKIC LETTER YENISEI AEK;Lo;0;R;;;;;N;;;;; -10C1C;OLD TURKIC LETTER ORKHON OEK;Lo;0;R;;;;;N;;;;; -10C1D;OLD TURKIC LETTER YENISEI OEK;Lo;0;R;;;;;N;;;;; -10C1E;OLD TURKIC LETTER ORKHON AL;Lo;0;R;;;;;N;;;;; -10C1F;OLD TURKIC LETTER YENISEI AL;Lo;0;R;;;;;N;;;;; -10C20;OLD TURKIC LETTER ORKHON AEL;Lo;0;R;;;;;N;;;;; -10C21;OLD TURKIC LETTER ORKHON ELT;Lo;0;R;;;;;N;;;;; -10C22;OLD TURKIC LETTER ORKHON EM;Lo;0;R;;;;;N;;;;; -10C23;OLD TURKIC LETTER ORKHON AN;Lo;0;R;;;;;N;;;;; -10C24;OLD TURKIC LETTER ORKHON AEN;Lo;0;R;;;;;N;;;;; -10C25;OLD TURKIC LETTER YENISEI AEN;Lo;0;R;;;;;N;;;;; -10C26;OLD TURKIC LETTER ORKHON ENT;Lo;0;R;;;;;N;;;;; -10C27;OLD TURKIC LETTER YENISEI ENT;Lo;0;R;;;;;N;;;;; -10C28;OLD TURKIC LETTER ORKHON ENC;Lo;0;R;;;;;N;;;;; -10C29;OLD TURKIC LETTER YENISEI ENC;Lo;0;R;;;;;N;;;;; -10C2A;OLD TURKIC LETTER ORKHON ENY;Lo;0;R;;;;;N;;;;; -10C2B;OLD TURKIC LETTER YENISEI ENY;Lo;0;R;;;;;N;;;;; -10C2C;OLD TURKIC LETTER YENISEI ANG;Lo;0;R;;;;;N;;;;; -10C2D;OLD TURKIC LETTER ORKHON ENG;Lo;0;R;;;;;N;;;;; -10C2E;OLD TURKIC LETTER YENISEI AENG;Lo;0;R;;;;;N;;;;; -10C2F;OLD TURKIC LETTER ORKHON EP;Lo;0;R;;;;;N;;;;; -10C30;OLD TURKIC LETTER ORKHON OP;Lo;0;R;;;;;N;;;;; -10C31;OLD TURKIC LETTER ORKHON IC;Lo;0;R;;;;;N;;;;; -10C32;OLD TURKIC LETTER ORKHON EC;Lo;0;R;;;;;N;;;;; -10C33;OLD TURKIC LETTER YENISEI EC;Lo;0;R;;;;;N;;;;; -10C34;OLD TURKIC LETTER ORKHON AQ;Lo;0;R;;;;;N;;;;; -10C35;OLD TURKIC LETTER YENISEI AQ;Lo;0;R;;;;;N;;;;; -10C36;OLD TURKIC LETTER ORKHON IQ;Lo;0;R;;;;;N;;;;; -10C37;OLD TURKIC LETTER YENISEI IQ;Lo;0;R;;;;;N;;;;; -10C38;OLD TURKIC LETTER ORKHON OQ;Lo;0;R;;;;;N;;;;; -10C39;OLD TURKIC LETTER YENISEI OQ;Lo;0;R;;;;;N;;;;; -10C3A;OLD TURKIC LETTER ORKHON AR;Lo;0;R;;;;;N;;;;; -10C3B;OLD TURKIC LETTER YENISEI AR;Lo;0;R;;;;;N;;;;; -10C3C;OLD TURKIC LETTER ORKHON AER;Lo;0;R;;;;;N;;;;; -10C3D;OLD TURKIC LETTER ORKHON AS;Lo;0;R;;;;;N;;;;; -10C3E;OLD TURKIC LETTER ORKHON AES;Lo;0;R;;;;;N;;;;; -10C3F;OLD TURKIC LETTER ORKHON ASH;Lo;0;R;;;;;N;;;;; -10C40;OLD TURKIC LETTER YENISEI ASH;Lo;0;R;;;;;N;;;;; -10C41;OLD TURKIC LETTER ORKHON ESH;Lo;0;R;;;;;N;;;;; -10C42;OLD TURKIC LETTER YENISEI ESH;Lo;0;R;;;;;N;;;;; -10C43;OLD TURKIC LETTER ORKHON AT;Lo;0;R;;;;;N;;;;; -10C44;OLD TURKIC LETTER YENISEI AT;Lo;0;R;;;;;N;;;;; -10C45;OLD TURKIC LETTER ORKHON AET;Lo;0;R;;;;;N;;;;; -10C46;OLD TURKIC LETTER YENISEI AET;Lo;0;R;;;;;N;;;;; -10C47;OLD TURKIC LETTER ORKHON OT;Lo;0;R;;;;;N;;;;; -10C48;OLD TURKIC LETTER ORKHON BASH;Lo;0;R;;;;;N;;;;; -10E60;RUMI DIGIT ONE;No;0;AN;;;1;1;N;;;;; -10E61;RUMI DIGIT TWO;No;0;AN;;;2;2;N;;;;; -10E62;RUMI DIGIT THREE;No;0;AN;;;3;3;N;;;;; -10E63;RUMI DIGIT FOUR;No;0;AN;;;4;4;N;;;;; -10E64;RUMI DIGIT FIVE;No;0;AN;;;5;5;N;;;;; -10E65;RUMI DIGIT SIX;No;0;AN;;;6;6;N;;;;; -10E66;RUMI DIGIT SEVEN;No;0;AN;;;7;7;N;;;;; -10E67;RUMI DIGIT EIGHT;No;0;AN;;;8;8;N;;;;; -10E68;RUMI DIGIT NINE;No;0;AN;;;9;9;N;;;;; -10E69;RUMI NUMBER TEN;No;0;AN;;;;10;N;;;;; -10E6A;RUMI NUMBER TWENTY;No;0;AN;;;;20;N;;;;; -10E6B;RUMI NUMBER THIRTY;No;0;AN;;;;30;N;;;;; -10E6C;RUMI NUMBER FORTY;No;0;AN;;;;40;N;;;;; -10E6D;RUMI NUMBER FIFTY;No;0;AN;;;;50;N;;;;; -10E6E;RUMI NUMBER SIXTY;No;0;AN;;;;60;N;;;;; -10E6F;RUMI NUMBER SEVENTY;No;0;AN;;;;70;N;;;;; -10E70;RUMI NUMBER EIGHTY;No;0;AN;;;;80;N;;;;; -10E71;RUMI NUMBER NINETY;No;0;AN;;;;90;N;;;;; -10E72;RUMI NUMBER ONE HUNDRED;No;0;AN;;;;100;N;;;;; -10E73;RUMI NUMBER TWO HUNDRED;No;0;AN;;;;200;N;;;;; -10E74;RUMI NUMBER THREE HUNDRED;No;0;AN;;;;300;N;;;;; -10E75;RUMI NUMBER FOUR HUNDRED;No;0;AN;;;;400;N;;;;; -10E76;RUMI NUMBER FIVE HUNDRED;No;0;AN;;;;500;N;;;;; -10E77;RUMI NUMBER SIX HUNDRED;No;0;AN;;;;600;N;;;;; -10E78;RUMI NUMBER SEVEN HUNDRED;No;0;AN;;;;700;N;;;;; -10E79;RUMI NUMBER EIGHT HUNDRED;No;0;AN;;;;800;N;;;;; -10E7A;RUMI NUMBER NINE HUNDRED;No;0;AN;;;;900;N;;;;; -10E7B;RUMI FRACTION ONE HALF;No;0;AN;;;;1/2;N;;;;; -10E7C;RUMI FRACTION ONE QUARTER;No;0;AN;;;;1/4;N;;;;; -10E7D;RUMI FRACTION ONE THIRD;No;0;AN;;;;1/3;N;;;;; -10E7E;RUMI FRACTION TWO THIRDS;No;0;AN;;;;2/3;N;;;;; -11080;KAITHI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; -11081;KAITHI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; -11082;KAITHI SIGN VISARGA;Mc;0;L;;;;;N;;;;; -11083;KAITHI LETTER A;Lo;0;L;;;;;N;;;;; -11084;KAITHI LETTER AA;Lo;0;L;;;;;N;;;;; -11085;KAITHI LETTER I;Lo;0;L;;;;;N;;;;; -11086;KAITHI LETTER II;Lo;0;L;;;;;N;;;;; -11087;KAITHI LETTER U;Lo;0;L;;;;;N;;;;; -11088;KAITHI LETTER UU;Lo;0;L;;;;;N;;;;; -11089;KAITHI LETTER E;Lo;0;L;;;;;N;;;;; -1108A;KAITHI LETTER AI;Lo;0;L;;;;;N;;;;; -1108B;KAITHI LETTER O;Lo;0;L;;;;;N;;;;; -1108C;KAITHI LETTER AU;Lo;0;L;;;;;N;;;;; -1108D;KAITHI LETTER KA;Lo;0;L;;;;;N;;;;; -1108E;KAITHI LETTER KHA;Lo;0;L;;;;;N;;;;; -1108F;KAITHI LETTER GA;Lo;0;L;;;;;N;;;;; -11090;KAITHI LETTER GHA;Lo;0;L;;;;;N;;;;; -11091;KAITHI LETTER NGA;Lo;0;L;;;;;N;;;;; -11092;KAITHI LETTER CA;Lo;0;L;;;;;N;;;;; -11093;KAITHI LETTER CHA;Lo;0;L;;;;;N;;;;; -11094;KAITHI LETTER JA;Lo;0;L;;;;;N;;;;; -11095;KAITHI LETTER JHA;Lo;0;L;;;;;N;;;;; -11096;KAITHI LETTER NYA;Lo;0;L;;;;;N;;;;; -11097;KAITHI LETTER TTA;Lo;0;L;;;;;N;;;;; -11098;KAITHI LETTER TTHA;Lo;0;L;;;;;N;;;;; -11099;KAITHI LETTER DDA;Lo;0;L;;;;;N;;;;; -1109A;KAITHI LETTER DDDHA;Lo;0;L;11099 110BA;;;;N;;;;; -1109B;KAITHI LETTER DDHA;Lo;0;L;;;;;N;;;;; -1109C;KAITHI LETTER RHA;Lo;0;L;1109B 110BA;;;;N;;;;; -1109D;KAITHI LETTER NNA;Lo;0;L;;;;;N;;;;; -1109E;KAITHI LETTER TA;Lo;0;L;;;;;N;;;;; -1109F;KAITHI LETTER THA;Lo;0;L;;;;;N;;;;; -110A0;KAITHI LETTER DA;Lo;0;L;;;;;N;;;;; -110A1;KAITHI LETTER DHA;Lo;0;L;;;;;N;;;;; -110A2;KAITHI LETTER NA;Lo;0;L;;;;;N;;;;; -110A3;KAITHI LETTER PA;Lo;0;L;;;;;N;;;;; -110A4;KAITHI LETTER PHA;Lo;0;L;;;;;N;;;;; -110A5;KAITHI LETTER BA;Lo;0;L;;;;;N;;;;; -110A6;KAITHI LETTER BHA;Lo;0;L;;;;;N;;;;; -110A7;KAITHI LETTER MA;Lo;0;L;;;;;N;;;;; -110A8;KAITHI LETTER YA;Lo;0;L;;;;;N;;;;; -110A9;KAITHI LETTER RA;Lo;0;L;;;;;N;;;;; -110AA;KAITHI LETTER LA;Lo;0;L;;;;;N;;;;; -110AB;KAITHI LETTER VA;Lo;0;L;110A5 110BA;;;;N;;;;; -110AC;KAITHI LETTER SHA;Lo;0;L;;;;;N;;;;; -110AD;KAITHI LETTER SSA;Lo;0;L;;;;;N;;;;; -110AE;KAITHI LETTER SA;Lo;0;L;;;;;N;;;;; -110AF;KAITHI LETTER HA;Lo;0;L;;;;;N;;;;; -110B0;KAITHI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -110B1;KAITHI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; -110B2;KAITHI VOWEL SIGN II;Mc;0;L;;;;;N;;;;; -110B3;KAITHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -110B4;KAITHI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; -110B5;KAITHI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; -110B6;KAITHI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; -110B7;KAITHI VOWEL SIGN O;Mc;0;L;;;;;N;;;;; -110B8;KAITHI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; -110B9;KAITHI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -110BA;KAITHI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; -110BB;KAITHI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;; -110BC;KAITHI ENUMERATION SIGN;Po;0;L;;;;;N;;;;; -110BD;KAITHI NUMBER SIGN;Cf;0;L;;;;;N;;;;; -110BE;KAITHI SECTION MARK;Po;0;L;;;;;N;;;;; -110BF;KAITHI DOUBLE SECTION MARK;Po;0;L;;;;;N;;;;; -110C0;KAITHI DANDA;Po;0;L;;;;;N;;;;; -110C1;KAITHI DOUBLE DANDA;Po;0;L;;;;;N;;;;; -12000;CUNEIFORM SIGN A;Lo;0;L;;;;;N;;;;; -12001;CUNEIFORM SIGN A TIMES A;Lo;0;L;;;;;N;;;;; -12002;CUNEIFORM SIGN A TIMES BAD;Lo;0;L;;;;;N;;;;; -12003;CUNEIFORM SIGN A TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; -12004;CUNEIFORM SIGN A TIMES HA;Lo;0;L;;;;;N;;;;; -12005;CUNEIFORM SIGN A TIMES IGI;Lo;0;L;;;;;N;;;;; -12006;CUNEIFORM SIGN A TIMES LAGAR GUNU;Lo;0;L;;;;;N;;;;; -12007;CUNEIFORM SIGN A TIMES MUSH;Lo;0;L;;;;;N;;;;; -12008;CUNEIFORM SIGN A TIMES SAG;Lo;0;L;;;;;N;;;;; -12009;CUNEIFORM SIGN A2;Lo;0;L;;;;;N;;;;; -1200A;CUNEIFORM SIGN AB;Lo;0;L;;;;;N;;;;; -1200B;CUNEIFORM SIGN AB TIMES ASH2;Lo;0;L;;;;;N;;;;; -1200C;CUNEIFORM SIGN AB TIMES DUN3 GUNU;Lo;0;L;;;;;N;;;;; -1200D;CUNEIFORM SIGN AB TIMES GAL;Lo;0;L;;;;;N;;;;; -1200E;CUNEIFORM SIGN AB TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; -1200F;CUNEIFORM SIGN AB TIMES HA;Lo;0;L;;;;;N;;;;; -12010;CUNEIFORM SIGN AB TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; -12011;CUNEIFORM SIGN AB TIMES IMIN;Lo;0;L;;;;;N;;;;; -12012;CUNEIFORM SIGN AB TIMES LAGAB;Lo;0;L;;;;;N;;;;; -12013;CUNEIFORM SIGN AB TIMES SHESH;Lo;0;L;;;;;N;;;;; -12014;CUNEIFORM SIGN AB TIMES U PLUS U PLUS U;Lo;0;L;;;;;N;;;;; -12015;CUNEIFORM SIGN AB GUNU;Lo;0;L;;;;;N;;;;; -12016;CUNEIFORM SIGN AB2;Lo;0;L;;;;;N;;;;; -12017;CUNEIFORM SIGN AB2 TIMES BALAG;Lo;0;L;;;;;N;;;;; -12018;CUNEIFORM SIGN AB2 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; -12019;CUNEIFORM SIGN AB2 TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;; -1201A;CUNEIFORM SIGN AB2 TIMES SHA3;Lo;0;L;;;;;N;;;;; -1201B;CUNEIFORM SIGN AB2 TIMES TAK4;Lo;0;L;;;;;N;;;;; -1201C;CUNEIFORM SIGN AD;Lo;0;L;;;;;N;;;;; -1201D;CUNEIFORM SIGN AK;Lo;0;L;;;;;N;;;;; -1201E;CUNEIFORM SIGN AK TIMES ERIN2;Lo;0;L;;;;;N;;;;; -1201F;CUNEIFORM SIGN AK TIMES SHITA PLUS GISH;Lo;0;L;;;;;N;;;;; -12020;CUNEIFORM SIGN AL;Lo;0;L;;;;;N;;;;; -12021;CUNEIFORM SIGN AL TIMES AL;Lo;0;L;;;;;N;;;;; -12022;CUNEIFORM SIGN AL TIMES DIM2;Lo;0;L;;;;;N;;;;; -12023;CUNEIFORM SIGN AL TIMES GISH;Lo;0;L;;;;;N;;;;; -12024;CUNEIFORM SIGN AL TIMES HA;Lo;0;L;;;;;N;;;;; -12025;CUNEIFORM SIGN AL TIMES KAD3;Lo;0;L;;;;;N;;;;; -12026;CUNEIFORM SIGN AL TIMES KI;Lo;0;L;;;;;N;;;;; -12027;CUNEIFORM SIGN AL TIMES SHE;Lo;0;L;;;;;N;;;;; -12028;CUNEIFORM SIGN AL TIMES USH;Lo;0;L;;;;;N;;;;; -12029;CUNEIFORM SIGN ALAN;Lo;0;L;;;;;N;;;;; -1202A;CUNEIFORM SIGN ALEPH;Lo;0;L;;;;;N;;;;; -1202B;CUNEIFORM SIGN AMAR;Lo;0;L;;;;;N;;;;; -1202C;CUNEIFORM SIGN AMAR TIMES SHE;Lo;0;L;;;;;N;;;;; -1202D;CUNEIFORM SIGN AN;Lo;0;L;;;;;N;;;;; -1202E;CUNEIFORM SIGN AN OVER AN;Lo;0;L;;;;;N;;;;; -1202F;CUNEIFORM SIGN AN THREE TIMES;Lo;0;L;;;;;N;;;;; -12030;CUNEIFORM SIGN AN PLUS NAGA OPPOSING AN PLUS NAGA;Lo;0;L;;;;;N;;;;; -12031;CUNEIFORM SIGN AN PLUS NAGA SQUARED;Lo;0;L;;;;;N;;;;; -12032;CUNEIFORM SIGN ANSHE;Lo;0;L;;;;;N;;;;; -12033;CUNEIFORM SIGN APIN;Lo;0;L;;;;;N;;;;; -12034;CUNEIFORM SIGN ARAD;Lo;0;L;;;;;N;;;;; -12035;CUNEIFORM SIGN ARAD TIMES KUR;Lo;0;L;;;;;N;;;;; -12036;CUNEIFORM SIGN ARKAB;Lo;0;L;;;;;N;;;;; -12037;CUNEIFORM SIGN ASAL2;Lo;0;L;;;;;N;;;;; -12038;CUNEIFORM SIGN ASH;Lo;0;L;;;;;N;;;;; -12039;CUNEIFORM SIGN ASH ZIDA TENU;Lo;0;L;;;;;N;;;;; -1203A;CUNEIFORM SIGN ASH KABA TENU;Lo;0;L;;;;;N;;;;; -1203B;CUNEIFORM SIGN ASH OVER ASH TUG2 OVER TUG2 TUG2 OVER TUG2 PAP;Lo;0;L;;;;;N;;;;; -1203C;CUNEIFORM SIGN ASH OVER ASH OVER ASH;Lo;0;L;;;;;N;;;;; -1203D;CUNEIFORM SIGN ASH OVER ASH OVER ASH CROSSING ASH OVER ASH OVER ASH;Lo;0;L;;;;;N;;;;; -1203E;CUNEIFORM SIGN ASH2;Lo;0;L;;;;;N;;;;; -1203F;CUNEIFORM SIGN ASHGAB;Lo;0;L;;;;;N;;;;; -12040;CUNEIFORM SIGN BA;Lo;0;L;;;;;N;;;;; -12041;CUNEIFORM SIGN BAD;Lo;0;L;;;;;N;;;;; -12042;CUNEIFORM SIGN BAG3;Lo;0;L;;;;;N;;;;; -12043;CUNEIFORM SIGN BAHAR2;Lo;0;L;;;;;N;;;;; -12044;CUNEIFORM SIGN BAL;Lo;0;L;;;;;N;;;;; -12045;CUNEIFORM SIGN BAL OVER BAL;Lo;0;L;;;;;N;;;;; -12046;CUNEIFORM SIGN BALAG;Lo;0;L;;;;;N;;;;; -12047;CUNEIFORM SIGN BAR;Lo;0;L;;;;;N;;;;; -12048;CUNEIFORM SIGN BARA2;Lo;0;L;;;;;N;;;;; -12049;CUNEIFORM SIGN BI;Lo;0;L;;;;;N;;;;; -1204A;CUNEIFORM SIGN BI TIMES A;Lo;0;L;;;;;N;;;;; -1204B;CUNEIFORM SIGN BI TIMES GAR;Lo;0;L;;;;;N;;;;; -1204C;CUNEIFORM SIGN BI TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; -1204D;CUNEIFORM SIGN BU;Lo;0;L;;;;;N;;;;; -1204E;CUNEIFORM SIGN BU OVER BU AB;Lo;0;L;;;;;N;;;;; -1204F;CUNEIFORM SIGN BU OVER BU UN;Lo;0;L;;;;;N;;;;; -12050;CUNEIFORM SIGN BU CROSSING BU;Lo;0;L;;;;;N;;;;; -12051;CUNEIFORM SIGN BULUG;Lo;0;L;;;;;N;;;;; -12052;CUNEIFORM SIGN BULUG OVER BULUG;Lo;0;L;;;;;N;;;;; -12053;CUNEIFORM SIGN BUR;Lo;0;L;;;;;N;;;;; -12054;CUNEIFORM SIGN BUR2;Lo;0;L;;;;;N;;;;; -12055;CUNEIFORM SIGN DA;Lo;0;L;;;;;N;;;;; -12056;CUNEIFORM SIGN DAG;Lo;0;L;;;;;N;;;;; -12057;CUNEIFORM SIGN DAG KISIM5 TIMES A PLUS MASH;Lo;0;L;;;;;N;;;;; -12058;CUNEIFORM SIGN DAG KISIM5 TIMES AMAR;Lo;0;L;;;;;N;;;;; -12059;CUNEIFORM SIGN DAG KISIM5 TIMES BALAG;Lo;0;L;;;;;N;;;;; -1205A;CUNEIFORM SIGN DAG KISIM5 TIMES BI;Lo;0;L;;;;;N;;;;; -1205B;CUNEIFORM SIGN DAG KISIM5 TIMES GA;Lo;0;L;;;;;N;;;;; -1205C;CUNEIFORM SIGN DAG KISIM5 TIMES GA PLUS MASH;Lo;0;L;;;;;N;;;;; -1205D;CUNEIFORM SIGN DAG KISIM5 TIMES GI;Lo;0;L;;;;;N;;;;; -1205E;CUNEIFORM SIGN DAG KISIM5 TIMES GIR2;Lo;0;L;;;;;N;;;;; -1205F;CUNEIFORM SIGN DAG KISIM5 TIMES GUD;Lo;0;L;;;;;N;;;;; -12060;CUNEIFORM SIGN DAG KISIM5 TIMES HA;Lo;0;L;;;;;N;;;;; -12061;CUNEIFORM SIGN DAG KISIM5 TIMES IR;Lo;0;L;;;;;N;;;;; -12062;CUNEIFORM SIGN DAG KISIM5 TIMES IR PLUS LU;Lo;0;L;;;;;N;;;;; -12063;CUNEIFORM SIGN DAG KISIM5 TIMES KAK;Lo;0;L;;;;;N;;;;; -12064;CUNEIFORM SIGN DAG KISIM5 TIMES LA;Lo;0;L;;;;;N;;;;; -12065;CUNEIFORM SIGN DAG KISIM5 TIMES LU;Lo;0;L;;;;;N;;;;; -12066;CUNEIFORM SIGN DAG KISIM5 TIMES LU PLUS MASH2;Lo;0;L;;;;;N;;;;; -12067;CUNEIFORM SIGN DAG KISIM5 TIMES LUM;Lo;0;L;;;;;N;;;;; -12068;CUNEIFORM SIGN DAG KISIM5 TIMES NE;Lo;0;L;;;;;N;;;;; -12069;CUNEIFORM SIGN DAG KISIM5 TIMES PAP PLUS PAP;Lo;0;L;;;;;N;;;;; -1206A;CUNEIFORM SIGN DAG KISIM5 TIMES SI;Lo;0;L;;;;;N;;;;; -1206B;CUNEIFORM SIGN DAG KISIM5 TIMES TAK4;Lo;0;L;;;;;N;;;;; -1206C;CUNEIFORM SIGN DAG KISIM5 TIMES U2 PLUS GIR2;Lo;0;L;;;;;N;;;;; -1206D;CUNEIFORM SIGN DAG KISIM5 TIMES USH;Lo;0;L;;;;;N;;;;; -1206E;CUNEIFORM SIGN DAM;Lo;0;L;;;;;N;;;;; -1206F;CUNEIFORM SIGN DAR;Lo;0;L;;;;;N;;;;; -12070;CUNEIFORM SIGN DARA3;Lo;0;L;;;;;N;;;;; -12071;CUNEIFORM SIGN DARA4;Lo;0;L;;;;;N;;;;; -12072;CUNEIFORM SIGN DI;Lo;0;L;;;;;N;;;;; -12073;CUNEIFORM SIGN DIB;Lo;0;L;;;;;N;;;;; -12074;CUNEIFORM SIGN DIM;Lo;0;L;;;;;N;;;;; -12075;CUNEIFORM SIGN DIM TIMES SHE;Lo;0;L;;;;;N;;;;; -12076;CUNEIFORM SIGN DIM2;Lo;0;L;;;;;N;;;;; -12077;CUNEIFORM SIGN DIN;Lo;0;L;;;;;N;;;;; -12078;CUNEIFORM SIGN DIN KASKAL U GUNU DISH;Lo;0;L;;;;;N;;;;; -12079;CUNEIFORM SIGN DISH;Lo;0;L;;;;;N;;;;; -1207A;CUNEIFORM SIGN DU;Lo;0;L;;;;;N;;;;; -1207B;CUNEIFORM SIGN DU OVER DU;Lo;0;L;;;;;N;;;;; -1207C;CUNEIFORM SIGN DU GUNU;Lo;0;L;;;;;N;;;;; -1207D;CUNEIFORM SIGN DU SHESHIG;Lo;0;L;;;;;N;;;;; -1207E;CUNEIFORM SIGN DUB;Lo;0;L;;;;;N;;;;; -1207F;CUNEIFORM SIGN DUB TIMES ESH2;Lo;0;L;;;;;N;;;;; -12080;CUNEIFORM SIGN DUB2;Lo;0;L;;;;;N;;;;; -12081;CUNEIFORM SIGN DUG;Lo;0;L;;;;;N;;;;; -12082;CUNEIFORM SIGN DUGUD;Lo;0;L;;;;;N;;;;; -12083;CUNEIFORM SIGN DUH;Lo;0;L;;;;;N;;;;; -12084;CUNEIFORM SIGN DUN;Lo;0;L;;;;;N;;;;; -12085;CUNEIFORM SIGN DUN3;Lo;0;L;;;;;N;;;;; -12086;CUNEIFORM SIGN DUN3 GUNU;Lo;0;L;;;;;N;;;;; -12087;CUNEIFORM SIGN DUN3 GUNU GUNU;Lo;0;L;;;;;N;;;;; -12088;CUNEIFORM SIGN DUN4;Lo;0;L;;;;;N;;;;; -12089;CUNEIFORM SIGN DUR2;Lo;0;L;;;;;N;;;;; -1208A;CUNEIFORM SIGN E;Lo;0;L;;;;;N;;;;; -1208B;CUNEIFORM SIGN E TIMES PAP;Lo;0;L;;;;;N;;;;; -1208C;CUNEIFORM SIGN E OVER E NUN OVER NUN;Lo;0;L;;;;;N;;;;; -1208D;CUNEIFORM SIGN E2;Lo;0;L;;;;;N;;;;; -1208E;CUNEIFORM SIGN E2 TIMES A PLUS HA PLUS DA;Lo;0;L;;;;;N;;;;; -1208F;CUNEIFORM SIGN E2 TIMES GAR;Lo;0;L;;;;;N;;;;; -12090;CUNEIFORM SIGN E2 TIMES MI;Lo;0;L;;;;;N;;;;; -12091;CUNEIFORM SIGN E2 TIMES SAL;Lo;0;L;;;;;N;;;;; -12092;CUNEIFORM SIGN E2 TIMES SHE;Lo;0;L;;;;;N;;;;; -12093;CUNEIFORM SIGN E2 TIMES U;Lo;0;L;;;;;N;;;;; -12094;CUNEIFORM SIGN EDIN;Lo;0;L;;;;;N;;;;; -12095;CUNEIFORM SIGN EGIR;Lo;0;L;;;;;N;;;;; -12096;CUNEIFORM SIGN EL;Lo;0;L;;;;;N;;;;; -12097;CUNEIFORM SIGN EN;Lo;0;L;;;;;N;;;;; -12098;CUNEIFORM SIGN EN TIMES GAN2;Lo;0;L;;;;;N;;;;; -12099;CUNEIFORM SIGN EN TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; -1209A;CUNEIFORM SIGN EN TIMES ME;Lo;0;L;;;;;N;;;;; -1209B;CUNEIFORM SIGN EN CROSSING EN;Lo;0;L;;;;;N;;;;; -1209C;CUNEIFORM SIGN EN OPPOSING EN;Lo;0;L;;;;;N;;;;; -1209D;CUNEIFORM SIGN EN SQUARED;Lo;0;L;;;;;N;;;;; -1209E;CUNEIFORM SIGN EREN;Lo;0;L;;;;;N;;;;; -1209F;CUNEIFORM SIGN ERIN2;Lo;0;L;;;;;N;;;;; -120A0;CUNEIFORM SIGN ESH2;Lo;0;L;;;;;N;;;;; -120A1;CUNEIFORM SIGN EZEN;Lo;0;L;;;;;N;;;;; -120A2;CUNEIFORM SIGN EZEN TIMES A;Lo;0;L;;;;;N;;;;; -120A3;CUNEIFORM SIGN EZEN TIMES A PLUS LAL;Lo;0;L;;;;;N;;;;; -120A4;CUNEIFORM SIGN EZEN TIMES A PLUS LAL TIMES LAL;Lo;0;L;;;;;N;;;;; -120A5;CUNEIFORM SIGN EZEN TIMES AN;Lo;0;L;;;;;N;;;;; -120A6;CUNEIFORM SIGN EZEN TIMES BAD;Lo;0;L;;;;;N;;;;; -120A7;CUNEIFORM SIGN EZEN TIMES DUN3 GUNU;Lo;0;L;;;;;N;;;;; -120A8;CUNEIFORM SIGN EZEN TIMES DUN3 GUNU GUNU;Lo;0;L;;;;;N;;;;; -120A9;CUNEIFORM SIGN EZEN TIMES HA;Lo;0;L;;;;;N;;;;; -120AA;CUNEIFORM SIGN EZEN TIMES HA GUNU;Lo;0;L;;;;;N;;;;; -120AB;CUNEIFORM SIGN EZEN TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; -120AC;CUNEIFORM SIGN EZEN TIMES KASKAL;Lo;0;L;;;;;N;;;;; -120AD;CUNEIFORM SIGN EZEN TIMES KASKAL SQUARED;Lo;0;L;;;;;N;;;;; -120AE;CUNEIFORM SIGN EZEN TIMES KU3;Lo;0;L;;;;;N;;;;; -120AF;CUNEIFORM SIGN EZEN TIMES LA;Lo;0;L;;;;;N;;;;; -120B0;CUNEIFORM SIGN EZEN TIMES LAL TIMES LAL;Lo;0;L;;;;;N;;;;; -120B1;CUNEIFORM SIGN EZEN TIMES LI;Lo;0;L;;;;;N;;;;; -120B2;CUNEIFORM SIGN EZEN TIMES LU;Lo;0;L;;;;;N;;;;; -120B3;CUNEIFORM SIGN EZEN TIMES U2;Lo;0;L;;;;;N;;;;; -120B4;CUNEIFORM SIGN EZEN TIMES UD;Lo;0;L;;;;;N;;;;; -120B5;CUNEIFORM SIGN GA;Lo;0;L;;;;;N;;;;; -120B6;CUNEIFORM SIGN GA GUNU;Lo;0;L;;;;;N;;;;; -120B7;CUNEIFORM SIGN GA2;Lo;0;L;;;;;N;;;;; -120B8;CUNEIFORM SIGN GA2 TIMES A PLUS DA PLUS HA;Lo;0;L;;;;;N;;;;; -120B9;CUNEIFORM SIGN GA2 TIMES A PLUS HA;Lo;0;L;;;;;N;;;;; -120BA;CUNEIFORM SIGN GA2 TIMES A PLUS IGI;Lo;0;L;;;;;N;;;;; -120BB;CUNEIFORM SIGN GA2 TIMES AB2 TENU PLUS TAB;Lo;0;L;;;;;N;;;;; -120BC;CUNEIFORM SIGN GA2 TIMES AN;Lo;0;L;;;;;N;;;;; -120BD;CUNEIFORM SIGN GA2 TIMES ASH;Lo;0;L;;;;;N;;;;; -120BE;CUNEIFORM SIGN GA2 TIMES ASH2 PLUS GAL;Lo;0;L;;;;;N;;;;; -120BF;CUNEIFORM SIGN GA2 TIMES BAD;Lo;0;L;;;;;N;;;;; -120C0;CUNEIFORM SIGN GA2 TIMES BAR PLUS RA;Lo;0;L;;;;;N;;;;; -120C1;CUNEIFORM SIGN GA2 TIMES BUR;Lo;0;L;;;;;N;;;;; -120C2;CUNEIFORM SIGN GA2 TIMES BUR PLUS RA;Lo;0;L;;;;;N;;;;; -120C3;CUNEIFORM SIGN GA2 TIMES DA;Lo;0;L;;;;;N;;;;; -120C4;CUNEIFORM SIGN GA2 TIMES DI;Lo;0;L;;;;;N;;;;; -120C5;CUNEIFORM SIGN GA2 TIMES DIM TIMES SHE;Lo;0;L;;;;;N;;;;; -120C6;CUNEIFORM SIGN GA2 TIMES DUB;Lo;0;L;;;;;N;;;;; -120C7;CUNEIFORM SIGN GA2 TIMES EL;Lo;0;L;;;;;N;;;;; -120C8;CUNEIFORM SIGN GA2 TIMES EL PLUS LA;Lo;0;L;;;;;N;;;;; -120C9;CUNEIFORM SIGN GA2 TIMES EN;Lo;0;L;;;;;N;;;;; -120CA;CUNEIFORM SIGN GA2 TIMES EN TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; -120CB;CUNEIFORM SIGN GA2 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; -120CC;CUNEIFORM SIGN GA2 TIMES GAR;Lo;0;L;;;;;N;;;;; -120CD;CUNEIFORM SIGN GA2 TIMES GI;Lo;0;L;;;;;N;;;;; -120CE;CUNEIFORM SIGN GA2 TIMES GI4;Lo;0;L;;;;;N;;;;; -120CF;CUNEIFORM SIGN GA2 TIMES GI4 PLUS A;Lo;0;L;;;;;N;;;;; -120D0;CUNEIFORM SIGN GA2 TIMES GIR2 PLUS SU;Lo;0;L;;;;;N;;;;; -120D1;CUNEIFORM SIGN GA2 TIMES HA PLUS LU PLUS ESH2;Lo;0;L;;;;;N;;;;; -120D2;CUNEIFORM SIGN GA2 TIMES HAL;Lo;0;L;;;;;N;;;;; -120D3;CUNEIFORM SIGN GA2 TIMES HAL PLUS LA;Lo;0;L;;;;;N;;;;; -120D4;CUNEIFORM SIGN GA2 TIMES HI PLUS LI;Lo;0;L;;;;;N;;;;; -120D5;CUNEIFORM SIGN GA2 TIMES HUB2;Lo;0;L;;;;;N;;;;; -120D6;CUNEIFORM SIGN GA2 TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; -120D7;CUNEIFORM SIGN GA2 TIMES ISH PLUS HU PLUS ASH;Lo;0;L;;;;;N;;;;; -120D8;CUNEIFORM SIGN GA2 TIMES KAK;Lo;0;L;;;;;N;;;;; -120D9;CUNEIFORM SIGN GA2 TIMES KASKAL;Lo;0;L;;;;;N;;;;; -120DA;CUNEIFORM SIGN GA2 TIMES KID;Lo;0;L;;;;;N;;;;; -120DB;CUNEIFORM SIGN GA2 TIMES KID PLUS LAL;Lo;0;L;;;;;N;;;;; -120DC;CUNEIFORM SIGN GA2 TIMES KU3 PLUS AN;Lo;0;L;;;;;N;;;;; -120DD;CUNEIFORM SIGN GA2 TIMES LA;Lo;0;L;;;;;N;;;;; -120DE;CUNEIFORM SIGN GA2 TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;; -120DF;CUNEIFORM SIGN GA2 TIMES MI;Lo;0;L;;;;;N;;;;; -120E0;CUNEIFORM SIGN GA2 TIMES NUN;Lo;0;L;;;;;N;;;;; -120E1;CUNEIFORM SIGN GA2 TIMES NUN OVER NUN;Lo;0;L;;;;;N;;;;; -120E2;CUNEIFORM SIGN GA2 TIMES PA;Lo;0;L;;;;;N;;;;; -120E3;CUNEIFORM SIGN GA2 TIMES SAL;Lo;0;L;;;;;N;;;;; -120E4;CUNEIFORM SIGN GA2 TIMES SAR;Lo;0;L;;;;;N;;;;; -120E5;CUNEIFORM SIGN GA2 TIMES SHE;Lo;0;L;;;;;N;;;;; -120E6;CUNEIFORM SIGN GA2 TIMES SHE PLUS TUR;Lo;0;L;;;;;N;;;;; -120E7;CUNEIFORM SIGN GA2 TIMES SHID;Lo;0;L;;;;;N;;;;; -120E8;CUNEIFORM SIGN GA2 TIMES SUM;Lo;0;L;;;;;N;;;;; -120E9;CUNEIFORM SIGN GA2 TIMES TAK4;Lo;0;L;;;;;N;;;;; -120EA;CUNEIFORM SIGN GA2 TIMES U;Lo;0;L;;;;;N;;;;; -120EB;CUNEIFORM SIGN GA2 TIMES UD;Lo;0;L;;;;;N;;;;; -120EC;CUNEIFORM SIGN GA2 TIMES UD PLUS DU;Lo;0;L;;;;;N;;;;; -120ED;CUNEIFORM SIGN GA2 OVER GA2;Lo;0;L;;;;;N;;;;; -120EE;CUNEIFORM SIGN GABA;Lo;0;L;;;;;N;;;;; -120EF;CUNEIFORM SIGN GABA CROSSING GABA;Lo;0;L;;;;;N;;;;; -120F0;CUNEIFORM SIGN GAD;Lo;0;L;;;;;N;;;;; -120F1;CUNEIFORM SIGN GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;; -120F2;CUNEIFORM SIGN GAL;Lo;0;L;;;;;N;;;;; -120F3;CUNEIFORM SIGN GAL GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;; -120F4;CUNEIFORM SIGN GALAM;Lo;0;L;;;;;N;;;;; -120F5;CUNEIFORM SIGN GAM;Lo;0;L;;;;;N;;;;; -120F6;CUNEIFORM SIGN GAN;Lo;0;L;;;;;N;;;;; -120F7;CUNEIFORM SIGN GAN2;Lo;0;L;;;;;N;;;;; -120F8;CUNEIFORM SIGN GAN2 TENU;Lo;0;L;;;;;N;;;;; -120F9;CUNEIFORM SIGN GAN2 OVER GAN2;Lo;0;L;;;;;N;;;;; -120FA;CUNEIFORM SIGN GAN2 CROSSING GAN2;Lo;0;L;;;;;N;;;;; -120FB;CUNEIFORM SIGN GAR;Lo;0;L;;;;;N;;;;; -120FC;CUNEIFORM SIGN GAR3;Lo;0;L;;;;;N;;;;; -120FD;CUNEIFORM SIGN GASHAN;Lo;0;L;;;;;N;;;;; -120FE;CUNEIFORM SIGN GESHTIN;Lo;0;L;;;;;N;;;;; -120FF;CUNEIFORM SIGN GESHTIN TIMES KUR;Lo;0;L;;;;;N;;;;; -12100;CUNEIFORM SIGN GI;Lo;0;L;;;;;N;;;;; -12101;CUNEIFORM SIGN GI TIMES E;Lo;0;L;;;;;N;;;;; -12102;CUNEIFORM SIGN GI TIMES U;Lo;0;L;;;;;N;;;;; -12103;CUNEIFORM SIGN GI CROSSING GI;Lo;0;L;;;;;N;;;;; -12104;CUNEIFORM SIGN GI4;Lo;0;L;;;;;N;;;;; -12105;CUNEIFORM SIGN GI4 OVER GI4;Lo;0;L;;;;;N;;;;; -12106;CUNEIFORM SIGN GI4 CROSSING GI4;Lo;0;L;;;;;N;;;;; -12107;CUNEIFORM SIGN GIDIM;Lo;0;L;;;;;N;;;;; -12108;CUNEIFORM SIGN GIR2;Lo;0;L;;;;;N;;;;; -12109;CUNEIFORM SIGN GIR2 GUNU;Lo;0;L;;;;;N;;;;; -1210A;CUNEIFORM SIGN GIR3;Lo;0;L;;;;;N;;;;; -1210B;CUNEIFORM SIGN GIR3 TIMES A PLUS IGI;Lo;0;L;;;;;N;;;;; -1210C;CUNEIFORM SIGN GIR3 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; -1210D;CUNEIFORM SIGN GIR3 TIMES IGI;Lo;0;L;;;;;N;;;;; -1210E;CUNEIFORM SIGN GIR3 TIMES LU PLUS IGI;Lo;0;L;;;;;N;;;;; -1210F;CUNEIFORM SIGN GIR3 TIMES PA;Lo;0;L;;;;;N;;;;; -12110;CUNEIFORM SIGN GISAL;Lo;0;L;;;;;N;;;;; -12111;CUNEIFORM SIGN GISH;Lo;0;L;;;;;N;;;;; -12112;CUNEIFORM SIGN GISH CROSSING GISH;Lo;0;L;;;;;N;;;;; -12113;CUNEIFORM SIGN GISH TIMES BAD;Lo;0;L;;;;;N;;;;; -12114;CUNEIFORM SIGN GISH TIMES TAK4;Lo;0;L;;;;;N;;;;; -12115;CUNEIFORM SIGN GISH TENU;Lo;0;L;;;;;N;;;;; -12116;CUNEIFORM SIGN GU;Lo;0;L;;;;;N;;;;; -12117;CUNEIFORM SIGN GU CROSSING GU;Lo;0;L;;;;;N;;;;; -12118;CUNEIFORM SIGN GU2;Lo;0;L;;;;;N;;;;; -12119;CUNEIFORM SIGN GU2 TIMES KAK;Lo;0;L;;;;;N;;;;; -1211A;CUNEIFORM SIGN GU2 TIMES KAK TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; -1211B;CUNEIFORM SIGN GU2 TIMES NUN;Lo;0;L;;;;;N;;;;; -1211C;CUNEIFORM SIGN GU2 TIMES SAL PLUS TUG2;Lo;0;L;;;;;N;;;;; -1211D;CUNEIFORM SIGN GU2 GUNU;Lo;0;L;;;;;N;;;;; -1211E;CUNEIFORM SIGN GUD;Lo;0;L;;;;;N;;;;; -1211F;CUNEIFORM SIGN GUD TIMES A PLUS KUR;Lo;0;L;;;;;N;;;;; -12120;CUNEIFORM SIGN GUD TIMES KUR;Lo;0;L;;;;;N;;;;; -12121;CUNEIFORM SIGN GUD OVER GUD LUGAL;Lo;0;L;;;;;N;;;;; -12122;CUNEIFORM SIGN GUL;Lo;0;L;;;;;N;;;;; -12123;CUNEIFORM SIGN GUM;Lo;0;L;;;;;N;;;;; -12124;CUNEIFORM SIGN GUM TIMES SHE;Lo;0;L;;;;;N;;;;; -12125;CUNEIFORM SIGN GUR;Lo;0;L;;;;;N;;;;; -12126;CUNEIFORM SIGN GUR7;Lo;0;L;;;;;N;;;;; -12127;CUNEIFORM SIGN GURUN;Lo;0;L;;;;;N;;;;; -12128;CUNEIFORM SIGN GURUSH;Lo;0;L;;;;;N;;;;; -12129;CUNEIFORM SIGN HA;Lo;0;L;;;;;N;;;;; -1212A;CUNEIFORM SIGN HA TENU;Lo;0;L;;;;;N;;;;; -1212B;CUNEIFORM SIGN HA GUNU;Lo;0;L;;;;;N;;;;; -1212C;CUNEIFORM SIGN HAL;Lo;0;L;;;;;N;;;;; -1212D;CUNEIFORM SIGN HI;Lo;0;L;;;;;N;;;;; -1212E;CUNEIFORM SIGN HI TIMES ASH;Lo;0;L;;;;;N;;;;; -1212F;CUNEIFORM SIGN HI TIMES ASH2;Lo;0;L;;;;;N;;;;; -12130;CUNEIFORM SIGN HI TIMES BAD;Lo;0;L;;;;;N;;;;; -12131;CUNEIFORM SIGN HI TIMES DISH;Lo;0;L;;;;;N;;;;; -12132;CUNEIFORM SIGN HI TIMES GAD;Lo;0;L;;;;;N;;;;; -12133;CUNEIFORM SIGN HI TIMES KIN;Lo;0;L;;;;;N;;;;; -12134;CUNEIFORM SIGN HI TIMES NUN;Lo;0;L;;;;;N;;;;; -12135;CUNEIFORM SIGN HI TIMES SHE;Lo;0;L;;;;;N;;;;; -12136;CUNEIFORM SIGN HI TIMES U;Lo;0;L;;;;;N;;;;; -12137;CUNEIFORM SIGN HU;Lo;0;L;;;;;N;;;;; -12138;CUNEIFORM SIGN HUB2;Lo;0;L;;;;;N;;;;; -12139;CUNEIFORM SIGN HUB2 TIMES AN;Lo;0;L;;;;;N;;;;; -1213A;CUNEIFORM SIGN HUB2 TIMES HAL;Lo;0;L;;;;;N;;;;; -1213B;CUNEIFORM SIGN HUB2 TIMES KASKAL;Lo;0;L;;;;;N;;;;; -1213C;CUNEIFORM SIGN HUB2 TIMES LISH;Lo;0;L;;;;;N;;;;; -1213D;CUNEIFORM SIGN HUB2 TIMES UD;Lo;0;L;;;;;N;;;;; -1213E;CUNEIFORM SIGN HUL2;Lo;0;L;;;;;N;;;;; -1213F;CUNEIFORM SIGN I;Lo;0;L;;;;;N;;;;; -12140;CUNEIFORM SIGN I A;Lo;0;L;;;;;N;;;;; -12141;CUNEIFORM SIGN IB;Lo;0;L;;;;;N;;;;; -12142;CUNEIFORM SIGN IDIM;Lo;0;L;;;;;N;;;;; -12143;CUNEIFORM SIGN IDIM OVER IDIM BUR;Lo;0;L;;;;;N;;;;; -12144;CUNEIFORM SIGN IDIM OVER IDIM SQUARED;Lo;0;L;;;;;N;;;;; -12145;CUNEIFORM SIGN IG;Lo;0;L;;;;;N;;;;; -12146;CUNEIFORM SIGN IGI;Lo;0;L;;;;;N;;;;; -12147;CUNEIFORM SIGN IGI DIB;Lo;0;L;;;;;N;;;;; -12148;CUNEIFORM SIGN IGI RI;Lo;0;L;;;;;N;;;;; -12149;CUNEIFORM SIGN IGI OVER IGI SHIR OVER SHIR UD OVER UD;Lo;0;L;;;;;N;;;;; -1214A;CUNEIFORM SIGN IGI GUNU;Lo;0;L;;;;;N;;;;; -1214B;CUNEIFORM SIGN IL;Lo;0;L;;;;;N;;;;; -1214C;CUNEIFORM SIGN IL TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; -1214D;CUNEIFORM SIGN IL2;Lo;0;L;;;;;N;;;;; -1214E;CUNEIFORM SIGN IM;Lo;0;L;;;;;N;;;;; -1214F;CUNEIFORM SIGN IM TIMES TAK4;Lo;0;L;;;;;N;;;;; -12150;CUNEIFORM SIGN IM CROSSING IM;Lo;0;L;;;;;N;;;;; -12151;CUNEIFORM SIGN IM OPPOSING IM;Lo;0;L;;;;;N;;;;; -12152;CUNEIFORM SIGN IM SQUARED;Lo;0;L;;;;;N;;;;; -12153;CUNEIFORM SIGN IMIN;Lo;0;L;;;;;N;;;;; -12154;CUNEIFORM SIGN IN;Lo;0;L;;;;;N;;;;; -12155;CUNEIFORM SIGN IR;Lo;0;L;;;;;N;;;;; -12156;CUNEIFORM SIGN ISH;Lo;0;L;;;;;N;;;;; -12157;CUNEIFORM SIGN KA;Lo;0;L;;;;;N;;;;; -12158;CUNEIFORM SIGN KA TIMES A;Lo;0;L;;;;;N;;;;; -12159;CUNEIFORM SIGN KA TIMES AD;Lo;0;L;;;;;N;;;;; -1215A;CUNEIFORM SIGN KA TIMES AD PLUS KU3;Lo;0;L;;;;;N;;;;; -1215B;CUNEIFORM SIGN KA TIMES ASH2;Lo;0;L;;;;;N;;;;; -1215C;CUNEIFORM SIGN KA TIMES BAD;Lo;0;L;;;;;N;;;;; -1215D;CUNEIFORM SIGN KA TIMES BALAG;Lo;0;L;;;;;N;;;;; -1215E;CUNEIFORM SIGN KA TIMES BAR;Lo;0;L;;;;;N;;;;; -1215F;CUNEIFORM SIGN KA TIMES BI;Lo;0;L;;;;;N;;;;; -12160;CUNEIFORM SIGN KA TIMES ERIN2;Lo;0;L;;;;;N;;;;; -12161;CUNEIFORM SIGN KA TIMES ESH2;Lo;0;L;;;;;N;;;;; -12162;CUNEIFORM SIGN KA TIMES GA;Lo;0;L;;;;;N;;;;; -12163;CUNEIFORM SIGN KA TIMES GAL;Lo;0;L;;;;;N;;;;; -12164;CUNEIFORM SIGN KA TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; -12165;CUNEIFORM SIGN KA TIMES GAR;Lo;0;L;;;;;N;;;;; -12166;CUNEIFORM SIGN KA TIMES GAR PLUS SHA3 PLUS A;Lo;0;L;;;;;N;;;;; -12167;CUNEIFORM SIGN KA TIMES GI;Lo;0;L;;;;;N;;;;; -12168;CUNEIFORM SIGN KA TIMES GIR2;Lo;0;L;;;;;N;;;;; -12169;CUNEIFORM SIGN KA TIMES GISH PLUS SAR;Lo;0;L;;;;;N;;;;; -1216A;CUNEIFORM SIGN KA TIMES GISH CROSSING GISH;Lo;0;L;;;;;N;;;;; -1216B;CUNEIFORM SIGN KA TIMES GU;Lo;0;L;;;;;N;;;;; -1216C;CUNEIFORM SIGN KA TIMES GUR7;Lo;0;L;;;;;N;;;;; -1216D;CUNEIFORM SIGN KA TIMES IGI;Lo;0;L;;;;;N;;;;; -1216E;CUNEIFORM SIGN KA TIMES IM;Lo;0;L;;;;;N;;;;; -1216F;CUNEIFORM SIGN KA TIMES KAK;Lo;0;L;;;;;N;;;;; -12170;CUNEIFORM SIGN KA TIMES KI;Lo;0;L;;;;;N;;;;; -12171;CUNEIFORM SIGN KA TIMES KID;Lo;0;L;;;;;N;;;;; -12172;CUNEIFORM SIGN KA TIMES LI;Lo;0;L;;;;;N;;;;; -12173;CUNEIFORM SIGN KA TIMES LU;Lo;0;L;;;;;N;;;;; -12174;CUNEIFORM SIGN KA TIMES ME;Lo;0;L;;;;;N;;;;; -12175;CUNEIFORM SIGN KA TIMES ME PLUS DU;Lo;0;L;;;;;N;;;;; -12176;CUNEIFORM SIGN KA TIMES ME PLUS GI;Lo;0;L;;;;;N;;;;; -12177;CUNEIFORM SIGN KA TIMES ME PLUS TE;Lo;0;L;;;;;N;;;;; -12178;CUNEIFORM SIGN KA TIMES MI;Lo;0;L;;;;;N;;;;; -12179;CUNEIFORM SIGN KA TIMES MI PLUS NUNUZ;Lo;0;L;;;;;N;;;;; -1217A;CUNEIFORM SIGN KA TIMES NE;Lo;0;L;;;;;N;;;;; -1217B;CUNEIFORM SIGN KA TIMES NUN;Lo;0;L;;;;;N;;;;; -1217C;CUNEIFORM SIGN KA TIMES PI;Lo;0;L;;;;;N;;;;; -1217D;CUNEIFORM SIGN KA TIMES RU;Lo;0;L;;;;;N;;;;; -1217E;CUNEIFORM SIGN KA TIMES SA;Lo;0;L;;;;;N;;;;; -1217F;CUNEIFORM SIGN KA TIMES SAR;Lo;0;L;;;;;N;;;;; -12180;CUNEIFORM SIGN KA TIMES SHA;Lo;0;L;;;;;N;;;;; -12181;CUNEIFORM SIGN KA TIMES SHE;Lo;0;L;;;;;N;;;;; -12182;CUNEIFORM SIGN KA TIMES SHID;Lo;0;L;;;;;N;;;;; -12183;CUNEIFORM SIGN KA TIMES SHU;Lo;0;L;;;;;N;;;;; -12184;CUNEIFORM SIGN KA TIMES SIG;Lo;0;L;;;;;N;;;;; -12185;CUNEIFORM SIGN KA TIMES SUHUR;Lo;0;L;;;;;N;;;;; -12186;CUNEIFORM SIGN KA TIMES TAR;Lo;0;L;;;;;N;;;;; -12187;CUNEIFORM SIGN KA TIMES U;Lo;0;L;;;;;N;;;;; -12188;CUNEIFORM SIGN KA TIMES U2;Lo;0;L;;;;;N;;;;; -12189;CUNEIFORM SIGN KA TIMES UD;Lo;0;L;;;;;N;;;;; -1218A;CUNEIFORM SIGN KA TIMES UMUM TIMES PA;Lo;0;L;;;;;N;;;;; -1218B;CUNEIFORM SIGN KA TIMES USH;Lo;0;L;;;;;N;;;;; -1218C;CUNEIFORM SIGN KA TIMES ZI;Lo;0;L;;;;;N;;;;; -1218D;CUNEIFORM SIGN KA2;Lo;0;L;;;;;N;;;;; -1218E;CUNEIFORM SIGN KA2 CROSSING KA2;Lo;0;L;;;;;N;;;;; -1218F;CUNEIFORM SIGN KAB;Lo;0;L;;;;;N;;;;; -12190;CUNEIFORM SIGN KAD2;Lo;0;L;;;;;N;;;;; -12191;CUNEIFORM SIGN KAD3;Lo;0;L;;;;;N;;;;; -12192;CUNEIFORM SIGN KAD4;Lo;0;L;;;;;N;;;;; -12193;CUNEIFORM SIGN KAD5;Lo;0;L;;;;;N;;;;; -12194;CUNEIFORM SIGN KAD5 OVER KAD5;Lo;0;L;;;;;N;;;;; -12195;CUNEIFORM SIGN KAK;Lo;0;L;;;;;N;;;;; -12196;CUNEIFORM SIGN KAK TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; -12197;CUNEIFORM SIGN KAL;Lo;0;L;;;;;N;;;;; -12198;CUNEIFORM SIGN KAL TIMES BAD;Lo;0;L;;;;;N;;;;; -12199;CUNEIFORM SIGN KAL CROSSING KAL;Lo;0;L;;;;;N;;;;; -1219A;CUNEIFORM SIGN KAM2;Lo;0;L;;;;;N;;;;; -1219B;CUNEIFORM SIGN KAM4;Lo;0;L;;;;;N;;;;; -1219C;CUNEIFORM SIGN KASKAL;Lo;0;L;;;;;N;;;;; -1219D;CUNEIFORM SIGN KASKAL LAGAB TIMES U OVER LAGAB TIMES U;Lo;0;L;;;;;N;;;;; -1219E;CUNEIFORM SIGN KASKAL OVER KASKAL LAGAB TIMES U OVER LAGAB TIMES U;Lo;0;L;;;;;N;;;;; -1219F;CUNEIFORM SIGN KESH2;Lo;0;L;;;;;N;;;;; -121A0;CUNEIFORM SIGN KI;Lo;0;L;;;;;N;;;;; -121A1;CUNEIFORM SIGN KI TIMES BAD;Lo;0;L;;;;;N;;;;; -121A2;CUNEIFORM SIGN KI TIMES U;Lo;0;L;;;;;N;;;;; -121A3;CUNEIFORM SIGN KI TIMES UD;Lo;0;L;;;;;N;;;;; -121A4;CUNEIFORM SIGN KID;Lo;0;L;;;;;N;;;;; -121A5;CUNEIFORM SIGN KIN;Lo;0;L;;;;;N;;;;; -121A6;CUNEIFORM SIGN KISAL;Lo;0;L;;;;;N;;;;; -121A7;CUNEIFORM SIGN KISH;Lo;0;L;;;;;N;;;;; -121A8;CUNEIFORM SIGN KISIM5;Lo;0;L;;;;;N;;;;; -121A9;CUNEIFORM SIGN KISIM5 OVER KISIM5;Lo;0;L;;;;;N;;;;; -121AA;CUNEIFORM SIGN KU;Lo;0;L;;;;;N;;;;; -121AB;CUNEIFORM SIGN KU OVER HI TIMES ASH2 KU OVER HI TIMES ASH2;Lo;0;L;;;;;N;;;;; -121AC;CUNEIFORM SIGN KU3;Lo;0;L;;;;;N;;;;; -121AD;CUNEIFORM SIGN KU4;Lo;0;L;;;;;N;;;;; -121AE;CUNEIFORM SIGN KU4 VARIANT FORM;Lo;0;L;;;;;N;;;;; -121AF;CUNEIFORM SIGN KU7;Lo;0;L;;;;;N;;;;; -121B0;CUNEIFORM SIGN KUL;Lo;0;L;;;;;N;;;;; -121B1;CUNEIFORM SIGN KUL GUNU;Lo;0;L;;;;;N;;;;; -121B2;CUNEIFORM SIGN KUN;Lo;0;L;;;;;N;;;;; -121B3;CUNEIFORM SIGN KUR;Lo;0;L;;;;;N;;;;; -121B4;CUNEIFORM SIGN KUR OPPOSING KUR;Lo;0;L;;;;;N;;;;; -121B5;CUNEIFORM SIGN KUSHU2;Lo;0;L;;;;;N;;;;; -121B6;CUNEIFORM SIGN KWU318;Lo;0;L;;;;;N;;;;; -121B7;CUNEIFORM SIGN LA;Lo;0;L;;;;;N;;;;; -121B8;CUNEIFORM SIGN LAGAB;Lo;0;L;;;;;N;;;;; -121B9;CUNEIFORM SIGN LAGAB TIMES A;Lo;0;L;;;;;N;;;;; -121BA;CUNEIFORM SIGN LAGAB TIMES A PLUS DA PLUS HA;Lo;0;L;;;;;N;;;;; -121BB;CUNEIFORM SIGN LAGAB TIMES A PLUS GAR;Lo;0;L;;;;;N;;;;; -121BC;CUNEIFORM SIGN LAGAB TIMES A PLUS LAL;Lo;0;L;;;;;N;;;;; -121BD;CUNEIFORM SIGN LAGAB TIMES AL;Lo;0;L;;;;;N;;;;; -121BE;CUNEIFORM SIGN LAGAB TIMES AN;Lo;0;L;;;;;N;;;;; -121BF;CUNEIFORM SIGN LAGAB TIMES ASH ZIDA TENU;Lo;0;L;;;;;N;;;;; -121C0;CUNEIFORM SIGN LAGAB TIMES BAD;Lo;0;L;;;;;N;;;;; -121C1;CUNEIFORM SIGN LAGAB TIMES BI;Lo;0;L;;;;;N;;;;; -121C2;CUNEIFORM SIGN LAGAB TIMES DAR;Lo;0;L;;;;;N;;;;; -121C3;CUNEIFORM SIGN LAGAB TIMES EN;Lo;0;L;;;;;N;;;;; -121C4;CUNEIFORM SIGN LAGAB TIMES GA;Lo;0;L;;;;;N;;;;; -121C5;CUNEIFORM SIGN LAGAB TIMES GAR;Lo;0;L;;;;;N;;;;; -121C6;CUNEIFORM SIGN LAGAB TIMES GUD;Lo;0;L;;;;;N;;;;; -121C7;CUNEIFORM SIGN LAGAB TIMES GUD PLUS GUD;Lo;0;L;;;;;N;;;;; -121C8;CUNEIFORM SIGN LAGAB TIMES HA;Lo;0;L;;;;;N;;;;; -121C9;CUNEIFORM SIGN LAGAB TIMES HAL;Lo;0;L;;;;;N;;;;; -121CA;CUNEIFORM SIGN LAGAB TIMES HI TIMES NUN;Lo;0;L;;;;;N;;;;; -121CB;CUNEIFORM SIGN LAGAB TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; -121CC;CUNEIFORM SIGN LAGAB TIMES IM;Lo;0;L;;;;;N;;;;; -121CD;CUNEIFORM SIGN LAGAB TIMES IM PLUS HA;Lo;0;L;;;;;N;;;;; -121CE;CUNEIFORM SIGN LAGAB TIMES IM PLUS LU;Lo;0;L;;;;;N;;;;; -121CF;CUNEIFORM SIGN LAGAB TIMES KI;Lo;0;L;;;;;N;;;;; -121D0;CUNEIFORM SIGN LAGAB TIMES KIN;Lo;0;L;;;;;N;;;;; -121D1;CUNEIFORM SIGN LAGAB TIMES KU3;Lo;0;L;;;;;N;;;;; -121D2;CUNEIFORM SIGN LAGAB TIMES KUL;Lo;0;L;;;;;N;;;;; -121D3;CUNEIFORM SIGN LAGAB TIMES KUL PLUS HI PLUS A;Lo;0;L;;;;;N;;;;; -121D4;CUNEIFORM SIGN LAGAB TIMES LAGAB;Lo;0;L;;;;;N;;;;; -121D5;CUNEIFORM SIGN LAGAB TIMES LISH;Lo;0;L;;;;;N;;;;; -121D6;CUNEIFORM SIGN LAGAB TIMES LU;Lo;0;L;;;;;N;;;;; -121D7;CUNEIFORM SIGN LAGAB TIMES LUL;Lo;0;L;;;;;N;;;;; -121D8;CUNEIFORM SIGN LAGAB TIMES ME;Lo;0;L;;;;;N;;;;; -121D9;CUNEIFORM SIGN LAGAB TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;; -121DA;CUNEIFORM SIGN LAGAB TIMES MUSH;Lo;0;L;;;;;N;;;;; -121DB;CUNEIFORM SIGN LAGAB TIMES NE;Lo;0;L;;;;;N;;;;; -121DC;CUNEIFORM SIGN LAGAB TIMES SHE PLUS SUM;Lo;0;L;;;;;N;;;;; -121DD;CUNEIFORM SIGN LAGAB TIMES SHITA PLUS GISH PLUS ERIN2;Lo;0;L;;;;;N;;;;; -121DE;CUNEIFORM SIGN LAGAB TIMES SHITA PLUS GISH TENU;Lo;0;L;;;;;N;;;;; -121DF;CUNEIFORM SIGN LAGAB TIMES SHU2;Lo;0;L;;;;;N;;;;; -121E0;CUNEIFORM SIGN LAGAB TIMES SHU2 PLUS SHU2;Lo;0;L;;;;;N;;;;; -121E1;CUNEIFORM SIGN LAGAB TIMES SUM;Lo;0;L;;;;;N;;;;; -121E2;CUNEIFORM SIGN LAGAB TIMES TAG;Lo;0;L;;;;;N;;;;; -121E3;CUNEIFORM SIGN LAGAB TIMES TAK4;Lo;0;L;;;;;N;;;;; -121E4;CUNEIFORM SIGN LAGAB TIMES TE PLUS A PLUS SU PLUS NA;Lo;0;L;;;;;N;;;;; -121E5;CUNEIFORM SIGN LAGAB TIMES U;Lo;0;L;;;;;N;;;;; -121E6;CUNEIFORM SIGN LAGAB TIMES U PLUS A;Lo;0;L;;;;;N;;;;; -121E7;CUNEIFORM SIGN LAGAB TIMES U PLUS U PLUS U;Lo;0;L;;;;;N;;;;; -121E8;CUNEIFORM SIGN LAGAB TIMES U2 PLUS ASH;Lo;0;L;;;;;N;;;;; -121E9;CUNEIFORM SIGN LAGAB TIMES UD;Lo;0;L;;;;;N;;;;; -121EA;CUNEIFORM SIGN LAGAB TIMES USH;Lo;0;L;;;;;N;;;;; -121EB;CUNEIFORM SIGN LAGAB SQUARED;Lo;0;L;;;;;N;;;;; -121EC;CUNEIFORM SIGN LAGAR;Lo;0;L;;;;;N;;;;; -121ED;CUNEIFORM SIGN LAGAR TIMES SHE;Lo;0;L;;;;;N;;;;; -121EE;CUNEIFORM SIGN LAGAR TIMES SHE PLUS SUM;Lo;0;L;;;;;N;;;;; -121EF;CUNEIFORM SIGN LAGAR GUNU;Lo;0;L;;;;;N;;;;; -121F0;CUNEIFORM SIGN LAGAR GUNU OVER LAGAR GUNU SHE;Lo;0;L;;;;;N;;;;; -121F1;CUNEIFORM SIGN LAHSHU;Lo;0;L;;;;;N;;;;; -121F2;CUNEIFORM SIGN LAL;Lo;0;L;;;;;N;;;;; -121F3;CUNEIFORM SIGN LAL TIMES LAL;Lo;0;L;;;;;N;;;;; -121F4;CUNEIFORM SIGN LAM;Lo;0;L;;;;;N;;;;; -121F5;CUNEIFORM SIGN LAM TIMES KUR;Lo;0;L;;;;;N;;;;; -121F6;CUNEIFORM SIGN LAM TIMES KUR PLUS RU;Lo;0;L;;;;;N;;;;; -121F7;CUNEIFORM SIGN LI;Lo;0;L;;;;;N;;;;; -121F8;CUNEIFORM SIGN LIL;Lo;0;L;;;;;N;;;;; -121F9;CUNEIFORM SIGN LIMMU2;Lo;0;L;;;;;N;;;;; -121FA;CUNEIFORM SIGN LISH;Lo;0;L;;;;;N;;;;; -121FB;CUNEIFORM SIGN LU;Lo;0;L;;;;;N;;;;; -121FC;CUNEIFORM SIGN LU TIMES BAD;Lo;0;L;;;;;N;;;;; -121FD;CUNEIFORM SIGN LU2;Lo;0;L;;;;;N;;;;; -121FE;CUNEIFORM SIGN LU2 TIMES AL;Lo;0;L;;;;;N;;;;; -121FF;CUNEIFORM SIGN LU2 TIMES BAD;Lo;0;L;;;;;N;;;;; -12200;CUNEIFORM SIGN LU2 TIMES ESH2;Lo;0;L;;;;;N;;;;; -12201;CUNEIFORM SIGN LU2 TIMES ESH2 TENU;Lo;0;L;;;;;N;;;;; -12202;CUNEIFORM SIGN LU2 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; -12203;CUNEIFORM SIGN LU2 TIMES HI TIMES BAD;Lo;0;L;;;;;N;;;;; -12204;CUNEIFORM SIGN LU2 TIMES IM;Lo;0;L;;;;;N;;;;; -12205;CUNEIFORM SIGN LU2 TIMES KAD2;Lo;0;L;;;;;N;;;;; -12206;CUNEIFORM SIGN LU2 TIMES KAD3;Lo;0;L;;;;;N;;;;; -12207;CUNEIFORM SIGN LU2 TIMES KAD3 PLUS ASH;Lo;0;L;;;;;N;;;;; -12208;CUNEIFORM SIGN LU2 TIMES KI;Lo;0;L;;;;;N;;;;; -12209;CUNEIFORM SIGN LU2 TIMES LA PLUS ASH;Lo;0;L;;;;;N;;;;; -1220A;CUNEIFORM SIGN LU2 TIMES LAGAB;Lo;0;L;;;;;N;;;;; -1220B;CUNEIFORM SIGN LU2 TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;; -1220C;CUNEIFORM SIGN LU2 TIMES NE;Lo;0;L;;;;;N;;;;; -1220D;CUNEIFORM SIGN LU2 TIMES NU;Lo;0;L;;;;;N;;;;; -1220E;CUNEIFORM SIGN LU2 TIMES SI PLUS ASH;Lo;0;L;;;;;N;;;;; -1220F;CUNEIFORM SIGN LU2 TIMES SIK2 PLUS BU;Lo;0;L;;;;;N;;;;; -12210;CUNEIFORM SIGN LU2 TIMES TUG2;Lo;0;L;;;;;N;;;;; -12211;CUNEIFORM SIGN LU2 TENU;Lo;0;L;;;;;N;;;;; -12212;CUNEIFORM SIGN LU2 CROSSING LU2;Lo;0;L;;;;;N;;;;; -12213;CUNEIFORM SIGN LU2 OPPOSING LU2;Lo;0;L;;;;;N;;;;; -12214;CUNEIFORM SIGN LU2 SQUARED;Lo;0;L;;;;;N;;;;; -12215;CUNEIFORM SIGN LU2 SHESHIG;Lo;0;L;;;;;N;;;;; -12216;CUNEIFORM SIGN LU3;Lo;0;L;;;;;N;;;;; -12217;CUNEIFORM SIGN LUGAL;Lo;0;L;;;;;N;;;;; -12218;CUNEIFORM SIGN LUGAL OVER LUGAL;Lo;0;L;;;;;N;;;;; -12219;CUNEIFORM SIGN LUGAL OPPOSING LUGAL;Lo;0;L;;;;;N;;;;; -1221A;CUNEIFORM SIGN LUGAL SHESHIG;Lo;0;L;;;;;N;;;;; -1221B;CUNEIFORM SIGN LUH;Lo;0;L;;;;;N;;;;; -1221C;CUNEIFORM SIGN LUL;Lo;0;L;;;;;N;;;;; -1221D;CUNEIFORM SIGN LUM;Lo;0;L;;;;;N;;;;; -1221E;CUNEIFORM SIGN LUM OVER LUM;Lo;0;L;;;;;N;;;;; -1221F;CUNEIFORM SIGN LUM OVER LUM GAR OVER GAR;Lo;0;L;;;;;N;;;;; -12220;CUNEIFORM SIGN MA;Lo;0;L;;;;;N;;;;; -12221;CUNEIFORM SIGN MA TIMES TAK4;Lo;0;L;;;;;N;;;;; -12222;CUNEIFORM SIGN MA GUNU;Lo;0;L;;;;;N;;;;; -12223;CUNEIFORM SIGN MA2;Lo;0;L;;;;;N;;;;; -12224;CUNEIFORM SIGN MAH;Lo;0;L;;;;;N;;;;; -12225;CUNEIFORM SIGN MAR;Lo;0;L;;;;;N;;;;; -12226;CUNEIFORM SIGN MASH;Lo;0;L;;;;;N;;;;; -12227;CUNEIFORM SIGN MASH2;Lo;0;L;;;;;N;;;;; -12228;CUNEIFORM SIGN ME;Lo;0;L;;;;;N;;;;; -12229;CUNEIFORM SIGN MES;Lo;0;L;;;;;N;;;;; -1222A;CUNEIFORM SIGN MI;Lo;0;L;;;;;N;;;;; -1222B;CUNEIFORM SIGN MIN;Lo;0;L;;;;;N;;;;; -1222C;CUNEIFORM SIGN MU;Lo;0;L;;;;;N;;;;; -1222D;CUNEIFORM SIGN MU OVER MU;Lo;0;L;;;;;N;;;;; -1222E;CUNEIFORM SIGN MUG;Lo;0;L;;;;;N;;;;; -1222F;CUNEIFORM SIGN MUG GUNU;Lo;0;L;;;;;N;;;;; -12230;CUNEIFORM SIGN MUNSUB;Lo;0;L;;;;;N;;;;; -12231;CUNEIFORM SIGN MURGU2;Lo;0;L;;;;;N;;;;; -12232;CUNEIFORM SIGN MUSH;Lo;0;L;;;;;N;;;;; -12233;CUNEIFORM SIGN MUSH TIMES A;Lo;0;L;;;;;N;;;;; -12234;CUNEIFORM SIGN MUSH TIMES KUR;Lo;0;L;;;;;N;;;;; -12235;CUNEIFORM SIGN MUSH TIMES ZA;Lo;0;L;;;;;N;;;;; -12236;CUNEIFORM SIGN MUSH OVER MUSH;Lo;0;L;;;;;N;;;;; -12237;CUNEIFORM SIGN MUSH OVER MUSH TIMES A PLUS NA;Lo;0;L;;;;;N;;;;; -12238;CUNEIFORM SIGN MUSH CROSSING MUSH;Lo;0;L;;;;;N;;;;; -12239;CUNEIFORM SIGN MUSH3;Lo;0;L;;;;;N;;;;; -1223A;CUNEIFORM SIGN MUSH3 TIMES A;Lo;0;L;;;;;N;;;;; -1223B;CUNEIFORM SIGN MUSH3 TIMES A PLUS DI;Lo;0;L;;;;;N;;;;; -1223C;CUNEIFORM SIGN MUSH3 TIMES DI;Lo;0;L;;;;;N;;;;; -1223D;CUNEIFORM SIGN MUSH3 GUNU;Lo;0;L;;;;;N;;;;; -1223E;CUNEIFORM SIGN NA;Lo;0;L;;;;;N;;;;; -1223F;CUNEIFORM SIGN NA2;Lo;0;L;;;;;N;;;;; -12240;CUNEIFORM SIGN NAGA;Lo;0;L;;;;;N;;;;; -12241;CUNEIFORM SIGN NAGA INVERTED;Lo;0;L;;;;;N;;;;; -12242;CUNEIFORM SIGN NAGA TIMES SHU TENU;Lo;0;L;;;;;N;;;;; -12243;CUNEIFORM SIGN NAGA OPPOSING NAGA;Lo;0;L;;;;;N;;;;; -12244;CUNEIFORM SIGN NAGAR;Lo;0;L;;;;;N;;;;; -12245;CUNEIFORM SIGN NAM NUTILLU;Lo;0;L;;;;;N;;;;; -12246;CUNEIFORM SIGN NAM;Lo;0;L;;;;;N;;;;; -12247;CUNEIFORM SIGN NAM2;Lo;0;L;;;;;N;;;;; -12248;CUNEIFORM SIGN NE;Lo;0;L;;;;;N;;;;; -12249;CUNEIFORM SIGN NE TIMES A;Lo;0;L;;;;;N;;;;; -1224A;CUNEIFORM SIGN NE TIMES UD;Lo;0;L;;;;;N;;;;; -1224B;CUNEIFORM SIGN NE SHESHIG;Lo;0;L;;;;;N;;;;; -1224C;CUNEIFORM SIGN NI;Lo;0;L;;;;;N;;;;; -1224D;CUNEIFORM SIGN NI TIMES E;Lo;0;L;;;;;N;;;;; -1224E;CUNEIFORM SIGN NI2;Lo;0;L;;;;;N;;;;; -1224F;CUNEIFORM SIGN NIM;Lo;0;L;;;;;N;;;;; -12250;CUNEIFORM SIGN NIM TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; -12251;CUNEIFORM SIGN NIM TIMES GAR PLUS GAN2 TENU;Lo;0;L;;;;;N;;;;; -12252;CUNEIFORM SIGN NINDA2;Lo;0;L;;;;;N;;;;; -12253;CUNEIFORM SIGN NINDA2 TIMES AN;Lo;0;L;;;;;N;;;;; -12254;CUNEIFORM SIGN NINDA2 TIMES ASH;Lo;0;L;;;;;N;;;;; -12255;CUNEIFORM SIGN NINDA2 TIMES ASH PLUS ASH;Lo;0;L;;;;;N;;;;; -12256;CUNEIFORM SIGN NINDA2 TIMES GUD;Lo;0;L;;;;;N;;;;; -12257;CUNEIFORM SIGN NINDA2 TIMES ME PLUS GAN2 TENU;Lo;0;L;;;;;N;;;;; -12258;CUNEIFORM SIGN NINDA2 TIMES NE;Lo;0;L;;;;;N;;;;; -12259;CUNEIFORM SIGN NINDA2 TIMES NUN;Lo;0;L;;;;;N;;;;; -1225A;CUNEIFORM SIGN NINDA2 TIMES SHE;Lo;0;L;;;;;N;;;;; -1225B;CUNEIFORM SIGN NINDA2 TIMES SHE PLUS A AN;Lo;0;L;;;;;N;;;;; -1225C;CUNEIFORM SIGN NINDA2 TIMES SHE PLUS ASH;Lo;0;L;;;;;N;;;;; -1225D;CUNEIFORM SIGN NINDA2 TIMES SHE PLUS ASH PLUS ASH;Lo;0;L;;;;;N;;;;; -1225E;CUNEIFORM SIGN NINDA2 TIMES U2 PLUS ASH;Lo;0;L;;;;;N;;;;; -1225F;CUNEIFORM SIGN NINDA2 TIMES USH;Lo;0;L;;;;;N;;;;; -12260;CUNEIFORM SIGN NISAG;Lo;0;L;;;;;N;;;;; -12261;CUNEIFORM SIGN NU;Lo;0;L;;;;;N;;;;; -12262;CUNEIFORM SIGN NU11;Lo;0;L;;;;;N;;;;; -12263;CUNEIFORM SIGN NUN;Lo;0;L;;;;;N;;;;; -12264;CUNEIFORM SIGN NUN LAGAR TIMES GAR;Lo;0;L;;;;;N;;;;; -12265;CUNEIFORM SIGN NUN LAGAR TIMES MASH;Lo;0;L;;;;;N;;;;; -12266;CUNEIFORM SIGN NUN LAGAR TIMES SAL;Lo;0;L;;;;;N;;;;; -12267;CUNEIFORM SIGN NUN LAGAR TIMES SAL OVER NUN LAGAR TIMES SAL;Lo;0;L;;;;;N;;;;; -12268;CUNEIFORM SIGN NUN LAGAR TIMES USH;Lo;0;L;;;;;N;;;;; -12269;CUNEIFORM SIGN NUN TENU;Lo;0;L;;;;;N;;;;; -1226A;CUNEIFORM SIGN NUN OVER NUN;Lo;0;L;;;;;N;;;;; -1226B;CUNEIFORM SIGN NUN CROSSING NUN;Lo;0;L;;;;;N;;;;; -1226C;CUNEIFORM SIGN NUN CROSSING NUN LAGAR OVER LAGAR;Lo;0;L;;;;;N;;;;; -1226D;CUNEIFORM SIGN NUNUZ;Lo;0;L;;;;;N;;;;; -1226E;CUNEIFORM SIGN NUNUZ AB2 TIMES ASHGAB;Lo;0;L;;;;;N;;;;; -1226F;CUNEIFORM SIGN NUNUZ AB2 TIMES BI;Lo;0;L;;;;;N;;;;; -12270;CUNEIFORM SIGN NUNUZ AB2 TIMES DUG;Lo;0;L;;;;;N;;;;; -12271;CUNEIFORM SIGN NUNUZ AB2 TIMES GUD;Lo;0;L;;;;;N;;;;; -12272;CUNEIFORM SIGN NUNUZ AB2 TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; -12273;CUNEIFORM SIGN NUNUZ AB2 TIMES KAD3;Lo;0;L;;;;;N;;;;; -12274;CUNEIFORM SIGN NUNUZ AB2 TIMES LA;Lo;0;L;;;;;N;;;;; -12275;CUNEIFORM SIGN NUNUZ AB2 TIMES NE;Lo;0;L;;;;;N;;;;; -12276;CUNEIFORM SIGN NUNUZ AB2 TIMES SILA3;Lo;0;L;;;;;N;;;;; -12277;CUNEIFORM SIGN NUNUZ AB2 TIMES U2;Lo;0;L;;;;;N;;;;; -12278;CUNEIFORM SIGN NUNUZ KISIM5 TIMES BI;Lo;0;L;;;;;N;;;;; -12279;CUNEIFORM SIGN NUNUZ KISIM5 TIMES BI U;Lo;0;L;;;;;N;;;;; -1227A;CUNEIFORM SIGN PA;Lo;0;L;;;;;N;;;;; -1227B;CUNEIFORM SIGN PAD;Lo;0;L;;;;;N;;;;; -1227C;CUNEIFORM SIGN PAN;Lo;0;L;;;;;N;;;;; -1227D;CUNEIFORM SIGN PAP;Lo;0;L;;;;;N;;;;; -1227E;CUNEIFORM SIGN PESH2;Lo;0;L;;;;;N;;;;; -1227F;CUNEIFORM SIGN PI;Lo;0;L;;;;;N;;;;; -12280;CUNEIFORM SIGN PI TIMES A;Lo;0;L;;;;;N;;;;; -12281;CUNEIFORM SIGN PI TIMES AB;Lo;0;L;;;;;N;;;;; -12282;CUNEIFORM SIGN PI TIMES BI;Lo;0;L;;;;;N;;;;; -12283;CUNEIFORM SIGN PI TIMES BU;Lo;0;L;;;;;N;;;;; -12284;CUNEIFORM SIGN PI TIMES E;Lo;0;L;;;;;N;;;;; -12285;CUNEIFORM SIGN PI TIMES I;Lo;0;L;;;;;N;;;;; -12286;CUNEIFORM SIGN PI TIMES IB;Lo;0;L;;;;;N;;;;; -12287;CUNEIFORM SIGN PI TIMES U;Lo;0;L;;;;;N;;;;; -12288;CUNEIFORM SIGN PI TIMES U2;Lo;0;L;;;;;N;;;;; -12289;CUNEIFORM SIGN PI CROSSING PI;Lo;0;L;;;;;N;;;;; -1228A;CUNEIFORM SIGN PIRIG;Lo;0;L;;;;;N;;;;; -1228B;CUNEIFORM SIGN PIRIG TIMES KAL;Lo;0;L;;;;;N;;;;; -1228C;CUNEIFORM SIGN PIRIG TIMES UD;Lo;0;L;;;;;N;;;;; -1228D;CUNEIFORM SIGN PIRIG TIMES ZA;Lo;0;L;;;;;N;;;;; -1228E;CUNEIFORM SIGN PIRIG OPPOSING PIRIG;Lo;0;L;;;;;N;;;;; -1228F;CUNEIFORM SIGN RA;Lo;0;L;;;;;N;;;;; -12290;CUNEIFORM SIGN RAB;Lo;0;L;;;;;N;;;;; -12291;CUNEIFORM SIGN RI;Lo;0;L;;;;;N;;;;; -12292;CUNEIFORM SIGN RU;Lo;0;L;;;;;N;;;;; -12293;CUNEIFORM SIGN SA;Lo;0;L;;;;;N;;;;; -12294;CUNEIFORM SIGN SAG NUTILLU;Lo;0;L;;;;;N;;;;; -12295;CUNEIFORM SIGN SAG;Lo;0;L;;;;;N;;;;; -12296;CUNEIFORM SIGN SAG TIMES A;Lo;0;L;;;;;N;;;;; -12297;CUNEIFORM SIGN SAG TIMES DU;Lo;0;L;;;;;N;;;;; -12298;CUNEIFORM SIGN SAG TIMES DUB;Lo;0;L;;;;;N;;;;; -12299;CUNEIFORM SIGN SAG TIMES HA;Lo;0;L;;;;;N;;;;; -1229A;CUNEIFORM SIGN SAG TIMES KAK;Lo;0;L;;;;;N;;;;; -1229B;CUNEIFORM SIGN SAG TIMES KUR;Lo;0;L;;;;;N;;;;; -1229C;CUNEIFORM SIGN SAG TIMES LUM;Lo;0;L;;;;;N;;;;; -1229D;CUNEIFORM SIGN SAG TIMES MI;Lo;0;L;;;;;N;;;;; -1229E;CUNEIFORM SIGN SAG TIMES NUN;Lo;0;L;;;;;N;;;;; -1229F;CUNEIFORM SIGN SAG TIMES SAL;Lo;0;L;;;;;N;;;;; -122A0;CUNEIFORM SIGN SAG TIMES SHID;Lo;0;L;;;;;N;;;;; -122A1;CUNEIFORM SIGN SAG TIMES TAB;Lo;0;L;;;;;N;;;;; -122A2;CUNEIFORM SIGN SAG TIMES U2;Lo;0;L;;;;;N;;;;; -122A3;CUNEIFORM SIGN SAG TIMES UB;Lo;0;L;;;;;N;;;;; -122A4;CUNEIFORM SIGN SAG TIMES UM;Lo;0;L;;;;;N;;;;; -122A5;CUNEIFORM SIGN SAG TIMES UR;Lo;0;L;;;;;N;;;;; -122A6;CUNEIFORM SIGN SAG TIMES USH;Lo;0;L;;;;;N;;;;; -122A7;CUNEIFORM SIGN SAG OVER SAG;Lo;0;L;;;;;N;;;;; -122A8;CUNEIFORM SIGN SAG GUNU;Lo;0;L;;;;;N;;;;; -122A9;CUNEIFORM SIGN SAL;Lo;0;L;;;;;N;;;;; -122AA;CUNEIFORM SIGN SAL LAGAB TIMES ASH2;Lo;0;L;;;;;N;;;;; -122AB;CUNEIFORM SIGN SANGA2;Lo;0;L;;;;;N;;;;; -122AC;CUNEIFORM SIGN SAR;Lo;0;L;;;;;N;;;;; -122AD;CUNEIFORM SIGN SHA;Lo;0;L;;;;;N;;;;; -122AE;CUNEIFORM SIGN SHA3;Lo;0;L;;;;;N;;;;; -122AF;CUNEIFORM SIGN SHA3 TIMES A;Lo;0;L;;;;;N;;;;; -122B0;CUNEIFORM SIGN SHA3 TIMES BAD;Lo;0;L;;;;;N;;;;; -122B1;CUNEIFORM SIGN SHA3 TIMES GISH;Lo;0;L;;;;;N;;;;; -122B2;CUNEIFORM SIGN SHA3 TIMES NE;Lo;0;L;;;;;N;;;;; -122B3;CUNEIFORM SIGN SHA3 TIMES SHU2;Lo;0;L;;;;;N;;;;; -122B4;CUNEIFORM SIGN SHA3 TIMES TUR;Lo;0;L;;;;;N;;;;; -122B5;CUNEIFORM SIGN SHA3 TIMES U;Lo;0;L;;;;;N;;;;; -122B6;CUNEIFORM SIGN SHA3 TIMES U PLUS A;Lo;0;L;;;;;N;;;;; -122B7;CUNEIFORM SIGN SHA6;Lo;0;L;;;;;N;;;;; -122B8;CUNEIFORM SIGN SHAB6;Lo;0;L;;;;;N;;;;; -122B9;CUNEIFORM SIGN SHAR2;Lo;0;L;;;;;N;;;;; -122BA;CUNEIFORM SIGN SHE;Lo;0;L;;;;;N;;;;; -122BB;CUNEIFORM SIGN SHE HU;Lo;0;L;;;;;N;;;;; -122BC;CUNEIFORM SIGN SHE OVER SHE GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;; -122BD;CUNEIFORM SIGN SHE OVER SHE TAB OVER TAB GAR OVER GAR;Lo;0;L;;;;;N;;;;; -122BE;CUNEIFORM SIGN SHEG9;Lo;0;L;;;;;N;;;;; -122BF;CUNEIFORM SIGN SHEN;Lo;0;L;;;;;N;;;;; -122C0;CUNEIFORM SIGN SHESH;Lo;0;L;;;;;N;;;;; -122C1;CUNEIFORM SIGN SHESH2;Lo;0;L;;;;;N;;;;; -122C2;CUNEIFORM SIGN SHESHLAM;Lo;0;L;;;;;N;;;;; -122C3;CUNEIFORM SIGN SHID;Lo;0;L;;;;;N;;;;; -122C4;CUNEIFORM SIGN SHID TIMES A;Lo;0;L;;;;;N;;;;; -122C5;CUNEIFORM SIGN SHID TIMES IM;Lo;0;L;;;;;N;;;;; -122C6;CUNEIFORM SIGN SHIM;Lo;0;L;;;;;N;;;;; -122C7;CUNEIFORM SIGN SHIM TIMES A;Lo;0;L;;;;;N;;;;; -122C8;CUNEIFORM SIGN SHIM TIMES BAL;Lo;0;L;;;;;N;;;;; -122C9;CUNEIFORM SIGN SHIM TIMES BULUG;Lo;0;L;;;;;N;;;;; -122CA;CUNEIFORM SIGN SHIM TIMES DIN;Lo;0;L;;;;;N;;;;; -122CB;CUNEIFORM SIGN SHIM TIMES GAR;Lo;0;L;;;;;N;;;;; -122CC;CUNEIFORM SIGN SHIM TIMES IGI;Lo;0;L;;;;;N;;;;; -122CD;CUNEIFORM SIGN SHIM TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; -122CE;CUNEIFORM SIGN SHIM TIMES KUSHU2;Lo;0;L;;;;;N;;;;; -122CF;CUNEIFORM SIGN SHIM TIMES LUL;Lo;0;L;;;;;N;;;;; -122D0;CUNEIFORM SIGN SHIM TIMES MUG;Lo;0;L;;;;;N;;;;; -122D1;CUNEIFORM SIGN SHIM TIMES SAL;Lo;0;L;;;;;N;;;;; -122D2;CUNEIFORM SIGN SHINIG;Lo;0;L;;;;;N;;;;; -122D3;CUNEIFORM SIGN SHIR;Lo;0;L;;;;;N;;;;; -122D4;CUNEIFORM SIGN SHIR TENU;Lo;0;L;;;;;N;;;;; -122D5;CUNEIFORM SIGN SHIR OVER SHIR BUR OVER BUR;Lo;0;L;;;;;N;;;;; -122D6;CUNEIFORM SIGN SHITA;Lo;0;L;;;;;N;;;;; -122D7;CUNEIFORM SIGN SHU;Lo;0;L;;;;;N;;;;; -122D8;CUNEIFORM SIGN SHU OVER INVERTED SHU;Lo;0;L;;;;;N;;;;; -122D9;CUNEIFORM SIGN SHU2;Lo;0;L;;;;;N;;;;; -122DA;CUNEIFORM SIGN SHUBUR;Lo;0;L;;;;;N;;;;; -122DB;CUNEIFORM SIGN SI;Lo;0;L;;;;;N;;;;; -122DC;CUNEIFORM SIGN SI GUNU;Lo;0;L;;;;;N;;;;; -122DD;CUNEIFORM SIGN SIG;Lo;0;L;;;;;N;;;;; -122DE;CUNEIFORM SIGN SIG4;Lo;0;L;;;;;N;;;;; -122DF;CUNEIFORM SIGN SIG4 OVER SIG4 SHU2;Lo;0;L;;;;;N;;;;; -122E0;CUNEIFORM SIGN SIK2;Lo;0;L;;;;;N;;;;; -122E1;CUNEIFORM SIGN SILA3;Lo;0;L;;;;;N;;;;; -122E2;CUNEIFORM SIGN SU;Lo;0;L;;;;;N;;;;; -122E3;CUNEIFORM SIGN SU OVER SU;Lo;0;L;;;;;N;;;;; -122E4;CUNEIFORM SIGN SUD;Lo;0;L;;;;;N;;;;; -122E5;CUNEIFORM SIGN SUD2;Lo;0;L;;;;;N;;;;; -122E6;CUNEIFORM SIGN SUHUR;Lo;0;L;;;;;N;;;;; -122E7;CUNEIFORM SIGN SUM;Lo;0;L;;;;;N;;;;; -122E8;CUNEIFORM SIGN SUMASH;Lo;0;L;;;;;N;;;;; -122E9;CUNEIFORM SIGN SUR;Lo;0;L;;;;;N;;;;; -122EA;CUNEIFORM SIGN SUR9;Lo;0;L;;;;;N;;;;; -122EB;CUNEIFORM SIGN TA;Lo;0;L;;;;;N;;;;; -122EC;CUNEIFORM SIGN TA ASTERISK;Lo;0;L;;;;;N;;;;; -122ED;CUNEIFORM SIGN TA TIMES HI;Lo;0;L;;;;;N;;;;; -122EE;CUNEIFORM SIGN TA TIMES MI;Lo;0;L;;;;;N;;;;; -122EF;CUNEIFORM SIGN TA GUNU;Lo;0;L;;;;;N;;;;; -122F0;CUNEIFORM SIGN TAB;Lo;0;L;;;;;N;;;;; -122F1;CUNEIFORM SIGN TAB OVER TAB NI OVER NI DISH OVER DISH;Lo;0;L;;;;;N;;;;; -122F2;CUNEIFORM SIGN TAB SQUARED;Lo;0;L;;;;;N;;;;; -122F3;CUNEIFORM SIGN TAG;Lo;0;L;;;;;N;;;;; -122F4;CUNEIFORM SIGN TAG TIMES BI;Lo;0;L;;;;;N;;;;; -122F5;CUNEIFORM SIGN TAG TIMES GUD;Lo;0;L;;;;;N;;;;; -122F6;CUNEIFORM SIGN TAG TIMES SHE;Lo;0;L;;;;;N;;;;; -122F7;CUNEIFORM SIGN TAG TIMES SHU;Lo;0;L;;;;;N;;;;; -122F8;CUNEIFORM SIGN TAG TIMES TUG2;Lo;0;L;;;;;N;;;;; -122F9;CUNEIFORM SIGN TAG TIMES UD;Lo;0;L;;;;;N;;;;; -122FA;CUNEIFORM SIGN TAK4;Lo;0;L;;;;;N;;;;; -122FB;CUNEIFORM SIGN TAR;Lo;0;L;;;;;N;;;;; -122FC;CUNEIFORM SIGN TE;Lo;0;L;;;;;N;;;;; -122FD;CUNEIFORM SIGN TE GUNU;Lo;0;L;;;;;N;;;;; -122FE;CUNEIFORM SIGN TI;Lo;0;L;;;;;N;;;;; -122FF;CUNEIFORM SIGN TI TENU;Lo;0;L;;;;;N;;;;; -12300;CUNEIFORM SIGN TIL;Lo;0;L;;;;;N;;;;; -12301;CUNEIFORM SIGN TIR;Lo;0;L;;;;;N;;;;; -12302;CUNEIFORM SIGN TIR TIMES TAK4;Lo;0;L;;;;;N;;;;; -12303;CUNEIFORM SIGN TIR OVER TIR;Lo;0;L;;;;;N;;;;; -12304;CUNEIFORM SIGN TIR OVER TIR GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;; -12305;CUNEIFORM SIGN TU;Lo;0;L;;;;;N;;;;; -12306;CUNEIFORM SIGN TUG2;Lo;0;L;;;;;N;;;;; -12307;CUNEIFORM SIGN TUK;Lo;0;L;;;;;N;;;;; -12308;CUNEIFORM SIGN TUM;Lo;0;L;;;;;N;;;;; -12309;CUNEIFORM SIGN TUR;Lo;0;L;;;;;N;;;;; -1230A;CUNEIFORM SIGN TUR OVER TUR ZA OVER ZA;Lo;0;L;;;;;N;;;;; -1230B;CUNEIFORM SIGN U;Lo;0;L;;;;;N;;;;; -1230C;CUNEIFORM SIGN U GUD;Lo;0;L;;;;;N;;;;; -1230D;CUNEIFORM SIGN U U U;Lo;0;L;;;;;N;;;;; -1230E;CUNEIFORM SIGN U OVER U PA OVER PA GAR OVER GAR;Lo;0;L;;;;;N;;;;; -1230F;CUNEIFORM SIGN U OVER U SUR OVER SUR;Lo;0;L;;;;;N;;;;; -12310;CUNEIFORM SIGN U OVER U U REVERSED OVER U REVERSED;Lo;0;L;;;;;N;;;;; -12311;CUNEIFORM SIGN U2;Lo;0;L;;;;;N;;;;; -12312;CUNEIFORM SIGN UB;Lo;0;L;;;;;N;;;;; -12313;CUNEIFORM SIGN UD;Lo;0;L;;;;;N;;;;; -12314;CUNEIFORM SIGN UD KUSHU2;Lo;0;L;;;;;N;;;;; -12315;CUNEIFORM SIGN UD TIMES BAD;Lo;0;L;;;;;N;;;;; -12316;CUNEIFORM SIGN UD TIMES MI;Lo;0;L;;;;;N;;;;; -12317;CUNEIFORM SIGN UD TIMES U PLUS U PLUS U;Lo;0;L;;;;;N;;;;; -12318;CUNEIFORM SIGN UD TIMES U PLUS U PLUS U GUNU;Lo;0;L;;;;;N;;;;; -12319;CUNEIFORM SIGN UD GUNU;Lo;0;L;;;;;N;;;;; -1231A;CUNEIFORM SIGN UD SHESHIG;Lo;0;L;;;;;N;;;;; -1231B;CUNEIFORM SIGN UD SHESHIG TIMES BAD;Lo;0;L;;;;;N;;;;; -1231C;CUNEIFORM SIGN UDUG;Lo;0;L;;;;;N;;;;; -1231D;CUNEIFORM SIGN UM;Lo;0;L;;;;;N;;;;; -1231E;CUNEIFORM SIGN UM TIMES LAGAB;Lo;0;L;;;;;N;;;;; -1231F;CUNEIFORM SIGN UM TIMES ME PLUS DA;Lo;0;L;;;;;N;;;;; -12320;CUNEIFORM SIGN UM TIMES SHA3;Lo;0;L;;;;;N;;;;; -12321;CUNEIFORM SIGN UM TIMES U;Lo;0;L;;;;;N;;;;; -12322;CUNEIFORM SIGN UMBIN;Lo;0;L;;;;;N;;;;; -12323;CUNEIFORM SIGN UMUM;Lo;0;L;;;;;N;;;;; -12324;CUNEIFORM SIGN UMUM TIMES KASKAL;Lo;0;L;;;;;N;;;;; -12325;CUNEIFORM SIGN UMUM TIMES PA;Lo;0;L;;;;;N;;;;; -12326;CUNEIFORM SIGN UN;Lo;0;L;;;;;N;;;;; -12327;CUNEIFORM SIGN UN GUNU;Lo;0;L;;;;;N;;;;; -12328;CUNEIFORM SIGN UR;Lo;0;L;;;;;N;;;;; -12329;CUNEIFORM SIGN UR CROSSING UR;Lo;0;L;;;;;N;;;;; -1232A;CUNEIFORM SIGN UR SHESHIG;Lo;0;L;;;;;N;;;;; -1232B;CUNEIFORM SIGN UR2;Lo;0;L;;;;;N;;;;; -1232C;CUNEIFORM SIGN UR2 TIMES A PLUS HA;Lo;0;L;;;;;N;;;;; -1232D;CUNEIFORM SIGN UR2 TIMES A PLUS NA;Lo;0;L;;;;;N;;;;; -1232E;CUNEIFORM SIGN UR2 TIMES AL;Lo;0;L;;;;;N;;;;; -1232F;CUNEIFORM SIGN UR2 TIMES HA;Lo;0;L;;;;;N;;;;; -12330;CUNEIFORM SIGN UR2 TIMES NUN;Lo;0;L;;;;;N;;;;; -12331;CUNEIFORM SIGN UR2 TIMES U2;Lo;0;L;;;;;N;;;;; -12332;CUNEIFORM SIGN UR2 TIMES U2 PLUS ASH;Lo;0;L;;;;;N;;;;; -12333;CUNEIFORM SIGN UR2 TIMES U2 PLUS BI;Lo;0;L;;;;;N;;;;; -12334;CUNEIFORM SIGN UR4;Lo;0;L;;;;;N;;;;; -12335;CUNEIFORM SIGN URI;Lo;0;L;;;;;N;;;;; -12336;CUNEIFORM SIGN URI3;Lo;0;L;;;;;N;;;;; -12337;CUNEIFORM SIGN URU;Lo;0;L;;;;;N;;;;; -12338;CUNEIFORM SIGN URU TIMES A;Lo;0;L;;;;;N;;;;; -12339;CUNEIFORM SIGN URU TIMES ASHGAB;Lo;0;L;;;;;N;;;;; -1233A;CUNEIFORM SIGN URU TIMES BAR;Lo;0;L;;;;;N;;;;; -1233B;CUNEIFORM SIGN URU TIMES DUN;Lo;0;L;;;;;N;;;;; -1233C;CUNEIFORM SIGN URU TIMES GA;Lo;0;L;;;;;N;;;;; -1233D;CUNEIFORM SIGN URU TIMES GAL;Lo;0;L;;;;;N;;;;; -1233E;CUNEIFORM SIGN URU TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; -1233F;CUNEIFORM SIGN URU TIMES GAR;Lo;0;L;;;;;N;;;;; -12340;CUNEIFORM SIGN URU TIMES GU;Lo;0;L;;;;;N;;;;; -12341;CUNEIFORM SIGN URU TIMES HA;Lo;0;L;;;;;N;;;;; -12342;CUNEIFORM SIGN URU TIMES IGI;Lo;0;L;;;;;N;;;;; -12343;CUNEIFORM SIGN URU TIMES IM;Lo;0;L;;;;;N;;;;; -12344;CUNEIFORM SIGN URU TIMES ISH;Lo;0;L;;;;;N;;;;; -12345;CUNEIFORM SIGN URU TIMES KI;Lo;0;L;;;;;N;;;;; -12346;CUNEIFORM SIGN URU TIMES LUM;Lo;0;L;;;;;N;;;;; -12347;CUNEIFORM SIGN URU TIMES MIN;Lo;0;L;;;;;N;;;;; -12348;CUNEIFORM SIGN URU TIMES PA;Lo;0;L;;;;;N;;;;; -12349;CUNEIFORM SIGN URU TIMES SHE;Lo;0;L;;;;;N;;;;; -1234A;CUNEIFORM SIGN URU TIMES SIG4;Lo;0;L;;;;;N;;;;; -1234B;CUNEIFORM SIGN URU TIMES TU;Lo;0;L;;;;;N;;;;; -1234C;CUNEIFORM SIGN URU TIMES U PLUS GUD;Lo;0;L;;;;;N;;;;; -1234D;CUNEIFORM SIGN URU TIMES UD;Lo;0;L;;;;;N;;;;; -1234E;CUNEIFORM SIGN URU TIMES URUDA;Lo;0;L;;;;;N;;;;; -1234F;CUNEIFORM SIGN URUDA;Lo;0;L;;;;;N;;;;; -12350;CUNEIFORM SIGN URUDA TIMES U;Lo;0;L;;;;;N;;;;; -12351;CUNEIFORM SIGN USH;Lo;0;L;;;;;N;;;;; -12352;CUNEIFORM SIGN USH TIMES A;Lo;0;L;;;;;N;;;;; -12353;CUNEIFORM SIGN USH TIMES KU;Lo;0;L;;;;;N;;;;; -12354;CUNEIFORM SIGN USH TIMES KUR;Lo;0;L;;;;;N;;;;; -12355;CUNEIFORM SIGN USH TIMES TAK4;Lo;0;L;;;;;N;;;;; -12356;CUNEIFORM SIGN USHX;Lo;0;L;;;;;N;;;;; -12357;CUNEIFORM SIGN USH2;Lo;0;L;;;;;N;;;;; -12358;CUNEIFORM SIGN USHUMX;Lo;0;L;;;;;N;;;;; -12359;CUNEIFORM SIGN UTUKI;Lo;0;L;;;;;N;;;;; -1235A;CUNEIFORM SIGN UZ3;Lo;0;L;;;;;N;;;;; -1235B;CUNEIFORM SIGN UZ3 TIMES KASKAL;Lo;0;L;;;;;N;;;;; -1235C;CUNEIFORM SIGN UZU;Lo;0;L;;;;;N;;;;; -1235D;CUNEIFORM SIGN ZA;Lo;0;L;;;;;N;;;;; -1235E;CUNEIFORM SIGN ZA TENU;Lo;0;L;;;;;N;;;;; -1235F;CUNEIFORM SIGN ZA SQUARED TIMES KUR;Lo;0;L;;;;;N;;;;; -12360;CUNEIFORM SIGN ZAG;Lo;0;L;;;;;N;;;;; -12361;CUNEIFORM SIGN ZAMX;Lo;0;L;;;;;N;;;;; -12362;CUNEIFORM SIGN ZE2;Lo;0;L;;;;;N;;;;; -12363;CUNEIFORM SIGN ZI;Lo;0;L;;;;;N;;;;; -12364;CUNEIFORM SIGN ZI OVER ZI;Lo;0;L;;;;;N;;;;; -12365;CUNEIFORM SIGN ZI3;Lo;0;L;;;;;N;;;;; -12366;CUNEIFORM SIGN ZIB;Lo;0;L;;;;;N;;;;; -12367;CUNEIFORM SIGN ZIB KABA TENU;Lo;0;L;;;;;N;;;;; -12368;CUNEIFORM SIGN ZIG;Lo;0;L;;;;;N;;;;; -12369;CUNEIFORM SIGN ZIZ2;Lo;0;L;;;;;N;;;;; -1236A;CUNEIFORM SIGN ZU;Lo;0;L;;;;;N;;;;; -1236B;CUNEIFORM SIGN ZU5;Lo;0;L;;;;;N;;;;; -1236C;CUNEIFORM SIGN ZU5 TIMES A;Lo;0;L;;;;;N;;;;; -1236D;CUNEIFORM SIGN ZUBUR;Lo;0;L;;;;;N;;;;; -1236E;CUNEIFORM SIGN ZUM;Lo;0;L;;;;;N;;;;; -12400;CUNEIFORM NUMERIC SIGN TWO ASH;Nl;0;L;;;;2;N;;;;; -12401;CUNEIFORM NUMERIC SIGN THREE ASH;Nl;0;L;;;;3;N;;;;; -12402;CUNEIFORM NUMERIC SIGN FOUR ASH;Nl;0;L;;;;4;N;;;;; -12403;CUNEIFORM NUMERIC SIGN FIVE ASH;Nl;0;L;;;;5;N;;;;; -12404;CUNEIFORM NUMERIC SIGN SIX ASH;Nl;0;L;;;;6;N;;;;; -12405;CUNEIFORM NUMERIC SIGN SEVEN ASH;Nl;0;L;;;;7;N;;;;; -12406;CUNEIFORM NUMERIC SIGN EIGHT ASH;Nl;0;L;;;;8;N;;;;; -12407;CUNEIFORM NUMERIC SIGN NINE ASH;Nl;0;L;;;;9;N;;;;; -12408;CUNEIFORM NUMERIC SIGN THREE DISH;Nl;0;L;;;;3;N;;;;; -12409;CUNEIFORM NUMERIC SIGN FOUR DISH;Nl;0;L;;;;4;N;;;;; -1240A;CUNEIFORM NUMERIC SIGN FIVE DISH;Nl;0;L;;;;5;N;;;;; -1240B;CUNEIFORM NUMERIC SIGN SIX DISH;Nl;0;L;;;;6;N;;;;; -1240C;CUNEIFORM NUMERIC SIGN SEVEN DISH;Nl;0;L;;;;7;N;;;;; -1240D;CUNEIFORM NUMERIC SIGN EIGHT DISH;Nl;0;L;;;;8;N;;;;; -1240E;CUNEIFORM NUMERIC SIGN NINE DISH;Nl;0;L;;;;9;N;;;;; -1240F;CUNEIFORM NUMERIC SIGN FOUR U;Nl;0;L;;;;4;N;;;;; -12410;CUNEIFORM NUMERIC SIGN FIVE U;Nl;0;L;;;;5;N;;;;; -12411;CUNEIFORM NUMERIC SIGN SIX U;Nl;0;L;;;;6;N;;;;; -12412;CUNEIFORM NUMERIC SIGN SEVEN U;Nl;0;L;;;;7;N;;;;; -12413;CUNEIFORM NUMERIC SIGN EIGHT U;Nl;0;L;;;;8;N;;;;; -12414;CUNEIFORM NUMERIC SIGN NINE U;Nl;0;L;;;;9;N;;;;; -12415;CUNEIFORM NUMERIC SIGN ONE GESH2;Nl;0;L;;;;1;N;;;;; -12416;CUNEIFORM NUMERIC SIGN TWO GESH2;Nl;0;L;;;;2;N;;;;; -12417;CUNEIFORM NUMERIC SIGN THREE GESH2;Nl;0;L;;;;3;N;;;;; -12418;CUNEIFORM NUMERIC SIGN FOUR GESH2;Nl;0;L;;;;4;N;;;;; -12419;CUNEIFORM NUMERIC SIGN FIVE GESH2;Nl;0;L;;;;5;N;;;;; -1241A;CUNEIFORM NUMERIC SIGN SIX GESH2;Nl;0;L;;;;6;N;;;;; -1241B;CUNEIFORM NUMERIC SIGN SEVEN GESH2;Nl;0;L;;;;7;N;;;;; -1241C;CUNEIFORM NUMERIC SIGN EIGHT GESH2;Nl;0;L;;;;8;N;;;;; -1241D;CUNEIFORM NUMERIC SIGN NINE GESH2;Nl;0;L;;;;9;N;;;;; -1241E;CUNEIFORM NUMERIC SIGN ONE GESHU;Nl;0;L;;;;1;N;;;;; -1241F;CUNEIFORM NUMERIC SIGN TWO GESHU;Nl;0;L;;;;2;N;;;;; -12420;CUNEIFORM NUMERIC SIGN THREE GESHU;Nl;0;L;;;;3;N;;;;; -12421;CUNEIFORM NUMERIC SIGN FOUR GESHU;Nl;0;L;;;;4;N;;;;; -12422;CUNEIFORM NUMERIC SIGN FIVE GESHU;Nl;0;L;;;;5;N;;;;; -12423;CUNEIFORM NUMERIC SIGN TWO SHAR2;Nl;0;L;;;;2;N;;;;; -12424;CUNEIFORM NUMERIC SIGN THREE SHAR2;Nl;0;L;;;;3;N;;;;; -12425;CUNEIFORM NUMERIC SIGN THREE SHAR2 VARIANT FORM;Nl;0;L;;;;3;N;;;;; -12426;CUNEIFORM NUMERIC SIGN FOUR SHAR2;Nl;0;L;;;;4;N;;;;; -12427;CUNEIFORM NUMERIC SIGN FIVE SHAR2;Nl;0;L;;;;5;N;;;;; -12428;CUNEIFORM NUMERIC SIGN SIX SHAR2;Nl;0;L;;;;6;N;;;;; -12429;CUNEIFORM NUMERIC SIGN SEVEN SHAR2;Nl;0;L;;;;7;N;;;;; -1242A;CUNEIFORM NUMERIC SIGN EIGHT SHAR2;Nl;0;L;;;;8;N;;;;; -1242B;CUNEIFORM NUMERIC SIGN NINE SHAR2;Nl;0;L;;;;9;N;;;;; -1242C;CUNEIFORM NUMERIC SIGN ONE SHARU;Nl;0;L;;;;1;N;;;;; -1242D;CUNEIFORM NUMERIC SIGN TWO SHARU;Nl;0;L;;;;2;N;;;;; -1242E;CUNEIFORM NUMERIC SIGN THREE SHARU;Nl;0;L;;;;3;N;;;;; -1242F;CUNEIFORM NUMERIC SIGN THREE SHARU VARIANT FORM;Nl;0;L;;;;3;N;;;;; -12430;CUNEIFORM NUMERIC SIGN FOUR SHARU;Nl;0;L;;;;4;N;;;;; -12431;CUNEIFORM NUMERIC SIGN FIVE SHARU;Nl;0;L;;;;5;N;;;;; -12432;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS DISH;Nl;0;L;;;;;N;;;;; -12433;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS MIN;Nl;0;L;;;;;N;;;;; -12434;CUNEIFORM NUMERIC SIGN ONE BURU;Nl;0;L;;;;1;N;;;;; -12435;CUNEIFORM NUMERIC SIGN TWO BURU;Nl;0;L;;;;2;N;;;;; -12436;CUNEIFORM NUMERIC SIGN THREE BURU;Nl;0;L;;;;3;N;;;;; -12437;CUNEIFORM NUMERIC SIGN THREE BURU VARIANT FORM;Nl;0;L;;;;3;N;;;;; -12438;CUNEIFORM NUMERIC SIGN FOUR BURU;Nl;0;L;;;;4;N;;;;; -12439;CUNEIFORM NUMERIC SIGN FIVE BURU;Nl;0;L;;;;5;N;;;;; -1243A;CUNEIFORM NUMERIC SIGN THREE VARIANT FORM ESH16;Nl;0;L;;;;3;N;;;;; -1243B;CUNEIFORM NUMERIC SIGN THREE VARIANT FORM ESH21;Nl;0;L;;;;3;N;;;;; -1243C;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU;Nl;0;L;;;;4;N;;;;; -1243D;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU4;Nl;0;L;;;;4;N;;;;; -1243E;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU A;Nl;0;L;;;;4;N;;;;; -1243F;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU B;Nl;0;L;;;;4;N;;;;; -12440;CUNEIFORM NUMERIC SIGN SIX VARIANT FORM ASH9;Nl;0;L;;;;6;N;;;;; -12441;CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN3;Nl;0;L;;;;7;N;;;;; -12442;CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN A;Nl;0;L;;;;7;N;;;;; -12443;CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN B;Nl;0;L;;;;7;N;;;;; -12444;CUNEIFORM NUMERIC SIGN EIGHT VARIANT FORM USSU;Nl;0;L;;;;8;N;;;;; -12445;CUNEIFORM NUMERIC SIGN EIGHT VARIANT FORM USSU3;Nl;0;L;;;;8;N;;;;; -12446;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU;Nl;0;L;;;;9;N;;;;; -12447;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU3;Nl;0;L;;;;9;N;;;;; -12448;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU4;Nl;0;L;;;;9;N;;;;; -12449;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU A;Nl;0;L;;;;9;N;;;;; -1244A;CUNEIFORM NUMERIC SIGN TWO ASH TENU;Nl;0;L;;;;2;N;;;;; -1244B;CUNEIFORM NUMERIC SIGN THREE ASH TENU;Nl;0;L;;;;3;N;;;;; -1244C;CUNEIFORM NUMERIC SIGN FOUR ASH TENU;Nl;0;L;;;;4;N;;;;; -1244D;CUNEIFORM NUMERIC SIGN FIVE ASH TENU;Nl;0;L;;;;5;N;;;;; -1244E;CUNEIFORM NUMERIC SIGN SIX ASH TENU;Nl;0;L;;;;6;N;;;;; -1244F;CUNEIFORM NUMERIC SIGN ONE BAN2;Nl;0;L;;;;1;N;;;;; -12450;CUNEIFORM NUMERIC SIGN TWO BAN2;Nl;0;L;;;;2;N;;;;; -12451;CUNEIFORM NUMERIC SIGN THREE BAN2;Nl;0;L;;;;3;N;;;;; -12452;CUNEIFORM NUMERIC SIGN FOUR BAN2;Nl;0;L;;;;4;N;;;;; -12453;CUNEIFORM NUMERIC SIGN FOUR BAN2 VARIANT FORM;Nl;0;L;;;;4;N;;;;; -12454;CUNEIFORM NUMERIC SIGN FIVE BAN2;Nl;0;L;;;;5;N;;;;; -12455;CUNEIFORM NUMERIC SIGN FIVE BAN2 VARIANT FORM;Nl;0;L;;;;5;N;;;;; -12456;CUNEIFORM NUMERIC SIGN NIGIDAMIN;Nl;0;L;;;;;N;;;;; -12457;CUNEIFORM NUMERIC SIGN NIGIDAESH;Nl;0;L;;;;;N;;;;; -12458;CUNEIFORM NUMERIC SIGN ONE ESHE3;Nl;0;L;;;;1;N;;;;; -12459;CUNEIFORM NUMERIC SIGN TWO ESHE3;Nl;0;L;;;;2;N;;;;; -1245A;CUNEIFORM NUMERIC SIGN ONE THIRD DISH;Nl;0;L;;;;1/3;N;;;;; -1245B;CUNEIFORM NUMERIC SIGN TWO THIRDS DISH;Nl;0;L;;;;2/3;N;;;;; -1245C;CUNEIFORM NUMERIC SIGN FIVE SIXTHS DISH;Nl;0;L;;;;5/6;N;;;;; -1245D;CUNEIFORM NUMERIC SIGN ONE THIRD VARIANT FORM A;Nl;0;L;;;;1/3;N;;;;; -1245E;CUNEIFORM NUMERIC SIGN TWO THIRDS VARIANT FORM A;Nl;0;L;;;;2/3;N;;;;; -1245F;CUNEIFORM NUMERIC SIGN ONE EIGHTH ASH;Nl;0;L;;;;1/8;N;;;;; -12460;CUNEIFORM NUMERIC SIGN ONE QUARTER ASH;Nl;0;L;;;;1/4;N;;;;; -12461;CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE SIXTH;Nl;0;L;;;;1/6;N;;;;; -12462;CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE QUARTER;Nl;0;L;;;;1/4;N;;;;; -12470;CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER;Po;0;L;;;;;N;;;;; -12471;CUNEIFORM PUNCTUATION SIGN VERTICAL COLON;Po;0;L;;;;;N;;;;; -12472;CUNEIFORM PUNCTUATION SIGN DIAGONAL COLON;Po;0;L;;;;;N;;;;; -12473;CUNEIFORM PUNCTUATION SIGN DIAGONAL TRICOLON;Po;0;L;;;;;N;;;;; -13000;EGYPTIAN HIEROGLYPH A001;Lo;0;L;;;;;N;;;;; -13001;EGYPTIAN HIEROGLYPH A002;Lo;0;L;;;;;N;;;;; -13002;EGYPTIAN HIEROGLYPH A003;Lo;0;L;;;;;N;;;;; -13003;EGYPTIAN HIEROGLYPH A004;Lo;0;L;;;;;N;;;;; -13004;EGYPTIAN HIEROGLYPH A005;Lo;0;L;;;;;N;;;;; -13005;EGYPTIAN HIEROGLYPH A005A;Lo;0;L;;;;;N;;;;; -13006;EGYPTIAN HIEROGLYPH A006;Lo;0;L;;;;;N;;;;; -13007;EGYPTIAN HIEROGLYPH A006A;Lo;0;L;;;;;N;;;;; -13008;EGYPTIAN HIEROGLYPH A006B;Lo;0;L;;;;;N;;;;; -13009;EGYPTIAN HIEROGLYPH A007;Lo;0;L;;;;;N;;;;; -1300A;EGYPTIAN HIEROGLYPH A008;Lo;0;L;;;;;N;;;;; -1300B;EGYPTIAN HIEROGLYPH A009;Lo;0;L;;;;;N;;;;; -1300C;EGYPTIAN HIEROGLYPH A010;Lo;0;L;;;;;N;;;;; -1300D;EGYPTIAN HIEROGLYPH A011;Lo;0;L;;;;;N;;;;; -1300E;EGYPTIAN HIEROGLYPH A012;Lo;0;L;;;;;N;;;;; -1300F;EGYPTIAN HIEROGLYPH A013;Lo;0;L;;;;;N;;;;; -13010;EGYPTIAN HIEROGLYPH A014;Lo;0;L;;;;;N;;;;; -13011;EGYPTIAN HIEROGLYPH A014A;Lo;0;L;;;;;N;;;;; -13012;EGYPTIAN HIEROGLYPH A015;Lo;0;L;;;;;N;;;;; -13013;EGYPTIAN HIEROGLYPH A016;Lo;0;L;;;;;N;;;;; -13014;EGYPTIAN HIEROGLYPH A017;Lo;0;L;;;;;N;;;;; -13015;EGYPTIAN HIEROGLYPH A017A;Lo;0;L;;;;;N;;;;; -13016;EGYPTIAN HIEROGLYPH A018;Lo;0;L;;;;;N;;;;; -13017;EGYPTIAN HIEROGLYPH A019;Lo;0;L;;;;;N;;;;; -13018;EGYPTIAN HIEROGLYPH A020;Lo;0;L;;;;;N;;;;; -13019;EGYPTIAN HIEROGLYPH A021;Lo;0;L;;;;;N;;;;; -1301A;EGYPTIAN HIEROGLYPH A022;Lo;0;L;;;;;N;;;;; -1301B;EGYPTIAN HIEROGLYPH A023;Lo;0;L;;;;;N;;;;; -1301C;EGYPTIAN HIEROGLYPH A024;Lo;0;L;;;;;N;;;;; -1301D;EGYPTIAN HIEROGLYPH A025;Lo;0;L;;;;;N;;;;; -1301E;EGYPTIAN HIEROGLYPH A026;Lo;0;L;;;;;N;;;;; -1301F;EGYPTIAN HIEROGLYPH A027;Lo;0;L;;;;;N;;;;; -13020;EGYPTIAN HIEROGLYPH A028;Lo;0;L;;;;;N;;;;; -13021;EGYPTIAN HIEROGLYPH A029;Lo;0;L;;;;;N;;;;; -13022;EGYPTIAN HIEROGLYPH A030;Lo;0;L;;;;;N;;;;; -13023;EGYPTIAN HIEROGLYPH A031;Lo;0;L;;;;;N;;;;; -13024;EGYPTIAN HIEROGLYPH A032;Lo;0;L;;;;;N;;;;; -13025;EGYPTIAN HIEROGLYPH A032A;Lo;0;L;;;;;N;;;;; -13026;EGYPTIAN HIEROGLYPH A033;Lo;0;L;;;;;N;;;;; -13027;EGYPTIAN HIEROGLYPH A034;Lo;0;L;;;;;N;;;;; -13028;EGYPTIAN HIEROGLYPH A035;Lo;0;L;;;;;N;;;;; -13029;EGYPTIAN HIEROGLYPH A036;Lo;0;L;;;;;N;;;;; -1302A;EGYPTIAN HIEROGLYPH A037;Lo;0;L;;;;;N;;;;; -1302B;EGYPTIAN HIEROGLYPH A038;Lo;0;L;;;;;N;;;;; -1302C;EGYPTIAN HIEROGLYPH A039;Lo;0;L;;;;;N;;;;; -1302D;EGYPTIAN HIEROGLYPH A040;Lo;0;L;;;;;N;;;;; -1302E;EGYPTIAN HIEROGLYPH A040A;Lo;0;L;;;;;N;;;;; -1302F;EGYPTIAN HIEROGLYPH A041;Lo;0;L;;;;;N;;;;; -13030;EGYPTIAN HIEROGLYPH A042;Lo;0;L;;;;;N;;;;; -13031;EGYPTIAN HIEROGLYPH A042A;Lo;0;L;;;;;N;;;;; -13032;EGYPTIAN HIEROGLYPH A043;Lo;0;L;;;;;N;;;;; -13033;EGYPTIAN HIEROGLYPH A043A;Lo;0;L;;;;;N;;;;; -13034;EGYPTIAN HIEROGLYPH A044;Lo;0;L;;;;;N;;;;; -13035;EGYPTIAN HIEROGLYPH A045;Lo;0;L;;;;;N;;;;; -13036;EGYPTIAN HIEROGLYPH A045A;Lo;0;L;;;;;N;;;;; -13037;EGYPTIAN HIEROGLYPH A046;Lo;0;L;;;;;N;;;;; -13038;EGYPTIAN HIEROGLYPH A047;Lo;0;L;;;;;N;;;;; -13039;EGYPTIAN HIEROGLYPH A048;Lo;0;L;;;;;N;;;;; -1303A;EGYPTIAN HIEROGLYPH A049;Lo;0;L;;;;;N;;;;; -1303B;EGYPTIAN HIEROGLYPH A050;Lo;0;L;;;;;N;;;;; -1303C;EGYPTIAN HIEROGLYPH A051;Lo;0;L;;;;;N;;;;; -1303D;EGYPTIAN HIEROGLYPH A052;Lo;0;L;;;;;N;;;;; -1303E;EGYPTIAN HIEROGLYPH A053;Lo;0;L;;;;;N;;;;; -1303F;EGYPTIAN HIEROGLYPH A054;Lo;0;L;;;;;N;;;;; -13040;EGYPTIAN HIEROGLYPH A055;Lo;0;L;;;;;N;;;;; -13041;EGYPTIAN HIEROGLYPH A056;Lo;0;L;;;;;N;;;;; -13042;EGYPTIAN HIEROGLYPH A057;Lo;0;L;;;;;N;;;;; -13043;EGYPTIAN HIEROGLYPH A058;Lo;0;L;;;;;N;;;;; -13044;EGYPTIAN HIEROGLYPH A059;Lo;0;L;;;;;N;;;;; -13045;EGYPTIAN HIEROGLYPH A060;Lo;0;L;;;;;N;;;;; -13046;EGYPTIAN HIEROGLYPH A061;Lo;0;L;;;;;N;;;;; -13047;EGYPTIAN HIEROGLYPH A062;Lo;0;L;;;;;N;;;;; -13048;EGYPTIAN HIEROGLYPH A063;Lo;0;L;;;;;N;;;;; -13049;EGYPTIAN HIEROGLYPH A064;Lo;0;L;;;;;N;;;;; -1304A;EGYPTIAN HIEROGLYPH A065;Lo;0;L;;;;;N;;;;; -1304B;EGYPTIAN HIEROGLYPH A066;Lo;0;L;;;;;N;;;;; -1304C;EGYPTIAN HIEROGLYPH A067;Lo;0;L;;;;;N;;;;; -1304D;EGYPTIAN HIEROGLYPH A068;Lo;0;L;;;;;N;;;;; -1304E;EGYPTIAN HIEROGLYPH A069;Lo;0;L;;;;;N;;;;; -1304F;EGYPTIAN HIEROGLYPH A070;Lo;0;L;;;;;N;;;;; -13050;EGYPTIAN HIEROGLYPH B001;Lo;0;L;;;;;N;;;;; -13051;EGYPTIAN HIEROGLYPH B002;Lo;0;L;;;;;N;;;;; -13052;EGYPTIAN HIEROGLYPH B003;Lo;0;L;;;;;N;;;;; -13053;EGYPTIAN HIEROGLYPH B004;Lo;0;L;;;;;N;;;;; -13054;EGYPTIAN HIEROGLYPH B005;Lo;0;L;;;;;N;;;;; -13055;EGYPTIAN HIEROGLYPH B005A;Lo;0;L;;;;;N;;;;; -13056;EGYPTIAN HIEROGLYPH B006;Lo;0;L;;;;;N;;;;; -13057;EGYPTIAN HIEROGLYPH B007;Lo;0;L;;;;;N;;;;; -13058;EGYPTIAN HIEROGLYPH B008;Lo;0;L;;;;;N;;;;; -13059;EGYPTIAN HIEROGLYPH B009;Lo;0;L;;;;;N;;;;; -1305A;EGYPTIAN HIEROGLYPH C001;Lo;0;L;;;;;N;;;;; -1305B;EGYPTIAN HIEROGLYPH C002;Lo;0;L;;;;;N;;;;; -1305C;EGYPTIAN HIEROGLYPH C002A;Lo;0;L;;;;;N;;;;; -1305D;EGYPTIAN HIEROGLYPH C002B;Lo;0;L;;;;;N;;;;; -1305E;EGYPTIAN HIEROGLYPH C002C;Lo;0;L;;;;;N;;;;; -1305F;EGYPTIAN HIEROGLYPH C003;Lo;0;L;;;;;N;;;;; -13060;EGYPTIAN HIEROGLYPH C004;Lo;0;L;;;;;N;;;;; -13061;EGYPTIAN HIEROGLYPH C005;Lo;0;L;;;;;N;;;;; -13062;EGYPTIAN HIEROGLYPH C006;Lo;0;L;;;;;N;;;;; -13063;EGYPTIAN HIEROGLYPH C007;Lo;0;L;;;;;N;;;;; -13064;EGYPTIAN HIEROGLYPH C008;Lo;0;L;;;;;N;;;;; -13065;EGYPTIAN HIEROGLYPH C009;Lo;0;L;;;;;N;;;;; -13066;EGYPTIAN HIEROGLYPH C010;Lo;0;L;;;;;N;;;;; -13067;EGYPTIAN HIEROGLYPH C010A;Lo;0;L;;;;;N;;;;; -13068;EGYPTIAN HIEROGLYPH C011;Lo;0;L;;;;;N;;;;; -13069;EGYPTIAN HIEROGLYPH C012;Lo;0;L;;;;;N;;;;; -1306A;EGYPTIAN HIEROGLYPH C013;Lo;0;L;;;;;N;;;;; -1306B;EGYPTIAN HIEROGLYPH C014;Lo;0;L;;;;;N;;;;; -1306C;EGYPTIAN HIEROGLYPH C015;Lo;0;L;;;;;N;;;;; -1306D;EGYPTIAN HIEROGLYPH C016;Lo;0;L;;;;;N;;;;; -1306E;EGYPTIAN HIEROGLYPH C017;Lo;0;L;;;;;N;;;;; -1306F;EGYPTIAN HIEROGLYPH C018;Lo;0;L;;;;;N;;;;; -13070;EGYPTIAN HIEROGLYPH C019;Lo;0;L;;;;;N;;;;; -13071;EGYPTIAN HIEROGLYPH C020;Lo;0;L;;;;;N;;;;; -13072;EGYPTIAN HIEROGLYPH C021;Lo;0;L;;;;;N;;;;; -13073;EGYPTIAN HIEROGLYPH C022;Lo;0;L;;;;;N;;;;; -13074;EGYPTIAN HIEROGLYPH C023;Lo;0;L;;;;;N;;;;; -13075;EGYPTIAN HIEROGLYPH C024;Lo;0;L;;;;;N;;;;; -13076;EGYPTIAN HIEROGLYPH D001;Lo;0;L;;;;;N;;;;; -13077;EGYPTIAN HIEROGLYPH D002;Lo;0;L;;;;;N;;;;; -13078;EGYPTIAN HIEROGLYPH D003;Lo;0;L;;;;;N;;;;; -13079;EGYPTIAN HIEROGLYPH D004;Lo;0;L;;;;;N;;;;; -1307A;EGYPTIAN HIEROGLYPH D005;Lo;0;L;;;;;N;;;;; -1307B;EGYPTIAN HIEROGLYPH D006;Lo;0;L;;;;;N;;;;; -1307C;EGYPTIAN HIEROGLYPH D007;Lo;0;L;;;;;N;;;;; -1307D;EGYPTIAN HIEROGLYPH D008;Lo;0;L;;;;;N;;;;; -1307E;EGYPTIAN HIEROGLYPH D008A;Lo;0;L;;;;;N;;;;; -1307F;EGYPTIAN HIEROGLYPH D009;Lo;0;L;;;;;N;;;;; -13080;EGYPTIAN HIEROGLYPH D010;Lo;0;L;;;;;N;;;;; -13081;EGYPTIAN HIEROGLYPH D011;Lo;0;L;;;;;N;;;;; -13082;EGYPTIAN HIEROGLYPH D012;Lo;0;L;;;;;N;;;;; -13083;EGYPTIAN HIEROGLYPH D013;Lo;0;L;;;;;N;;;;; -13084;EGYPTIAN HIEROGLYPH D014;Lo;0;L;;;;;N;;;;; -13085;EGYPTIAN HIEROGLYPH D015;Lo;0;L;;;;;N;;;;; -13086;EGYPTIAN HIEROGLYPH D016;Lo;0;L;;;;;N;;;;; -13087;EGYPTIAN HIEROGLYPH D017;Lo;0;L;;;;;N;;;;; -13088;EGYPTIAN HIEROGLYPH D018;Lo;0;L;;;;;N;;;;; -13089;EGYPTIAN HIEROGLYPH D019;Lo;0;L;;;;;N;;;;; -1308A;EGYPTIAN HIEROGLYPH D020;Lo;0;L;;;;;N;;;;; -1308B;EGYPTIAN HIEROGLYPH D021;Lo;0;L;;;;;N;;;;; -1308C;EGYPTIAN HIEROGLYPH D022;Lo;0;L;;;;;N;;;;; -1308D;EGYPTIAN HIEROGLYPH D023;Lo;0;L;;;;;N;;;;; -1308E;EGYPTIAN HIEROGLYPH D024;Lo;0;L;;;;;N;;;;; -1308F;EGYPTIAN HIEROGLYPH D025;Lo;0;L;;;;;N;;;;; -13090;EGYPTIAN HIEROGLYPH D026;Lo;0;L;;;;;N;;;;; -13091;EGYPTIAN HIEROGLYPH D027;Lo;0;L;;;;;N;;;;; -13092;EGYPTIAN HIEROGLYPH D027A;Lo;0;L;;;;;N;;;;; -13093;EGYPTIAN HIEROGLYPH D028;Lo;0;L;;;;;N;;;;; -13094;EGYPTIAN HIEROGLYPH D029;Lo;0;L;;;;;N;;;;; -13095;EGYPTIAN HIEROGLYPH D030;Lo;0;L;;;;;N;;;;; -13096;EGYPTIAN HIEROGLYPH D031;Lo;0;L;;;;;N;;;;; -13097;EGYPTIAN HIEROGLYPH D031A;Lo;0;L;;;;;N;;;;; -13098;EGYPTIAN HIEROGLYPH D032;Lo;0;L;;;;;N;;;;; -13099;EGYPTIAN HIEROGLYPH D033;Lo;0;L;;;;;N;;;;; -1309A;EGYPTIAN HIEROGLYPH D034;Lo;0;L;;;;;N;;;;; -1309B;EGYPTIAN HIEROGLYPH D034A;Lo;0;L;;;;;N;;;;; -1309C;EGYPTIAN HIEROGLYPH D035;Lo;0;L;;;;;N;;;;; -1309D;EGYPTIAN HIEROGLYPH D036;Lo;0;L;;;;;N;;;;; -1309E;EGYPTIAN HIEROGLYPH D037;Lo;0;L;;;;;N;;;;; -1309F;EGYPTIAN HIEROGLYPH D038;Lo;0;L;;;;;N;;;;; -130A0;EGYPTIAN HIEROGLYPH D039;Lo;0;L;;;;;N;;;;; -130A1;EGYPTIAN HIEROGLYPH D040;Lo;0;L;;;;;N;;;;; -130A2;EGYPTIAN HIEROGLYPH D041;Lo;0;L;;;;;N;;;;; -130A3;EGYPTIAN HIEROGLYPH D042;Lo;0;L;;;;;N;;;;; -130A4;EGYPTIAN HIEROGLYPH D043;Lo;0;L;;;;;N;;;;; -130A5;EGYPTIAN HIEROGLYPH D044;Lo;0;L;;;;;N;;;;; -130A6;EGYPTIAN HIEROGLYPH D045;Lo;0;L;;;;;N;;;;; -130A7;EGYPTIAN HIEROGLYPH D046;Lo;0;L;;;;;N;;;;; -130A8;EGYPTIAN HIEROGLYPH D046A;Lo;0;L;;;;;N;;;;; -130A9;EGYPTIAN HIEROGLYPH D047;Lo;0;L;;;;;N;;;;; -130AA;EGYPTIAN HIEROGLYPH D048;Lo;0;L;;;;;N;;;;; -130AB;EGYPTIAN HIEROGLYPH D048A;Lo;0;L;;;;;N;;;;; -130AC;EGYPTIAN HIEROGLYPH D049;Lo;0;L;;;;;N;;;;; -130AD;EGYPTIAN HIEROGLYPH D050;Lo;0;L;;;;;N;;;;; -130AE;EGYPTIAN HIEROGLYPH D050A;Lo;0;L;;;;;N;;;;; -130AF;EGYPTIAN HIEROGLYPH D050B;Lo;0;L;;;;;N;;;;; -130B0;EGYPTIAN HIEROGLYPH D050C;Lo;0;L;;;;;N;;;;; -130B1;EGYPTIAN HIEROGLYPH D050D;Lo;0;L;;;;;N;;;;; -130B2;EGYPTIAN HIEROGLYPH D050E;Lo;0;L;;;;;N;;;;; -130B3;EGYPTIAN HIEROGLYPH D050F;Lo;0;L;;;;;N;;;;; -130B4;EGYPTIAN HIEROGLYPH D050G;Lo;0;L;;;;;N;;;;; -130B5;EGYPTIAN HIEROGLYPH D050H;Lo;0;L;;;;;N;;;;; -130B6;EGYPTIAN HIEROGLYPH D050I;Lo;0;L;;;;;N;;;;; -130B7;EGYPTIAN HIEROGLYPH D051;Lo;0;L;;;;;N;;;;; -130B8;EGYPTIAN HIEROGLYPH D052;Lo;0;L;;;;;N;;;;; -130B9;EGYPTIAN HIEROGLYPH D052A;Lo;0;L;;;;;N;;;;; -130BA;EGYPTIAN HIEROGLYPH D053;Lo;0;L;;;;;N;;;;; -130BB;EGYPTIAN HIEROGLYPH D054;Lo;0;L;;;;;N;;;;; -130BC;EGYPTIAN HIEROGLYPH D054A;Lo;0;L;;;;;N;;;;; -130BD;EGYPTIAN HIEROGLYPH D055;Lo;0;L;;;;;N;;;;; -130BE;EGYPTIAN HIEROGLYPH D056;Lo;0;L;;;;;N;;;;; -130BF;EGYPTIAN HIEROGLYPH D057;Lo;0;L;;;;;N;;;;; -130C0;EGYPTIAN HIEROGLYPH D058;Lo;0;L;;;;;N;;;;; -130C1;EGYPTIAN HIEROGLYPH D059;Lo;0;L;;;;;N;;;;; -130C2;EGYPTIAN HIEROGLYPH D060;Lo;0;L;;;;;N;;;;; -130C3;EGYPTIAN HIEROGLYPH D061;Lo;0;L;;;;;N;;;;; -130C4;EGYPTIAN HIEROGLYPH D062;Lo;0;L;;;;;N;;;;; -130C5;EGYPTIAN HIEROGLYPH D063;Lo;0;L;;;;;N;;;;; -130C6;EGYPTIAN HIEROGLYPH D064;Lo;0;L;;;;;N;;;;; -130C7;EGYPTIAN HIEROGLYPH D065;Lo;0;L;;;;;N;;;;; -130C8;EGYPTIAN HIEROGLYPH D066;Lo;0;L;;;;;N;;;;; -130C9;EGYPTIAN HIEROGLYPH D067;Lo;0;L;;;;;N;;;;; -130CA;EGYPTIAN HIEROGLYPH D067A;Lo;0;L;;;;;N;;;;; -130CB;EGYPTIAN HIEROGLYPH D067B;Lo;0;L;;;;;N;;;;; -130CC;EGYPTIAN HIEROGLYPH D067C;Lo;0;L;;;;;N;;;;; -130CD;EGYPTIAN HIEROGLYPH D067D;Lo;0;L;;;;;N;;;;; -130CE;EGYPTIAN HIEROGLYPH D067E;Lo;0;L;;;;;N;;;;; -130CF;EGYPTIAN HIEROGLYPH D067F;Lo;0;L;;;;;N;;;;; -130D0;EGYPTIAN HIEROGLYPH D067G;Lo;0;L;;;;;N;;;;; -130D1;EGYPTIAN HIEROGLYPH D067H;Lo;0;L;;;;;N;;;;; -130D2;EGYPTIAN HIEROGLYPH E001;Lo;0;L;;;;;N;;;;; -130D3;EGYPTIAN HIEROGLYPH E002;Lo;0;L;;;;;N;;;;; -130D4;EGYPTIAN HIEROGLYPH E003;Lo;0;L;;;;;N;;;;; -130D5;EGYPTIAN HIEROGLYPH E004;Lo;0;L;;;;;N;;;;; -130D6;EGYPTIAN HIEROGLYPH E005;Lo;0;L;;;;;N;;;;; -130D7;EGYPTIAN HIEROGLYPH E006;Lo;0;L;;;;;N;;;;; -130D8;EGYPTIAN HIEROGLYPH E007;Lo;0;L;;;;;N;;;;; -130D9;EGYPTIAN HIEROGLYPH E008;Lo;0;L;;;;;N;;;;; -130DA;EGYPTIAN HIEROGLYPH E008A;Lo;0;L;;;;;N;;;;; -130DB;EGYPTIAN HIEROGLYPH E009;Lo;0;L;;;;;N;;;;; -130DC;EGYPTIAN HIEROGLYPH E009A;Lo;0;L;;;;;N;;;;; -130DD;EGYPTIAN HIEROGLYPH E010;Lo;0;L;;;;;N;;;;; -130DE;EGYPTIAN HIEROGLYPH E011;Lo;0;L;;;;;N;;;;; -130DF;EGYPTIAN HIEROGLYPH E012;Lo;0;L;;;;;N;;;;; -130E0;EGYPTIAN HIEROGLYPH E013;Lo;0;L;;;;;N;;;;; -130E1;EGYPTIAN HIEROGLYPH E014;Lo;0;L;;;;;N;;;;; -130E2;EGYPTIAN HIEROGLYPH E015;Lo;0;L;;;;;N;;;;; -130E3;EGYPTIAN HIEROGLYPH E016;Lo;0;L;;;;;N;;;;; -130E4;EGYPTIAN HIEROGLYPH E016A;Lo;0;L;;;;;N;;;;; -130E5;EGYPTIAN HIEROGLYPH E017;Lo;0;L;;;;;N;;;;; -130E6;EGYPTIAN HIEROGLYPH E017A;Lo;0;L;;;;;N;;;;; -130E7;EGYPTIAN HIEROGLYPH E018;Lo;0;L;;;;;N;;;;; -130E8;EGYPTIAN HIEROGLYPH E019;Lo;0;L;;;;;N;;;;; -130E9;EGYPTIAN HIEROGLYPH E020;Lo;0;L;;;;;N;;;;; -130EA;EGYPTIAN HIEROGLYPH E020A;Lo;0;L;;;;;N;;;;; -130EB;EGYPTIAN HIEROGLYPH E021;Lo;0;L;;;;;N;;;;; -130EC;EGYPTIAN HIEROGLYPH E022;Lo;0;L;;;;;N;;;;; -130ED;EGYPTIAN HIEROGLYPH E023;Lo;0;L;;;;;N;;;;; -130EE;EGYPTIAN HIEROGLYPH E024;Lo;0;L;;;;;N;;;;; -130EF;EGYPTIAN HIEROGLYPH E025;Lo;0;L;;;;;N;;;;; -130F0;EGYPTIAN HIEROGLYPH E026;Lo;0;L;;;;;N;;;;; -130F1;EGYPTIAN HIEROGLYPH E027;Lo;0;L;;;;;N;;;;; -130F2;EGYPTIAN HIEROGLYPH E028;Lo;0;L;;;;;N;;;;; -130F3;EGYPTIAN HIEROGLYPH E028A;Lo;0;L;;;;;N;;;;; -130F4;EGYPTIAN HIEROGLYPH E029;Lo;0;L;;;;;N;;;;; -130F5;EGYPTIAN HIEROGLYPH E030;Lo;0;L;;;;;N;;;;; -130F6;EGYPTIAN HIEROGLYPH E031;Lo;0;L;;;;;N;;;;; -130F7;EGYPTIAN HIEROGLYPH E032;Lo;0;L;;;;;N;;;;; -130F8;EGYPTIAN HIEROGLYPH E033;Lo;0;L;;;;;N;;;;; -130F9;EGYPTIAN HIEROGLYPH E034;Lo;0;L;;;;;N;;;;; -130FA;EGYPTIAN HIEROGLYPH E034A;Lo;0;L;;;;;N;;;;; -130FB;EGYPTIAN HIEROGLYPH E036;Lo;0;L;;;;;N;;;;; -130FC;EGYPTIAN HIEROGLYPH E037;Lo;0;L;;;;;N;;;;; -130FD;EGYPTIAN HIEROGLYPH E038;Lo;0;L;;;;;N;;;;; -130FE;EGYPTIAN HIEROGLYPH F001;Lo;0;L;;;;;N;;;;; -130FF;EGYPTIAN HIEROGLYPH F001A;Lo;0;L;;;;;N;;;;; -13100;EGYPTIAN HIEROGLYPH F002;Lo;0;L;;;;;N;;;;; -13101;EGYPTIAN HIEROGLYPH F003;Lo;0;L;;;;;N;;;;; -13102;EGYPTIAN HIEROGLYPH F004;Lo;0;L;;;;;N;;;;; -13103;EGYPTIAN HIEROGLYPH F005;Lo;0;L;;;;;N;;;;; -13104;EGYPTIAN HIEROGLYPH F006;Lo;0;L;;;;;N;;;;; -13105;EGYPTIAN HIEROGLYPH F007;Lo;0;L;;;;;N;;;;; -13106;EGYPTIAN HIEROGLYPH F008;Lo;0;L;;;;;N;;;;; -13107;EGYPTIAN HIEROGLYPH F009;Lo;0;L;;;;;N;;;;; -13108;EGYPTIAN HIEROGLYPH F010;Lo;0;L;;;;;N;;;;; -13109;EGYPTIAN HIEROGLYPH F011;Lo;0;L;;;;;N;;;;; -1310A;EGYPTIAN HIEROGLYPH F012;Lo;0;L;;;;;N;;;;; -1310B;EGYPTIAN HIEROGLYPH F013;Lo;0;L;;;;;N;;;;; -1310C;EGYPTIAN HIEROGLYPH F013A;Lo;0;L;;;;;N;;;;; -1310D;EGYPTIAN HIEROGLYPH F014;Lo;0;L;;;;;N;;;;; -1310E;EGYPTIAN HIEROGLYPH F015;Lo;0;L;;;;;N;;;;; -1310F;EGYPTIAN HIEROGLYPH F016;Lo;0;L;;;;;N;;;;; -13110;EGYPTIAN HIEROGLYPH F017;Lo;0;L;;;;;N;;;;; -13111;EGYPTIAN HIEROGLYPH F018;Lo;0;L;;;;;N;;;;; -13112;EGYPTIAN HIEROGLYPH F019;Lo;0;L;;;;;N;;;;; -13113;EGYPTIAN HIEROGLYPH F020;Lo;0;L;;;;;N;;;;; -13114;EGYPTIAN HIEROGLYPH F021;Lo;0;L;;;;;N;;;;; -13115;EGYPTIAN HIEROGLYPH F021A;Lo;0;L;;;;;N;;;;; -13116;EGYPTIAN HIEROGLYPH F022;Lo;0;L;;;;;N;;;;; -13117;EGYPTIAN HIEROGLYPH F023;Lo;0;L;;;;;N;;;;; -13118;EGYPTIAN HIEROGLYPH F024;Lo;0;L;;;;;N;;;;; -13119;EGYPTIAN HIEROGLYPH F025;Lo;0;L;;;;;N;;;;; -1311A;EGYPTIAN HIEROGLYPH F026;Lo;0;L;;;;;N;;;;; -1311B;EGYPTIAN HIEROGLYPH F027;Lo;0;L;;;;;N;;;;; -1311C;EGYPTIAN HIEROGLYPH F028;Lo;0;L;;;;;N;;;;; -1311D;EGYPTIAN HIEROGLYPH F029;Lo;0;L;;;;;N;;;;; -1311E;EGYPTIAN HIEROGLYPH F030;Lo;0;L;;;;;N;;;;; -1311F;EGYPTIAN HIEROGLYPH F031;Lo;0;L;;;;;N;;;;; -13120;EGYPTIAN HIEROGLYPH F031A;Lo;0;L;;;;;N;;;;; -13121;EGYPTIAN HIEROGLYPH F032;Lo;0;L;;;;;N;;;;; -13122;EGYPTIAN HIEROGLYPH F033;Lo;0;L;;;;;N;;;;; -13123;EGYPTIAN HIEROGLYPH F034;Lo;0;L;;;;;N;;;;; -13124;EGYPTIAN HIEROGLYPH F035;Lo;0;L;;;;;N;;;;; -13125;EGYPTIAN HIEROGLYPH F036;Lo;0;L;;;;;N;;;;; -13126;EGYPTIAN HIEROGLYPH F037;Lo;0;L;;;;;N;;;;; -13127;EGYPTIAN HIEROGLYPH F037A;Lo;0;L;;;;;N;;;;; -13128;EGYPTIAN HIEROGLYPH F038;Lo;0;L;;;;;N;;;;; -13129;EGYPTIAN HIEROGLYPH F038A;Lo;0;L;;;;;N;;;;; -1312A;EGYPTIAN HIEROGLYPH F039;Lo;0;L;;;;;N;;;;; -1312B;EGYPTIAN HIEROGLYPH F040;Lo;0;L;;;;;N;;;;; -1312C;EGYPTIAN HIEROGLYPH F041;Lo;0;L;;;;;N;;;;; -1312D;EGYPTIAN HIEROGLYPH F042;Lo;0;L;;;;;N;;;;; -1312E;EGYPTIAN HIEROGLYPH F043;Lo;0;L;;;;;N;;;;; -1312F;EGYPTIAN HIEROGLYPH F044;Lo;0;L;;;;;N;;;;; -13130;EGYPTIAN HIEROGLYPH F045;Lo;0;L;;;;;N;;;;; -13131;EGYPTIAN HIEROGLYPH F045A;Lo;0;L;;;;;N;;;;; -13132;EGYPTIAN HIEROGLYPH F046;Lo;0;L;;;;;N;;;;; -13133;EGYPTIAN HIEROGLYPH F046A;Lo;0;L;;;;;N;;;;; -13134;EGYPTIAN HIEROGLYPH F047;Lo;0;L;;;;;N;;;;; -13135;EGYPTIAN HIEROGLYPH F047A;Lo;0;L;;;;;N;;;;; -13136;EGYPTIAN HIEROGLYPH F048;Lo;0;L;;;;;N;;;;; -13137;EGYPTIAN HIEROGLYPH F049;Lo;0;L;;;;;N;;;;; -13138;EGYPTIAN HIEROGLYPH F050;Lo;0;L;;;;;N;;;;; -13139;EGYPTIAN HIEROGLYPH F051;Lo;0;L;;;;;N;;;;; -1313A;EGYPTIAN HIEROGLYPH F051A;Lo;0;L;;;;;N;;;;; -1313B;EGYPTIAN HIEROGLYPH F051B;Lo;0;L;;;;;N;;;;; -1313C;EGYPTIAN HIEROGLYPH F051C;Lo;0;L;;;;;N;;;;; -1313D;EGYPTIAN HIEROGLYPH F052;Lo;0;L;;;;;N;;;;; -1313E;EGYPTIAN HIEROGLYPH F053;Lo;0;L;;;;;N;;;;; -1313F;EGYPTIAN HIEROGLYPH G001;Lo;0;L;;;;;N;;;;; -13140;EGYPTIAN HIEROGLYPH G002;Lo;0;L;;;;;N;;;;; -13141;EGYPTIAN HIEROGLYPH G003;Lo;0;L;;;;;N;;;;; -13142;EGYPTIAN HIEROGLYPH G004;Lo;0;L;;;;;N;;;;; -13143;EGYPTIAN HIEROGLYPH G005;Lo;0;L;;;;;N;;;;; -13144;EGYPTIAN HIEROGLYPH G006;Lo;0;L;;;;;N;;;;; -13145;EGYPTIAN HIEROGLYPH G006A;Lo;0;L;;;;;N;;;;; -13146;EGYPTIAN HIEROGLYPH G007;Lo;0;L;;;;;N;;;;; -13147;EGYPTIAN HIEROGLYPH G007A;Lo;0;L;;;;;N;;;;; -13148;EGYPTIAN HIEROGLYPH G007B;Lo;0;L;;;;;N;;;;; -13149;EGYPTIAN HIEROGLYPH G008;Lo;0;L;;;;;N;;;;; -1314A;EGYPTIAN HIEROGLYPH G009;Lo;0;L;;;;;N;;;;; -1314B;EGYPTIAN HIEROGLYPH G010;Lo;0;L;;;;;N;;;;; -1314C;EGYPTIAN HIEROGLYPH G011;Lo;0;L;;;;;N;;;;; -1314D;EGYPTIAN HIEROGLYPH G011A;Lo;0;L;;;;;N;;;;; -1314E;EGYPTIAN HIEROGLYPH G012;Lo;0;L;;;;;N;;;;; -1314F;EGYPTIAN HIEROGLYPH G013;Lo;0;L;;;;;N;;;;; -13150;EGYPTIAN HIEROGLYPH G014;Lo;0;L;;;;;N;;;;; -13151;EGYPTIAN HIEROGLYPH G015;Lo;0;L;;;;;N;;;;; -13152;EGYPTIAN HIEROGLYPH G016;Lo;0;L;;;;;N;;;;; -13153;EGYPTIAN HIEROGLYPH G017;Lo;0;L;;;;;N;;;;; -13154;EGYPTIAN HIEROGLYPH G018;Lo;0;L;;;;;N;;;;; -13155;EGYPTIAN HIEROGLYPH G019;Lo;0;L;;;;;N;;;;; -13156;EGYPTIAN HIEROGLYPH G020;Lo;0;L;;;;;N;;;;; -13157;EGYPTIAN HIEROGLYPH G020A;Lo;0;L;;;;;N;;;;; -13158;EGYPTIAN HIEROGLYPH G021;Lo;0;L;;;;;N;;;;; -13159;EGYPTIAN HIEROGLYPH G022;Lo;0;L;;;;;N;;;;; -1315A;EGYPTIAN HIEROGLYPH G023;Lo;0;L;;;;;N;;;;; -1315B;EGYPTIAN HIEROGLYPH G024;Lo;0;L;;;;;N;;;;; -1315C;EGYPTIAN HIEROGLYPH G025;Lo;0;L;;;;;N;;;;; -1315D;EGYPTIAN HIEROGLYPH G026;Lo;0;L;;;;;N;;;;; -1315E;EGYPTIAN HIEROGLYPH G026A;Lo;0;L;;;;;N;;;;; -1315F;EGYPTIAN HIEROGLYPH G027;Lo;0;L;;;;;N;;;;; -13160;EGYPTIAN HIEROGLYPH G028;Lo;0;L;;;;;N;;;;; -13161;EGYPTIAN HIEROGLYPH G029;Lo;0;L;;;;;N;;;;; -13162;EGYPTIAN HIEROGLYPH G030;Lo;0;L;;;;;N;;;;; -13163;EGYPTIAN HIEROGLYPH G031;Lo;0;L;;;;;N;;;;; -13164;EGYPTIAN HIEROGLYPH G032;Lo;0;L;;;;;N;;;;; -13165;EGYPTIAN HIEROGLYPH G033;Lo;0;L;;;;;N;;;;; -13166;EGYPTIAN HIEROGLYPH G034;Lo;0;L;;;;;N;;;;; -13167;EGYPTIAN HIEROGLYPH G035;Lo;0;L;;;;;N;;;;; -13168;EGYPTIAN HIEROGLYPH G036;Lo;0;L;;;;;N;;;;; -13169;EGYPTIAN HIEROGLYPH G036A;Lo;0;L;;;;;N;;;;; -1316A;EGYPTIAN HIEROGLYPH G037;Lo;0;L;;;;;N;;;;; -1316B;EGYPTIAN HIEROGLYPH G037A;Lo;0;L;;;;;N;;;;; -1316C;EGYPTIAN HIEROGLYPH G038;Lo;0;L;;;;;N;;;;; -1316D;EGYPTIAN HIEROGLYPH G039;Lo;0;L;;;;;N;;;;; -1316E;EGYPTIAN HIEROGLYPH G040;Lo;0;L;;;;;N;;;;; -1316F;EGYPTIAN HIEROGLYPH G041;Lo;0;L;;;;;N;;;;; -13170;EGYPTIAN HIEROGLYPH G042;Lo;0;L;;;;;N;;;;; -13171;EGYPTIAN HIEROGLYPH G043;Lo;0;L;;;;;N;;;;; -13172;EGYPTIAN HIEROGLYPH G043A;Lo;0;L;;;;;N;;;;; -13173;EGYPTIAN HIEROGLYPH G044;Lo;0;L;;;;;N;;;;; -13174;EGYPTIAN HIEROGLYPH G045;Lo;0;L;;;;;N;;;;; -13175;EGYPTIAN HIEROGLYPH G045A;Lo;0;L;;;;;N;;;;; -13176;EGYPTIAN HIEROGLYPH G046;Lo;0;L;;;;;N;;;;; -13177;EGYPTIAN HIEROGLYPH G047;Lo;0;L;;;;;N;;;;; -13178;EGYPTIAN HIEROGLYPH G048;Lo;0;L;;;;;N;;;;; -13179;EGYPTIAN HIEROGLYPH G049;Lo;0;L;;;;;N;;;;; -1317A;EGYPTIAN HIEROGLYPH G050;Lo;0;L;;;;;N;;;;; -1317B;EGYPTIAN HIEROGLYPH G051;Lo;0;L;;;;;N;;;;; -1317C;EGYPTIAN HIEROGLYPH G052;Lo;0;L;;;;;N;;;;; -1317D;EGYPTIAN HIEROGLYPH G053;Lo;0;L;;;;;N;;;;; -1317E;EGYPTIAN HIEROGLYPH G054;Lo;0;L;;;;;N;;;;; -1317F;EGYPTIAN HIEROGLYPH H001;Lo;0;L;;;;;N;;;;; -13180;EGYPTIAN HIEROGLYPH H002;Lo;0;L;;;;;N;;;;; -13181;EGYPTIAN HIEROGLYPH H003;Lo;0;L;;;;;N;;;;; -13182;EGYPTIAN HIEROGLYPH H004;Lo;0;L;;;;;N;;;;; -13183;EGYPTIAN HIEROGLYPH H005;Lo;0;L;;;;;N;;;;; -13184;EGYPTIAN HIEROGLYPH H006;Lo;0;L;;;;;N;;;;; -13185;EGYPTIAN HIEROGLYPH H006A;Lo;0;L;;;;;N;;;;; -13186;EGYPTIAN HIEROGLYPH H007;Lo;0;L;;;;;N;;;;; -13187;EGYPTIAN HIEROGLYPH H008;Lo;0;L;;;;;N;;;;; -13188;EGYPTIAN HIEROGLYPH I001;Lo;0;L;;;;;N;;;;; -13189;EGYPTIAN HIEROGLYPH I002;Lo;0;L;;;;;N;;;;; -1318A;EGYPTIAN HIEROGLYPH I003;Lo;0;L;;;;;N;;;;; -1318B;EGYPTIAN HIEROGLYPH I004;Lo;0;L;;;;;N;;;;; -1318C;EGYPTIAN HIEROGLYPH I005;Lo;0;L;;;;;N;;;;; -1318D;EGYPTIAN HIEROGLYPH I005A;Lo;0;L;;;;;N;;;;; -1318E;EGYPTIAN HIEROGLYPH I006;Lo;0;L;;;;;N;;;;; -1318F;EGYPTIAN HIEROGLYPH I007;Lo;0;L;;;;;N;;;;; -13190;EGYPTIAN HIEROGLYPH I008;Lo;0;L;;;;;N;;;;; -13191;EGYPTIAN HIEROGLYPH I009;Lo;0;L;;;;;N;;;;; -13192;EGYPTIAN HIEROGLYPH I009A;Lo;0;L;;;;;N;;;;; -13193;EGYPTIAN HIEROGLYPH I010;Lo;0;L;;;;;N;;;;; -13194;EGYPTIAN HIEROGLYPH I010A;Lo;0;L;;;;;N;;;;; -13195;EGYPTIAN HIEROGLYPH I011;Lo;0;L;;;;;N;;;;; -13196;EGYPTIAN HIEROGLYPH I011A;Lo;0;L;;;;;N;;;;; -13197;EGYPTIAN HIEROGLYPH I012;Lo;0;L;;;;;N;;;;; -13198;EGYPTIAN HIEROGLYPH I013;Lo;0;L;;;;;N;;;;; -13199;EGYPTIAN HIEROGLYPH I014;Lo;0;L;;;;;N;;;;; -1319A;EGYPTIAN HIEROGLYPH I015;Lo;0;L;;;;;N;;;;; -1319B;EGYPTIAN HIEROGLYPH K001;Lo;0;L;;;;;N;;;;; -1319C;EGYPTIAN HIEROGLYPH K002;Lo;0;L;;;;;N;;;;; -1319D;EGYPTIAN HIEROGLYPH K003;Lo;0;L;;;;;N;;;;; -1319E;EGYPTIAN HIEROGLYPH K004;Lo;0;L;;;;;N;;;;; -1319F;EGYPTIAN HIEROGLYPH K005;Lo;0;L;;;;;N;;;;; -131A0;EGYPTIAN HIEROGLYPH K006;Lo;0;L;;;;;N;;;;; -131A1;EGYPTIAN HIEROGLYPH K007;Lo;0;L;;;;;N;;;;; -131A2;EGYPTIAN HIEROGLYPH K008;Lo;0;L;;;;;N;;;;; -131A3;EGYPTIAN HIEROGLYPH L001;Lo;0;L;;;;;N;;;;; -131A4;EGYPTIAN HIEROGLYPH L002;Lo;0;L;;;;;N;;;;; -131A5;EGYPTIAN HIEROGLYPH L002A;Lo;0;L;;;;;N;;;;; -131A6;EGYPTIAN HIEROGLYPH L003;Lo;0;L;;;;;N;;;;; -131A7;EGYPTIAN HIEROGLYPH L004;Lo;0;L;;;;;N;;;;; -131A8;EGYPTIAN HIEROGLYPH L005;Lo;0;L;;;;;N;;;;; -131A9;EGYPTIAN HIEROGLYPH L006;Lo;0;L;;;;;N;;;;; -131AA;EGYPTIAN HIEROGLYPH L006A;Lo;0;L;;;;;N;;;;; -131AB;EGYPTIAN HIEROGLYPH L007;Lo;0;L;;;;;N;;;;; -131AC;EGYPTIAN HIEROGLYPH L008;Lo;0;L;;;;;N;;;;; -131AD;EGYPTIAN HIEROGLYPH M001;Lo;0;L;;;;;N;;;;; -131AE;EGYPTIAN HIEROGLYPH M001A;Lo;0;L;;;;;N;;;;; -131AF;EGYPTIAN HIEROGLYPH M001B;Lo;0;L;;;;;N;;;;; -131B0;EGYPTIAN HIEROGLYPH M002;Lo;0;L;;;;;N;;;;; -131B1;EGYPTIAN HIEROGLYPH M003;Lo;0;L;;;;;N;;;;; -131B2;EGYPTIAN HIEROGLYPH M003A;Lo;0;L;;;;;N;;;;; -131B3;EGYPTIAN HIEROGLYPH M004;Lo;0;L;;;;;N;;;;; -131B4;EGYPTIAN HIEROGLYPH M005;Lo;0;L;;;;;N;;;;; -131B5;EGYPTIAN HIEROGLYPH M006;Lo;0;L;;;;;N;;;;; -131B6;EGYPTIAN HIEROGLYPH M007;Lo;0;L;;;;;N;;;;; -131B7;EGYPTIAN HIEROGLYPH M008;Lo;0;L;;;;;N;;;;; -131B8;EGYPTIAN HIEROGLYPH M009;Lo;0;L;;;;;N;;;;; -131B9;EGYPTIAN HIEROGLYPH M010;Lo;0;L;;;;;N;;;;; -131BA;EGYPTIAN HIEROGLYPH M010A;Lo;0;L;;;;;N;;;;; -131BB;EGYPTIAN HIEROGLYPH M011;Lo;0;L;;;;;N;;;;; -131BC;EGYPTIAN HIEROGLYPH M012;Lo;0;L;;;;;N;;;;; -131BD;EGYPTIAN HIEROGLYPH M012A;Lo;0;L;;;;;N;;;;; -131BE;EGYPTIAN HIEROGLYPH M012B;Lo;0;L;;;;;N;;;;; -131BF;EGYPTIAN HIEROGLYPH M012C;Lo;0;L;;;;;N;;;;; -131C0;EGYPTIAN HIEROGLYPH M012D;Lo;0;L;;;;;N;;;;; -131C1;EGYPTIAN HIEROGLYPH M012E;Lo;0;L;;;;;N;;;;; -131C2;EGYPTIAN HIEROGLYPH M012F;Lo;0;L;;;;;N;;;;; -131C3;EGYPTIAN HIEROGLYPH M012G;Lo;0;L;;;;;N;;;;; -131C4;EGYPTIAN HIEROGLYPH M012H;Lo;0;L;;;;;N;;;;; -131C5;EGYPTIAN HIEROGLYPH M013;Lo;0;L;;;;;N;;;;; -131C6;EGYPTIAN HIEROGLYPH M014;Lo;0;L;;;;;N;;;;; -131C7;EGYPTIAN HIEROGLYPH M015;Lo;0;L;;;;;N;;;;; -131C8;EGYPTIAN HIEROGLYPH M015A;Lo;0;L;;;;;N;;;;; -131C9;EGYPTIAN HIEROGLYPH M016;Lo;0;L;;;;;N;;;;; -131CA;EGYPTIAN HIEROGLYPH M016A;Lo;0;L;;;;;N;;;;; -131CB;EGYPTIAN HIEROGLYPH M017;Lo;0;L;;;;;N;;;;; -131CC;EGYPTIAN HIEROGLYPH M017A;Lo;0;L;;;;;N;;;;; -131CD;EGYPTIAN HIEROGLYPH M018;Lo;0;L;;;;;N;;;;; -131CE;EGYPTIAN HIEROGLYPH M019;Lo;0;L;;;;;N;;;;; -131CF;EGYPTIAN HIEROGLYPH M020;Lo;0;L;;;;;N;;;;; -131D0;EGYPTIAN HIEROGLYPH M021;Lo;0;L;;;;;N;;;;; -131D1;EGYPTIAN HIEROGLYPH M022;Lo;0;L;;;;;N;;;;; -131D2;EGYPTIAN HIEROGLYPH M022A;Lo;0;L;;;;;N;;;;; -131D3;EGYPTIAN HIEROGLYPH M023;Lo;0;L;;;;;N;;;;; -131D4;EGYPTIAN HIEROGLYPH M024;Lo;0;L;;;;;N;;;;; -131D5;EGYPTIAN HIEROGLYPH M024A;Lo;0;L;;;;;N;;;;; -131D6;EGYPTIAN HIEROGLYPH M025;Lo;0;L;;;;;N;;;;; -131D7;EGYPTIAN HIEROGLYPH M026;Lo;0;L;;;;;N;;;;; -131D8;EGYPTIAN HIEROGLYPH M027;Lo;0;L;;;;;N;;;;; -131D9;EGYPTIAN HIEROGLYPH M028;Lo;0;L;;;;;N;;;;; -131DA;EGYPTIAN HIEROGLYPH M028A;Lo;0;L;;;;;N;;;;; -131DB;EGYPTIAN HIEROGLYPH M029;Lo;0;L;;;;;N;;;;; -131DC;EGYPTIAN HIEROGLYPH M030;Lo;0;L;;;;;N;;;;; -131DD;EGYPTIAN HIEROGLYPH M031;Lo;0;L;;;;;N;;;;; -131DE;EGYPTIAN HIEROGLYPH M031A;Lo;0;L;;;;;N;;;;; -131DF;EGYPTIAN HIEROGLYPH M032;Lo;0;L;;;;;N;;;;; -131E0;EGYPTIAN HIEROGLYPH M033;Lo;0;L;;;;;N;;;;; -131E1;EGYPTIAN HIEROGLYPH M033A;Lo;0;L;;;;;N;;;;; -131E2;EGYPTIAN HIEROGLYPH M033B;Lo;0;L;;;;;N;;;;; -131E3;EGYPTIAN HIEROGLYPH M034;Lo;0;L;;;;;N;;;;; -131E4;EGYPTIAN HIEROGLYPH M035;Lo;0;L;;;;;N;;;;; -131E5;EGYPTIAN HIEROGLYPH M036;Lo;0;L;;;;;N;;;;; -131E6;EGYPTIAN HIEROGLYPH M037;Lo;0;L;;;;;N;;;;; -131E7;EGYPTIAN HIEROGLYPH M038;Lo;0;L;;;;;N;;;;; -131E8;EGYPTIAN HIEROGLYPH M039;Lo;0;L;;;;;N;;;;; -131E9;EGYPTIAN HIEROGLYPH M040;Lo;0;L;;;;;N;;;;; -131EA;EGYPTIAN HIEROGLYPH M040A;Lo;0;L;;;;;N;;;;; -131EB;EGYPTIAN HIEROGLYPH M041;Lo;0;L;;;;;N;;;;; -131EC;EGYPTIAN HIEROGLYPH M042;Lo;0;L;;;;;N;;;;; -131ED;EGYPTIAN HIEROGLYPH M043;Lo;0;L;;;;;N;;;;; -131EE;EGYPTIAN HIEROGLYPH M044;Lo;0;L;;;;;N;;;;; -131EF;EGYPTIAN HIEROGLYPH N001;Lo;0;L;;;;;N;;;;; -131F0;EGYPTIAN HIEROGLYPH N002;Lo;0;L;;;;;N;;;;; -131F1;EGYPTIAN HIEROGLYPH N003;Lo;0;L;;;;;N;;;;; -131F2;EGYPTIAN HIEROGLYPH N004;Lo;0;L;;;;;N;;;;; -131F3;EGYPTIAN HIEROGLYPH N005;Lo;0;L;;;;;N;;;;; -131F4;EGYPTIAN HIEROGLYPH N006;Lo;0;L;;;;;N;;;;; -131F5;EGYPTIAN HIEROGLYPH N007;Lo;0;L;;;;;N;;;;; -131F6;EGYPTIAN HIEROGLYPH N008;Lo;0;L;;;;;N;;;;; -131F7;EGYPTIAN HIEROGLYPH N009;Lo;0;L;;;;;N;;;;; -131F8;EGYPTIAN HIEROGLYPH N010;Lo;0;L;;;;;N;;;;; -131F9;EGYPTIAN HIEROGLYPH N011;Lo;0;L;;;;;N;;;;; -131FA;EGYPTIAN HIEROGLYPH N012;Lo;0;L;;;;;N;;;;; -131FB;EGYPTIAN HIEROGLYPH N013;Lo;0;L;;;;;N;;;;; -131FC;EGYPTIAN HIEROGLYPH N014;Lo;0;L;;;;;N;;;;; -131FD;EGYPTIAN HIEROGLYPH N015;Lo;0;L;;;;;N;;;;; -131FE;EGYPTIAN HIEROGLYPH N016;Lo;0;L;;;;;N;;;;; -131FF;EGYPTIAN HIEROGLYPH N017;Lo;0;L;;;;;N;;;;; -13200;EGYPTIAN HIEROGLYPH N018;Lo;0;L;;;;;N;;;;; -13201;EGYPTIAN HIEROGLYPH N018A;Lo;0;L;;;;;N;;;;; -13202;EGYPTIAN HIEROGLYPH N018B;Lo;0;L;;;;;N;;;;; -13203;EGYPTIAN HIEROGLYPH N019;Lo;0;L;;;;;N;;;;; -13204;EGYPTIAN HIEROGLYPH N020;Lo;0;L;;;;;N;;;;; -13205;EGYPTIAN HIEROGLYPH N021;Lo;0;L;;;;;N;;;;; -13206;EGYPTIAN HIEROGLYPH N022;Lo;0;L;;;;;N;;;;; -13207;EGYPTIAN HIEROGLYPH N023;Lo;0;L;;;;;N;;;;; -13208;EGYPTIAN HIEROGLYPH N024;Lo;0;L;;;;;N;;;;; -13209;EGYPTIAN HIEROGLYPH N025;Lo;0;L;;;;;N;;;;; -1320A;EGYPTIAN HIEROGLYPH N025A;Lo;0;L;;;;;N;;;;; -1320B;EGYPTIAN HIEROGLYPH N026;Lo;0;L;;;;;N;;;;; -1320C;EGYPTIAN HIEROGLYPH N027;Lo;0;L;;;;;N;;;;; -1320D;EGYPTIAN HIEROGLYPH N028;Lo;0;L;;;;;N;;;;; -1320E;EGYPTIAN HIEROGLYPH N029;Lo;0;L;;;;;N;;;;; -1320F;EGYPTIAN HIEROGLYPH N030;Lo;0;L;;;;;N;;;;; -13210;EGYPTIAN HIEROGLYPH N031;Lo;0;L;;;;;N;;;;; -13211;EGYPTIAN HIEROGLYPH N032;Lo;0;L;;;;;N;;;;; -13212;EGYPTIAN HIEROGLYPH N033;Lo;0;L;;;;;N;;;;; -13213;EGYPTIAN HIEROGLYPH N033A;Lo;0;L;;;;;N;;;;; -13214;EGYPTIAN HIEROGLYPH N034;Lo;0;L;;;;;N;;;;; -13215;EGYPTIAN HIEROGLYPH N034A;Lo;0;L;;;;;N;;;;; -13216;EGYPTIAN HIEROGLYPH N035;Lo;0;L;;;;;N;;;;; -13217;EGYPTIAN HIEROGLYPH N035A;Lo;0;L;;;;;N;;;;; -13218;EGYPTIAN HIEROGLYPH N036;Lo;0;L;;;;;N;;;;; -13219;EGYPTIAN HIEROGLYPH N037;Lo;0;L;;;;;N;;;;; -1321A;EGYPTIAN HIEROGLYPH N037A;Lo;0;L;;;;;N;;;;; -1321B;EGYPTIAN HIEROGLYPH N038;Lo;0;L;;;;;N;;;;; -1321C;EGYPTIAN HIEROGLYPH N039;Lo;0;L;;;;;N;;;;; -1321D;EGYPTIAN HIEROGLYPH N040;Lo;0;L;;;;;N;;;;; -1321E;EGYPTIAN HIEROGLYPH N041;Lo;0;L;;;;;N;;;;; -1321F;EGYPTIAN HIEROGLYPH N042;Lo;0;L;;;;;N;;;;; -13220;EGYPTIAN HIEROGLYPH NL001;Lo;0;L;;;;;N;;;;; -13221;EGYPTIAN HIEROGLYPH NL002;Lo;0;L;;;;;N;;;;; -13222;EGYPTIAN HIEROGLYPH NL003;Lo;0;L;;;;;N;;;;; -13223;EGYPTIAN HIEROGLYPH NL004;Lo;0;L;;;;;N;;;;; -13224;EGYPTIAN HIEROGLYPH NL005;Lo;0;L;;;;;N;;;;; -13225;EGYPTIAN HIEROGLYPH NL005A;Lo;0;L;;;;;N;;;;; -13226;EGYPTIAN HIEROGLYPH NL006;Lo;0;L;;;;;N;;;;; -13227;EGYPTIAN HIEROGLYPH NL007;Lo;0;L;;;;;N;;;;; -13228;EGYPTIAN HIEROGLYPH NL008;Lo;0;L;;;;;N;;;;; -13229;EGYPTIAN HIEROGLYPH NL009;Lo;0;L;;;;;N;;;;; -1322A;EGYPTIAN HIEROGLYPH NL010;Lo;0;L;;;;;N;;;;; -1322B;EGYPTIAN HIEROGLYPH NL011;Lo;0;L;;;;;N;;;;; -1322C;EGYPTIAN HIEROGLYPH NL012;Lo;0;L;;;;;N;;;;; -1322D;EGYPTIAN HIEROGLYPH NL013;Lo;0;L;;;;;N;;;;; -1322E;EGYPTIAN HIEROGLYPH NL014;Lo;0;L;;;;;N;;;;; -1322F;EGYPTIAN HIEROGLYPH NL015;Lo;0;L;;;;;N;;;;; -13230;EGYPTIAN HIEROGLYPH NL016;Lo;0;L;;;;;N;;;;; -13231;EGYPTIAN HIEROGLYPH NL017;Lo;0;L;;;;;N;;;;; -13232;EGYPTIAN HIEROGLYPH NL017A;Lo;0;L;;;;;N;;;;; -13233;EGYPTIAN HIEROGLYPH NL018;Lo;0;L;;;;;N;;;;; -13234;EGYPTIAN HIEROGLYPH NL019;Lo;0;L;;;;;N;;;;; -13235;EGYPTIAN HIEROGLYPH NL020;Lo;0;L;;;;;N;;;;; -13236;EGYPTIAN HIEROGLYPH NU001;Lo;0;L;;;;;N;;;;; -13237;EGYPTIAN HIEROGLYPH NU002;Lo;0;L;;;;;N;;;;; -13238;EGYPTIAN HIEROGLYPH NU003;Lo;0;L;;;;;N;;;;; -13239;EGYPTIAN HIEROGLYPH NU004;Lo;0;L;;;;;N;;;;; -1323A;EGYPTIAN HIEROGLYPH NU005;Lo;0;L;;;;;N;;;;; -1323B;EGYPTIAN HIEROGLYPH NU006;Lo;0;L;;;;;N;;;;; -1323C;EGYPTIAN HIEROGLYPH NU007;Lo;0;L;;;;;N;;;;; -1323D;EGYPTIAN HIEROGLYPH NU008;Lo;0;L;;;;;N;;;;; -1323E;EGYPTIAN HIEROGLYPH NU009;Lo;0;L;;;;;N;;;;; -1323F;EGYPTIAN HIEROGLYPH NU010;Lo;0;L;;;;;N;;;;; -13240;EGYPTIAN HIEROGLYPH NU010A;Lo;0;L;;;;;N;;;;; -13241;EGYPTIAN HIEROGLYPH NU011;Lo;0;L;;;;;N;;;;; -13242;EGYPTIAN HIEROGLYPH NU011A;Lo;0;L;;;;;N;;;;; -13243;EGYPTIAN HIEROGLYPH NU012;Lo;0;L;;;;;N;;;;; -13244;EGYPTIAN HIEROGLYPH NU013;Lo;0;L;;;;;N;;;;; -13245;EGYPTIAN HIEROGLYPH NU014;Lo;0;L;;;;;N;;;;; -13246;EGYPTIAN HIEROGLYPH NU015;Lo;0;L;;;;;N;;;;; -13247;EGYPTIAN HIEROGLYPH NU016;Lo;0;L;;;;;N;;;;; -13248;EGYPTIAN HIEROGLYPH NU017;Lo;0;L;;;;;N;;;;; -13249;EGYPTIAN HIEROGLYPH NU018;Lo;0;L;;;;;N;;;;; -1324A;EGYPTIAN HIEROGLYPH NU018A;Lo;0;L;;;;;N;;;;; -1324B;EGYPTIAN HIEROGLYPH NU019;Lo;0;L;;;;;N;;;;; -1324C;EGYPTIAN HIEROGLYPH NU020;Lo;0;L;;;;;N;;;;; -1324D;EGYPTIAN HIEROGLYPH NU021;Lo;0;L;;;;;N;;;;; -1324E;EGYPTIAN HIEROGLYPH NU022;Lo;0;L;;;;;N;;;;; -1324F;EGYPTIAN HIEROGLYPH NU022A;Lo;0;L;;;;;N;;;;; -13250;EGYPTIAN HIEROGLYPH O001;Lo;0;L;;;;;N;;;;; -13251;EGYPTIAN HIEROGLYPH O001A;Lo;0;L;;;;;N;;;;; -13252;EGYPTIAN HIEROGLYPH O002;Lo;0;L;;;;;N;;;;; -13253;EGYPTIAN HIEROGLYPH O003;Lo;0;L;;;;;N;;;;; -13254;EGYPTIAN HIEROGLYPH O004;Lo;0;L;;;;;N;;;;; -13255;EGYPTIAN HIEROGLYPH O005;Lo;0;L;;;;;N;;;;; -13256;EGYPTIAN HIEROGLYPH O005A;Lo;0;L;;;;;N;;;;; -13257;EGYPTIAN HIEROGLYPH O006;Lo;0;L;;;;;N;;;;; -13258;EGYPTIAN HIEROGLYPH O006A;Lo;0;L;;;;;N;;;;; -13259;EGYPTIAN HIEROGLYPH O006B;Lo;0;L;;;;;N;;;;; -1325A;EGYPTIAN HIEROGLYPH O006C;Lo;0;L;;;;;N;;;;; -1325B;EGYPTIAN HIEROGLYPH O006D;Lo;0;L;;;;;N;;;;; -1325C;EGYPTIAN HIEROGLYPH O006E;Lo;0;L;;;;;N;;;;; -1325D;EGYPTIAN HIEROGLYPH O006F;Lo;0;L;;;;;N;;;;; -1325E;EGYPTIAN HIEROGLYPH O007;Lo;0;L;;;;;N;;;;; -1325F;EGYPTIAN HIEROGLYPH O008;Lo;0;L;;;;;N;;;;; -13260;EGYPTIAN HIEROGLYPH O009;Lo;0;L;;;;;N;;;;; -13261;EGYPTIAN HIEROGLYPH O010;Lo;0;L;;;;;N;;;;; -13262;EGYPTIAN HIEROGLYPH O010A;Lo;0;L;;;;;N;;;;; -13263;EGYPTIAN HIEROGLYPH O010B;Lo;0;L;;;;;N;;;;; -13264;EGYPTIAN HIEROGLYPH O010C;Lo;0;L;;;;;N;;;;; -13265;EGYPTIAN HIEROGLYPH O011;Lo;0;L;;;;;N;;;;; -13266;EGYPTIAN HIEROGLYPH O012;Lo;0;L;;;;;N;;;;; -13267;EGYPTIAN HIEROGLYPH O013;Lo;0;L;;;;;N;;;;; -13268;EGYPTIAN HIEROGLYPH O014;Lo;0;L;;;;;N;;;;; -13269;EGYPTIAN HIEROGLYPH O015;Lo;0;L;;;;;N;;;;; -1326A;EGYPTIAN HIEROGLYPH O016;Lo;0;L;;;;;N;;;;; -1326B;EGYPTIAN HIEROGLYPH O017;Lo;0;L;;;;;N;;;;; -1326C;EGYPTIAN HIEROGLYPH O018;Lo;0;L;;;;;N;;;;; -1326D;EGYPTIAN HIEROGLYPH O019;Lo;0;L;;;;;N;;;;; -1326E;EGYPTIAN HIEROGLYPH O019A;Lo;0;L;;;;;N;;;;; -1326F;EGYPTIAN HIEROGLYPH O020;Lo;0;L;;;;;N;;;;; -13270;EGYPTIAN HIEROGLYPH O020A;Lo;0;L;;;;;N;;;;; -13271;EGYPTIAN HIEROGLYPH O021;Lo;0;L;;;;;N;;;;; -13272;EGYPTIAN HIEROGLYPH O022;Lo;0;L;;;;;N;;;;; -13273;EGYPTIAN HIEROGLYPH O023;Lo;0;L;;;;;N;;;;; -13274;EGYPTIAN HIEROGLYPH O024;Lo;0;L;;;;;N;;;;; -13275;EGYPTIAN HIEROGLYPH O024A;Lo;0;L;;;;;N;;;;; -13276;EGYPTIAN HIEROGLYPH O025;Lo;0;L;;;;;N;;;;; -13277;EGYPTIAN HIEROGLYPH O025A;Lo;0;L;;;;;N;;;;; -13278;EGYPTIAN HIEROGLYPH O026;Lo;0;L;;;;;N;;;;; -13279;EGYPTIAN HIEROGLYPH O027;Lo;0;L;;;;;N;;;;; -1327A;EGYPTIAN HIEROGLYPH O028;Lo;0;L;;;;;N;;;;; -1327B;EGYPTIAN HIEROGLYPH O029;Lo;0;L;;;;;N;;;;; -1327C;EGYPTIAN HIEROGLYPH O029A;Lo;0;L;;;;;N;;;;; -1327D;EGYPTIAN HIEROGLYPH O030;Lo;0;L;;;;;N;;;;; -1327E;EGYPTIAN HIEROGLYPH O030A;Lo;0;L;;;;;N;;;;; -1327F;EGYPTIAN HIEROGLYPH O031;Lo;0;L;;;;;N;;;;; -13280;EGYPTIAN HIEROGLYPH O032;Lo;0;L;;;;;N;;;;; -13281;EGYPTIAN HIEROGLYPH O033;Lo;0;L;;;;;N;;;;; -13282;EGYPTIAN HIEROGLYPH O033A;Lo;0;L;;;;;N;;;;; -13283;EGYPTIAN HIEROGLYPH O034;Lo;0;L;;;;;N;;;;; -13284;EGYPTIAN HIEROGLYPH O035;Lo;0;L;;;;;N;;;;; -13285;EGYPTIAN HIEROGLYPH O036;Lo;0;L;;;;;N;;;;; -13286;EGYPTIAN HIEROGLYPH O036A;Lo;0;L;;;;;N;;;;; -13287;EGYPTIAN HIEROGLYPH O036B;Lo;0;L;;;;;N;;;;; -13288;EGYPTIAN HIEROGLYPH O036C;Lo;0;L;;;;;N;;;;; -13289;EGYPTIAN HIEROGLYPH O036D;Lo;0;L;;;;;N;;;;; -1328A;EGYPTIAN HIEROGLYPH O037;Lo;0;L;;;;;N;;;;; -1328B;EGYPTIAN HIEROGLYPH O038;Lo;0;L;;;;;N;;;;; -1328C;EGYPTIAN HIEROGLYPH O039;Lo;0;L;;;;;N;;;;; -1328D;EGYPTIAN HIEROGLYPH O040;Lo;0;L;;;;;N;;;;; -1328E;EGYPTIAN HIEROGLYPH O041;Lo;0;L;;;;;N;;;;; -1328F;EGYPTIAN HIEROGLYPH O042;Lo;0;L;;;;;N;;;;; -13290;EGYPTIAN HIEROGLYPH O043;Lo;0;L;;;;;N;;;;; -13291;EGYPTIAN HIEROGLYPH O044;Lo;0;L;;;;;N;;;;; -13292;EGYPTIAN HIEROGLYPH O045;Lo;0;L;;;;;N;;;;; -13293;EGYPTIAN HIEROGLYPH O046;Lo;0;L;;;;;N;;;;; -13294;EGYPTIAN HIEROGLYPH O047;Lo;0;L;;;;;N;;;;; -13295;EGYPTIAN HIEROGLYPH O048;Lo;0;L;;;;;N;;;;; -13296;EGYPTIAN HIEROGLYPH O049;Lo;0;L;;;;;N;;;;; -13297;EGYPTIAN HIEROGLYPH O050;Lo;0;L;;;;;N;;;;; -13298;EGYPTIAN HIEROGLYPH O050A;Lo;0;L;;;;;N;;;;; -13299;EGYPTIAN HIEROGLYPH O050B;Lo;0;L;;;;;N;;;;; -1329A;EGYPTIAN HIEROGLYPH O051;Lo;0;L;;;;;N;;;;; -1329B;EGYPTIAN HIEROGLYPH P001;Lo;0;L;;;;;N;;;;; -1329C;EGYPTIAN HIEROGLYPH P001A;Lo;0;L;;;;;N;;;;; -1329D;EGYPTIAN HIEROGLYPH P002;Lo;0;L;;;;;N;;;;; -1329E;EGYPTIAN HIEROGLYPH P003;Lo;0;L;;;;;N;;;;; -1329F;EGYPTIAN HIEROGLYPH P003A;Lo;0;L;;;;;N;;;;; -132A0;EGYPTIAN HIEROGLYPH P004;Lo;0;L;;;;;N;;;;; -132A1;EGYPTIAN HIEROGLYPH P005;Lo;0;L;;;;;N;;;;; -132A2;EGYPTIAN HIEROGLYPH P006;Lo;0;L;;;;;N;;;;; -132A3;EGYPTIAN HIEROGLYPH P007;Lo;0;L;;;;;N;;;;; -132A4;EGYPTIAN HIEROGLYPH P008;Lo;0;L;;;;;N;;;;; -132A5;EGYPTIAN HIEROGLYPH P009;Lo;0;L;;;;;N;;;;; -132A6;EGYPTIAN HIEROGLYPH P010;Lo;0;L;;;;;N;;;;; -132A7;EGYPTIAN HIEROGLYPH P011;Lo;0;L;;;;;N;;;;; -132A8;EGYPTIAN HIEROGLYPH Q001;Lo;0;L;;;;;N;;;;; -132A9;EGYPTIAN HIEROGLYPH Q002;Lo;0;L;;;;;N;;;;; -132AA;EGYPTIAN HIEROGLYPH Q003;Lo;0;L;;;;;N;;;;; -132AB;EGYPTIAN HIEROGLYPH Q004;Lo;0;L;;;;;N;;;;; -132AC;EGYPTIAN HIEROGLYPH Q005;Lo;0;L;;;;;N;;;;; -132AD;EGYPTIAN HIEROGLYPH Q006;Lo;0;L;;;;;N;;;;; -132AE;EGYPTIAN HIEROGLYPH Q007;Lo;0;L;;;;;N;;;;; -132AF;EGYPTIAN HIEROGLYPH R001;Lo;0;L;;;;;N;;;;; -132B0;EGYPTIAN HIEROGLYPH R002;Lo;0;L;;;;;N;;;;; -132B1;EGYPTIAN HIEROGLYPH R002A;Lo;0;L;;;;;N;;;;; -132B2;EGYPTIAN HIEROGLYPH R003;Lo;0;L;;;;;N;;;;; -132B3;EGYPTIAN HIEROGLYPH R003A;Lo;0;L;;;;;N;;;;; -132B4;EGYPTIAN HIEROGLYPH R003B;Lo;0;L;;;;;N;;;;; -132B5;EGYPTIAN HIEROGLYPH R004;Lo;0;L;;;;;N;;;;; -132B6;EGYPTIAN HIEROGLYPH R005;Lo;0;L;;;;;N;;;;; -132B7;EGYPTIAN HIEROGLYPH R006;Lo;0;L;;;;;N;;;;; -132B8;EGYPTIAN HIEROGLYPH R007;Lo;0;L;;;;;N;;;;; -132B9;EGYPTIAN HIEROGLYPH R008;Lo;0;L;;;;;N;;;;; -132BA;EGYPTIAN HIEROGLYPH R009;Lo;0;L;;;;;N;;;;; -132BB;EGYPTIAN HIEROGLYPH R010;Lo;0;L;;;;;N;;;;; -132BC;EGYPTIAN HIEROGLYPH R010A;Lo;0;L;;;;;N;;;;; -132BD;EGYPTIAN HIEROGLYPH R011;Lo;0;L;;;;;N;;;;; -132BE;EGYPTIAN HIEROGLYPH R012;Lo;0;L;;;;;N;;;;; -132BF;EGYPTIAN HIEROGLYPH R013;Lo;0;L;;;;;N;;;;; -132C0;EGYPTIAN HIEROGLYPH R014;Lo;0;L;;;;;N;;;;; -132C1;EGYPTIAN HIEROGLYPH R015;Lo;0;L;;;;;N;;;;; -132C2;EGYPTIAN HIEROGLYPH R016;Lo;0;L;;;;;N;;;;; -132C3;EGYPTIAN HIEROGLYPH R016A;Lo;0;L;;;;;N;;;;; -132C4;EGYPTIAN HIEROGLYPH R017;Lo;0;L;;;;;N;;;;; -132C5;EGYPTIAN HIEROGLYPH R018;Lo;0;L;;;;;N;;;;; -132C6;EGYPTIAN HIEROGLYPH R019;Lo;0;L;;;;;N;;;;; -132C7;EGYPTIAN HIEROGLYPH R020;Lo;0;L;;;;;N;;;;; -132C8;EGYPTIAN HIEROGLYPH R021;Lo;0;L;;;;;N;;;;; -132C9;EGYPTIAN HIEROGLYPH R022;Lo;0;L;;;;;N;;;;; -132CA;EGYPTIAN HIEROGLYPH R023;Lo;0;L;;;;;N;;;;; -132CB;EGYPTIAN HIEROGLYPH R024;Lo;0;L;;;;;N;;;;; -132CC;EGYPTIAN HIEROGLYPH R025;Lo;0;L;;;;;N;;;;; -132CD;EGYPTIAN HIEROGLYPH R026;Lo;0;L;;;;;N;;;;; -132CE;EGYPTIAN HIEROGLYPH R027;Lo;0;L;;;;;N;;;;; -132CF;EGYPTIAN HIEROGLYPH R028;Lo;0;L;;;;;N;;;;; -132D0;EGYPTIAN HIEROGLYPH R029;Lo;0;L;;;;;N;;;;; -132D1;EGYPTIAN HIEROGLYPH S001;Lo;0;L;;;;;N;;;;; -132D2;EGYPTIAN HIEROGLYPH S002;Lo;0;L;;;;;N;;;;; -132D3;EGYPTIAN HIEROGLYPH S002A;Lo;0;L;;;;;N;;;;; -132D4;EGYPTIAN HIEROGLYPH S003;Lo;0;L;;;;;N;;;;; -132D5;EGYPTIAN HIEROGLYPH S004;Lo;0;L;;;;;N;;;;; -132D6;EGYPTIAN HIEROGLYPH S005;Lo;0;L;;;;;N;;;;; -132D7;EGYPTIAN HIEROGLYPH S006;Lo;0;L;;;;;N;;;;; -132D8;EGYPTIAN HIEROGLYPH S006A;Lo;0;L;;;;;N;;;;; -132D9;EGYPTIAN HIEROGLYPH S007;Lo;0;L;;;;;N;;;;; -132DA;EGYPTIAN HIEROGLYPH S008;Lo;0;L;;;;;N;;;;; -132DB;EGYPTIAN HIEROGLYPH S009;Lo;0;L;;;;;N;;;;; -132DC;EGYPTIAN HIEROGLYPH S010;Lo;0;L;;;;;N;;;;; -132DD;EGYPTIAN HIEROGLYPH S011;Lo;0;L;;;;;N;;;;; -132DE;EGYPTIAN HIEROGLYPH S012;Lo;0;L;;;;;N;;;;; -132DF;EGYPTIAN HIEROGLYPH S013;Lo;0;L;;;;;N;;;;; -132E0;EGYPTIAN HIEROGLYPH S014;Lo;0;L;;;;;N;;;;; -132E1;EGYPTIAN HIEROGLYPH S014A;Lo;0;L;;;;;N;;;;; -132E2;EGYPTIAN HIEROGLYPH S014B;Lo;0;L;;;;;N;;;;; -132E3;EGYPTIAN HIEROGLYPH S015;Lo;0;L;;;;;N;;;;; -132E4;EGYPTIAN HIEROGLYPH S016;Lo;0;L;;;;;N;;;;; -132E5;EGYPTIAN HIEROGLYPH S017;Lo;0;L;;;;;N;;;;; -132E6;EGYPTIAN HIEROGLYPH S017A;Lo;0;L;;;;;N;;;;; -132E7;EGYPTIAN HIEROGLYPH S018;Lo;0;L;;;;;N;;;;; -132E8;EGYPTIAN HIEROGLYPH S019;Lo;0;L;;;;;N;;;;; -132E9;EGYPTIAN HIEROGLYPH S020;Lo;0;L;;;;;N;;;;; -132EA;EGYPTIAN HIEROGLYPH S021;Lo;0;L;;;;;N;;;;; -132EB;EGYPTIAN HIEROGLYPH S022;Lo;0;L;;;;;N;;;;; -132EC;EGYPTIAN HIEROGLYPH S023;Lo;0;L;;;;;N;;;;; -132ED;EGYPTIAN HIEROGLYPH S024;Lo;0;L;;;;;N;;;;; -132EE;EGYPTIAN HIEROGLYPH S025;Lo;0;L;;;;;N;;;;; -132EF;EGYPTIAN HIEROGLYPH S026;Lo;0;L;;;;;N;;;;; -132F0;EGYPTIAN HIEROGLYPH S026A;Lo;0;L;;;;;N;;;;; -132F1;EGYPTIAN HIEROGLYPH S026B;Lo;0;L;;;;;N;;;;; -132F2;EGYPTIAN HIEROGLYPH S027;Lo;0;L;;;;;N;;;;; -132F3;EGYPTIAN HIEROGLYPH S028;Lo;0;L;;;;;N;;;;; -132F4;EGYPTIAN HIEROGLYPH S029;Lo;0;L;;;;;N;;;;; -132F5;EGYPTIAN HIEROGLYPH S030;Lo;0;L;;;;;N;;;;; -132F6;EGYPTIAN HIEROGLYPH S031;Lo;0;L;;;;;N;;;;; -132F7;EGYPTIAN HIEROGLYPH S032;Lo;0;L;;;;;N;;;;; -132F8;EGYPTIAN HIEROGLYPH S033;Lo;0;L;;;;;N;;;;; -132F9;EGYPTIAN HIEROGLYPH S034;Lo;0;L;;;;;N;;;;; -132FA;EGYPTIAN HIEROGLYPH S035;Lo;0;L;;;;;N;;;;; -132FB;EGYPTIAN HIEROGLYPH S035A;Lo;0;L;;;;;N;;;;; -132FC;EGYPTIAN HIEROGLYPH S036;Lo;0;L;;;;;N;;;;; -132FD;EGYPTIAN HIEROGLYPH S037;Lo;0;L;;;;;N;;;;; -132FE;EGYPTIAN HIEROGLYPH S038;Lo;0;L;;;;;N;;;;; -132FF;EGYPTIAN HIEROGLYPH S039;Lo;0;L;;;;;N;;;;; -13300;EGYPTIAN HIEROGLYPH S040;Lo;0;L;;;;;N;;;;; -13301;EGYPTIAN HIEROGLYPH S041;Lo;0;L;;;;;N;;;;; -13302;EGYPTIAN HIEROGLYPH S042;Lo;0;L;;;;;N;;;;; -13303;EGYPTIAN HIEROGLYPH S043;Lo;0;L;;;;;N;;;;; -13304;EGYPTIAN HIEROGLYPH S044;Lo;0;L;;;;;N;;;;; -13305;EGYPTIAN HIEROGLYPH S045;Lo;0;L;;;;;N;;;;; -13306;EGYPTIAN HIEROGLYPH S046;Lo;0;L;;;;;N;;;;; -13307;EGYPTIAN HIEROGLYPH T001;Lo;0;L;;;;;N;;;;; -13308;EGYPTIAN HIEROGLYPH T002;Lo;0;L;;;;;N;;;;; -13309;EGYPTIAN HIEROGLYPH T003;Lo;0;L;;;;;N;;;;; -1330A;EGYPTIAN HIEROGLYPH T003A;Lo;0;L;;;;;N;;;;; -1330B;EGYPTIAN HIEROGLYPH T004;Lo;0;L;;;;;N;;;;; -1330C;EGYPTIAN HIEROGLYPH T005;Lo;0;L;;;;;N;;;;; -1330D;EGYPTIAN HIEROGLYPH T006;Lo;0;L;;;;;N;;;;; -1330E;EGYPTIAN HIEROGLYPH T007;Lo;0;L;;;;;N;;;;; -1330F;EGYPTIAN HIEROGLYPH T007A;Lo;0;L;;;;;N;;;;; -13310;EGYPTIAN HIEROGLYPH T008;Lo;0;L;;;;;N;;;;; -13311;EGYPTIAN HIEROGLYPH T008A;Lo;0;L;;;;;N;;;;; -13312;EGYPTIAN HIEROGLYPH T009;Lo;0;L;;;;;N;;;;; -13313;EGYPTIAN HIEROGLYPH T009A;Lo;0;L;;;;;N;;;;; -13314;EGYPTIAN HIEROGLYPH T010;Lo;0;L;;;;;N;;;;; -13315;EGYPTIAN HIEROGLYPH T011;Lo;0;L;;;;;N;;;;; -13316;EGYPTIAN HIEROGLYPH T011A;Lo;0;L;;;;;N;;;;; -13317;EGYPTIAN HIEROGLYPH T012;Lo;0;L;;;;;N;;;;; -13318;EGYPTIAN HIEROGLYPH T013;Lo;0;L;;;;;N;;;;; -13319;EGYPTIAN HIEROGLYPH T014;Lo;0;L;;;;;N;;;;; -1331A;EGYPTIAN HIEROGLYPH T015;Lo;0;L;;;;;N;;;;; -1331B;EGYPTIAN HIEROGLYPH T016;Lo;0;L;;;;;N;;;;; -1331C;EGYPTIAN HIEROGLYPH T016A;Lo;0;L;;;;;N;;;;; -1331D;EGYPTIAN HIEROGLYPH T017;Lo;0;L;;;;;N;;;;; -1331E;EGYPTIAN HIEROGLYPH T018;Lo;0;L;;;;;N;;;;; -1331F;EGYPTIAN HIEROGLYPH T019;Lo;0;L;;;;;N;;;;; -13320;EGYPTIAN HIEROGLYPH T020;Lo;0;L;;;;;N;;;;; -13321;EGYPTIAN HIEROGLYPH T021;Lo;0;L;;;;;N;;;;; -13322;EGYPTIAN HIEROGLYPH T022;Lo;0;L;;;;;N;;;;; -13323;EGYPTIAN HIEROGLYPH T023;Lo;0;L;;;;;N;;;;; -13324;EGYPTIAN HIEROGLYPH T024;Lo;0;L;;;;;N;;;;; -13325;EGYPTIAN HIEROGLYPH T025;Lo;0;L;;;;;N;;;;; -13326;EGYPTIAN HIEROGLYPH T026;Lo;0;L;;;;;N;;;;; -13327;EGYPTIAN HIEROGLYPH T027;Lo;0;L;;;;;N;;;;; -13328;EGYPTIAN HIEROGLYPH T028;Lo;0;L;;;;;N;;;;; -13329;EGYPTIAN HIEROGLYPH T029;Lo;0;L;;;;;N;;;;; -1332A;EGYPTIAN HIEROGLYPH T030;Lo;0;L;;;;;N;;;;; -1332B;EGYPTIAN HIEROGLYPH T031;Lo;0;L;;;;;N;;;;; -1332C;EGYPTIAN HIEROGLYPH T032;Lo;0;L;;;;;N;;;;; -1332D;EGYPTIAN HIEROGLYPH T032A;Lo;0;L;;;;;N;;;;; -1332E;EGYPTIAN HIEROGLYPH T033;Lo;0;L;;;;;N;;;;; -1332F;EGYPTIAN HIEROGLYPH T033A;Lo;0;L;;;;;N;;;;; -13330;EGYPTIAN HIEROGLYPH T034;Lo;0;L;;;;;N;;;;; -13331;EGYPTIAN HIEROGLYPH T035;Lo;0;L;;;;;N;;;;; -13332;EGYPTIAN HIEROGLYPH T036;Lo;0;L;;;;;N;;;;; -13333;EGYPTIAN HIEROGLYPH U001;Lo;0;L;;;;;N;;;;; -13334;EGYPTIAN HIEROGLYPH U002;Lo;0;L;;;;;N;;;;; -13335;EGYPTIAN HIEROGLYPH U003;Lo;0;L;;;;;N;;;;; -13336;EGYPTIAN HIEROGLYPH U004;Lo;0;L;;;;;N;;;;; -13337;EGYPTIAN HIEROGLYPH U005;Lo;0;L;;;;;N;;;;; -13338;EGYPTIAN HIEROGLYPH U006;Lo;0;L;;;;;N;;;;; -13339;EGYPTIAN HIEROGLYPH U006A;Lo;0;L;;;;;N;;;;; -1333A;EGYPTIAN HIEROGLYPH U006B;Lo;0;L;;;;;N;;;;; -1333B;EGYPTIAN HIEROGLYPH U007;Lo;0;L;;;;;N;;;;; -1333C;EGYPTIAN HIEROGLYPH U008;Lo;0;L;;;;;N;;;;; -1333D;EGYPTIAN HIEROGLYPH U009;Lo;0;L;;;;;N;;;;; -1333E;EGYPTIAN HIEROGLYPH U010;Lo;0;L;;;;;N;;;;; -1333F;EGYPTIAN HIEROGLYPH U011;Lo;0;L;;;;;N;;;;; -13340;EGYPTIAN HIEROGLYPH U012;Lo;0;L;;;;;N;;;;; -13341;EGYPTIAN HIEROGLYPH U013;Lo;0;L;;;;;N;;;;; -13342;EGYPTIAN HIEROGLYPH U014;Lo;0;L;;;;;N;;;;; -13343;EGYPTIAN HIEROGLYPH U015;Lo;0;L;;;;;N;;;;; -13344;EGYPTIAN HIEROGLYPH U016;Lo;0;L;;;;;N;;;;; -13345;EGYPTIAN HIEROGLYPH U017;Lo;0;L;;;;;N;;;;; -13346;EGYPTIAN HIEROGLYPH U018;Lo;0;L;;;;;N;;;;; -13347;EGYPTIAN HIEROGLYPH U019;Lo;0;L;;;;;N;;;;; -13348;EGYPTIAN HIEROGLYPH U020;Lo;0;L;;;;;N;;;;; -13349;EGYPTIAN HIEROGLYPH U021;Lo;0;L;;;;;N;;;;; -1334A;EGYPTIAN HIEROGLYPH U022;Lo;0;L;;;;;N;;;;; -1334B;EGYPTIAN HIEROGLYPH U023;Lo;0;L;;;;;N;;;;; -1334C;EGYPTIAN HIEROGLYPH U023A;Lo;0;L;;;;;N;;;;; -1334D;EGYPTIAN HIEROGLYPH U024;Lo;0;L;;;;;N;;;;; -1334E;EGYPTIAN HIEROGLYPH U025;Lo;0;L;;;;;N;;;;; -1334F;EGYPTIAN HIEROGLYPH U026;Lo;0;L;;;;;N;;;;; -13350;EGYPTIAN HIEROGLYPH U027;Lo;0;L;;;;;N;;;;; -13351;EGYPTIAN HIEROGLYPH U028;Lo;0;L;;;;;N;;;;; -13352;EGYPTIAN HIEROGLYPH U029;Lo;0;L;;;;;N;;;;; -13353;EGYPTIAN HIEROGLYPH U029A;Lo;0;L;;;;;N;;;;; -13354;EGYPTIAN HIEROGLYPH U030;Lo;0;L;;;;;N;;;;; -13355;EGYPTIAN HIEROGLYPH U031;Lo;0;L;;;;;N;;;;; -13356;EGYPTIAN HIEROGLYPH U032;Lo;0;L;;;;;N;;;;; -13357;EGYPTIAN HIEROGLYPH U032A;Lo;0;L;;;;;N;;;;; -13358;EGYPTIAN HIEROGLYPH U033;Lo;0;L;;;;;N;;;;; -13359;EGYPTIAN HIEROGLYPH U034;Lo;0;L;;;;;N;;;;; -1335A;EGYPTIAN HIEROGLYPH U035;Lo;0;L;;;;;N;;;;; -1335B;EGYPTIAN HIEROGLYPH U036;Lo;0;L;;;;;N;;;;; -1335C;EGYPTIAN HIEROGLYPH U037;Lo;0;L;;;;;N;;;;; -1335D;EGYPTIAN HIEROGLYPH U038;Lo;0;L;;;;;N;;;;; -1335E;EGYPTIAN HIEROGLYPH U039;Lo;0;L;;;;;N;;;;; -1335F;EGYPTIAN HIEROGLYPH U040;Lo;0;L;;;;;N;;;;; -13360;EGYPTIAN HIEROGLYPH U041;Lo;0;L;;;;;N;;;;; -13361;EGYPTIAN HIEROGLYPH U042;Lo;0;L;;;;;N;;;;; -13362;EGYPTIAN HIEROGLYPH V001;Lo;0;L;;;;;N;;;;; -13363;EGYPTIAN HIEROGLYPH V001A;Lo;0;L;;;;;N;;;;; -13364;EGYPTIAN HIEROGLYPH V001B;Lo;0;L;;;;;N;;;;; -13365;EGYPTIAN HIEROGLYPH V001C;Lo;0;L;;;;;N;;;;; -13366;EGYPTIAN HIEROGLYPH V001D;Lo;0;L;;;;;N;;;;; -13367;EGYPTIAN HIEROGLYPH V001E;Lo;0;L;;;;;N;;;;; -13368;EGYPTIAN HIEROGLYPH V001F;Lo;0;L;;;;;N;;;;; -13369;EGYPTIAN HIEROGLYPH V001G;Lo;0;L;;;;;N;;;;; -1336A;EGYPTIAN HIEROGLYPH V001H;Lo;0;L;;;;;N;;;;; -1336B;EGYPTIAN HIEROGLYPH V001I;Lo;0;L;;;;;N;;;;; -1336C;EGYPTIAN HIEROGLYPH V002;Lo;0;L;;;;;N;;;;; -1336D;EGYPTIAN HIEROGLYPH V002A;Lo;0;L;;;;;N;;;;; -1336E;EGYPTIAN HIEROGLYPH V003;Lo;0;L;;;;;N;;;;; -1336F;EGYPTIAN HIEROGLYPH V004;Lo;0;L;;;;;N;;;;; -13370;EGYPTIAN HIEROGLYPH V005;Lo;0;L;;;;;N;;;;; -13371;EGYPTIAN HIEROGLYPH V006;Lo;0;L;;;;;N;;;;; -13372;EGYPTIAN HIEROGLYPH V007;Lo;0;L;;;;;N;;;;; -13373;EGYPTIAN HIEROGLYPH V007A;Lo;0;L;;;;;N;;;;; -13374;EGYPTIAN HIEROGLYPH V007B;Lo;0;L;;;;;N;;;;; -13375;EGYPTIAN HIEROGLYPH V008;Lo;0;L;;;;;N;;;;; -13376;EGYPTIAN HIEROGLYPH V009;Lo;0;L;;;;;N;;;;; -13377;EGYPTIAN HIEROGLYPH V010;Lo;0;L;;;;;N;;;;; -13378;EGYPTIAN HIEROGLYPH V011;Lo;0;L;;;;;N;;;;; -13379;EGYPTIAN HIEROGLYPH V011A;Lo;0;L;;;;;N;;;;; -1337A;EGYPTIAN HIEROGLYPH V011B;Lo;0;L;;;;;N;;;;; -1337B;EGYPTIAN HIEROGLYPH V011C;Lo;0;L;;;;;N;;;;; -1337C;EGYPTIAN HIEROGLYPH V012;Lo;0;L;;;;;N;;;;; -1337D;EGYPTIAN HIEROGLYPH V012A;Lo;0;L;;;;;N;;;;; -1337E;EGYPTIAN HIEROGLYPH V012B;Lo;0;L;;;;;N;;;;; -1337F;EGYPTIAN HIEROGLYPH V013;Lo;0;L;;;;;N;;;;; -13380;EGYPTIAN HIEROGLYPH V014;Lo;0;L;;;;;N;;;;; -13381;EGYPTIAN HIEROGLYPH V015;Lo;0;L;;;;;N;;;;; -13382;EGYPTIAN HIEROGLYPH V016;Lo;0;L;;;;;N;;;;; -13383;EGYPTIAN HIEROGLYPH V017;Lo;0;L;;;;;N;;;;; -13384;EGYPTIAN HIEROGLYPH V018;Lo;0;L;;;;;N;;;;; -13385;EGYPTIAN HIEROGLYPH V019;Lo;0;L;;;;;N;;;;; -13386;EGYPTIAN HIEROGLYPH V020;Lo;0;L;;;;;N;;;;; -13387;EGYPTIAN HIEROGLYPH V020A;Lo;0;L;;;;;N;;;;; -13388;EGYPTIAN HIEROGLYPH V020B;Lo;0;L;;;;;N;;;;; -13389;EGYPTIAN HIEROGLYPH V020C;Lo;0;L;;;;;N;;;;; -1338A;EGYPTIAN HIEROGLYPH V020D;Lo;0;L;;;;;N;;;;; -1338B;EGYPTIAN HIEROGLYPH V020E;Lo;0;L;;;;;N;;;;; -1338C;EGYPTIAN HIEROGLYPH V020F;Lo;0;L;;;;;N;;;;; -1338D;EGYPTIAN HIEROGLYPH V020G;Lo;0;L;;;;;N;;;;; -1338E;EGYPTIAN HIEROGLYPH V020H;Lo;0;L;;;;;N;;;;; -1338F;EGYPTIAN HIEROGLYPH V020I;Lo;0;L;;;;;N;;;;; -13390;EGYPTIAN HIEROGLYPH V020J;Lo;0;L;;;;;N;;;;; -13391;EGYPTIAN HIEROGLYPH V020K;Lo;0;L;;;;;N;;;;; -13392;EGYPTIAN HIEROGLYPH V020L;Lo;0;L;;;;;N;;;;; -13393;EGYPTIAN HIEROGLYPH V021;Lo;0;L;;;;;N;;;;; -13394;EGYPTIAN HIEROGLYPH V022;Lo;0;L;;;;;N;;;;; -13395;EGYPTIAN HIEROGLYPH V023;Lo;0;L;;;;;N;;;;; -13396;EGYPTIAN HIEROGLYPH V023A;Lo;0;L;;;;;N;;;;; -13397;EGYPTIAN HIEROGLYPH V024;Lo;0;L;;;;;N;;;;; -13398;EGYPTIAN HIEROGLYPH V025;Lo;0;L;;;;;N;;;;; -13399;EGYPTIAN HIEROGLYPH V026;Lo;0;L;;;;;N;;;;; -1339A;EGYPTIAN HIEROGLYPH V027;Lo;0;L;;;;;N;;;;; -1339B;EGYPTIAN HIEROGLYPH V028;Lo;0;L;;;;;N;;;;; -1339C;EGYPTIAN HIEROGLYPH V028A;Lo;0;L;;;;;N;;;;; -1339D;EGYPTIAN HIEROGLYPH V029;Lo;0;L;;;;;N;;;;; -1339E;EGYPTIAN HIEROGLYPH V029A;Lo;0;L;;;;;N;;;;; -1339F;EGYPTIAN HIEROGLYPH V030;Lo;0;L;;;;;N;;;;; -133A0;EGYPTIAN HIEROGLYPH V030A;Lo;0;L;;;;;N;;;;; -133A1;EGYPTIAN HIEROGLYPH V031;Lo;0;L;;;;;N;;;;; -133A2;EGYPTIAN HIEROGLYPH V031A;Lo;0;L;;;;;N;;;;; -133A3;EGYPTIAN HIEROGLYPH V032;Lo;0;L;;;;;N;;;;; -133A4;EGYPTIAN HIEROGLYPH V033;Lo;0;L;;;;;N;;;;; -133A5;EGYPTIAN HIEROGLYPH V033A;Lo;0;L;;;;;N;;;;; -133A6;EGYPTIAN HIEROGLYPH V034;Lo;0;L;;;;;N;;;;; -133A7;EGYPTIAN HIEROGLYPH V035;Lo;0;L;;;;;N;;;;; -133A8;EGYPTIAN HIEROGLYPH V036;Lo;0;L;;;;;N;;;;; -133A9;EGYPTIAN HIEROGLYPH V037;Lo;0;L;;;;;N;;;;; -133AA;EGYPTIAN HIEROGLYPH V037A;Lo;0;L;;;;;N;;;;; -133AB;EGYPTIAN HIEROGLYPH V038;Lo;0;L;;;;;N;;;;; -133AC;EGYPTIAN HIEROGLYPH V039;Lo;0;L;;;;;N;;;;; -133AD;EGYPTIAN HIEROGLYPH V040;Lo;0;L;;;;;N;;;;; -133AE;EGYPTIAN HIEROGLYPH V040A;Lo;0;L;;;;;N;;;;; -133AF;EGYPTIAN HIEROGLYPH W001;Lo;0;L;;;;;N;;;;; -133B0;EGYPTIAN HIEROGLYPH W002;Lo;0;L;;;;;N;;;;; -133B1;EGYPTIAN HIEROGLYPH W003;Lo;0;L;;;;;N;;;;; -133B2;EGYPTIAN HIEROGLYPH W003A;Lo;0;L;;;;;N;;;;; -133B3;EGYPTIAN HIEROGLYPH W004;Lo;0;L;;;;;N;;;;; -133B4;EGYPTIAN HIEROGLYPH W005;Lo;0;L;;;;;N;;;;; -133B5;EGYPTIAN HIEROGLYPH W006;Lo;0;L;;;;;N;;;;; -133B6;EGYPTIAN HIEROGLYPH W007;Lo;0;L;;;;;N;;;;; -133B7;EGYPTIAN HIEROGLYPH W008;Lo;0;L;;;;;N;;;;; -133B8;EGYPTIAN HIEROGLYPH W009;Lo;0;L;;;;;N;;;;; -133B9;EGYPTIAN HIEROGLYPH W009A;Lo;0;L;;;;;N;;;;; -133BA;EGYPTIAN HIEROGLYPH W010;Lo;0;L;;;;;N;;;;; -133BB;EGYPTIAN HIEROGLYPH W010A;Lo;0;L;;;;;N;;;;; -133BC;EGYPTIAN HIEROGLYPH W011;Lo;0;L;;;;;N;;;;; -133BD;EGYPTIAN HIEROGLYPH W012;Lo;0;L;;;;;N;;;;; -133BE;EGYPTIAN HIEROGLYPH W013;Lo;0;L;;;;;N;;;;; -133BF;EGYPTIAN HIEROGLYPH W014;Lo;0;L;;;;;N;;;;; -133C0;EGYPTIAN HIEROGLYPH W014A;Lo;0;L;;;;;N;;;;; -133C1;EGYPTIAN HIEROGLYPH W015;Lo;0;L;;;;;N;;;;; -133C2;EGYPTIAN HIEROGLYPH W016;Lo;0;L;;;;;N;;;;; -133C3;EGYPTIAN HIEROGLYPH W017;Lo;0;L;;;;;N;;;;; -133C4;EGYPTIAN HIEROGLYPH W017A;Lo;0;L;;;;;N;;;;; -133C5;EGYPTIAN HIEROGLYPH W018;Lo;0;L;;;;;N;;;;; -133C6;EGYPTIAN HIEROGLYPH W018A;Lo;0;L;;;;;N;;;;; -133C7;EGYPTIAN HIEROGLYPH W019;Lo;0;L;;;;;N;;;;; -133C8;EGYPTIAN HIEROGLYPH W020;Lo;0;L;;;;;N;;;;; -133C9;EGYPTIAN HIEROGLYPH W021;Lo;0;L;;;;;N;;;;; -133CA;EGYPTIAN HIEROGLYPH W022;Lo;0;L;;;;;N;;;;; -133CB;EGYPTIAN HIEROGLYPH W023;Lo;0;L;;;;;N;;;;; -133CC;EGYPTIAN HIEROGLYPH W024;Lo;0;L;;;;;N;;;;; -133CD;EGYPTIAN HIEROGLYPH W024A;Lo;0;L;;;;;N;;;;; -133CE;EGYPTIAN HIEROGLYPH W025;Lo;0;L;;;;;N;;;;; -133CF;EGYPTIAN HIEROGLYPH X001;Lo;0;L;;;;;N;;;;; -133D0;EGYPTIAN HIEROGLYPH X002;Lo;0;L;;;;;N;;;;; -133D1;EGYPTIAN HIEROGLYPH X003;Lo;0;L;;;;;N;;;;; -133D2;EGYPTIAN HIEROGLYPH X004;Lo;0;L;;;;;N;;;;; -133D3;EGYPTIAN HIEROGLYPH X004A;Lo;0;L;;;;;N;;;;; -133D4;EGYPTIAN HIEROGLYPH X004B;Lo;0;L;;;;;N;;;;; -133D5;EGYPTIAN HIEROGLYPH X005;Lo;0;L;;;;;N;;;;; -133D6;EGYPTIAN HIEROGLYPH X006;Lo;0;L;;;;;N;;;;; -133D7;EGYPTIAN HIEROGLYPH X006A;Lo;0;L;;;;;N;;;;; -133D8;EGYPTIAN HIEROGLYPH X007;Lo;0;L;;;;;N;;;;; -133D9;EGYPTIAN HIEROGLYPH X008;Lo;0;L;;;;;N;;;;; -133DA;EGYPTIAN HIEROGLYPH X008A;Lo;0;L;;;;;N;;;;; -133DB;EGYPTIAN HIEROGLYPH Y001;Lo;0;L;;;;;N;;;;; -133DC;EGYPTIAN HIEROGLYPH Y001A;Lo;0;L;;;;;N;;;;; -133DD;EGYPTIAN HIEROGLYPH Y002;Lo;0;L;;;;;N;;;;; -133DE;EGYPTIAN HIEROGLYPH Y003;Lo;0;L;;;;;N;;;;; -133DF;EGYPTIAN HIEROGLYPH Y004;Lo;0;L;;;;;N;;;;; -133E0;EGYPTIAN HIEROGLYPH Y005;Lo;0;L;;;;;N;;;;; -133E1;EGYPTIAN HIEROGLYPH Y006;Lo;0;L;;;;;N;;;;; -133E2;EGYPTIAN HIEROGLYPH Y007;Lo;0;L;;;;;N;;;;; -133E3;EGYPTIAN HIEROGLYPH Y008;Lo;0;L;;;;;N;;;;; -133E4;EGYPTIAN HIEROGLYPH Z001;Lo;0;L;;;;;N;;;;; -133E5;EGYPTIAN HIEROGLYPH Z002;Lo;0;L;;;;;N;;;;; -133E6;EGYPTIAN HIEROGLYPH Z002A;Lo;0;L;;;;;N;;;;; -133E7;EGYPTIAN HIEROGLYPH Z002B;Lo;0;L;;;;;N;;;;; -133E8;EGYPTIAN HIEROGLYPH Z002C;Lo;0;L;;;;;N;;;;; -133E9;EGYPTIAN HIEROGLYPH Z002D;Lo;0;L;;;;;N;;;;; -133EA;EGYPTIAN HIEROGLYPH Z003;Lo;0;L;;;;;N;;;;; -133EB;EGYPTIAN HIEROGLYPH Z003A;Lo;0;L;;;;;N;;;;; -133EC;EGYPTIAN HIEROGLYPH Z003B;Lo;0;L;;;;;N;;;;; -133ED;EGYPTIAN HIEROGLYPH Z004;Lo;0;L;;;;;N;;;;; -133EE;EGYPTIAN HIEROGLYPH Z004A;Lo;0;L;;;;;N;;;;; -133EF;EGYPTIAN HIEROGLYPH Z005;Lo;0;L;;;;;N;;;;; -133F0;EGYPTIAN HIEROGLYPH Z005A;Lo;0;L;;;;;N;;;;; -133F1;EGYPTIAN HIEROGLYPH Z006;Lo;0;L;;;;;N;;;;; -133F2;EGYPTIAN HIEROGLYPH Z007;Lo;0;L;;;;;N;;;;; -133F3;EGYPTIAN HIEROGLYPH Z008;Lo;0;L;;;;;N;;;;; -133F4;EGYPTIAN HIEROGLYPH Z009;Lo;0;L;;;;;N;;;;; -133F5;EGYPTIAN HIEROGLYPH Z010;Lo;0;L;;;;;N;;;;; -133F6;EGYPTIAN HIEROGLYPH Z011;Lo;0;L;;;;;N;;;;; -133F7;EGYPTIAN HIEROGLYPH Z012;Lo;0;L;;;;;N;;;;; -133F8;EGYPTIAN HIEROGLYPH Z013;Lo;0;L;;;;;N;;;;; -133F9;EGYPTIAN HIEROGLYPH Z014;Lo;0;L;;;;;N;;;;; -133FA;EGYPTIAN HIEROGLYPH Z015;Lo;0;L;;;;;N;;;;; -133FB;EGYPTIAN HIEROGLYPH Z015A;Lo;0;L;;;;;N;;;;; -133FC;EGYPTIAN HIEROGLYPH Z015B;Lo;0;L;;;;;N;;;;; -133FD;EGYPTIAN HIEROGLYPH Z015C;Lo;0;L;;;;;N;;;;; -133FE;EGYPTIAN HIEROGLYPH Z015D;Lo;0;L;;;;;N;;;;; -133FF;EGYPTIAN HIEROGLYPH Z015E;Lo;0;L;;;;;N;;;;; -13400;EGYPTIAN HIEROGLYPH Z015F;Lo;0;L;;;;;N;;;;; -13401;EGYPTIAN HIEROGLYPH Z015G;Lo;0;L;;;;;N;;;;; -13402;EGYPTIAN HIEROGLYPH Z015H;Lo;0;L;;;;;N;;;;; -13403;EGYPTIAN HIEROGLYPH Z015I;Lo;0;L;;;;;N;;;;; -13404;EGYPTIAN HIEROGLYPH Z016;Lo;0;L;;;;;N;;;;; -13405;EGYPTIAN HIEROGLYPH Z016A;Lo;0;L;;;;;N;;;;; -13406;EGYPTIAN HIEROGLYPH Z016B;Lo;0;L;;;;;N;;;;; -13407;EGYPTIAN HIEROGLYPH Z016C;Lo;0;L;;;;;N;;;;; -13408;EGYPTIAN HIEROGLYPH Z016D;Lo;0;L;;;;;N;;;;; -13409;EGYPTIAN HIEROGLYPH Z016E;Lo;0;L;;;;;N;;;;; -1340A;EGYPTIAN HIEROGLYPH Z016F;Lo;0;L;;;;;N;;;;; -1340B;EGYPTIAN HIEROGLYPH Z016G;Lo;0;L;;;;;N;;;;; -1340C;EGYPTIAN HIEROGLYPH Z016H;Lo;0;L;;;;;N;;;;; -1340D;EGYPTIAN HIEROGLYPH AA001;Lo;0;L;;;;;N;;;;; -1340E;EGYPTIAN HIEROGLYPH AA002;Lo;0;L;;;;;N;;;;; -1340F;EGYPTIAN HIEROGLYPH AA003;Lo;0;L;;;;;N;;;;; -13410;EGYPTIAN HIEROGLYPH AA004;Lo;0;L;;;;;N;;;;; -13411;EGYPTIAN HIEROGLYPH AA005;Lo;0;L;;;;;N;;;;; -13412;EGYPTIAN HIEROGLYPH AA006;Lo;0;L;;;;;N;;;;; -13413;EGYPTIAN HIEROGLYPH AA007;Lo;0;L;;;;;N;;;;; -13414;EGYPTIAN HIEROGLYPH AA007A;Lo;0;L;;;;;N;;;;; -13415;EGYPTIAN HIEROGLYPH AA007B;Lo;0;L;;;;;N;;;;; -13416;EGYPTIAN HIEROGLYPH AA008;Lo;0;L;;;;;N;;;;; -13417;EGYPTIAN HIEROGLYPH AA009;Lo;0;L;;;;;N;;;;; -13418;EGYPTIAN HIEROGLYPH AA010;Lo;0;L;;;;;N;;;;; -13419;EGYPTIAN HIEROGLYPH AA011;Lo;0;L;;;;;N;;;;; -1341A;EGYPTIAN HIEROGLYPH AA012;Lo;0;L;;;;;N;;;;; -1341B;EGYPTIAN HIEROGLYPH AA013;Lo;0;L;;;;;N;;;;; -1341C;EGYPTIAN HIEROGLYPH AA014;Lo;0;L;;;;;N;;;;; -1341D;EGYPTIAN HIEROGLYPH AA015;Lo;0;L;;;;;N;;;;; -1341E;EGYPTIAN HIEROGLYPH AA016;Lo;0;L;;;;;N;;;;; -1341F;EGYPTIAN HIEROGLYPH AA017;Lo;0;L;;;;;N;;;;; -13420;EGYPTIAN HIEROGLYPH AA018;Lo;0;L;;;;;N;;;;; -13421;EGYPTIAN HIEROGLYPH AA019;Lo;0;L;;;;;N;;;;; -13422;EGYPTIAN HIEROGLYPH AA020;Lo;0;L;;;;;N;;;;; -13423;EGYPTIAN HIEROGLYPH AA021;Lo;0;L;;;;;N;;;;; -13424;EGYPTIAN HIEROGLYPH AA022;Lo;0;L;;;;;N;;;;; -13425;EGYPTIAN HIEROGLYPH AA023;Lo;0;L;;;;;N;;;;; -13426;EGYPTIAN HIEROGLYPH AA024;Lo;0;L;;;;;N;;;;; -13427;EGYPTIAN HIEROGLYPH AA025;Lo;0;L;;;;;N;;;;; -13428;EGYPTIAN HIEROGLYPH AA026;Lo;0;L;;;;;N;;;;; -13429;EGYPTIAN HIEROGLYPH AA027;Lo;0;L;;;;;N;;;;; -1342A;EGYPTIAN HIEROGLYPH AA028;Lo;0;L;;;;;N;;;;; -1342B;EGYPTIAN HIEROGLYPH AA029;Lo;0;L;;;;;N;;;;; -1342C;EGYPTIAN HIEROGLYPH AA030;Lo;0;L;;;;;N;;;;; -1342D;EGYPTIAN HIEROGLYPH AA031;Lo;0;L;;;;;N;;;;; -1342E;EGYPTIAN HIEROGLYPH AA032;Lo;0;L;;;;;N;;;;; -1D000;BYZANTINE MUSICAL SYMBOL PSILI;So;0;L;;;;;N;;;;; -1D001;BYZANTINE MUSICAL SYMBOL DASEIA;So;0;L;;;;;N;;;;; -1D002;BYZANTINE MUSICAL SYMBOL PERISPOMENI;So;0;L;;;;;N;;;;; -1D003;BYZANTINE MUSICAL SYMBOL OXEIA EKFONITIKON;So;0;L;;;;;N;;;;; -1D004;BYZANTINE MUSICAL SYMBOL OXEIA DIPLI;So;0;L;;;;;N;;;;; -1D005;BYZANTINE MUSICAL SYMBOL VAREIA EKFONITIKON;So;0;L;;;;;N;;;;; -1D006;BYZANTINE MUSICAL SYMBOL VAREIA DIPLI;So;0;L;;;;;N;;;;; -1D007;BYZANTINE MUSICAL SYMBOL KATHISTI;So;0;L;;;;;N;;;;; -1D008;BYZANTINE MUSICAL SYMBOL SYRMATIKI;So;0;L;;;;;N;;;;; -1D009;BYZANTINE MUSICAL SYMBOL PARAKLITIKI;So;0;L;;;;;N;;;;; -1D00A;BYZANTINE MUSICAL SYMBOL YPOKRISIS;So;0;L;;;;;N;;;;; -1D00B;BYZANTINE MUSICAL SYMBOL YPOKRISIS DIPLI;So;0;L;;;;;N;;;;; -1D00C;BYZANTINE MUSICAL SYMBOL KREMASTI;So;0;L;;;;;N;;;;; -1D00D;BYZANTINE MUSICAL SYMBOL APESO EKFONITIKON;So;0;L;;;;;N;;;;; -1D00E;BYZANTINE MUSICAL SYMBOL EXO EKFONITIKON;So;0;L;;;;;N;;;;; -1D00F;BYZANTINE MUSICAL SYMBOL TELEIA;So;0;L;;;;;N;;;;; -1D010;BYZANTINE MUSICAL SYMBOL KENTIMATA;So;0;L;;;;;N;;;;; -1D011;BYZANTINE MUSICAL SYMBOL APOSTROFOS;So;0;L;;;;;N;;;;; -1D012;BYZANTINE MUSICAL SYMBOL APOSTROFOS DIPLI;So;0;L;;;;;N;;;;; -1D013;BYZANTINE MUSICAL SYMBOL SYNEVMA;So;0;L;;;;;N;;;;; -1D014;BYZANTINE MUSICAL SYMBOL THITA;So;0;L;;;;;N;;;;; -1D015;BYZANTINE MUSICAL SYMBOL OLIGON ARCHAION;So;0;L;;;;;N;;;;; -1D016;BYZANTINE MUSICAL SYMBOL GORGON ARCHAION;So;0;L;;;;;N;;;;; -1D017;BYZANTINE MUSICAL SYMBOL PSILON;So;0;L;;;;;N;;;;; -1D018;BYZANTINE MUSICAL SYMBOL CHAMILON;So;0;L;;;;;N;;;;; -1D019;BYZANTINE MUSICAL SYMBOL VATHY;So;0;L;;;;;N;;;;; -1D01A;BYZANTINE MUSICAL SYMBOL ISON ARCHAION;So;0;L;;;;;N;;;;; -1D01B;BYZANTINE MUSICAL SYMBOL KENTIMA ARCHAION;So;0;L;;;;;N;;;;; -1D01C;BYZANTINE MUSICAL SYMBOL KENTIMATA ARCHAION;So;0;L;;;;;N;;;;; -1D01D;BYZANTINE MUSICAL SYMBOL SAXIMATA;So;0;L;;;;;N;;;;; -1D01E;BYZANTINE MUSICAL SYMBOL PARICHON;So;0;L;;;;;N;;;;; -1D01F;BYZANTINE MUSICAL SYMBOL STAVROS APODEXIA;So;0;L;;;;;N;;;;; -1D020;BYZANTINE MUSICAL SYMBOL OXEIAI ARCHAION;So;0;L;;;;;N;;;;; -1D021;BYZANTINE MUSICAL SYMBOL VAREIAI ARCHAION;So;0;L;;;;;N;;;;; -1D022;BYZANTINE MUSICAL SYMBOL APODERMA ARCHAION;So;0;L;;;;;N;;;;; -1D023;BYZANTINE MUSICAL SYMBOL APOTHEMA;So;0;L;;;;;N;;;;; -1D024;BYZANTINE MUSICAL SYMBOL KLASMA;So;0;L;;;;;N;;;;; -1D025;BYZANTINE MUSICAL SYMBOL REVMA;So;0;L;;;;;N;;;;; -1D026;BYZANTINE MUSICAL SYMBOL PIASMA ARCHAION;So;0;L;;;;;N;;;;; -1D027;BYZANTINE MUSICAL SYMBOL TINAGMA;So;0;L;;;;;N;;;;; -1D028;BYZANTINE MUSICAL SYMBOL ANATRICHISMA;So;0;L;;;;;N;;;;; -1D029;BYZANTINE MUSICAL SYMBOL SEISMA;So;0;L;;;;;N;;;;; -1D02A;BYZANTINE MUSICAL SYMBOL SYNAGMA ARCHAION;So;0;L;;;;;N;;;;; -1D02B;BYZANTINE MUSICAL SYMBOL SYNAGMA META STAVROU;So;0;L;;;;;N;;;;; -1D02C;BYZANTINE MUSICAL SYMBOL OYRANISMA ARCHAION;So;0;L;;;;;N;;;;; -1D02D;BYZANTINE MUSICAL SYMBOL THEMA;So;0;L;;;;;N;;;;; -1D02E;BYZANTINE MUSICAL SYMBOL LEMOI;So;0;L;;;;;N;;;;; -1D02F;BYZANTINE MUSICAL SYMBOL DYO;So;0;L;;;;;N;;;;; -1D030;BYZANTINE MUSICAL SYMBOL TRIA;So;0;L;;;;;N;;;;; -1D031;BYZANTINE MUSICAL SYMBOL TESSERA;So;0;L;;;;;N;;;;; -1D032;BYZANTINE MUSICAL SYMBOL KRATIMATA;So;0;L;;;;;N;;;;; -1D033;BYZANTINE MUSICAL SYMBOL APESO EXO NEO;So;0;L;;;;;N;;;;; -1D034;BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION;So;0;L;;;;;N;;;;; -1D035;BYZANTINE MUSICAL SYMBOL IMIFTHORA;So;0;L;;;;;N;;;;; -1D036;BYZANTINE MUSICAL SYMBOL TROMIKON ARCHAION;So;0;L;;;;;N;;;;; -1D037;BYZANTINE MUSICAL SYMBOL KATAVA TROMIKON;So;0;L;;;;;N;;;;; -1D038;BYZANTINE MUSICAL SYMBOL PELASTON;So;0;L;;;;;N;;;;; -1D039;BYZANTINE MUSICAL SYMBOL PSIFISTON;So;0;L;;;;;N;;;;; -1D03A;BYZANTINE MUSICAL SYMBOL KONTEVMA;So;0;L;;;;;N;;;;; -1D03B;BYZANTINE MUSICAL SYMBOL CHOREVMA ARCHAION;So;0;L;;;;;N;;;;; -1D03C;BYZANTINE MUSICAL SYMBOL RAPISMA;So;0;L;;;;;N;;;;; -1D03D;BYZANTINE MUSICAL SYMBOL PARAKALESMA ARCHAION;So;0;L;;;;;N;;;;; -1D03E;BYZANTINE MUSICAL SYMBOL PARAKLITIKI ARCHAION;So;0;L;;;;;N;;;;; -1D03F;BYZANTINE MUSICAL SYMBOL ICHADIN;So;0;L;;;;;N;;;;; -1D040;BYZANTINE MUSICAL SYMBOL NANA;So;0;L;;;;;N;;;;; -1D041;BYZANTINE MUSICAL SYMBOL PETASMA;So;0;L;;;;;N;;;;; -1D042;BYZANTINE MUSICAL SYMBOL KONTEVMA ALLO;So;0;L;;;;;N;;;;; -1D043;BYZANTINE MUSICAL SYMBOL TROMIKON ALLO;So;0;L;;;;;N;;;;; -1D044;BYZANTINE MUSICAL SYMBOL STRAGGISMATA;So;0;L;;;;;N;;;;; -1D045;BYZANTINE MUSICAL SYMBOL GRONTHISMATA;So;0;L;;;;;N;;;;; -1D046;BYZANTINE MUSICAL SYMBOL ISON NEO;So;0;L;;;;;N;;;;; -1D047;BYZANTINE MUSICAL SYMBOL OLIGON NEO;So;0;L;;;;;N;;;;; -1D048;BYZANTINE MUSICAL SYMBOL OXEIA NEO;So;0;L;;;;;N;;;;; -1D049;BYZANTINE MUSICAL SYMBOL PETASTI;So;0;L;;;;;N;;;;; -1D04A;BYZANTINE MUSICAL SYMBOL KOUFISMA;So;0;L;;;;;N;;;;; -1D04B;BYZANTINE MUSICAL SYMBOL PETASTOKOUFISMA;So;0;L;;;;;N;;;;; -1D04C;BYZANTINE MUSICAL SYMBOL KRATIMOKOUFISMA;So;0;L;;;;;N;;;;; -1D04D;BYZANTINE MUSICAL SYMBOL PELASTON NEO;So;0;L;;;;;N;;;;; -1D04E;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO ANO;So;0;L;;;;;N;;;;; -1D04F;BYZANTINE MUSICAL SYMBOL KENTIMA NEO ANO;So;0;L;;;;;N;;;;; -1D050;BYZANTINE MUSICAL SYMBOL YPSILI;So;0;L;;;;;N;;;;; -1D051;BYZANTINE MUSICAL SYMBOL APOSTROFOS NEO;So;0;L;;;;;N;;;;; -1D052;BYZANTINE MUSICAL SYMBOL APOSTROFOI SYNDESMOS NEO;So;0;L;;;;;N;;;;; -1D053;BYZANTINE MUSICAL SYMBOL YPORROI;So;0;L;;;;;N;;;;; -1D054;BYZANTINE MUSICAL SYMBOL KRATIMOYPORROON;So;0;L;;;;;N;;;;; -1D055;BYZANTINE MUSICAL SYMBOL ELAFRON;So;0;L;;;;;N;;;;; -1D056;BYZANTINE MUSICAL SYMBOL CHAMILI;So;0;L;;;;;N;;;;; -1D057;BYZANTINE MUSICAL SYMBOL MIKRON ISON;So;0;L;;;;;N;;;;; -1D058;BYZANTINE MUSICAL SYMBOL VAREIA NEO;So;0;L;;;;;N;;;;; -1D059;BYZANTINE MUSICAL SYMBOL PIASMA NEO;So;0;L;;;;;N;;;;; -1D05A;BYZANTINE MUSICAL SYMBOL PSIFISTON NEO;So;0;L;;;;;N;;;;; -1D05B;BYZANTINE MUSICAL SYMBOL OMALON;So;0;L;;;;;N;;;;; -1D05C;BYZANTINE MUSICAL SYMBOL ANTIKENOMA;So;0;L;;;;;N;;;;; -1D05D;BYZANTINE MUSICAL SYMBOL LYGISMA;So;0;L;;;;;N;;;;; -1D05E;BYZANTINE MUSICAL SYMBOL PARAKLITIKI NEO;So;0;L;;;;;N;;;;; -1D05F;BYZANTINE MUSICAL SYMBOL PARAKALESMA NEO;So;0;L;;;;;N;;;;; -1D060;BYZANTINE MUSICAL SYMBOL ETERON PARAKALESMA;So;0;L;;;;;N;;;;; -1D061;BYZANTINE MUSICAL SYMBOL KYLISMA;So;0;L;;;;;N;;;;; -1D062;BYZANTINE MUSICAL SYMBOL ANTIKENOKYLISMA;So;0;L;;;;;N;;;;; -1D063;BYZANTINE MUSICAL SYMBOL TROMIKON NEO;So;0;L;;;;;N;;;;; -1D064;BYZANTINE MUSICAL SYMBOL EKSTREPTON;So;0;L;;;;;N;;;;; -1D065;BYZANTINE MUSICAL SYMBOL SYNAGMA NEO;So;0;L;;;;;N;;;;; -1D066;BYZANTINE MUSICAL SYMBOL SYRMA;So;0;L;;;;;N;;;;; -1D067;BYZANTINE MUSICAL SYMBOL CHOREVMA NEO;So;0;L;;;;;N;;;;; -1D068;BYZANTINE MUSICAL SYMBOL EPEGERMA;So;0;L;;;;;N;;;;; -1D069;BYZANTINE MUSICAL SYMBOL SEISMA NEO;So;0;L;;;;;N;;;;; -1D06A;BYZANTINE MUSICAL SYMBOL XIRON KLASMA;So;0;L;;;;;N;;;;; -1D06B;BYZANTINE MUSICAL SYMBOL TROMIKOPSIFISTON;So;0;L;;;;;N;;;;; -1D06C;BYZANTINE MUSICAL SYMBOL PSIFISTOLYGISMA;So;0;L;;;;;N;;;;; -1D06D;BYZANTINE MUSICAL SYMBOL TROMIKOLYGISMA;So;0;L;;;;;N;;;;; -1D06E;BYZANTINE MUSICAL SYMBOL TROMIKOPARAKALESMA;So;0;L;;;;;N;;;;; -1D06F;BYZANTINE MUSICAL SYMBOL PSIFISTOPARAKALESMA;So;0;L;;;;;N;;;;; -1D070;BYZANTINE MUSICAL SYMBOL TROMIKOSYNAGMA;So;0;L;;;;;N;;;;; -1D071;BYZANTINE MUSICAL SYMBOL PSIFISTOSYNAGMA;So;0;L;;;;;N;;;;; -1D072;BYZANTINE MUSICAL SYMBOL GORGOSYNTHETON;So;0;L;;;;;N;;;;; -1D073;BYZANTINE MUSICAL SYMBOL ARGOSYNTHETON;So;0;L;;;;;N;;;;; -1D074;BYZANTINE MUSICAL SYMBOL ETERON ARGOSYNTHETON;So;0;L;;;;;N;;;;; -1D075;BYZANTINE MUSICAL SYMBOL OYRANISMA NEO;So;0;L;;;;;N;;;;; -1D076;BYZANTINE MUSICAL SYMBOL THEMATISMOS ESO;So;0;L;;;;;N;;;;; -1D077;BYZANTINE MUSICAL SYMBOL THEMATISMOS EXO;So;0;L;;;;;N;;;;; -1D078;BYZANTINE MUSICAL SYMBOL THEMA APLOUN;So;0;L;;;;;N;;;;; -1D079;BYZANTINE MUSICAL SYMBOL THES KAI APOTHES;So;0;L;;;;;N;;;;; -1D07A;BYZANTINE MUSICAL SYMBOL KATAVASMA;So;0;L;;;;;N;;;;; -1D07B;BYZANTINE MUSICAL SYMBOL ENDOFONON;So;0;L;;;;;N;;;;; -1D07C;BYZANTINE MUSICAL SYMBOL YFEN KATO;So;0;L;;;;;N;;;;; -1D07D;BYZANTINE MUSICAL SYMBOL YFEN ANO;So;0;L;;;;;N;;;;; -1D07E;BYZANTINE MUSICAL SYMBOL STAVROS;So;0;L;;;;;N;;;;; -1D07F;BYZANTINE MUSICAL SYMBOL KLASMA ANO;So;0;L;;;;;N;;;;; -1D080;BYZANTINE MUSICAL SYMBOL DIPLI ARCHAION;So;0;L;;;;;N;;;;; -1D081;BYZANTINE MUSICAL SYMBOL KRATIMA ARCHAION;So;0;L;;;;;N;;;;; -1D082;BYZANTINE MUSICAL SYMBOL KRATIMA ALLO;So;0;L;;;;;N;;;;; -1D083;BYZANTINE MUSICAL SYMBOL KRATIMA NEO;So;0;L;;;;;N;;;;; -1D084;BYZANTINE MUSICAL SYMBOL APODERMA NEO;So;0;L;;;;;N;;;;; -1D085;BYZANTINE MUSICAL SYMBOL APLI;So;0;L;;;;;N;;;;; -1D086;BYZANTINE MUSICAL SYMBOL DIPLI;So;0;L;;;;;N;;;;; -1D087;BYZANTINE MUSICAL SYMBOL TRIPLI;So;0;L;;;;;N;;;;; -1D088;BYZANTINE MUSICAL SYMBOL TETRAPLI;So;0;L;;;;;N;;;;; -1D089;BYZANTINE MUSICAL SYMBOL KORONIS;So;0;L;;;;;N;;;;; -1D08A;BYZANTINE MUSICAL SYMBOL LEIMMA ENOS CHRONOU;So;0;L;;;;;N;;;;; -1D08B;BYZANTINE MUSICAL SYMBOL LEIMMA DYO CHRONON;So;0;L;;;;;N;;;;; -1D08C;BYZANTINE MUSICAL SYMBOL LEIMMA TRION CHRONON;So;0;L;;;;;N;;;;; -1D08D;BYZANTINE MUSICAL SYMBOL LEIMMA TESSARON CHRONON;So;0;L;;;;;N;;;;; -1D08E;BYZANTINE MUSICAL SYMBOL LEIMMA IMISEOS CHRONOU;So;0;L;;;;;N;;;;; -1D08F;BYZANTINE MUSICAL SYMBOL GORGON NEO ANO;So;0;L;;;;;N;;;;; -1D090;BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON ARISTERA;So;0;L;;;;;N;;;;; -1D091;BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON DEXIA;So;0;L;;;;;N;;;;; -1D092;BYZANTINE MUSICAL SYMBOL DIGORGON;So;0;L;;;;;N;;;;; -1D093;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA KATO;So;0;L;;;;;N;;;;; -1D094;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA ANO;So;0;L;;;;;N;;;;; -1D095;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON DEXIA;So;0;L;;;;;N;;;;; -1D096;BYZANTINE MUSICAL SYMBOL TRIGORGON;So;0;L;;;;;N;;;;; -1D097;BYZANTINE MUSICAL SYMBOL ARGON;So;0;L;;;;;N;;;;; -1D098;BYZANTINE MUSICAL SYMBOL IMIDIARGON;So;0;L;;;;;N;;;;; -1D099;BYZANTINE MUSICAL SYMBOL DIARGON;So;0;L;;;;;N;;;;; -1D09A;BYZANTINE MUSICAL SYMBOL AGOGI POLI ARGI;So;0;L;;;;;N;;;;; -1D09B;BYZANTINE MUSICAL SYMBOL AGOGI ARGOTERI;So;0;L;;;;;N;;;;; -1D09C;BYZANTINE MUSICAL SYMBOL AGOGI ARGI;So;0;L;;;;;N;;;;; -1D09D;BYZANTINE MUSICAL SYMBOL AGOGI METRIA;So;0;L;;;;;N;;;;; -1D09E;BYZANTINE MUSICAL SYMBOL AGOGI MESI;So;0;L;;;;;N;;;;; -1D09F;BYZANTINE MUSICAL SYMBOL AGOGI GORGI;So;0;L;;;;;N;;;;; -1D0A0;BYZANTINE MUSICAL SYMBOL AGOGI GORGOTERI;So;0;L;;;;;N;;;;; -1D0A1;BYZANTINE MUSICAL SYMBOL AGOGI POLI GORGI;So;0;L;;;;;N;;;;; -1D0A2;BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOS ICHOS;So;0;L;;;;;N;;;;; -1D0A3;BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI PROTOS ICHOS;So;0;L;;;;;N;;;;; -1D0A4;BYZANTINE MUSICAL SYMBOL MARTYRIA DEYTEROS ICHOS;So;0;L;;;;;N;;;;; -1D0A5;BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI DEYTEROS ICHOS;So;0;L;;;;;N;;;;; -1D0A6;BYZANTINE MUSICAL SYMBOL MARTYRIA TRITOS ICHOS;So;0;L;;;;;N;;;;; -1D0A7;BYZANTINE MUSICAL SYMBOL MARTYRIA TRIFONIAS;So;0;L;;;;;N;;;;; -1D0A8;BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS ICHOS;So;0;L;;;;;N;;;;; -1D0A9;BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS LEGETOS ICHOS;So;0;L;;;;;N;;;;; -1D0AA;BYZANTINE MUSICAL SYMBOL MARTYRIA LEGETOS ICHOS;So;0;L;;;;;N;;;;; -1D0AB;BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS ICHOS;So;0;L;;;;;N;;;;; -1D0AC;BYZANTINE MUSICAL SYMBOL ISAKIA TELOUS ICHIMATOS;So;0;L;;;;;N;;;;; -1D0AD;BYZANTINE MUSICAL SYMBOL APOSTROFOI TELOUS ICHIMATOS;So;0;L;;;;;N;;;;; -1D0AE;BYZANTINE MUSICAL SYMBOL FANEROSIS TETRAFONIAS;So;0;L;;;;;N;;;;; -1D0AF;BYZANTINE MUSICAL SYMBOL FANEROSIS MONOFONIAS;So;0;L;;;;;N;;;;; -1D0B0;BYZANTINE MUSICAL SYMBOL FANEROSIS DIFONIAS;So;0;L;;;;;N;;;;; -1D0B1;BYZANTINE MUSICAL SYMBOL MARTYRIA VARYS ICHOS;So;0;L;;;;;N;;;;; -1D0B2;BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOVARYS ICHOS;So;0;L;;;;;N;;;;; -1D0B3;BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS TETARTOS ICHOS;So;0;L;;;;;N;;;;; -1D0B4;BYZANTINE MUSICAL SYMBOL GORTHMIKON N APLOUN;So;0;L;;;;;N;;;;; -1D0B5;BYZANTINE MUSICAL SYMBOL GORTHMIKON N DIPLOUN;So;0;L;;;;;N;;;;; -1D0B6;BYZANTINE MUSICAL SYMBOL ENARXIS KAI FTHORA VOU;So;0;L;;;;;N;;;;; -1D0B7;BYZANTINE MUSICAL SYMBOL IMIFONON;So;0;L;;;;;N;;;;; -1D0B8;BYZANTINE MUSICAL SYMBOL IMIFTHORON;So;0;L;;;;;N;;;;; -1D0B9;BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION DEYTEROU ICHOU;So;0;L;;;;;N;;;;; -1D0BA;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI PA;So;0;L;;;;;N;;;;; -1D0BB;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NANA;So;0;L;;;;;N;;;;; -1D0BC;BYZANTINE MUSICAL SYMBOL FTHORA NAOS ICHOS;So;0;L;;;;;N;;;;; -1D0BD;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI DI;So;0;L;;;;;N;;;;; -1D0BE;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON DIATONON DI;So;0;L;;;;;N;;;;; -1D0BF;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI KE;So;0;L;;;;;N;;;;; -1D0C0;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI ZO;So;0;L;;;;;N;;;;; -1D0C1;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI KATO;So;0;L;;;;;N;;;;; -1D0C2;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI ANO;So;0;L;;;;;N;;;;; -1D0C3;BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA DIFONIAS;So;0;L;;;;;N;;;;; -1D0C4;BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA MONOFONIAS;So;0;L;;;;;N;;;;; -1D0C5;BYZANTINE MUSICAL SYMBOL FHTORA SKLIRON CHROMA VASIS;So;0;L;;;;;N;;;;; -1D0C6;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA SYNAFI;So;0;L;;;;;N;;;;; -1D0C7;BYZANTINE MUSICAL SYMBOL FTHORA NENANO;So;0;L;;;;;N;;;;; -1D0C8;BYZANTINE MUSICAL SYMBOL CHROA ZYGOS;So;0;L;;;;;N;;;;; -1D0C9;BYZANTINE MUSICAL SYMBOL CHROA KLITON;So;0;L;;;;;N;;;;; -1D0CA;BYZANTINE MUSICAL SYMBOL CHROA SPATHI;So;0;L;;;;;N;;;;; -1D0CB;BYZANTINE MUSICAL SYMBOL FTHORA I YFESIS TETARTIMORION;So;0;L;;;;;N;;;;; -1D0CC;BYZANTINE MUSICAL SYMBOL FTHORA ENARMONIOS ANTIFONIA;So;0;L;;;;;N;;;;; -1D0CD;BYZANTINE MUSICAL SYMBOL YFESIS TRITIMORION;So;0;L;;;;;N;;;;; -1D0CE;BYZANTINE MUSICAL SYMBOL DIESIS TRITIMORION;So;0;L;;;;;N;;;;; -1D0CF;BYZANTINE MUSICAL SYMBOL DIESIS TETARTIMORION;So;0;L;;;;;N;;;;; -1D0D0;BYZANTINE MUSICAL SYMBOL DIESIS APLI DYO DODEKATA;So;0;L;;;;;N;;;;; -1D0D1;BYZANTINE MUSICAL SYMBOL DIESIS MONOGRAMMOS TESSERA DODEKATA;So;0;L;;;;;N;;;;; -1D0D2;BYZANTINE MUSICAL SYMBOL DIESIS DIGRAMMOS EX DODEKATA;So;0;L;;;;;N;;;;; -1D0D3;BYZANTINE MUSICAL SYMBOL DIESIS TRIGRAMMOS OKTO DODEKATA;So;0;L;;;;;N;;;;; -1D0D4;BYZANTINE MUSICAL SYMBOL YFESIS APLI DYO DODEKATA;So;0;L;;;;;N;;;;; -1D0D5;BYZANTINE MUSICAL SYMBOL YFESIS MONOGRAMMOS TESSERA DODEKATA;So;0;L;;;;;N;;;;; -1D0D6;BYZANTINE MUSICAL SYMBOL YFESIS DIGRAMMOS EX DODEKATA;So;0;L;;;;;N;;;;; -1D0D7;BYZANTINE MUSICAL SYMBOL YFESIS TRIGRAMMOS OKTO DODEKATA;So;0;L;;;;;N;;;;; -1D0D8;BYZANTINE MUSICAL SYMBOL GENIKI DIESIS;So;0;L;;;;;N;;;;; -1D0D9;BYZANTINE MUSICAL SYMBOL GENIKI YFESIS;So;0;L;;;;;N;;;;; -1D0DA;BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MIKRI;So;0;L;;;;;N;;;;; -1D0DB;BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MEGALI;So;0;L;;;;;N;;;;; -1D0DC;BYZANTINE MUSICAL SYMBOL DIASTOLI DIPLI;So;0;L;;;;;N;;;;; -1D0DD;BYZANTINE MUSICAL SYMBOL DIASTOLI THESEOS;So;0;L;;;;;N;;;;; -1D0DE;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS;So;0;L;;;;;N;;;;; -1D0DF;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS DISIMOU;So;0;L;;;;;N;;;;; -1D0E0;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TRISIMOU;So;0;L;;;;;N;;;;; -1D0E1;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TETRASIMOU;So;0;L;;;;;N;;;;; -1D0E2;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS;So;0;L;;;;;N;;;;; -1D0E3;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS DISIMOU;So;0;L;;;;;N;;;;; -1D0E4;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TRISIMOU;So;0;L;;;;;N;;;;; -1D0E5;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TETRASIMOU;So;0;L;;;;;N;;;;; -1D0E6;BYZANTINE MUSICAL SYMBOL DIGRAMMA GG;So;0;L;;;;;N;;;;; -1D0E7;BYZANTINE MUSICAL SYMBOL DIFTOGGOS OU;So;0;L;;;;;N;;;;; -1D0E8;BYZANTINE MUSICAL SYMBOL STIGMA;So;0;L;;;;;N;;;;; -1D0E9;BYZANTINE MUSICAL SYMBOL ARKTIKO PA;So;0;L;;;;;N;;;;; -1D0EA;BYZANTINE MUSICAL SYMBOL ARKTIKO VOU;So;0;L;;;;;N;;;;; -1D0EB;BYZANTINE MUSICAL SYMBOL ARKTIKO GA;So;0;L;;;;;N;;;;; -1D0EC;BYZANTINE MUSICAL SYMBOL ARKTIKO DI;So;0;L;;;;;N;;;;; -1D0ED;BYZANTINE MUSICAL SYMBOL ARKTIKO KE;So;0;L;;;;;N;;;;; -1D0EE;BYZANTINE MUSICAL SYMBOL ARKTIKO ZO;So;0;L;;;;;N;;;;; -1D0EF;BYZANTINE MUSICAL SYMBOL ARKTIKO NI;So;0;L;;;;;N;;;;; -1D0F0;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO MESO;So;0;L;;;;;N;;;;; -1D0F1;BYZANTINE MUSICAL SYMBOL KENTIMA NEO MESO;So;0;L;;;;;N;;;;; -1D0F2;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO KATO;So;0;L;;;;;N;;;;; -1D0F3;BYZANTINE MUSICAL SYMBOL KENTIMA NEO KATO;So;0;L;;;;;N;;;;; -1D0F4;BYZANTINE MUSICAL SYMBOL KLASMA KATO;So;0;L;;;;;N;;;;; -1D0F5;BYZANTINE MUSICAL SYMBOL GORGON NEO KATO;So;0;L;;;;;N;;;;; -1D100;MUSICAL SYMBOL SINGLE BARLINE;So;0;L;;;;;N;;;;; -1D101;MUSICAL SYMBOL DOUBLE BARLINE;So;0;L;;;;;N;;;;; -1D102;MUSICAL SYMBOL FINAL BARLINE;So;0;L;;;;;N;;;;; -1D103;MUSICAL SYMBOL REVERSE FINAL BARLINE;So;0;L;;;;;N;;;;; -1D104;MUSICAL SYMBOL DASHED BARLINE;So;0;L;;;;;N;;;;; -1D105;MUSICAL SYMBOL SHORT BARLINE;So;0;L;;;;;N;;;;; -1D106;MUSICAL SYMBOL LEFT REPEAT SIGN;So;0;L;;;;;N;;;;; -1D107;MUSICAL SYMBOL RIGHT REPEAT SIGN;So;0;L;;;;;N;;;;; -1D108;MUSICAL SYMBOL REPEAT DOTS;So;0;L;;;;;N;;;;; -1D109;MUSICAL SYMBOL DAL SEGNO;So;0;L;;;;;N;;;;; -1D10A;MUSICAL SYMBOL DA CAPO;So;0;L;;;;;N;;;;; -1D10B;MUSICAL SYMBOL SEGNO;So;0;L;;;;;N;;;;; -1D10C;MUSICAL SYMBOL CODA;So;0;L;;;;;N;;;;; -1D10D;MUSICAL SYMBOL REPEATED FIGURE-1;So;0;L;;;;;N;;;;; -1D10E;MUSICAL SYMBOL REPEATED FIGURE-2;So;0;L;;;;;N;;;;; -1D10F;MUSICAL SYMBOL REPEATED FIGURE-3;So;0;L;;;;;N;;;;; -1D110;MUSICAL SYMBOL FERMATA;So;0;L;;;;;N;;;;; -1D111;MUSICAL SYMBOL FERMATA BELOW;So;0;L;;;;;N;;;;; -1D112;MUSICAL SYMBOL BREATH MARK;So;0;L;;;;;N;;;;; -1D113;MUSICAL SYMBOL CAESURA;So;0;L;;;;;N;;;;; -1D114;MUSICAL SYMBOL BRACE;So;0;L;;;;;N;;;;; -1D115;MUSICAL SYMBOL BRACKET;So;0;L;;;;;N;;;;; -1D116;MUSICAL SYMBOL ONE-LINE STAFF;So;0;L;;;;;N;;;;; -1D117;MUSICAL SYMBOL TWO-LINE STAFF;So;0;L;;;;;N;;;;; -1D118;MUSICAL SYMBOL THREE-LINE STAFF;So;0;L;;;;;N;;;;; -1D119;MUSICAL SYMBOL FOUR-LINE STAFF;So;0;L;;;;;N;;;;; -1D11A;MUSICAL SYMBOL FIVE-LINE STAFF;So;0;L;;;;;N;;;;; -1D11B;MUSICAL SYMBOL SIX-LINE STAFF;So;0;L;;;;;N;;;;; -1D11C;MUSICAL SYMBOL SIX-STRING FRETBOARD;So;0;L;;;;;N;;;;; -1D11D;MUSICAL SYMBOL FOUR-STRING FRETBOARD;So;0;L;;;;;N;;;;; -1D11E;MUSICAL SYMBOL G CLEF;So;0;L;;;;;N;;;;; -1D11F;MUSICAL SYMBOL G CLEF OTTAVA ALTA;So;0;L;;;;;N;;;;; -1D120;MUSICAL SYMBOL G CLEF OTTAVA BASSA;So;0;L;;;;;N;;;;; -1D121;MUSICAL SYMBOL C CLEF;So;0;L;;;;;N;;;;; -1D122;MUSICAL SYMBOL F CLEF;So;0;L;;;;;N;;;;; -1D123;MUSICAL SYMBOL F CLEF OTTAVA ALTA;So;0;L;;;;;N;;;;; -1D124;MUSICAL SYMBOL F CLEF OTTAVA BASSA;So;0;L;;;;;N;;;;; -1D125;MUSICAL SYMBOL DRUM CLEF-1;So;0;L;;;;;N;;;;; -1D126;MUSICAL SYMBOL DRUM CLEF-2;So;0;L;;;;;N;;;;; -1D129;MUSICAL SYMBOL MULTIPLE MEASURE REST;So;0;L;;;;;N;;;;; -1D12A;MUSICAL SYMBOL DOUBLE SHARP;So;0;L;;;;;N;;;;; -1D12B;MUSICAL SYMBOL DOUBLE FLAT;So;0;L;;;;;N;;;;; -1D12C;MUSICAL SYMBOL FLAT UP;So;0;L;;;;;N;;;;; -1D12D;MUSICAL SYMBOL FLAT DOWN;So;0;L;;;;;N;;;;; -1D12E;MUSICAL SYMBOL NATURAL UP;So;0;L;;;;;N;;;;; -1D12F;MUSICAL SYMBOL NATURAL DOWN;So;0;L;;;;;N;;;;; -1D130;MUSICAL SYMBOL SHARP UP;So;0;L;;;;;N;;;;; -1D131;MUSICAL SYMBOL SHARP DOWN;So;0;L;;;;;N;;;;; -1D132;MUSICAL SYMBOL QUARTER TONE SHARP;So;0;L;;;;;N;;;;; -1D133;MUSICAL SYMBOL QUARTER TONE FLAT;So;0;L;;;;;N;;;;; -1D134;MUSICAL SYMBOL COMMON TIME;So;0;L;;;;;N;;;;; -1D135;MUSICAL SYMBOL CUT TIME;So;0;L;;;;;N;;;;; -1D136;MUSICAL SYMBOL OTTAVA ALTA;So;0;L;;;;;N;;;;; -1D137;MUSICAL SYMBOL OTTAVA BASSA;So;0;L;;;;;N;;;;; -1D138;MUSICAL SYMBOL QUINDICESIMA ALTA;So;0;L;;;;;N;;;;; -1D139;MUSICAL SYMBOL QUINDICESIMA BASSA;So;0;L;;;;;N;;;;; -1D13A;MUSICAL SYMBOL MULTI REST;So;0;L;;;;;N;;;;; -1D13B;MUSICAL SYMBOL WHOLE REST;So;0;L;;;;;N;;;;; -1D13C;MUSICAL SYMBOL HALF REST;So;0;L;;;;;N;;;;; -1D13D;MUSICAL SYMBOL QUARTER REST;So;0;L;;;;;N;;;;; -1D13E;MUSICAL SYMBOL EIGHTH REST;So;0;L;;;;;N;;;;; -1D13F;MUSICAL SYMBOL SIXTEENTH REST;So;0;L;;;;;N;;;;; -1D140;MUSICAL SYMBOL THIRTY-SECOND REST;So;0;L;;;;;N;;;;; -1D141;MUSICAL SYMBOL SIXTY-FOURTH REST;So;0;L;;;;;N;;;;; -1D142;MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH REST;So;0;L;;;;;N;;;;; -1D143;MUSICAL SYMBOL X NOTEHEAD;So;0;L;;;;;N;;;;; -1D144;MUSICAL SYMBOL PLUS NOTEHEAD;So;0;L;;;;;N;;;;; -1D145;MUSICAL SYMBOL CIRCLE X NOTEHEAD;So;0;L;;;;;N;;;;; -1D146;MUSICAL SYMBOL SQUARE NOTEHEAD WHITE;So;0;L;;;;;N;;;;; -1D147;MUSICAL SYMBOL SQUARE NOTEHEAD BLACK;So;0;L;;;;;N;;;;; -1D148;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP WHITE;So;0;L;;;;;N;;;;; -1D149;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP BLACK;So;0;L;;;;;N;;;;; -1D14A;MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT WHITE;So;0;L;;;;;N;;;;; -1D14B;MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT BLACK;So;0;L;;;;;N;;;;; -1D14C;MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT WHITE;So;0;L;;;;;N;;;;; -1D14D;MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT BLACK;So;0;L;;;;;N;;;;; -1D14E;MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN WHITE;So;0;L;;;;;N;;;;; -1D14F;MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN BLACK;So;0;L;;;;;N;;;;; -1D150;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT WHITE;So;0;L;;;;;N;;;;; -1D151;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT BLACK;So;0;L;;;;;N;;;;; -1D152;MUSICAL SYMBOL MOON NOTEHEAD WHITE;So;0;L;;;;;N;;;;; -1D153;MUSICAL SYMBOL MOON NOTEHEAD BLACK;So;0;L;;;;;N;;;;; -1D154;MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN WHITE;So;0;L;;;;;N;;;;; -1D155;MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN BLACK;So;0;L;;;;;N;;;;; -1D156;MUSICAL SYMBOL PARENTHESIS NOTEHEAD;So;0;L;;;;;N;;;;; -1D157;MUSICAL SYMBOL VOID NOTEHEAD;So;0;L;;;;;N;;;;; -1D158;MUSICAL SYMBOL NOTEHEAD BLACK;So;0;L;;;;;N;;;;; -1D159;MUSICAL SYMBOL NULL NOTEHEAD;So;0;L;;;;;N;;;;; -1D15A;MUSICAL SYMBOL CLUSTER NOTEHEAD WHITE;So;0;L;;;;;N;;;;; -1D15B;MUSICAL SYMBOL CLUSTER NOTEHEAD BLACK;So;0;L;;;;;N;;;;; -1D15C;MUSICAL SYMBOL BREVE;So;0;L;;;;;N;;;;; -1D15D;MUSICAL SYMBOL WHOLE NOTE;So;0;L;;;;;N;;;;; -1D15E;MUSICAL SYMBOL HALF NOTE;So;0;L;1D157 1D165;;;;N;;;;; -1D15F;MUSICAL SYMBOL QUARTER NOTE;So;0;L;1D158 1D165;;;;N;;;;; -1D160;MUSICAL SYMBOL EIGHTH NOTE;So;0;L;1D15F 1D16E;;;;N;;;;; -1D161;MUSICAL SYMBOL SIXTEENTH NOTE;So;0;L;1D15F 1D16F;;;;N;;;;; -1D162;MUSICAL SYMBOL THIRTY-SECOND NOTE;So;0;L;1D15F 1D170;;;;N;;;;; -1D163;MUSICAL SYMBOL SIXTY-FOURTH NOTE;So;0;L;1D15F 1D171;;;;N;;;;; -1D164;MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE;So;0;L;1D15F 1D172;;;;N;;;;; -1D165;MUSICAL SYMBOL COMBINING STEM;Mc;216;L;;;;;N;;;;; -1D166;MUSICAL SYMBOL COMBINING SPRECHGESANG STEM;Mc;216;L;;;;;N;;;;; -1D167;MUSICAL SYMBOL COMBINING TREMOLO-1;Mn;1;NSM;;;;;N;;;;; -1D168;MUSICAL SYMBOL COMBINING TREMOLO-2;Mn;1;NSM;;;;;N;;;;; -1D169;MUSICAL SYMBOL COMBINING TREMOLO-3;Mn;1;NSM;;;;;N;;;;; -1D16A;MUSICAL SYMBOL FINGERED TREMOLO-1;So;0;L;;;;;N;;;;; -1D16B;MUSICAL SYMBOL FINGERED TREMOLO-2;So;0;L;;;;;N;;;;; -1D16C;MUSICAL SYMBOL FINGERED TREMOLO-3;So;0;L;;;;;N;;;;; -1D16D;MUSICAL SYMBOL COMBINING AUGMENTATION DOT;Mc;226;L;;;;;N;;;;; -1D16E;MUSICAL SYMBOL COMBINING FLAG-1;Mc;216;L;;;;;N;;;;; -1D16F;MUSICAL SYMBOL COMBINING FLAG-2;Mc;216;L;;;;;N;;;;; -1D170;MUSICAL SYMBOL COMBINING FLAG-3;Mc;216;L;;;;;N;;;;; -1D171;MUSICAL SYMBOL COMBINING FLAG-4;Mc;216;L;;;;;N;;;;; -1D172;MUSICAL SYMBOL COMBINING FLAG-5;Mc;216;L;;;;;N;;;;; -1D173;MUSICAL SYMBOL BEGIN BEAM;Cf;0;BN;;;;;N;;;;; -1D174;MUSICAL SYMBOL END BEAM;Cf;0;BN;;;;;N;;;;; -1D175;MUSICAL SYMBOL BEGIN TIE;Cf;0;BN;;;;;N;;;;; -1D176;MUSICAL SYMBOL END TIE;Cf;0;BN;;;;;N;;;;; -1D177;MUSICAL SYMBOL BEGIN SLUR;Cf;0;BN;;;;;N;;;;; -1D178;MUSICAL SYMBOL END SLUR;Cf;0;BN;;;;;N;;;;; -1D179;MUSICAL SYMBOL BEGIN PHRASE;Cf;0;BN;;;;;N;;;;; -1D17A;MUSICAL SYMBOL END PHRASE;Cf;0;BN;;;;;N;;;;; -1D17B;MUSICAL SYMBOL COMBINING ACCENT;Mn;220;NSM;;;;;N;;;;; -1D17C;MUSICAL SYMBOL COMBINING STACCATO;Mn;220;NSM;;;;;N;;;;; -1D17D;MUSICAL SYMBOL COMBINING TENUTO;Mn;220;NSM;;;;;N;;;;; -1D17E;MUSICAL SYMBOL COMBINING STACCATISSIMO;Mn;220;NSM;;;;;N;;;;; -1D17F;MUSICAL SYMBOL COMBINING MARCATO;Mn;220;NSM;;;;;N;;;;; -1D180;MUSICAL SYMBOL COMBINING MARCATO-STACCATO;Mn;220;NSM;;;;;N;;;;; -1D181;MUSICAL SYMBOL COMBINING ACCENT-STACCATO;Mn;220;NSM;;;;;N;;;;; -1D182;MUSICAL SYMBOL COMBINING LOURE;Mn;220;NSM;;;;;N;;;;; -1D183;MUSICAL SYMBOL ARPEGGIATO UP;So;0;L;;;;;N;;;;; -1D184;MUSICAL SYMBOL ARPEGGIATO DOWN;So;0;L;;;;;N;;;;; -1D185;MUSICAL SYMBOL COMBINING DOIT;Mn;230;NSM;;;;;N;;;;; -1D186;MUSICAL SYMBOL COMBINING RIP;Mn;230;NSM;;;;;N;;;;; -1D187;MUSICAL SYMBOL COMBINING FLIP;Mn;230;NSM;;;;;N;;;;; -1D188;MUSICAL SYMBOL COMBINING SMEAR;Mn;230;NSM;;;;;N;;;;; -1D189;MUSICAL SYMBOL COMBINING BEND;Mn;230;NSM;;;;;N;;;;; -1D18A;MUSICAL SYMBOL COMBINING DOUBLE TONGUE;Mn;220;NSM;;;;;N;;;;; -1D18B;MUSICAL SYMBOL COMBINING TRIPLE TONGUE;Mn;220;NSM;;;;;N;;;;; -1D18C;MUSICAL SYMBOL RINFORZANDO;So;0;L;;;;;N;;;;; -1D18D;MUSICAL SYMBOL SUBITO;So;0;L;;;;;N;;;;; -1D18E;MUSICAL SYMBOL Z;So;0;L;;;;;N;;;;; -1D18F;MUSICAL SYMBOL PIANO;So;0;L;;;;;N;;;;; -1D190;MUSICAL SYMBOL MEZZO;So;0;L;;;;;N;;;;; -1D191;MUSICAL SYMBOL FORTE;So;0;L;;;;;N;;;;; -1D192;MUSICAL SYMBOL CRESCENDO;So;0;L;;;;;N;;;;; -1D193;MUSICAL SYMBOL DECRESCENDO;So;0;L;;;;;N;;;;; -1D194;MUSICAL SYMBOL GRACE NOTE SLASH;So;0;L;;;;;N;;;;; -1D195;MUSICAL SYMBOL GRACE NOTE NO SLASH;So;0;L;;;;;N;;;;; -1D196;MUSICAL SYMBOL TR;So;0;L;;;;;N;;;;; -1D197;MUSICAL SYMBOL TURN;So;0;L;;;;;N;;;;; -1D198;MUSICAL SYMBOL INVERTED TURN;So;0;L;;;;;N;;;;; -1D199;MUSICAL SYMBOL TURN SLASH;So;0;L;;;;;N;;;;; -1D19A;MUSICAL SYMBOL TURN UP;So;0;L;;;;;N;;;;; -1D19B;MUSICAL SYMBOL ORNAMENT STROKE-1;So;0;L;;;;;N;;;;; -1D19C;MUSICAL SYMBOL ORNAMENT STROKE-2;So;0;L;;;;;N;;;;; -1D19D;MUSICAL SYMBOL ORNAMENT STROKE-3;So;0;L;;;;;N;;;;; -1D19E;MUSICAL SYMBOL ORNAMENT STROKE-4;So;0;L;;;;;N;;;;; -1D19F;MUSICAL SYMBOL ORNAMENT STROKE-5;So;0;L;;;;;N;;;;; -1D1A0;MUSICAL SYMBOL ORNAMENT STROKE-6;So;0;L;;;;;N;;;;; -1D1A1;MUSICAL SYMBOL ORNAMENT STROKE-7;So;0;L;;;;;N;;;;; -1D1A2;MUSICAL SYMBOL ORNAMENT STROKE-8;So;0;L;;;;;N;;;;; -1D1A3;MUSICAL SYMBOL ORNAMENT STROKE-9;So;0;L;;;;;N;;;;; -1D1A4;MUSICAL SYMBOL ORNAMENT STROKE-10;So;0;L;;;;;N;;;;; -1D1A5;MUSICAL SYMBOL ORNAMENT STROKE-11;So;0;L;;;;;N;;;;; -1D1A6;MUSICAL SYMBOL HAUPTSTIMME;So;0;L;;;;;N;;;;; -1D1A7;MUSICAL SYMBOL NEBENSTIMME;So;0;L;;;;;N;;;;; -1D1A8;MUSICAL SYMBOL END OF STIMME;So;0;L;;;;;N;;;;; -1D1A9;MUSICAL SYMBOL DEGREE SLASH;So;0;L;;;;;N;;;;; -1D1AA;MUSICAL SYMBOL COMBINING DOWN BOW;Mn;230;NSM;;;;;N;;;;; -1D1AB;MUSICAL SYMBOL COMBINING UP BOW;Mn;230;NSM;;;;;N;;;;; -1D1AC;MUSICAL SYMBOL COMBINING HARMONIC;Mn;230;NSM;;;;;N;;;;; -1D1AD;MUSICAL SYMBOL COMBINING SNAP PIZZICATO;Mn;230;NSM;;;;;N;;;;; -1D1AE;MUSICAL SYMBOL PEDAL MARK;So;0;L;;;;;N;;;;; -1D1AF;MUSICAL SYMBOL PEDAL UP MARK;So;0;L;;;;;N;;;;; -1D1B0;MUSICAL SYMBOL HALF PEDAL MARK;So;0;L;;;;;N;;;;; -1D1B1;MUSICAL SYMBOL GLISSANDO UP;So;0;L;;;;;N;;;;; -1D1B2;MUSICAL SYMBOL GLISSANDO DOWN;So;0;L;;;;;N;;;;; -1D1B3;MUSICAL SYMBOL WITH FINGERNAILS;So;0;L;;;;;N;;;;; -1D1B4;MUSICAL SYMBOL DAMP;So;0;L;;;;;N;;;;; -1D1B5;MUSICAL SYMBOL DAMP ALL;So;0;L;;;;;N;;;;; -1D1B6;MUSICAL SYMBOL MAXIMA;So;0;L;;;;;N;;;;; -1D1B7;MUSICAL SYMBOL LONGA;So;0;L;;;;;N;;;;; -1D1B8;MUSICAL SYMBOL BREVIS;So;0;L;;;;;N;;;;; -1D1B9;MUSICAL SYMBOL SEMIBREVIS WHITE;So;0;L;;;;;N;;;;; -1D1BA;MUSICAL SYMBOL SEMIBREVIS BLACK;So;0;L;;;;;N;;;;; -1D1BB;MUSICAL SYMBOL MINIMA;So;0;L;1D1B9 1D165;;;;N;;;;; -1D1BC;MUSICAL SYMBOL MINIMA BLACK;So;0;L;1D1BA 1D165;;;;N;;;;; -1D1BD;MUSICAL SYMBOL SEMIMINIMA WHITE;So;0;L;1D1BB 1D16E;;;;N;;;;; -1D1BE;MUSICAL SYMBOL SEMIMINIMA BLACK;So;0;L;1D1BC 1D16E;;;;N;;;;; -1D1BF;MUSICAL SYMBOL FUSA WHITE;So;0;L;1D1BB 1D16F;;;;N;;;;; -1D1C0;MUSICAL SYMBOL FUSA BLACK;So;0;L;1D1BC 1D16F;;;;N;;;;; -1D1C1;MUSICAL SYMBOL LONGA PERFECTA REST;So;0;L;;;;;N;;;;; -1D1C2;MUSICAL SYMBOL LONGA IMPERFECTA REST;So;0;L;;;;;N;;;;; -1D1C3;MUSICAL SYMBOL BREVIS REST;So;0;L;;;;;N;;;;; -1D1C4;MUSICAL SYMBOL SEMIBREVIS REST;So;0;L;;;;;N;;;;; -1D1C5;MUSICAL SYMBOL MINIMA REST;So;0;L;;;;;N;;;;; -1D1C6;MUSICAL SYMBOL SEMIMINIMA REST;So;0;L;;;;;N;;;;; -1D1C7;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA;So;0;L;;;;;N;;;;; -1D1C8;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE IMPERFECTA;So;0;L;;;;;N;;;;; -1D1C9;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA DIMINUTION-1;So;0;L;;;;;N;;;;; -1D1CA;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE PERFECTA;So;0;L;;;;;N;;;;; -1D1CB;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA;So;0;L;;;;;N;;;;; -1D1CC;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-1;So;0;L;;;;;N;;;;; -1D1CD;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-2;So;0;L;;;;;N;;;;; -1D1CE;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-3;So;0;L;;;;;N;;;;; -1D1CF;MUSICAL SYMBOL CROIX;So;0;L;;;;;N;;;;; -1D1D0;MUSICAL SYMBOL GREGORIAN C CLEF;So;0;L;;;;;N;;;;; -1D1D1;MUSICAL SYMBOL GREGORIAN F CLEF;So;0;L;;;;;N;;;;; -1D1D2;MUSICAL SYMBOL SQUARE B;So;0;L;;;;;N;;;;; -1D1D3;MUSICAL SYMBOL VIRGA;So;0;L;;;;;N;;;;; -1D1D4;MUSICAL SYMBOL PODATUS;So;0;L;;;;;N;;;;; -1D1D5;MUSICAL SYMBOL CLIVIS;So;0;L;;;;;N;;;;; -1D1D6;MUSICAL SYMBOL SCANDICUS;So;0;L;;;;;N;;;;; -1D1D7;MUSICAL SYMBOL CLIMACUS;So;0;L;;;;;N;;;;; -1D1D8;MUSICAL SYMBOL TORCULUS;So;0;L;;;;;N;;;;; -1D1D9;MUSICAL SYMBOL PORRECTUS;So;0;L;;;;;N;;;;; -1D1DA;MUSICAL SYMBOL PORRECTUS FLEXUS;So;0;L;;;;;N;;;;; -1D1DB;MUSICAL SYMBOL SCANDICUS FLEXUS;So;0;L;;;;;N;;;;; -1D1DC;MUSICAL SYMBOL TORCULUS RESUPINUS;So;0;L;;;;;N;;;;; -1D1DD;MUSICAL SYMBOL PES SUBPUNCTIS;So;0;L;;;;;N;;;;; -1D200;GREEK VOCAL NOTATION SYMBOL-1;So;0;ON;;;;;N;;;;; -1D201;GREEK VOCAL NOTATION SYMBOL-2;So;0;ON;;;;;N;;;;; -1D202;GREEK VOCAL NOTATION SYMBOL-3;So;0;ON;;;;;N;;;;; -1D203;GREEK VOCAL NOTATION SYMBOL-4;So;0;ON;;;;;N;;;;; -1D204;GREEK VOCAL NOTATION SYMBOL-5;So;0;ON;;;;;N;;;;; -1D205;GREEK VOCAL NOTATION SYMBOL-6;So;0;ON;;;;;N;;;;; -1D206;GREEK VOCAL NOTATION SYMBOL-7;So;0;ON;;;;;N;;;;; -1D207;GREEK VOCAL NOTATION SYMBOL-8;So;0;ON;;;;;N;;;;; -1D208;GREEK VOCAL NOTATION SYMBOL-9;So;0;ON;;;;;N;;;;; -1D209;GREEK VOCAL NOTATION SYMBOL-10;So;0;ON;;;;;N;;;;; -1D20A;GREEK VOCAL NOTATION SYMBOL-11;So;0;ON;;;;;N;;;;; -1D20B;GREEK VOCAL NOTATION SYMBOL-12;So;0;ON;;;;;N;;;;; -1D20C;GREEK VOCAL NOTATION SYMBOL-13;So;0;ON;;;;;N;;;;; -1D20D;GREEK VOCAL NOTATION SYMBOL-14;So;0;ON;;;;;N;;;;; -1D20E;GREEK VOCAL NOTATION SYMBOL-15;So;0;ON;;;;;N;;;;; -1D20F;GREEK VOCAL NOTATION SYMBOL-16;So;0;ON;;;;;N;;;;; -1D210;GREEK VOCAL NOTATION SYMBOL-17;So;0;ON;;;;;N;;;;; -1D211;GREEK VOCAL NOTATION SYMBOL-18;So;0;ON;;;;;N;;;;; -1D212;GREEK VOCAL NOTATION SYMBOL-19;So;0;ON;;;;;N;;;;; -1D213;GREEK VOCAL NOTATION SYMBOL-20;So;0;ON;;;;;N;;;;; -1D214;GREEK VOCAL NOTATION SYMBOL-21;So;0;ON;;;;;N;;;;; -1D215;GREEK VOCAL NOTATION SYMBOL-22;So;0;ON;;;;;N;;;;; -1D216;GREEK VOCAL NOTATION SYMBOL-23;So;0;ON;;;;;N;;;;; -1D217;GREEK VOCAL NOTATION SYMBOL-24;So;0;ON;;;;;N;;;;; -1D218;GREEK VOCAL NOTATION SYMBOL-50;So;0;ON;;;;;N;;;;; -1D219;GREEK VOCAL NOTATION SYMBOL-51;So;0;ON;;;;;N;;;;; -1D21A;GREEK VOCAL NOTATION SYMBOL-52;So;0;ON;;;;;N;;;;; -1D21B;GREEK VOCAL NOTATION SYMBOL-53;So;0;ON;;;;;N;;;;; -1D21C;GREEK VOCAL NOTATION SYMBOL-54;So;0;ON;;;;;N;;;;; -1D21D;GREEK INSTRUMENTAL NOTATION SYMBOL-1;So;0;ON;;;;;N;;;;; -1D21E;GREEK INSTRUMENTAL NOTATION SYMBOL-2;So;0;ON;;;;;N;;;;; -1D21F;GREEK INSTRUMENTAL NOTATION SYMBOL-4;So;0;ON;;;;;N;;;;; -1D220;GREEK INSTRUMENTAL NOTATION SYMBOL-5;So;0;ON;;;;;N;;;;; -1D221;GREEK INSTRUMENTAL NOTATION SYMBOL-7;So;0;ON;;;;;N;;;;; -1D222;GREEK INSTRUMENTAL NOTATION SYMBOL-8;So;0;ON;;;;;N;;;;; -1D223;GREEK INSTRUMENTAL NOTATION SYMBOL-11;So;0;ON;;;;;N;;;;; -1D224;GREEK INSTRUMENTAL NOTATION SYMBOL-12;So;0;ON;;;;;N;;;;; -1D225;GREEK INSTRUMENTAL NOTATION SYMBOL-13;So;0;ON;;;;;N;;;;; -1D226;GREEK INSTRUMENTAL NOTATION SYMBOL-14;So;0;ON;;;;;N;;;;; -1D227;GREEK INSTRUMENTAL NOTATION SYMBOL-17;So;0;ON;;;;;N;;;;; -1D228;GREEK INSTRUMENTAL NOTATION SYMBOL-18;So;0;ON;;;;;N;;;;; -1D229;GREEK INSTRUMENTAL NOTATION SYMBOL-19;So;0;ON;;;;;N;;;;; -1D22A;GREEK INSTRUMENTAL NOTATION SYMBOL-23;So;0;ON;;;;;N;;;;; -1D22B;GREEK INSTRUMENTAL NOTATION SYMBOL-24;So;0;ON;;;;;N;;;;; -1D22C;GREEK INSTRUMENTAL NOTATION SYMBOL-25;So;0;ON;;;;;N;;;;; -1D22D;GREEK INSTRUMENTAL NOTATION SYMBOL-26;So;0;ON;;;;;N;;;;; -1D22E;GREEK INSTRUMENTAL NOTATION SYMBOL-27;So;0;ON;;;;;N;;;;; -1D22F;GREEK INSTRUMENTAL NOTATION SYMBOL-29;So;0;ON;;;;;N;;;;; -1D230;GREEK INSTRUMENTAL NOTATION SYMBOL-30;So;0;ON;;;;;N;;;;; -1D231;GREEK INSTRUMENTAL NOTATION SYMBOL-32;So;0;ON;;;;;N;;;;; -1D232;GREEK INSTRUMENTAL NOTATION SYMBOL-36;So;0;ON;;;;;N;;;;; -1D233;GREEK INSTRUMENTAL NOTATION SYMBOL-37;So;0;ON;;;;;N;;;;; -1D234;GREEK INSTRUMENTAL NOTATION SYMBOL-38;So;0;ON;;;;;N;;;;; -1D235;GREEK INSTRUMENTAL NOTATION SYMBOL-39;So;0;ON;;;;;N;;;;; -1D236;GREEK INSTRUMENTAL NOTATION SYMBOL-40;So;0;ON;;;;;N;;;;; -1D237;GREEK INSTRUMENTAL NOTATION SYMBOL-42;So;0;ON;;;;;N;;;;; -1D238;GREEK INSTRUMENTAL NOTATION SYMBOL-43;So;0;ON;;;;;N;;;;; -1D239;GREEK INSTRUMENTAL NOTATION SYMBOL-45;So;0;ON;;;;;N;;;;; -1D23A;GREEK INSTRUMENTAL NOTATION SYMBOL-47;So;0;ON;;;;;N;;;;; -1D23B;GREEK INSTRUMENTAL NOTATION SYMBOL-48;So;0;ON;;;;;N;;;;; -1D23C;GREEK INSTRUMENTAL NOTATION SYMBOL-49;So;0;ON;;;;;N;;;;; -1D23D;GREEK INSTRUMENTAL NOTATION SYMBOL-50;So;0;ON;;;;;N;;;;; -1D23E;GREEK INSTRUMENTAL NOTATION SYMBOL-51;So;0;ON;;;;;N;;;;; -1D23F;GREEK INSTRUMENTAL NOTATION SYMBOL-52;So;0;ON;;;;;N;;;;; -1D240;GREEK INSTRUMENTAL NOTATION SYMBOL-53;So;0;ON;;;;;N;;;;; -1D241;GREEK INSTRUMENTAL NOTATION SYMBOL-54;So;0;ON;;;;;N;;;;; -1D242;COMBINING GREEK MUSICAL TRISEME;Mn;230;NSM;;;;;N;;;;; -1D243;COMBINING GREEK MUSICAL TETRASEME;Mn;230;NSM;;;;;N;;;;; -1D244;COMBINING GREEK MUSICAL PENTASEME;Mn;230;NSM;;;;;N;;;;; -1D245;GREEK MUSICAL LEIMMA;So;0;ON;;;;;N;;;;; -1D300;MONOGRAM FOR EARTH;So;0;ON;;;;;N;;;;; -1D301;DIGRAM FOR HEAVENLY EARTH;So;0;ON;;;;;N;;;;; -1D302;DIGRAM FOR HUMAN EARTH;So;0;ON;;;;;N;;;;; -1D303;DIGRAM FOR EARTHLY HEAVEN;So;0;ON;;;;;N;;;;; -1D304;DIGRAM FOR EARTHLY HUMAN;So;0;ON;;;;;N;;;;; -1D305;DIGRAM FOR EARTH;So;0;ON;;;;;N;;;;; -1D306;TETRAGRAM FOR CENTRE;So;0;ON;;;;;N;;;;; -1D307;TETRAGRAM FOR FULL CIRCLE;So;0;ON;;;;;N;;;;; -1D308;TETRAGRAM FOR MIRED;So;0;ON;;;;;N;;;;; -1D309;TETRAGRAM FOR BARRIER;So;0;ON;;;;;N;;;;; -1D30A;TETRAGRAM FOR KEEPING SMALL;So;0;ON;;;;;N;;;;; -1D30B;TETRAGRAM FOR CONTRARIETY;So;0;ON;;;;;N;;;;; -1D30C;TETRAGRAM FOR ASCENT;So;0;ON;;;;;N;;;;; -1D30D;TETRAGRAM FOR OPPOSITION;So;0;ON;;;;;N;;;;; -1D30E;TETRAGRAM FOR BRANCHING OUT;So;0;ON;;;;;N;;;;; -1D30F;TETRAGRAM FOR DEFECTIVENESS OR DISTORTION;So;0;ON;;;;;N;;;;; -1D310;TETRAGRAM FOR DIVERGENCE;So;0;ON;;;;;N;;;;; -1D311;TETRAGRAM FOR YOUTHFULNESS;So;0;ON;;;;;N;;;;; -1D312;TETRAGRAM FOR INCREASE;So;0;ON;;;;;N;;;;; -1D313;TETRAGRAM FOR PENETRATION;So;0;ON;;;;;N;;;;; -1D314;TETRAGRAM FOR REACH;So;0;ON;;;;;N;;;;; -1D315;TETRAGRAM FOR CONTACT;So;0;ON;;;;;N;;;;; -1D316;TETRAGRAM FOR HOLDING BACK;So;0;ON;;;;;N;;;;; -1D317;TETRAGRAM FOR WAITING;So;0;ON;;;;;N;;;;; -1D318;TETRAGRAM FOR FOLLOWING;So;0;ON;;;;;N;;;;; -1D319;TETRAGRAM FOR ADVANCE;So;0;ON;;;;;N;;;;; -1D31A;TETRAGRAM FOR RELEASE;So;0;ON;;;;;N;;;;; -1D31B;TETRAGRAM FOR RESISTANCE;So;0;ON;;;;;N;;;;; -1D31C;TETRAGRAM FOR EASE;So;0;ON;;;;;N;;;;; -1D31D;TETRAGRAM FOR JOY;So;0;ON;;;;;N;;;;; -1D31E;TETRAGRAM FOR CONTENTION;So;0;ON;;;;;N;;;;; -1D31F;TETRAGRAM FOR ENDEAVOUR;So;0;ON;;;;;N;;;;; -1D320;TETRAGRAM FOR DUTIES;So;0;ON;;;;;N;;;;; -1D321;TETRAGRAM FOR CHANGE;So;0;ON;;;;;N;;;;; -1D322;TETRAGRAM FOR DECISIVENESS;So;0;ON;;;;;N;;;;; -1D323;TETRAGRAM FOR BOLD RESOLUTION;So;0;ON;;;;;N;;;;; -1D324;TETRAGRAM FOR PACKING;So;0;ON;;;;;N;;;;; -1D325;TETRAGRAM FOR LEGION;So;0;ON;;;;;N;;;;; -1D326;TETRAGRAM FOR CLOSENESS;So;0;ON;;;;;N;;;;; -1D327;TETRAGRAM FOR KINSHIP;So;0;ON;;;;;N;;;;; -1D328;TETRAGRAM FOR GATHERING;So;0;ON;;;;;N;;;;; -1D329;TETRAGRAM FOR STRENGTH;So;0;ON;;;;;N;;;;; -1D32A;TETRAGRAM FOR PURITY;So;0;ON;;;;;N;;;;; -1D32B;TETRAGRAM FOR FULLNESS;So;0;ON;;;;;N;;;;; -1D32C;TETRAGRAM FOR RESIDENCE;So;0;ON;;;;;N;;;;; -1D32D;TETRAGRAM FOR LAW OR MODEL;So;0;ON;;;;;N;;;;; -1D32E;TETRAGRAM FOR RESPONSE;So;0;ON;;;;;N;;;;; -1D32F;TETRAGRAM FOR GOING TO MEET;So;0;ON;;;;;N;;;;; -1D330;TETRAGRAM FOR ENCOUNTERS;So;0;ON;;;;;N;;;;; -1D331;TETRAGRAM FOR STOVE;So;0;ON;;;;;N;;;;; -1D332;TETRAGRAM FOR GREATNESS;So;0;ON;;;;;N;;;;; -1D333;TETRAGRAM FOR ENLARGEMENT;So;0;ON;;;;;N;;;;; -1D334;TETRAGRAM FOR PATTERN;So;0;ON;;;;;N;;;;; -1D335;TETRAGRAM FOR RITUAL;So;0;ON;;;;;N;;;;; -1D336;TETRAGRAM FOR FLIGHT;So;0;ON;;;;;N;;;;; -1D337;TETRAGRAM FOR VASTNESS OR WASTING;So;0;ON;;;;;N;;;;; -1D338;TETRAGRAM FOR CONSTANCY;So;0;ON;;;;;N;;;;; -1D339;TETRAGRAM FOR MEASURE;So;0;ON;;;;;N;;;;; -1D33A;TETRAGRAM FOR ETERNITY;So;0;ON;;;;;N;;;;; -1D33B;TETRAGRAM FOR UNITY;So;0;ON;;;;;N;;;;; -1D33C;TETRAGRAM FOR DIMINISHMENT;So;0;ON;;;;;N;;;;; -1D33D;TETRAGRAM FOR CLOSED MOUTH;So;0;ON;;;;;N;;;;; -1D33E;TETRAGRAM FOR GUARDEDNESS;So;0;ON;;;;;N;;;;; -1D33F;TETRAGRAM FOR GATHERING IN;So;0;ON;;;;;N;;;;; -1D340;TETRAGRAM FOR MASSING;So;0;ON;;;;;N;;;;; -1D341;TETRAGRAM FOR ACCUMULATION;So;0;ON;;;;;N;;;;; -1D342;TETRAGRAM FOR EMBELLISHMENT;So;0;ON;;;;;N;;;;; -1D343;TETRAGRAM FOR DOUBT;So;0;ON;;;;;N;;;;; -1D344;TETRAGRAM FOR WATCH;So;0;ON;;;;;N;;;;; -1D345;TETRAGRAM FOR SINKING;So;0;ON;;;;;N;;;;; -1D346;TETRAGRAM FOR INNER;So;0;ON;;;;;N;;;;; -1D347;TETRAGRAM FOR DEPARTURE;So;0;ON;;;;;N;;;;; -1D348;TETRAGRAM FOR DARKENING;So;0;ON;;;;;N;;;;; -1D349;TETRAGRAM FOR DIMMING;So;0;ON;;;;;N;;;;; -1D34A;TETRAGRAM FOR EXHAUSTION;So;0;ON;;;;;N;;;;; -1D34B;TETRAGRAM FOR SEVERANCE;So;0;ON;;;;;N;;;;; -1D34C;TETRAGRAM FOR STOPPAGE;So;0;ON;;;;;N;;;;; -1D34D;TETRAGRAM FOR HARDNESS;So;0;ON;;;;;N;;;;; -1D34E;TETRAGRAM FOR COMPLETION;So;0;ON;;;;;N;;;;; -1D34F;TETRAGRAM FOR CLOSURE;So;0;ON;;;;;N;;;;; -1D350;TETRAGRAM FOR FAILURE;So;0;ON;;;;;N;;;;; -1D351;TETRAGRAM FOR AGGRAVATION;So;0;ON;;;;;N;;;;; -1D352;TETRAGRAM FOR COMPLIANCE;So;0;ON;;;;;N;;;;; -1D353;TETRAGRAM FOR ON THE VERGE;So;0;ON;;;;;N;;;;; -1D354;TETRAGRAM FOR DIFFICULTIES;So;0;ON;;;;;N;;;;; -1D355;TETRAGRAM FOR LABOURING;So;0;ON;;;;;N;;;;; -1D356;TETRAGRAM FOR FOSTERING;So;0;ON;;;;;N;;;;; -1D360;COUNTING ROD UNIT DIGIT ONE;No;0;L;;;;1;N;;;;; -1D361;COUNTING ROD UNIT DIGIT TWO;No;0;L;;;;2;N;;;;; -1D362;COUNTING ROD UNIT DIGIT THREE;No;0;L;;;;3;N;;;;; -1D363;COUNTING ROD UNIT DIGIT FOUR;No;0;L;;;;4;N;;;;; -1D364;COUNTING ROD UNIT DIGIT FIVE;No;0;L;;;;5;N;;;;; -1D365;COUNTING ROD UNIT DIGIT SIX;No;0;L;;;;6;N;;;;; -1D366;COUNTING ROD UNIT DIGIT SEVEN;No;0;L;;;;7;N;;;;; -1D367;COUNTING ROD UNIT DIGIT EIGHT;No;0;L;;;;8;N;;;;; -1D368;COUNTING ROD UNIT DIGIT NINE;No;0;L;;;;9;N;;;;; -1D369;COUNTING ROD TENS DIGIT ONE;No;0;L;;;;10;N;;;;; -1D36A;COUNTING ROD TENS DIGIT TWO;No;0;L;;;;20;N;;;;; -1D36B;COUNTING ROD TENS DIGIT THREE;No;0;L;;;;30;N;;;;; -1D36C;COUNTING ROD TENS DIGIT FOUR;No;0;L;;;;40;N;;;;; -1D36D;COUNTING ROD TENS DIGIT FIVE;No;0;L;;;;50;N;;;;; -1D36E;COUNTING ROD TENS DIGIT SIX;No;0;L;;;;60;N;;;;; -1D36F;COUNTING ROD TENS DIGIT SEVEN;No;0;L;;;;70;N;;;;; -1D370;COUNTING ROD TENS DIGIT EIGHT;No;0;L;;;;80;N;;;;; -1D371;COUNTING ROD TENS DIGIT NINE;No;0;L;;;;90;N;;;;; -1D400;MATHEMATICAL BOLD CAPITAL A;Lu;0;L; 0041;;;;N;;;;; -1D401;MATHEMATICAL BOLD CAPITAL B;Lu;0;L; 0042;;;;N;;;;; -1D402;MATHEMATICAL BOLD CAPITAL C;Lu;0;L; 0043;;;;N;;;;; -1D403;MATHEMATICAL BOLD CAPITAL D;Lu;0;L; 0044;;;;N;;;;; -1D404;MATHEMATICAL BOLD CAPITAL E;Lu;0;L; 0045;;;;N;;;;; -1D405;MATHEMATICAL BOLD CAPITAL F;Lu;0;L; 0046;;;;N;;;;; -1D406;MATHEMATICAL BOLD CAPITAL G;Lu;0;L; 0047;;;;N;;;;; -1D407;MATHEMATICAL BOLD CAPITAL H;Lu;0;L; 0048;;;;N;;;;; -1D408;MATHEMATICAL BOLD CAPITAL I;Lu;0;L; 0049;;;;N;;;;; -1D409;MATHEMATICAL BOLD CAPITAL J;Lu;0;L; 004A;;;;N;;;;; -1D40A;MATHEMATICAL BOLD CAPITAL K;Lu;0;L; 004B;;;;N;;;;; -1D40B;MATHEMATICAL BOLD CAPITAL L;Lu;0;L; 004C;;;;N;;;;; -1D40C;MATHEMATICAL BOLD CAPITAL M;Lu;0;L; 004D;;;;N;;;;; -1D40D;MATHEMATICAL BOLD CAPITAL N;Lu;0;L; 004E;;;;N;;;;; -1D40E;MATHEMATICAL BOLD CAPITAL O;Lu;0;L; 004F;;;;N;;;;; -1D40F;MATHEMATICAL BOLD CAPITAL P;Lu;0;L; 0050;;;;N;;;;; -1D410;MATHEMATICAL BOLD CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; -1D411;MATHEMATICAL BOLD CAPITAL R;Lu;0;L; 0052;;;;N;;;;; -1D412;MATHEMATICAL BOLD CAPITAL S;Lu;0;L; 0053;;;;N;;;;; -1D413;MATHEMATICAL BOLD CAPITAL T;Lu;0;L; 0054;;;;N;;;;; -1D414;MATHEMATICAL BOLD CAPITAL U;Lu;0;L; 0055;;;;N;;;;; -1D415;MATHEMATICAL BOLD CAPITAL V;Lu;0;L; 0056;;;;N;;;;; -1D416;MATHEMATICAL BOLD CAPITAL W;Lu;0;L; 0057;;;;N;;;;; -1D417;MATHEMATICAL BOLD CAPITAL X;Lu;0;L; 0058;;;;N;;;;; -1D418;MATHEMATICAL BOLD CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; -1D419;MATHEMATICAL BOLD CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; -1D41A;MATHEMATICAL BOLD SMALL A;Ll;0;L; 0061;;;;N;;;;; -1D41B;MATHEMATICAL BOLD SMALL B;Ll;0;L; 0062;;;;N;;;;; -1D41C;MATHEMATICAL BOLD SMALL C;Ll;0;L; 0063;;;;N;;;;; -1D41D;MATHEMATICAL BOLD SMALL D;Ll;0;L; 0064;;;;N;;;;; -1D41E;MATHEMATICAL BOLD SMALL E;Ll;0;L; 0065;;;;N;;;;; -1D41F;MATHEMATICAL BOLD SMALL F;Ll;0;L; 0066;;;;N;;;;; -1D420;MATHEMATICAL BOLD SMALL G;Ll;0;L; 0067;;;;N;;;;; -1D421;MATHEMATICAL BOLD SMALL H;Ll;0;L; 0068;;;;N;;;;; -1D422;MATHEMATICAL BOLD SMALL I;Ll;0;L; 0069;;;;N;;;;; -1D423;MATHEMATICAL BOLD SMALL J;Ll;0;L; 006A;;;;N;;;;; -1D424;MATHEMATICAL BOLD SMALL K;Ll;0;L; 006B;;;;N;;;;; -1D425;MATHEMATICAL BOLD SMALL L;Ll;0;L; 006C;;;;N;;;;; -1D426;MATHEMATICAL BOLD SMALL M;Ll;0;L; 006D;;;;N;;;;; -1D427;MATHEMATICAL BOLD SMALL N;Ll;0;L; 006E;;;;N;;;;; -1D428;MATHEMATICAL BOLD SMALL O;Ll;0;L; 006F;;;;N;;;;; -1D429;MATHEMATICAL BOLD SMALL P;Ll;0;L; 0070;;;;N;;;;; -1D42A;MATHEMATICAL BOLD SMALL Q;Ll;0;L; 0071;;;;N;;;;; -1D42B;MATHEMATICAL BOLD SMALL R;Ll;0;L; 0072;;;;N;;;;; -1D42C;MATHEMATICAL BOLD SMALL S;Ll;0;L; 0073;;;;N;;;;; -1D42D;MATHEMATICAL BOLD SMALL T;Ll;0;L; 0074;;;;N;;;;; -1D42E;MATHEMATICAL BOLD SMALL U;Ll;0;L; 0075;;;;N;;;;; -1D42F;MATHEMATICAL BOLD SMALL V;Ll;0;L; 0076;;;;N;;;;; -1D430;MATHEMATICAL BOLD SMALL W;Ll;0;L; 0077;;;;N;;;;; -1D431;MATHEMATICAL BOLD SMALL X;Ll;0;L; 0078;;;;N;;;;; -1D432;MATHEMATICAL BOLD SMALL Y;Ll;0;L; 0079;;;;N;;;;; -1D433;MATHEMATICAL BOLD SMALL Z;Ll;0;L; 007A;;;;N;;;;; -1D434;MATHEMATICAL ITALIC CAPITAL A;Lu;0;L; 0041;;;;N;;;;; -1D435;MATHEMATICAL ITALIC CAPITAL B;Lu;0;L; 0042;;;;N;;;;; -1D436;MATHEMATICAL ITALIC CAPITAL C;Lu;0;L; 0043;;;;N;;;;; -1D437;MATHEMATICAL ITALIC CAPITAL D;Lu;0;L; 0044;;;;N;;;;; -1D438;MATHEMATICAL ITALIC CAPITAL E;Lu;0;L; 0045;;;;N;;;;; -1D439;MATHEMATICAL ITALIC CAPITAL F;Lu;0;L; 0046;;;;N;;;;; -1D43A;MATHEMATICAL ITALIC CAPITAL G;Lu;0;L; 0047;;;;N;;;;; -1D43B;MATHEMATICAL ITALIC CAPITAL H;Lu;0;L; 0048;;;;N;;;;; -1D43C;MATHEMATICAL ITALIC CAPITAL I;Lu;0;L; 0049;;;;N;;;;; -1D43D;MATHEMATICAL ITALIC CAPITAL J;Lu;0;L; 004A;;;;N;;;;; -1D43E;MATHEMATICAL ITALIC CAPITAL K;Lu;0;L; 004B;;;;N;;;;; -1D43F;MATHEMATICAL ITALIC CAPITAL L;Lu;0;L; 004C;;;;N;;;;; -1D440;MATHEMATICAL ITALIC CAPITAL M;Lu;0;L; 004D;;;;N;;;;; -1D441;MATHEMATICAL ITALIC CAPITAL N;Lu;0;L; 004E;;;;N;;;;; -1D442;MATHEMATICAL ITALIC CAPITAL O;Lu;0;L; 004F;;;;N;;;;; -1D443;MATHEMATICAL ITALIC CAPITAL P;Lu;0;L; 0050;;;;N;;;;; -1D444;MATHEMATICAL ITALIC CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; -1D445;MATHEMATICAL ITALIC CAPITAL R;Lu;0;L; 0052;;;;N;;;;; -1D446;MATHEMATICAL ITALIC CAPITAL S;Lu;0;L; 0053;;;;N;;;;; -1D447;MATHEMATICAL ITALIC CAPITAL T;Lu;0;L; 0054;;;;N;;;;; -1D448;MATHEMATICAL ITALIC CAPITAL U;Lu;0;L; 0055;;;;N;;;;; -1D449;MATHEMATICAL ITALIC CAPITAL V;Lu;0;L; 0056;;;;N;;;;; -1D44A;MATHEMATICAL ITALIC CAPITAL W;Lu;0;L; 0057;;;;N;;;;; -1D44B;MATHEMATICAL ITALIC CAPITAL X;Lu;0;L; 0058;;;;N;;;;; -1D44C;MATHEMATICAL ITALIC CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; -1D44D;MATHEMATICAL ITALIC CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; -1D44E;MATHEMATICAL ITALIC SMALL A;Ll;0;L; 0061;;;;N;;;;; -1D44F;MATHEMATICAL ITALIC SMALL B;Ll;0;L; 0062;;;;N;;;;; -1D450;MATHEMATICAL ITALIC SMALL C;Ll;0;L; 0063;;;;N;;;;; -1D451;MATHEMATICAL ITALIC SMALL D;Ll;0;L; 0064;;;;N;;;;; -1D452;MATHEMATICAL ITALIC SMALL E;Ll;0;L; 0065;;;;N;;;;; -1D453;MATHEMATICAL ITALIC SMALL F;Ll;0;L; 0066;;;;N;;;;; -1D454;MATHEMATICAL ITALIC SMALL G;Ll;0;L; 0067;;;;N;;;;; -1D456;MATHEMATICAL ITALIC SMALL I;Ll;0;L; 0069;;;;N;;;;; -1D457;MATHEMATICAL ITALIC SMALL J;Ll;0;L; 006A;;;;N;;;;; -1D458;MATHEMATICAL ITALIC SMALL K;Ll;0;L; 006B;;;;N;;;;; -1D459;MATHEMATICAL ITALIC SMALL L;Ll;0;L; 006C;;;;N;;;;; -1D45A;MATHEMATICAL ITALIC SMALL M;Ll;0;L; 006D;;;;N;;;;; -1D45B;MATHEMATICAL ITALIC SMALL N;Ll;0;L; 006E;;;;N;;;;; -1D45C;MATHEMATICAL ITALIC SMALL O;Ll;0;L; 006F;;;;N;;;;; -1D45D;MATHEMATICAL ITALIC SMALL P;Ll;0;L; 0070;;;;N;;;;; -1D45E;MATHEMATICAL ITALIC SMALL Q;Ll;0;L; 0071;;;;N;;;;; -1D45F;MATHEMATICAL ITALIC SMALL R;Ll;0;L; 0072;;;;N;;;;; -1D460;MATHEMATICAL ITALIC SMALL S;Ll;0;L; 0073;;;;N;;;;; -1D461;MATHEMATICAL ITALIC SMALL T;Ll;0;L; 0074;;;;N;;;;; -1D462;MATHEMATICAL ITALIC SMALL U;Ll;0;L; 0075;;;;N;;;;; -1D463;MATHEMATICAL ITALIC SMALL V;Ll;0;L; 0076;;;;N;;;;; -1D464;MATHEMATICAL ITALIC SMALL W;Ll;0;L; 0077;;;;N;;;;; -1D465;MATHEMATICAL ITALIC SMALL X;Ll;0;L; 0078;;;;N;;;;; -1D466;MATHEMATICAL ITALIC SMALL Y;Ll;0;L; 0079;;;;N;;;;; -1D467;MATHEMATICAL ITALIC SMALL Z;Ll;0;L; 007A;;;;N;;;;; -1D468;MATHEMATICAL BOLD ITALIC CAPITAL A;Lu;0;L; 0041;;;;N;;;;; -1D469;MATHEMATICAL BOLD ITALIC CAPITAL B;Lu;0;L; 0042;;;;N;;;;; -1D46A;MATHEMATICAL BOLD ITALIC CAPITAL C;Lu;0;L; 0043;;;;N;;;;; -1D46B;MATHEMATICAL BOLD ITALIC CAPITAL D;Lu;0;L; 0044;;;;N;;;;; -1D46C;MATHEMATICAL BOLD ITALIC CAPITAL E;Lu;0;L; 0045;;;;N;;;;; -1D46D;MATHEMATICAL BOLD ITALIC CAPITAL F;Lu;0;L; 0046;;;;N;;;;; -1D46E;MATHEMATICAL BOLD ITALIC CAPITAL G;Lu;0;L; 0047;;;;N;;;;; -1D46F;MATHEMATICAL BOLD ITALIC CAPITAL H;Lu;0;L; 0048;;;;N;;;;; -1D470;MATHEMATICAL BOLD ITALIC CAPITAL I;Lu;0;L; 0049;;;;N;;;;; -1D471;MATHEMATICAL BOLD ITALIC CAPITAL J;Lu;0;L; 004A;;;;N;;;;; -1D472;MATHEMATICAL BOLD ITALIC CAPITAL K;Lu;0;L; 004B;;;;N;;;;; -1D473;MATHEMATICAL BOLD ITALIC CAPITAL L;Lu;0;L; 004C;;;;N;;;;; -1D474;MATHEMATICAL BOLD ITALIC CAPITAL M;Lu;0;L; 004D;;;;N;;;;; -1D475;MATHEMATICAL BOLD ITALIC CAPITAL N;Lu;0;L; 004E;;;;N;;;;; -1D476;MATHEMATICAL BOLD ITALIC CAPITAL O;Lu;0;L; 004F;;;;N;;;;; -1D477;MATHEMATICAL BOLD ITALIC CAPITAL P;Lu;0;L; 0050;;;;N;;;;; -1D478;MATHEMATICAL BOLD ITALIC CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; -1D479;MATHEMATICAL BOLD ITALIC CAPITAL R;Lu;0;L; 0052;;;;N;;;;; -1D47A;MATHEMATICAL BOLD ITALIC CAPITAL S;Lu;0;L; 0053;;;;N;;;;; -1D47B;MATHEMATICAL BOLD ITALIC CAPITAL T;Lu;0;L; 0054;;;;N;;;;; -1D47C;MATHEMATICAL BOLD ITALIC CAPITAL U;Lu;0;L; 0055;;;;N;;;;; -1D47D;MATHEMATICAL BOLD ITALIC CAPITAL V;Lu;0;L; 0056;;;;N;;;;; -1D47E;MATHEMATICAL BOLD ITALIC CAPITAL W;Lu;0;L; 0057;;;;N;;;;; -1D47F;MATHEMATICAL BOLD ITALIC CAPITAL X;Lu;0;L; 0058;;;;N;;;;; -1D480;MATHEMATICAL BOLD ITALIC CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; -1D481;MATHEMATICAL BOLD ITALIC CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; -1D482;MATHEMATICAL BOLD ITALIC SMALL A;Ll;0;L; 0061;;;;N;;;;; -1D483;MATHEMATICAL BOLD ITALIC SMALL B;Ll;0;L; 0062;;;;N;;;;; -1D484;MATHEMATICAL BOLD ITALIC SMALL C;Ll;0;L; 0063;;;;N;;;;; -1D485;MATHEMATICAL BOLD ITALIC SMALL D;Ll;0;L; 0064;;;;N;;;;; -1D486;MATHEMATICAL BOLD ITALIC SMALL E;Ll;0;L; 0065;;;;N;;;;; -1D487;MATHEMATICAL BOLD ITALIC SMALL F;Ll;0;L; 0066;;;;N;;;;; -1D488;MATHEMATICAL BOLD ITALIC SMALL G;Ll;0;L; 0067;;;;N;;;;; -1D489;MATHEMATICAL BOLD ITALIC SMALL H;Ll;0;L; 0068;;;;N;;;;; -1D48A;MATHEMATICAL BOLD ITALIC SMALL I;Ll;0;L; 0069;;;;N;;;;; -1D48B;MATHEMATICAL BOLD ITALIC SMALL J;Ll;0;L; 006A;;;;N;;;;; -1D48C;MATHEMATICAL BOLD ITALIC SMALL K;Ll;0;L; 006B;;;;N;;;;; -1D48D;MATHEMATICAL BOLD ITALIC SMALL L;Ll;0;L; 006C;;;;N;;;;; -1D48E;MATHEMATICAL BOLD ITALIC SMALL M;Ll;0;L; 006D;;;;N;;;;; -1D48F;MATHEMATICAL BOLD ITALIC SMALL N;Ll;0;L; 006E;;;;N;;;;; -1D490;MATHEMATICAL BOLD ITALIC SMALL O;Ll;0;L; 006F;;;;N;;;;; -1D491;MATHEMATICAL BOLD ITALIC SMALL P;Ll;0;L; 0070;;;;N;;;;; -1D492;MATHEMATICAL BOLD ITALIC SMALL Q;Ll;0;L; 0071;;;;N;;;;; -1D493;MATHEMATICAL BOLD ITALIC SMALL R;Ll;0;L; 0072;;;;N;;;;; -1D494;MATHEMATICAL BOLD ITALIC SMALL S;Ll;0;L; 0073;;;;N;;;;; -1D495;MATHEMATICAL BOLD ITALIC SMALL T;Ll;0;L; 0074;;;;N;;;;; -1D496;MATHEMATICAL BOLD ITALIC SMALL U;Ll;0;L; 0075;;;;N;;;;; -1D497;MATHEMATICAL BOLD ITALIC SMALL V;Ll;0;L; 0076;;;;N;;;;; -1D498;MATHEMATICAL BOLD ITALIC SMALL W;Ll;0;L; 0077;;;;N;;;;; -1D499;MATHEMATICAL BOLD ITALIC SMALL X;Ll;0;L; 0078;;;;N;;;;; -1D49A;MATHEMATICAL BOLD ITALIC SMALL Y;Ll;0;L; 0079;;;;N;;;;; -1D49B;MATHEMATICAL BOLD ITALIC SMALL Z;Ll;0;L; 007A;;;;N;;;;; -1D49C;MATHEMATICAL SCRIPT CAPITAL A;Lu;0;L; 0041;;;;N;;;;; -1D49E;MATHEMATICAL SCRIPT CAPITAL C;Lu;0;L; 0043;;;;N;;;;; -1D49F;MATHEMATICAL SCRIPT CAPITAL D;Lu;0;L; 0044;;;;N;;;;; -1D4A2;MATHEMATICAL SCRIPT CAPITAL G;Lu;0;L; 0047;;;;N;;;;; -1D4A5;MATHEMATICAL SCRIPT CAPITAL J;Lu;0;L; 004A;;;;N;;;;; -1D4A6;MATHEMATICAL SCRIPT CAPITAL K;Lu;0;L; 004B;;;;N;;;;; -1D4A9;MATHEMATICAL SCRIPT CAPITAL N;Lu;0;L; 004E;;;;N;;;;; -1D4AA;MATHEMATICAL SCRIPT CAPITAL O;Lu;0;L; 004F;;;;N;;;;; -1D4AB;MATHEMATICAL SCRIPT CAPITAL P;Lu;0;L; 0050;;;;N;;;;; -1D4AC;MATHEMATICAL SCRIPT CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; -1D4AE;MATHEMATICAL SCRIPT CAPITAL S;Lu;0;L; 0053;;;;N;;;;; -1D4AF;MATHEMATICAL SCRIPT CAPITAL T;Lu;0;L; 0054;;;;N;;;;; -1D4B0;MATHEMATICAL SCRIPT CAPITAL U;Lu;0;L; 0055;;;;N;;;;; -1D4B1;MATHEMATICAL SCRIPT CAPITAL V;Lu;0;L; 0056;;;;N;;;;; -1D4B2;MATHEMATICAL SCRIPT CAPITAL W;Lu;0;L; 0057;;;;N;;;;; -1D4B3;MATHEMATICAL SCRIPT CAPITAL X;Lu;0;L; 0058;;;;N;;;;; -1D4B4;MATHEMATICAL SCRIPT CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; -1D4B5;MATHEMATICAL SCRIPT CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; -1D4B6;MATHEMATICAL SCRIPT SMALL A;Ll;0;L; 0061;;;;N;;;;; -1D4B7;MATHEMATICAL SCRIPT SMALL B;Ll;0;L; 0062;;;;N;;;;; -1D4B8;MATHEMATICAL SCRIPT SMALL C;Ll;0;L; 0063;;;;N;;;;; -1D4B9;MATHEMATICAL SCRIPT SMALL D;Ll;0;L; 0064;;;;N;;;;; -1D4BB;MATHEMATICAL SCRIPT SMALL F;Ll;0;L; 0066;;;;N;;;;; -1D4BD;MATHEMATICAL SCRIPT SMALL H;Ll;0;L; 0068;;;;N;;;;; -1D4BE;MATHEMATICAL SCRIPT SMALL I;Ll;0;L; 0069;;;;N;;;;; -1D4BF;MATHEMATICAL SCRIPT SMALL J;Ll;0;L; 006A;;;;N;;;;; -1D4C0;MATHEMATICAL SCRIPT SMALL K;Ll;0;L; 006B;;;;N;;;;; -1D4C1;MATHEMATICAL SCRIPT SMALL L;Ll;0;L; 006C;;;;N;;;;; -1D4C2;MATHEMATICAL SCRIPT SMALL M;Ll;0;L; 006D;;;;N;;;;; -1D4C3;MATHEMATICAL SCRIPT SMALL N;Ll;0;L; 006E;;;;N;;;;; -1D4C5;MATHEMATICAL SCRIPT SMALL P;Ll;0;L; 0070;;;;N;;;;; -1D4C6;MATHEMATICAL SCRIPT SMALL Q;Ll;0;L; 0071;;;;N;;;;; -1D4C7;MATHEMATICAL SCRIPT SMALL R;Ll;0;L; 0072;;;;N;;;;; -1D4C8;MATHEMATICAL SCRIPT SMALL S;Ll;0;L; 0073;;;;N;;;;; -1D4C9;MATHEMATICAL SCRIPT SMALL T;Ll;0;L; 0074;;;;N;;;;; -1D4CA;MATHEMATICAL SCRIPT SMALL U;Ll;0;L; 0075;;;;N;;;;; -1D4CB;MATHEMATICAL SCRIPT SMALL V;Ll;0;L; 0076;;;;N;;;;; -1D4CC;MATHEMATICAL SCRIPT SMALL W;Ll;0;L; 0077;;;;N;;;;; -1D4CD;MATHEMATICAL SCRIPT SMALL X;Ll;0;L; 0078;;;;N;;;;; -1D4CE;MATHEMATICAL SCRIPT SMALL Y;Ll;0;L; 0079;;;;N;;;;; -1D4CF;MATHEMATICAL SCRIPT SMALL Z;Ll;0;L; 007A;;;;N;;;;; -1D4D0;MATHEMATICAL BOLD SCRIPT CAPITAL A;Lu;0;L; 0041;;;;N;;;;; -1D4D1;MATHEMATICAL BOLD SCRIPT CAPITAL B;Lu;0;L; 0042;;;;N;;;;; -1D4D2;MATHEMATICAL BOLD SCRIPT CAPITAL C;Lu;0;L; 0043;;;;N;;;;; -1D4D3;MATHEMATICAL BOLD SCRIPT CAPITAL D;Lu;0;L; 0044;;;;N;;;;; -1D4D4;MATHEMATICAL BOLD SCRIPT CAPITAL E;Lu;0;L; 0045;;;;N;;;;; -1D4D5;MATHEMATICAL BOLD SCRIPT CAPITAL F;Lu;0;L; 0046;;;;N;;;;; -1D4D6;MATHEMATICAL BOLD SCRIPT CAPITAL G;Lu;0;L; 0047;;;;N;;;;; -1D4D7;MATHEMATICAL BOLD SCRIPT CAPITAL H;Lu;0;L; 0048;;;;N;;;;; -1D4D8;MATHEMATICAL BOLD SCRIPT CAPITAL I;Lu;0;L; 0049;;;;N;;;;; -1D4D9;MATHEMATICAL BOLD SCRIPT CAPITAL J;Lu;0;L; 004A;;;;N;;;;; -1D4DA;MATHEMATICAL BOLD SCRIPT CAPITAL K;Lu;0;L; 004B;;;;N;;;;; -1D4DB;MATHEMATICAL BOLD SCRIPT CAPITAL L;Lu;0;L; 004C;;;;N;;;;; -1D4DC;MATHEMATICAL BOLD SCRIPT CAPITAL M;Lu;0;L; 004D;;;;N;;;;; -1D4DD;MATHEMATICAL BOLD SCRIPT CAPITAL N;Lu;0;L; 004E;;;;N;;;;; -1D4DE;MATHEMATICAL BOLD SCRIPT CAPITAL O;Lu;0;L; 004F;;;;N;;;;; -1D4DF;MATHEMATICAL BOLD SCRIPT CAPITAL P;Lu;0;L; 0050;;;;N;;;;; -1D4E0;MATHEMATICAL BOLD SCRIPT CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; -1D4E1;MATHEMATICAL BOLD SCRIPT CAPITAL R;Lu;0;L; 0052;;;;N;;;;; -1D4E2;MATHEMATICAL BOLD SCRIPT CAPITAL S;Lu;0;L; 0053;;;;N;;;;; -1D4E3;MATHEMATICAL BOLD SCRIPT CAPITAL T;Lu;0;L; 0054;;;;N;;;;; -1D4E4;MATHEMATICAL BOLD SCRIPT CAPITAL U;Lu;0;L; 0055;;;;N;;;;; -1D4E5;MATHEMATICAL BOLD SCRIPT CAPITAL V;Lu;0;L; 0056;;;;N;;;;; -1D4E6;MATHEMATICAL BOLD SCRIPT CAPITAL W;Lu;0;L; 0057;;;;N;;;;; -1D4E7;MATHEMATICAL BOLD SCRIPT CAPITAL X;Lu;0;L; 0058;;;;N;;;;; -1D4E8;MATHEMATICAL BOLD SCRIPT CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; -1D4E9;MATHEMATICAL BOLD SCRIPT CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; -1D4EA;MATHEMATICAL BOLD SCRIPT SMALL A;Ll;0;L; 0061;;;;N;;;;; -1D4EB;MATHEMATICAL BOLD SCRIPT SMALL B;Ll;0;L; 0062;;;;N;;;;; -1D4EC;MATHEMATICAL BOLD SCRIPT SMALL C;Ll;0;L; 0063;;;;N;;;;; -1D4ED;MATHEMATICAL BOLD SCRIPT SMALL D;Ll;0;L; 0064;;;;N;;;;; -1D4EE;MATHEMATICAL BOLD SCRIPT SMALL E;Ll;0;L; 0065;;;;N;;;;; -1D4EF;MATHEMATICAL BOLD SCRIPT SMALL F;Ll;0;L; 0066;;;;N;;;;; -1D4F0;MATHEMATICAL BOLD SCRIPT SMALL G;Ll;0;L; 0067;;;;N;;;;; -1D4F1;MATHEMATICAL BOLD SCRIPT SMALL H;Ll;0;L; 0068;;;;N;;;;; -1D4F2;MATHEMATICAL BOLD SCRIPT SMALL I;Ll;0;L; 0069;;;;N;;;;; -1D4F3;MATHEMATICAL BOLD SCRIPT SMALL J;Ll;0;L; 006A;;;;N;;;;; -1D4F4;MATHEMATICAL BOLD SCRIPT SMALL K;Ll;0;L; 006B;;;;N;;;;; -1D4F5;MATHEMATICAL BOLD SCRIPT SMALL L;Ll;0;L; 006C;;;;N;;;;; -1D4F6;MATHEMATICAL BOLD SCRIPT SMALL M;Ll;0;L; 006D;;;;N;;;;; -1D4F7;MATHEMATICAL BOLD SCRIPT SMALL N;Ll;0;L; 006E;;;;N;;;;; -1D4F8;MATHEMATICAL BOLD SCRIPT SMALL O;Ll;0;L; 006F;;;;N;;;;; -1D4F9;MATHEMATICAL BOLD SCRIPT SMALL P;Ll;0;L; 0070;;;;N;;;;; -1D4FA;MATHEMATICAL BOLD SCRIPT SMALL Q;Ll;0;L; 0071;;;;N;;;;; -1D4FB;MATHEMATICAL BOLD SCRIPT SMALL R;Ll;0;L; 0072;;;;N;;;;; -1D4FC;MATHEMATICAL BOLD SCRIPT SMALL S;Ll;0;L; 0073;;;;N;;;;; -1D4FD;MATHEMATICAL BOLD SCRIPT SMALL T;Ll;0;L; 0074;;;;N;;;;; -1D4FE;MATHEMATICAL BOLD SCRIPT SMALL U;Ll;0;L; 0075;;;;N;;;;; -1D4FF;MATHEMATICAL BOLD SCRIPT SMALL V;Ll;0;L; 0076;;;;N;;;;; -1D500;MATHEMATICAL BOLD SCRIPT SMALL W;Ll;0;L; 0077;;;;N;;;;; -1D501;MATHEMATICAL BOLD SCRIPT SMALL X;Ll;0;L; 0078;;;;N;;;;; -1D502;MATHEMATICAL BOLD SCRIPT SMALL Y;Ll;0;L; 0079;;;;N;;;;; -1D503;MATHEMATICAL BOLD SCRIPT SMALL Z;Ll;0;L; 007A;;;;N;;;;; -1D504;MATHEMATICAL FRAKTUR CAPITAL A;Lu;0;L; 0041;;;;N;;;;; -1D505;MATHEMATICAL FRAKTUR CAPITAL B;Lu;0;L; 0042;;;;N;;;;; -1D507;MATHEMATICAL FRAKTUR CAPITAL D;Lu;0;L; 0044;;;;N;;;;; -1D508;MATHEMATICAL FRAKTUR CAPITAL E;Lu;0;L; 0045;;;;N;;;;; -1D509;MATHEMATICAL FRAKTUR CAPITAL F;Lu;0;L; 0046;;;;N;;;;; -1D50A;MATHEMATICAL FRAKTUR CAPITAL G;Lu;0;L; 0047;;;;N;;;;; -1D50D;MATHEMATICAL FRAKTUR CAPITAL J;Lu;0;L; 004A;;;;N;;;;; -1D50E;MATHEMATICAL FRAKTUR CAPITAL K;Lu;0;L; 004B;;;;N;;;;; -1D50F;MATHEMATICAL FRAKTUR CAPITAL L;Lu;0;L; 004C;;;;N;;;;; -1D510;MATHEMATICAL FRAKTUR CAPITAL M;Lu;0;L; 004D;;;;N;;;;; -1D511;MATHEMATICAL FRAKTUR CAPITAL N;Lu;0;L; 004E;;;;N;;;;; -1D512;MATHEMATICAL FRAKTUR CAPITAL O;Lu;0;L; 004F;;;;N;;;;; -1D513;MATHEMATICAL FRAKTUR CAPITAL P;Lu;0;L; 0050;;;;N;;;;; -1D514;MATHEMATICAL FRAKTUR CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; -1D516;MATHEMATICAL FRAKTUR CAPITAL S;Lu;0;L; 0053;;;;N;;;;; -1D517;MATHEMATICAL FRAKTUR CAPITAL T;Lu;0;L; 0054;;;;N;;;;; -1D518;MATHEMATICAL FRAKTUR CAPITAL U;Lu;0;L; 0055;;;;N;;;;; -1D519;MATHEMATICAL FRAKTUR CAPITAL V;Lu;0;L; 0056;;;;N;;;;; -1D51A;MATHEMATICAL FRAKTUR CAPITAL W;Lu;0;L; 0057;;;;N;;;;; -1D51B;MATHEMATICAL FRAKTUR CAPITAL X;Lu;0;L; 0058;;;;N;;;;; -1D51C;MATHEMATICAL FRAKTUR CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; -1D51E;MATHEMATICAL FRAKTUR SMALL A;Ll;0;L; 0061;;;;N;;;;; -1D51F;MATHEMATICAL FRAKTUR SMALL B;Ll;0;L; 0062;;;;N;;;;; -1D520;MATHEMATICAL FRAKTUR SMALL C;Ll;0;L; 0063;;;;N;;;;; -1D521;MATHEMATICAL FRAKTUR SMALL D;Ll;0;L; 0064;;;;N;;;;; -1D522;MATHEMATICAL FRAKTUR SMALL E;Ll;0;L; 0065;;;;N;;;;; -1D523;MATHEMATICAL FRAKTUR SMALL F;Ll;0;L; 0066;;;;N;;;;; -1D524;MATHEMATICAL FRAKTUR SMALL G;Ll;0;L; 0067;;;;N;;;;; -1D525;MATHEMATICAL FRAKTUR SMALL H;Ll;0;L; 0068;;;;N;;;;; -1D526;MATHEMATICAL FRAKTUR SMALL I;Ll;0;L; 0069;;;;N;;;;; -1D527;MATHEMATICAL FRAKTUR SMALL J;Ll;0;L; 006A;;;;N;;;;; -1D528;MATHEMATICAL FRAKTUR SMALL K;Ll;0;L; 006B;;;;N;;;;; -1D529;MATHEMATICAL FRAKTUR SMALL L;Ll;0;L; 006C;;;;N;;;;; -1D52A;MATHEMATICAL FRAKTUR SMALL M;Ll;0;L; 006D;;;;N;;;;; -1D52B;MATHEMATICAL FRAKTUR SMALL N;Ll;0;L; 006E;;;;N;;;;; -1D52C;MATHEMATICAL FRAKTUR SMALL O;Ll;0;L; 006F;;;;N;;;;; -1D52D;MATHEMATICAL FRAKTUR SMALL P;Ll;0;L; 0070;;;;N;;;;; -1D52E;MATHEMATICAL FRAKTUR SMALL Q;Ll;0;L; 0071;;;;N;;;;; -1D52F;MATHEMATICAL FRAKTUR SMALL R;Ll;0;L; 0072;;;;N;;;;; -1D530;MATHEMATICAL FRAKTUR SMALL S;Ll;0;L; 0073;;;;N;;;;; -1D531;MATHEMATICAL FRAKTUR SMALL T;Ll;0;L; 0074;;;;N;;;;; -1D532;MATHEMATICAL FRAKTUR SMALL U;Ll;0;L; 0075;;;;N;;;;; -1D533;MATHEMATICAL FRAKTUR SMALL V;Ll;0;L; 0076;;;;N;;;;; -1D534;MATHEMATICAL FRAKTUR SMALL W;Ll;0;L; 0077;;;;N;;;;; -1D535;MATHEMATICAL FRAKTUR SMALL X;Ll;0;L; 0078;;;;N;;;;; -1D536;MATHEMATICAL FRAKTUR SMALL Y;Ll;0;L; 0079;;;;N;;;;; -1D537;MATHEMATICAL FRAKTUR SMALL Z;Ll;0;L; 007A;;;;N;;;;; -1D538;MATHEMATICAL DOUBLE-STRUCK CAPITAL A;Lu;0;L; 0041;;;;N;;;;; -1D539;MATHEMATICAL DOUBLE-STRUCK CAPITAL B;Lu;0;L; 0042;;;;N;;;;; -1D53B;MATHEMATICAL DOUBLE-STRUCK CAPITAL D;Lu;0;L; 0044;;;;N;;;;; -1D53C;MATHEMATICAL DOUBLE-STRUCK CAPITAL E;Lu;0;L; 0045;;;;N;;;;; -1D53D;MATHEMATICAL DOUBLE-STRUCK CAPITAL F;Lu;0;L; 0046;;;;N;;;;; -1D53E;MATHEMATICAL DOUBLE-STRUCK CAPITAL G;Lu;0;L; 0047;;;;N;;;;; -1D540;MATHEMATICAL DOUBLE-STRUCK CAPITAL I;Lu;0;L; 0049;;;;N;;;;; -1D541;MATHEMATICAL DOUBLE-STRUCK CAPITAL J;Lu;0;L; 004A;;;;N;;;;; -1D542;MATHEMATICAL DOUBLE-STRUCK CAPITAL K;Lu;0;L; 004B;;;;N;;;;; -1D543;MATHEMATICAL DOUBLE-STRUCK CAPITAL L;Lu;0;L; 004C;;;;N;;;;; -1D544;MATHEMATICAL DOUBLE-STRUCK CAPITAL M;Lu;0;L; 004D;;;;N;;;;; -1D546;MATHEMATICAL DOUBLE-STRUCK CAPITAL O;Lu;0;L; 004F;;;;N;;;;; -1D54A;MATHEMATICAL DOUBLE-STRUCK CAPITAL S;Lu;0;L; 0053;;;;N;;;;; -1D54B;MATHEMATICAL DOUBLE-STRUCK CAPITAL T;Lu;0;L; 0054;;;;N;;;;; -1D54C;MATHEMATICAL DOUBLE-STRUCK CAPITAL U;Lu;0;L; 0055;;;;N;;;;; -1D54D;MATHEMATICAL DOUBLE-STRUCK CAPITAL V;Lu;0;L; 0056;;;;N;;;;; -1D54E;MATHEMATICAL DOUBLE-STRUCK CAPITAL W;Lu;0;L; 0057;;;;N;;;;; -1D54F;MATHEMATICAL DOUBLE-STRUCK CAPITAL X;Lu;0;L; 0058;;;;N;;;;; -1D550;MATHEMATICAL DOUBLE-STRUCK CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; -1D552;MATHEMATICAL DOUBLE-STRUCK SMALL A;Ll;0;L; 0061;;;;N;;;;; -1D553;MATHEMATICAL DOUBLE-STRUCK SMALL B;Ll;0;L; 0062;;;;N;;;;; -1D554;MATHEMATICAL DOUBLE-STRUCK SMALL C;Ll;0;L; 0063;;;;N;;;;; -1D555;MATHEMATICAL DOUBLE-STRUCK SMALL D;Ll;0;L; 0064;;;;N;;;;; -1D556;MATHEMATICAL DOUBLE-STRUCK SMALL E;Ll;0;L; 0065;;;;N;;;;; -1D557;MATHEMATICAL DOUBLE-STRUCK SMALL F;Ll;0;L; 0066;;;;N;;;;; -1D558;MATHEMATICAL DOUBLE-STRUCK SMALL G;Ll;0;L; 0067;;;;N;;;;; -1D559;MATHEMATICAL DOUBLE-STRUCK SMALL H;Ll;0;L; 0068;;;;N;;;;; -1D55A;MATHEMATICAL DOUBLE-STRUCK SMALL I;Ll;0;L; 0069;;;;N;;;;; -1D55B;MATHEMATICAL DOUBLE-STRUCK SMALL J;Ll;0;L; 006A;;;;N;;;;; -1D55C;MATHEMATICAL DOUBLE-STRUCK SMALL K;Ll;0;L; 006B;;;;N;;;;; -1D55D;MATHEMATICAL DOUBLE-STRUCK SMALL L;Ll;0;L; 006C;;;;N;;;;; -1D55E;MATHEMATICAL DOUBLE-STRUCK SMALL M;Ll;0;L; 006D;;;;N;;;;; -1D55F;MATHEMATICAL DOUBLE-STRUCK SMALL N;Ll;0;L; 006E;;;;N;;;;; -1D560;MATHEMATICAL DOUBLE-STRUCK SMALL O;Ll;0;L; 006F;;;;N;;;;; -1D561;MATHEMATICAL DOUBLE-STRUCK SMALL P;Ll;0;L; 0070;;;;N;;;;; -1D562;MATHEMATICAL DOUBLE-STRUCK SMALL Q;Ll;0;L; 0071;;;;N;;;;; -1D563;MATHEMATICAL DOUBLE-STRUCK SMALL R;Ll;0;L; 0072;;;;N;;;;; -1D564;MATHEMATICAL DOUBLE-STRUCK SMALL S;Ll;0;L; 0073;;;;N;;;;; -1D565;MATHEMATICAL DOUBLE-STRUCK SMALL T;Ll;0;L; 0074;;;;N;;;;; -1D566;MATHEMATICAL DOUBLE-STRUCK SMALL U;Ll;0;L; 0075;;;;N;;;;; -1D567;MATHEMATICAL DOUBLE-STRUCK SMALL V;Ll;0;L; 0076;;;;N;;;;; -1D568;MATHEMATICAL DOUBLE-STRUCK SMALL W;Ll;0;L; 0077;;;;N;;;;; -1D569;MATHEMATICAL DOUBLE-STRUCK SMALL X;Ll;0;L; 0078;;;;N;;;;; -1D56A;MATHEMATICAL DOUBLE-STRUCK SMALL Y;Ll;0;L; 0079;;;;N;;;;; -1D56B;MATHEMATICAL DOUBLE-STRUCK SMALL Z;Ll;0;L; 007A;;;;N;;;;; -1D56C;MATHEMATICAL BOLD FRAKTUR CAPITAL A;Lu;0;L; 0041;;;;N;;;;; -1D56D;MATHEMATICAL BOLD FRAKTUR CAPITAL B;Lu;0;L; 0042;;;;N;;;;; -1D56E;MATHEMATICAL BOLD FRAKTUR CAPITAL C;Lu;0;L; 0043;;;;N;;;;; -1D56F;MATHEMATICAL BOLD FRAKTUR CAPITAL D;Lu;0;L; 0044;;;;N;;;;; -1D570;MATHEMATICAL BOLD FRAKTUR CAPITAL E;Lu;0;L; 0045;;;;N;;;;; -1D571;MATHEMATICAL BOLD FRAKTUR CAPITAL F;Lu;0;L; 0046;;;;N;;;;; -1D572;MATHEMATICAL BOLD FRAKTUR CAPITAL G;Lu;0;L; 0047;;;;N;;;;; -1D573;MATHEMATICAL BOLD FRAKTUR CAPITAL H;Lu;0;L; 0048;;;;N;;;;; -1D574;MATHEMATICAL BOLD FRAKTUR CAPITAL I;Lu;0;L; 0049;;;;N;;;;; -1D575;MATHEMATICAL BOLD FRAKTUR CAPITAL J;Lu;0;L; 004A;;;;N;;;;; -1D576;MATHEMATICAL BOLD FRAKTUR CAPITAL K;Lu;0;L; 004B;;;;N;;;;; -1D577;MATHEMATICAL BOLD FRAKTUR CAPITAL L;Lu;0;L; 004C;;;;N;;;;; -1D578;MATHEMATICAL BOLD FRAKTUR CAPITAL M;Lu;0;L; 004D;;;;N;;;;; -1D579;MATHEMATICAL BOLD FRAKTUR CAPITAL N;Lu;0;L; 004E;;;;N;;;;; -1D57A;MATHEMATICAL BOLD FRAKTUR CAPITAL O;Lu;0;L; 004F;;;;N;;;;; -1D57B;MATHEMATICAL BOLD FRAKTUR CAPITAL P;Lu;0;L; 0050;;;;N;;;;; -1D57C;MATHEMATICAL BOLD FRAKTUR CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; -1D57D;MATHEMATICAL BOLD FRAKTUR CAPITAL R;Lu;0;L; 0052;;;;N;;;;; -1D57E;MATHEMATICAL BOLD FRAKTUR CAPITAL S;Lu;0;L; 0053;;;;N;;;;; -1D57F;MATHEMATICAL BOLD FRAKTUR CAPITAL T;Lu;0;L; 0054;;;;N;;;;; -1D580;MATHEMATICAL BOLD FRAKTUR CAPITAL U;Lu;0;L; 0055;;;;N;;;;; -1D581;MATHEMATICAL BOLD FRAKTUR CAPITAL V;Lu;0;L; 0056;;;;N;;;;; -1D582;MATHEMATICAL BOLD FRAKTUR CAPITAL W;Lu;0;L; 0057;;;;N;;;;; -1D583;MATHEMATICAL BOLD FRAKTUR CAPITAL X;Lu;0;L; 0058;;;;N;;;;; -1D584;MATHEMATICAL BOLD FRAKTUR CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; -1D585;MATHEMATICAL BOLD FRAKTUR CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; -1D586;MATHEMATICAL BOLD FRAKTUR SMALL A;Ll;0;L; 0061;;;;N;;;;; -1D587;MATHEMATICAL BOLD FRAKTUR SMALL B;Ll;0;L; 0062;;;;N;;;;; -1D588;MATHEMATICAL BOLD FRAKTUR SMALL C;Ll;0;L; 0063;;;;N;;;;; -1D589;MATHEMATICAL BOLD FRAKTUR SMALL D;Ll;0;L; 0064;;;;N;;;;; -1D58A;MATHEMATICAL BOLD FRAKTUR SMALL E;Ll;0;L; 0065;;;;N;;;;; -1D58B;MATHEMATICAL BOLD FRAKTUR SMALL F;Ll;0;L; 0066;;;;N;;;;; -1D58C;MATHEMATICAL BOLD FRAKTUR SMALL G;Ll;0;L; 0067;;;;N;;;;; -1D58D;MATHEMATICAL BOLD FRAKTUR SMALL H;Ll;0;L; 0068;;;;N;;;;; -1D58E;MATHEMATICAL BOLD FRAKTUR SMALL I;Ll;0;L; 0069;;;;N;;;;; -1D58F;MATHEMATICAL BOLD FRAKTUR SMALL J;Ll;0;L; 006A;;;;N;;;;; -1D590;MATHEMATICAL BOLD FRAKTUR SMALL K;Ll;0;L; 006B;;;;N;;;;; -1D591;MATHEMATICAL BOLD FRAKTUR SMALL L;Ll;0;L; 006C;;;;N;;;;; -1D592;MATHEMATICAL BOLD FRAKTUR SMALL M;Ll;0;L; 006D;;;;N;;;;; -1D593;MATHEMATICAL BOLD FRAKTUR SMALL N;Ll;0;L; 006E;;;;N;;;;; -1D594;MATHEMATICAL BOLD FRAKTUR SMALL O;Ll;0;L; 006F;;;;N;;;;; -1D595;MATHEMATICAL BOLD FRAKTUR SMALL P;Ll;0;L; 0070;;;;N;;;;; -1D596;MATHEMATICAL BOLD FRAKTUR SMALL Q;Ll;0;L; 0071;;;;N;;;;; -1D597;MATHEMATICAL BOLD FRAKTUR SMALL R;Ll;0;L; 0072;;;;N;;;;; -1D598;MATHEMATICAL BOLD FRAKTUR SMALL S;Ll;0;L; 0073;;;;N;;;;; -1D599;MATHEMATICAL BOLD FRAKTUR SMALL T;Ll;0;L; 0074;;;;N;;;;; -1D59A;MATHEMATICAL BOLD FRAKTUR SMALL U;Ll;0;L; 0075;;;;N;;;;; -1D59B;MATHEMATICAL BOLD FRAKTUR SMALL V;Ll;0;L; 0076;;;;N;;;;; -1D59C;MATHEMATICAL BOLD FRAKTUR SMALL W;Ll;0;L; 0077;;;;N;;;;; -1D59D;MATHEMATICAL BOLD FRAKTUR SMALL X;Ll;0;L; 0078;;;;N;;;;; -1D59E;MATHEMATICAL BOLD FRAKTUR SMALL Y;Ll;0;L; 0079;;;;N;;;;; -1D59F;MATHEMATICAL BOLD FRAKTUR SMALL Z;Ll;0;L; 007A;;;;N;;;;; -1D5A0;MATHEMATICAL SANS-SERIF CAPITAL A;Lu;0;L; 0041;;;;N;;;;; -1D5A1;MATHEMATICAL SANS-SERIF CAPITAL B;Lu;0;L; 0042;;;;N;;;;; -1D5A2;MATHEMATICAL SANS-SERIF CAPITAL C;Lu;0;L; 0043;;;;N;;;;; -1D5A3;MATHEMATICAL SANS-SERIF CAPITAL D;Lu;0;L; 0044;;;;N;;;;; -1D5A4;MATHEMATICAL SANS-SERIF CAPITAL E;Lu;0;L; 0045;;;;N;;;;; -1D5A5;MATHEMATICAL SANS-SERIF CAPITAL F;Lu;0;L; 0046;;;;N;;;;; -1D5A6;MATHEMATICAL SANS-SERIF CAPITAL G;Lu;0;L; 0047;;;;N;;;;; -1D5A7;MATHEMATICAL SANS-SERIF CAPITAL H;Lu;0;L; 0048;;;;N;;;;; -1D5A8;MATHEMATICAL SANS-SERIF CAPITAL I;Lu;0;L; 0049;;;;N;;;;; -1D5A9;MATHEMATICAL SANS-SERIF CAPITAL J;Lu;0;L; 004A;;;;N;;;;; -1D5AA;MATHEMATICAL SANS-SERIF CAPITAL K;Lu;0;L; 004B;;;;N;;;;; -1D5AB;MATHEMATICAL SANS-SERIF CAPITAL L;Lu;0;L; 004C;;;;N;;;;; -1D5AC;MATHEMATICAL SANS-SERIF CAPITAL M;Lu;0;L; 004D;;;;N;;;;; -1D5AD;MATHEMATICAL SANS-SERIF CAPITAL N;Lu;0;L; 004E;;;;N;;;;; -1D5AE;MATHEMATICAL SANS-SERIF CAPITAL O;Lu;0;L; 004F;;;;N;;;;; -1D5AF;MATHEMATICAL SANS-SERIF CAPITAL P;Lu;0;L; 0050;;;;N;;;;; -1D5B0;MATHEMATICAL SANS-SERIF CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; -1D5B1;MATHEMATICAL SANS-SERIF CAPITAL R;Lu;0;L; 0052;;;;N;;;;; -1D5B2;MATHEMATICAL SANS-SERIF CAPITAL S;Lu;0;L; 0053;;;;N;;;;; -1D5B3;MATHEMATICAL SANS-SERIF CAPITAL T;Lu;0;L; 0054;;;;N;;;;; -1D5B4;MATHEMATICAL SANS-SERIF CAPITAL U;Lu;0;L; 0055;;;;N;;;;; -1D5B5;MATHEMATICAL SANS-SERIF CAPITAL V;Lu;0;L; 0056;;;;N;;;;; -1D5B6;MATHEMATICAL SANS-SERIF CAPITAL W;Lu;0;L; 0057;;;;N;;;;; -1D5B7;MATHEMATICAL SANS-SERIF CAPITAL X;Lu;0;L; 0058;;;;N;;;;; -1D5B8;MATHEMATICAL SANS-SERIF CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; -1D5B9;MATHEMATICAL SANS-SERIF CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; -1D5BA;MATHEMATICAL SANS-SERIF SMALL A;Ll;0;L; 0061;;;;N;;;;; -1D5BB;MATHEMATICAL SANS-SERIF SMALL B;Ll;0;L; 0062;;;;N;;;;; -1D5BC;MATHEMATICAL SANS-SERIF SMALL C;Ll;0;L; 0063;;;;N;;;;; -1D5BD;MATHEMATICAL SANS-SERIF SMALL D;Ll;0;L; 0064;;;;N;;;;; -1D5BE;MATHEMATICAL SANS-SERIF SMALL E;Ll;0;L; 0065;;;;N;;;;; -1D5BF;MATHEMATICAL SANS-SERIF SMALL F;Ll;0;L; 0066;;;;N;;;;; -1D5C0;MATHEMATICAL SANS-SERIF SMALL G;Ll;0;L; 0067;;;;N;;;;; -1D5C1;MATHEMATICAL SANS-SERIF SMALL H;Ll;0;L; 0068;;;;N;;;;; -1D5C2;MATHEMATICAL SANS-SERIF SMALL I;Ll;0;L; 0069;;;;N;;;;; -1D5C3;MATHEMATICAL SANS-SERIF SMALL J;Ll;0;L; 006A;;;;N;;;;; -1D5C4;MATHEMATICAL SANS-SERIF SMALL K;Ll;0;L; 006B;;;;N;;;;; -1D5C5;MATHEMATICAL SANS-SERIF SMALL L;Ll;0;L; 006C;;;;N;;;;; -1D5C6;MATHEMATICAL SANS-SERIF SMALL M;Ll;0;L; 006D;;;;N;;;;; -1D5C7;MATHEMATICAL SANS-SERIF SMALL N;Ll;0;L; 006E;;;;N;;;;; -1D5C8;MATHEMATICAL SANS-SERIF SMALL O;Ll;0;L; 006F;;;;N;;;;; -1D5C9;MATHEMATICAL SANS-SERIF SMALL P;Ll;0;L; 0070;;;;N;;;;; -1D5CA;MATHEMATICAL SANS-SERIF SMALL Q;Ll;0;L; 0071;;;;N;;;;; -1D5CB;MATHEMATICAL SANS-SERIF SMALL R;Ll;0;L; 0072;;;;N;;;;; -1D5CC;MATHEMATICAL SANS-SERIF SMALL S;Ll;0;L; 0073;;;;N;;;;; -1D5CD;MATHEMATICAL SANS-SERIF SMALL T;Ll;0;L; 0074;;;;N;;;;; -1D5CE;MATHEMATICAL SANS-SERIF SMALL U;Ll;0;L; 0075;;;;N;;;;; -1D5CF;MATHEMATICAL SANS-SERIF SMALL V;Ll;0;L; 0076;;;;N;;;;; -1D5D0;MATHEMATICAL SANS-SERIF SMALL W;Ll;0;L; 0077;;;;N;;;;; -1D5D1;MATHEMATICAL SANS-SERIF SMALL X;Ll;0;L; 0078;;;;N;;;;; -1D5D2;MATHEMATICAL SANS-SERIF SMALL Y;Ll;0;L; 0079;;;;N;;;;; -1D5D3;MATHEMATICAL SANS-SERIF SMALL Z;Ll;0;L; 007A;;;;N;;;;; -1D5D4;MATHEMATICAL SANS-SERIF BOLD CAPITAL A;Lu;0;L; 0041;;;;N;;;;; -1D5D5;MATHEMATICAL SANS-SERIF BOLD CAPITAL B;Lu;0;L; 0042;;;;N;;;;; -1D5D6;MATHEMATICAL SANS-SERIF BOLD CAPITAL C;Lu;0;L; 0043;;;;N;;;;; -1D5D7;MATHEMATICAL SANS-SERIF BOLD CAPITAL D;Lu;0;L; 0044;;;;N;;;;; -1D5D8;MATHEMATICAL SANS-SERIF BOLD CAPITAL E;Lu;0;L; 0045;;;;N;;;;; -1D5D9;MATHEMATICAL SANS-SERIF BOLD CAPITAL F;Lu;0;L; 0046;;;;N;;;;; -1D5DA;MATHEMATICAL SANS-SERIF BOLD CAPITAL G;Lu;0;L; 0047;;;;N;;;;; -1D5DB;MATHEMATICAL SANS-SERIF BOLD CAPITAL H;Lu;0;L; 0048;;;;N;;;;; -1D5DC;MATHEMATICAL SANS-SERIF BOLD CAPITAL I;Lu;0;L; 0049;;;;N;;;;; -1D5DD;MATHEMATICAL SANS-SERIF BOLD CAPITAL J;Lu;0;L; 004A;;;;N;;;;; -1D5DE;MATHEMATICAL SANS-SERIF BOLD CAPITAL K;Lu;0;L; 004B;;;;N;;;;; -1D5DF;MATHEMATICAL SANS-SERIF BOLD CAPITAL L;Lu;0;L; 004C;;;;N;;;;; -1D5E0;MATHEMATICAL SANS-SERIF BOLD CAPITAL M;Lu;0;L; 004D;;;;N;;;;; -1D5E1;MATHEMATICAL SANS-SERIF BOLD CAPITAL N;Lu;0;L; 004E;;;;N;;;;; -1D5E2;MATHEMATICAL SANS-SERIF BOLD CAPITAL O;Lu;0;L; 004F;;;;N;;;;; -1D5E3;MATHEMATICAL SANS-SERIF BOLD CAPITAL P;Lu;0;L; 0050;;;;N;;;;; -1D5E4;MATHEMATICAL SANS-SERIF BOLD CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; -1D5E5;MATHEMATICAL SANS-SERIF BOLD CAPITAL R;Lu;0;L; 0052;;;;N;;;;; -1D5E6;MATHEMATICAL SANS-SERIF BOLD CAPITAL S;Lu;0;L; 0053;;;;N;;;;; -1D5E7;MATHEMATICAL SANS-SERIF BOLD CAPITAL T;Lu;0;L; 0054;;;;N;;;;; -1D5E8;MATHEMATICAL SANS-SERIF BOLD CAPITAL U;Lu;0;L; 0055;;;;N;;;;; -1D5E9;MATHEMATICAL SANS-SERIF BOLD CAPITAL V;Lu;0;L; 0056;;;;N;;;;; -1D5EA;MATHEMATICAL SANS-SERIF BOLD CAPITAL W;Lu;0;L; 0057;;;;N;;;;; -1D5EB;MATHEMATICAL SANS-SERIF BOLD CAPITAL X;Lu;0;L; 0058;;;;N;;;;; -1D5EC;MATHEMATICAL SANS-SERIF BOLD CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; -1D5ED;MATHEMATICAL SANS-SERIF BOLD CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; -1D5EE;MATHEMATICAL SANS-SERIF BOLD SMALL A;Ll;0;L; 0061;;;;N;;;;; -1D5EF;MATHEMATICAL SANS-SERIF BOLD SMALL B;Ll;0;L; 0062;;;;N;;;;; -1D5F0;MATHEMATICAL SANS-SERIF BOLD SMALL C;Ll;0;L; 0063;;;;N;;;;; -1D5F1;MATHEMATICAL SANS-SERIF BOLD SMALL D;Ll;0;L; 0064;;;;N;;;;; -1D5F2;MATHEMATICAL SANS-SERIF BOLD SMALL E;Ll;0;L; 0065;;;;N;;;;; -1D5F3;MATHEMATICAL SANS-SERIF BOLD SMALL F;Ll;0;L; 0066;;;;N;;;;; -1D5F4;MATHEMATICAL SANS-SERIF BOLD SMALL G;Ll;0;L; 0067;;;;N;;;;; -1D5F5;MATHEMATICAL SANS-SERIF BOLD SMALL H;Ll;0;L; 0068;;;;N;;;;; -1D5F6;MATHEMATICAL SANS-SERIF BOLD SMALL I;Ll;0;L; 0069;;;;N;;;;; -1D5F7;MATHEMATICAL SANS-SERIF BOLD SMALL J;Ll;0;L; 006A;;;;N;;;;; -1D5F8;MATHEMATICAL SANS-SERIF BOLD SMALL K;Ll;0;L; 006B;;;;N;;;;; -1D5F9;MATHEMATICAL SANS-SERIF BOLD SMALL L;Ll;0;L; 006C;;;;N;;;;; -1D5FA;MATHEMATICAL SANS-SERIF BOLD SMALL M;Ll;0;L; 006D;;;;N;;;;; -1D5FB;MATHEMATICAL SANS-SERIF BOLD SMALL N;Ll;0;L; 006E;;;;N;;;;; -1D5FC;MATHEMATICAL SANS-SERIF BOLD SMALL O;Ll;0;L; 006F;;;;N;;;;; -1D5FD;MATHEMATICAL SANS-SERIF BOLD SMALL P;Ll;0;L; 0070;;;;N;;;;; -1D5FE;MATHEMATICAL SANS-SERIF BOLD SMALL Q;Ll;0;L; 0071;;;;N;;;;; -1D5FF;MATHEMATICAL SANS-SERIF BOLD SMALL R;Ll;0;L; 0072;;;;N;;;;; -1D600;MATHEMATICAL SANS-SERIF BOLD SMALL S;Ll;0;L; 0073;;;;N;;;;; -1D601;MATHEMATICAL SANS-SERIF BOLD SMALL T;Ll;0;L; 0074;;;;N;;;;; -1D602;MATHEMATICAL SANS-SERIF BOLD SMALL U;Ll;0;L; 0075;;;;N;;;;; -1D603;MATHEMATICAL SANS-SERIF BOLD SMALL V;Ll;0;L; 0076;;;;N;;;;; -1D604;MATHEMATICAL SANS-SERIF BOLD SMALL W;Ll;0;L; 0077;;;;N;;;;; -1D605;MATHEMATICAL SANS-SERIF BOLD SMALL X;Ll;0;L; 0078;;;;N;;;;; -1D606;MATHEMATICAL SANS-SERIF BOLD SMALL Y;Ll;0;L; 0079;;;;N;;;;; -1D607;MATHEMATICAL SANS-SERIF BOLD SMALL Z;Ll;0;L; 007A;;;;N;;;;; -1D608;MATHEMATICAL SANS-SERIF ITALIC CAPITAL A;Lu;0;L; 0041;;;;N;;;;; -1D609;MATHEMATICAL SANS-SERIF ITALIC CAPITAL B;Lu;0;L; 0042;;;;N;;;;; -1D60A;MATHEMATICAL SANS-SERIF ITALIC CAPITAL C;Lu;0;L; 0043;;;;N;;;;; -1D60B;MATHEMATICAL SANS-SERIF ITALIC CAPITAL D;Lu;0;L; 0044;;;;N;;;;; -1D60C;MATHEMATICAL SANS-SERIF ITALIC CAPITAL E;Lu;0;L; 0045;;;;N;;;;; -1D60D;MATHEMATICAL SANS-SERIF ITALIC CAPITAL F;Lu;0;L; 0046;;;;N;;;;; -1D60E;MATHEMATICAL SANS-SERIF ITALIC CAPITAL G;Lu;0;L; 0047;;;;N;;;;; -1D60F;MATHEMATICAL SANS-SERIF ITALIC CAPITAL H;Lu;0;L; 0048;;;;N;;;;; -1D610;MATHEMATICAL SANS-SERIF ITALIC CAPITAL I;Lu;0;L; 0049;;;;N;;;;; -1D611;MATHEMATICAL SANS-SERIF ITALIC CAPITAL J;Lu;0;L; 004A;;;;N;;;;; -1D612;MATHEMATICAL SANS-SERIF ITALIC CAPITAL K;Lu;0;L; 004B;;;;N;;;;; -1D613;MATHEMATICAL SANS-SERIF ITALIC CAPITAL L;Lu;0;L; 004C;;;;N;;;;; -1D614;MATHEMATICAL SANS-SERIF ITALIC CAPITAL M;Lu;0;L; 004D;;;;N;;;;; -1D615;MATHEMATICAL SANS-SERIF ITALIC CAPITAL N;Lu;0;L; 004E;;;;N;;;;; -1D616;MATHEMATICAL SANS-SERIF ITALIC CAPITAL O;Lu;0;L; 004F;;;;N;;;;; -1D617;MATHEMATICAL SANS-SERIF ITALIC CAPITAL P;Lu;0;L; 0050;;;;N;;;;; -1D618;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; -1D619;MATHEMATICAL SANS-SERIF ITALIC CAPITAL R;Lu;0;L; 0052;;;;N;;;;; -1D61A;MATHEMATICAL SANS-SERIF ITALIC CAPITAL S;Lu;0;L; 0053;;;;N;;;;; -1D61B;MATHEMATICAL SANS-SERIF ITALIC CAPITAL T;Lu;0;L; 0054;;;;N;;;;; -1D61C;MATHEMATICAL SANS-SERIF ITALIC CAPITAL U;Lu;0;L; 0055;;;;N;;;;; -1D61D;MATHEMATICAL SANS-SERIF ITALIC CAPITAL V;Lu;0;L; 0056;;;;N;;;;; -1D61E;MATHEMATICAL SANS-SERIF ITALIC CAPITAL W;Lu;0;L; 0057;;;;N;;;;; -1D61F;MATHEMATICAL SANS-SERIF ITALIC CAPITAL X;Lu;0;L; 0058;;;;N;;;;; -1D620;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; -1D621;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; -1D622;MATHEMATICAL SANS-SERIF ITALIC SMALL A;Ll;0;L; 0061;;;;N;;;;; -1D623;MATHEMATICAL SANS-SERIF ITALIC SMALL B;Ll;0;L; 0062;;;;N;;;;; -1D624;MATHEMATICAL SANS-SERIF ITALIC SMALL C;Ll;0;L; 0063;;;;N;;;;; -1D625;MATHEMATICAL SANS-SERIF ITALIC SMALL D;Ll;0;L; 0064;;;;N;;;;; -1D626;MATHEMATICAL SANS-SERIF ITALIC SMALL E;Ll;0;L; 0065;;;;N;;;;; -1D627;MATHEMATICAL SANS-SERIF ITALIC SMALL F;Ll;0;L; 0066;;;;N;;;;; -1D628;MATHEMATICAL SANS-SERIF ITALIC SMALL G;Ll;0;L; 0067;;;;N;;;;; -1D629;MATHEMATICAL SANS-SERIF ITALIC SMALL H;Ll;0;L; 0068;;;;N;;;;; -1D62A;MATHEMATICAL SANS-SERIF ITALIC SMALL I;Ll;0;L; 0069;;;;N;;;;; -1D62B;MATHEMATICAL SANS-SERIF ITALIC SMALL J;Ll;0;L; 006A;;;;N;;;;; -1D62C;MATHEMATICAL SANS-SERIF ITALIC SMALL K;Ll;0;L; 006B;;;;N;;;;; -1D62D;MATHEMATICAL SANS-SERIF ITALIC SMALL L;Ll;0;L; 006C;;;;N;;;;; -1D62E;MATHEMATICAL SANS-SERIF ITALIC SMALL M;Ll;0;L; 006D;;;;N;;;;; -1D62F;MATHEMATICAL SANS-SERIF ITALIC SMALL N;Ll;0;L; 006E;;;;N;;;;; -1D630;MATHEMATICAL SANS-SERIF ITALIC SMALL O;Ll;0;L; 006F;;;;N;;;;; -1D631;MATHEMATICAL SANS-SERIF ITALIC SMALL P;Ll;0;L; 0070;;;;N;;;;; -1D632;MATHEMATICAL SANS-SERIF ITALIC SMALL Q;Ll;0;L; 0071;;;;N;;;;; -1D633;MATHEMATICAL SANS-SERIF ITALIC SMALL R;Ll;0;L; 0072;;;;N;;;;; -1D634;MATHEMATICAL SANS-SERIF ITALIC SMALL S;Ll;0;L; 0073;;;;N;;;;; -1D635;MATHEMATICAL SANS-SERIF ITALIC SMALL T;Ll;0;L; 0074;;;;N;;;;; -1D636;MATHEMATICAL SANS-SERIF ITALIC SMALL U;Ll;0;L; 0075;;;;N;;;;; -1D637;MATHEMATICAL SANS-SERIF ITALIC SMALL V;Ll;0;L; 0076;;;;N;;;;; -1D638;MATHEMATICAL SANS-SERIF ITALIC SMALL W;Ll;0;L; 0077;;;;N;;;;; -1D639;MATHEMATICAL SANS-SERIF ITALIC SMALL X;Ll;0;L; 0078;;;;N;;;;; -1D63A;MATHEMATICAL SANS-SERIF ITALIC SMALL Y;Ll;0;L; 0079;;;;N;;;;; -1D63B;MATHEMATICAL SANS-SERIF ITALIC SMALL Z;Ll;0;L; 007A;;;;N;;;;; -1D63C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A;Lu;0;L; 0041;;;;N;;;;; -1D63D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B;Lu;0;L; 0042;;;;N;;;;; -1D63E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C;Lu;0;L; 0043;;;;N;;;;; -1D63F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D;Lu;0;L; 0044;;;;N;;;;; -1D640;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E;Lu;0;L; 0045;;;;N;;;;; -1D641;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F;Lu;0;L; 0046;;;;N;;;;; -1D642;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G;Lu;0;L; 0047;;;;N;;;;; -1D643;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H;Lu;0;L; 0048;;;;N;;;;; -1D644;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I;Lu;0;L; 0049;;;;N;;;;; -1D645;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J;Lu;0;L; 004A;;;;N;;;;; -1D646;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K;Lu;0;L; 004B;;;;N;;;;; -1D647;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L;Lu;0;L; 004C;;;;N;;;;; -1D648;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M;Lu;0;L; 004D;;;;N;;;;; -1D649;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N;Lu;0;L; 004E;;;;N;;;;; -1D64A;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O;Lu;0;L; 004F;;;;N;;;;; -1D64B;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P;Lu;0;L; 0050;;;;N;;;;; -1D64C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; -1D64D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R;Lu;0;L; 0052;;;;N;;;;; -1D64E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S;Lu;0;L; 0053;;;;N;;;;; -1D64F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T;Lu;0;L; 0054;;;;N;;;;; -1D650;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U;Lu;0;L; 0055;;;;N;;;;; -1D651;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V;Lu;0;L; 0056;;;;N;;;;; -1D652;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W;Lu;0;L; 0057;;;;N;;;;; -1D653;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X;Lu;0;L; 0058;;;;N;;;;; -1D654;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; -1D655;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; -1D656;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A;Ll;0;L; 0061;;;;N;;;;; -1D657;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B;Ll;0;L; 0062;;;;N;;;;; -1D658;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C;Ll;0;L; 0063;;;;N;;;;; -1D659;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D;Ll;0;L; 0064;;;;N;;;;; -1D65A;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E;Ll;0;L; 0065;;;;N;;;;; -1D65B;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F;Ll;0;L; 0066;;;;N;;;;; -1D65C;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G;Ll;0;L; 0067;;;;N;;;;; -1D65D;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H;Ll;0;L; 0068;;;;N;;;;; -1D65E;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I;Ll;0;L; 0069;;;;N;;;;; -1D65F;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J;Ll;0;L; 006A;;;;N;;;;; -1D660;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K;Ll;0;L; 006B;;;;N;;;;; -1D661;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L;Ll;0;L; 006C;;;;N;;;;; -1D662;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M;Ll;0;L; 006D;;;;N;;;;; -1D663;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N;Ll;0;L; 006E;;;;N;;;;; -1D664;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O;Ll;0;L; 006F;;;;N;;;;; -1D665;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P;Ll;0;L; 0070;;;;N;;;;; -1D666;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q;Ll;0;L; 0071;;;;N;;;;; -1D667;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R;Ll;0;L; 0072;;;;N;;;;; -1D668;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S;Ll;0;L; 0073;;;;N;;;;; -1D669;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T;Ll;0;L; 0074;;;;N;;;;; -1D66A;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U;Ll;0;L; 0075;;;;N;;;;; -1D66B;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V;Ll;0;L; 0076;;;;N;;;;; -1D66C;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W;Ll;0;L; 0077;;;;N;;;;; -1D66D;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X;Ll;0;L; 0078;;;;N;;;;; -1D66E;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y;Ll;0;L; 0079;;;;N;;;;; -1D66F;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z;Ll;0;L; 007A;;;;N;;;;; -1D670;MATHEMATICAL MONOSPACE CAPITAL A;Lu;0;L; 0041;;;;N;;;;; -1D671;MATHEMATICAL MONOSPACE CAPITAL B;Lu;0;L; 0042;;;;N;;;;; -1D672;MATHEMATICAL MONOSPACE CAPITAL C;Lu;0;L; 0043;;;;N;;;;; -1D673;MATHEMATICAL MONOSPACE CAPITAL D;Lu;0;L; 0044;;;;N;;;;; -1D674;MATHEMATICAL MONOSPACE CAPITAL E;Lu;0;L; 0045;;;;N;;;;; -1D675;MATHEMATICAL MONOSPACE CAPITAL F;Lu;0;L; 0046;;;;N;;;;; -1D676;MATHEMATICAL MONOSPACE CAPITAL G;Lu;0;L; 0047;;;;N;;;;; -1D677;MATHEMATICAL MONOSPACE CAPITAL H;Lu;0;L; 0048;;;;N;;;;; -1D678;MATHEMATICAL MONOSPACE CAPITAL I;Lu;0;L; 0049;;;;N;;;;; -1D679;MATHEMATICAL MONOSPACE CAPITAL J;Lu;0;L; 004A;;;;N;;;;; -1D67A;MATHEMATICAL MONOSPACE CAPITAL K;Lu;0;L; 004B;;;;N;;;;; -1D67B;MATHEMATICAL MONOSPACE CAPITAL L;Lu;0;L; 004C;;;;N;;;;; -1D67C;MATHEMATICAL MONOSPACE CAPITAL M;Lu;0;L; 004D;;;;N;;;;; -1D67D;MATHEMATICAL MONOSPACE CAPITAL N;Lu;0;L; 004E;;;;N;;;;; -1D67E;MATHEMATICAL MONOSPACE CAPITAL O;Lu;0;L; 004F;;;;N;;;;; -1D67F;MATHEMATICAL MONOSPACE CAPITAL P;Lu;0;L; 0050;;;;N;;;;; -1D680;MATHEMATICAL MONOSPACE CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; -1D681;MATHEMATICAL MONOSPACE CAPITAL R;Lu;0;L; 0052;;;;N;;;;; -1D682;MATHEMATICAL MONOSPACE CAPITAL S;Lu;0;L; 0053;;;;N;;;;; -1D683;MATHEMATICAL MONOSPACE CAPITAL T;Lu;0;L; 0054;;;;N;;;;; -1D684;MATHEMATICAL MONOSPACE CAPITAL U;Lu;0;L; 0055;;;;N;;;;; -1D685;MATHEMATICAL MONOSPACE CAPITAL V;Lu;0;L; 0056;;;;N;;;;; -1D686;MATHEMATICAL MONOSPACE CAPITAL W;Lu;0;L; 0057;;;;N;;;;; -1D687;MATHEMATICAL MONOSPACE CAPITAL X;Lu;0;L; 0058;;;;N;;;;; -1D688;MATHEMATICAL MONOSPACE CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; -1D689;MATHEMATICAL MONOSPACE CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; -1D68A;MATHEMATICAL MONOSPACE SMALL A;Ll;0;L; 0061;;;;N;;;;; -1D68B;MATHEMATICAL MONOSPACE SMALL B;Ll;0;L; 0062;;;;N;;;;; -1D68C;MATHEMATICAL MONOSPACE SMALL C;Ll;0;L; 0063;;;;N;;;;; -1D68D;MATHEMATICAL MONOSPACE SMALL D;Ll;0;L; 0064;;;;N;;;;; -1D68E;MATHEMATICAL MONOSPACE SMALL E;Ll;0;L; 0065;;;;N;;;;; -1D68F;MATHEMATICAL MONOSPACE SMALL F;Ll;0;L; 0066;;;;N;;;;; -1D690;MATHEMATICAL MONOSPACE SMALL G;Ll;0;L; 0067;;;;N;;;;; -1D691;MATHEMATICAL MONOSPACE SMALL H;Ll;0;L; 0068;;;;N;;;;; -1D692;MATHEMATICAL MONOSPACE SMALL I;Ll;0;L; 0069;;;;N;;;;; -1D693;MATHEMATICAL MONOSPACE SMALL J;Ll;0;L; 006A;;;;N;;;;; -1D694;MATHEMATICAL MONOSPACE SMALL K;Ll;0;L; 006B;;;;N;;;;; -1D695;MATHEMATICAL MONOSPACE SMALL L;Ll;0;L; 006C;;;;N;;;;; -1D696;MATHEMATICAL MONOSPACE SMALL M;Ll;0;L; 006D;;;;N;;;;; -1D697;MATHEMATICAL MONOSPACE SMALL N;Ll;0;L; 006E;;;;N;;;;; -1D698;MATHEMATICAL MONOSPACE SMALL O;Ll;0;L; 006F;;;;N;;;;; -1D699;MATHEMATICAL MONOSPACE SMALL P;Ll;0;L; 0070;;;;N;;;;; -1D69A;MATHEMATICAL MONOSPACE SMALL Q;Ll;0;L; 0071;;;;N;;;;; -1D69B;MATHEMATICAL MONOSPACE SMALL R;Ll;0;L; 0072;;;;N;;;;; -1D69C;MATHEMATICAL MONOSPACE SMALL S;Ll;0;L; 0073;;;;N;;;;; -1D69D;MATHEMATICAL MONOSPACE SMALL T;Ll;0;L; 0074;;;;N;;;;; -1D69E;MATHEMATICAL MONOSPACE SMALL U;Ll;0;L; 0075;;;;N;;;;; -1D69F;MATHEMATICAL MONOSPACE SMALL V;Ll;0;L; 0076;;;;N;;;;; -1D6A0;MATHEMATICAL MONOSPACE SMALL W;Ll;0;L; 0077;;;;N;;;;; -1D6A1;MATHEMATICAL MONOSPACE SMALL X;Ll;0;L; 0078;;;;N;;;;; -1D6A2;MATHEMATICAL MONOSPACE SMALL Y;Ll;0;L; 0079;;;;N;;;;; -1D6A3;MATHEMATICAL MONOSPACE SMALL Z;Ll;0;L; 007A;;;;N;;;;; -1D6A4;MATHEMATICAL ITALIC SMALL DOTLESS I;Ll;0;L; 0131;;;;N;;;;; -1D6A5;MATHEMATICAL ITALIC SMALL DOTLESS J;Ll;0;L; 0237;;;;N;;;;; -1D6A8;MATHEMATICAL BOLD CAPITAL ALPHA;Lu;0;L; 0391;;;;N;;;;; -1D6A9;MATHEMATICAL BOLD CAPITAL BETA;Lu;0;L; 0392;;;;N;;;;; -1D6AA;MATHEMATICAL BOLD CAPITAL GAMMA;Lu;0;L; 0393;;;;N;;;;; -1D6AB;MATHEMATICAL BOLD CAPITAL DELTA;Lu;0;L; 0394;;;;N;;;;; -1D6AC;MATHEMATICAL BOLD CAPITAL EPSILON;Lu;0;L; 0395;;;;N;;;;; -1D6AD;MATHEMATICAL BOLD CAPITAL ZETA;Lu;0;L; 0396;;;;N;;;;; -1D6AE;MATHEMATICAL BOLD CAPITAL ETA;Lu;0;L; 0397;;;;N;;;;; -1D6AF;MATHEMATICAL BOLD CAPITAL THETA;Lu;0;L; 0398;;;;N;;;;; -1D6B0;MATHEMATICAL BOLD CAPITAL IOTA;Lu;0;L; 0399;;;;N;;;;; -1D6B1;MATHEMATICAL BOLD CAPITAL KAPPA;Lu;0;L; 039A;;;;N;;;;; -1D6B2;MATHEMATICAL BOLD CAPITAL LAMDA;Lu;0;L; 039B;;;;N;;;;; -1D6B3;MATHEMATICAL BOLD CAPITAL MU;Lu;0;L; 039C;;;;N;;;;; -1D6B4;MATHEMATICAL BOLD CAPITAL NU;Lu;0;L; 039D;;;;N;;;;; -1D6B5;MATHEMATICAL BOLD CAPITAL XI;Lu;0;L; 039E;;;;N;;;;; -1D6B6;MATHEMATICAL BOLD CAPITAL OMICRON;Lu;0;L; 039F;;;;N;;;;; -1D6B7;MATHEMATICAL BOLD CAPITAL PI;Lu;0;L; 03A0;;;;N;;;;; -1D6B8;MATHEMATICAL BOLD CAPITAL RHO;Lu;0;L; 03A1;;;;N;;;;; -1D6B9;MATHEMATICAL BOLD CAPITAL THETA SYMBOL;Lu;0;L; 03F4;;;;N;;;;; -1D6BA;MATHEMATICAL BOLD CAPITAL SIGMA;Lu;0;L; 03A3;;;;N;;;;; -1D6BB;MATHEMATICAL BOLD CAPITAL TAU;Lu;0;L; 03A4;;;;N;;;;; -1D6BC;MATHEMATICAL BOLD CAPITAL UPSILON;Lu;0;L; 03A5;;;;N;;;;; -1D6BD;MATHEMATICAL BOLD CAPITAL PHI;Lu;0;L; 03A6;;;;N;;;;; -1D6BE;MATHEMATICAL BOLD CAPITAL CHI;Lu;0;L; 03A7;;;;N;;;;; -1D6BF;MATHEMATICAL BOLD CAPITAL PSI;Lu;0;L; 03A8;;;;N;;;;; -1D6C0;MATHEMATICAL BOLD CAPITAL OMEGA;Lu;0;L; 03A9;;;;N;;;;; -1D6C1;MATHEMATICAL BOLD NABLA;Sm;0;L; 2207;;;;N;;;;; -1D6C2;MATHEMATICAL BOLD SMALL ALPHA;Ll;0;L; 03B1;;;;N;;;;; -1D6C3;MATHEMATICAL BOLD SMALL BETA;Ll;0;L; 03B2;;;;N;;;;; -1D6C4;MATHEMATICAL BOLD SMALL GAMMA;Ll;0;L; 03B3;;;;N;;;;; -1D6C5;MATHEMATICAL BOLD SMALL DELTA;Ll;0;L; 03B4;;;;N;;;;; -1D6C6;MATHEMATICAL BOLD SMALL EPSILON;Ll;0;L; 03B5;;;;N;;;;; -1D6C7;MATHEMATICAL BOLD SMALL ZETA;Ll;0;L; 03B6;;;;N;;;;; -1D6C8;MATHEMATICAL BOLD SMALL ETA;Ll;0;L; 03B7;;;;N;;;;; -1D6C9;MATHEMATICAL BOLD SMALL THETA;Ll;0;L; 03B8;;;;N;;;;; -1D6CA;MATHEMATICAL BOLD SMALL IOTA;Ll;0;L; 03B9;;;;N;;;;; -1D6CB;MATHEMATICAL BOLD SMALL KAPPA;Ll;0;L; 03BA;;;;N;;;;; -1D6CC;MATHEMATICAL BOLD SMALL LAMDA;Ll;0;L; 03BB;;;;N;;;;; -1D6CD;MATHEMATICAL BOLD SMALL MU;Ll;0;L; 03BC;;;;N;;;;; -1D6CE;MATHEMATICAL BOLD SMALL NU;Ll;0;L; 03BD;;;;N;;;;; -1D6CF;MATHEMATICAL BOLD SMALL XI;Ll;0;L; 03BE;;;;N;;;;; -1D6D0;MATHEMATICAL BOLD SMALL OMICRON;Ll;0;L; 03BF;;;;N;;;;; -1D6D1;MATHEMATICAL BOLD SMALL PI;Ll;0;L; 03C0;;;;N;;;;; -1D6D2;MATHEMATICAL BOLD SMALL RHO;Ll;0;L; 03C1;;;;N;;;;; -1D6D3;MATHEMATICAL BOLD SMALL FINAL SIGMA;Ll;0;L; 03C2;;;;N;;;;; -1D6D4;MATHEMATICAL BOLD SMALL SIGMA;Ll;0;L; 03C3;;;;N;;;;; -1D6D5;MATHEMATICAL BOLD SMALL TAU;Ll;0;L; 03C4;;;;N;;;;; -1D6D6;MATHEMATICAL BOLD SMALL UPSILON;Ll;0;L; 03C5;;;;N;;;;; -1D6D7;MATHEMATICAL BOLD SMALL PHI;Ll;0;L; 03C6;;;;N;;;;; -1D6D8;MATHEMATICAL BOLD SMALL CHI;Ll;0;L; 03C7;;;;N;;;;; -1D6D9;MATHEMATICAL BOLD SMALL PSI;Ll;0;L; 03C8;;;;N;;;;; -1D6DA;MATHEMATICAL BOLD SMALL OMEGA;Ll;0;L; 03C9;;;;N;;;;; -1D6DB;MATHEMATICAL BOLD PARTIAL DIFFERENTIAL;Sm;0;ON; 2202;;;;Y;;;;; -1D6DC;MATHEMATICAL BOLD EPSILON SYMBOL;Ll;0;L; 03F5;;;;N;;;;; -1D6DD;MATHEMATICAL BOLD THETA SYMBOL;Ll;0;L; 03D1;;;;N;;;;; -1D6DE;MATHEMATICAL BOLD KAPPA SYMBOL;Ll;0;L; 03F0;;;;N;;;;; -1D6DF;MATHEMATICAL BOLD PHI SYMBOL;Ll;0;L; 03D5;;;;N;;;;; -1D6E0;MATHEMATICAL BOLD RHO SYMBOL;Ll;0;L; 03F1;;;;N;;;;; -1D6E1;MATHEMATICAL BOLD PI SYMBOL;Ll;0;L; 03D6;;;;N;;;;; -1D6E2;MATHEMATICAL ITALIC CAPITAL ALPHA;Lu;0;L; 0391;;;;N;;;;; -1D6E3;MATHEMATICAL ITALIC CAPITAL BETA;Lu;0;L; 0392;;;;N;;;;; -1D6E4;MATHEMATICAL ITALIC CAPITAL GAMMA;Lu;0;L; 0393;;;;N;;;;; -1D6E5;MATHEMATICAL ITALIC CAPITAL DELTA;Lu;0;L; 0394;;;;N;;;;; -1D6E6;MATHEMATICAL ITALIC CAPITAL EPSILON;Lu;0;L; 0395;;;;N;;;;; -1D6E7;MATHEMATICAL ITALIC CAPITAL ZETA;Lu;0;L; 0396;;;;N;;;;; -1D6E8;MATHEMATICAL ITALIC CAPITAL ETA;Lu;0;L; 0397;;;;N;;;;; -1D6E9;MATHEMATICAL ITALIC CAPITAL THETA;Lu;0;L; 0398;;;;N;;;;; -1D6EA;MATHEMATICAL ITALIC CAPITAL IOTA;Lu;0;L; 0399;;;;N;;;;; -1D6EB;MATHEMATICAL ITALIC CAPITAL KAPPA;Lu;0;L; 039A;;;;N;;;;; -1D6EC;MATHEMATICAL ITALIC CAPITAL LAMDA;Lu;0;L; 039B;;;;N;;;;; -1D6ED;MATHEMATICAL ITALIC CAPITAL MU;Lu;0;L; 039C;;;;N;;;;; -1D6EE;MATHEMATICAL ITALIC CAPITAL NU;Lu;0;L; 039D;;;;N;;;;; -1D6EF;MATHEMATICAL ITALIC CAPITAL XI;Lu;0;L; 039E;;;;N;;;;; -1D6F0;MATHEMATICAL ITALIC CAPITAL OMICRON;Lu;0;L; 039F;;;;N;;;;; -1D6F1;MATHEMATICAL ITALIC CAPITAL PI;Lu;0;L; 03A0;;;;N;;;;; -1D6F2;MATHEMATICAL ITALIC CAPITAL RHO;Lu;0;L; 03A1;;;;N;;;;; -1D6F3;MATHEMATICAL ITALIC CAPITAL THETA SYMBOL;Lu;0;L; 03F4;;;;N;;;;; -1D6F4;MATHEMATICAL ITALIC CAPITAL SIGMA;Lu;0;L; 03A3;;;;N;;;;; -1D6F5;MATHEMATICAL ITALIC CAPITAL TAU;Lu;0;L; 03A4;;;;N;;;;; -1D6F6;MATHEMATICAL ITALIC CAPITAL UPSILON;Lu;0;L; 03A5;;;;N;;;;; -1D6F7;MATHEMATICAL ITALIC CAPITAL PHI;Lu;0;L; 03A6;;;;N;;;;; -1D6F8;MATHEMATICAL ITALIC CAPITAL CHI;Lu;0;L; 03A7;;;;N;;;;; -1D6F9;MATHEMATICAL ITALIC CAPITAL PSI;Lu;0;L; 03A8;;;;N;;;;; -1D6FA;MATHEMATICAL ITALIC CAPITAL OMEGA;Lu;0;L; 03A9;;;;N;;;;; -1D6FB;MATHEMATICAL ITALIC NABLA;Sm;0;L; 2207;;;;N;;;;; -1D6FC;MATHEMATICAL ITALIC SMALL ALPHA;Ll;0;L; 03B1;;;;N;;;;; -1D6FD;MATHEMATICAL ITALIC SMALL BETA;Ll;0;L; 03B2;;;;N;;;;; -1D6FE;MATHEMATICAL ITALIC SMALL GAMMA;Ll;0;L; 03B3;;;;N;;;;; -1D6FF;MATHEMATICAL ITALIC SMALL DELTA;Ll;0;L; 03B4;;;;N;;;;; -1D700;MATHEMATICAL ITALIC SMALL EPSILON;Ll;0;L; 03B5;;;;N;;;;; -1D701;MATHEMATICAL ITALIC SMALL ZETA;Ll;0;L; 03B6;;;;N;;;;; -1D702;MATHEMATICAL ITALIC SMALL ETA;Ll;0;L; 03B7;;;;N;;;;; -1D703;MATHEMATICAL ITALIC SMALL THETA;Ll;0;L; 03B8;;;;N;;;;; -1D704;MATHEMATICAL ITALIC SMALL IOTA;Ll;0;L; 03B9;;;;N;;;;; -1D705;MATHEMATICAL ITALIC SMALL KAPPA;Ll;0;L; 03BA;;;;N;;;;; -1D706;MATHEMATICAL ITALIC SMALL LAMDA;Ll;0;L; 03BB;;;;N;;;;; -1D707;MATHEMATICAL ITALIC SMALL MU;Ll;0;L; 03BC;;;;N;;;;; -1D708;MATHEMATICAL ITALIC SMALL NU;Ll;0;L; 03BD;;;;N;;;;; -1D709;MATHEMATICAL ITALIC SMALL XI;Ll;0;L; 03BE;;;;N;;;;; -1D70A;MATHEMATICAL ITALIC SMALL OMICRON;Ll;0;L; 03BF;;;;N;;;;; -1D70B;MATHEMATICAL ITALIC SMALL PI;Ll;0;L; 03C0;;;;N;;;;; -1D70C;MATHEMATICAL ITALIC SMALL RHO;Ll;0;L; 03C1;;;;N;;;;; -1D70D;MATHEMATICAL ITALIC SMALL FINAL SIGMA;Ll;0;L; 03C2;;;;N;;;;; -1D70E;MATHEMATICAL ITALIC SMALL SIGMA;Ll;0;L; 03C3;;;;N;;;;; -1D70F;MATHEMATICAL ITALIC SMALL TAU;Ll;0;L; 03C4;;;;N;;;;; -1D710;MATHEMATICAL ITALIC SMALL UPSILON;Ll;0;L; 03C5;;;;N;;;;; -1D711;MATHEMATICAL ITALIC SMALL PHI;Ll;0;L; 03C6;;;;N;;;;; -1D712;MATHEMATICAL ITALIC SMALL CHI;Ll;0;L; 03C7;;;;N;;;;; -1D713;MATHEMATICAL ITALIC SMALL PSI;Ll;0;L; 03C8;;;;N;;;;; -1D714;MATHEMATICAL ITALIC SMALL OMEGA;Ll;0;L; 03C9;;;;N;;;;; -1D715;MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL;Sm;0;ON; 2202;;;;Y;;;;; -1D716;MATHEMATICAL ITALIC EPSILON SYMBOL;Ll;0;L; 03F5;;;;N;;;;; -1D717;MATHEMATICAL ITALIC THETA SYMBOL;Ll;0;L; 03D1;;;;N;;;;; -1D718;MATHEMATICAL ITALIC KAPPA SYMBOL;Ll;0;L; 03F0;;;;N;;;;; -1D719;MATHEMATICAL ITALIC PHI SYMBOL;Ll;0;L; 03D5;;;;N;;;;; -1D71A;MATHEMATICAL ITALIC RHO SYMBOL;Ll;0;L; 03F1;;;;N;;;;; -1D71B;MATHEMATICAL ITALIC PI SYMBOL;Ll;0;L; 03D6;;;;N;;;;; -1D71C;MATHEMATICAL BOLD ITALIC CAPITAL ALPHA;Lu;0;L; 0391;;;;N;;;;; -1D71D;MATHEMATICAL BOLD ITALIC CAPITAL BETA;Lu;0;L; 0392;;;;N;;;;; -1D71E;MATHEMATICAL BOLD ITALIC CAPITAL GAMMA;Lu;0;L; 0393;;;;N;;;;; -1D71F;MATHEMATICAL BOLD ITALIC CAPITAL DELTA;Lu;0;L; 0394;;;;N;;;;; -1D720;MATHEMATICAL BOLD ITALIC CAPITAL EPSILON;Lu;0;L; 0395;;;;N;;;;; -1D721;MATHEMATICAL BOLD ITALIC CAPITAL ZETA;Lu;0;L; 0396;;;;N;;;;; -1D722;MATHEMATICAL BOLD ITALIC CAPITAL ETA;Lu;0;L; 0397;;;;N;;;;; -1D723;MATHEMATICAL BOLD ITALIC CAPITAL THETA;Lu;0;L; 0398;;;;N;;;;; -1D724;MATHEMATICAL BOLD ITALIC CAPITAL IOTA;Lu;0;L; 0399;;;;N;;;;; -1D725;MATHEMATICAL BOLD ITALIC CAPITAL KAPPA;Lu;0;L; 039A;;;;N;;;;; -1D726;MATHEMATICAL BOLD ITALIC CAPITAL LAMDA;Lu;0;L; 039B;;;;N;;;;; -1D727;MATHEMATICAL BOLD ITALIC CAPITAL MU;Lu;0;L; 039C;;;;N;;;;; -1D728;MATHEMATICAL BOLD ITALIC CAPITAL NU;Lu;0;L; 039D;;;;N;;;;; -1D729;MATHEMATICAL BOLD ITALIC CAPITAL XI;Lu;0;L; 039E;;;;N;;;;; -1D72A;MATHEMATICAL BOLD ITALIC CAPITAL OMICRON;Lu;0;L; 039F;;;;N;;;;; -1D72B;MATHEMATICAL BOLD ITALIC CAPITAL PI;Lu;0;L; 03A0;;;;N;;;;; -1D72C;MATHEMATICAL BOLD ITALIC CAPITAL RHO;Lu;0;L; 03A1;;;;N;;;;; -1D72D;MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL;Lu;0;L; 03F4;;;;N;;;;; -1D72E;MATHEMATICAL BOLD ITALIC CAPITAL SIGMA;Lu;0;L; 03A3;;;;N;;;;; -1D72F;MATHEMATICAL BOLD ITALIC CAPITAL TAU;Lu;0;L; 03A4;;;;N;;;;; -1D730;MATHEMATICAL BOLD ITALIC CAPITAL UPSILON;Lu;0;L; 03A5;;;;N;;;;; -1D731;MATHEMATICAL BOLD ITALIC CAPITAL PHI;Lu;0;L; 03A6;;;;N;;;;; -1D732;MATHEMATICAL BOLD ITALIC CAPITAL CHI;Lu;0;L; 03A7;;;;N;;;;; -1D733;MATHEMATICAL BOLD ITALIC CAPITAL PSI;Lu;0;L; 03A8;;;;N;;;;; -1D734;MATHEMATICAL BOLD ITALIC CAPITAL OMEGA;Lu;0;L; 03A9;;;;N;;;;; -1D735;MATHEMATICAL BOLD ITALIC NABLA;Sm;0;L; 2207;;;;N;;;;; -1D736;MATHEMATICAL BOLD ITALIC SMALL ALPHA;Ll;0;L; 03B1;;;;N;;;;; -1D737;MATHEMATICAL BOLD ITALIC SMALL BETA;Ll;0;L; 03B2;;;;N;;;;; -1D738;MATHEMATICAL BOLD ITALIC SMALL GAMMA;Ll;0;L; 03B3;;;;N;;;;; -1D739;MATHEMATICAL BOLD ITALIC SMALL DELTA;Ll;0;L; 03B4;;;;N;;;;; -1D73A;MATHEMATICAL BOLD ITALIC SMALL EPSILON;Ll;0;L; 03B5;;;;N;;;;; -1D73B;MATHEMATICAL BOLD ITALIC SMALL ZETA;Ll;0;L; 03B6;;;;N;;;;; -1D73C;MATHEMATICAL BOLD ITALIC SMALL ETA;Ll;0;L; 03B7;;;;N;;;;; -1D73D;MATHEMATICAL BOLD ITALIC SMALL THETA;Ll;0;L; 03B8;;;;N;;;;; -1D73E;MATHEMATICAL BOLD ITALIC SMALL IOTA;Ll;0;L; 03B9;;;;N;;;;; -1D73F;MATHEMATICAL BOLD ITALIC SMALL KAPPA;Ll;0;L; 03BA;;;;N;;;;; -1D740;MATHEMATICAL BOLD ITALIC SMALL LAMDA;Ll;0;L; 03BB;;;;N;;;;; -1D741;MATHEMATICAL BOLD ITALIC SMALL MU;Ll;0;L; 03BC;;;;N;;;;; -1D742;MATHEMATICAL BOLD ITALIC SMALL NU;Ll;0;L; 03BD;;;;N;;;;; -1D743;MATHEMATICAL BOLD ITALIC SMALL XI;Ll;0;L; 03BE;;;;N;;;;; -1D744;MATHEMATICAL BOLD ITALIC SMALL OMICRON;Ll;0;L; 03BF;;;;N;;;;; -1D745;MATHEMATICAL BOLD ITALIC SMALL PI;Ll;0;L; 03C0;;;;N;;;;; -1D746;MATHEMATICAL BOLD ITALIC SMALL RHO;Ll;0;L; 03C1;;;;N;;;;; -1D747;MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA;Ll;0;L; 03C2;;;;N;;;;; -1D748;MATHEMATICAL BOLD ITALIC SMALL SIGMA;Ll;0;L; 03C3;;;;N;;;;; -1D749;MATHEMATICAL BOLD ITALIC SMALL TAU;Ll;0;L; 03C4;;;;N;;;;; -1D74A;MATHEMATICAL BOLD ITALIC SMALL UPSILON;Ll;0;L; 03C5;;;;N;;;;; -1D74B;MATHEMATICAL BOLD ITALIC SMALL PHI;Ll;0;L; 03C6;;;;N;;;;; -1D74C;MATHEMATICAL BOLD ITALIC SMALL CHI;Ll;0;L; 03C7;;;;N;;;;; -1D74D;MATHEMATICAL BOLD ITALIC SMALL PSI;Ll;0;L; 03C8;;;;N;;;;; -1D74E;MATHEMATICAL BOLD ITALIC SMALL OMEGA;Ll;0;L; 03C9;;;;N;;;;; -1D74F;MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL;Sm;0;ON; 2202;;;;Y;;;;; -1D750;MATHEMATICAL BOLD ITALIC EPSILON SYMBOL;Ll;0;L; 03F5;;;;N;;;;; -1D751;MATHEMATICAL BOLD ITALIC THETA SYMBOL;Ll;0;L; 03D1;;;;N;;;;; -1D752;MATHEMATICAL BOLD ITALIC KAPPA SYMBOL;Ll;0;L; 03F0;;;;N;;;;; -1D753;MATHEMATICAL BOLD ITALIC PHI SYMBOL;Ll;0;L; 03D5;;;;N;;;;; -1D754;MATHEMATICAL BOLD ITALIC RHO SYMBOL;Ll;0;L; 03F1;;;;N;;;;; -1D755;MATHEMATICAL BOLD ITALIC PI SYMBOL;Ll;0;L; 03D6;;;;N;;;;; -1D756;MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA;Lu;0;L; 0391;;;;N;;;;; -1D757;MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA;Lu;0;L; 0392;;;;N;;;;; -1D758;MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA;Lu;0;L; 0393;;;;N;;;;; -1D759;MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA;Lu;0;L; 0394;;;;N;;;;; -1D75A;MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON;Lu;0;L; 0395;;;;N;;;;; -1D75B;MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA;Lu;0;L; 0396;;;;N;;;;; -1D75C;MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA;Lu;0;L; 0397;;;;N;;;;; -1D75D;MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA;Lu;0;L; 0398;;;;N;;;;; -1D75E;MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA;Lu;0;L; 0399;;;;N;;;;; -1D75F;MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA;Lu;0;L; 039A;;;;N;;;;; -1D760;MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA;Lu;0;L; 039B;;;;N;;;;; -1D761;MATHEMATICAL SANS-SERIF BOLD CAPITAL MU;Lu;0;L; 039C;;;;N;;;;; -1D762;MATHEMATICAL SANS-SERIF BOLD CAPITAL NU;Lu;0;L; 039D;;;;N;;;;; -1D763;MATHEMATICAL SANS-SERIF BOLD CAPITAL XI;Lu;0;L; 039E;;;;N;;;;; -1D764;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON;Lu;0;L; 039F;;;;N;;;;; -1D765;MATHEMATICAL SANS-SERIF BOLD CAPITAL PI;Lu;0;L; 03A0;;;;N;;;;; -1D766;MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO;Lu;0;L; 03A1;;;;N;;;;; -1D767;MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL;Lu;0;L; 03F4;;;;N;;;;; -1D768;MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA;Lu;0;L; 03A3;;;;N;;;;; -1D769;MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU;Lu;0;L; 03A4;;;;N;;;;; -1D76A;MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON;Lu;0;L; 03A5;;;;N;;;;; -1D76B;MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI;Lu;0;L; 03A6;;;;N;;;;; -1D76C;MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI;Lu;0;L; 03A7;;;;N;;;;; -1D76D;MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI;Lu;0;L; 03A8;;;;N;;;;; -1D76E;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA;Lu;0;L; 03A9;;;;N;;;;; -1D76F;MATHEMATICAL SANS-SERIF BOLD NABLA;Sm;0;L; 2207;;;;N;;;;; -1D770;MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA;Ll;0;L; 03B1;;;;N;;;;; -1D771;MATHEMATICAL SANS-SERIF BOLD SMALL BETA;Ll;0;L; 03B2;;;;N;;;;; -1D772;MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA;Ll;0;L; 03B3;;;;N;;;;; -1D773;MATHEMATICAL SANS-SERIF BOLD SMALL DELTA;Ll;0;L; 03B4;;;;N;;;;; -1D774;MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON;Ll;0;L; 03B5;;;;N;;;;; -1D775;MATHEMATICAL SANS-SERIF BOLD SMALL ZETA;Ll;0;L; 03B6;;;;N;;;;; -1D776;MATHEMATICAL SANS-SERIF BOLD SMALL ETA;Ll;0;L; 03B7;;;;N;;;;; -1D777;MATHEMATICAL SANS-SERIF BOLD SMALL THETA;Ll;0;L; 03B8;;;;N;;;;; -1D778;MATHEMATICAL SANS-SERIF BOLD SMALL IOTA;Ll;0;L; 03B9;;;;N;;;;; -1D779;MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA;Ll;0;L; 03BA;;;;N;;;;; -1D77A;MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA;Ll;0;L; 03BB;;;;N;;;;; -1D77B;MATHEMATICAL SANS-SERIF BOLD SMALL MU;Ll;0;L; 03BC;;;;N;;;;; -1D77C;MATHEMATICAL SANS-SERIF BOLD SMALL NU;Ll;0;L; 03BD;;;;N;;;;; -1D77D;MATHEMATICAL SANS-SERIF BOLD SMALL XI;Ll;0;L; 03BE;;;;N;;;;; -1D77E;MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON;Ll;0;L; 03BF;;;;N;;;;; -1D77F;MATHEMATICAL SANS-SERIF BOLD SMALL PI;Ll;0;L; 03C0;;;;N;;;;; -1D780;MATHEMATICAL SANS-SERIF BOLD SMALL RHO;Ll;0;L; 03C1;;;;N;;;;; -1D781;MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA;Ll;0;L; 03C2;;;;N;;;;; -1D782;MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA;Ll;0;L; 03C3;;;;N;;;;; -1D783;MATHEMATICAL SANS-SERIF BOLD SMALL TAU;Ll;0;L; 03C4;;;;N;;;;; -1D784;MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON;Ll;0;L; 03C5;;;;N;;;;; -1D785;MATHEMATICAL SANS-SERIF BOLD SMALL PHI;Ll;0;L; 03C6;;;;N;;;;; -1D786;MATHEMATICAL SANS-SERIF BOLD SMALL CHI;Ll;0;L; 03C7;;;;N;;;;; -1D787;MATHEMATICAL SANS-SERIF BOLD SMALL PSI;Ll;0;L; 03C8;;;;N;;;;; -1D788;MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA;Ll;0;L; 03C9;;;;N;;;;; -1D789;MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL;Sm;0;ON; 2202;;;;Y;;;;; -1D78A;MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL;Ll;0;L; 03F5;;;;N;;;;; -1D78B;MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL;Ll;0;L; 03D1;;;;N;;;;; -1D78C;MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL;Ll;0;L; 03F0;;;;N;;;;; -1D78D;MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL;Ll;0;L; 03D5;;;;N;;;;; -1D78E;MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL;Ll;0;L; 03F1;;;;N;;;;; -1D78F;MATHEMATICAL SANS-SERIF BOLD PI SYMBOL;Ll;0;L; 03D6;;;;N;;;;; -1D790;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA;Lu;0;L; 0391;;;;N;;;;; -1D791;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA;Lu;0;L; 0392;;;;N;;;;; -1D792;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA;Lu;0;L; 0393;;;;N;;;;; -1D793;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA;Lu;0;L; 0394;;;;N;;;;; -1D794;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON;Lu;0;L; 0395;;;;N;;;;; -1D795;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA;Lu;0;L; 0396;;;;N;;;;; -1D796;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA;Lu;0;L; 0397;;;;N;;;;; -1D797;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA;Lu;0;L; 0398;;;;N;;;;; -1D798;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA;Lu;0;L; 0399;;;;N;;;;; -1D799;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA;Lu;0;L; 039A;;;;N;;;;; -1D79A;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA;Lu;0;L; 039B;;;;N;;;;; -1D79B;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU;Lu;0;L; 039C;;;;N;;;;; -1D79C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU;Lu;0;L; 039D;;;;N;;;;; -1D79D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI;Lu;0;L; 039E;;;;N;;;;; -1D79E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON;Lu;0;L; 039F;;;;N;;;;; -1D79F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI;Lu;0;L; 03A0;;;;N;;;;; -1D7A0;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO;Lu;0;L; 03A1;;;;N;;;;; -1D7A1;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL;Lu;0;L; 03F4;;;;N;;;;; -1D7A2;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA;Lu;0;L; 03A3;;;;N;;;;; -1D7A3;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU;Lu;0;L; 03A4;;;;N;;;;; -1D7A4;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON;Lu;0;L; 03A5;;;;N;;;;; -1D7A5;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI;Lu;0;L; 03A6;;;;N;;;;; -1D7A6;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI;Lu;0;L; 03A7;;;;N;;;;; -1D7A7;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI;Lu;0;L; 03A8;;;;N;;;;; -1D7A8;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA;Lu;0;L; 03A9;;;;N;;;;; -1D7A9;MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA;Sm;0;L; 2207;;;;N;;;;; -1D7AA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA;Ll;0;L; 03B1;;;;N;;;;; -1D7AB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA;Ll;0;L; 03B2;;;;N;;;;; -1D7AC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA;Ll;0;L; 03B3;;;;N;;;;; -1D7AD;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA;Ll;0;L; 03B4;;;;N;;;;; -1D7AE;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON;Ll;0;L; 03B5;;;;N;;;;; -1D7AF;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA;Ll;0;L; 03B6;;;;N;;;;; -1D7B0;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA;Ll;0;L; 03B7;;;;N;;;;; -1D7B1;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA;Ll;0;L; 03B8;;;;N;;;;; -1D7B2;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA;Ll;0;L; 03B9;;;;N;;;;; -1D7B3;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA;Ll;0;L; 03BA;;;;N;;;;; -1D7B4;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA;Ll;0;L; 03BB;;;;N;;;;; -1D7B5;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU;Ll;0;L; 03BC;;;;N;;;;; -1D7B6;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU;Ll;0;L; 03BD;;;;N;;;;; -1D7B7;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI;Ll;0;L; 03BE;;;;N;;;;; -1D7B8;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON;Ll;0;L; 03BF;;;;N;;;;; -1D7B9;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI;Ll;0;L; 03C0;;;;N;;;;; -1D7BA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO;Ll;0;L; 03C1;;;;N;;;;; -1D7BB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA;Ll;0;L; 03C2;;;;N;;;;; -1D7BC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA;Ll;0;L; 03C3;;;;N;;;;; -1D7BD;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU;Ll;0;L; 03C4;;;;N;;;;; -1D7BE;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON;Ll;0;L; 03C5;;;;N;;;;; -1D7BF;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI;Ll;0;L; 03C6;;;;N;;;;; -1D7C0;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI;Ll;0;L; 03C7;;;;N;;;;; -1D7C1;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI;Ll;0;L; 03C8;;;;N;;;;; -1D7C2;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA;Ll;0;L; 03C9;;;;N;;;;; -1D7C3;MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL;Sm;0;ON; 2202;;;;Y;;;;; -1D7C4;MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL;Ll;0;L; 03F5;;;;N;;;;; -1D7C5;MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL;Ll;0;L; 03D1;;;;N;;;;; -1D7C6;MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL;Ll;0;L; 03F0;;;;N;;;;; -1D7C7;MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL;Ll;0;L; 03D5;;;;N;;;;; -1D7C8;MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL;Ll;0;L; 03F1;;;;N;;;;; -1D7C9;MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL;Ll;0;L; 03D6;;;;N;;;;; -1D7CA;MATHEMATICAL BOLD CAPITAL DIGAMMA;Lu;0;L; 03DC;;;;N;;;;; -1D7CB;MATHEMATICAL BOLD SMALL DIGAMMA;Ll;0;L; 03DD;;;;N;;;;; -1D7CE;MATHEMATICAL BOLD DIGIT ZERO;Nd;0;EN; 0030;0;0;0;N;;;;; -1D7CF;MATHEMATICAL BOLD DIGIT ONE;Nd;0;EN; 0031;1;1;1;N;;;;; -1D7D0;MATHEMATICAL BOLD DIGIT TWO;Nd;0;EN; 0032;2;2;2;N;;;;; -1D7D1;MATHEMATICAL BOLD DIGIT THREE;Nd;0;EN; 0033;3;3;3;N;;;;; -1D7D2;MATHEMATICAL BOLD DIGIT FOUR;Nd;0;EN; 0034;4;4;4;N;;;;; -1D7D3;MATHEMATICAL BOLD DIGIT FIVE;Nd;0;EN; 0035;5;5;5;N;;;;; -1D7D4;MATHEMATICAL BOLD DIGIT SIX;Nd;0;EN; 0036;6;6;6;N;;;;; -1D7D5;MATHEMATICAL BOLD DIGIT SEVEN;Nd;0;EN; 0037;7;7;7;N;;;;; -1D7D6;MATHEMATICAL BOLD DIGIT EIGHT;Nd;0;EN; 0038;8;8;8;N;;;;; -1D7D7;MATHEMATICAL BOLD DIGIT NINE;Nd;0;EN; 0039;9;9;9;N;;;;; -1D7D8;MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO;Nd;0;EN; 0030;0;0;0;N;;;;; -1D7D9;MATHEMATICAL DOUBLE-STRUCK DIGIT ONE;Nd;0;EN; 0031;1;1;1;N;;;;; -1D7DA;MATHEMATICAL DOUBLE-STRUCK DIGIT TWO;Nd;0;EN; 0032;2;2;2;N;;;;; -1D7DB;MATHEMATICAL DOUBLE-STRUCK DIGIT THREE;Nd;0;EN; 0033;3;3;3;N;;;;; -1D7DC;MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR;Nd;0;EN; 0034;4;4;4;N;;;;; -1D7DD;MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE;Nd;0;EN; 0035;5;5;5;N;;;;; -1D7DE;MATHEMATICAL DOUBLE-STRUCK DIGIT SIX;Nd;0;EN; 0036;6;6;6;N;;;;; -1D7DF;MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN;Nd;0;EN; 0037;7;7;7;N;;;;; -1D7E0;MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT;Nd;0;EN; 0038;8;8;8;N;;;;; -1D7E1;MATHEMATICAL DOUBLE-STRUCK DIGIT NINE;Nd;0;EN; 0039;9;9;9;N;;;;; -1D7E2;MATHEMATICAL SANS-SERIF DIGIT ZERO;Nd;0;EN; 0030;0;0;0;N;;;;; -1D7E3;MATHEMATICAL SANS-SERIF DIGIT ONE;Nd;0;EN; 0031;1;1;1;N;;;;; -1D7E4;MATHEMATICAL SANS-SERIF DIGIT TWO;Nd;0;EN; 0032;2;2;2;N;;;;; -1D7E5;MATHEMATICAL SANS-SERIF DIGIT THREE;Nd;0;EN; 0033;3;3;3;N;;;;; -1D7E6;MATHEMATICAL SANS-SERIF DIGIT FOUR;Nd;0;EN; 0034;4;4;4;N;;;;; -1D7E7;MATHEMATICAL SANS-SERIF DIGIT FIVE;Nd;0;EN; 0035;5;5;5;N;;;;; -1D7E8;MATHEMATICAL SANS-SERIF DIGIT SIX;Nd;0;EN; 0036;6;6;6;N;;;;; -1D7E9;MATHEMATICAL SANS-SERIF DIGIT SEVEN;Nd;0;EN; 0037;7;7;7;N;;;;; -1D7EA;MATHEMATICAL SANS-SERIF DIGIT EIGHT;Nd;0;EN; 0038;8;8;8;N;;;;; -1D7EB;MATHEMATICAL SANS-SERIF DIGIT NINE;Nd;0;EN; 0039;9;9;9;N;;;;; -1D7EC;MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO;Nd;0;EN; 0030;0;0;0;N;;;;; -1D7ED;MATHEMATICAL SANS-SERIF BOLD DIGIT ONE;Nd;0;EN; 0031;1;1;1;N;;;;; -1D7EE;MATHEMATICAL SANS-SERIF BOLD DIGIT TWO;Nd;0;EN; 0032;2;2;2;N;;;;; -1D7EF;MATHEMATICAL SANS-SERIF BOLD DIGIT THREE;Nd;0;EN; 0033;3;3;3;N;;;;; -1D7F0;MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR;Nd;0;EN; 0034;4;4;4;N;;;;; -1D7F1;MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE;Nd;0;EN; 0035;5;5;5;N;;;;; -1D7F2;MATHEMATICAL SANS-SERIF BOLD DIGIT SIX;Nd;0;EN; 0036;6;6;6;N;;;;; -1D7F3;MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN;Nd;0;EN; 0037;7;7;7;N;;;;; -1D7F4;MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT;Nd;0;EN; 0038;8;8;8;N;;;;; -1D7F5;MATHEMATICAL SANS-SERIF BOLD DIGIT NINE;Nd;0;EN; 0039;9;9;9;N;;;;; -1D7F6;MATHEMATICAL MONOSPACE DIGIT ZERO;Nd;0;EN; 0030;0;0;0;N;;;;; -1D7F7;MATHEMATICAL MONOSPACE DIGIT ONE;Nd;0;EN; 0031;1;1;1;N;;;;; -1D7F8;MATHEMATICAL MONOSPACE DIGIT TWO;Nd;0;EN; 0032;2;2;2;N;;;;; -1D7F9;MATHEMATICAL MONOSPACE DIGIT THREE;Nd;0;EN; 0033;3;3;3;N;;;;; -1D7FA;MATHEMATICAL MONOSPACE DIGIT FOUR;Nd;0;EN; 0034;4;4;4;N;;;;; -1D7FB;MATHEMATICAL MONOSPACE DIGIT FIVE;Nd;0;EN; 0035;5;5;5;N;;;;; -1D7FC;MATHEMATICAL MONOSPACE DIGIT SIX;Nd;0;EN; 0036;6;6;6;N;;;;; -1D7FD;MATHEMATICAL MONOSPACE DIGIT SEVEN;Nd;0;EN; 0037;7;7;7;N;;;;; -1D7FE;MATHEMATICAL MONOSPACE DIGIT EIGHT;Nd;0;EN; 0038;8;8;8;N;;;;; -1D7FF;MATHEMATICAL MONOSPACE DIGIT NINE;Nd;0;EN; 0039;9;9;9;N;;;;; -1F000;MAHJONG TILE EAST WIND;So;0;ON;;;;;N;;;;; -1F001;MAHJONG TILE SOUTH WIND;So;0;ON;;;;;N;;;;; -1F002;MAHJONG TILE WEST WIND;So;0;ON;;;;;N;;;;; -1F003;MAHJONG TILE NORTH WIND;So;0;ON;;;;;N;;;;; -1F004;MAHJONG TILE RED DRAGON;So;0;ON;;;;;N;;;;; -1F005;MAHJONG TILE GREEN DRAGON;So;0;ON;;;;;N;;;;; -1F006;MAHJONG TILE WHITE DRAGON;So;0;ON;;;;;N;;;;; -1F007;MAHJONG TILE ONE OF CHARACTERS;So;0;ON;;;;;N;;;;; -1F008;MAHJONG TILE TWO OF CHARACTERS;So;0;ON;;;;;N;;;;; -1F009;MAHJONG TILE THREE OF CHARACTERS;So;0;ON;;;;;N;;;;; -1F00A;MAHJONG TILE FOUR OF CHARACTERS;So;0;ON;;;;;N;;;;; -1F00B;MAHJONG TILE FIVE OF CHARACTERS;So;0;ON;;;;;N;;;;; -1F00C;MAHJONG TILE SIX OF CHARACTERS;So;0;ON;;;;;N;;;;; -1F00D;MAHJONG TILE SEVEN OF CHARACTERS;So;0;ON;;;;;N;;;;; -1F00E;MAHJONG TILE EIGHT OF CHARACTERS;So;0;ON;;;;;N;;;;; -1F00F;MAHJONG TILE NINE OF CHARACTERS;So;0;ON;;;;;N;;;;; -1F010;MAHJONG TILE ONE OF BAMBOOS;So;0;ON;;;;;N;;;;; -1F011;MAHJONG TILE TWO OF BAMBOOS;So;0;ON;;;;;N;;;;; -1F012;MAHJONG TILE THREE OF BAMBOOS;So;0;ON;;;;;N;;;;; -1F013;MAHJONG TILE FOUR OF BAMBOOS;So;0;ON;;;;;N;;;;; -1F014;MAHJONG TILE FIVE OF BAMBOOS;So;0;ON;;;;;N;;;;; -1F015;MAHJONG TILE SIX OF BAMBOOS;So;0;ON;;;;;N;;;;; -1F016;MAHJONG TILE SEVEN OF BAMBOOS;So;0;ON;;;;;N;;;;; -1F017;MAHJONG TILE EIGHT OF BAMBOOS;So;0;ON;;;;;N;;;;; -1F018;MAHJONG TILE NINE OF BAMBOOS;So;0;ON;;;;;N;;;;; -1F019;MAHJONG TILE ONE OF CIRCLES;So;0;ON;;;;;N;;;;; -1F01A;MAHJONG TILE TWO OF CIRCLES;So;0;ON;;;;;N;;;;; -1F01B;MAHJONG TILE THREE OF CIRCLES;So;0;ON;;;;;N;;;;; -1F01C;MAHJONG TILE FOUR OF CIRCLES;So;0;ON;;;;;N;;;;; -1F01D;MAHJONG TILE FIVE OF CIRCLES;So;0;ON;;;;;N;;;;; -1F01E;MAHJONG TILE SIX OF CIRCLES;So;0;ON;;;;;N;;;;; -1F01F;MAHJONG TILE SEVEN OF CIRCLES;So;0;ON;;;;;N;;;;; -1F020;MAHJONG TILE EIGHT OF CIRCLES;So;0;ON;;;;;N;;;;; -1F021;MAHJONG TILE NINE OF CIRCLES;So;0;ON;;;;;N;;;;; -1F022;MAHJONG TILE PLUM;So;0;ON;;;;;N;;;;; -1F023;MAHJONG TILE ORCHID;So;0;ON;;;;;N;;;;; -1F024;MAHJONG TILE BAMBOO;So;0;ON;;;;;N;;;;; -1F025;MAHJONG TILE CHRYSANTHEMUM;So;0;ON;;;;;N;;;;; -1F026;MAHJONG TILE SPRING;So;0;ON;;;;;N;;;;; -1F027;MAHJONG TILE SUMMER;So;0;ON;;;;;N;;;;; -1F028;MAHJONG TILE AUTUMN;So;0;ON;;;;;N;;;;; -1F029;MAHJONG TILE WINTER;So;0;ON;;;;;N;;;;; -1F02A;MAHJONG TILE JOKER;So;0;ON;;;;;N;;;;; -1F02B;MAHJONG TILE BACK;So;0;ON;;;;;N;;;;; -1F030;DOMINO TILE HORIZONTAL BACK;So;0;ON;;;;;N;;;;; -1F031;DOMINO TILE HORIZONTAL-00-00;So;0;ON;;;;;N;;;;; -1F032;DOMINO TILE HORIZONTAL-00-01;So;0;ON;;;;;N;;;;; -1F033;DOMINO TILE HORIZONTAL-00-02;So;0;ON;;;;;N;;;;; -1F034;DOMINO TILE HORIZONTAL-00-03;So;0;ON;;;;;N;;;;; -1F035;DOMINO TILE HORIZONTAL-00-04;So;0;ON;;;;;N;;;;; -1F036;DOMINO TILE HORIZONTAL-00-05;So;0;ON;;;;;N;;;;; -1F037;DOMINO TILE HORIZONTAL-00-06;So;0;ON;;;;;N;;;;; -1F038;DOMINO TILE HORIZONTAL-01-00;So;0;ON;;;;;N;;;;; -1F039;DOMINO TILE HORIZONTAL-01-01;So;0;ON;;;;;N;;;;; -1F03A;DOMINO TILE HORIZONTAL-01-02;So;0;ON;;;;;N;;;;; -1F03B;DOMINO TILE HORIZONTAL-01-03;So;0;ON;;;;;N;;;;; -1F03C;DOMINO TILE HORIZONTAL-01-04;So;0;ON;;;;;N;;;;; -1F03D;DOMINO TILE HORIZONTAL-01-05;So;0;ON;;;;;N;;;;; -1F03E;DOMINO TILE HORIZONTAL-01-06;So;0;ON;;;;;N;;;;; -1F03F;DOMINO TILE HORIZONTAL-02-00;So;0;ON;;;;;N;;;;; -1F040;DOMINO TILE HORIZONTAL-02-01;So;0;ON;;;;;N;;;;; -1F041;DOMINO TILE HORIZONTAL-02-02;So;0;ON;;;;;N;;;;; -1F042;DOMINO TILE HORIZONTAL-02-03;So;0;ON;;;;;N;;;;; -1F043;DOMINO TILE HORIZONTAL-02-04;So;0;ON;;;;;N;;;;; -1F044;DOMINO TILE HORIZONTAL-02-05;So;0;ON;;;;;N;;;;; -1F045;DOMINO TILE HORIZONTAL-02-06;So;0;ON;;;;;N;;;;; -1F046;DOMINO TILE HORIZONTAL-03-00;So;0;ON;;;;;N;;;;; -1F047;DOMINO TILE HORIZONTAL-03-01;So;0;ON;;;;;N;;;;; -1F048;DOMINO TILE HORIZONTAL-03-02;So;0;ON;;;;;N;;;;; -1F049;DOMINO TILE HORIZONTAL-03-03;So;0;ON;;;;;N;;;;; -1F04A;DOMINO TILE HORIZONTAL-03-04;So;0;ON;;;;;N;;;;; -1F04B;DOMINO TILE HORIZONTAL-03-05;So;0;ON;;;;;N;;;;; -1F04C;DOMINO TILE HORIZONTAL-03-06;So;0;ON;;;;;N;;;;; -1F04D;DOMINO TILE HORIZONTAL-04-00;So;0;ON;;;;;N;;;;; -1F04E;DOMINO TILE HORIZONTAL-04-01;So;0;ON;;;;;N;;;;; -1F04F;DOMINO TILE HORIZONTAL-04-02;So;0;ON;;;;;N;;;;; -1F050;DOMINO TILE HORIZONTAL-04-03;So;0;ON;;;;;N;;;;; -1F051;DOMINO TILE HORIZONTAL-04-04;So;0;ON;;;;;N;;;;; -1F052;DOMINO TILE HORIZONTAL-04-05;So;0;ON;;;;;N;;;;; -1F053;DOMINO TILE HORIZONTAL-04-06;So;0;ON;;;;;N;;;;; -1F054;DOMINO TILE HORIZONTAL-05-00;So;0;ON;;;;;N;;;;; -1F055;DOMINO TILE HORIZONTAL-05-01;So;0;ON;;;;;N;;;;; -1F056;DOMINO TILE HORIZONTAL-05-02;So;0;ON;;;;;N;;;;; -1F057;DOMINO TILE HORIZONTAL-05-03;So;0;ON;;;;;N;;;;; -1F058;DOMINO TILE HORIZONTAL-05-04;So;0;ON;;;;;N;;;;; -1F059;DOMINO TILE HORIZONTAL-05-05;So;0;ON;;;;;N;;;;; -1F05A;DOMINO TILE HORIZONTAL-05-06;So;0;ON;;;;;N;;;;; -1F05B;DOMINO TILE HORIZONTAL-06-00;So;0;ON;;;;;N;;;;; -1F05C;DOMINO TILE HORIZONTAL-06-01;So;0;ON;;;;;N;;;;; -1F05D;DOMINO TILE HORIZONTAL-06-02;So;0;ON;;;;;N;;;;; -1F05E;DOMINO TILE HORIZONTAL-06-03;So;0;ON;;;;;N;;;;; -1F05F;DOMINO TILE HORIZONTAL-06-04;So;0;ON;;;;;N;;;;; -1F060;DOMINO TILE HORIZONTAL-06-05;So;0;ON;;;;;N;;;;; -1F061;DOMINO TILE HORIZONTAL-06-06;So;0;ON;;;;;N;;;;; -1F062;DOMINO TILE VERTICAL BACK;So;0;ON;;;;;N;;;;; -1F063;DOMINO TILE VERTICAL-00-00;So;0;ON;;;;;N;;;;; -1F064;DOMINO TILE VERTICAL-00-01;So;0;ON;;;;;N;;;;; -1F065;DOMINO TILE VERTICAL-00-02;So;0;ON;;;;;N;;;;; -1F066;DOMINO TILE VERTICAL-00-03;So;0;ON;;;;;N;;;;; -1F067;DOMINO TILE VERTICAL-00-04;So;0;ON;;;;;N;;;;; -1F068;DOMINO TILE VERTICAL-00-05;So;0;ON;;;;;N;;;;; -1F069;DOMINO TILE VERTICAL-00-06;So;0;ON;;;;;N;;;;; -1F06A;DOMINO TILE VERTICAL-01-00;So;0;ON;;;;;N;;;;; -1F06B;DOMINO TILE VERTICAL-01-01;So;0;ON;;;;;N;;;;; -1F06C;DOMINO TILE VERTICAL-01-02;So;0;ON;;;;;N;;;;; -1F06D;DOMINO TILE VERTICAL-01-03;So;0;ON;;;;;N;;;;; -1F06E;DOMINO TILE VERTICAL-01-04;So;0;ON;;;;;N;;;;; -1F06F;DOMINO TILE VERTICAL-01-05;So;0;ON;;;;;N;;;;; -1F070;DOMINO TILE VERTICAL-01-06;So;0;ON;;;;;N;;;;; -1F071;DOMINO TILE VERTICAL-02-00;So;0;ON;;;;;N;;;;; -1F072;DOMINO TILE VERTICAL-02-01;So;0;ON;;;;;N;;;;; -1F073;DOMINO TILE VERTICAL-02-02;So;0;ON;;;;;N;;;;; -1F074;DOMINO TILE VERTICAL-02-03;So;0;ON;;;;;N;;;;; -1F075;DOMINO TILE VERTICAL-02-04;So;0;ON;;;;;N;;;;; -1F076;DOMINO TILE VERTICAL-02-05;So;0;ON;;;;;N;;;;; -1F077;DOMINO TILE VERTICAL-02-06;So;0;ON;;;;;N;;;;; -1F078;DOMINO TILE VERTICAL-03-00;So;0;ON;;;;;N;;;;; -1F079;DOMINO TILE VERTICAL-03-01;So;0;ON;;;;;N;;;;; -1F07A;DOMINO TILE VERTICAL-03-02;So;0;ON;;;;;N;;;;; -1F07B;DOMINO TILE VERTICAL-03-03;So;0;ON;;;;;N;;;;; -1F07C;DOMINO TILE VERTICAL-03-04;So;0;ON;;;;;N;;;;; -1F07D;DOMINO TILE VERTICAL-03-05;So;0;ON;;;;;N;;;;; -1F07E;DOMINO TILE VERTICAL-03-06;So;0;ON;;;;;N;;;;; -1F07F;DOMINO TILE VERTICAL-04-00;So;0;ON;;;;;N;;;;; -1F080;DOMINO TILE VERTICAL-04-01;So;0;ON;;;;;N;;;;; -1F081;DOMINO TILE VERTICAL-04-02;So;0;ON;;;;;N;;;;; -1F082;DOMINO TILE VERTICAL-04-03;So;0;ON;;;;;N;;;;; -1F083;DOMINO TILE VERTICAL-04-04;So;0;ON;;;;;N;;;;; -1F084;DOMINO TILE VERTICAL-04-05;So;0;ON;;;;;N;;;;; -1F085;DOMINO TILE VERTICAL-04-06;So;0;ON;;;;;N;;;;; -1F086;DOMINO TILE VERTICAL-05-00;So;0;ON;;;;;N;;;;; -1F087;DOMINO TILE VERTICAL-05-01;So;0;ON;;;;;N;;;;; -1F088;DOMINO TILE VERTICAL-05-02;So;0;ON;;;;;N;;;;; -1F089;DOMINO TILE VERTICAL-05-03;So;0;ON;;;;;N;;;;; -1F08A;DOMINO TILE VERTICAL-05-04;So;0;ON;;;;;N;;;;; -1F08B;DOMINO TILE VERTICAL-05-05;So;0;ON;;;;;N;;;;; -1F08C;DOMINO TILE VERTICAL-05-06;So;0;ON;;;;;N;;;;; -1F08D;DOMINO TILE VERTICAL-06-00;So;0;ON;;;;;N;;;;; -1F08E;DOMINO TILE VERTICAL-06-01;So;0;ON;;;;;N;;;;; -1F08F;DOMINO TILE VERTICAL-06-02;So;0;ON;;;;;N;;;;; -1F090;DOMINO TILE VERTICAL-06-03;So;0;ON;;;;;N;;;;; -1F091;DOMINO TILE VERTICAL-06-04;So;0;ON;;;;;N;;;;; -1F092;DOMINO TILE VERTICAL-06-05;So;0;ON;;;;;N;;;;; -1F093;DOMINO TILE VERTICAL-06-06;So;0;ON;;;;;N;;;;; -1F100;DIGIT ZERO FULL STOP;No;0;EN; 0030 002E;;0;0;N;;;;; -1F101;DIGIT ZERO COMMA;No;0;EN; 0030 002C;;0;0;N;;;;; -1F102;DIGIT ONE COMMA;No;0;EN; 0031 002C;;1;1;N;;;;; -1F103;DIGIT TWO COMMA;No;0;EN; 0032 002C;;2;2;N;;;;; -1F104;DIGIT THREE COMMA;No;0;EN; 0033 002C;;3;3;N;;;;; -1F105;DIGIT FOUR COMMA;No;0;EN; 0034 002C;;4;4;N;;;;; -1F106;DIGIT FIVE COMMA;No;0;EN; 0035 002C;;5;5;N;;;;; -1F107;DIGIT SIX COMMA;No;0;EN; 0036 002C;;6;6;N;;;;; -1F108;DIGIT SEVEN COMMA;No;0;EN; 0037 002C;;7;7;N;;;;; -1F109;DIGIT EIGHT COMMA;No;0;EN; 0038 002C;;8;8;N;;;;; -1F10A;DIGIT NINE COMMA;No;0;EN; 0039 002C;;9;9;N;;;;; -1F110;PARENTHESIZED LATIN CAPITAL LETTER A;So;0;L; 0028 0041 0029;;;;N;;;;; -1F111;PARENTHESIZED LATIN CAPITAL LETTER B;So;0;L; 0028 0042 0029;;;;N;;;;; -1F112;PARENTHESIZED LATIN CAPITAL LETTER C;So;0;L; 0028 0043 0029;;;;N;;;;; -1F113;PARENTHESIZED LATIN CAPITAL LETTER D;So;0;L; 0028 0044 0029;;;;N;;;;; -1F114;PARENTHESIZED LATIN CAPITAL LETTER E;So;0;L; 0028 0045 0029;;;;N;;;;; -1F115;PARENTHESIZED LATIN CAPITAL LETTER F;So;0;L; 0028 0046 0029;;;;N;;;;; -1F116;PARENTHESIZED LATIN CAPITAL LETTER G;So;0;L; 0028 0047 0029;;;;N;;;;; -1F117;PARENTHESIZED LATIN CAPITAL LETTER H;So;0;L; 0028 0048 0029;;;;N;;;;; -1F118;PARENTHESIZED LATIN CAPITAL LETTER I;So;0;L; 0028 0049 0029;;;;N;;;;; -1F119;PARENTHESIZED LATIN CAPITAL LETTER J;So;0;L; 0028 004A 0029;;;;N;;;;; -1F11A;PARENTHESIZED LATIN CAPITAL LETTER K;So;0;L; 0028 004B 0029;;;;N;;;;; -1F11B;PARENTHESIZED LATIN CAPITAL LETTER L;So;0;L; 0028 004C 0029;;;;N;;;;; -1F11C;PARENTHESIZED LATIN CAPITAL LETTER M;So;0;L; 0028 004D 0029;;;;N;;;;; -1F11D;PARENTHESIZED LATIN CAPITAL LETTER N;So;0;L; 0028 004E 0029;;;;N;;;;; -1F11E;PARENTHESIZED LATIN CAPITAL LETTER O;So;0;L; 0028 004F 0029;;;;N;;;;; -1F11F;PARENTHESIZED LATIN CAPITAL LETTER P;So;0;L; 0028 0050 0029;;;;N;;;;; -1F120;PARENTHESIZED LATIN CAPITAL LETTER Q;So;0;L; 0028 0051 0029;;;;N;;;;; -1F121;PARENTHESIZED LATIN CAPITAL LETTER R;So;0;L; 0028 0052 0029;;;;N;;;;; -1F122;PARENTHESIZED LATIN CAPITAL LETTER S;So;0;L; 0028 0053 0029;;;;N;;;;; -1F123;PARENTHESIZED LATIN CAPITAL LETTER T;So;0;L; 0028 0054 0029;;;;N;;;;; -1F124;PARENTHESIZED LATIN CAPITAL LETTER U;So;0;L; 0028 0055 0029;;;;N;;;;; -1F125;PARENTHESIZED LATIN CAPITAL LETTER V;So;0;L; 0028 0056 0029;;;;N;;;;; -1F126;PARENTHESIZED LATIN CAPITAL LETTER W;So;0;L; 0028 0057 0029;;;;N;;;;; -1F127;PARENTHESIZED LATIN CAPITAL LETTER X;So;0;L; 0028 0058 0029;;;;N;;;;; -1F128;PARENTHESIZED LATIN CAPITAL LETTER Y;So;0;L; 0028 0059 0029;;;;N;;;;; -1F129;PARENTHESIZED LATIN CAPITAL LETTER Z;So;0;L; 0028 005A 0029;;;;N;;;;; -1F12A;TORTOISE SHELL BRACKETED LATIN CAPITAL LETTER S;So;0;L; 3014 0053 3015;;;;N;;;;; -1F12B;CIRCLED ITALIC LATIN CAPITAL LETTER C;So;0;L; 0043;;;;N;;;;; -1F12C;CIRCLED ITALIC LATIN CAPITAL LETTER R;So;0;L; 0052;;;;N;;;;; -1F12D;CIRCLED CD;So;0;L; 0043 0044;;;;N;;;;; -1F12E;CIRCLED WZ;So;0;L; 0057 005A;;;;N;;;;; -1F131;SQUARED LATIN CAPITAL LETTER B;So;0;L; 0042;;;;N;;;;; -1F13D;SQUARED LATIN CAPITAL LETTER N;So;0;L; 004E;;;;N;;;;; -1F13F;SQUARED LATIN CAPITAL LETTER P;So;0;L; 0050;;;;N;;;;; -1F142;SQUARED LATIN CAPITAL LETTER S;So;0;L; 0053;;;;N;;;;; -1F146;SQUARED LATIN CAPITAL LETTER W;So;0;L; 0057;;;;N;;;;; -1F14A;SQUARED HV;So;0;L; 0048 0056;;;;N;;;;; -1F14B;SQUARED MV;So;0;L; 004D 0056;;;;N;;;;; -1F14C;SQUARED SD;So;0;L; 0053 0044;;;;N;;;;; -1F14D;SQUARED SS;So;0;L; 0053 0053;;;;N;;;;; -1F14E;SQUARED PPV;So;0;L; 0050 0050 0056;;;;N;;;;; -1F157;NEGATIVE CIRCLED LATIN CAPITAL LETTER H;So;0;L;;;;;N;;;;; -1F15F;NEGATIVE CIRCLED LATIN CAPITAL LETTER P;So;0;L;;;;;N;;;;; -1F179;NEGATIVE SQUARED LATIN CAPITAL LETTER J;So;0;L;;;;;N;;;;; -1F17B;NEGATIVE SQUARED LATIN CAPITAL LETTER L;So;0;L;;;;;N;;;;; -1F17C;NEGATIVE SQUARED LATIN CAPITAL LETTER M;So;0;L;;;;;N;;;;; -1F17F;NEGATIVE SQUARED LATIN CAPITAL LETTER P;So;0;L;;;;;N;;;;; -1F18A;CROSSED NEGATIVE SQUARED LATIN CAPITAL LETTER P;So;0;L;;;;;N;;;;; -1F18B;NEGATIVE SQUARED IC;So;0;L;;;;;N;;;;; -1F18C;NEGATIVE SQUARED PA;So;0;L;;;;;N;;;;; -1F18D;NEGATIVE SQUARED SA;So;0;L;;;;;N;;;;; -1F190;SQUARE DJ;So;0;L; 0044 004A;;;;N;;;;; -1F200;SQUARE HIRAGANA HOKA;So;0;L; 307B 304B;;;;N;;;;; -1F210;SQUARED CJK UNIFIED IDEOGRAPH-624B;So;0;L; 624B;;;;N;;;;; -1F211;SQUARED CJK UNIFIED IDEOGRAPH-5B57;So;0;L; 5B57;;;;N;;;;; -1F212;SQUARED CJK UNIFIED IDEOGRAPH-53CC;So;0;L; 53CC;;;;N;;;;; -1F213;SQUARED KATAKANA DE;So;0;L; 30C7;;;;N;;;;; -1F214;SQUARED CJK UNIFIED IDEOGRAPH-4E8C;So;0;L; 4E8C;;;;N;;;;; -1F215;SQUARED CJK UNIFIED IDEOGRAPH-591A;So;0;L; 591A;;;;N;;;;; -1F216;SQUARED CJK UNIFIED IDEOGRAPH-89E3;So;0;L; 89E3;;;;N;;;;; -1F217;SQUARED CJK UNIFIED IDEOGRAPH-5929;So;0;L; 5929;;;;N;;;;; -1F218;SQUARED CJK UNIFIED IDEOGRAPH-4EA4;So;0;L; 4EA4;;;;N;;;;; -1F219;SQUARED CJK UNIFIED IDEOGRAPH-6620;So;0;L; 6620;;;;N;;;;; -1F21A;SQUARED CJK UNIFIED IDEOGRAPH-7121;So;0;L; 7121;;;;N;;;;; -1F21B;SQUARED CJK UNIFIED IDEOGRAPH-6599;So;0;L; 6599;;;;N;;;;; -1F21C;SQUARED CJK UNIFIED IDEOGRAPH-524D;So;0;L; 524D;;;;N;;;;; -1F21D;SQUARED CJK UNIFIED IDEOGRAPH-5F8C;So;0;L; 5F8C;;;;N;;;;; -1F21E;SQUARED CJK UNIFIED IDEOGRAPH-518D;So;0;L; 518D;;;;N;;;;; -1F21F;SQUARED CJK UNIFIED IDEOGRAPH-65B0;So;0;L; 65B0;;;;N;;;;; -1F220;SQUARED CJK UNIFIED IDEOGRAPH-521D;So;0;L; 521D;;;;N;;;;; -1F221;SQUARED CJK UNIFIED IDEOGRAPH-7D42;So;0;L; 7D42;;;;N;;;;; -1F222;SQUARED CJK UNIFIED IDEOGRAPH-751F;So;0;L; 751F;;;;N;;;;; -1F223;SQUARED CJK UNIFIED IDEOGRAPH-8CA9;So;0;L; 8CA9;;;;N;;;;; -1F224;SQUARED CJK UNIFIED IDEOGRAPH-58F0;So;0;L; 58F0;;;;N;;;;; -1F225;SQUARED CJK UNIFIED IDEOGRAPH-5439;So;0;L; 5439;;;;N;;;;; -1F226;SQUARED CJK UNIFIED IDEOGRAPH-6F14;So;0;L; 6F14;;;;N;;;;; -1F227;SQUARED CJK UNIFIED IDEOGRAPH-6295;So;0;L; 6295;;;;N;;;;; -1F228;SQUARED CJK UNIFIED IDEOGRAPH-6355;So;0;L; 6355;;;;N;;;;; -1F229;SQUARED CJK UNIFIED IDEOGRAPH-4E00;So;0;L; 4E00;;;;N;;;;; -1F22A;SQUARED CJK UNIFIED IDEOGRAPH-4E09;So;0;L; 4E09;;;;N;;;;; -1F22B;SQUARED CJK UNIFIED IDEOGRAPH-904A;So;0;L; 904A;;;;N;;;;; -1F22C;SQUARED CJK UNIFIED IDEOGRAPH-5DE6;So;0;L; 5DE6;;;;N;;;;; -1F22D;SQUARED CJK UNIFIED IDEOGRAPH-4E2D;So;0;L; 4E2D;;;;N;;;;; -1F22E;SQUARED CJK UNIFIED IDEOGRAPH-53F3;So;0;L; 53F3;;;;N;;;;; -1F22F;SQUARED CJK UNIFIED IDEOGRAPH-6307;So;0;L; 6307;;;;N;;;;; -1F230;SQUARED CJK UNIFIED IDEOGRAPH-8D70;So;0;L; 8D70;;;;N;;;;; -1F231;SQUARED CJK UNIFIED IDEOGRAPH-6253;So;0;L; 6253;;;;N;;;;; -1F240;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C;So;0;L; 3014 672C 3015;;;;N;;;;; -1F241;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E09;So;0;L; 3014 4E09 3015;;;;N;;;;; -1F242;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E8C;So;0;L; 3014 4E8C 3015;;;;N;;;;; -1F243;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-5B89;So;0;L; 3014 5B89 3015;;;;N;;;;; -1F244;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-70B9;So;0;L; 3014 70B9 3015;;;;N;;;;; -1F245;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6253;So;0;L; 3014 6253 3015;;;;N;;;;; -1F246;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-76D7;So;0;L; 3014 76D7 3015;;;;N;;;;; -1F247;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-52DD;So;0;L; 3014 52DD 3015;;;;N;;;;; -1F248;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557;So;0;L; 3014 6557 3015;;;;N;;;;; -20000;;Lo;0;L;;;;;N;;;;; -2A6D6;;Lo;0;L;;;;;N;;;;; -2A700;;Lo;0;L;;;;;N;;;;; -2B734;;Lo;0;L;;;;;N;;;;; -2F800;CJK COMPATIBILITY IDEOGRAPH-2F800;Lo;0;L;4E3D;;;;N;;;;; -2F801;CJK COMPATIBILITY IDEOGRAPH-2F801;Lo;0;L;4E38;;;;N;;;;; -2F802;CJK COMPATIBILITY IDEOGRAPH-2F802;Lo;0;L;4E41;;;;N;;;;; -2F803;CJK COMPATIBILITY IDEOGRAPH-2F803;Lo;0;L;20122;;;;N;;;;; -2F804;CJK COMPATIBILITY IDEOGRAPH-2F804;Lo;0;L;4F60;;;;N;;;;; -2F805;CJK COMPATIBILITY IDEOGRAPH-2F805;Lo;0;L;4FAE;;;;N;;;;; -2F806;CJK COMPATIBILITY IDEOGRAPH-2F806;Lo;0;L;4FBB;;;;N;;;;; -2F807;CJK COMPATIBILITY IDEOGRAPH-2F807;Lo;0;L;5002;;;;N;;;;; -2F808;CJK COMPATIBILITY IDEOGRAPH-2F808;Lo;0;L;507A;;;;N;;;;; -2F809;CJK COMPATIBILITY IDEOGRAPH-2F809;Lo;0;L;5099;;;;N;;;;; -2F80A;CJK COMPATIBILITY IDEOGRAPH-2F80A;Lo;0;L;50E7;;;;N;;;;; -2F80B;CJK COMPATIBILITY IDEOGRAPH-2F80B;Lo;0;L;50CF;;;;N;;;;; -2F80C;CJK COMPATIBILITY IDEOGRAPH-2F80C;Lo;0;L;349E;;;;N;;;;; -2F80D;CJK COMPATIBILITY IDEOGRAPH-2F80D;Lo;0;L;2063A;;;;N;;;;; -2F80E;CJK COMPATIBILITY IDEOGRAPH-2F80E;Lo;0;L;514D;;;;N;;;;; -2F80F;CJK COMPATIBILITY IDEOGRAPH-2F80F;Lo;0;L;5154;;;;N;;;;; -2F810;CJK COMPATIBILITY IDEOGRAPH-2F810;Lo;0;L;5164;;;;N;;;;; -2F811;CJK COMPATIBILITY IDEOGRAPH-2F811;Lo;0;L;5177;;;;N;;;;; -2F812;CJK COMPATIBILITY IDEOGRAPH-2F812;Lo;0;L;2051C;;;;N;;;;; -2F813;CJK COMPATIBILITY IDEOGRAPH-2F813;Lo;0;L;34B9;;;;N;;;;; -2F814;CJK COMPATIBILITY IDEOGRAPH-2F814;Lo;0;L;5167;;;;N;;;;; -2F815;CJK COMPATIBILITY IDEOGRAPH-2F815;Lo;0;L;518D;;;;N;;;;; -2F816;CJK COMPATIBILITY IDEOGRAPH-2F816;Lo;0;L;2054B;;;;N;;;;; -2F817;CJK COMPATIBILITY IDEOGRAPH-2F817;Lo;0;L;5197;;;;N;;;;; -2F818;CJK COMPATIBILITY IDEOGRAPH-2F818;Lo;0;L;51A4;;;;N;;;;; -2F819;CJK COMPATIBILITY IDEOGRAPH-2F819;Lo;0;L;4ECC;;;;N;;;;; -2F81A;CJK COMPATIBILITY IDEOGRAPH-2F81A;Lo;0;L;51AC;;;;N;;;;; -2F81B;CJK COMPATIBILITY IDEOGRAPH-2F81B;Lo;0;L;51B5;;;;N;;;;; -2F81C;CJK COMPATIBILITY IDEOGRAPH-2F81C;Lo;0;L;291DF;;;;N;;;;; -2F81D;CJK COMPATIBILITY IDEOGRAPH-2F81D;Lo;0;L;51F5;;;;N;;;;; -2F81E;CJK COMPATIBILITY IDEOGRAPH-2F81E;Lo;0;L;5203;;;;N;;;;; -2F81F;CJK COMPATIBILITY IDEOGRAPH-2F81F;Lo;0;L;34DF;;;;N;;;;; -2F820;CJK COMPATIBILITY IDEOGRAPH-2F820;Lo;0;L;523B;;;;N;;;;; -2F821;CJK COMPATIBILITY IDEOGRAPH-2F821;Lo;0;L;5246;;;;N;;;;; -2F822;CJK COMPATIBILITY IDEOGRAPH-2F822;Lo;0;L;5272;;;;N;;;;; -2F823;CJK COMPATIBILITY IDEOGRAPH-2F823;Lo;0;L;5277;;;;N;;;;; -2F824;CJK COMPATIBILITY IDEOGRAPH-2F824;Lo;0;L;3515;;;;N;;;;; -2F825;CJK COMPATIBILITY IDEOGRAPH-2F825;Lo;0;L;52C7;;;;N;;;;; -2F826;CJK COMPATIBILITY IDEOGRAPH-2F826;Lo;0;L;52C9;;;;N;;;;; -2F827;CJK COMPATIBILITY IDEOGRAPH-2F827;Lo;0;L;52E4;;;;N;;;;; -2F828;CJK COMPATIBILITY IDEOGRAPH-2F828;Lo;0;L;52FA;;;;N;;;;; -2F829;CJK COMPATIBILITY IDEOGRAPH-2F829;Lo;0;L;5305;;;;N;;;;; -2F82A;CJK COMPATIBILITY IDEOGRAPH-2F82A;Lo;0;L;5306;;;;N;;;;; -2F82B;CJK COMPATIBILITY IDEOGRAPH-2F82B;Lo;0;L;5317;;;;N;;;;; -2F82C;CJK COMPATIBILITY IDEOGRAPH-2F82C;Lo;0;L;5349;;;;N;;;;; -2F82D;CJK COMPATIBILITY IDEOGRAPH-2F82D;Lo;0;L;5351;;;;N;;;;; -2F82E;CJK COMPATIBILITY IDEOGRAPH-2F82E;Lo;0;L;535A;;;;N;;;;; -2F82F;CJK COMPATIBILITY IDEOGRAPH-2F82F;Lo;0;L;5373;;;;N;;;;; -2F830;CJK COMPATIBILITY IDEOGRAPH-2F830;Lo;0;L;537D;;;;N;;;;; -2F831;CJK COMPATIBILITY IDEOGRAPH-2F831;Lo;0;L;537F;;;;N;;;;; -2F832;CJK COMPATIBILITY IDEOGRAPH-2F832;Lo;0;L;537F;;;;N;;;;; -2F833;CJK COMPATIBILITY IDEOGRAPH-2F833;Lo;0;L;537F;;;;N;;;;; -2F834;CJK COMPATIBILITY IDEOGRAPH-2F834;Lo;0;L;20A2C;;;;N;;;;; -2F835;CJK COMPATIBILITY IDEOGRAPH-2F835;Lo;0;L;7070;;;;N;;;;; -2F836;CJK COMPATIBILITY IDEOGRAPH-2F836;Lo;0;L;53CA;;;;N;;;;; -2F837;CJK COMPATIBILITY IDEOGRAPH-2F837;Lo;0;L;53DF;;;;N;;;;; -2F838;CJK COMPATIBILITY IDEOGRAPH-2F838;Lo;0;L;20B63;;;;N;;;;; -2F839;CJK COMPATIBILITY IDEOGRAPH-2F839;Lo;0;L;53EB;;;;N;;;;; -2F83A;CJK COMPATIBILITY IDEOGRAPH-2F83A;Lo;0;L;53F1;;;;N;;;;; -2F83B;CJK COMPATIBILITY IDEOGRAPH-2F83B;Lo;0;L;5406;;;;N;;;;; -2F83C;CJK COMPATIBILITY IDEOGRAPH-2F83C;Lo;0;L;549E;;;;N;;;;; -2F83D;CJK COMPATIBILITY IDEOGRAPH-2F83D;Lo;0;L;5438;;;;N;;;;; -2F83E;CJK COMPATIBILITY IDEOGRAPH-2F83E;Lo;0;L;5448;;;;N;;;;; -2F83F;CJK COMPATIBILITY IDEOGRAPH-2F83F;Lo;0;L;5468;;;;N;;;;; -2F840;CJK COMPATIBILITY IDEOGRAPH-2F840;Lo;0;L;54A2;;;;N;;;;; -2F841;CJK COMPATIBILITY IDEOGRAPH-2F841;Lo;0;L;54F6;;;;N;;;;; -2F842;CJK COMPATIBILITY IDEOGRAPH-2F842;Lo;0;L;5510;;;;N;;;;; -2F843;CJK COMPATIBILITY IDEOGRAPH-2F843;Lo;0;L;5553;;;;N;;;;; -2F844;CJK COMPATIBILITY IDEOGRAPH-2F844;Lo;0;L;5563;;;;N;;;;; -2F845;CJK COMPATIBILITY IDEOGRAPH-2F845;Lo;0;L;5584;;;;N;;;;; -2F846;CJK COMPATIBILITY IDEOGRAPH-2F846;Lo;0;L;5584;;;;N;;;;; -2F847;CJK COMPATIBILITY IDEOGRAPH-2F847;Lo;0;L;5599;;;;N;;;;; -2F848;CJK COMPATIBILITY IDEOGRAPH-2F848;Lo;0;L;55AB;;;;N;;;;; -2F849;CJK COMPATIBILITY IDEOGRAPH-2F849;Lo;0;L;55B3;;;;N;;;;; -2F84A;CJK COMPATIBILITY IDEOGRAPH-2F84A;Lo;0;L;55C2;;;;N;;;;; -2F84B;CJK COMPATIBILITY IDEOGRAPH-2F84B;Lo;0;L;5716;;;;N;;;;; -2F84C;CJK COMPATIBILITY IDEOGRAPH-2F84C;Lo;0;L;5606;;;;N;;;;; -2F84D;CJK COMPATIBILITY IDEOGRAPH-2F84D;Lo;0;L;5717;;;;N;;;;; -2F84E;CJK COMPATIBILITY IDEOGRAPH-2F84E;Lo;0;L;5651;;;;N;;;;; -2F84F;CJK COMPATIBILITY IDEOGRAPH-2F84F;Lo;0;L;5674;;;;N;;;;; -2F850;CJK COMPATIBILITY IDEOGRAPH-2F850;Lo;0;L;5207;;;;N;;;;; -2F851;CJK COMPATIBILITY IDEOGRAPH-2F851;Lo;0;L;58EE;;;;N;;;;; -2F852;CJK COMPATIBILITY IDEOGRAPH-2F852;Lo;0;L;57CE;;;;N;;;;; -2F853;CJK COMPATIBILITY IDEOGRAPH-2F853;Lo;0;L;57F4;;;;N;;;;; -2F854;CJK COMPATIBILITY IDEOGRAPH-2F854;Lo;0;L;580D;;;;N;;;;; -2F855;CJK COMPATIBILITY IDEOGRAPH-2F855;Lo;0;L;578B;;;;N;;;;; -2F856;CJK COMPATIBILITY IDEOGRAPH-2F856;Lo;0;L;5832;;;;N;;;;; -2F857;CJK COMPATIBILITY IDEOGRAPH-2F857;Lo;0;L;5831;;;;N;;;;; -2F858;CJK COMPATIBILITY IDEOGRAPH-2F858;Lo;0;L;58AC;;;;N;;;;; -2F859;CJK COMPATIBILITY IDEOGRAPH-2F859;Lo;0;L;214E4;;;;N;;;;; -2F85A;CJK COMPATIBILITY IDEOGRAPH-2F85A;Lo;0;L;58F2;;;;N;;;;; -2F85B;CJK COMPATIBILITY IDEOGRAPH-2F85B;Lo;0;L;58F7;;;;N;;;;; -2F85C;CJK COMPATIBILITY IDEOGRAPH-2F85C;Lo;0;L;5906;;;;N;;;;; -2F85D;CJK COMPATIBILITY IDEOGRAPH-2F85D;Lo;0;L;591A;;;;N;;;;; -2F85E;CJK COMPATIBILITY IDEOGRAPH-2F85E;Lo;0;L;5922;;;;N;;;;; -2F85F;CJK COMPATIBILITY IDEOGRAPH-2F85F;Lo;0;L;5962;;;;N;;;;; -2F860;CJK COMPATIBILITY IDEOGRAPH-2F860;Lo;0;L;216A8;;;;N;;;;; -2F861;CJK COMPATIBILITY IDEOGRAPH-2F861;Lo;0;L;216EA;;;;N;;;;; -2F862;CJK COMPATIBILITY IDEOGRAPH-2F862;Lo;0;L;59EC;;;;N;;;;; -2F863;CJK COMPATIBILITY IDEOGRAPH-2F863;Lo;0;L;5A1B;;;;N;;;;; -2F864;CJK COMPATIBILITY IDEOGRAPH-2F864;Lo;0;L;5A27;;;;N;;;;; -2F865;CJK COMPATIBILITY IDEOGRAPH-2F865;Lo;0;L;59D8;;;;N;;;;; -2F866;CJK COMPATIBILITY IDEOGRAPH-2F866;Lo;0;L;5A66;;;;N;;;;; -2F867;CJK COMPATIBILITY IDEOGRAPH-2F867;Lo;0;L;36EE;;;;N;;;;; -2F868;CJK COMPATIBILITY IDEOGRAPH-2F868;Lo;0;L;36FC;;;;N;;;;; -2F869;CJK COMPATIBILITY IDEOGRAPH-2F869;Lo;0;L;5B08;;;;N;;;;; -2F86A;CJK COMPATIBILITY IDEOGRAPH-2F86A;Lo;0;L;5B3E;;;;N;;;;; -2F86B;CJK COMPATIBILITY IDEOGRAPH-2F86B;Lo;0;L;5B3E;;;;N;;;;; -2F86C;CJK COMPATIBILITY IDEOGRAPH-2F86C;Lo;0;L;219C8;;;;N;;;;; -2F86D;CJK COMPATIBILITY IDEOGRAPH-2F86D;Lo;0;L;5BC3;;;;N;;;;; -2F86E;CJK COMPATIBILITY IDEOGRAPH-2F86E;Lo;0;L;5BD8;;;;N;;;;; -2F86F;CJK COMPATIBILITY IDEOGRAPH-2F86F;Lo;0;L;5BE7;;;;N;;;;; -2F870;CJK COMPATIBILITY IDEOGRAPH-2F870;Lo;0;L;5BF3;;;;N;;;;; -2F871;CJK COMPATIBILITY IDEOGRAPH-2F871;Lo;0;L;21B18;;;;N;;;;; -2F872;CJK COMPATIBILITY IDEOGRAPH-2F872;Lo;0;L;5BFF;;;;N;;;;; -2F873;CJK COMPATIBILITY IDEOGRAPH-2F873;Lo;0;L;5C06;;;;N;;;;; -2F874;CJK COMPATIBILITY IDEOGRAPH-2F874;Lo;0;L;5F53;;;;N;;;;; -2F875;CJK COMPATIBILITY IDEOGRAPH-2F875;Lo;0;L;5C22;;;;N;;;;; -2F876;CJK COMPATIBILITY IDEOGRAPH-2F876;Lo;0;L;3781;;;;N;;;;; -2F877;CJK COMPATIBILITY IDEOGRAPH-2F877;Lo;0;L;5C60;;;;N;;;;; -2F878;CJK COMPATIBILITY IDEOGRAPH-2F878;Lo;0;L;5C6E;;;;N;;;;; -2F879;CJK COMPATIBILITY IDEOGRAPH-2F879;Lo;0;L;5CC0;;;;N;;;;; -2F87A;CJK COMPATIBILITY IDEOGRAPH-2F87A;Lo;0;L;5C8D;;;;N;;;;; -2F87B;CJK COMPATIBILITY IDEOGRAPH-2F87B;Lo;0;L;21DE4;;;;N;;;;; -2F87C;CJK COMPATIBILITY IDEOGRAPH-2F87C;Lo;0;L;5D43;;;;N;;;;; -2F87D;CJK COMPATIBILITY IDEOGRAPH-2F87D;Lo;0;L;21DE6;;;;N;;;;; -2F87E;CJK COMPATIBILITY IDEOGRAPH-2F87E;Lo;0;L;5D6E;;;;N;;;;; -2F87F;CJK COMPATIBILITY IDEOGRAPH-2F87F;Lo;0;L;5D6B;;;;N;;;;; -2F880;CJK COMPATIBILITY IDEOGRAPH-2F880;Lo;0;L;5D7C;;;;N;;;;; -2F881;CJK COMPATIBILITY IDEOGRAPH-2F881;Lo;0;L;5DE1;;;;N;;;;; -2F882;CJK COMPATIBILITY IDEOGRAPH-2F882;Lo;0;L;5DE2;;;;N;;;;; -2F883;CJK COMPATIBILITY IDEOGRAPH-2F883;Lo;0;L;382F;;;;N;;;;; -2F884;CJK COMPATIBILITY IDEOGRAPH-2F884;Lo;0;L;5DFD;;;;N;;;;; -2F885;CJK COMPATIBILITY IDEOGRAPH-2F885;Lo;0;L;5E28;;;;N;;;;; -2F886;CJK COMPATIBILITY IDEOGRAPH-2F886;Lo;0;L;5E3D;;;;N;;;;; -2F887;CJK COMPATIBILITY IDEOGRAPH-2F887;Lo;0;L;5E69;;;;N;;;;; -2F888;CJK COMPATIBILITY IDEOGRAPH-2F888;Lo;0;L;3862;;;;N;;;;; -2F889;CJK COMPATIBILITY IDEOGRAPH-2F889;Lo;0;L;22183;;;;N;;;;; -2F88A;CJK COMPATIBILITY IDEOGRAPH-2F88A;Lo;0;L;387C;;;;N;;;;; -2F88B;CJK COMPATIBILITY IDEOGRAPH-2F88B;Lo;0;L;5EB0;;;;N;;;;; -2F88C;CJK COMPATIBILITY IDEOGRAPH-2F88C;Lo;0;L;5EB3;;;;N;;;;; -2F88D;CJK COMPATIBILITY IDEOGRAPH-2F88D;Lo;0;L;5EB6;;;;N;;;;; -2F88E;CJK COMPATIBILITY IDEOGRAPH-2F88E;Lo;0;L;5ECA;;;;N;;;;; -2F88F;CJK COMPATIBILITY IDEOGRAPH-2F88F;Lo;0;L;2A392;;;;N;;;;; -2F890;CJK COMPATIBILITY IDEOGRAPH-2F890;Lo;0;L;5EFE;;;9;N;;;;; -2F891;CJK COMPATIBILITY IDEOGRAPH-2F891;Lo;0;L;22331;;;;N;;;;; -2F892;CJK COMPATIBILITY IDEOGRAPH-2F892;Lo;0;L;22331;;;;N;;;;; -2F893;CJK COMPATIBILITY IDEOGRAPH-2F893;Lo;0;L;8201;;;;N;;;;; -2F894;CJK COMPATIBILITY IDEOGRAPH-2F894;Lo;0;L;5F22;;;;N;;;;; -2F895;CJK COMPATIBILITY IDEOGRAPH-2F895;Lo;0;L;5F22;;;;N;;;;; -2F896;CJK COMPATIBILITY IDEOGRAPH-2F896;Lo;0;L;38C7;;;;N;;;;; -2F897;CJK COMPATIBILITY IDEOGRAPH-2F897;Lo;0;L;232B8;;;;N;;;;; -2F898;CJK COMPATIBILITY IDEOGRAPH-2F898;Lo;0;L;261DA;;;;N;;;;; -2F899;CJK COMPATIBILITY IDEOGRAPH-2F899;Lo;0;L;5F62;;;;N;;;;; -2F89A;CJK COMPATIBILITY IDEOGRAPH-2F89A;Lo;0;L;5F6B;;;;N;;;;; -2F89B;CJK COMPATIBILITY IDEOGRAPH-2F89B;Lo;0;L;38E3;;;;N;;;;; -2F89C;CJK COMPATIBILITY IDEOGRAPH-2F89C;Lo;0;L;5F9A;;;;N;;;;; -2F89D;CJK COMPATIBILITY IDEOGRAPH-2F89D;Lo;0;L;5FCD;;;;N;;;;; -2F89E;CJK COMPATIBILITY IDEOGRAPH-2F89E;Lo;0;L;5FD7;;;;N;;;;; -2F89F;CJK COMPATIBILITY IDEOGRAPH-2F89F;Lo;0;L;5FF9;;;;N;;;;; -2F8A0;CJK COMPATIBILITY IDEOGRAPH-2F8A0;Lo;0;L;6081;;;;N;;;;; -2F8A1;CJK COMPATIBILITY IDEOGRAPH-2F8A1;Lo;0;L;393A;;;;N;;;;; -2F8A2;CJK COMPATIBILITY IDEOGRAPH-2F8A2;Lo;0;L;391C;;;;N;;;;; -2F8A3;CJK COMPATIBILITY IDEOGRAPH-2F8A3;Lo;0;L;6094;;;;N;;;;; -2F8A4;CJK COMPATIBILITY IDEOGRAPH-2F8A4;Lo;0;L;226D4;;;;N;;;;; -2F8A5;CJK COMPATIBILITY IDEOGRAPH-2F8A5;Lo;0;L;60C7;;;;N;;;;; -2F8A6;CJK COMPATIBILITY IDEOGRAPH-2F8A6;Lo;0;L;6148;;;;N;;;;; -2F8A7;CJK COMPATIBILITY IDEOGRAPH-2F8A7;Lo;0;L;614C;;;;N;;;;; -2F8A8;CJK COMPATIBILITY IDEOGRAPH-2F8A8;Lo;0;L;614E;;;;N;;;;; -2F8A9;CJK COMPATIBILITY IDEOGRAPH-2F8A9;Lo;0;L;614C;;;;N;;;;; -2F8AA;CJK COMPATIBILITY IDEOGRAPH-2F8AA;Lo;0;L;617A;;;;N;;;;; -2F8AB;CJK COMPATIBILITY IDEOGRAPH-2F8AB;Lo;0;L;618E;;;;N;;;;; -2F8AC;CJK COMPATIBILITY IDEOGRAPH-2F8AC;Lo;0;L;61B2;;;;N;;;;; -2F8AD;CJK COMPATIBILITY IDEOGRAPH-2F8AD;Lo;0;L;61A4;;;;N;;;;; -2F8AE;CJK COMPATIBILITY IDEOGRAPH-2F8AE;Lo;0;L;61AF;;;;N;;;;; -2F8AF;CJK COMPATIBILITY IDEOGRAPH-2F8AF;Lo;0;L;61DE;;;;N;;;;; -2F8B0;CJK COMPATIBILITY IDEOGRAPH-2F8B0;Lo;0;L;61F2;;;;N;;;;; -2F8B1;CJK COMPATIBILITY IDEOGRAPH-2F8B1;Lo;0;L;61F6;;;;N;;;;; -2F8B2;CJK COMPATIBILITY IDEOGRAPH-2F8B2;Lo;0;L;6210;;;;N;;;;; -2F8B3;CJK COMPATIBILITY IDEOGRAPH-2F8B3;Lo;0;L;621B;;;;N;;;;; -2F8B4;CJK COMPATIBILITY IDEOGRAPH-2F8B4;Lo;0;L;625D;;;;N;;;;; -2F8B5;CJK COMPATIBILITY IDEOGRAPH-2F8B5;Lo;0;L;62B1;;;;N;;;;; -2F8B6;CJK COMPATIBILITY IDEOGRAPH-2F8B6;Lo;0;L;62D4;;;;N;;;;; -2F8B7;CJK COMPATIBILITY IDEOGRAPH-2F8B7;Lo;0;L;6350;;;;N;;;;; -2F8B8;CJK COMPATIBILITY IDEOGRAPH-2F8B8;Lo;0;L;22B0C;;;;N;;;;; -2F8B9;CJK COMPATIBILITY IDEOGRAPH-2F8B9;Lo;0;L;633D;;;;N;;;;; -2F8BA;CJK COMPATIBILITY IDEOGRAPH-2F8BA;Lo;0;L;62FC;;;;N;;;;; -2F8BB;CJK COMPATIBILITY IDEOGRAPH-2F8BB;Lo;0;L;6368;;;;N;;;;; -2F8BC;CJK COMPATIBILITY IDEOGRAPH-2F8BC;Lo;0;L;6383;;;;N;;;;; -2F8BD;CJK COMPATIBILITY IDEOGRAPH-2F8BD;Lo;0;L;63E4;;;;N;;;;; -2F8BE;CJK COMPATIBILITY IDEOGRAPH-2F8BE;Lo;0;L;22BF1;;;;N;;;;; -2F8BF;CJK COMPATIBILITY IDEOGRAPH-2F8BF;Lo;0;L;6422;;;;N;;;;; -2F8C0;CJK COMPATIBILITY IDEOGRAPH-2F8C0;Lo;0;L;63C5;;;;N;;;;; -2F8C1;CJK COMPATIBILITY IDEOGRAPH-2F8C1;Lo;0;L;63A9;;;;N;;;;; -2F8C2;CJK COMPATIBILITY IDEOGRAPH-2F8C2;Lo;0;L;3A2E;;;;N;;;;; -2F8C3;CJK COMPATIBILITY IDEOGRAPH-2F8C3;Lo;0;L;6469;;;;N;;;;; -2F8C4;CJK COMPATIBILITY IDEOGRAPH-2F8C4;Lo;0;L;647E;;;;N;;;;; -2F8C5;CJK COMPATIBILITY IDEOGRAPH-2F8C5;Lo;0;L;649D;;;;N;;;;; -2F8C6;CJK COMPATIBILITY IDEOGRAPH-2F8C6;Lo;0;L;6477;;;;N;;;;; -2F8C7;CJK COMPATIBILITY IDEOGRAPH-2F8C7;Lo;0;L;3A6C;;;;N;;;;; -2F8C8;CJK COMPATIBILITY IDEOGRAPH-2F8C8;Lo;0;L;654F;;;;N;;;;; -2F8C9;CJK COMPATIBILITY IDEOGRAPH-2F8C9;Lo;0;L;656C;;;;N;;;;; -2F8CA;CJK COMPATIBILITY IDEOGRAPH-2F8CA;Lo;0;L;2300A;;;;N;;;;; -2F8CB;CJK COMPATIBILITY IDEOGRAPH-2F8CB;Lo;0;L;65E3;;;;N;;;;; -2F8CC;CJK COMPATIBILITY IDEOGRAPH-2F8CC;Lo;0;L;66F8;;;;N;;;;; -2F8CD;CJK COMPATIBILITY IDEOGRAPH-2F8CD;Lo;0;L;6649;;;;N;;;;; -2F8CE;CJK COMPATIBILITY IDEOGRAPH-2F8CE;Lo;0;L;3B19;;;;N;;;;; -2F8CF;CJK COMPATIBILITY IDEOGRAPH-2F8CF;Lo;0;L;6691;;;;N;;;;; -2F8D0;CJK COMPATIBILITY IDEOGRAPH-2F8D0;Lo;0;L;3B08;;;;N;;;;; -2F8D1;CJK COMPATIBILITY IDEOGRAPH-2F8D1;Lo;0;L;3AE4;;;;N;;;;; -2F8D2;CJK COMPATIBILITY IDEOGRAPH-2F8D2;Lo;0;L;5192;;;;N;;;;; -2F8D3;CJK COMPATIBILITY IDEOGRAPH-2F8D3;Lo;0;L;5195;;;;N;;;;; -2F8D4;CJK COMPATIBILITY IDEOGRAPH-2F8D4;Lo;0;L;6700;;;;N;;;;; -2F8D5;CJK COMPATIBILITY IDEOGRAPH-2F8D5;Lo;0;L;669C;;;;N;;;;; -2F8D6;CJK COMPATIBILITY IDEOGRAPH-2F8D6;Lo;0;L;80AD;;;;N;;;;; -2F8D7;CJK COMPATIBILITY IDEOGRAPH-2F8D7;Lo;0;L;43D9;;;;N;;;;; -2F8D8;CJK COMPATIBILITY IDEOGRAPH-2F8D8;Lo;0;L;6717;;;;N;;;;; -2F8D9;CJK COMPATIBILITY IDEOGRAPH-2F8D9;Lo;0;L;671B;;;;N;;;;; -2F8DA;CJK COMPATIBILITY IDEOGRAPH-2F8DA;Lo;0;L;6721;;;;N;;;;; -2F8DB;CJK COMPATIBILITY IDEOGRAPH-2F8DB;Lo;0;L;675E;;;;N;;;;; -2F8DC;CJK COMPATIBILITY IDEOGRAPH-2F8DC;Lo;0;L;6753;;;;N;;;;; -2F8DD;CJK COMPATIBILITY IDEOGRAPH-2F8DD;Lo;0;L;233C3;;;;N;;;;; -2F8DE;CJK COMPATIBILITY IDEOGRAPH-2F8DE;Lo;0;L;3B49;;;;N;;;;; -2F8DF;CJK COMPATIBILITY IDEOGRAPH-2F8DF;Lo;0;L;67FA;;;;N;;;;; -2F8E0;CJK COMPATIBILITY IDEOGRAPH-2F8E0;Lo;0;L;6785;;;;N;;;;; -2F8E1;CJK COMPATIBILITY IDEOGRAPH-2F8E1;Lo;0;L;6852;;;;N;;;;; -2F8E2;CJK COMPATIBILITY IDEOGRAPH-2F8E2;Lo;0;L;6885;;;;N;;;;; -2F8E3;CJK COMPATIBILITY IDEOGRAPH-2F8E3;Lo;0;L;2346D;;;;N;;;;; -2F8E4;CJK COMPATIBILITY IDEOGRAPH-2F8E4;Lo;0;L;688E;;;;N;;;;; -2F8E5;CJK COMPATIBILITY IDEOGRAPH-2F8E5;Lo;0;L;681F;;;;N;;;;; -2F8E6;CJK COMPATIBILITY IDEOGRAPH-2F8E6;Lo;0;L;6914;;;;N;;;;; -2F8E7;CJK COMPATIBILITY IDEOGRAPH-2F8E7;Lo;0;L;3B9D;;;;N;;;;; -2F8E8;CJK COMPATIBILITY IDEOGRAPH-2F8E8;Lo;0;L;6942;;;;N;;;;; -2F8E9;CJK COMPATIBILITY IDEOGRAPH-2F8E9;Lo;0;L;69A3;;;;N;;;;; -2F8EA;CJK COMPATIBILITY IDEOGRAPH-2F8EA;Lo;0;L;69EA;;;;N;;;;; -2F8EB;CJK COMPATIBILITY IDEOGRAPH-2F8EB;Lo;0;L;6AA8;;;;N;;;;; -2F8EC;CJK COMPATIBILITY IDEOGRAPH-2F8EC;Lo;0;L;236A3;;;;N;;;;; -2F8ED;CJK COMPATIBILITY IDEOGRAPH-2F8ED;Lo;0;L;6ADB;;;;N;;;;; -2F8EE;CJK COMPATIBILITY IDEOGRAPH-2F8EE;Lo;0;L;3C18;;;;N;;;;; -2F8EF;CJK COMPATIBILITY IDEOGRAPH-2F8EF;Lo;0;L;6B21;;;;N;;;;; -2F8F0;CJK COMPATIBILITY IDEOGRAPH-2F8F0;Lo;0;L;238A7;;;;N;;;;; -2F8F1;CJK COMPATIBILITY IDEOGRAPH-2F8F1;Lo;0;L;6B54;;;;N;;;;; -2F8F2;CJK COMPATIBILITY IDEOGRAPH-2F8F2;Lo;0;L;3C4E;;;;N;;;;; -2F8F3;CJK COMPATIBILITY IDEOGRAPH-2F8F3;Lo;0;L;6B72;;;;N;;;;; -2F8F4;CJK COMPATIBILITY IDEOGRAPH-2F8F4;Lo;0;L;6B9F;;;;N;;;;; -2F8F5;CJK COMPATIBILITY IDEOGRAPH-2F8F5;Lo;0;L;6BBA;;;;N;;;;; -2F8F6;CJK COMPATIBILITY IDEOGRAPH-2F8F6;Lo;0;L;6BBB;;;;N;;;;; -2F8F7;CJK COMPATIBILITY IDEOGRAPH-2F8F7;Lo;0;L;23A8D;;;;N;;;;; -2F8F8;CJK COMPATIBILITY IDEOGRAPH-2F8F8;Lo;0;L;21D0B;;;;N;;;;; -2F8F9;CJK COMPATIBILITY IDEOGRAPH-2F8F9;Lo;0;L;23AFA;;;;N;;;;; -2F8FA;CJK COMPATIBILITY IDEOGRAPH-2F8FA;Lo;0;L;6C4E;;;;N;;;;; -2F8FB;CJK COMPATIBILITY IDEOGRAPH-2F8FB;Lo;0;L;23CBC;;;;N;;;;; -2F8FC;CJK COMPATIBILITY IDEOGRAPH-2F8FC;Lo;0;L;6CBF;;;;N;;;;; -2F8FD;CJK COMPATIBILITY IDEOGRAPH-2F8FD;Lo;0;L;6CCD;;;;N;;;;; -2F8FE;CJK COMPATIBILITY IDEOGRAPH-2F8FE;Lo;0;L;6C67;;;;N;;;;; -2F8FF;CJK COMPATIBILITY IDEOGRAPH-2F8FF;Lo;0;L;6D16;;;;N;;;;; -2F900;CJK COMPATIBILITY IDEOGRAPH-2F900;Lo;0;L;6D3E;;;;N;;;;; -2F901;CJK COMPATIBILITY IDEOGRAPH-2F901;Lo;0;L;6D77;;;;N;;;;; -2F902;CJK COMPATIBILITY IDEOGRAPH-2F902;Lo;0;L;6D41;;;;N;;;;; -2F903;CJK COMPATIBILITY IDEOGRAPH-2F903;Lo;0;L;6D69;;;;N;;;;; -2F904;CJK COMPATIBILITY IDEOGRAPH-2F904;Lo;0;L;6D78;;;;N;;;;; -2F905;CJK COMPATIBILITY IDEOGRAPH-2F905;Lo;0;L;6D85;;;;N;;;;; -2F906;CJK COMPATIBILITY IDEOGRAPH-2F906;Lo;0;L;23D1E;;;;N;;;;; -2F907;CJK COMPATIBILITY IDEOGRAPH-2F907;Lo;0;L;6D34;;;;N;;;;; -2F908;CJK COMPATIBILITY IDEOGRAPH-2F908;Lo;0;L;6E2F;;;;N;;;;; -2F909;CJK COMPATIBILITY IDEOGRAPH-2F909;Lo;0;L;6E6E;;;;N;;;;; -2F90A;CJK COMPATIBILITY IDEOGRAPH-2F90A;Lo;0;L;3D33;;;;N;;;;; -2F90B;CJK COMPATIBILITY IDEOGRAPH-2F90B;Lo;0;L;6ECB;;;;N;;;;; -2F90C;CJK COMPATIBILITY IDEOGRAPH-2F90C;Lo;0;L;6EC7;;;;N;;;;; -2F90D;CJK COMPATIBILITY IDEOGRAPH-2F90D;Lo;0;L;23ED1;;;;N;;;;; -2F90E;CJK COMPATIBILITY IDEOGRAPH-2F90E;Lo;0;L;6DF9;;;;N;;;;; -2F90F;CJK COMPATIBILITY IDEOGRAPH-2F90F;Lo;0;L;6F6E;;;;N;;;;; -2F910;CJK COMPATIBILITY IDEOGRAPH-2F910;Lo;0;L;23F5E;;;;N;;;;; -2F911;CJK COMPATIBILITY IDEOGRAPH-2F911;Lo;0;L;23F8E;;;;N;;;;; -2F912;CJK COMPATIBILITY IDEOGRAPH-2F912;Lo;0;L;6FC6;;;;N;;;;; -2F913;CJK COMPATIBILITY IDEOGRAPH-2F913;Lo;0;L;7039;;;;N;;;;; -2F914;CJK COMPATIBILITY IDEOGRAPH-2F914;Lo;0;L;701E;;;;N;;;;; -2F915;CJK COMPATIBILITY IDEOGRAPH-2F915;Lo;0;L;701B;;;;N;;;;; -2F916;CJK COMPATIBILITY IDEOGRAPH-2F916;Lo;0;L;3D96;;;;N;;;;; -2F917;CJK COMPATIBILITY IDEOGRAPH-2F917;Lo;0;L;704A;;;;N;;;;; -2F918;CJK COMPATIBILITY IDEOGRAPH-2F918;Lo;0;L;707D;;;;N;;;;; -2F919;CJK COMPATIBILITY IDEOGRAPH-2F919;Lo;0;L;7077;;;;N;;;;; -2F91A;CJK COMPATIBILITY IDEOGRAPH-2F91A;Lo;0;L;70AD;;;;N;;;;; -2F91B;CJK COMPATIBILITY IDEOGRAPH-2F91B;Lo;0;L;20525;;;;N;;;;; -2F91C;CJK COMPATIBILITY IDEOGRAPH-2F91C;Lo;0;L;7145;;;;N;;;;; -2F91D;CJK COMPATIBILITY IDEOGRAPH-2F91D;Lo;0;L;24263;;;;N;;;;; -2F91E;CJK COMPATIBILITY IDEOGRAPH-2F91E;Lo;0;L;719C;;;;N;;;;; -2F91F;CJK COMPATIBILITY IDEOGRAPH-2F91F;Lo;0;L;243AB;;;;N;;;;; -2F920;CJK COMPATIBILITY IDEOGRAPH-2F920;Lo;0;L;7228;;;;N;;;;; -2F921;CJK COMPATIBILITY IDEOGRAPH-2F921;Lo;0;L;7235;;;;N;;;;; -2F922;CJK COMPATIBILITY IDEOGRAPH-2F922;Lo;0;L;7250;;;;N;;;;; -2F923;CJK COMPATIBILITY IDEOGRAPH-2F923;Lo;0;L;24608;;;;N;;;;; -2F924;CJK COMPATIBILITY IDEOGRAPH-2F924;Lo;0;L;7280;;;;N;;;;; -2F925;CJK COMPATIBILITY IDEOGRAPH-2F925;Lo;0;L;7295;;;;N;;;;; -2F926;CJK COMPATIBILITY IDEOGRAPH-2F926;Lo;0;L;24735;;;;N;;;;; -2F927;CJK COMPATIBILITY IDEOGRAPH-2F927;Lo;0;L;24814;;;;N;;;;; -2F928;CJK COMPATIBILITY IDEOGRAPH-2F928;Lo;0;L;737A;;;;N;;;;; -2F929;CJK COMPATIBILITY IDEOGRAPH-2F929;Lo;0;L;738B;;;;N;;;;; -2F92A;CJK COMPATIBILITY IDEOGRAPH-2F92A;Lo;0;L;3EAC;;;;N;;;;; -2F92B;CJK COMPATIBILITY IDEOGRAPH-2F92B;Lo;0;L;73A5;;;;N;;;;; -2F92C;CJK COMPATIBILITY IDEOGRAPH-2F92C;Lo;0;L;3EB8;;;;N;;;;; -2F92D;CJK COMPATIBILITY IDEOGRAPH-2F92D;Lo;0;L;3EB8;;;;N;;;;; -2F92E;CJK COMPATIBILITY IDEOGRAPH-2F92E;Lo;0;L;7447;;;;N;;;;; -2F92F;CJK COMPATIBILITY IDEOGRAPH-2F92F;Lo;0;L;745C;;;;N;;;;; -2F930;CJK COMPATIBILITY IDEOGRAPH-2F930;Lo;0;L;7471;;;;N;;;;; -2F931;CJK COMPATIBILITY IDEOGRAPH-2F931;Lo;0;L;7485;;;;N;;;;; -2F932;CJK COMPATIBILITY IDEOGRAPH-2F932;Lo;0;L;74CA;;;;N;;;;; -2F933;CJK COMPATIBILITY IDEOGRAPH-2F933;Lo;0;L;3F1B;;;;N;;;;; -2F934;CJK COMPATIBILITY IDEOGRAPH-2F934;Lo;0;L;7524;;;;N;;;;; -2F935;CJK COMPATIBILITY IDEOGRAPH-2F935;Lo;0;L;24C36;;;;N;;;;; -2F936;CJK COMPATIBILITY IDEOGRAPH-2F936;Lo;0;L;753E;;;;N;;;;; -2F937;CJK COMPATIBILITY IDEOGRAPH-2F937;Lo;0;L;24C92;;;;N;;;;; -2F938;CJK COMPATIBILITY IDEOGRAPH-2F938;Lo;0;L;7570;;;;N;;;;; -2F939;CJK COMPATIBILITY IDEOGRAPH-2F939;Lo;0;L;2219F;;;;N;;;;; -2F93A;CJK COMPATIBILITY IDEOGRAPH-2F93A;Lo;0;L;7610;;;;N;;;;; -2F93B;CJK COMPATIBILITY IDEOGRAPH-2F93B;Lo;0;L;24FA1;;;;N;;;;; -2F93C;CJK COMPATIBILITY IDEOGRAPH-2F93C;Lo;0;L;24FB8;;;;N;;;;; -2F93D;CJK COMPATIBILITY IDEOGRAPH-2F93D;Lo;0;L;25044;;;;N;;;;; -2F93E;CJK COMPATIBILITY IDEOGRAPH-2F93E;Lo;0;L;3FFC;;;;N;;;;; -2F93F;CJK COMPATIBILITY IDEOGRAPH-2F93F;Lo;0;L;4008;;;;N;;;;; -2F940;CJK COMPATIBILITY IDEOGRAPH-2F940;Lo;0;L;76F4;;;;N;;;;; -2F941;CJK COMPATIBILITY IDEOGRAPH-2F941;Lo;0;L;250F3;;;;N;;;;; -2F942;CJK COMPATIBILITY IDEOGRAPH-2F942;Lo;0;L;250F2;;;;N;;;;; -2F943;CJK COMPATIBILITY IDEOGRAPH-2F943;Lo;0;L;25119;;;;N;;;;; -2F944;CJK COMPATIBILITY IDEOGRAPH-2F944;Lo;0;L;25133;;;;N;;;;; -2F945;CJK COMPATIBILITY IDEOGRAPH-2F945;Lo;0;L;771E;;;;N;;;;; -2F946;CJK COMPATIBILITY IDEOGRAPH-2F946;Lo;0;L;771F;;;;N;;;;; -2F947;CJK COMPATIBILITY IDEOGRAPH-2F947;Lo;0;L;771F;;;;N;;;;; -2F948;CJK COMPATIBILITY IDEOGRAPH-2F948;Lo;0;L;774A;;;;N;;;;; -2F949;CJK COMPATIBILITY IDEOGRAPH-2F949;Lo;0;L;4039;;;;N;;;;; -2F94A;CJK COMPATIBILITY IDEOGRAPH-2F94A;Lo;0;L;778B;;;;N;;;;; -2F94B;CJK COMPATIBILITY IDEOGRAPH-2F94B;Lo;0;L;4046;;;;N;;;;; -2F94C;CJK COMPATIBILITY IDEOGRAPH-2F94C;Lo;0;L;4096;;;;N;;;;; -2F94D;CJK COMPATIBILITY IDEOGRAPH-2F94D;Lo;0;L;2541D;;;;N;;;;; -2F94E;CJK COMPATIBILITY IDEOGRAPH-2F94E;Lo;0;L;784E;;;;N;;;;; -2F94F;CJK COMPATIBILITY IDEOGRAPH-2F94F;Lo;0;L;788C;;;;N;;;;; -2F950;CJK COMPATIBILITY IDEOGRAPH-2F950;Lo;0;L;78CC;;;;N;;;;; -2F951;CJK COMPATIBILITY IDEOGRAPH-2F951;Lo;0;L;40E3;;;;N;;;;; -2F952;CJK COMPATIBILITY IDEOGRAPH-2F952;Lo;0;L;25626;;;;N;;;;; -2F953;CJK COMPATIBILITY IDEOGRAPH-2F953;Lo;0;L;7956;;;;N;;;;; -2F954;CJK COMPATIBILITY IDEOGRAPH-2F954;Lo;0;L;2569A;;;;N;;;;; -2F955;CJK COMPATIBILITY IDEOGRAPH-2F955;Lo;0;L;256C5;;;;N;;;;; -2F956;CJK COMPATIBILITY IDEOGRAPH-2F956;Lo;0;L;798F;;;;N;;;;; -2F957;CJK COMPATIBILITY IDEOGRAPH-2F957;Lo;0;L;79EB;;;;N;;;;; -2F958;CJK COMPATIBILITY IDEOGRAPH-2F958;Lo;0;L;412F;;;;N;;;;; -2F959;CJK COMPATIBILITY IDEOGRAPH-2F959;Lo;0;L;7A40;;;;N;;;;; -2F95A;CJK COMPATIBILITY IDEOGRAPH-2F95A;Lo;0;L;7A4A;;;;N;;;;; -2F95B;CJK COMPATIBILITY IDEOGRAPH-2F95B;Lo;0;L;7A4F;;;;N;;;;; -2F95C;CJK COMPATIBILITY IDEOGRAPH-2F95C;Lo;0;L;2597C;;;;N;;;;; -2F95D;CJK COMPATIBILITY IDEOGRAPH-2F95D;Lo;0;L;25AA7;;;;N;;;;; -2F95E;CJK COMPATIBILITY IDEOGRAPH-2F95E;Lo;0;L;25AA7;;;;N;;;;; -2F95F;CJK COMPATIBILITY IDEOGRAPH-2F95F;Lo;0;L;7AEE;;;;N;;;;; -2F960;CJK COMPATIBILITY IDEOGRAPH-2F960;Lo;0;L;4202;;;;N;;;;; -2F961;CJK COMPATIBILITY IDEOGRAPH-2F961;Lo;0;L;25BAB;;;;N;;;;; -2F962;CJK COMPATIBILITY IDEOGRAPH-2F962;Lo;0;L;7BC6;;;;N;;;;; -2F963;CJK COMPATIBILITY IDEOGRAPH-2F963;Lo;0;L;7BC9;;;;N;;;;; -2F964;CJK COMPATIBILITY IDEOGRAPH-2F964;Lo;0;L;4227;;;;N;;;;; -2F965;CJK COMPATIBILITY IDEOGRAPH-2F965;Lo;0;L;25C80;;;;N;;;;; -2F966;CJK COMPATIBILITY IDEOGRAPH-2F966;Lo;0;L;7CD2;;;;N;;;;; -2F967;CJK COMPATIBILITY IDEOGRAPH-2F967;Lo;0;L;42A0;;;;N;;;;; -2F968;CJK COMPATIBILITY IDEOGRAPH-2F968;Lo;0;L;7CE8;;;;N;;;;; -2F969;CJK COMPATIBILITY IDEOGRAPH-2F969;Lo;0;L;7CE3;;;;N;;;;; -2F96A;CJK COMPATIBILITY IDEOGRAPH-2F96A;Lo;0;L;7D00;;;;N;;;;; -2F96B;CJK COMPATIBILITY IDEOGRAPH-2F96B;Lo;0;L;25F86;;;;N;;;;; -2F96C;CJK COMPATIBILITY IDEOGRAPH-2F96C;Lo;0;L;7D63;;;;N;;;;; -2F96D;CJK COMPATIBILITY IDEOGRAPH-2F96D;Lo;0;L;4301;;;;N;;;;; -2F96E;CJK COMPATIBILITY IDEOGRAPH-2F96E;Lo;0;L;7DC7;;;;N;;;;; -2F96F;CJK COMPATIBILITY IDEOGRAPH-2F96F;Lo;0;L;7E02;;;;N;;;;; -2F970;CJK COMPATIBILITY IDEOGRAPH-2F970;Lo;0;L;7E45;;;;N;;;;; -2F971;CJK COMPATIBILITY IDEOGRAPH-2F971;Lo;0;L;4334;;;;N;;;;; -2F972;CJK COMPATIBILITY IDEOGRAPH-2F972;Lo;0;L;26228;;;;N;;;;; -2F973;CJK COMPATIBILITY IDEOGRAPH-2F973;Lo;0;L;26247;;;;N;;;;; -2F974;CJK COMPATIBILITY IDEOGRAPH-2F974;Lo;0;L;4359;;;;N;;;;; -2F975;CJK COMPATIBILITY IDEOGRAPH-2F975;Lo;0;L;262D9;;;;N;;;;; -2F976;CJK COMPATIBILITY IDEOGRAPH-2F976;Lo;0;L;7F7A;;;;N;;;;; -2F977;CJK COMPATIBILITY IDEOGRAPH-2F977;Lo;0;L;2633E;;;;N;;;;; -2F978;CJK COMPATIBILITY IDEOGRAPH-2F978;Lo;0;L;7F95;;;;N;;;;; -2F979;CJK COMPATIBILITY IDEOGRAPH-2F979;Lo;0;L;7FFA;;;;N;;;;; -2F97A;CJK COMPATIBILITY IDEOGRAPH-2F97A;Lo;0;L;8005;;;;N;;;;; -2F97B;CJK COMPATIBILITY IDEOGRAPH-2F97B;Lo;0;L;264DA;;;;N;;;;; -2F97C;CJK COMPATIBILITY IDEOGRAPH-2F97C;Lo;0;L;26523;;;;N;;;;; -2F97D;CJK COMPATIBILITY IDEOGRAPH-2F97D;Lo;0;L;8060;;;;N;;;;; -2F97E;CJK COMPATIBILITY IDEOGRAPH-2F97E;Lo;0;L;265A8;;;;N;;;;; -2F97F;CJK COMPATIBILITY IDEOGRAPH-2F97F;Lo;0;L;8070;;;;N;;;;; -2F980;CJK COMPATIBILITY IDEOGRAPH-2F980;Lo;0;L;2335F;;;;N;;;;; -2F981;CJK COMPATIBILITY IDEOGRAPH-2F981;Lo;0;L;43D5;;;;N;;;;; -2F982;CJK COMPATIBILITY IDEOGRAPH-2F982;Lo;0;L;80B2;;;;N;;;;; -2F983;CJK COMPATIBILITY IDEOGRAPH-2F983;Lo;0;L;8103;;;;N;;;;; -2F984;CJK COMPATIBILITY IDEOGRAPH-2F984;Lo;0;L;440B;;;;N;;;;; -2F985;CJK COMPATIBILITY IDEOGRAPH-2F985;Lo;0;L;813E;;;;N;;;;; -2F986;CJK COMPATIBILITY IDEOGRAPH-2F986;Lo;0;L;5AB5;;;;N;;;;; -2F987;CJK COMPATIBILITY IDEOGRAPH-2F987;Lo;0;L;267A7;;;;N;;;;; -2F988;CJK COMPATIBILITY IDEOGRAPH-2F988;Lo;0;L;267B5;;;;N;;;;; -2F989;CJK COMPATIBILITY IDEOGRAPH-2F989;Lo;0;L;23393;;;;N;;;;; -2F98A;CJK COMPATIBILITY IDEOGRAPH-2F98A;Lo;0;L;2339C;;;;N;;;;; -2F98B;CJK COMPATIBILITY IDEOGRAPH-2F98B;Lo;0;L;8201;;;;N;;;;; -2F98C;CJK COMPATIBILITY IDEOGRAPH-2F98C;Lo;0;L;8204;;;;N;;;;; -2F98D;CJK COMPATIBILITY IDEOGRAPH-2F98D;Lo;0;L;8F9E;;;;N;;;;; -2F98E;CJK COMPATIBILITY IDEOGRAPH-2F98E;Lo;0;L;446B;;;;N;;;;; -2F98F;CJK COMPATIBILITY IDEOGRAPH-2F98F;Lo;0;L;8291;;;;N;;;;; -2F990;CJK COMPATIBILITY IDEOGRAPH-2F990;Lo;0;L;828B;;;;N;;;;; -2F991;CJK COMPATIBILITY IDEOGRAPH-2F991;Lo;0;L;829D;;;;N;;;;; -2F992;CJK COMPATIBILITY IDEOGRAPH-2F992;Lo;0;L;52B3;;;;N;;;;; -2F993;CJK COMPATIBILITY IDEOGRAPH-2F993;Lo;0;L;82B1;;;;N;;;;; -2F994;CJK COMPATIBILITY IDEOGRAPH-2F994;Lo;0;L;82B3;;;;N;;;;; -2F995;CJK COMPATIBILITY IDEOGRAPH-2F995;Lo;0;L;82BD;;;;N;;;;; -2F996;CJK COMPATIBILITY IDEOGRAPH-2F996;Lo;0;L;82E6;;;;N;;;;; -2F997;CJK COMPATIBILITY IDEOGRAPH-2F997;Lo;0;L;26B3C;;;;N;;;;; -2F998;CJK COMPATIBILITY IDEOGRAPH-2F998;Lo;0;L;82E5;;;;N;;;;; -2F999;CJK COMPATIBILITY IDEOGRAPH-2F999;Lo;0;L;831D;;;;N;;;;; -2F99A;CJK COMPATIBILITY IDEOGRAPH-2F99A;Lo;0;L;8363;;;;N;;;;; -2F99B;CJK COMPATIBILITY IDEOGRAPH-2F99B;Lo;0;L;83AD;;;;N;;;;; -2F99C;CJK COMPATIBILITY IDEOGRAPH-2F99C;Lo;0;L;8323;;;;N;;;;; -2F99D;CJK COMPATIBILITY IDEOGRAPH-2F99D;Lo;0;L;83BD;;;;N;;;;; -2F99E;CJK COMPATIBILITY IDEOGRAPH-2F99E;Lo;0;L;83E7;;;;N;;;;; -2F99F;CJK COMPATIBILITY IDEOGRAPH-2F99F;Lo;0;L;8457;;;;N;;;;; -2F9A0;CJK COMPATIBILITY IDEOGRAPH-2F9A0;Lo;0;L;8353;;;;N;;;;; -2F9A1;CJK COMPATIBILITY IDEOGRAPH-2F9A1;Lo;0;L;83CA;;;;N;;;;; -2F9A2;CJK COMPATIBILITY IDEOGRAPH-2F9A2;Lo;0;L;83CC;;;;N;;;;; -2F9A3;CJK COMPATIBILITY IDEOGRAPH-2F9A3;Lo;0;L;83DC;;;;N;;;;; -2F9A4;CJK COMPATIBILITY IDEOGRAPH-2F9A4;Lo;0;L;26C36;;;;N;;;;; -2F9A5;CJK COMPATIBILITY IDEOGRAPH-2F9A5;Lo;0;L;26D6B;;;;N;;;;; -2F9A6;CJK COMPATIBILITY IDEOGRAPH-2F9A6;Lo;0;L;26CD5;;;;N;;;;; -2F9A7;CJK COMPATIBILITY IDEOGRAPH-2F9A7;Lo;0;L;452B;;;;N;;;;; -2F9A8;CJK COMPATIBILITY IDEOGRAPH-2F9A8;Lo;0;L;84F1;;;;N;;;;; -2F9A9;CJK COMPATIBILITY IDEOGRAPH-2F9A9;Lo;0;L;84F3;;;;N;;;;; -2F9AA;CJK COMPATIBILITY IDEOGRAPH-2F9AA;Lo;0;L;8516;;;;N;;;;; -2F9AB;CJK COMPATIBILITY IDEOGRAPH-2F9AB;Lo;0;L;273CA;;;;N;;;;; -2F9AC;CJK COMPATIBILITY IDEOGRAPH-2F9AC;Lo;0;L;8564;;;;N;;;;; -2F9AD;CJK COMPATIBILITY IDEOGRAPH-2F9AD;Lo;0;L;26F2C;;;;N;;;;; -2F9AE;CJK COMPATIBILITY IDEOGRAPH-2F9AE;Lo;0;L;455D;;;;N;;;;; -2F9AF;CJK COMPATIBILITY IDEOGRAPH-2F9AF;Lo;0;L;4561;;;;N;;;;; -2F9B0;CJK COMPATIBILITY IDEOGRAPH-2F9B0;Lo;0;L;26FB1;;;;N;;;;; -2F9B1;CJK COMPATIBILITY IDEOGRAPH-2F9B1;Lo;0;L;270D2;;;;N;;;;; -2F9B2;CJK COMPATIBILITY IDEOGRAPH-2F9B2;Lo;0;L;456B;;;;N;;;;; -2F9B3;CJK COMPATIBILITY IDEOGRAPH-2F9B3;Lo;0;L;8650;;;;N;;;;; -2F9B4;CJK COMPATIBILITY IDEOGRAPH-2F9B4;Lo;0;L;865C;;;;N;;;;; -2F9B5;CJK COMPATIBILITY IDEOGRAPH-2F9B5;Lo;0;L;8667;;;;N;;;;; -2F9B6;CJK COMPATIBILITY IDEOGRAPH-2F9B6;Lo;0;L;8669;;;;N;;;;; -2F9B7;CJK COMPATIBILITY IDEOGRAPH-2F9B7;Lo;0;L;86A9;;;;N;;;;; -2F9B8;CJK COMPATIBILITY IDEOGRAPH-2F9B8;Lo;0;L;8688;;;;N;;;;; -2F9B9;CJK COMPATIBILITY IDEOGRAPH-2F9B9;Lo;0;L;870E;;;;N;;;;; -2F9BA;CJK COMPATIBILITY IDEOGRAPH-2F9BA;Lo;0;L;86E2;;;;N;;;;; -2F9BB;CJK COMPATIBILITY IDEOGRAPH-2F9BB;Lo;0;L;8779;;;;N;;;;; -2F9BC;CJK COMPATIBILITY IDEOGRAPH-2F9BC;Lo;0;L;8728;;;;N;;;;; -2F9BD;CJK COMPATIBILITY IDEOGRAPH-2F9BD;Lo;0;L;876B;;;;N;;;;; -2F9BE;CJK COMPATIBILITY IDEOGRAPH-2F9BE;Lo;0;L;8786;;;;N;;;;; -2F9BF;CJK COMPATIBILITY IDEOGRAPH-2F9BF;Lo;0;L;45D7;;;;N;;;;; -2F9C0;CJK COMPATIBILITY IDEOGRAPH-2F9C0;Lo;0;L;87E1;;;;N;;;;; -2F9C1;CJK COMPATIBILITY IDEOGRAPH-2F9C1;Lo;0;L;8801;;;;N;;;;; -2F9C2;CJK COMPATIBILITY IDEOGRAPH-2F9C2;Lo;0;L;45F9;;;;N;;;;; -2F9C3;CJK COMPATIBILITY IDEOGRAPH-2F9C3;Lo;0;L;8860;;;;N;;;;; -2F9C4;CJK COMPATIBILITY IDEOGRAPH-2F9C4;Lo;0;L;8863;;;;N;;;;; -2F9C5;CJK COMPATIBILITY IDEOGRAPH-2F9C5;Lo;0;L;27667;;;;N;;;;; -2F9C6;CJK COMPATIBILITY IDEOGRAPH-2F9C6;Lo;0;L;88D7;;;;N;;;;; -2F9C7;CJK COMPATIBILITY IDEOGRAPH-2F9C7;Lo;0;L;88DE;;;;N;;;;; -2F9C8;CJK COMPATIBILITY IDEOGRAPH-2F9C8;Lo;0;L;4635;;;;N;;;;; -2F9C9;CJK COMPATIBILITY IDEOGRAPH-2F9C9;Lo;0;L;88FA;;;;N;;;;; -2F9CA;CJK COMPATIBILITY IDEOGRAPH-2F9CA;Lo;0;L;34BB;;;;N;;;;; -2F9CB;CJK COMPATIBILITY IDEOGRAPH-2F9CB;Lo;0;L;278AE;;;;N;;;;; -2F9CC;CJK COMPATIBILITY IDEOGRAPH-2F9CC;Lo;0;L;27966;;;;N;;;;; -2F9CD;CJK COMPATIBILITY IDEOGRAPH-2F9CD;Lo;0;L;46BE;;;;N;;;;; -2F9CE;CJK COMPATIBILITY IDEOGRAPH-2F9CE;Lo;0;L;46C7;;;;N;;;;; -2F9CF;CJK COMPATIBILITY IDEOGRAPH-2F9CF;Lo;0;L;8AA0;;;;N;;;;; -2F9D0;CJK COMPATIBILITY IDEOGRAPH-2F9D0;Lo;0;L;8AED;;;;N;;;;; -2F9D1;CJK COMPATIBILITY IDEOGRAPH-2F9D1;Lo;0;L;8B8A;;;;N;;;;; -2F9D2;CJK COMPATIBILITY IDEOGRAPH-2F9D2;Lo;0;L;8C55;;;;N;;;;; -2F9D3;CJK COMPATIBILITY IDEOGRAPH-2F9D3;Lo;0;L;27CA8;;;;N;;;;; -2F9D4;CJK COMPATIBILITY IDEOGRAPH-2F9D4;Lo;0;L;8CAB;;;;N;;;;; -2F9D5;CJK COMPATIBILITY IDEOGRAPH-2F9D5;Lo;0;L;8CC1;;;;N;;;;; -2F9D6;CJK COMPATIBILITY IDEOGRAPH-2F9D6;Lo;0;L;8D1B;;;;N;;;;; -2F9D7;CJK COMPATIBILITY IDEOGRAPH-2F9D7;Lo;0;L;8D77;;;;N;;;;; -2F9D8;CJK COMPATIBILITY IDEOGRAPH-2F9D8;Lo;0;L;27F2F;;;;N;;;;; -2F9D9;CJK COMPATIBILITY IDEOGRAPH-2F9D9;Lo;0;L;20804;;;;N;;;;; -2F9DA;CJK COMPATIBILITY IDEOGRAPH-2F9DA;Lo;0;L;8DCB;;;;N;;;;; -2F9DB;CJK COMPATIBILITY IDEOGRAPH-2F9DB;Lo;0;L;8DBC;;;;N;;;;; -2F9DC;CJK COMPATIBILITY IDEOGRAPH-2F9DC;Lo;0;L;8DF0;;;;N;;;;; -2F9DD;CJK COMPATIBILITY IDEOGRAPH-2F9DD;Lo;0;L;208DE;;;;N;;;;; -2F9DE;CJK COMPATIBILITY IDEOGRAPH-2F9DE;Lo;0;L;8ED4;;;;N;;;;; -2F9DF;CJK COMPATIBILITY IDEOGRAPH-2F9DF;Lo;0;L;8F38;;;;N;;;;; -2F9E0;CJK COMPATIBILITY IDEOGRAPH-2F9E0;Lo;0;L;285D2;;;;N;;;;; -2F9E1;CJK COMPATIBILITY IDEOGRAPH-2F9E1;Lo;0;L;285ED;;;;N;;;;; -2F9E2;CJK COMPATIBILITY IDEOGRAPH-2F9E2;Lo;0;L;9094;;;;N;;;;; -2F9E3;CJK COMPATIBILITY IDEOGRAPH-2F9E3;Lo;0;L;90F1;;;;N;;;;; -2F9E4;CJK COMPATIBILITY IDEOGRAPH-2F9E4;Lo;0;L;9111;;;;N;;;;; -2F9E5;CJK COMPATIBILITY IDEOGRAPH-2F9E5;Lo;0;L;2872E;;;;N;;;;; -2F9E6;CJK COMPATIBILITY IDEOGRAPH-2F9E6;Lo;0;L;911B;;;;N;;;;; -2F9E7;CJK COMPATIBILITY IDEOGRAPH-2F9E7;Lo;0;L;9238;;;;N;;;;; -2F9E8;CJK COMPATIBILITY IDEOGRAPH-2F9E8;Lo;0;L;92D7;;;;N;;;;; -2F9E9;CJK COMPATIBILITY IDEOGRAPH-2F9E9;Lo;0;L;92D8;;;;N;;;;; -2F9EA;CJK COMPATIBILITY IDEOGRAPH-2F9EA;Lo;0;L;927C;;;;N;;;;; -2F9EB;CJK COMPATIBILITY IDEOGRAPH-2F9EB;Lo;0;L;93F9;;;;N;;;;; -2F9EC;CJK COMPATIBILITY IDEOGRAPH-2F9EC;Lo;0;L;9415;;;;N;;;;; -2F9ED;CJK COMPATIBILITY IDEOGRAPH-2F9ED;Lo;0;L;28BFA;;;;N;;;;; -2F9EE;CJK COMPATIBILITY IDEOGRAPH-2F9EE;Lo;0;L;958B;;;;N;;;;; -2F9EF;CJK COMPATIBILITY IDEOGRAPH-2F9EF;Lo;0;L;4995;;;;N;;;;; -2F9F0;CJK COMPATIBILITY IDEOGRAPH-2F9F0;Lo;0;L;95B7;;;;N;;;;; -2F9F1;CJK COMPATIBILITY IDEOGRAPH-2F9F1;Lo;0;L;28D77;;;;N;;;;; -2F9F2;CJK COMPATIBILITY IDEOGRAPH-2F9F2;Lo;0;L;49E6;;;;N;;;;; -2F9F3;CJK COMPATIBILITY IDEOGRAPH-2F9F3;Lo;0;L;96C3;;;;N;;;;; -2F9F4;CJK COMPATIBILITY IDEOGRAPH-2F9F4;Lo;0;L;5DB2;;;;N;;;;; -2F9F5;CJK COMPATIBILITY IDEOGRAPH-2F9F5;Lo;0;L;9723;;;;N;;;;; -2F9F6;CJK COMPATIBILITY IDEOGRAPH-2F9F6;Lo;0;L;29145;;;;N;;;;; -2F9F7;CJK COMPATIBILITY IDEOGRAPH-2F9F7;Lo;0;L;2921A;;;;N;;;;; -2F9F8;CJK COMPATIBILITY IDEOGRAPH-2F9F8;Lo;0;L;4A6E;;;;N;;;;; -2F9F9;CJK COMPATIBILITY IDEOGRAPH-2F9F9;Lo;0;L;4A76;;;;N;;;;; -2F9FA;CJK COMPATIBILITY IDEOGRAPH-2F9FA;Lo;0;L;97E0;;;;N;;;;; -2F9FB;CJK COMPATIBILITY IDEOGRAPH-2F9FB;Lo;0;L;2940A;;;;N;;;;; -2F9FC;CJK COMPATIBILITY IDEOGRAPH-2F9FC;Lo;0;L;4AB2;;;;N;;;;; -2F9FD;CJK COMPATIBILITY IDEOGRAPH-2F9FD;Lo;0;L;29496;;;;N;;;;; -2F9FE;CJK COMPATIBILITY IDEOGRAPH-2F9FE;Lo;0;L;980B;;;;N;;;;; -2F9FF;CJK COMPATIBILITY IDEOGRAPH-2F9FF;Lo;0;L;980B;;;;N;;;;; -2FA00;CJK COMPATIBILITY IDEOGRAPH-2FA00;Lo;0;L;9829;;;;N;;;;; -2FA01;CJK COMPATIBILITY IDEOGRAPH-2FA01;Lo;0;L;295B6;;;;N;;;;; -2FA02;CJK COMPATIBILITY IDEOGRAPH-2FA02;Lo;0;L;98E2;;;;N;;;;; -2FA03;CJK COMPATIBILITY IDEOGRAPH-2FA03;Lo;0;L;4B33;;;;N;;;;; -2FA04;CJK COMPATIBILITY IDEOGRAPH-2FA04;Lo;0;L;9929;;;;N;;;;; -2FA05;CJK COMPATIBILITY IDEOGRAPH-2FA05;Lo;0;L;99A7;;;;N;;;;; -2FA06;CJK COMPATIBILITY IDEOGRAPH-2FA06;Lo;0;L;99C2;;;;N;;;;; -2FA07;CJK COMPATIBILITY IDEOGRAPH-2FA07;Lo;0;L;99FE;;;;N;;;;; -2FA08;CJK COMPATIBILITY IDEOGRAPH-2FA08;Lo;0;L;4BCE;;;;N;;;;; -2FA09;CJK COMPATIBILITY IDEOGRAPH-2FA09;Lo;0;L;29B30;;;;N;;;;; -2FA0A;CJK COMPATIBILITY IDEOGRAPH-2FA0A;Lo;0;L;9B12;;;;N;;;;; -2FA0B;CJK COMPATIBILITY IDEOGRAPH-2FA0B;Lo;0;L;9C40;;;;N;;;;; -2FA0C;CJK COMPATIBILITY IDEOGRAPH-2FA0C;Lo;0;L;9CFD;;;;N;;;;; -2FA0D;CJK COMPATIBILITY IDEOGRAPH-2FA0D;Lo;0;L;4CCE;;;;N;;;;; -2FA0E;CJK COMPATIBILITY IDEOGRAPH-2FA0E;Lo;0;L;4CED;;;;N;;;;; -2FA0F;CJK COMPATIBILITY IDEOGRAPH-2FA0F;Lo;0;L;9D67;;;;N;;;;; -2FA10;CJK COMPATIBILITY IDEOGRAPH-2FA10;Lo;0;L;2A0CE;;;;N;;;;; -2FA11;CJK COMPATIBILITY IDEOGRAPH-2FA11;Lo;0;L;4CF8;;;;N;;;;; -2FA12;CJK COMPATIBILITY IDEOGRAPH-2FA12;Lo;0;L;2A105;;;;N;;;;; -2FA13;CJK COMPATIBILITY IDEOGRAPH-2FA13;Lo;0;L;2A20E;;;;N;;;;; -2FA14;CJK COMPATIBILITY IDEOGRAPH-2FA14;Lo;0;L;2A291;;;;N;;;;; -2FA15;CJK COMPATIBILITY IDEOGRAPH-2FA15;Lo;0;L;9EBB;;;;N;;;;; -2FA16;CJK COMPATIBILITY IDEOGRAPH-2FA16;Lo;0;L;4D56;;;;N;;;;; -2FA17;CJK COMPATIBILITY IDEOGRAPH-2FA17;Lo;0;L;9EF9;;;;N;;;;; -2FA18;CJK COMPATIBILITY IDEOGRAPH-2FA18;Lo;0;L;9EFE;;;;N;;;;; -2FA19;CJK COMPATIBILITY IDEOGRAPH-2FA19;Lo;0;L;9F05;;;;N;;;;; -2FA1A;CJK COMPATIBILITY IDEOGRAPH-2FA1A;Lo;0;L;9F0F;;;;N;;;;; -2FA1B;CJK COMPATIBILITY IDEOGRAPH-2FA1B;Lo;0;L;9F16;;;;N;;;;; -2FA1C;CJK COMPATIBILITY IDEOGRAPH-2FA1C;Lo;0;L;9F3B;;;;N;;;;; -2FA1D;CJK COMPATIBILITY IDEOGRAPH-2FA1D;Lo;0;L;2A600;;;;N;;;;; diff --git a/mpdf/utils/UnicodeRanges.php b/mpdf/utils/UnicodeRanges.php deleted file mode 100644 index ce2b1a2..0000000 --- a/mpdf/utils/UnicodeRanges.php +++ /dev/null @@ -1,218 +0,0 @@ - '0000', 'endhex'=>'007E', 'startdec'=> 0, 'enddec'=>126 , 'range'=>'Basic Latin'), -array('starthex'=> '00A0', 'endhex'=>'00FF', 'startdec'=> 160, 'enddec'=>255 , 'range'=>'Latin-1 Supplement'), -array('starthex'=> '0100', 'endhex'=>'017F', 'startdec'=> 256, 'enddec'=>383 , 'range'=>'Latin Extended-A'), -array('starthex'=> '0180', 'endhex'=>'024F', 'startdec'=> 384, 'enddec'=>591 , 'range'=>'Latin Extended-B'), -array('starthex'=> '0250', 'endhex'=>'02AF', 'startdec'=> 592, 'enddec'=>687 , 'range'=>'IPA Extensions'), -array('starthex'=> '02B0', 'endhex'=>'02FF', 'startdec'=> 688, 'enddec'=>767 , 'range'=>'Spacing Modifier Letters'), -array('starthex'=> '0300', 'endhex'=>'036F', 'startdec'=> 768, 'enddec'=>879 , 'range'=>'Combining Diacritical Marks', 'combining'=>true), -array('starthex'=> '0370', 'endhex'=>'03FF', 'startdec'=> 880, 'enddec'=>1023 , 'range'=>'Greek'), -array('starthex'=> '0400', 'endhex'=>'04FF', 'startdec'=> 1024, 'enddec'=>1279 , 'range'=>'Cyrillic'), -array('starthex'=> '0500', 'endhex'=>'052F', 'startdec'=> 1280, 'enddec'=>1327 , 'range'=>'Cyrillic Supplement'), -array('starthex'=> '0530', 'endhex'=>'058F', 'startdec'=> 1328, 'enddec'=>1423 , 'range'=>'Armenian'), -array('starthex'=> '0590', 'endhex'=>'05FF', 'startdec'=> 1424, 'enddec'=>1535 , 'range'=>'Hebrew', 'rtl'=>true, 'special'=>true), -array('starthex'=> '0600', 'endhex'=>'06FF', 'startdec'=> 1536, 'enddec'=>1791 , 'range'=>'Arabic', 'rtl'=>true, 'special'=>true), -array('starthex'=> '0700', 'endhex'=>'074F', 'startdec'=> 1792, 'enddec'=>1871 , 'range'=>'Syriac', 'rtl'=>true, 'special'=>true), -array('starthex'=> '0750', 'endhex'=>'077F', 'startdec'=> 1872, 'enddec'=>1919 , 'range'=>'Arabic Supplement', 'rtl'=>true, 'special'=>true), -array('starthex'=> '0780', 'endhex'=>'07BF', 'startdec'=> 1920, 'enddec'=>1983 , 'range'=>'Thaana', 'rtl'=>true, 'special'=>true), -array('starthex'=> '07C0', 'endhex'=>'07FF', 'startdec'=> 1984, 'enddec'=>2047 , 'range'=>'N\'Ko (Mandenkan)', 'rtl'=>true), -array('starthex'=> '0800', 'endhex'=>'083E', 'startdec'=> 2048, 'enddec'=> 2110, 'range'=>'Samaritan', 'rtl'=>true), -array('starthex'=> '0900', 'endhex'=>'097F', 'startdec'=> 2304, 'enddec'=>2431 , 'range'=>'Devanagari', 'indic'=>true, 'special'=>true), -array('starthex'=> '0980', 'endhex'=>'09FF', 'startdec'=> 2432, 'enddec'=>2559 , 'range'=>'Bengali', 'indic'=>true, 'special'=>true), -array('starthex'=> '0A00', 'endhex'=>'0A7F', 'startdec'=> 2560, 'enddec'=>2687 , 'range'=>'Gurmukhi', 'indic'=>true, 'special'=>true), -array('starthex'=> '0A80', 'endhex'=>'0AFF', 'startdec'=> 2688, 'enddec'=>2815 , 'range'=>'Gujarati', 'indic'=>true, 'special'=>true), -array('starthex'=> '0B00', 'endhex'=>'0B7F', 'startdec'=> 2816, 'enddec'=>2943 , 'range'=>'Oriya', 'indic'=>true, 'special'=>true), -array('starthex'=> '0B80', 'endhex'=>'0BFF', 'startdec'=> 2944, 'enddec'=>3071 , 'range'=>'Tamil', 'indic'=>true, 'special'=>true), -array('starthex'=> '0C00', 'endhex'=>'0C7F', 'startdec'=> 3072, 'enddec'=>3199 , 'range'=>'Telugu', 'indic'=>true, 'special'=>true), -array('starthex'=> '0C80', 'endhex'=>'0CFF', 'startdec'=> 3200, 'enddec'=>3327 , 'range'=>'Kannada', 'indic'=>true, 'special'=>true), -array('starthex'=> '0D00', 'endhex'=>'0D7F', 'startdec'=> 3328, 'enddec'=>3455 , 'range'=>'Malayalam', 'indic'=>true, 'special'=>true), -array('starthex'=> '0D80', 'endhex'=>'0DFF', 'startdec'=> 3456, 'enddec'=>3583 , 'range'=>'Sinhala', 'special'=>true), -array('starthex'=> '0E00', 'endhex'=>'0E7F', 'startdec'=> 3584, 'enddec'=>3711 , 'range'=>'Thai'), -array('starthex'=> '0E80', 'endhex'=>'0EFF', 'startdec'=> 3712, 'enddec'=>3839 , 'range'=>'Lao'), -array('starthex'=> '0F00', 'endhex'=>'0FFF', 'startdec'=> 3840, 'enddec'=>4095 , 'range'=>'Tibetan', 'special'=>true), -array('starthex'=> '1000', 'endhex'=>'109F', 'startdec'=> 4096, 'enddec'=>4255 , 'range'=>'Myanmar', 'special'=>true), -array('starthex'=> '10A0', 'endhex'=>'10FF', 'startdec'=> 4256, 'enddec'=>4351 , 'range'=>'Georgian'), -array('starthex'=> '1100', 'endhex'=>'11FF', 'startdec'=> 4352, 'enddec'=>4607 , 'range'=>'Hangul Jamo', 'cjk'=>true), -array('starthex'=> '1200', 'endhex'=>'137F', 'startdec'=> 4608, 'enddec'=>4991 , 'range'=>'Ethiopic'), -array('starthex'=> '1380', 'endhex'=>'139F', 'startdec'=> 4992, 'enddec'=>5023 , 'range'=>'Ethiopic Supplement'), -array('starthex'=> '13A0', 'endhex'=>'13FF', 'startdec'=> 5024, 'enddec'=>5119 , 'range'=>'Cherokee'), -array('starthex'=> '1400', 'endhex'=>'167F', 'startdec'=> 5120, 'enddec'=>5759 , 'range'=>'Unified Canadian Aboriginal Syllabics'), -array('starthex'=> '1680', 'endhex'=>'169F', 'startdec'=> 5760, 'enddec'=>5791 , 'range'=>'Ogham'), -array('starthex'=> '16A0', 'endhex'=>'16FF', 'startdec'=> 5792, 'enddec'=>5887 , 'range'=>'Runic'), -array('starthex'=> '1700', 'endhex'=>'171F', 'startdec'=> 5888, 'enddec'=> 5919, 'range'=>'Tagalog (Philippine)'), -array('starthex'=> '1720', 'endhex'=>'173F', 'startdec'=> 5920, 'enddec'=> 5951, 'range'=>'Hanunoo (Philippine)'), -array('starthex'=> '1740', 'endhex'=>'175F', 'startdec'=> 5952, 'enddec'=> 5983, 'range'=>'Buhid (Philippine)'), -array('starthex'=> '1760', 'endhex'=>'177F', 'startdec'=> 5984, 'enddec'=> 6015, 'range'=>'Tagbanwa (Philippine)'), -array('starthex'=> '1780', 'endhex'=>'17FF', 'startdec'=> 6016, 'enddec'=>6143 , 'range'=>'Khmer', 'special'=>true), -array('starthex'=> '1800', 'endhex'=>'18AF', 'startdec'=> 6144, 'enddec'=>6319 , 'range'=>'Mongolian', 'vertical'=>true), -array('starthex'=> '18B0', 'endhex'=>'18F5', 'startdec'=> 6320, 'enddec'=>6389 , 'range'=>'Canadian Syllabics'), -array('starthex'=> '1900', 'endhex'=>'194F', 'startdec'=> 6400, 'enddec'=> 6479, 'range'=>'Limbu'), -array('starthex'=> '1950', 'endhex'=>'197F', 'startdec'=> 6480, 'enddec'=> 6527, 'range'=>'Tai Le'), -array('starthex'=> '1980', 'endhex'=>'19DF', 'startdec'=> 6528, 'enddec'=> 6623, 'range'=>'New Tai Lue'), -array('starthex'=> '19E0', 'endhex'=>'19FF', 'startdec'=> 6624, 'enddec'=> 6655, 'range'=>'Khmer Symbols', 'special'=>true), -array('starthex'=> '1A00', 'endhex'=>'1A1F', 'startdec'=> 6656, 'enddec'=> 6687, 'range'=>'Buginese'), -array('starthex'=> '1A20', 'endhex'=>'1AAF', 'startdec'=> 6688, 'enddec'=> 6831, 'range'=>'Tai Tham'), -array('starthex'=> '1B00', 'endhex'=>'1B7F', 'startdec'=> 6912, 'enddec'=> 7039, 'range'=>'Balinese', 'special'=>true), -array('starthex'=> '1B80', 'endhex'=>'1BBF', 'startdec'=> 7040, 'enddec'=> 7103, 'range'=>'Sundanese'), -array('starthex'=> '1C00', 'endhex'=>'1C4F', 'startdec'=> 7168, 'enddec'=> 7247, 'range'=>'Lepcha (Rong)'), -array('starthex'=> '1C50', 'endhex'=>'1C7F', 'startdec'=> 7248, 'enddec'=> 7295, 'range'=>'Ol Chiki (Santali / Ol Cemet)'), -array('starthex'=> '1CD0', 'endhex'=>'1CFF', 'startdec'=> 7376, 'enddec'=> 7423, 'range'=>'Vedic Extensions'), -array('starthex'=> '1D00', 'endhex'=>'1D7F', 'startdec'=> 7424, 'enddec'=> 7551, 'range'=>'Phonetic Extensions'), -array('starthex'=> '1D80', 'endhex'=>'1DBF', 'startdec'=> 7552, 'enddec'=> 7615, 'range'=>'Phonetic Extensions Supplement'), -array('starthex'=> '1DC0', 'endhex'=>'1DFF', 'startdec'=> 7616, 'enddec'=> 7679, 'range'=>'Combining Diacritical Marks Supplement', 'combining'=>true), -array('starthex'=> '1E00', 'endhex'=>'1EFF', 'startdec'=> 7680, 'enddec'=>7935 , 'range'=>'Latin Extended Additional'), -array('starthex'=> '1F00', 'endhex'=>'1FFF', 'startdec'=> 7936, 'enddec'=>8191 , 'range'=>'Greek Extended'), -array('starthex'=> '2000', 'endhex'=>'206F', 'startdec'=> 8192, 'enddec'=>8303 , 'range'=>'General Punctuation'), -array('starthex'=> '2070', 'endhex'=>'209F', 'startdec'=> 8304, 'enddec'=>8351 , 'range'=>'Superscripts and Subscripts'), -array('starthex'=> '20A0', 'endhex'=>'20CF', 'startdec'=> 8352, 'enddec'=>8399 , 'range'=>'Currency Symbols'), -array('starthex'=> '20D0', 'endhex'=>'20FF', 'startdec'=> 8400, 'enddec'=>8447 , 'range'=>'Combining Marks for Symbols', 'combining'=>true), -array('starthex'=> '2100', 'endhex'=>'214F', 'startdec'=> 8448, 'enddec'=>8527 , 'range'=>'Letterlike Symbols'), -array('starthex'=> '2150', 'endhex'=>'218F', 'startdec'=> 8528, 'enddec'=>8591 , 'range'=>'Number Forms'), -array('starthex'=> '2190', 'endhex'=>'21FF', 'startdec'=> 8592, 'enddec'=>8703 , 'range'=>'Arrows'), -array('starthex'=> '2200', 'endhex'=>'22FF', 'startdec'=> 8704, 'enddec'=>8959 , 'range'=>'Mathematical Operators'), -array('starthex'=> '2300', 'endhex'=>'23FF', 'startdec'=> 8960, 'enddec'=>9215 , 'range'=>'Miscellaneous Technical'), -array('starthex'=> '2400', 'endhex'=>'243F', 'startdec'=> 9216, 'enddec'=>9279 , 'range'=>'Control Pictures'), -array('starthex'=> '2440', 'endhex'=>'245F', 'startdec'=> 9280, 'enddec'=>9311 , 'range'=>'Optical Character Recognition'), -array('starthex'=> '2460', 'endhex'=>'24FF', 'startdec'=> 9312, 'enddec'=>9471 , 'range'=>'Enclosed Alphanumerics'), -array('starthex'=> '2500', 'endhex'=>'257F', 'startdec'=> 9472, 'enddec'=>9599 , 'range'=>'Box Drawing'), -array('starthex'=> '2580', 'endhex'=>'259F', 'startdec'=> 9600, 'enddec'=>9631 , 'range'=>'Block Elements'), -array('starthex'=> '25A0', 'endhex'=>'25FF', 'startdec'=> 9632, 'enddec'=>9727 , 'range'=>'Geometric Shapes'), -array('starthex'=> '2600', 'endhex'=>'26FF', 'startdec'=> 9728, 'enddec'=>9983 , 'range'=>'Miscellaneous Symbols'), -array('starthex'=> '2700', 'endhex'=>'27BF', 'startdec'=> 9984, 'enddec'=>10175 , 'range'=>'Dingbats'), -array('starthex'=> '27C0', 'endhex'=>'27EF', 'startdec'=> 10176, 'enddec'=> 10223, 'range'=>'Miscellaneous Mathematical Symbols-A'), -array('starthex'=> '27F0', 'endhex'=>'27FF', 'startdec'=> 10224, 'enddec'=> 10239, 'range'=>'Supplemental Arrows-A'), -array('starthex'=> '2800', 'endhex'=>'28FF', 'startdec'=> 10240, 'enddec'=>10495 , 'range'=>'Braille Patterns'), -array('starthex'=> '2900', 'endhex'=>'297F', 'startdec'=> 10496, 'enddec'=> 10623, 'range'=>'Supplemental Arrows-B'), -array('starthex'=> '2980', 'endhex'=>'29FF', 'startdec'=> 10624, 'enddec'=> 10751, 'range'=>'Miscellaneous Mathematical Symbols-B'), -array('starthex'=> '2A00', 'endhex'=>'2AFF', 'startdec'=> 10752, 'enddec'=> 11007, 'range'=>'Supplemental Mathematical Operators'), -array('starthex'=> '2B00', 'endhex'=>'2BFF', 'startdec'=> 11008, 'enddec'=> 11263, 'range'=>'Miscellaneous Symbols and Arrows'), -array('starthex'=> '2C00', 'endhex'=>'2C5F', 'startdec'=> 11264, 'enddec'=> 11359, 'range'=>'Glagolitic'), -array('starthex'=> '2C60', 'endhex'=>'2C7F', 'startdec'=> 11360, 'enddec'=> 11391, 'range'=>'Latin Extended-C'), -array('starthex'=> '2C80', 'endhex'=>'2CFF', 'startdec'=> 11392, 'enddec'=> 11519, 'range'=>'Coptic'), -array('starthex'=> '2D00', 'endhex'=>'2D2F', 'startdec'=> 11520, 'enddec'=> 11567, 'range'=>'Georgian Supplement'), -array('starthex'=> '2D30', 'endhex'=>'2D7F', 'startdec'=> 11568, 'enddec'=> 11647, 'range'=>'Tifinagh'), -array('starthex'=> '2D80', 'endhex'=>'2DDF', 'startdec'=> 11648, 'enddec'=> 11743, 'range'=>'Ethiopic Extended'), -array('starthex'=> '2DE0', 'endhex'=>'2DFF', 'startdec'=> 11744, 'enddec'=> 11775, 'range'=>'Cyrillic Extended-A'), -array('starthex'=> '2E00', 'endhex'=>'2E7F', 'startdec'=> 11776, 'enddec'=> 11903, 'range'=>'Supplemental Punctuation'), - -array('starthex'=> '2E80', 'endhex'=>'2EFF', 'startdec'=> 11904, 'enddec'=>12031 , 'range'=>'CJK Radicals Supplement', 'cjk'=>true), -array('starthex'=> '2F00', 'endhex'=>'2FDF', 'startdec'=> 12032, 'enddec'=>12255 , 'range'=>'Kangxi Radicals', 'cjk'=>true), -array('starthex'=> '2FF0', 'endhex'=>'2FFF', 'startdec'=> 12272, 'enddec'=>12287 , 'range'=>'Ideographic Description Characters', 'cjk'=>true), -array('starthex'=> '3000', 'endhex'=>'303F', 'startdec'=> 12288, 'enddec'=>12351 , 'range'=>'CJK Symbols and Punctuation', 'cjk'=>true), -array('starthex'=> '3040', 'endhex'=>'309F', 'startdec'=> 12352, 'enddec'=>12447 , 'range'=>'Hiragana', 'cjk'=>true), -array('starthex'=> '30A0', 'endhex'=>'30FF', 'startdec'=> 12448, 'enddec'=>12543 , 'range'=>'Katakana', 'cjk'=>true), -array('starthex'=> '3100', 'endhex'=>'312F', 'startdec'=> 12544, 'enddec'=>12591 , 'range'=>'Bopomofo', 'cjk'=>true), -array('starthex'=> '3130', 'endhex'=>'318F', 'startdec'=> 12592, 'enddec'=>12687 , 'range'=>'Hangul Compatibility Jamo', 'cjk'=>true), -array('starthex'=> '3190', 'endhex'=>'319F', 'startdec'=> 12688, 'enddec'=>12703 , 'range'=>'Kanbun', 'cjk'=>true), -array('starthex'=> '31A0', 'endhex'=>'31BF', 'startdec'=> 12704, 'enddec'=>12735 , 'range'=>'Bopomofo Extended', 'cjk'=>true), -array('starthex'=> '31C0', 'endhex'=>'31EF', 'startdec'=> 12736, 'enddec'=> 12783, 'range'=>'CJK Strokes', 'cjk'=>true), -array('starthex'=> '31F0', 'endhex'=>'31FF', 'startdec'=> 12784, 'enddec'=> 12799, 'range'=>'Katakana Phonetic Extensions', 'cjk'=>true), -array('starthex'=> '3200', 'endhex'=>'32FF', 'startdec'=> 12800, 'enddec'=>13055 , 'range'=>'Enclosed CJK Letters and Months', 'cjk'=>true), -array('starthex'=> '3300', 'endhex'=>'33FF', 'startdec'=> 13056, 'enddec'=>13311 , 'range'=>'CJK Compatibility', 'cjk'=>true), -array('starthex'=> '3400', 'endhex'=>'4DB5', 'startdec'=> 13312, 'enddec'=>19893 , 'range'=>'CJK Unified Ideographs Extension A', 'cjk'=>true), -array('starthex'=> '4DC0', 'endhex'=>'4DFF', 'startdec'=> 19904, 'enddec'=> 19967, 'range'=>'Yijing Hexagram Symbols', 'cjk'=>true), -array('starthex'=> '4E00', 'endhex'=>'9FFF', 'startdec'=> 19968, 'enddec'=>40959 , 'range'=>'CJK Unified Ideographs', 'cjk'=>true), -array('starthex'=> 'A000', 'endhex'=>'A48F', 'startdec'=> 40960, 'enddec'=>42127 , 'range'=>'Yi Syllables', 'cjk'=>true), -array('starthex'=> 'A490', 'endhex'=>'A4CF', 'startdec'=> 42128, 'enddec'=> 42191, 'range'=>'Yi Radicals', 'cjk'=>true), - -array('starthex'=> 'A4D0', 'endhex'=>'A4FF', 'startdec'=> 42192, 'enddec'=> 42239, 'range'=>'Lisu'), - -array('starthex'=> 'A500', 'endhex'=>'A63F', 'startdec'=> 42240, 'enddec'=> 42559, 'range'=>'Vai'), -array('starthex'=> 'A640', 'endhex'=>'A69F', 'startdec'=> 42560, 'enddec'=> 42655, 'range'=>'Cyrillic Extended-B'), - -array('starthex'=> 'A6A0', 'endhex'=>'A6FF', 'startdec'=> 42656, 'enddec'=> 42751, 'range'=>'Bamum'), - -array('starthex'=> 'A700', 'endhex'=>'A71F', 'startdec'=> 42752, 'enddec'=> 42783, 'range'=>'Modifier Tone Letters'), -array('starthex'=> 'A720', 'endhex'=>'A7FF', 'startdec'=> 42784, 'enddec'=> 43007, 'range'=>'Latin Extended-D'), -array('starthex'=> 'A800', 'endhex'=>'A82F', 'startdec'=> 43008, 'enddec'=> 43055, 'range'=>'Syloti Nagri'), - -array('starthex'=> 'A840', 'endhex'=>'A87F', 'startdec'=> 43072, 'enddec'=> 43135, 'range'=>'Phags-pa', 'vertical'=>true), -array('starthex'=> 'A880', 'endhex'=>'A8DF', 'startdec'=> 43136, 'enddec'=> 43231, 'range'=>'Saurashtra'), - -array('starthex'=> 'A900', 'endhex'=>'A92F', 'startdec'=> 43264, 'enddec'=> 43311, 'range'=>'Kayah Li'), -array('starthex'=> 'A930', 'endhex'=>'A95F', 'startdec'=> 43312, 'enddec'=> 43359, 'range'=>'Rejang'), - -array('starthex'=> 'A960', 'endhex'=>'A97F', 'startdec'=> 43360, 'enddec'=> 43391, 'range'=>'Hangul Choseong', 'cjk'=>true), -array('starthex'=> 'A980', 'endhex'=>'A9DF', 'startdec'=> 43392, 'enddec'=> 43487, 'range'=>'Javanese'), - -array('starthex'=> 'AA00', 'endhex'=>'AA5F', 'startdec'=> 43520, 'enddec'=> 43615, 'range'=>'Cham'), -array('starthex'=> 'AA60', 'endhex'=>'AA7B', 'startdec'=> 43616, 'enddec'=> 43647, 'range'=>'Myanmar', 'special'=>true), -array('starthex'=> 'AA80', 'endhex'=>'AADF', 'startdec'=> 43648, 'enddec'=> 43743, 'range'=>'Tai Viet'), - -array('starthex'=> 'ABC0', 'endhex'=>'ABF9', 'startdec'=> 43968, 'enddec'=> 44025, 'range'=>'Meetei Mayek'), - -array('starthex'=> 'AC00', 'endhex'=>'D7FF', 'startdec'=> 44032, 'enddec'=>55295 , 'range'=>'Hangul Syllables', 'cjk'=>true), - -/* -array('starthex'=> 'D800', 'endhex'=>'DB7F', 'startdec'=> 55296, 'enddec'=>56191 , 'range'=>'High Surrogates', 'reserved'=>true), -array('starthex'=> 'DB80', 'endhex'=>'DBFF', 'startdec'=> 56192, 'enddec'=>56319 , 'range'=>'High Private Use Surrogates', 'reserved'=>true), -array('starthex'=> 'DC00', 'endhex'=>'DFFF', 'startdec'=> 56320, 'enddec'=>57343 , 'range'=>'Low Surrogates', 'reserved'=>true), -*/ - -array('starthex'=> 'E000', 'endhex'=>'F8FF', 'startdec'=> 57344, 'enddec'=>63743 , 'range'=>'Private Use', 'pua'=>true), - -array('starthex'=> 'F900', 'endhex'=>'FAFF', 'startdec'=> 63744, 'enddec'=>64255 , 'range'=>'CJK Compatibility Ideographs', 'cjk'=>true), -array('starthex'=> 'FB00', 'endhex'=>'FB4F', 'startdec'=> 64256, 'enddec'=>64335 , 'range'=>'Alphabetic Presentation Forms'), -array('starthex'=> 'FB50', 'endhex'=>'FDFF', 'startdec'=> 64336, 'enddec'=>65023 , 'range'=>'Arabic Presentation Forms-A', 'rtl'=>true), - -array('starthex'=> 'FE00', 'endhex'=>'FE0F', 'startdec'=> 65024, 'enddec'=> 65039, 'range'=>'Variation Selectors'), - -array('starthex'=> 'FE10', 'endhex'=>'FE1F', 'startdec'=> 65040, 'enddec'=> 65055, 'range'=>'Vertical Forms'), -array('starthex'=> 'FE20', 'endhex'=>'FE2F', 'startdec'=> 65056, 'enddec'=>65071 , 'range'=>'Combining Half Marks', 'combining'=>true), -array('starthex'=> 'FE30', 'endhex'=>'FE4F', 'startdec'=> 65072, 'enddec'=>65103 , 'range'=>'CJK Compatibility Forms', 'cjk'=>true), -array('starthex'=> 'FE50', 'endhex'=>'FE6F', 'startdec'=> 65104, 'enddec'=>65135 , 'range'=>'Small Form Variants', 'cjk'=>true), -array('starthex'=> 'FE70', 'endhex'=>'FEFE', 'startdec'=> 65136, 'enddec'=>65278 , 'range'=>'Arabic Presentation Forms-B', 'rtl'=>true), -array('starthex'=> 'FEFF', 'endhex'=>'FEFF', 'startdec'=> 65279, 'enddec'=>65279 , 'range'=>'Specials'), -array('starthex'=> 'FF00', 'endhex'=>'FFEF', 'startdec'=> 65280, 'enddec'=>65519 , 'range'=>'Halfwidth and Fullwidth Forms', 'cjk'=>true), -array('starthex'=> 'FFF0', 'endhex'=>'FFFD', 'startdec'=> 65520, 'enddec'=>65533 , 'range'=>'Specials'), - -/* PLANE 1 */ - -array('starthex'=> '10000', 'endhex'=>'1007F', 'startdec'=> 65536 , 'enddec'=> 65663, 'range'=>'Linear B Syllabary'), -array('starthex'=> '10080', 'endhex'=>'100FF', 'startdec'=> 65664 , 'enddec'=> 65791, 'range'=>'Linear B Ideograms'), -array('starthex'=> '10100', 'endhex'=>'1013F', 'startdec'=> 65792 , 'enddec'=> 65855, 'range'=>'Aegean Numbers'), -array('starthex'=> '10140', 'endhex'=>'1018F', 'startdec'=> 65856 , 'enddec'=> 65935, 'range'=>'Ancient Greek Numbers'), -array('starthex'=> '10190', 'endhex'=>'101CF', 'startdec'=> 65936 , 'enddec'=> 65999, 'range'=>'Ancient Symbols'), -array('starthex'=> '101D0', 'endhex'=>'101FF', 'startdec'=> 66000 , 'enddec'=> 66047, 'range'=>'Phaistos Disc'), -array('starthex'=> '10280', 'endhex'=>'1029F', 'startdec'=> 66176 , 'enddec'=> 66207, 'range'=>'Lycian'), -array('starthex'=> '102A0', 'endhex'=>'102DF', 'startdec'=> 66208 , 'enddec'=> 66271, 'range'=>'Carian'), -array('starthex'=> '10300', 'endhex'=>'1032F', 'startdec'=> 66304 , 'enddec'=> 66351, 'range'=>'Old Italic'), -array('starthex'=> '10330', 'endhex'=>'1034F', 'startdec'=> 66352 , 'enddec'=> 66383, 'range'=>'Gothic'), -array('starthex'=> '10380', 'endhex'=>'1039F', 'startdec'=> 66432 , 'enddec'=> 66463, 'range'=>'Ugaritic'), -array('starthex'=> '103A0', 'endhex'=>'103DF', 'startdec'=> 66464 , 'enddec'=> 66527, 'range'=>'Old Persian'), -array('starthex'=> '10400', 'endhex'=>'1044F', 'startdec'=> 66560 , 'enddec'=> 66639, 'range'=>'Deseret'), -array('starthex'=> '10450', 'endhex'=>'1047F', 'startdec'=> 66640 , 'enddec'=> 66687, 'range'=>'Shavian'), -array('starthex'=> '10480', 'endhex'=>'104AF', 'startdec'=> 66688 , 'enddec'=> 66735, 'range'=>'Osmanya'), -array('starthex'=> '10800', 'endhex'=>'1083F', 'startdec'=> 67584 , 'enddec'=> 67647, 'range'=>'Cypriot Syllabary'), -array('starthex'=> '10900', 'endhex'=>'1091F', 'startdec'=> 67840 , 'enddec'=> 67871, 'range'=>'Phoenician'), -array('starthex'=> '10920', 'endhex'=>'1093F', 'startdec'=> 67872 , 'enddec'=> 67903, 'range'=>'Lydian'), -array('starthex'=> '10A00', 'endhex'=>'10A5F', 'startdec'=> 68096 , 'enddec'=> 68191, 'range'=>'Kharoshthi'), - -array('starthex'=> '11080', 'endhex'=>'110CF', 'startdec'=> 69760 , 'enddec'=> 69839, 'range'=>'Kaithi'), - -array('starthex'=> '12000', 'endhex'=>'123FF', 'startdec'=> 73728 , 'enddec'=> 74751, 'range'=>'Cuneiform (Sumero-Akkadian)'), -array('starthex'=> '12400', 'endhex'=>'1247F', 'startdec'=> 74752 , 'enddec'=> 74879, 'range'=>'Cuneiform Numbers and Punctuation'), - -array('starthex'=> '13000', 'endhex'=>'1342F', 'startdec'=> 77824 , 'enddec'=> 78895, 'range'=>'Egyptian Hieroglyphs'), - -array('starthex'=> '1D000', 'endhex'=>'1D0FF', 'startdec'=> 118784 , 'enddec'=> 119039, 'range'=>'Byzantine Musical Symbols'), -array('starthex'=> '1D100', 'endhex'=>'1D1FF', 'startdec'=> 119040 , 'enddec'=> 119295, 'range'=>'Musical Symbols'), -array('starthex'=> '1D200', 'endhex'=>'1D24F', 'startdec'=> 119296 , 'enddec'=> 119375, 'range'=>'Ancient Greek Musical Notation'), -array('starthex'=> '1D300', 'endhex'=>'1D35F', 'startdec'=> 119552 , 'enddec'=> 119647, 'range'=>'Tai Xuan Jing Symbols'), -array('starthex'=> '1D360', 'endhex'=>'1D37F', 'startdec'=> 119648 , 'enddec'=> 119679, 'range'=>'Counting Rod Numerals'), -array('starthex'=> '1D400', 'endhex'=>'1D7FF', 'startdec'=> 119808 , 'enddec'=> 120831, 'range'=>'Mathematical Alphanumeric Symbols'), -array('starthex'=> '1F000', 'endhex'=>'1F02F', 'startdec'=> 126976 , 'enddec'=> 127023, 'range'=>'Mahjong Tiles'), -array('starthex'=> '1F030', 'endhex'=>'1F09F', 'startdec'=> 127024 , 'enddec'=> 127135, 'range'=>'Domino Tiles'), - -/* PLANE 2 */ - -array('starthex'=> '20000', 'endhex'=>'2A6DF', 'startdec'=> 131072 , 'enddec'=> 173791, 'range'=>'CJK Unified Ideographs Extension B'), -array('starthex'=> '2A700', 'endhex'=>'2B734', 'startdec'=> 173824 , 'enddec'=> 177972, 'range'=>'CJK Unified Ideographs Extension C'), -array('starthex'=> '2F800', 'endhex'=>'2FA1F', 'startdec'=> 194560 , 'enddec'=> 195103, 'range'=>'CJK Compatibility Ideographs Supplement'), - -); - -?> \ No newline at end of file diff --git a/mpdf/utils/font_collections.php b/mpdf/utils/font_collections.php deleted file mode 100644 index 20f387e..0000000 --- a/mpdf/utils/font_collections.php +++ /dev/null @@ -1,72 +0,0 @@ -Font collection files found in '.$ttfdir.' directory

    '; -foreach($ff AS $f) { - $ret = array(); - if (strtolower(substr($f,-4,4))=='.ttc' || strtolower(substr($f,-4,4))=='.ttcf') { // Mac ttcf - $ttf->getTTCFonts($ttfdir.$f); - $nf = $ttf->numTTCFonts; - echo '

    Font collection file ('.$f.') contains the following fonts:

    '; - for ($i=1; $i<=$nf; $i++) { - $ret = $ttf->extractCoreInfo($ttfdir.$f, $i); - $tfname = $ret[0]; - $bold = $ret[1]; - $italic = $ret[2]; - $fname = strtolower($tfname ); - $fname = preg_replace('/[ ()]/','',$fname ); - $style = ''; - if ($bold) { $style .= 'Bold'; } - if ($italic) { $style .= 'Italic'; } - if (!$style) { $style = 'Regular'; } - - - echo '
    ['.$i.'] '.$tfname.' ('.$fname.') '.$style.'
    '; - - } - echo '
    '; - } -} - - -exit; - -?> \ No newline at end of file diff --git a/mpdf/utils/font_coverage.php b/mpdf/utils/font_coverage.php deleted file mode 100644 index 0384c91..0000000 --- a/mpdf/utils/font_coverage.php +++ /dev/null @@ -1,252 +0,0 @@ -SetDisplayMode('fullpage'); -$mpdf->useSubstitutions = true; -$mpdf->debug = true; -$mpdf->simpleTables = true; -if ($checkdir) { - $ttfdir = $checkdir; -} -else { $ttfdir = _MPDF_TTFONTPATH; } - - - -$mqr=ini_get("magic_quotes_runtime"); -if ($mqr) { set_magic_quotes_runtime(0); } -if (!class_exists('TTFontFile_Analysis', false)) { include(_MPDF_PATH .'classes/ttfontsuni_analysis.php'); } - -//============================================================== - $smp = true; - $maxt = 131071; -//============================================================== -//============================================================== -$unifile = file('UnicodeData.txt'); -$unichars = array(); -foreach($unifile AS $line) { - if (preg_match('//',$line,$m)) { - $rangename = ''; - continue; - } - else if (preg_match('/^([12]{0,1}[0-9A-Za-z]{4});<(.*?), Last>/',$line,$m)) { - if ($rangename && $rangename == $m[2]) { - $endrange = hexdec($m[1]); - for ($i=$startrange;$i<=$endrange; $i++) { - $unichars[$i] = $i; - } - } - $rangename = ''; - } - else if (preg_match('/^([12]{0,1}[0-9A-Za-z]{4});<(.*?), First>/',$line,$m)) { - $startrange = hexdec($m[1]); - $rangename = $m[2]; - } - else if (preg_match('/^([12]{0,1}[0-9A-Za-z]{4});/',$line,$m)) { - $unichars[hexdec($m[1])] = hexdec($m[1]); - $rangename = ''; - } -} - -// loads array $unicode_ranges -include('UnicodeRanges.php'); -//============================================================== -$html = ''; - -//============================================================== -$ff = scandir($ttfdir); -$tempfontdata = array(); -foreach($ff AS $f) { - $ttf = new TTFontFile_Analysis(); - $ret = array(); - $isTTC = false; - if (strtolower(substr($f,-4,4))=='.ttf' || strtolower(substr($f,-4,4))=='.otf') { - $ret[] = $ttf->extractCoreInfo($ttfdir.$f); - } - for ($i=0; $i $ur) { - if ($urk >= ($urgp*$ningroup) && $urk < (($urgp+1)*$ningroup)) { - $rangekey = $urk; - $range = $ur['range']; - $rangestart = $ur['starthex']; - $rangeend = $ur['endhex']; - $html .= ''.strtoupper($range).' (U+'.$rangestart .'-U+'.$rangeend.')'; - } - } - $html .= ''; - - - foreach ($tempfontdata AS $fname => $v) { - $cw = ''; - if (file_exists((_MPDF_TTFONTDATAPATH.$fname.'.cw.dat'))) { $cw = file_get_contents(_MPDF_TTFONTDATAPATH.$fname.'.cw.dat'); } - else { - $mpdf->fontdata[$fname]['R'] = $tempfontdata[$fname]['file']; - $mpdf->AddFont($fname); - $cw = file_get_contents(_MPDF_TTFONTDATAPATH.$fname.'.cw.dat'); - } - if (!$cw) { - continue; - die("Font data not available for $fname"); - } - - $counter=0; - $max = $maxt; - - // create HTML content - $html .= ''; - $html .= ''.$fname.''; - - foreach($unicode_ranges AS $urk => $ur) { - if ($urk >= ($urgp*$ningroup) && $urk < (($urgp+1)*$ningroup)) { - if ($ur['pua'] || $ur['reserved'] || $ur['control']) { - $html .= ''; - } - else { - $rangekey = $urk; - $range = $ur['range']; - $rangestart = $ur['starthex']; - $rangeend = $ur['endhex']; - $rangestartdec = $ur['startdec']; - $rangeenddec = $ur['enddec']; - $uniinrange = 0; - $fontinrange = 0; - for ($i=$rangestartdec; $i<=$rangeenddec; $i++) { - //if (isset($cw[$i])) { $fontinrange++; } - if ($mpdf->_charDefined($cw, $i)) { $fontinrange++; } - if (isset($unichars[$i])) { $uniinrange++; } - } - if ($uniinrange) { - if ($fontinrange) { - $pc = ($fontinrange/$uniinrange); - $str = '('.$fontinrange.'/'.$uniinrange.')'; - if ($pc==1) { - $fullcovers[$urk][] = $fname; - $html .= ''; - } - else if ($pc>1) { - $fullcovers[$urk][] = $fname; - $html .= ''.$str.''; - } - else if ($pc>=0.9) { - $html .= ''.$str.''; - $nearlycovers[$urk][] = $fname; - } - else if ($pc>0.75) { $html .= ''.$str.''; } - else if ($pc>0.5) { $html .= ''.$str.''; } - else if ($pc>0.25) { $html .= ''.$str.''; } - else { $html .= ''.$str.''; } - } - else { $html .= '(0/0)'; } - } - else { $html .= ''; } - } - } - } - - - $html .= ''; - - } -//============================================================== - $html .= ''; -} - -$html .= '

    Fonts with full coverage of Unicode Ranges

    '; -$html .= ''; -//$html .= ''; -foreach($unicode_ranges AS $urk => $ur) { - if ($ur['pua'] || $ur['reserved'] || $ur['control']) { continue; } - $rangekey = $urk; - $range = $ur['range']; - $rangestart = $ur['starthex']; - $rangeend = $ur['endhex']; - $ext = $ext2 = ''; - if ($ur['combining']) { $ext = 'background-color:#DDDDFF;'; $ext2 = '
    Special positioning required'; } - if ($ur['vertical']) { $ext = 'background-color:#FFDDDD;'; $ext2 = '
    Vertical positioning required'; } - if ($ur['special']) { $ext = 'background-color:#FFDDDD;'; $ext2 = '
    Special processing required'; } - - - $html .= ''; - $arr = $fullcovers[$urk]; - $narr = $nearlycovers[$urk]; - if (is_array($arr)) { $html .= ''; } - else if (is_array($narr)) { $html .= ''; } - else { $html .= ''; } -} -$html.= '
    '.strtoupper($range).' (U+'.$rangestart .'-U+'.$rangeend.')'.$ext2.''. implode(', ',$arr). '
    '. implode(', ',$narr). ' (>90%)
    '; - - -//============================================================== -echo $html; - -exit; - -//============================================================== -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/mpdf/utils/font_dump.php b/mpdf/utils/font_dump.php deleted file mode 100644 index 92b4b30..0000000 --- a/mpdf/utils/font_dump.php +++ /dev/null @@ -1,235 +0,0 @@ -SetDisplayMode('fullpage'); - -$mpdf->useSubstitutions = true; -$mpdf->simpleTables = true; -// force fonts to be embedded whole i.e. NOT susbet -$mpdf->percentSubset = 0; - -//============================================================== -//============================================================== -//============================================================== -//============================================================== - -// This generates a .mtx.php file if not already generated -$mpdf->WriteHTML(''); -$mpdf->WriteHTML('

    '.strtoupper($font).'

    '); // Separate Paragraphs defined by font -$html = ''; -//============================================================== -//============================================================== -//============================================================== -//============================================================== -$unifile = file('UnicodeData.txt'); -$unichars = array(); - -foreach($unifile AS $line) { - if ($smp && preg_match('/^(1[0-9A-Za-z]{4});/',$line,$m)) { - $unichars[hexdec($m[1])] = hexdec($m[1]); - } - else if (preg_match('/^([0-9A-Za-z]{4});/',$line,$m)) { - $unichars[hexdec($m[1])] = hexdec($m[1]); - } -} - -// loads array $unicode_ranges -include('UnicodeRanges.php'); -//============================================================== -//============================================================== - - - -$cw = file_get_contents(_MPDF_TTFONTDATAPATH.$font.'.cw.dat'); -if (!$cw) { die("Error - Must be able to read font metrics file: "._MPDF_TTFONTDATAPATH.$font.'.cw.dat'); } -$counter=0; - - -include(_MPDF_TTFONTDATAPATH.$font.'.mtx.php'); - -if ($smp) { - $max = min($max,131071); -} -else { - $max = min($max,65535); -} - - -$justfinishedblank = false; -$justfinishedblankinvalid = false; - - foreach($unicode_ranges AS $urk => $ur) { - if (0 >= $ur['startdec'] && 0 <= $ur['enddec']) { - $rangekey = $urk; - $range = $ur['range']; - $rangestart = $ur['starthex']; - $rangeend = $ur['endhex']; - break; - } - } - $lastrange = $range ; - // create HTML content - $html .= ''; - $html .= ''; - $html .= ''; - $html .= ''; - - $html .= ''; - for ($i = 0; $i < 16; $i++) { - $html .= ''; - } - - - // print each character - for ($i = $min; $i <= $max; ++$i) { - if (($i > 0) AND (($i % 16) == 0)) { - $notthisline = true; - while($notthisline) { - for ($j = 0; $j < 16; $j++) { - if ($mpdf->_charDefined($cw, ($i + $j))) { - //if (isset($cw[($i+$j)])) { - $notthisline = false; - } - } - if ($notthisline) { - if ($showmissing) { - $range = ''; - foreach($unicode_ranges AS $urk => $ur) { - if ($i >= $ur['startdec'] && $i <= $ur['enddec']) { - $rangekey = $urk; - $range = $ur['range']; - $rangestart = $ur['starthex']; - $rangeend = $ur['endhex']; - break; - } - } - $anyvalid = false; - for ($j = 0; $j < 16; $j++) { - if (isset($unichars[$i+$j])) { $anyvalid = true; break; } - } - if ($range && $range == $lastrange) { - if (!$anyvalid) { - if (!$justfinishedblankinvalid) { - $html .= ''; - } - $justfinishedblankinvalid = true; - } - else if (!$justfinishedblank ) { - $html .= ''; - $justfinishedblank = true; - } - } - else if($range) { - $html .= '
    '.strtoupper($font).'
    '.strtoupper($range).' (U+'.$rangestart .'-U+'.$rangeend.')
    -'.sprintf('%X', $i).'
     
     

    '; - $mpdf->WriteHTML($html); $html = ''; - $html .= ''; - $html .= ''; - $html .= ''; - $html .= ''; - for ($k = 0; $k < 16; $k++) { - $html .= ''; - } - $justfinishedblank = false; - $justfinishedblankinvalid = false; - } - $lastrange = $range ; - } - $i +=16; - if ($i > $max) { break 2; } - } - } - foreach($unicode_ranges AS $urk => $ur) { - if ($i >= $ur['startdec'] && $i <= $ur['enddec']) { - $rangekey = $urk; - $range = $ur['range']; - $rangestart = $ur['starthex']; - $rangeend = $ur['endhex']; - break; - } - } - - if ($i > 0 && ($i % 16) == 0 && ($range != $lastrange)) { - $html .= '
    '.strtoupper($range).' (U+'.$rangestart.'-U+'.$rangeend.')
    -'.sprintf('%X', $k).'

    '; - $mpdf->WriteHTML($html); $html = ''; - $html .= ''; - $html .= ''; - $html .= ''; - $html .= ''; - for ($k = 0; $k < 16; $k++) { - $html .= ''; - } - } - $lastrange = $range ; - $justfinishedblank = false; - $justfinishedblankinvalid = false; - $html .= ''; - $html .= ''; - } - - // Add dotted circle to any character (mark) with width=0 - if ($mpdf->_charDefined($cw, $i) && _getCharWidth($cw, $i)==0) { $html .= ''; $counter++; } - else { - if ($mpdf->_charDefined($cw, $i)) { $html .= ''; $counter++; } - else if (isset($unichars[$i])) { $html .= ''; } - else { $html .= ''; } - } - } - - if (($i % 16) > 0) { - for ($j = ($i % 16); $j < 16; ++$j) { $html .= ''; } - } - $html .= '
    '.strtoupper($range).' (U+'.$rangestart.'-U+'.$rangeend.')
    -'.sprintf('%X', $k).'
    '.(floor($i / 16)*16).''.sprintf('%03X', floor($i / 16)).'-◌&#'.$i.';&#'.$i.';

    '; -//============================================================== -function _getCharWidth(&$cw, $u, $isdef=true) { - if ($u==0) { $w = false; } - else { $w = (ord($cw[$u*2]) << 8) + ord($cw[$u*2+1]); } - if ($w == 65535) { return 0; } - else if ($w) { return $w; } - else if ($isdef) { return false; } - else { return 0; } -} -//============================================================== -$mpdf->WriteHTML($html); // Separate Paragraphs defined by font - -$mpdf->Output(); -exit; - -//============================================================== -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/mpdf/utils/font_dump_OTL.php b/mpdf/utils/font_dump_OTL.php deleted file mode 100644 index 9eef426..0000000 --- a/mpdf/utils/font_dump_OTL.php +++ /dev/null @@ -1,237 +0,0 @@ -simpleTables = true; - -//============================================================== -// This generates a .mtx.php file if not already generated -$mpdf->SetFont($family,$style); -//============================================================== -//============================================================== -//============================================================== -//============================================================== -$ff = array(); -$ffs = ''; -if ($lang && $script) { - $GSUBFeatures = $mpdf->CurrentFont['GSUBFeatures'][$script][$lang]; - if (is_array($GSUBFeatures)) { - foreach($GSUBFeatures AS $tag=>$v) { - $ff[] = '"'.$tag.'" 0'; - } - } - $GPOSFeatures = $mpdf->CurrentFont['GPOSFeatures'][$script][$lang]; - if (is_array($GPOSFeatures )) { - foreach($GPOSFeatures AS $tag=>$v) { - $ff[] = '"'.$tag.'" 0'; - } - } - $ffs = implode(', ',$ff); -} -//============================================================== - -$html = ' - - -

    '.strtoupper($family.$style).'

    -'; - -if ($lang && $script) { - $html .= '

    '.$script.' '.$lang.'

    '; -} -$mpdf->WriteHTML($html); -//============================================================== -//============================================================== -//============================================================== -//============================================================== - $mpdf->debugfonts = false; - - $family = strtolower($family); - $style=strtoupper($style); - if($style=='IB') $style='BI'; - $fontkey = $family.$style; - $stylekey = $style; - if (!$style) { $stylekey = 'R'; } - -//============================================================== -$mpdf->overrideOTLsettings[$fontkey]['script'] = $script; -$mpdf->overrideOTLsettings[$fontkey]['lang'] = $lang; -//============================================================== - - - //include(_MPDF_TTFONTDATAPATH.$fontkey.'.mtx.php'); - - $ttffile = ''; - if (defined('_MPDF_SYSTEM_TTFONTS')) { - $ttffile = _MPDF_SYSTEM_TTFONTS.$mpdf->fontdata[$family][$stylekey]; - if (!file_exists($ttffile)) { $ttffile = ''; } - } - if (!$ttffile) { - $ttffile = _MPDF_TTFONTPATH.$mpdf->fontdata[$family][$stylekey]; - if (!file_exists($ttffile)) { die("mPDF Error - cannot find TTF TrueType font file - ".$ttffile); } - } - $ttfstat = stat($ttffile); - - if (isset($mpdf->fontdata[$family]['TTCfontID'][$stylekey])) { $TTCfontID = $mpdf->fontdata[$family]['TTCfontID'][$stylekey]; } - else { $TTCfontID = 0; } - - - $BMPonly = false; - if (in_array($family,$mpdf->BMPonly)) { $BMPonly = true; } - $useOTL = $mpdf->fontdata[$family]['useOTL']; - include(_MPDF_PATH .'classes/otl_dump.php'); - $ttf = new OTLdump($mpdf); - - $mpdf->OTLscript = $script; - $mpdf->OTLlang = $lang; - -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -if($lang && $script) { - - $ttf->getMetrics($ttffile, $fontkey, $TTCfontID, $mpdf->debugfonts, $BMPonly, true, $useOTL, 'detail'); -} -//============================================================== -//============================================================== -//============================================================== -//============================================================== -else { // IF lang and script not defined - - $ttf->getMetrics($ttffile, $fontkey, $TTCfontID, $mpdf->debugfonts, $BMPonly, true, $useOTL, 'summary'); - -} - - -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== - -$mpdf->Output(); -exit; - -//============================================================== -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/mpdf/utils/font_names.php b/mpdf/utils/font_names.php deleted file mode 100644 index 3d6904f..0000000 --- a/mpdf/utils/font_names.php +++ /dev/null @@ -1,214 +0,0 @@ -useSubstitutions = true; -if ($checkdir) { - $ttfdir = $checkdir; -} -else { $ttfdir = _MPDF_TTFONTPATH; } - -$mqr=ini_get("magic_quotes_runtime"); -if ($mqr) { set_magic_quotes_runtime(0); } -if (!class_exists('TTFontFile_Analysis', false)) { include(_MPDF_PATH .'classes/ttfontsuni_analysis.php'); } -$ttf = new TTFontFile_Analysis(); - -$tempfontdata = array(); -$tempsansfonts = array(); -$tempseriffonts = array(); -$tempmonofonts = array(); -$tempfonttrans = array(); - -$ff = scandir($ttfdir); - -foreach($ff AS $f) { - $ret = array(); - $isTTC = false; - if (strtolower(substr($f,-4,4))=='.ttc' || strtolower(substr($f,-5,5))=='.ttcf') { // Mac ttcf - $isTTC = true; - $ttf->getTTCFonts($ttfdir.$f); - $nf = $ttf->numTTCFonts; - for ($i=1; $i<=$nf; $i++) { - $ret[] = $ttf->extractCoreInfo($ttfdir.$f, $i); - } - } - else if (strtolower(substr($f,-4,4))=='.ttf' || strtolower(substr($f,-4,4))=='.otf' ) { - $ret[] = $ttf->extractCoreInfo($ttfdir.$f); - } - for ($i=0; $i'; - } - else { - $tfname = $ret[$i][0]; - $bold = $ret[$i][1]; - $italic = $ret[$i][2]; - $fname = strtolower($tfname ); - $fname = preg_replace('/[ ()]/','',$fname ); - $tempfonttrans[$tfname] = $fname; - $style = ''; - if ($bold) { $style .= 'B'; } - if ($italic) { $style .= 'I'; } - if (!$style) { $style = 'R'; } - $tempfontdata[$fname][$style] = $f; - if ($isTTC) { - $tempfontdata[$fname]['TTCfontID'][$style] = $ret[$i][4]; - } - //if ($ret[$i][5]) { $tempfontdata[$fname]['rtl'] = true; } - //if ($ret[$i][7]) { $tempfontdata[$fname]['cjk'] = true; } - if ($ret[$i][8]) { $tempfontdata[$fname]['sip'] = true; } - if ($ret[$i][9]) { $tempfontdata[$fname]['smp'] = true; } - if ($ret[$i][10]) { $tempfontdata[$fname]['puaag'] = true; } - if ($ret[$i][11]) { $tempfontdata[$fname]['pua'] = true; } - if ($ret[$i][12]) { $tempfontdata[$fname]['unAGlyphs'] = true; } - $ftype = $ret[$i][3]; // mono, sans or serif - if ($ftype=='sans') { $tempsansfonts[] = $fname; } - else if ($ftype=='serif') { $tempseriffonts[] = $fname; } - else if ($ftype=='mono') { $tempmonofonts[] = $fname; } - } - } - -} -$tempsansfonts = array_unique($tempsansfonts); -$tempseriffonts = array_unique($tempseriffonts ); -$tempmonofonts = array_unique($tempmonofonts ); -$tempfonttrans = array_unique($tempfonttrans); - -if (!$pdf) { - echo '

    Information

    '; -} - -foreach ($tempfontdata AS $fname => $v) { - if (!isset($tempfontdata[$fname]['R']) || !$tempfontdata[$fname]['R']) { - if (!$pdf) echo 'WARNING - Font file for '.$fname.' may be an italic cursive script, or extra-bold etc.
    '; - if (isset($tempfontdata[$fname]['I']) && $tempfontdata[$fname]['I']) { - $tempfontdata[$fname]['R'] = $tempfontdata[$fname]['I']; - } - else if (isset($tempfontdata[$fname]['B']) && $tempfontdata[$fname]['B']) { - $tempfontdata[$fname]['R'] = $tempfontdata[$fname]['B']; - } - else if (isset($tempfontdata[$fname]['BI']) && $tempfontdata[$fname]['BI']) { - $tempfontdata[$fname]['R'] = $tempfontdata[$fname]['BI']; - } - } - if (isset($tempfontdata[$fname]['smp']) && $tempfontdata[$fname]['smp']) { - if (!$pdf) echo 'INFO - Font file '.$fname.' contains characters in Unicode Plane 1 SMP
    '; - $tempfontdata[$fname]['smp'] = false; - } -// if (isset($tempfontdata[$fname]['pua']) && $tempfontdata[$fname]['pua']) { -// if (!$pdf) echo 'INFO - Font file '.$fname.' contains characters in Unicode Private Use Area (U+E000-U+F8FF)
    '; -// } - if (isset($tempfontdata[$fname]['unAGlyphs']) && $tempfontdata[$fname]['unAGlyphs']) { - if (!$pdf) echo 'INFO - Font file '.$fname.' contains non-indexed Arabic Glyphs "unAGlyphs" (which can be mapped to U+F500-U+F7FF)
    '; - if (isset($tempfontdata[$fname]['puaag']) && $tempfontdata[$fname]['puaag']) { - if (!$pdf) echo 'WARNING - Font file '.$fname.' already includes mapped characters in the part of Unicode Private Use Area which mPDF uses for mapping non-indexed Arabic Glyphs "unAGlyphs" (U+F500-U+F7FF)
    '; - } - } - if (isset($tempfontdata[$fname]['sip']) && $tempfontdata[$fname]['sip']) { - if (!$pdf) echo 'INFO - Font file '.$fname.' contains characters in Unicode Plane 2 SIP
    '; - if (preg_match('/^(.*)-extb/',$fname, $fm)) { - if (isset($tempfontdata[($fm[1])]) && $tempfontdata[($fm[1])]) { - $tempfontdata[($fm[1])]['sip-ext'] = $fname; - if (!$pdf) echo 'INFO - Font file '.$fname.' has been defined as a CJK ext-B for '.($fm[1]).'
    '; - } - else if (isset($tempfontdata[($fm[1].'-exta')]) && $tempfontdata[($fm[1].'-exta')]) { - $tempfontdata[($fm[1].'-exta')]['sip-ext'] = $fname; - if (!$pdf) echo 'INFO - Font file '.$fname.' has been defined as a CJK ext-B for '.($fm[1].'-exta').'
    '; - } - } - // else { unset($tempfontdata[$fname]['sip']); } - } - unset($tempfontdata[$fname]['sip']); - unset($tempfontdata[$fname]['smp']); - unset($tempfontdata[$fname]['pua']); - unset($tempfontdata[$fname]['puaag']); - unset($tempfontdata[$fname]['unAGlyphs']); -} - -$mpdf->fontdata = array_merge($tempfontdata ,$mpdf->fontdata); - - $mpdf->available_unifonts = array(); - foreach ($mpdf->fontdata AS $f => $fs) { - if (isset($fs['R']) && $fs['R']) { $mpdf->available_unifonts[] = $f; } - if (isset($fs['B']) && $fs['B']) { $mpdf->available_unifonts[] = $f.'B'; } - if (isset($fs['I']) && $fs['I']) { $mpdf->available_unifonts[] = $f.'I'; } - if (isset($fs['BI']) && $fs['BI']) { $mpdf->available_unifonts[] = $f.'BI'; } - } - - $mpdf->default_available_fonts = $mpdf->available_unifonts; - -if (!$pdf) { - echo '
    '; - echo '

    Font names as parsed by mPDF

    '; -} - -ksort($tempfonttrans); -$html = ''; -foreach($tempfonttrans AS $on=>$mn) { - if (!file_exists($ttfdir.$mpdf->fontdata[$mn]['R'])) { continue; } - $ond = '"'.$on.'"'; - $html .= '

    '.$ond.' font is available as '.$mn; - if (isset($mpdf->fontdata[$mn]['sip-ext']) && $mpdf->fontdata[$mn]['sip-ext']) { - $html .= '; CJK ExtB: '.$mpdf->fontdata[$mn]['sip-ext']; - } - $html .= '

    '; -} - -if ($pdf) { - $mpdf->WriteHTML($html); - $mpdf->Output(); - exit; -} - -foreach($tempfonttrans AS $on=>$mn) { - $ond = '"'.$on.'"'; - echo '
    '.$ond.' font is available as '.$mn; - if (isset($mpdf->fontdata[$mn]['sip-ext']) && $mpdf->fontdata[$mn]['sip-ext']) { - echo '; CJK ExtB: '.$mpdf->fontdata[$mn]['sip-ext']; - } - echo '
    '; -} -echo '
    '; - -echo '

    Sample config_fonts.php file

    '; -echo '
    Remember to edit the following arrays to place your preferred default first in order:
    '; - -echo '
    ';
    -
    -ksort($tempfontdata);
    -echo '$this->fontdata = '.var_export($tempfontdata,true).";\n";
    -
    -sort($tempsansfonts);
    -echo '$this->sans_fonts = array(\''.implode("', '", $tempsansfonts)."');\n";
    -sort($tempseriffonts);
    -echo '$this->serif_fonts = array(\''.implode("', '", $tempseriffonts)."');\n";
    -sort($tempmonofonts);
    -echo '$this->mono_fonts = array(\''.implode("', '", $tempmonofonts)."');\n";
    -echo '
    '; - -exit; - -?> \ No newline at end of file diff --git a/mpdf/utils/image_details.php b/mpdf/utils/image_details.php deleted file mode 100644 index 5324d9b..0000000 --- a/mpdf/utils/image_details.php +++ /dev/null @@ -1,525 +0,0 @@ -'; -echo 'Full File URL: ' .$file . '
    '; - if ($orig_srcpath && $fileIsLocal && $check = @fopen($orig_srcpath,"rb")) { - fclose($check); - $file=$orig_srcpath; - $data = file_get_contents($file); - $type = _imageTypeFromString($data); - echo 'File accessed using fopen on $orig_srcpath' . '
    '; - } - if (!$data && $check = @fopen($file,"rb")) { - fclose($check); - $data = file_get_contents($file); - $type = _imageTypeFromString($data); - echo 'File accessed using fopen on $file' . '
    '; - } - if ((!$data || !$type) && !ini_get('allow_url_fopen') ) { // only worth trying if remote file and !ini_get('allow_url_fopen') - file_get_contents_by_socket($file, $data); // needs full url?? even on local (never needed for local) - if ($data) { $type = _imageTypeFromString($data); } - echo 'File accessed using socket ' . '
    '; - } - if ((!$data || !$type) && !ini_get('allow_url_fopen') && function_exists("curl_init")) { - file_get_contents_by_curl($file, $data); // needs full url?? even on local (never needed for local) - if ($data) { $type = _imageTypeFromString($data); } - echo 'File accessed using cURL ' . '
    '; - } - - - - if (!$data) { echo 'Could not access image file' . '
    '; exit; } - - echo 'Image type determined: ' .strtoupper($type) . '
    '; - - // JPEG - if ($type == 'jpeg' || $type == 'jpg') { - $hdr = _jpgHeaderFromString($data); - if (!$hdr) { echo 'Error parsing JPG header' . '
    '; exit; } - $a = _jpgDataFromHeader($hdr); - $channels = intval($a[4]); - echo 'Width: ' . $a[0]. '
    '; - echo 'Height: ' . $a[1]. '
    '; - echo 'Colorspace: ' . $a[2]. '
    '; - echo 'BPC (bits per channel): ' . $a[3]. '
    '; - echo 'Channels: ' . $channels. '
    '; - - $j = strpos($data,'JFIF'); - if ($j) { - //Read resolution - $unitSp=ord(substr($data,($j+7),1)); - if ($unitSp > 0) { - $ppUx=_twobytes2int(substr($data,($j+8),2)); // horizontal pixels per meter, usually set to zero - if ($unitSp == 2) { // = dots per cm (if == 1 set as dpi) - $ppUx=round($ppUx/10 *25.4); - } - } - echo 'Resolution ppUx: ' . $ppUx. '
    '; - } - else echo 'JFIF not found in header' . '
    '; - - - // mPDF 6 ICC profile - $offset = 0; - $icc = array(); - while (($pos = strpos($data, "ICC_PROFILE\0", $offset)) !== false) { - // get ICC sequence length - $length = _twobytes2int(substr($data, ($pos - 2),2)) - 16; - $sn = max(1, ord($data[($pos + 12)])); - $nom = max(1, ord($data[($pos + 13)])); - $icc[($sn - 1)] = substr($data, ($pos + 14), $length); - $offset = ($pos + 14 + $length); - } - // order and compact ICC segments - if (count($icc) > 0) { - echo 'ICC profile present' . '
    '; - ksort($icc); - $icc = implode('', $icc); - if (substr($icc, 36, 4) != 'acsp') { - // invalid ICC profile - echo 'ICC profile INVALID (no acsp flag)' . '
    '; - } - $input = substr($icc, 16, 4); - $output = substr($icc, 20, 4); - echo 'ICC profile Input: ' . $input. '
    '; - echo 'ICC profile Output: ' . $output. '
    '; - // Ignore Color profiles for conversion to other colorspaces e.g. CMYK/Lab - if ($input != 'RGB ' || $output != 'XYZ ') { echo 'ICC profile ignored by mPDF' . '
    '; } - } - - } - - // PNG - else if ($type == 'png') { - //Check signature - if(substr($data,0,8)!=chr(137).'PNG'.chr(13).chr(10).chr(26).chr(10)) { - echo 'Error parsing PNG identifier
    '; exit; - } - //Read header chunk - if(substr($data,12,4)!='IHDR') { - echo 'Incorrect PNG file (no IHDR block found)
    '; exit; - } - - $w=_fourbytes2int(substr($data,16,4)); - $h=_fourbytes2int(substr($data,20,4)); - $bpc=ord(substr($data,24,1)); - $errpng = false; - $pngalpha = false; - $channels = 0; - - echo 'Width: ' .$w . '
    '; - echo 'Height: ' .$h . '
    '; - echo 'BPC (bits per channel): ' .$bpc . '
    '; - - $ct=ord(substr($data,25,1)); - if($ct==0) { $colspace='DeviceGray'; $channels = 1; } - elseif($ct==2) { $colspace='DeviceRGB'; $channels = 3; } - elseif($ct==3) { $colspace='Indexed'; $channels = 1; } - elseif($ct==4) { $colspace='DeviceGray'; $channels = 1; $errpng = 'alpha channel'; $pngalpha = true; } - else { $colspace='DeviceRGB'; $channels = 3; $errpng = 'alpha channel'; $pngalpha = true; } - - echo 'Colorspace: ' . $colspace. '
    '; - echo 'Channels: ' . $channels. '
    '; - if ($pngalpha) echo 'Alpha channel detected'. '
    '; - - if ($ct < 4 && strpos($data,'tRNS')!==false) { echo 'Transparency detected'. '
    '; $errpng = 'transparency'; $pngalpha = true;} - - if ($ct == 3 && strpos($data,'iCCP')!==false) { echo 'Indexed plus ICC'. '
    '; $errpng = 'indexed plus ICC'; } - - if(ord(substr($data,26,1))!=0) { echo 'compression method not set to zero
    '; $errpng = 'compression method'; } // only 0 should be specified - if(ord(substr($data,27,1))!=0) { echo 'filter method not set to zero
    '; $errpng = 'filter method'; } // only 0 should be specified - if(ord(substr($data,28,1))!=0) { echo 'interlaced file not set to zero
    '; $errpng = 'interlaced file'; } - - $j = strpos($data,'pHYs'); - if ($j) { - //Read resolution - $unitSp=ord(substr($data,($j+12),1)); - if ($unitSp == 1) { - $ppUx=_fourbytes2int(substr($data,($j+4),4)); // horizontal pixels per meter, usually set to zero - $ppUx=round($ppUx/1000 *25.4); - } - echo 'Resolution ppUx: ' . $ppUx. '
    '; - } - - // mPDF 6 Gamma correction - $gamma_correction = 0; - $gAMA = 0; - $j = strpos($data,'gAMA'); - if ($j && strpos($data,'sRGB')===false) { // sRGB colorspace - overrides gAMA - $gAMA=_fourbytes2int(substr($data,($j+4),4)); // Gamma value times 100000 - $gAMA /= 100000; - - } - - if ($gAMA) { $gamma_correction = 1/$gAMA; } - - // Don't need to apply gamma correction if == default i.e. 2.2 - if ($gamma_correction > 2.15 && $gamma_correction < 2.25) { $gamma_correction = 0; } - - if ($gamma_correction) { echo 'Gamma correction detected'. '
    '; } - - // NOT supported at present - if (strpos($data,'sRGB')!==false) echo 'sRGB colorspace - NOT supported at present'. '
    '; - if (strpos($data,'cHRM')!==false) echo 'Chromaticity and Whitepoint - NOT supported at present'. '
    '; - - if (($errpng || $pngalpha || $gamma_correction)) { - if (function_exists('gd_info')) { $gd = gd_info(); } - else {$gd = array(); } - if (!isset($gd['PNG Support'])) { echo 'GD library required for PNG image ('.$errpng.')'. '
    ';} - $im = imagecreatefromstring($data); - - if (!$im) { echo 'Error creating GD image from PNG file ('.$errpng.')'. '
    ';} - $w = imagesx($im); - $h = imagesy($im); - if ($im) { - - // Alpha channel set (including using tRNS for Paletted images) - if ($pngalpha) { - echo 'Alpha channel will be used by mPDF (including when tRNS present in Paletted images)
    '; - if ($colspace=='Indexed') { echo '...Generating Alpha channel values from tRNS (Indexed)
    '; } - else if ($ct===0 || $ct==2) { echo '...Generating Alpha channel values from tRNS (non-Indexed)
    '; } - else { echo '...Extracting Alpha channel
    '; } - - - } - else { // No alpha/transparency set (but cannot read directly because e.g. bit-depth != 8, interlaced etc) - echo 'No alpha/transparency set (but cannot read directly because e.g. bit-depth != 8, interlaced etc)
    '; - - // ICC profile - $icc = false; - $p = strpos($data,'iCCP'); - if ($p && $colspace=="Indexed") { - $p += 4; - $n=_fourbytes2int(substr($data,($p-8),4)); - $nullsep = strpos(substr($data,$p,80), chr(0)); - $icc = substr($data, ($p+$nullsep+2), ($n-($nullsep+2)) ); - // Test if file is gzcompressed - if (ord(substr($str, 0, 1)) == 0x1f && ord(substr($str, 1, 1)) == 0x8b) { - $icc = @gzuncompress($icc); // Ignored if fails - } - if ($icc) { - echo 'ICC profile present' . '
    '; - if (substr($icc, 36, 4) != 'acsp') { echo 'ICC profile INVALID (no acsp flag)' . '
    '; $icc = false; } // invalid ICC profile - else { - $input = substr($icc, 16, 4); - $output = substr($icc, 20, 4); - echo 'ICC profile Input: ' . $input. '
    '; - echo 'ICC profile Output: ' . $output. '
    '; - // Ignore Color profiles for conversion to other colorspaces e.g. CMYK/Lab - if ($input != 'RGB ' || $output != 'XYZ ') { $icc = false; echo 'ICC profile ignored by mPDF' . '
    '; } - } - } - // Convert to RGB colorspace so can use ICC Profile - if ($icc) { echo 'ICC profile and Indexed colorspace both present - need to Convert to RGB colorspace so can use ICC Profile
    '; } - } - - - } - } - echo 'PNG Image parsed on second pass' . '
    '; - - // SECOND PASS - imagealphablending($im, false); - imagesavealpha($im, false); - imageinterlace($im, false); - ob_start(); - $check = @imagepng($im); - if (!$check) { echo 'Error creating temporary image object whilst using GD library to parse PNG image' . '
    '; } - $data = ob_get_contents(); - ob_end_clean(); - if (!$data) { echo 'Error parsing temporary file image object created with GD library to parse PNG image' . '
    '; } - imagedestroy($im); - - - //Check signature - if(substr($data,0,8)!=chr(137).'PNG'.chr(13).chr(10).chr(26).chr(10)) { - echo 'Error parsing PNG identifier
    '; exit; - } - //Read header chunk - if(substr($data,12,4)!='IHDR') { - echo 'Incorrect PNG file (no IHDR block found)
    '; exit; - } - - $w=_fourbytes2int(substr($data,16,4)); - $h=_fourbytes2int(substr($data,20,4)); - $bpc=ord(substr($data,24,1)); - $errpng = false; - $pngalpha = false; - $channels = 0; - - echo 'Width: ' .$w . '
    '; - echo 'Height: ' .$h . '
    '; - echo 'BPC (bits per channel): ' .$bpc . '
    '; - - $ct=ord(substr($data,25,1)); - if($ct==0) { $colspace='DeviceGray'; $channels = 1; } - elseif($ct==2) { $colspace='DeviceRGB'; $channels = 3; } - elseif($ct==3) { $colspace='Indexed'; $channels = 1; } - elseif($ct==4) { $colspace='DeviceGray'; $channels = 1; $errpng = 'alpha channel'; $pngalpha = true; } - else { $colspace='DeviceRGB'; $channels = 3; $errpng = 'alpha channel'; $pngalpha = true; } - - echo 'Colorspace: ' . $colspace. '
    '; - echo 'Channels: ' . $channels. '
    '; - if ($pngalpha) echo 'Alpha channel detected'. '
    '; - - if ($ct < 4 && strpos($data,'tRNS')!==false) { echo 'Transparency detected'. '
    '; $errpng = 'transparency'; $pngalpha = true;} - - if ($ct == 3 && strpos($data,'iCCP')!==false) { echo 'Indexed plus ICC'. '
    '; $errpng = 'indexed plus ICC'; } - - if(ord(substr($data,26,1))!=0) { echo 'compression method not set to zero
    '; $errpng = 'compression method'; } // only 0 should be specified - if(ord(substr($data,27,1))!=0) { echo 'filter method not set to zero
    '; $errpng = 'filter method'; } // only 0 should be specified - if(ord(substr($data,28,1))!=0) { echo 'interlaced file not set to zero
    '; $errpng = 'interlaced file'; } - - $j = strpos($data,'pHYs'); - if ($j) { - //Read resolution - $unitSp=ord(substr($data,($j+12),1)); - if ($unitSp == 1) { - $ppUx=_fourbytes2int(substr($data,($j+4),4)); // horizontal pixels per meter, usually set to zero - $ppUx=round($ppUx/1000 *25.4); - } - echo 'Resolution ppUx: ' . $ppUx. '
    '; - } - - //Gamma correction - $gamma_correction = 0; - $gAMA = 0; - $j = strpos($data,'gAMA'); - if ($j && strpos($data,'sRGB')===false) { // sRGB colorspace - overrides gAMA - $gAMA=_fourbytes2int(substr($data,($j+4),4)); // Gamma value times 100000 - $gAMA /= 100000; - - } - - if ($gAMA) { $gamma_correction = 1/$gAMA; } - - // Don't need to apply gamma correction if == default i.e. 2.2 - if ($gamma_correction > 2.15 && $gamma_correction < 2.25) { $gamma_correction = 0; } - - if ($gamma_correction) { echo 'Gamma correction detected'. '
    '; } - - // NOT supported at present - if (strpos($data,'sRGB')!==false) echo 'sRGB colorspace - NOT supported at present'. '
    '; - if (strpos($data,'cHRM')!==false) echo 'Chromaticity and Whitepoint - NOT supported at present'. '
    '; - - } - - else { // PNG image with no need to convert alpha channels, bpc <> 8 etc. - //Scan chunks looking for palette, transparency and image data - $pal=''; - $trns=''; - $pngdata=''; - $icc = false; - $p = 33; - do { - $n=_fourbytes2int(substr($data,$p,4)); $p += 4; - $type=substr($data,$p,4); $p += 4; - if ($type=='PLTE') { - //Read palette - $pal=substr($data,$p,$n); $p += $n; - $p += 4; - } - else if($type=='tRNS') { - //Read transparency info - $t=substr($data,$p,$n); $p += $n; - if ($ct==0) $trns=array(ord(substr($t,1,1))); - else if ($ct==2) $trns=array(ord(substr($t,1,1)),ord(substr($t,3,1)),ord(substr($t,5,1))); - else { - $pos=strpos($t,chr(0)); - if(is_int($pos)) $trns=array($pos); - } - $p += 4; - } - else if ($type=='IDAT') { - $pngdata.=substr($data,$p,$n); $p += $n; - $p += 4; - } - else if ($type=='iCCP') { - $nullsep = strpos(substr($data,$p,80), chr(0)); - $icc = substr($data, ($p+$nullsep+2), ($n-($nullsep+2)) ); - // Test if file is gzcompressed - if (ord(substr($str, 0, 1)) == 0x1f && ord(substr($str, 1, 1)) == 0x8b) { - $icc = @gzuncompress($icc); // Ignored if fails - } - if ($icc) { - echo 'ICC profile present' . '
    '; - if (substr($icc, 36, 4) != 'acsp') { echo 'ICC profile INVALID (no acsp flag)' . '
    '; $icc = false; } // invalid ICC profile - else { - $input = substr($icc, 16, 4); - $output = substr($icc, 20, 4); - echo 'ICC profile Input: ' . $input. '
    '; - echo 'ICC profile Output: ' . $output. '
    '; - // Ignore Color profiles for conversion to other colorspaces e.g. CMYK/Lab - if ($input != 'RGB ' || $output != 'XYZ ') { $icc = false; echo 'ICC profile ignored by mPDF' . '
    '; } - } - } - $p += $n; - $p += 4; - } - - - else if($type=='IEND') { break; } - else if (preg_match('/[a-zA-Z]{4}/',$type)) { $p += $n+4; } - else { echo 'Error parsing PNG image data
    '; } - } - while($n); - if (!$pngdata) { echo 'Error parsing PNG image data - no IDAT data found
    ';} - if ($colspace=='Indexed' && empty($pal)) { echo 'Error parsing PNG image data - missing colour palette
    '; } - echo 'PNG Image parsed directly' . '
    '; - - } - - - } - - // GIF - else if ($type == 'gif') { - } - - // BMP (Windows Bitmap) - else if ($type == 'bmp') { - } - // WMF - else if ($type == 'wmf') { - } - // UNKNOWN TYPE - try GD imagecreatefromstring - else { - if (function_exists('gd_info')) { $gd = gd_info(); } - else {$gd = array(); } - if (isset($gd['PNG Support']) && $gd['PNG Support']) { - $im = @imagecreatefromstring($data); - if ($im) { echo 'Image type not recognised, but image created from file using GD imagecreate' . '
    '; } - else { echo 'Error parsing image file - image type not recognised, and not supported by GD imagecreate' . '
    '; } - } - } - - -exit; - -//============================================================== - -function _fourbytes2int($s) { - //Read a 4-byte integer from string - return (ord($s[0])<<24) + (ord($s[1])<<16) + (ord($s[2])<<8) + ord($s[3]); -} - -function _twobytes2int($s) { // equivalent to _get_ushort - //Read a 2-byte integer from string - return (ord(substr($s, 0, 1))<<8) + ord(substr($s, 1, 1)); -} - -function _jpgHeaderFromString(&$data) { - $p = 4; - $p += _twobytes2int(substr($data, $p, 2)); // Length of initial marker block - $marker = substr($data, $p, 2); - while($marker != chr(255).chr(192) && $marker != chr(255).chr(194) && $p/is',$data)) { - $type = 'svg'; - } - // BMP images - else if (substr($data, 0, 2)== "BM") { - $type = 'bmp'; - } - return $type; -} - - - - -?> \ No newline at end of file diff --git a/mpdf/utils/index.php b/mpdf/utils/index.php deleted file mode 100644 index e9f363d..0000000 --- a/mpdf/utils/index.php +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - -

    mPDF Font Utility scripts for Version 5.0

    -
    -

    -Show a list of all font names available (font_names.php) -

    -

    -Show fonts in Collections .ttc (font_collections.php) -

    -

    -Show coverage of characters from all fonts (font_coverage.php) -

    -

    -Show OTL features from a font (font_dump_OTL.php) -

    - -

    Edit the scripts to change the font folder if you wish - this is set by default to /ttfonts/

    - - - - - diff --git a/setasign/Fpdi/FpdfTpl.php b/setasign/Fpdi/FpdfTpl.php new file mode 100644 index 0000000..4b93f53 --- /dev/null +++ b/setasign/Fpdi/FpdfTpl.php @@ -0,0 +1,21 @@ +currentTemplateId !== null) { + throw new \BadMethodCallException('The page format cannot be changed when writing to a template.'); + } + + if (!\in_array($orientation, ['P', 'L'], true)) { + throw new \InvalidArgumentException(\sprintf( + 'Invalid page orientation "%s"! Only "P" and "L" are allowed!', + $orientation + )); + } + + $size = $this->_getpagesize($size); + + if ( + $orientation != $this->CurOrientation + || $size[0] != $this->CurPageSize[0] + || $size[1] != $this->CurPageSize[1] + ) { + // New size or orientation + if ($orientation === 'P') { + $this->w = $size[0]; + $this->h = $size[1]; + } else { + $this->w = $size[1]; + $this->h = $size[0]; + } + $this->wPt = $this->w * $this->k; + $this->hPt = $this->h * $this->k; + $this->PageBreakTrigger = $this->h - $this->bMargin; + $this->CurOrientation = $orientation; + $this->CurPageSize = $size; + + $this->PageInfo[$this->page]['size'] = array($this->wPt, $this->hPt); + } + } + + /** + * Draws a template onto the page or another template. + * + * Give only one of the size parameters (width, height) to calculate the other one automatically in view to the + * aspect ratio. + * + * @param mixed $tpl The template id + * @param array|float|int $x The abscissa of upper-left corner. Alternatively you could use an assoc array + * with the keys "x", "y", "width", "height", "adjustPageSize". + * @param float|int $y The ordinate of upper-left corner. + * @param float|int|null $width The width. + * @param float|int|null $height The height. + * @param bool $adjustPageSize + * @return array The size + * @see FpdfTplTrait::getTemplateSize() + */ + public function useTemplate($tpl, $x = 0, $y = 0, $width = null, $height = null, $adjustPageSize = false) + { + if (!isset($this->templates[$tpl])) { + throw new \InvalidArgumentException('Template does not exist!'); + } + + if (\is_array($x)) { + unset($x['tpl']); + \extract($x, EXTR_IF_EXISTS); + /** @noinspection NotOptimalIfConditionsInspection */ + /** @noinspection PhpConditionAlreadyCheckedInspection */ + if (\is_array($x)) { + $x = 0; + } + } + + $template = $this->templates[$tpl]; + + $originalSize = $this->getTemplateSize($tpl); + $newSize = $this->getTemplateSize($tpl, $width, $height); + if ($adjustPageSize) { + $this->setPageFormat($newSize, $newSize['orientation']); + } + + $this->_out( + // reset standard values, translate and scale + \sprintf( + 'q 0 J 1 w 0 j 0 G 0 g %.4F 0 0 %.4F %.4F %.4F cm /%s Do Q', + ($newSize['width'] / $originalSize['width']), + ($newSize['height'] / $originalSize['height']), + $x * $this->k, + ($this->h - $y - $newSize['height']) * $this->k, + $template['id'] + ) + ); + + return $newSize; + } + + /** + * Get the size of a template. + * + * Give only one of the size parameters (width, height) to calculate the other one automatically in view to the + * aspect ratio. + * + * @param mixed $tpl The template id + * @param float|int|null $width The width. + * @param float|int|null $height The height. + * @return array|bool An array with following keys: width, height, 0 (=width), 1 (=height), orientation (L or P) + */ + public function getTemplateSize($tpl, $width = null, $height = null) + { + if (!isset($this->templates[$tpl])) { + return false; + } + + if ($width === null && $height === null) { + $width = $this->templates[$tpl]['width']; + $height = $this->templates[$tpl]['height']; + } elseif ($width === null) { + $width = $height * $this->templates[$tpl]['width'] / $this->templates[$tpl]['height']; + } + + if ($height === null) { + $height = $width * $this->templates[$tpl]['height'] / $this->templates[$tpl]['width']; + } + + if ($height <= 0. || $width <= 0.) { + throw new \InvalidArgumentException('Width or height parameter needs to be larger than zero.'); + } + + return [ + 'width' => $width, + 'height' => $height, + 0 => $width, + 1 => $height, + 'orientation' => $width > $height ? 'L' : 'P' + ]; + } + + /** + * Begins a new template. + * + * @param float|int|null $width The width of the template. If null, the current page width is used. + * @param float|int|null $height The height of the template. If null, the current page height is used. + * @param bool $groupXObject Define the form XObject as a group XObject to support transparency (if used). + * @return int A template identifier. + */ + public function beginTemplate($width = null, $height = null, $groupXObject = false) + { + if ($width === null) { + $width = $this->w; + } + + if ($height === null) { + $height = $this->h; + } + + $templateId = $this->getNextTemplateId(); + + // initiate buffer with current state of FPDF + $buffer = "2 J\n" + . \sprintf('%.2F w', $this->LineWidth * $this->k) . "\n"; + + if ($this->FontFamily) { + $buffer .= \sprintf("BT /F%d %.2F Tf ET\n", $this->CurrentFont['i'], $this->FontSizePt); + } + + if ($this->DrawColor !== '0 G') { + $buffer .= $this->DrawColor . "\n"; + } + if ($this->FillColor !== '0 g') { + $buffer .= $this->FillColor . "\n"; + } + + if ($groupXObject && \version_compare('1.4', $this->PDFVersion, '>')) { + $this->PDFVersion = '1.4'; + } + + $this->templates[$templateId] = [ + 'objectNumber' => null, + 'id' => 'TPL' . $templateId, + 'buffer' => $buffer, + 'width' => $width, + 'height' => $height, + 'groupXObject' => $groupXObject, + 'state' => [ + 'x' => $this->x, + 'y' => $this->y, + 'AutoPageBreak' => $this->AutoPageBreak, + 'bMargin' => $this->bMargin, + 'tMargin' => $this->tMargin, + 'lMargin' => $this->lMargin, + 'rMargin' => $this->rMargin, + 'h' => $this->h, + 'w' => $this->w, + 'FontFamily' => $this->FontFamily, + 'FontStyle' => $this->FontStyle, + 'FontSizePt' => $this->FontSizePt, + 'FontSize' => $this->FontSize, + 'underline' => $this->underline, + 'TextColor' => $this->TextColor, + 'DrawColor' => $this->DrawColor, + 'FillColor' => $this->FillColor, + 'ColorFlag' => $this->ColorFlag + ] + ]; + + $this->SetAutoPageBreak(false); + $this->currentTemplateId = $templateId; + + $this->h = $height; + $this->w = $width; + + $this->SetXY($this->lMargin, $this->tMargin); + $this->SetRightMargin($this->w - $width + $this->rMargin); + + return $templateId; + } + + /** + * Ends a template. + * + * @return bool|int|null A template identifier. + */ + public function endTemplate() + { + if ($this->currentTemplateId === null) { + return false; + } + + $templateId = $this->currentTemplateId; + $template = $this->templates[$templateId]; + + $state = $template['state']; + $this->SetXY($state['x'], $state['y']); + $this->tMargin = $state['tMargin']; + $this->lMargin = $state['lMargin']; + $this->rMargin = $state['rMargin']; + $this->h = $state['h']; + $this->w = $state['w']; + $this->SetAutoPageBreak($state['AutoPageBreak'], $state['bMargin']); + + $this->FontFamily = $state['FontFamily']; + $this->FontStyle = $state['FontStyle']; + $this->FontSizePt = $state['FontSizePt']; + $this->FontSize = $state['FontSize']; + + $this->TextColor = $state['TextColor']; + $this->DrawColor = $state['DrawColor']; + $this->FillColor = $state['FillColor']; + $this->ColorFlag = $state['ColorFlag']; + + $this->underline = $state['underline']; + + $fontKey = $this->FontFamily . $this->FontStyle; + if ($fontKey) { + $this->CurrentFont =& $this->fonts[$fontKey]; + } else { + unset($this->CurrentFont); + } + + $this->currentTemplateId = null; + + return $templateId; + } + + /** + * Get the next template id. + * + * @return int + */ + protected function getNextTemplateId() + { + return $this->templateId++; + } + + /* overwritten FPDF methods: */ + + /** + * @inheritdoc + */ + public function AddPage($orientation = '', $size = '', $rotation = 0) + { + if ($this->currentTemplateId !== null) { + throw new \BadMethodCallException('Pages cannot be added when writing to a template.'); + } + parent::AddPage($orientation, $size, $rotation); + } + + /** + * @inheritdoc + */ + public function Link($x, $y, $w, $h, $link) + { + if ($this->currentTemplateId !== null) { + throw new \BadMethodCallException('Links cannot be set when writing to a template.'); + } + parent::Link($x, $y, $w, $h, $link); + } + + /** + * @inheritdoc + */ + public function SetLink($link, $y = 0, $page = -1) + { + if ($this->currentTemplateId !== null) { + throw new \BadMethodCallException('Links cannot be set when writing to a template.'); + } + return parent::SetLink($link, $y, $page); + } + + /** + * @inheritdoc + */ + public function SetDrawColor($r, $g = null, $b = null) + { + parent::SetDrawColor($r, $g, $b); + if ($this->page === 0 && $this->currentTemplateId !== null) { + $this->_out($this->DrawColor); + } + } + + /** + * @inheritdoc + */ + public function SetFillColor($r, $g = null, $b = null) + { + parent::SetFillColor($r, $g, $b); + if ($this->page === 0 && $this->currentTemplateId !== null) { + $this->_out($this->FillColor); + } + } + + /** + * @inheritdoc + */ + public function SetLineWidth($width) + { + parent::SetLineWidth($width); + if ($this->page === 0 && $this->currentTemplateId !== null) { + $this->_out(\sprintf('%.2F w', $width * $this->k)); + } + } + + /** + * @inheritdoc + */ + public function SetFont($family, $style = '', $size = 0) + { + parent::SetFont($family, $style, $size); + if ($this->page === 0 && $this->currentTemplateId !== null) { + $this->_out(\sprintf('BT /F%d %.2F Tf ET', $this->CurrentFont['i'], $this->FontSizePt)); + } + } + + /** + * @inheritdoc + */ + public function SetFontSize($size) + { + parent::SetFontSize($size); + if ($this->page === 0 && $this->currentTemplateId !== null) { + $this->_out(sprintf('BT /F%d %.2F Tf ET', $this->CurrentFont['i'], $this->FontSizePt)); + } + } + + /** + * @inheritdoc + */ + protected function _putimages() + { + parent::_putimages(); + + foreach ($this->templates as $key => $template) { + $this->_newobj(); + $this->templates[$key]['objectNumber'] = $this->n; + + $this->_put('<_put(\sprintf( + '/BBox[0 0 %.2F %.2F]', + $template['width'] * $this->k, + $template['height'] * $this->k + )); + $this->_put('/Resources 2 0 R'); // default resources dictionary of FPDF + + if ($this->compress) { + $buffer = \gzcompress($template['buffer']); + $this->_put('/Filter/FlateDecode'); + } else { + $buffer = $template['buffer']; + } + + $this->_put('/Length ' . \strlen($buffer)); + + if ($template['groupXObject']) { + $this->_put('/Group <>'); + } + + $this->_put('>>'); + $this->_putstream($buffer); + $this->_put('endobj'); + } + } + + /** + * @inheritdoc + */ + protected function _putxobjectdict() + { + foreach ($this->templates as $key => $template) { + $this->_put('/' . $template['id'] . ' ' . $template['objectNumber'] . ' 0 R'); + } + + parent::_putxobjectdict(); + } + + /** + * @inheritdoc + */ + public function _out($s) + { + if ($this->currentTemplateId !== null) { + $this->templates[$this->currentTemplateId]['buffer'] .= $s . "\n"; + } else { + parent::_out($s); + } + } +} diff --git a/setasign/Fpdi/Fpdi.php b/setasign/Fpdi/Fpdi.php new file mode 100644 index 0000000..0ebce46 --- /dev/null +++ b/setasign/Fpdi/Fpdi.php @@ -0,0 +1,153 @@ +cleanUp(); + } + + /** + * Draws an imported page or a template onto the page or another template. + * + * Give only one of the size parameters (width, height) to calculate the other one automatically in view to the + * aspect ratio. + * + * @param mixed $tpl The template id + * @param float|int|array $x The abscissa of upper-left corner. Alternatively you could use an assoc array + * with the keys "x", "y", "width", "height", "adjustPageSize". + * @param float|int $y The ordinate of upper-left corner. + * @param float|int|null $width The width. + * @param float|int|null $height The height. + * @param bool $adjustPageSize + * @return array The size + * @see Fpdi::getTemplateSize() + */ + public function useTemplate($tpl, $x = 0, $y = 0, $width = null, $height = null, $adjustPageSize = false) + { + if (isset($this->importedPages[$tpl])) { + $size = $this->useImportedPage($tpl, $x, $y, $width, $height, $adjustPageSize); + if ($this->currentTemplateId !== null) { + $this->templates[$this->currentTemplateId]['resources']['templates']['importedPages'][$tpl] = $tpl; + } + return $size; + } + + return parent::useTemplate($tpl, $x, $y, $width, $height, $adjustPageSize); + } + + /** + * Get the size of an imported page or template. + * + * Give only one of the size parameters (width, height) to calculate the other one automatically in view to the + * aspect ratio. + * + * @param mixed $tpl The template id + * @param float|int|null $width The width. + * @param float|int|null $height The height. + * @return array|bool An array with following keys: width, height, 0 (=width), 1 (=height), orientation (L or P) + */ + public function getTemplateSize($tpl, $width = null, $height = null) + { + $size = parent::getTemplateSize($tpl, $width, $height); + if ($size === false) { + return $this->getImportedPageSize($tpl, $width, $height); + } + + return $size; + } + + /** + * @inheritdoc + * @throws CrossReferenceException + * @throws PdfParserException + */ + protected function _putimages() + { + $this->currentReaderId = null; + parent::_putimages(); + + foreach ($this->importedPages as $key => $pageData) { + $this->_newobj(); + $this->importedPages[$key]['objectNumber'] = $this->n; + $this->currentReaderId = $pageData['readerId']; + $this->writePdfType($pageData['stream']); + $this->_put('endobj'); + } + + foreach (\array_keys($this->readers) as $readerId) { + $parser = $this->getPdfReader($readerId)->getParser(); + $this->currentReaderId = $readerId; + + while (($objectNumber = \array_pop($this->objectsToCopy[$readerId])) !== null) { + try { + $object = $parser->getIndirectObject($objectNumber); + } catch (CrossReferenceException $e) { + if ($e->getCode() === CrossReferenceException::OBJECT_NOT_FOUND) { + $object = PdfIndirectObject::create($objectNumber, 0, new PdfNull()); + } else { + throw $e; + } + } + + $this->writePdfType($object); + } + } + + $this->currentReaderId = null; + } + + /** + * @inheritdoc + */ + protected function _putxobjectdict() + { + foreach ($this->importedPages as $key => $pageData) { + $this->_put('/' . $pageData['id'] . ' ' . $pageData['objectNumber'] . ' 0 R'); + } + + parent::_putxobjectdict(); + } + + /** + * @inheritdoc + */ + protected function _put($s, $newLine = true) + { + if ($newLine) { + $this->buffer .= $s . "\n"; + } else { + $this->buffer .= $s; + } + } +} diff --git a/setasign/Fpdi/FpdiException.php b/setasign/Fpdi/FpdiException.php new file mode 100644 index 0000000..2286667 --- /dev/null +++ b/setasign/Fpdi/FpdiException.php @@ -0,0 +1,18 @@ +readers) : $this->createdReaders; + foreach ($readers as $id) { + $this->readers[$id]->getParser()->getStreamReader()->cleanUp(); + unset($this->readers[$id]); + } + + $this->createdReaders = []; + } + + /** + * Set the minimal PDF version. + * + * @param string $pdfVersion + */ + protected function setMinPdfVersion($pdfVersion) + { + if (\version_compare($pdfVersion, $this->PDFVersion, '>')) { + $this->PDFVersion = $pdfVersion; + } + } + + /** @noinspection PhpUndefinedClassInspection */ + /** + * Get a new pdf parser instance. + * + * @param StreamReader $streamReader + * @return PdfParser|FpdiPdfParser + */ + protected function getPdfParserInstance(StreamReader $streamReader) + { + // note: if you get an exception here - turn off errors/warnings on not found for your autoloader. + // psr-4 (https://www.php-fig.org/psr/psr-4/) says: Autoloader implementations MUST NOT throw + // exceptions, MUST NOT raise errors of any level, and SHOULD NOT return a value. + /** @noinspection PhpUndefinedClassInspection */ + if (\class_exists(FpdiPdfParser::class)) { + /** @noinspection PhpUndefinedClassInspection */ + return new FpdiPdfParser($streamReader); + } + + return new PdfParser($streamReader); + } + + /** + * Get an unique reader id by the $file parameter. + * + * @param string|resource|PdfReader|StreamReader $file An open file descriptor, a path to a file, a PdfReader + * instance or a StreamReader instance. + * @return string + */ + protected function getPdfReaderId($file) + { + if (\is_resource($file)) { + $id = (string) $file; + } elseif (\is_string($file)) { + $id = \realpath($file); + if ($id === false) { + $id = $file; + } + } elseif (\is_object($file)) { + $id = \spl_object_hash($file); + } else { + throw new \InvalidArgumentException( + \sprintf('Invalid type in $file parameter (%s)', \gettype($file)) + ); + } + + /** @noinspection OffsetOperationsInspection */ + if (isset($this->readers[$id])) { + return $id; + } + + if (\is_resource($file)) { + $streamReader = new StreamReader($file); + } elseif (\is_string($file)) { + $streamReader = StreamReader::createByFile($file); + $this->createdReaders[] = $id; + } else { + $streamReader = $file; + } + + $reader = new PdfReader($this->getPdfParserInstance($streamReader)); + /** @noinspection OffsetOperationsInspection */ + $this->readers[$id] = $reader; + + return $id; + } + + /** + * Get a pdf reader instance by its id. + * + * @param string $id + * @return PdfReader + */ + protected function getPdfReader($id) + { + if (isset($this->readers[$id])) { + return $this->readers[$id]; + } + + throw new \InvalidArgumentException( + \sprintf('No pdf reader with the given id (%s) exists.', $id) + ); + } + + /** + * Set the source PDF file. + * + * @param string|resource|StreamReader $file Path to the file or a stream resource or a StreamReader instance. + * @return int The page count of the PDF document. + * @throws PdfParserException + */ + public function setSourceFile($file) + { + $this->currentReaderId = $this->getPdfReaderId($file); + $this->objectsToCopy[$this->currentReaderId] = []; + + $reader = $this->getPdfReader($this->currentReaderId); + $this->setMinPdfVersion($reader->getPdfVersion()); + + return $reader->getPageCount(); + } + + /** + * Imports a page. + * + * @param int $pageNumber The page number. + * @param string $box The page boundary to import. Default set to PageBoundaries::CROP_BOX. + * @param bool $groupXObject Define the form XObject as a group XObject to support transparency (if used). + * @return string A unique string identifying the imported page. + * @throws CrossReferenceException + * @throws FilterException + * @throws PdfParserException + * @throws PdfTypeException + * @throws PdfReaderException + * @see PageBoundaries + */ + public function importPage($pageNumber, $box = PageBoundaries::CROP_BOX, $groupXObject = true) + { + if (null === $this->currentReaderId) { + throw new \BadMethodCallException('No reader initiated. Call setSourceFile() first.'); + } + + $pageId = $this->currentReaderId; + + $pageNumber = (int)$pageNumber; + $pageId .= '|' . $pageNumber . '|' . ($groupXObject ? '1' : '0'); + + // for backwards compatibility with FPDI 1 + $box = \ltrim($box, '/'); + if (!PageBoundaries::isValidName($box)) { + throw new \InvalidArgumentException( + \sprintf('Box name is invalid: "%s"', $box) + ); + } + + $pageId .= '|' . $box; + + if (isset($this->importedPages[$pageId])) { + return $pageId; + } + + $reader = $this->getPdfReader($this->currentReaderId); + $page = $reader->getPage($pageNumber); + + $bbox = $page->getBoundary($box); + if ($bbox === false) { + throw new PdfReaderException( + \sprintf("Page doesn't have a boundary box (%s).", $box), + PdfReaderException::MISSING_DATA + ); + } + + $dict = new PdfDictionary(); + $dict->value['Type'] = PdfName::create('XObject'); + $dict->value['Subtype'] = PdfName::create('Form'); + $dict->value['FormType'] = PdfNumeric::create(1); + $dict->value['BBox'] = $bbox->toPdfArray(); + + if ($groupXObject) { + $this->setMinPdfVersion('1.4'); + $dict->value['Group'] = PdfDictionary::create([ + 'Type' => PdfName::create('Group'), + 'S' => PdfName::create('Transparency') + ]); + } + + $resources = $page->getAttribute('Resources'); + if ($resources !== null) { + $dict->value['Resources'] = $resources; + } + + list($width, $height) = $page->getWidthAndHeight($box); + + $a = 1; + $b = 0; + $c = 0; + $d = 1; + $e = -$bbox->getLlx(); + $f = -$bbox->getLly(); + + $rotation = $page->getRotation(); + + if ($rotation !== 0) { + $rotation *= -1; + $angle = $rotation * M_PI / 180; + $a = \cos($angle); + $b = \sin($angle); + $c = -$b; + $d = $a; + + switch ($rotation) { + case -90: + $e = -$bbox->getLly(); + $f = $bbox->getUrx(); + break; + case -180: + $e = $bbox->getUrx(); + $f = $bbox->getUry(); + break; + case -270: + $e = $bbox->getUry(); + $f = -$bbox->getLlx(); + break; + } + } + + // we need to rotate/translate + if ($a != 1 || $b != 0 || $c != 0 || $d != 1 || $e != 0 || $f != 0) { + $dict->value['Matrix'] = PdfArray::create([ + PdfNumeric::create($a), PdfNumeric::create($b), PdfNumeric::create($c), + PdfNumeric::create($d), PdfNumeric::create($e), PdfNumeric::create($f) + ]); + } + + // try to use the existing content stream + $pageDict = $page->getPageDictionary(); + + $contentsObject = PdfType::resolve(PdfDictionary::get($pageDict, 'Contents'), $reader->getParser(), true); + $contents = PdfType::resolve($contentsObject, $reader->getParser()); + + // just copy the stream reference if it is only a single stream + if ( + ($contentsIsStream = ($contents instanceof PdfStream)) + || ($contents instanceof PdfArray && \count($contents->value) === 1) + ) { + if ($contentsIsStream) { + /** + * @var PdfIndirectObject $contentsObject + */ + $stream = $contents; + } else { + $stream = PdfType::resolve($contents->value[0], $reader->getParser()); + } + + $filter = PdfDictionary::get($stream->value, 'Filter'); + if (!$filter instanceof PdfNull) { + $dict->value['Filter'] = $filter; + } + $length = PdfType::resolve(PdfDictionary::get($stream->value, 'Length'), $reader->getParser()); + $dict->value['Length'] = $length; + $stream->value = $dict; + + // otherwise extract it from the array and re-compress the whole stream + } else { + $streamContent = $this->compress + ? \gzcompress($page->getContentStream()) + : $page->getContentStream(); + + $dict->value['Length'] = PdfNumeric::create(\strlen($streamContent)); + if ($this->compress) { + $dict->value['Filter'] = PdfName::create('FlateDecode'); + } + + $stream = PdfStream::create($dict, $streamContent); + } + + $this->importedPages[$pageId] = [ + 'objectNumber' => null, + 'readerId' => $this->currentReaderId, + 'id' => 'TPL' . $this->getNextTemplateId(), + 'width' => $width / $this->k, + 'height' => $height / $this->k, + 'stream' => $stream + ]; + + return $pageId; + } + + /** + * Draws an imported page onto the page. + * + * Give only one of the size parameters (width, height) to calculate the other one automatically in view to the + * aspect ratio. + * + * @param mixed $pageId The page id + * @param float|int|array $x The abscissa of upper-left corner. Alternatively you could use an assoc array + * with the keys "x", "y", "width", "height", "adjustPageSize". + * @param float|int $y The ordinate of upper-left corner. + * @param float|int|null $width The width. + * @param float|int|null $height The height. + * @param bool $adjustPageSize + * @return array The size. + * @see Fpdi::getTemplateSize() + */ + public function useImportedPage($pageId, $x = 0, $y = 0, $width = null, $height = null, $adjustPageSize = false) + { + if (\is_array($x)) { + /** @noinspection OffsetOperationsInspection */ + unset($x['pageId']); + \extract($x, EXTR_IF_EXISTS); + /** @noinspection NotOptimalIfConditionsInspection */ + if (\is_array($x)) { + $x = 0; + } + } + + if (!isset($this->importedPages[$pageId])) { + throw new \InvalidArgumentException('Imported page does not exist!'); + } + + $importedPage = $this->importedPages[$pageId]; + + $originalSize = $this->getTemplateSize($pageId); + $newSize = $this->getTemplateSize($pageId, $width, $height); + if ($adjustPageSize) { + $this->setPageFormat($newSize, $newSize['orientation']); + } + + $this->_out( + // reset standard values, translate and scale + \sprintf( + 'q 0 J 1 w 0 j 0 G 0 g %.4F 0 0 %.4F %.4F %.4F cm /%s Do Q', + ($newSize['width'] / $originalSize['width']), + ($newSize['height'] / $originalSize['height']), + $x * $this->k, + ($this->h - $y - $newSize['height']) * $this->k, + $importedPage['id'] + ) + ); + + return $newSize; + } + + /** + * Get the size of an imported page. + * + * Give only one of the size parameters (width, height) to calculate the other one automatically in view to the + * aspect ratio. + * + * @param mixed $tpl The template id + * @param float|int|null $width The width. + * @param float|int|null $height The height. + * @return array|bool An array with following keys: width, height, 0 (=width), 1 (=height), orientation (L or P) + */ + public function getImportedPageSize($tpl, $width = null, $height = null) + { + if (isset($this->importedPages[$tpl])) { + $importedPage = $this->importedPages[$tpl]; + + if ($width === null && $height === null) { + $width = $importedPage['width']; + $height = $importedPage['height']; + } elseif ($width === null) { + $width = $height * $importedPage['width'] / $importedPage['height']; + } + + if ($height === null) { + $height = $width * $importedPage['height'] / $importedPage['width']; + } + + if ($height <= 0. || $width <= 0.) { + throw new \InvalidArgumentException('Width or height parameter needs to be larger than zero.'); + } + + return [ + 'width' => $width, + 'height' => $height, + 0 => $width, + 1 => $height, + 'orientation' => $width > $height ? 'L' : 'P' + ]; + } + + return false; + } + + /** + * Writes a PdfType object to the resulting buffer. + * + * @param PdfType $value + * @throws PdfTypeException + */ + protected function writePdfType(PdfType $value) + { + if ($value instanceof PdfNumeric) { + if (\is_int($value->value)) { + $this->_put($value->value . ' ', false); + } else { + $this->_put(\rtrim(\rtrim(\sprintf('%.5F', $value->value), '0'), '.') . ' ', false); + } + } elseif ($value instanceof PdfName) { + $this->_put('/' . $value->value . ' ', false); + } elseif ($value instanceof PdfString) { + $this->_put('(' . $value->value . ')', false); + } elseif ($value instanceof PdfHexString) { + $this->_put('<' . $value->value . '>'); + } elseif ($value instanceof PdfBoolean) { + $this->_put($value->value ? 'true ' : 'false ', false); + } elseif ($value instanceof PdfArray) { + $this->_put('[', false); + foreach ($value->value as $entry) { + $this->writePdfType($entry); + } + $this->_put(']'); + } elseif ($value instanceof PdfDictionary) { + $this->_put('<<', false); + foreach ($value->value as $name => $entry) { + $this->_put('/' . $name . ' ', false); + $this->writePdfType($entry); + } + $this->_put('>>'); + } elseif ($value instanceof PdfToken) { + $this->_put($value->value); + } elseif ($value instanceof PdfNull) { + $this->_put('null '); + } elseif ($value instanceof PdfStream) { + /** + * @var $value PdfStream + */ + $this->writePdfType($value->value); + $this->_put('stream'); + $this->_put($value->getStream()); + $this->_put('endstream'); + } elseif ($value instanceof PdfIndirectObjectReference) { + if (!isset($this->objectMap[$this->currentReaderId])) { + $this->objectMap[$this->currentReaderId] = []; + } + + if (!isset($this->objectMap[$this->currentReaderId][$value->value])) { + $this->objectMap[$this->currentReaderId][$value->value] = ++$this->n; + $this->objectsToCopy[$this->currentReaderId][] = $value->value; + } + + $this->_put($this->objectMap[$this->currentReaderId][$value->value] . ' 0 R ', false); + } elseif ($value instanceof PdfIndirectObject) { + /** + * @var PdfIndirectObject $value + */ + $n = $this->objectMap[$this->currentReaderId][$value->objectNumber]; + $this->_newobj($n); + $this->writePdfType($value->value); + $this->_put('endobj'); + } + } +} diff --git a/setasign/Fpdi/LICENSE.txt b/setasign/Fpdi/LICENSE.txt new file mode 100644 index 0000000..45672fa --- /dev/null +++ b/setasign/Fpdi/LICENSE.txt @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2020 Setasign GmbH & Co. KG, https://www.setasign.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/setasign/Fpdi/PdfParser/CrossReference/AbstractReader.php b/setasign/Fpdi/PdfParser/CrossReference/AbstractReader.php new file mode 100644 index 0000000..b54237b --- /dev/null +++ b/setasign/Fpdi/PdfParser/CrossReference/AbstractReader.php @@ -0,0 +1,95 @@ +parser = $parser; + $this->readTrailer(); + } + + /** + * Get the trailer dictionary. + * + * @return PdfDictionary + */ + public function getTrailer() + { + return $this->trailer; + } + + /** + * Read the trailer dictionary. + * + * @throws CrossReferenceException + * @throws PdfTypeException + */ + protected function readTrailer() + { + try { + $trailerKeyword = $this->parser->readValue(null, PdfToken::class); + if ($trailerKeyword->value !== 'trailer') { + throw new CrossReferenceException( + \sprintf( + 'Unexpected end of cross reference. "trailer"-keyword expected, got: %s.', + $trailerKeyword->value + ), + CrossReferenceException::UNEXPECTED_END + ); + } + } catch (PdfTypeException $e) { + throw new CrossReferenceException( + 'Unexpected end of cross reference. "trailer"-keyword expected, got an invalid object type.', + CrossReferenceException::UNEXPECTED_END, + $e + ); + } + + try { + $trailer = $this->parser->readValue(null, PdfDictionary::class); + } catch (PdfTypeException $e) { + throw new CrossReferenceException( + 'Unexpected end of cross reference. Trailer not found.', + CrossReferenceException::UNEXPECTED_END, + $e + ); + } + + $this->trailer = $trailer; + } +} diff --git a/setasign/Fpdi/PdfParser/CrossReference/CrossReference.php b/setasign/Fpdi/PdfParser/CrossReference/CrossReference.php new file mode 100644 index 0000000..89905a5 --- /dev/null +++ b/setasign/Fpdi/PdfParser/CrossReference/CrossReference.php @@ -0,0 +1,326 @@ +parser = $parser; + $this->fileHeaderOffset = $fileHeaderOffset; + + $offset = $this->findStartXref(); + $reader = null; + /** @noinspection TypeUnsafeComparisonInspection */ + while ($offset != false) { // By doing an unsafe comparsion we ignore faulty references to byte offset 0 + try { + $reader = $this->readXref($offset + $this->fileHeaderOffset); + } catch (CrossReferenceException $e) { + // sometimes the file header offset is part of the byte offsets, so let's retry by resetting it to zero. + if ($e->getCode() === CrossReferenceException::INVALID_DATA && $this->fileHeaderOffset !== 0) { + $this->fileHeaderOffset = 0; + $reader = $this->readXref($offset + $this->fileHeaderOffset); + } else { + throw $e; + } + } + + $trailer = $reader->getTrailer(); + $this->checkForEncryption($trailer); + $this->readers[] = $reader; + + if (isset($trailer->value['Prev'])) { + $offset = $trailer->value['Prev']->value; + } else { + $offset = false; + } + } + + // fix faulty sub-section header + if ($reader instanceof FixedReader) { + /** + * @var FixedReader $reader + */ + $reader->fixFaultySubSectionShift(); + } + + if ($reader === null) { + throw new CrossReferenceException('No cross-reference found.', CrossReferenceException::NO_XREF_FOUND); + } + } + + /** + * Get the size of the cross reference. + * + * @return integer + */ + public function getSize() + { + return $this->getTrailer()->value['Size']->value; + } + + /** + * Get the trailer dictionary. + * + * @return PdfDictionary + */ + public function getTrailer() + { + return $this->readers[0]->getTrailer(); + } + + /** + * Get the cross reference readser instances. + * + * @return ReaderInterface[] + */ + public function getReaders() + { + return $this->readers; + } + + /** + * Get the offset by an object number. + * + * @param int $objectNumber + * @return integer|bool + */ + public function getOffsetFor($objectNumber) + { + foreach ($this->getReaders() as $reader) { + $offset = $reader->getOffsetFor($objectNumber); + if ($offset !== false) { + return $offset; + } + } + + return false; + } + + /** + * Get an indirect object by its object number. + * + * @param int $objectNumber + * @return PdfIndirectObject + * @throws CrossReferenceException + */ + public function getIndirectObject($objectNumber) + { + $offset = $this->getOffsetFor($objectNumber); + if ($offset === false) { + throw new CrossReferenceException( + \sprintf('Object (id:%s) not found.', $objectNumber), + CrossReferenceException::OBJECT_NOT_FOUND + ); + } + + $parser = $this->parser; + + $parser->getTokenizer()->clearStack(); + $parser->getStreamReader()->reset($offset + $this->fileHeaderOffset); + + try { + /** @var PdfIndirectObject $object */ + $object = $parser->readValue(null, PdfIndirectObject::class); + } catch (PdfTypeException $e) { + throw new CrossReferenceException( + \sprintf('Object (id:%s) not found at location (%s).', $objectNumber, $offset), + CrossReferenceException::OBJECT_NOT_FOUND, + $e + ); + } + + if ($object->objectNumber !== $objectNumber) { + throw new CrossReferenceException( + \sprintf('Wrong object found, got %s while %s was expected.', $object->objectNumber, $objectNumber), + CrossReferenceException::OBJECT_NOT_FOUND + ); + } + + return $object; + } + + /** + * Read the cross-reference table at a given offset. + * + * Internally the method will try to evaluate the best reader for this cross-reference. + * + * @param int $offset + * @return ReaderInterface + * @throws CrossReferenceException + * @throws PdfTypeException + */ + protected function readXref($offset) + { + $this->parser->getStreamReader()->reset($offset); + $this->parser->getTokenizer()->clearStack(); + $initValue = $this->parser->readValue(); + + return $this->initReaderInstance($initValue); + } + + /** + * Get a cross-reference reader instance. + * + * @param PdfToken|PdfIndirectObject $initValue + * @return ReaderInterface|bool + * @throws CrossReferenceException + * @throws PdfTypeException + */ + protected function initReaderInstance($initValue) + { + $position = $this->parser->getStreamReader()->getPosition() + + $this->parser->getStreamReader()->getOffset() + $this->fileHeaderOffset; + + if ($initValue instanceof PdfToken && $initValue->value === 'xref') { + try { + return new FixedReader($this->parser); + } catch (CrossReferenceException $e) { + $this->parser->getStreamReader()->reset($position); + $this->parser->getTokenizer()->clearStack(); + + return new LineReader($this->parser); + } + } + + if ($initValue instanceof PdfIndirectObject) { + try { + $stream = PdfStream::ensure($initValue->value); + } catch (PdfTypeException $e) { + throw new CrossReferenceException( + 'Invalid object type at xref reference offset.', + CrossReferenceException::INVALID_DATA, + $e + ); + } + + $type = PdfDictionary::get($stream->value, 'Type'); + if ($type->value !== 'XRef') { + throw new CrossReferenceException( + 'The xref position points to an incorrect object type.', + CrossReferenceException::INVALID_DATA + ); + } + + $this->checkForEncryption($stream->value); + + throw new CrossReferenceException( + 'This PDF document probably uses a compression technique which is not supported by the ' . + 'free parser shipped with FPDI. (See https://www.setasign.com/fpdi-pdf-parser for more details)', + CrossReferenceException::COMPRESSED_XREF + ); + } + + throw new CrossReferenceException( + 'The xref position points to an incorrect object type.', + CrossReferenceException::INVALID_DATA + ); + } + + /** + * Check for encryption. + * + * @param PdfDictionary $dictionary + * @throws CrossReferenceException + */ + protected function checkForEncryption(PdfDictionary $dictionary) + { + if (isset($dictionary->value['Encrypt'])) { + throw new CrossReferenceException( + 'This PDF document is encrypted and cannot be processed with FPDI.', + CrossReferenceException::ENCRYPTED + ); + } + } + + /** + * Find the start position for the first cross-reference. + * + * @return int The byte-offset position of the first cross-reference. + * @throws CrossReferenceException + */ + protected function findStartXref() + { + $reader = $this->parser->getStreamReader(); + $reader->reset(-self::$trailerSearchLength, self::$trailerSearchLength); + + $buffer = $reader->getBuffer(false); + $pos = \strrpos($buffer, 'startxref'); + $addOffset = 9; + if ($pos === false) { + // Some corrupted documents uses startref, instead of startxref + $pos = \strrpos($buffer, 'startref'); + if ($pos === false) { + throw new CrossReferenceException( + 'Unable to find pointer to xref table', + CrossReferenceException::NO_STARTXREF_FOUND + ); + } + $addOffset = 8; + } + + $reader->setOffset($pos + $addOffset); + + try { + $value = $this->parser->readValue(null, PdfNumeric::class); + } catch (PdfTypeException $e) { + throw new CrossReferenceException( + 'Invalid data after startxref keyword.', + CrossReferenceException::INVALID_DATA, + $e + ); + } + + return $value->value; + } +} diff --git a/setasign/Fpdi/PdfParser/CrossReference/CrossReferenceException.php b/setasign/Fpdi/PdfParser/CrossReference/CrossReferenceException.php new file mode 100644 index 0000000..7d88d5d --- /dev/null +++ b/setasign/Fpdi/PdfParser/CrossReference/CrossReferenceException.php @@ -0,0 +1,79 @@ +reader = $parser->getStreamReader(); + $this->read(); + parent::__construct($parser); + } + + /** + * Get all subsection data. + * + * @return array + */ + public function getSubSections() + { + return $this->subSections; + } + + /** + * @inheritdoc + */ + public function getOffsetFor($objectNumber) + { + foreach ($this->subSections as $offset => list($startObject, $objectCount)) { + /** + * @var int $startObject + * @var int $objectCount + */ + if ($objectNumber >= $startObject && $objectNumber < ($startObject + $objectCount)) { + $position = $offset + 20 * ($objectNumber - $startObject); + $this->reader->ensure($position, 20); + $line = $this->reader->readBytes(20); + if ($line[17] === 'f') { + return false; + } + + return (int) \substr($line, 0, 10); + } + } + + return false; + } + + /** + * Read the cross-reference. + * + * This reader will only read the subsections in this method. The offsets were resolved individually by this + * information. + * + * @throws CrossReferenceException + */ + protected function read() + { + $subSections = []; + + $startObject = $entryCount = $lastLineStart = null; + $validityChecked = false; + while (($line = $this->reader->readLine(20)) !== false) { + if (\strpos($line, 'trailer') !== false) { + $this->reader->reset($lastLineStart); + break; + } + + // jump over if line content doesn't match the expected string + if (\sscanf($line, '%d %d', $startObject, $entryCount) !== 2) { + continue; + } + + $oldPosition = $this->reader->getPosition(); + $position = $oldPosition + $this->reader->getOffset(); + + if (!$validityChecked && $entryCount > 0) { + $nextLine = $this->reader->readBytes(21); + /* Check the next line for maximum of 20 bytes and not longer + * By catching 21 bytes and trimming the length should be still 21. + */ + if (\strlen(\trim($nextLine)) !== 21) { + throw new CrossReferenceException( + 'Cross-reference entries are larger than 20 bytes.', + CrossReferenceException::ENTRIES_TOO_LARGE + ); + } + + /* Check for less than 20 bytes: cut the line to 20 bytes and trim; have to result in exactly 18 bytes. + * If it would have less bytes the substring would get the first bytes of the next line which would + * evaluate to a 20 bytes long string after trimming. + */ + if (\strlen(\trim(\substr($nextLine, 0, 20))) !== 18) { + throw new CrossReferenceException( + 'Cross-reference entries are less than 20 bytes.', + CrossReferenceException::ENTRIES_TOO_SHORT + ); + } + + $validityChecked = true; + } + + $subSections[$position] = [$startObject, $entryCount]; + + $lastLineStart = $position + $entryCount * 20; + $this->reader->reset($lastLineStart); + } + + // reset after the last correct parsed line + $this->reader->reset($lastLineStart); + + if (\count($subSections) === 0) { + throw new CrossReferenceException( + 'No entries found in cross-reference.', + CrossReferenceException::NO_ENTRIES + ); + } + + $this->subSections = $subSections; + } + + /** + * Fixes an invalid object number shift. + * + * This method can be used to repair documents with an invalid subsection header: + * + * + * xref + * 1 7 + * 0000000000 65535 f + * 0000000009 00000 n + * 0000412075 00000 n + * 0000412172 00000 n + * 0000412359 00000 n + * 0000412417 00000 n + * 0000412468 00000 n + * + * + * It shall only be called on the first table. + * + * @return bool + */ + public function fixFaultySubSectionShift() + { + $subSections = $this->getSubSections(); + if (\count($subSections) > 1) { + return false; + } + + $subSection = \current($subSections); + if ($subSection[0] != 1) { + return false; + } + + if ($this->getOffsetFor(1) === false) { + foreach ($subSections as $offset => list($startObject, $objectCount)) { + $this->subSections[$offset] = [$startObject - 1, $objectCount]; + } + return true; + } + + return false; + } +} diff --git a/setasign/Fpdi/PdfParser/CrossReference/LineReader.php b/setasign/Fpdi/PdfParser/CrossReference/LineReader.php new file mode 100644 index 0000000..b6f0e42 --- /dev/null +++ b/setasign/Fpdi/PdfParser/CrossReference/LineReader.php @@ -0,0 +1,167 @@ + 20 bytes). + */ +class LineReader extends AbstractReader implements ReaderInterface +{ + /** + * The object offsets. + * + * @var array + */ + protected $offsets; + + /** + * LineReader constructor. + * + * @param PdfParser $parser + * @throws CrossReferenceException + */ + public function __construct(PdfParser $parser) + { + $this->read($this->extract($parser->getStreamReader())); + parent::__construct($parser); + } + + /** + * @inheritdoc + */ + public function getOffsetFor($objectNumber) + { + if (isset($this->offsets[$objectNumber])) { + return $this->offsets[$objectNumber][0]; + } + + return false; + } + + /** + * Get all found offsets. + * + * @return array + */ + public function getOffsets() + { + return $this->offsets; + } + + /** + * Extracts the cross reference data from the stream reader. + * + * @param StreamReader $reader + * @return string + * @throws CrossReferenceException + */ + protected function extract(StreamReader $reader) + { + $bytesPerCycle = 100; + $reader->reset(null, $bytesPerCycle); + + $cycles = 0; + do { + // 6 = length of "trailer" - 1 + $pos = \max(($bytesPerCycle * $cycles) - 6, 0); + $trailerPos = \strpos($reader->getBuffer(false), 'trailer', $pos); + $cycles++; + } while ($trailerPos === false && $reader->increaseLength($bytesPerCycle) !== false); + + if ($trailerPos === false) { + throw new CrossReferenceException( + 'Unexpected end of cross reference. "trailer"-keyword not found.', + CrossReferenceException::NO_TRAILER_FOUND + ); + } + + $xrefContent = \substr($reader->getBuffer(false), 0, $trailerPos); + $reader->reset($reader->getPosition() + $trailerPos); + + return $xrefContent; + } + + /** + * Read the cross-reference entries. + * + * @param string $xrefContent + * @throws CrossReferenceException + */ + protected function read($xrefContent) + { + // get eol markers in the first 100 bytes + \preg_match_all("/(\r\n|\n|\r)/", \substr($xrefContent, 0, 100), $m); + + if (\count($m[0]) === 0) { + throw new CrossReferenceException( + 'No data found in cross-reference.', + CrossReferenceException::INVALID_DATA + ); + } + + // count(array_count_values()) is faster then count(array_unique()) + // @see https://github.com/symfony/symfony/pull/23731 + // can be reverted for php7.2 + $differentLineEndings = \count(\array_count_values($m[0])); + if ($differentLineEndings > 1) { + $lines = \preg_split("/(\r\n|\n|\r)/", $xrefContent, -1, PREG_SPLIT_NO_EMPTY); + } else { + $lines = \explode($m[0][0], $xrefContent); + } + + unset($differentLineEndings, $m); + if (!\is_array($lines)) { + $this->offsets = []; + return; + } + + $start = 0; + $offsets = []; + + // trim all lines and remove empty lines + $lines = \array_filter(\array_map('\trim', $lines)); + foreach ($lines as $line) { + $pieces = \explode(' ', $line); + + switch (\count($pieces)) { + case 2: + $start = (int) $pieces[0]; + break; + + case 3: + switch ($pieces[2]) { + case 'n': + $offsets[$start] = [(int) $pieces[0], (int) $pieces[1]]; + $start++; + break 2; + case 'f': + $start++; + break 2; + } + // fall through if pieces doesn't match + + default: + throw new CrossReferenceException( + \sprintf('Unexpected data in xref table (%s)', \implode(' ', $pieces)), + CrossReferenceException::INVALID_DATA + ); + } + } + + $this->offsets = $offsets; + } +} diff --git a/setasign/Fpdi/PdfParser/CrossReference/ReaderInterface.php b/setasign/Fpdi/PdfParser/CrossReference/ReaderInterface.php new file mode 100644 index 0000000..d2dfdd0 --- /dev/null +++ b/setasign/Fpdi/PdfParser/CrossReference/ReaderInterface.php @@ -0,0 +1,34 @@ + + if ($ch === 126 && isset($data[$k + 1]) && (\ord($data[$k + 1]) & 0xFF) === 62) { + break; + } + + if ($ch === 122 /* z */ && $state === 0) { + $out .= \chr(0) . \chr(0) . \chr(0) . \chr(0); + continue; + } + + if ($ch < 33 /* ! */ || $ch > 117 /* u */) { + throw new Ascii85Exception( + 'Illegal character found while ASCII85 decode.', + Ascii85Exception::ILLEGAL_CHAR_FOUND + ); + } + + $chn[$state] = $ch - 33;/* ! */ + $state++; + + if ($state === 5) { + $state = 0; + $r = 0; + for ($j = 0; $j < 5; ++$j) { + /** @noinspection UnnecessaryCastingInspection */ + $r = (int)($r * 85 + $chn[$j]); + } + + $out .= \chr($r >> 24) + . \chr($r >> 16) + . \chr($r >> 8) + . \chr($r); + } + } + + if ($state === 1) { + throw new Ascii85Exception( + 'Illegal length while ASCII85 decode.', + Ascii85Exception::ILLEGAL_LENGTH + ); + } + + if ($state === 2) { + $r = $chn[0] * 85 * 85 * 85 * 85 + ($chn[1] + 1) * 85 * 85 * 85; + $out .= \chr($r >> 24); + } elseif ($state === 3) { + $r = $chn[0] * 85 * 85 * 85 * 85 + $chn[1] * 85 * 85 * 85 + ($chn[2] + 1) * 85 * 85; + $out .= \chr($r >> 24); + $out .= \chr($r >> 16); + } elseif ($state === 4) { + $r = $chn[0] * 85 * 85 * 85 * 85 + $chn[1] * 85 * 85 * 85 + $chn[2] * 85 * 85 + ($chn[3] + 1) * 85; + $out .= \chr($r >> 24); + $out .= \chr($r >> 16); + $out .= \chr($r >> 8); + } + + return $out; + } +} diff --git a/setasign/Fpdi/PdfParser/Filter/Ascii85Exception.php b/setasign/Fpdi/PdfParser/Filter/Ascii85Exception.php new file mode 100644 index 0000000..f4b6758 --- /dev/null +++ b/setasign/Fpdi/PdfParser/Filter/Ascii85Exception.php @@ -0,0 +1,27 @@ +')); + if ((\strlen($data) % 2) === 1) { + $data .= '0'; + } + + return \pack('H*', $data); + } + + /** + * Converts a string into ASCII hexadecimal representation. + * + * @param string $data The input string + * @param boolean $leaveEOD + * @return string + */ + public function encode($data, $leaveEOD = false) + { + $t = \unpack('H*', $data); + return \current($t) + . ($leaveEOD ? '' : '>'); + } +} diff --git a/setasign/Fpdi/PdfParser/Filter/FilterException.php b/setasign/Fpdi/PdfParser/Filter/FilterException.php new file mode 100644 index 0000000..c55a7a8 --- /dev/null +++ b/setasign/Fpdi/PdfParser/Filter/FilterException.php @@ -0,0 +1,23 @@ +extensionLoaded()) { + $oData = $data; + $data = (($data !== '') ? @\gzuncompress($data) : ''); + if ($data === false) { + // let's try if the checksum is CRC32 + $fh = fopen('php://temp', 'w+b'); + fwrite($fh, "\x1f\x8b\x08\x00\x00\x00\x00\x00" . $oData); + stream_filter_append($fh, 'zlib.inflate', STREAM_FILTER_READ, ['window' => 30]); + fseek($fh, 0); + $data = @stream_get_contents($fh); + fclose($fh); + + if ($data) { + return $data; + } + + // Try this fallback + $tries = 0; + + $oDataLen = strlen($oData); + while ($tries < 6 && ($data === false || (strlen($data) < ($oDataLen - $tries - 1)))) { + $data = @(gzinflate(substr($oData, $tries))); + $tries++; + } + + // let's use this fallback only if the $data is longer than the original data + if (strlen($data) > ($oDataLen - $tries - 1)) { + return $data; + } + + if (!$data) { + throw new FlateException( + 'Error while decompressing stream.', + FlateException::DECOMPRESS_ERROR + ); + } + } + } else { + throw new FlateException( + 'To handle FlateDecode filter, enable zlib support in PHP.', + FlateException::NO_ZLIB + ); + } + + return $data; + } +} diff --git a/setasign/Fpdi/PdfParser/Filter/FlateException.php b/setasign/Fpdi/PdfParser/Filter/FlateException.php new file mode 100644 index 0000000..d897ac8 --- /dev/null +++ b/setasign/Fpdi/PdfParser/Filter/FlateException.php @@ -0,0 +1,27 @@ +initsTable(); + + $this->data = $data; + $this->dataLength = \strlen($data); + + // Initialize pointers + $this->bytePointer = 0; + + $this->nextData = 0; + $this->nextBits = 0; + + $oldCode = 0; + + $uncompData = ''; + + while (($code = $this->getNextCode()) !== 257) { + if ($code === 256) { + $this->initsTable(); + $code = $this->getNextCode(); + + if ($code === 257) { + break; + } + + $uncompData .= $this->sTable[$code]; + $oldCode = $code; + } else { + if ($code < $this->tIdx) { + $string = $this->sTable[$code]; + $uncompData .= $string; + + $this->addStringToTable($this->sTable[$oldCode], $string[0]); + $oldCode = $code; + } else { + $string = $this->sTable[$oldCode]; + $string .= $string[0]; + $uncompData .= $string; + + $this->addStringToTable($string); + $oldCode = $code; + } + } + } + + return $uncompData; + } + + /** + * Initialize the string table. + */ + protected function initsTable() + { + $this->sTable = []; + + for ($i = 0; $i < 256; $i++) { + $this->sTable[$i] = \chr($i); + } + + $this->tIdx = 258; + $this->bitsToGet = 9; + } + + /** + * Add a new string to the string table. + * + * @param string $oldString + * @param string $newString + */ + protected function addStringToTable($oldString, $newString = '') + { + $string = $oldString . $newString; + + // Add this new String to the table + $this->sTable[$this->tIdx++] = $string; + + if ($this->tIdx === 511) { + $this->bitsToGet = 10; + } elseif ($this->tIdx === 1023) { + $this->bitsToGet = 11; + } elseif ($this->tIdx === 2047) { + $this->bitsToGet = 12; + } + } + + /** + * Returns the next 9, 10, 11 or 12 bits. + * + * @return integer + */ + protected function getNextCode() + { + if ($this->bytePointer === $this->dataLength) { + return 257; + } + + $this->nextData = ($this->nextData << 8) | (\ord($this->data[$this->bytePointer++]) & 0xff); + $this->nextBits += 8; + + if ($this->nextBits < $this->bitsToGet) { + $this->nextData = ($this->nextData << 8) | (\ord($this->data[$this->bytePointer++]) & 0xff); + $this->nextBits += 8; + } + + $code = ($this->nextData >> ($this->nextBits - $this->bitsToGet)) & $this->andTable[$this->bitsToGet - 9]; + $this->nextBits -= $this->bitsToGet; + + return $code; + } +} diff --git a/setasign/Fpdi/PdfParser/Filter/LzwException.php b/setasign/Fpdi/PdfParser/Filter/LzwException.php new file mode 100644 index 0000000..6ebad4f --- /dev/null +++ b/setasign/Fpdi/PdfParser/Filter/LzwException.php @@ -0,0 +1,22 @@ +streamReader = $streamReader; + $this->tokenizer = new Tokenizer($streamReader); + } + + /** + * Removes cycled references. + * + * @internal + */ + public function cleanUp() + { + $this->xref = null; + } + + /** + * Get the stream reader instance. + * + * @return StreamReader + */ + public function getStreamReader() + { + return $this->streamReader; + } + + /** + * Get the tokenizer instance. + * + * @return Tokenizer + */ + public function getTokenizer() + { + return $this->tokenizer; + } + + /** + * Resolves the file header. + * + * @throws PdfParserException + * @return int + */ + protected function resolveFileHeader() + { + if ($this->fileHeader) { + return $this->fileHeaderOffset; + } + + $this->streamReader->reset(0); + $maxIterations = 1000; + while (true) { + $buffer = $this->streamReader->getBuffer(false); + $offset = \strpos($buffer, '%PDF-'); + if ($offset === false) { + if (!$this->streamReader->increaseLength(100) || (--$maxIterations === 0)) { + throw new PdfParserException( + 'Unable to find PDF file header.', + PdfParserException::FILE_HEADER_NOT_FOUND + ); + } + continue; + } + break; + } + + $this->fileHeaderOffset = $offset; + $this->streamReader->setOffset($offset); + + $this->fileHeader = \trim($this->streamReader->readLine()); + return $this->fileHeaderOffset; + } + + /** + * Get the cross reference instance. + * + * @return CrossReference + * @throws CrossReferenceException + * @throws PdfParserException + */ + public function getCrossReference() + { + if ($this->xref === null) { + $this->xref = new CrossReference($this, $this->resolveFileHeader()); + } + + return $this->xref; + } + + /** + * Get the PDF version. + * + * @return int[] An array of major and minor version. + * @throws PdfParserException + */ + public function getPdfVersion() + { + $this->resolveFileHeader(); + + if (\preg_match('/%PDF-(\d)\.(\d)/', $this->fileHeader, $result) === 0) { + throw new PdfParserException( + 'Unable to extract PDF version from file header.', + PdfParserException::PDF_VERSION_NOT_FOUND + ); + } + list(, $major, $minor) = $result; + + $catalog = $this->getCatalog(); + if (isset($catalog->value['Version'])) { + $versionParts = \explode( + '.', + PdfName::unescape(PdfType::resolve($catalog->value['Version'], $this)->value) + ); + if (count($versionParts) === 2) { + list($major, $minor) = $versionParts; + } + } + + return [(int) $major, (int) $minor]; + } + + /** + * Get the catalog dictionary. + * + * @return PdfDictionary + * @throws Type\PdfTypeException + * @throws CrossReferenceException + * @throws PdfParserException + */ + public function getCatalog() + { + $trailer = $this->getCrossReference()->getTrailer(); + + $catalog = PdfType::resolve(PdfDictionary::get($trailer, 'Root'), $this); + + return PdfDictionary::ensure($catalog); + } + + /** + * Get an indirect object by its object number. + * + * @param int $objectNumber + * @param bool $cache + * @return PdfIndirectObject + * @throws CrossReferenceException + * @throws PdfParserException + */ + public function getIndirectObject($objectNumber, $cache = false) + { + $objectNumber = (int) $objectNumber; + if (isset($this->objects[$objectNumber])) { + return $this->objects[$objectNumber]; + } + + $object = $this->getCrossReference()->getIndirectObject($objectNumber); + + if ($cache) { + $this->objects[$objectNumber] = $object; + } + + return $object; + } + + /** + * Read a PDF value. + * + * @param null|bool|string $token + * @param null|string $expectedType + * @return false|PdfArray|PdfBoolean|PdfDictionary|PdfHexString|PdfIndirectObject|PdfIndirectObjectReference|PdfName|PdfNull|PdfNumeric|PdfStream|PdfString|PdfToken + * @throws Type\PdfTypeException + */ + public function readValue($token = null, $expectedType = null) + { + if ($token === null) { + $token = $this->tokenizer->getNextToken(); + } + + if ($token === false) { + if ($expectedType !== null) { + throw new Type\PdfTypeException('Got unexpected token type.', Type\PdfTypeException::INVALID_DATA_TYPE); + } + return false; + } + + switch ($token) { + case '(': + $this->ensureExpectedType($token, $expectedType); + return PdfString::parse($this->streamReader); + + case '<': + if ($this->streamReader->getByte() === '<') { + $this->ensureExpectedType('<<', $expectedType); + $this->streamReader->addOffset(1); + return PdfDictionary::parse($this->tokenizer, $this->streamReader, $this); + } + + $this->ensureExpectedType($token, $expectedType); + return PdfHexString::parse($this->streamReader); + + case '/': + $this->ensureExpectedType($token, $expectedType); + return PdfName::parse($this->tokenizer, $this->streamReader); + + case '[': + $this->ensureExpectedType($token, $expectedType); + return PdfArray::parse($this->tokenizer, $this); + + default: + if (\is_numeric($token)) { + if (($token2 = $this->tokenizer->getNextToken()) !== false) { + if (\is_numeric($token2) && ($token3 = $this->tokenizer->getNextToken()) !== false) { + switch ($token3) { + case 'obj': + if ($expectedType !== null && $expectedType !== PdfIndirectObject::class) { + throw new Type\PdfTypeException( + 'Got unexpected token type.', + Type\PdfTypeException::INVALID_DATA_TYPE + ); + } + + return PdfIndirectObject::parse( + (int) $token, + (int) $token2, + $this, + $this->tokenizer, + $this->streamReader + ); + case 'R': + if ( + $expectedType !== null && + $expectedType !== PdfIndirectObjectReference::class + ) { + throw new Type\PdfTypeException( + 'Got unexpected token type.', + Type\PdfTypeException::INVALID_DATA_TYPE + ); + } + + return PdfIndirectObjectReference::create((int) $token, (int) $token2); + } + + $this->tokenizer->pushStack($token3); + } + + $this->tokenizer->pushStack($token2); + } + + if ($expectedType !== null && $expectedType !== PdfNumeric::class) { + throw new Type\PdfTypeException( + 'Got unexpected token type.', + Type\PdfTypeException::INVALID_DATA_TYPE + ); + } + return PdfNumeric::create($token + 0); + } + + if ($token === 'true' || $token === 'false') { + $this->ensureExpectedType($token, $expectedType); + return PdfBoolean::create($token === 'true'); + } + + if ($token === 'null') { + $this->ensureExpectedType($token, $expectedType); + return new PdfNull(); + } + + if ($expectedType !== null && $expectedType !== PdfToken::class) { + throw new Type\PdfTypeException( + 'Got unexpected token type.', + Type\PdfTypeException::INVALID_DATA_TYPE + ); + } + + $v = new PdfToken(); + $v->value = $token; + + return $v; + } + } + + /** + * Ensures that the token will evaluate to an expected object type (or not). + * + * @param string $token + * @param string|null $expectedType + * @return bool + * @throws Type\PdfTypeException + */ + private function ensureExpectedType($token, $expectedType) + { + static $mapping = [ + '(' => PdfString::class, + '<' => PdfHexString::class, + '<<' => PdfDictionary::class, + '/' => PdfName::class, + '[' => PdfArray::class, + 'true' => PdfBoolean::class, + 'false' => PdfBoolean::class, + 'null' => PdfNull::class + ]; + + if ($expectedType === null || $mapping[$token] === $expectedType) { + return true; + } + + throw new Type\PdfTypeException('Got unexpected token type.', Type\PdfTypeException::INVALID_DATA_TYPE); + } +} diff --git a/setasign/Fpdi/PdfParser/PdfParserException.php b/setasign/Fpdi/PdfParser/PdfParserException.php new file mode 100644 index 0000000..6d034d8 --- /dev/null +++ b/setasign/Fpdi/PdfParser/PdfParserException.php @@ -0,0 +1,49 @@ +stream = $stream; + $this->closeStream = $closeStream; + $this->reset(); + } + + /** + * The destructor. + */ + public function __destruct() + { + $this->cleanUp(); + } + + /** + * Closes the file handle. + */ + public function cleanUp() + { + if ($this->closeStream && is_resource($this->stream)) { + \fclose($this->stream); + } + } + + /** + * Returns the byte length of the buffer. + * + * @param bool $atOffset + * @return int + */ + public function getBufferLength($atOffset = false) + { + if ($atOffset === false) { + return $this->bufferLength; + } + + return $this->bufferLength - $this->offset; + } + + /** + * Get the current position in the stream. + * + * @return int + */ + public function getPosition() + { + return $this->position; + } + + /** + * Returns the current buffer. + * + * @param bool $atOffset + * @return string + */ + public function getBuffer($atOffset = true) + { + if ($atOffset === false) { + return $this->buffer; + } + + $string = \substr($this->buffer, $this->offset); + + return (string) $string; + } + + /** + * Gets a byte at a specific position in the buffer. + * + * If the position is invalid the method will return false. + * + * If the $position parameter is set to null the value of $this->offset will be used. + * + * @param int|null $position + * @return string|bool + */ + public function getByte($position = null) + { + $position = (int) ($position !== null ? $position : $this->offset); + if ( + $position >= $this->bufferLength + && (!$this->increaseLength() || $position >= $this->bufferLength) + ) { + return false; + } + + return $this->buffer[$position]; + } + + /** + * Returns a byte at a specific position, and set the offset to the next byte position. + * + * If the position is invalid the method will return false. + * + * If the $position parameter is set to null the value of $this->offset will be used. + * + * @param int|null $position + * @return string|bool + */ + public function readByte($position = null) + { + if ($position !== null) { + $position = (int) $position; + // check if needed bytes are available in the current buffer + if (!($position >= $this->position && $position < $this->position + $this->bufferLength)) { + $this->reset($position); + $offset = $this->offset; + } else { + $offset = $position - $this->position; + } + } else { + $offset = $this->offset; + } + + if ( + $offset >= $this->bufferLength + && ((!$this->increaseLength()) || $offset >= $this->bufferLength) + ) { + return false; + } + + $this->offset = $offset + 1; + return $this->buffer[$offset]; + } + + /** + * Read bytes from the current or a specific offset position and set the internal pointer to the next byte. + * + * If the position is invalid the method will return false. + * + * If the $position parameter is set to null the value of $this->offset will be used. + * + * @param int $length + * @param int|null $position + * @return string|false + */ + public function readBytes($length, $position = null) + { + $length = (int) $length; + if ($position !== null) { + // check if needed bytes are available in the current buffer + if (!($position >= $this->position && $position < $this->position + $this->bufferLength)) { + $this->reset($position, $length); + $offset = $this->offset; + } else { + $offset = $position - $this->position; + } + } else { + $offset = $this->offset; + } + + if ( + ($offset + $length) > $this->bufferLength + && ((!$this->increaseLength($length)) || ($offset + $length) > $this->bufferLength) + ) { + return false; + } + + $bytes = \substr($this->buffer, $offset, $length); + $this->offset = $offset + $length; + + return $bytes; + } + + /** + * Read a line from the current position. + * + * @param int $length + * @return string|bool + */ + public function readLine($length = 1024) + { + if ($this->ensureContent() === false) { + return false; + } + + $line = ''; + while ($this->ensureContent()) { + $char = $this->readByte(); + + if ($char === "\n") { + break; + } + + if ($char === "\r") { + if ($this->getByte() === "\n") { + $this->addOffset(1); + } + break; + } + + $line .= $char; + + if (\strlen($line) >= $length) { + break; + } + } + + return $line; + } + + /** + * Set the offset position in the current buffer. + * + * @param int $offset + */ + public function setOffset($offset) + { + if ($offset > $this->bufferLength || $offset < 0) { + throw new \OutOfRangeException( + \sprintf('Offset (%s) out of range (length: %s)', $offset, $this->bufferLength) + ); + } + + $this->offset = (int) $offset; + } + + /** + * Returns the current offset in the current buffer. + * + * @return int + */ + public function getOffset() + { + return $this->offset; + } + + /** + * Add an offset to the current offset. + * + * @param int $offset + */ + public function addOffset($offset) + { + $this->setOffset($this->offset + $offset); + } + + /** + * Make sure that there is at least one character beyond the current offset in the buffer. + * + * @return bool + */ + public function ensureContent() + { + while ($this->offset >= $this->bufferLength) { + if (!$this->increaseLength()) { + return false; + } + } + return true; + } + + /** + * Returns the stream. + * + * @return resource + */ + public function getStream() + { + return $this->stream; + } + + /** + * Gets the total available length. + * + * @return int + */ + public function getTotalLength() + { + if ($this->totalLength === null) { + $stat = \fstat($this->stream); + $this->totalLength = $stat['size']; + } + + return $this->totalLength; + } + + /** + * Resets the buffer to a position and re-read the buffer with the given length. + * + * If the $pos parameter is negative the start buffer position will be the $pos'th position from + * the end of the file. + * + * If the $pos parameter is negative and the absolute value is bigger then the totalLength of + * the file $pos will set to zero. + * + * @param int|null $pos Start position of the new buffer + * @param int $length Length of the new buffer. Mustn't be negative + */ + public function reset($pos = 0, $length = 200) + { + if ($pos === null) { + $pos = $this->position + $this->offset; + } elseif ($pos < 0) { + $pos = \max(0, $this->getTotalLength() + $pos); + } + + \fseek($this->stream, $pos); + + $this->position = $pos; + $this->buffer = $length > 0 ? \fread($this->stream, $length) : ''; + $this->bufferLength = \strlen($this->buffer); + $this->offset = 0; + + // If a stream wrapper is in use it is possible that + // length values > 8096 will be ignored, so use the + // increaseLength()-method to correct that behavior + if ($this->bufferLength < $length && $this->increaseLength($length - $this->bufferLength)) { + // increaseLength parameter is $minLength, so cut to have only the required bytes in the buffer + $this->buffer = \substr($this->buffer, 0, $length); + $this->bufferLength = \strlen($this->buffer); + } + } + + /** + * Ensures bytes in the buffer with a specific length and location in the file. + * + * @param int $pos + * @param int $length + * @see reset() + */ + public function ensure($pos, $length) + { + if ( + $pos >= $this->position + && $pos < ($this->position + $this->bufferLength) + && ($this->position + $this->bufferLength) >= ($pos + $length) + ) { + $this->offset = $pos - $this->position; + } else { + $this->reset($pos, $length); + } + } + + /** + * Forcefully read more data into the buffer. + * + * @param int $minLength + * @return bool Returns false if the stream reaches the end + */ + public function increaseLength($minLength = 100) + { + $length = \max($minLength, 100); + + if (\feof($this->stream) || $this->getTotalLength() === $this->position + $this->bufferLength) { + return false; + } + + $newLength = $this->bufferLength + $length; + do { + $this->buffer .= \fread($this->stream, $newLength - $this->bufferLength); + $this->bufferLength = \strlen($this->buffer); + } while (($this->bufferLength !== $newLength) && !\feof($this->stream)); + + return true; + } +} diff --git a/setasign/Fpdi/PdfParser/Tokenizer.php b/setasign/Fpdi/PdfParser/Tokenizer.php new file mode 100644 index 0000000..a3bcd01 --- /dev/null +++ b/setasign/Fpdi/PdfParser/Tokenizer.php @@ -0,0 +1,154 @@ +streamReader = $streamReader; + } + + /** + * Get the stream reader instance. + * + * @return StreamReader + */ + public function getStreamReader() + { + return $this->streamReader; + } + + /** + * Clear the token stack. + */ + public function clearStack() + { + $this->stack = []; + } + + /** + * Push a token onto the stack. + * + * @param string $token + */ + public function pushStack($token) + { + $this->stack[] = $token; + } + + /** + * Get next token. + * + * @return bool|string + */ + public function getNextToken() + { + $token = \array_pop($this->stack); + if ($token !== null) { + return $token; + } + + if (($byte = $this->streamReader->readByte()) === false) { + return false; + } + + if (\in_array($byte, ["\x20", "\x0A", "\x0D", "\x0C", "\x09", "\x00"], true)) { + if ($this->leapWhiteSpaces() === false) { + return false; + } + $byte = $this->streamReader->readByte(); + } + + switch ($byte) { + case '/': + case '[': + case ']': + case '(': + case ')': + case '{': + case '}': + case '<': + case '>': + return $byte; + case '%': + $this->streamReader->readLine(); + return $this->getNextToken(); + } + + /* This way is faster than checking single bytes. + */ + $bufferOffset = $this->streamReader->getOffset(); + do { + $lastBuffer = $this->streamReader->getBuffer(false); + $pos = \strcspn( + $lastBuffer, + "\x00\x09\x0A\x0C\x0D\x20()<>[]{}/%", + $bufferOffset + ); + } while ( + // Break the loop if a delimiter or white space char is matched + // in the current buffer or increase the buffers length + $lastBuffer !== false && + ( + $bufferOffset + $pos === \strlen($lastBuffer) && + $this->streamReader->increaseLength() + ) + ); + + $result = \substr($lastBuffer, $bufferOffset - 1, $pos + 1); + $this->streamReader->setOffset($bufferOffset + $pos); + + return $result; + } + + /** + * Leap white spaces. + * + * @return boolean + */ + public function leapWhiteSpaces() + { + do { + if (!$this->streamReader->ensureContent()) { + return false; + } + + $buffer = $this->streamReader->getBuffer(false); + $matches = \strspn($buffer, "\x20\x0A\x0C\x0D\x09\x00", $this->streamReader->getOffset()); + if ($matches > 0) { + $this->streamReader->addOffset($matches); + } + } while ($this->streamReader->getOffset() >= $this->streamReader->getBufferLength()); + + return true; + } +} diff --git a/setasign/Fpdi/PdfParser/Type/PdfArray.php b/setasign/Fpdi/PdfParser/Type/PdfArray.php new file mode 100644 index 0000000..5d0bbbd --- /dev/null +++ b/setasign/Fpdi/PdfParser/Type/PdfArray.php @@ -0,0 +1,85 @@ +getNextToken()) !== ']') { + if ($token === false || ($value = $parser->readValue($token)) === false) { + return false; + } + + $result[] = $value; + } + + $v = new self(); + $v->value = $result; + + return $v; + } + + /** + * Helper method to create an instance. + * + * @param PdfType[] $values + * @return self + */ + public static function create(array $values = []) + { + $v = new self(); + $v->value = $values; + + return $v; + } + + /** + * Ensures that the passed array is a PdfArray instance with a (optional) specific size. + * + * @param mixed $array + * @param null|int $size + * @return self + * @throws PdfTypeException + */ + public static function ensure($array, $size = null) + { + $result = PdfType::ensureType(self::class, $array, 'Array value expected.'); + + if ($size !== null && \count($array->value) !== $size) { + throw new PdfTypeException( + \sprintf('Array with %s entries expected.', $size), + PdfTypeException::INVALID_DATA_SIZE + ); + } + + return $result; + } +} diff --git a/setasign/Fpdi/PdfParser/Type/PdfBoolean.php b/setasign/Fpdi/PdfParser/Type/PdfBoolean.php new file mode 100644 index 0000000..ba4233a --- /dev/null +++ b/setasign/Fpdi/PdfParser/Type/PdfBoolean.php @@ -0,0 +1,42 @@ +value = (bool) $value; + return $v; + } + + /** + * Ensures that the passed value is a PdfBoolean instance. + * + * @param mixed $value + * @return self + * @throws PdfTypeException + */ + public static function ensure($value) + { + return PdfType::ensureType(self::class, $value, 'Boolean value expected.'); + } +} diff --git a/setasign/Fpdi/PdfParser/Type/PdfDictionary.php b/setasign/Fpdi/PdfParser/Type/PdfDictionary.php new file mode 100644 index 0000000..2818842 --- /dev/null +++ b/setasign/Fpdi/PdfParser/Type/PdfDictionary.php @@ -0,0 +1,134 @@ +getNextToken(); + if ($token === '>' && $streamReader->getByte() === '>') { + $streamReader->addOffset(1); + break; + } + + $key = $parser->readValue($token); + if ($key === false) { + return false; + } + + // ensure the first value to be a Name object + if (!($key instanceof PdfName)) { + $lastToken = null; + // ignore all other entries and search for the closing brackets + while (($token = $tokenizer->getNextToken()) !== '>' && $token !== false && $lastToken !== '>') { + $lastToken = $token; + } + + if ($token === false) { + return false; + } + + break; + } + + + $value = $parser->readValue(); + if ($value === false) { + return false; + } + + if ($value instanceof PdfNull) { + continue; + } + + // catch missing value + if ($value instanceof PdfToken && $value->value === '>' && $streamReader->getByte() === '>') { + $streamReader->addOffset(1); + break; + } + + $entries[$key->value] = $value; + } + + $v = new self(); + $v->value = $entries; + + return $v; + } + + /** + * Helper method to create an instance. + * + * @param PdfType[] $entries The keys are the name entries of the dictionary. + * @return self + */ + public static function create(array $entries = []) + { + $v = new self(); + $v->value = $entries; + + return $v; + } + + /** + * Get a value by its key from a dictionary or a default value. + * + * @param mixed $dictionary + * @param string $key + * @param PdfType|null $default + * @return PdfNull|PdfType + * @throws PdfTypeException + */ + public static function get($dictionary, $key, PdfType $default = null) + { + $dictionary = self::ensure($dictionary); + + if (isset($dictionary->value[$key])) { + return $dictionary->value[$key]; + } + + return $default === null + ? new PdfNull() + : $default; + } + + /** + * Ensures that the passed value is a PdfDictionary instance. + * + * @param mixed $dictionary + * @return self + * @throws PdfTypeException + */ + public static function ensure($dictionary) + { + return PdfType::ensureType(self::class, $dictionary, 'Dictionary value expected.'); + } +} diff --git a/setasign/Fpdi/PdfParser/Type/PdfHexString.php b/setasign/Fpdi/PdfParser/Type/PdfHexString.php new file mode 100644 index 0000000..0084ada --- /dev/null +++ b/setasign/Fpdi/PdfParser/Type/PdfHexString.php @@ -0,0 +1,77 @@ +getOffset(); + + while (true) { + $buffer = $streamReader->getBuffer(false); + $pos = \strpos($buffer, '>', $bufferOffset); + if ($pos === false) { + if (!$streamReader->increaseLength()) { + return false; + } + continue; + } + + break; + } + + $result = \substr($buffer, $bufferOffset, $pos - $bufferOffset); + $streamReader->setOffset($pos + 1); + + $v = new self(); + $v->value = $result; + + return $v; + } + + /** + * Helper method to create an instance. + * + * @param string $string The hex encoded string. + * @return self + */ + public static function create($string) + { + $v = new self(); + $v->value = $string; + + return $v; + } + + /** + * Ensures that the passed value is a PdfHexString instance. + * + * @param mixed $hexString + * @return self + * @throws PdfTypeException + */ + public static function ensure($hexString) + { + return PdfType::ensureType(self::class, $hexString, 'Hex string value expected.'); + } +} diff --git a/setasign/Fpdi/PdfParser/Type/PdfIndirectObject.php b/setasign/Fpdi/PdfParser/Type/PdfIndirectObject.php new file mode 100644 index 0000000..15786d0 --- /dev/null +++ b/setasign/Fpdi/PdfParser/Type/PdfIndirectObject.php @@ -0,0 +1,103 @@ +readValue(); + if ($value === false) { + return false; + } + + $nextToken = $tokenizer->getNextToken(); + if ($nextToken === 'stream') { + $value = PdfStream::parse($value, $reader, $parser); + } elseif ($nextToken !== false) { + $tokenizer->pushStack($nextToken); + } + + $v = new self(); + $v->objectNumber = (int) $objectNumberToken; + $v->generationNumber = (int) $objectGenerationNumberToken; + $v->value = $value; + + return $v; + } + + /** + * Helper method to create an instance. + * + * @param int $objectNumber + * @param int $generationNumber + * @param PdfType $value + * @return self + */ + public static function create($objectNumber, $generationNumber, PdfType $value) + { + $v = new self(); + $v->objectNumber = (int) $objectNumber; + $v->generationNumber = (int) $generationNumber; + $v->value = $value; + + return $v; + } + + /** + * Ensures that the passed value is a PdfIndirectObject instance. + * + * @param mixed $indirectObject + * @return self + * @throws PdfTypeException + */ + public static function ensure($indirectObject) + { + return PdfType::ensureType(self::class, $indirectObject, 'Indirect object expected.'); + } + + /** + * The object number. + * + * @var int + */ + public $objectNumber; + + /** + * The generation number. + * + * @var int + */ + public $generationNumber; +} diff --git a/setasign/Fpdi/PdfParser/Type/PdfIndirectObjectReference.php b/setasign/Fpdi/PdfParser/Type/PdfIndirectObjectReference.php new file mode 100644 index 0000000..2725d0c --- /dev/null +++ b/setasign/Fpdi/PdfParser/Type/PdfIndirectObjectReference.php @@ -0,0 +1,52 @@ +value = (int) $objectNumber; + $v->generationNumber = (int) $generationNumber; + + return $v; + } + + /** + * Ensures that the passed value is a PdfIndirectObject instance. + * + * @param mixed $value + * @return self + * @throws PdfTypeException + */ + public static function ensure($value) + { + return PdfType::ensureType(self::class, $value, 'Indirect reference value expected.'); + } + + /** + * The generation number. + * + * @var int + */ + public $generationNumber; +} diff --git a/setasign/Fpdi/PdfParser/Type/PdfName.php b/setasign/Fpdi/PdfParser/Type/PdfName.php new file mode 100644 index 0000000..194a13f --- /dev/null +++ b/setasign/Fpdi/PdfParser/Type/PdfName.php @@ -0,0 +1,82 @@ +getByte(), "\x00\x09\x0A\x0C\x0D\x20()<>[]{}/%") === 0) { + $v->value = (string) $tokenizer->getNextToken(); + return $v; + } + + $v->value = ''; + return $v; + } + + /** + * Unescapes a name string. + * + * @param string $value + * @return string + */ + public static function unescape($value) + { + if (strpos($value, '#') === false) { + return $value; + } + + return preg_replace_callback('/#([a-fA-F\d]{2})/', function ($matches) { + return chr(hexdec($matches[1])); + }, $value); + } + + /** + * Helper method to create an instance. + * + * @param string $string + * @return self + */ + public static function create($string) + { + $v = new self(); + $v->value = $string; + + return $v; + } + + /** + * Ensures that the passed value is a PdfName instance. + * + * @param mixed $name + * @return self + * @throws PdfTypeException + */ + public static function ensure($name) + { + return PdfType::ensureType(self::class, $name, 'Name value expected.'); + } +} diff --git a/setasign/Fpdi/PdfParser/Type/PdfNull.php b/setasign/Fpdi/PdfParser/Type/PdfNull.php new file mode 100644 index 0000000..0c4c108 --- /dev/null +++ b/setasign/Fpdi/PdfParser/Type/PdfNull.php @@ -0,0 +1,19 @@ +value = $value + 0; + + return $v; + } + + /** + * Ensures that the passed value is a PdfNumeric instance. + * + * @param mixed $value + * @return self + * @throws PdfTypeException + */ + public static function ensure($value) + { + return PdfType::ensureType(self::class, $value, 'Numeric value expected.'); + } +} diff --git a/setasign/Fpdi/PdfParser/Type/PdfStream.php b/setasign/Fpdi/PdfParser/Type/PdfStream.php new file mode 100644 index 0000000..6d4c5a8 --- /dev/null +++ b/setasign/Fpdi/PdfParser/Type/PdfStream.php @@ -0,0 +1,326 @@ +value = $dictionary; + $v->reader = $reader; + $v->parser = $parser; + + $offset = $reader->getOffset(); + + // Find the first "newline" + while (($firstByte = $reader->getByte($offset)) !== false) { + if ($firstByte !== "\n" && $firstByte !== "\r") { + $offset++; + } else { + break; + } + } + + if ($firstByte === false) { + throw new PdfTypeException( + 'Unable to parse stream data. No newline after the stream keyword found.', + PdfTypeException::NO_NEWLINE_AFTER_STREAM_KEYWORD + ); + } + + $sndByte = $reader->getByte($offset + 1); + if ($firstByte === "\n" || $firstByte === "\r") { + $offset++; + } + + if ($sndByte === "\n" && $firstByte !== "\n") { + $offset++; + } + + $reader->setOffset($offset); + // let's only save the byte-offset and read the stream only when needed + $v->stream = $reader->getPosition() + $reader->getOffset(); + + return $v; + } + + /** + * Helper method to create an instance. + * + * @param PdfDictionary $dictionary + * @param string $stream + * @return self + */ + public static function create(PdfDictionary $dictionary, $stream) + { + $v = new self(); + $v->value = $dictionary; + $v->stream = (string) $stream; + + return $v; + } + + /** + * Ensures that the passed value is a PdfStream instance. + * + * @param mixed $stream + * @return self + * @throws PdfTypeException + */ + public static function ensure($stream) + { + return PdfType::ensureType(self::class, $stream, 'Stream value expected.'); + } + + /** + * The stream or its byte-offset position. + * + * @var int|string + */ + protected $stream; + + /** + * The stream reader instance. + * + * @var StreamReader|null + */ + protected $reader; + + /** + * The PDF parser instance. + * + * @var PdfParser + */ + protected $parser; + + /** + * Get the stream data. + * + * @param bool $cache Whether cache the stream data or not. + * @return bool|string + * @throws PdfTypeException + * @throws CrossReferenceException + * @throws PdfParserException + */ + public function getStream($cache = false) + { + if (\is_int($this->stream)) { + $length = PdfDictionary::get($this->value, 'Length'); + if ($this->parser !== null) { + $length = PdfType::resolve($length, $this->parser); + } + + if (!($length instanceof PdfNumeric) || $length->value === 0) { + $this->reader->reset($this->stream, 100000); + $buffer = $this->extractStream(); + } else { + $this->reader->reset($this->stream, $length->value); + $buffer = $this->reader->getBuffer(false); + if ($this->parser !== null) { + $this->reader->reset($this->stream + strlen($buffer)); + $this->parser->getTokenizer()->clearStack(); + $token = $this->parser->readValue(); + if ($token === false || !($token instanceof PdfToken) || $token->value !== 'endstream') { + $this->reader->reset($this->stream, 100000); + $buffer = $this->extractStream(); + $this->reader->reset($this->stream + strlen($buffer)); + } + } + } + + if ($cache === false) { + return $buffer; + } + + $this->stream = $buffer; + $this->reader = null; + } + + return $this->stream; + } + + /** + * Extract the stream "manually". + * + * @return string + * @throws PdfTypeException + */ + protected function extractStream() + { + while (true) { + $buffer = $this->reader->getBuffer(false); + $length = \strpos($buffer, 'endstream'); + if ($length === false) { + if (!$this->reader->increaseLength(100000)) { + throw new PdfTypeException('Cannot extract stream.'); + } + continue; + } + break; + } + + $buffer = \substr($buffer, 0, $length); + $lastByte = \substr($buffer, -1); + + /* Check for EOL marker = + * CARRIAGE RETURN (\r) and a LINE FEED (\n) or just a LINE FEED (\n}, + * and not by a CARRIAGE RETURN (\r) alone + */ + if ($lastByte === "\n") { + $buffer = \substr($buffer, 0, -1); + + $lastByte = \substr($buffer, -1); + if ($lastByte === "\r") { + $buffer = \substr($buffer, 0, -1); + } + } + + // There are streams in the wild, which have only white signs in them but need to be parsed manually due + // to a problem encountered before (e.g. Length === 0). We should set them to empty streams to avoid problems + // in further processing (e.g. applying of filters). + if (trim($buffer) === '') { + $buffer = ''; + } + + return $buffer; + } + + /** + * Get the unfiltered stream data. + * + * @return string + * @throws FilterException + * @throws PdfParserException + */ + public function getUnfilteredStream() + { + $stream = $this->getStream(); + $filters = PdfDictionary::get($this->value, 'Filter'); + if ($filters instanceof PdfNull) { + return $stream; + } + + if ($filters instanceof PdfArray) { + $filters = $filters->value; + } else { + $filters = [$filters]; + } + + $decodeParams = PdfDictionary::get($this->value, 'DecodeParms'); + if ($decodeParams instanceof PdfArray) { + $decodeParams = $decodeParams->value; + } else { + $decodeParams = [$decodeParams]; + } + + foreach ($filters as $key => $filter) { + if (!($filter instanceof PdfName)) { + continue; + } + + $decodeParam = null; + if (isset($decodeParams[$key])) { + $decodeParam = ($decodeParams[$key] instanceof PdfDictionary ? $decodeParams[$key] : null); + } + + switch ($filter->value) { + case 'FlateDecode': + case 'Fl': + case 'LZWDecode': + case 'LZW': + if (\strpos($filter->value, 'LZW') === 0) { + $filterObject = new Lzw(); + } else { + $filterObject = new Flate(); + } + + $stream = $filterObject->decode($stream); + + if ($decodeParam instanceof PdfDictionary) { + $predictor = PdfDictionary::get($decodeParam, 'Predictor', PdfNumeric::create(1)); + if ($predictor->value !== 1) { + if (!\class_exists(Predictor::class)) { + throw new PdfParserException( + 'This PDF document makes use of features which are only implemented in the ' . + 'commercial "FPDI PDF-Parser" add-on (see https://www.setasign.com/fpdi-pdf-' . + 'parser).', + PdfParserException::IMPLEMENTED_IN_FPDI_PDF_PARSER + ); + } + + $colors = PdfDictionary::get($decodeParam, 'Colors', PdfNumeric::create(1)); + $bitsPerComponent = PdfDictionary::get( + $decodeParam, + 'BitsPerComponent', + PdfNumeric::create(8) + ); + + $columns = PdfDictionary::get($decodeParam, 'Columns', PdfNumeric::create(1)); + + $filterObject = new Predictor( + $predictor->value, + $colors->value, + $bitsPerComponent->value, + $columns->value + ); + + $stream = $filterObject->decode($stream); + } + } + + break; + case 'ASCII85Decode': + case 'A85': + $filterObject = new Ascii85(); + $stream = $filterObject->decode($stream); + break; + + case 'ASCIIHexDecode': + case 'AHx': + $filterObject = new AsciiHex(); + $stream = $filterObject->decode($stream); + break; + + default: + throw new FilterException( + \sprintf('Unsupported filter "%s".', $filter->value), + FilterException::UNSUPPORTED_FILTER + ); + } + } + + return $stream; + } +} diff --git a/setasign/Fpdi/PdfParser/Type/PdfString.php b/setasign/Fpdi/PdfParser/Type/PdfString.php new file mode 100644 index 0000000..1636e68 --- /dev/null +++ b/setasign/Fpdi/PdfParser/Type/PdfString.php @@ -0,0 +1,172 @@ +getOffset(); + $openBrackets = 1; + do { + $buffer = $streamReader->getBuffer(false); + for ($length = \strlen($buffer); $openBrackets !== 0 && $pos < $length; $pos++) { + switch ($buffer[$pos]) { + case '(': + $openBrackets++; + break; + case ')': + $openBrackets--; + break; + case '\\': + $pos++; + } + } + } while ($openBrackets !== 0 && $streamReader->increaseLength()); + + $result = \substr($buffer, $startPos, $openBrackets + $pos - $startPos - 1); + $streamReader->setOffset($pos); + + $v = new self(); + $v->value = $result; + + return $v; + } + + /** + * Helper method to create an instance. + * + * @param string $value The string needs to be escaped accordingly. + * @return self + */ + public static function create($value) + { + $v = new self(); + $v->value = $value; + + return $v; + } + + /** + * Ensures that the passed value is a PdfString instance. + * + * @param mixed $string + * @return self + * @throws PdfTypeException + */ + public static function ensure($string) + { + return PdfType::ensureType(self::class, $string, 'String value expected.'); + } + + /** + * Unescapes escaped sequences in a PDF string according to the PDF specification. + * + * @param string $s + * @return string + */ + public static function unescape($s) + { + $out = ''; + /** @noinspection ForeachInvariantsInspection */ + for ($count = 0, $n = \strlen($s); $count < $n; $count++) { + if ($s[$count] !== '\\') { + $out .= $s[$count]; + } else { + // A backslash at the end of the string - ignore it + if ($count === ($n - 1)) { + break; + } + + switch ($s[++$count]) { + case ')': + case '(': + case '\\': + $out .= $s[$count]; + break; + + case 'f': + $out .= "\x0C"; + break; + + case 'b': + $out .= "\x08"; + break; + + case 't': + $out .= "\x09"; + break; + + case 'r': + $out .= "\x0D"; + break; + + case 'n': + $out .= "\x0A"; + break; + + case "\r": + if ($count !== $n - 1 && $s[$count + 1] === "\n") { + $count++; + } + break; + + case "\n": + break; + + default: + $actualChar = \ord($s[$count]); + // ascii 48 = number 0 + // ascii 57 = number 9 + if ($actualChar >= 48 && $actualChar <= 57) { + $oct = '' . $s[$count]; + + /** @noinspection NotOptimalIfConditionsInspection */ + if ( + $count + 1 < $n + && \ord($s[$count + 1]) >= 48 + && \ord($s[$count + 1]) <= 57 + ) { + $count++; + $oct .= $s[$count]; + + /** @noinspection NotOptimalIfConditionsInspection */ + if ( + $count + 1 < $n + && \ord($s[$count + 1]) >= 48 + && \ord($s[$count + 1]) <= 57 + ) { + $oct .= $s[++$count]; + } + } + + $out .= \chr(\octdec($oct)); + } else { + // If the character is not one of those defined, the backslash is ignored + $out .= $s[$count]; + } + } + } + } + return $out; + } +} diff --git a/setasign/Fpdi/PdfParser/Type/PdfToken.php b/setasign/Fpdi/PdfParser/Type/PdfToken.php new file mode 100644 index 0000000..012b9fd --- /dev/null +++ b/setasign/Fpdi/PdfParser/Type/PdfToken.php @@ -0,0 +1,43 @@ +value = $token; + + return $v; + } + + /** + * Ensures that the passed value is a PdfToken instance. + * + * @param mixed $token + * @return self + * @throws PdfTypeException + */ + public static function ensure($token) + { + return PdfType::ensureType(self::class, $token, 'Token value expected.'); + } +} diff --git a/setasign/Fpdi/PdfParser/Type/PdfType.php b/setasign/Fpdi/PdfParser/Type/PdfType.php new file mode 100644 index 0000000..7672dcd --- /dev/null +++ b/setasign/Fpdi/PdfParser/Type/PdfType.php @@ -0,0 +1,78 @@ +value, $parser, $stopAtIndirectObject); + } + + if ($value instanceof PdfIndirectObjectReference) { + return self::resolve($parser->getIndirectObject($value->value), $parser, $stopAtIndirectObject); + } + + return $value; + } + + /** + * Ensure that a value is an instance of a specific PDF type. + * + * @param string $type + * @param PdfType $value + * @param string $errorMessage + * @return mixed + * @throws PdfTypeException + */ + protected static function ensureType($type, $value, $errorMessage) + { + if (!($value instanceof $type)) { + throw new PdfTypeException( + $errorMessage, + PdfTypeException::INVALID_DATA_TYPE + ); + } + + return $value; + } + + /** + * The value of the PDF type. + * + * @var mixed + */ + public $value; +} diff --git a/setasign/Fpdi/PdfParser/Type/PdfTypeException.php b/setasign/Fpdi/PdfParser/Type/PdfTypeException.php new file mode 100644 index 0000000..593d147 --- /dev/null +++ b/setasign/Fpdi/PdfParser/Type/PdfTypeException.php @@ -0,0 +1,24 @@ +value; + $ax = PdfNumeric::ensure(PdfType::resolve($array[0], $parser))->value; + $ay = PdfNumeric::ensure(PdfType::resolve($array[1], $parser))->value; + $bx = PdfNumeric::ensure(PdfType::resolve($array[2], $parser))->value; + $by = PdfNumeric::ensure(PdfType::resolve($array[3], $parser))->value; + + return new self($ax, $ay, $bx, $by); + } + + /** + * Rectangle constructor. + * + * @param float|int $ax + * @param float|int $ay + * @param float|int $bx + * @param float|int $by + */ + public function __construct($ax, $ay, $bx, $by) + { + $this->llx = \min($ax, $bx); + $this->lly = \min($ay, $by); + $this->urx = \max($ax, $bx); + $this->ury = \max($ay, $by); + } + + /** + * Get the width of the rectangle. + * + * @return float|int + */ + public function getWidth() + { + return $this->urx - $this->llx; + } + + /** + * Get the height of the rectangle. + * + * @return float|int + */ + public function getHeight() + { + return $this->ury - $this->lly; + } + + /** + * Get the lower left abscissa. + * + * @return float|int + */ + public function getLlx() + { + return $this->llx; + } + + /** + * Get the lower left ordinate. + * + * @return float|int + */ + public function getLly() + { + return $this->lly; + } + + /** + * Get the upper right abscissa. + * + * @return float|int + */ + public function getUrx() + { + return $this->urx; + } + + /** + * Get the upper right ordinate. + * + * @return float|int + */ + public function getUry() + { + return $this->ury; + } + + /** + * Get the rectangle as an array. + * + * @return array + */ + public function toArray() + { + return [ + $this->llx, + $this->lly, + $this->urx, + $this->ury + ]; + } + + /** + * Get the rectangle as a PdfArray. + * + * @return PdfArray + */ + public function toPdfArray() + { + $array = new PdfArray(); + $array->value[] = PdfNumeric::create($this->llx); + $array->value[] = PdfNumeric::create($this->lly); + $array->value[] = PdfNumeric::create($this->urx); + $array->value[] = PdfNumeric::create($this->ury); + + return $array; + } +} diff --git a/setasign/Fpdi/PdfReader/Page.php b/setasign/Fpdi/PdfReader/Page.php new file mode 100644 index 0000000..b207c79 --- /dev/null +++ b/setasign/Fpdi/PdfReader/Page.php @@ -0,0 +1,271 @@ +pageObject = $page; + $this->parser = $parser; + } + + /** + * Get the indirect object of this page. + * + * @return PdfIndirectObject + */ + public function getPageObject() + { + return $this->pageObject; + } + + /** + * Get the dictionary of this page. + * + * @return PdfDictionary + * @throws PdfParserException + * @throws PdfTypeException + * @throws CrossReferenceException + */ + public function getPageDictionary() + { + if (null === $this->pageDictionary) { + $this->pageDictionary = PdfDictionary::ensure(PdfType::resolve($this->getPageObject(), $this->parser)); + } + + return $this->pageDictionary; + } + + /** + * Get a page attribute. + * + * @param string $name + * @param bool $inherited + * @return PdfType|null + * @throws PdfParserException + * @throws PdfTypeException + * @throws CrossReferenceException + */ + public function getAttribute($name, $inherited = true) + { + $dict = $this->getPageDictionary(); + + if (isset($dict->value[$name])) { + return $dict->value[$name]; + } + + $inheritedKeys = ['Resources', 'MediaBox', 'CropBox', 'Rotate']; + if ($inherited && \in_array($name, $inheritedKeys, true)) { + if ($this->inheritedAttributes === null) { + $this->inheritedAttributes = []; + $inheritedKeys = \array_filter($inheritedKeys, function ($key) use ($dict) { + return !isset($dict->value[$key]); + }); + + if (\count($inheritedKeys) > 0) { + $parentDict = PdfType::resolve(PdfDictionary::get($dict, 'Parent'), $this->parser); + while ($parentDict instanceof PdfDictionary) { + foreach ($inheritedKeys as $index => $key) { + if (isset($parentDict->value[$key])) { + $this->inheritedAttributes[$key] = $parentDict->value[$key]; + unset($inheritedKeys[$index]); + } + } + + /** @noinspection NotOptimalIfConditionsInspection */ + if (isset($parentDict->value['Parent']) && \count($inheritedKeys) > 0) { + $parentDict = PdfType::resolve(PdfDictionary::get($parentDict, 'Parent'), $this->parser); + } else { + break; + } + } + } + } + + if (isset($this->inheritedAttributes[$name])) { + return $this->inheritedAttributes[$name]; + } + } + + return null; + } + + /** + * Get the rotation value. + * + * @return int + * @throws PdfParserException + * @throws PdfTypeException + * @throws CrossReferenceException + */ + public function getRotation() + { + $rotation = $this->getAttribute('Rotate'); + if (null === $rotation) { + return 0; + } + + $rotation = PdfNumeric::ensure(PdfType::resolve($rotation, $this->parser))->value % 360; + + if ($rotation < 0) { + $rotation += 360; + } + + return $rotation; + } + + /** + * Get a boundary of this page. + * + * @param string $box + * @param bool $fallback + * @return bool|Rectangle + * @throws PdfParserException + * @throws PdfTypeException + * @throws CrossReferenceException + * @see PageBoundaries + */ + public function getBoundary($box = PageBoundaries::CROP_BOX, $fallback = true) + { + $value = $this->getAttribute($box); + + if ($value !== null) { + return Rectangle::byPdfArray($value, $this->parser); + } + + if ($fallback === false) { + return false; + } + + switch ($box) { + case PageBoundaries::BLEED_BOX: + case PageBoundaries::TRIM_BOX: + case PageBoundaries::ART_BOX: + return $this->getBoundary(PageBoundaries::CROP_BOX, true); + case PageBoundaries::CROP_BOX: + return $this->getBoundary(PageBoundaries::MEDIA_BOX, true); + } + + return false; + } + + /** + * Get the width and height of this page. + * + * @param string $box + * @param bool $fallback + * @return array|bool + * @throws PdfParserException + * @throws PdfTypeException + * @throws CrossReferenceException + */ + public function getWidthAndHeight($box = PageBoundaries::CROP_BOX, $fallback = true) + { + $boundary = $this->getBoundary($box, $fallback); + if ($boundary === false) { + return false; + } + + $rotation = $this->getRotation(); + $interchange = ($rotation / 90) % 2; + + return [ + $interchange ? $boundary->getHeight() : $boundary->getWidth(), + $interchange ? $boundary->getWidth() : $boundary->getHeight() + ]; + } + + /** + * Get the raw content stream. + * + * @return string + * @throws PdfReaderException + * @throws PdfTypeException + * @throws FilterException + * @throws PdfParserException + */ + public function getContentStream() + { + $dict = $this->getPageDictionary(); + $contents = PdfType::resolve(PdfDictionary::get($dict, 'Contents'), $this->parser); + if ($contents instanceof PdfNull) { + return ''; + } + + if ($contents instanceof PdfArray) { + $result = []; + foreach ($contents->value as $content) { + $content = PdfType::resolve($content, $this->parser); + if (!($content instanceof PdfStream)) { + continue; + } + $result[] = $content->getUnfilteredStream(); + } + + return \implode("\n", $result); + } + + if ($contents instanceof PdfStream) { + return $contents->getUnfilteredStream(); + } + + throw new PdfReaderException( + 'Array or stream expected.', + PdfReaderException::UNEXPECTED_DATA_TYPE + ); + } +} diff --git a/setasign/Fpdi/PdfReader/PageBoundaries.php b/setasign/Fpdi/PdfReader/PageBoundaries.php new file mode 100644 index 0000000..9a6a1f3 --- /dev/null +++ b/setasign/Fpdi/PdfReader/PageBoundaries.php @@ -0,0 +1,94 @@ +parser = $parser; + } + + /** + * PdfReader destructor. + */ + public function __destruct() + { + if ($this->parser !== null) { + $this->parser->cleanUp(); + } + } + + /** + * Get the pdf parser instance. + * + * @return PdfParser + */ + public function getParser() + { + return $this->parser; + } + + /** + * Get the PDF version. + * + * @return string + * @throws PdfParserException + */ + public function getPdfVersion() + { + return \implode('.', $this->parser->getPdfVersion()); + } + + /** + * Get the page count. + * + * @return int + * @throws PdfTypeException + * @throws CrossReferenceException + * @throws PdfParserException + */ + public function getPageCount() + { + if ($this->pageCount === null) { + $catalog = $this->parser->getCatalog(); + + $pages = PdfType::resolve(PdfDictionary::get($catalog, 'Pages'), $this->parser); + $count = PdfType::resolve(PdfDictionary::get($pages, 'Count'), $this->parser); + + $this->pageCount = PdfNumeric::ensure($count)->value; + } + + return $this->pageCount; + } + + /** + * Get a page instance. + * + * @param int $pageNumber + * @return Page + * @throws PdfTypeException + * @throws CrossReferenceException + * @throws PdfParserException + * @throws \InvalidArgumentException + */ + public function getPage($pageNumber) + { + if (!\is_numeric($pageNumber)) { + throw new \InvalidArgumentException( + 'Page number needs to be a number.' + ); + } + + if ($pageNumber < 1 || $pageNumber > $this->getPageCount()) { + throw new \InvalidArgumentException( + \sprintf( + 'Page number "%s" out of available page range (1 - %s)', + $pageNumber, + $this->getPageCount() + ) + ); + } + + $this->readPages(); + + $page = $this->pages[$pageNumber - 1]; + + if ($page instanceof PdfIndirectObjectReference) { + $readPages = function ($kids) use (&$readPages) { + $kids = PdfArray::ensure($kids); + + /** @noinspection LoopWhichDoesNotLoopInspection */ + foreach ($kids->value as $reference) { + $reference = PdfIndirectObjectReference::ensure($reference); + $object = $this->parser->getIndirectObject($reference->value); + $type = PdfDictionary::get($object->value, 'Type'); + + if ($type->value === 'Pages') { + return $readPages(PdfDictionary::get($object->value, 'Kids')); + } + + return $object; + } + + throw new PdfReaderException( + 'Kids array cannot be empty.', + PdfReaderException::KIDS_EMPTY + ); + }; + + $page = $this->parser->getIndirectObject($page->value); + $dict = PdfType::resolve($page, $this->parser); + $type = PdfDictionary::get($dict, 'Type'); + + if ($type->value === 'Pages') { + $kids = PdfType::resolve(PdfDictionary::get($dict, 'Kids'), $this->parser); + try { + $page = $this->pages[$pageNumber - 1] = $readPages($kids); + } catch (PdfReaderException $e) { + if ($e->getCode() !== PdfReaderException::KIDS_EMPTY) { + throw $e; + } + + // let's reset the pages array and read all page objects + $this->pages = []; + $this->readPages(true); + // @phpstan-ignore-next-line + $page = $this->pages[$pageNumber - 1]; + } + } else { + $this->pages[$pageNumber - 1] = $page; + } + } + + return new Page($page, $this->parser); + } + + /** + * Walk the page tree and resolve all indirect objects of all pages. + * + * @param bool $readAll + * @throws CrossReferenceException + * @throws PdfParserException + * @throws PdfTypeException + */ + protected function readPages($readAll = false) + { + if (\count($this->pages) > 0) { + return; + } + + $readPages = function ($kids, $count) use (&$readPages, $readAll) { + $kids = PdfArray::ensure($kids); + $isLeaf = ($count->value === \count($kids->value)); + + foreach ($kids->value as $reference) { + $reference = PdfIndirectObjectReference::ensure($reference); + + if (!$readAll && $isLeaf) { + $this->pages[] = $reference; + continue; + } + + $object = $this->parser->getIndirectObject($reference->value); + $type = PdfDictionary::get($object->value, 'Type'); + + if ($type->value === 'Pages') { + $readPages(PdfDictionary::get($object->value, 'Kids'), PdfDictionary::get($object->value, 'Count')); + } else { + $this->pages[] = $object; + } + } + }; + + $catalog = $this->parser->getCatalog(); + $pages = PdfType::resolve(PdfDictionary::get($catalog, 'Pages'), $this->parser); + $count = PdfType::resolve(PdfDictionary::get($pages, 'Count'), $this->parser); + $kids = PdfType::resolve(PdfDictionary::get($pages, 'Kids'), $this->parser); + $readPages($kids, $count); + } +} diff --git a/setasign/Fpdi/PdfReader/PdfReaderException.php b/setasign/Fpdi/PdfReader/PdfReaderException.php new file mode 100644 index 0000000..99f7d12 --- /dev/null +++ b/setasign/Fpdi/PdfReader/PdfReaderException.php @@ -0,0 +1,34 @@ +cleanUp(); + } + + /** + * Get the next template id. + * + * @return int + */ + protected function getNextTemplateId() + { + return $this->templateId++; + } + + /** + * Draws an imported page onto the page or another template. + * + * Give only one of the size parameters (width, height) to calculate the other one automatically in view to the + * aspect ratio. + * + * @param mixed $tpl The template id + * @param float|int|array $x The abscissa of upper-left corner. Alternatively you could use an assoc array + * with the keys "x", "y", "width", "height", "adjustPageSize". + * @param float|int $y The ordinate of upper-left corner. + * @param float|int|null $width The width. + * @param float|int|null $height The height. + * @param bool $adjustPageSize + * @return array The size + * @see FpdiTrait::getTemplateSize() + */ + public function useTemplate($tpl, $x = 0, $y = 0, $width = null, $height = null, $adjustPageSize = false) + { + return $this->useImportedPage($tpl, $x, $y, $width, $height, $adjustPageSize); + } + + /** + * Draws an imported page onto the page. + * + * Give only one of the size parameters (width, height) to calculate the other one automatically in view to the + * aspect ratio. + * + * @param mixed $pageId The page id + * @param float|int|array $x The abscissa of upper-left corner. Alternatively you could use an assoc array + * with the keys "x", "y", "width", "height", "adjustPageSize". + * @param float|int $y The ordinate of upper-left corner. + * @param float|int|null $width The width. + * @param float|int|null $height The height. + * @param bool $adjustPageSize + * @return array The size. + * @see Fpdi::getTemplateSize() + */ + public function useImportedPage($pageId, $x = 0, $y = 0, $width = null, $height = null, $adjustPageSize = false) + { + $size = $this->fpdiUseImportedPage($pageId, $x, $y, $width, $height, $adjustPageSize); + if ($this->inxobj) { + $importedPage = $this->importedPages[$pageId]; + $this->xobjects[$this->xobjid]['importedPages'][$importedPage['id']] = $pageId; + } + + return $size; + } + + /** + * Get the size of an imported page. + * + * Give only one of the size parameters (width, height) to calculate the other one automatically in view to the + * aspect ratio. + * + * @param mixed $tpl The template id + * @param float|int|null $width The width. + * @param float|int|null $height The height. + * @return array|bool An array with following keys: width, height, 0 (=width), 1 (=height), orientation (L or P) + */ + public function getTemplateSize($tpl, $width = null, $height = null) + { + return $this->getImportedPageSize($tpl, $width, $height); + } + + /** + * @inheritdoc + */ + protected function _getxobjectdict() + { + $out = parent::_getxobjectdict(); + + foreach ($this->importedPages as $key => $pageData) { + $out .= '/' . $pageData['id'] . ' ' . $pageData['objectNumber'] . ' 0 R '; + } + + return $out; + } + + /** + * @inheritdoc + * @throws CrossReferenceException + * @throws PdfParserException + */ + protected function _putxobjects() + { + foreach ($this->importedPages as $key => $pageData) { + $this->currentObjectNumber = $this->_newobj(); + $this->importedPages[$key]['objectNumber'] = $this->currentObjectNumber; + $this->currentReaderId = $pageData['readerId']; + $this->writePdfType($pageData['stream']); + $this->_put('endobj'); + } + + foreach (\array_keys($this->readers) as $readerId) { + $parser = $this->getPdfReader($readerId)->getParser(); + $this->currentReaderId = $readerId; + + while (($objectNumber = \array_pop($this->objectsToCopy[$readerId])) !== null) { + try { + $object = $parser->getIndirectObject($objectNumber); + } catch (CrossReferenceException $e) { + if ($e->getCode() === CrossReferenceException::OBJECT_NOT_FOUND) { + $object = PdfIndirectObject::create($objectNumber, 0, new PdfNull()); + } else { + throw $e; + } + } + + $this->writePdfType($object); + } + } + + // let's prepare resources for imported pages in templates + foreach ($this->xobjects as $xObjectId => $data) { + if (!isset($data['importedPages'])) { + continue; + } + + foreach ($data['importedPages'] as $id => $pageKey) { + $page = $this->importedPages[$pageKey]; + $this->xobjects[$xObjectId]['xobjects'][$id] = ['n' => $page['objectNumber']]; + } + } + + + parent::_putxobjects(); + $this->currentObjectNumber = null; + } + + /** + * Append content to the buffer of TCPDF. + * + * @param string $s + * @param bool $newLine + */ + protected function _put($s, $newLine = true) + { + if ($newLine) { + $this->setBuffer($s . "\n"); + } else { + $this->setBuffer($s); + } + } + + /** + * Begin a new object and return the object number. + * + * @param int|string $objid Object ID (leave empty to get a new ID). + * @return int object number + */ + protected function _newobj($objid = '') + { + $this->_out($this->_getobj($objid)); + return $this->n; + } + + /** + * Writes a PdfType object to the resulting buffer. + * + * @param PdfType $value + * @throws PdfTypeException + */ + protected function writePdfType(PdfType $value) + { + if (!$this->encrypted) { + $this->fpdiWritePdfType($value); + return; + } + + if ($value instanceof PdfString) { + $string = PdfString::unescape($value->value); + $string = $this->_encrypt_data($this->currentObjectNumber, $string); + $value->value = \TCPDF_STATIC::_escape($string); + } elseif ($value instanceof PdfHexString) { + $filter = new AsciiHex(); + $string = $filter->decode($value->value); + $string = $this->_encrypt_data($this->currentObjectNumber, $string); + $value->value = $filter->encode($string, true); + } elseif ($value instanceof PdfStream) { + $stream = $value->getStream(); + $stream = $this->_encrypt_data($this->currentObjectNumber, $stream); + $dictionary = $value->value; + $dictionary->value['Length'] = PdfNumeric::create(\strlen($stream)); + $value = PdfStream::create($dictionary, $stream); + } elseif ($value instanceof PdfIndirectObject) { + /** + * @var PdfIndirectObject $value + */ + $this->currentObjectNumber = $this->objectMap[$this->currentReaderId][$value->objectNumber]; + } + + $this->fpdiWritePdfType($value); + } +} diff --git a/setasign/Fpdi/TcpdfFpdi.php b/setasign/Fpdi/TcpdfFpdi.php new file mode 100644 index 0000000..9e6825b --- /dev/null +++ b/setasign/Fpdi/TcpdfFpdi.php @@ -0,0 +1,23 @@ +cleanUp(); + } + + /** + * Draws an imported page or a template onto the page or another template. + * + * Give only one of the size parameters (width, height) to calculate the other one automatically in view to the + * aspect ratio. + * + * @param mixed $tpl The template id + * @param float|int|array $x The abscissa of upper-left corner. Alternatively you could use an assoc array + * with the keys "x", "y", "width", "height", "adjustPageSize". + * @param float|int $y The ordinate of upper-left corner. + * @param float|int|null $width The width. + * @param float|int|null $height The height. + * @param bool $adjustPageSize + * @return array The size + * @see Fpdi::getTemplateSize() + */ + public function useTemplate($tpl, $x = 0, $y = 0, $width = null, $height = null, $adjustPageSize = false) + { + if (isset($this->importedPages[$tpl])) { + $size = $this->useImportedPage($tpl, $x, $y, $width, $height, $adjustPageSize); + if ($this->currentTemplateId !== null) { + $this->templates[$this->currentTemplateId]['resources']['templates']['importedPages'][$tpl] = $tpl; + } + return $size; + } + + return parent::useTemplate($tpl, $x, $y, $width, $height, $adjustPageSize); + } + + /** + * Get the size of an imported page or template. + * + * Give only one of the size parameters (width, height) to calculate the other one automatically in view to the + * aspect ratio. + * + * @param mixed $tpl The template id + * @param float|int|null $width The width. + * @param float|int|null $height The height. + * @return array|bool An array with following keys: width, height, 0 (=width), 1 (=height), orientation (L or P) + */ + public function getTemplateSize($tpl, $width = null, $height = null) + { + $size = parent::getTemplateSize($tpl, $width, $height); + if ($size === false) { + return $this->getImportedPageSize($tpl, $width, $height); + } + + return $size; + } + + /** + * @inheritdoc + * @throws CrossReferenceException + * @throws PdfParserException + */ + public function _putimages() + { + $this->currentReaderId = null; + parent::_putimages(); + + foreach ($this->importedPages as $key => $pageData) { + $this->_newobj(); + $this->importedPages[$key]['objectNumber'] = $this->n; + $this->currentReaderId = $pageData['readerId']; + $this->writePdfType($pageData['stream']); + $this->_put('endobj'); + } + + foreach (\array_keys($this->readers) as $readerId) { + $parser = $this->getPdfReader($readerId)->getParser(); + $this->currentReaderId = $readerId; + + while (($objectNumber = \array_pop($this->objectsToCopy[$readerId])) !== null) { + try { + $object = $parser->getIndirectObject($objectNumber); + } catch (CrossReferenceException $e) { + if ($e->getCode() === CrossReferenceException::OBJECT_NOT_FOUND) { + $object = PdfIndirectObject::create($objectNumber, 0, new PdfNull()); + } else { + throw $e; + } + } + + $this->writePdfType($object); + } + } + + $this->currentReaderId = null; + } + + /** + * @inheritdoc + */ + protected function _putxobjectdict() + { + foreach ($this->importedPages as $key => $pageData) { + $this->_put('/' . $pageData['id'] . ' ' . $pageData['objectNumber'] . ' 0 R'); + } + + parent::_putxobjectdict(); + } + + /** + * @inheritdoc + */ + protected function _put($s, $newLine = true) + { + if ($newLine) { + $this->buffer .= $s . "\n"; + } else { + $this->buffer .= $s; + } + } +} diff --git a/setasign/Fpdi/autoload.php b/setasign/Fpdi/autoload.php new file mode 100644 index 0000000..419e831 --- /dev/null +++ b/setasign/Fpdi/autoload.php @@ -0,0 +1,22 @@ +

    -Dump all characters from a font (font_dump.php) -